create-strapi-app 5.12.1 → 5.12.3

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 (77) hide show
  1. package/dist/cloud.js +65 -0
  2. package/dist/cloud.js.map +1 -0
  3. package/dist/cloud.mjs +63 -0
  4. package/dist/cloud.mjs.map +1 -0
  5. package/dist/create-strapi.js +251 -0
  6. package/dist/create-strapi.js.map +1 -0
  7. package/dist/create-strapi.mjs +249 -0
  8. package/dist/create-strapi.mjs.map +1 -0
  9. package/dist/index.js +35 -1330
  10. package/dist/index.js.map +1 -1
  11. package/dist/index.mjs +15 -1291
  12. package/dist/index.mjs.map +1 -1
  13. package/dist/prompts.js +66 -0
  14. package/dist/prompts.js.map +1 -0
  15. package/dist/prompts.mjs +60 -0
  16. package/dist/prompts.mjs.map +1 -0
  17. package/dist/types.js +8 -0
  18. package/dist/types.js.map +1 -0
  19. package/dist/types.mjs +6 -0
  20. package/dist/types.mjs.map +1 -0
  21. package/dist/utils/check-install-path.js +28 -0
  22. package/dist/utils/check-install-path.js.map +1 -0
  23. package/dist/utils/check-install-path.mjs +26 -0
  24. package/dist/utils/check-install-path.mjs.map +1 -0
  25. package/dist/utils/check-requirements.js +26 -0
  26. package/dist/utils/check-requirements.js.map +1 -0
  27. package/dist/utils/check-requirements.mjs +24 -0
  28. package/dist/utils/check-requirements.mjs.map +1 -0
  29. package/dist/utils/database.js +190 -0
  30. package/dist/utils/database.js.map +1 -0
  31. package/dist/utils/database.mjs +187 -0
  32. package/dist/utils/database.mjs.map +1 -0
  33. package/dist/utils/dot-env.js +46 -0
  34. package/dist/utils/dot-env.js.map +1 -0
  35. package/dist/utils/dot-env.mjs +44 -0
  36. package/dist/utils/dot-env.mjs.map +1 -0
  37. package/dist/utils/engines.js +9 -0
  38. package/dist/utils/engines.js.map +1 -0
  39. package/dist/utils/engines.mjs +7 -0
  40. package/dist/utils/engines.mjs.map +1 -0
  41. package/dist/utils/get-package-manager-args.js +135 -0
  42. package/dist/utils/get-package-manager-args.js.map +1 -0
  43. package/dist/utils/get-package-manager-args.mjs +132 -0
  44. package/dist/utils/get-package-manager-args.mjs.map +1 -0
  45. package/dist/utils/git.js +73 -0
  46. package/dist/utils/git.js.map +1 -0
  47. package/dist/utils/git.mjs +71 -0
  48. package/dist/utils/git.mjs.map +1 -0
  49. package/dist/utils/gitignore.js +139 -0
  50. package/dist/utils/gitignore.js.map +1 -0
  51. package/dist/utils/gitignore.mjs +137 -0
  52. package/dist/utils/gitignore.mjs.map +1 -0
  53. package/dist/utils/logger.js +54 -0
  54. package/dist/utils/logger.js.map +1 -0
  55. package/dist/utils/logger.mjs +52 -0
  56. package/dist/utils/logger.mjs.map +1 -0
  57. package/dist/utils/machine-id.js +17 -0
  58. package/dist/utils/machine-id.js.map +1 -0
  59. package/dist/utils/machine-id.mjs +15 -0
  60. package/dist/utils/machine-id.mjs.map +1 -0
  61. package/dist/utils/package-json.js +32 -0
  62. package/dist/utils/package-json.js.map +1 -0
  63. package/dist/utils/package-json.mjs +30 -0
  64. package/dist/utils/package-json.mjs.map +1 -0
  65. package/dist/utils/parse-to-chalk.js +25 -0
  66. package/dist/utils/parse-to-chalk.js.map +1 -0
  67. package/dist/utils/parse-to-chalk.mjs +23 -0
  68. package/dist/utils/parse-to-chalk.mjs.map +1 -0
  69. package/dist/utils/template.js +180 -0
  70. package/dist/utils/template.js.map +1 -0
  71. package/dist/utils/template.mjs +159 -0
  72. package/dist/utils/template.mjs.map +1 -0
  73. package/dist/utils/usage.js +90 -0
  74. package/dist/utils/usage.js.map +1 -0
  75. package/dist/utils/usage.mjs +87 -0
  76. package/dist/utils/usage.mjs.map +1 -0
  77. package/package.json +4 -4
