@servicetitan/startup 35.2.0 → 36.0.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 (31) hide show
  1. package/dist/cli/commands/mfe-package-publish.d.ts.map +1 -1
  2. package/dist/cli/commands/mfe-package-publish.js +3 -3
  3. package/dist/cli/commands/mfe-package-publish.js.map +1 -1
  4. package/dist/cypress/config/index.d.ts.map +1 -0
  5. package/dist/cypress/config/index.js.map +1 -0
  6. package/dist/{cypress-config → cypress/config}/webpack-config.d.ts +1 -1
  7. package/dist/cypress/config/webpack-config.d.ts.map +1 -0
  8. package/dist/{cypress-config → cypress/config}/webpack-config.js +4 -4
  9. package/dist/cypress/config/webpack-config.js.map +1 -0
  10. package/dist/cypress/types/index.d.ts +9 -0
  11. package/dist/cypress/types/index.d.ts.map +1 -0
  12. package/dist/cypress/types/index.js +7 -0
  13. package/dist/cypress/types/index.js.map +1 -0
  14. package/package.json +18 -11
  15. package/src/cli/commands/__tests__/mfe-package-publish.test.ts +1 -1
  16. package/src/cli/commands/{run-task.test.ts → __tests__/run-task.test.ts} +8 -8
  17. package/src/cli/commands/mfe-package-publish.ts +8 -4
  18. package/src/{cypress-config → cypress/config}/__tests__/webpack-config.test.ts +6 -6
  19. package/src/{cypress-config → cypress/config}/webpack-config.ts +4 -4
  20. package/src/cypress/types/index.ts +11 -0
  21. package/dist/cli/commands/run-task.test.d.ts +0 -2
  22. package/dist/cli/commands/run-task.test.d.ts.map +0 -1
  23. package/dist/cli/commands/run-task.test.js +0 -65
  24. package/dist/cli/commands/run-task.test.js.map +0 -1
  25. package/dist/cypress-config/index.d.ts.map +0 -1
  26. package/dist/cypress-config/index.js.map +0 -1
  27. package/dist/cypress-config/webpack-config.d.ts.map +0 -1
  28. package/dist/cypress-config/webpack-config.js.map +0 -1
  29. /package/dist/{cypress-config → cypress/config}/index.d.ts +0 -0
  30. /package/dist/{cypress-config → cypress/config}/index.js +0 -0
  31. /package/src/{cypress-config → cypress/config}/index.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"mfe-package-publish.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mfe-package-publish.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAsBlC,qBAAa,iBAAkB,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAElD,OAAO;IA0Bb,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,CAAC,YAAY;YAoBN,mBAAmB;IAiDjC,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,cAAc;YA2BR,eAAe;IAqB7B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,kBAAkB;YAsBZ,qBAAqB;YAoCrB,kBAAkB;CAgBnC"}
1
+ {"version":3,"file":"mfe-package-publish.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mfe-package-publish.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAuBlC,qBAAa,iBAAkB,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAElD,OAAO;IA0Bb,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,CAAC,YAAY;YAsBN,mBAAmB;IAiDjC,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,cAAc;YA4BR,eAAe;IAqB7B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,kBAAkB;YAsBZ,qBAAqB;YAoCrB,kBAAkB;CAgBnC"}
@@ -54,7 +54,7 @@ class MFEPackagePublish extends _types.Command {
54
54
  get dryRunPrefix() {
55
55
  return this.args.dry ? _utils1.DRY_RUN_PREFIX : '';
56
56
  }
57
- checkPackage(packageJson, { force, isBranchConfigured }) {
57
+ checkPackage(packageJson, { branch, force, isBranchConfigured }) {
58
58
  if (!(0, _utils.isWebComponent)()) {
59
59
  throw new Error('only web-components can be published');
60
60
  }
@@ -63,8 +63,7 @@ class MFEPackagePublish extends _types.Command {
63
63
  return false;
64
64
  }
65
65
  if (!isBranchConfigured && !force) {
66
- _utils.log.warning('branch is not configured for publishing, use --force flag to publish if needed');
67
- return false;
66
+ throw new Error(`branch "${branch}" is not configured for publishing, use --force flag to publish if needed`);
68
67
  }
69
68
  return true;
70
69
  }
@@ -129,6 +128,7 @@ class MFEPackagePublish extends _types.Command {
129
128
  registry
130
129
  })) === null || _npmView === void 0 ? void 0 : _npmView['dist-tags']) !== null && _ref2 !== void 0 ? _ref2 : {};
