@servicetitan/startup 35.3.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/package.json +8 -8
- package/src/cli/commands/__tests__/mfe-package-publish.test.ts +1 -1
- package/src/cli/commands/mfe-package-publish.ts +8 -4
|
@@ -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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"}
|
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": {
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"postinstall": "node ./src/postinstall.js"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@swc/types": "^0.1.
|
|
47
|
+
"@swc/types": "^0.1.26",
|
|
48
48
|
"@types/cpx": "~1.5.5",
|
|
49
49
|
"@types/debug": "^4.1.12",
|
|
50
50
|
"@types/eslint": "~9.6.1",
|
|
@@ -60,10 +60,10 @@
|
|
|
60
60
|
"@jest/core": "~30.3.0",
|
|
61
61
|
"@jest/types": "~30.3.0",
|
|
62
62
|
"@jsdevtools/coverage-istanbul-loader": "^3.0.5",
|
|
63
|
-
"@servicetitan/eslint-config": "
|
|
64
|
-
"@servicetitan/install": "
|
|
65
|
-
"@servicetitan/startup-utils": "
|
|
66
|
-
"@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",
|
|
67
67
|
"@svgr/webpack": "^8.1.0",
|
|
68
68
|
"@swc/cli": "^0.8.0",
|
|
69
69
|
"@swc/core": "1.15.21",
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
"vitest": "^4.1.0",
|
|
119
119
|
"webpack": "~5.105.4",
|
|
120
120
|
"webpack-assets-manifest": "~6.5.1",
|
|
121
|
-
"webpack-bundle-analyzer": "^5.
|
|
121
|
+
"webpack-bundle-analyzer": "^5.3.0",
|
|
122
122
|
"webpack-dev-server": "~5.2.3",
|
|
123
123
|
"webpack-filter-warnings-plugin": "~1.2.1",
|
|
124
124
|
"webpack-merge": "~6.0.1",
|
|
@@ -147,5 +147,5 @@
|
|
|
147
147
|
"cli": {
|
|
148
148
|
"webpack": false
|
|
149
149
|
},
|
|
150
|
-
"gitHead": "
|
|
150
|
+
"gitHead": "73584720991027dd55eaeb24fb8e09bad656dbad"
|
|
151
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));
|
|
@@ -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,
|