- LessPass{" "} - - stateless password manager - -
-- Stop wasting your time synchronizing your encrypted vault. - Remember one master password to access your passwords, - anywhere, anytime, from any device. No sync needed. -
-diff --git a/sandbox/lesspass-tld/main.py b/sandbox/lesspass-tld/main.py deleted file mode 100644 index bb51374..0000000 --- a/sandbox/lesspass-tld/main.py +++ /dev/null @@ -1,16 +0,0 @@ -import csv -from tld import get_tld - -tlds = {} -with open('top-1m.csv', newline='') as csvfile: - lignes = csv.reader(csvfile) - for ligne in lignes: - tld = get_tld(ligne[1], fix_protocol=True) - tlds[tld] = tlds.get(tld, 0) + 1 - -sorted_tlds = [] -for w in sorted(tlds, key=tlds.get, reverse=True): - if tlds[w] > 1 and "xn--" not in w: - sorted_tlds.append(w) - -print(sorted_tlds) \ No newline at end of file diff --git a/sandbox/lesspass-web-component/.gitignore b/sandbox/lesspass-web-component/.gitignore deleted file mode 100644 index fcf8442..0000000 --- a/sandbox/lesspass-web-component/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# production -/build -/src/index.css - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/sandbox/lesspass-web-component/package.json b/sandbox/lesspass-web-component/package.json deleted file mode 100644 index 557971c..0000000 --- a/sandbox/lesspass-web-component/package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "name": "lesspass-web-component", - "version": "0.1.0", - "private": true, - "dependencies": { - "@fortawesome/fontawesome-svg-core": "^1.2.36", - "@fortawesome/free-brands-svg-icons": "^5.15.4", - "@fortawesome/free-solid-svg-icons": "^5.15.4", - "@fortawesome/react-fontawesome": "^0.1.16", - "@fullhuman/postcss-purgecss": "^4.1.3", - "@reduxjs/toolkit": "^1.7.1", - "@testing-library/jest-dom": "^5.16.1", - "@testing-library/react": "^12.1.2", - "@testing-library/user-event": "^13.5.0", - "@types/axios": "^0.14.0", - "@types/i18next": "^13.0.0", - "@types/jest": "^27.4.0", - "@types/node": "^17.0.12", - "@types/react": "^17.0.38", - "@types/react-dom": "^17.0.11", - "@types/react-i18next": "^8.1.0", - "@types/react-redux": "^7.1.22", - "@types/react-router-dom": "^5.3.3", - "@types/redux-mock-store": "^1.0.3", - "@types/redux-persist": "^4.3.1", - "autoprefixer": "^10.4.2", - "axios": "^0.25.0", - "history": "^5.2.0", - "i18next": "^21.6.9", - "i18next-browser-languagedetector": "^6.1.3", - "jest-environment-jsdom-sixteen": "^2.0.0", - "lesspass": "^9.2.0", - "npm-run-all": "^4.1.5", - "postcss-cli": "^9.1.0", - "postcss-discard-comments": "^5.0.2", - "postcss-import": "^14.0.2", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "react-i18next": "^11.15.3", - "react-redux": "^7.2.6", - "react-router-dom": "^6.2.1", - "react-scripts": "5.0.0", - "redux-mock-store": "^1.5.4", - "redux-persist": "^6.0.0", - "tailwindcss": "^3.0.16", - "ts-jest": "^27.1.3", - "typescript": "~4.5.5" - }, - "scripts": { - "start": "npm-run-all --parallel watch:css start:react", - "build": "npm-run-all build:css build:react", - "build:css": "postcss src/styles/tailwind.css --output src/index.css --env production", - "watch:css": "postcss src/styles/tailwind.css --output src/index.css --watch", - "start:react": "react-scripts start", - "build:react": "react-scripts build", - "test": "CI=true react-scripts test --env=jest-environment-jsdom-sixteen", - "test:watch": "react-scripts test --env=jest-environment-jsdom-sixteen", - "eject": "react-scripts eject", - "prettier": "prettier --write \"src/**/*.js\"" - }, - "eslintConfig": { - "extends": "react-app" - }, - "browserslist": [ - "> 1%", - "last 2 versions", - "not dead" - ] -} diff --git a/sandbox/lesspass-web-component/postcss.config.js b/sandbox/lesspass-web-component/postcss.config.js deleted file mode 100644 index 205a9c2..0000000 --- a/sandbox/lesspass-web-component/postcss.config.js +++ /dev/null @@ -1,25 +0,0 @@ -const purgecss = require("@fullhuman/postcss-purgecss")({ - content: [ - "./src/**/*.jsx", - "./src/**/*.tsx", - "./src/**/*.js", - "./src/**/*.ts", - "./public/index.html", - ], - defaultExtractor: (content) => { - const broadMatches = content.match(/[^<>"'`\s]*[^<>"'`\s:]/g) || []; - const innerMatches = content.match(/[^<>"'`\s.()]*[^<>"'`\s.():]/g) || []; - return broadMatches.concat(innerMatches); - }, -}); - -module.exports = { - plugins: [ - require("postcss-import"), - require("tailwindcss"), - require("autoprefixer"), - ...(process.env.NODE_ENV === "production" - ? [purgecss, require("postcss-discard-comments")({ removeAll: true })] - : []), - ], -}; diff --git a/sandbox/lesspass-web-component/public/favicon.ico b/sandbox/lesspass-web-component/public/favicon.ico deleted file mode 100644 index 9c83c73..0000000 Binary files a/sandbox/lesspass-web-component/public/favicon.ico and /dev/null differ diff --git a/sandbox/lesspass-web-component/public/index.html b/sandbox/lesspass-web-component/public/index.html deleted file mode 100644 index 9950274..0000000 --- a/sandbox/lesspass-web-component/public/index.html +++ /dev/null @@ -1,40 +0,0 @@ - - -
- - - - - - - - - -- Stop wasting your time synchronizing your encrypted vault. - Remember one master password to access your passwords, - anywhere, anytime, from any device. No sync needed. -
-- LessPass computes a unique password using a site, login, and a - master password. You don't need to sync a password vault across - every device or to the cloud, because LessPass works offline! -
-- To us, a password manager is only as secure as it is transparent. - That's why LessPass is fully open source. Don't just take our word - for it, take a peek under the hood and see for yourself! -
-- Read the latest blog posts from LessPass -
-, or missing
. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm = nodeOps.parentNode(oldElm);\n\n // create new node\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm,\n nodeOps.nextSibling(oldElm)\n );\n\n // update parent placeholder node element, recursively\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n // destroy old node\n if (isDef(parentElm)) {\n removeVnodes([oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n dir.oldArg = oldDir.arg;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n // $flow-disable-line\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n // $flow-disable-line\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n];\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. \n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for