@strapi/upgrade 5.12.1 → 5.12.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/cli.js +6 -203
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +5 -202
- package/dist/cli.mjs.map +1 -1
- package/dist/index.js +4 -155
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -157
- package/dist/index.mjs.map +1 -1
- package/dist/package.json.js +6 -0
- package/dist/package.json.js.map +1 -0
- package/dist/package.json.mjs +4 -0
- package/dist/package.json.mjs.map +1 -0
- package/dist/src/cli/commands/codemods.js +120 -0
- package/dist/src/cli/commands/codemods.js.map +1 -0
- package/dist/src/cli/commands/codemods.mjs +116 -0
- package/dist/src/cli/commands/codemods.mjs.map +1 -0
- package/dist/src/cli/commands/upgrade.js +99 -0
- package/dist/src/cli/commands/upgrade.js.map +1 -0
- package/dist/src/cli/commands/upgrade.mjs +96 -0
- package/dist/src/cli/commands/upgrade.mjs.map +1 -0
- package/dist/src/cli/errors.js +18 -0
- package/dist/src/cli/errors.js.map +1 -0
- package/dist/src/cli/errors.mjs +16 -0
- package/dist/src/cli/errors.mjs.map +1 -0
- package/dist/src/cli/options.js +26 -0
- package/dist/src/cli/options.js.map +1 -0
- package/dist/src/cli/options.mjs +19 -0
- package/dist/src/cli/options.mjs.map +1 -0
- package/dist/src/modules/codemod/codemod.js +44 -0
- package/dist/src/modules/codemod/codemod.js.map +1 -0
- package/dist/src/modules/codemod/codemod.mjs +41 -0
- package/dist/src/modules/codemod/codemod.mjs.map +1 -0
- package/dist/src/modules/codemod/constants.js +17 -0
- package/dist/src/modules/codemod/constants.js.map +1 -0
- package/dist/src/modules/codemod/constants.mjs +11 -0
- package/dist/src/modules/codemod/constants.mjs.map +1 -0
- package/dist/src/modules/codemod/index.js +10 -0
- package/dist/src/modules/codemod/index.js.map +1 -0
- package/dist/src/modules/codemod/index.mjs +4 -0
- package/dist/src/modules/codemod/index.mjs.map +1 -0
- package/dist/src/modules/codemod-repository/constants.js +9 -0
- package/dist/src/modules/codemod-repository/constants.js.map +1 -0
- package/dist/src/modules/codemod-repository/constants.mjs +7 -0
- package/dist/src/modules/codemod-repository/constants.mjs.map +1 -0
- package/dist/src/modules/codemod-repository/index.js +10 -0
- package/dist/src/modules/codemod-repository/index.js.map +1 -0
- package/dist/src/modules/codemod-repository/index.mjs +4 -0
- package/dist/src/modules/codemod-repository/index.mjs.map +1 -0
- package/dist/src/modules/codemod-repository/repository.js +127 -0
- package/dist/src/modules/codemod-repository/repository.js.map +1 -0
- package/dist/src/modules/codemod-repository/repository.mjs +123 -0
- package/dist/src/modules/codemod-repository/repository.mjs.map +1 -0
- package/dist/src/modules/codemod-runner/codemod-runner.js +113 -0
- package/dist/src/modules/codemod-runner/codemod-runner.js.map +1 -0
- package/dist/src/modules/codemod-runner/codemod-runner.mjs +110 -0
- package/dist/src/modules/codemod-runner/codemod-runner.mjs.map +1 -0
- package/dist/src/modules/error/index.js +11 -0
- package/dist/src/modules/error/index.js.map +1 -0
- package/dist/src/modules/error/index.mjs +2 -0
- package/dist/src/modules/error/index.mjs.map +1 -0
- package/dist/src/modules/error/utils.js +33 -0
- package/dist/src/modules/error/utils.js.map +1 -0
- package/dist/src/modules/error/utils.mjs +28 -0
- package/dist/src/modules/error/utils.mjs.map +1 -0
- package/dist/src/modules/file-scanner/index.js +8 -0
- package/dist/src/modules/file-scanner/index.js.map +1 -0
- package/dist/src/modules/file-scanner/index.mjs +2 -0
- package/dist/src/modules/file-scanner/index.mjs.map +1 -0
- package/dist/src/modules/file-scanner/scanner.js +23 -0
- package/dist/src/modules/file-scanner/scanner.js.map +1 -0
- package/dist/src/modules/file-scanner/scanner.mjs +20 -0
- package/dist/src/modules/file-scanner/scanner.mjs.map +1 -0
- package/dist/src/modules/format/formats.js +107 -0
- package/dist/src/modules/format/formats.js.map +1 -0
- package/dist/src/modules/format/formats.mjs +94 -0
- package/dist/src/modules/format/formats.mjs.map +1 -0
- package/dist/src/modules/format/index.js +19 -0
- package/dist/src/modules/format/index.js.map +1 -0
- package/dist/src/modules/format/index.mjs +2 -0
- package/dist/src/modules/format/index.mjs.map +1 -0
- package/dist/src/modules/index.js +32 -0
- package/dist/src/modules/index.js.map +1 -0
- package/dist/src/modules/index.mjs +27 -0
- package/dist/src/modules/index.mjs.map +1 -0
- package/dist/src/modules/json/file.js +16 -0
- package/dist/src/modules/json/file.js.map +1 -0
- package/dist/src/modules/json/file.mjs +13 -0
- package/dist/src/modules/json/file.mjs.map +1 -0
- package/dist/src/modules/json/transform-api.js +38 -0
- package/dist/src/modules/json/transform-api.js.map +1 -0
- package/dist/src/modules/json/transform-api.mjs +35 -0
- package/dist/src/modules/json/transform-api.mjs.map +1 -0
- package/dist/src/modules/logger/index.js +8 -0
- package/dist/src/modules/logger/index.js.map +1 -0
- package/dist/src/modules/logger/index.mjs +2 -0
- package/dist/src/modules/logger/index.mjs.map +1 -0
- package/dist/src/modules/logger/logger.js +76 -0
- package/dist/src/modules/logger/logger.js.map +1 -0
- package/dist/src/modules/logger/logger.mjs +73 -0
- package/dist/src/modules/logger/logger.mjs.map +1 -0
- package/dist/src/modules/npm/constants.js +6 -0
- package/dist/src/modules/npm/constants.js.map +1 -0
- package/dist/src/modules/npm/constants.mjs +4 -0
- package/dist/src/modules/npm/constants.mjs.map +1 -0
- package/dist/src/modules/npm/package.js +55 -0
- package/dist/src/modules/npm/package.js.map +1 -0
- package/dist/src/modules/npm/package.mjs +52 -0
- package/dist/src/modules/npm/package.mjs.map +1 -0
- package/dist/src/modules/project/constants.js +45 -0
- package/dist/src/modules/project/constants.js.map +1 -0
- package/dist/src/modules/project/constants.mjs +35 -0
- package/dist/src/modules/project/constants.mjs.map +1 -0
- package/dist/src/modules/project/index.js +15 -0
- package/dist/src/modules/project/index.js.map +1 -0
- package/dist/src/modules/project/index.mjs +5 -0
- package/dist/src/modules/project/index.mjs.map +1 -0
- package/dist/src/modules/project/project.js +208 -0
- package/dist/src/modules/project/project.js.map +1 -0
- package/dist/src/modules/project/project.mjs +203 -0
- package/dist/src/modules/project/project.mjs.map +1 -0
- package/dist/src/modules/project/utils.js +26 -0
- package/dist/src/modules/project/utils.js.map +1 -0
- package/dist/src/modules/project/utils.mjs +21 -0
- package/dist/src/modules/project/utils.mjs.map +1 -0
- package/dist/src/modules/report/index.js +9 -0
- package/dist/src/modules/report/index.js.map +1 -0
- package/dist/src/modules/report/index.mjs +2 -0
- package/dist/src/modules/report/index.mjs.map +1 -0
- package/dist/src/modules/report/report.js +13 -0
- package/dist/src/modules/report/report.js.map +1 -0
- package/dist/src/modules/report/report.mjs +10 -0
- package/dist/src/modules/report/report.mjs.map +1 -0
- package/dist/src/modules/requirement/index.js +8 -0
- package/dist/src/modules/requirement/index.js.map +1 -0
- package/dist/src/modules/requirement/index.mjs +2 -0
- package/dist/src/modules/requirement/index.mjs.map +1 -0
- package/dist/src/modules/requirement/requirement.js +55 -0
- package/dist/src/modules/requirement/requirement.js.map +1 -0
- package/dist/src/modules/requirement/requirement.mjs +52 -0
- package/dist/src/modules/requirement/requirement.mjs.map +1 -0
- package/dist/src/modules/runner/code/code.js +21 -0
- package/dist/src/modules/runner/code/code.js.map +1 -0
- package/dist/src/modules/runner/code/code.mjs +18 -0
- package/dist/src/modules/runner/code/code.mjs.map +1 -0
- package/dist/src/modules/runner/code/index.js +8 -0
- package/dist/src/modules/runner/code/index.js.map +1 -0
- package/dist/src/modules/runner/code/index.mjs +2 -0
- package/dist/src/modules/runner/code/index.mjs.map +1 -0
- package/dist/src/modules/runner/index.js +10 -0
- package/dist/src/modules/runner/index.js.map +1 -0
- package/dist/src/modules/runner/index.mjs +5 -0
- package/dist/src/modules/runner/index.mjs.map +1 -0
- package/dist/src/modules/runner/json/index.js +8 -0
- package/dist/src/modules/runner/json/index.js.map +1 -0
- package/dist/src/modules/runner/json/index.mjs +2 -0
- package/dist/src/modules/runner/json/index.mjs.map +1 -0
- package/dist/src/modules/runner/json/json.js +21 -0
- package/dist/src/modules/runner/json/json.js.map +1 -0
- package/dist/src/modules/runner/json/json.mjs +18 -0
- package/dist/src/modules/runner/json/json.mjs.map +1 -0
- package/dist/src/modules/runner/json/transform.js +85 -0
- package/dist/src/modules/runner/json/transform.js.map +1 -0
- package/dist/src/modules/runner/json/transform.mjs +83 -0
- package/dist/src/modules/runner/json/transform.mjs.map +1 -0
- package/dist/src/modules/runner/runner.js +22 -0
- package/dist/src/modules/runner/runner.js.map +1 -0
- package/dist/src/modules/runner/runner.mjs +20 -0
- package/dist/src/modules/runner/runner.mjs.map +1 -0
- package/dist/src/modules/timer/constants.js +6 -0
- package/dist/src/modules/timer/constants.js.map +1 -0
- package/dist/src/modules/timer/constants.mjs +4 -0
- package/dist/src/modules/timer/constants.mjs.map +1 -0
- package/dist/src/modules/timer/index.js +10 -0
- package/dist/src/modules/timer/index.js.map +1 -0
- package/dist/src/modules/timer/index.mjs +4 -0
- package/dist/src/modules/timer/index.mjs.map +1 -0
- package/dist/src/modules/timer/timer.js +33 -0
- package/dist/src/modules/timer/timer.js.map +1 -0
- package/dist/src/modules/timer/timer.mjs +30 -0
- package/dist/src/modules/timer/timer.mjs.map +1 -0
- package/dist/src/modules/upgrader/constants.js +6 -0
- package/dist/src/modules/upgrader/constants.js.map +1 -0
- package/dist/src/modules/upgrader/constants.mjs +4 -0
- package/dist/src/modules/upgrader/constants.mjs.map +1 -0
- package/dist/src/modules/upgrader/index.js +10 -0
- package/dist/src/modules/upgrader/index.js.map +1 -0
- package/dist/src/modules/upgrader/index.mjs +4 -0
- package/dist/src/modules/upgrader/index.mjs.map +1 -0
- package/dist/src/modules/upgrader/upgrader.js +266 -0
- package/dist/src/modules/upgrader/upgrader.js.map +1 -0
- package/dist/src/modules/upgrader/upgrader.mjs +263 -0
- package/dist/src/modules/upgrader/upgrader.mjs.map +1 -0
- package/dist/src/modules/version/index.js +20 -0
- package/dist/src/modules/version/index.js.map +1 -0
- package/dist/src/modules/version/index.mjs +5 -0
- package/dist/src/modules/version/index.mjs.map +1 -0
- package/dist/src/modules/version/range.js +81 -0
- package/dist/src/modules/version/range.js.map +1 -0
- package/dist/src/modules/version/range.mjs +75 -0
- package/dist/src/modules/version/range.mjs.map +1 -0
- package/dist/src/modules/version/semver.js +26 -0
- package/dist/src/modules/version/semver.js.map +1 -0
- package/dist/src/modules/version/semver.mjs +20 -0
- package/dist/src/modules/version/semver.mjs.map +1 -0
- package/dist/src/modules/version/types.js +12 -0
- package/dist/src/modules/version/types.js.map +1 -0
- package/dist/src/modules/version/types.mjs +12 -0
- package/dist/src/modules/version/types.mjs.map +1 -0
- package/dist/src/tasks/codemods/list-codemods.js +40 -0
- package/dist/src/tasks/codemods/list-codemods.js.map +1 -0
- package/dist/src/tasks/codemods/list-codemods.mjs +38 -0
- package/dist/src/tasks/codemods/list-codemods.mjs.map +1 -0
- package/dist/src/tasks/codemods/run-codemods.js +36 -0
- package/dist/src/tasks/codemods/run-codemods.js.map +1 -0
- package/dist/src/tasks/codemods/run-codemods.mjs +34 -0
- package/dist/src/tasks/codemods/run-codemods.mjs.map +1 -0
- package/dist/src/tasks/codemods/utils.js +54 -0
- package/dist/src/tasks/codemods/utils.js.map +1 -0
- package/dist/src/tasks/codemods/utils.mjs +50 -0
- package/dist/src/tasks/codemods/utils.mjs.map +1 -0
- package/dist/src/tasks/index.js +15 -0
- package/dist/src/tasks/index.js.map +1 -0
- package/dist/src/tasks/index.mjs +7 -0
- package/dist/src/tasks/index.mjs.map +1 -0
- package/dist/src/tasks/upgrade/prompts/latest.js +48 -0
- package/dist/src/tasks/upgrade/prompts/latest.js.map +1 -0
- package/dist/src/tasks/upgrade/prompts/latest.mjs +46 -0
- package/dist/src/tasks/upgrade/prompts/latest.mjs.map +1 -0
- package/dist/src/tasks/upgrade/requirements/common.js +40 -0
- package/dist/src/tasks/upgrade/requirements/common.js.map +1 -0
- package/dist/src/tasks/upgrade/requirements/common.mjs +35 -0
- package/dist/src/tasks/upgrade/requirements/common.mjs.map +1 -0
- package/dist/src/tasks/upgrade/requirements/major.js +29 -0
- package/dist/src/tasks/upgrade/requirements/major.js.map +1 -0
- package/dist/src/tasks/upgrade/requirements/major.mjs +26 -0
- package/dist/src/tasks/upgrade/requirements/major.mjs.map +1 -0
- package/dist/src/tasks/upgrade/upgrade.js +69 -0
- package/dist/src/tasks/upgrade/upgrade.js.map +1 -0
- package/dist/src/tasks/upgrade/upgrade.mjs +67 -0
- package/dist/src/tasks/upgrade/upgrade.mjs.map +1 -0
- package/package.json +4 -4
- package/dist/chunks/logger-DGi224NW.js +0 -1649
- package/dist/chunks/logger-DGi224NW.js.map +0 -1
- package/dist/chunks/logger-np_r7rTc.mjs +0 -1599
- package/dist/chunks/logger-np_r7rTc.mjs.map +0 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chalk = require('chalk');
|
|
4
|
+
|
|
5
|
+
class Logger {
|
|
6
|
+
get isNotSilent() {
|
|
7
|
+
return !this.isSilent;
|
|
8
|
+
}
|
|
9
|
+
get errors() {
|
|
10
|
+
return this.nbErrorsCalls;
|
|
11
|
+
}
|
|
12
|
+
get warnings() {
|
|
13
|
+
return this.nbWarningsCalls;
|
|
14
|
+
}
|
|
15
|
+
get stdout() {
|
|
16
|
+
return this.isSilent ? undefined : process.stdout;
|
|
17
|
+
}
|
|
18
|
+
get stderr() {
|
|
19
|
+
return this.isSilent ? undefined : process.stderr;
|
|
20
|
+
}
|
|
21
|
+
setDebug(debug) {
|
|
22
|
+
this.isDebug = debug;
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
25
|
+
setSilent(silent) {
|
|
26
|
+
this.isSilent = silent;
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
debug(...args) {
|
|
30
|
+
const isDebugEnabled = this.isNotSilent && this.isDebug;
|
|
31
|
+
if (isDebugEnabled) {
|
|
32
|
+
console.log(chalk.cyan(`[DEBUG]\t[${nowAsISO()}]`), ...args);
|
|
33
|
+
}
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
36
|
+
error(...args) {
|
|
37
|
+
this.nbErrorsCalls += 1;
|
|
38
|
+
if (this.isNotSilent) {
|
|
39
|
+
console.error(chalk.red(`[ERROR]\t[${nowAsISO()}]`), ...args);
|
|
40
|
+
}
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
info(...args) {
|
|
44
|
+
if (this.isNotSilent) {
|
|
45
|
+
console.info(chalk.blue(`[INFO]\t[${new Date().toISOString()}]`), ...args);
|
|
46
|
+
}
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
raw(...args) {
|
|
50
|
+
if (this.isNotSilent) {
|
|
51
|
+
console.log(...args);
|
|
52
|
+
}
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
warn(...args) {
|
|
56
|
+
this.nbWarningsCalls += 1;
|
|
57
|
+
if (this.isNotSilent) {
|
|
58
|
+
console.warn(chalk.yellow(`[WARN]\t[${new Date().toISOString()}]`), ...args);
|
|
59
|
+
}
|
|
60
|
+
return this;
|
|
61
|
+
}
|
|
62
|
+
constructor(options = {}){
|
|
63
|
+
// Set verbosity options
|
|
64
|
+
this.isDebug = options.debug ?? false;
|
|
65
|
+
this.isSilent = options.silent ?? false;
|
|
66
|
+
// Initialize counters
|
|
67
|
+
this.nbErrorsCalls = 0;
|
|
68
|
+
this.nbWarningsCalls = 0;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const nowAsISO = ()=>new Date().toISOString();
|
|
72
|
+
const loggerFactory = (options = {})=>new Logger(options);
|
|
73
|
+
|
|
74
|
+
exports.Logger = Logger;
|
|
75
|
+
exports.loggerFactory = loggerFactory;
|
|
76
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sources":["../../../../src/modules/logger/logger.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport type { Logger as LoggerInterface, LoggerOptions } from './types';\n\nexport class Logger implements LoggerInterface {\n isDebug: boolean;\n\n isSilent: boolean;\n\n private nbErrorsCalls: number;\n\n private nbWarningsCalls: number;\n\n constructor(options: LoggerOptions = {}) {\n // Set verbosity options\n this.isDebug = options.debug ?? false;\n this.isSilent = options.silent ?? false;\n\n // Initialize counters\n this.nbErrorsCalls = 0;\n this.nbWarningsCalls = 0;\n }\n\n private get isNotSilent(): boolean {\n return !this.isSilent;\n }\n\n get errors(): number {\n return this.nbErrorsCalls;\n }\n\n get warnings(): number {\n return this.nbWarningsCalls;\n }\n\n get stdout(): (NodeJS.WriteStream & { fd: 1 }) | undefined {\n return this.isSilent ? undefined : process.stdout;\n }\n\n get stderr(): (NodeJS.WriteStream & { fd: 2 }) | undefined {\n return this.isSilent ? undefined : process.stderr;\n }\n\n setDebug(debug: boolean): this {\n this.isDebug = debug;\n return this;\n }\n\n setSilent(silent: boolean): this {\n this.isSilent = silent;\n return this;\n }\n\n debug(...args: unknown[]): this {\n const isDebugEnabled = this.isNotSilent && this.isDebug;\n\n if (isDebugEnabled) {\n console.log(chalk.cyan(`[DEBUG]\\t[${nowAsISO()}]`), ...args);\n }\n\n return this;\n }\n\n error(...args: unknown[]): this {\n this.nbErrorsCalls += 1;\n\n if (this.isNotSilent) {\n console.error(chalk.red(`[ERROR]\\t[${nowAsISO()}]`), ...args);\n }\n\n return this;\n }\n\n info(...args: unknown[]): this {\n if (this.isNotSilent) {\n console.info(chalk.blue(`[INFO]\\t[${new Date().toISOString()}]`), ...args);\n }\n\n return this;\n }\n\n raw(...args: unknown[]): this {\n if (this.isNotSilent) {\n console.log(...args);\n }\n\n return this;\n }\n\n warn(...args: unknown[]): this {\n this.nbWarningsCalls += 1;\n\n if (this.isNotSilent) {\n console.warn(chalk.yellow(`[WARN]\\t[${new Date().toISOString()}]`), ...args);\n }\n\n return this;\n }\n}\n\nconst nowAsISO = () => new Date().toISOString();\n\nexport const loggerFactory = (options: LoggerOptions = {}) => new Logger(options);\n"],"names":["Logger","isNotSilent","isSilent","errors","nbErrorsCalls","warnings","nbWarningsCalls","stdout","undefined","process","stderr","setDebug","debug","isDebug","setSilent","silent","args","isDebugEnabled","console","log","chalk","cyan","nowAsISO","error","red","info","blue","Date","toISOString","raw","warn","yellow","constructor","options","loggerFactory"],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
|
|
3
|
+
class Logger {
|
|
4
|
+
get isNotSilent() {
|
|
5
|
+
return !this.isSilent;
|
|
6
|
+
}
|
|
7
|
+
get errors() {
|
|
8
|
+
return this.nbErrorsCalls;
|
|
9
|
+
}
|
|
10
|
+
get warnings() {
|
|
11
|
+
return this.nbWarningsCalls;
|
|
12
|
+
}
|
|
13
|
+
get stdout() {
|
|
14
|
+
return this.isSilent ? undefined : process.stdout;
|
|
15
|
+
}
|
|
16
|
+
get stderr() {
|
|
17
|
+
return this.isSilent ? undefined : process.stderr;
|
|
18
|
+
}
|
|
19
|
+
setDebug(debug) {
|
|
20
|
+
this.isDebug = debug;
|
|
21
|
+
return this;
|
|
22
|
+
}
|
|
23
|
+
setSilent(silent) {
|
|
24
|
+
this.isSilent = silent;
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
27
|
+
debug(...args) {
|
|
28
|
+
const isDebugEnabled = this.isNotSilent && this.isDebug;
|
|
29
|
+
if (isDebugEnabled) {
|
|
30
|
+
console.log(chalk.cyan(`[DEBUG]\t[${nowAsISO()}]`), ...args);
|
|
31
|
+
}
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
error(...args) {
|
|
35
|
+
this.nbErrorsCalls += 1;
|
|
36
|
+
if (this.isNotSilent) {
|
|
37
|
+
console.error(chalk.red(`[ERROR]\t[${nowAsISO()}]`), ...args);
|
|
38
|
+
}
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
info(...args) {
|
|
42
|
+
if (this.isNotSilent) {
|
|
43
|
+
console.info(chalk.blue(`[INFO]\t[${new Date().toISOString()}]`), ...args);
|
|
44
|
+
}
|
|
45
|
+
return this;
|
|
46
|
+
}
|
|
47
|
+
raw(...args) {
|
|
48
|
+
if (this.isNotSilent) {
|
|
49
|
+
console.log(...args);
|
|
50
|
+
}
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
warn(...args) {
|
|
54
|
+
this.nbWarningsCalls += 1;
|
|
55
|
+
if (this.isNotSilent) {
|
|
56
|
+
console.warn(chalk.yellow(`[WARN]\t[${new Date().toISOString()}]`), ...args);
|
|
57
|
+
}
|
|
58
|
+
return this;
|
|
59
|
+
}
|
|
60
|
+
constructor(options = {}){
|
|
61
|
+
// Set verbosity options
|
|
62
|
+
this.isDebug = options.debug ?? false;
|
|
63
|
+
this.isSilent = options.silent ?? false;
|
|
64
|
+
// Initialize counters
|
|
65
|
+
this.nbErrorsCalls = 0;
|
|
66
|
+
this.nbWarningsCalls = 0;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const nowAsISO = ()=>new Date().toISOString();
|
|
70
|
+
const loggerFactory = (options = {})=>new Logger(options);
|
|
71
|
+
|
|
72
|
+
export { Logger, loggerFactory };
|
|
73
|
+
//# sourceMappingURL=logger.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.mjs","sources":["../../../../src/modules/logger/logger.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport type { Logger as LoggerInterface, LoggerOptions } from './types';\n\nexport class Logger implements LoggerInterface {\n isDebug: boolean;\n\n isSilent: boolean;\n\n private nbErrorsCalls: number;\n\n private nbWarningsCalls: number;\n\n constructor(options: LoggerOptions = {}) {\n // Set verbosity options\n this.isDebug = options.debug ?? false;\n this.isSilent = options.silent ?? false;\n\n // Initialize counters\n this.nbErrorsCalls = 0;\n this.nbWarningsCalls = 0;\n }\n\n private get isNotSilent(): boolean {\n return !this.isSilent;\n }\n\n get errors(): number {\n return this.nbErrorsCalls;\n }\n\n get warnings(): number {\n return this.nbWarningsCalls;\n }\n\n get stdout(): (NodeJS.WriteStream & { fd: 1 }) | undefined {\n return this.isSilent ? undefined : process.stdout;\n }\n\n get stderr(): (NodeJS.WriteStream & { fd: 2 }) | undefined {\n return this.isSilent ? undefined : process.stderr;\n }\n\n setDebug(debug: boolean): this {\n this.isDebug = debug;\n return this;\n }\n\n setSilent(silent: boolean): this {\n this.isSilent = silent;\n return this;\n }\n\n debug(...args: unknown[]): this {\n const isDebugEnabled = this.isNotSilent && this.isDebug;\n\n if (isDebugEnabled) {\n console.log(chalk.cyan(`[DEBUG]\\t[${nowAsISO()}]`), ...args);\n }\n\n return this;\n }\n\n error(...args: unknown[]): this {\n this.nbErrorsCalls += 1;\n\n if (this.isNotSilent) {\n console.error(chalk.red(`[ERROR]\\t[${nowAsISO()}]`), ...args);\n }\n\n return this;\n }\n\n info(...args: unknown[]): this {\n if (this.isNotSilent) {\n console.info(chalk.blue(`[INFO]\\t[${new Date().toISOString()}]`), ...args);\n }\n\n return this;\n }\n\n raw(...args: unknown[]): this {\n if (this.isNotSilent) {\n console.log(...args);\n }\n\n return this;\n }\n\n warn(...args: unknown[]): this {\n this.nbWarningsCalls += 1;\n\n if (this.isNotSilent) {\n console.warn(chalk.yellow(`[WARN]\\t[${new Date().toISOString()}]`), ...args);\n }\n\n return this;\n }\n}\n\nconst nowAsISO = () => new Date().toISOString();\n\nexport const loggerFactory = (options: LoggerOptions = {}) => new Logger(options);\n"],"names":["Logger","isNotSilent","isSilent","errors","nbErrorsCalls","warnings","nbWarningsCalls","stdout","undefined","process","stderr","setDebug","debug","isDebug","setSilent","silent","args","isDebugEnabled","console","log","chalk","cyan","nowAsISO","error","red","info","blue","Date","toISOString","raw","warn","yellow","constructor","options","loggerFactory"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../src/modules/npm/constants.ts"],"sourcesContent":["export const NPM_REGISTRY_URL = 'https://registry.npmjs.org';\n"],"names":["NPM_REGISTRY_URL"],"mappings":";;AAAO,MAAMA,mBAAmB;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.mjs","sources":["../../../../src/modules/npm/constants.ts"],"sourcesContent":["export const NPM_REGISTRY_URL = 'https://registry.npmjs.org';\n"],"names":["NPM_REGISTRY_URL"],"mappings":"AAAO,MAAMA,mBAAmB;;;;"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var assert = require('node:assert');
|
|
4
|
+
var semver$1 = require('semver');
|
|
5
|
+
var constants = require('./constants.js');
|
|
6
|
+
var semver = require('../version/semver.js');
|
|
7
|
+
require('../version/types.js');
|
|
8
|
+
|
|
9
|
+
class Package {
|
|
10
|
+
get isLoaded() {
|
|
11
|
+
return this.npmPackage !== null;
|
|
12
|
+
}
|
|
13
|
+
assertPackageIsLoaded(npmPackage) {
|
|
14
|
+
assert(this.isLoaded, 'The package is not loaded yet');
|
|
15
|
+
}
|
|
16
|
+
getVersionsDict() {
|
|
17
|
+
this.assertPackageIsLoaded(this.npmPackage);
|
|
18
|
+
return this.npmPackage.versions;
|
|
19
|
+
}
|
|
20
|
+
getVersionsAsList() {
|
|
21
|
+
this.assertPackageIsLoaded(this.npmPackage);
|
|
22
|
+
return Object.values(this.npmPackage.versions);
|
|
23
|
+
}
|
|
24
|
+
findVersionsInRange(range) {
|
|
25
|
+
const versions = this.getVersionsAsList();
|
|
26
|
+
return versions// Only select versions matching the upgrade range
|
|
27
|
+
.filter((v)=>range.test(v.version))// Only select supported version format (x.x.x)
|
|
28
|
+
.filter((v)=>semver.isLiteralSemVer(v.version))// Sort in ascending order
|
|
29
|
+
.sort((v1, v2)=>semver$1.compare(v1.version, v2.version));
|
|
30
|
+
}
|
|
31
|
+
findVersion(version) {
|
|
32
|
+
const versions = this.getVersionsAsList();
|
|
33
|
+
return versions.find((npmVersion)=>semver$1.eq(npmVersion.version, version));
|
|
34
|
+
}
|
|
35
|
+
async refresh() {
|
|
36
|
+
const response = await fetch(this.packageURL);
|
|
37
|
+
// TODO: Use a validation library to make sure the response structure is correct
|
|
38
|
+
assert(response.ok, `Request failed for ${this.packageURL}`);
|
|
39
|
+
this.npmPackage = await response.json();
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
versionExists(version) {
|
|
43
|
+
return this.findVersion(version) !== undefined;
|
|
44
|
+
}
|
|
45
|
+
constructor(name){
|
|
46
|
+
this.name = name;
|
|
47
|
+
this.packageURL = `${constants.NPM_REGISTRY_URL}/${name}`;
|
|
48
|
+
this.npmPackage = null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const npmPackageFactory = (name)=>new Package(name);
|
|
52
|
+
|
|
53
|
+
exports.Package = Package;
|
|
54
|
+
exports.npmPackageFactory = npmPackageFactory;
|
|
55
|
+
//# sourceMappingURL=package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package.js","sources":["../../../../src/modules/npm/package.ts"],"sourcesContent":["import assert from 'node:assert';\nimport semver from 'semver';\n\nimport * as constants from './constants';\nimport { isLiteralSemVer } from '../version';\n\nimport type { Package as PackageInterface, NPMPackage, NPMPackageVersion } from './types';\nimport type { Version } from '../version';\n\nexport class Package implements PackageInterface {\n name: string;\n\n packageURL: string;\n\n private npmPackage: NPMPackage | null;\n\n constructor(name: string) {\n this.name = name;\n this.packageURL = `${constants.NPM_REGISTRY_URL}/${name}`;\n this.npmPackage = null;\n }\n\n get isLoaded() {\n return this.npmPackage !== null;\n }\n\n private assertPackageIsLoaded(npmPackage: NPMPackage | null): asserts npmPackage is NPMPackage {\n assert(this.isLoaded, 'The package is not loaded yet');\n }\n\n getVersionsDict() {\n this.assertPackageIsLoaded(this.npmPackage);\n\n return this.npmPackage.versions;\n }\n\n getVersionsAsList() {\n this.assertPackageIsLoaded(this.npmPackage);\n\n return Object.values(this.npmPackage.versions);\n }\n\n findVersionsInRange(range: Version.Range) {\n const versions = this.getVersionsAsList();\n\n return (\n versions\n // Only select versions matching the upgrade range\n .filter((v) => range.test(v.version))\n // Only select supported version format (x.x.x)\n .filter((v) => isLiteralSemVer(v.version))\n // Sort in ascending order\n .sort((v1, v2) => semver.compare(v1.version, v2.version))\n );\n }\n\n findVersion(version: Version.SemVer): NPMPackageVersion | undefined {\n const versions = this.getVersionsAsList();\n\n return versions.find((npmVersion) => semver.eq(npmVersion.version, version));\n }\n\n async refresh() {\n const response = await fetch(this.packageURL);\n\n // TODO: Use a validation library to make sure the response structure is correct\n assert(response.ok, `Request failed for ${this.packageURL}`);\n\n this.npmPackage = await response.json();\n\n return this;\n }\n\n versionExists(version: Version.SemVer) {\n return this.findVersion(version) !== undefined;\n }\n}\n\nexport const npmPackageFactory = (name: string) => new Package(name);\n"],"names":["Package","isLoaded","npmPackage","assertPackageIsLoaded","assert","getVersionsDict","versions","getVersionsAsList","Object","values","findVersionsInRange","range","filter","v","test","version","isLiteralSemVer","sort","v1","v2","semver","compare","findVersion","find","npmVersion","eq","refresh","response","fetch","packageURL","ok","json","versionExists","undefined","constructor","name","constants","npmPackageFactory"],"mappings":";;;;;;;;AASO,MAAMA,OAAAA,CAAAA;AAaX,IAAA,IAAIC,QAAW,GAAA;QACb,OAAO,IAAI,CAACC,UAAU,KAAK,IAAA;AAC7B;AAEQC,IAAAA,qBAAAA,CAAsBD,UAA6B,EAAoC;QAC7FE,MAAO,CAAA,IAAI,CAACH,QAAQ,EAAE,+BAAA,CAAA;AACxB;IAEAI,eAAkB,GAAA;AAChB,QAAA,IAAI,CAACF,qBAAqB,CAAC,IAAI,CAACD,UAAU,CAAA;AAE1C,QAAA,OAAO,IAAI,CAACA,UAAU,CAACI,QAAQ;AACjC;IAEAC,iBAAoB,GAAA;AAClB,QAAA,IAAI,CAACJ,qBAAqB,CAAC,IAAI,CAACD,UAAU,CAAA;AAE1C,QAAA,OAAOM,OAAOC,MAAM,CAAC,IAAI,CAACP,UAAU,CAACI,QAAQ,CAAA;AAC/C;AAEAI,IAAAA,mBAAAA,CAAoBC,KAAoB,EAAE;QACxC,MAAML,QAAAA,GAAW,IAAI,CAACC,iBAAiB,EAAA;AAEvC,QAAA,OACED,QACE;SACCM,MAAM,CAAC,CAACC,CAAMF,GAAAA,KAAAA,CAAMG,IAAI,CAACD,CAAAA,CAAEE,OAAO,CAAA,CACnC;AACCH,SAAAA,MAAM,CAAC,CAACC,CAAAA,GAAMG,uBAAgBH,CAAEE,CAAAA,OAAO,EACxC;SACCE,IAAI,CAAC,CAACC,EAAAA,EAAIC,EAAOC,GAAAA,QAAAA,CAAOC,OAAO,CAACH,EAAGH,CAAAA,OAAO,EAAEI,EAAAA,CAAGJ,OAAO,CAAA,CAAA;AAE7D;AAEAO,IAAAA,WAAAA,CAAYP,OAAuB,EAAiC;QAClE,MAAMT,QAAAA,GAAW,IAAI,CAACC,iBAAiB,EAAA;QAEvC,OAAOD,QAAAA,CAASiB,IAAI,CAAC,CAACC,UAAAA,GAAeJ,SAAOK,EAAE,CAACD,UAAWT,CAAAA,OAAO,EAAEA,OAAAA,CAAAA,CAAAA;AACrE;AAEA,IAAA,MAAMW,OAAU,GAAA;AACd,QAAA,MAAMC,QAAW,GAAA,MAAMC,KAAM,CAAA,IAAI,CAACC,UAAU,CAAA;;QAG5CzB,MAAOuB,CAAAA,QAAAA,CAASG,EAAE,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAACD,UAAU,CAAC,CAAC,CAAA;AAE3D,QAAA,IAAI,CAAC3B,UAAU,GAAG,MAAMyB,SAASI,IAAI,EAAA;AAErC,QAAA,OAAO,IAAI;AACb;AAEAC,IAAAA,aAAAA,CAAcjB,OAAuB,EAAE;AACrC,QAAA,OAAO,IAAI,CAACO,WAAW,CAACP,OAAakB,CAAAA,KAAAA,SAAAA;AACvC;AA3DAC,IAAAA,WAAAA,CAAYC,IAAY,CAAE;QACxB,IAAI,CAACA,IAAI,GAAGA,IAAAA;QACZ,IAAI,CAACN,UAAU,GAAG,CAAC,EAAEO,0BAA0B,CAAC,CAAC,EAAED,IAAAA,CAAK,CAAC;QACzD,IAAI,CAACjC,UAAU,GAAG,IAAA;AACpB;AAwDF;MAEamC,iBAAoB,GAAA,CAACF,IAAiB,GAAA,IAAInC,QAAQmC,IAAM;;;;;"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import semver from 'semver';
|
|
3
|
+
import { NPM_REGISTRY_URL } from './constants.mjs';
|
|
4
|
+
import { isLiteralSemVer } from '../version/semver.mjs';
|
|
5
|
+
import '../version/types.mjs';
|
|
6
|
+
|
|
7
|
+
class Package {
|
|
8
|
+
get isLoaded() {
|
|
9
|
+
return this.npmPackage !== null;
|
|
10
|
+
}
|
|
11
|
+
assertPackageIsLoaded(npmPackage) {
|
|
12
|
+
assert(this.isLoaded, 'The package is not loaded yet');
|
|
13
|
+
}
|
|
14
|
+
getVersionsDict() {
|
|
15
|
+
this.assertPackageIsLoaded(this.npmPackage);
|
|
16
|
+
return this.npmPackage.versions;
|
|
17
|
+
}
|
|
18
|
+
getVersionsAsList() {
|
|
19
|
+
this.assertPackageIsLoaded(this.npmPackage);
|
|
20
|
+
return Object.values(this.npmPackage.versions);
|
|
21
|
+
}
|
|
22
|
+
findVersionsInRange(range) {
|
|
23
|
+
const versions = this.getVersionsAsList();
|
|
24
|
+
return versions// Only select versions matching the upgrade range
|
|
25
|
+
.filter((v)=>range.test(v.version))// Only select supported version format (x.x.x)
|
|
26
|
+
.filter((v)=>isLiteralSemVer(v.version))// Sort in ascending order
|
|
27
|
+
.sort((v1, v2)=>semver.compare(v1.version, v2.version));
|
|
28
|
+
}
|
|
29
|
+
findVersion(version) {
|
|
30
|
+
const versions = this.getVersionsAsList();
|
|
31
|
+
return versions.find((npmVersion)=>semver.eq(npmVersion.version, version));
|
|
32
|
+
}
|
|
33
|
+
async refresh() {
|
|
34
|
+
const response = await fetch(this.packageURL);
|
|
35
|
+
// TODO: Use a validation library to make sure the response structure is correct
|
|
36
|
+
assert(response.ok, `Request failed for ${this.packageURL}`);
|
|
37
|
+
this.npmPackage = await response.json();
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
versionExists(version) {
|
|
41
|
+
return this.findVersion(version) !== undefined;
|
|
42
|
+
}
|
|
43
|
+
constructor(name){
|
|
44
|
+
this.name = name;
|
|
45
|
+
this.packageURL = `${NPM_REGISTRY_URL}/${name}`;
|
|
46
|
+
this.npmPackage = null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const npmPackageFactory = (name)=>new Package(name);
|
|
50
|
+
|
|
51
|
+
export { Package, npmPackageFactory };
|
|
52
|
+
//# sourceMappingURL=package.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package.mjs","sources":["../../../../src/modules/npm/package.ts"],"sourcesContent":["import assert from 'node:assert';\nimport semver from 'semver';\n\nimport * as constants from './constants';\nimport { isLiteralSemVer } from '../version';\n\nimport type { Package as PackageInterface, NPMPackage, NPMPackageVersion } from './types';\nimport type { Version } from '../version';\n\nexport class Package implements PackageInterface {\n name: string;\n\n packageURL: string;\n\n private npmPackage: NPMPackage | null;\n\n constructor(name: string) {\n this.name = name;\n this.packageURL = `${constants.NPM_REGISTRY_URL}/${name}`;\n this.npmPackage = null;\n }\n\n get isLoaded() {\n return this.npmPackage !== null;\n }\n\n private assertPackageIsLoaded(npmPackage: NPMPackage | null): asserts npmPackage is NPMPackage {\n assert(this.isLoaded, 'The package is not loaded yet');\n }\n\n getVersionsDict() {\n this.assertPackageIsLoaded(this.npmPackage);\n\n return this.npmPackage.versions;\n }\n\n getVersionsAsList() {\n this.assertPackageIsLoaded(this.npmPackage);\n\n return Object.values(this.npmPackage.versions);\n }\n\n findVersionsInRange(range: Version.Range) {\n const versions = this.getVersionsAsList();\n\n return (\n versions\n // Only select versions matching the upgrade range\n .filter((v) => range.test(v.version))\n // Only select supported version format (x.x.x)\n .filter((v) => isLiteralSemVer(v.version))\n // Sort in ascending order\n .sort((v1, v2) => semver.compare(v1.version, v2.version))\n );\n }\n\n findVersion(version: Version.SemVer): NPMPackageVersion | undefined {\n const versions = this.getVersionsAsList();\n\n return versions.find((npmVersion) => semver.eq(npmVersion.version, version));\n }\n\n async refresh() {\n const response = await fetch(this.packageURL);\n\n // TODO: Use a validation library to make sure the response structure is correct\n assert(response.ok, `Request failed for ${this.packageURL}`);\n\n this.npmPackage = await response.json();\n\n return this;\n }\n\n versionExists(version: Version.SemVer) {\n return this.findVersion(version) !== undefined;\n }\n}\n\nexport const npmPackageFactory = (name: string) => new Package(name);\n"],"names":["Package","isLoaded","npmPackage","assertPackageIsLoaded","assert","getVersionsDict","versions","getVersionsAsList","Object","values","findVersionsInRange","range","filter","v","test","version","isLiteralSemVer","sort","v1","v2","semver","compare","findVersion","find","npmVersion","eq","refresh","response","fetch","packageURL","ok","json","versionExists","undefined","constructor","name","constants","npmPackageFactory"],"mappings":";;;;;;AASO,MAAMA,OAAAA,CAAAA;AAaX,IAAA,IAAIC,QAAW,GAAA;QACb,OAAO,IAAI,CAACC,UAAU,KAAK,IAAA;AAC7B;AAEQC,IAAAA,qBAAAA,CAAsBD,UAA6B,EAAoC;QAC7FE,MAAO,CAAA,IAAI,CAACH,QAAQ,EAAE,+BAAA,CAAA;AACxB;IAEAI,eAAkB,GAAA;AAChB,QAAA,IAAI,CAACF,qBAAqB,CAAC,IAAI,CAACD,UAAU,CAAA;AAE1C,QAAA,OAAO,IAAI,CAACA,UAAU,CAACI,QAAQ;AACjC;IAEAC,iBAAoB,GAAA;AAClB,QAAA,IAAI,CAACJ,qBAAqB,CAAC,IAAI,CAACD,UAAU,CAAA;AAE1C,QAAA,OAAOM,OAAOC,MAAM,CAAC,IAAI,CAACP,UAAU,CAACI,QAAQ,CAAA;AAC/C;AAEAI,IAAAA,mBAAAA,CAAoBC,KAAoB,EAAE;QACxC,MAAML,QAAAA,GAAW,IAAI,CAACC,iBAAiB,EAAA;AAEvC,QAAA,OACED,QACE;SACCM,MAAM,CAAC,CAACC,CAAMF,GAAAA,KAAAA,CAAMG,IAAI,CAACD,CAAAA,CAAEE,OAAO,CAAA,CACnC;AACCH,SAAAA,MAAM,CAAC,CAACC,CAAAA,GAAMG,gBAAgBH,CAAEE,CAAAA,OAAO,EACxC;SACCE,IAAI,CAAC,CAACC,EAAAA,EAAIC,EAAOC,GAAAA,MAAAA,CAAOC,OAAO,CAACH,EAAGH,CAAAA,OAAO,EAAEI,EAAAA,CAAGJ,OAAO,CAAA,CAAA;AAE7D;AAEAO,IAAAA,WAAAA,CAAYP,OAAuB,EAAiC;QAClE,MAAMT,QAAAA,GAAW,IAAI,CAACC,iBAAiB,EAAA;QAEvC,OAAOD,QAAAA,CAASiB,IAAI,CAAC,CAACC,UAAAA,GAAeJ,OAAOK,EAAE,CAACD,UAAWT,CAAAA,OAAO,EAAEA,OAAAA,CAAAA,CAAAA;AACrE;AAEA,IAAA,MAAMW,OAAU,GAAA;AACd,QAAA,MAAMC,QAAW,GAAA,MAAMC,KAAM,CAAA,IAAI,CAACC,UAAU,CAAA;;QAG5CzB,MAAOuB,CAAAA,QAAAA,CAASG,EAAE,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAACD,UAAU,CAAC,CAAC,CAAA;AAE3D,QAAA,IAAI,CAAC3B,UAAU,GAAG,MAAMyB,SAASI,IAAI,EAAA;AAErC,QAAA,OAAO,IAAI;AACb;AAEAC,IAAAA,aAAAA,CAAcjB,OAAuB,EAAE;AACrC,QAAA,OAAO,IAAI,CAACO,WAAW,CAACP,OAAakB,CAAAA,KAAAA,SAAAA;AACvC;AA3DAC,IAAAA,WAAAA,CAAYC,IAAY,CAAE;QACxB,IAAI,CAACA,IAAI,GAAGA,IAAAA;QACZ,IAAI,CAACN,UAAU,GAAG,CAAC,EAAEO,gBAA0B,CAAC,CAAC,EAAED,IAAAA,CAAK,CAAC;QACzD,IAAI,CAACjC,UAAU,GAAG,IAAA;AACpB;AAwDF;MAEamC,iBAAoB,GAAA,CAACF,IAAiB,GAAA,IAAInC,QAAQmC,IAAM;;;;"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const PROJECT_PACKAGE_JSON = 'package.json';
|
|
4
|
+
const PROJECT_APP_ALLOWED_ROOT_PATHS = [
|
|
5
|
+
'src',
|
|
6
|
+
'config',
|
|
7
|
+
'public'
|
|
8
|
+
];
|
|
9
|
+
const PROJECT_PLUGIN_ALLOWED_ROOT_PATHS = [
|
|
10
|
+
'admin',
|
|
11
|
+
'server'
|
|
12
|
+
];
|
|
13
|
+
const PROJECT_PLUGIN_ROOT_FILES = [
|
|
14
|
+
'strapi-admin.js',
|
|
15
|
+
'strapi-server.js'
|
|
16
|
+
];
|
|
17
|
+
const PROJECT_CODE_EXTENSIONS = [
|
|
18
|
+
// Source files
|
|
19
|
+
'js',
|
|
20
|
+
'mjs',
|
|
21
|
+
'ts',
|
|
22
|
+
// React files
|
|
23
|
+
'jsx',
|
|
24
|
+
'tsx'
|
|
25
|
+
];
|
|
26
|
+
const PROJECT_JSON_EXTENSIONS = [
|
|
27
|
+
'json'
|
|
28
|
+
];
|
|
29
|
+
const PROJECT_ALLOWED_EXTENSIONS = [
|
|
30
|
+
...PROJECT_CODE_EXTENSIONS,
|
|
31
|
+
...PROJECT_JSON_EXTENSIONS
|
|
32
|
+
];
|
|
33
|
+
const SCOPED_STRAPI_PACKAGE_PREFIX = '@strapi/';
|
|
34
|
+
const STRAPI_DEPENDENCY_NAME = `${SCOPED_STRAPI_PACKAGE_PREFIX}strapi`;
|
|
35
|
+
|
|
36
|
+
exports.PROJECT_ALLOWED_EXTENSIONS = PROJECT_ALLOWED_EXTENSIONS;
|
|
37
|
+
exports.PROJECT_APP_ALLOWED_ROOT_PATHS = PROJECT_APP_ALLOWED_ROOT_PATHS;
|
|
38
|
+
exports.PROJECT_CODE_EXTENSIONS = PROJECT_CODE_EXTENSIONS;
|
|
39
|
+
exports.PROJECT_JSON_EXTENSIONS = PROJECT_JSON_EXTENSIONS;
|
|
40
|
+
exports.PROJECT_PACKAGE_JSON = PROJECT_PACKAGE_JSON;
|
|
41
|
+
exports.PROJECT_PLUGIN_ALLOWED_ROOT_PATHS = PROJECT_PLUGIN_ALLOWED_ROOT_PATHS;
|
|
42
|
+
exports.PROJECT_PLUGIN_ROOT_FILES = PROJECT_PLUGIN_ROOT_FILES;
|
|
43
|
+
exports.SCOPED_STRAPI_PACKAGE_PREFIX = SCOPED_STRAPI_PACKAGE_PREFIX;
|
|
44
|
+
exports.STRAPI_DEPENDENCY_NAME = STRAPI_DEPENDENCY_NAME;
|
|
45
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../src/modules/project/constants.ts"],"sourcesContent":["export const PROJECT_PACKAGE_JSON = 'package.json';\n\nexport const PROJECT_APP_ALLOWED_ROOT_PATHS = ['src', 'config', 'public'];\n\nexport const PROJECT_PLUGIN_ALLOWED_ROOT_PATHS = ['admin', 'server'];\n\nexport const PROJECT_PLUGIN_ROOT_FILES = ['strapi-admin.js', 'strapi-server.js'];\n\nexport const PROJECT_CODE_EXTENSIONS = [\n // Source files\n 'js',\n 'mjs',\n 'ts',\n // React files\n 'jsx',\n 'tsx',\n];\n\nexport const PROJECT_JSON_EXTENSIONS = ['json'];\n\nexport const PROJECT_ALLOWED_EXTENSIONS = [...PROJECT_CODE_EXTENSIONS, ...PROJECT_JSON_EXTENSIONS];\n\nexport const SCOPED_STRAPI_PACKAGE_PREFIX = '@strapi/';\n\nexport const STRAPI_DEPENDENCY_NAME = `${SCOPED_STRAPI_PACKAGE_PREFIX}strapi`;\n"],"names":["PROJECT_PACKAGE_JSON","PROJECT_APP_ALLOWED_ROOT_PATHS","PROJECT_PLUGIN_ALLOWED_ROOT_PATHS","PROJECT_PLUGIN_ROOT_FILES","PROJECT_CODE_EXTENSIONS","PROJECT_JSON_EXTENSIONS","PROJECT_ALLOWED_EXTENSIONS","SCOPED_STRAPI_PACKAGE_PREFIX","STRAPI_DEPENDENCY_NAME"],"mappings":";;AAAO,MAAMA,uBAAuB;MAEvBC,8BAAiC,GAAA;AAAC,IAAA,KAAA;AAAO,IAAA,QAAA;AAAU,IAAA;;MAEnDC,iCAAoC,GAAA;AAAC,IAAA,OAAA;AAAS,IAAA;;MAE9CC,yBAA4B,GAAA;AAAC,IAAA,iBAAA;AAAmB,IAAA;;MAEhDC,uBAA0B,GAAA;;AAErC,IAAA,IAAA;AACA,IAAA,KAAA;AACA,IAAA,IAAA;;AAEA,IAAA,KAAA;AACA,IAAA;;MAGWC,uBAA0B,GAAA;AAAC,IAAA;;MAE3BC,0BAA6B,GAAA;AAAIF,IAAAA,GAAAA,uBAAAA;AAA4BC,IAAAA,GAAAA;;AAEnE,MAAME,+BAA+B;MAE/BC,sBAAyB,GAAA,CAAC,EAAED,4BAA6B,CAAA,MAAM;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const PROJECT_PACKAGE_JSON = 'package.json';
|
|
2
|
+
const PROJECT_APP_ALLOWED_ROOT_PATHS = [
|
|
3
|
+
'src',
|
|
4
|
+
'config',
|
|
5
|
+
'public'
|
|
6
|
+
];
|
|
7
|
+
const PROJECT_PLUGIN_ALLOWED_ROOT_PATHS = [
|
|
8
|
+
'admin',
|
|
9
|
+
'server'
|
|
10
|
+
];
|
|
11
|
+
const PROJECT_PLUGIN_ROOT_FILES = [
|
|
12
|
+
'strapi-admin.js',
|
|
13
|
+
'strapi-server.js'
|
|
14
|
+
];
|
|
15
|
+
const PROJECT_CODE_EXTENSIONS = [
|
|
16
|
+
// Source files
|
|
17
|
+
'js',
|
|
18
|
+
'mjs',
|
|
19
|
+
'ts',
|
|
20
|
+
// React files
|
|
21
|
+
'jsx',
|
|
22
|
+
'tsx'
|
|
23
|
+
];
|
|
24
|
+
const PROJECT_JSON_EXTENSIONS = [
|
|
25
|
+
'json'
|
|
26
|
+
];
|
|
27
|
+
const PROJECT_ALLOWED_EXTENSIONS = [
|
|
28
|
+
...PROJECT_CODE_EXTENSIONS,
|
|
29
|
+
...PROJECT_JSON_EXTENSIONS
|
|
30
|
+
];
|
|
31
|
+
const SCOPED_STRAPI_PACKAGE_PREFIX = '@strapi/';
|
|
32
|
+
const STRAPI_DEPENDENCY_NAME = `${SCOPED_STRAPI_PACKAGE_PREFIX}strapi`;
|
|
33
|
+
|
|
34
|
+
export { PROJECT_ALLOWED_EXTENSIONS, PROJECT_APP_ALLOWED_ROOT_PATHS, PROJECT_CODE_EXTENSIONS, PROJECT_JSON_EXTENSIONS, PROJECT_PACKAGE_JSON, PROJECT_PLUGIN_ALLOWED_ROOT_PATHS, PROJECT_PLUGIN_ROOT_FILES, SCOPED_STRAPI_PACKAGE_PREFIX, STRAPI_DEPENDENCY_NAME };
|
|
35
|
+
//# sourceMappingURL=constants.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.mjs","sources":["../../../../src/modules/project/constants.ts"],"sourcesContent":["export const PROJECT_PACKAGE_JSON = 'package.json';\n\nexport const PROJECT_APP_ALLOWED_ROOT_PATHS = ['src', 'config', 'public'];\n\nexport const PROJECT_PLUGIN_ALLOWED_ROOT_PATHS = ['admin', 'server'];\n\nexport const PROJECT_PLUGIN_ROOT_FILES = ['strapi-admin.js', 'strapi-server.js'];\n\nexport const PROJECT_CODE_EXTENSIONS = [\n // Source files\n 'js',\n 'mjs',\n 'ts',\n // React files\n 'jsx',\n 'tsx',\n];\n\nexport const PROJECT_JSON_EXTENSIONS = ['json'];\n\nexport const PROJECT_ALLOWED_EXTENSIONS = [...PROJECT_CODE_EXTENSIONS, ...PROJECT_JSON_EXTENSIONS];\n\nexport const SCOPED_STRAPI_PACKAGE_PREFIX = '@strapi/';\n\nexport const STRAPI_DEPENDENCY_NAME = `${SCOPED_STRAPI_PACKAGE_PREFIX}strapi`;\n"],"names":["PROJECT_PACKAGE_JSON","PROJECT_APP_ALLOWED_ROOT_PATHS","PROJECT_PLUGIN_ALLOWED_ROOT_PATHS","PROJECT_PLUGIN_ROOT_FILES","PROJECT_CODE_EXTENSIONS","PROJECT_JSON_EXTENSIONS","PROJECT_ALLOWED_EXTENSIONS","SCOPED_STRAPI_PACKAGE_PREFIX","STRAPI_DEPENDENCY_NAME"],"mappings":"AAAO,MAAMA,uBAAuB;MAEvBC,8BAAiC,GAAA;AAAC,IAAA,KAAA;AAAO,IAAA,QAAA;AAAU,IAAA;;MAEnDC,iCAAoC,GAAA;AAAC,IAAA,OAAA;AAAS,IAAA;;MAE9CC,yBAA4B,GAAA;AAAC,IAAA,iBAAA;AAAmB,IAAA;;MAEhDC,uBAA0B,GAAA;;AAErC,IAAA,IAAA;AACA,IAAA,KAAA;AACA,IAAA,IAAA;;AAEA,IAAA,KAAA;AACA,IAAA;;MAGWC,uBAA0B,GAAA;AAAC,IAAA;;MAE3BC,0BAA6B,GAAA;AAAIF,IAAAA,GAAAA,uBAAAA;AAA4BC,IAAAA,GAAAA;;AAEnE,MAAME,+BAA+B;MAE/BC,sBAAyB,GAAA,CAAC,EAAED,4BAA6B,CAAA,MAAM;;;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var project = require('./project.js');
|
|
4
|
+
var constants = require('./constants.js');
|
|
5
|
+
var utils = require('./utils.js');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
exports.projectFactory = project.projectFactory;
|
|
10
|
+
exports.constants = constants;
|
|
11
|
+
exports.assertAppProject = utils.assertAppProject;
|
|
12
|
+
exports.assertPluginProject = utils.assertPluginProject;
|
|
13
|
+
exports.isApplicationProject = utils.isApplicationProject;
|
|
14
|
+
exports.isPluginProject = utils.isPluginProject;
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var path = require('node:path');
|
|
4
|
+
var assert = require('node:assert');
|
|
5
|
+
var fse = require('fs-extra');
|
|
6
|
+
var semver$1 = require('semver');
|
|
7
|
+
var semver = require('../version/semver.js');
|
|
8
|
+
require('../version/types.js');
|
|
9
|
+
var scanner = require('../file-scanner/scanner.js');
|
|
10
|
+
var code = require('../runner/code/code.js');
|
|
11
|
+
var json = require('../runner/json/json.js');
|
|
12
|
+
var constants = require('./constants.js');
|
|
13
|
+
|
|
14
|
+
class Project {
|
|
15
|
+
getFilesByExtensions(extensions) {
|
|
16
|
+
return this.files.filter((filePath)=>{
|
|
17
|
+
const fileExtension = path.extname(filePath);
|
|
18
|
+
return extensions.includes(fileExtension);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
refresh() {
|
|
22
|
+
this.refreshPackageJSON();
|
|
23
|
+
this.refreshProjectFiles();
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
26
|
+
async runCodemods(codemods, options) {
|
|
27
|
+
const runners = this.createProjectCodemodsRunners(options.dry);
|
|
28
|
+
const reports = [];
|
|
29
|
+
for (const codemod of codemods){
|
|
30
|
+
for (const runner of runners){
|
|
31
|
+
if (runner.valid(codemod)) {
|
|
32
|
+
const report = await runner.run(codemod);
|
|
33
|
+
reports.push({
|
|
34
|
+
codemod,
|
|
35
|
+
report
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return reports;
|
|
41
|
+
}
|
|
42
|
+
createProjectCodemodsRunners(dry = false) {
|
|
43
|
+
const jsonExtensions = constants.PROJECT_JSON_EXTENSIONS.map((ext)=>`.${ext}`);
|
|
44
|
+
const codeExtensions = constants.PROJECT_CODE_EXTENSIONS.map((ext)=>`.${ext}`);
|
|
45
|
+
const jsonFiles = this.getFilesByExtensions(jsonExtensions);
|
|
46
|
+
const codeFiles = this.getFilesByExtensions(codeExtensions);
|
|
47
|
+
const codeRunner = code.codeRunnerFactory(codeFiles, {
|
|
48
|
+
dry,
|
|
49
|
+
parser: 'ts',
|
|
50
|
+
runInBand: true,
|
|
51
|
+
babel: true,
|
|
52
|
+
extensions: constants.PROJECT_CODE_EXTENSIONS.join(','),
|
|
53
|
+
// Don't output any log coming from the runner
|
|
54
|
+
print: false,
|
|
55
|
+
silent: true,
|
|
56
|
+
verbose: 0
|
|
57
|
+
});
|
|
58
|
+
const jsonRunner = json.jsonRunnerFactory(jsonFiles, {
|
|
59
|
+
dry,
|
|
60
|
+
cwd: this.cwd
|
|
61
|
+
});
|
|
62
|
+
return [
|
|
63
|
+
codeRunner,
|
|
64
|
+
jsonRunner
|
|
65
|
+
];
|
|
66
|
+
}
|
|
67
|
+
refreshPackageJSON() {
|
|
68
|
+
const packageJSONPath = path.join(this.cwd, constants.PROJECT_PACKAGE_JSON);
|
|
69
|
+
try {
|
|
70
|
+
fse.accessSync(packageJSONPath);
|
|
71
|
+
} catch {
|
|
72
|
+
throw new Error(`Could not find a ${constants.PROJECT_PACKAGE_JSON} file in ${this.cwd}`);
|
|
73
|
+
}
|
|
74
|
+
const packageJSONBuffer = fse.readFileSync(packageJSONPath);
|
|
75
|
+
this.packageJSONPath = packageJSONPath;
|
|
76
|
+
this.packageJSON = JSON.parse(packageJSONBuffer.toString());
|
|
77
|
+
}
|
|
78
|
+
refreshProjectFiles() {
|
|
79
|
+
const scanner$1 = scanner.fileScannerFactory(this.cwd);
|
|
80
|
+
this.files = scanner$1.scan(this.paths);
|
|
81
|
+
}
|
|
82
|
+
constructor(cwd, config){
|
|
83
|
+
if (!fse.pathExistsSync(cwd)) {
|
|
84
|
+
throw new Error(`ENOENT: no such file or directory, access '${cwd}'`);
|
|
85
|
+
}
|
|
86
|
+
this.cwd = cwd;
|
|
87
|
+
this.paths = config.paths;
|
|
88
|
+
this.refresh();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
class AppProject extends Project {
|
|
92
|
+
/**
|
|
93
|
+
* Returns an array of allowed file paths for a Strapi application
|
|
94
|
+
*
|
|
95
|
+
* The resulting paths include app default files and the root package.json file.
|
|
96
|
+
*/ static get paths() {
|
|
97
|
+
const allowedRootPaths = formatGlobCollectionPattern(constants.PROJECT_APP_ALLOWED_ROOT_PATHS);
|
|
98
|
+
const allowedExtensions = formatGlobCollectionPattern(constants.PROJECT_ALLOWED_EXTENSIONS);
|
|
99
|
+
return [
|
|
100
|
+
// App default files
|
|
101
|
+
`./${allowedRootPaths}/**/*.${allowedExtensions}`,
|
|
102
|
+
`!./**/node_modules/**/*`,
|
|
103
|
+
`!./**/dist/**/*`,
|
|
104
|
+
// Root package.json file
|
|
105
|
+
constants.PROJECT_PACKAGE_JSON
|
|
106
|
+
];
|
|
107
|
+
}
|
|
108
|
+
refresh() {
|
|
109
|
+
super.refresh();
|
|
110
|
+
this.refreshStrapiVersion();
|
|
111
|
+
return this;
|
|
112
|
+
}
|
|
113
|
+
refreshStrapiVersion() {
|
|
114
|
+
this.strapiVersion = // First try to get the strapi version from the package.json dependencies
|
|
115
|
+
this.findStrapiVersionFromProjectPackageJSON() ?? // If the version found is not a valid SemVer, get the Strapi version from the installed package
|
|
116
|
+
this.findLocallyInstalledStrapiVersion();
|
|
117
|
+
}
|
|
118
|
+
findStrapiVersionFromProjectPackageJSON() {
|
|
119
|
+
const projectName = this.packageJSON.name;
|
|
120
|
+
const version = this.packageJSON.dependencies?.[constants.STRAPI_DEPENDENCY_NAME];
|
|
121
|
+
if (version === undefined) {
|
|
122
|
+
throw new Error(`No version of ${constants.STRAPI_DEPENDENCY_NAME} was found in ${projectName}. Are you in a valid Strapi project?`);
|
|
123
|
+
}
|
|
124
|
+
const isValidSemVer = semver.isLiteralSemVer(version) && semver$1.valid(version) === version;
|
|
125
|
+
// We return undefined only if a strapi/strapi version is found, but it's not semver compliant
|
|
126
|
+
return isValidSemVer ? semver.semVerFactory(version) : undefined;
|
|
127
|
+
}
|
|
128
|
+
findLocallyInstalledStrapiVersion() {
|
|
129
|
+
const packageSearchText = `${constants.STRAPI_DEPENDENCY_NAME}/package.json`;
|
|
130
|
+
let strapiPackageJSONPath;
|
|
131
|
+
let strapiPackageJSON;
|
|
132
|
+
try {
|
|
133
|
+
strapiPackageJSONPath = require.resolve(packageSearchText, {
|
|
134
|
+
paths: [
|
|
135
|
+
this.cwd
|
|
136
|
+
]
|
|
137
|
+
});
|
|
138
|
+
strapiPackageJSON = require(strapiPackageJSONPath);
|
|
139
|
+
assert(typeof strapiPackageJSON === 'object');
|
|
140
|
+
} catch {
|
|
141
|
+
throw new Error(`Cannot resolve module "${constants.STRAPI_DEPENDENCY_NAME}" from paths [${this.cwd}]`);
|
|
142
|
+
}
|
|
143
|
+
const strapiVersion = strapiPackageJSON.version;
|
|
144
|
+
if (!semver.isValidSemVer(strapiVersion)) {
|
|
145
|
+
throw new Error(`Invalid ${constants.STRAPI_DEPENDENCY_NAME} version found in ${strapiPackageJSONPath} (${strapiVersion})`);
|
|
146
|
+
}
|
|
147
|
+
return semver.semVerFactory(strapiVersion);
|
|
148
|
+
}
|
|
149
|
+
constructor(cwd){
|
|
150
|
+
super(cwd, {
|
|
151
|
+
paths: AppProject.paths
|
|
152
|
+
});
|
|
153
|
+
this.type = 'application';
|
|
154
|
+
this.refreshStrapiVersion();
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
const formatGlobCollectionPattern = (collection)=>{
|
|
158
|
+
assert(collection.length > 0, 'Invalid pattern provided, the given collection needs at least 1 element');
|
|
159
|
+
return collection.length === 1 ? collection[0] : `{${collection}}`;
|
|
160
|
+
};
|
|
161
|
+
class PluginProject extends Project {
|
|
162
|
+
/**
|
|
163
|
+
* Returns an array of allowed file paths for a Strapi plugin
|
|
164
|
+
*
|
|
165
|
+
* The resulting paths include plugin default files, the root package.json file, and plugin-specific files.
|
|
166
|
+
*/ static get paths() {
|
|
167
|
+
const allowedRootPaths = formatGlobCollectionPattern(constants.PROJECT_PLUGIN_ALLOWED_ROOT_PATHS);
|
|
168
|
+
const allowedExtensions = formatGlobCollectionPattern(constants.PROJECT_ALLOWED_EXTENSIONS);
|
|
169
|
+
return [
|
|
170
|
+
// Plugin default files
|
|
171
|
+
`./${allowedRootPaths}/**/*.${allowedExtensions}`,
|
|
172
|
+
`!./**/node_modules/**/*`,
|
|
173
|
+
`!./**/dist/**/*`,
|
|
174
|
+
// Root package.json file
|
|
175
|
+
constants.PROJECT_PACKAGE_JSON,
|
|
176
|
+
// Plugin root files
|
|
177
|
+
...constants.PROJECT_PLUGIN_ROOT_FILES
|
|
178
|
+
];
|
|
179
|
+
}
|
|
180
|
+
constructor(cwd){
|
|
181
|
+
super(cwd, {
|
|
182
|
+
paths: PluginProject.paths
|
|
183
|
+
});
|
|
184
|
+
this.type = 'plugin';
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
const isPlugin = (cwd)=>{
|
|
188
|
+
const packageJSONPath = path.join(cwd, constants.PROJECT_PACKAGE_JSON);
|
|
189
|
+
try {
|
|
190
|
+
fse.accessSync(packageJSONPath);
|
|
191
|
+
} catch {
|
|
192
|
+
throw new Error(`Could not find a ${constants.PROJECT_PACKAGE_JSON} file in ${cwd}`);
|
|
193
|
+
}
|
|
194
|
+
const packageJSONBuffer = fse.readFileSync(packageJSONPath);
|
|
195
|
+
const packageJSON = JSON.parse(packageJSONBuffer.toString());
|
|
196
|
+
return packageJSON?.strapi?.kind === 'plugin';
|
|
197
|
+
};
|
|
198
|
+
// TODO: make this async so we can use async file methods
|
|
199
|
+
const projectFactory = (cwd)=>{
|
|
200
|
+
fse.accessSync(cwd);
|
|
201
|
+
return isPlugin(cwd) ? new PluginProject(cwd) : new AppProject(cwd);
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
exports.AppProject = AppProject;
|
|
205
|
+
exports.PluginProject = PluginProject;
|
|
206
|
+
exports.Project = Project;
|
|
207
|
+
exports.projectFactory = projectFactory;
|
|
208
|
+
//# sourceMappingURL=project.js.map
|