@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.
- package/dist/cli/commands/mfe-package-publish.d.ts.map +1 -1
- package/dist/cli/commands/mfe-package-publish.js +3 -3
- package/dist/cli/commands/mfe-package-publish.js.map +1 -1
- package/dist/cypress/config/index.d.ts.map +1 -0
- package/dist/cypress/config/index.js.map +1 -0
- package/dist/{cypress-config → cypress/config}/webpack-config.d.ts +1 -1
- package/dist/cypress/config/webpack-config.d.ts.map +1 -0
- package/dist/{cypress-config → cypress/config}/webpack-config.js +4 -4
- package/dist/cypress/config/webpack-config.js.map +1 -0
- package/dist/cypress/types/index.d.ts +9 -0
- package/dist/cypress/types/index.d.ts.map +1 -0
- package/dist/cypress/types/index.js +7 -0
- package/dist/cypress/types/index.js.map +1 -0
- package/package.json +18 -11
- package/src/cli/commands/__tests__/mfe-package-publish.test.ts +1 -1
- package/src/cli/commands/{run-task.test.ts → __tests__/run-task.test.ts} +8 -8
- package/src/cli/commands/mfe-package-publish.ts +8 -4
- package/src/{cypress-config → cypress/config}/__tests__/webpack-config.test.ts +6 -6
- package/src/{cypress-config → cypress/config}/webpack-config.ts +4 -4
- package/src/cypress/types/index.ts +11 -0
- package/dist/cli/commands/run-task.test.d.ts +0 -2
- package/dist/cli/commands/run-task.test.d.ts.map +0 -1
- package/dist/cli/commands/run-task.test.js +0 -65
- package/dist/cli/commands/run-task.test.js.map +0 -1
- package/dist/cypress-config/index.d.ts.map +0 -1
- package/dist/cypress-config/index.js.map +0 -1
- package/dist/cypress-config/webpack-config.d.ts.map +0 -1
- package/dist/cypress-config/webpack-config.js.map +0 -1
- /package/dist/{cypress-config → cypress/config}/index.d.ts +0 -0
- /package/dist/{cypress-config → cypress/config}/index.js +0 -0
- /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;
|
|
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
|
-
|
|
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 '
|
|
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("
|
|
14
|
-
const _utils = require("
|
|
15
|
-
const _utils1 = require("
|
|
16
|
-
const _configs = require("
|
|
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 @@
|
|
|
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 @@
|
|
|
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": "
|
|
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
|
-
"
|
|
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.
|
|
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": "
|
|
61
|
-
"@servicetitan/install": "
|
|
62
|
-
"@servicetitan/startup-utils": "
|
|
63
|
-
"@servicetitan/stylelint-config": "
|
|
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.
|
|
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.
|
|
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.
|
|
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": "
|
|
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
|
-
|
|
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 '
|
|
2
|
-
import { SwcCompilePackage, TscCompile, TscCompilePackage } from '
|
|
3
|
-
import { RunTask } from '
|
|
1
|
+
import { log } from '../../../utils';
|
|
2
|
+
import { SwcCompilePackage, TscCompile, TscCompilePackage } from '../../tasks';
|
|
3
|
+
import { RunTask } from '../run-task';
|
|
4
4
|
|
|
5
|
-
jest.mock('
|
|
6
|
-
...jest.requireActual('
|
|
5
|
+
jest.mock('../../../utils', () => ({
|
|
6
|
+
...jest.requireActual('../../../utils'),
|
|
7
7
|
log: { error: jest.fn(), text: jest.fn() },
|
|
8
8
|
}));
|
|
9
|
-
jest.mock('
|
|
10
|
-
jest.mock('
|
|
11
|
-
jest.mock('
|
|
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(
|
|
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
|
-
|
|
91
|
-
|
|
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 '
|
|
3
|
-
import { TSConfig } from '
|
|
4
|
-
import { getBaseTsConfig } from '
|
|
5
|
-
import { Overrides, rulesConfig } from '
|
|
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('
|
|
10
|
-
jest.mock('
|
|
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 '
|
|
5
|
-
import { TSConfig } from '
|
|
6
|
-
import { getTsConfigWithFallback, log } from '
|
|
7
|
-
import { Context, Overrides, rulesConfig } from '
|
|
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 +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
|
|
File without changes
|
|
File without changes
|