@ms-cloudpack/package-utilities 7.4.6 → 7.4.8
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/lib/PackageDefinitions.d.ts +4 -0
- package/lib/PackageDefinitions.d.ts.map +1 -1
- package/lib/PackageDefinitions.js +6 -0
- package/lib/PackageDefinitions.js.map +1 -1
- package/lib/findFileInPackage.d.ts.map +1 -1
- package/lib/findFileInPackage.js +0 -2
- package/lib/findFileInPackage.js.map +1 -1
- package/lib/findPackage.d.ts.map +1 -1
- package/lib/findPackage.js +12 -4
- package/lib/findPackage.js.map +1 -1
- package/lib/findPackageOutputPaths.d.ts.map +1 -1
- package/lib/findPackageOutputPaths.js +0 -4
- package/lib/findPackageOutputPaths.js.map +1 -1
- package/lib/getNonSemverTransform.d.ts.map +1 -1
- package/lib/getNonSemverTransform.js +5 -0
- package/lib/getNonSemverTransform.js.map +1 -1
- package/lib/getVersionInternal.d.ts.map +1 -1
- package/lib/getVersionInternal.js +0 -1
- package/lib/getVersionInternal.js.map +1 -1
- package/package.json +4 -4
|
@@ -25,6 +25,10 @@ export declare class PackageDefinitions implements PackageDefinitionsCache {
|
|
|
25
25
|
reset(options?: {
|
|
26
26
|
newConfig?: unknown;
|
|
27
27
|
}): void;
|
|
28
|
+
/**
|
|
29
|
+
* This is a helper function for testing, to get all package definitions in the cache.
|
|
30
|
+
*/
|
|
31
|
+
_getAll(options?: Pick<GetPackageDefinitionOptions, 'disableTransforms'>): Record<string, PackageJson>;
|
|
28
32
|
/**
|
|
29
33
|
* Remove one package from the cache.
|
|
30
34
|
* @deprecated Not used.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PackageDefinitions.d.ts","sourceRoot":"","sources":["../src/PackageDefinitions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EACvB,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAYpC,qBAAa,kBAAmB,YAAW,uBAAuB;IAChE,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,uBAAuB,CAA8B;IAC7D,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,mBAAmB,CAAuD;IAElF;;;;;OAKG;gBACS,eAAe,GAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAM,EAAE,MAAM,CAAC,EAAE,OAAO;IAQzE,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,2BAAgC,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IA+C3G;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,0BAA0B;IAO3E;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;IAYvC;;;OAGG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM;CAIjC"}
|
|
1
|
+
{"version":3,"file":"PackageDefinitions.d.ts","sourceRoot":"","sources":["../src/PackageDefinitions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EACvB,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAYpC,qBAAa,kBAAmB,YAAW,uBAAuB;IAChE,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,uBAAuB,CAA8B;IAC7D,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,mBAAmB,CAAuD;IAElF;;;;;OAKG;gBACS,eAAe,GAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAM,EAAE,MAAM,CAAC,EAAE,OAAO;IAQzE,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,2BAAgC,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IA+C3G;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,0BAA0B;IAO3E;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;IAYvC;;OAEG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,EAAE,mBAAmB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;IAItG;;;OAGG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM;CAIjC"}
|
|
@@ -81,6 +81,12 @@ export class PackageDefinitions {
|
|
|
81
81
|
this._transforms = [...getDefaultTransforms(), ...this._transformFactories.map((factory) => factory(newConfig))];
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* This is a helper function for testing, to get all package definitions in the cache.
|
|
86
|
+
*/
|
|
87
|
+
_getAll(options) {
|
|
88
|
+
return options?.disableTransforms ? this._definitions : this._transformedDefinitions;
|
|
89
|
+
}
|
|
84
90
|
/**
|
|
85
91
|
* Remove one package from the cache.
|
|
86
92
|
* @deprecated Not used.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PackageDefinitions.js","sourceRoot":"","sources":["../src/PackageDefinitions.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAOxB,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;GAGG;AACH,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,CAAC,qBAAqB,EAAE,EAAE,qBAAqB,EAAE,EAAE,0BAA0B,EAAE,CAAC,CAAC;AAEpH,MAAM,OAAO,kBAAkB;IAO7B;;;;;OAKG;IACH,YAAY,kBAA+C,EAAE,EAAE,MAAgB;QATvE,gBAAW,GAAiC,EAAE,CAAC;QAUrD,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC;QACpC,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,oBAAoB,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,WAAmB,EAAE,UAAuC,EAAE;QACtE,IAAI,UAAU,GAA4B,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACzE,IAAI,qBAAqB,GAA4B,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QAC/F,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;QAEhE,+DAA+D;QAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,iBAAiB,IAAI,UAAU,EAAE,CAAC;gBACpC,OAAO,UAAU,CAAC;YACpB,CAAC;YAED,IAAI,CAAC,iBAAiB,IAAI,qBAAqB,EAAE,CAAC;gBAChD,OAAO,qBAAqB,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,mDAAmD;QACnD,IAAI,CAAC,UAAU,IAAI,OAAO,EAAE,CAAC;YAC3B,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;YAEpE,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC;QAC9C,CAAC;QAED,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,oEAAoE;QACpE,IAAI,CAAC,qBAAqB,IAAI,OAAO,EAAE,CAAC;YACtC,qBAAqB,GAAG,UAAU,CAAC;YAEnC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACzC,qBAAqB;oBACnB,CAAC,MAAM,SAAS,CAAC,EAAE,UAAU,EAAE,qBAAqB,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;wBACtG,qBAAqB,CAAC;YAC1B,CAAC;YAED,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,GAAG,qBAAqB,CAAC;QACpE,CAAC;QAED,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,OAAyD;QACzE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAE7C,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAiC;QACrC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;QAElC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;QAEpC,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,oBAAoB,EAAE,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACnH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,WAAmB;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;IACnD,CAAC;CACF","sourcesContent":["import path from 'path';\nimport type {\n GetPackageDefinitionOptions,\n PackageDefinitionTransform,\n PackageDefinitionsCache,\n PackageJson,\n} from '@ms-cloudpack/common-types';\nimport { readJson } from '@ms-cloudpack/json-utilities';\nimport { getApplyOverridesTransform } from '@ms-cloudpack/package-overrides';\nimport { getNonSemverTransform } from './getNonSemverTransform.js';\nimport { getCloudpackTransform } from './getCloudpackTransform.js';\n\n/**\n * `nonSemverTransform` has state defined when the function is called, so we need a wrapper function\n * which returns new transforms to ensure that state is cleared when resetting.\n */\nconst getDefaultTransforms = () => [getCloudpackTransform(), getNonSemverTransform(), getApplyOverridesTransform()];\n\nexport class PackageDefinitions implements PackageDefinitionsCache {\n private _definitions: Record<string, PackageJson>;\n private _transformedDefinitions: Record<string, PackageJson>;\n private _config: unknown;\n private _transforms: PackageDefinitionTransform[] = [];\n private _transformFactories: ((config?: unknown) => PackageDefinitionTransform)[];\n\n /**\n * Constructor for PackageDefinitions.\n * @param definitionCache - The map of package paths to package definitions, used mainly for testing.\n * @param config - The optional config object to pass to transforms. When `reset` is called with a new value, the\n * transforms will be re-created using the new config.\n */\n constructor(definitionCache: Record<string, PackageJson> = {}, config?: unknown) {\n this._definitions = definitionCache;\n this._transformedDefinitions = {};\n this._config = config;\n this._transforms = [...getDefaultTransforms()];\n this._transformFactories = [];\n }\n\n async get(packagePath: string, options: GetPackageDefinitionOptions = {}): Promise<PackageJson | undefined> {\n let definition: PackageJson | undefined = this._definitions[packagePath];\n let transformedDefinition: PackageJson | undefined = this._transformedDefinitions[packagePath];\n const { refresh, disableTransforms, importerContext } = options;\n\n // If we already have the answer they need, return immediately.\n if (!refresh) {\n if (disableTransforms && definition) {\n return definition;\n }\n\n if (!disableTransforms && transformedDefinition) {\n return transformedDefinition;\n }\n }\n\n // If we don't have the definition, try to load it.\n if (!definition || refresh) {\n definition = await readJson(path.join(packagePath, 'package.json'));\n\n if (!definition) {\n return undefined;\n }\n\n this._definitions[packagePath] = definition;\n }\n\n if (disableTransforms) {\n return definition;\n }\n\n // If we don't want to skip the transform, transform the definition.\n if (!transformedDefinition || refresh) {\n transformedDefinition = definition;\n\n for (const transform of this._transforms) {\n transformedDefinition =\n (await transform({ definition: transformedDefinition, packagePath, packages: this, importerContext })) ||\n transformedDefinition;\n }\n\n this._transformedDefinitions[packagePath] = transformedDefinition;\n }\n\n return transformedDefinition;\n }\n\n /**\n * Registers a transform factory function, which will be called on initialization, and when reset, to re-generate\n * the transform function. Transform functions are called only when the package definition hasn't been loaded before,\n * and the result will be cached. Calling `reset` will reset the cache.\n */\n registerTransform(factory: (config?: unknown) => PackageDefinitionTransform) {\n this._transformFactories.push(factory);\n this._transforms.push(factory(this._config));\n\n this.reset();\n }\n\n /**\n * Resets the cache of package definitions. This is useful when testing, to ensure that the cache is empty.\n */\n reset(options?: { newConfig?: unknown }) {\n this._definitions = {};\n this._transformedDefinitions = {};\n\n const { newConfig } = options || {};\n\n if (newConfig) {\n this._config = newConfig;\n this._transforms = [...getDefaultTransforms(), ...this._transformFactories.map((factory) => factory(newConfig))];\n }\n }\n\n /**\n * Remove one package from the cache.\n * @deprecated Not used.\n */\n resetPackage(packagePath: string) {\n delete this._definitions[packagePath];\n delete this._transformedDefinitions[packagePath];\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PackageDefinitions.js","sourceRoot":"","sources":["../src/PackageDefinitions.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\nimport type {\n GetPackageDefinitionOptions,\n PackageDefinitionTransform,\n PackageDefinitionsCache,\n PackageJson,\n} from '@ms-cloudpack/common-types';\nimport { readJson } from '@ms-cloudpack/json-utilities';\nimport { getApplyOverridesTransform } from '@ms-cloudpack/package-overrides';\nimport { getNonSemverTransform } from './getNonSemverTransform.js';\nimport { getCloudpackTransform } from './getCloudpackTransform.js';\n\n/**\n * `nonSemverTransform` has state defined when the function is called, so we need a wrapper function\n * which returns new transforms to ensure that state is cleared when resetting.\n */\nconst getDefaultTransforms = () => [getCloudpackTransform(), getNonSemverTransform(), getApplyOverridesTransform()];\n\nexport class PackageDefinitions implements PackageDefinitionsCache {\n private _definitions: Record<string, PackageJson>;\n private _transformedDefinitions: Record<string, PackageJson>;\n private _config: unknown;\n private _transforms: PackageDefinitionTransform[] = [];\n private _transformFactories: ((config?: unknown) => PackageDefinitionTransform)[];\n\n /**\n * Constructor for PackageDefinitions.\n * @param definitionCache - The map of package paths to package definitions, used mainly for testing.\n * @param config - The optional config object to pass to transforms. When `reset` is called with a new value, the\n * transforms will be re-created using the new config.\n */\n constructor(definitionCache: Record<string, PackageJson> = {}, config?: unknown) {\n this._definitions = definitionCache;\n this._transformedDefinitions = {};\n this._config = config;\n this._transforms = [...getDefaultTransforms()];\n this._transformFactories = [];\n }\n\n async get(packagePath: string, options: GetPackageDefinitionOptions = {}): Promise<PackageJson | undefined> {\n let definition: PackageJson | undefined = this._definitions[packagePath];\n let transformedDefinition: PackageJson | undefined = this._transformedDefinitions[packagePath];\n const { refresh, disableTransforms, importerContext } = options;\n\n // If we already have the answer they need, return immediately.\n if (!refresh) {\n if (disableTransforms && definition) {\n return definition;\n }\n\n if (!disableTransforms && transformedDefinition) {\n return transformedDefinition;\n }\n }\n\n // If we don't have the definition, try to load it.\n if (!definition || refresh) {\n definition = await readJson(path.join(packagePath, 'package.json'));\n\n if (!definition) {\n return undefined;\n }\n\n this._definitions[packagePath] = definition;\n }\n\n if (disableTransforms) {\n return definition;\n }\n\n // If we don't want to skip the transform, transform the definition.\n if (!transformedDefinition || refresh) {\n transformedDefinition = definition;\n\n for (const transform of this._transforms) {\n transformedDefinition =\n (await transform({ definition: transformedDefinition, packagePath, packages: this, importerContext })) ||\n transformedDefinition;\n }\n\n this._transformedDefinitions[packagePath] = transformedDefinition;\n }\n\n return transformedDefinition;\n }\n\n /**\n * Registers a transform factory function, which will be called on initialization, and when reset, to re-generate\n * the transform function. Transform functions are called only when the package definition hasn't been loaded before,\n * and the result will be cached. Calling `reset` will reset the cache.\n */\n registerTransform(factory: (config?: unknown) => PackageDefinitionTransform) {\n this._transformFactories.push(factory);\n this._transforms.push(factory(this._config));\n\n this.reset();\n }\n\n /**\n * Resets the cache of package definitions. This is useful when testing, to ensure that the cache is empty.\n */\n reset(options?: { newConfig?: unknown }) {\n this._definitions = {};\n this._transformedDefinitions = {};\n\n const { newConfig } = options || {};\n\n if (newConfig) {\n this._config = newConfig;\n this._transforms = [...getDefaultTransforms(), ...this._transformFactories.map((factory) => factory(newConfig))];\n }\n }\n\n /**\n * This is a helper function for testing, to get all package definitions in the cache.\n */\n _getAll(options?: Pick<GetPackageDefinitionOptions, 'disableTransforms'>): Record<string, PackageJson> {\n return options?.disableTransforms ? this._definitions : this._transformedDefinitions;\n }\n\n /**\n * Remove one package from the cache.\n * @deprecated Not used.\n */\n resetPackage(packagePath: string) {\n delete this._definitions[packagePath];\n delete this._transformedDefinitions[packagePath];\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findFileInPackage.d.ts","sourceRoot":"","sources":["../src/findFileInPackage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAY3F,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,EACjC,OAAO,EAAE;IAAE,QAAQ,EAAE,uBAAuB,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GACtE,OAAO,CAAC,uBAAuB,CAAC,
|
|
1
|
+
{"version":3,"file":"findFileInPackage.d.ts","sourceRoot":"","sources":["../src/findFileInPackage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAY3F,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,EACjC,OAAO,EAAE;IAAE,QAAQ,EAAE,uBAAuB,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GACtE,OAAO,CAAC,uBAAuB,CAAC,CAyGlC"}
|
package/lib/findFileInPackage.js
CHANGED
|
@@ -39,7 +39,6 @@ export async function findFileInPackage(options, context) {
|
|
|
39
39
|
for (const currentPath of pathsToConsider) {
|
|
40
40
|
const candidates = await getCandidates({ filePath: currentPath, packagePath }, context);
|
|
41
41
|
// Try and resolve a physical file given the candidates.
|
|
42
|
-
// eslint-disable-next-line @ms-cloudpack/internal/no-sync-filesystem
|
|
43
42
|
filePath = candidates.find((candidate) => isFileSync(path.join(packagePath, candidate)));
|
|
44
43
|
if (filePath) {
|
|
45
44
|
break;
|
|
@@ -88,7 +87,6 @@ export async function findFileInPackage(options, context) {
|
|
|
88
87
|
// Try to resolve the typesPath
|
|
89
88
|
if (sourcePath && filePath) {
|
|
90
89
|
typesPath = filePath.replace(/\.js$/, '.d.ts');
|
|
91
|
-
// eslint-disable-next-line @ms-cloudpack/internal/no-sync-filesystem
|
|
92
90
|
if (!isInternal && !isFileSync(path.join(packagePath, typesPath))) {
|
|
93
91
|
typesPath = undefined;
|
|
94
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findFileInPackage.js","sourceRoot":"","sources":["../src/findFileInPackage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC9G,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACjE,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAarD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAiC,EACjC,OAAuE;IAEvE,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,QAA4B,CAAC;IACjC,IAAI,UAA8B,CAAC;IACnC,IAAI,SAA6B,CAAC;IAClC,MAAM,UAAU,GAAG,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,CAAC,YAAY,CAAC,CAAC;IAEvC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;IACxF,+FAA+F;IAC/F,IAAI,YAAY,KAAK,GAAG,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC9D,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;QACpC,IAAI,IAAI,EAAE,CAAC;YACT,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,KAAK,MAAM,WAAW,IAAI,eAAe,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;QAExF,wDAAwD;QACxD,
|
|
1
|
+
{"version":3,"file":"findFileInPackage.js","sourceRoot":"","sources":["../src/findFileInPackage.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CloudpackConfig, PackageDefinitionsCache } from '@ms-cloudpack/common-types';\nimport { normalizeRelativePath, slash } from '@ms-cloudpack/path-string-parsing';\nimport { intermediateToSourcePath, isFileSync, sourceToIntermediatePath } from '@ms-cloudpack/path-utilities';\nimport path from 'path';\nimport { flattenExportsMap } from './flattenExportsMap.js';\nimport { getCandidates } from './getCandidates.js';\nimport { getExportsMap } from './getExportsMap.js';\nimport { isExternalPackage } from './isExternalPackage.js';\n\nconst sourceExtensions = ['.ts', '.tsx', '.cts', '.mts', '.jsx'];\nconst javascriptExtensions = ['.js', '.mjs', '.cjs'];\n\nexport type FindFileInPackageOptions = {\n packagePath: string;\n filePath: string;\n};\n\nexport type FindFileInPackageResult = {\n filePath?: string;\n typesPath?: string;\n sourcePath?: string;\n};\n\n/**\n * Given a requested partial filePath, resolves the relative intermediate path if the file exists, with special\n * consideration for internal packages, which may not have intermediate files but only source files. Paths returned\n * are always relative and start with `./`.\n *\n * This helper is used in deriving if the given package.json entries are actual validate candidates when constructing an\n * exports map from existing metadata. For example, a package.json may list `main` as `lib/index.js`. If this file\n * exists, or in internal packages, if `src/index.tsx` exists, then this is a valid candidate. If the file does not\n * exist, then we should not include it in the exports map.\n */\nexport async function findFileInPackage(\n options: FindFileInPackageOptions,\n context: { packages: PackageDefinitionsCache; config: CloudpackConfig },\n): Promise<FindFileInPackageResult> {\n const originalPath = normalizeRelativePath(options.filePath);\n const packagePath = slash(options.packagePath);\n let filePath: string | undefined;\n let sourcePath: string | undefined;\n let typesPath: string | undefined;\n const isInternal = !isExternalPackage(packagePath);\n const pathsToConsider = [originalPath];\n\n const definition = await context.packages.get(packagePath, { disableTransforms: true });\n // If the original package.json has an exports map, we should not use main and module as hints.\n if (originalPath === '.' && definition && !definition.exports) {\n const { main, module } = definition;\n if (main) {\n pathsToConsider.unshift(main);\n }\n if (module) {\n pathsToConsider.unshift(module);\n }\n }\n\n for (const currentPath of pathsToConsider) {\n const candidates = await getCandidates({ filePath: currentPath, packagePath }, context);\n\n // Try and resolve a physical file given the candidates.\n filePath = candidates.find((candidate) => isFileSync(path.join(packagePath, candidate)));\n if (filePath) {\n break;\n }\n }\n\n const isNestedPackageDefinition =\n filePath && path.basename(filePath) === 'package.json' && path.basename(originalPath) !== 'package.json';\n const result: FindFileInPackageResult = {};\n\n if (isNestedPackageDefinition) {\n const nestedDefinitionPath = path.dirname(path.join(packagePath, filePath as string));\n const exportsMap = await getExportsMap({ packagePath: nestedDefinitionPath }, context);\n const entryPath = flattenExportsMap(exportsMap)['.'];\n\n if (entryPath) {\n typesPath = flattenExportsMap(exportsMap, { conditions: ['types'] })['.'];\n\n return {\n ...(await findFileInPackage(\n {\n packagePath,\n filePath: normalizeRelativePath(path.relative(packagePath, path.join(nestedDefinitionPath, entryPath))),\n },\n context,\n )),\n typesPath:\n typesPath && normalizeRelativePath(path.relative(packagePath, path.join(nestedDefinitionPath, typesPath))),\n };\n } else {\n // If we can't find an entry, we should not include this in the exports map.\n // This avoids adding a \"./package.json\" value to a \".\" entry.\n return result;\n }\n }\n\n // If the resolved file is a typescript file in an internal package, try to resolve the intermediate.\n if (filePath && sourceExtensions.includes(path.extname(filePath))) {\n sourcePath = filePath;\n filePath = isInternal ? sourceToIntermediatePath(filePath) : undefined;\n }\n\n // If we haven't resolved a sourcePath, try to resolve it from the intermediate.\n if (isInternal && filePath && !sourcePath) {\n const ext = path.extname(filePath);\n const isJavaScriptExt = javascriptExtensions.includes(ext);\n\n if (isJavaScriptExt) {\n // Not a TS file, but a JS file. Try to find the source.\n sourcePath = intermediateToSourcePath(filePath, packagePath);\n\n // If we couldn't find a TS file, clear sourcePath.\n if (sourcePath === filePath) {\n sourcePath = undefined;\n }\n }\n }\n\n // Try to resolve the typesPath\n if (sourcePath && filePath) {\n typesPath = filePath.replace(/\\.js$/, '.d.ts');\n\n if (!isInternal && !isFileSync(path.join(packagePath, typesPath))) {\n typesPath = undefined;\n }\n }\n\n if (typesPath) {\n result.typesPath = normalizeRelativePath(typesPath);\n }\n\n if (filePath) {\n result.filePath = normalizeRelativePath(filePath);\n }\n\n if (sourcePath) {\n result.sourcePath = normalizeRelativePath(sourcePath);\n }\n\n return result;\n}\n"]}
|
package/lib/findPackage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findPackage.d.ts","sourceRoot":"","sources":["../src/findPackage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE/G;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE;IACP,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,EACD,OAAO,EAAE;IACP,QAAQ,EAAE,uBAAuB,CAAC;CACnC,GACA,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,WAAW,CAAA;CAAE,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"findPackage.d.ts","sourceRoot":"","sources":["../src/findPackage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE/G;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE;IACP,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,EACD,OAAO,EAAE;IACP,QAAQ,EAAE,uBAAuB,CAAC;CACnC,GACA,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,WAAW,CAAA;CAAE,GAAG,SAAS,CAAC,CAwCvE"}
|
package/lib/findPackage.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
|
-
import
|
|
2
|
+
import fs from 'fs';
|
|
3
3
|
/**
|
|
4
4
|
* Find the package.json contents for `dependencyName`, searching up under `node_modules` folders
|
|
5
5
|
* starting at `startPath` and ending at `rootPath` (usually the git root) or the filesystem root.
|
|
@@ -11,9 +11,17 @@ export async function findPackage(options, context) {
|
|
|
11
11
|
const isStoreLayout = /[\\/]\.(pnpm|store)[\\/]/.test(packagePath);
|
|
12
12
|
do {
|
|
13
13
|
const resolvedPath = path.join(packagePath, 'node_modules', dependencyName);
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
let definition;
|
|
15
|
+
let realPath;
|
|
16
|
+
try {
|
|
17
|
+
realPath = fs.realpathSync.native(resolvedPath);
|
|
18
|
+
definition = await packages.get(realPath, { importerContext });
|
|
19
|
+
}
|
|
20
|
+
catch (e) {
|
|
21
|
+
// Ignore errors and keep looking.
|
|
22
|
+
}
|
|
23
|
+
if (realPath && definition) {
|
|
24
|
+
return { packagePath: realPath, definition };
|
|
17
25
|
}
|
|
18
26
|
// We haven't found it. Try to move up a directory.
|
|
19
27
|
packagePath = path.dirname(packagePath);
|
package/lib/findPackage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findPackage.js","sourceRoot":"","sources":["../src/findPackage.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,
|
|
1
|
+
{"version":3,"file":"findPackage.js","sourceRoot":"","sources":["../src/findPackage.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAKC,EACD,OAEC;IAED,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;IACzE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAE7B,IAAI,WAAW,GAAG,SAAS,CAAC;IAC5B,MAAM,aAAa,GAAG,0BAA0B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEnE,GAAG,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;QAC5E,IAAI,UAAmC,CAAC;QACxC,IAAI,QAA4B,CAAC;QAEjC,IAAI,CAAC;YACH,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAChD,UAAU,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,kCAAkC;QACpC,CAAC;QAED,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;YAC3B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;QAC/C,CAAC;QAED,mDAAmD;QACnD,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAExC,oDAAoD;QACpD,gGAAgG;QAChG,yFAAyF;QACzF,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACjE,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;QAED,yCAAyC;QACzC,IAAI,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACzC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,QAAQ,CAAC,CAAC,QAAQ,IAAI,WAAW,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,WAAW,EAAE;IAE5G,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import path from 'path';\nimport fs from 'fs';\nimport type { PackageDefinitionsCache, PackageImporterContext, PackageJson } from '@ms-cloudpack/common-types';\n\n/**\n * Find the package.json contents for `dependencyName`, searching up under `node_modules` folders\n * starting at `startPath` and ending at `rootPath` (usually the git root) or the filesystem root.\n */\nexport async function findPackage(\n options: {\n dependencyName: string;\n startPath: string;\n importerContext?: PackageImporterContext;\n rootPath?: string;\n },\n context: {\n packages: PackageDefinitionsCache;\n },\n): Promise<{ packagePath: string; definition: PackageJson } | undefined> {\n const { dependencyName, rootPath, startPath, importerContext } = options;\n const { packages } = context;\n\n let packagePath = startPath;\n const isStoreLayout = /[\\\\/]\\.(pnpm|store)[\\\\/]/.test(packagePath);\n\n do {\n const resolvedPath = path.join(packagePath, 'node_modules', dependencyName);\n let definition: PackageJson | undefined;\n let realPath: string | undefined;\n\n try {\n realPath = fs.realpathSync.native(resolvedPath);\n definition = await packages.get(realPath, { importerContext });\n } catch (e) {\n // Ignore errors and keep looking.\n }\n\n if (realPath && definition) {\n return { packagePath: realPath, definition };\n }\n\n // We haven't found it. Try to move up a directory.\n packagePath = path.dirname(packagePath);\n\n // If we moved up into a scope folder, skip over it.\n // Exception: in a manager using a store layout, packages starting with @ are NOT scope folders;\n // e.g. @foo/bar will be in a folder like @foo-bar-npm-1.2.3-abcdef1234 or @foo-bar@1.2.3\n if (!isStoreLayout && path.basename(packagePath).startsWith('@')) {\n packagePath = path.dirname(packagePath);\n }\n\n // Skip over nested node_modules folders.\n if (packagePath.endsWith('node_modules')) {\n packagePath = path.dirname(packagePath);\n }\n } while ((!rootPath || packagePath.length >= rootPath.length) && path.dirname(packagePath) !== packagePath);\n\n return undefined;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findPackageOutputPaths.d.ts","sourceRoot":"","sources":["../src/findPackageOutputPaths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAK1E;;;;;;;;;;;;GAYG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;IAAE,QAAQ,EAAE,uBAAuB,CAAA;CAAE,GAC7C,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"findPackageOutputPaths.d.ts","sourceRoot":"","sources":["../src/findPackageOutputPaths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAK1E;;;;;;;;;;;;GAYG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;IAAE,QAAQ,EAAE,uBAAuB,CAAA;CAAE,GAC7C,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CA2E3D"}
|
|
@@ -34,20 +34,16 @@ export async function findPackageOutputPaths(packagePath, context) {
|
|
|
34
34
|
let esmPath = module;
|
|
35
35
|
// If either are folders, we should assume we're looking for index.js within the folder.
|
|
36
36
|
if (!mainExt) {
|
|
37
|
-
// eslint-disable-next-line @ms-cloudpack/internal/no-sync-filesystem
|
|
38
37
|
if (isFolderSync(path.resolve(packagePath, main))) {
|
|
39
38
|
cjsPath = slash(path.join(main, 'index.js'));
|
|
40
|
-
// eslint-disable-next-line @ms-cloudpack/internal/no-sync-filesystem
|
|
41
39
|
}
|
|
42
40
|
else if (isFileSync(path.resolve(packagePath, main + '.js'))) {
|
|
43
41
|
cjsPath = main + '.js';
|
|
44
42
|
}
|
|
45
43
|
}
|
|
46
44
|
if (!moduleExt) {
|
|
47
|
-
// eslint-disable-next-line @ms-cloudpack/internal/no-sync-filesystem
|
|
48
45
|
if (isFolderSync(path.resolve(packagePath, module))) {
|
|
49
46
|
esmPath = slash(path.join(module, 'index.js'));
|
|
50
|
-
// eslint-disable-next-line @ms-cloudpack/internal/no-sync-filesystem
|
|
51
47
|
}
|
|
52
48
|
else if (isFileSync(path.resolve(packagePath, module + '.js'))) {
|
|
53
49
|
esmPath = module + '.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findPackageOutputPaths.js","sourceRoot":"","sources":["../src/findPackageOutputPaths.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAAmB,EACnB,OAA8C;IAE9C,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/F,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,WAAW,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC;IAEpD,wEAAwE;IACxE,mEAAmE;IACnE,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACnD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,yEAAyE;IACzE,sCAAsC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvC,sFAAsF;IACtF,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,OAAO,GAAG,MAAM,CAAC;IAErB,wFAAwF;IACxF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,
|
|
1
|
+
{"version":3,"file":"findPackageOutputPaths.js","sourceRoot":"","sources":["../src/findPackageOutputPaths.ts"],"names":[],"mappings":"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","sourcesContent":["import { type PackageDefinitionsCache } from '@ms-cloudpack/common-types';\nimport { normalizeRelativePath, slash } from '@ms-cloudpack/path-string-parsing';\nimport { isFileSync, isFolderSync } from '@ms-cloudpack/path-utilities';\nimport path from 'path';\n\n/**\n * Given a package path, read the package definition's main and modules, if present,\n * to uncover cjs and esm output paths. If both main and module are present, and they\n * point to the same filename in distinct paths, we can infer the common ancestor to\n * derive cjs/esm output paths. This is particularly useful in getCandidates, where\n * we need to translate a request import file path into a physical file.\n *\n * Paths are normalized - slashes will be forward, paths are relative and start with a period,\n * and they will always end with a trailing slash to make it easy to replace within\n * findCandidates.\n *\n * If there is not enough info to conclude the output paths, return undefined.\n */\nexport async function findPackageOutputPaths(\n packagePath: string,\n context: { packages: PackageDefinitionsCache },\n): Promise<{ cjsPath: string; esmPath: string } | undefined> {\n const packageDefinition = await context.packages.get(packagePath, { disableTransforms: true });\n\n if (!packageDefinition) {\n throw new Error(`Package definition not found for ${packagePath}`);\n }\n\n const { exports, main, module } = packageDefinition;\n\n // If an exports map is provided, or we're missing main or module, don't\n // try and derive an output path. We don't have enough information.\n if (exports || !main || !module || main === module) {\n return undefined;\n }\n\n // We should only attempt to find package output paths if main and module\n // are filenames that have extensions.\n const mainExt = path.extname(main);\n const moduleExt = path.extname(module);\n\n // If main/module have an extension, we need to remove the filename to get the folder.\n let cjsPath = main;\n let esmPath = module;\n\n // If either are folders, we should assume we're looking for index.js within the folder.\n if (!mainExt) {\n if (isFolderSync(path.resolve(packagePath, main))) {\n cjsPath = slash(path.join(main, 'index.js'));\n } else if (isFileSync(path.resolve(packagePath, main + '.js'))) {\n cjsPath = main + '.js';\n }\n }\n if (!moduleExt) {\n if (isFolderSync(path.resolve(packagePath, module))) {\n esmPath = slash(path.join(module, 'index.js'));\n } else if (isFileSync(path.resolve(packagePath, module + '.js'))) {\n esmPath = module + '.js';\n }\n }\n\n // If the filenames don't match (ignoring extensions because of cjs vs mjs), we could\n // be in an asymmetrical case (e.g. main: /dist/foo.js vs module: /dist-esm/src/bar.js)\n if (path.basename(cjsPath, mainExt) !== path.basename(esmPath, moduleExt)) {\n return undefined;\n }\n\n // Ignore the filenames (which might differ on extension, js vs cjs vs mjs.)\n cjsPath = path.dirname(cjsPath);\n esmPath = path.dirname(esmPath);\n\n // They are different - strip off the common paths at the end to derive\n // the unique cjs/esm output paths.\n // For example, if main is `lib/cjs/foo/bar/index.js' and module is `lib/esm/foo/bar/index.js`,\n // then the cjsOutputPath is `lib/cjs` and the esmOutputPath is `lib/esm`.\n const mainParts = cjsPath?.split('/');\n const moduleParts = esmPath?.split('/');\n const commonParts = [];\n\n while (\n mainParts.length &&\n moduleParts.length &&\n mainParts[mainParts.length - 1] === moduleParts[moduleParts.length - 1]\n ) {\n commonParts.unshift(mainParts.pop());\n moduleParts.pop();\n }\n\n cjsPath = normalizeRelativePath(mainParts.length ? mainParts.join('/') : cjsPath || '') + '/';\n esmPath = normalizeRelativePath(moduleParts.length ? moduleParts.join('/') : esmPath || '') + '/';\n\n if (cjsPath === esmPath || cjsPath === './' || esmPath === './') {\n return undefined;\n }\n\n return { cjsPath, esmPath };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNonSemverTransform.d.ts","sourceRoot":"","sources":["../src/getNonSemverTransform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAe,MAAM,4BAA4B,CAAC;AAM1F;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,0BAA0B,
|
|
1
|
+
{"version":3,"file":"getNonSemverTransform.d.ts","sourceRoot":"","sources":["../src/getNonSemverTransform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAe,MAAM,4BAA4B,CAAC;AAM1F;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,0BAA0B,CAoFlE"}
|
|
@@ -59,6 +59,11 @@ export function getNonSemverTransform() {
|
|
|
59
59
|
originalName: definition.name || '',
|
|
60
60
|
originalVersion: definition.version || '',
|
|
61
61
|
};
|
|
62
|
+
// We have changed the definition, so link the entry in nonSemverDeps to the new name/version.
|
|
63
|
+
if (nonSemverDeps[`${definition.name}@${definition.version}`]) {
|
|
64
|
+
nonSemverDeps[`${importedName}@${versionRequirement}`] =
|
|
65
|
+
nonSemverDeps[`${definition.name}@${definition.version}`];
|
|
66
|
+
}
|
|
62
67
|
break;
|
|
63
68
|
}
|
|
64
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNonSemverTransform.js","sourceRoot":"","sources":["../src/getNonSemverTransform.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAEjF,MAAM,QAAQ,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAU,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB;IACnC;;;OAGG;IACH,MAAM,aAAa,GAGf,EAAE,CAAC;IAEP,OAAO,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,EAAE;QACtD,MAAM,MAAM,GAAyB,EAAE,CAAC;QAExC,oCAAoC;QACpC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAEvC,KAAK,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzD,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBACjD,SAAS;gBACX,CAAC;gBAED,OAAO,CAAC,KAAK,CACX,gCAAgC,OAAO,IAAI,UAAU,GAAG;oBACtD,OAAO,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,OAAO,WAAW,KAAK;oBACnE,wGAAwG,CAC3G,CAAC;gBAEF,mDAAmD;gBACnD,gEAAgE;gBAChE,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;gBACrD,UAAU,CAAC,OAAO,CAAC,GAAG,4BAA4B,CAAC,UAAU,CAAC,CAAC;gBAE/D,sCAAsC;gBACtC,MAAM,MAAM,GAAG,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;gBAClF,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAED,6FAA6F;QAC7F,cAAc;QACd,MAAM,mBAAmB,GACvB,eAAe,IAAI,aAAa,CAAC,GAAG,eAAe,CAAC,UAAU,IAAI,eAAe,CAAC,aAAa,EAAE,CAAC,CAAC;QAErG,iFAAiF;QACjF,wGAAwG;QAExG,IAAI,mBAAmB,EAAE,CAAC;YACxB,8EAA8E;YAC9E,uBAAuB;YACvB,kHAAkH;YAClH,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,GAAG,eAAe,CAAC;YAE7D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC1D,SAAS;gBACX,CAAC;gBAED,qFAAqF;gBACrF,sFAAsF;gBACtF,qFAAqF;gBACrF,+BAA+B;gBAC/B,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC;gBAC3B,MAAM,CAAC,OAAO,GAAG,kBAAkB,CAAC;gBACpC,MAAM,CAAC,iBAAiB,GAAG;oBACzB,YAAY,EAAE,UAAU,CAAC,IAAI,IAAI,EAAE;oBACnC,eAAe,EAAE,UAAU,CAAC,OAAO,IAAI,EAAE;iBAC1C,CAAC;
|
|
1
|
+
{"version":3,"file":"getNonSemverTransform.js","sourceRoot":"","sources":["../src/getNonSemverTransform.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PackageDefinitionTransform, PackageJson } from '@ms-cloudpack/common-types';\nimport semver from 'semver';\nimport { generateVersionFromNonSemver } from './generateVersionFromNonSemver.js';\n\nconst depTypes = ['dependencies', 'peerDependencies'] as const;\n\n/**\n * Get a transform which handles non-semver dependencies:\n * - In a parent package, if a dependency is specified with a non-semver version, change the dep\n * to a special `0.0.0-<original-version>` prerelease version.\n * - In a child package, if the package was pulled in as a non-semver dependency by a parent\n * (per the `importerContext`), change its version to the special prerelease version as above.\n */\nexport function getNonSemverTransform(): PackageDefinitionTransform {\n /**\n * Cached info about parent packages with non-semver dependencies:\n * Map from parent name/version => dep type => non-semver dependency names\n */\n const nonSemverDeps: Record<\n `${string}@${string}`,\n Partial<Record<'dependencies' | 'peerDependencies', string[]>>\n > = {};\n\n return ({ definition, packagePath, importerContext }) => {\n const result: Partial<PackageJson> = {};\n\n // Check for non-semver dependencies\n for (const depType of depTypes) {\n const deps = definition[depType] || {};\n\n for (const [depName, depVersion] of Object.entries(deps)) {\n if (!depVersion || semver.validRange(depVersion)) {\n continue;\n }\n\n console.debug(\n `Non-semver dependency found: ${depName}@${depVersion} ` +\n `(in ${definition.name}@${definition.version} at ${packagePath}). ` +\n \"Cloudpack will attempt to handle this, but it's recommended to use semantic versions only if possible.\",\n );\n\n // Update the version in the returned dependencies:\n // \"bar\": \"npm:@custom/bar@^1\" => \"0.0.0-npm--custom-bar--1\"\n const resultDeps = (result[depType] ??= { ...deps });\n resultDeps[depName] = generateVersionFromNonSemver(depVersion);\n\n // Save that this was a non-semver dep\n const record = (nonSemverDeps[`${definition.name}@${definition.version}`] ??= {});\n (record[depType] ??= []).push(depName);\n }\n }\n\n // If this package's parent pulled it in with a non-semver dependency, make some more updates\n // (see below)\n const nonSemverParentInfo =\n importerContext && nonSemverDeps[`${importerContext.parentName}@${importerContext.parentVersion}`];\n\n // TODO: maybe this could also be used for resolutions if we have problems there:\n // adding a check for !semver.satisfies(requiredAs, definition.version) and forcing the package version?\n\n if (nonSemverParentInfo) {\n // Example: the parent depended on this package as \"bar\": \"npm:@custom/bar@^1\"\n // importedName = bar\n // versionRequirement = 0.0.0-npm--custom-bar--1 (was modified when this transform ran on the parent definition)\n const { importedName, versionRequirement } = importerContext;\n\n for (const depType of depTypes) {\n if (!nonSemverParentInfo[depType]?.includes(importedName)) {\n continue;\n }\n\n // To ensure other code handles this package properly, change its name and version to\n // the ones used by the parent (after transforms). This ensures it works properly with\n // the resolve map and isn't accidentally used by other packages which depend on this\n // package under its real name.\n result.name = importedName;\n result.version = versionRequirement;\n result.cloudpackRemapped = {\n originalName: definition.name || '',\n originalVersion: definition.version || '',\n };\n\n // We have changed the definition, so link the entry in nonSemverDeps to the new name/version.\n if (nonSemverDeps[`${definition.name}@${definition.version}`]) {\n nonSemverDeps[`${importedName}@${versionRequirement}`] =\n nonSemverDeps[`${definition.name}@${definition.version}`];\n }\n\n break;\n }\n }\n\n if (Object.keys(result).length) {\n return { ...definition, ...result };\n }\n return undefined;\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getVersionInternal.d.ts","sourceRoot":"","sources":["../src/getVersionInternal.ts"],"names":[],"mappings":"AAOA,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"getVersionInternal.d.ts","sourceRoot":"","sources":["../src/getVersionInternal.ts"],"names":[],"mappings":"AAOA,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAYpH"}
|
|
@@ -8,7 +8,6 @@ export function getVersionInternal(importUrl) {
|
|
|
8
8
|
const result = { version: `0.0.0-local`, packagePath, isExternal: false };
|
|
9
9
|
if (packagePath && isExternalPackage(packagePath)) {
|
|
10
10
|
const packageJSONpath = path.join(packagePath, 'package.json');
|
|
11
|
-
// eslint-disable-next-line @ms-cloudpack/internal/no-sync-filesystem
|
|
12
11
|
result.version = readJsonSync(packageJSONpath).version || result.version;
|
|
13
12
|
result.isExternal = true;
|
|
14
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getVersionInternal.js","sourceRoot":"","sources":["../src/getVersionInternal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAE1E,IAAI,WAAW,IAAI,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;QAClD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAE/D,
|
|
1
|
+
{"version":3,"file":"getVersionInternal.js","sourceRoot":"","sources":["../src/getVersionInternal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAE1E,IAAI,WAAW,IAAI,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;QAClD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAE/D,MAAM,CAAC,OAAO,GAAI,YAAY,CAAC,eAAe,CAAiB,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;QAC1F,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import type { PackageJson } from '@ms-cloudpack/common-types';\nimport { readJsonSync } from '@ms-cloudpack/json-utilities';\nimport { findPackageRoot } from '@ms-cloudpack/path-utilities';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\nimport { isExternalPackage } from './isExternalPackage.js';\n\nexport function getVersionInternal(importUrl: string): { version: string; packagePath?: string; isExternal: boolean } {\n const packagePath = findPackageRoot(path.dirname(fileURLToPath(importUrl)));\n const result = { version: `0.0.0-local`, packagePath, isExternal: false };\n\n if (packagePath && isExternalPackage(packagePath)) {\n const packageJSONpath = path.join(packagePath, 'package.json');\n\n result.version = (readJsonSync(packageJSONpath) as PackageJson).version || result.version;\n result.isExternal = true;\n }\n\n return result;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ms-cloudpack/package-utilities",
|
|
3
|
-
"version": "7.4.
|
|
3
|
+
"version": "7.4.8",
|
|
4
4
|
"description": "Utilities for resolving/parsing packages and their imports.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
}
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@ms-cloudpack/common-types": "^0.5.
|
|
17
|
+
"@ms-cloudpack/common-types": "^0.5.4",
|
|
18
18
|
"@ms-cloudpack/json-utilities": "^0.1.4",
|
|
19
|
-
"@ms-cloudpack/package-overrides": "^0.8.
|
|
19
|
+
"@ms-cloudpack/package-overrides": "^0.8.6",
|
|
20
20
|
"@ms-cloudpack/path-string-parsing": "^1.2.2",
|
|
21
|
-
"@ms-cloudpack/path-utilities": "^2.7.
|
|
21
|
+
"@ms-cloudpack/path-utilities": "^2.7.11",
|
|
22
22
|
"@ms-cloudpack/task-reporter": "^0.14.1",
|
|
23
23
|
"acorn": "^8.11.2",
|
|
24
24
|
"acorn-walk": "^8.2.1",
|