@strapi/strapi 4.16.1 → 4.17.0
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/admin.d.ts +2 -2
- package/dist/admin.d.ts.map +1 -1
- package/dist/admin.js.map +1 -1
- package/dist/admin.mjs.map +1 -1
- package/dist/commands/actions/plugin/build-command/action.d.ts +2 -1
- package/dist/commands/actions/plugin/build-command/action.d.ts.map +1 -1
- package/dist/commands/actions/plugin/build-command/action.js +3 -6
- package/dist/commands/actions/plugin/build-command/action.js.map +1 -1
- package/dist/commands/actions/plugin/build-command/command.js +2 -2
- package/dist/commands/actions/plugin/build-command/command.js.map +1 -1
- package/dist/commands/actions/plugin/init/action.d.ts +7 -0
- package/dist/commands/actions/plugin/init/action.d.ts.map +1 -0
- package/dist/commands/actions/plugin/init/action.js +417 -0
- package/dist/commands/actions/plugin/init/action.js.map +1 -0
- package/dist/commands/actions/plugin/init/command.d.ts +7 -0
- package/dist/commands/actions/plugin/init/command.d.ts.map +1 -0
- package/dist/commands/actions/plugin/init/command.js +8 -0
- package/dist/commands/actions/plugin/init/command.js.map +1 -0
- package/dist/commands/actions/plugin/init/files/admin.d.ts +5 -0
- package/dist/commands/actions/plugin/init/files/admin.d.ts.map +1 -0
- package/dist/commands/actions/plugin/init/files/admin.js +283 -0
- package/dist/commands/actions/plugin/init/files/admin.js.map +1 -0
- package/dist/commands/actions/plugin/init/files/editorConfig.d.ts +4 -0
- package/dist/commands/actions/plugin/init/files/editorConfig.d.ts.map +1 -0
- package/dist/commands/actions/plugin/init/files/editorConfig.js +26 -0
- package/dist/commands/actions/plugin/init/files/editorConfig.js.map +1 -0
- package/dist/commands/actions/plugin/init/files/eslint.d.ts +4 -0
- package/dist/commands/actions/plugin/init/files/eslint.d.ts.map +1 -0
- package/dist/commands/actions/plugin/init/files/eslint.js +11 -0
- package/dist/commands/actions/plugin/init/files/eslint.js.map +1 -0
- package/dist/commands/actions/plugin/init/files/gitIgnore.d.ts +4 -0
- package/dist/commands/actions/plugin/init/files/gitIgnore.d.ts.map +1 -0
- package/dist/commands/actions/plugin/init/files/gitIgnore.js +34 -0
- package/dist/commands/actions/plugin/init/files/gitIgnore.js.map +1 -0
- package/dist/commands/actions/plugin/init/files/prettier.d.ts +5 -0
- package/dist/commands/actions/plugin/init/files/prettier.d.ts.map +1 -0
- package/dist/commands/actions/plugin/init/files/prettier.js +25 -0
- package/dist/commands/actions/plugin/init/files/prettier.js.map +1 -0
- package/dist/commands/actions/plugin/init/files/server.d.ts +5 -0
- package/dist/commands/actions/plugin/init/files/server.d.ts.map +1 -0
- package/dist/commands/actions/plugin/init/files/server.js +360 -0
- package/dist/commands/actions/plugin/init/files/server.js.map +1 -0
- package/dist/commands/actions/plugin/init/files/typescript.d.ts +9 -0
- package/dist/commands/actions/plugin/init/files/typescript.d.ts.map +1 -0
- package/dist/commands/actions/plugin/init/files/typescript.js +66 -0
- package/dist/commands/actions/plugin/init/files/typescript.js.map +1 -0
- package/dist/commands/actions/plugin/verify/action.d.ts +7 -0
- package/dist/commands/actions/plugin/verify/action.d.ts.map +1 -0
- package/dist/commands/actions/plugin/verify/action.js +34 -0
- package/dist/commands/actions/plugin/verify/action.js.map +1 -0
- package/dist/commands/actions/plugin/verify/command.d.ts +7 -0
- package/dist/commands/actions/plugin/verify/command.d.ts.map +1 -0
- package/dist/commands/actions/plugin/verify/command.js +8 -0
- package/dist/commands/actions/plugin/verify/command.js.map +1 -0
- package/dist/commands/actions/plugin/watch/action.d.ts +2 -2
- package/dist/commands/actions/plugin/watch/action.d.ts.map +1 -1
- package/dist/commands/actions/plugin/watch/action.js +4 -7
- package/dist/commands/actions/plugin/watch/action.js.map +1 -1
- package/dist/commands/actions/plugin/watch/command.d.ts +1 -1
- package/dist/commands/actions/plugin/watch/command.js +2 -2
- package/dist/commands/actions/plugin/watch/command.js.map +1 -1
- package/dist/commands/index.d.ts +2 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +6 -2
- package/dist/commands/index.js.map +1 -1
- package/dist/services/entity-validator/index.js.map +1 -1
- package/dist/services/entity-validator/index.mjs.map +1 -1
- package/package.json +23 -21
package/dist/admin.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { RenderAdminArgs } from '@strapi/admin/strapi-admin';
|
|
1
|
+
import { RenderAdminArgs, Store } from '@strapi/admin/strapi-admin';
|
|
2
2
|
declare const render: (mountNode: HTMLElement | null, { plugins, ...restArgs }: RenderAdminArgs) => Promise<void>;
|
|
3
3
|
export { render as renderAdmin };
|
|
4
|
-
export type { RenderAdminArgs };
|
|
4
|
+
export type { RenderAdminArgs, Store };
|
|
5
5
|
//# sourceMappingURL=admin.d.ts.map
|
package/dist/admin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../src/admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAe,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../src/admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAe,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAQjF,QAAA,MAAM,MAAM,cAAe,WAAW,GAAG,IAAI,4BAA4B,eAAe,kBAYvF,CAAC;AAEF,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,CAAC;AACjC,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC"}
|
package/dist/admin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.js","sources":["../src/admin.ts"],"sourcesContent":["import { RenderAdminArgs, renderAdmin } from '@strapi/admin/strapi-admin';\
|
|
1
|
+
{"version":3,"file":"admin.js","sources":["../src/admin.ts"],"sourcesContent":["import { RenderAdminArgs, renderAdmin, Store } from '@strapi/admin/strapi-admin';\nimport contentTypeBuilder from '@strapi/plugin-content-type-builder/strapi-admin';\nimport email from '@strapi/plugin-email/strapi-admin';\n// @ts-expect-error – No types, yet.\nimport upload from '@strapi/plugin-upload/strapi-admin';\n// @ts-expect-error – No types, yet.\nimport contentReleases from '@strapi/content-releases/strapi-admin';\n\nconst render = (mountNode: HTMLElement | null, { plugins, ...restArgs }: RenderAdminArgs) => {\n return renderAdmin(mountNode, {\n ...restArgs,\n plugins: {\n 'content-type-builder': contentTypeBuilder,\n // @ts-expect-error – TODO: fix this\n email,\n upload,\n contentReleases,\n ...plugins,\n },\n });\n};\n\nexport { render as renderAdmin };\nexport type { RenderAdminArgs, Store };\n"],"names":["renderAdmin","contentTypeBuilder","email","upload","contentReleases"],"mappings":";;;;;;;;;;;;AAQA,MAAM,SAAS,CAAC,WAA+B,EAAE,SAAS,GAAG,eAAgC;AAC3F,SAAOA,YAAAA,YAAY,WAAW;AAAA,IAC5B,GAAG;AAAA,IACH,SAAS;AAAA,MACP,wBAAwBC,4BAAA;AAAA;AAAA,MAAA,OAExBC,eAAA;AAAA,MAAA,QACAC,gBAAA;AAAA,MAAA,iBACAC,yBAAA;AAAA,MACA,GAAG;AAAA,IACL;AAAA,EAAA,CACD;AACH;;"}
|
package/dist/admin.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.mjs","sources":["../src/admin.ts"],"sourcesContent":["import { RenderAdminArgs, renderAdmin } from '@strapi/admin/strapi-admin';\
|
|
1
|
+
{"version":3,"file":"admin.mjs","sources":["../src/admin.ts"],"sourcesContent":["import { RenderAdminArgs, renderAdmin, Store } from '@strapi/admin/strapi-admin';\nimport contentTypeBuilder from '@strapi/plugin-content-type-builder/strapi-admin';\nimport email from '@strapi/plugin-email/strapi-admin';\n// @ts-expect-error – No types, yet.\nimport upload from '@strapi/plugin-upload/strapi-admin';\n// @ts-expect-error – No types, yet.\nimport contentReleases from '@strapi/content-releases/strapi-admin';\n\nconst render = (mountNode: HTMLElement | null, { plugins, ...restArgs }: RenderAdminArgs) => {\n return renderAdmin(mountNode, {\n ...restArgs,\n plugins: {\n 'content-type-builder': contentTypeBuilder,\n // @ts-expect-error – TODO: fix this\n email,\n upload,\n contentReleases,\n ...plugins,\n },\n });\n};\n\nexport { render as renderAdmin };\nexport type { RenderAdminArgs, Store };\n"],"names":[],"mappings":";;;;;AAQA,MAAM,SAAS,CAAC,WAA+B,EAAE,SAAS,GAAG,eAAgC;AAC3F,SAAO,YAAY,WAAW;AAAA,IAC5B,GAAG;AAAA,IACH,SAAS;AAAA,MACP,wBAAwB;AAAA;AAAA,MAExB;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL;AAAA,EAAA,CACD;AACH;"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { BuildCLIOptions } from '@strapi/pack-up';
|
|
2
|
+
import { CLIContext } from '../../../types';
|
|
2
3
|
interface ActionOptions extends BuildCLIOptions {
|
|
3
4
|
force?: boolean;
|
|
4
5
|
}
|
|
5
|
-
declare const _default: ({ force, ...opts }: ActionOptions) => Promise<void>;
|
|
6
|
+
declare const _default: ({ force, ...opts }: ActionOptions, _cmd: unknown, { logger, cwd }: CLIContext) => Promise<void>;
|
|
6
7
|
export default _default;
|
|
7
8
|
//# sourceMappingURL=action.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../../../src/commands/actions/plugin/build-command/action.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAuB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../../../src/commands/actions/plugin/build-command/action.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAuB,MAAM,iBAAiB,CAAC;AAGvE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,UAAU,aAAc,SAAQ,eAAe;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;6CAGqB,aAAa,QAC3B,OAAO,mBACI,UAAU;AAH7B,wBAgGE"}
|
|
@@ -3,18 +3,15 @@ const boxen = require("boxen");
|
|
|
3
3
|
const chalk = require("chalk");
|
|
4
4
|
const packUp = require("@strapi/pack-up");
|
|
5
5
|
const helpers = require("../../../utils/helpers.js");
|
|
6
|
-
const logger = require("../../../utils/logger.js");
|
|
7
6
|
const pkg = require("../../../utils/pkg.js");
|
|
8
7
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
9
8
|
const boxen__default = /* @__PURE__ */ _interopDefault(boxen);
|
|
10
9
|
const chalk__default = /* @__PURE__ */ _interopDefault(chalk);
|
|
11
|
-
const action = async ({ force, ...opts }) => {
|
|
12
|
-
const logger$1 = logger.createLogger({ debug: opts.debug, silent: opts.silent, timestamp: false });
|
|
10
|
+
const action = async ({ force, ...opts }, _cmd, { logger, cwd }) => {
|
|
13
11
|
try {
|
|
14
12
|
process.env.NODE_ENV = "production";
|
|
15
13
|
await helpers.notifyExperimentalCommand("plugin:build", { force });
|
|
16
|
-
const
|
|
17
|
-
const pkg$1 = await pkg.loadPkg({ cwd, logger: logger$1 });
|
|
14
|
+
const pkg$1 = await pkg.loadPkg({ cwd, logger });
|
|
18
15
|
const pkgJson = await pkg.validatePkg({ pkg: pkg$1 });
|
|
19
16
|
if (!pkgJson.exports["./strapi-admin"] && !pkgJson.exports["./strapi-server"]) {
|
|
20
17
|
throw new Error(
|
|
@@ -66,7 +63,7 @@ const action = async ({ force, ...opts }) => {
|
|
|
66
63
|
...opts
|
|
67
64
|
});
|
|
68
65
|
} catch (err) {
|
|
69
|
-
logger
|
|
66
|
+
logger.error(
|
|
70
67
|
"There seems to be an unexpected error, try again with --debug for more information \n"
|
|
71
68
|
);
|
|
72
69
|
if (err instanceof Error && err.stack) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sources":["../../../../../src/commands/actions/plugin/build-command/action.ts"],"sourcesContent":["import boxen from 'boxen';\nimport chalk from 'chalk';\nimport { BuildCLIOptions, ConfigBundle, build } from '@strapi/pack-up';\nimport { notifyExperimentalCommand } from '../../../utils/helpers';\nimport {
|
|
1
|
+
{"version":3,"file":"action.js","sources":["../../../../../src/commands/actions/plugin/build-command/action.ts"],"sourcesContent":["import boxen from 'boxen';\nimport chalk from 'chalk';\nimport { BuildCLIOptions, ConfigBundle, build } from '@strapi/pack-up';\nimport { notifyExperimentalCommand } from '../../../utils/helpers';\nimport { Export, loadPkg, validatePkg } from '../../../utils/pkg';\nimport { CLIContext } from '../../../types';\n\ninterface ActionOptions extends BuildCLIOptions {\n force?: boolean;\n}\n\nexport default async (\n { force, ...opts }: ActionOptions,\n _cmd: unknown,\n { logger, cwd }: CLIContext\n) => {\n try {\n /**\n * ALWAYS set production for using plugin build CLI.\n */\n process.env.NODE_ENV = 'production';\n /**\n * Notify users this is an experimental command and get them to approve first\n * this can be opted out by setting the argument --force\n */\n await notifyExperimentalCommand('plugin:build', { force });\n\n const pkg = await loadPkg({ cwd, logger });\n const pkgJson = await validatePkg({ pkg });\n\n if (!pkgJson.exports['./strapi-admin'] && !pkgJson.exports['./strapi-server']) {\n throw new Error(\n 'You need to have either a strapi-admin or strapi-server export in your package.json'\n );\n }\n\n const bundles: ConfigBundle[] = [];\n\n if (pkgJson.exports['./strapi-admin']) {\n const exp = pkgJson.exports['./strapi-admin'] as Export;\n\n const bundle: ConfigBundle = {\n source: exp.source,\n import: exp.import,\n require: exp.require,\n runtime: 'web',\n };\n\n if (exp.types) {\n bundle.types = exp.types;\n // TODO: should this be sliced from the source path...?\n bundle.tsconfig = './admin/tsconfig.build.json';\n }\n\n bundles.push(bundle);\n }\n\n if (pkgJson.exports['./strapi-server']) {\n const exp = pkgJson.exports['./strapi-server'] as Export;\n\n const bundle: ConfigBundle = {\n source: exp.source,\n import: exp.import,\n require: exp.require,\n runtime: 'node',\n };\n\n if (exp.types) {\n bundle.types = exp.types;\n // TODO: should this be sliced from the source path...?\n bundle.tsconfig = './server/tsconfig.build.json';\n }\n\n bundles.push(bundle);\n }\n\n await build({\n cwd,\n configFile: false,\n config: {\n bundles,\n dist: './dist',\n /**\n * ignore the exports map of a plugin, because we're streamlining the\n * process and ensuring the server package and admin package are built\n * with the correct runtime and their individual tsconfigs\n */\n exports: {},\n },\n ...opts,\n });\n } catch (err) {\n logger.error(\n 'There seems to be an unexpected error, try again with --debug for more information \\n'\n );\n if (err instanceof Error && err.stack) {\n console.log(\n chalk.red(\n boxen(err.stack, {\n padding: 1,\n align: 'left',\n })\n )\n );\n }\n process.exit(1);\n }\n};\n"],"names":["notifyExperimentalCommand","pkg","loadPkg","validatePkg","build","chalk","boxen"],"mappings":";;;;;;;;;AAWA,MAAA,SAAe,OACb,EAAE,OAAO,GAAG,KAAA,GACZ,MACA,EAAE,QAAQ,UACP;AACC,MAAA;AAIF,YAAQ,IAAI,WAAW;AAKvB,UAAMA,kCAA0B,gBAAgB,EAAE,MAAO,CAAA;AAEzD,UAAMC,QAAM,MAAMC,IAAA,QAAQ,EAAE,KAAK,OAAQ,CAAA;AACzC,UAAM,UAAU,MAAMC,IAAAA,YAAY,EAAEF,KAAAA,MAAK,CAAA;AAErC,QAAA,CAAC,QAAQ,QAAQ,gBAAgB,KAAK,CAAC,QAAQ,QAAQ,iBAAiB,GAAG;AAC7E,YAAM,IAAI;AAAA,QACR;AAAA,MAAA;AAAA,IAEJ;AAEA,UAAM,UAA0B,CAAA;AAE5B,QAAA,QAAQ,QAAQ,gBAAgB,GAAG;AAC/B,YAAA,MAAM,QAAQ,QAAQ,gBAAgB;AAE5C,YAAM,SAAuB;AAAA,QAC3B,QAAQ,IAAI;AAAA,QACZ,QAAQ,IAAI;AAAA,QACZ,SAAS,IAAI;AAAA,QACb,SAAS;AAAA,MAAA;AAGX,UAAI,IAAI,OAAO;AACb,eAAO,QAAQ,IAAI;AAEnB,eAAO,WAAW;AAAA,MACpB;AAEA,cAAQ,KAAK,MAAM;AAAA,IACrB;AAEI,QAAA,QAAQ,QAAQ,iBAAiB,GAAG;AAChC,YAAA,MAAM,QAAQ,QAAQ,iBAAiB;AAE7C,YAAM,SAAuB;AAAA,QAC3B,QAAQ,IAAI;AAAA,QACZ,QAAQ,IAAI;AAAA,QACZ,SAAS,IAAI;AAAA,QACb,SAAS;AAAA,MAAA;AAGX,UAAI,IAAI,OAAO;AACb,eAAO,QAAQ,IAAI;AAEnB,eAAO,WAAW;AAAA,MACpB;AAEA,cAAQ,KAAK,MAAM;AAAA,IACrB;AAEA,UAAMG,aAAM;AAAA,MACV;AAAA,MACA,YAAY;AAAA,MACZ,QAAQ;AAAA,QACN;AAAA,QACA,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAMN,SAAS,CAAC;AAAA,MACZ;AAAA,MACA,GAAG;AAAA,IAAA,CACJ;AAAA,WACM,KAAK;AACL,WAAA;AAAA,MACL;AAAA,IAAA;AAEE,QAAA,eAAe,SAAS,IAAI,OAAO;AAC7B,cAAA;AAAA,QACNC,eAAAA,QAAM;AAAA,UACJC,eAAA,QAAM,IAAI,OAAO;AAAA,YACf,SAAS;AAAA,YACT,OAAO;AAAA,UAAA,CACR;AAAA,QACH;AAAA,MAAA;AAAA,IAEJ;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;;"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
const commander = require("../../../utils/commander.js");
|
|
3
3
|
const helpers = require("../../../utils/helpers.js");
|
|
4
4
|
const action = require("./action.js");
|
|
5
|
-
const command = ({ command: command2 }) => {
|
|
6
|
-
command2.command("plugin:build").description("Bundle your strapi plugin for publishing.").addOption(commander.forceOption).option("-d, --debug", "Enable debugging mode with verbose logs", false).option("--silent", "Don't log anything", false).option("--sourcemap", "produce sourcemaps", false).option("--minify", "minify the output", false).action(helpers.runAction("plugin:build", action));
|
|
5
|
+
const command = ({ command: command2, ctx }) => {
|
|
6
|
+
command2.command("plugin:build").description("Bundle your strapi plugin for publishing.").addOption(commander.forceOption).option("-d, --debug", "Enable debugging mode with verbose logs", false).option("--silent", "Don't log anything", false).option("--sourcemap", "produce sourcemaps", false).option("--minify", "minify the output", false).action((...args) => helpers.runAction("plugin:build", action)(...args, ctx));
|
|
7
7
|
};
|
|
8
8
|
module.exports = command;
|
|
9
9
|
//# sourceMappingURL=command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sources":["../../../../../src/commands/actions/plugin/build-command/command.ts"],"sourcesContent":["import { forceOption } from '../../../utils/commander';\nimport type { StrapiCommand } from '../../../types';\nimport { runAction } from '../../../utils/helpers';\nimport action from './action';\n\n/**\n * `$ strapi plugin:build`\n */\nconst command: StrapiCommand = ({ command }) => {\n command\n .command('plugin:build')\n .description('Bundle your strapi plugin for publishing.')\n .addOption(forceOption)\n .option('-d, --debug', 'Enable debugging mode with verbose logs', false)\n .option('--silent', \"Don't log anything\", false)\n .option('--sourcemap', 'produce sourcemaps', false)\n .option('--minify', 'minify the output', false)\n .action(runAction('plugin:build', action));\n};\n\nexport default command;\n"],"names":["command","forceOption","runAction"],"mappings":";;;;AAQA,MAAM,UAAyB,CAAC,EAAE,SAAAA,
|
|
1
|
+
{"version":3,"file":"command.js","sources":["../../../../../src/commands/actions/plugin/build-command/command.ts"],"sourcesContent":["import { forceOption } from '../../../utils/commander';\nimport type { StrapiCommand } from '../../../types';\nimport { runAction } from '../../../utils/helpers';\nimport action from './action';\n\n/**\n * `$ strapi plugin:build`\n */\nconst command: StrapiCommand = ({ command, ctx }) => {\n command\n .command('plugin:build')\n .description('Bundle your strapi plugin for publishing.')\n .addOption(forceOption)\n .option('-d, --debug', 'Enable debugging mode with verbose logs', false)\n .option('--silent', \"Don't log anything\", false)\n .option('--sourcemap', 'produce sourcemaps', false)\n .option('--minify', 'minify the output', false)\n .action((...args) => runAction('plugin:build', action)(...args, ctx));\n};\n\nexport default command;\n"],"names":["command","forceOption","runAction"],"mappings":";;;;AAQA,MAAM,UAAyB,CAAC,EAAE,SAAAA,UAAS,UAAU;AACnDA,WACG,QAAQ,cAAc,EACtB,YAAY,2CAA2C,EACvD,UAAUC,qBAAW,EACrB,OAAO,eAAe,2CAA2C,KAAK,EACtE,OAAO,YAAY,sBAAsB,KAAK,EAC9C,OAAO,eAAe,sBAAsB,KAAK,EACjD,OAAO,YAAY,qBAAqB,KAAK,EAC7C,OAAO,IAAI,SAASC,kBAAU,gBAAgB,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC;AACxE;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { InitOptions } from '@strapi/pack-up';
|
|
2
|
+
import { CLIContext } from '../../../types';
|
|
3
|
+
interface ActionOptions extends Pick<InitOptions, 'silent' | 'debug'> {
|
|
4
|
+
}
|
|
5
|
+
declare const _default: (packagePath: string, { silent, debug }: ActionOptions, _cmd: unknown, { logger, cwd }: CLIContext) => Promise<void>;
|
|
6
|
+
export default _default;
|
|
7
|
+
//# sourceMappingURL=action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../../../src/commands/actions/plugin/init/action.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,WAAW,EAMZ,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,UAAU,aAAc,SAAQ,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC;CAAG;sCAGzD,MAAM,qBACA,aAAa,QAC1B,OAAO,mBACI,UAAU;AAJ7B,wBAwCE"}
|
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const path = require("node:path");
|
|
3
|
+
const boxen = require("boxen");
|
|
4
|
+
const chalk = require("chalk");
|
|
5
|
+
const getLatestVersion = require("get-latest-version");
|
|
6
|
+
const gitUrlParse = require("git-url-parse");
|
|
7
|
+
const packUp = require("@strapi/pack-up");
|
|
8
|
+
const outdent = require("outdent");
|
|
9
|
+
const helpers = require("../../../utils/helpers.js");
|
|
10
|
+
const gitIgnore = require("./files/gitIgnore.js");
|
|
11
|
+
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
12
|
+
const path__default = /* @__PURE__ */ _interopDefault(path);
|
|
13
|
+
const boxen__default = /* @__PURE__ */ _interopDefault(boxen);
|
|
14
|
+
const chalk__default = /* @__PURE__ */ _interopDefault(chalk);
|
|
15
|
+
const getLatestVersion__default = /* @__PURE__ */ _interopDefault(getLatestVersion);
|
|
16
|
+
const gitUrlParse__default = /* @__PURE__ */ _interopDefault(gitUrlParse);
|
|
17
|
+
const action = async (packagePath, { silent, debug }, _cmd, { logger, cwd }) => {
|
|
18
|
+
try {
|
|
19
|
+
await helpers.notifyExperimentalCommand("plugin:init", { force: true });
|
|
20
|
+
await packUp.init({
|
|
21
|
+
path: packagePath,
|
|
22
|
+
cwd,
|
|
23
|
+
silent,
|
|
24
|
+
debug,
|
|
25
|
+
template: PLUGIN_TEMPLATE
|
|
26
|
+
});
|
|
27
|
+
logger.info("Don't forget to enable your plugin in your configuration files.");
|
|
28
|
+
} catch (err) {
|
|
29
|
+
logger.error(
|
|
30
|
+
"There seems to be an unexpected error, try again with --debug for more information \n"
|
|
31
|
+
);
|
|
32
|
+
if (err instanceof Error && err.stack) {
|
|
33
|
+
logger.log(
|
|
34
|
+
chalk__default.default.red(
|
|
35
|
+
boxen__default.default(err.stack, {
|
|
36
|
+
padding: 1,
|
|
37
|
+
align: "left"
|
|
38
|
+
})
|
|
39
|
+
)
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
const PACKAGE_NAME_REGEXP = /^(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)\/)?[a-z0-9-~][a-z0-9-._~]*$/i;
|
|
46
|
+
const PLUGIN_TEMPLATE = packUp.defineTemplate(async ({ logger, gitConfig, packagePath }) => {
|
|
47
|
+
let repo;
|
|
48
|
+
const [packageFolder] = packagePath.split(path__default.default.sep).slice(-1);
|
|
49
|
+
return {
|
|
50
|
+
prompts: [
|
|
51
|
+
packUp.definePackageOption({
|
|
52
|
+
name: "repo",
|
|
53
|
+
type: "text",
|
|
54
|
+
message: "git url",
|
|
55
|
+
validate(v) {
|
|
56
|
+
if (!v) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
const result = gitUrlParse__default.default(v);
|
|
61
|
+
repo = { source: result.source, owner: result.owner, name: result.name };
|
|
62
|
+
return true;
|
|
63
|
+
} catch (err) {
|
|
64
|
+
return "invalid git url";
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}),
|
|
68
|
+
packUp.definePackageOption({
|
|
69
|
+
name: "pkgName",
|
|
70
|
+
type: "text",
|
|
71
|
+
message: "plugin name",
|
|
72
|
+
initial: () => repo?.name ?? "",
|
|
73
|
+
validate(v) {
|
|
74
|
+
if (!v) {
|
|
75
|
+
return "package name is required";
|
|
76
|
+
}
|
|
77
|
+
const match = PACKAGE_NAME_REGEXP.exec(v);
|
|
78
|
+
if (!match) {
|
|
79
|
+
return "invalid package name";
|
|
80
|
+
}
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
}),
|
|
84
|
+
packUp.definePackageOption({
|
|
85
|
+
name: "displayName",
|
|
86
|
+
type: "text",
|
|
87
|
+
message: "plugin display name"
|
|
88
|
+
}),
|
|
89
|
+
packUp.definePackageOption({
|
|
90
|
+
name: "description",
|
|
91
|
+
type: "text",
|
|
92
|
+
message: "plugin description"
|
|
93
|
+
}),
|
|
94
|
+
packUp.definePackageOption({
|
|
95
|
+
name: "authorName",
|
|
96
|
+
type: "text",
|
|
97
|
+
message: "plugin author name",
|
|
98
|
+
initial: gitConfig?.user?.name
|
|
99
|
+
}),
|
|
100
|
+
packUp.definePackageOption({
|
|
101
|
+
name: "authorEmail",
|
|
102
|
+
type: "text",
|
|
103
|
+
message: "plugin author email",
|
|
104
|
+
initial: gitConfig?.user?.email
|
|
105
|
+
}),
|
|
106
|
+
packUp.definePackageOption({
|
|
107
|
+
name: "license",
|
|
108
|
+
type: "text",
|
|
109
|
+
message: "plugin license",
|
|
110
|
+
initial: "MIT",
|
|
111
|
+
validate(v) {
|
|
112
|
+
if (!v) {
|
|
113
|
+
return "license is required";
|
|
114
|
+
}
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
}),
|
|
118
|
+
packUp.definePackageOption({
|
|
119
|
+
name: "client-code",
|
|
120
|
+
type: "confirm",
|
|
121
|
+
message: "register with the admin panel?",
|
|
122
|
+
initial: true
|
|
123
|
+
}),
|
|
124
|
+
packUp.definePackageOption({
|
|
125
|
+
name: "server-code",
|
|
126
|
+
type: "confirm",
|
|
127
|
+
message: "register with the server?",
|
|
128
|
+
initial: true
|
|
129
|
+
}),
|
|
130
|
+
packUp.definePackageFeature({
|
|
131
|
+
name: "editorconfig",
|
|
132
|
+
initial: true,
|
|
133
|
+
optional: true
|
|
134
|
+
}),
|
|
135
|
+
packUp.definePackageFeature({
|
|
136
|
+
name: "eslint",
|
|
137
|
+
initial: true,
|
|
138
|
+
optional: true
|
|
139
|
+
}),
|
|
140
|
+
packUp.definePackageFeature({
|
|
141
|
+
name: "prettier",
|
|
142
|
+
initial: true,
|
|
143
|
+
optional: true
|
|
144
|
+
}),
|
|
145
|
+
packUp.definePackageFeature({
|
|
146
|
+
name: "typescript",
|
|
147
|
+
initial: true,
|
|
148
|
+
optional: true
|
|
149
|
+
})
|
|
150
|
+
],
|
|
151
|
+
async getFiles(answers) {
|
|
152
|
+
const author = [];
|
|
153
|
+
const files = [];
|
|
154
|
+
const pkgJson = {
|
|
155
|
+
version: "0.0.0",
|
|
156
|
+
keywords: [],
|
|
157
|
+
type: "commonjs",
|
|
158
|
+
exports: {
|
|
159
|
+
"./package.json": "./package.json"
|
|
160
|
+
},
|
|
161
|
+
files: ["dist"],
|
|
162
|
+
scripts: {
|
|
163
|
+
build: "strapi plugin:build",
|
|
164
|
+
watch: "strapi plugin:watch",
|
|
165
|
+
verify: "strapi plugin:verify"
|
|
166
|
+
},
|
|
167
|
+
dependencies: {},
|
|
168
|
+
devDependencies: {
|
|
169
|
+
/**
|
|
170
|
+
* We set * as a default version, but further down
|
|
171
|
+
* we try to resolve each package to their latest
|
|
172
|
+
* version, failing that we leave the fallback of *.
|
|
173
|
+
*/
|
|
174
|
+
"@strapi/strapi": "*",
|
|
175
|
+
prettier: "*"
|
|
176
|
+
},
|
|
177
|
+
peerDependencies: {
|
|
178
|
+
"@strapi/strapi": "^4.0.0"
|
|
179
|
+
},
|
|
180
|
+
strapi: {
|
|
181
|
+
kind: "plugin"
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
if (Array.isArray(answers)) {
|
|
185
|
+
for (const ans of answers) {
|
|
186
|
+
const { name, answer } = ans;
|
|
187
|
+
switch (name) {
|
|
188
|
+
case "pkgName": {
|
|
189
|
+
pkgJson.name = String(answer);
|
|
190
|
+
pkgJson.strapi.name = String(answer);
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
case "description": {
|
|
194
|
+
pkgJson.description = String(answer) ?? void 0;
|
|
195
|
+
pkgJson.strapi.description = String(answer) ?? void 0;
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
case "displayName": {
|
|
199
|
+
pkgJson.strapi.displayName = String(answer) ?? void 0;
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
202
|
+
case "authorName": {
|
|
203
|
+
author.push(String(answer));
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
case "authorEmail": {
|
|
207
|
+
if (answer) {
|
|
208
|
+
author.push(`<${answer}>`);
|
|
209
|
+
}
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
case "license": {
|
|
213
|
+
pkgJson.license = String(answer);
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
case "client-code": {
|
|
217
|
+
if (answer) {
|
|
218
|
+
pkgJson.exports["./strapi-admin"] = {
|
|
219
|
+
source: "./src/admin/index.js",
|
|
220
|
+
import: "./dist/admin/index.mjs",
|
|
221
|
+
require: "./dist/admin/index.js",
|
|
222
|
+
default: "./dist/admin/index.js"
|
|
223
|
+
};
|
|
224
|
+
pkgJson.dependencies = {
|
|
225
|
+
...pkgJson.dependencies,
|
|
226
|
+
"@strapi/helper-plugin": "*",
|
|
227
|
+
"@strapi/design-system": "*",
|
|
228
|
+
"@strapi/icons": "*"
|
|
229
|
+
};
|
|
230
|
+
pkgJson.devDependencies = {
|
|
231
|
+
...pkgJson.dependencies,
|
|
232
|
+
react: "*",
|
|
233
|
+
"react-dom": "*",
|
|
234
|
+
"react-router-dom": "5.3.4",
|
|
235
|
+
"styled-components": "5.3.3"
|
|
236
|
+
};
|
|
237
|
+
pkgJson.peerDependencies = {
|
|
238
|
+
...pkgJson.peerDependencies,
|
|
239
|
+
react: "^17.0.0 || ^18.0.0",
|
|
240
|
+
"react-dom": "^17.0.0 || ^18.0.0",
|
|
241
|
+
"react-router-dom": "5.2.0",
|
|
242
|
+
"styled-components": "5.2.1"
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
break;
|
|
246
|
+
}
|
|
247
|
+
case "server-code": {
|
|
248
|
+
if (answer) {
|
|
249
|
+
pkgJson.exports["./strapi-server"] = {
|
|
250
|
+
source: "./src/server/index.js",
|
|
251
|
+
import: "./dist/server/index.mjs",
|
|
252
|
+
require: "./dist/server/index.js",
|
|
253
|
+
default: "./dist/server/index.js"
|
|
254
|
+
};
|
|
255
|
+
pkgJson.files.push("./strapi-server.js");
|
|
256
|
+
files.push({
|
|
257
|
+
name: "strapi-server.js",
|
|
258
|
+
contents: outdent.outdent`
|
|
259
|
+
'use strict';
|
|
260
|
+
|
|
261
|
+
module.exports = require('./dist/server');
|
|
262
|
+
`
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
break;
|
|
266
|
+
}
|
|
267
|
+
case "typescript": {
|
|
268
|
+
const isTypescript = Boolean(answer);
|
|
269
|
+
if (isTypescript) {
|
|
270
|
+
if (isRecord(pkgJson.exports["./strapi-admin"])) {
|
|
271
|
+
pkgJson.exports["./strapi-admin"].source = "./src/admin/index.ts";
|
|
272
|
+
pkgJson.exports["./strapi-admin"] = {
|
|
273
|
+
types: "./dist/admin/src/index.d.ts",
|
|
274
|
+
...pkgJson.exports["./strapi-admin"]
|
|
275
|
+
};
|
|
276
|
+
pkgJson.scripts = {
|
|
277
|
+
...pkgJson.scripts,
|
|
278
|
+
"test:ts:front": "run -T tsc -p admin/tsconfig.json"
|
|
279
|
+
};
|
|
280
|
+
pkgJson.devDependencies = {
|
|
281
|
+
...pkgJson.devDependencies,
|
|
282
|
+
"@types/react": "*",
|
|
283
|
+
"@types/react-dom": "*",
|
|
284
|
+
"@types/react-router-dom": "5.3.3",
|
|
285
|
+
"@types/styled-components": "5.1.26"
|
|
286
|
+
};
|
|
287
|
+
const { adminTsconfigFiles } = await Promise.resolve().then(() => require("./files/typescript.js"));
|
|
288
|
+
files.push(adminTsconfigFiles.tsconfigBuildFile, adminTsconfigFiles.tsconfigFile);
|
|
289
|
+
}
|
|
290
|
+
if (isRecord(pkgJson.exports["./strapi-server"])) {
|
|
291
|
+
pkgJson.exports["./strapi-server"].source = "./src/server/index.ts";
|
|
292
|
+
pkgJson.exports["./strapi-server"] = {
|
|
293
|
+
types: "./dist/server/src/index.d.ts",
|
|
294
|
+
...pkgJson.exports["./strapi-server"]
|
|
295
|
+
};
|
|
296
|
+
pkgJson.scripts = {
|
|
297
|
+
...pkgJson.scripts,
|
|
298
|
+
"test:ts:back": "run -T tsc -p server/tsconfig.json"
|
|
299
|
+
};
|
|
300
|
+
const { serverTsconfigFiles } = await Promise.resolve().then(() => require("./files/typescript.js"));
|
|
301
|
+
files.push(
|
|
302
|
+
serverTsconfigFiles.tsconfigBuildFile,
|
|
303
|
+
serverTsconfigFiles.tsconfigFile
|
|
304
|
+
);
|
|
305
|
+
}
|
|
306
|
+
pkgJson.devDependencies = {
|
|
307
|
+
...pkgJson.devDependencies,
|
|
308
|
+
"@strapi/typescript-utils": "*",
|
|
309
|
+
typescript: "*"
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
if (isRecord(pkgJson.exports["./strapi-admin"])) {
|
|
313
|
+
files.push({
|
|
314
|
+
name: isTypescript ? "admin/src/pluginId.ts" : "admin/src/pluginId.js",
|
|
315
|
+
contents: outdent.outdent`
|
|
316
|
+
export const PLUGIN_ID = '${pkgJson.name.replace(/^strapi-plugin-/i, "")}';
|
|
317
|
+
`
|
|
318
|
+
});
|
|
319
|
+
if (isTypescript) {
|
|
320
|
+
const { adminTypescriptFiles } = await Promise.resolve().then(() => require("./files/admin.js"));
|
|
321
|
+
files.push(...adminTypescriptFiles);
|
|
322
|
+
} else {
|
|
323
|
+
const { adminJavascriptFiles } = await Promise.resolve().then(() => require("./files/admin.js"));
|
|
324
|
+
files.push(...adminJavascriptFiles);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
if (isRecord(pkgJson.exports["./strapi-server"])) {
|
|
328
|
+
if (isTypescript) {
|
|
329
|
+
const { serverTypescriptFiles } = await Promise.resolve().then(() => require("./files/server.js"));
|
|
330
|
+
files.push(...serverTypescriptFiles(packageFolder));
|
|
331
|
+
} else {
|
|
332
|
+
const { serverJavascriptFiles } = await Promise.resolve().then(() => require("./files/server.js"));
|
|
333
|
+
files.push(...serverJavascriptFiles(packageFolder));
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
break;
|
|
337
|
+
}
|
|
338
|
+
case "eslint": {
|
|
339
|
+
if (answer) {
|
|
340
|
+
const { eslintIgnoreFile } = await Promise.resolve().then(() => require("./files/eslint.js"));
|
|
341
|
+
files.push(eslintIgnoreFile);
|
|
342
|
+
}
|
|
343
|
+
break;
|
|
344
|
+
}
|
|
345
|
+
case "prettier": {
|
|
346
|
+
if (answer) {
|
|
347
|
+
const { prettierFile, prettierIgnoreFile } = await Promise.resolve().then(() => require("./files/prettier.js"));
|
|
348
|
+
files.push(prettierFile, prettierIgnoreFile);
|
|
349
|
+
}
|
|
350
|
+
break;
|
|
351
|
+
}
|
|
352
|
+
case "editorconfig": {
|
|
353
|
+
if (answer) {
|
|
354
|
+
const { editorConfigFile } = await Promise.resolve().then(() => require("./files/editorConfig.js"));
|
|
355
|
+
files.push(editorConfigFile);
|
|
356
|
+
}
|
|
357
|
+
break;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
if (repo) {
|
|
363
|
+
pkgJson.repository = {
|
|
364
|
+
type: "git",
|
|
365
|
+
url: `git+ssh://git@${repo.source}/${repo.owner}/${repo.name}.git`
|
|
366
|
+
};
|
|
367
|
+
pkgJson.bugs = {
|
|
368
|
+
url: `https://${repo.source}/${repo.owner}/${repo.name}/issues`
|
|
369
|
+
};
|
|
370
|
+
pkgJson.homepage = `https://${repo.source}/${repo.owner}/${repo.name}#readme`;
|
|
371
|
+
}
|
|
372
|
+
pkgJson.author = author.filter(Boolean).join(" ") ?? void 0;
|
|
373
|
+
try {
|
|
374
|
+
pkgJson.devDependencies = await resolveLatestVerisonOfDeps(pkgJson.devDependencies);
|
|
375
|
+
pkgJson.dependencies = await resolveLatestVerisonOfDeps(pkgJson.dependencies);
|
|
376
|
+
pkgJson.peerDependencies = await resolveLatestVerisonOfDeps(pkgJson.peerDependencies);
|
|
377
|
+
} catch (err) {
|
|
378
|
+
if (err instanceof Error) {
|
|
379
|
+
logger.error(err.message);
|
|
380
|
+
} else {
|
|
381
|
+
logger.error(err);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
files.push({
|
|
385
|
+
name: "package.json",
|
|
386
|
+
contents: outdent.outdent`
|
|
387
|
+
${JSON.stringify(pkgJson, null, 2)}
|
|
388
|
+
`
|
|
389
|
+
});
|
|
390
|
+
files.push({
|
|
391
|
+
name: "README.md",
|
|
392
|
+
contents: outdent.outdent`
|
|
393
|
+
# ${pkgJson.name}
|
|
394
|
+
|
|
395
|
+
${pkgJson.description ?? ""}
|
|
396
|
+
`
|
|
397
|
+
});
|
|
398
|
+
files.push(gitIgnore.gitIgnoreFile);
|
|
399
|
+
return files;
|
|
400
|
+
}
|
|
401
|
+
};
|
|
402
|
+
});
|
|
403
|
+
const isRecord = (value) => Boolean(value) && !Array.isArray(value) && typeof value === "object";
|
|
404
|
+
const resolveLatestVerisonOfDeps = async (deps) => {
|
|
405
|
+
const latestDeps = {};
|
|
406
|
+
for (const [name, version] of Object.entries(deps)) {
|
|
407
|
+
try {
|
|
408
|
+
const latestVersion = await getLatestVersion__default.default(name, version);
|
|
409
|
+
latestDeps[name] = latestVersion ? `^${latestVersion}` : "*";
|
|
410
|
+
} catch (err) {
|
|
411
|
+
latestDeps[name] = "*";
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
return latestDeps;
|
|
415
|
+
};
|
|
416
|
+
module.exports = action;
|
|
417
|
+
//# sourceMappingURL=action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.js","sources":["../../../../../src/commands/actions/plugin/init/action.ts"],"sourcesContent":["import path from 'node:path';\nimport boxen from 'boxen';\nimport chalk from 'chalk';\nimport getLatestVersion from 'get-latest-version';\nimport gitUrlParse from 'git-url-parse';\nimport {\n InitOptions,\n definePackageFeature,\n definePackageOption,\n defineTemplate,\n init,\n TemplateFile,\n} from '@strapi/pack-up';\nimport { outdent } from 'outdent';\nimport { notifyExperimentalCommand } from '../../../utils/helpers';\n\nimport { CLIContext } from '../../../types';\nimport { gitIgnoreFile } from './files/gitIgnore';\n\ninterface ActionOptions extends Pick<InitOptions, 'silent' | 'debug'> {}\n\nexport default async (\n packagePath: string,\n { silent, debug }: ActionOptions,\n _cmd: unknown,\n { logger, cwd }: CLIContext\n) => {\n try {\n /**\n * Notify users this is an experimental command. We don't need to get them to approve first.\n */\n await notifyExperimentalCommand('plugin:init', { force: true });\n\n /**\n * Create the package // plugin\n */\n await init({\n path: packagePath,\n cwd,\n silent,\n debug,\n template: PLUGIN_TEMPLATE,\n });\n\n logger.info(\"Don't forget to enable your plugin in your configuration files.\");\n } catch (err) {\n logger.error(\n 'There seems to be an unexpected error, try again with --debug for more information \\n'\n );\n if (err instanceof Error && err.stack) {\n logger.log(\n chalk.red(\n boxen(err.stack, {\n padding: 1,\n align: 'left',\n })\n )\n );\n }\n process.exit(1);\n }\n};\n\nconst PACKAGE_NAME_REGEXP = /^(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)\\/)?[a-z0-9-~][a-z0-9-._~]*$/i;\n\ninterface PackageExport {\n types?: string;\n require: string;\n import: string;\n source: string;\n default: string;\n}\n\ninterface PluginPackageJson {\n name?: string;\n description?: string;\n version?: string;\n keywords?: string[];\n type: 'commonjs';\n license?: string;\n repository?: {\n type: 'git';\n url: string;\n };\n bugs?: {\n url: string;\n };\n homepage?: string;\n author?: string;\n exports: {\n './strapi-admin'?: PackageExport;\n './strapi-server'?: PackageExport;\n './package.json': `${string}.json`;\n };\n files: string[];\n scripts: Record<string, string>;\n dependencies: Record<string, string>;\n devDependencies: Record<string, string>;\n peerDependencies: Record<string, string>;\n strapi: {\n name?: string;\n displayName?: string;\n description?: string;\n kind: 'plugin';\n };\n}\n\nconst PLUGIN_TEMPLATE = defineTemplate(async ({ logger, gitConfig, packagePath }) => {\n let repo: {\n source?: string;\n owner?: string;\n name?: string;\n };\n\n const [packageFolder] = packagePath.split(path.sep).slice(-1);\n\n return {\n prompts: [\n definePackageOption({\n name: 'repo',\n type: 'text',\n message: 'git url',\n validate(v) {\n if (!v) {\n return true;\n }\n\n try {\n const result = gitUrlParse(v);\n\n repo = { source: result.source, owner: result.owner, name: result.name };\n\n return true;\n } catch (err) {\n return 'invalid git url';\n }\n },\n }),\n definePackageOption({\n name: 'pkgName',\n type: 'text',\n message: 'plugin name',\n initial: () => repo?.name ?? '',\n validate(v) {\n if (!v) {\n return 'package name is required';\n }\n\n const match = PACKAGE_NAME_REGEXP.exec(v);\n\n if (!match) {\n return 'invalid package name';\n }\n\n return true;\n },\n }),\n definePackageOption({\n name: 'displayName',\n type: 'text',\n message: 'plugin display name',\n }),\n definePackageOption({\n name: 'description',\n type: 'text',\n message: 'plugin description',\n }),\n definePackageOption({\n name: 'authorName',\n type: 'text',\n message: 'plugin author name',\n initial: gitConfig?.user?.name,\n }),\n definePackageOption({\n name: 'authorEmail',\n type: 'text',\n message: 'plugin author email',\n initial: gitConfig?.user?.email,\n }),\n definePackageOption({\n name: 'license',\n type: 'text',\n message: 'plugin license',\n initial: 'MIT',\n validate(v) {\n if (!v) {\n return 'license is required';\n }\n\n return true;\n },\n }),\n definePackageOption({\n name: 'client-code',\n type: 'confirm',\n message: 'register with the admin panel?',\n initial: true,\n }),\n definePackageOption({\n name: 'server-code',\n type: 'confirm',\n message: 'register with the server?',\n initial: true,\n }),\n definePackageFeature({\n name: 'editorconfig',\n initial: true,\n optional: true,\n }),\n definePackageFeature({\n name: 'eslint',\n initial: true,\n optional: true,\n }),\n definePackageFeature({\n name: 'prettier',\n initial: true,\n optional: true,\n }),\n definePackageFeature({\n name: 'typescript',\n initial: true,\n optional: true,\n }),\n ],\n async getFiles(answers) {\n const author: string[] = [];\n\n const files: TemplateFile[] = [];\n\n // package.json\n const pkgJson: PluginPackageJson = {\n version: '0.0.0',\n keywords: [],\n type: 'commonjs',\n exports: {\n './package.json': './package.json',\n },\n files: ['dist'],\n scripts: {\n build: 'strapi plugin:build',\n watch: 'strapi plugin:watch',\n verify: 'strapi plugin:verify',\n },\n dependencies: {},\n devDependencies: {\n /**\n * We set * as a default version, but further down\n * we try to resolve each package to their latest\n * version, failing that we leave the fallback of *.\n */\n '@strapi/strapi': '*',\n prettier: '*',\n },\n peerDependencies: {\n '@strapi/strapi': '^4.0.0',\n },\n strapi: {\n kind: 'plugin',\n },\n };\n\n if (Array.isArray(answers)) {\n for (const ans of answers) {\n const { name, answer } = ans;\n\n switch (name) {\n case 'pkgName': {\n pkgJson.name = String(answer);\n pkgJson.strapi.name = String(answer);\n break;\n }\n case 'description': {\n pkgJson.description = String(answer) ?? undefined;\n pkgJson.strapi.description = String(answer) ?? undefined;\n break;\n }\n case 'displayName': {\n pkgJson.strapi.displayName = String(answer) ?? undefined;\n break;\n }\n case 'authorName': {\n author.push(String(answer));\n break;\n }\n case 'authorEmail': {\n if (answer) {\n author.push(`<${answer}>`);\n }\n break;\n }\n case 'license': {\n pkgJson.license = String(answer);\n break;\n }\n case 'client-code': {\n if (answer) {\n pkgJson.exports['./strapi-admin'] = {\n source: './src/admin/index.js',\n import: './dist/admin/index.mjs',\n require: './dist/admin/index.js',\n default: './dist/admin/index.js',\n };\n\n pkgJson.dependencies = {\n ...pkgJson.dependencies,\n '@strapi/helper-plugin': '*',\n '@strapi/design-system': '*',\n '@strapi/icons': '*',\n };\n\n pkgJson.devDependencies = {\n ...pkgJson.dependencies,\n react: '*',\n 'react-dom': '*',\n 'react-router-dom': '5.3.4',\n 'styled-components': '5.3.3',\n };\n\n pkgJson.peerDependencies = {\n ...pkgJson.peerDependencies,\n react: '^17.0.0 || ^18.0.0',\n 'react-dom': '^17.0.0 || ^18.0.0',\n 'react-router-dom': '5.2.0',\n 'styled-components': '5.2.1',\n };\n }\n\n break;\n }\n case 'server-code': {\n if (answer) {\n pkgJson.exports['./strapi-server'] = {\n source: './src/server/index.js',\n import: './dist/server/index.mjs',\n require: './dist/server/index.js',\n default: './dist/server/index.js',\n };\n\n pkgJson.files.push('./strapi-server.js');\n\n files.push({\n name: 'strapi-server.js',\n contents: outdent`\n 'use strict';\n \n module.exports = require('./dist/server');\n `,\n });\n }\n\n break;\n }\n case 'typescript': {\n const isTypescript = Boolean(answer);\n\n if (isTypescript) {\n if (isRecord(pkgJson.exports['./strapi-admin'])) {\n pkgJson.exports['./strapi-admin'].source = './src/admin/index.ts';\n\n pkgJson.exports['./strapi-admin'] = {\n types: './dist/admin/src/index.d.ts',\n ...pkgJson.exports['./strapi-admin'],\n };\n\n pkgJson.scripts = {\n ...pkgJson.scripts,\n 'test:ts:front': 'run -T tsc -p admin/tsconfig.json',\n };\n\n pkgJson.devDependencies = {\n ...pkgJson.devDependencies,\n '@types/react': '*',\n '@types/react-dom': '*',\n '@types/react-router-dom': '5.3.3',\n '@types/styled-components': '5.1.26',\n };\n\n const { adminTsconfigFiles } = await import('./files/typescript');\n\n files.push(adminTsconfigFiles.tsconfigBuildFile, adminTsconfigFiles.tsconfigFile);\n }\n\n if (isRecord(pkgJson.exports['./strapi-server'])) {\n pkgJson.exports['./strapi-server'].source = './src/server/index.ts';\n\n pkgJson.exports['./strapi-server'] = {\n types: './dist/server/src/index.d.ts',\n ...pkgJson.exports['./strapi-server'],\n };\n\n pkgJson.scripts = {\n ...pkgJson.scripts,\n 'test:ts:back': 'run -T tsc -p server/tsconfig.json',\n };\n\n const { serverTsconfigFiles } = await import('./files/typescript');\n\n files.push(\n serverTsconfigFiles.tsconfigBuildFile,\n serverTsconfigFiles.tsconfigFile\n );\n }\n\n pkgJson.devDependencies = {\n ...pkgJson.devDependencies,\n '@strapi/typescript-utils': '*',\n typescript: '*',\n };\n }\n\n /**\n * This is where we add all the source files regardless\n * of whether they are typescript or javascript.\n */\n if (isRecord(pkgJson.exports['./strapi-admin'])) {\n files.push({\n name: isTypescript ? 'admin/src/pluginId.ts' : 'admin/src/pluginId.js',\n contents: outdent`\n export const PLUGIN_ID = '${pkgJson.name!.replace(/^strapi-plugin-/i, '')}';\n `,\n });\n\n if (isTypescript) {\n const { adminTypescriptFiles } = await import('./files/admin');\n\n files.push(...adminTypescriptFiles);\n } else {\n const { adminJavascriptFiles } = await import('./files/admin');\n\n files.push(...adminJavascriptFiles);\n }\n }\n\n if (isRecord(pkgJson.exports['./strapi-server'])) {\n if (isTypescript) {\n const { serverTypescriptFiles } = await import('./files/server');\n\n files.push(...serverTypescriptFiles(packageFolder));\n } else {\n const { serverJavascriptFiles } = await import('./files/server');\n\n files.push(...serverJavascriptFiles(packageFolder));\n }\n }\n\n break;\n }\n case 'eslint': {\n if (answer) {\n const { eslintIgnoreFile } = await import('./files/eslint');\n\n files.push(eslintIgnoreFile);\n }\n\n break;\n }\n case 'prettier': {\n if (answer) {\n const { prettierFile, prettierIgnoreFile } = await import('./files/prettier');\n\n files.push(prettierFile, prettierIgnoreFile);\n }\n break;\n }\n case 'editorconfig': {\n if (answer) {\n const { editorConfigFile } = await import('./files/editorConfig');\n\n files.push(editorConfigFile);\n }\n break;\n }\n default:\n break;\n }\n }\n }\n\n if (repo) {\n pkgJson.repository = {\n type: 'git',\n url: `git+ssh://git@${repo.source}/${repo.owner}/${repo.name}.git`,\n };\n pkgJson.bugs = {\n url: `https://${repo.source}/${repo.owner}/${repo.name}/issues`,\n };\n pkgJson.homepage = `https://${repo.source}/${repo.owner}/${repo.name}#readme`;\n }\n\n pkgJson.author = author.filter(Boolean).join(' ') ?? undefined;\n\n try {\n pkgJson.devDependencies = await resolveLatestVerisonOfDeps(pkgJson.devDependencies);\n pkgJson.dependencies = await resolveLatestVerisonOfDeps(pkgJson.dependencies);\n pkgJson.peerDependencies = await resolveLatestVerisonOfDeps(pkgJson.peerDependencies);\n } catch (err) {\n if (err instanceof Error) {\n logger.error(err.message);\n } else {\n logger.error(err);\n }\n }\n\n files.push({\n name: 'package.json',\n contents: outdent`\n ${JSON.stringify(pkgJson, null, 2)}\n `,\n });\n\n files.push({\n name: 'README.md',\n contents: outdent`\n # ${pkgJson.name}\n\n ${pkgJson.description ?? ''}\n `,\n });\n\n files.push(gitIgnoreFile);\n\n return files;\n },\n };\n});\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n Boolean(value) && !Array.isArray(value) && typeof value === 'object';\n\nconst resolveLatestVerisonOfDeps = async (\n deps: Record<string, string>\n): Promise<Record<string, string>> => {\n const latestDeps: Record<string, string> = {};\n\n for (const [name, version] of Object.entries(deps)) {\n try {\n const latestVersion = await getLatestVersion(name, version);\n latestDeps[name] = latestVersion ? `^${latestVersion}` : '*';\n } catch (err) {\n latestDeps[name] = '*';\n }\n }\n\n return latestDeps;\n};\n"],"names":["notifyExperimentalCommand","init","chalk","boxen","defineTemplate","path","definePackageOption","gitUrlParse","definePackageFeature","outdent","gitIgnoreFile","getLatestVersion"],"mappings":";;;;;;;;;;;;;;;;AAqBA,MAAA,SAAe,OACb,aACA,EAAE,QAAQ,MAAA,GACV,MACA,EAAE,QAAQ,UACP;AACC,MAAA;AAIF,UAAMA,QAA0B,0BAAA,eAAe,EAAE,OAAO,KAAM,CAAA;AAK9D,UAAMC,YAAK;AAAA,MACT,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,IAAA,CACX;AAED,WAAO,KAAK,iEAAiE;AAAA,WACtE,KAAK;AACL,WAAA;AAAA,MACL;AAAA,IAAA;AAEE,QAAA,eAAe,SAAS,IAAI,OAAO;AAC9B,aAAA;AAAA,QACLC,eAAAA,QAAM;AAAA,UACJC,eAAA,QAAM,IAAI,OAAO;AAAA,YACf,SAAS;AAAA,YACT,OAAO;AAAA,UAAA,CACR;AAAA,QACH;AAAA,MAAA;AAAA,IAEJ;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAEA,MAAM,sBAAsB;AA4C5B,MAAM,kBAAkBC,OAAe,eAAA,OAAO,EAAE,QAAQ,WAAW,kBAAkB;AAC/E,MAAA;AAME,QAAA,CAAC,aAAa,IAAI,YAAY,MAAMC,sBAAK,GAAG,EAAE,MAAM,EAAE;AAErD,SAAA;AAAA,IACL,SAAS;AAAA,MACPC,2BAAoB;AAAA,QAClB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS,GAAG;AACV,cAAI,CAAC,GAAG;AACC,mBAAA;AAAA,UACT;AAEI,cAAA;AACI,kBAAA,SAASC,6BAAY,CAAC;AAErB,mBAAA,EAAE,QAAQ,OAAO,QAAQ,OAAO,OAAO,OAAO,MAAM,OAAO,KAAK;AAEhE,mBAAA;AAAA,mBACA,KAAK;AACL,mBAAA;AAAA,UACT;AAAA,QACF;AAAA,MAAA,CACD;AAAA,MACDD,2BAAoB;AAAA,QAClB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS,MAAM,MAAM,QAAQ;AAAA,QAC7B,SAAS,GAAG;AACV,cAAI,CAAC,GAAG;AACC,mBAAA;AAAA,UACT;AAEM,gBAAA,QAAQ,oBAAoB,KAAK,CAAC;AAExC,cAAI,CAAC,OAAO;AACH,mBAAA;AAAA,UACT;AAEO,iBAAA;AAAA,QACT;AAAA,MAAA,CACD;AAAA,MACDA,2BAAoB;AAAA,QAClB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,MAAA,CACV;AAAA,MACDA,2BAAoB;AAAA,QAClB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,MAAA,CACV;AAAA,MACDA,2BAAoB;AAAA,QAClB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS,WAAW,MAAM;AAAA,MAAA,CAC3B;AAAA,MACDA,2BAAoB;AAAA,QAClB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS,WAAW,MAAM;AAAA,MAAA,CAC3B;AAAA,MACDA,2BAAoB;AAAA,QAClB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,QACT,SAAS,GAAG;AACV,cAAI,CAAC,GAAG;AACC,mBAAA;AAAA,UACT;AAEO,iBAAA;AAAA,QACT;AAAA,MAAA,CACD;AAAA,MACDA,2BAAoB;AAAA,QAClB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MAAA,CACV;AAAA,MACDA,2BAAoB;AAAA,QAClB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MAAA,CACV;AAAA,MACDE,4BAAqB;AAAA,QACnB,MAAM;AAAA,QACN,SAAS;AAAA,QACT,UAAU;AAAA,MAAA,CACX;AAAA,MACDA,4BAAqB;AAAA,QACnB,MAAM;AAAA,QACN,SAAS;AAAA,QACT,UAAU;AAAA,MAAA,CACX;AAAA,MACDA,4BAAqB;AAAA,QACnB,MAAM;AAAA,QACN,SAAS;AAAA,QACT,UAAU;AAAA,MAAA,CACX;AAAA,MACDA,4BAAqB;AAAA,QACnB,MAAM;AAAA,QACN,SAAS;AAAA,QACT,UAAU;AAAA,MAAA,CACX;AAAA,IACH;AAAA,IACA,MAAM,SAAS,SAAS;AACtB,YAAM,SAAmB,CAAA;AAEzB,YAAM,QAAwB,CAAA;AAG9B,YAAM,UAA6B;AAAA,QACjC,SAAS;AAAA,QACT,UAAU,CAAC;AAAA,QACX,MAAM;AAAA,QACN,SAAS;AAAA,UACP,kBAAkB;AAAA,QACpB;AAAA,QACA,OAAO,CAAC,MAAM;AAAA,QACd,SAAS;AAAA,UACP,OAAO;AAAA,UACP,OAAO;AAAA,UACP,QAAQ;AAAA,QACV;AAAA,QACA,cAAc,CAAC;AAAA,QACf,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAMf,kBAAkB;AAAA,UAClB,UAAU;AAAA,QACZ;AAAA,QACA,kBAAkB;AAAA,UAChB,kBAAkB;AAAA,QACpB;AAAA,QACA,QAAQ;AAAA,UACN,MAAM;AAAA,QACR;AAAA,MAAA;AAGE,UAAA,MAAM,QAAQ,OAAO,GAAG;AAC1B,mBAAW,OAAO,SAAS;AACnB,gBAAA,EAAE,MAAM,OAAW,IAAA;AAEzB,kBAAQ,MAAM;AAAA,YACZ,KAAK,WAAW;AACN,sBAAA,OAAO,OAAO,MAAM;AACpB,sBAAA,OAAO,OAAO,OAAO,MAAM;AACnC;AAAA,YACF;AAAA,YACA,KAAK,eAAe;AACV,sBAAA,cAAc,OAAO,MAAM,KAAK;AACxC,sBAAQ,OAAO,cAAc,OAAO,MAAM,KAAK;AAC/C;AAAA,YACF;AAAA,YACA,KAAK,eAAe;AAClB,sBAAQ,OAAO,cAAc,OAAO,MAAM,KAAK;AAC/C;AAAA,YACF;AAAA,YACA,KAAK,cAAc;AACV,qBAAA,KAAK,OAAO,MAAM,CAAC;AAC1B;AAAA,YACF;AAAA,YACA,KAAK,eAAe;AAClB,kBAAI,QAAQ;AACH,uBAAA,KAAK,IAAI,MAAM,GAAG;AAAA,cAC3B;AACA;AAAA,YACF;AAAA,YACA,KAAK,WAAW;AACN,sBAAA,UAAU,OAAO,MAAM;AAC/B;AAAA,YACF;AAAA,YACA,KAAK,eAAe;AAClB,kBAAI,QAAQ;AACF,wBAAA,QAAQ,gBAAgB,IAAI;AAAA,kBAClC,QAAQ;AAAA,kBACR,QAAQ;AAAA,kBACR,SAAS;AAAA,kBACT,SAAS;AAAA,gBAAA;AAGX,wBAAQ,eAAe;AAAA,kBACrB,GAAG,QAAQ;AAAA,kBACX,yBAAyB;AAAA,kBACzB,yBAAyB;AAAA,kBACzB,iBAAiB;AAAA,gBAAA;AAGnB,wBAAQ,kBAAkB;AAAA,kBACxB,GAAG,QAAQ;AAAA,kBACX,OAAO;AAAA,kBACP,aAAa;AAAA,kBACb,oBAAoB;AAAA,kBACpB,qBAAqB;AAAA,gBAAA;AAGvB,wBAAQ,mBAAmB;AAAA,kBACzB,GAAG,QAAQ;AAAA,kBACX,OAAO;AAAA,kBACP,aAAa;AAAA,kBACb,oBAAoB;AAAA,kBACpB,qBAAqB;AAAA,gBAAA;AAAA,cAEzB;AAEA;AAAA,YACF;AAAA,YACA,KAAK,eAAe;AAClB,kBAAI,QAAQ;AACF,wBAAA,QAAQ,iBAAiB,IAAI;AAAA,kBACnC,QAAQ;AAAA,kBACR,QAAQ;AAAA,kBACR,SAAS;AAAA,kBACT,SAAS;AAAA,gBAAA;AAGH,wBAAA,MAAM,KAAK,oBAAoB;AAEvC,sBAAM,KAAK;AAAA,kBACT,MAAM;AAAA,kBACN,UAAUC,QAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,gBAAA,CAKX;AAAA,cACH;AAEA;AAAA,YACF;AAAA,YACA,KAAK,cAAc;AACX,oBAAA,eAAe,QAAQ,MAAM;AAEnC,kBAAI,cAAc;AAChB,oBAAI,SAAS,QAAQ,QAAQ,gBAAgB,CAAC,GAAG;AACvC,0BAAA,QAAQ,gBAAgB,EAAE,SAAS;AAEnC,0BAAA,QAAQ,gBAAgB,IAAI;AAAA,oBAClC,OAAO;AAAA,oBACP,GAAG,QAAQ,QAAQ,gBAAgB;AAAA,kBAAA;AAGrC,0BAAQ,UAAU;AAAA,oBAChB,GAAG,QAAQ;AAAA,oBACX,iBAAiB;AAAA,kBAAA;AAGnB,0BAAQ,kBAAkB;AAAA,oBACxB,GAAG,QAAQ;AAAA,oBACX,gBAAgB;AAAA,oBAChB,oBAAoB;AAAA,oBACpB,2BAA2B;AAAA,oBAC3B,4BAA4B;AAAA,kBAAA;AAG9B,wBAAM,EAAE,mBAAA,IAAuB,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,uBAAoB,CAAA;AAEhE,wBAAM,KAAK,mBAAmB,mBAAmB,mBAAmB,YAAY;AAAA,gBAClF;AAEA,oBAAI,SAAS,QAAQ,QAAQ,iBAAiB,CAAC,GAAG;AACxC,0BAAA,QAAQ,iBAAiB,EAAE,SAAS;AAEpC,0BAAA,QAAQ,iBAAiB,IAAI;AAAA,oBACnC,OAAO;AAAA,oBACP,GAAG,QAAQ,QAAQ,iBAAiB;AAAA,kBAAA;AAGtC,0BAAQ,UAAU;AAAA,oBAChB,GAAG,QAAQ;AAAA,oBACX,gBAAgB;AAAA,kBAAA;AAGlB,wBAAM,EAAE,oBAAA,IAAwB,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,uBAAoB,CAAA;AAE3D,wBAAA;AAAA,oBACJ,oBAAoB;AAAA,oBACpB,oBAAoB;AAAA,kBAAA;AAAA,gBAExB;AAEA,wBAAQ,kBAAkB;AAAA,kBACxB,GAAG,QAAQ;AAAA,kBACX,4BAA4B;AAAA,kBAC5B,YAAY;AAAA,gBAAA;AAAA,cAEhB;AAMA,kBAAI,SAAS,QAAQ,QAAQ,gBAAgB,CAAC,GAAG;AAC/C,sBAAM,KAAK;AAAA,kBACT,MAAM,eAAe,0BAA0B;AAAA,kBAC/C,UAAUA,QAAAA;AAAAA,gDACoB,QAAQ,KAAM,QAAQ,oBAAoB,EAAE,CAAC;AAAA;AAAA,gBAAA,CAE5E;AAED,oBAAI,cAAc;AAChB,wBAAM,EAAE,qBAAA,IAAyB,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,kBAAe,CAAA;AAEvD,wBAAA,KAAK,GAAG,oBAAoB;AAAA,gBAAA,OAC7B;AACL,wBAAM,EAAE,qBAAA,IAAyB,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,kBAAe,CAAA;AAEvD,wBAAA,KAAK,GAAG,oBAAoB;AAAA,gBACpC;AAAA,cACF;AAEA,kBAAI,SAAS,QAAQ,QAAQ,iBAAiB,CAAC,GAAG;AAChD,oBAAI,cAAc;AAChB,wBAAM,EAAE,sBAAA,IAA0B,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,mBAAgB,CAAA;AAE/D,wBAAM,KAAK,GAAG,sBAAsB,aAAa,CAAC;AAAA,gBAAA,OAC7C;AACL,wBAAM,EAAE,sBAAA,IAA0B,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,mBAAgB,CAAA;AAE/D,wBAAM,KAAK,GAAG,sBAAsB,aAAa,CAAC;AAAA,gBACpD;AAAA,cACF;AAEA;AAAA,YACF;AAAA,YACA,KAAK,UAAU;AACb,kBAAI,QAAQ;AACV,sBAAM,EAAE,iBAAA,IAAqB,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,mBAAgB,CAAA;AAE1D,sBAAM,KAAK,gBAAgB;AAAA,cAC7B;AAEA;AAAA,YACF;AAAA,YACA,KAAK,YAAY;AACf,kBAAI,QAAQ;AACV,sBAAM,EAAE,cAAc,mBAAuB,IAAA,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,qBAAkB,CAAA;AAEtE,sBAAA,KAAK,cAAc,kBAAkB;AAAA,cAC7C;AACA;AAAA,YACF;AAAA,YACA,KAAK,gBAAgB;AACnB,kBAAI,QAAQ;AACV,sBAAM,EAAE,iBAAA,IAAqB,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,yBAAsB,CAAA;AAEhE,sBAAM,KAAK,gBAAgB;AAAA,cAC7B;AACA;AAAA,YACF;AAAA,UAGF;AAAA,QACF;AAAA,MACF;AAEA,UAAI,MAAM;AACR,gBAAQ,aAAa;AAAA,UACnB,MAAM;AAAA,UACN,KAAK,iBAAiB,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI;AAAA,QAAA;AAE9D,gBAAQ,OAAO;AAAA,UACb,KAAK,WAAW,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI;AAAA,QAAA;AAEhD,gBAAA,WAAW,WAAW,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI;AAAA,MACtE;AAEA,cAAQ,SAAS,OAAO,OAAO,OAAO,EAAE,KAAK,GAAG,KAAK;AAEjD,UAAA;AACF,gBAAQ,kBAAkB,MAAM,2BAA2B,QAAQ,eAAe;AAClF,gBAAQ,eAAe,MAAM,2BAA2B,QAAQ,YAAY;AAC5E,gBAAQ,mBAAmB,MAAM,2BAA2B,QAAQ,gBAAgB;AAAA,eAC7E,KAAK;AACZ,YAAI,eAAe,OAAO;AACjB,iBAAA,MAAM,IAAI,OAAO;AAAA,QAAA,OACnB;AACL,iBAAO,MAAM,GAAG;AAAA,QAClB;AAAA,MACF;AAEA,YAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAUA,QAAAA;AAAAA,cACJ,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC;AAAA;AAAA,MAAA,CAEvC;AAED,YAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAUA,QAAAA;AAAAA,gBACF,QAAQ,IAAI;AAAA;AAAA,cAEd,QAAQ,eAAe,EAAE;AAAA;AAAA,MAAA,CAEhC;AAED,YAAM,KAAKC,UAAAA,aAAa;AAEjB,aAAA;AAAA,IACT;AAAA,EAAA;AAEJ,CAAC;AAED,MAAM,WAAW,CAAC,UAChB,QAAQ,KAAK,KAAK,CAAC,MAAM,QAAQ,KAAK,KAAK,OAAO,UAAU;AAE9D,MAAM,6BAA6B,OACjC,SACoC;AACpC,QAAM,aAAqC,CAAA;AAE3C,aAAW,CAAC,MAAM,OAAO,KAAK,OAAO,QAAQ,IAAI,GAAG;AAC9C,QAAA;AACF,YAAM,gBAAgB,MAAMC,0BAAAA,QAAiB,MAAM,OAAO;AAC1D,iBAAW,IAAI,IAAI,gBAAgB,IAAI,aAAa,KAAK;AAAA,aAClD,KAAK;AACZ,iBAAW,IAAI,IAAI;AAAA,IACrB;AAAA,EACF;AAEO,SAAA;AACT;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../../src/commands/actions/plugin/init/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpD;;GAEG;AACH,QAAA,MAAM,OAAO,EAAE,aAQd,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const helpers = require("../../../utils/helpers.js");
|
|
3
|
+
const action = require("./action.js");
|
|
4
|
+
const command = ({ command: command2, ctx }) => {
|
|
5
|
+
command2.command("plugin:init").description("Create a new plugin at a given path").argument("[path]", "path to the plugin", "./src/plugins/my-plugin").option("-d, --debug", "Enable debugging mode with verbose logs", false).option("--silent", "Don't log anything", false).action((...args) => helpers.runAction("plugin:init", action)(...args, ctx));
|
|
6
|
+
};
|
|
7
|
+
module.exports = command;
|
|
8
|
+
//# sourceMappingURL=command.js.map
|