@strapi/strapi 4.16.2 → 4.18.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.
Files changed (102) hide show
  1. package/dist/Strapi.d.ts.map +1 -1
  2. package/dist/Strapi.js +2 -1
  3. package/dist/Strapi.js.map +1 -1
  4. package/dist/Strapi.mjs +2 -1
  5. package/dist/Strapi.mjs.map +1 -1
  6. package/dist/admin.d.ts +2 -2
  7. package/dist/admin.d.ts.map +1 -1
  8. package/dist/admin.js.map +1 -1
  9. package/dist/admin.mjs.map +1 -1
  10. package/dist/commands/actions/plugin/build-command/action.d.ts +2 -1
  11. package/dist/commands/actions/plugin/build-command/action.d.ts.map +1 -1
  12. package/dist/commands/actions/plugin/build-command/action.js +3 -6
  13. package/dist/commands/actions/plugin/build-command/action.js.map +1 -1
  14. package/dist/commands/actions/plugin/build-command/command.js +2 -2
  15. package/dist/commands/actions/plugin/build-command/command.js.map +1 -1
  16. package/dist/commands/actions/plugin/init/action.d.ts +7 -0
  17. package/dist/commands/actions/plugin/init/action.d.ts.map +1 -0
  18. package/dist/commands/actions/plugin/init/action.js +418 -0
  19. package/dist/commands/actions/plugin/init/action.js.map +1 -0
  20. package/dist/commands/actions/plugin/init/command.d.ts +7 -0
  21. package/dist/commands/actions/plugin/init/command.d.ts.map +1 -0
  22. package/dist/commands/actions/plugin/init/command.js +9 -0
  23. package/dist/commands/actions/plugin/init/command.js.map +1 -0
  24. package/dist/commands/actions/plugin/init/files/admin.d.ts +5 -0
  25. package/dist/commands/actions/plugin/init/files/admin.d.ts.map +1 -0
  26. package/dist/commands/actions/plugin/init/files/admin.js +283 -0
  27. package/dist/commands/actions/plugin/init/files/admin.js.map +1 -0
  28. package/dist/commands/actions/plugin/init/files/editorConfig.d.ts +4 -0
  29. package/dist/commands/actions/plugin/init/files/editorConfig.d.ts.map +1 -0
  30. package/dist/commands/actions/plugin/init/files/editorConfig.js +26 -0
  31. package/dist/commands/actions/plugin/init/files/editorConfig.js.map +1 -0
  32. package/dist/commands/actions/plugin/init/files/eslint.d.ts +4 -0
  33. package/dist/commands/actions/plugin/init/files/eslint.d.ts.map +1 -0
  34. package/dist/commands/actions/plugin/init/files/eslint.js +11 -0
  35. package/dist/commands/actions/plugin/init/files/eslint.js.map +1 -0
  36. package/dist/commands/actions/plugin/init/files/gitIgnore.d.ts +4 -0
  37. package/dist/commands/actions/plugin/init/files/gitIgnore.d.ts.map +1 -0
  38. package/dist/commands/actions/plugin/init/files/gitIgnore.js +34 -0
  39. package/dist/commands/actions/plugin/init/files/gitIgnore.js.map +1 -0
  40. package/dist/commands/actions/plugin/init/files/prettier.d.ts +5 -0
  41. package/dist/commands/actions/plugin/init/files/prettier.d.ts.map +1 -0
  42. package/dist/commands/actions/plugin/init/files/prettier.js +25 -0
  43. package/dist/commands/actions/plugin/init/files/prettier.js.map +1 -0
  44. package/dist/commands/actions/plugin/init/files/server.d.ts +5 -0
  45. package/dist/commands/actions/plugin/init/files/server.d.ts.map +1 -0
  46. package/dist/commands/actions/plugin/init/files/server.js +360 -0
  47. package/dist/commands/actions/plugin/init/files/server.js.map +1 -0
  48. package/dist/commands/actions/plugin/init/files/typescript.d.ts +9 -0
  49. package/dist/commands/actions/plugin/init/files/typescript.d.ts.map +1 -0
  50. package/dist/commands/actions/plugin/init/files/typescript.js +66 -0
  51. package/dist/commands/actions/plugin/init/files/typescript.js.map +1 -0
  52. package/dist/commands/actions/plugin/link-watch/action.d.ts +6 -0
  53. package/dist/commands/actions/plugin/link-watch/action.d.ts.map +1 -0
  54. package/dist/commands/actions/plugin/link-watch/action.js +86 -0
  55. package/dist/commands/actions/plugin/link-watch/action.js.map +1 -0
  56. package/dist/commands/actions/plugin/link-watch/command.d.ts +7 -0
  57. package/dist/commands/actions/plugin/link-watch/command.d.ts.map +1 -0
  58. package/dist/commands/actions/plugin/link-watch/command.js +8 -0
  59. package/dist/commands/actions/plugin/link-watch/command.js.map +1 -0
  60. package/dist/commands/actions/plugin/verify/action.d.ts +7 -0
  61. package/dist/commands/actions/plugin/verify/action.d.ts.map +1 -0
  62. package/dist/commands/actions/plugin/verify/action.js +34 -0
  63. package/dist/commands/actions/plugin/verify/action.js.map +1 -0
  64. package/dist/commands/actions/plugin/verify/command.d.ts +7 -0
  65. package/dist/commands/actions/plugin/verify/command.d.ts.map +1 -0
  66. package/dist/commands/actions/plugin/verify/command.js +8 -0
  67. package/dist/commands/actions/plugin/verify/command.js.map +1 -0
  68. package/dist/commands/actions/plugin/watch/action.d.ts +2 -2
  69. package/dist/commands/actions/plugin/watch/action.d.ts.map +1 -1
  70. package/dist/commands/actions/plugin/watch/action.js +4 -7
  71. package/dist/commands/actions/plugin/watch/action.js.map +1 -1
  72. package/dist/commands/actions/plugin/watch/command.d.ts +1 -1
  73. package/dist/commands/actions/plugin/watch/command.js +2 -2
  74. package/dist/commands/actions/plugin/watch/command.js.map +1 -1
  75. package/dist/commands/actions/watch-admin/action.d.ts +2 -2
  76. package/dist/commands/actions/watch-admin/action.d.ts.map +1 -1
  77. package/dist/commands/actions/watch-admin/action.js +1 -1
  78. package/dist/commands/actions/watch-admin/action.js.map +1 -1
  79. package/dist/commands/actions/watch-admin/command.js +2 -2
  80. package/dist/commands/actions/watch-admin/command.js.map +1 -1
  81. package/dist/commands/index.d.ts +3 -0
  82. package/dist/commands/index.d.ts.map +1 -1
  83. package/dist/commands/index.js +8 -2
  84. package/dist/commands/index.js.map +1 -1
  85. package/dist/commands/utils/logger.js.map +1 -1
  86. package/dist/commands/utils/pkg.d.ts +2 -0
  87. package/dist/commands/utils/pkg.d.ts.map +1 -1
  88. package/dist/commands/utils/pkg.js +1 -0
  89. package/dist/commands/utils/pkg.js.map +1 -1
  90. package/dist/factories.js +2 -2
  91. package/dist/factories.js.map +1 -1
  92. package/dist/factories.mjs +2 -2
  93. package/dist/factories.mjs.map +1 -1
  94. package/dist/middlewares/security.d.ts.map +1 -1
  95. package/dist/middlewares/security.js +10 -0
  96. package/dist/middlewares/security.js.map +1 -1
  97. package/dist/middlewares/security.mjs +10 -0
  98. package/dist/middlewares/security.mjs.map +1 -1
  99. package/dist/services/entity-validator/index.js.map +1 -1
  100. package/dist/services/entity-validator/index.mjs.map +1 -1
  101. package/dist/utils/startup-logger.js.map +1 -1
  102. package/package.json +27 -21
