@shopify/create-hydrogen 3.24.1 → 3.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +8 -0
- package/dist/prompts/init.js +3 -2
- package/dist/prompts/init.js.map +1 -1
- package/dist/services/init.js +3 -2
- package/dist/services/init.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/template.js +4 -3
- package/dist/utils/template.js.map +1 -1
- package/oclif.manifest.json +1 -0
- package/package.json +14 -14
- package/CHANGELOG.md +0 -984
package/LICENSE
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
Copyright 2019-present, Shopify Inc.
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
5
|
+
|
|
6
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
7
|
+
|
|
8
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/dist/prompts/init.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { ui,
|
|
1
|
+
import { ui, string, output } from '@shopify/cli-kit';
|
|
2
|
+
import { parseGitHubRepositoryURL } from '@shopify/cli-kit/node/github';
|
|
2
3
|
const TEMPLATE_BASE = 'https://github.com/Shopify/hydrogen/templates/';
|
|
3
4
|
const BRANCH = `dist`;
|
|
4
5
|
const TEMPLATE_NAME_DATA = {
|
|
@@ -116,7 +117,7 @@ const convertTemplateNameToUrl = (templateName) => `${TEMPLATE_BASE}${templateNa
|
|
|
116
117
|
* @returns The parsed URL.
|
|
117
118
|
*/
|
|
118
119
|
const parseTemplateUrl = (templateUrl) => {
|
|
119
|
-
const parsedTemplate =
|
|
120
|
+
const parsedTemplate = parseGitHubRepositoryURL(templateUrl).valueOrAbort();
|
|
120
121
|
const missingBranch = !parsedTemplate.ref;
|
|
121
122
|
const looksLikeHydrogenTemplate = parsedTemplate.name === 'hydrogen' &&
|
|
122
123
|
parsedTemplate.user === 'Shopify' &&
|
package/dist/prompts/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/prompts/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/prompts/init.ts"],"names":[],"mappings":"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","sourcesContent":["import {ui, string, output} from '@shopify/cli-kit'\nimport {parseGitHubRepositoryURL} from '@shopify/cli-kit/node/github'\n\nconst TEMPLATE_BASE = 'https://github.com/Shopify/hydrogen/templates/'\nconst BRANCH = `dist`\n\nconst TEMPLATE_NAME_DATA = {\n 'demo-store': {name: 'Demo Store'},\n 'hello-world': {name: 'Hello World'},\n}\n\nconst LANGUAGE_NAME_DATA = {\n js: {name: 'JavaScript'},\n ts: {name: 'TypeScript'},\n}\n\nconst TEMPLATE_NAMES = Object.keys(TEMPLATE_NAME_DATA)\nconst LANGUAGE_NAMES = Object.keys(LANGUAGE_NAME_DATA)\n\ninterface InitOptions {\n name?: string\n template?: string\n language?: string\n}\n\nconst init = async (options: InitOptions, prompt = ui.prompt): Promise<Required<InitOptions>> => {\n const questions: ui.Question[] = []\n const explicitTemplate = options.template\n let isAShopifyTemplateName = false\n // If the template is passed through the CLI, then it can either be a Shopify template name (hello-world or demo-store)\n // or a custom URL to any template.\n if (explicitTemplate) {\n warnIfDeprecatedTemplateNameFormat(explicitTemplate)\n const hydrogenTemplate =\n checkIfShopifyTemplateName(explicitTemplate, 'js') || checkIfShopifyTemplateName(explicitTemplate, 'ts')\n isAShopifyTemplateName = Boolean(hydrogenTemplate)\n } else {\n isAShopifyTemplateName = true\n questions.push({\n type: 'select',\n name: 'template',\n message: 'Choose a template',\n choices: Object.keys(TEMPLATE_NAME_DATA).map((value) => ({\n name: TEMPLATE_NAME_DATA[value as keyof typeof TEMPLATE_NAME_DATA].name,\n value,\n })),\n default: TEMPLATE_NAMES[0],\n })\n }\n\n // Prompt the user for the template language if it isn't provided and\n // the given template is a URL.\n if (!options.language && isAShopifyTemplateName) {\n questions.push({\n type: 'select',\n name: 'language',\n message: 'Choose a language',\n choices: Object.keys(LANGUAGE_NAME_DATA).map((value) => {\n const {name} = LANGUAGE_NAME_DATA[value as keyof typeof LANGUAGE_NAME_DATA]\n return {name, value}\n }),\n default: LANGUAGE_NAMES[0],\n })\n }\n\n if (!options.name) {\n questions.push({\n type: 'input',\n name: 'name',\n message: 'Name your new Hydrogen storefront',\n default: 'hydrogen-app',\n })\n }\n\n const promptResults = await prompt(questions)\n const name = options.name ?? promptResults.name!\n const templateName = options.template ?? promptResults.template!\n const language = options.language ?? promptResults.language!\n let template = templateName\n\n // Get final template URLS\n const hydrogenTemplate = checkIfShopifyTemplateName(templateName, language)\n if (hydrogenTemplate) template = convertTemplateNameToUrl(hydrogenTemplate as string)\n\n // Else it's a user-provided URL.\n template = parseTemplateUrl(template)\n return {name, template, language} as Required<InitOptions>\n}\n\n/**\n * Checks if the provided name is a Shopify template, or if it's a custom URL to a user-provided template.\n *\n * @param templateName - The name of the template to check.\n * @param language - The language of the template, only provided if the template is a Shopify template\n * @returns The fully-formed template name (with the language suffixed) if it's a Shopify template, false otherwise.\n */\nconst checkIfShopifyTemplateName = (templateName: string, language: string): string | boolean => {\n if (!templateName) return false\n\n const normalized = string.hyphenize(templateName).toLocaleLowerCase()\n const endsWithLang = normalized.endsWith('-ts') || normalized.endsWith('-js')\n const withExtension = endsWithLang ? normalized : `${normalized}-${language}`\n return TEMPLATE_NAMES.includes(normalized) ? withExtension : false\n}\n\n/**\n * Lets the user know if they're trying to use a template in the old naming format.\n *\n * @param templateName - The name of the template to check.\n * @returns True if the template name is in the old format, false otherwise.\n */\nconst warnIfDeprecatedTemplateNameFormat = (templateName: string): void => {\n const normalized = string.hyphenize(templateName).toLocaleLowerCase()\n const endsWithLang = normalized.endsWith('-ts') || normalized.endsWith('-js')\n if (endsWithLang) {\n const template = normalized.slice(0, -3)\n const lang = normalized.slice(-2)\n const ts = lang === 'ts'\n output.warn(\n `The ${normalized} template has been deprecated. Use --template ${template} ${\n ts ? `--${lang} ` : ''\n }to install the ${ts ? 'TypeScript' : 'JavaScript'} template.`,\n )\n }\n}\n\n/**\n * Takes the name of a Shopify template (for example, demo-store or hello-world) and converts it to a URL.\n *\n * @param templateName - The given name of a Shopify template.\n * @returns The URL of the template.\n */\nconst convertTemplateNameToUrl = (templateName: string): string => `${TEMPLATE_BASE}${templateName}#${BRANCH}`\n\n/**\n * Checks to see if the provided URL can be parsed by Github. For Shopify-specific templates, adds any\n * missing information (for example, a missing branch) to the repo information in the URL.\n *\n * @param templateUrl - The URL of the template to parse.\n * @returns The parsed URL.\n */\nconst parseTemplateUrl = (templateUrl: string): string => {\n const parsedTemplate = parseGitHubRepositoryURL(templateUrl).valueOrAbort()\n const missingBranch = !parsedTemplate.ref\n const looksLikeHydrogenTemplate =\n parsedTemplate.name === 'hydrogen' &&\n parsedTemplate.user === 'Shopify' &&\n parsedTemplate.subDirectory?.startsWith('templates/')\n\n return looksLikeHydrogenTemplate && missingBranch ? `${parsedTemplate.full}#${BRANCH}` : parsedTemplate.full\n}\n\nexport default init\n"]}
|
package/dist/services/init.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { string, path, error, file, output, os, ui, npm, environment,
|
|
1
|
+
import { string, path, error, file, output, os, ui, npm, environment, template, git, constants, version, } from '@shopify/cli-kit';
|
|
2
2
|
import { installNodeModules, packageManager, packageManagerUsedForCreating, } from '@shopify/cli-kit/node/node-package-manager';
|
|
3
|
+
import { parseGitHubRepositoryURL } from '@shopify/cli-kit/node/github';
|
|
3
4
|
import { Writable } from 'stream';
|
|
4
5
|
const suggestHydrogenSupport = () => `
|
|
5
6
|
Help us make Hydrogen better by reporting this error so we can improve this message and/or fix the error.
|
|
@@ -22,7 +23,7 @@ async function init(options) {
|
|
|
22
23
|
await file.mkdir(templateDownloadDir);
|
|
23
24
|
await file.mkdir(templateScaffoldDir);
|
|
24
25
|
let tasks = [];
|
|
25
|
-
const templateInfo = await
|
|
26
|
+
const templateInfo = await parseGitHubRepositoryURL(options.template).valueOrAbort();
|
|
26
27
|
const branch = templateInfo.ref ? `#${templateInfo.ref}` : '';
|
|
27
28
|
const templatePath = templateInfo.subDirectory
|
|
28
29
|
? path.join(templateDownloadDir, templateInfo.subDirectory)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/services/init.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n string,\n path,\n error,\n file,\n output,\n os,\n ui,\n npm,\n environment,\n github,\n template,\n git,\n constants,\n version,\n} from '@shopify/cli-kit'\nimport {\n installNodeModules,\n packageManager,\n PackageManager,\n packageManagerUsedForCreating,\n} from '@shopify/cli-kit/node/node-package-manager'\n\nimport {Writable} from 'stream'\n\ninterface InitOptions {\n name: string\n template: string\n directory: string\n packageManager?: string\n shopifyCliVersion?: string\n cliHydrogenPackageVersion?: string\n hydrogenVersion?: string\n local: boolean\n}\n\nconst suggestHydrogenSupport = () => `\nHelp us make Hydrogen better by reporting this error so we can improve this message and/or fix the error.\n - Chat with us on Discord: https://discord.com/invite/ppSbThrFaS\n - Create an issue in GitHub: https://github.com/Shopify/hydrogen/issues/new\n`\n\nasync function init(options: InitOptions) {\n const hydrogenVersion = await version.findPackageVersionUp({fromModuleURL: import.meta.url})\n const user = (await os.username()) ?? ''\n const cliPackageVersion = options.shopifyCliVersion ?? (await constants.versions.cliKit())\n const cliHydrogenPackageVersion = options.cliHydrogenPackageVersion ?? hydrogenVersion\n const hydrogenPackageVersion = options.hydrogenVersion\n const packageManager = inferPackageManager(options.packageManager)\n const hyphenizedName = string.hyphenize(options.name)\n const outputDirectory = path.join(options.directory, hyphenizedName)\n\n await ui.nonEmptyDirectoryPrompt(outputDirectory)\n\n await file.inTemporaryDirectory(async (tmpDir) => {\n const templateDownloadDir = path.join(tmpDir, 'download')\n const templateScaffoldDir = path.join(tmpDir, 'app')\n\n await file.mkdir(templateDownloadDir)\n await file.mkdir(templateScaffoldDir)\n\n let tasks: ui.ListrTasks = []\n\n const templateInfo = await github.parseRepoUrl(options.template)\n const branch = templateInfo.ref ? `#${templateInfo.ref}` : ''\n const templatePath = templateInfo.subDirectory\n ? path.join(templateDownloadDir, templateInfo.subDirectory)\n : templateDownloadDir\n\n const repoUrl = `${templateInfo.http}${branch}`\n await ui.task({\n title: `Downloading template from ${repoUrl}`,\n task: async () => {\n await git.downloadRepository({\n repoUrl,\n destination: templateDownloadDir,\n shallow: true,\n })\n if (!(await file.exists(path.join(templatePath, 'package.json')))) {\n throw new error.Abort(`The template ${templatePath} was not found.`, suggestHydrogenSupport())\n }\n return {successMessage: `Downloaded template from ${repoUrl}`}\n },\n })\n\n tasks = tasks.concat([\n {\n title: `Initializing your app ${hyphenizedName}`,\n task: async (_, parentTask) => {\n return parentTask.newListr(\n [\n {\n title: 'Parsing template files',\n task: async (_, task) => {\n const templateData = {\n name: hyphenizedName,\n shopify_cli_version: cliPackageVersion,\n hydrogen_version: hydrogenPackageVersion,\n author: user,\n dependency_manager: options.packageManager,\n }\n await template.recursiveDirectoryCopy(templatePath, templateScaffoldDir, templateData)\n\n task.title = 'Template files parsed'\n },\n },\n {\n title: 'Updating package.json',\n task: async (_, task) => {\n const packageJSON = await npm.readPackageJSON(templateScaffoldDir)\n const cliVersion = await constants.versions.cliKit()\n await npm.updateAppData(packageJSON, hyphenizedName)\n await updateCLIDependencies(packageJSON, options.local, {\n dependencies: {\n '@shopify/hydrogen': hydrogenPackageVersion,\n },\n devDependencies: {\n '@shopify/cli-hydrogen': cliHydrogenPackageVersion,\n '@shopify/cli': cliVersion,\n },\n })\n await updateCLIScripts(packageJSON)\n await npm.writePackageJSON(templateScaffoldDir, packageJSON)\n\n task.title = 'Package.json updated'\n parentTask.title = 'App initialized'\n },\n },\n ],\n {concurrent: false},\n )\n },\n },\n ])\n\n if (await environment.local.isShopify()) {\n tasks.push({\n title: \"[Shopifolks-only] Configuring the project's NPM registry\",\n task: async (_, task) => {\n await writeToNpmrc(templateScaffoldDir, `@shopify:registry=https://registry.npmjs.org`)\n task.title = \"[Shopifolks-only] Project's NPM registry configured.\"\n },\n })\n }\n\n tasks = tasks.concat([\n {\n title: `Installing dependencies with ${packageManager}`,\n task: async (_, task) => {\n const stdout = new Writable({\n write(chunk, encoding, next) {\n task.output = chunk.toString()\n next()\n },\n })\n await installDependencies(templateScaffoldDir, packageManager, stdout)\n },\n },\n {\n title: 'Cleaning up',\n task: async (_, task) => {\n await cleanup(templateScaffoldDir)\n\n task.title = 'Completed clean up'\n },\n },\n {\n title: 'Initializing a Git repository...',\n task: async (_, task) => {\n await git.initializeRepository(templateScaffoldDir)\n await git.addAll(templateScaffoldDir)\n await git.commit('Initial commit generated by Hydrogen', {directory: templateScaffoldDir})\n task.title = 'Git repository initialized'\n },\n },\n ])\n\n const list = ui.newListr(tasks, {\n concurrent: false,\n rendererOptions: {collapse: false},\n rendererSilent: environment.local.isUnitTest(),\n })\n\n await list.run()\n\n await file.move(templateScaffoldDir, outputDirectory)\n })\n\n output.info(output.content`\n✨ ${hyphenizedName} is ready to build!\n🚀 Run ${output.token.packagejsonScript(\n packageManager,\n 'dev',\n )} to start your local development server and start building.\n\n📚 Docs: ${output.token.link('Quick start guide', 'https://shopify.dev/custom-storefronts/hydrogen')}`)\n\n output.info(output.content`\n👋 Note: your project will display inventory from the Hydrogen Demo Store.\\\n To connect this project to your Shopify store’s inventory instead,\\\n update ${output.token.yellow(`${hyphenizedName}/hydrogen.config.js`)} with your\\\n store ID and Storefront API key.\\n`)\n}\n\nfunction inferPackageManager(optionsPackageManager: string | undefined): PackageManager {\n if (optionsPackageManager && packageManager.includes(optionsPackageManager as PackageManager)) {\n return optionsPackageManager as PackageManager\n }\n const usedPackageManager = packageManagerUsedForCreating()\n return usedPackageManager === 'unknown' ? 'npm' : usedPackageManager\n}\n\nexport default init\n\ninterface PackageDependencies {\n devDependencies: {[key: string]: string | undefined}\n dependencies: {[key: string]: string | undefined}\n}\n\nasync function updateCLIScripts(packageJSON: npm.PackageJSON): Promise<npm.PackageJSON> {\n packageJSON.scripts.dev = `shopify hydrogen dev`\n\n return packageJSON\n}\n\nasync function updateCLIDependencies(\n packageJSON: npm.PackageJSON,\n local: boolean,\n packageDependencies: PackageDependencies,\n): Promise<npm.PackageJSON> {\n const {devDependencies, dependencies} = packageDependencies\n\n packageJSON.devDependencies = packageJSON.devDependencies || {}\n packageJSON.dependencies = packageJSON.dependencies || {}\n\n Object.keys(devDependencies).forEach((key) => {\n packageJSON.devDependencies[key] = devDependencies[key] || packageJSON.devDependencies[key]!\n })\n\n Object.keys(dependencies).forEach((key) => {\n packageJSON.dependencies[key] = dependencies[key] || packageJSON.dependencies[key]!\n })\n\n if (local) {\n const devDependencyOverrides = {\n '@shopify/cli': `file:${(await path.findUp('packages/cli-main', {type: 'directory'})) as string}`,\n '@shopify/cli-hydrogen': `file:${(await path.findUp('packages/cli-hydrogen', {type: 'directory'})) as string}`,\n }\n\n packageJSON.overrides = packageJSON.overrides\n ? {...packageJSON.overrides, ...devDependencyOverrides}\n : devDependencyOverrides\n\n packageJSON.resolutions = packageJSON.resolutions\n ? {...packageJSON.resolutions, ...devDependencyOverrides}\n : devDependencyOverrides\n }\n\n return packageJSON\n}\n\nasync function installDependencies(directory: string, packageManager: PackageManager, stdout: Writable): Promise<void> {\n if (packageManager === 'pnpm') {\n await writeToNpmrc(directory, 'auto-install-peers = true')\n }\n await installNodeModules({directory, packageManager, stdout, args: []})\n}\n\nasync function writeToNpmrc(directory: string, content: string) {\n const npmrcPath = path.join(directory, '.npmrc')\n const npmrcContent = `${content}\\n`\n if (!(await file.exists(npmrcPath))) {\n await file.touch(npmrcPath)\n }\n await file.appendFile(npmrcPath, npmrcContent)\n}\n\nasync function cleanup(webOutputDirectory: string) {\n const gitPaths = await path.glob(\n [\n path.join(webOutputDirectory, '**', '.git'),\n path.join(webOutputDirectory, '**', '.github'),\n path.join(webOutputDirectory, '**', '.gitmodules'),\n path.join(webOutputDirectory, '.stackblitzrc'),\n ],\n {\n dot: true,\n onlyFiles: false,\n onlyDirectories: false,\n ignore: ['**/node_modules/**'],\n },\n )\n\n return Promise.all(gitPaths.map((path) => file.rmdir(path, {force: true}))).then(() => {})\n}\n"]}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/services/init.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,MAAM,EACN,EAAE,EACF,EAAE,EACF,GAAG,EACH,WAAW,EACX,QAAQ,EACR,GAAG,EACH,SAAS,EACT,OAAO,GACR,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,kBAAkB,EAClB,cAAc,EAEd,6BAA6B,GAC9B,MAAM,4CAA4C,CAAA;AAEnD,OAAO,EAAC,wBAAwB,EAAC,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAC,QAAQ,EAAC,MAAM,QAAQ,CAAA;AAa/B,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAAC;;;;CAIpC,CAAA;AAED,KAAK,UAAU,IAAI,CAAC,OAAoB;IACtC,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC,EAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAC,CAAC,CAAA;IAC5F,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;IACxC,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAC1F,MAAM,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,IAAI,eAAe,CAAA;IACtF,MAAM,sBAAsB,GAAG,OAAO,CAAC,eAAe,CAAA;IACtD,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAClE,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACrD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IAEpE,MAAM,EAAE,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAA;IAEjD,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAC/C,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;QACzD,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAEpD,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QACrC,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QAErC,IAAI,KAAK,GAAkB,EAAE,CAAA;QAE7B,MAAM,YAAY,GAAG,MAAM,wBAAwB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,EAAE,CAAA;QACpF,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC7D,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY;YAC5C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,YAAY,CAAC,YAAY,CAAC;YAC3D,CAAC,CAAC,mBAAmB,CAAA;QAEvB,MAAM,OAAO,GAAG,GAAG,YAAY,CAAC,IAAI,GAAG,MAAM,EAAE,CAAA;QAC/C,MAAM,EAAE,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,6BAA6B,OAAO,EAAE;YAC7C,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,GAAG,CAAC,kBAAkB,CAAC;oBAC3B,OAAO;oBACP,WAAW,EAAE,mBAAmB;oBAChC,OAAO,EAAE,IAAI;iBACd,CAAC,CAAA;gBACF,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE;oBACjE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,gBAAgB,YAAY,iBAAiB,EAAE,sBAAsB,EAAE,CAAC,CAAA;iBAC/F;gBACD,OAAO,EAAC,cAAc,EAAE,4BAA4B,OAAO,EAAE,EAAC,CAAA;YAChE,CAAC;SACF,CAAC,CAAA;QAEF,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;YACnB;gBACE,KAAK,EAAE,yBAAyB,cAAc,EAAE;gBAChD,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE;oBAC5B,OAAO,UAAU,CAAC,QAAQ,CACxB;wBACE;4BACE,KAAK,EAAE,wBAAwB;4BAC/B,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;gCACtB,MAAM,YAAY,GAAG;oCACnB,IAAI,EAAE,cAAc;oCACpB,mBAAmB,EAAE,iBAAiB;oCACtC,gBAAgB,EAAE,sBAAsB;oCACxC,MAAM,EAAE,IAAI;oCACZ,kBAAkB,EAAE,OAAO,CAAC,cAAc;iCAC3C,CAAA;gCACD,MAAM,QAAQ,CAAC,sBAAsB,CAAC,YAAY,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAA;gCAEtF,IAAI,CAAC,KAAK,GAAG,uBAAuB,CAAA;4BACtC,CAAC;yBACF;wBACD;4BACE,KAAK,EAAE,uBAAuB;4BAC9B,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;gCACtB,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAA;gCAClE,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAA;gCACpD,MAAM,GAAG,CAAC,aAAa,CAAC,WAAW,EAAE,cAAc,CAAC,CAAA;gCACpD,MAAM,qBAAqB,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE;oCACtD,YAAY,EAAE;wCACZ,mBAAmB,EAAE,sBAAsB;qCAC5C;oCACD,eAAe,EAAE;wCACf,uBAAuB,EAAE,yBAAyB;wCAClD,cAAc,EAAE,UAAU;qCAC3B;iCACF,CAAC,CAAA;gCACF,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAA;gCACnC,MAAM,GAAG,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAA;gCAE5D,IAAI,CAAC,KAAK,GAAG,sBAAsB,CAAA;gCACnC,UAAU,CAAC,KAAK,GAAG,iBAAiB,CAAA;4BACtC,CAAC;yBACF;qBACF,EACD,EAAC,UAAU,EAAE,KAAK,EAAC,CACpB,CAAA;gBACH,CAAC;aACF;SACF,CAAC,CAAA;QAEF,IAAI,MAAM,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE;YACvC,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK,EAAE,0DAA0D;gBACjE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;oBACtB,MAAM,YAAY,CAAC,mBAAmB,EAAE,8CAA8C,CAAC,CAAA;oBACvF,IAAI,CAAC,KAAK,GAAG,sDAAsD,CAAA;gBACrE,CAAC;aACF,CAAC,CAAA;SACH;QAED,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;YACnB;gBACE,KAAK,EAAE,gCAAgC,cAAc,EAAE;gBACvD,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;oBACtB,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC;wBAC1B,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI;4BACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;4BAC9B,IAAI,EAAE,CAAA;wBACR,CAAC;qBACF,CAAC,CAAA;oBACF,MAAM,mBAAmB,CAAC,mBAAmB,EAAE,cAAc,EAAE,MAAM,CAAC,CAAA;gBACxE,CAAC;aACF;YACD;gBACE,KAAK,EAAE,aAAa;gBACpB,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;oBACtB,MAAM,OAAO,CAAC,mBAAmB,CAAC,CAAA;oBAElC,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAA;gBACnC,CAAC;aACF;YACD;gBACE,KAAK,EAAE,kCAAkC;gBACzC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;oBACtB,MAAM,GAAG,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAA;oBACnD,MAAM,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;oBACrC,MAAM,GAAG,CAAC,MAAM,CAAC,sCAAsC,EAAE,EAAC,SAAS,EAAE,mBAAmB,EAAC,CAAC,CAAA;oBAC1F,IAAI,CAAC,KAAK,GAAG,4BAA4B,CAAA;gBAC3C,CAAC;aACF;SACF,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE;YAC9B,UAAU,EAAE,KAAK;YACjB,eAAe,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAC;YAClC,cAAc,EAAE,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE;SAC/C,CAAC,CAAA;QAEF,MAAM,IAAI,CAAC,GAAG,EAAE,CAAA;QAEhB,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;IACxB,cAAc;SACT,MAAM,CAAC,KAAK,CAAC,iBAAiB,CACnC,cAAc,EACd,KAAK,CACN;;WAEQ,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,iDAAiD,CAAC,EAAE,CAAC,CAAA;IAErG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;;;UAGlB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,cAAc,qBAAqB,CAAC;oCACjC,CAAC,CAAA;AACrC,CAAC;AAED,SAAS,mBAAmB,CAAC,qBAAyC;IACpE,IAAI,qBAAqB,IAAI,cAAc,CAAC,QAAQ,CAAC,qBAAuC,CAAC,EAAE;QAC7F,OAAO,qBAAuC,CAAA;KAC/C;IACD,MAAM,kBAAkB,GAAG,6BAA6B,EAAE,CAAA;IAC1D,OAAO,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAA;AACtE,CAAC;AAED,eAAe,IAAI,CAAA;AAOnB,KAAK,UAAU,gBAAgB,CAAC,WAA4B;IAC1D,WAAW,CAAC,OAAO,CAAC,GAAG,GAAG,sBAAsB,CAAA;IAEhD,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,WAA4B,EAC5B,KAAc,EACd,mBAAwC;IAExC,MAAM,EAAC,eAAe,EAAE,YAAY,EAAC,GAAG,mBAAmB,CAAA;IAE3D,WAAW,CAAC,eAAe,GAAG,WAAW,CAAC,eAAe,IAAI,EAAE,CAAA;IAC/D,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,IAAI,EAAE,CAAA;IAEzD,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC3C,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,eAAe,CAAC,GAAG,CAAE,CAAA;IAC9F,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACxC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,YAAY,CAAC,GAAG,CAAE,CAAA;IACrF,CAAC,CAAC,CAAA;IAEF,IAAI,KAAK,EAAE;QACT,MAAM,sBAAsB,GAAG;YAC7B,cAAc,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC,CAAW,EAAE;YACjG,uBAAuB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC,CAAW,EAAE;SAC/G,CAAA;QAED,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS;YAC3C,CAAC,CAAC,EAAC,GAAG,WAAW,CAAC,SAAS,EAAE,GAAG,sBAAsB,EAAC;YACvD,CAAC,CAAC,sBAAsB,CAAA;QAE1B,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW;YAC/C,CAAC,CAAC,EAAC,GAAG,WAAW,CAAC,WAAW,EAAE,GAAG,sBAAsB,EAAC;YACzD,CAAC,CAAC,sBAAsB,CAAA;KAC3B;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,SAAiB,EAAE,cAA8B,EAAE,MAAgB;IACpG,IAAI,cAAc,KAAK,MAAM,EAAE;QAC7B,MAAM,YAAY,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAA;KAC3D;IACD,MAAM,kBAAkB,CAAC,EAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAC,CAAC,CAAA;AACzE,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,SAAiB,EAAE,OAAe;IAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAChD,MAAM,YAAY,GAAG,GAAG,OAAO,IAAI,CAAA;IACnC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE;QACnC,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;KAC5B;IACD,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;AAChD,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,kBAA0B;IAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAC9B;QACE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,MAAM,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,SAAS,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,aAAa,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,eAAe,CAAC;KAC/C,EACD;QACE,GAAG,EAAE,IAAI;QACT,SAAS,EAAE,KAAK;QAChB,eAAe,EAAE,KAAK;QACtB,MAAM,EAAE,CAAC,oBAAoB,CAAC;KAC/B,CACF,CAAA;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;AAC5F,CAAC","sourcesContent":["import {\n string,\n path,\n error,\n file,\n output,\n os,\n ui,\n npm,\n environment,\n template,\n git,\n constants,\n version,\n} from '@shopify/cli-kit'\nimport {\n installNodeModules,\n packageManager,\n PackageManager,\n packageManagerUsedForCreating,\n} from '@shopify/cli-kit/node/node-package-manager'\n\nimport {parseGitHubRepositoryURL} from '@shopify/cli-kit/node/github'\nimport {Writable} from 'stream'\n\ninterface InitOptions {\n name: string\n template: string\n directory: string\n packageManager?: string\n shopifyCliVersion?: string\n cliHydrogenPackageVersion?: string\n hydrogenVersion?: string\n local: boolean\n}\n\nconst suggestHydrogenSupport = () => `\nHelp us make Hydrogen better by reporting this error so we can improve this message and/or fix the error.\n - Chat with us on Discord: https://discord.com/invite/ppSbThrFaS\n - Create an issue in GitHub: https://github.com/Shopify/hydrogen/issues/new\n`\n\nasync function init(options: InitOptions) {\n const hydrogenVersion = await version.findPackageVersionUp({fromModuleURL: import.meta.url})\n const user = (await os.username()) ?? ''\n const cliPackageVersion = options.shopifyCliVersion ?? (await constants.versions.cliKit())\n const cliHydrogenPackageVersion = options.cliHydrogenPackageVersion ?? hydrogenVersion\n const hydrogenPackageVersion = options.hydrogenVersion\n const packageManager = inferPackageManager(options.packageManager)\n const hyphenizedName = string.hyphenize(options.name)\n const outputDirectory = path.join(options.directory, hyphenizedName)\n\n await ui.nonEmptyDirectoryPrompt(outputDirectory)\n\n await file.inTemporaryDirectory(async (tmpDir) => {\n const templateDownloadDir = path.join(tmpDir, 'download')\n const templateScaffoldDir = path.join(tmpDir, 'app')\n\n await file.mkdir(templateDownloadDir)\n await file.mkdir(templateScaffoldDir)\n\n let tasks: ui.ListrTasks = []\n\n const templateInfo = await parseGitHubRepositoryURL(options.template).valueOrAbort()\n const branch = templateInfo.ref ? `#${templateInfo.ref}` : ''\n const templatePath = templateInfo.subDirectory\n ? path.join(templateDownloadDir, templateInfo.subDirectory)\n : templateDownloadDir\n\n const repoUrl = `${templateInfo.http}${branch}`\n await ui.task({\n title: `Downloading template from ${repoUrl}`,\n task: async () => {\n await git.downloadRepository({\n repoUrl,\n destination: templateDownloadDir,\n shallow: true,\n })\n if (!(await file.exists(path.join(templatePath, 'package.json')))) {\n throw new error.Abort(`The template ${templatePath} was not found.`, suggestHydrogenSupport())\n }\n return {successMessage: `Downloaded template from ${repoUrl}`}\n },\n })\n\n tasks = tasks.concat([\n {\n title: `Initializing your app ${hyphenizedName}`,\n task: async (_, parentTask) => {\n return parentTask.newListr(\n [\n {\n title: 'Parsing template files',\n task: async (_, task) => {\n const templateData = {\n name: hyphenizedName,\n shopify_cli_version: cliPackageVersion,\n hydrogen_version: hydrogenPackageVersion,\n author: user,\n dependency_manager: options.packageManager,\n }\n await template.recursiveDirectoryCopy(templatePath, templateScaffoldDir, templateData)\n\n task.title = 'Template files parsed'\n },\n },\n {\n title: 'Updating package.json',\n task: async (_, task) => {\n const packageJSON = await npm.readPackageJSON(templateScaffoldDir)\n const cliVersion = await constants.versions.cliKit()\n await npm.updateAppData(packageJSON, hyphenizedName)\n await updateCLIDependencies(packageJSON, options.local, {\n dependencies: {\n '@shopify/hydrogen': hydrogenPackageVersion,\n },\n devDependencies: {\n '@shopify/cli-hydrogen': cliHydrogenPackageVersion,\n '@shopify/cli': cliVersion,\n },\n })\n await updateCLIScripts(packageJSON)\n await npm.writePackageJSON(templateScaffoldDir, packageJSON)\n\n task.title = 'Package.json updated'\n parentTask.title = 'App initialized'\n },\n },\n ],\n {concurrent: false},\n )\n },\n },\n ])\n\n if (await environment.local.isShopify()) {\n tasks.push({\n title: \"[Shopifolks-only] Configuring the project's NPM registry\",\n task: async (_, task) => {\n await writeToNpmrc(templateScaffoldDir, `@shopify:registry=https://registry.npmjs.org`)\n task.title = \"[Shopifolks-only] Project's NPM registry configured.\"\n },\n })\n }\n\n tasks = tasks.concat([\n {\n title: `Installing dependencies with ${packageManager}`,\n task: async (_, task) => {\n const stdout = new Writable({\n write(chunk, encoding, next) {\n task.output = chunk.toString()\n next()\n },\n })\n await installDependencies(templateScaffoldDir, packageManager, stdout)\n },\n },\n {\n title: 'Cleaning up',\n task: async (_, task) => {\n await cleanup(templateScaffoldDir)\n\n task.title = 'Completed clean up'\n },\n },\n {\n title: 'Initializing a Git repository...',\n task: async (_, task) => {\n await git.initializeRepository(templateScaffoldDir)\n await git.addAll(templateScaffoldDir)\n await git.commit('Initial commit generated by Hydrogen', {directory: templateScaffoldDir})\n task.title = 'Git repository initialized'\n },\n },\n ])\n\n const list = ui.newListr(tasks, {\n concurrent: false,\n rendererOptions: {collapse: false},\n rendererSilent: environment.local.isUnitTest(),\n })\n\n await list.run()\n\n await file.move(templateScaffoldDir, outputDirectory)\n })\n\n output.info(output.content`\n✨ ${hyphenizedName} is ready to build!\n🚀 Run ${output.token.packagejsonScript(\n packageManager,\n 'dev',\n )} to start your local development server and start building.\n\n📚 Docs: ${output.token.link('Quick start guide', 'https://shopify.dev/custom-storefronts/hydrogen')}`)\n\n output.info(output.content`\n👋 Note: your project will display inventory from the Hydrogen Demo Store.\\\n To connect this project to your Shopify store’s inventory instead,\\\n update ${output.token.yellow(`${hyphenizedName}/hydrogen.config.js`)} with your\\\n store ID and Storefront API key.\\n`)\n}\n\nfunction inferPackageManager(optionsPackageManager: string | undefined): PackageManager {\n if (optionsPackageManager && packageManager.includes(optionsPackageManager as PackageManager)) {\n return optionsPackageManager as PackageManager\n }\n const usedPackageManager = packageManagerUsedForCreating()\n return usedPackageManager === 'unknown' ? 'npm' : usedPackageManager\n}\n\nexport default init\n\ninterface PackageDependencies {\n devDependencies: {[key: string]: string | undefined}\n dependencies: {[key: string]: string | undefined}\n}\n\nasync function updateCLIScripts(packageJSON: npm.PackageJSON): Promise<npm.PackageJSON> {\n packageJSON.scripts.dev = `shopify hydrogen dev`\n\n return packageJSON\n}\n\nasync function updateCLIDependencies(\n packageJSON: npm.PackageJSON,\n local: boolean,\n packageDependencies: PackageDependencies,\n): Promise<npm.PackageJSON> {\n const {devDependencies, dependencies} = packageDependencies\n\n packageJSON.devDependencies = packageJSON.devDependencies || {}\n packageJSON.dependencies = packageJSON.dependencies || {}\n\n Object.keys(devDependencies).forEach((key) => {\n packageJSON.devDependencies[key] = devDependencies[key] || packageJSON.devDependencies[key]!\n })\n\n Object.keys(dependencies).forEach((key) => {\n packageJSON.dependencies[key] = dependencies[key] || packageJSON.dependencies[key]!\n })\n\n if (local) {\n const devDependencyOverrides = {\n '@shopify/cli': `file:${(await path.findUp('packages/cli-main', {type: 'directory'})) as string}`,\n '@shopify/cli-hydrogen': `file:${(await path.findUp('packages/cli-hydrogen', {type: 'directory'})) as string}`,\n }\n\n packageJSON.overrides = packageJSON.overrides\n ? {...packageJSON.overrides, ...devDependencyOverrides}\n : devDependencyOverrides\n\n packageJSON.resolutions = packageJSON.resolutions\n ? {...packageJSON.resolutions, ...devDependencyOverrides}\n : devDependencyOverrides\n }\n\n return packageJSON\n}\n\nasync function installDependencies(directory: string, packageManager: PackageManager, stdout: Writable): Promise<void> {\n if (packageManager === 'pnpm') {\n await writeToNpmrc(directory, 'auto-install-peers = true')\n }\n await installNodeModules({directory, packageManager, stdout, args: []})\n}\n\nasync function writeToNpmrc(directory: string, content: string) {\n const npmrcPath = path.join(directory, '.npmrc')\n const npmrcContent = `${content}\\n`\n if (!(await file.exists(npmrcPath))) {\n await file.touch(npmrcPath)\n }\n await file.appendFile(npmrcPath, npmrcContent)\n}\n\nasync function cleanup(webOutputDirectory: string) {\n const gitPaths = await path.glob(\n [\n path.join(webOutputDirectory, '**', '.git'),\n path.join(webOutputDirectory, '**', '.github'),\n path.join(webOutputDirectory, '**', '.gitmodules'),\n path.join(webOutputDirectory, '.stackblitzrc'),\n ],\n {\n dot: true,\n onlyFiles: false,\n onlyDirectories: false,\n ignore: ['**/node_modules/**'],\n },\n )\n\n return Promise.all(gitPaths.map((path) => file.rmdir(path, {force: true}))).then(() => {})\n}\n"]}
|