131
130
  return {
131
+ branch,
132
132
  buildVersion,
133
133
  dry: !!cli.dry,
134
134
  force: !!cli.force,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/mfe-package-publish.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport {\n getBranchesConfigs,\n getFolders,\n isWebComponent,\n log,\n logErrors,\n readJson,\n} from '../../utils';\nimport { EntryPoint, EntryPoints, Metadata } from '../../webpack/configs';\nimport {\n DRY_RUN_PREFIX,\n getDefaultBuildVersion,\n gitGetBranch,\n gitGetCommitHash,\n npmGetPackageVersions,\n npmPackageSet,\n npmPublish,\n npmTagVersion,\n npmView,\n runCommand,\n} from '../utils';\nimport type { entry } from './registry/mfe-package-publish';\nimport { Command } from './types';\nimport { DEFAULT_MFE_REGISTRY, buildRollbackTag, purgeCache } from './utils';\n\ninterface PublishData {\n buildVersion: string;\n dry: boolean;\n force: boolean;\n isBranchConfigured: boolean;\n registry: string;\n tag: string;\n uploadSourcemaps: boolean;\n version: string;\n trackHistory: boolean;\n publishedTags: Record<string, string>;\n}\n\ninterface PackageJson {\n name: string;\n private?: boolean;\n files?: string[];\n}\n\nexport class MFEPackagePublish extends Command<typeof entry> {\n @logErrors\n async execute() {\n if (this.args.dry) {\n log.warning('DRY-RUN MODE ENABLED, WILL NOT PUBLISH PACKAGES');\n }\n\n const packageJson = readJson<PackageJson>('package.json');\n\n const data = this.getPublishData(packageJson.name);\n if (!this.checkPackage(packageJson, data)) {\n return;\n }\n\n await this.maybeApplyRollbackTag(packageJson.name, data);\n\n await this.maybePublishPackage(packageJson, data);\n\n const { dry, tag } = data;\n if (this.args.purgeCache !== false && !dry) {\n purgeCache({ packageName: packageJson.name, tag });\n }\n\n if (data.uploadSourcemaps) {\n this.uploadSourcemaps(data);\n }\n }\n\n private get dryRunPrefix() {\n return this.args.dry ? DRY_RUN_PREFIX : '';\n }\n\n private checkPackage(packageJson: PackageJson, { force, isBranchConfigured }: PublishData) {\n if (!isWebComponent()) {\n throw new Error('only web-components can be published');\n }\n\n if (packageJson.private) {\n log.warning('package is private, skipping publish');\n return false;\n }\n\n if (!isBranchConfigured && !force) {\n log.warning(\n 'branch is not configured for publishing, use --force flag to publish if needed'\n );\n return false;\n }\n\n return true;\n }\n\n private async maybePublishPackage(packageJson: PackageJson, data: PublishData) {\n try {\n const { dry, registry, tag, version } = data;\n\n const versions = npmGetPackageVersions(registry, packageJson.name);\n if (versions.includes(version)) {\n log.warning(\n `${this.dryRunPrefix}${packageJson.name} version ${version} is already published, skipping publish`\n );\n\n log.info(`${this.dryRunPrefix}Tagging version ${version} with tag \"${tag}\"`);\n\n if (!dry) {\n await npmTagVersion({\n packageName: packageJson.name,\n packageVersion: version,\n registry,\n tag,\n });\n }\n\n return;\n }\n\n this.validateMetadata(version);\n\n await npmPackageSet('version', version);\n await npmPackageSet('publishConfig.registry', registry);\n await this.setPackageFiles(packageJson);\n\n log.info(`${this.dryRunPrefix}Publishing ${packageJson.name} version ${version}`);\n await npmPublish({ dry, tag });\n } catch (error) {\n log.error(`Failed to publish package ${packageJson.name}`);\n\n const versionOriginallyTaggedWithRollback =\n data.publishedTags[buildRollbackTag(data.tag)];\n\n if (versionOriginallyTaggedWithRollback) {\n await this.restoreRollbackTag(\n packageJson.name,\n data,\n versionOriginallyTaggedWithRollback\n );\n }\n throw error;\n }\n }\n\n private uploadSourcemaps({ dry, version }: PublishData) {\n const options = [...[dry && '--dry'], `--releaseVersion=${version}`].filter(\n option => !!option\n ) as string[];\n\n runCommand(`npx startup upload-sourcemaps ${options.join(' ')}`);\n }\n\n private getPublishData(packageName: string): PublishData {\n const cli = this.args;\n const branch = cli.branch ?? gitGetBranch();\n const branchConfig = getBranchesConfigs()[branch];\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const buildVersion = cli.build || getDefaultBuildVersion(branch, gitGetCommitHash());\n const registry = cli.registry ?? DEFAULT_MFE_REGISTRY;\n const tag = cli.tag ?? branchConfig?.publishTag ?? '';\n const uploadSourcemaps = cli.uploadSourcemaps ?? branchConfig?.uploadSourcemaps ?? true;\n const version = '0.0.0-' + buildVersion;\n const publishedTags = npmView({ packageName, registry })?.['dist-tags'] ?? {};\n\n return {\n buildVersion,\n dry: !!cli.dry,\n force: !!cli.force,\n isBranchConfigured: !!branchConfig,\n publishedTags,\n registry,\n tag: tag || 'latest',\n trackHistory: cli.trackHistory ?? true,\n uploadSourcemaps,\n version,\n };\n }\n\n private async setPackageFiles({ files: inputFiles }: PackageJson) {\n let outputFiles = ['dist/bundle', 'dist/metadata.json', 'package.json'];\n\n if (inputFiles?.length) {\n const index = inputFiles.findIndex(file => file === 'dist');\n if (index < 0) {\n return;\n }\n outputFiles = [\n ...inputFiles.slice(0, index),\n ...outputFiles.filter(file => file.startsWith('dist')),\n ...inputFiles.slice(index + 1),\n ];\n }\n\n for (let i = 0, n = outputFiles.length; i < n; i++) {\n // eslint-disable-next-line no-await-in-loop\n await npmPackageSet(`files[${i}]`, outputFiles[i]);\n }\n }\n\n private validateMetadata(version: string) {\n const { destination: outDir } = getFolders();\n\n const metadataJson = path.join(outDir, 'metadata.json');\n if (!fs.existsSync(metadataJson)) {\n throw new Error(`${metadataJson} is not present`);\n }\n\n const metadata = readJson<Metadata>(metadataJson);\n this.validateEntryPoints(outDir, metadata);\n\n fs.writeFileSync(metadataJson, JSON.stringify({ ...metadata, version }, null, 2), 'utf-8');\n }\n\n private validateEntryPoints(outDir: string, { entrypoints = {} }: Metadata) {\n const keys: (keyof EntryPoints)[] = ['full', 'light'];\n keys.forEach(name =>\n this.validateEntryPoint({ entryPoint: entrypoints[name], name, outDir })\n );\n }\n\n private validateEntryPoint({\n entryPoint = {},\n name,\n outDir,\n }: {\n entryPoint?: EntryPoint;\n name: keyof EntryPoints;\n outDir: string;\n }) {\n const keys: (keyof EntryPoint)[] = ['css', 'js'];\n keys.forEach(key => {\n if (!entryPoint[key]) {\n throw new Error(`${name}.${key} not found in metadata.json`);\n }\n entryPoint[key].forEach(filename => {\n if (!fs.existsSync(path.join(outDir, 'bundle', name, filename))) {\n throw new Error(`referenced bundle ${filename} was not found`);\n }\n });\n });\n }\n\n private async maybeApplyRollbackTag(packageName: string, data: PublishData) {\n const { dry, registry, tag, trackHistory, version, publishedTags } = data;\n\n if (!trackHistory) {\n log.info('Track history is turned off, skipping rollback tag');\n return;\n }\n\n const previousVersion = publishedTags[tag];\n\n if (!previousVersion) {\n log.info(`No previous version published with tag \"${tag}\", skipping rollback tag`);\n return;\n }\n\n if (previousVersion === version) {\n log.info(`Version \"${version}\" is already tagged \"${tag}\", skipping rollback tag`);\n return;\n }\n\n const prevTag = buildRollbackTag(tag);\n\n log.info(\n `${this.dryRunPrefix}Tagging previous version ${previousVersion} with tag \"${prevTag}\"`\n );\n\n if (!dry) {\n await npmTagVersion({\n packageName,\n packageVersion: previousVersion,\n registry,\n tag: prevTag,\n });\n }\n }\n\n private async restoreRollbackTag(\n packageName: string,\n { registry, tag }: PublishData,\n version: string\n ) {\n const rollbackTag = buildRollbackTag(tag);\n\n log.info(`Restoring rollback tag ${rollbackTag} back to version ${version}`);\n\n await npmTagVersion({\n packageName,\n packageVersion: version,\n registry,\n tag: rollbackTag,\n });\n }\n}\n"],"names":["MFEPackagePublish","Command","execute","args","dry","log","warning","packageJson","readJson","data","getPublishData","name","checkPackage","maybeApplyRollbackTag","maybePublishPackage","tag","purgeCache","packageName","uploadSourcemaps","dryRunPrefix","DRY_RUN_PREFIX","force","isBranchConfigured","isWebComponent","Error","private","registry","version","versions","npmGetPackageVersions","includes","info","npmTagVersion","packageVersion","validateMetadata","npmPackageSet","setPackageFiles","npmPublish","error","versionOriginallyTaggedWithRollback","publishedTags","buildRollbackTag","restoreRollbackTag","options","filter","option","runCommand","join","cli","npmView","branch","gitGetBranch","branchConfig","getBranchesConfigs","buildVersion","build","getDefaultBuildVersion","gitGetCommitHash","DEFAULT_MFE_REGISTRY","publishTag","trackHistory","files","inputFiles","outputFiles","length","index","findIndex","file","slice","startsWith","i","n","destination","outDir","getFolders","metadataJson","path","fs","existsSync","metadata","validateEntryPoints","writeFileSync","JSON","stringify","entrypoints","keys","forEach","validateEntryPoint","entryPoint","key","filename","previousVersion","prevTag","rollbackTag"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/cli/commands/mfe-package-publish.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport {\n getBranchesConfigs,\n getFolders,\n isWebComponent,\n log,\n logErrors,\n readJson,\n} from '../../utils';\nimport { EntryPoint, EntryPoints, Metadata } from '../../webpack/configs';\nimport {\n DRY_RUN_PREFIX,\n getDefaultBuildVersion,\n gitGetBranch,\n gitGetCommitHash,\n npmGetPackageVersions,\n npmPackageSet,\n npmPublish,\n npmTagVersion,\n npmView,\n runCommand,\n} from '../utils';\nimport type { entry } from './registry/mfe-package-publish';\nimport { Command } from './types';\nimport { DEFAULT_MFE_REGISTRY, buildRollbackTag, purgeCache } from './utils';\n\ninterface PublishData {\n branch: string;\n buildVersion: string;\n dry: boolean;\n force: boolean;\n isBranchConfigured: boolean;\n registry: string;\n tag: string;\n uploadSourcemaps: boolean;\n version: string;\n trackHistory: boolean;\n publishedTags: Record<string, string>;\n}\n\ninterface PackageJson {\n name: string;\n private?: boolean;\n files?: string[];\n}\n\nexport class MFEPackagePublish extends Command<typeof entry> {\n @logErrors\n async execute() {\n if (this.args.dry) {\n log.warning('DRY-RUN MODE ENABLED, WILL NOT PUBLISH PACKAGES');\n }\n\n const packageJson = readJson<PackageJson>('package.json');\n\n const data = this.getPublishData(packageJson.name);\n if (!this.checkPackage(packageJson, data)) {\n return;\n }\n\n await this.maybeApplyRollbackTag(packageJson.name, data);\n\n await this.maybePublishPackage(packageJson, data);\n\n const { dry, tag } = data;\n if (this.args.purgeCache !== false && !dry) {\n purgeCache({ packageName: packageJson.name, tag });\n }\n\n if (data.uploadSourcemaps) {\n this.uploadSourcemaps(data);\n }\n }\n\n private get dryRunPrefix() {\n return this.args.dry ? DRY_RUN_PREFIX : '';\n }\n\n private checkPackage(\n packageJson: PackageJson,\n { branch, force, isBranchConfigured }: PublishData\n ) {\n if (!isWebComponent()) {\n throw new Error('only web-components can be published');\n }\n\n if (packageJson.private) {\n log.warning('package is private, skipping publish');\n return false;\n }\n\n if (!isBranchConfigured && !force) {\n throw new Error(\n `branch \"${branch}\" is not configured for publishing, use --force flag to publish if needed`\n );\n }\n\n return true;\n }\n\n private async maybePublishPackage(packageJson: PackageJson, data: PublishData) {\n try {\n const { dry, registry, tag, version } = data;\n\n const versions = npmGetPackageVersions(registry, packageJson.name);\n if (versions.includes(version)) {\n log.warning(\n `${this.dryRunPrefix}${packageJson.name} version ${version} is already published, skipping publish`\n );\n\n log.info(`${this.dryRunPrefix}Tagging version ${version} with tag \"${tag}\"`);\n\n if (!dry) {\n await npmTagVersion({\n packageName: packageJson.name,\n packageVersion: version,\n registry,\n tag,\n });\n }\n\n return;\n }\n\n this.validateMetadata(version);\n\n await npmPackageSet('version', version);\n await npmPackageSet('publishConfig.registry', registry);\n await this.setPackageFiles(packageJson);\n\n log.info(`${this.dryRunPrefix}Publishing ${packageJson.name} version ${version}`);\n await npmPublish({ dry, tag });\n } catch (error) {\n log.error(`Failed to publish package ${packageJson.name}`);\n\n const versionOriginallyTaggedWithRollback =\n data.publishedTags[buildRollbackTag(data.tag)];\n\n if (versionOriginallyTaggedWithRollback) {\n await this.restoreRollbackTag(\n packageJson.name,\n data,\n versionOriginallyTaggedWithRollback\n );\n }\n throw error;\n }\n }\n\n private uploadSourcemaps({ dry, version }: PublishData) {\n const options = [...[dry && '--dry'], `--releaseVersion=${version}`].filter(\n option => !!option\n ) as string[];\n\n runCommand(`npx startup upload-sourcemaps ${options.join(' ')}`);\n }\n\n private getPublishData(packageName: string): PublishData {\n const cli = this.args;\n const branch = cli.branch ?? gitGetBranch();\n const branchConfig = getBranchesConfigs()[branch];\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const buildVersion = cli.build || getDefaultBuildVersion(branch, gitGetCommitHash());\n const registry = cli.registry ?? DEFAULT_MFE_REGISTRY;\n const tag = cli.tag ?? branchConfig?.publishTag ?? '';\n const uploadSourcemaps = cli.uploadSourcemaps ?? branchConfig?.uploadSourcemaps ?? true;\n const version = '0.0.0-' + buildVersion;\n const publishedTags = npmView({ packageName, registry })?.['dist-tags'] ?? {};\n\n return {\n branch,\n buildVersion,\n dry: !!cli.dry,\n force: !!cli.force,\n isBranchConfigured: !!branchConfig,\n publishedTags,\n registry,\n tag: tag || 'latest',\n trackHistory: cli.trackHistory ?? true,\n uploadSourcemaps,\n version,\n };\n }\n\n private async setPackageFiles({ files: inputFiles }: PackageJson) {\n let outputFiles = ['dist/bundle', 'dist/metadata.json', 'package.json'];\n\n if (inputFiles?.length) {\n const index = inputFiles.findIndex(file => file === 'dist');\n if (index < 0) {\n return;\n }\n outputFiles = [\n ...inputFiles.slice(0, index),\n ...outputFiles.filter(file => file.startsWith('dist')),\n ...inputFiles.slice(index + 1),\n ];\n }\n\n for (let i = 0, n = outputFiles.length; i < n; i++) {\n // eslint-disable-next-line no-await-in-loop\n await npmPackageSet(`files[${i}]`, outputFiles[i]);\n }\n }\n\n private validateMetadata(version: string) {\n const { destination: outDir } = getFolders();\n\n const metadataJson = path.join(outDir, 'metadata.json');\n if (!fs.existsSync(metadataJson)) {\n throw new Error(`${metadataJson} is not present`);\n }\n\n const metadata = readJson<Metadata>(metadataJson);\n this.validateEntryPoints(outDir, metadata);\n\n fs.writeFileSync(metadataJson, JSON.stringify({ ...metadata, version }, null, 2), 'utf-8');\n }\n\n private validateEntryPoints(outDir: string, { entrypoints = {} }: Metadata) {\n const keys: (keyof EntryPoints)[] = ['full', 'light'];\n keys.forEach(name =>\n this.validateEntryPoint({ entryPoint: entrypoints[name], name, outDir })\n );\n }\n\n private validateEntryPoint({\n entryPoint = {},\n name,\n outDir,\n }: {\n entryPoint?: EntryPoint;\n name: keyof EntryPoints;\n outDir: string;\n }) {\n const keys: (keyof EntryPoint)[] = ['css', 'js'];\n keys.forEach(key => {\n if (!entryPoint[key]) {\n throw new Error(`${name}.${key} not found in metadata.json`);\n }\n entryPoint[key].forEach(filename => {\n if (!fs.existsSync(path.join(outDir, 'bundle', name, filename))) {\n throw new Error(`referenced bundle ${filename} was not found`);\n }\n });\n });\n }\n\n private async maybeApplyRollbackTag(packageName: string, data: PublishData) {\n const { dry, registry, tag, trackHistory, version, publishedTags } = data;\n\n if (!trackHistory) {\n log.info('Track history is turned off, skipping rollback tag');\n return;\n }\n\n const previousVersion = publishedTags[tag];\n\n if (!previousVersion) {\n log.info(`No previous version published with tag \"${tag}\", skipping rollback tag`);\n return;\n }\n\n if (previousVersion === version) {\n log.info(`Version \"${version}\" is already tagged \"${tag}\", skipping rollback tag`);\n return;\n }\n\n const prevTag = buildRollbackTag(tag);\n\n log.info(\n `${this.dryRunPrefix}Tagging previous version ${previousVersion} with tag \"${prevTag}\"`\n );\n\n if (!dry) {\n await npmTagVersion({\n packageName,\n packageVersion: previousVersion,\n registry,\n tag: prevTag,\n });\n }\n }\n\n private async restoreRollbackTag(\n packageName: string,\n { registry, tag }: PublishData,\n version: string\n ) {\n const rollbackTag = buildRollbackTag(tag);\n\n log.info(`Restoring rollback tag ${rollbackTag} back to version ${version}`);\n\n await npmTagVersion({\n packageName,\n packageVersion: version,\n registry,\n tag: rollbackTag,\n });\n }\n}\n"],"names":["MFEPackagePublish","Command","execute","args","dry","log","warning","packageJson","readJson","data","getPublishData","name","checkPackage","maybeApplyRollbackTag","maybePublishPackage","tag","purgeCache","packageName","uploadSourcemaps","dryRunPrefix","DRY_RUN_PREFIX","branch","force","isBranchConfigured","isWebComponent","Error","private","registry","version","versions","npmGetPackageVersions","includes","info","npmTagVersion","packageVersion","validateMetadata","npmPackageSet","setPackageFiles","npmPublish","error","versionOriginallyTaggedWithRollback","publishedTags","buildRollbackTag","restoreRollbackTag","options","filter","option","runCommand","join","cli","npmView","gitGetBranch","branchConfig","getBranchesConfigs","buildVersion","build","getDefaultBuildVersion","gitGetCommitHash","DEFAULT_MFE_REGISTRY","publishTag","trackHistory","files","inputFiles","outputFiles","length","index","findIndex","file","slice","startsWith","i","n","destination","outDir","getFolders","metadataJson","path","fs","existsSync","metadata","validateEntryPoints","writeFileSync","JSON","stringify","entrypoints","keys","forEach","validateEntryPoint","entryPoint","key","filename","previousVersion","prevTag","rollbackTag"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cypress/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cypress/config/index.ts"],"sourcesContent":["export * from './webpack-config';\n"],"names":[],"mappings":";;;;qBAAc"}
@@ -1,4 +1,4 @@
1
1
  import type { Configuration } from 'webpack';
2
- import { Overrides } from '../webpack/configs';
2
+ import { Overrides } from '../../webpack/configs';
3
3
  export declare function webpackConfig(overrides?: Overrides): Configuration;
4
4
  //# sourceMappingURL=webpack-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webpack-config.d.ts","sourceRoot":"","sources":["../../../src/cypress/config/webpack-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAK7C,OAAO,EAAW,SAAS,EAAe,MAAM,uBAAuB,CAAC;AAExE,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,aAAa,CAiBlE"}
@@ -10,10 +10,10 @@ Object.defineProperty(exports, "webpackConfig", {
10
10
  });
11
11
  const _nodeutil = require("node:util");
12
12
  const _webpackmerge = /*#__PURE__*/ _interop_require_default(require("webpack-merge"));
13
- const _tasks = require("../cli/tasks");
14
- const _utils = require("../cli/utils");
15
- const _utils1 = require("../utils");
16
- const _configs = require("../webpack/configs");
13
+ const _tasks = require("../../cli/tasks");
14
+ const _utils = require("../../cli/utils");
15
+ const _utils1 = require("../../utils");
16
+ const _configs = require("../../webpack/configs");
17
17
  function _interop_require_default(obj) {
18
18
  return obj && obj.__esModule ? obj : {
19
19
  default: obj
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cypress/config/webpack-config.ts"],"sourcesContent":["import { inspect } from 'node:util';\nimport type { Configuration } from 'webpack';\nimport merge from 'webpack-merge';\nimport { getSwcOptions } from '../../cli/tasks';\nimport { TSConfig } from '../../cli/utils';\nimport { getTsConfigWithFallback, log } from '../../utils';\nimport { Context, Overrides, rulesConfig } from '../../webpack/configs';\n\nexport function webpackConfig(overrides?: Overrides): Configuration {\n const context = getContext();\n const rules = getRules(context, overrides ?? {});\n\n /* istanbul ignore next: debug only */\n log.debug('cypress-config:webpack-config', () => inspect({ rules }, { depth: null }));\n\n const config: Configuration = {\n module: {\n rules,\n },\n resolve: {\n extensions: ['.ts', '.tsx', '.js', '.jsx'],\n },\n };\n\n return merge(config, overrides?.configuration ?? {});\n}\n\nfunction getContext(): Context {\n return {\n destination: '',\n isProduction: false,\n name: '',\n packageData: {} as any,\n sharedDependencies: {},\n source: '',\n };\n}\n\nfunction getRules(context: Context, overrides: Overrides) {\n const { rules } = rulesConfig(context, overrides);\n\n return [getSwcLoaderRule(), ...rules];\n}\n\nfunction getSwcLoaderRule() {\n const tsConfig = new TSConfig(getTsConfigWithFallback());\n\n const swcOptions = getSwcOptions(tsConfig);\n\n return {\n test: /\\.tsx?$/,\n exclude: /node_modules/,\n use: {\n loader: 'swc-loader',\n options: swcOptions,\n },\n };\n}\n"],"names":["webpackConfig","overrides","context","getContext","rules","getRules","log","debug","inspect","depth","config","module","resolve","extensions","merge","configuration","destination","isProduction","name","packageData","sharedDependencies","source","rulesConfig","getSwcLoaderRule","tsConfig","TSConfig","getTsConfigWithFallback","swcOptions","getSwcOptions","test","exclude","use","loader","options"],"mappings":";;;;+BAQgBA;;;eAAAA;;;0BARQ;qEAEN;uBACY;uBACL;wBACoB;yBACG;;;;;;AAEzC,SAASA,cAAcC,SAAqB;;IAC/C,MAAMC,UAAUC;IAChB,MAAMC,QAAQC,SAASH,SAASD,sBAAAA,uBAAAA,YAAa,CAAC;IAE9C,oCAAoC,GACpCK,WAAG,CAACC,KAAK,CAAC,iCAAiC,IAAMC,IAAAA,iBAAO,EAAC;YAAEJ;QAAM,GAAG;YAAEK,OAAO;QAAK;IAElF,MAAMC,SAAwB;QAC1BC,QAAQ;YACJP;QACJ;QACAQ,SAAS;YACLC,YAAY;gBAAC;gBAAO;gBAAQ;gBAAO;aAAO;QAC9C;IACJ;IAEA,OAAOC,IAAAA,qBAAK,EAACJ,gBAAQT,sBAAAA,gCAAAA,UAAWc,aAAa,uCAAI,CAAC;AACtD;AAEA,SAASZ;IACL,OAAO;QACHa,aAAa;QACbC,cAAc;QACdC,MAAM;QACNC,aAAa,CAAC;QACdC,oBAAoB,CAAC;QACrBC,QAAQ;IACZ;AACJ;AAEA,SAAShB,SAASH,OAAgB,EAAED,SAAoB;IACpD,MAAM,EAAEG,KAAK,EAAE,GAAGkB,IAAAA,oBAAW,EAACpB,SAASD;IAEvC,OAAO;QAACsB;WAAuBnB;KAAM;AACzC;AAEA,SAASmB;IACL,MAAMC,WAAW,IAAIC,eAAQ,CAACC,IAAAA,+BAAuB;IAErD,MAAMC,aAAaC,IAAAA,oBAAa,EAACJ;IAEjC,OAAO;QACHK,MAAM;QACNC,SAAS;QACTC,KAAK;YACDC,QAAQ;YACRC,SAASN;QACb;IACJ;AACJ"}
@@ -0,0 +1,9 @@
1
+ import type { mount } from 'cypress/react';
2
+ declare global {
3
+ namespace Cypress {
4
+ interface Chainable {
5
+ mount: typeof mount;
6
+ }
7
+ }
8
+ }
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cypress/types/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,CAAC,MAAM,CAAC;IAEX,UAAU,OAAO,CAAC;QACd,UAAU,SAAS;YACf,KAAK,EAAE,OAAO,KAAK,CAAC;SACvB;KACJ;CACJ"}
@@ -0,0 +1,7 @@
1
+ // @ts-expect-error Module is only exported, not used in this project
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cypress/types/index.ts"],"sourcesContent":["// @ts-expect-error Module is only exported, not used in this project\nimport type { mount } from 'cypress/react';\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace Cypress {\n interface Chainable {\n mount: typeof mount;\n }\n }\n}\n"],"names":[],"mappings":"AAAA,qEAAqE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/startup",
3
- "version": "35.2.0",
3
+ "version": "36.0.0",
4
4
  "description": "CLI to create multi-package Lerna projects with TypeScript and React",
5
5
  "homepage": "https://docs.st.dev/docs/frontend/uikit/startup",
6
6
  "repository": {
@@ -20,7 +20,10 @@
20
20
  "default": "./dist/index.js",
21
21
  "types": "./dist/index.d.ts"
22
22
  },
23
- "./cypress-config": "./dist/cypress-config/index.js",
23
+ "./@types/cypress": {
24
+ "types": "./dist/cypress/types/index.d.ts"
25
+ },
26
+ "./cypress-config": "./dist/cypress/config/index.js",
24
27
  "./jest-preset": "./jest/jest-preset.js",
25
28
  "./jest-resolver": "./dist/jest/resolver.js",
26
29
  "./jest-svg-transformer": "./dist/jest/svg-transformer.js",
@@ -41,7 +44,7 @@
41
44
  "postinstall": "node ./src/postinstall.js"
42
45
  },
43
46
  "devDependencies": {
44
- "@swc/types": "^0.1.25",
47
+ "@swc/types": "^0.1.26",
45
48
  "@types/cpx": "~1.5.5",
46
49
  "@types/debug": "^4.1.12",
47
50
  "@types/eslint": "~9.6.1",
@@ -57,13 +60,13 @@
57
60
  "@jest/core": "~30.3.0",
58
61
  "@jest/types": "~30.3.0",
59
62
  "@jsdevtools/coverage-istanbul-loader": "^3.0.5",
60
- "@servicetitan/eslint-config": "35.2.0",
61
- "@servicetitan/install": "35.2.0",
62
- "@servicetitan/startup-utils": "35.2.0",
63
- "@servicetitan/stylelint-config": "35.2.0",
63
+ "@servicetitan/eslint-config": "36.0.0",
64
+ "@servicetitan/install": "36.0.0",
65
+ "@servicetitan/startup-utils": "36.0.0",
66
+ "@servicetitan/stylelint-config": "36.0.0",
64
67
  "@svgr/webpack": "^8.1.0",
65
68
  "@swc/cli": "^0.8.0",
66
- "@swc/core": "1.15.18",
69
+ "@swc/core": "1.15.21",
67
70
  "@types/debug": "^4.1.12",
68
71
  "@types/jest": "~30.0.0",
69
72
  "@vitest/coverage-v8": "^4.1.0",
@@ -91,7 +94,7 @@
91
94
  "less-plugin-npm-import": "~2.1.0",
92
95
  "lodash.kebabcase": "^4.1.1",
93
96
  "lodash.memoize": "^4.1.2",
94
- "memfs": "~4.56.11",
97
+ "memfs": "~4.57.1",
95
98
  "mini-css-extract-plugin": "~2.10.1",
96
99
  "moment-locales-webpack-plugin": "~1.2.0",
97
100
  "multimatch": "~8.0.0",
@@ -115,7 +118,7 @@
115
118
  "vitest": "^4.1.0",
116
119
  "webpack": "~5.105.4",
117
120
  "webpack-assets-manifest": "~6.5.1",
118
- "webpack-bundle-analyzer": "^5.2.0",
121
+ "webpack-bundle-analyzer": "^5.3.0",
119
122
  "webpack-dev-server": "~5.2.3",
120
123
  "webpack-filter-warnings-plugin": "~1.2.1",
121
124
  "webpack-merge": "~6.0.1",
@@ -126,11 +129,15 @@
126
129
  "yargs": "~18.0.0"
127
130
  },
128
131
  "peerDependencies": {
132
+ "cypress": ">=15.0.0",
129
133
  "moment": ">=2.30.1"
130
134
  },
131
135
  "peerDependenciesMeta": {
132
136
  "moment": {
133
137
  "optional": true
138
+ },
139
+ "cypress": {
140
+ "optional": true
134
141
  }
135
142
  },
136
143
  "DEVELOPER_NOTES": {},
@@ -140,5 +147,5 @@
140
147
  "cli": {
141
148
  "webpack": false
142
149
  },
143
- "gitHead": "3dee12f1c7b7d2cf01180a187bd2b919a56c1fed"
150
+ "gitHead": "73584720991027dd55eaeb24fb8e09bad656dbad"
144
151
  }
@@ -601,7 +601,7 @@ describe(`[startup] ${MFEPackagePublish.name}`, () => {
601
601
 
602
602
  beforeEach(() => jest.mocked(gitGetBranch).mockReturnValue(branch));
603
603
 
604
- itLogsMessageAndSkipsPublishing(/branch is not configured for publishing/);
604
+ itThrowsError(/branch "foo" is not configured for publishing/);
605
605
 
606
606
  describe('with "force" argument"', () => {
607
607
  beforeEach(() => (args.force = true));
@@ -1,14 +1,14 @@
1
- import { log } from '../../utils';
2
- import { SwcCompilePackage, TscCompile, TscCompilePackage } from '../tasks';
3
- import { RunTask } from './run-task';
1
+ import { log } from '../../../utils';
2
+ import { SwcCompilePackage, TscCompile, TscCompilePackage } from '../../tasks';
3
+ import { RunTask } from '../run-task';
4
4
 
5
- jest.mock('../../utils', () => ({
6
- ...jest.requireActual('../../utils'),
5
+ jest.mock('../../../utils', () => ({
6
+ ...jest.requireActual('../../../utils'),
7
7
  log: { error: jest.fn(), text: jest.fn() },
8
8
  }));
9
- jest.mock('../tasks/swc-compile-package');
10
- jest.mock('../tasks/tsc-compile');
11
- jest.mock('../tasks/tsc-compile-package');
9
+ jest.mock('../../tasks/swc-compile-package');
10
+ jest.mock('../../tasks/tsc-compile');
11
+ jest.mock('../../tasks/tsc-compile-package');
12
12
 
13
13
  describe(`[startup] ${RunTask.name}`, () => {
14
14
  let args: ConstructorParameters<typeof RunTask>[0];
@@ -26,6 +26,7 @@ import { Command } from './types';
26
26
  import { DEFAULT_MFE_REGISTRY, buildRollbackTag, purgeCache } from './utils';
27
27
 
28
28
  interface PublishData {
29
+ branch: string;
29
30
  buildVersion: string;
30
31
  dry: boolean;
31
32
  force: boolean;
@@ -76,7 +77,10 @@ export class MFEPackagePublish extends Command<typeof entry> {
76
77
  return this.args.dry ? DRY_RUN_PREFIX : '';
77
78
  }
78
79
 
79
- private checkPackage(packageJson: PackageJson, { force, isBranchConfigured }: PublishData) {
80
+ private checkPackage(
81
+ packageJson: PackageJson,
82
+ { branch, force, isBranchConfigured }: PublishData
83
+ ) {
80
84
  if (!isWebComponent()) {
81
85
  throw new Error('only web-components can be published');
82
86
  }
@@ -87,10 +91,9 @@ export class MFEPackagePublish extends Command<typeof entry> {
87
91
  }
88
92
 
89
93
  if (!isBranchConfigured && !force) {
90
- log.warning(
91
- 'branch is not configured for publishing, use --force flag to publish if needed'
94
+ throw new Error(
95
+ `branch "${branch}" is not configured for publishing, use --force flag to publish if needed`
92
96
  );
93
- return false;
94
97
  }
95
98
 
96
99
  return true;
@@ -167,6 +170,7 @@ export class MFEPackagePublish extends Command<typeof entry> {
167
170
  const publishedTags = npmView({ packageName, registry })?.['dist-tags'] ?? {};
168
171
 
169
172
  return {
173
+ branch,
170
174
  buildVersion,
171
175
  dry: !!cli.dry,
172
176
  force: !!cli.force,
@@ -1,13 +1,13 @@
1
1
  import { fs, vol } from 'memfs';
2
- import { getSwcOptions } from '../../cli/tasks';
3
- import { TSConfig } from '../../cli/utils';
4
- import { getBaseTsConfig } from '../../utils';
5
- import { Overrides, rulesConfig } from '../../webpack/configs';
2
+ import { getSwcOptions } from '../../../cli/tasks';
3
+ import { TSConfig } from '../../../cli/utils';
4
+ import { getBaseTsConfig } from '../../../utils';
5
+ import { Overrides, rulesConfig } from '../../../webpack/configs';
6
6
  import { webpackConfig } from '../webpack-config';
7
7
 
8
8
  jest.mock('fs', () => fs);
9
- jest.mock('../../webpack/configs');
10
- jest.mock('../../cli/tasks');
9
+ jest.mock('../../../webpack/configs');
10
+ jest.mock('../../../cli/tasks');
11
11
 
12
12
  describe(`[startup/cypress-config] ${webpackConfig.name}`, () => {
13
13
  const mockRules: any[] = [
@@ -1,10 +1,10 @@
1
1
  import { inspect } from 'node:util';
2
2
  import type { Configuration } from 'webpack';
3
3
  import merge from 'webpack-merge';
4
- import { getSwcOptions } from '../cli/tasks';
5
- import { TSConfig } from '../cli/utils';
6
- import { getTsConfigWithFallback, log } from '../utils';
7
- import { Context, Overrides, rulesConfig } from '../webpack/configs';
4
+ import { getSwcOptions } from '../../cli/tasks';
5
+ import { TSConfig } from '../../cli/utils';
6
+ import { getTsConfigWithFallback, log } from '../../utils';
7
+ import { Context, Overrides, rulesConfig } from '../../webpack/configs';
8
8
 
9
9
  export function webpackConfig(overrides?: Overrides): Configuration {
10
10
  const context = getContext();
@@ -0,0 +1,11 @@
1
+ // @ts-expect-error Module is only exported, not used in this project
2
+ import type { mount } from 'cypress/react';
3
+
4
+ declare global {
5
+ // eslint-disable-next-line @typescript-eslint/no-namespace
6
+ namespace Cypress {
7
+ interface Chainable {
8
+ mount: typeof mount;
9
+ }
10
+ }
11
+ }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=run-task.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-task.test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run-task.test.ts"],"names":[],"mappings":""}
@@ -1,65 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _utils = require("../../utils");
6
- const _tasks = require("../tasks");
7
- const _runtask = require("./run-task");
8
- jest.mock('../../utils', ()=>({
9
- ...jest.requireActual('../../utils'),
10
- log: {
11
- error: jest.fn(),
12
- text: jest.fn()
13
- }
14
- }));
15
- jest.mock('../tasks/swc-compile-package');
16
- jest.mock('../tasks/tsc-compile');
17
- jest.mock('../tasks/tsc-compile-package');
18
- describe(`[startup] ${_runtask.RunTask.name}`, ()=>{
19
- let args;
20
- beforeEach(()=>{
21
- jest.clearAllMocks();
22
- });
23
- const subject = ()=>new _runtask.RunTask(args).execute();
24
- const supportedTasks = {
25
- 'tsc-compile-package': _tasks.TscCompilePackage,
26
- 'swc-compile-package': _tasks.SwcCompilePackage,
27
- 'tsc-compile': _tasks.TscCompile
28
- };
29
- Object.entries(supportedTasks).forEach(([name, task])=>describe(`with ${name}`, ()=>{
30
- beforeEach(()=>args = {
31
- _: [
32
- name
33
- ]
34
- }); // eslint-disable-line @typescript-eslint/naming-convention
35
- test(`runs ${task.name}`, async ()=>{
36
- await subject();
37
- expect(jest.mocked(task).mock.instances[0].execute).toHaveBeenCalled();
38
- });
39
- }));
40
- describe('with empty args', ()=>{
41
- beforeEach(()=>args = {});
42
- test('logs error for undefined task', async ()=>{
43
- await subject();
44
- expect(_utils.log.error).toHaveBeenCalledWith('Unknown task: "undefined"');
45
- });
46
- });
47
- describe('with unrecognized task', ()=>{
48
- beforeEach(()=>args = {
49
- _: [
50
- 'foo'
51
- ]
52
- }); // eslint-disable-line @typescript-eslint/naming-convention
53
- test('logs error', async ()=>{
54
- var _args__;
55
- await subject();
56
- expect(_utils.log.error).toHaveBeenCalledWith(`Unknown task: "${(_args__ = args._) === null || _args__ === void 0 ? void 0 : _args__[0]}"`);
57
- });
58
- test('lists supported tasks', async ()=>{
59
- await subject();
60
- expect(_utils.log.text).toHaveBeenCalledWith(`\nSupported tasks: "${Object.keys(supportedTasks).join('", "')}"`);
61
- });
62
- });
63
- });
64
-
65
- //# sourceMappingURL=run-task.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/cli/commands/run-task.test.ts"],"sourcesContent":["import { log } from '../../utils';\nimport { SwcCompilePackage, TscCompile, TscCompilePackage } from '../tasks';\nimport { RunTask } from './run-task';\n\njest.mock('../../utils', () => ({\n ...jest.requireActual('../../utils'),\n log: { error: jest.fn(), text: jest.fn() },\n}));\njest.mock('../tasks/swc-compile-package');\njest.mock('../tasks/tsc-compile');\njest.mock('../tasks/tsc-compile-package');\n\ndescribe(`[startup] ${RunTask.name}`, () => {\n let args: ConstructorParameters<typeof RunTask>[0];\n\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n const subject = () => new RunTask(args).execute();\n\n const supportedTasks = {\n 'tsc-compile-package': TscCompilePackage,\n 'swc-compile-package': SwcCompilePackage,\n 'tsc-compile': TscCompile,\n };\n\n Object.entries(supportedTasks).forEach(([name, task]) =>\n describe(`with ${name}`, () => {\n beforeEach(() => (args = { _: [name] })); // eslint-disable-line @typescript-eslint/naming-convention\n\n test(`runs ${task.name}`, async () => {\n await subject();\n\n expect(jest.mocked(task).mock.instances[0].execute).toHaveBeenCalled();\n });\n })\n );\n\n describe('with empty args', () => {\n beforeEach(() => (args = {}));\n\n test('logs error for undefined task', async () => {\n await subject();\n\n expect(log.error).toHaveBeenCalledWith('Unknown task: \"undefined\"');\n });\n });\n\n describe('with unrecognized task', () => {\n beforeEach(() => (args = { _: ['foo'] })); // eslint-disable-line @typescript-eslint/naming-convention\n\n test('logs error', async () => {\n await subject();\n\n expect(log.error).toHaveBeenCalledWith(`Unknown task: \"${args._?.[0]}\"`);\n });\n\n test('lists supported tasks', async () => {\n await subject();\n\n expect(log.text).toHaveBeenCalledWith(\n `\\nSupported tasks: \"${Object.keys(supportedTasks).join('\", \"')}\"`\n );\n });\n });\n});\n"],"names":["jest","mock","requireActual","log","error","fn","text","describe","RunTask","name","args","beforeEach","clearAllMocks","subject","execute","supportedTasks","TscCompilePackage","SwcCompilePackage","TscCompile","Object","entries","forEach","task","_","test","expect","mocked","instances","toHaveBeenCalled","toHaveBeenCalledWith","keys","join"],"mappings":";;;;uBAAoB;uBAC6C;yBACzC;AAExBA,KAAKC,IAAI,CAAC,eAAe,IAAO,CAAA;QAC5B,GAAGD,KAAKE,aAAa,CAAC,cAAc;QACpCC,KAAK;YAAEC,OAAOJ,KAAKK,EAAE;YAAIC,MAAMN,KAAKK,EAAE;QAAG;IAC7C,CAAA;AACAL,KAAKC,IAAI,CAAC;AACVD,KAAKC,IAAI,CAAC;AACVD,KAAKC,IAAI,CAAC;AAEVM,SAAS,CAAC,UAAU,EAAEC,gBAAO,CAACC,IAAI,EAAE,EAAE;IAClC,IAAIC;IAEJC,WAAW;QACPX,KAAKY,aAAa;IACtB;IAEA,MAAMC,UAAU,IAAM,IAAIL,gBAAO,CAACE,MAAMI,OAAO;IAE/C,MAAMC,iBAAiB;QACnB,uBAAuBC,wBAAiB;QACxC,uBAAuBC,wBAAiB;QACxC,eAAeC,iBAAU;IAC7B;IAEAC,OAAOC,OAAO,CAACL,gBAAgBM,OAAO,CAAC,CAAC,CAACZ,MAAMa,KAAK,GAChDf,SAAS,CAAC,KAAK,EAAEE,MAAM,EAAE;YACrBE,WAAW,IAAOD,OAAO;oBAAEa,GAAG;wBAACd;qBAAK;gBAAC,IAAK,2DAA2D;YAErGe,KAAK,CAAC,KAAK,EAAEF,KAAKb,IAAI,EAAE,EAAE;gBACtB,MAAMI;gBAENY,OAAOzB,KAAK0B,MAAM,CAACJ,MAAMrB,IAAI,CAAC0B,SAAS,CAAC,EAAE,CAACb,OAAO,EAAEc,gBAAgB;YACxE;QACJ;IAGJrB,SAAS,mBAAmB;QACxBI,WAAW,IAAOD,OAAO,CAAC;QAE1Bc,KAAK,iCAAiC;YAClC,MAAMX;YAENY,OAAOtB,UAAG,CAACC,KAAK,EAAEyB,oBAAoB,CAAC;QAC3C;IACJ;IAEAtB,SAAS,0BAA0B;QAC/BI,WAAW,IAAOD,OAAO;gBAAEa,GAAG;oBAAC;iBAAM;YAAC,IAAK,2DAA2D;QAEtGC,KAAK,cAAc;gBAG0Cd;YAFzD,MAAMG;YAENY,OAAOtB,UAAG,CAACC,KAAK,EAAEyB,oBAAoB,CAAC,CAAC,eAAe,GAAEnB,UAAAA,KAAKa,CAAC,cAANb,8BAAAA,OAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3E;QAEAc,KAAK,yBAAyB;YAC1B,MAAMX;YAENY,OAAOtB,UAAG,CAACG,IAAI,EAAEuB,oBAAoB,CACjC,CAAC,oBAAoB,EAAEV,OAAOW,IAAI,CAACf,gBAAgBgB,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE1E;IACJ;AACJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cypress-config/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/cypress-config/index.ts"],"sourcesContent":["export * from './webpack-config';\n"],"names":[],"mappings":";;;;qBAAc"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"webpack-config.d.ts","sourceRoot":"","sources":["../../src/cypress-config/webpack-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAK7C,OAAO,EAAW,SAAS,EAAe,MAAM,oBAAoB,CAAC;AAErE,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,aAAa,CAiBlE"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/cypress-config/webpack-config.ts"],"sourcesContent":["import { inspect } from 'node:util';\nimport type { Configuration } from 'webpack';\nimport merge from 'webpack-merge';\nimport { getSwcOptions } from '../cli/tasks';\nimport { TSConfig } from '../cli/utils';\nimport { getTsConfigWithFallback, log } from '../utils';\nimport { Context, Overrides, rulesConfig } from '../webpack/configs';\n\nexport function webpackConfig(overrides?: Overrides): Configuration {\n const context = getContext();\n const rules = getRules(context, overrides ?? {});\n\n /* istanbul ignore next: debug only */\n log.debug('cypress-config:webpack-config', () => inspect({ rules }, { depth: null }));\n\n const config: Configuration = {\n module: {\n rules,\n },\n resolve: {\n extensions: ['.ts', '.tsx', '.js', '.jsx'],\n },\n };\n\n return merge(config, overrides?.configuration ?? {});\n}\n\nfunction getContext(): Context {\n return {\n destination: '',\n isProduction: false,\n name: '',\n packageData: {} as any,\n sharedDependencies: {},\n source: '',\n };\n}\n\nfunction getRules(context: Context, overrides: Overrides) {\n const { rules } = rulesConfig(context, overrides);\n\n return [getSwcLoaderRule(), ...rules];\n}\n\nfunction getSwcLoaderRule() {\n const tsConfig = new TSConfig(getTsConfigWithFallback());\n\n const swcOptions = getSwcOptions(tsConfig);\n\n return {\n test: /\\.tsx?$/,\n exclude: /node_modules/,\n use: {\n loader: 'swc-loader',\n options: swcOptions,\n },\n };\n}\n"],"names":["webpackConfig","overrides","context","getContext","rules","getRules","log","debug","inspect","depth","config","module","resolve","extensions","merge","configuration","destination","isProduction","name","packageData","sharedDependencies","source","rulesConfig","getSwcLoaderRule","tsConfig","TSConfig","getTsConfigWithFallback","swcOptions","getSwcOptions","test","exclude","use","loader","options"],"mappings":";;;;+BAQgBA;;;eAAAA;;;0BARQ;qEAEN;uBACY;uBACL;wBACoB;yBACG;;;;;;AAEzC,SAASA,cAAcC,SAAqB;;IAC/C,MAAMC,UAAUC;IAChB,MAAMC,QAAQC,SAASH,SAASD,sBAAAA,uBAAAA,YAAa,CAAC;IAE9C,oCAAoC,GACpCK,WAAG,CAACC,KAAK,CAAC,iCAAiC,IAAMC,IAAAA,iBAAO,EAAC;YAAEJ;QAAM,GAAG;YAAEK,OAAO;QAAK;IAElF,MAAMC,SAAwB;QAC1BC,QAAQ;YACJP;QACJ;QACAQ,SAAS;YACLC,YAAY;gBAAC;gBAAO;gBAAQ;gBAAO;aAAO;QAC9C;IACJ;IAEA,OAAOC,IAAAA,qBAAK,EAACJ,gBAAQT,sBAAAA,gCAAAA,UAAWc,aAAa,uCAAI,CAAC;AACtD;AAEA,SAASZ;IACL,OAAO;QACHa,aAAa;QACbC,cAAc;QACdC,MAAM;QACNC,aAAa,CAAC;QACdC,oBAAoB,CAAC;QACrBC,QAAQ;IACZ;AACJ;AAEA,SAAShB,SAASH,OAAgB,EAAED,SAAoB;IACpD,MAAM,EAAEG,KAAK,EAAE,GAAGkB,IAAAA,oBAAW,EAACpB,SAASD;IAEvC,OAAO;QAACsB;WAAuBnB;KAAM;AACzC;AAEA,SAASmB;IACL,MAAMC,WAAW,IAAIC,eAAQ,CAACC,IAAAA,+BAAuB;IAErD,MAAMC,aAAaC,IAAAA,oBAAa,EAACJ;IAEjC,OAAO;QACHK,MAAM;QACNC,SAAS;QACTC,KAAK;YACDC,QAAQ;YACRC,SAASN;QACb;IACJ;AACJ"}
File without changes