@@ -0,0 +1,418 @@
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 }, { 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
+ "watch:link": "strapi plugin:watch:link",
166
+ verify: "strapi plugin:verify"
167
+ },
168
+ dependencies: {},
169
+ devDependencies: {
170
+ /**
171
+ * We set * as a default version, but further down
172
+ * we try to resolve each package to their latest
173
+ * version, failing that we leave the fallback of *.
174
+ */
175
+ "@strapi/strapi": "*",
176
+ prettier: "*"
177
+ },
178
+ peerDependencies: {
179
+ "@strapi/strapi": "^4.0.0"
180
+ },
181
+ strapi: {
182
+ kind: "plugin"
183
+ }
184
+ };
185
+ if (Array.isArray(answers)) {
186
+ for (const ans of answers) {
187
+ const { name, answer } = ans;
188
+ switch (name) {
189
+ case "pkgName": {
190
+ pkgJson.name = String(answer);
191
+ pkgJson.strapi.name = String(answer);
192
+ break;
193
+ }
194
+ case "description": {
195
+ pkgJson.description = String(answer) ?? void 0;
196
+ pkgJson.strapi.description = String(answer) ?? void 0;
197
+ break;
198
+ }
199
+ case "displayName": {
200
+ pkgJson.strapi.displayName = String(answer) ?? void 0;
201
+ break;
202
+ }
203
+ case "authorName": {
204
+ author.push(String(answer));
205
+ break;
206
+ }
207
+ case "authorEmail": {
208
+ if (answer) {
209
+ author.push(`<${answer}>`);
210
+ }
211
+ break;
212
+ }
213
+ case "license": {
214
+ pkgJson.license = String(answer);
215
+ break;
216
+ }
217
+ case "client-code": {
218
+ if (answer) {
219
+ pkgJson.exports["./strapi-admin"] = {
220
+ source: "./admin/src/index.js",
221
+ import: "./dist/admin/index.mjs",
222
+ require: "./dist/admin/index.js",
223
+ default: "./dist/admin/index.js"
224
+ };
225
+ pkgJson.dependencies = {
226
+ ...pkgJson.dependencies,
227
+ "@strapi/helper-plugin": "*",
228
+ "@strapi/design-system": "*",
229
+ "@strapi/icons": "*"
230
+ };
231
+ pkgJson.devDependencies = {
232
+ ...pkgJson.devDependencies,
233
+ react: "*",
234
+ "react-dom": "*",
235
+ "react-router-dom": "5.3.4",
236
+ "styled-components": "5.3.3"
237
+ };
238
+ pkgJson.peerDependencies = {
239
+ ...pkgJson.peerDependencies,
240
+ react: "^17.0.0 || ^18.0.0",
241
+ "react-dom": "^17.0.0 || ^18.0.0",
242
+ "react-router-dom": "5.2.0",
243
+ "styled-components": "5.2.1"
244
+ };
245
+ }
246
+ break;
247
+ }
248
+ case "server-code": {
249
+ if (answer) {
250
+ pkgJson.exports["./strapi-server"] = {
251
+ source: "./server/src/index.js",
252
+ import: "./dist/server/index.mjs",
253
+ require: "./dist/server/index.js",
254
+ default: "./dist/server/index.js"
255
+ };
256
+ pkgJson.files.push("./strapi-server.js");
257
+ files.push({
258
+ name: "strapi-server.js",
259
+ contents: outdent.outdent`
260
+ 'use strict';
261
+
262
+ module.exports = require('./dist/server');
263
+ `
264
+ });
265
+ }
266
+ break;
267
+ }
268
+ case "typescript": {
269
+ const isTypescript = Boolean(answer);
270
+ if (isTypescript) {
271
+ if (isRecord(pkgJson.exports["./strapi-admin"])) {
272
+ pkgJson.exports["./strapi-admin"].source = "./admin/src/index.ts";
273
+ pkgJson.exports["./strapi-admin"] = {
274
+ types: "./dist/admin/src/index.d.ts",
275
+ ...pkgJson.exports["./strapi-admin"]
276
+ };
277
+ pkgJson.scripts = {
278
+ ...pkgJson.scripts,
279
+ "test:ts:front": "run -T tsc -p admin/tsconfig.json"
280
+ };
281
+ pkgJson.devDependencies = {
282
+ ...pkgJson.devDependencies,
283
+ "@types/react": "*",
284
+ "@types/react-dom": "*",
285
+ "@types/react-router-dom": "5.3.3",
286
+ "@types/styled-components": "5.1.26"
287
+ };
288
+ const { adminTsconfigFiles } = await Promise.resolve().then(() => require("./files/typescript.js"));
289
+ files.push(adminTsconfigFiles.tsconfigBuildFile, adminTsconfigFiles.tsconfigFile);
290
+ }
291
+ if (isRecord(pkgJson.exports["./strapi-server"])) {
292
+ pkgJson.exports["./strapi-server"].source = "./server/src/index.ts";
293
+ pkgJson.exports["./strapi-server"] = {
294
+ types: "./dist/server/src/index.d.ts",
295
+ ...pkgJson.exports["./strapi-server"]
296
+ };
297
+ pkgJson.scripts = {
298
+ ...pkgJson.scripts,
299
+ "test:ts:back": "run -T tsc -p server/tsconfig.json"
300
+ };
301
+ const { serverTsconfigFiles } = await Promise.resolve().then(() => require("./files/typescript.js"));
302
+ files.push(
303
+ serverTsconfigFiles.tsconfigBuildFile,
304
+ serverTsconfigFiles.tsconfigFile
305
+ );
306
+ }
307
+ pkgJson.devDependencies = {
308
+ ...pkgJson.devDependencies,
309
+ "@strapi/typescript-utils": "*",
310
+ typescript: "*"
311
+ };
312
+ }
313
+ if (isRecord(pkgJson.exports["./strapi-admin"])) {
314
+ files.push({
315
+ name: isTypescript ? "admin/src/pluginId.ts" : "admin/src/pluginId.js",
316
+ contents: outdent.outdent`
317
+ export const PLUGIN_ID = '${pkgJson.name.replace(/^strapi-plugin-/i, "")}';
318
+ `
319
+ });
320
+ if (isTypescript) {
321
+ const { adminTypescriptFiles } = await Promise.resolve().then(() => require("./files/admin.js"));
322
+ files.push(...adminTypescriptFiles);
323
+ } else {
324
+ const { adminJavascriptFiles } = await Promise.resolve().then(() => require("./files/admin.js"));
325
+ files.push(...adminJavascriptFiles);
326
+ }
327
+ }
328
+ if (isRecord(pkgJson.exports["./strapi-server"])) {
329
+ if (isTypescript) {
330
+ const { serverTypescriptFiles } = await Promise.resolve().then(() => require("./files/server.js"));
331
+ files.push(...serverTypescriptFiles(packageFolder));
332
+ } else {
333
+ const { serverJavascriptFiles } = await Promise.resolve().then(() => require("./files/server.js"));
334
+ files.push(...serverJavascriptFiles(packageFolder));
335
+ }
336
+ }
337
+ break;
338
+ }
339
+ case "eslint": {
340
+ if (answer) {
341
+ const { eslintIgnoreFile } = await Promise.resolve().then(() => require("./files/eslint.js"));
342
+ files.push(eslintIgnoreFile);
343
+ }
344
+ break;
345
+ }
346
+ case "prettier": {
347
+ if (answer) {
348
+ const { prettierFile, prettierIgnoreFile } = await Promise.resolve().then(() => require("./files/prettier.js"));
349
+ files.push(prettierFile, prettierIgnoreFile);
350
+ }
351
+ break;
352
+ }
353
+ case "editorconfig": {
354
+ if (answer) {
355
+ const { editorConfigFile } = await Promise.resolve().then(() => require("./files/editorConfig.js"));
356
+ files.push(editorConfigFile);
357
+ }
358
+ break;
359
+ }
360
+ }
361
+ }
362
+ }
363
+ if (repo) {
364
+ pkgJson.repository = {
365
+ type: "git",
366
+ url: `git+ssh://git@${repo.source}/${repo.owner}/${repo.name}.git`
367
+ };
368
+ pkgJson.bugs = {
369
+ url: `https://${repo.source}/${repo.owner}/${repo.name}/issues`
370
+ };
371
+ pkgJson.homepage = `https://${repo.source}/${repo.owner}/${repo.name}#readme`;
372
+ }
373
+ pkgJson.author = author.filter(Boolean).join(" ") ?? void 0;
374
+ try {
375
+ pkgJson.devDependencies = await resolveLatestVerisonOfDeps(pkgJson.devDependencies);
376
+ pkgJson.dependencies = await resolveLatestVerisonOfDeps(pkgJson.dependencies);
377
+ pkgJson.peerDependencies = await resolveLatestVerisonOfDeps(pkgJson.peerDependencies);
378
+ } catch (err) {
379
+ if (err instanceof Error) {
380
+ logger.error(err.message);
381
+ } else {
382
+ logger.error(err);
383
+ }
384
+ }
385
+ files.push({
386
+ name: "package.json",
387
+ contents: outdent.outdent`
388
+ ${JSON.stringify(pkgJson, null, 2)}
389
+ `
390
+ });
391
+ files.push({
392
+ name: "README.md",
393
+ contents: outdent.outdent`
394
+ # ${pkgJson.name}
395
+
396
+ ${pkgJson.description ?? ""}
397
+ `
398
+ });
399
+ files.push(gitIgnore.gitIgnoreFile);
400
+ return files;
401
+ }
402
+ };
403
+ });
404
+ const isRecord = (value) => Boolean(value) && !Array.isArray(value) && typeof value === "object";
405
+ const resolveLatestVerisonOfDeps = async (deps) => {
406
+ const latestDeps = {};
407
+ for (const [name, version] of Object.entries(deps)) {
408
+ try {
409
+ const latestVersion = await getLatestVersion__default.default(name, version);
410
+ latestDeps[name] = latestVersion ? `^${latestVersion}` : "*";
411
+ } catch (err) {
412
+ latestDeps[name] = "*";
413
+ }
414
+ }
415
+ return latestDeps;
416
+ };
417
+ module.exports = action;
418
+ //# 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 { 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 'watch:link': 'strapi plugin:watch:link',\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: './admin/src/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.devDependencies,\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: './server/src/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 = './admin/src/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 = './server/src/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":"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"}
@@ -0,0 +1,7 @@
1
+ import type { StrapiCommand } from '../../../types';
2
+ /**
3
+ * `$ strapi plugin:init`
4
+ */
5
+ declare const command: StrapiCommand;
6
+ export default command;
7
+ //# sourceMappingURL=command.d.ts.map
@@ -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;AAGpD;;GAEG;AACH,QAAA,MAAM,OAAO,EAAE,aAUd,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ const action = require("./action.js");
3
+ const command = ({ command: command2, ctx }) => {
4
+ 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((path, options) => {
5
+ return action(path, options, ctx);
6
+ });
7
+ };
8
+ module.exports = command;
9
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sources":["../../../../../src/commands/actions/plugin/init/command.ts"],"sourcesContent":["import type { StrapiCommand } from '../../../types';\nimport action from './action';\n\n/**\n * `$ strapi plugin:init`\n */\nconst command: StrapiCommand = ({ command, ctx }) => {\n command\n .command('plugin:init')\n .description('Create a new plugin at a given path')\n .argument('[path]', 'path to the plugin', './src/plugins/my-plugin')\n .option('-d, --debug', 'Enable debugging mode with verbose logs', false)\n .option('--silent', \"Don't log anything\", false)\n .action((path, options) => {\n return action(path, options, ctx);\n });\n};\n\nexport default command;\n"],"names":["command"],"mappings":";;AAMA,MAAM,UAAyB,CAAC,EAAE,SAAAA,UAAS,UAAU;AACnDA,WACG,QAAQ,aAAa,EACrB,YAAY,qCAAqC,EACjD,SAAS,UAAU,sBAAsB,yBAAyB,EAClE,OAAO,eAAe,2CAA2C,KAAK,EACtE,OAAO,YAAY,sBAAsB,KAAK,EAC9C,OAAO,CAAC,MAAM,YAAY;AAClB,WAAA,OAAO,MAAM,SAAS,GAAG;AAAA,EAAA,CACjC;AACL;;"}
@@ -0,0 +1,5 @@
1
+ import { TemplateFile } from '@strapi/pack-up';
2
+ declare const TYPESCRIPT: TemplateFile[];
3
+ declare const JAVASCRIPT: TemplateFile[];
4
+ export { TYPESCRIPT as adminTypescriptFiles, JAVASCRIPT as adminJavascriptFiles };
5
+ //# sourceMappingURL=admin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/actions/plugin/init/files/admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAkD/C,QAAA,MAAM,UAAU,EAAE,YAAY,EAyH7B,CAAC;AAEF,QAAA,MAAM,UAAU,EAAE,YAAY,EA8G7B,CAAC;AAEF,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,UAAU,IAAI,oBAAoB,EAAE,CAAC"}