@ziacik/upgrade-verify 3.2.0 → 4.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/CHANGELOG.md CHANGED
@@ -7,6 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [4.0.0] - 2025-04-05
11
+
12
+ ### Changed
13
+
14
+ - Upgraded nx to 20.6.2.
15
+
16
+ ## [3.3.1] - 2024-09-25
17
+
18
+ ### Changed
19
+
20
+ - Upgraded nx to 19.8.1.
21
+
22
+ ## [3.3.0] - 2024-09-25
23
+
24
+ ### Changed
25
+
26
+ - Upgraded nx to 19.8.0. x Actually not upgraded (error in deploy).
27
+
10
28
  ## [3.2.0] - 2024-09-08
11
29
 
12
30
  ### Changed
@@ -113,7 +131,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
113
131
  - READMEs updated and props added to package.json.
114
132
  - A _Package subpath './package.json' is not defined by "exports"_ error hopefully fixed.
115
133
 
116
- [unreleased]: https://github.com/ziacik/nx-tools/compare/upgrade-verify-3.2.0...HEAD
134
+ [unreleased]: https://github.com/ziacik/nx-tools/compare/upgrade-verify-4.0.0...HEAD
135
+ [4.0.0]: https://github.com/ziacik/nx-tools/compare/upgrade-verify-3.3.1...upgrade-verify-4.0.0
136
+ [3.3.1]: https://github.com/ziacik/nx-tools/compare/upgrade-verify-3.3.0...upgrade-verify-3.3.1
137
+ [3.3.0]: https://github.com/ziacik/nx-tools/compare/upgrade-verify-3.2.0...upgrade-verify-3.3.0
117
138
  [3.2.0]: https://github.com/ziacik/nx-tools/compare/upgrade-verify-3.1.0...upgrade-verify-3.2.0
118
139
  [3.1.0]: https://github.com/ziacik/nx-tools/compare/upgrade-verify-3.0.0...upgrade-verify-3.1.0
119
140
  [3.0.0]: https://github.com/ziacik/nx-tools/compare/upgrade-verify-2.1.0...upgrade-verify-3.0.0
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@ziacik/upgrade-verify",
3
- "version": "3.2.0",
3
+ "version": "4.0.0",
4
4
  "dependencies": {
5
- "@nx/devkit": "19.6.5",
5
+ "@nx/devkit": "20.7.1",
6
6
  "@swc/helpers": "0.5.11"
7
7
  },
8
8
  "type": "commonjs",
@@ -11,13 +11,13 @@ const _path = require("path");
11
11
  const _diststatcomparer = require("./dist-stat-comparer");
12
12
  const _diststats = require("./dist-stats");
