create-strapi-app 5.37.0 → 5.38.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 (39) hide show
  1. package/dist/cloud.js.map +1 -1
  2. package/dist/cloud.mjs.map +1 -1
  3. package/dist/create-strapi.js.map +1 -1
  4. package/dist/create-strapi.mjs.map +1 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs.map +1 -1
  7. package/dist/prompts.js.map +1 -1
  8. package/dist/prompts.mjs.map +1 -1
  9. package/dist/types.js.map +1 -1
  10. package/dist/types.mjs.map +1 -1
  11. package/dist/utils/check-install-path.js.map +1 -1
  12. package/dist/utils/check-install-path.mjs.map +1 -1
  13. package/dist/utils/check-requirements.js.map +1 -1
  14. package/dist/utils/check-requirements.mjs.map +1 -1
  15. package/dist/utils/database.js.map +1 -1
  16. package/dist/utils/database.mjs.map +1 -1
  17. package/dist/utils/dot-env.js.map +1 -1
  18. package/dist/utils/dot-env.mjs.map +1 -1
  19. package/dist/utils/engines.js.map +1 -1
  20. package/dist/utils/engines.mjs.map +1 -1
  21. package/dist/utils/get-package-manager-args.js.map +1 -1
  22. package/dist/utils/get-package-manager-args.mjs.map +1 -1
  23. package/dist/utils/git.js.map +1 -1
  24. package/dist/utils/git.mjs.map +1 -1
  25. package/dist/utils/gitignore.js.map +1 -1
  26. package/dist/utils/gitignore.mjs.map +1 -1
  27. package/dist/utils/install-id.js.map +1 -1
  28. package/dist/utils/install-id.mjs.map +1 -1
  29. package/dist/utils/logger.js.map +1 -1
  30. package/dist/utils/logger.mjs.map +1 -1
  31. package/dist/utils/package-json.js.map +1 -1
  32. package/dist/utils/package-json.mjs.map +1 -1
  33. package/dist/utils/parse-to-chalk.js.map +1 -1
  34. package/dist/utils/parse-to-chalk.mjs.map +1 -1
  35. package/dist/utils/template.js.map +1 -1
  36. package/dist/utils/template.mjs.map +1 -1
  37. package/dist/utils/usage.js.map +1 -1
  38. package/dist/utils/usage.mjs.map +1 -1
  39. package/package.json +5 -5