@@ -0,0 +1,137 @@
1
+ const baseGitIgnore = `
2
+ ############################
3
+ # OS X
4
+ ############################
5
+
6
+ .DS_Store
7
+ .AppleDouble
8
+ .LSOverride
9
+ Icon
10
+ .Spotlight-V100
11
+ .Trashes
12
+ ._*
13
+
14
+
15
+ ############################
16
+ # Linux
17
+ ############################
18
+
19
+ *~
20
+
21
+
22
+ ############################
23
+ # Windows
24
+ ############################
25
+
26
+ Thumbs.db
27
+ ehthumbs.db
28
+ Desktop.ini
29
+ $RECYCLE.BIN/
30
+ *.cab
31
+ *.msi
32
+ *.msm
33
+ *.msp
34
+
35
+
36
+ ############################
37
+ # Packages
38
+ ############################
39
+
40
+ *.7z
41
+ *.csv
42
+ *.dat
43
+ *.dmg
44
+ *.gz
45
+ *.iso
46
+ *.jar
47
+ *.rar
48
+ *.tar
49
+ *.zip
50
+ *.com
51
+ *.class
52
+ *.dll
53
+ *.exe
54
+ *.o
55
+ *.seed
56
+ *.so
57
+ *.swo
58
+ *.swp
59
+ *.swn
60
+ *.swm
61
+ *.out
62
+ *.pid
63
+
64
+
65
+ ############################
66
+ # Logs and databases
67
+ ############################
68
+
69
+ .tmp
70
+ *.log
71
+ *.sql
72
+ *.sqlite
73
+ *.sqlite3
74
+
75
+
76
+ ############################
77
+ # Misc.
78
+ ############################
79
+
80
+ *#
81
+ ssl
82
+ .idea
83
+ nbproject
84
+ public/uploads/*
85
+ !public/uploads/.gitkeep
86
+ .tsbuildinfo
87
+ .eslintcache
88
+
89
+ ############################
90
+ # Node.js
91
+ ############################
92
+
93
+ lib-cov
94
+ lcov.info
95
+ pids
96
+ logs
97
+ results
98
+ node_modules
99
+ .node_history
100
+
101
+ ############################
102
+ # Package managers
103
+ ############################
104
+
105
+ .yarn/*
106
+ !.yarn/cache
107
+ !.yarn/unplugged
108
+ !.yarn/patches
109
+ !.yarn/releases
110
+ !.yarn/sdks
111
+ !.yarn/versions
112
+ .pnp.*
113
+ yarn-error.log
114
+
115
+ ############################
116
+ # Tests
117
+ ############################
118
+
119
+ coverage
120
+
121
+ ############################
122
+ # Strapi
123
+ ############################
124
+
125
+ .env
126
+ license.txt
127
+ exports
128
+ .strapi
129
+ dist
130
+ build
131
+ .strapi-updater.json
132
+ .strapi-cloud.json
133
+ `;
134
+ const gitIgnore = baseGitIgnore.trim();
135
+
136
+ export { gitIgnore };
137
+ //# sourceMappingURL=gitignore.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitignore.mjs","sources":["../../src/utils/gitignore.ts"],"sourcesContent":["const baseGitIgnore = `\n############################\n# OS X\n############################\n\n.DS_Store\n.AppleDouble\n.LSOverride\nIcon\n.Spotlight-V100\n.Trashes\n._*\n\n\n############################\n# Linux\n############################\n\n*~\n\n\n############################\n# Windows\n############################\n\nThumbs.db\nehthumbs.db\nDesktop.ini\n$RECYCLE.BIN/\n*.cab\n*.msi\n*.msm\n*.msp\n\n\n############################\n# Packages\n############################\n\n*.7z\n*.csv\n*.dat\n*.dmg\n*.gz\n*.iso\n*.jar\n*.rar\n*.tar\n*.zip\n*.com\n*.class\n*.dll\n*.exe\n*.o\n*.seed\n*.so\n*.swo\n*.swp\n*.swn\n*.swm\n*.out\n*.pid\n\n\n############################\n# Logs and databases\n############################\n\n.tmp\n*.log\n*.sql\n*.sqlite\n*.sqlite3\n\n\n############################\n# Misc.\n############################\n\n*#\nssl\n.idea\nnbproject\npublic/uploads/*\n!public/uploads/.gitkeep\n.tsbuildinfo\n.eslintcache\n\n############################\n# Node.js\n############################\n\nlib-cov\nlcov.info\npids\nlogs\nresults\nnode_modules\n.node_history\n\n############################\n# Package managers\n############################\n\n.yarn/*\n!.yarn/cache\n!.yarn/unplugged\n!.yarn/patches\n!.yarn/releases\n!.yarn/sdks\n!.yarn/versions\n.pnp.*\nyarn-error.log\n\n############################\n# Tests\n############################\n\ncoverage\n\n############################\n# Strapi\n############################\n\n.env\nlicense.txt\nexports\n.strapi\ndist\nbuild\n.strapi-updater.json\n.strapi-cloud.json\n`;\n\nexport const gitIgnore = baseGitIgnore.trim();\n"],"names":["baseGitIgnore","gitIgnore","trim"],"mappings":"AAAA,MAAMA,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoItB,CAAC;AAEYC,MAAAA,SAAAA,GAAYD,aAAcE,CAAAA,IAAI;;;;"}
@@ -0,0 +1,54 @@
1
+ 'use strict';
2
+
3
+ var chalk = require('chalk');
4
+
5
+ const MAX_PREFIX_LENGTH = 8;
6
+ const badge = (text, bgColor, textColor = chalk.black)=>{
7
+ const wrappedText = ` ${text} `;
8
+ const repeat = Math.max(0, MAX_PREFIX_LENGTH - wrappedText.length);
9
+ return ' '.repeat(repeat) + bgColor(textColor(wrappedText));
10
+ };
11
+ const textIndent = (text, indentFirst = true, indent = MAX_PREFIX_LENGTH + 2)=>{
12
+ const parts = Array.isArray(text) ? text : [
13
+ text
14
+ ];
15
+ return parts.map((part, i)=>{
16
+ if (i === 0 && !indentFirst) {
17
+ return part;
18
+ }
19
+ return ' '.repeat(indent) + part;
20
+ }).join('\n');
21
+ };
22
+ const logger = {
23
+ log (message) {
24
+ console.log(textIndent(message));
25
+ },
26
+ title (title, message) {
27
+ const prefix = badge(title, chalk.bgBlueBright);
28
+ console.log(`\n${prefix} ${message}`);
29
+ },
30
+ info (message) {
31
+ console.log(`${' '.repeat(7)}${chalk.cyan('●')} ${message}`);
32
+ },
33
+ success (message) {
34
+ console.log(`\n${' '.repeat(7)}${chalk.green('✓')} ${chalk.green(message)}`);
35
+ },
36
+ fatal (message) {
37
+ const prefix = badge('Error', chalk.bgRed);
38
+ if (message) {
39
+ console.error(`\n${prefix} ${textIndent(message, false)}\n`);
40
+ }
41
+ process.exit(1);
42
+ },
43
+ error (message) {
44
+ const prefix = badge('Error', chalk.bgRed);
45
+ console.error(`\n${prefix} ${textIndent(message, false)}\n`);
46
+ },
47
+ warn (message) {
48
+ const prefix = badge('Warn', chalk.bgYellow);
49
+ console.warn(`\n${prefix} ${textIndent(message, false)}\n`);
50
+ }
51
+ };
52
+
53
+ exports.logger = logger;
54
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sources":["../../src/utils/logger.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { ChalkFunction } from 'chalk';\n\nconst MAX_PREFIX_LENGTH = 8;\n\nconst badge = (text: string, bgColor: ChalkFunction, textColor: ChalkFunction = chalk.black) => {\n const wrappedText = ` ${text} `;\n\n const repeat = Math.max(0, MAX_PREFIX_LENGTH - wrappedText.length);\n\n return ' '.repeat(repeat) + bgColor(textColor(wrappedText));\n};\n\nconst textIndent = (\n text: string | string[],\n indentFirst = true,\n indent: number = MAX_PREFIX_LENGTH + 2\n) => {\n const parts = Array.isArray(text) ? text : [text];\n\n return parts\n .map((part, i) => {\n if (i === 0 && !indentFirst) {\n return part;\n }\n\n return ' '.repeat(indent) + part;\n })\n .join('\\n');\n};\n\nexport const logger = {\n log(message: string | string[]): void {\n console.log(textIndent(message));\n },\n title(title: string, message: string): void {\n const prefix = badge(title, chalk.bgBlueBright);\n console.log(`\\n${prefix} ${message}`);\n },\n info(message: string): void {\n console.log(`${' '.repeat(7)}${chalk.cyan('●')} ${message}`);\n },\n success(message: string): void {\n console.log(`\\n${' '.repeat(7)}${chalk.green('✓')} ${chalk.green(message)}`);\n },\n fatal(message?: string | string[]): never {\n const prefix = badge('Error', chalk.bgRed);\n\n if (message) {\n console.error(`\\n${prefix} ${textIndent(message, false)}\\n`);\n }\n\n process.exit(1);\n },\n error(message: string | string[]): void {\n const prefix = badge('Error', chalk.bgRed);\n console.error(`\\n${prefix} ${textIndent(message, false)}\\n`);\n },\n warn(message: string | string[]): void {\n const prefix = badge('Warn', chalk.bgYellow);\n console.warn(`\\n${prefix} ${textIndent(message, false)}\\n`);\n },\n};\n"],"names":["MAX_PREFIX_LENGTH","badge","text","bgColor","textColor","chalk","black","wrappedText","repeat","Math","max","length","textIndent","indentFirst","indent","parts","Array","isArray","map","part","i","join","logger","log","message","console","title","prefix","bgBlueBright","info","cyan","success","green","fatal","bgRed","error","process","exit","warn","bgYellow"],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import chalk from 'chalk';
2
+
3
+ const MAX_PREFIX_LENGTH = 8;
4
+ const badge = (text, bgColor, textColor = chalk.black)=>{
5
+ const wrappedText = ` ${text} `;
6
+ const repeat = Math.max(0, MAX_PREFIX_LENGTH - wrappedText.length);
7
+ return ' '.repeat(repeat) + bgColor(textColor(wrappedText));
8
+ };
9
+ const textIndent = (text, indentFirst = true, indent = MAX_PREFIX_LENGTH + 2)=>{
10
+ const parts = Array.isArray(text) ? text : [
11
+ text
12
+ ];
13
+ return parts.map((part, i)=>{
14
+ if (i === 0 && !indentFirst) {
15
+ return part;
16
+ }
17
+ return ' '.repeat(indent) + part;
18
+ }).join('\n');
19
+ };
20
+ const logger = {
21
+ log (message) {
22
+ console.log(textIndent(message));
23
+ },
24
+ title (title, message) {
25
+ const prefix = badge(title, chalk.bgBlueBright);
26
+ console.log(`\n${prefix} ${message}`);
27
+ },
28
+ info (message) {
29
+ console.log(`${' '.repeat(7)}${chalk.cyan('●')} ${message}`);
30
+ },
31
+ success (message) {
32
+ console.log(`\n${' '.repeat(7)}${chalk.green('✓')} ${chalk.green(message)}`);
33
+ },
34
+ fatal (message) {
35
+ const prefix = badge('Error', chalk.bgRed);
36
+ if (message) {
37
+ console.error(`\n${prefix} ${textIndent(message, false)}\n`);
38
+ }
39
+ process.exit(1);
40
+ },
41
+ error (message) {
42
+ const prefix = badge('Error', chalk.bgRed);
43
+ console.error(`\n${prefix} ${textIndent(message, false)}\n`);
44
+ },
45
+ warn (message) {
46
+ const prefix = badge('Warn', chalk.bgYellow);
47
+ console.warn(`\n${prefix} ${textIndent(message, false)}\n`);
48
+ }
49
+ };
50
+
51
+ export { logger };
52
+ //# sourceMappingURL=logger.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.mjs","sources":["../../src/utils/logger.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { ChalkFunction } from 'chalk';\n\nconst MAX_PREFIX_LENGTH = 8;\n\nconst badge = (text: string, bgColor: ChalkFunction, textColor: ChalkFunction = chalk.black) => {\n const wrappedText = ` ${text} `;\n\n const repeat = Math.max(0, MAX_PREFIX_LENGTH - wrappedText.length);\n\n return ' '.repeat(repeat) + bgColor(textColor(wrappedText));\n};\n\nconst textIndent = (\n text: string | string[],\n indentFirst = true,\n indent: number = MAX_PREFIX_LENGTH + 2\n) => {\n const parts = Array.isArray(text) ? text : [text];\n\n return parts\n .map((part, i) => {\n if (i === 0 && !indentFirst) {\n return part;\n }\n\n return ' '.repeat(indent) + part;\n })\n .join('\\n');\n};\n\nexport const logger = {\n log(message: string | string[]): void {\n console.log(textIndent(message));\n },\n title(title: string, message: string): void {\n const prefix = badge(title, chalk.bgBlueBright);\n console.log(`\\n${prefix} ${message}`);\n },\n info(message: string): void {\n console.log(`${' '.repeat(7)}${chalk.cyan('●')} ${message}`);\n },\n success(message: string): void {\n console.log(`\\n${' '.repeat(7)}${chalk.green('✓')} ${chalk.green(message)}`);\n },\n fatal(message?: string | string[]): never {\n const prefix = badge('Error', chalk.bgRed);\n\n if (message) {\n console.error(`\\n${prefix} ${textIndent(message, false)}\\n`);\n }\n\n process.exit(1);\n },\n error(message: string | string[]): void {\n const prefix = badge('Error', chalk.bgRed);\n console.error(`\\n${prefix} ${textIndent(message, false)}\\n`);\n },\n warn(message: string | string[]): void {\n const prefix = badge('Warn', chalk.bgYellow);\n console.warn(`\\n${prefix} ${textIndent(message, false)}\\n`);\n },\n};\n"],"names":["MAX_PREFIX_LENGTH","badge","text","bgColor","textColor","chalk","black","wrappedText","repeat","Math","max","length","textIndent","indentFirst","indent","parts","Array","isArray","map","part","i","join","logger","log","message","console","title","prefix","bgBlueBright","info","cyan","success","green","fatal","bgRed","error","process","exit","warn","bgYellow"],"mappings":";;AAGA,MAAMA,iBAAoB,GAAA,CAAA;AAE1B,MAAMC,QAAQ,CAACC,IAAAA,EAAcC,OAAwBC,EAAAA,SAAAA,GAA2BC,MAAMC,KAAK,GAAA;AACzF,IAAA,MAAMC,cAAc,CAAC,CAAC,EAAEL,IAAAA,CAAK,CAAC,CAAC;AAE/B,IAAA,MAAMM,SAASC,IAAKC,CAAAA,GAAG,CAAC,CAAGV,EAAAA,iBAAAA,GAAoBO,YAAYI,MAAM,CAAA;AAEjE,IAAA,OAAO,GAAIH,CAAAA,MAAM,CAACA,MAAAA,CAAAA,GAAUL,QAAQC,SAAUG,CAAAA,WAAAA,CAAAA,CAAAA;AAChD,CAAA;AAEA,MAAMK,UAAAA,GAAa,CACjBV,IACAW,EAAAA,WAAAA,GAAc,IAAI,EAClBC,MAAAA,GAAiBd,oBAAoB,CAAC,GAAA;AAEtC,IAAA,MAAMe,KAAQC,GAAAA,KAAAA,CAAMC,OAAO,CAACf,QAAQA,IAAO,GAAA;AAACA,QAAAA;AAAK,KAAA;AAEjD,IAAA,OAAOa,KACJG,CAAAA,GAAG,CAAC,CAACC,IAAMC,EAAAA,CAAAA,GAAAA;QACV,IAAIA,CAAAA,KAAM,CAAK,IAAA,CAACP,WAAa,EAAA;YAC3B,OAAOM,IAAAA;AACT;QAEA,OAAO,GAAA,CAAIX,MAAM,CAACM,MAAUK,CAAAA,GAAAA,IAAAA;AAC9B,KAAA,CAAA,CACCE,IAAI,CAAC,IAAA,CAAA;AACV,CAAA;MAEaC,MAAS,GAAA;AACpBC,IAAAA,GAAAA,CAAAA,CAAIC,OAA0B,EAAA;QAC5BC,OAAQF,CAAAA,GAAG,CAACX,UAAWY,CAAAA,OAAAA,CAAAA,CAAAA;AACzB,KAAA;IACAE,KAAMA,CAAAA,CAAAA,KAAa,EAAEF,OAAe,EAAA;AAClC,QAAA,MAAMG,MAAS1B,GAAAA,KAAAA,CAAMyB,KAAOrB,EAAAA,KAAAA,CAAMuB,YAAY,CAAA;QAC9CH,OAAQF,CAAAA,GAAG,CAAC,CAAC,EAAE,EAAEI,MAAO,CAAA,EAAE,EAAEH,OAAAA,CAAQ,CAAC,CAAA;AACvC,KAAA;AACAK,IAAAA,IAAAA,CAAAA,CAAKL,OAAe,EAAA;AAClBC,QAAAA,OAAAA,CAAQF,GAAG,CAAC,CAAC,EAAE,GAAA,CAAIf,MAAM,CAAC,CAAA,CAAA,CAAG,EAAEH,KAAAA,CAAMyB,IAAI,CAAC,GAAA,CAAA,CAAK,EAAE,EAAEN,QAAQ,CAAC,CAAA;AAC9D,KAAA;AACAO,IAAAA,OAAAA,CAAAA,CAAQP,OAAe,EAAA;QACrBC,OAAQF,CAAAA,GAAG,CAAC,CAAC,EAAE,EAAE,GAAIf,CAAAA,MAAM,CAAC,CAAG,CAAA,CAAA,EAAEH,MAAM2B,KAAK,CAAC,KAAK,EAAE,EAAE3B,MAAM2B,KAAK,CAACR,SAAS,CAAC,CAAA;AAC9E,KAAA;AACAS,IAAAA,KAAAA,CAAAA,CAAMT,OAA2B,EAAA;AAC/B,QAAA,MAAMG,MAAS1B,GAAAA,KAAAA,CAAM,OAASI,EAAAA,KAAAA,CAAM6B,KAAK,CAAA;AAEzC,QAAA,IAAIV,OAAS,EAAA;AACXC,YAAAA,OAAAA,CAAQU,KAAK,CAAC,CAAC,EAAE,EAAER,MAAAA,CAAO,EAAE,EAAEf,UAAWY,CAAAA,OAAAA,EAAS,KAAO,CAAA,CAAA,EAAE,CAAC,CAAA;AAC9D;AAEAY,QAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,KAAA;AACAF,IAAAA,KAAAA,CAAAA,CAAMX,OAA0B,EAAA;AAC9B,QAAA,MAAMG,MAAS1B,GAAAA,KAAAA,CAAM,OAASI,EAAAA,KAAAA,CAAM6B,KAAK,CAAA;AACzCT,QAAAA,OAAAA,CAAQU,KAAK,CAAC,CAAC,EAAE,EAAER,MAAAA,CAAO,EAAE,EAAEf,UAAWY,CAAAA,OAAAA,EAAS,KAAO,CAAA,CAAA,EAAE,CAAC,CAAA;AAC9D,KAAA;AACAc,IAAAA,IAAAA,CAAAA,CAAKd,OAA0B,EAAA;AAC7B,QAAA,MAAMG,MAAS1B,GAAAA,KAAAA,CAAM,MAAQI,EAAAA,KAAAA,CAAMkC,QAAQ,CAAA;AAC3Cd,QAAAA,OAAAA,CAAQa,IAAI,CAAC,CAAC,EAAE,EAAEX,MAAAA,CAAO,EAAE,EAAEf,UAAWY,CAAAA,OAAAA,EAAS,KAAO,CAAA,CAAA,EAAE,CAAC,CAAA;AAC7D;AACF;;;;"}
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ var crypto = require('crypto');
4
+ var nodeMachineId = require('node-machine-id');
5
+
6
+ function machineID() {
7
+ try {
8
+ const deviceId = nodeMachineId.machineIdSync();
9
+ return deviceId;
10
+ } catch (error) {
11
+ const deviceId = crypto.randomUUID();
12
+ return deviceId;
13
+ }
14
+ }
15
+
16
+ exports.machineID = machineID;
17
+ //# sourceMappingURL=machine-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machine-id.js","sources":["../../src/utils/machine-id.ts"],"sourcesContent":["import { randomUUID } from 'crypto';\nimport { machineIdSync } from 'node-machine-id';\n\nexport function machineID() {\n try {\n const deviceId = machineIdSync();\n return deviceId;\n } catch (error) {\n const deviceId = randomUUID();\n return deviceId;\n }\n}\n"],"names":["machineID","deviceId","machineIdSync","error","randomUUID"],"mappings":";;;;;AAGO,SAASA,SAAAA,GAAAA;IACd,IAAI;AACF,QAAA,MAAMC,QAAWC,GAAAA,2BAAAA,EAAAA;QACjB,OAAOD,QAAAA;AACT,KAAA,CAAE,OAAOE,KAAO,EAAA;AACd,QAAA,MAAMF,QAAWG,GAAAA,iBAAAA,EAAAA;QACjB,OAAOH,QAAAA;AACT;AACF;;;;"}
@@ -0,0 +1,15 @@
1
+ import { randomUUID } from 'crypto';
2
+ import { machineIdSync } from 'node-machine-id';
3
+
4
+ function machineID() {
5
+ try {
6
+ const deviceId = machineIdSync();
7
+ return deviceId;
8
+ } catch (error) {
9
+ const deviceId = randomUUID();
10
+ return deviceId;
11
+ }
12
+ }
13
+
14
+ export { machineID };
15
+ //# sourceMappingURL=machine-id.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machine-id.mjs","sources":["../../src/utils/machine-id.ts"],"sourcesContent":["import { randomUUID } from 'crypto';\nimport { machineIdSync } from 'node-machine-id';\n\nexport function machineID() {\n try {\n const deviceId = machineIdSync();\n return deviceId;\n } catch (error) {\n const deviceId = randomUUID();\n return deviceId;\n }\n}\n"],"names":["machineID","deviceId","machineIdSync","error","randomUUID"],"mappings":";;;AAGO,SAASA,SAAAA,GAAAA;IACd,IAAI;AACF,QAAA,MAAMC,QAAWC,GAAAA,aAAAA,EAAAA;QACjB,OAAOD,QAAAA;AACT,KAAA,CAAE,OAAOE,KAAO,EAAA;AACd,QAAA,MAAMF,QAAWG,GAAAA,UAAAA,EAAAA;QACjB,OAAOH,QAAAA;AACT;AACF;;;;"}
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var path = require('path');
4
+ var _ = require('lodash');
5
+ var fse = require('fs-extra');
6
+ var engines = require('./engines.js');
7
+
8
+ async function createPackageJSON(scope) {
9
+ const { sortPackageJson } = await import('sort-package-json');
10
+ const pkgJSONPath = path.join(scope.rootPath, 'package.json');
11
+ const existingPkg = await fse.readJSON(pkgJSONPath).catch(()=>({}));
12
+ const pkg = {
13
+ name: _.kebabCase(scope.name),
14
+ private: true,
15
+ version: '0.1.0',
16
+ description: 'A Strapi application',
17
+ devDependencies: scope.devDependencies ?? {},
18
+ dependencies: scope.dependencies ?? {},
19
+ strapi: {
20
+ ...scope.packageJsonStrapi ?? {},
21
+ uuid: scope.uuid
22
+ },
23
+ engines: engines.engines
24
+ };
25
+ // copy templates
26
+ await fse.writeJSON(pkgJSONPath, sortPackageJson(_.merge(existingPkg, pkg)), {
27
+ spaces: 2
28
+ });
29
+ }
30
+
31
+ exports.createPackageJSON = createPackageJSON;
32
+ //# sourceMappingURL=package-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-json.js","sources":["../../src/utils/package-json.ts"],"sourcesContent":["import { join } from 'path';\nimport { kebabCase, merge } from 'lodash';\nimport fse from 'fs-extra';\n\nimport { engines } from './engines';\nimport type { Scope } from '../types';\n\nexport async function createPackageJSON(scope: Scope) {\n const { sortPackageJson } = await import('sort-package-json');\n\n const pkgJSONPath = join(scope.rootPath, 'package.json');\n\n const existingPkg = await fse.readJSON(pkgJSONPath).catch(() => ({}));\n\n const pkg = {\n name: kebabCase(scope.name),\n private: true,\n version: '0.1.0',\n description: 'A Strapi application',\n devDependencies: scope.devDependencies ?? {},\n dependencies: scope.dependencies ?? {},\n strapi: {\n ...(scope.packageJsonStrapi ?? {}),\n uuid: scope.uuid,\n },\n engines,\n };\n\n // copy templates\n await fse.writeJSON(pkgJSONPath, sortPackageJson(merge(existingPkg, pkg)), {\n spaces: 2,\n });\n}\n"],"names":["createPackageJSON","scope","sortPackageJson","pkgJSONPath","join","rootPath","existingPkg","fse","readJSON","catch","pkg","name","kebabCase","private","version","description","devDependencies","dependencies","strapi","packageJsonStrapi","uuid","engines","writeJSON","merge","spaces"],"mappings":";;;;;;;AAOO,eAAeA,kBAAkBC,KAAY,EAAA;AAClD,IAAA,MAAM,EAAEC,eAAe,EAAE,GAAG,MAAM,OAAO,mBAAA,CAAA;AAEzC,IAAA,MAAMC,WAAcC,GAAAA,SAAAA,CAAKH,KAAMI,CAAAA,QAAQ,EAAE,cAAA,CAAA;IAEzC,MAAMC,WAAAA,GAAc,MAAMC,GAAAA,CAAIC,QAAQ,CAACL,WAAaM,CAAAA,CAAAA,KAAK,CAAC,KAAO,EAAC,CAAA,CAAA;AAElE,IAAA,MAAMC,GAAM,GAAA;QACVC,IAAMC,EAAAA,WAAAA,CAAUX,MAAMU,IAAI,CAAA;QAC1BE,OAAS,EAAA,IAAA;QACTC,OAAS,EAAA,OAAA;QACTC,WAAa,EAAA,sBAAA;QACbC,eAAiBf,EAAAA,KAAAA,CAAMe,eAAe,IAAI,EAAC;QAC3CC,YAAchB,EAAAA,KAAAA,CAAMgB,YAAY,IAAI,EAAC;QACrCC,MAAQ,EAAA;AACN,YAAA,GAAIjB,KAAMkB,CAAAA,iBAAiB,IAAI,EAAE;AACjCC,YAAAA,IAAAA,EAAMnB,MAAMmB;AACd,SAAA;AACAC,iBAAAA;AACF,KAAA;;AAGA,IAAA,MAAMd,IAAIe,SAAS,CAACnB,aAAaD,eAAgBqB,CAAAA,OAAAA,CAAMjB,aAAaI,GAAO,CAAA,CAAA,EAAA;QACzEc,MAAQ,EAAA;AACV,KAAA,CAAA;AACF;;;;"}
@@ -0,0 +1,30 @@
1
+ import { join } from 'path';
2
+ import { kebabCase, merge } from 'lodash';
3
+ import fse from 'fs-extra';
4
+ import { engines } from './engines.mjs';
5
+
6
+ async function createPackageJSON(scope) {
7
+ const { sortPackageJson } = await import('sort-package-json');
8
+ const pkgJSONPath = join(scope.rootPath, 'package.json');
9
+ const existingPkg = await fse.readJSON(pkgJSONPath).catch(()=>({}));
10
+ const pkg = {
11
+ name: kebabCase(scope.name),
12
+ private: true,
13
+ version: '0.1.0',
14
+ description: 'A Strapi application',
15
+ devDependencies: scope.devDependencies ?? {},
16
+ dependencies: scope.dependencies ?? {},
17
+ strapi: {
18
+ ...scope.packageJsonStrapi ?? {},
19
+ uuid: scope.uuid
20
+ },
21
+ engines
22
+ };
23
+ // copy templates
24
+ await fse.writeJSON(pkgJSONPath, sortPackageJson(merge(existingPkg, pkg)), {
25
+ spaces: 2
26
+ });
27
+ }
28
+
29
+ export { createPackageJSON };
30
+ //# sourceMappingURL=package-json.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-json.mjs","sources":["../../src/utils/package-json.ts"],"sourcesContent":["import { join } from 'path';\nimport { kebabCase, merge } from 'lodash';\nimport fse from 'fs-extra';\n\nimport { engines } from './engines';\nimport type { Scope } from '../types';\n\nexport async function createPackageJSON(scope: Scope) {\n const { sortPackageJson } = await import('sort-package-json');\n\n const pkgJSONPath = join(scope.rootPath, 'package.json');\n\n const existingPkg = await fse.readJSON(pkgJSONPath).catch(() => ({}));\n\n const pkg = {\n name: kebabCase(scope.name),\n private: true,\n version: '0.1.0',\n description: 'A Strapi application',\n devDependencies: scope.devDependencies ?? {},\n dependencies: scope.dependencies ?? {},\n strapi: {\n ...(scope.packageJsonStrapi ?? {}),\n uuid: scope.uuid,\n },\n engines,\n };\n\n // copy templates\n await fse.writeJSON(pkgJSONPath, sortPackageJson(merge(existingPkg, pkg)), {\n spaces: 2,\n });\n}\n"],"names":["createPackageJSON","scope","sortPackageJson","pkgJSONPath","join","rootPath","existingPkg","fse","readJSON","catch","pkg","name","kebabCase","private","version","description","devDependencies","dependencies","strapi","packageJsonStrapi","uuid","engines","writeJSON","merge","spaces"],"mappings":";;;;;AAOO,eAAeA,kBAAkBC,KAAY,EAAA;AAClD,IAAA,MAAM,EAAEC,eAAe,EAAE,GAAG,MAAM,OAAO,mBAAA,CAAA;AAEzC,IAAA,MAAMC,WAAcC,GAAAA,IAAAA,CAAKH,KAAMI,CAAAA,QAAQ,EAAE,cAAA,CAAA;IAEzC,MAAMC,WAAAA,GAAc,MAAMC,GAAAA,CAAIC,QAAQ,CAACL,WAAaM,CAAAA,CAAAA,KAAK,CAAC,KAAO,EAAC,CAAA,CAAA;AAElE,IAAA,MAAMC,GAAM,GAAA;QACVC,IAAMC,EAAAA,SAAAA,CAAUX,MAAMU,IAAI,CAAA;QAC1BE,OAAS,EAAA,IAAA;QACTC,OAAS,EAAA,OAAA;QACTC,WAAa,EAAA,sBAAA;QACbC,eAAiBf,EAAAA,KAAAA,CAAMe,eAAe,IAAI,EAAC;QAC3CC,YAAchB,EAAAA,KAAAA,CAAMgB,YAAY,IAAI,EAAC;QACrCC,MAAQ,EAAA;AACN,YAAA,GAAIjB,KAAMkB,CAAAA,iBAAiB,IAAI,EAAE;AACjCC,YAAAA,IAAAA,EAAMnB,MAAMmB;AACd,SAAA;AACAC,QAAAA;AACF,KAAA;;AAGA,IAAA,MAAMd,IAAIe,SAAS,CAACnB,aAAaD,eAAgBqB,CAAAA,KAAAA,CAAMjB,aAAaI,GAAO,CAAA,CAAA,EAAA;QACzEc,MAAQ,EAAA;AACV,KAAA,CAAA;AACF;;;;"}
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ var chalk = require('chalk');
4
+
5
+ // TODO: move styles to API
6
+ const supportedStyles = {
7
+ magentaBright: chalk.magentaBright,
8
+ blueBright: chalk.blueBright,
9
+ yellowBright: chalk.yellowBright,
10
+ green: chalk.green,
11
+ red: chalk.red,
12
+ bold: chalk.bold,
13
+ italic: chalk.italic
14
+ };
15
+ function parseToChalk(template) {
16
+ let result = template;
17
+ for (const [color, chalkFunction] of Object.entries(supportedStyles)){
18
+ const regex = new RegExp(`{${color}}(.*?){/${color}}`, 'g');
19
+ result = result.replace(regex, (_, p1)=>chalkFunction(p1.trim()));
20
+ }
21
+ return result;
22
+ }
23
+
24
+ module.exports = parseToChalk;
25
+ //# sourceMappingURL=parse-to-chalk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-to-chalk.js","sources":["../../src/utils/parse-to-chalk.ts"],"sourcesContent":["import chalk from 'chalk';\n\n// TODO: move styles to API\n\nconst supportedStyles = {\n magentaBright: chalk.magentaBright,\n blueBright: chalk.blueBright,\n yellowBright: chalk.yellowBright,\n green: chalk.green,\n red: chalk.red,\n bold: chalk.bold,\n italic: chalk.italic,\n};\n\nexport default function parseToChalk(template: string) {\n let result = template;\n\n for (const [color, chalkFunction] of Object.entries(supportedStyles)) {\n const regex = new RegExp(`{${color}}(.*?){/${color}}`, 'g');\n result = result.replace(regex, (_, p1) => chalkFunction(p1.trim()));\n }\n\n return result;\n}\n"],"names":["supportedStyles","magentaBright","chalk","blueBright","yellowBright","green","red","bold","italic","parseToChalk","template","result","color","chalkFunction","Object","entries","regex","RegExp","replace","_","p1","trim"],"mappings":";;;;AAEA;AAEA,MAAMA,eAAkB,GAAA;AACtBC,IAAAA,aAAAA,EAAeC,MAAMD,aAAa;AAClCE,IAAAA,UAAAA,EAAYD,MAAMC,UAAU;AAC5BC,IAAAA,YAAAA,EAAcF,MAAME,YAAY;AAChCC,IAAAA,KAAAA,EAAOH,MAAMG,KAAK;AAClBC,IAAAA,GAAAA,EAAKJ,MAAMI,GAAG;AACdC,IAAAA,IAAAA,EAAML,MAAMK,IAAI;AAChBC,IAAAA,MAAAA,EAAQN,MAAMM;AAChB,CAAA;AAEe,SAASC,aAAaC,QAAgB,EAAA;AACnD,IAAA,IAAIC,MAASD,GAAAA,QAAAA;IAEb,KAAK,MAAM,CAACE,KAAOC,EAAAA,aAAAA,CAAc,IAAIC,MAAOC,CAAAA,OAAO,CAACf,eAAkB,CAAA,CAAA;AACpE,QAAA,MAAMgB,KAAQ,GAAA,IAAIC,MAAO,CAAA,CAAC,CAAC,EAAEL,KAAM,CAAA,QAAQ,EAAEA,KAAAA,CAAM,CAAC,CAAC,EAAE,GAAA,CAAA;QACvDD,MAASA,GAAAA,MAAAA,CAAOO,OAAO,CAACF,KAAAA,EAAO,CAACG,CAAGC,EAAAA,EAAAA,GAAOP,aAAcO,CAAAA,EAAAA,CAAGC,IAAI,EAAA,CAAA,CAAA;AACjE;IAEA,OAAOV,MAAAA;AACT;;;;"}
@@ -0,0 +1,23 @@
1
+ import chalk from 'chalk';
2
+
3
+ // TODO: move styles to API
4
+ const supportedStyles = {
5
+ magentaBright: chalk.magentaBright,
6
+ blueBright: chalk.blueBright,
7
+ yellowBright: chalk.yellowBright,
8
+ green: chalk.green,
9
+ red: chalk.red,
10
+ bold: chalk.bold,
11
+ italic: chalk.italic
12
+ };
13
+ function parseToChalk(template) {
14
+ let result = template;
15
+ for (const [color, chalkFunction] of Object.entries(supportedStyles)){
16
+ const regex = new RegExp(`{${color}}(.*?){/${color}}`, 'g');
17
+ result = result.replace(regex, (_, p1)=>chalkFunction(p1.trim()));
18
+ }
19
+ return result;
20
+ }
21
+
22
+ export { parseToChalk as default };
23
+ //# sourceMappingURL=parse-to-chalk.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-to-chalk.mjs","sources":["../../src/utils/parse-to-chalk.ts"],"sourcesContent":["import chalk from 'chalk';\n\n// TODO: move styles to API\n\nconst supportedStyles = {\n magentaBright: chalk.magentaBright,\n blueBright: chalk.blueBright,\n yellowBright: chalk.yellowBright,\n green: chalk.green,\n red: chalk.red,\n bold: chalk.bold,\n italic: chalk.italic,\n};\n\nexport default function parseToChalk(template: string) {\n let result = template;\n\n for (const [color, chalkFunction] of Object.entries(supportedStyles)) {\n const regex = new RegExp(`{${color}}(.*?){/${color}}`, 'g');\n result = result.replace(regex, (_, p1) => chalkFunction(p1.trim()));\n }\n\n return result;\n}\n"],"names":["supportedStyles","magentaBright","chalk","blueBright","yellowBright","green","red","bold","italic","parseToChalk","template","result","color","chalkFunction","Object","entries","regex","RegExp","replace","_","p1","trim"],"mappings":";;AAEA;AAEA,MAAMA,eAAkB,GAAA;AACtBC,IAAAA,aAAAA,EAAeC,MAAMD,aAAa;AAClCE,IAAAA,UAAAA,EAAYD,MAAMC,UAAU;AAC5BC,IAAAA,YAAAA,EAAcF,MAAME,YAAY;AAChCC,IAAAA,KAAAA,EAAOH,MAAMG,KAAK;AAClBC,IAAAA,GAAAA,EAAKJ,MAAMI,GAAG;AACdC,IAAAA,IAAAA,EAAML,MAAMK,IAAI;AAChBC,IAAAA,MAAAA,EAAQN,MAAMM;AAChB,CAAA;AAEe,SAASC,aAAaC,QAAgB,EAAA;AACnD,IAAA,IAAIC,MAASD,GAAAA,QAAAA;IAEb,KAAK,MAAM,CAACE,KAAOC,EAAAA,aAAAA,CAAc,IAAIC,MAAOC,CAAAA,OAAO,CAACf,eAAkB,CAAA,CAAA;AACpE,QAAA,MAAMgB,KAAQ,GAAA,IAAIC,MAAO,CAAA,CAAC,CAAC,EAAEL,KAAM,CAAA,QAAQ,EAAEA,KAAAA,CAAM,CAAC,CAAC,EAAE,GAAA,CAAA;QACvDD,MAASA,GAAAA,MAAAA,CAAOO,OAAO,CAACF,KAAAA,EAAO,CAACG,CAAGC,EAAAA,EAAAA,GAAOP,aAAcO,CAAAA,EAAAA,CAAGC,IAAI,EAAA,CAAA,CAAA;AACjE;IAEA,OAAOV,MAAAA;AACT;;;;"}
@@ -0,0 +1,180 @@
1
+ 'use strict';
2
+
3
+ var path = require('node:path');
4
+ var url = require('node:url');
5
+ var node_stream = require('node:stream');
6
+ var promises = require('node:stream/promises');
7
+ var tar = require('tar');
8
+ var retry = require('async-retry');
9
+ var fse = require('fs-extra');
10
+
11
+ function _interopNamespaceDefault(e) {
12
+ var n = Object.create(null);
13
+ if (e) {
14
+ Object.keys(e).forEach(function (k) {
15
+ if (k !== 'default') {
16
+ var d = Object.getOwnPropertyDescriptor(e, k);
17
+ Object.defineProperty(n, k, d.get ? d : {
18
+ enumerable: true,
19
+ get: function () { return e[k]; }
20
+ });
21
+ }
22
+ });
23
+ }
24
+ n.default = e;
25
+ return Object.freeze(n);
26
+ }
27
+
28
+ var tar__namespace = /*#__PURE__*/_interopNamespaceDefault(tar);
29
+
30
+ const stripTrailingSlash = (str)=>{
31
+ return str.endsWith('/') ? str.slice(0, -1) : str;
32
+ };
33
+ // Merge template with new project being created
34
+ async function copyTemplate(scope, rootPath) {
35
+ const { template } = scope;
36
+ if (!template) {
37
+ throw new Error('Missing template or example app option');
38
+ }
39
+ if (await isOfficialTemplate(template, scope.templateBranch)) {
40
+ await retry(()=>downloadGithubRepo(rootPath, {
41
+ owner: 'strapi',
42
+ repo: 'strapi',
43
+ branch: scope.templateBranch,
44
+ subPath: `templates/${template}`
45
+ }), {
46
+ retries: 3,
47
+ onRetry (err, attempt) {
48
+ console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);
49
+ }
50
+ });
51
+ return;
52
+ }
53
+ if (isLocalTemplate(template)) {
54
+ const filePath = template.startsWith('file://') ? url.fileURLToPath(template) : template;
55
+ await fse.copy(filePath, rootPath);
56
+ }
57
+ if (isGithubShorthand(template)) {
58
+ const [owner, repo, ...pathSegments] = template.split('/');
59
+ const subPath = pathSegments.length ? pathSegments.join('/') : scope.templatePath;
60
+ await retry(()=>downloadGithubRepo(rootPath, {
61
+ owner,
62
+ repo,
63
+ branch: scope.templateBranch,
64
+ subPath
65
+ }), {
66
+ retries: 3,
67
+ onRetry (err, attempt) {
68
+ console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);
69
+ }
70
+ });
71
+ return;
72
+ }
73
+ if (isGithubRepo(template)) {
74
+ const url = new URL(template);
75
+ const [owner, repo, t, branch, ...pathSegments] = stripTrailingSlash(url.pathname.slice(1)).split('/');
76
+ if (t !== undefined && t !== 'tree') {
77
+ throw new Error(`Invalid GitHub template URL: ${template}`);
78
+ }
79
+ if (scope.templateBranch) {
80
+ await retry(()=>downloadGithubRepo(rootPath, {
81
+ owner,
82
+ repo,
83
+ branch: scope.templateBranch,
84
+ subPath: scope.templatePath
85
+ }), {
86
+ retries: 3,
87
+ onRetry (err, attempt) {
88
+ console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);
89
+ }
90
+ });
91
+ return;
92
+ }
93
+ await retry(()=>downloadGithubRepo(rootPath, {
94
+ owner,
95
+ repo,
96
+ branch: decodeURIComponent(branch) ?? scope.templateBranch,
97
+ subPath: pathSegments.length ? decodeURIComponent(pathSegments.join('/')) : scope.templatePath
98
+ }), {
99
+ retries: 3,
100
+ onRetry (err, attempt) {
101
+ console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);
102
+ }
103
+ });
104
+ throw new Error(`Invalid GitHub template URL: ${template}`);
105
+ }
106
+ }
107
+ async function downloadGithubRepo(rootPath, { owner, repo, branch, subPath }) {
108
+ const filePath = subPath ? subPath.split('/').join(path.posix.sep) : null;
109
+ let checkContentUrl = `https://api.github.com/repos/${owner}/${repo}/contents`;
110
+ if (filePath) {
111
+ checkContentUrl = `${checkContentUrl}/${filePath}`;
112
+ }
113
+ if (branch) {
114
+ checkContentUrl = `${checkContentUrl}?ref=${branch}`;
115
+ }
116
+ const checkRes = await fetch(checkContentUrl, {
117
+ method: 'HEAD'
118
+ });
119
+ if (checkRes.status !== 200) {
120
+ throw new Error(`Could not find a template at https://github.com/${owner}/${repo}${branch ? ` on branch ${branch}` : ''}${filePath ? ` at path ${filePath}` : ''}`);
121
+ }
122
+ let url = `https://api.github.com/repos/${owner}/${repo}/tarball`;
123
+ if (branch) {
124
+ url = `${url}/${branch}`;
125
+ }
126
+ const res = await fetch(url);
127
+ if (!res.body) {
128
+ throw new Error(`Failed to download ${url}`);
129
+ }
130
+ await promises.pipeline(// @ts-expect-error - Readable is not a valid source
131
+ node_stream.Readable.fromWeb(res.body), tar__namespace.x({
132
+ cwd: rootPath,
133
+ strip: filePath ? filePath.split('/').length + 1 : 1,
134
+ filter (path) {
135
+ if (filePath) {
136
+ return path.split('/').slice(1).join('/').startsWith(filePath);
137
+ }
138
+ return true;
139
+ }
140
+ }));
141
+ }
142
+ function isLocalTemplate(template) {
143
+ return template.startsWith('file://') || fse.existsSync(path.isAbsolute(template) ? template : path.resolve(process.cwd(), template));
144
+ }
145
+ function isGithubShorthand(value) {
146
+ if (isValidUrl(value)) {
147
+ return false;
148
+ }
149
+ return /^[\w-]+\/[\w-.]+(\/[\w-.]+)*$/.test(value);
150
+ }
151
+ function isGithubRepo(value) {
152
+ try {
153
+ const url = new URL(value);
154
+ return url.origin === 'https://github.com';
155
+ } catch {
156
+ return false;
157
+ }
158
+ }
159
+ function isValidUrl(value) {
160
+ try {
161
+ // eslint-disable-next-line no-new
162
+ new URL(value);
163
+ return true;
164
+ } catch {
165
+ return false;
166
+ }
167
+ }
168
+ const OFFICIAL_NAME_REGEX = /^[a-zA-Z]*$/;
169
+ async function isOfficialTemplate(template, branch) {
170
+ if (isValidUrl(template) || !OFFICIAL_NAME_REGEX.test(template)) {
171
+ return false;
172
+ }
173
+ const res = await fetch(`https://api.github.com/repos/strapi/strapi/contents/templates/${template}?${branch ? `ref=${branch}` : ''}`, {
174
+ method: 'HEAD'
175
+ });
176
+ return res.status === 200;
177
+ }
178
+
179
+ exports.copyTemplate = copyTemplate;
180
+ //# sourceMappingURL=template.js.map