diff options
43 files changed, 727 insertions, 740 deletions
diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 6532945..0000000 --- a/.eslintignore +++ /dev/null | |||
@@ -1,2 +0,0 @@ | |||
1 | /docs/ | ||
2 | /scripts/ | ||
diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 5e9153b..0000000 --- a/.eslintrc +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | { | ||
2 | "root": true, | ||
3 | "parser": "babel-eslint", | ||
4 | "rules": { | ||
5 | "consistent-return": 0, | ||
6 | "no-param-reassign": 0, | ||
7 | "import/extensions": 0, | ||
8 | "import/no-extraneous-dependencies": 0, | ||
9 | "import/prefer-default-export": 0, | ||
10 | "linebreak-style": 0, | ||
11 | "prefer-destructuring": 1, | ||
12 | "no-underscore-dangle": 0, | ||
13 | "max-len": 0, | ||
14 | "class-methods-use-this": 0, | ||
15 | "no-console": 0, | ||
16 | "no-restricted-syntax": [0, "ForInStatement"] | ||
17 | }, | ||
18 | "globals": { | ||
19 | "window": true, | ||
20 | "document": true, | ||
21 | "ENV": true | ||
22 | } | ||
23 | } | ||
diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..d9be6f9 --- /dev/null +++ b/.eslintrc.js | |||
@@ -0,0 +1,15 @@ | |||
1 | module.exports = { | ||
2 | root: true, | ||
3 | parserOptions: { | ||
4 | ecmaVersion: 12, | ||
5 | sourceType: 'module', | ||
6 | }, | ||
7 | env: { | ||
8 | browser: true, | ||
9 | es2021: true, | ||
10 | node: true, | ||
11 | jquery: true, | ||
12 | }, | ||
13 | extends: ['eslint:recommended'], | ||
14 | rules: {}, | ||
15 | }; | ||
diff --git a/package.json b/package.json index 7f3c0af..60d8e2f 100644 --- a/package.json +++ b/package.json | |||
@@ -8,7 +8,7 @@ | |||
8 | "prepare": "npx husky install", | 8 | "prepare": "npx husky install", |
9 | "package": "node scripts/package.js", | 9 | "package": "node scripts/package.js", |
10 | "create": "node scripts/create.js", | 10 | "create": "node scripts/create.js", |
11 | "lint": "eslint --quiet --fix recipes", | 11 | "lint": "eslint . --fix", |
12 | "reformat-files": "./node_modules/.bin/prettier --ignore-path .eslintignore --write --require-pragma \"**/*.{js,json,scss}\"" | 12 | "reformat-files": "./node_modules/.bin/prettier --ignore-path .eslintignore --write --require-pragma \"**/*.{js,json,scss}\"" |
13 | }, | 13 | }, |
14 | "repository": { | 14 | "repository": { |
@@ -27,14 +27,13 @@ | |||
27 | "homepage": "https://github.com/getferdi/recipes#readme", | 27 | "homepage": "https://github.com/getferdi/recipes#readme", |
28 | "devDependencies": { | 28 | "devDependencies": { |
29 | "@types/targz": "1.0.1", | 29 | "@types/targz": "1.0.1", |
30 | "babel-eslint": "10.0.3", | 30 | "eslint": "7.32.0", |
31 | "eslint": "5.10.0", | ||
32 | "fs-extra": "10.0.0", | 31 | "fs-extra": "10.0.0", |
33 | "husky": "7.0.1", | 32 | "husky": "7.0.2", |
34 | "image-size": "1.0.0", | 33 | "image-size": "1.0.0", |
35 | "open": "8.2.0", | 34 | "open": "8.2.1", |
36 | "prettier": "2.3.2", | 35 | "prettier": "2.4.1", |
37 | "simple-git": "2.39.0", | 36 | "simple-git": "2.46.0", |
38 | "targz": "1.0.1" | 37 | "targz": "1.0.1" |
39 | } | 38 | } |
40 | } | 39 | } |
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2aca6a2..8ceb3a8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml | |||
@@ -2,78 +2,36 @@ lockfileVersion: 5.3 | |||
2 | 2 | ||
3 | specifiers: | 3 | specifiers: |
4 | '@types/targz': 1.0.1 | 4 | '@types/targz': 1.0.1 |
5 | babel-eslint: 10.0.3 | 5 | eslint: 7.32.0 |
6 | eslint: 5.10.0 | ||
7 | fs-extra: 10.0.0 | 6 | fs-extra: 10.0.0 |
8 | husky: 7.0.1 | 7 | husky: 7.0.2 |
9 | image-size: 1.0.0 | 8 | image-size: 1.0.0 |
10 | open: 8.2.0 | 9 | open: 8.2.1 |
11 | prettier: 2.3.2 | 10 | prettier: 2.4.1 |
12 | simple-git: 2.39.0 | 11 | simple-git: 2.46.0 |
13 | targz: 1.0.1 | 12 | targz: 1.0.1 |
14 | 13 | ||
15 | devDependencies: | 14 | devDependencies: |
16 | '@types/targz': 1.0.1 | 15 | '@types/targz': 1.0.1 |
17 | babel-eslint: 10.0.3_eslint@5.10.0 | 16 | eslint: 7.32.0 |
18 | eslint: 5.10.0 | ||
19 | fs-extra: 10.0.0 | 17 | fs-extra: 10.0.0 |
20 | husky: 7.0.1 | 18 | husky: 7.0.2 |
21 | image-size: 1.0.0 | 19 | image-size: 1.0.0 |
22 | open: 8.2.0 | 20 | open: 8.2.1 |
23 | prettier: 2.3.2 | 21 | prettier: 2.4.1 |
24 | simple-git: 2.39.0 | 22 | simple-git: 2.46.0 |
25 | targz: 1.0.1 | 23 | targz: 1.0.1 |
26 | 24 | ||
27 | packages: | 25 | packages: |
28 | 26 | ||
29 | /@babel/code-frame/7.14.5: | 27 | /@babel/code-frame/7.12.11: |
30 | resolution: {integrity: sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==} | 28 | resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} |
31 | engines: {node: '>=6.9.0'} | ||
32 | dependencies: | 29 | dependencies: |
33 | '@babel/highlight': 7.14.5 | 30 | '@babel/highlight': 7.14.5 |
34 | dev: true | 31 | dev: true |
35 | 32 | ||
36 | /@babel/generator/7.15.0: | 33 | /@babel/helper-validator-identifier/7.15.7: |
37 | resolution: {integrity: sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==} | 34 | resolution: {integrity: sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==} |
38 | engines: {node: '>=6.9.0'} | ||
39 | dependencies: | ||
40 | '@babel/types': 7.15.0 | ||
41 | jsesc: 2.5.2 | ||
42 | source-map: 0.5.7 | ||
43 | dev: true | ||
44 | |||
45 | /@babel/helper-function-name/7.14.5: | ||
46 | resolution: {integrity: sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==} | ||
47 | engines: {node: '>=6.9.0'} | ||
48 | dependencies: | ||
49 | '@babel/helper-get-function-arity': 7.14.5 | ||
50 | '@babel/template': 7.14.5 | ||
51 | '@babel/types': 7.15.0 | ||
52 | dev: true | ||
53 | |||
54 | /@babel/helper-get-function-arity/7.14.5: | ||
55 | resolution: {integrity: sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==} | ||
56 | engines: {node: '>=6.9.0'} | ||
57 | dependencies: | ||
58 | '@babel/types': 7.15.0 | ||
59 | dev: true | ||
60 | |||
61 | /@babel/helper-hoist-variables/7.14.5: | ||
62 | resolution: {integrity: sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==} | ||
63 | engines: {node: '>=6.9.0'} | ||
64 | dependencies: | ||
65 | '@babel/types': 7.15.0 | ||
66 | dev: true | ||
67 | |||
68 | /@babel/helper-split-export-declaration/7.14.5: | ||
69 | resolution: {integrity: sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==} | ||
70 | engines: {node: '>=6.9.0'} | ||
71 | dependencies: | ||
72 | '@babel/types': 7.15.0 | ||
73 | dev: true | ||
74 | |||
75 | /@babel/helper-validator-identifier/7.14.9: | ||
76 | resolution: {integrity: sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==} | ||
77 | engines: {node: '>=6.9.0'} | 35 | engines: {node: '>=6.9.0'} |
78 | dev: true | 36 | dev: true |
79 | 37 | ||
@@ -81,49 +39,41 @@ packages: | |||
81 | resolution: {integrity: sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==} | 39 | resolution: {integrity: sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==} |
82 | engines: {node: '>=6.9.0'} | 40 | engines: {node: '>=6.9.0'} |
83 | dependencies: | 41 | dependencies: |
84 | '@babel/helper-validator-identifier': 7.14.9 | 42 | '@babel/helper-validator-identifier': 7.15.7 |
85 | chalk: 2.4.2 | 43 | chalk: 2.4.2 |
86 | js-tokens: 4.0.0 | 44 | js-tokens: 4.0.0 |
87 | dev: true | 45 | dev: true |
88 | 46 | ||
89 | /@babel/parser/7.15.0: | 47 | /@eslint/eslintrc/0.4.3: |
90 | resolution: {integrity: sha512-0v7oNOjr6YT9Z2RAOTv4T9aP+ubfx4Q/OhVtAet7PFDt0t9Oy6Jn+/rfC6b8HJ5zEqrQCiMxJfgtHpmIminmJQ==} | 48 | resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} |
91 | engines: {node: '>=6.0.0'} | 49 | engines: {node: ^10.12.0 || >=12.0.0} |
92 | hasBin: true | ||
93 | dev: true | ||
94 | |||
95 | /@babel/template/7.14.5: | ||
96 | resolution: {integrity: sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==} | ||
97 | engines: {node: '>=6.9.0'} | ||
98 | dependencies: | 50 | dependencies: |
99 | '@babel/code-frame': 7.14.5 | 51 | ajv: 6.12.6 |
100 | '@babel/parser': 7.15.0 | 52 | debug: 4.3.2 |
101 | '@babel/types': 7.15.0 | 53 | espree: 7.3.1 |
54 | globals: 13.11.0 | ||
55 | ignore: 4.0.6 | ||
56 | import-fresh: 3.3.0 | ||
57 | js-yaml: 3.14.1 | ||
58 | minimatch: 3.0.4 | ||
59 | strip-json-comments: 3.1.1 | ||
60 | transitivePeerDependencies: | ||
61 | - supports-color | ||
102 | dev: true | 62 | dev: true |
103 | 63 | ||
104 | /@babel/traverse/7.15.0: | 64 | /@humanwhocodes/config-array/0.5.0: |
105 | resolution: {integrity: sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==} | 65 | resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} |
106 | engines: {node: '>=6.9.0'} | 66 | engines: {node: '>=10.10.0'} |
107 | dependencies: | 67 | dependencies: |
108 | '@babel/code-frame': 7.14.5 | 68 | '@humanwhocodes/object-schema': 1.2.0 |
109 | '@babel/generator': 7.15.0 | ||
110 | '@babel/helper-function-name': 7.14.5 | ||
111 | '@babel/helper-hoist-variables': 7.14.5 | ||
112 | '@babel/helper-split-export-declaration': 7.14.5 | ||
113 | '@babel/parser': 7.15.0 | ||
114 | '@babel/types': 7.15.0 | ||
115 | debug: 4.3.2 | 69 | debug: 4.3.2 |
116 | globals: 11.12.0 | 70 | minimatch: 3.0.4 |
117 | transitivePeerDependencies: | 71 | transitivePeerDependencies: |
118 | - supports-color | 72 | - supports-color |
119 | dev: true | 73 | dev: true |
120 | 74 | ||
121 | /@babel/types/7.15.0: | 75 | /@humanwhocodes/object-schema/1.2.0: |
122 | resolution: {integrity: sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==} | 76 | resolution: {integrity: sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==} |
123 | engines: {node: '>=6.9.0'} | ||
124 | dependencies: | ||
125 | '@babel/helper-validator-identifier': 7.14.9 | ||
126 | to-fast-properties: 2.0.0 | ||
127 | dev: true | 77 | dev: true |
128 | 78 | ||
129 | /@kwsites/file-exists/1.1.1: | 79 | /@kwsites/file-exists/1.1.1: |
@@ -161,16 +111,16 @@ packages: | |||
161 | '@types/tar-fs': 2.0.1 | 111 | '@types/tar-fs': 2.0.1 |
162 | dev: true | 112 | dev: true |
163 | 113 | ||
164 | /acorn-jsx/5.3.2_acorn@6.4.2: | 114 | /acorn-jsx/5.3.2_acorn@7.4.1: |
165 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} | 115 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} |
166 | peerDependencies: | 116 | peerDependencies: |
167 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 | 117 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 |
168 | dependencies: | 118 | dependencies: |
169 | acorn: 6.4.2 | 119 | acorn: 7.4.1 |
170 | dev: true | 120 | dev: true |
171 | 121 | ||
172 | /acorn/6.4.2: | 122 | /acorn/7.4.1: |
173 | resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} | 123 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} |
174 | engines: {node: '>=0.4.0'} | 124 | engines: {node: '>=0.4.0'} |
175 | hasBin: true | 125 | hasBin: true |
176 | dev: true | 126 | dev: true |
@@ -184,19 +134,23 @@ packages: | |||
184 | uri-js: 4.4.1 | 134 | uri-js: 4.4.1 |
185 | dev: true | 135 | dev: true |
186 | 136 | ||
187 | /ansi-escapes/3.2.0: | 137 | /ajv/8.6.3: |
188 | resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} | 138 | resolution: {integrity: sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==} |
189 | engines: {node: '>=4'} | 139 | dependencies: |
140 | fast-deep-equal: 3.1.3 | ||
141 | json-schema-traverse: 1.0.0 | ||
142 | require-from-string: 2.0.2 | ||
143 | uri-js: 4.4.1 | ||
190 | dev: true | 144 | dev: true |
191 | 145 | ||
192 | /ansi-regex/3.0.0: | 146 | /ansi-colors/4.1.1: |
193 | resolution: {integrity: sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=} | 147 | resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} |
194 | engines: {node: '>=4'} | 148 | engines: {node: '>=6'} |
195 | dev: true | 149 | dev: true |
196 | 150 | ||
197 | /ansi-regex/4.1.0: | 151 | /ansi-regex/5.0.1: |
198 | resolution: {integrity: sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==} | 152 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} |
199 | engines: {node: '>=6'} | 153 | engines: {node: '>=8'} |
200 | dev: true | 154 | dev: true |
201 | 155 | ||
202 | /ansi-styles/3.2.1: | 156 | /ansi-styles/3.2.1: |
@@ -206,33 +160,22 @@ packages: | |||
206 | color-convert: 1.9.3 | 160 | color-convert: 1.9.3 |
207 | dev: true | 161 | dev: true |
208 | 162 | ||
163 | /ansi-styles/4.3.0: | ||
164 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} | ||
165 | engines: {node: '>=8'} | ||
166 | dependencies: | ||
167 | color-convert: 2.0.1 | ||
168 | dev: true | ||
169 | |||
209 | /argparse/1.0.10: | 170 | /argparse/1.0.10: |
210 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} | 171 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} |
211 | dependencies: | 172 | dependencies: |
212 | sprintf-js: 1.0.3 | 173 | sprintf-js: 1.0.3 |
213 | dev: true | 174 | dev: true |
214 | 175 | ||
215 | /astral-regex/1.0.0: | 176 | /astral-regex/2.0.0: |
216 | resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} | 177 | resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} |
217 | engines: {node: '>=4'} | 178 | engines: {node: '>=8'} |
218 | dev: true | ||
219 | |||
220 | /babel-eslint/10.0.3_eslint@5.10.0: | ||
221 | resolution: {integrity: sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA==} | ||
222 | engines: {node: '>=6'} | ||
223 | deprecated: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates. | ||
224 | peerDependencies: | ||
225 | eslint: '>= 4.12.1' | ||
226 | dependencies: | ||
227 | '@babel/code-frame': 7.14.5 | ||
228 | '@babel/parser': 7.15.0 | ||
229 | '@babel/traverse': 7.15.0 | ||
230 | '@babel/types': 7.15.0 | ||
231 | eslint: 5.10.0 | ||
232 | eslint-visitor-keys: 1.3.0 | ||
233 | resolve: 1.20.0 | ||
234 | transitivePeerDependencies: | ||
235 | - supports-color | ||
236 | dev: true | 179 | dev: true |
237 | 180 | ||
238 | /balanced-match/1.0.2: | 181 | /balanced-match/1.0.2: |
@@ -268,16 +211,9 @@ packages: | |||
268 | resolution: {integrity: sha1-+PeLdniYiO858gXNY39o5wISKyw=} | 211 | resolution: {integrity: sha1-+PeLdniYiO858gXNY39o5wISKyw=} |
269 | dev: true | 212 | dev: true |
270 | 213 | ||
271 | /caller-path/0.1.0: | 214 | /callsites/3.1.0: |
272 | resolution: {integrity: sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=} | 215 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} |
273 | engines: {node: '>=0.10.0'} | 216 | engines: {node: '>=6'} |
274 | dependencies: | ||
275 | callsites: 0.2.0 | ||
276 | dev: true | ||
277 | |||
278 | /callsites/0.2.0: | ||
279 | resolution: {integrity: sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=} | ||
280 | engines: {node: '>=0.10.0'} | ||
281 | dev: true | 217 | dev: true |
282 | 218 | ||
283 | /chalk/2.4.2: | 219 | /chalk/2.4.2: |
@@ -289,40 +225,39 @@ packages: | |||
289 | supports-color: 5.5.0 | 225 | supports-color: 5.5.0 |
290 | dev: true | 226 | dev: true |
291 | 227 | ||
292 | /chardet/0.7.0: | 228 | /chalk/4.1.2: |
293 | resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} | 229 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} |
230 | engines: {node: '>=10'} | ||
231 | dependencies: | ||
232 | ansi-styles: 4.3.0 | ||
233 | supports-color: 7.2.0 | ||
294 | dev: true | 234 | dev: true |
295 | 235 | ||
296 | /chownr/1.1.4: | 236 | /chownr/1.1.4: |
297 | resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} | 237 | resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} |
298 | dev: true | 238 | dev: true |
299 | 239 | ||
300 | /circular-json/0.3.3: | ||
301 | resolution: {integrity: sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==} | ||
302 | deprecated: CircularJSON is in maintenance only, flatted is its successor. | ||
303 | dev: true | ||
304 | |||
305 | /cli-cursor/2.1.0: | ||
306 | resolution: {integrity: sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=} | ||
307 | engines: {node: '>=4'} | ||
308 | dependencies: | ||
309 | restore-cursor: 2.0.0 | ||
310 | dev: true | ||
311 | |||
312 | /cli-width/2.2.1: | ||
313 | resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==} | ||
314 | dev: true | ||
315 | |||
316 | /color-convert/1.9.3: | 240 | /color-convert/1.9.3: |
317 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} | 241 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} |
318 | dependencies: | 242 | dependencies: |
319 | color-name: 1.1.3 | 243 | color-name: 1.1.3 |
320 | dev: true | 244 | dev: true |
321 | 245 | ||
246 | /color-convert/2.0.1: | ||
247 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} | ||
248 | engines: {node: '>=7.0.0'} | ||
249 | dependencies: | ||
250 | color-name: 1.1.4 | ||
251 | dev: true | ||
252 | |||
322 | /color-name/1.1.3: | 253 | /color-name/1.1.3: |
323 | resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} | 254 | resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} |
324 | dev: true | 255 | dev: true |
325 | 256 | ||
257 | /color-name/1.1.4: | ||
258 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} | ||
259 | dev: true | ||
260 | |||
326 | /concat-map/0.0.1: | 261 | /concat-map/0.0.1: |
327 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} | 262 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} |
328 | dev: true | 263 | dev: true |
@@ -331,15 +266,13 @@ packages: | |||
331 | resolution: {integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=} | 266 | resolution: {integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=} |
332 | dev: true | 267 | dev: true |
333 | 268 | ||
334 | /cross-spawn/6.0.5: | 269 | /cross-spawn/7.0.3: |
335 | resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} | 270 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} |
336 | engines: {node: '>=4.8'} | 271 | engines: {node: '>= 8'} |
337 | dependencies: | 272 | dependencies: |
338 | nice-try: 1.0.5 | 273 | path-key: 3.1.1 |
339 | path-key: 2.0.1 | 274 | shebang-command: 2.0.0 |
340 | semver: 5.7.1 | 275 | which: 2.0.2 |
341 | shebang-command: 1.2.0 | ||
342 | which: 1.3.1 | ||
343 | dev: true | 276 | dev: true |
344 | 277 | ||
345 | /debug/4.3.2: | 278 | /debug/4.3.2: |
@@ -363,15 +296,15 @@ packages: | |||
363 | engines: {node: '>=8'} | 296 | engines: {node: '>=8'} |
364 | dev: true | 297 | dev: true |
365 | 298 | ||
366 | /doctrine/2.1.0: | 299 | /doctrine/3.0.0: |
367 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} | 300 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} |
368 | engines: {node: '>=0.10.0'} | 301 | engines: {node: '>=6.0.0'} |
369 | dependencies: | 302 | dependencies: |
370 | esutils: 2.0.3 | 303 | esutils: 2.0.3 |
371 | dev: true | 304 | dev: true |
372 | 305 | ||
373 | /emoji-regex/7.0.3: | 306 | /emoji-regex/8.0.0: |
374 | resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} | 307 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} |
375 | dev: true | 308 | dev: true |
376 | 309 | ||
377 | /end-of-stream/1.4.4: | 310 | /end-of-stream/1.4.4: |
@@ -380,21 +313,33 @@ packages: | |||
380 | once: 1.4.0 | 313 | once: 1.4.0 |
381 | dev: true | 314 | dev: true |
382 | 315 | ||
316 | /enquirer/2.3.6: | ||
317 | resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} | ||
318 | engines: {node: '>=8.6'} | ||
319 | dependencies: | ||
320 | ansi-colors: 4.1.1 | ||
321 | dev: true | ||
322 | |||
383 | /escape-string-regexp/1.0.5: | 323 | /escape-string-regexp/1.0.5: |
384 | resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} | 324 | resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} |
385 | engines: {node: '>=0.8.0'} | 325 | engines: {node: '>=0.8.0'} |
386 | dev: true | 326 | dev: true |
387 | 327 | ||
388 | /eslint-scope/4.0.3: | 328 | /escape-string-regexp/4.0.0: |
389 | resolution: {integrity: sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==} | 329 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} |
390 | engines: {node: '>=4.0.0'} | 330 | engines: {node: '>=10'} |
331 | dev: true | ||
332 | |||
333 | /eslint-scope/5.1.1: | ||
334 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} | ||
335 | engines: {node: '>=8.0.0'} | ||
391 | dependencies: | 336 | dependencies: |
392 | esrecurse: 4.3.0 | 337 | esrecurse: 4.3.0 |
393 | estraverse: 4.3.0 | 338 | estraverse: 4.3.0 |
394 | dev: true | 339 | dev: true |
395 | 340 | ||
396 | /eslint-utils/1.4.3: | 341 | /eslint-utils/2.1.0: |
397 | resolution: {integrity: sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==} | 342 | resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} |
398 | engines: {node: '>=6'} | 343 | engines: {node: '>=6'} |
399 | dependencies: | 344 | dependencies: |
400 | eslint-visitor-keys: 1.3.0 | 345 | eslint-visitor-keys: 1.3.0 |
@@ -405,58 +350,66 @@ packages: | |||
405 | engines: {node: '>=4'} | 350 | engines: {node: '>=4'} |
406 | dev: true | 351 | dev: true |
407 | 352 | ||
408 | /eslint/5.10.0: | 353 | /eslint-visitor-keys/2.1.0: |
409 | resolution: {integrity: sha512-HpqzC+BHULKlnPwWae9MaVZ5AXJKpkxCVXQHrFaRw3hbDj26V/9ArYM4Rr/SQ8pi6qUPLXSSXC4RBJlyq2Z2OQ==} | 354 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} |
410 | engines: {node: ^6.14.0 || ^8.10.0 || >=9.10.0} | 355 | engines: {node: '>=10'} |
356 | dev: true | ||
357 | |||
358 | /eslint/7.32.0: | ||
359 | resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} | ||
360 | engines: {node: ^10.12.0 || >=12.0.0} | ||
411 | hasBin: true | 361 | hasBin: true |
412 | dependencies: | 362 | dependencies: |
413 | '@babel/code-frame': 7.14.5 | 363 | '@babel/code-frame': 7.12.11 |
364 | '@eslint/eslintrc': 0.4.3 | ||
365 | '@humanwhocodes/config-array': 0.5.0 | ||
414 | ajv: 6.12.6 | 366 | ajv: 6.12.6 |
415 | chalk: 2.4.2 | 367 | chalk: 4.1.2 |
416 | cross-spawn: 6.0.5 | 368 | cross-spawn: 7.0.3 |
417 | debug: 4.3.2 | 369 | debug: 4.3.2 |
418 | doctrine: 2.1.0 | 370 | doctrine: 3.0.0 |
419 | eslint-scope: 4.0.3 | 371 | enquirer: 2.3.6 |
420 | eslint-utils: 1.4.3 | 372 | escape-string-regexp: 4.0.0 |
421 | eslint-visitor-keys: 1.3.0 | 373 | eslint-scope: 5.1.1 |
422 | espree: 5.0.1 | 374 | eslint-utils: 2.1.0 |
375 | eslint-visitor-keys: 2.1.0 | ||
376 | espree: 7.3.1 | ||
423 | esquery: 1.4.0 | 377 | esquery: 1.4.0 |
424 | esutils: 2.0.3 | 378 | esutils: 2.0.3 |
425 | file-entry-cache: 2.0.0 | 379 | fast-deep-equal: 3.1.3 |
380 | file-entry-cache: 6.0.1 | ||
426 | functional-red-black-tree: 1.0.1 | 381 | functional-red-black-tree: 1.0.1 |
427 | glob: 7.1.7 | 382 | glob-parent: 5.1.2 |
428 | globals: 11.12.0 | 383 | globals: 13.11.0 |
429 | ignore: 4.0.6 | 384 | ignore: 4.0.6 |
385 | import-fresh: 3.3.0 | ||
430 | imurmurhash: 0.1.4 | 386 | imurmurhash: 0.1.4 |
431 | inquirer: 6.5.2 | 387 | is-glob: 4.0.3 |
432 | js-yaml: 3.14.1 | 388 | js-yaml: 3.14.1 |
433 | json-stable-stringify-without-jsonify: 1.0.1 | 389 | json-stable-stringify-without-jsonify: 1.0.1 |
434 | levn: 0.3.0 | 390 | levn: 0.4.1 |
435 | lodash: 4.17.21 | 391 | lodash.merge: 4.6.2 |
436 | minimatch: 3.0.4 | 392 | minimatch: 3.0.4 |
437 | mkdirp: 0.5.5 | ||
438 | natural-compare: 1.4.0 | 393 | natural-compare: 1.4.0 |
439 | optionator: 0.8.3 | 394 | optionator: 0.9.1 |
440 | path-is-inside: 1.0.2 | ||
441 | pluralize: 7.0.0 | ||
442 | progress: 2.0.3 | 395 | progress: 2.0.3 |
443 | regexpp: 2.0.1 | 396 | regexpp: 3.2.0 |
444 | require-uncached: 1.0.3 | 397 | semver: 7.3.5 |
445 | semver: 5.7.1 | 398 | strip-ansi: 6.0.1 |
446 | strip-ansi: 4.0.0 | 399 | strip-json-comments: 3.1.1 |
447 | strip-json-comments: 2.0.1 | 400 | table: 6.7.2 |
448 | table: 5.4.6 | ||
449 | text-table: 0.2.0 | 401 | text-table: 0.2.0 |
402 | v8-compile-cache: 2.3.0 | ||
450 | transitivePeerDependencies: | 403 | transitivePeerDependencies: |
451 | - supports-color | 404 | - supports-color |
452 | dev: true | 405 | dev: true |
453 | 406 | ||
454 | /espree/5.0.1: | 407 | /espree/7.3.1: |
455 | resolution: {integrity: sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==} | 408 | resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} |
456 | engines: {node: '>=6.0.0'} | 409 | engines: {node: ^10.12.0 || >=12.0.0} |
457 | dependencies: | 410 | dependencies: |
458 | acorn: 6.4.2 | 411 | acorn: 7.4.1 |
459 | acorn-jsx: 5.3.2_acorn@6.4.2 | 412 | acorn-jsx: 5.3.2_acorn@7.4.1 |
460 | eslint-visitor-keys: 1.3.0 | 413 | eslint-visitor-keys: 1.3.0 |
461 | dev: true | 414 | dev: true |
462 | 415 | ||
@@ -495,15 +448,6 @@ packages: | |||
495 | engines: {node: '>=0.10.0'} | 448 | engines: {node: '>=0.10.0'} |
496 | dev: true | 449 | dev: true |
497 | 450 | ||
498 | /external-editor/3.1.0: | ||
499 | resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} | ||
500 | engines: {node: '>=4'} | ||
501 | dependencies: | ||
502 | chardet: 0.7.0 | ||
503 | iconv-lite: 0.4.24 | ||
504 | tmp: 0.0.33 | ||
505 | dev: true | ||
506 | |||
507 | /fast-deep-equal/3.1.3: | 451 | /fast-deep-equal/3.1.3: |
508 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} | 452 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} |
509 | dev: true | 453 | dev: true |
@@ -516,29 +460,23 @@ packages: | |||
516 | resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} | 460 | resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} |
517 | dev: true | 461 | dev: true |
518 | 462 | ||
519 | /figures/2.0.0: | 463 | /file-entry-cache/6.0.1: |
520 | resolution: {integrity: sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=} | 464 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} |
521 | engines: {node: '>=4'} | 465 | engines: {node: ^10.12.0 || >=12.0.0} |
522 | dependencies: | 466 | dependencies: |
523 | escape-string-regexp: 1.0.5 | 467 | flat-cache: 3.0.4 |
524 | dev: true | 468 | dev: true |
525 | 469 | ||
526 | /file-entry-cache/2.0.0: | 470 | /flat-cache/3.0.4: |
527 | resolution: {integrity: sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=} | 471 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} |
528 | engines: {node: '>=0.10.0'} | 472 | engines: {node: ^10.12.0 || >=12.0.0} |
529 | dependencies: | 473 | dependencies: |
530 | flat-cache: 1.3.4 | 474 | flatted: 3.2.2 |
531 | object-assign: 4.1.1 | 475 | rimraf: 3.0.2 |
532 | dev: true | 476 | dev: true |
533 | 477 | ||
534 | /flat-cache/1.3.4: | 478 | /flatted/3.2.2: |
535 | resolution: {integrity: sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==} | 479 | resolution: {integrity: sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==} |
536 | engines: {node: '>=0.10.0'} | ||
537 | dependencies: | ||
538 | circular-json: 0.3.3 | ||
539 | graceful-fs: 4.2.8 | ||
540 | rimraf: 2.6.3 | ||
541 | write: 0.2.1 | ||
542 | dev: true | 480 | dev: true |
543 | 481 | ||
544 | /fs-constants/1.0.0: | 482 | /fs-constants/1.0.0: |
@@ -558,14 +496,17 @@ packages: | |||
558 | resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} | 496 | resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} |
559 | dev: true | 497 | dev: true |
560 | 498 | ||
561 | /function-bind/1.1.1: | ||
562 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} | ||
563 | dev: true | ||
564 | |||
565 | /functional-red-black-tree/1.0.1: | 499 | /functional-red-black-tree/1.0.1: |
566 | resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} | 500 | resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} |
567 | dev: true | 501 | dev: true |
568 | 502 | ||
503 | /glob-parent/5.1.2: | ||
504 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} | ||
505 | engines: {node: '>= 6'} | ||
506 | dependencies: | ||
507 | is-glob: 4.0.3 | ||
508 | dev: true | ||
509 | |||
569 | /glob/7.1.7: | 510 | /glob/7.1.7: |
570 | resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} | 511 | resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} |
571 | dependencies: | 512 | dependencies: |
@@ -577,9 +518,11 @@ packages: | |||
577 | path-is-absolute: 1.0.1 | 518 | path-is-absolute: 1.0.1 |
578 | dev: true | 519 | dev: true |
579 | 520 | ||
580 | /globals/11.12.0: | 521 | /globals/13.11.0: |
581 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} | 522 | resolution: {integrity: sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==} |
582 | engines: {node: '>=4'} | 523 | engines: {node: '>=8'} |
524 | dependencies: | ||
525 | type-fest: 0.20.2 | ||
583 | dev: true | 526 | dev: true |
584 | 527 | ||
585 | /graceful-fs/4.2.8: | 528 | /graceful-fs/4.2.8: |
@@ -591,26 +534,17 @@ packages: | |||
591 | engines: {node: '>=4'} | 534 | engines: {node: '>=4'} |
592 | dev: true | 535 | dev: true |
593 | 536 | ||
594 | /has/1.0.3: | 537 | /has-flag/4.0.0: |
595 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} | 538 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} |
596 | engines: {node: '>= 0.4.0'} | 539 | engines: {node: '>=8'} |
597 | dependencies: | ||
598 | function-bind: 1.1.1 | ||
599 | dev: true | 540 | dev: true |
600 | 541 | ||
601 | /husky/7.0.1: | 542 | /husky/7.0.2: |
602 | resolution: {integrity: sha512-gceRaITVZ+cJH9sNHqx5tFwbzlLCVxtVZcusME8JYQ8Edy5mpGDOqD8QBCdMhpyo9a+JXddnujQ4rpY2Ff9SJA==} | 543 | resolution: {integrity: sha512-8yKEWNX4z2YsofXAMT7KvA1g8p+GxtB1ffV8XtpAEGuXNAbCV5wdNKH+qTpw8SM9fh4aMPDR+yQuKfgnreyZlg==} |
603 | engines: {node: '>=12'} | 544 | engines: {node: '>=12'} |
604 | hasBin: true | 545 | hasBin: true |
605 | dev: true | 546 | dev: true |
606 | 547 | ||
607 | /iconv-lite/0.4.24: | ||
608 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} | ||
609 | engines: {node: '>=0.10.0'} | ||
610 | dependencies: | ||
611 | safer-buffer: 2.1.2 | ||
612 | dev: true | ||
613 | |||
614 | /ignore/4.0.6: | 548 | /ignore/4.0.6: |
615 | resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} | 549 | resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} |
616 | engines: {node: '>= 4'} | 550 | engines: {node: '>= 4'} |
@@ -624,6 +558,14 @@ packages: | |||
624 | queue: 6.0.2 | 558 | queue: 6.0.2 |
625 | dev: true | 559 | dev: true |
626 | 560 | ||
561 | /import-fresh/3.3.0: | ||
562 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} | ||
563 | engines: {node: '>=6'} | ||
564 | dependencies: | ||
565 | parent-module: 1.0.1 | ||
566 | resolve-from: 4.0.0 | ||
567 | dev: true | ||
568 | |||
627 | /imurmurhash/0.1.4: | 569 | /imurmurhash/0.1.4: |
628 | resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} | 570 | resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} |
629 | engines: {node: '>=0.8.19'} | 571 | engines: {node: '>=0.8.19'} |
@@ -640,40 +582,27 @@ packages: | |||
640 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} | 582 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} |
641 | dev: true | 583 | dev: true |
642 | 584 | ||
643 | /inquirer/6.5.2: | 585 | /is-docker/2.2.1: |
644 | resolution: {integrity: sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==} | 586 | resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} |
645 | engines: {node: '>=6.0.0'} | 587 | engines: {node: '>=8'} |
646 | dependencies: | 588 | hasBin: true |
647 | ansi-escapes: 3.2.0 | ||
648 | chalk: 2.4.2 | ||
649 | cli-cursor: 2.1.0 | ||
650 | cli-width: 2.2.1 | ||
651 | external-editor: 3.1.0 | ||
652 | figures: 2.0.0 | ||
653 | lodash: 4.17.21 | ||
654 | mute-stream: 0.0.7 | ||
655 | run-async: 2.4.1 | ||
656 | rxjs: 6.6.7 | ||
657 | string-width: 2.1.1 | ||
658 | strip-ansi: 5.2.0 | ||
659 | through: 2.3.8 | ||
660 | dev: true | 589 | dev: true |
661 | 590 | ||
662 | /is-core-module/2.5.0: | 591 | /is-extglob/2.1.1: |
663 | resolution: {integrity: sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==} | 592 | resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} |
664 | dependencies: | 593 | engines: {node: '>=0.10.0'} |
665 | has: 1.0.3 | ||
666 | dev: true | 594 | dev: true |
667 | 595 | ||
668 | /is-docker/2.2.1: | 596 | /is-fullwidth-code-point/3.0.0: |
669 | resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} | 597 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} |
670 | engines: {node: '>=8'} | 598 | engines: {node: '>=8'} |
671 | hasBin: true | ||
672 | dev: true | 599 | dev: true |
673 | 600 | ||
674 | /is-fullwidth-code-point/2.0.0: | 601 | /is-glob/4.0.3: |
675 | resolution: {integrity: sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=} | 602 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} |
676 | engines: {node: '>=4'} | 603 | engines: {node: '>=0.10.0'} |
604 | dependencies: | ||
605 | is-extglob: 2.1.1 | ||
677 | dev: true | 606 | dev: true |
678 | 607 | ||
679 | /is-wsl/2.2.0: | 608 | /is-wsl/2.2.0: |
@@ -703,16 +632,14 @@ packages: | |||
703 | esprima: 4.0.1 | 632 | esprima: 4.0.1 |
704 | dev: true | 633 | dev: true |
705 | 634 | ||
706 | /jsesc/2.5.2: | ||
707 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} | ||
708 | engines: {node: '>=4'} | ||
709 | hasBin: true | ||
710 | dev: true | ||
711 | |||
712 | /json-schema-traverse/0.4.1: | 635 | /json-schema-traverse/0.4.1: |
713 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} | 636 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} |
714 | dev: true | 637 | dev: true |
715 | 638 | ||
639 | /json-schema-traverse/1.0.0: | ||
640 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} | ||
641 | dev: true | ||
642 | |||
716 | /json-stable-stringify-without-jsonify/1.0.1: | 643 | /json-stable-stringify-without-jsonify/1.0.1: |
717 | resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} | 644 | resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} |
718 | dev: true | 645 | dev: true |
@@ -725,21 +652,31 @@ packages: | |||
725 | graceful-fs: 4.2.8 | 652 | graceful-fs: 4.2.8 |
726 | dev: true | 653 | dev: true |
727 | 654 | ||
728 | /levn/0.3.0: | 655 | /levn/0.4.1: |
729 | resolution: {integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=} | 656 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} |
730 | engines: {node: '>= 0.8.0'} | 657 | engines: {node: '>= 0.8.0'} |
731 | dependencies: | 658 | dependencies: |
732 | prelude-ls: 1.1.2 | 659 | prelude-ls: 1.2.1 |
733 | type-check: 0.3.2 | 660 | type-check: 0.4.0 |
734 | dev: true | 661 | dev: true |
735 | 662 | ||
736 | /lodash/4.17.21: | 663 | /lodash.clonedeep/4.5.0: |
737 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} | 664 | resolution: {integrity: sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=} |
738 | dev: true | 665 | dev: true |
739 | 666 | ||
740 | /mimic-fn/1.2.0: | 667 | /lodash.merge/4.6.2: |
741 | resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} | 668 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} |
742 | engines: {node: '>=4'} | 669 | dev: true |
670 | |||
671 | /lodash.truncate/4.4.2: | ||
672 | resolution: {integrity: sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=} | ||
673 | dev: true | ||
674 | |||
675 | /lru-cache/6.0.0: | ||
676 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} | ||
677 | engines: {node: '>=10'} | ||
678 | dependencies: | ||
679 | yallist: 4.0.0 | ||
743 | dev: true | 680 | dev: true |
744 | 681 | ||
745 | /minimatch/3.0.4: | 682 | /minimatch/3.0.4: |
@@ -763,38 +700,18 @@ packages: | |||
763 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} | 700 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} |
764 | dev: true | 701 | dev: true |
765 | 702 | ||
766 | /mute-stream/0.0.7: | ||
767 | resolution: {integrity: sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=} | ||
768 | dev: true | ||
769 | |||
770 | /natural-compare/1.4.0: | 703 | /natural-compare/1.4.0: |
771 | resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} | 704 | resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} |
772 | dev: true | 705 | dev: true |
773 | 706 | ||
774 | /nice-try/1.0.5: | ||
775 | resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} | ||
776 | dev: true | ||
777 | |||
778 | /object-assign/4.1.1: | ||
779 | resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} | ||
780 | engines: {node: '>=0.10.0'} | ||
781 | dev: true | ||
782 | |||
783 | /once/1.4.0: | 707 | /once/1.4.0: |
784 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} | 708 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} |
785 | dependencies: | 709 | dependencies: |
786 | wrappy: 1.0.2 | 710 | wrappy: 1.0.2 |
787 | dev: true | 711 | dev: true |
788 | 712 | ||
789 | /onetime/2.0.1: | 713 | /open/8.2.1: |
790 | resolution: {integrity: sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=} | 714 | resolution: {integrity: sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==} |
791 | engines: {node: '>=4'} | ||
792 | dependencies: | ||
793 | mimic-fn: 1.2.0 | ||
794 | dev: true | ||
795 | |||
796 | /open/8.2.0: | ||
797 | resolution: {integrity: sha512-O8uInONB4asyY3qUcEytpgwxQG3O0fJ/hlssoUHsBboOIRVZzT6Wq+Rwj5nffbeUhOdMjpXeISpDDzHCMRDuOQ==} | ||
798 | engines: {node: '>=12'} | 715 | engines: {node: '>=12'} |
799 | dependencies: | 716 | dependencies: |
800 | define-lazy-prop: 2.0.0 | 717 | define-lazy-prop: 2.0.0 |
@@ -802,21 +719,23 @@ packages: | |||
802 | is-wsl: 2.2.0 | 719 | is-wsl: 2.2.0 |
803 | dev: true | 720 | dev: true |
804 | 721 | ||
805 | /optionator/0.8.3: | 722 | /optionator/0.9.1: |
806 | resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} | 723 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} |
807 | engines: {node: '>= 0.8.0'} | 724 | engines: {node: '>= 0.8.0'} |
808 | dependencies: | 725 | dependencies: |
809 | deep-is: 0.1.3 | 726 | deep-is: 0.1.3 |
810 | fast-levenshtein: 2.0.6 | 727 | fast-levenshtein: 2.0.6 |
811 | levn: 0.3.0 | 728 | levn: 0.4.1 |
812 | prelude-ls: 1.1.2 | 729 | prelude-ls: 1.2.1 |
813 | type-check: 0.3.2 | 730 | type-check: 0.4.0 |
814 | word-wrap: 1.2.3 | 731 | word-wrap: 1.2.3 |
815 | dev: true | 732 | dev: true |
816 | 733 | ||
817 | /os-tmpdir/1.0.2: | 734 | /parent-module/1.0.1: |
818 | resolution: {integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=} | 735 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} |
819 | engines: {node: '>=0.10.0'} | 736 | engines: {node: '>=6'} |
737 | dependencies: | ||
738 | callsites: 3.1.0 | ||
820 | dev: true | 739 | dev: true |
821 | 740 | ||
822 | /path-is-absolute/1.0.1: | 741 | /path-is-absolute/1.0.1: |
@@ -824,31 +743,18 @@ packages: | |||
824 | engines: {node: '>=0.10.0'} | 743 | engines: {node: '>=0.10.0'} |
825 | dev: true | 744 | dev: true |
826 | 745 | ||
827 | /path-is-inside/1.0.2: | 746 | /path-key/3.1.1: |
828 | resolution: {integrity: sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=} | 747 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} |
829 | dev: true | 748 | engines: {node: '>=8'} |
830 | |||
831 | /path-key/2.0.1: | ||
832 | resolution: {integrity: sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=} | ||
833 | engines: {node: '>=4'} | ||
834 | dev: true | ||
835 | |||
836 | /path-parse/1.0.7: | ||
837 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} | ||
838 | dev: true | ||
839 | |||
840 | /pluralize/7.0.0: | ||
841 | resolution: {integrity: sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==} | ||
842 | engines: {node: '>=4'} | ||
843 | dev: true | 749 | dev: true |
844 | 750 | ||
845 | /prelude-ls/1.1.2: | 751 | /prelude-ls/1.2.1: |
846 | resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=} | 752 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} |
847 | engines: {node: '>= 0.8.0'} | 753 | engines: {node: '>= 0.8.0'} |
848 | dev: true | 754 | dev: true |
849 | 755 | ||
850 | /prettier/2.3.2: | 756 | /prettier/2.4.1: |
851 | resolution: {integrity: sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==} | 757 | resolution: {integrity: sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==} |
852 | engines: {node: '>=10.13.0'} | 758 | engines: {node: '>=10.13.0'} |
853 | hasBin: true | 759 | hasBin: true |
854 | dev: true | 760 | dev: true |
@@ -892,58 +798,28 @@ packages: | |||
892 | util-deprecate: 1.0.2 | 798 | util-deprecate: 1.0.2 |
893 | dev: true | 799 | dev: true |
894 | 800 | ||
895 | /regexpp/2.0.1: | 801 | /regexpp/3.2.0: |
896 | resolution: {integrity: sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==} | 802 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} |
897 | engines: {node: '>=6.5.0'} | 803 | engines: {node: '>=8'} |
898 | dev: true | ||
899 | |||
900 | /require-uncached/1.0.3: | ||
901 | resolution: {integrity: sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=} | ||
902 | engines: {node: '>=0.10.0'} | ||
903 | dependencies: | ||
904 | caller-path: 0.1.0 | ||
905 | resolve-from: 1.0.1 | ||
906 | dev: true | 804 | dev: true |
907 | 805 | ||
908 | /resolve-from/1.0.1: | 806 | /require-from-string/2.0.2: |
909 | resolution: {integrity: sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=} | 807 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} |
910 | engines: {node: '>=0.10.0'} | 808 | engines: {node: '>=0.10.0'} |
911 | dev: true | 809 | dev: true |
912 | 810 | ||
913 | /resolve/1.20.0: | 811 | /resolve-from/4.0.0: |
914 | resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} | 812 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} |
915 | dependencies: | ||
916 | is-core-module: 2.5.0 | ||
917 | path-parse: 1.0.7 | ||
918 | dev: true | ||
919 | |||
920 | /restore-cursor/2.0.0: | ||
921 | resolution: {integrity: sha1-n37ih/gv0ybU/RYpI9YhKe7g368=} | ||
922 | engines: {node: '>=4'} | 813 | engines: {node: '>=4'} |
923 | dependencies: | ||
924 | onetime: 2.0.1 | ||
925 | signal-exit: 3.0.3 | ||
926 | dev: true | 814 | dev: true |
927 | 815 | ||
928 | /rimraf/2.6.3: | 816 | /rimraf/3.0.2: |
929 | resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} | 817 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} |
930 | hasBin: true | 818 | hasBin: true |
931 | dependencies: | 819 | dependencies: |
932 | glob: 7.1.7 | 820 | glob: 7.1.7 |
933 | dev: true | 821 | dev: true |
934 | 822 | ||
935 | /run-async/2.4.1: | ||
936 | resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} | ||
937 | engines: {node: '>=0.12.0'} | ||
938 | dev: true | ||
939 | |||
940 | /rxjs/6.6.7: | ||
941 | resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} | ||
942 | engines: {npm: '>=2.0.0'} | ||
943 | dependencies: | ||
944 | tslib: 1.14.1 | ||
945 | dev: true | ||
946 | |||
947 | /safe-buffer/5.1.2: | 823 | /safe-buffer/5.1.2: |
948 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} | 824 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} |
949 | dev: true | 825 | dev: true |
@@ -952,33 +828,28 @@ packages: | |||
952 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} | 828 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} |
953 | dev: true | 829 | dev: true |
954 | 830 | ||
955 | /safer-buffer/2.1.2: | 831 | /semver/7.3.5: |
956 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} | 832 | resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} |
957 | dev: true | 833 | engines: {node: '>=10'} |
958 | |||
959 | /semver/5.7.1: | ||
960 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} | ||
961 | hasBin: true | 834 | hasBin: true |
962 | dev: true | ||
963 | |||
964 | /shebang-command/1.2.0: | ||
965 | resolution: {integrity: sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=} | ||
966 | engines: {node: '>=0.10.0'} | ||
967 | dependencies: | 835 | dependencies: |
968 | shebang-regex: 1.0.0 | 836 | lru-cache: 6.0.0 |
969 | dev: true | 837 | dev: true |
970 | 838 | ||
971 | /shebang-regex/1.0.0: | 839 | /shebang-command/2.0.0: |
972 | resolution: {integrity: sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=} | 840 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} |
973 | engines: {node: '>=0.10.0'} | 841 | engines: {node: '>=8'} |
842 | dependencies: | ||
843 | shebang-regex: 3.0.0 | ||
974 | dev: true | 844 | dev: true |
975 | 845 | ||
976 | /signal-exit/3.0.3: | 846 | /shebang-regex/3.0.0: |
977 | resolution: {integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==} | 847 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} |
848 | engines: {node: '>=8'} | ||
978 | dev: true | 849 | dev: true |
979 | 850 | ||
980 | /simple-git/2.39.0: | 851 | /simple-git/2.46.0: |
981 | resolution: {integrity: sha512-VOsrmc3fpp1lGVIpo+1SKNqJzrdVJeSGZCeenPKnJPNo5UouAlSkWFc037pfm9wRYtfxBdwp2deVJGCG8J6C8A==} | 852 | resolution: {integrity: sha512-6eumII1vfP4NpRqxZcVWCcIT5xHH6dRyvBZSjkH4dJRDRpv+0f75hrN5ysp++y23Mfr3AbRC/dO2NDbfj1lJpQ==} |
982 | dependencies: | 853 | dependencies: |
983 | '@kwsites/file-exists': 1.1.1 | 854 | '@kwsites/file-exists': 1.1.1 |
984 | '@kwsites/promise-deferred': 1.1.1 | 855 | '@kwsites/promise-deferred': 1.1.1 |
@@ -987,39 +858,26 @@ packages: | |||
987 | - supports-color | 858 | - supports-color |
988 | dev: true | 859 | dev: true |
989 | 860 | ||
990 | /slice-ansi/2.1.0: | 861 | /slice-ansi/4.0.0: |
991 | resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} | 862 | resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} |
992 | engines: {node: '>=6'} | 863 | engines: {node: '>=10'} |
993 | dependencies: | 864 | dependencies: |
994 | ansi-styles: 3.2.1 | 865 | ansi-styles: 4.3.0 |
995 | astral-regex: 1.0.0 | 866 | astral-regex: 2.0.0 |
996 | is-fullwidth-code-point: 2.0.0 | 867 | is-fullwidth-code-point: 3.0.0 |
997 | dev: true | ||
998 | |||
999 | /source-map/0.5.7: | ||
1000 | resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} | ||
1001 | engines: {node: '>=0.10.0'} | ||
1002 | dev: true | 868 | dev: true |
1003 | 869 | ||
1004 | /sprintf-js/1.0.3: | 870 | /sprintf-js/1.0.3: |
1005 | resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} | 871 | resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} |
1006 | dev: true | 872 | dev: true |
1007 | 873 | ||
1008 | /string-width/2.1.1: | 874 | /string-width/4.2.3: |
1009 | resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} | 875 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} |
1010 | engines: {node: '>=4'} | 876 | engines: {node: '>=8'} |
1011 | dependencies: | ||
1012 | is-fullwidth-code-point: 2.0.0 | ||
1013 | strip-ansi: 4.0.0 | ||
1014 | dev: true | ||
1015 | |||
1016 | /string-width/3.1.0: | ||
1017 | resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} | ||
1018 | engines: {node: '>=6'} | ||
1019 | dependencies: | 877 | dependencies: |
1020 | emoji-regex: 7.0.3 | 878 | emoji-regex: 8.0.0 |
1021 | is-fullwidth-code-point: 2.0.0 | 879 | is-fullwidth-code-point: 3.0.0 |
1022 | strip-ansi: 5.2.0 | 880 | strip-ansi: 6.0.1 |
1023 | dev: true | 881 | dev: true |
1024 | 882 | ||
1025 | /string_decoder/1.1.1: | 883 | /string_decoder/1.1.1: |
@@ -1028,23 +886,16 @@ packages: | |||
1028 | safe-buffer: 5.1.2 | 886 | safe-buffer: 5.1.2 |
1029 | dev: true | 887 | dev: true |
1030 | 888 | ||
1031 | /strip-ansi/4.0.0: | 889 | /strip-ansi/6.0.1: |
1032 | resolution: {integrity: sha1-qEeQIusaw2iocTibY1JixQXuNo8=} | 890 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} |
1033 | engines: {node: '>=4'} | 891 | engines: {node: '>=8'} |
1034 | dependencies: | ||
1035 | ansi-regex: 3.0.0 | ||
1036 | dev: true | ||
1037 | |||
1038 | /strip-ansi/5.2.0: | ||
1039 | resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} | ||
1040 | engines: {node: '>=6'} | ||
1041 | dependencies: | 892 | dependencies: |
1042 | ansi-regex: 4.1.0 | 893 | ansi-regex: 5.0.1 |
1043 | dev: true | 894 | dev: true |
1044 | 895 | ||
1045 | /strip-json-comments/2.0.1: | 896 | /strip-json-comments/3.1.1: |
1046 | resolution: {integrity: sha1-PFMZQukIwml8DsNEhYwobHygpgo=} | 897 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} |
1047 | engines: {node: '>=0.10.0'} | 898 | engines: {node: '>=8'} |
1048 | dev: true | 899 | dev: true |
1049 | 900 | ||
1050 | /supports-color/5.5.0: | 901 | /supports-color/5.5.0: |
@@ -1054,14 +905,23 @@ packages: | |||
1054 | has-flag: 3.0.0 | 905 | has-flag: 3.0.0 |
1055 | dev: true | 906 | dev: true |
1056 | 907 | ||
1057 | /table/5.4.6: | 908 | /supports-color/7.2.0: |
1058 | resolution: {integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==} | 909 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} |
1059 | engines: {node: '>=6.0.0'} | 910 | engines: {node: '>=8'} |
1060 | dependencies: | 911 | dependencies: |
1061 | ajv: 6.12.6 | 912 | has-flag: 4.0.0 |
1062 | lodash: 4.17.21 | 913 | dev: true |
1063 | slice-ansi: 2.1.0 | 914 | |
1064 | string-width: 3.1.0 | 915 | /table/6.7.2: |
916 | resolution: {integrity: sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==} | ||
917 | engines: {node: '>=10.0.0'} | ||
918 | dependencies: | ||
919 | ajv: 8.6.3 | ||
920 | lodash.clonedeep: 4.5.0 | ||
921 | lodash.truncate: 4.4.2 | ||
922 | slice-ansi: 4.0.0 | ||
923 | string-width: 4.2.3 | ||
924 | strip-ansi: 6.0.1 | ||
1065 | dev: true | 925 | dev: true |
1066 | 926 | ||
1067 | /tar-fs/1.16.3: | 927 | /tar-fs/1.16.3: |
@@ -1096,35 +956,20 @@ packages: | |||
1096 | resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} | 956 | resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} |
1097 | dev: true | 957 | dev: true |
1098 | 958 | ||
1099 | /through/2.3.8: | ||
1100 | resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} | ||
1101 | dev: true | ||
1102 | |||
1103 | /tmp/0.0.33: | ||
1104 | resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} | ||
1105 | engines: {node: '>=0.6.0'} | ||
1106 | dependencies: | ||
1107 | os-tmpdir: 1.0.2 | ||
1108 | dev: true | ||
1109 | |||
1110 | /to-buffer/1.1.1: | 959 | /to-buffer/1.1.1: |
1111 | resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==} | 960 | resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==} |
1112 | dev: true | 961 | dev: true |
1113 | 962 | ||
1114 | /to-fast-properties/2.0.0: | 963 | /type-check/0.4.0: |
1115 | resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} | 964 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} |
1116 | engines: {node: '>=4'} | ||
1117 | dev: true | ||
1118 | |||
1119 | /tslib/1.14.1: | ||
1120 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} | ||
1121 | dev: true | ||
1122 | |||
1123 | /type-check/0.3.2: | ||
1124 | resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=} | ||
1125 | engines: {node: '>= 0.8.0'} | 965 | engines: {node: '>= 0.8.0'} |
1126 | dependencies: | 966 | dependencies: |
1127 | prelude-ls: 1.1.2 | 967 | prelude-ls: 1.2.1 |
968 | dev: true | ||
969 | |||
970 | /type-fest/0.20.2: | ||
971 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} | ||
972 | engines: {node: '>=10'} | ||
1128 | dev: true | 973 | dev: true |
1129 | 974 | ||
1130 | /universalify/2.0.0: | 975 | /universalify/2.0.0: |
@@ -1142,8 +987,13 @@ packages: | |||
1142 | resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} | 987 | resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} |
1143 | dev: true | 988 | dev: true |
1144 | 989 | ||
1145 | /which/1.3.1: | 990 | /v8-compile-cache/2.3.0: |
1146 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} | 991 | resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} |
992 | dev: true | ||
993 | |||
994 | /which/2.0.2: | ||
995 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} | ||
996 | engines: {node: '>= 8'} | ||
1147 | hasBin: true | 997 | hasBin: true |
1148 | dependencies: | 998 | dependencies: |
1149 | isexe: 2.0.0 | 999 | isexe: 2.0.0 |
@@ -1158,14 +1008,11 @@ packages: | |||
1158 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} | 1008 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} |
1159 | dev: true | 1009 | dev: true |
1160 | 1010 | ||
1161 | /write/0.2.1: | ||
1162 | resolution: {integrity: sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=} | ||
1163 | engines: {node: '>=0.10.0'} | ||
1164 | dependencies: | ||
1165 | mkdirp: 0.5.5 | ||
1166 | dev: true | ||
1167 | |||
1168 | /xtend/4.0.2: | 1011 | /xtend/4.0.2: |
1169 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} | 1012 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} |
1170 | engines: {node: '>=0.4'} | 1013 | engines: {node: '>=0.4'} |
1171 | dev: true | 1014 | dev: true |
1015 | |||
1016 | /yallist/4.0.0: | ||
1017 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} | ||
1018 | dev: true | ||
diff --git a/recipes/NewsBlur/webview.js b/recipes/NewsBlur/webview.js index 7e19dff..23607bd 100644 --- a/recipes/NewsBlur/webview.js +++ b/recipes/NewsBlur/webview.js | |||
@@ -1,2 +1 @@ | |||
1 | module.exports = Ferdi => { | module.exports = Ferdi => Ferdi; | |
2 | }; | ||
diff --git a/recipes/basecamp/webview.js b/recipes/basecamp/webview.js index e7b7dde..16eced3 100644 --- a/recipes/basecamp/webview.js +++ b/recipes/basecamp/webview.js | |||
@@ -1,9 +1,10 @@ | |||
1 | const _path = _interopRequireDefault(require('path')); | 1 | const _path = _interopRequireDefault(require('path')); |
2 | 2 | ||
3 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | 3 | function _interopRequireDefault(obj) { |
4 | return obj && obj.__esModule ? obj : { default: obj }; | ||
5 | } | ||
4 | 6 | ||
5 | module.exports = (Ferdi) => { | 7 | module.exports = Ferdi => { |
6 | let updates = 0; | ||
7 | const modal = document.createElement('div'); | 8 | const modal = document.createElement('div'); |
8 | 9 | ||
9 | const waitFor = (condition, callback) => { | 10 | const waitFor = (condition, callback) => { |
@@ -16,13 +17,11 @@ module.exports = (Ferdi) => { | |||
16 | function showModal(text) { | 17 | function showModal(text) { |
17 | show(modal); | 18 | show(modal); |
18 | modal.querySelector('p').innerHTML = text; | 19 | modal.querySelector('p').innerHTML = text; |
19 | updates += 1; | ||
20 | } | 20 | } |
21 | 21 | ||
22 | function hideModal() { | 22 | function hideModal() { |
23 | hide(modal); | 23 | hide(modal); |
24 | modal.querySelector('p').innerHTML = ''; | 24 | modal.querySelector('p').innerHTML = ''; |
25 | updates -= 1; | ||
26 | } | 25 | } |
27 | 26 | ||
28 | // Replace window.alert to hide alerts in Ferdi | 27 | // Replace window.alert to hide alerts in Ferdi |
@@ -41,11 +40,19 @@ module.exports = (Ferdi) => { | |||
41 | } | 40 | } |
42 | 41 | ||
43 | modal.id = 'franz-modal'; | 42 | modal.id = 'franz-modal'; |
44 | modal.innerHTML = '<div class="modal-content"><span class="close">×</span><p></p></div>'; | 43 | modal.innerHTML = |
44 | '<div class="modal-content"><span class="close">×</span><p></p></div>'; | ||
45 | modal.querySelector('.close').addEventListener('click', hideModal); | 45 | modal.querySelector('.close').addEventListener('click', hideModal); |
46 | waitFor(() => document.body, () => document.body.appendChild(modal)); | 46 | waitFor( |
47 | 47 | () => document.body, | |
48 | document.addEventListener('keydown', (e) => { if (e.keyCode === 27) { hideModal(); } }); | 48 | () => document.body.appendChild(modal), |
49 | ); | ||
50 | |||
51 | document.addEventListener('keydown', e => { | ||
52 | if (e.key === 'Escape') { | ||
53 | hideModal(); | ||
54 | } | ||
55 | }); | ||
49 | 56 | ||
50 | Ferdi.injectCSS(_path.default.join(__dirname, 'css', 'modal.css')); | 57 | Ferdi.injectCSS(_path.default.join(__dirname, 'css', 'modal.css')); |
51 | }; | 58 | }; |
diff --git a/recipes/box/webview.js b/recipes/box/webview.js index 7e19dff..23607bd 100644 --- a/recipes/box/webview.js +++ b/recipes/box/webview.js | |||
@@ -1,2 +1 @@ | |||
1 | module.exports = Ferdi => { | module.exports = Ferdi => Ferdi; | |
2 | }; | ||
diff --git a/recipes/devRant/index.js b/recipes/devRant/index.js index 7e19dff..23607bd 100644 --- a/recipes/devRant/index.js +++ b/recipes/devRant/index.js | |||
@@ -1,2 +1 @@ | |||
1 | module.exports = Ferdi => { | module.exports = Ferdi => Ferdi; | |
2 | }; | ||
diff --git a/recipes/devdocs/webview.js b/recipes/devdocs/webview.js index 7e19dff..23607bd 100644 --- a/recipes/devdocs/webview.js +++ b/recipes/devdocs/webview.js | |||
@@ -1,2 +1 @@ | |||
1 | module.exports = Ferdi => { | module.exports = Ferdi => Ferdi; | |
2 | }; | ||
diff --git a/recipes/easy-redmine/webview.js b/recipes/easy-redmine/webview.js index 7e19dff..23607bd 100644 --- a/recipes/easy-redmine/webview.js +++ b/recipes/easy-redmine/webview.js | |||
@@ -1,2 +1 @@ | |||
1 | module.exports = Ferdi => { | module.exports = Ferdi => Ferdi; | |
2 | }; | ||
diff --git a/recipes/feedbin/webview.js b/recipes/feedbin/webview.js index 5c08892..197814e 100644 --- a/recipes/feedbin/webview.js +++ b/recipes/feedbin/webview.js | |||
@@ -1,8 +1,9 @@ | |||
1 | module.exports = (Ferdi) => { | 1 | module.exports = Ferdi => { |
2 | const getMessages = () => { | 2 | const getMessages = () => { |
3 | // eslint-disable-next-line no-undef | ||
3 | const count = feedbin.count_data.unread_entries.length || 0; | 4 | const count = feedbin.count_data.unread_entries.length || 0; |
4 | Ferdi.setBadge(count); | 5 | Ferdi.setBadge(count); |
5 | } | 6 | }; |
6 | 7 | ||
7 | Ferdi.loop(getMessages); | 8 | Ferdi.loop(getMessages); |
8 | }; | 9 | }; |
diff --git a/recipes/figma/webview.js b/recipes/figma/webview.js index 7e19dff..23607bd 100644 --- a/recipes/figma/webview.js +++ b/recipes/figma/webview.js | |||
@@ -1,2 +1 @@ | |||
1 | module.exports = Ferdi => { | module.exports = Ferdi => Ferdi; | |
2 | }; | ||
diff --git a/recipes/franz-custom-website/index.js b/recipes/franz-custom-website/index.js index c0f91cb..6e4f228 100644 --- a/recipes/franz-custom-website/index.js +++ b/recipes/franz-custom-website/index.js | |||
@@ -1,5 +1,6 @@ | |||
1 | module.exports = Ferdi => class CustomWebsite extends Ferdi { | 1 | module.exports = Ferdi => |
2 | async validateUrl(url) { | 2 | class CustomWebsite extends Ferdi { |
3 | return true; | 3 | async validateUrl() { |
4 | } | 4 | return true; |
5 | }; | 5 | } |
6 | }; | ||
diff --git a/recipes/franz-custom-website/webview.js b/recipes/franz-custom-website/webview.js index ca6a9f7..9eec086 100644 --- a/recipes/franz-custom-website/webview.js +++ b/recipes/franz-custom-website/webview.js | |||
@@ -1,6 +1,8 @@ | |||
1 | const _path = _interopRequireDefault(require('path')); | 1 | const _path = _interopRequireDefault(require('path')); |
2 | 2 | ||
3 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | 3 | function _interopRequireDefault(obj) { |
4 | return obj && obj.__esModule ? obj : { default: obj }; | ||
5 | } | ||
4 | 6 | ||
5 | module.exports = Ferdi => { | 7 | module.exports = Ferdi => { |
6 | Ferdi.injectCSS(_path.default.join(__dirname, 'style.css')); | 8 | Ferdi.injectCSS(_path.default.join(__dirname, 'style.css')); |
diff --git a/recipes/google-voice/webview.js b/recipes/google-voice/webview.js index 7cada87..eb3004d 100644 --- a/recipes/google-voice/webview.js +++ b/recipes/google-voice/webview.js | |||
@@ -9,16 +9,23 @@ module.exports = Ferdi => { | |||
9 | let count; | 9 | let count; |
10 | 10 | ||
11 | if (el) { | 11 | if (el) { |
12 | // eslint-disable-next-line no-useless-escape | ||
12 | count = Ferdi.safeParseInt(el.innerHTML.replace(/[\(\) ]/gi, '')); | 13 | count = Ferdi.safeParseInt(el.innerHTML.replace(/[\(\) ]/gi, '')); |
13 | } else { | 14 | } else { |
14 | const count_messages = parseQuery('gv-nav-tab[tooltip="Messages"] div[aria-label="Unread count"]'); | 15 | const count_messages = parseQuery( |
15 | const count_calls = parseQuery('gv-nav-tab[tooltip="Calls"] div[aria-label="Unread count"]'); | 16 | 'gv-nav-tab[tooltip="Messages"] div[aria-label="Unread count"]', |
16 | const count_voicemails = parseQuery('gv-nav-tab[tooltip="Voicemail"] div[aria-label="Unread count"]'); | 17 | ); |
18 | const count_calls = parseQuery( | ||
19 | 'gv-nav-tab[tooltip="Calls"] div[aria-label="Unread count"]', | ||
20 | ); | ||
21 | const count_voicemails = parseQuery( | ||
22 | 'gv-nav-tab[tooltip="Voicemail"] div[aria-label="Unread count"]', | ||
23 | ); | ||
17 | count = count_messages + count_calls + count_voicemails; | 24 | count = count_messages + count_calls + count_voicemails; |
18 | } | 25 | } |
19 | 26 | ||
20 | Ferdi.setBadge(count); | 27 | Ferdi.setBadge(count); |
21 | } | 28 | }; |
22 | 29 | ||
23 | Ferdi.loop(getMessages); | 30 | Ferdi.loop(getMessages); |
24 | }; | 31 | }; |
diff --git a/recipes/googlecalendar/webview-unsafe.js b/recipes/googlecalendar/webview-unsafe.js index c47f572..54a7338 100644 --- a/recipes/googlecalendar/webview-unsafe.js +++ b/recipes/googlecalendar/webview-unsafe.js | |||
@@ -26,7 +26,8 @@ const hideModal = () => { | |||
26 | const createModal = () => { | 26 | const createModal = () => { |
27 | const modalDialog = document.createElement('div'); | 27 | const modalDialog = document.createElement('div'); |
28 | modalDialog.setAttribute('id', 'franz-modal'); | 28 | modalDialog.setAttribute('id', 'franz-modal'); |
29 | modalDialog.innerHTML = '<div class="modal-content"><span class="close">×</span><p></p></div>'; | 29 | modalDialog.innerHTML = |
30 | '<div class="modal-content"><span class="close">×</span><p></p></div>'; | ||
30 | modalDialog.querySelector('.close').addEventListener('click', hideModal); | 31 | modalDialog.querySelector('.close').addEventListener('click', hideModal); |
31 | 32 | ||
32 | return modalDialog; | 33 | return modalDialog; |
@@ -35,5 +36,11 @@ const createModal = () => { | |||
35 | window.alert = showModal; | 36 | window.alert = showModal; |
36 | 37 | ||
37 | modal = createModal(); | 38 | modal = createModal(); |
38 | waitFor(() => document.body, () => document.body.appendChild(modal)); | 39 | waitFor( |
39 | document.addEventListener('keydown', event => event.keyCode === 27 && hideModal()); | 40 | () => document.body, |
41 | () => document.body.appendChild(modal), | ||
42 | ); | ||
43 | document.addEventListener( | ||
44 | 'keydown', | ||
45 | event => event.key === 'Escape' && hideModal(), | ||
46 | ); | ||
diff --git a/recipes/iCloud/webview.js b/recipes/iCloud/webview.js index 7e19dff..23607bd 100644 --- a/recipes/iCloud/webview.js +++ b/recipes/iCloud/webview.js | |||
@@ -1,2 +1 @@ | |||
1 | module.exports = Ferdi => { | module.exports = Ferdi => Ferdi; | |
2 | }; | ||
diff --git a/recipes/icloud-reminders/webview.js b/recipes/icloud-reminders/webview.js index 7e19dff..23607bd 100644 --- a/recipes/icloud-reminders/webview.js +++ b/recipes/icloud-reminders/webview.js | |||
@@ -1,2 +1 @@ | |||
1 | module.exports = Ferdi => { | module.exports = Ferdi => Ferdi; | |
2 | }; | ||
diff --git a/recipes/keybase.io/webview.js b/recipes/keybase.io/webview.js index 7e19dff..23607bd 100644 --- a/recipes/keybase.io/webview.js +++ b/recipes/keybase.io/webview.js | |||
@@ -1,2 +1 @@ | |||
1 | module.exports = Ferdi => { | module.exports = Ferdi => Ferdi; | |
2 | }; | ||
diff --git a/recipes/line-me/webview.js b/recipes/line-me/webview.js index 7e19dff..23607bd 100644 --- a/recipes/line-me/webview.js +++ b/recipes/line-me/webview.js | |||
@@ -1,2 +1 @@ | |||
1 | module.exports = Ferdi => { | module.exports = Ferdi => Ferdi; | |
2 | }; | ||
diff --git a/recipes/mastodon/index.js b/recipes/mastodon/index.js index 1dd93cc..9be0938 100644 --- a/recipes/mastodon/index.js +++ b/recipes/mastodon/index.js | |||
@@ -1,9 +1,9 @@ | |||
1 | module.exports = (Ferdi) => { | 1 | module.exports = Ferdi => { |
2 | class Mastodon extends Ferdi { | 2 | class Mastodon extends Ferdi { |
3 | validateServer(URL) { | 3 | validateServer(URL) { |
4 | const api = `${URL}`; | 4 | const api = `${URL}`; |
5 | return new Promise((resolve, reject) => { | 5 | return new Promise((resolve, reject) => { |
6 | $.get(api, (resp) => { | 6 | $.get(api, () => { |
7 | resolve(); | 7 | resolve(); |
8 | }).fail(reject); | 8 | }).fail(reject); |
9 | }); | 9 | }); |
diff --git a/recipes/mastodon/webview.js b/recipes/mastodon/webview.js index 4b450a1..8fb448f 100644 --- a/recipes/mastodon/webview.js +++ b/recipes/mastodon/webview.js | |||
@@ -1,11 +1,11 @@ | |||
1 | module.exports = (Ferdi) => { | 1 | module.exports = Ferdi => { |
2 | let latestStatement = $('.status time').attr('datetime'); | 2 | let latestStatement = $('.status time').attr('datetime'); |
3 | let latestNotify = $($('.notification__message span').get(0)).text(); | 3 | let latestNotify = $($('.notification__message span').get(0)).text(); |
4 | 4 | ||
5 | $($('div.column div.scrollable').get(0)).on('scroll', (ev) => { | 5 | $($('div.column div.scrollable').get(0)).on('scroll', () => { |
6 | latestStatement = $('.status time').attr('datetime'); | 6 | latestStatement = $('.status time').attr('datetime'); |
7 | }); | 7 | }); |
8 | $($('div.column div.scrollable').get(1)).on('scroll', (ev) => { | 8 | $($('div.column div.scrollable').get(1)).on('scroll', () => { |
9 | latestNotify = $($('.notification__message span').get(0)).text(); | 9 | latestNotify = $($('.notification__message span').get(0)).text(); |
10 | }); | 10 | }); |
11 | 11 | ||
@@ -22,7 +22,7 @@ module.exports = (Ferdi) => { | |||
22 | } | 22 | } |
23 | 23 | ||
24 | Ferdi.setBadge(reply, unread); | 24 | Ferdi.setBadge(reply, unread); |
25 | } | 25 | }; |
26 | 26 | ||
27 | Ferdi.loop(getMessages); | 27 | Ferdi.loop(getMessages); |
28 | }; | 28 | }; |
diff --git a/recipes/messenger/webview.js b/recipes/messenger/webview.js index 954f843..5b2f2ad 100644 --- a/recipes/messenger/webview.js +++ b/recipes/messenger/webview.js | |||
@@ -8,18 +8,23 @@ module.exports = Ferdi => { | |||
8 | * Notification case for group chats, workaround by tamas646 | 8 | * Notification case for group chats, workaround by tamas646 |
9 | * see https://github.com/getferdi/ferdi/issues/1113#issuecomment-783409154 | 9 | * see https://github.com/getferdi/ferdi/issues/1113#issuecomment-783409154 |
10 | */ | 10 | */ |
11 | if (isNotification) { | 11 | if (isNotification) { |
12 | count = Ferdi.safeParseInt(/^\((\d+)\)/.exec(document.title)[1]); | 12 | count = Ferdi.safeParseInt(/^\((\d+)\)/.exec(document.title)[1]); |
13 | } else { | 13 | } else { |
14 | /* | 14 | /* |
15 | * Notification case for direct messages, workaround by manavortex | 15 | * Notification case for direct messages, workaround by manavortex |
16 | * see https://github.com/getferdi/ferdi/issues/1113#issuecomment-846611765 | 16 | * see https://github.com/getferdi/ferdi/issues/1113#issuecomment-846611765 |
17 | */ | 17 | */ |
18 | count = document.querySelectorAll('._5fx8:not(._569x),._1ht3:not(._569x)').length; | 18 | count = document.querySelectorAll( |
19 | '._5fx8:not(._569x),._1ht3:not(._569x)', | ||
20 | ).length; | ||
19 | if (count === 0) { | 21 | if (count === 0) { |
20 | count = document.querySelectorAll('.pq6dq46d.is6700om.qu0x051f.esr5mh6w.e9989ue4.r7d6kgcz.s45kfl79.emlxlaya.bkmhp75w.spb7xbtv.cyypbtt7.fwizqjfa').length; | 22 | count = document.querySelectorAll( |
23 | '.pq6dq46d.is6700om.qu0x051f.esr5mh6w.e9989ue4.r7d6kgcz.s45kfl79.emlxlaya.bkmhp75w.spb7xbtv.cyypbtt7.fwizqjfa', | ||
24 | ).length; | ||
21 | } | 25 | } |
22 | if (count === 0) { // might be obsolete, not sure - never ran into this case | 26 | if (count === 0) { |
27 | // might be obsolete, not sure - never ran into this case | ||
23 | count = document.querySelectorAll('[aria-label="Mark as read"]').length; | 28 | count = document.querySelectorAll('[aria-label="Mark as read"]').length; |
24 | } | 29 | } |
25 | } | 30 | } |
@@ -36,19 +41,25 @@ module.exports = Ferdi => { | |||
36 | 41 | ||
37 | Ferdi.loop(getMessages); | 42 | Ferdi.loop(getMessages); |
38 | 43 | ||
39 | localStorage.setItem('_cs_desktopNotifsEnabled', JSON.stringify({ | 44 | localStorage.setItem( |
40 | __t: new Date().getTime(), | 45 | '_cs_desktopNotifsEnabled', |
41 | __v: true, | 46 | JSON.stringify({ |
42 | })); | 47 | __t: new Date().getTime(), |
48 | __v: true, | ||
49 | }), | ||
50 | ); | ||
43 | 51 | ||
44 | if (typeof Ferdi.onNotify === 'function') { | 52 | if (typeof Ferdi.onNotify === 'function') { |
45 | Ferdi.onNotify(notification => { | 53 | Ferdi.onNotify(notification => { |
46 | if (typeof notification.title !== 'string') { | 54 | if (typeof notification.title !== 'string') { |
47 | notification.title = ((notification.title.props || {}).content || [])[0] || 'Messenger'; | 55 | notification.title = |
56 | ((notification.title.props || {}).content || [])[0] || 'Messenger'; | ||
48 | } | 57 | } |
49 | 58 | ||
50 | if (typeof notification.options.body !== 'string') { | 59 | if (typeof notification.options.body !== 'string') { |
51 | notification.options.body = (((notification.options.body || {}).props || {}).content || [])[0] || ''; | 60 | notification.options.body = |
61 | (((notification.options.body || {}).props || {}).content || [])[0] || | ||
62 | ''; | ||
52 | } | 63 | } |
53 | 64 | ||
54 | return notification; | 65 | return notification; |
diff --git a/recipes/misskey/index.js b/recipes/misskey/index.js index 3f51bf9..5805c37 100644 --- a/recipes/misskey/index.js +++ b/recipes/misskey/index.js | |||
@@ -1,28 +1,30 @@ | |||
1 | module.exports = Ferdi => class Misskey extends Ferdi { | 1 | module.exports = Ferdi => |
2 | constructor(...args) { | 2 | class Misskey extends Ferdi { |
3 | let _temp; | 3 | constructor(...args) { |
4 | return _temp = super(...args), this.events = { | 4 | let _temp; |
5 | }, _temp; | 5 | // eslint-disable-next-line constructor-super |
6 | } | 6 | return (_temp = super(...args)), (this.events = {}), _temp; |
7 | } | ||
7 | 8 | ||
8 | async validateUrl(url) { | 9 | async validateUrl(url) { |
9 | try { | 10 | try { |
10 | const res = await window.fetch(`${url}/api/stats`, { | 11 | const res = await window.fetch(`${url}/api/stats`, { |
11 | method: 'POST', | 12 | method: 'POST', |
12 | headers: { | 13 | headers: { |
13 | 'Content-Type': 'application/json', | 14 | 'Content-Type': 'application/json', |
14 | }, | 15 | }, |
15 | }); | 16 | }); |
16 | const data = await res.json(); | 17 | const data = await res.json(); |
17 | // check any field in API response | 18 | // check any field in API response |
18 | return [ | 19 | return [ |
19 | 'originalUsersCount', 'usersCount', 'notesCount', 'originalNotesCount' | 20 | 'originalUsersCount', |
20 | ].reduce((r, key) => ( | 21 | 'usersCount', |
21 | r && Object.hasOwnProperty.call(data, 'uri') | 22 | 'notesCount', |
22 | ), true); | 23 | 'originalNotesCount', |
23 | } catch (err) { | 24 | ].reduce(r => r && Object.hasOwnProperty.call(data, 'uri'), true); |
24 | console.error(err); | 25 | } catch (err) { |
26 | console.error(err); | ||
27 | } | ||
28 | return false; | ||
25 | } | 29 | } |
26 | return false; | 30 | }; |
27 | } | ||
28 | }; | ||
diff --git a/recipes/misskey/webview.js b/recipes/misskey/webview.js index c174266..65fa237 100644 --- a/recipes/misskey/webview.js +++ b/recipes/misskey/webview.js | |||
@@ -1,7 +1,9 @@ | |||
1 | module.exports = (Ferdi) => { | 1 | module.exports = Ferdi => { |
2 | const getMessages = () => { | 2 | const getMessages = () => { |
3 | // check notification badge for Ferdi badge | 3 | // check notification badge for Ferdi badge |
4 | let hasNotification = !!document.querySelector('#app div.notifications > button > i.circle'); | 4 | let hasNotification = !!document.querySelector( |
5 | '#app div.notifications > button > i.circle', | ||
6 | ); | ||
5 | Ferdi.setBadge(0, hasNotification ? 1 : 0); | 7 | Ferdi.setBadge(0, hasNotification ? 1 : 0); |
6 | }; | 8 | }; |
7 | 9 | ||
diff --git a/recipes/netatmo-energy/webview.js b/recipes/netatmo-energy/webview.js index 7e19dff..23607bd 100644 --- a/recipes/netatmo-energy/webview.js +++ b/recipes/netatmo-energy/webview.js | |||
@@ -1,2 +1 @@ | |||
1 | module.exports = Ferdi => { | module.exports = Ferdi => Ferdi; | |
2 | }; | ||
diff --git a/recipes/odoo/webview.js b/recipes/odoo/webview.js index 8f02c8f..453b3fc 100644 --- a/recipes/odoo/webview.js +++ b/recipes/odoo/webview.js | |||
@@ -1,4 +1,9 @@ | |||
1 | module.exports = (Ferdi) => { | 1 | const _path = _interopRequireDefault(require('path')); |
2 | 2 | ||
3 | Ferdi.injectCSS(_path.default.join(__dirname, "service.css")); | 3 | function _interopRequireDefault(obj) { |
4 | return obj && obj.__esModule ? obj : { default: obj }; | ||
5 | } | ||
6 | |||
7 | module.exports = Ferdi => { | ||
8 | Ferdi.injectCSS(_path.default.join(__dirname, 'service.css')); | ||
4 | }; | 9 | }; |
diff --git a/recipes/paymo/webview.js b/recipes/paymo/webview.js index 7e19dff..23607bd 100644 --- a/recipes/paymo/webview.js +++ b/recipes/paymo/webview.js | |||
@@ -1,2 +1 @@ | |||
1 | module.exports = Ferdi => { | module.exports = Ferdi => Ferdi; | |
2 | }; | ||
diff --git a/recipes/pinterest/webview.js b/recipes/pinterest/webview.js index 7e19dff..23607bd 100644 --- a/recipes/pinterest/webview.js +++ b/recipes/pinterest/webview.js | |||
@@ -1,2 +1 @@ | |||
1 | module.exports = Ferdi => { | module.exports = Ferdi => Ferdi; | |
2 | }; | ||
diff --git a/recipes/plan/webview.js b/recipes/plan/webview.js index 7e19dff..23607bd 100644 --- a/recipes/plan/webview.js +++ b/recipes/plan/webview.js | |||
@@ -1,2 +1 @@ | |||
1 | module.exports = Ferdi => { | module.exports = Ferdi => Ferdi; | |
2 | }; | ||
diff --git a/recipes/pleroma/webview.js b/recipes/pleroma/webview.js index da76955..2ba184e 100644 --- a/recipes/pleroma/webview.js +++ b/recipes/pleroma/webview.js | |||
@@ -1,6 +1,6 @@ | |||
1 | const titleRegex = /^\((\d+)\)/; | 1 | const titleRegex = /^\((\d+)\)/; |
2 | 2 | ||
3 | const getJson = async (relativeUri) => { | 3 | const getJson = async relativeUri => { |
4 | const req = await window.fetch(`${window.origin}${relativeUri}`, { | 4 | const req = await window.fetch(`${window.origin}${relativeUri}`, { |
5 | Accept: 'application/json', | 5 | Accept: 'application/json', |
6 | }); | 6 | }); |
@@ -8,10 +8,11 @@ const getJson = async (relativeUri) => { | |||
8 | }; | 8 | }; |
9 | 9 | ||
10 | const getInstanceConfig = async () => { | 10 | const getInstanceConfig = async () => { |
11 | const origin = window.origin; | ||
12 | const staticConfig = await getJson('/static/config.json'); | 11 | const staticConfig = await getJson('/static/config.json'); |
13 | try { | 12 | try { |
14 | const frontendConfig = await getJson('/api/pleroma/frontend_configurations'); | 13 | const frontendConfig = await getJson( |
14 | '/api/pleroma/frontend_configurations', | ||
15 | ); | ||
15 | const pleromaFeConfig = frontendConfig.pleroma_fe || {}; | 16 | const pleromaFeConfig = frontendConfig.pleroma_fe || {}; |
16 | return { ...staticConfig, ...pleromaFeConfig }; | 17 | return { ...staticConfig, ...pleromaFeConfig }; |
17 | } catch (e) { | 18 | } catch (e) { |
@@ -33,8 +34,12 @@ const getInstanceLogo = async () => { | |||
33 | logoMask: config.logoMask, | 34 | logoMask: config.logoMask, |
34 | }); | 35 | }); |
35 | }); | 36 | }); |
36 | img.addEventListener('error', (event) => { | 37 | img.addEventListener('error', event => { |
37 | reject(new Error(`${event.type} error loading ${config.logo}: ${event.message}`)); | 38 | reject( |
39 | new Error( | ||
40 | `${event.type} error loading ${config.logo}: ${event.message}`, | ||
41 | ), | ||
42 | ); | ||
38 | }); | 43 | }); |
39 | img.src = `${origin}${config.logo}`; | 44 | img.src = `${origin}${config.logo}`; |
40 | }); | 45 | }); |
@@ -146,16 +151,19 @@ module.exports = Ferdi => { | |||
146 | Ferdi.setBadge(directCount); | 151 | Ferdi.setBadge(directCount); |
147 | }; | 152 | }; |
148 | 153 | ||
149 | getInstanceLogo().then(({ logo, logoMask }) => { | 154 | getInstanceLogo().then( |
150 | const updater = new LogoUpdater(logo, logoMask); | 155 | ({ logo, logoMask }) => { |
151 | Ferdi.loop(() => { | 156 | const updater = new LogoUpdater(logo, logoMask); |
152 | getMessages(); | 157 | Ferdi.loop(() => { |
153 | if (updater.update()) { | 158 | getMessages(); |
154 | Ferdi.setAvatarImage(updater.toDataURL()); | 159 | if (updater.update()) { |
155 | } | 160 | Ferdi.setAvatarImage(updater.toDataURL()); |
156 | }); | 161 | } |
157 | }, (e) => { | 162 | }); |
158 | console.log('Failed to load instance logo', e); | 163 | }, |
159 | Ferdi.loop(getMessages); | 164 | e => { |
160 | }); | 165 | console.log('Failed to load instance logo', e); |
166 | Ferdi.loop(getMessages); | ||
167 | }, | ||
168 | ); | ||
161 | }; | 169 | }; |
diff --git a/recipes/pushbullet/index.js b/recipes/pushbullet/index.js index 556cab6..ace403b 100644 --- a/recipes/pushbullet/index.js +++ b/recipes/pushbullet/index.js | |||
@@ -1,16 +1,26 @@ | |||
1 | module.exports = Ferdi => class PushBullet extends Ferdi { | 1 | module.exports = Ferdi => |
2 | constructor(...args) { | 2 | class PushBullet extends Ferdi { |
3 | let _temp; | 3 | constructor(...args) { |
4 | let _temp; | ||
4 | 5 | ||
5 | return _temp = super(...args), this.events = { | 6 | return ( |
6 | 'did-get-redirect-request': '_redirectFix', | 7 | // eslint-disable-next-line constructor-super |
7 | }, _temp; | 8 | (_temp = super(...args)), |
8 | } | 9 | (this.events = { |
10 | 'did-get-redirect-request': '_redirectFix', | ||
11 | }), | ||
12 | _temp | ||
13 | ); | ||
14 | } | ||
9 | 15 | ||
10 | _redirectFix(event) { | 16 | _redirectFix(event) { |
11 | if (event.newURL !== undefined && event.oldURL !== undefined && event.isMainFrame) { | 17 | if ( |
12 | setTimeout(() => this.send('redirect-url', event.newURL), 100); | 18 | event.newURL !== undefined && |
13 | event.preventDefault(); | 19 | event.oldURL !== undefined && |
20 | event.isMainFrame | ||
21 | ) { | ||
22 | setTimeout(() => this.send('redirect-url', event.newURL), 100); | ||
23 | event.preventDefault(); | ||
24 | } | ||
14 | } | 25 | } |
15 | } | 26 | }; |
16 | }; | ||
diff --git a/recipes/reddit/webview.js b/recipes/reddit/webview.js index 327bd89..5095ba1 100644 --- a/recipes/reddit/webview.js +++ b/recipes/reddit/webview.js | |||
@@ -1,10 +1,14 @@ | |||
1 | const _path = _interopRequireDefault(require('path')); | 1 | const _path = _interopRequireDefault(require('path')); |
2 | 2 | ||
3 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | 3 | function _interopRequireDefault(obj) { |
4 | return obj && obj.__esModule ? obj : { default: obj }; | ||
5 | } | ||
4 | 6 | ||
5 | module.exports = (Ferdi) => { | 7 | module.exports = Ferdi => { |
6 | const getMessages = () => { | 8 | const getMessages = () => { |
7 | const elements = document.querySelectorAll('#HeaderUserActions--Messages > a > span'); | 9 | const elements = document.querySelectorAll( |
10 | '#HeaderUserActions--Messages > a > span', | ||
11 | ); | ||
8 | let count = 0; | 12 | let count = 0; |
9 | 13 | ||
10 | if (elements[0]) { | 14 | if (elements[0]) { |
@@ -15,7 +19,7 @@ module.exports = (Ferdi) => { | |||
15 | }; | 19 | }; |
16 | 20 | ||
17 | if (document.querySelectorAll('.promotedlink').length > 0) { | 21 | if (document.querySelectorAll('.promotedlink').length > 0) { |
18 | document.querySelectorAll('.promotedlink').forEach((sponsoredLink) => { | 22 | document.querySelectorAll('.promotedlink').forEach(sponsoredLink => { |
19 | sponsoredLink.parentElement.parentElement.style.display = 'none'; | 23 | sponsoredLink.parentElement.parentElement.style.display = 'none'; |
20 | }); | 24 | }); |
21 | } | 25 | } |
@@ -25,17 +29,17 @@ module.exports = (Ferdi) => { | |||
25 | // Use CSS to hide Google Ads | 29 | // Use CSS to hide Google Ads |
26 | Ferdi.injectCSS(_path.default.join(__dirname, 'service.css')); | 30 | Ferdi.injectCSS(_path.default.join(__dirname, 'service.css')); |
27 | 31 | ||
28 | Ferdi.handleDarkMode((isEnabled, config) => { | 32 | Ferdi.handleDarkMode(isEnabled => { |
29 | // Open dropdown menu if not already open | 33 | // Open dropdown menu if not already open |
30 | const menu = document.querySelector('#USER_DROPDOWN_ID'); | 34 | const menu = document.querySelector('#USER_DROPDOWN_ID'); |
31 | if (menu.getAttribute('aria-expanded') === 'false') { | 35 | if (menu && menu.getAttribute('aria-expanded') === 'false') { |
32 | menu.click(); | 36 | menu.click(); |
33 | } | 37 | } |
34 | 38 | ||
35 | setTimeout(() => { | 39 | setTimeout(() => { |
36 | // Check if service is already in right mode | 40 | // Check if service is already in right mode |
37 | const btn = document.querySelector('[role=menu] button button'); | 41 | const btn = document.querySelector('[role=menu] button button'); |
38 | const checked = btn.getAttribute('aria-checked') === 'true'; | 42 | const checked = btn && btn.getAttribute('aria-checked') === 'true'; |
39 | 43 | ||
40 | if ((checked && !isEnabled) || (!checked && isEnabled)) { | 44 | if ((checked && !isEnabled) || (!checked && isEnabled)) { |
41 | // Click the button to switch between modes | 45 | // Click the button to switch between modes |
diff --git a/recipes/redditchat/webview.js b/recipes/redditchat/webview.js index 7000e53..14f7f6c 100644 --- a/recipes/redditchat/webview.js +++ b/recipes/redditchat/webview.js | |||
@@ -1,5 +1,6 @@ | |||
1 | module.exports = Ferdi => { | 1 | module.exports = Ferdi => { |
2 | // Regular expression for (*) or (1), will extract the asterisk or the number | 2 | // Regular expression for (*) or (1), will extract the asterisk or the number |
3 | // eslint-disable-next-line no-useless-escape | ||
3 | const titleRegEx = /^\(([\*\d])\)/; | 4 | const titleRegEx = /^\(([\*\d])\)/; |
4 | const getMessages = function unreadCount() { | 5 | const getMessages = function unreadCount() { |
5 | let directCount = 0; | 6 | let directCount = 0; |
diff --git a/recipes/snapdrop/webview.js b/recipes/snapdrop/webview.js index 22ca24c..23607bd 100644 --- a/recipes/snapdrop/webview.js +++ b/recipes/snapdrop/webview.js | |||
@@ -1 +1 @@ | |||
module.exports = (Ferdi) => {}; | module.exports = Ferdi => Ferdi; | ||
diff --git a/recipes/tawk/webview.js b/recipes/tawk/webview.js index 7e19dff..23607bd 100644 --- a/recipes/tawk/webview.js +++ b/recipes/tawk/webview.js | |||
@@ -1,2 +1 @@ | |||
1 | module.exports = Ferdi => { | module.exports = Ferdi => Ferdi; | |
2 | }; | ||
diff --git a/recipes/teamweek/webview.js b/recipes/teamweek/webview.js index 22ca24c..23607bd 100644 --- a/recipes/teamweek/webview.js +++ b/recipes/teamweek/webview.js | |||
@@ -1 +1 @@ | |||
module.exports = (Ferdi) => {}; | module.exports = Ferdi => Ferdi; | ||
diff --git a/recipes/toggl/webview.js b/recipes/toggl/webview.js index 7e19dff..23607bd 100644 --- a/recipes/toggl/webview.js +++ b/recipes/toggl/webview.js | |||
@@ -1,2 +1 @@ | |||
1 | module.exports = Ferdi => { | module.exports = Ferdi => Ferdi; | |
2 | }; | ||
diff --git a/recipes/tweetdeck/index.js b/recipes/tweetdeck/index.js index 3dc2463..f54a64a 100644 --- a/recipes/tweetdeck/index.js +++ b/recipes/tweetdeck/index.js | |||
@@ -1,16 +1,26 @@ | |||
1 | module.exports = Ferdi => class Tweetdeck extends Ferdi { | 1 | module.exports = Ferdi => |
2 | constructor(...args) { | 2 | class Tweetdeck extends Ferdi { |
3 | let _temp; | 3 | constructor(...args) { |
4 | let _temp; | ||
4 | 5 | ||
5 | return _temp = super(...args), this.events = { | 6 | return ( |
6 | 'did-get-redirect-request': '_redirectFix', | 7 | // eslint-disable-next-line constructor-super |
7 | }, _temp; | 8 | (_temp = super(...args)), |
8 | } | 9 | (this.events = { |
10 | 'did-get-redirect-request': '_redirectFix', | ||
11 | }), | ||
12 | _temp | ||
13 | ); | ||
14 | } | ||
9 | 15 | ||
10 | _redirectFix(event) { | 16 | _redirectFix(event) { |
11 | if (event.newURL !== undefined && event.oldURL !== undefined && event.isMainFrame) { | 17 | if ( |
12 | setTimeout(() => this.send('redirect-url', event.newURL), 100); | 18 | event.newURL !== undefined && |
13 | event.preventDefault(); | 19 | event.oldURL !== undefined && |
20 | event.isMainFrame | ||
21 | ) { | ||
22 | setTimeout(() => this.send('redirect-url', event.newURL), 100); | ||
23 | event.preventDefault(); | ||
24 | } | ||
14 | } | 25 | } |
15 | } | 26 | }; |
16 | }; | ||
diff --git a/recipes/zimbra/index.js b/recipes/zimbra/index.js index 1b0a47f..50c3cf2 100644 --- a/recipes/zimbra/index.js +++ b/recipes/zimbra/index.js | |||
@@ -1,5 +1,6 @@ | |||
1 | module.exports = Ferdi => class Zimbra extends Ferdi { | 1 | module.exports = Ferdi => |
2 | async validateUrl(url) { | 2 | class Zimbra extends Ferdi { |
3 | return true; | 3 | async validateUrl() { |
4 | } | 4 | return true; |
5 | }; | 5 | } |
6 | }; | ||
diff --git a/scripts/create.js b/scripts/create.js index 0e785fa..184dc70 100644 --- a/scripts/create.js +++ b/scripts/create.js | |||
@@ -14,14 +14,19 @@ You can set "Folder name" to "FerdiDev" to use Ferdi's development instance inst | |||
14 | 14 | ||
15 | pnpm run create WhatsApp FerdiDev | 15 | pnpm run create WhatsApp FerdiDev |
16 | `); | 16 | `); |
17 | return; | 17 | throw new Error('Please provide the correct number of args!'); |
18 | } | 18 | } |
19 | 19 | ||
20 | const recipeName = process.argv[2]; | 20 | const recipeName = process.argv[2]; |
21 | const recipe = recipeName.toLowerCase().replace(/\s/g, '-'); | 21 | const recipe = recipeName.toLowerCase().replace(/\s/g, '-'); |
22 | const cleanRecipeId = recipe.replace(/[^a-z]/g, ''); // Clean recipe ID only containing a-z, for usage as the JavaScript class name | 22 | const cleanRecipeId = recipe.replace(/[^a-z]/g, ''); // Clean recipe ID only containing a-z, for usage as the JavaScript class name |
23 | const folderName = process.argv[3] || 'Ferdi'; | 23 | const folderName = process.argv[3] || 'Ferdi'; |
24 | const filesThatNeedTextReplace = ['package.json', 'index.js', 'webview.js', 'README.md']; | 24 | const filesThatNeedTextReplace = [ |
25 | 'package.json', | ||
26 | 'index.js', | ||
27 | 'webview.js', | ||
28 | 'README.md', | ||
29 | ]; | ||
25 | 30 | ||
26 | (async () => { | 31 | (async () => { |
27 | // Folder paths | 32 | // Folder paths |
@@ -36,7 +41,7 @@ const filesThatNeedTextReplace = ['package.json', 'index.js', 'webview.js', 'REA | |||
36 | const sampleRecipe = path.join(__dirname, 'sample_recipe'); | 41 | const sampleRecipe = path.join(__dirname, 'sample_recipe'); |
37 | 42 | ||
38 | // Make sure dev recipe folder exists | 43 | // Make sure dev recipe folder exists |
39 | if (!(await fs.exists(recipesFolder))) { | 44 | if (!fs.existsSync(recipesFolder)) { |
40 | console.log( | 45 | console.log( |
41 | `Couldn't find your recipe folder (${recipesFolder}). Is Ferdi installed?`, | 46 | `Couldn't find your recipe folder (${recipesFolder}). Is Ferdi installed?`, |
42 | ); | 47 | ); |
@@ -44,7 +49,7 @@ const filesThatNeedTextReplace = ['package.json', 'index.js', 'webview.js', 'REA | |||
44 | } | 49 | } |
45 | await fs.ensureDir(devRecipeFolder); | 50 | await fs.ensureDir(devRecipeFolder); |
46 | 51 | ||
47 | if (await fs.exists(newRecipeFolder)) { | 52 | if (fs.existsSync(newRecipeFolder)) { |
48 | console.log('⚠️ Recipe already exists'); | 53 | console.log('⚠️ Recipe already exists'); |
49 | return; | 54 | return; |
50 | } | 55 | } |
diff --git a/scripts/package.js b/scripts/package.js index 0f2ae6f..4fc02f1 100644 --- a/scripts/package.js +++ b/scripts/package.js | |||
@@ -13,24 +13,28 @@ const pkgVersionChangedMatcher = new RegExp(/\n\+.*version.*/); | |||
13 | const repo = 'https://cdn.jsdelivr.net/gh/getferdi/recipes/recipes/'; | 13 | const repo = 'https://cdn.jsdelivr.net/gh/getferdi/recipes/recipes/'; |
14 | 14 | ||
15 | // Helper: Compress src folder into dest file | 15 | // Helper: Compress src folder into dest file |
16 | const compress = (src, dest) => new Promise((resolve, reject) => { | 16 | const compress = (src, dest) => |
17 | targz.compress({ | 17 | new Promise((resolve, reject) => { |
18 | src, | 18 | targz.compress( |
19 | dest, | 19 | { |
20 | tar: { | 20 | src, |
21 | // Don't package .DS_Store files and .md files | 21 | dest, |
22 | ignore: function(name) { | 22 | tar: { |
23 | return path.basename(name) === '.DS_Store' || name.endsWith('.md') | 23 | // Don't package .DS_Store files and .md files |
24 | } | 24 | ignore: function (name) { |
25 | }, | 25 | return path.basename(name) === '.DS_Store' || name.endsWith('.md'); |
26 | }, (err) => { | 26 | }, |
27 | if (err) { | 27 | }, |
28 | reject(err); | 28 | }, |
29 | } else { | 29 | err => { |
30 | resolve(dest); | 30 | if (err) { |
31 | } | 31 | reject(err); |
32 | } else { | ||
33 | resolve(dest); | ||
34 | } | ||
35 | }, | ||
36 | ); | ||
32 | }); | 37 | }); |
33 | }); | ||
34 | 38 | ||
35 | // Let us work in an async environment | 39 | // Let us work in an async environment |
36 | (async () => { | 40 | (async () => { |
@@ -51,20 +55,23 @@ const compress = (src, dest) => new Promise((resolve, reject) => { | |||
51 | const git = await simpleGit(repoRoot); | 55 | const git = await simpleGit(repoRoot); |
52 | const isGitRepo = await git.checkIsRepo(); | 56 | const isGitRepo = await git.checkIsRepo(); |
53 | if (!isGitRepo) { | 57 | if (!isGitRepo) { |
54 | console.debug("NOT A git repo: will bypass dirty state checks"); | 58 | console.debug('NOT A git repo: will bypass dirty state checks'); |
55 | } | 59 | } |
56 | 60 | ||
57 | const availableRecipes = fs.readdirSync(recipesFolder, { withFileTypes: true }) | 61 | const availableRecipes = fs |
62 | .readdirSync(recipesFolder, { withFileTypes: true }) | ||
58 | .filter(dir => dir.isDirectory()) | 63 | .filter(dir => dir.isDirectory()) |
59 | .map(dir => dir.name); | 64 | .map(dir => dir.name); |
60 | 65 | ||
61 | for(let recipe of availableRecipes) { | 66 | for (let recipe of availableRecipes) { |
62 | const recipeSrc = path.join(recipesFolder, recipe); | 67 | const recipeSrc = path.join(recipesFolder, recipe); |
63 | const packageJson = path.join(recipeSrc, 'package.json'); | 68 | const packageJson = path.join(recipeSrc, 'package.json'); |
64 | 69 | ||
65 | // Check that package.json exists | 70 | // Check that package.json exists |
66 | if (!await fs.pathExists(packageJson)) { | 71 | if (!(await fs.pathExists(packageJson))) { |
67 | console.log(`⚠️ Couldn't package "${recipe}": Folder doesn't contain a "package.json".`); | 72 | console.log( |
73 | `⚠️ Couldn't package "${recipe}": Folder doesn't contain a "package.json".`, | ||
74 | ); | ||
68 | unsuccessful++; | 75 | unsuccessful++; |
69 | continue; | 76 | continue; |
70 | } | 77 | } |
@@ -73,7 +80,9 @@ const compress = (src, dest) => new Promise((resolve, reject) => { | |||
73 | const svgIcon = path.join(recipeSrc, 'icon.svg'); | 80 | const svgIcon = path.join(recipeSrc, 'icon.svg'); |
74 | const hasSvg = await fs.pathExists(svgIcon); | 81 | const hasSvg = await fs.pathExists(svgIcon); |
75 | if (!hasSvg) { | 82 | if (!hasSvg) { |
76 | console.log(`⚠️ Couldn't package "${recipe}": Recipe doesn't contain an icon SVG`); | 83 | console.log( |
84 | `⚠️ Couldn't package "${recipe}": Recipe doesn't contain an icon SVG`, | ||
85 | ); | ||
77 | unsuccessful++; | 86 | unsuccessful++; |
78 | continue; | 87 | continue; |
79 | } | 88 | } |
@@ -82,7 +91,9 @@ const compress = (src, dest) => new Promise((resolve, reject) => { | |||
82 | const svgSize = sizeOf(svgIcon); | 91 | const svgSize = sizeOf(svgIcon); |
83 | const svgHasRightSize = svgSize.width === svgSize.height; | 92 | const svgHasRightSize = svgSize.width === svgSize.height; |
84 | if (!svgHasRightSize) { | 93 | if (!svgHasRightSize) { |
85 | console.log(`⚠️ Couldn't package "${recipe}": Recipe SVG icon isn't a square`); | 94 | console.log( |
95 | `⚠️ Couldn't package "${recipe}": Recipe SVG icon isn't a square`, | ||
96 | ); | ||
86 | unsuccessful++; | 97 | unsuccessful++; |
87 | continue; | 98 | continue; |
88 | } | 99 | } |
@@ -90,61 +101,114 @@ const compress = (src, dest) => new Promise((resolve, reject) => { | |||
90 | // Check that user.js does not exist | 101 | // Check that user.js does not exist |
91 | const userJs = path.join(recipeSrc, 'user.js'); | 102 | const userJs = path.join(recipeSrc, 'user.js'); |
92 | if (await fs.pathExists(userJs)) { | 103 | if (await fs.pathExists(userJs)) { |
93 | console.log(`⚠️ Couldn't package "${recipe}": Folder contains a "user.js".`); | 104 | console.log( |
105 | `⚠️ Couldn't package "${recipe}": Folder contains a "user.js".`, | ||
106 | ); | ||
94 | unsuccessful++; | 107 | unsuccessful++; |
95 | continue; | 108 | continue; |
96 | } | 109 | } |
97 | 110 | ||
98 | // Read package.json | 111 | // Read package.json |
99 | const config = await fs.readJson(packageJson) | 112 | const config = await fs.readJson(packageJson); |
100 | 113 | ||
101 | // Make sure it contains all required fields | 114 | // Make sure it contains all required fields |
102 | if (!config) { | 115 | if (!config) { |
103 | console.log(`⚠️ Couldn't package "${recipe}": Could not read or parse "package.json"`); | 116 | console.log( |
117 | `⚠️ Couldn't package "${recipe}": Could not read or parse "package.json"`, | ||
118 | ); | ||
104 | unsuccessful++; | 119 | unsuccessful++; |
105 | continue; | 120 | continue; |
106 | } | 121 | } |
107 | let configErrors = []; | 122 | let configErrors = []; |
108 | if (!config.id) { | 123 | if (!config.id) { |
109 | configErrors.push("The recipe's package.json contains no 'id' field. This field should contain a unique ID made of lowercase letters (a-z), numbers (0-9), hyphens (-), periods (.), and underscores (_)"); | 124 | configErrors.push( |
125 | "The recipe's package.json contains no 'id' field. This field should contain a unique ID made of lowercase letters (a-z), numbers (0-9), hyphens (-), periods (.), and underscores (_)", | ||
126 | ); | ||
127 | // eslint-disable-next-line no-useless-escape | ||
110 | } else if (!/^[a-zA-Z0-9._\-]+$/.test(config.id)) { | 128 | } else if (!/^[a-zA-Z0-9._\-]+$/.test(config.id)) { |
111 | configErrors.push("The recipe's package.json defines an invalid recipe ID. Please make sure the 'id' field only contains lowercase letters (a-z), numbers (0-9), hyphens (-), periods (.), and underscores (_)"); | 129 | configErrors.push( |
130 | "The recipe's package.json defines an invalid recipe ID. Please make sure the 'id' field only contains lowercase letters (a-z), numbers (0-9), hyphens (-), periods (.), and underscores (_)", | ||
131 | ); | ||
112 | } | 132 | } |
113 | if (config.id !== recipe) { | 133 | if (config.id !== recipe) { |
114 | configErrors.push(`The recipe's id (${config.id}) does not match the folder name (${recipe})`); | 134 | configErrors.push( |
135 | `The recipe's id (${config.id}) does not match the folder name (${recipe})`, | ||
136 | ); | ||
115 | } | 137 | } |
116 | if (!config.name) { | 138 | if (!config.name) { |
117 | configErrors.push("The recipe's package.json contains no 'name' field. This field should contain the name of the service (e.g. 'Google Keep')"); | 139 | configErrors.push( |
140 | "The recipe's package.json contains no 'name' field. This field should contain the name of the service (e.g. 'Google Keep')", | ||
141 | ); | ||
118 | } | 142 | } |
119 | if (!config.version) { | 143 | if (!config.version) { |
120 | configErrors.push("The recipe's package.json contains no 'version' field. This field should contain the a semver-compatible version number for your recipe (e.g. '1.0.0')"); | 144 | configErrors.push( |
145 | "The recipe's package.json contains no 'version' field. This field should contain the a semver-compatible version number for your recipe (e.g. '1.0.0')", | ||
146 | ); | ||
121 | } | 147 | } |
122 | if (!config.config || typeof config.config !== "object") { | 148 | if (!config.config || typeof config.config !== 'object') { |
123 | configErrors.push("The recipe's package.json contains no 'config' object. This field should contain a configuration for your service."); | 149 | configErrors.push( |
150 | "The recipe's package.json contains no 'config' object. This field should contain a configuration for your service.", | ||
151 | ); | ||
124 | } | 152 | } |
125 | 153 | ||
126 | const topLevelKeys = Object.keys(config); | 154 | const topLevelKeys = Object.keys(config); |
127 | topLevelKeys.forEach(key => { | 155 | topLevelKeys.forEach(key => { |
128 | if (typeof(config[key]) === 'string') { | 156 | if (typeof config[key] === 'string') { |
129 | if (config[key] === '') { | 157 | if (config[key] === '') { |
130 | configErrors.push(`The recipe's package.json contains empty value for key: ${key}`); | 158 | configErrors.push( |
159 | `The recipe's package.json contains empty value for key: ${key}`, | ||
160 | ); | ||
131 | } | 161 | } |
132 | } else if ((key === 'config' || key === 'aliases') && typeof(config[key]) !== 'object') { | 162 | } else if ( |
133 | configErrors.push(`The recipe's package.json contains unexpected value for key: ${key}`); | 163 | (key === 'config' || key === 'aliases') && |
164 | typeof config[key] !== 'object' | ||
165 | ) { | ||
166 | configErrors.push( | ||
167 | `The recipe's package.json contains unexpected value for key: ${key}`, | ||
168 | ); | ||
134 | } | 169 | } |
135 | }); | 170 | }); |
136 | 171 | ||
137 | const knownTopLevelKeys = ['id', 'name', 'version', 'license', 'repository', 'aliases', 'config']; | 172 | const knownTopLevelKeys = [ |
138 | const unrecognizedKeys = topLevelKeys.filter(x => !knownTopLevelKeys.includes(x)); | 173 | 'id', |
174 | 'name', | ||
175 | 'version', | ||
176 | 'license', | ||
177 | 'repository', | ||
178 | 'aliases', | ||
179 | 'config', | ||
180 | ]; | ||
181 | const unrecognizedKeys = topLevelKeys.filter( | ||
182 | x => !knownTopLevelKeys.includes(x), | ||
183 | ); | ||
139 | if (unrecognizedKeys.length > 0) { | 184 | if (unrecognizedKeys.length > 0) { |
140 | configErrors.push(`The recipe's package.json contains the following keys that are not recognized: ${unrecognizedKeys}`); | 185 | configErrors.push( |
186 | `The recipe's package.json contains the following keys that are not recognized: ${unrecognizedKeys}`, | ||
187 | ); | ||
141 | } | 188 | } |
142 | if (config.config && typeof config.config === "object") { | 189 | if (config.config && typeof config.config === 'object') { |
143 | const configKeys = Object.keys(config.config); | 190 | const configKeys = Object.keys(config.config); |
144 | const knownConfigKeys = ['serviceURL', 'hasTeamId', 'urlInputPrefix', 'urlInputSuffix', 'hasHostedOption', 'hasCustomUrl', 'hasNotificationSound', 'hasDirectMessages', 'hasIndirectMessages', 'allowFavoritesDelineationInUnreadCount', 'message', 'disablewebsecurity']; | 191 | const knownConfigKeys = [ |
145 | const unrecognizedConfigKeys = configKeys.filter(x => !knownConfigKeys.includes(x)); | 192 | 'serviceURL', |
193 | 'hasTeamId', | ||
194 | 'urlInputPrefix', | ||
195 | 'urlInputSuffix', | ||
196 | 'hasHostedOption', | ||
197 | 'hasCustomUrl', | ||
198 | 'hasNotificationSound', | ||
199 | 'hasDirectMessages', | ||
200 | 'hasIndirectMessages', | ||
201 | 'allowFavoritesDelineationInUnreadCount', | ||
202 | 'message', | ||
203 | 'disablewebsecurity', | ||
204 | ]; | ||
205 | const unrecognizedConfigKeys = configKeys.filter( | ||
206 | x => !knownConfigKeys.includes(x), | ||
207 | ); | ||
146 | if (unrecognizedConfigKeys.length > 0) { | 208 | if (unrecognizedConfigKeys.length > 0) { |
147 | configErrors.push(`The recipe's package.json contains the following keys that are not recognized: ${unrecognizedConfigKeys}`); | 209 | configErrors.push( |
210 | `The recipe's package.json contains the following keys that are not recognized: ${unrecognizedConfigKeys}`, | ||
211 | ); | ||
148 | } | 212 | } |
149 | 213 | ||
150 | // if (config.config.hasCustomUrl !== undefined && config.config.hasHostedOption !== undefined) { | 214 | // if (config.config.hasCustomUrl !== undefined && config.config.hasHostedOption !== undefined) { |
@@ -152,8 +216,13 @@ const compress = (src, dest) => new Promise((resolve, reject) => { | |||
152 | // } | 216 | // } |
153 | 217 | ||
154 | configKeys.forEach(key => { | 218 | configKeys.forEach(key => { |
155 | if (typeof(config.config[key]) === 'string' && config.config[key] === '') { | 219 | if ( |
156 | configErrors.push(`The recipe's package.json contains empty value for key: ${key}`); | 220 | typeof config.config[key] === 'string' && |
221 | config.config[key] === '' | ||
222 | ) { | ||
223 | configErrors.push( | ||
224 | `The recipe's package.json contains empty value for key: ${key}`, | ||
225 | ); | ||
157 | } | 226 | } |
158 | }); | 227 | }); |
159 | } | 228 | } |
@@ -164,38 +233,50 @@ const compress = (src, dest) => new Promise((resolve, reject) => { | |||
164 | // Check for changes in recipe's directory, and if changes are present, then the changes should contain a version bump | 233 | // Check for changes in recipe's directory, and if changes are present, then the changes should contain a version bump |
165 | await git.diffSummary(relativeRepoSrc, (err, result) => { | 234 | await git.diffSummary(relativeRepoSrc, (err, result) => { |
166 | if (err) { | 235 | if (err) { |
167 | configErrors.push(`Got the following error while checking for git changes: ${err}`); | 236 | configErrors.push( |
168 | } else if (result && (result.changed !== 0 || result.insertions !== 0 || result.deletions !== 0)) { | 237 | `Got the following error while checking for git changes: ${err}`, |
238 | ); | ||
239 | } else if ( | ||
240 | result && | ||
241 | (result.changed !== 0 || | ||
242 | result.insertions !== 0 || | ||
243 | result.deletions !== 0) | ||
244 | ) { | ||
169 | const pkgJsonRelative = path.relative(repoRoot, packageJson); | 245 | const pkgJsonRelative = path.relative(repoRoot, packageJson); |
170 | if (!result.files.find(({file}) => file === pkgJsonRelative)) { | 246 | if (!result.files.find(({ file }) => file === pkgJsonRelative)) { |
171 | configErrors.push(`Found changes in '${relativeRepoSrc}' without the corresponding version bump in '${pkgJsonRelative}'`); | 247 | configErrors.push( |
248 | `Found changes in '${relativeRepoSrc}' without the corresponding version bump in '${pkgJsonRelative}'`, | ||
249 | ); | ||
172 | } else { | 250 | } else { |
173 | git.diff(pkgJsonRelative, (_diffErr, diffResult) => { | 251 | git.diff(pkgJsonRelative, (_diffErr, diffResult) => { |
174 | if (diffResult && !pkgVersionChangedMatcher.test(diffResult)) { | 252 | if (diffResult && !pkgVersionChangedMatcher.test(diffResult)) { |
175 | configErrors.push(`Found changes in '${relativeRepoSrc}' without the corresponding version bump in '${pkgJsonRelative}' (found other changes though)`); | 253 | configErrors.push( |
254 | `Found changes in '${relativeRepoSrc}' without the corresponding version bump in '${pkgJsonRelative}' (found other changes though)`, | ||
255 | ); | ||
176 | } | 256 | } |
177 | }); | 257 | }); |
178 | } | 258 | } |
179 | } | 259 | } |
180 | }); | 260 | }); |
181 | }; | 261 | } |
182 | 262 | ||
183 | if (configErrors.length > 0) { | 263 | if (configErrors.length > 0) { |
184 | console.log(`⚠️ Couldn't package "${recipe}": There were errors in the recipe's package.json: | 264 | console.log(`⚠️ Couldn't package "${recipe}": There were errors in the recipe's package.json: |
185 | ${configErrors.reduce((str, err) => `${str}\n${err}`)}`); | 265 | ${configErrors.reduce((str, err) => `${str}\n${err}`)}`); |
186 | unsuccessful++; | 266 | unsuccessful++; |
187 | continue; | ||
188 | } | 267 | } |
189 | 268 | ||
190 | if (!await fs.exists(path.join(recipeSrc, 'webview.js'))) { | 269 | if (!fs.existsSync(path.join(recipeSrc, 'webview.js'))) { |
191 | console.log(`⚠️ Couldn't package "${recipe}": The recipe doesn't contain a "webview.js"`); | 270 | console.log( |
271 | `⚠️ Couldn't package "${recipe}": The recipe doesn't contain a "webview.js"`, | ||
272 | ); | ||
192 | unsuccessful++; | 273 | unsuccessful++; |
193 | continue; | ||
194 | } | 274 | } |
195 | if (!await fs.exists(path.join(recipeSrc, 'index.js'))) { | 275 | if (!fs.existsSync(path.join(recipeSrc, 'index.js'))) { |
196 | console.log(`⚠️ Couldn't package "${recipe}": The recipe doesn't contain a "index.js"`); | 276 | console.log( |
277 | `⚠️ Couldn't package "${recipe}": The recipe doesn't contain a "index.js"`, | ||
278 | ); | ||
197 | unsuccessful++; | 279 | unsuccessful++; |
198 | continue; | ||
199 | } | 280 | } |
200 | 281 | ||
201 | // Package to .tar.gz | 282 | // Package to .tar.gz |
@@ -204,13 +285,13 @@ const compress = (src, dest) => new Promise((resolve, reject) => { | |||
204 | // Add recipe to all.json | 285 | // Add recipe to all.json |
205 | const isFeatured = featuredRecipes.includes(config.id); | 286 | const isFeatured = featuredRecipes.includes(config.id); |
206 | const packageInfo = { | 287 | const packageInfo = { |
207 | "featured": isFeatured, | 288 | featured: isFeatured, |
208 | "id": config.id, | 289 | id: config.id, |
209 | "name": config.name, | 290 | name: config.name, |
210 | "version": config.version, | 291 | version: config.version, |
211 | "aliases": config.aliases, | 292 | aliases: config.aliases, |
212 | "icons": { | 293 | icons: { |
213 | "svg": `${repo}${config.id}/icon.svg`, | 294 | svg: `${repo}${config.id}/icon.svg`, |
214 | }, | 295 | }, |
215 | }; | 296 | }; |
216 | recipeList.push(packageInfo); | 297 | recipeList.push(packageInfo); |
@@ -220,14 +301,16 @@ const compress = (src, dest) => new Promise((resolve, reject) => { | |||
220 | recipeList = recipeList.sort((a, b) => { | 301 | recipeList = recipeList.sort((a, b) => { |
221 | var textA = a.id.toLowerCase(); | 302 | var textA = a.id.toLowerCase(); |
222 | var textB = b.id.toLowerCase(); | 303 | var textB = b.id.toLowerCase(); |
223 | return (textA < textB) ? -1 : (textA > textB) ? 1 : 0; | 304 | return textA < textB ? -1 : textA > textB ? 1 : 0; |
224 | }); | 305 | }); |
225 | await fs.writeJson(allJson, recipeList, { | 306 | await fs.writeJson(allJson, recipeList, { |
226 | spaces: 2, | 307 | spaces: 2, |
227 | EOL: '\n', | 308 | EOL: '\n', |
228 | }); | 309 | }); |
229 | 310 | ||
230 | console.log(`✅ Successfully packaged and added ${recipeList.length} recipes (${unsuccessful} unsuccessful recipes)`); | 311 | console.log( |
312 | `✅ Successfully packaged and added ${recipeList.length} recipes (${unsuccessful} unsuccessful recipes)`, | ||
313 | ); | ||
231 | 314 | ||
232 | if (unsuccessful > 0) { | 315 | if (unsuccessful > 0) { |
233 | process.exit(1); | 316 | process.exit(1); |