create-polyfill-service-url 2.2.6 → 2.3.1
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +27 -4
- package/index.js +27 -90
- package/package.json +20 -11
- package/src/analyse.js +120 -0
- package/src/index.js +28 -7
- package/.eslintrc.js +0 -17
- package/.github/CODEOWNERS +0 -7
- package/.github/ISSUE_TEMPLATE.md +0 -37
- package/.github/dependabot.yml +0 -21
- package/.github/workflows/add-new-issues-and-pull-requests-to-origami-project-board.yml +0 -16
- package/.github/workflows/apply-labels.yml +0 -14
- package/.github/workflows/auto-approve.yml +0 -12
- package/.github/workflows/automatic-tag-and-release.yml +0 -22
- package/.github/workflows/automerge.yml +0 -40
- package/.github/workflows/npm-audit-fix.yml +0 -22
- package/.github/workflows/publish-to-npm-as-latest.yml +0 -22
- package/.github/workflows/publish-to-npm-as-prerelease.yml +0 -22
- package/.github/workflows/sync-repo-labels.yml +0 -13
- package/.github/workflows/test.yml +0 -11
- package/.snyk +0 -170
- package/origami.json +0 -17
- package/test/index.test.js +0 -66
package/README.md
CHANGED
@@ -22,19 +22,42 @@ A Node.js command-line application for analysing your JavaScript file and genera
|
|
22
22
|
|
23
23
|
|
24
24
|
## Usage
|
25
|
-
|
25
|
+
### CLI
|
26
26
|
This project requires [Node.js] 10.x and [npm]. You can run it with:
|
27
27
|
|
28
28
|
```bash
|
29
|
-
> npx create-polyfill-service-url analyse --file bundle.js
|
29
|
+
> npx create-polyfill-service-url analyse --file bundle.js [--cwd "/custom/pwd" --omit "Array.prototype.includes" --hostname "polyfill.io"]
|
30
30
|
```
|
31
|
-
|
32
31
|
You can pass multiple files as argument if you split your bundle files:
|
33
|
-
|
34
32
|
```bash
|
35
33
|
npx create-polyfill-service-url analyse --file app.js vendor.js
|
36
34
|
```
|
37
35
|
|
36
|
+
| Option | Description | Default |
|
37
|
+
|-------------------------------|-------------------------------------------------------------------------------------------------------------|-----------------|
|
38
|
+
| --file | The path to the JavaScript file(s) to analyse | |
|
39
|
+
| --cwd | The current working directory | `process.cwd()` |
|
40
|
+
| --omit | A list of features to omit. Example: `Array.prototype.map` | |
|
41
|
+
| --hostname | The hostname of the polyfill service to use. | `polyfill.io` |
|
42
|
+
| --use-compute-at-edge-backend | Defines the compute-at-edge-backend usage policy: `yes` or `no`. If empty the server will decide. | |
|
43
|
+
| --flags | Configuration settings for every polyfill being requested. Possible values are `always` and `gated` or both | |
|
44
|
+
| --unknown | Defines the policy for unsupported browsers: `polyfill` or `ignore` | `polyfill` |
|
45
|
+
|
46
|
+
### JS API
|
47
|
+
```js
|
48
|
+
const analyze = require('create-polyfill-service-url');
|
49
|
+
|
50
|
+
const result = await analyze({
|
51
|
+
file: ['bundle.js'],
|
52
|
+
cwd: '/foo/bar', // Defaults to process.cwd()
|
53
|
+
omit: ['Array.prototype.includes'], // Defaults to []
|
54
|
+
hostname: 'example.com', // Defaults to 'polyfill.io'
|
55
|
+
unknown: 'polyfill', // Defaults to null. Accepts 'polyfill' or 'ignore'
|
56
|
+
useComputeAtEdgeBackend: 'yes', // Defaults to null. Accepts 'yes' or 'no'
|
57
|
+
flags: 'gated', // Defaults to null. Accepts 'always', 'gated' or both ['always', 'gated']
|
58
|
+
});
|
59
|
+
```
|
60
|
+
|
38
61
|
## Contributing
|
39
62
|
|
40
63
|
This module has a full suite of unit tests, and is verified with ESLint. You can use the following commands to check your code before opening a pull request:
|
package/index.js
CHANGED
@@ -14,97 +14,34 @@ require('yargs')
|
|
14
14
|
describe: 'The file that should be analysed',
|
15
15
|
demandOption: true,
|
16
16
|
},
|
17
|
+
omit: {
|
18
|
+
array: true,
|
19
|
+
string: true,
|
20
|
+
describe: 'The list of features to omit',
|
21
|
+
},
|
22
|
+
cwd: {
|
23
|
+
string: true,
|
24
|
+
describe: 'The current working directory. Defaults to process.cwd()',
|
25
|
+
},
|
26
|
+
hostname: {
|
27
|
+
string: true,
|
28
|
+
describe: 'The hostname to use for the generated URL. Defaults to polyfill.io',
|
29
|
+
},
|
30
|
+
useComputeAtEdgeBackend: {
|
31
|
+
string: true,
|
32
|
+
describe: 'Defines the compute-at-edge-backend usage policy: `yes` or `no`. If empty the server will decide.',
|
33
|
+
},
|
34
|
+
flags: {
|
35
|
+
array: true,
|
36
|
+
string: true,
|
37
|
+
describe: 'Configuration settings for every polyfill being requested. Possible values are `always` and `gated` or both',
|
38
|
+
},
|
39
|
+
unknown: {
|
40
|
+
string: true,
|
41
|
+
describe: 'Defines the policy for unsupported browsers: `polyfill` or `ignore`. Defaults to `polyfill`',
|
42
|
+
},
|
17
43
|
},
|
18
|
-
|
19
|
-
const browserslist = require('browserslist');
|
20
|
-
const browsersListConfig = browserslist.loadConfig({
|
21
|
-
path: process.cwd(),
|
22
|
-
});
|
23
|
-
let browsers = [];
|
24
|
-
if (browsersListConfig) {
|
25
|
-
browsers = browserslist(browsersListConfig);
|
26
|
-
}
|
27
|
-
|
28
|
-
const generatePolyfillURL = require('./src/index.js');
|
29
|
-
const path = require('path');
|
30
|
-
const babel = require('@babel/core');
|
31
|
-
const plugin = require('@financial-times/js-features-analyser/src/index.js');
|
32
|
-
const fs = require('fs');
|
33
|
-
const os = require('os');
|
34
|
-
const promisify = require('util').promisify;
|
35
|
-
const readFile = promisify(fs.readFile);
|
36
|
-
const mkdtemp = promisify(fs.mkdtemp);
|
37
|
-
|
38
|
-
const promiseList = argv.file.map(async filename => {
|
39
|
-
const file = path.join(process.cwd(), filename);
|
40
|
-
const fileContents = await readFile(file, 'utf-8');
|
41
|
-
const tempFolder = await mkdtemp(
|
42
|
-
path.join(os.tmpdir(), 'js-features-analyser')
|
43
|
-
);
|
44
|
-
const outputDestination = path.join(tempFolder, 'features.json');
|
45
|
-
|
46
|
-
try {
|
47
|
-
babel.transformSync(fileContents, {
|
48
|
-
plugins: [
|
49
|
-
[
|
50
|
-
plugin,
|
51
|
-
{
|
52
|
-
outputDestination,
|
53
|
-
},
|
54
|
-
],
|
55
|
-
],
|
56
|
-
filename: file,
|
57
|
-
ast: false,
|
58
|
-
code: false,
|
59
|
-
});
|
60
|
-
|
61
|
-
return JSON.parse(fs.readFileSync(outputDestination, 'utf-8'));
|
62
|
-
} catch (error) {
|
63
|
-
if (error instanceof SyntaxError) {
|
64
|
-
console.error(
|
65
|
-
'Failed to parse the JavaScript from xxx because it has a syntax error.'
|
66
|
-
);
|
67
|
-
delete error.stack;
|
68
|
-
delete error.code;
|
69
|
-
delete error.pos;
|
70
|
-
delete error.loc;
|
71
|
-
const result = /: (?<errorType>[\w ]+) \((?<position>\d+:\d+)\)/.exec(
|
72
|
-
error.message
|
73
|
-
);
|
74
|
-
console.error(result.groups.errorType);
|
75
|
-
error.message = error.message.replace(
|
76
|
-
` ${result.groups.errorType} `,
|
77
|
-
''
|
78
|
-
);
|
79
|
-
error.message = error.message.replace(
|
80
|
-
`(${result.groups.position})`,
|
81
|
-
result.groups.position
|
82
|
-
);
|
83
|
-
console.error(error.message);
|
84
|
-
} else {
|
85
|
-
console.error(
|
86
|
-
'Failed to parse the JavaScript from xxx because an error occured:'
|
87
|
-
);
|
88
|
-
console.error(error);
|
89
|
-
}
|
90
|
-
}
|
91
|
-
});
|
92
|
-
|
93
|
-
const resultList = await Promise.all(promiseList);
|
94
|
-
const featureList = resultList.reduce(
|
95
|
-
(carry, item) => [...carry, ...item],
|
96
|
-
[]
|
97
|
-
);
|
98
|
-
const uniqueFeatureList = [...new Set(featureList)];
|
99
|
-
|
100
|
-
const result = await generatePolyfillURL(uniqueFeatureList, browsers);
|
101
|
-
|
102
|
-
if (result.type === generatePolyfillURL.TYPE_URL) {
|
103
|
-
console.log(result.message);
|
104
|
-
} else if (result.type === generatePolyfillURL.TYPE_NOTHING) {
|
105
|
-
console.error(result.message);
|
106
|
-
}
|
107
|
-
}
|
44
|
+
require('./src/analyse')
|
108
45
|
)
|
109
46
|
.help()
|
110
47
|
.strict().argv;
|
package/package.json
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
{
|
2
2
|
"name": "create-polyfill-service-url",
|
3
3
|
"bin": "./index.js",
|
4
|
+
"main": "./src/analyse.js",
|
5
|
+
"files": [
|
6
|
+
"index.js",
|
7
|
+
"src",
|
8
|
+
"README.md",
|
9
|
+
"CHANGELOG.md",
|
10
|
+
"LICENSE.md"
|
11
|
+
],
|
4
12
|
"scripts": {
|
5
13
|
"fix": "eslint . --fix",
|
6
14
|
"lint": "eslint .",
|
@@ -9,19 +17,20 @@
|
|
9
17
|
"prepare": "npm run snyk-protect"
|
10
18
|
},
|
11
19
|
"devDependencies": {
|
12
|
-
"eslint": "^
|
13
|
-
"jest": "^
|
20
|
+
"eslint": "^8.40.0",
|
21
|
+
"jest": "^29.5.0",
|
22
|
+
"tinysh": "^1.0.0"
|
14
23
|
},
|
15
|
-
"version": "2.
|
24
|
+
"version": "2.3.1",
|
16
25
|
"dependencies": {
|
17
|
-
"@babel/core": "^7.
|
18
|
-
"@financial-times/js-features-analyser": "0.
|
19
|
-
"browserslist": "^4.
|
20
|
-
"execa": "^
|
21
|
-
"polyfill-library": "^
|
22
|
-
"semver": "^7.
|
23
|
-
"yargs": "^
|
24
|
-
"snyk": "^1.
|
26
|
+
"@babel/core": "^7.21.8",
|
27
|
+
"@financial-times/js-features-analyser": "^0.4.3",
|
28
|
+
"browserslist": "^4.21.5",
|
29
|
+
"execa": "^7.1.1",
|
30
|
+
"polyfill-library": "^4.7.0",
|
31
|
+
"semver": "^7.5.0",
|
32
|
+
"yargs": "^17.7.2",
|
33
|
+
"snyk": "^1.1153.0"
|
25
34
|
},
|
26
35
|
"repository": {
|
27
36
|
"type": "git",
|
package/src/analyse.js
ADDED
@@ -0,0 +1,120 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
module.exports = async function parseFile(argv) {
|
4
|
+
const {
|
5
|
+
cwd = process.cwd(),
|
6
|
+
hostname,
|
7
|
+
flags,
|
8
|
+
useComputeAtEdgeBackend,
|
9
|
+
unknown,
|
10
|
+
} = argv;
|
11
|
+
const omitList = argv.omit || [];
|
12
|
+
const browserslist = require('browserslist');
|
13
|
+
const browsersListConfig = browserslist.loadConfig({
|
14
|
+
path: cwd,
|
15
|
+
});
|
16
|
+
let browsers = [];
|
17
|
+
if (browsersListConfig) {
|
18
|
+
browsers = browserslist(browsersListConfig);
|
19
|
+
}
|
20
|
+
|
21
|
+
const generatePolyfillURL = require('./index.js');
|
22
|
+
const path = require('path');
|
23
|
+
const babel = require('@babel/core');
|
24
|
+
const plugin = require('@financial-times/js-features-analyser/src/index.js');
|
25
|
+
const fs = require('fs');
|
26
|
+
const os = require('os');
|
27
|
+
const promisify = require('util').promisify;
|
28
|
+
const readFile = promisify(fs.readFile);
|
29
|
+
const mkdtemp = promisify(fs.mkdtemp);
|
30
|
+
|
31
|
+
const promiseList = argv.file.map(async filename => {
|
32
|
+
const file = path.join(cwd, filename);
|
33
|
+
const fileContents = await readFile(file, 'utf-8');
|
34
|
+
const tempFolder = await mkdtemp(
|
35
|
+
path.join(os.tmpdir(), 'js-features-analyser')
|
36
|
+
);
|
37
|
+
const outputDestination = path.join(tempFolder, 'features.json');
|
38
|
+
|
39
|
+
try {
|
40
|
+
babel.transformSync(fileContents, {
|
41
|
+
plugins: [
|
42
|
+
[
|
43
|
+
plugin,
|
44
|
+
{
|
45
|
+
outputDestination,
|
46
|
+
},
|
47
|
+
],
|
48
|
+
],
|
49
|
+
filename: file,
|
50
|
+
ast: false,
|
51
|
+
code: false,
|
52
|
+
});
|
53
|
+
|
54
|
+
return JSON.parse(fs.readFileSync(outputDestination, 'utf-8'));
|
55
|
+
} catch (error) {
|
56
|
+
if (error instanceof SyntaxError) {
|
57
|
+
console.error(
|
58
|
+
'Failed to parse the JavaScript from xxx because it has a syntax error.'
|
59
|
+
);
|
60
|
+
delete error.stack;
|
61
|
+
delete error.code;
|
62
|
+
delete error.pos;
|
63
|
+
delete error.loc;
|
64
|
+
const result = /: (?<errorType>[\w ]+) \((?<position>\d+:\d+)\)/.exec(
|
65
|
+
error.message
|
66
|
+
);
|
67
|
+
console.error(result.groups.errorType);
|
68
|
+
error.message = error.message.replace(
|
69
|
+
` ${result.groups.errorType} `,
|
70
|
+
''
|
71
|
+
);
|
72
|
+
error.message = error.message.replace(
|
73
|
+
`(${result.groups.position})`,
|
74
|
+
result.groups.position
|
75
|
+
);
|
76
|
+
console.error(error.message);
|
77
|
+
} else {
|
78
|
+
console.error(
|
79
|
+
'Failed to parse the JavaScript from xxx because an error occured:'
|
80
|
+
);
|
81
|
+
console.error(error);
|
82
|
+
}
|
83
|
+
}
|
84
|
+
});
|
85
|
+
|
86
|
+
const resultList = await Promise.all(promiseList);
|
87
|
+
const featureList = resultList.reduce(
|
88
|
+
(carry, item) => [...carry, ...item],
|
89
|
+
[]
|
90
|
+
);
|
91
|
+
|
92
|
+
const clonedFeatureList = [...featureList];
|
93
|
+
|
94
|
+
for (const feature of clonedFeatureList) {
|
95
|
+
const parts = feature.split('.');
|
96
|
+
if (parts.length >= 2 && parts[1] === 'prototype') {
|
97
|
+
if (parts[0] === 'Document') {
|
98
|
+
parts[0] = parts[0].toLowerCase();
|
99
|
+
}
|
100
|
+
else if (parts[0] === 'element') {
|
101
|
+
parts[0] = parts[0].toUpperCase();
|
102
|
+
}
|
103
|
+
parts[0] = parts[0].toLowerCase();
|
104
|
+
featureList.push(parts[0] + '.' + parts.slice(2).join('.'))
|
105
|
+
}
|
106
|
+
}
|
107
|
+
|
108
|
+
const filteredFeatureList = featureList.filter((feat) => !omitList.includes(feat))
|
109
|
+
const uniqueFeatureList = [...new Set(filteredFeatureList)];
|
110
|
+
|
111
|
+
const result = await generatePolyfillURL(uniqueFeatureList, browsers, hostname, flags, useComputeAtEdgeBackend, unknown);
|
112
|
+
|
113
|
+
if (result.type === generatePolyfillURL.TYPE_URL) {
|
114
|
+
console.log(result.message);
|
115
|
+
} else if (result.type === generatePolyfillURL.TYPE_NOTHING) {
|
116
|
+
console.error(result.message);
|
117
|
+
}
|
118
|
+
|
119
|
+
return result;
|
120
|
+
};
|
package/src/index.js
CHANGED
@@ -62,11 +62,18 @@ function normaliseBrowsers(browsers) {
|
|
62
62
|
a => a.split(" ")
|
63
63
|
);
|
64
64
|
}
|
65
|
-
async function generatePolyfillURL(
|
65
|
+
async function generatePolyfillURL(
|
66
|
+
features = [],
|
67
|
+
supportedBrowsers = [],
|
68
|
+
hostname = "cdnjs.cloudflare.com",
|
69
|
+
flags = null,
|
70
|
+
useComputeAtEdgeBackend = null,
|
71
|
+
unknown = null
|
72
|
+
) {
|
66
73
|
if (supportedBrowsers) {
|
67
74
|
supportedBrowsers = normaliseBrowsers(supportedBrowsers);
|
68
75
|
}
|
69
|
-
const polyfillUrl =
|
76
|
+
const polyfillUrl = new URL('/polyfill/v3/polyfill.min.js', 'https://' + hostname);
|
70
77
|
const aliases = await polyfillLibrary.listAliases();
|
71
78
|
const polyfills = await polyfillLibrary.listAllPolyfills();
|
72
79
|
const featuresInPolyfillLibrary = new Set();
|
@@ -156,12 +163,26 @@ async function generatePolyfillURL(features = [], supportedBrowsers = []) {
|
|
156
163
|
type: TYPE_NOTHING,
|
157
164
|
message: "You do not need to use polyfill.io as all your supported browsers support all the features your website currently uses."
|
158
165
|
};
|
159
|
-
} else {
|
160
|
-
return {
|
161
|
-
type: TYPE_URL,
|
162
|
-
message: `${polyfillUrl}?features=${sortedFeatures.join(",")}`
|
163
|
-
}
|
164
166
|
}
|
167
|
+
|
168
|
+
polyfillUrl.searchParams.set("features", sortedFeatures.join(","));
|
169
|
+
|
170
|
+
if (flags) {
|
171
|
+
polyfillUrl.searchParams.set("flags", Array.isArray(flags) ? flags.join(",") : flags);
|
172
|
+
}
|
173
|
+
|
174
|
+
if (useComputeAtEdgeBackend) {
|
175
|
+
polyfillUrl.searchParams.set("use-compute-at-edge-backend", useComputeAtEdgeBackend);
|
176
|
+
}
|
177
|
+
|
178
|
+
if (unknown) {
|
179
|
+
polyfillUrl.searchParams.set("unknown", unknown);
|
180
|
+
}
|
181
|
+
|
182
|
+
return {
|
183
|
+
type: TYPE_URL,
|
184
|
+
message: polyfillUrl.toString().replace(/%2C/g, ",")
|
185
|
+
};
|
165
186
|
}
|
166
187
|
|
167
188
|
module.exports = generatePolyfillURL;
|
package/.eslintrc.js
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
module.exports = {
|
2
|
-
"env": {
|
3
|
-
"commonjs": true,
|
4
|
-
"es6": true,
|
5
|
-
"node": true
|
6
|
-
},
|
7
|
-
"extends": "eslint:recommended",
|
8
|
-
"globals": {
|
9
|
-
"Atomics": "readonly",
|
10
|
-
"SharedArrayBuffer": "readonly"
|
11
|
-
},
|
12
|
-
"parserOptions": {
|
13
|
-
"ecmaVersion": 2018
|
14
|
-
},
|
15
|
-
"rules": {
|
16
|
-
}
|
17
|
-
};
|
package/.github/CODEOWNERS
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
# The Origami Core team is the default owner of all Origami-supported repositories.
|
2
|
-
# This file adds the owner as a reviewer for all pull requests made to this repository.
|
3
|
-
# It references owners by source order - the last matching pattern takes the most precedence.
|
4
|
-
|
5
|
-
# If you would like to be added as an owner, please get in touch with the Origami team at origami.support@ft.com or #origami-support on Slack
|
6
|
-
|
7
|
-
* @Financial-Times/origami-core
|
@@ -1,37 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Issue: [type] [short description]
|
3
|
-
---
|
4
|
-
<!-- [type]: What is this issue for? A bug report? A feature request? -->
|
5
|
-
|
6
|
-
<!--
|
7
|
-
Please make sure you've checked that your issue hasn't already been raised within this repository.
|
8
|
-
|
9
|
-
If you need help with submitting an issue, please get in touch with the Origami Team at origami.support@ft.com or #origami-support on Slack.
|
10
|
-
-->
|
11
|
-
## What
|
12
|
-
<!-- A clear description of what the problem or feature request is -->
|
13
|
-
|
14
|
-
## Details
|
15
|
-
<!--
|
16
|
-
If it is a bug:
|
17
|
-
- describe what the expected behaviour is, and what is actually happening
|
18
|
-
- add steps on how to reproduce it
|
19
|
-
- describe the environment you are having this problem in
|
20
|
-
- Browser + version (e.g. Chrome 70)
|
21
|
-
- Device (e.g. iPhone X, Desktop)
|
22
|
-
- provide screenshots to illustrate your problem
|
23
|
-
|
24
|
-
If it is a feature request:
|
25
|
-
- explain what prompted this request — e.g. is it something that you regularly make a workaround for?
|
26
|
-
- describe what the new feature would do and how it would be used
|
27
|
-
- explain what alternatives you have explored / considered
|
28
|
-
- where possible, attach designs for the style of the new feature
|
29
|
-
-->
|
30
|
-
|
31
|
-
<!--
|
32
|
-
## Additional information
|
33
|
-
For either type of issue:
|
34
|
-
- please add any other comments or details you might have
|
35
|
-
- if you've had a conversation about this with someone, please reference that person in this issue
|
36
|
-
- if there is a similar or related issue, please link to it
|
37
|
-
-->
|
package/.github/dependabot.yml
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
version: 2
|
2
|
-
updates:
|
3
|
-
# Maintain dependencies for npm
|
4
|
-
- package-ecosystem: "npm"
|
5
|
-
open-pull-requests-limit: 1
|
6
|
-
directory: "/"
|
7
|
-
schedule:
|
8
|
-
interval: "daily"
|
9
|
-
allow:
|
10
|
-
- dependency-type: "development"
|
11
|
-
labels:
|
12
|
-
- "dependencies"
|
13
|
-
ignore:
|
14
|
-
- dependency-name: "snyk"
|
15
|
-
# Maintain dependencies for GitHub Actions
|
16
|
-
- package-ecosystem: "github-actions"
|
17
|
-
directory: "/"
|
18
|
-
schedule:
|
19
|
-
interval: "daily"
|
20
|
-
labels:
|
21
|
-
- "dependencies"
|
@@ -1,16 +0,0 @@
|
|
1
|
-
name: Add new issues and pull requests to Origami Project Board
|
2
|
-
on:
|
3
|
-
- issues
|
4
|
-
- pull_request_target
|
5
|
-
- pull_request
|
6
|
-
|
7
|
-
jobs:
|
8
|
-
origami_project_board_job:
|
9
|
-
runs-on: ubuntu-latest
|
10
|
-
name: Add new issue or pull request to Origami Project Board
|
11
|
-
steps:
|
12
|
-
- name: Add new issue or pull request to Origami Project Board
|
13
|
-
id: origami-project-board
|
14
|
-
uses: Financial-Times/origami-project-board-action@v1
|
15
|
-
with:
|
16
|
-
origami-fox-access-token: ${{ secrets.ORIGAMI_FOX_ACCESS_TOKEN }}
|
@@ -1,14 +0,0 @@
|
|
1
|
-
name: Apply Origami labels
|
2
|
-
on:
|
3
|
-
- issues
|
4
|
-
- pull_request_target
|
5
|
-
- pull_request
|
6
|
-
jobs:
|
7
|
-
apply-labels:
|
8
|
-
runs-on: ubuntu-latest
|
9
|
-
name: Apply Origami labels to new issues and pull requests.
|
10
|
-
steps:
|
11
|
-
- uses: actions/checkout@v2
|
12
|
-
- uses: Financial-Times/origami-apply-labels@v1
|
13
|
-
with:
|
14
|
-
github-token: ${{ secrets.GITHUB_TOKEN }}
|
@@ -1,12 +0,0 @@
|
|
1
|
-
name: Auto Approve Dependabot PRs
|
2
|
-
|
3
|
-
on: pull_request
|
4
|
-
|
5
|
-
jobs:
|
6
|
-
auto-approve:
|
7
|
-
runs-on: ubuntu-latest
|
8
|
-
steps:
|
9
|
-
- uses: hmarr/auto-approve-action@v2.0.0
|
10
|
-
if: github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]'
|
11
|
-
with:
|
12
|
-
github-token: "${{ secrets.ORIGAMI_FOX_ACCESS_TOKEN }}"
|
@@ -1,22 +0,0 @@
|
|
1
|
-
on:
|
2
|
-
pull_request:
|
3
|
-
types: [closed] # Merged pull-requests count as closed pull-requests.
|
4
|
-
|
5
|
-
jobs:
|
6
|
-
create-new-version:
|
7
|
-
runs-on: ubuntu-latest
|
8
|
-
name: Create new version/tag
|
9
|
-
steps:
|
10
|
-
- uses: actions/checkout@v2
|
11
|
-
if: github.event.pull_request.merged # Only run on merged pull-requests
|
12
|
-
with:
|
13
|
-
ref: ${{ github.event.pull_request.merge_commit_sha }} # Checkout the merged commit
|
14
|
-
fetch-depth: 0
|
15
|
-
token: ${{ secrets.ORIGAMI_VERSION_TOKEN }}
|
16
|
-
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/* # Get all tags from the origin
|
17
|
-
if: github.event.pull_request.merged # Only run on merged pull-requests
|
18
|
-
- uses: Financial-Times/origami-version@v1.2.1
|
19
|
-
name: Create new version/tag
|
20
|
-
if: github.event.pull_request.merged # Only run on merged pull-requests
|
21
|
-
with:
|
22
|
-
github-token: ${{ secrets.ORIGAMI_GITHUB_TOKEN }}
|
@@ -1,40 +0,0 @@
|
|
1
|
-
name: automerge
|
2
|
-
on:
|
3
|
-
pull_request:
|
4
|
-
types:
|
5
|
-
- labeled
|
6
|
-
- unlabeled
|
7
|
-
- synchronize
|
8
|
-
- opened
|
9
|
-
- edited
|
10
|
-
- ready_for_review
|
11
|
-
- reopened
|
12
|
-
- unlocked
|
13
|
-
pull_request_review:
|
14
|
-
types:
|
15
|
-
- submitted
|
16
|
-
check_suite:
|
17
|
-
types:
|
18
|
-
- completed
|
19
|
-
status: {}
|
20
|
-
jobs:
|
21
|
-
automerge:
|
22
|
-
runs-on: ubuntu-latest
|
23
|
-
if: github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]'
|
24
|
-
timeout-minutes: 120
|
25
|
-
steps:
|
26
|
-
- name: 'Wait for status checks'
|
27
|
-
id: waitforstatuschecks
|
28
|
-
uses: "WyriHaximus/github-action-wait-for-status@v1.3"
|
29
|
-
with:
|
30
|
-
ignoreActions: automerge
|
31
|
-
checkInterval: 13
|
32
|
-
env:
|
33
|
-
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
34
|
-
- name: automerge
|
35
|
-
uses: "pascalgn/automerge-action@v0.13.1"
|
36
|
-
env:
|
37
|
-
GITHUB_TOKEN: "${{ secrets.ORIGAMI_GITHUB_TOKEN }}"
|
38
|
-
MERGE_LABELS: "dependencies"
|
39
|
-
MERGE_METHOD: "rebase"
|
40
|
-
MERGE_FORKS: "false"
|
@@ -1,22 +0,0 @@
|
|
1
|
-
name: npm audit fix
|
2
|
-
|
3
|
-
on:
|
4
|
-
schedule:
|
5
|
-
- cron: 0 0 * * * # Runs at 00:00 UTC every day
|
6
|
-
|
7
|
-
# on:
|
8
|
-
# push:
|
9
|
-
# branches:
|
10
|
-
# - master
|
11
|
-
|
12
|
-
jobs:
|
13
|
-
run:
|
14
|
-
runs-on: ubuntu-latest
|
15
|
-
steps:
|
16
|
-
- uses: actions/checkout@v2
|
17
|
-
- uses: ybiquitous/npm-audit-fix-action@v2.1.6
|
18
|
-
with:
|
19
|
-
github_token: ${{ secrets.ORIGAMI_GITHUB_TOKEN }}
|
20
|
-
# branch: "npm-audit-fix"
|
21
|
-
# default_branch: master
|
22
|
-
# commit_title: "chore(deps): npm audit fix"
|
@@ -1,22 +0,0 @@
|
|
1
|
-
name: Publish to npm as latest version
|
2
|
-
on:
|
3
|
-
push:
|
4
|
-
tags:
|
5
|
-
- 'v[0-9]+.[0-9]+.[0-9]+' # non-prerelease tag
|
6
|
-
jobs:
|
7
|
-
publish-latest:
|
8
|
-
runs-on: ubuntu-latest
|
9
|
-
steps:
|
10
|
-
- uses: actions/checkout@v2
|
11
|
-
- uses: actions/setup-node@v2.1.4
|
12
|
-
with:
|
13
|
-
node-version: '12.x'
|
14
|
-
registry-url: 'https://registry.npmjs.org'
|
15
|
-
- run: npm ci
|
16
|
-
- name: Get the version
|
17
|
-
id: version
|
18
|
-
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
|
19
|
-
- run: npm version --no-git-tag-version ${{ steps.version.outputs.VERSION }}
|
20
|
-
- run: npm publish
|
21
|
-
env:
|
22
|
-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
@@ -1,22 +0,0 @@
|
|
1
|
-
name: Publish to npm as prerelease version
|
2
|
-
on:
|
3
|
-
push:
|
4
|
-
tags:
|
5
|
-
- 'v[0-9]+.[0-9]+.[0-9]+-*' # prerelease tag
|
6
|
-
jobs:
|
7
|
-
publish-prerelease:
|
8
|
-
runs-on: ubuntu-latest
|
9
|
-
steps:
|
10
|
-
- uses: actions/checkout@v2
|
11
|
-
- uses: actions/setup-node@v2.1.4
|
12
|
-
with:
|
13
|
-
node-version: '12.x'
|
14
|
-
registry-url: 'https://registry.npmjs.org'
|
15
|
-
- run: npm ci
|
16
|
-
- name: Get the version
|
17
|
-
id: version
|
18
|
-
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
|
19
|
-
- run: npm version --no-git-tag-version ${{ steps.version.outputs.VERSION }}
|
20
|
-
- run: npm publish --tag prerelease
|
21
|
-
env:
|
22
|
-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
@@ -1,13 +0,0 @@
|
|
1
|
-
name: Sync Origami labels
|
2
|
-
on:
|
3
|
-
- issues
|
4
|
-
- pull_request_target
|
5
|
-
- pull_request
|
6
|
-
jobs:
|
7
|
-
sync-labels:
|
8
|
-
runs-on: ubuntu-latest
|
9
|
-
name: Sync repository labels
|
10
|
-
steps:
|
11
|
-
- uses: Financial-Times/origami-labels@v1
|
12
|
-
with:
|
13
|
-
github-token: ${{ secrets.GITHUB_TOKEN }}
|
package/.snyk
DELETED
@@ -1,170 +0,0 @@
|
|
1
|
-
# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.
|
2
|
-
version: v1.14.1
|
3
|
-
ignore: {}
|
4
|
-
# patches apply the minimum changes required to fix a vulnerability
|
5
|
-
patch:
|
6
|
-
SNYK-JS-LODASH-567746:
|
7
|
-
- '@babel/core > lodash':
|
8
|
-
patched: '2020-05-06T18:55:45.980Z'
|
9
|
-
- '@babel/core > @babel/types > lodash':
|
10
|
-
patched: '2020-05-06T18:55:45.980Z'
|
11
|
-
- '@babel/core > @babel/generator > lodash':
|
12
|
-
patched: '2020-05-06T18:55:45.980Z'
|
13
|
-
- '@babel/core > @babel/traverse > lodash':
|
14
|
-
patched: '2020-05-06T18:55:45.980Z'
|
15
|
-
- '@babel/core > @babel/helper-module-transforms > lodash':
|
16
|
-
patched: '2020-05-06T18:55:45.980Z'
|
17
|
-
- '@financial-times/js-features-analyser > @babel/core > lodash':
|
18
|
-
patched: '2020-05-06T18:55:45.980Z'
|
19
|
-
- '@babel/core > @babel/generator > @babel/types > lodash':
|
20
|
-
patched: '2020-05-06T18:55:45.980Z'
|
21
|
-
- '@babel/core > @babel/traverse > @babel/types > lodash':
|
22
|
-
patched: '2020-05-06T18:55:45.980Z'
|
23
|
-
- '@babel/core > @babel/template > @babel/types > lodash':
|
24
|
-
patched: '2020-05-06T18:55:45.980Z'
|
25
|
-
- '@babel/core > @babel/helper-module-transforms > @babel/types > lodash':
|
26
|
-
patched: '2020-05-06T18:55:45.980Z'
|
27
|
-
- '@babel/core > @babel/helpers > @babel/types > lodash':
|
28
|
-
patched: '2020-05-06T18:55:45.980Z'
|
29
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/types > lodash':
|
30
|
-
patched: '2020-05-06T18:55:45.980Z'
|
31
|
-
- '@babel/core > @babel/traverse > @babel/generator > lodash':
|
32
|
-
patched: '2020-05-06T18:55:45.980Z'
|
33
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/generator > lodash':
|
34
|
-
patched: '2020-05-06T18:55:45.980Z'
|
35
|
-
- '@babel/core > @babel/helpers > @babel/traverse > lodash':
|
36
|
-
patched: '2020-05-06T18:55:45.980Z'
|
37
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/traverse > lodash':
|
38
|
-
patched: '2020-05-06T18:55:45.980Z'
|
39
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helper-module-transforms > lodash':
|
40
|
-
patched: '2020-05-06T18:55:45.980Z'
|
41
|
-
- '@babel/core > @babel/traverse > @babel/generator > @babel/types > lodash':
|
42
|
-
patched: '2020-05-06T18:55:45.980Z'
|
43
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/generator > @babel/types > lodash':
|
44
|
-
patched: '2020-05-06T18:55:45.980Z'
|
45
|
-
- '@babel/core > @babel/traverse > @babel/helper-function-name > @babel/types > lodash':
|
46
|
-
patched: '2020-05-06T18:55:45.980Z'
|
47
|
-
- '@babel/core > @babel/helpers > @babel/traverse > @babel/types > lodash':
|
48
|
-
patched: '2020-05-06T18:55:45.980Z'
|
49
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/traverse > @babel/types > lodash':
|
50
|
-
patched: '2020-05-06T18:55:45.980Z'
|
51
|
-
- '@babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/types > lodash':
|
52
|
-
patched: '2020-05-06T18:55:45.980Z'
|
53
|
-
- '@babel/core > @babel/helper-module-transforms > @babel/template > @babel/types > lodash':
|
54
|
-
patched: '2020-05-06T18:55:45.980Z'
|
55
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/template > @babel/types > lodash':
|
56
|
-
patched: '2020-05-06T18:55:45.980Z'
|
57
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helper-module-transforms > @babel/types > lodash':
|
58
|
-
patched: '2020-05-06T18:55:45.980Z'
|
59
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helpers > @babel/types > lodash':
|
60
|
-
patched: '2020-05-06T18:55:45.980Z'
|
61
|
-
- '@babel/core > @babel/helpers > @babel/traverse > @babel/generator > lodash':
|
62
|
-
patched: '2020-05-06T18:55:45.980Z'
|
63
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/traverse > @babel/generator > lodash':
|
64
|
-
patched: '2020-05-06T18:55:45.980Z'
|
65
|
-
- '@babel/core > @babel/helper-module-transforms > @babel/helper-module-imports > @babel/types > lodash':
|
66
|
-
patched: '2020-05-06T18:55:45.980Z'
|
67
|
-
- '@babel/core > @babel/helpers > @babel/template > @babel/types > lodash':
|
68
|
-
patched: '2020-05-06T18:55:45.980Z'
|
69
|
-
- '@babel/core > @babel/traverse > @babel/helper-split-export-declaration > @babel/types > lodash':
|
70
|
-
patched: '2020-05-06T18:55:45.980Z'
|
71
|
-
- '@babel/core > @babel/helper-module-transforms > @babel/helper-split-export-declaration > @babel/types > lodash':
|
72
|
-
patched: '2020-05-06T18:55:45.980Z'
|
73
|
-
- '@babel/core > @babel/helper-module-transforms > @babel/helper-simple-access > @babel/types > lodash':
|
74
|
-
patched: '2020-05-06T18:55:45.980Z'
|
75
|
-
- '@babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/traverse > lodash':
|
76
|
-
patched: '2020-05-06T18:55:45.980Z'
|
77
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helpers > @babel/traverse > lodash':
|
78
|
-
patched: '2020-05-06T18:55:45.980Z'
|
79
|
-
- '@babel/core > @babel/helpers > @babel/traverse > @babel/generator > @babel/types > lodash':
|
80
|
-
patched: '2020-05-06T18:55:45.980Z'
|
81
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/traverse > @babel/generator > @babel/types > lodash':
|
82
|
-
patched: '2020-05-06T18:55:45.980Z'
|
83
|
-
- '@babel/core > @babel/helpers > @babel/traverse > @babel/helper-function-name > @babel/types > lodash':
|
84
|
-
patched: '2020-05-06T18:55:45.980Z'
|
85
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/traverse > @babel/helper-function-name > @babel/types > lodash':
|
86
|
-
patched: '2020-05-06T18:55:45.980Z'
|
87
|
-
- '@babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/traverse > @babel/types > lodash':
|
88
|
-
patched: '2020-05-06T18:55:45.980Z'
|
89
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helpers > @babel/traverse > @babel/types > lodash':
|
90
|
-
patched: '2020-05-06T18:55:45.980Z'
|
91
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/types > lodash':
|
92
|
-
patched: '2020-05-06T18:55:45.980Z'
|
93
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helper-module-transforms > @babel/template > @babel/types > lodash':
|
94
|
-
patched: '2020-05-06T18:55:45.980Z'
|
95
|
-
- '@babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/traverse > @babel/generator > lodash':
|
96
|
-
patched: '2020-05-06T18:55:45.980Z'
|
97
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helpers > @babel/traverse > @babel/generator > lodash':
|
98
|
-
patched: '2020-05-06T18:55:45.980Z'
|
99
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helper-module-transforms > @babel/helper-module-imports > @babel/types > lodash':
|
100
|
-
patched: '2020-05-06T18:55:45.980Z'
|
101
|
-
- '@babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/helper-member-expression-to-functions > @babel/types > lodash':
|
102
|
-
patched: '2020-05-06T18:55:45.980Z'
|
103
|
-
- '@babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/helper-optimise-call-expression > @babel/types > lodash':
|
104
|
-
patched: '2020-05-06T18:55:45.980Z'
|
105
|
-
- '@babel/core > @babel/traverse > @babel/helper-function-name > @babel/helper-get-function-arity > @babel/types > lodash':
|
106
|
-
patched: '2020-05-06T18:55:45.980Z'
|
107
|
-
- '@babel/core > @babel/traverse > @babel/helper-function-name > @babel/template > @babel/types > lodash':
|
108
|
-
patched: '2020-05-06T18:55:45.980Z'
|
109
|
-
- '@babel/core > @babel/helper-module-transforms > @babel/helper-simple-access > @babel/template > @babel/types > lodash':
|
110
|
-
patched: '2020-05-06T18:55:45.980Z'
|
111
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helpers > @babel/template > @babel/types > lodash':
|
112
|
-
patched: '2020-05-06T18:55:45.980Z'
|
113
|
-
- '@babel/core > @babel/helpers > @babel/traverse > @babel/helper-split-export-declaration > @babel/types > lodash':
|
114
|
-
patched: '2020-05-06T18:55:45.980Z'
|
115
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/traverse > @babel/helper-split-export-declaration > @babel/types > lodash':
|
116
|
-
patched: '2020-05-06T18:55:45.980Z'
|
117
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helper-module-transforms > @babel/helper-split-export-declaration > @babel/types > lodash':
|
118
|
-
patched: '2020-05-06T18:55:45.980Z'
|
119
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helper-module-transforms > @babel/helper-simple-access > @babel/types > lodash':
|
120
|
-
patched: '2020-05-06T18:55:45.980Z'
|
121
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/traverse > lodash':
|
122
|
-
patched: '2020-05-06T18:55:45.980Z'
|
123
|
-
- '@babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/traverse > @babel/generator > @babel/types > lodash':
|
124
|
-
patched: '2020-05-06T18:55:45.980Z'
|
125
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helpers > @babel/traverse > @babel/generator > @babel/types > lodash':
|
126
|
-
patched: '2020-05-06T18:55:45.980Z'
|
127
|
-
- '@babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/traverse > @babel/helper-function-name > @babel/types > lodash':
|
128
|
-
patched: '2020-05-06T18:55:45.980Z'
|
129
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helpers > @babel/traverse > @babel/helper-function-name > @babel/types > lodash':
|
130
|
-
patched: '2020-05-06T18:55:45.980Z'
|
131
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/traverse > @babel/types > lodash':
|
132
|
-
patched: '2020-05-06T18:55:45.980Z'
|
133
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/traverse > @babel/generator > lodash':
|
134
|
-
patched: '2020-05-06T18:55:45.980Z'
|
135
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/helper-member-expression-to-functions > @babel/types > lodash':
|
136
|
-
patched: '2020-05-06T18:55:45.980Z'
|
137
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/helper-optimise-call-expression > @babel/types > lodash':
|
138
|
-
patched: '2020-05-06T18:55:45.980Z'
|
139
|
-
- '@babel/core > @babel/helpers > @babel/traverse > @babel/helper-function-name > @babel/helper-get-function-arity > @babel/types > lodash':
|
140
|
-
patched: '2020-05-06T18:55:45.980Z'
|
141
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/traverse > @babel/helper-function-name > @babel/helper-get-function-arity > @babel/types > lodash':
|
142
|
-
patched: '2020-05-06T18:55:45.980Z'
|
143
|
-
- '@babel/core > @babel/helpers > @babel/traverse > @babel/helper-function-name > @babel/template > @babel/types > lodash':
|
144
|
-
patched: '2020-05-06T18:55:45.980Z'
|
145
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/traverse > @babel/helper-function-name > @babel/template > @babel/types > lodash':
|
146
|
-
patched: '2020-05-06T18:55:45.980Z'
|
147
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helper-module-transforms > @babel/helper-simple-access > @babel/template > @babel/types > lodash':
|
148
|
-
patched: '2020-05-06T18:55:45.980Z'
|
149
|
-
- '@babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/traverse > @babel/helper-split-export-declaration > @babel/types > lodash':
|
150
|
-
patched: '2020-05-06T18:55:45.980Z'
|
151
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helpers > @babel/traverse > @babel/helper-split-export-declaration > @babel/types > lodash':
|
152
|
-
patched: '2020-05-06T18:55:45.980Z'
|
153
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/traverse > @babel/generator > @babel/types > lodash':
|
154
|
-
patched: '2020-05-06T18:55:45.980Z'
|
155
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/traverse > @babel/helper-function-name > @babel/types > lodash':
|
156
|
-
patched: '2020-05-06T18:55:45.980Z'
|
157
|
-
- '@babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/traverse > @babel/helper-function-name > @babel/helper-get-function-arity > @babel/types > lodash':
|
158
|
-
patched: '2020-05-06T18:55:45.980Z'
|
159
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helpers > @babel/traverse > @babel/helper-function-name > @babel/helper-get-function-arity > @babel/types > lodash':
|
160
|
-
patched: '2020-05-06T18:55:45.980Z'
|
161
|
-
- '@babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/traverse > @babel/helper-function-name > @babel/template > @babel/types > lodash':
|
162
|
-
patched: '2020-05-06T18:55:45.980Z'
|
163
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helpers > @babel/traverse > @babel/helper-function-name > @babel/template > @babel/types > lodash':
|
164
|
-
patched: '2020-05-06T18:55:45.980Z'
|
165
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/traverse > @babel/helper-split-export-declaration > @babel/types > lodash':
|
166
|
-
patched: '2020-05-06T18:55:45.980Z'
|
167
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/traverse > @babel/helper-function-name > @babel/helper-get-function-arity > @babel/types > lodash':
|
168
|
-
patched: '2020-05-06T18:55:45.980Z'
|
169
|
-
- '@financial-times/js-features-analyser > @babel/core > @babel/helper-module-transforms > @babel/helper-replace-supers > @babel/traverse > @babel/helper-function-name > @babel/template > @babel/types > lodash':
|
170
|
-
patched: '2020-05-06T18:55:45.980Z'
|
package/origami.json
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"description": "Analyse your JavaScript file and generate a polyfill.io URL based on all the features that are being used from within the JavaScript file.",
|
3
|
-
"origamiType": "cli",
|
4
|
-
"origamiVersion": 1,
|
5
|
-
"keywords": [
|
6
|
-
"polyfills",
|
7
|
-
"bundle",
|
8
|
-
"generator",
|
9
|
-
"analysis"
|
10
|
-
],
|
11
|
-
"support": "https://github.com/Financial-Times/polyfill-service-url-builder/issues",
|
12
|
-
"supportStatus": "active",
|
13
|
-
"supportContact": {
|
14
|
-
"email": "origami.support@ft.com",
|
15
|
-
"slack": "financialtimes/origami-support"
|
16
|
-
}
|
17
|
-
}
|
package/test/index.test.js
DELETED
@@ -1,66 +0,0 @@
|
|
1
|
-
/* eslint-env jest */
|
2
|
-
|
3
|
-
const generatePolyfillURL = require('../src/index');
|
4
|
-
|
5
|
-
test('Adds a feature to the features querystring if it exists in polyfill-library', async () => {
|
6
|
-
const expected = 'https://polyfill.io/v3/polyfill.min.js?features=Array.prototype.forEach';
|
7
|
-
const actual = await generatePolyfillURL(["Array.prototype.forEach"])
|
8
|
-
expect(actual.message).toEqual(expected);
|
9
|
-
});
|
10
|
-
|
11
|
-
test('Does not add duplicated features to the features querystring', async () => {
|
12
|
-
const expected = 'https://polyfill.io/v3/polyfill.min.js?features=Array.prototype.forEach';
|
13
|
-
const actual = await generatePolyfillURL(["Array.prototype.forEach", "Array.prototype.forEach"])
|
14
|
-
expect(actual.message).toEqual(expected);
|
15
|
-
});
|
16
|
-
|
17
|
-
test('Does not add features to the features querystring which do not exist in polyfill-library', async () => {
|
18
|
-
const expected = 'https://polyfill.io/v3/polyfill.min.js?features=Array.prototype.forEach';
|
19
|
-
const actual = await generatePolyfillURL(["Array.prototype.forEach", "Carrot"])
|
20
|
-
expect(actual.message).toEqual(expected);
|
21
|
-
});
|
22
|
-
|
23
|
-
test('Adds a feature to the features querystring if it exists as an alias of a polyfill from within polyfill-library', async () => {
|
24
|
-
const expected = 'https://polyfill.io/v3/polyfill.min.js?features=ArrayBuffer';
|
25
|
-
const actual = await generatePolyfillURL(["ArrayBuffer"])
|
26
|
-
expect(actual.message).toEqual(expected);
|
27
|
-
});
|
28
|
-
|
29
|
-
test('Adds an alias to the features querystring if it matches multiple features and does not includes polyfill which are not in the features array', async () => {
|
30
|
-
const expected = 'https://polyfill.io/v3/polyfill.min.js?features=es2017';
|
31
|
-
const actual = await generatePolyfillURL(["Object.entries",
|
32
|
-
"Object.getOwnPropertyDescriptors",
|
33
|
-
"Object.values",
|
34
|
-
"String.prototype.padEnd",
|
35
|
-
"String.prototype.padStart"
|
36
|
-
])
|
37
|
-
expect(actual.message).toEqual(expected);
|
38
|
-
});
|
39
|
-
|
40
|
-
test('Adds the constructor of a feature to the features querystring if the specific feature does not exist from within polyfill-library', async () => {
|
41
|
-
const expected = 'https://polyfill.io/v3/polyfill.min.js?features=DOMTokenList';
|
42
|
-
const actual = await generatePolyfillURL([
|
43
|
-
"DOMTokenList.prototype.add"
|
44
|
-
]);
|
45
|
-
expect(actual.message).toEqual(expected);
|
46
|
-
});
|
47
|
-
|
48
|
-
test('Sorts the features in alphabetical order to make spotting changes when updating the url simpler', async () => {
|
49
|
-
const expected = 'https://polyfill.io/v3/polyfill.min.js?features=Array.from,DOMTokenList,fetch,String.prototype.padStart,WeakSet';
|
50
|
-
const actual = await generatePolyfillURL([
|
51
|
-
"String.prototype.padStart",
|
52
|
-
"fetch",
|
53
|
-
"WeakSet.prototype.delete",
|
54
|
-
"DOMTokenList.prototype.add",
|
55
|
-
"Array.from"
|
56
|
-
]);
|
57
|
-
expect(actual.message).toEqual(expected);
|
58
|
-
});
|
59
|
-
|
60
|
-
test('Accepts a browserlist array', async () => {
|
61
|
-
const expected = 'https://polyfill.io/v3/polyfill.min.js?features=Array.from';
|
62
|
-
const actual = await generatePolyfillURL([
|
63
|
-
"Array.from"
|
64
|
-
], ["op_mini *"]);
|
65
|
-
expect(actual.message).toEqual(expected);
|
66
|
-
});
|