13
13
  async function verifyBuild(options, context) {
14
- if (context.workspace == null) {
15
- throw new Error('Workspace context info not available.');
14
+ if (context.projectsConfigurations == null) {
15
+ throw new Error('ProjectsConfigurations context info not available.');
16
16
  }
17
17
  if (context.projectName == null) {
18
18
  throw new Error('Project name not specified in context info.');
19
19
  }
20
- const projectConfig = context.workspace.projects[context.projectName];
20
+ const projectConfig = context.projectsConfigurations.projects[context.projectName];
21
21
  if (projectConfig.targets == null) {
22
22
  throw new Error('Target info not available for the project in context info.');
23
23
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/upgrade-verify/src/executors/verify-build/executor.ts"],"sourcesContent":["import { ExecutorContext, logger, runExecutor } from '@nx/devkit';\nimport { mkdir, writeFile } from 'fs/promises';\nimport { join } from 'path';\nimport { compareStats } from './dist-stat-comparer';\nimport { calculateDistStats, loadExistingDistStats } from './dist-stats';\nimport { VerifyBuildExecutorSchema } from './schema';\n\nexport default async function verifyBuild(options: VerifyBuildExecutorSchema, context: ExecutorContext) {\n\tif (context.workspace == null) {\n\t\tthrow new Error('Workspace context info not available.');\n\t}\n\n\tif (context.projectName == null) {\n\t\tthrow new Error('Project name not specified in context info.');\n\t}\n\n\tconst projectConfig = context.workspace.projects[context.projectName];\n\n\tif (projectConfig.targets == null) {\n\t\tthrow new Error('Target info not available for the project in context info.');\n\t}\n\n\tconst distDir = join(context.root, projectConfig.targets['build'].options.outputPath);\n\tconst statsDir = join(context.root, projectConfig.root, '.stats');\n\tawait tryMkdir(statsDir);\n\n\tif (projectConfig.targets['build'].configurations == null) {\n\t\tthrow new Error('Configurations info not available for the project, target \"build\", in context info.');\n\t}\n\n\tlet success = true;\n\tconst envBackup = { ...process.env };\n\n\tfor (const configurationName of Object.keys(projectConfig.targets['build'].configurations)) {\n\t\tretainEnv(envBackup);\n\t\tconst runContext: ExecutorContext = JSON.parse(JSON.stringify(context));\n\n\t\tconst results = await runExecutor(\n\t\t\t{\n\t\t\t\tproject: runContext.projectName ?? '',\n\t\t\t\ttarget: 'build',\n\t\t\t\tconfiguration: configurationName,\n\t\t\t},\n\t\t\t{},\n\t\t\trunContext\n\t\t);\n\n\t\tfor await (const result of results) {\n\t\t\tif (!result.success) {\n\t\t\t\treturn { success: false };\n\t\t\t}\n\t\t}\n\n\t\tconst statsPath = join(statsDir, configurationName + '.json');\n\t\tconst existingStats = await loadExistingDistStats(statsPath);\n\t\tconst newStats = await calculateDistStats(distDir, options.removeHashes ?? true);\n\n\t\tawait writeFile(statsPath, JSON.stringify(newStats, null, '\\t'));\n\n\t\tif (existingStats != null) {\n\t\t\tconst comparison = compareStats(existingStats, newStats);\n\t\t\tlogger.info(\n\t\t\t\t`Stats for ${runContext.projectName}/${configurationName}: ${comparison.totalSizeDifferencePercentage}% total size difference, ${comparison.fileCountDifferencePercentage}% file count difference, ${comparison.newFilesPercentage}% new files, ${comparison.deletedFilesPercentage}% deleted files`\n\t\t\t);\n\n\t\t\tif (\n\t\t\t\tMath.abs(comparison.deletedFilesPercentage) > 10 ||\n\t\t\t\tMath.abs(comparison.fileCountDifferencePercentage) > 10 ||\n\t\t\t\tMath.abs(comparison.newFilesPercentage) > 10 ||\n\t\t\t\tMath.abs(comparison.totalSizeDifferencePercentage) > 10\n\t\t\t) {\n\t\t\t\tsuccess = false;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { success };\n}\n\nasync function tryMkdir(statsDir: string) {\n\ttry {\n\t\tawait mkdir(statsDir);\n\t} catch {\n\t\t// ignore\n\t}\n}\n\nfunction retainEnv(envBackup: Record<string, unknown>): void {\n\tfor (const key of Object.keys(process.env)) {\n\t\tdelete process.env[key];\n\t}\n\tObject.assign(process.env, envBackup);\n}\n"],"names":["verifyBuild","options","context","workspace","Error","projectName","projectConfig","projects","targets","distDir","join","root","outputPath","statsDir","tryMkdir","configurations","success","envBackup","process","env","configurationName","Object","keys","retainEnv","runContext","JSON","parse","stringify","results","runExecutor","project","target","configuration","result","statsPath","existingStats","loadExistingDistStats","newStats","calculateDistStats","removeHashes","writeFile","comparison","compareStats","logger","info","totalSizeDifferencePercentage","fileCountDifferencePercentage","newFilesPercentage","deletedFilesPercentage","Math","abs","mkdir","key","assign"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/upgrade-verify/src/executors/verify-build/executor.ts"],"sourcesContent":["import { ExecutorContext, logger, runExecutor } from '@nx/devkit';\nimport { mkdir, writeFile } from 'fs/promises';\nimport { join } from 'path';\nimport { compareStats } from './dist-stat-comparer';\nimport { calculateDistStats, loadExistingDistStats } from './dist-stats';\nimport { VerifyBuildExecutorSchema } from './schema';\n\nexport default async function verifyBuild(options: VerifyBuildExecutorSchema, context: ExecutorContext) {\n\tif (context.projectsConfigurations == null) {\n\t\tthrow new Error('ProjectsConfigurations context info not available.');\n\t}\n\n\tif (context.projectName == null) {\n\t\tthrow new Error('Project name not specified in context info.');\n\t}\n\n\tconst projectConfig = context.projectsConfigurations.projects[context.projectName];\n\n\tif (projectConfig.targets == null) {\n\t\tthrow new Error('Target info not available for the project in context info.');\n\t}\n\n\tconst distDir = join(context.root, projectConfig.targets['build'].options.outputPath);\n\tconst statsDir = join(context.root, projectConfig.root, '.stats');\n\tawait tryMkdir(statsDir);\n\n\tif (projectConfig.targets['build'].configurations == null) {\n\t\tthrow new Error('Configurations info not available for the project, target \"build\", in context info.');\n\t}\n\n\tlet success = true;\n\tconst envBackup = { ...process.env };\n\n\tfor (const configurationName of Object.keys(projectConfig.targets['build'].configurations)) {\n\t\tretainEnv(envBackup);\n\t\tconst runContext: ExecutorContext = JSON.parse(JSON.stringify(context));\n\n\t\tconst results = await runExecutor(\n\t\t\t{\n\t\t\t\tproject: runContext.projectName ?? '',\n\t\t\t\ttarget: 'build',\n\t\t\t\tconfiguration: configurationName,\n\t\t\t},\n\t\t\t{},\n\t\t\trunContext\n\t\t);\n\n\t\tfor await (const result of results) {\n\t\t\tif (!result.success) {\n\t\t\t\treturn { success: false };\n\t\t\t}\n\t\t}\n\n\t\tconst statsPath = join(statsDir, configurationName + '.json');\n\t\tconst existingStats = await loadExistingDistStats(statsPath);\n\t\tconst newStats = await calculateDistStats(distDir, options.removeHashes ?? true);\n\n\t\tawait writeFile(statsPath, JSON.stringify(newStats, null, '\\t'));\n\n\t\tif (existingStats != null) {\n\t\t\tconst comparison = compareStats(existingStats, newStats);\n\t\t\tlogger.info(\n\t\t\t\t`Stats for ${runContext.projectName}/${configurationName}: ${comparison.totalSizeDifferencePercentage}% total size difference, ${comparison.fileCountDifferencePercentage}% file count difference, ${comparison.newFilesPercentage}% new files, ${comparison.deletedFilesPercentage}% deleted files`\n\t\t\t);\n\n\t\t\tif (\n\t\t\t\tMath.abs(comparison.deletedFilesPercentage) > 10 ||\n\t\t\t\tMath.abs(comparison.fileCountDifferencePercentage) > 10 ||\n\t\t\t\tMath.abs(comparison.newFilesPercentage) > 10 ||\n\t\t\t\tMath.abs(comparison.totalSizeDifferencePercentage) > 10\n\t\t\t) {\n\t\t\t\tsuccess = false;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { success };\n}\n\nasync function tryMkdir(statsDir: string) {\n\ttry {\n\t\tawait mkdir(statsDir);\n\t} catch {\n\t\t// ignore\n\t}\n}\n\nfunction retainEnv(envBackup: Record<string, unknown>): void {\n\tfor (const key of Object.keys(process.env)) {\n\t\tdelete process.env[key];\n\t}\n\tObject.assign(process.env, envBackup);\n}\n"],"names":["verifyBuild","options","context","projectsConfigurations","Error","projectName","projectConfig","projects","targets","distDir","join","root","outputPath","statsDir","tryMkdir","configurations","success","envBackup","process","env","configurationName","Object","keys","retainEnv","runContext","JSON","parse","stringify","results","runExecutor","project","target","configuration","result","statsPath","existingStats","loadExistingDistStats","newStats","calculateDistStats","removeHashes","writeFile","comparison","compareStats","logger","info","totalSizeDifferencePercentage","fileCountDifferencePercentage","newFilesPercentage","deletedFilesPercentage","Math","abs","mkdir","key","assign"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}