netlify-cli 18.0.1-rc.1 → 18.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/logs/build.js +1 -1
- package/dist/commands/logs/functions.d.ts.map +1 -1
- package/dist/commands/logs/functions.js +2 -1
- package/dist/commands/sites/sites-create-template.d.ts.map +1 -1
- package/dist/commands/sites/sites-create-template.js +1 -0
- package/dist/commands/sites/sites-create.js +1 -1
- package/dist/commands/sites/sites-delete.js +2 -2
- package/dist/commands/status/status-hooks.js +0 -1
- package/dist/commands/status/status.js +2 -2
- package/dist/commands/watch/watch.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/addons/prepare.d.ts +0 -4
- package/dist/utils/addons/prepare.d.ts.map +1 -1
- package/dist/utils/addons/prepare.js +0 -4
- package/dist/utils/command-helpers.d.ts +4 -4
- package/dist/utils/command-helpers.d.ts.map +1 -1
- package/dist/utils/proxy.d.ts.map +1 -1
- package/dist/utils/proxy.js +8 -7
- package/dist/utils/shell.d.ts +0 -4
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +0 -7
- package/dist/utils/sites/create-template.d.ts.map +1 -1
- package/dist/utils/sites/create-template.js +4 -3
- package/dist/utils/telemetry/telemetry.d.ts +3 -3
- package/dist/utils/telemetry/telemetry.d.ts.map +1 -1
- package/functions-templates/typescript/hello-world/package-lock.json +6 -6
- package/npm-shrinkwrap.json +90 -517
- package/package.json +5 -8
- package/dist/commands/blobs/index.d.ts +0 -2
- package/dist/commands/blobs/index.d.ts.map +0 -1
- package/dist/commands/blobs/index.js +0 -1
- package/dist/utils/addons/compare.d.ts +0 -2
- package/dist/utils/addons/compare.d.ts.map +0 -1
- package/dist/utils/addons/compare.js +0 -33
- package/dist/utils/addons/diffs/index.d.ts +0 -2
- package/dist/utils/addons/diffs/index.d.ts.map +0 -1
- package/dist/utils/addons/diffs/index.js +0 -19
- package/dist/utils/addons/diffs/options.d.ts +0 -221
- package/dist/utils/addons/diffs/options.d.ts.map +0 -1
- package/dist/utils/addons/diffs/options.js +0 -105
- package/dist/utils/addons/prompts.d.ts +0 -12
- package/dist/utils/addons/prompts.d.ts.map +0 -1
- package/dist/utils/addons/prompts.js +0 -90
- package/dist/utils/addons/validation.d.ts +0 -4
- package/dist/utils/addons/validation.d.ts.map +0 -1
- package/dist/utils/addons/validation.js +0 -22
- package/dist/utils/init/node-version.d.ts +0 -5
- package/dist/utils/init/node-version.d.ts.map +0 -1
- package/dist/utils/init/node-version.js +0 -25
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../../../src/utils/addons/prepare.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../../../src/utils/addons/prepare.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe;;;SAAsF,CAAA;AAGlH,eAAO,MAAM,WAAW;;;kBAQvB,CAAA;AAGD,eAAO,MAAM,SAAS;;;kBAQrB,CAAA"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
import { error } from '../command-helpers.js';
|
|
2
|
-
export const ADDON_VALIDATION = {
|
|
3
|
-
EXISTS: 'EXISTS',
|
|
4
|
-
NOT_EXISTS: 'NOT_EXISTS',
|
|
5
|
-
};
|
|
6
2
|
// @ts-expect-error TS(7031) FIXME: Binding element 'addonName' implicitly has an 'any... Remove this comment to see the full error message
|
|
7
3
|
export const getCurrentAddon = ({ addonName, addons }) => addons.find((addon) => addon.service_slug === addonName);
|
|
8
4
|
// @ts-expect-error TS(7031) FIXME: Binding element 'api' implicitly has an 'any' type... Remove this comment to see the full error message
|
|
@@ -38,10 +38,10 @@ export declare const sortOptions: (optionA: any, optionB: any) => any;
|
|
|
38
38
|
export declare const pollForToken: ({ api, ticket, }: {
|
|
39
39
|
api: NetlifyAPI;
|
|
40
40
|
ticket: {
|
|
41
|
-
id
|
|
42
|
-
client_id
|
|
43
|
-
authorized
|
|
44
|
-
created_at
|
|
41
|
+
id?: string;
|
|
42
|
+
client_id?: string;
|
|
43
|
+
authorized?: boolean;
|
|
44
|
+
created_at?: string;
|
|
45
45
|
};
|
|
46
46
|
}) => Promise<string | undefined>;
|
|
47
47
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/command-helpers.ts"],"names":[],"mappings":";AAOA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAI/B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAQpC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAmB1C,eAAO,MAAM,KAAK,+BAAqC,CAAA;AAEvD;;;;;;GAMG;AAEH,eAAO,MAAM,OAAO,gDAAyE,CAAA;AAO7F,eAAO,MAAM,OAAO,KAAiB,CAAA;AACrC,eAAO,MAAM,UAAU,QAAmE,CAAA;AAK1F,eAAO,MAAM,YAAY,+BAA0B,CAAA;AAEnD,eAAO,MAAM,UAAU,QAAuF,CAAA;AAC9G,eAAO,MAAM,aAAa,QAA8B,CAAA;AACxD,eAAO,MAAM,cAAc,QAA+B,CAAA;AAC1D,eAAO,MAAM,aAAa,QAA4B,CAAA;AAEtD,eAAO,MAAM,IAAI,QAA2C,CAAA;AAE5D;;;;;;;GAOG;AAEH,eAAO,MAAM,WAAW,qCAMvB,CAAA;AAKD;;;;;;GAMG;AAEH,eAAO,MAAM,YAAY;SAIlB,UAAU;YACP;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;
|
|
1
|
+
{"version":3,"file":"command-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/command-helpers.ts"],"names":[],"mappings":";AAOA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAI/B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAQpC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAmB1C,eAAO,MAAM,KAAK,+BAAqC,CAAA;AAEvD;;;;;;GAMG;AAEH,eAAO,MAAM,OAAO,gDAAyE,CAAA;AAO7F,eAAO,MAAM,OAAO,KAAiB,CAAA;AACrC,eAAO,MAAM,UAAU,QAAmE,CAAA;AAK1F,eAAO,MAAM,YAAY,+BAA0B,CAAA;AAEnD,eAAO,MAAM,UAAU,QAAuF,CAAA;AAC9G,eAAO,MAAM,aAAa,QAA8B,CAAA;AACxD,eAAO,MAAM,cAAc,QAA+B,CAAA;AAC1D,eAAO,MAAM,aAAa,QAA4B,CAAA;AAEtD,eAAO,MAAM,IAAI,QAA2C,CAAA;AAE5D;;;;;;;GAOG;AAEH,eAAO,MAAM,WAAW,qCAMvB,CAAA;AAKD;;;;;;GAMG;AAEH,eAAO,MAAM,YAAY;SAIlB,UAAU;YACP;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;iCAyBvF,CAAA;AACD;;;;GAIG;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE,aAAa,CAAC,CAAA;AAEvD,eAAO,MAAM,QAAQ,sBAA6B,MAAM,KAAG,QAAQ,UAAU,CAkB5E,CAAA;AAMD;;GAEG;AACH,eAAO,MAAM,OAAO,aAAa,OAAO,SAIvC,CAAA;AAGD,eAAO,MAAM,GAAG,4CAOf,CAAA;AAGD,eAAO,MAAM,SAAS,4CAIrB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,IAAI,4BAGhB,CAAA;AAED,iCAAiC;AACjC,eAAO,MAAM,KAAK,aAAa,OAAO,GAAG,KAAK,GAAG,MAAM,YAAgB;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,SAoBxF,CAAA;AAED,eAAO,MAAM,IAAI,0BAEhB,CAAA;AAED;;;;;;GAMG;AAEH,eAAO,MAAM,eAAe,sBAM3B,CAAA;AAID,UAAU,qBAAqB;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAC7B,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IACjC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IACpC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;CACrC;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,WACjB,MAAM,GAAG,MAAM,EAAE,iDACgD,qBAAqB,gCA6C/F,CAAA;AAGD,eAAO,MAAM,eAAe,iCAAiF,CAAA;AAE7G,eAAO,MAAM,WAAW,QAAS,OAAO,iCAAyD,CAAA;AAEjG,eAAO,MAAM,WAAW,0CAAkF,CAAA;AAE1G,eAAO,MAAM,IAAI,YAEhB,CAAA;AAED,MAAM,WAAW,QAAS,SAAQ,KAAK;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,cAAe,SAAQ,KAAK;IACvC,MAAM,EAAE,MAAM,CAAA;gBAEF,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK5C;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,eAAO,MAAM,gBAAgB,aAAc,MAAM,QAAQ,MAAM,YAQ9D,CAAA;AAED,eAAO,MAAM,kBAAkB,sFAAsF,CAAA;AACrH,eAAO,MAAM,iBAAiB,mCAAmC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/utils/proxy.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAkB,MAAM,sBAAsB,CAAA;AAkB/D,OAAO,EAAqB,cAAc,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/utils/proxy.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAkB,MAAM,sBAAsB,CAAA;AAkB/D,OAAO,EAAqB,cAAc,EAAE,MAAM,YAAY,CAAA;AAqyB9D,eAAO,MAAM,WAAW,aAAuB,KAAK,cAAc,EAAE,OAAO,GAAG,MAAM,CAAC,WAGpF,CAAA;AAID,eAAO,MAAM,UAAU;aAsBT,WAAW;cAAY,cAAc;0BAAwB,OAAO;2CA4GjF,CAAA"}
|
package/dist/utils/proxy.js
CHANGED
|
@@ -271,7 +271,9 @@ const serveRedirect = async function ({ env, functionsRegistry, imageProxy, matc
|
|
|
271
271
|
}
|
|
272
272
|
const reqUrl = reqToURL(req, req.url);
|
|
273
273
|
const staticFile = await getStatic(decodeURIComponent(reqUrl.pathname), options.publicFolder);
|
|
274
|
-
const endpointExists = !staticFile &&
|
|
274
|
+
const endpointExists = !staticFile &&
|
|
275
|
+
process.env.NETLIFY_DEV_SERVER_CHECK_SSG_ENDPOINTS &&
|
|
276
|
+
(await isEndpointExists(decodeURIComponent(reqUrl.pathname), options.target));
|
|
275
277
|
if (staticFile || endpointExists) {
|
|
276
278
|
const pathname = staticFile || reqUrl.pathname;
|
|
277
279
|
req.url = encodeURI(pathname) + reqUrl.search;
|
|
@@ -545,12 +547,11 @@ const initializeProxy = async function ({ config, configPath, distDir, env, host
|
|
|
545
547
|
let proxyResHeaders = proxyRes.headers;
|
|
546
548
|
if (htmlInjections) {
|
|
547
549
|
responseBody = await injectHtml(responseBody, proxyRes, htmlInjections);
|
|
548
|
-
|
|
549
|
-
proxyResHeaders
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
}
|
|
550
|
+
proxyResHeaders = {
|
|
551
|
+
...proxyResHeaders,
|
|
552
|
+
'content-length': String(responseBody.byteLength),
|
|
553
|
+
};
|
|
554
|
+
delete proxyResHeaders['transfer-encoding'];
|
|
554
555
|
}
|
|
555
556
|
res.writeHead(responseStatus, proxyResHeaders);
|
|
556
557
|
if (responseStatus !== 304) {
|
package/dist/utils/shell.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAiCzB;;;;;;;;GAQG;AAEH,eAAO,MAAM,UAAU,iEAqEtB,CAAA"}
|
package/dist/utils/shell.js
CHANGED
|
@@ -10,13 +10,6 @@ import { processOnExit } from './dev.js';
|
|
|
10
10
|
// @ts-expect-error TS(7034) FIXME: Variable 'cleanupWork' implicitly has type 'any[]'... Remove this comment to see the full error message
|
|
11
11
|
const cleanupWork = [];
|
|
12
12
|
let cleanupStarted = false;
|
|
13
|
-
/**
|
|
14
|
-
* @param {() => Promise<void>} job
|
|
15
|
-
*/
|
|
16
|
-
// @ts-expect-error TS(7006) FIXME: Parameter 'job' implicitly has an 'any' type.
|
|
17
|
-
export const addCleanupJob = (job) => {
|
|
18
|
-
cleanupWork.push(job);
|
|
19
|
-
};
|
|
20
13
|
/**
|
|
21
14
|
* @param {object} input
|
|
22
15
|
* @param {number=} input.exitCode The exit code to return when exiting the process after cleanup
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-template.d.ts","sourceRoot":"","sources":["../../../src/utils/sites/create-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAMxC,OAAO,EAAE,QAAQ,EAAc,MAAM,aAAa,CAAA;AAIlD,eAAO,MAAM,cAAc,UAAiB,MAAM,KAAG,QAAQ,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"create-template.d.ts","sourceRoot":"","sources":["../../../src/utils/sites/create-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAMxC,OAAO,EAAE,QAAQ,EAAc,MAAM,aAAa,CAAA;AAIlD,eAAO,MAAM,cAAc,UAAiB,MAAM,KAAG,QAAQ,QAAQ,EAAE,CAatE,CAAA;AAED,eAAO,MAAM,eAAe;aAKjB,MAAM;aACN,YAAY;gBACT,MAAM;kBA6BnB,CAAA;AAED,eAAO,MAAM,kBAAkB,SAAgB,MAAM,KAAG,QAAQ,OAAO,CAMtE,CAAA;AAED,eAAO,MAAM,aAAa;aAA0C,YAAY;kBAAgB,MAAM;SACjD,CAAA"}
|
|
@@ -5,13 +5,14 @@ import { log } from '../command-helpers.js';
|
|
|
5
5
|
import { getTemplatesFromGitHub } from './utils.js';
|
|
6
6
|
export const fetchTemplates = async (token) => {
|
|
7
7
|
const templatesFromGitHubOrg = await getTemplatesFromGitHub(token);
|
|
8
|
-
return templatesFromGitHubOrg
|
|
9
|
-
|
|
8
|
+
return (templatesFromGitHubOrg
|
|
9
|
+
// adding this filter because the react-based-templates has multiple templates in one repo so doesn't work for this command
|
|
10
|
+
.filter((repo) => !repo.archived && !repo.disabled && repo.name !== 'react-based-templates')
|
|
10
11
|
.map((template) => ({
|
|
11
12
|
name: template.name,
|
|
12
13
|
sourceCodeUrl: template.html_url,
|
|
13
14
|
slug: template.full_name,
|
|
14
|
-
}));
|
|
15
|
+
})));
|
|
15
16
|
};
|
|
16
17
|
export const getTemplateName = async ({ ghToken, options, repository, }) => {
|
|
17
18
|
if (repository) {
|
|
@@ -7,8 +7,8 @@ export declare function track(eventName: string, payload?: {
|
|
|
7
7
|
[key: string]: unknown;
|
|
8
8
|
}): Promise<false | import("execa").ExecaReturnValue<string> | undefined>;
|
|
9
9
|
export declare function identify(payload: {
|
|
10
|
-
name
|
|
11
|
-
email
|
|
12
|
-
userId
|
|
10
|
+
name?: string;
|
|
11
|
+
email?: string;
|
|
12
|
+
userId?: string;
|
|
13
13
|
}): Promise<import("execa").ExecaReturnValue<string> | undefined>;
|
|
14
14
|
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../../src/utils/telemetry/telemetry.ts"],"names":[],"mappings":"AA+CA;;GAEG;AACH,wBAAsB,KAAK,CACzB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAO,yEAoC7E;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../../src/utils/telemetry/telemetry.ts"],"names":[],"mappings":"AA+CA;;GAEG;AACH,wBAAsB,KAAK,CACzB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAO,yEAoC7E;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,iEA0BzF"}
|
|
@@ -46,9 +46,9 @@
|
|
|
46
46
|
}
|
|
47
47
|
},
|
|
48
48
|
"node_modules/@types/node": {
|
|
49
|
-
"version": "22.10.
|
|
50
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.
|
|
51
|
-
"integrity": "sha512-
|
|
49
|
+
"version": "22.10.7",
|
|
50
|
+
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.7.tgz",
|
|
51
|
+
"integrity": "sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==",
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"undici-types": "~6.20.0"
|
|
54
54
|
}
|
|
@@ -100,9 +100,9 @@
|
|
|
100
100
|
}
|
|
101
101
|
},
|
|
102
102
|
"@types/node": {
|
|
103
|
-
"version": "22.10.
|
|
104
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.
|
|
105
|
-
"integrity": "sha512-
|
|
103
|
+
"version": "22.10.7",
|
|
104
|
+
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.7.tgz",
|
|
105
|
+
"integrity": "sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==",
|
|
106
106
|
"requires": {
|
|
107
107
|
"undici-types": "~6.20.0"
|
|
108
108
|
}
|