create-strapi-app 5.50.0 → 5.50.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/utils/template.js
CHANGED
|
@@ -134,8 +134,7 @@ async function downloadGithubRepo(rootPath, { owner, repo, branch, subPath }) {
|
|
|
134
134
|
if (!res.body) {
|
|
135
135
|
throw new Error(`Failed to download ${url}`);
|
|
136
136
|
}
|
|
137
|
-
await promises.pipeline(
|
|
138
|
-
node_stream.Readable.fromWeb(res.body), tar__namespace.x({
|
|
137
|
+
await promises.pipeline(node_stream.Readable.fromWeb(res.body), tar__namespace.x({
|
|
139
138
|
cwd: rootPath,
|
|
140
139
|
strip: filePath ? filePath.split('/').length + 1 : 1,
|
|
141
140
|
filter (path) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sources":["../../src/utils/template.ts"],"sourcesContent":["import path from 'node:path';\nimport url from 'node:url';\nimport { Readable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\nimport * as tar from 'tar';\nimport retry from 'async-retry';\n\nimport fse from 'fs-extra';\nimport type { Scope } from '../types';\n\nconst stripTrailingSlash = (str: string) => {\n return str.endsWith('/') ? str.slice(0, -1) : str;\n};\n\n// Merge template with new project being created\nexport async function copyTemplate(scope: Scope, rootPath: string) {\n const { template } = scope;\n\n if (!template) {\n throw new Error('Missing template or example app option');\n }\n\n if (await isOfficialTemplate(template, scope.templateBranch)) {\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner: 'strapi',\n repo: 'strapi',\n branch: scope.templateBranch,\n subPath: `templates/${template}`,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n if (isLocalTemplate(template)) {\n const filePath = template.startsWith('file://') ? url.fileURLToPath(template) : template;\n\n await fse.copy(filePath, rootPath);\n }\n\n if (isGithubShorthand(template)) {\n const [owner, repo, ...pathSegments] = template.split('/');\n const subPath = pathSegments.length ? pathSegments.join('/') : scope.templatePath;\n\n await retry(\n () => downloadGithubRepo(rootPath, { owner, repo, branch: scope.templateBranch, subPath }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n if (isGithubRepo(template)) {\n const url = new URL(template);\n\n const [owner, repo, t, branch, ...pathSegments] = stripTrailingSlash(\n url.pathname.slice(1)\n ).split('/');\n\n if (t !== undefined && t !== 'tree') {\n throw new Error(`Invalid GitHub template URL: ${template}`);\n }\n\n if (scope.templateBranch) {\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner,\n repo,\n branch: scope.templateBranch,\n subPath: scope.templatePath,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner,\n repo,\n branch: decodeURIComponent(branch) ?? scope.templateBranch,\n subPath: pathSegments.length\n ? decodeURIComponent(pathSegments.join('/'))\n : scope.templatePath,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n throw new Error(`Invalid GitHub template URL: ${template}`);\n }\n}\n\ntype RepoInfo = {\n owner: string;\n repo: string;\n branch?: string;\n subPath?: string | null;\n};\n\nasync function downloadGithubRepo(rootPath: string, { owner, repo, branch, subPath }: RepoInfo) {\n const filePath = subPath ? subPath.split('/').join(path.posix.sep) : null;\n\n let checkContentUrl = `https://api.github.com/repos/${owner}/${repo}/contents`;\n if (filePath) {\n checkContentUrl = `${checkContentUrl}/${filePath}`;\n }\n\n if (branch) {\n checkContentUrl = `${checkContentUrl}?ref=${branch}`;\n }\n\n const checkRes = await fetch(checkContentUrl, {\n method: 'HEAD',\n });\n\n if (checkRes.status !== 200) {\n throw new Error(\n `Could not find a template at https://github.com/${owner}/${repo}${branch ? ` on branch ${branch}` : ''}${filePath ? ` at path ${filePath}` : ''}`\n );\n }\n\n let url = `https://api.github.com/repos/${owner}/${repo}/tarball`;\n\n if (branch) {\n url = `${url}/${branch}`;\n }\n\n const res = await fetch(url);\n\n if (!res.body) {\n throw new Error(`Failed to download ${url}`);\n }\n\n await pipeline(\n // @ts-expect-error - Readable is not a valid source\n Readable.fromWeb(res.body),\n tar.x({\n cwd: rootPath,\n strip: filePath ? filePath.split('/').length + 1 : 1,\n filter(path) {\n if (filePath) {\n return path.split('/').slice(1).join('/').startsWith(filePath);\n }\n\n return true;\n },\n })\n );\n}\n\nfunction isLocalTemplate(template: string) {\n return (\n template.startsWith('file://') ||\n fse.existsSync(path.isAbsolute(template) ? template : path.resolve(process.cwd(), template))\n );\n}\n\nfunction isGithubShorthand(value: string) {\n if (isValidUrl(value)) {\n return false;\n }\n\n return /^[\\w-]+\\/[\\w-.]+(\\/[\\w-.]+)*$/.test(value);\n}\n\nfunction isGithubRepo(value: string) {\n try {\n const url = new URL(value);\n\n return url.origin === 'https://github.com';\n } catch {\n return false;\n }\n}\n\nfunction isValidUrl(value: string) {\n try {\n // eslint-disable-next-line no-new\n new URL(value);\n return true;\n } catch {\n return false;\n }\n}\n\nconst OFFICIAL_NAME_REGEX = /^[a-zA-Z]*$/;\n\nasync function isOfficialTemplate(template: string, branch: string | undefined) {\n if (isValidUrl(template) || !OFFICIAL_NAME_REGEX.test(template)) {\n return false;\n }\n\n const res = await fetch(\n `https://api.github.com/repos/strapi/strapi/contents/templates/${template}?${branch ? `ref=${branch}` : ''}`,\n { method: 'HEAD' }\n );\n\n return res.status === 200;\n}\n"],"names":["stripTrailingSlash","str","endsWith","slice","copyTemplate","scope","rootPath","template","Error","isOfficialTemplate","templateBranch","retry","downloadGithubRepo","owner","repo","branch","subPath","retries","onRetry","err","attempt","console","log","isLocalTemplate","filePath","startsWith","url","fileURLToPath","fse","copy","isGithubShorthand","pathSegments","split","length","join","templatePath","isGithubRepo","URL","t","pathname","undefined","decodeURIComponent","path","posix","sep","checkContentUrl","checkRes","fetch","method","status","res","body","pipeline","Readable","fromWeb","tar","x","cwd","strip","filter","existsSync","isAbsolute","resolve","process","value","isValidUrl","test","origin","OFFICIAL_NAME_REGEX"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"template.js","sources":["../../src/utils/template.ts"],"sourcesContent":["import path from 'node:path';\nimport url from 'node:url';\nimport { Readable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\nimport * as tar from 'tar';\nimport retry from 'async-retry';\n\nimport fse from 'fs-extra';\nimport type { Scope } from '../types';\n\nconst stripTrailingSlash = (str: string) => {\n return str.endsWith('/') ? str.slice(0, -1) : str;\n};\n\n// Merge template with new project being created\nexport async function copyTemplate(scope: Scope, rootPath: string) {\n const { template } = scope;\n\n if (!template) {\n throw new Error('Missing template or example app option');\n }\n\n if (await isOfficialTemplate(template, scope.templateBranch)) {\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner: 'strapi',\n repo: 'strapi',\n branch: scope.templateBranch,\n subPath: `templates/${template}`,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n if (isLocalTemplate(template)) {\n const filePath = template.startsWith('file://') ? url.fileURLToPath(template) : template;\n\n await fse.copy(filePath, rootPath);\n }\n\n if (isGithubShorthand(template)) {\n const [owner, repo, ...pathSegments] = template.split('/');\n const subPath = pathSegments.length ? pathSegments.join('/') : scope.templatePath;\n\n await retry(\n () => downloadGithubRepo(rootPath, { owner, repo, branch: scope.templateBranch, subPath }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n if (isGithubRepo(template)) {\n const url = new URL(template);\n\n const [owner, repo, t, branch, ...pathSegments] = stripTrailingSlash(\n url.pathname.slice(1)\n ).split('/');\n\n if (t !== undefined && t !== 'tree') {\n throw new Error(`Invalid GitHub template URL: ${template}`);\n }\n\n if (scope.templateBranch) {\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner,\n repo,\n branch: scope.templateBranch,\n subPath: scope.templatePath,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner,\n repo,\n branch: decodeURIComponent(branch) ?? scope.templateBranch,\n subPath: pathSegments.length\n ? decodeURIComponent(pathSegments.join('/'))\n : scope.templatePath,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n throw new Error(`Invalid GitHub template URL: ${template}`);\n }\n}\n\ntype RepoInfo = {\n owner: string;\n repo: string;\n branch?: string;\n subPath?: string | null;\n};\n\nasync function downloadGithubRepo(rootPath: string, { owner, repo, branch, subPath }: RepoInfo) {\n const filePath = subPath ? subPath.split('/').join(path.posix.sep) : null;\n\n let checkContentUrl = `https://api.github.com/repos/${owner}/${repo}/contents`;\n if (filePath) {\n checkContentUrl = `${checkContentUrl}/${filePath}`;\n }\n\n if (branch) {\n checkContentUrl = `${checkContentUrl}?ref=${branch}`;\n }\n\n const checkRes = await fetch(checkContentUrl, {\n method: 'HEAD',\n });\n\n if (checkRes.status !== 200) {\n throw new Error(\n `Could not find a template at https://github.com/${owner}/${repo}${branch ? ` on branch ${branch}` : ''}${filePath ? ` at path ${filePath}` : ''}`\n );\n }\n\n let url = `https://api.github.com/repos/${owner}/${repo}/tarball`;\n\n if (branch) {\n url = `${url}/${branch}`;\n }\n\n const res = await fetch(url);\n\n if (!res.body) {\n throw new Error(`Failed to download ${url}`);\n }\n\n await pipeline(\n Readable.fromWeb(res.body),\n tar.x({\n cwd: rootPath,\n strip: filePath ? filePath.split('/').length + 1 : 1,\n filter(path) {\n if (filePath) {\n return path.split('/').slice(1).join('/').startsWith(filePath);\n }\n\n return true;\n },\n })\n );\n}\n\nfunction isLocalTemplate(template: string) {\n return (\n template.startsWith('file://') ||\n fse.existsSync(path.isAbsolute(template) ? template : path.resolve(process.cwd(), template))\n );\n}\n\nfunction isGithubShorthand(value: string) {\n if (isValidUrl(value)) {\n return false;\n }\n\n return /^[\\w-]+\\/[\\w-.]+(\\/[\\w-.]+)*$/.test(value);\n}\n\nfunction isGithubRepo(value: string) {\n try {\n const url = new URL(value);\n\n return url.origin === 'https://github.com';\n } catch {\n return false;\n }\n}\n\nfunction isValidUrl(value: string) {\n try {\n // eslint-disable-next-line no-new\n new URL(value);\n return true;\n } catch {\n return false;\n }\n}\n\nconst OFFICIAL_NAME_REGEX = /^[a-zA-Z]*$/;\n\nasync function isOfficialTemplate(template: string, branch: string | undefined) {\n if (isValidUrl(template) || !OFFICIAL_NAME_REGEX.test(template)) {\n return false;\n }\n\n const res = await fetch(\n `https://api.github.com/repos/strapi/strapi/contents/templates/${template}?${branch ? `ref=${branch}` : ''}`,\n { method: 'HEAD' }\n );\n\n return res.status === 200;\n}\n"],"names":["stripTrailingSlash","str","endsWith","slice","copyTemplate","scope","rootPath","template","Error","isOfficialTemplate","templateBranch","retry","downloadGithubRepo","owner","repo","branch","subPath","retries","onRetry","err","attempt","console","log","isLocalTemplate","filePath","startsWith","url","fileURLToPath","fse","copy","isGithubShorthand","pathSegments","split","length","join","templatePath","isGithubRepo","URL","t","pathname","undefined","decodeURIComponent","path","posix","sep","checkContentUrl","checkRes","fetch","method","status","res","body","pipeline","Readable","fromWeb","tar","x","cwd","strip","filter","existsSync","isAbsolute","resolve","process","value","isValidUrl","test","origin","OFFICIAL_NAME_REGEX"],"mappings":"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"}
|
package/dist/utils/template.mjs
CHANGED
|
@@ -106,8 +106,7 @@ async function downloadGithubRepo(rootPath, { owner, repo, branch, subPath }) {
|
|
|
106
106
|
if (!res.body) {
|
|
107
107
|
throw new Error(`Failed to download ${url}`);
|
|
108
108
|
}
|
|
109
|
-
await pipeline(
|
|
110
|
-
Readable.fromWeb(res.body), tar.x({
|
|
109
|
+
await pipeline(Readable.fromWeb(res.body), tar.x({
|
|
111
110
|
cwd: rootPath,
|
|
112
111
|
strip: filePath ? filePath.split('/').length + 1 : 1,
|
|
113
112
|
filter (path) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.mjs","sources":["../../src/utils/template.ts"],"sourcesContent":["import path from 'node:path';\nimport url from 'node:url';\nimport { Readable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\nimport * as tar from 'tar';\nimport retry from 'async-retry';\n\nimport fse from 'fs-extra';\nimport type { Scope } from '../types';\n\nconst stripTrailingSlash = (str: string) => {\n return str.endsWith('/') ? str.slice(0, -1) : str;\n};\n\n// Merge template with new project being created\nexport async function copyTemplate(scope: Scope, rootPath: string) {\n const { template } = scope;\n\n if (!template) {\n throw new Error('Missing template or example app option');\n }\n\n if (await isOfficialTemplate(template, scope.templateBranch)) {\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner: 'strapi',\n repo: 'strapi',\n branch: scope.templateBranch,\n subPath: `templates/${template}`,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n if (isLocalTemplate(template)) {\n const filePath = template.startsWith('file://') ? url.fileURLToPath(template) : template;\n\n await fse.copy(filePath, rootPath);\n }\n\n if (isGithubShorthand(template)) {\n const [owner, repo, ...pathSegments] = template.split('/');\n const subPath = pathSegments.length ? pathSegments.join('/') : scope.templatePath;\n\n await retry(\n () => downloadGithubRepo(rootPath, { owner, repo, branch: scope.templateBranch, subPath }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n if (isGithubRepo(template)) {\n const url = new URL(template);\n\n const [owner, repo, t, branch, ...pathSegments] = stripTrailingSlash(\n url.pathname.slice(1)\n ).split('/');\n\n if (t !== undefined && t !== 'tree') {\n throw new Error(`Invalid GitHub template URL: ${template}`);\n }\n\n if (scope.templateBranch) {\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner,\n repo,\n branch: scope.templateBranch,\n subPath: scope.templatePath,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner,\n repo,\n branch: decodeURIComponent(branch) ?? scope.templateBranch,\n subPath: pathSegments.length\n ? decodeURIComponent(pathSegments.join('/'))\n : scope.templatePath,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n throw new Error(`Invalid GitHub template URL: ${template}`);\n }\n}\n\ntype RepoInfo = {\n owner: string;\n repo: string;\n branch?: string;\n subPath?: string | null;\n};\n\nasync function downloadGithubRepo(rootPath: string, { owner, repo, branch, subPath }: RepoInfo) {\n const filePath = subPath ? subPath.split('/').join(path.posix.sep) : null;\n\n let checkContentUrl = `https://api.github.com/repos/${owner}/${repo}/contents`;\n if (filePath) {\n checkContentUrl = `${checkContentUrl}/${filePath}`;\n }\n\n if (branch) {\n checkContentUrl = `${checkContentUrl}?ref=${branch}`;\n }\n\n const checkRes = await fetch(checkContentUrl, {\n method: 'HEAD',\n });\n\n if (checkRes.status !== 200) {\n throw new Error(\n `Could not find a template at https://github.com/${owner}/${repo}${branch ? ` on branch ${branch}` : ''}${filePath ? ` at path ${filePath}` : ''}`\n );\n }\n\n let url = `https://api.github.com/repos/${owner}/${repo}/tarball`;\n\n if (branch) {\n url = `${url}/${branch}`;\n }\n\n const res = await fetch(url);\n\n if (!res.body) {\n throw new Error(`Failed to download ${url}`);\n }\n\n await pipeline(\n // @ts-expect-error - Readable is not a valid source\n Readable.fromWeb(res.body),\n tar.x({\n cwd: rootPath,\n strip: filePath ? filePath.split('/').length + 1 : 1,\n filter(path) {\n if (filePath) {\n return path.split('/').slice(1).join('/').startsWith(filePath);\n }\n\n return true;\n },\n })\n );\n}\n\nfunction isLocalTemplate(template: string) {\n return (\n template.startsWith('file://') ||\n fse.existsSync(path.isAbsolute(template) ? template : path.resolve(process.cwd(), template))\n );\n}\n\nfunction isGithubShorthand(value: string) {\n if (isValidUrl(value)) {\n return false;\n }\n\n return /^[\\w-]+\\/[\\w-.]+(\\/[\\w-.]+)*$/.test(value);\n}\n\nfunction isGithubRepo(value: string) {\n try {\n const url = new URL(value);\n\n return url.origin === 'https://github.com';\n } catch {\n return false;\n }\n}\n\nfunction isValidUrl(value: string) {\n try {\n // eslint-disable-next-line no-new\n new URL(value);\n return true;\n } catch {\n return false;\n }\n}\n\nconst OFFICIAL_NAME_REGEX = /^[a-zA-Z]*$/;\n\nasync function isOfficialTemplate(template: string, branch: string | undefined) {\n if (isValidUrl(template) || !OFFICIAL_NAME_REGEX.test(template)) {\n return false;\n }\n\n const res = await fetch(\n `https://api.github.com/repos/strapi/strapi/contents/templates/${template}?${branch ? `ref=${branch}` : ''}`,\n { method: 'HEAD' }\n );\n\n return res.status === 200;\n}\n"],"names":["stripTrailingSlash","str","endsWith","slice","copyTemplate","scope","rootPath","template","Error","isOfficialTemplate","templateBranch","retry","downloadGithubRepo","owner","repo","branch","subPath","retries","onRetry","err","attempt","console","log","isLocalTemplate","filePath","startsWith","url","fileURLToPath","fse","copy","isGithubShorthand","pathSegments","split","length","join","templatePath","isGithubRepo","URL","t","pathname","undefined","decodeURIComponent","path","posix","sep","checkContentUrl","checkRes","fetch","method","status","res","body","pipeline","Readable","fromWeb","tar","x","cwd","strip","filter","existsSync","isAbsolute","resolve","process","value","isValidUrl","test","origin","OFFICIAL_NAME_REGEX"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"template.mjs","sources":["../../src/utils/template.ts"],"sourcesContent":["import path from 'node:path';\nimport url from 'node:url';\nimport { Readable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\nimport * as tar from 'tar';\nimport retry from 'async-retry';\n\nimport fse from 'fs-extra';\nimport type { Scope } from '../types';\n\nconst stripTrailingSlash = (str: string) => {\n return str.endsWith('/') ? str.slice(0, -1) : str;\n};\n\n// Merge template with new project being created\nexport async function copyTemplate(scope: Scope, rootPath: string) {\n const { template } = scope;\n\n if (!template) {\n throw new Error('Missing template or example app option');\n }\n\n if (await isOfficialTemplate(template, scope.templateBranch)) {\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner: 'strapi',\n repo: 'strapi',\n branch: scope.templateBranch,\n subPath: `templates/${template}`,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n if (isLocalTemplate(template)) {\n const filePath = template.startsWith('file://') ? url.fileURLToPath(template) : template;\n\n await fse.copy(filePath, rootPath);\n }\n\n if (isGithubShorthand(template)) {\n const [owner, repo, ...pathSegments] = template.split('/');\n const subPath = pathSegments.length ? pathSegments.join('/') : scope.templatePath;\n\n await retry(\n () => downloadGithubRepo(rootPath, { owner, repo, branch: scope.templateBranch, subPath }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n if (isGithubRepo(template)) {\n const url = new URL(template);\n\n const [owner, repo, t, branch, ...pathSegments] = stripTrailingSlash(\n url.pathname.slice(1)\n ).split('/');\n\n if (t !== undefined && t !== 'tree') {\n throw new Error(`Invalid GitHub template URL: ${template}`);\n }\n\n if (scope.templateBranch) {\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner,\n repo,\n branch: scope.templateBranch,\n subPath: scope.templatePath,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner,\n repo,\n branch: decodeURIComponent(branch) ?? scope.templateBranch,\n subPath: pathSegments.length\n ? decodeURIComponent(pathSegments.join('/'))\n : scope.templatePath,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n throw new Error(`Invalid GitHub template URL: ${template}`);\n }\n}\n\ntype RepoInfo = {\n owner: string;\n repo: string;\n branch?: string;\n subPath?: string | null;\n};\n\nasync function downloadGithubRepo(rootPath: string, { owner, repo, branch, subPath }: RepoInfo) {\n const filePath = subPath ? subPath.split('/').join(path.posix.sep) : null;\n\n let checkContentUrl = `https://api.github.com/repos/${owner}/${repo}/contents`;\n if (filePath) {\n checkContentUrl = `${checkContentUrl}/${filePath}`;\n }\n\n if (branch) {\n checkContentUrl = `${checkContentUrl}?ref=${branch}`;\n }\n\n const checkRes = await fetch(checkContentUrl, {\n method: 'HEAD',\n });\n\n if (checkRes.status !== 200) {\n throw new Error(\n `Could not find a template at https://github.com/${owner}/${repo}${branch ? ` on branch ${branch}` : ''}${filePath ? ` at path ${filePath}` : ''}`\n );\n }\n\n let url = `https://api.github.com/repos/${owner}/${repo}/tarball`;\n\n if (branch) {\n url = `${url}/${branch}`;\n }\n\n const res = await fetch(url);\n\n if (!res.body) {\n throw new Error(`Failed to download ${url}`);\n }\n\n await pipeline(\n Readable.fromWeb(res.body),\n tar.x({\n cwd: rootPath,\n strip: filePath ? filePath.split('/').length + 1 : 1,\n filter(path) {\n if (filePath) {\n return path.split('/').slice(1).join('/').startsWith(filePath);\n }\n\n return true;\n },\n })\n );\n}\n\nfunction isLocalTemplate(template: string) {\n return (\n template.startsWith('file://') ||\n fse.existsSync(path.isAbsolute(template) ? template : path.resolve(process.cwd(), template))\n );\n}\n\nfunction isGithubShorthand(value: string) {\n if (isValidUrl(value)) {\n return false;\n }\n\n return /^[\\w-]+\\/[\\w-.]+(\\/[\\w-.]+)*$/.test(value);\n}\n\nfunction isGithubRepo(value: string) {\n try {\n const url = new URL(value);\n\n return url.origin === 'https://github.com';\n } catch {\n return false;\n }\n}\n\nfunction isValidUrl(value: string) {\n try {\n // eslint-disable-next-line no-new\n new URL(value);\n return true;\n } catch {\n return false;\n }\n}\n\nconst OFFICIAL_NAME_REGEX = /^[a-zA-Z]*$/;\n\nasync function isOfficialTemplate(template: string, branch: string | undefined) {\n if (isValidUrl(template) || !OFFICIAL_NAME_REGEX.test(template)) {\n return false;\n }\n\n const res = await fetch(\n `https://api.github.com/repos/strapi/strapi/contents/templates/${template}?${branch ? `ref=${branch}` : ''}`,\n { method: 'HEAD' }\n );\n\n return res.status === 200;\n}\n"],"names":["stripTrailingSlash","str","endsWith","slice","copyTemplate","scope","rootPath","template","Error","isOfficialTemplate","templateBranch","retry","downloadGithubRepo","owner","repo","branch","subPath","retries","onRetry","err","attempt","console","log","isLocalTemplate","filePath","startsWith","url","fileURLToPath","fse","copy","isGithubShorthand","pathSegments","split","length","join","templatePath","isGithubRepo","URL","t","pathname","undefined","decodeURIComponent","path","posix","sep","checkContentUrl","checkRes","fetch","method","status","res","body","pipeline","Readable","fromWeb","tar","x","cwd","strip","filter","existsSync","isAbsolute","resolve","process","value","isValidUrl","test","origin","OFFICIAL_NAME_REGEX"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-strapi-app",
|
|
3
|
-
"version": "5.50.
|
|
3
|
+
"version": "5.50.2",
|
|
4
4
|
"description": "Generate a new Strapi application.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"create-strapi-app",
|
|
@@ -46,12 +46,12 @@
|
|
|
46
46
|
"build:code": "run -T rollup -c",
|
|
47
47
|
"build:types": "run -T tsc -p tsconfig.build.json --emitDeclarationOnly",
|
|
48
48
|
"clean": "run -T rimraf ./dist",
|
|
49
|
-
"lint": "run -T eslint .",
|
|
50
|
-
"test:ts": "run -T tsc
|
|
49
|
+
"lint": "run -T eslint . --max-warnings=0",
|
|
50
|
+
"test:ts": "run -T tsc -p tsconfig.json",
|
|
51
51
|
"watch": "run -T rollup -c -w"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@strapi/cloud-cli": "5.50.
|
|
54
|
+
"@strapi/cloud-cli": "5.50.2",
|
|
55
55
|
"async-retry": "1.3.3",
|
|
56
56
|
"chalk": "4.1.2",
|
|
57
57
|
"commander": "8.3.0",
|
|
@@ -64,14 +64,15 @@
|
|
|
64
64
|
"rollup": "4.60.4",
|
|
65
65
|
"semver": "7.7.4",
|
|
66
66
|
"sort-package-json": "2.10.0",
|
|
67
|
-
"tar": "7.5.
|
|
67
|
+
"tar": "7.5.18"
|
|
68
68
|
},
|
|
69
69
|
"devDependencies": {
|
|
70
70
|
"@types/async-retry": "^1",
|
|
71
71
|
"@types/fs-extra": "11.0.4",
|
|
72
72
|
"@types/inquirer": "9.0.9",
|
|
73
|
-
"
|
|
74
|
-
"
|
|
73
|
+
"@types/node": "20.19.41",
|
|
74
|
+
"eslint-config-custom": "5.50.2",
|
|
75
|
+
"tsconfig": "5.50.2"
|
|
75
76
|
},
|
|
76
77
|
"engines": {
|
|
77
78
|
"node": ">=20.0.0 <=26.x.x",
|