@@ -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 // @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 +1 @@
1
- {"version":3,"file":"usage.js","sources":["../../src/utils/usage.ts"],"sourcesContent":["import os from 'os';\nimport _ from 'lodash';\n\nimport { Scope, StderrError } from '../types';\n\ntype TrackError = Error | string | StderrError;\n\n// Add properties from the package.json strapi key in the metadata\nfunction addPackageJsonStrapiMetadata(metadata: Record<string, unknown>, scope: Scope) {\n const { packageJsonStrapi = {} } = scope;\n\n return _.defaults(metadata, packageJsonStrapi);\n}\n\nconst boolToString = (value: boolean | undefined) => (value === true).toString();\n\nconst getProperties = (scope: Scope, error?: TrackError) => {\n const eventProperties = {\n error: typeof error === 'string' ? error : error && error.message,\n };\n\n const userProperties = {\n os: os.type(),\n osPlatform: os.platform(),\n osArch: os.arch(),\n osRelease: os.release(),\n nodeVersion: process.versions.node,\n };\n\n const groupProperties = {\n version: scope.strapiVersion,\n docker: scope.docker,\n useYarn: scope.packageManager === 'yarn',\n packageManager: scope.packageManager,\n /** @deprecated */\n useTypescriptOnServer: boolToString(scope.useTypescript),\n /** @deprecated */\n useTypescriptOnAdmin: boolToString(scope.useTypescript),\n useTypescript: boolToString(scope.useTypescript),\n isHostedOnStrapiCloud: process.env.STRAPI_HOSTING === 'strapi.cloud',\n noRun: boolToString(scope.runApp),\n projectId: scope.uuid,\n useExample: boolToString(scope.useExample),\n gitInit: boolToString(scope.gitInit),\n installDependencies: boolToString(scope.installDependencies),\n };\n\n return {\n eventProperties,\n userProperties,\n groupProperties: addPackageJsonStrapiMetadata(groupProperties, scope),\n };\n};\n\nfunction trackEvent(event: string, payload: Record<string, unknown>) {\n if (process.env.NODE_ENV === 'test') {\n return;\n }\n\n const analyticsUrl = process.env.STRAPI_ANALYTICS_URL || 'https://analytics.strapi.io';\n\n try {\n return fetch(`${analyticsUrl}/api/v2/track`, {\n method: 'POST',\n body: JSON.stringify({\n event,\n ...payload,\n }),\n signal: AbortSignal.timeout(1000),\n headers: {\n 'Content-Type': 'application/json',\n 'X-Strapi-Event': event,\n },\n }).catch(() => {});\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n\nexport async function trackError({ scope, error }: { scope: Scope; error?: TrackError }) {\n const properties = getProperties(scope, error);\n\n try {\n return await trackEvent('didNotCreateProject', {\n deviceId: scope.installId,\n ...properties,\n });\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n\nexport async function trackUsage({\n event,\n scope,\n error,\n}: {\n event: string;\n scope: Scope;\n error?: TrackError;\n}) {\n const properties = getProperties(scope, error);\n\n try {\n return await trackEvent(event, {\n deviceId: scope.installId,\n ...properties,\n });\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n"],"names":["addPackageJsonStrapiMetadata","metadata","scope","packageJsonStrapi","_","defaults","boolToString","value","toString","getProperties","error","eventProperties","message","userProperties","os","type","osPlatform","platform","osArch","arch","osRelease","release","nodeVersion","process","versions","node","groupProperties","version","strapiVersion","docker","useYarn","packageManager","useTypescriptOnServer","useTypescript","useTypescriptOnAdmin","isHostedOnStrapiCloud","env","STRAPI_HOSTING","noRun","runApp","projectId","uuid","useExample","gitInit","installDependencies","trackEvent","event","payload","NODE_ENV","analyticsUrl","STRAPI_ANALYTICS_URL","fetch","method","body","JSON","stringify","signal","AbortSignal","timeout","headers","catch","err","Promise","resolve","trackError","properties","deviceId","installId","trackUsage"],"mappings":"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"}
1
+ {"version":3,"file":"usage.js","sources":["../../src/utils/usage.ts"],"sourcesContent":["import os from 'os';\nimport _ from 'lodash';\n\nimport { Scope, StderrError } from '../types';\n\ntype TrackError = Error | string | StderrError;\n\n// Add properties from the package.json strapi key in the metadata\nfunction addPackageJsonStrapiMetadata(metadata: Record<string, unknown>, scope: Scope) {\n const { packageJsonStrapi = {} } = scope;\n\n return _.defaults(metadata, packageJsonStrapi);\n}\n\nconst boolToString = (value: boolean | undefined) => (value === true).toString();\n\nconst getProperties = (scope: Scope, error?: TrackError) => {\n const eventProperties = {\n error: typeof error === 'string' ? error : error && error.message,\n };\n\n const userProperties = {\n os: os.type(),\n osPlatform: os.platform(),\n osArch: os.arch(),\n osRelease: os.release(),\n nodeVersion: process.versions.node,\n };\n\n const groupProperties = {\n version: scope.strapiVersion,\n docker: scope.docker,\n useYarn: scope.packageManager === 'yarn',\n packageManager: scope.packageManager,\n /** @deprecated */\n useTypescriptOnServer: boolToString(scope.useTypescript),\n /** @deprecated */\n useTypescriptOnAdmin: boolToString(scope.useTypescript),\n useTypescript: boolToString(scope.useTypescript),\n isHostedOnStrapiCloud: process.env.STRAPI_HOSTING === 'strapi.cloud',\n noRun: boolToString(scope.runApp),\n projectId: scope.uuid,\n useExample: boolToString(scope.useExample),\n gitInit: boolToString(scope.gitInit),\n installDependencies: boolToString(scope.installDependencies),\n };\n\n return {\n eventProperties,\n userProperties,\n groupProperties: addPackageJsonStrapiMetadata(groupProperties, scope),\n };\n};\n\nfunction trackEvent(event: string, payload: Record<string, unknown>) {\n if (process.env.NODE_ENV === 'test') {\n return;\n }\n\n const analyticsUrl = process.env.STRAPI_ANALYTICS_URL || 'https://analytics.strapi.io';\n\n try {\n return fetch(`${analyticsUrl}/api/v2/track`, {\n method: 'POST',\n body: JSON.stringify({\n event,\n ...payload,\n }),\n signal: AbortSignal.timeout(1000),\n headers: {\n 'Content-Type': 'application/json',\n 'X-Strapi-Event': event,\n },\n }).catch(() => {});\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n\nexport async function trackError({ scope, error }: { scope: Scope; error?: TrackError }) {\n const properties = getProperties(scope, error);\n\n try {\n return await trackEvent('didNotCreateProject', {\n deviceId: scope.installId,\n ...properties,\n });\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n\nexport async function trackUsage({\n event,\n scope,\n error,\n}: {\n event: string;\n scope: Scope;\n error?: TrackError;\n}) {\n const properties = getProperties(scope, error);\n\n try {\n return await trackEvent(event, {\n deviceId: scope.installId,\n ...properties,\n });\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n"],"names":["addPackageJsonStrapiMetadata","metadata","scope","packageJsonStrapi","_","defaults","boolToString","value","toString","getProperties","error","eventProperties","message","userProperties","os","type","osPlatform","platform","osArch","arch","osRelease","release","nodeVersion","process","versions","node","groupProperties","version","strapiVersion","docker","useYarn","packageManager","useTypescriptOnServer","useTypescript","useTypescriptOnAdmin","isHostedOnStrapiCloud","env","STRAPI_HOSTING","noRun","runApp","projectId","uuid","useExample","gitInit","installDependencies","trackEvent","event","payload","NODE_ENV","analyticsUrl","STRAPI_ANALYTICS_URL","fetch","method","body","JSON","stringify","signal","AbortSignal","timeout","headers","catch","err","Promise","resolve","trackError","properties","deviceId","installId","trackUsage"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"usage.mjs","sources":["../../src/utils/usage.ts"],"sourcesContent":["import os from 'os';\nimport _ from 'lodash';\n\nimport { Scope, StderrError } from '../types';\n\ntype TrackError = Error | string | StderrError;\n\n// Add properties from the package.json strapi key in the metadata\nfunction addPackageJsonStrapiMetadata(metadata: Record<string, unknown>, scope: Scope) {\n const { packageJsonStrapi = {} } = scope;\n\n return _.defaults(metadata, packageJsonStrapi);\n}\n\nconst boolToString = (value: boolean | undefined) => (value === true).toString();\n\nconst getProperties = (scope: Scope, error?: TrackError) => {\n const eventProperties = {\n error: typeof error === 'string' ? error : error && error.message,\n };\n\n const userProperties = {\n os: os.type(),\n osPlatform: os.platform(),\n osArch: os.arch(),\n osRelease: os.release(),\n nodeVersion: process.versions.node,\n };\n\n const groupProperties = {\n version: scope.strapiVersion,\n docker: scope.docker,\n useYarn: scope.packageManager === 'yarn',\n packageManager: scope.packageManager,\n /** @deprecated */\n useTypescriptOnServer: boolToString(scope.useTypescript),\n /** @deprecated */\n useTypescriptOnAdmin: boolToString(scope.useTypescript),\n useTypescript: boolToString(scope.useTypescript),\n isHostedOnStrapiCloud: process.env.STRAPI_HOSTING === 'strapi.cloud',\n noRun: boolToString(scope.runApp),\n projectId: scope.uuid,\n useExample: boolToString(scope.useExample),\n gitInit: boolToString(scope.gitInit),\n installDependencies: boolToString(scope.installDependencies),\n };\n\n return {\n eventProperties,\n userProperties,\n groupProperties: addPackageJsonStrapiMetadata(groupProperties, scope),\n };\n};\n\nfunction trackEvent(event: string, payload: Record<string, unknown>) {\n if (process.env.NODE_ENV === 'test') {\n return;\n }\n\n const analyticsUrl = process.env.STRAPI_ANALYTICS_URL || 'https://analytics.strapi.io';\n\n try {\n return fetch(`${analyticsUrl}/api/v2/track`, {\n method: 'POST',\n body: JSON.stringify({\n event,\n ...payload,\n }),\n signal: AbortSignal.timeout(1000),\n headers: {\n 'Content-Type': 'application/json',\n 'X-Strapi-Event': event,\n },\n }).catch(() => {});\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n\nexport async function trackError({ scope, error }: { scope: Scope; error?: TrackError }) {\n const properties = getProperties(scope, error);\n\n try {\n return await trackEvent('didNotCreateProject', {\n deviceId: scope.installId,\n ...properties,\n });\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n\nexport async function trackUsage({\n event,\n scope,\n error,\n}: {\n event: string;\n scope: Scope;\n error?: TrackError;\n}) {\n const properties = getProperties(scope, error);\n\n try {\n return await trackEvent(event, {\n deviceId: scope.installId,\n ...properties,\n });\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n"],"names":["addPackageJsonStrapiMetadata","metadata","scope","packageJsonStrapi","_","defaults","boolToString","value","toString","getProperties","error","eventProperties","message","userProperties","os","type","osPlatform","platform","osArch","arch","osRelease","release","nodeVersion","process","versions","node","groupProperties","version","strapiVersion","docker","useYarn","packageManager","useTypescriptOnServer","useTypescript","useTypescriptOnAdmin","isHostedOnStrapiCloud","env","STRAPI_HOSTING","noRun","runApp","projectId","uuid","useExample","gitInit","installDependencies","trackEvent","event","payload","NODE_ENV","analyticsUrl","STRAPI_ANALYTICS_URL","fetch","method","body","JSON","stringify","signal","AbortSignal","timeout","headers","catch","err","Promise","resolve","trackError","properties","deviceId","installId","trackUsage"],"mappings":";;;AAOA;AACA,SAASA,4BAAAA,CAA6BC,QAAiC,EAAEC,KAAY,EAAA;AACnF,IAAA,MAAM,EAAEC,iBAAAA,GAAoB,EAAE,EAAE,GAAGD,KAAAA;IAEnC,OAAOE,CAAAA,CAAEC,QAAQ,CAACJ,QAAUE,EAAAA,iBAAAA,CAAAA;AAC9B;AAEA,MAAMG,YAAAA,GAAe,CAACC,KAA+B,GAACA,CAAAA,KAAU,KAAA,IAAG,EAAGC,QAAQ,EAAA;AAE9E,MAAMC,aAAAA,GAAgB,CAACP,KAAcQ,EAAAA,KAAAA,GAAAA;AACnC,IAAA,MAAMC,eAAkB,GAAA;AACtBD,QAAAA,KAAAA,EAAO,OAAOA,KAAU,KAAA,QAAA,GAAWA,KAAQA,GAAAA,KAAAA,IAASA,MAAME;AAC5D,KAAA;AAEA,IAAA,MAAMC,cAAiB,GAAA;AACrBC,QAAAA,EAAAA,EAAIA,GAAGC,IAAI,EAAA;AACXC,QAAAA,UAAAA,EAAYF,GAAGG,QAAQ,EAAA;AACvBC,QAAAA,MAAAA,EAAQJ,GAAGK,IAAI,EAAA;AACfC,QAAAA,SAAAA,EAAWN,GAAGO,OAAO,EAAA;QACrBC,WAAaC,EAAAA,OAAAA,CAAQC,QAAQ,CAACC;AAChC,KAAA;AAEA,IAAA,MAAMC,eAAkB,GAAA;AACtBC,QAAAA,OAAAA,EAASzB,MAAM0B,aAAa;AAC5BC,QAAAA,MAAAA,EAAQ3B,MAAM2B,MAAM;QACpBC,OAAS5B,EAAAA,KAAAA,CAAM6B,cAAc,KAAK,MAAA;AAClCA,QAAAA,cAAAA,EAAgB7B,MAAM6B,cAAc;AACpC,2BACAC,qBAAAA,EAAuB1B,YAAaJ,CAAAA,KAAAA,CAAM+B,aAAa,CAAA;AACvD,2BACAC,oBAAAA,EAAsB5B,YAAaJ,CAAAA,KAAAA,CAAM+B,aAAa,CAAA;QACtDA,aAAe3B,EAAAA,YAAAA,CAAaJ,MAAM+B,aAAa,CAAA;AAC/CE,QAAAA,qBAAAA,EAAuBZ,OAAQa,CAAAA,GAAG,CAACC,cAAc,KAAK,cAAA;QACtDC,KAAOhC,EAAAA,YAAAA,CAAaJ,MAAMqC,MAAM,CAAA;AAChCC,QAAAA,SAAAA,EAAWtC,MAAMuC,IAAI;QACrBC,UAAYpC,EAAAA,YAAAA,CAAaJ,MAAMwC,UAAU,CAAA;QACzCC,OAASrC,EAAAA,YAAAA,CAAaJ,MAAMyC,OAAO,CAAA;QACnCC,mBAAqBtC,EAAAA,YAAAA,CAAaJ,MAAM0C,mBAAmB;AAC7D,KAAA;IAEA,OAAO;AACLjC,QAAAA,eAAAA;AACAE,QAAAA,cAAAA;AACAa,QAAAA,eAAAA,EAAiB1B,6BAA6B0B,eAAiBxB,EAAAA,KAAAA;AACjE,KAAA;AACF,CAAA;AAEA,SAAS2C,UAAAA,CAAWC,KAAa,EAAEC,OAAgC,EAAA;AACjE,IAAA,IAAIxB,OAAQa,CAAAA,GAAG,CAACY,QAAQ,KAAK,MAAQ,EAAA;AACnC,QAAA;AACF;AAEA,IAAA,MAAMC,YAAe1B,GAAAA,OAAAA,CAAQa,GAAG,CAACc,oBAAoB,IAAI,6BAAA;IAEzD,IAAI;AACF,QAAA,OAAOC,KAAM,CAAA,CAAA,EAAGF,YAAa,CAAA,aAAa,CAAC,EAAE;YAC3CG,MAAQ,EAAA,MAAA;YACRC,IAAMC,EAAAA,IAAAA,CAAKC,SAAS,CAAC;AACnBT,gBAAAA,KAAAA;AACA,gBAAA,GAAGC;AACL,aAAA,CAAA;YACAS,MAAQC,EAAAA,WAAAA,CAAYC,OAAO,CAAC,IAAA,CAAA;YAC5BC,OAAS,EAAA;gBACP,cAAgB,EAAA,kBAAA;gBAChB,gBAAkBb,EAAAA;AACpB;SACCc,CAAAA,CAAAA,KAAK,CAAC,IAAO,EAAA,CAAA;AAClB,KAAA,CAAE,OAAOC,GAAK,EAAA;6BAEZ,OAAOC,OAAAA,CAAQC,OAAO,EAAA;AACxB;AACF;AAEO,eAAeC,UAAW,CAAA,EAAE9D,KAAK,EAAEQ,KAAK,EAAwC,EAAA;IACrF,MAAMuD,UAAAA,GAAaxD,cAAcP,KAAOQ,EAAAA,KAAAA,CAAAA;IAExC,IAAI;QACF,OAAO,MAAMmC,WAAW,qBAAuB,EAAA;AAC7CqB,YAAAA,QAAAA,EAAUhE,MAAMiE,SAAS;AACzB,YAAA,GAAGF;AACL,SAAA,CAAA;AACF,KAAA,CAAE,OAAOJ,GAAK,EAAA;6BAEZ,OAAOC,OAAAA,CAAQC,OAAO,EAAA;AACxB;AACF;AAEO,eAAeK,WAAW,EAC/BtB,KAAK,EACL5C,KAAK,EACLQ,KAAK,EAKN,EAAA;IACC,MAAMuD,UAAAA,GAAaxD,cAAcP,KAAOQ,EAAAA,KAAAA,CAAAA;IAExC,IAAI;QACF,OAAO,MAAMmC,WAAWC,KAAO,EAAA;AAC7BoB,YAAAA,QAAAA,EAAUhE,MAAMiE,SAAS;AACzB,YAAA,GAAGF;AACL,SAAA,CAAA;AACF,KAAA,CAAE,OAAOJ,GAAK,EAAA;6BAEZ,OAAOC,OAAAA,CAAQC,OAAO,EAAA;AACxB;AACF;;;;"}
1
+ {"version":3,"file":"usage.mjs","sources":["../../src/utils/usage.ts"],"sourcesContent":["import os from 'os';\nimport _ from 'lodash';\n\nimport { Scope, StderrError } from '../types';\n\ntype TrackError = Error | string | StderrError;\n\n// Add properties from the package.json strapi key in the metadata\nfunction addPackageJsonStrapiMetadata(metadata: Record<string, unknown>, scope: Scope) {\n const { packageJsonStrapi = {} } = scope;\n\n return _.defaults(metadata, packageJsonStrapi);\n}\n\nconst boolToString = (value: boolean | undefined) => (value === true).toString();\n\nconst getProperties = (scope: Scope, error?: TrackError) => {\n const eventProperties = {\n error: typeof error === 'string' ? error : error && error.message,\n };\n\n const userProperties = {\n os: os.type(),\n osPlatform: os.platform(),\n osArch: os.arch(),\n osRelease: os.release(),\n nodeVersion: process.versions.node,\n };\n\n const groupProperties = {\n version: scope.strapiVersion,\n docker: scope.docker,\n useYarn: scope.packageManager === 'yarn',\n packageManager: scope.packageManager,\n /** @deprecated */\n useTypescriptOnServer: boolToString(scope.useTypescript),\n /** @deprecated */\n useTypescriptOnAdmin: boolToString(scope.useTypescript),\n useTypescript: boolToString(scope.useTypescript),\n isHostedOnStrapiCloud: process.env.STRAPI_HOSTING === 'strapi.cloud',\n noRun: boolToString(scope.runApp),\n projectId: scope.uuid,\n useExample: boolToString(scope.useExample),\n gitInit: boolToString(scope.gitInit),\n installDependencies: boolToString(scope.installDependencies),\n };\n\n return {\n eventProperties,\n userProperties,\n groupProperties: addPackageJsonStrapiMetadata(groupProperties, scope),\n };\n};\n\nfunction trackEvent(event: string, payload: Record<string, unknown>) {\n if (process.env.NODE_ENV === 'test') {\n return;\n }\n\n const analyticsUrl = process.env.STRAPI_ANALYTICS_URL || 'https://analytics.strapi.io';\n\n try {\n return fetch(`${analyticsUrl}/api/v2/track`, {\n method: 'POST',\n body: JSON.stringify({\n event,\n ...payload,\n }),\n signal: AbortSignal.timeout(1000),\n headers: {\n 'Content-Type': 'application/json',\n 'X-Strapi-Event': event,\n },\n }).catch(() => {});\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n\nexport async function trackError({ scope, error }: { scope: Scope; error?: TrackError }) {\n const properties = getProperties(scope, error);\n\n try {\n return await trackEvent('didNotCreateProject', {\n deviceId: scope.installId,\n ...properties,\n });\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n\nexport async function trackUsage({\n event,\n scope,\n error,\n}: {\n event: string;\n scope: Scope;\n error?: TrackError;\n}) {\n const properties = getProperties(scope, error);\n\n try {\n return await trackEvent(event, {\n deviceId: scope.installId,\n ...properties,\n });\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n"],"names":["addPackageJsonStrapiMetadata","metadata","scope","packageJsonStrapi","_","defaults","boolToString","value","toString","getProperties","error","eventProperties","message","userProperties","os","type","osPlatform","platform","osArch","arch","osRelease","release","nodeVersion","process","versions","node","groupProperties","version","strapiVersion","docker","useYarn","packageManager","useTypescriptOnServer","useTypescript","useTypescriptOnAdmin","isHostedOnStrapiCloud","env","STRAPI_HOSTING","noRun","runApp","projectId","uuid","useExample","gitInit","installDependencies","trackEvent","event","payload","NODE_ENV","analyticsUrl","STRAPI_ANALYTICS_URL","fetch","method","body","JSON","stringify","signal","AbortSignal","timeout","headers","catch","err","Promise","resolve","trackError","properties","deviceId","installId","trackUsage"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-strapi-app",
3
- "version": "5.37.0",
3
+ "version": "5.38.0",
4
4
  "description": "Generate a new Strapi application.",
5
5
  "keywords": [
6
6
  "create-strapi-app",
@@ -50,7 +50,7 @@
50
50
  "watch": "run -T rollup -c -w"
51
51
  },
52
52
  "dependencies": {
53
- "@strapi/cloud-cli": "5.37.0",
53
+ "@strapi/cloud-cli": "5.38.0",
54
54
  "async-retry": "1.3.3",
55
55
  "chalk": "4.1.2",
56
56
  "commander": "8.3.0",
@@ -60,7 +60,7 @@
60
60
  "lodash": "4.17.23",
61
61
  "node-machine-id": "^1.1.10",
62
62
  "ora": "^5.4.1",
63
- "rollup": "4.27.4",
63
+ "rollup": "4.59.0",
64
64
  "semver": "7.5.4",
65
65
  "sort-package-json": "2.10.0",
66
66
  "tar": "7.5.9"
@@ -69,8 +69,8 @@
69
69
  "@types/async-retry": "^1",
70
70
  "@types/fs-extra": "11.0.4",
71
71
  "@types/inquirer": "8.2.5",
72
- "eslint-config-custom": "5.37.0",
73
- "tsconfig": "5.37.0"
72
+ "eslint-config-custom": "5.38.0",
73
+ "tsconfig": "5.38.0"
74
74
  },
75
75
  "engines": {
76
76
  "node": ">=20.0.0 <=24.x.x",