@ms-cloudpack/package-utilities
Advanced tools
Comparing version 11.0.1 to 11.1.0
@@ -12,8 +12,6 @@ const apiServerBrowserDeps = ['@ms-cloudpack/data-bus', '@ms-cloudpack/path-string-parsing', '@trpc/client', 'zod']; | ||
} | ||
return { | ||
...definition, | ||
dependencies: Object.fromEntries(Object.entries(definition.dependencies || {}).filter(([dep]) => apiServerBrowserDeps.includes(dep))), | ||
}; | ||
definition.dependencies = Object.fromEntries(Object.entries(definition.dependencies || {}).filter(([dep]) => apiServerBrowserDeps.includes(dep))); | ||
return definition; | ||
}; | ||
} | ||
//# sourceMappingURL=getApiServerTransform.js.map |
import semver from 'semver'; | ||
import { generateVersionFromNonSemver } from './generateVersionFromNonSemver.js'; | ||
const depTypes = ['dependencies', 'peerDependencies']; | ||
const depTypes = ['dependencies', 'peerDependencies', 'devDependencies', 'optionalDependencies']; | ||
/** | ||
@@ -18,3 +18,2 @@ * Get a transform which handles non-semver dependencies: | ||
return ({ definition, packagePath, importerContext }) => { | ||
const result = {}; | ||
// Check for non-semver dependencies | ||
@@ -38,4 +37,3 @@ for (const depType of depTypes) { | ||
// "bar": "npm:@custom/bar@^1" => "0.0.0-npm--custom-bar--1" | ||
const resultDeps = (result[depType] ??= { ...deps }); | ||
resultDeps[depName] = generateVersionFromNonSemver(depVersion); | ||
deps[depName] = generateVersionFromNonSemver(depVersion); | ||
// Save that this was a non-semver dep | ||
@@ -46,4 +44,4 @@ const record = (nonSemverDeps[`${definition.name}@${definition.version}`] ??= {}); | ||
} | ||
// If this package's parent pulled it in with a non-semver dependency, make some more updates | ||
// (see below) | ||
// Check if this package's parent pulled it in with a non-semver dependency, and if so, | ||
// update the returned name and version. | ||
const nonSemverParentInfo = importerContext && nonSemverDeps[`${importerContext.parentName}@${importerContext.parentVersion}`]; | ||
@@ -53,5 +51,4 @@ // TODO: maybe this could also be used for resolutions if we have problems there: | ||
if (nonSemverParentInfo) { | ||
// Example: the parent depended on this package as "bar": "npm:@custom/bar@^1" | ||
// importedName = bar | ||
// versionRequirement = 0.0.0-npm--custom-bar--1 (was modified when this transform ran on the parent definition) | ||
// The parent has at least one non-semver dependency (which might not be this package). | ||
// Check in each dependency type to see if this package is listed as non-semver. | ||
const { importedName, versionRequirement } = importerContext; | ||
@@ -62,2 +59,7 @@ for (const depType of depTypes) { | ||
} | ||
// This package's parent pulled it in with a non-semver dependency. | ||
// Example: the parent depended on this package as "bar": "npm:@custom/bar@^1" | ||
// importedName = bar | ||
// versionRequirement = 0.0.0-npm--custom-bar--1 (was modified when this transform ran on the parent definition) | ||
// | ||
// To ensure other code handles this package properly, change its name and version to | ||
@@ -67,8 +69,8 @@ // the ones used by the parent (after transforms). This ensures it works properly with | ||
// package under its real name. | ||
result.name = importedName; | ||
result.version = versionRequirement; | ||
const origSpec = `${definition.name}@${definition.version}`; | ||
definition.name = importedName; | ||
definition.version = versionRequirement; | ||
// We have changed the definition, so link the entry in nonSemverDeps to the new name/version. | ||
if (nonSemverDeps[`${definition.name}@${definition.version}`]) { | ||
nonSemverDeps[`${importedName}@${versionRequirement}`] = | ||
nonSemverDeps[`${definition.name}@${definition.version}`]; | ||
if (nonSemverDeps[origSpec]) { | ||
nonSemverDeps[`${importedName}@${versionRequirement}`] = nonSemverDeps[origSpec]; | ||
} | ||
@@ -78,8 +80,5 @@ break; | ||
} | ||
if (Object.keys(result).length) { | ||
return { ...definition, ...result }; | ||
} | ||
return undefined; | ||
return definition; | ||
}; | ||
} | ||
//# sourceMappingURL=getNonSemverTransform.js.map |
@@ -8,3 +8,2 @@ const depTypes = ['dependencies', 'peerDependencies', 'devDependencies', 'optionalDependencies']; | ||
return ({ definition }) => { | ||
let transformedDefinition; | ||
for (const depType of ['dependencies', 'peerDependencies']) { | ||
@@ -20,15 +19,10 @@ const deps = definition[depType]; | ||
const depVersion = deps[depName]; | ||
transformedDefinition ??= { | ||
...definition, | ||
devDependencies: { ...definition.devDependencies }, | ||
[depType]: { ...deps }, | ||
}; | ||
delete transformedDefinition[depType]?.[depName]; | ||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion | ||
transformedDefinition.devDependencies[depName] = depVersion; | ||
delete definition[depType]?.[depName]; | ||
definition.devDependencies ??= {}; | ||
definition.devDependencies[depName] = depVersion; | ||
} | ||
} | ||
return transformedDefinition; | ||
return definition; | ||
}; | ||
} | ||
//# sourceMappingURL=getTypesTransform.js.map |
import path from 'path'; | ||
import { readJson } from '@ms-cloudpack/json-utilities'; | ||
import { cloneJson, readJson } from '@ms-cloudpack/json-utilities'; | ||
import { getNonSemverTransform } from './getNonSemverTransform.js'; | ||
@@ -12,2 +12,22 @@ import { getApiServerTransform } from './getApiServerTransform.js'; | ||
const getDefaultTransforms = () => [getApiServerTransform(), getTypesTransform(), getNonSemverTransform()]; | ||
/** Only copy these keys from package.json. (It's an object for better typings and faster access.) */ | ||
const copyPackageJsonKeys = { | ||
name: true, | ||
version: true, | ||
description: true, | ||
dependencies: true, | ||
devDependencies: true, | ||
peerDependencies: true, | ||
peerDependenciesMeta: true, | ||
optionalDependencies: true, | ||
bundledDependencies: true, | ||
bundleDependencies: true, | ||
type: true, | ||
main: true, | ||
module: true, | ||
browser: true, | ||
exports: true, | ||
resolutions: true, | ||
cloudpack: true, | ||
}; | ||
export class PackageDefinitions { | ||
@@ -60,3 +80,4 @@ /** | ||
if (!transformedDefinition) { | ||
transformedDefinition = definition; | ||
// Clone the definition (only keys we care about) so we don't accidentally modify the original. | ||
transformedDefinition = cloneJson(definition, { onlyKeys: copyPackageJsonKeys }); | ||
for (const transform of this._transforms) { | ||
@@ -63,0 +84,0 @@ transformedDefinition = |
{ | ||
"name": "@ms-cloudpack/package-utilities", | ||
"version": "11.0.1", | ||
"version": "11.1.0", | ||
"description": "Utilities for resolving/parsing packages and their imports.", | ||
@@ -17,6 +17,6 @@ "license": "MIT", | ||
"dependencies": { | ||
"@ms-cloudpack/common-types": "^0.23.7", | ||
"@ms-cloudpack/json-utilities": "^0.1.9", | ||
"@ms-cloudpack/common-types": "^0.24.0", | ||
"@ms-cloudpack/json-utilities": "^0.1.10", | ||
"@ms-cloudpack/path-string-parsing": "^1.2.6", | ||
"@ms-cloudpack/path-utilities": "^2.8.0", | ||
"@ms-cloudpack/path-utilities": "^2.8.1", | ||
"@ms-cloudpack/task-reporter": "^0.14.8", | ||
@@ -23,0 +23,0 @@ "acorn": "^8.11.2", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
313996
2582
+ Added@ms-cloudpack/common-types@0.24.10(transitive)
+ Added@ms-cloudpack/common-types-browser@0.5.4(transitive)
- Removed@ms-cloudpack/common-types@0.23.7(transitive)