@ms-cloudpack/config 0.38.18 → 0.38.20

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.
@@ -7,7 +7,7 @@ import { appConfigFileName, appConfigFileNamesJS, generatedConfigFileName } from
7
7
  */
8
8
  export function getConfigPath(cwd, customConfigFileName) {
9
9
  if (customConfigFileName) {
10
- const customConfigPath = path.join(cwd, customConfigFileName);
10
+ const customConfigPath = path.resolve(cwd, customConfigFileName);
11
11
  return {
12
12
  defaultAppConfigPath: customConfigPath,
13
13
  appConfigPaths: [customConfigPath],
@@ -1 +1 @@
1
- {"version":3,"file":"getConfigPath.js","sourceRoot":"","sources":["../src/getConfigPath.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAElG;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,GAAW,EACX,oBAA6B;IAQ7B,IAAI,oBAAoB,EAAE,CAAC;QACzB,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;QAC9D,OAAO;YACL,oBAAoB,EAAE,gBAAgB;YACtC,cAAc,EAAE,CAAC,gBAAgB,CAAC;YAClC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC;SAC7D,CAAC;IACJ,CAAC;IAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAC/D,OAAO;QACL,oBAAoB;QACpB,cAAc,EAAE,CAAC,oBAAoB,EAAE,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC3G,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC;KAC7D,CAAC;AACJ,CAAC","sourcesContent":["import path from 'path';\nimport { appConfigFileName, appConfigFileNamesJS, generatedConfigFileName } from './constants.js';\n\n/**\n * Get config paths for the app at `cwd`.\n * @param cwd - base path of the config file\n * @param customConfigFileName - optional custom config file name to use instead of defaults\n */\nexport function getConfigPath(\n cwd: string,\n customConfigFileName?: string,\n): {\n /** Default JSON app config path */\n defaultAppConfigPath: string;\n /** All app config paths including JSON and JS */\n appConfigPaths: string[];\n generatedConfigPath: string;\n} {\n if (customConfigFileName) {\n const customConfigPath = path.join(cwd, customConfigFileName);\n return {\n defaultAppConfigPath: customConfigPath,\n appConfigPaths: [customConfigPath],\n generatedConfigPath: path.join(cwd, generatedConfigFileName),\n };\n }\n\n const defaultAppConfigPath = path.join(cwd, appConfigFileName);\n return {\n defaultAppConfigPath,\n appConfigPaths: [defaultAppConfigPath, ...appConfigFileNamesJS.map((fileName) => path.join(cwd, fileName))],\n generatedConfigPath: path.join(cwd, generatedConfigFileName),\n };\n}\n"]}
1
+ {"version":3,"file":"getConfigPath.js","sourceRoot":"","sources":["../src/getConfigPath.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAElG;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,GAAW,EACX,oBAA6B;IAQ7B,IAAI,oBAAoB,EAAE,CAAC;QACzB,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;QACjE,OAAO;YACL,oBAAoB,EAAE,gBAAgB;YACtC,cAAc,EAAE,CAAC,gBAAgB,CAAC;YAClC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC;SAC7D,CAAC;IACJ,CAAC;IAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAC/D,OAAO;QACL,oBAAoB;QACpB,cAAc,EAAE,CAAC,oBAAoB,EAAE,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC3G,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC;KAC7D,CAAC;AACJ,CAAC","sourcesContent":["import path from 'path';\nimport { appConfigFileName, appConfigFileNamesJS, generatedConfigFileName } from './constants.js';\n\n/**\n * Get config paths for the app at `cwd`.\n * @param cwd - base path of the config file\n * @param customConfigFileName - optional custom config file name to use instead of defaults\n */\nexport function getConfigPath(\n cwd: string,\n customConfigFileName?: string,\n): {\n /** Default JSON app config path */\n defaultAppConfigPath: string;\n /** All app config paths including JSON and JS */\n appConfigPaths: string[];\n generatedConfigPath: string;\n} {\n if (customConfigFileName) {\n const customConfigPath = path.resolve(cwd, customConfigFileName);\n return {\n defaultAppConfigPath: customConfigPath,\n appConfigPaths: [customConfigPath],\n generatedConfigPath: path.join(cwd, generatedConfigFileName),\n };\n }\n\n const defaultAppConfigPath = path.join(cwd, appConfigFileName);\n return {\n defaultAppConfigPath,\n appConfigPaths: [defaultAppConfigPath, ...appConfigFileNamesJS.map((fileName) => path.join(cwd, fileName))],\n generatedConfigPath: path.join(cwd, generatedConfigFileName),\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"createPackageSettingsTransform.d.ts","sourceRoot":"","sources":["../../src/packageDefinitions/createPackageSettingsTransform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,0BAA0B,EAM3B,MAAM,4BAA4B,CAAC;AAMpC;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,eAAe,GAAG,0BAA0B,CA0ClG"}
1
+ {"version":3,"file":"createPackageSettingsTransform.d.ts","sourceRoot":"","sources":["../../src/packageDefinitions/createPackageSettingsTransform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,0BAA0B,EAO3B,MAAM,4BAA4B,CAAC;AAMpC;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,eAAe,GAAG,0BAA0B,CA0ClG"}
@@ -91,9 +91,10 @@ function updateDependencies(options) {
91
91
  async function computeExports(options, context) {
92
92
  const { packagePath, definition, userPackageSettings, generatedPackageSettings } = options;
93
93
  const { appPath, routes, features } = context.config;
94
- const resolveWebExtensions = userPackageSettings?.bundlerCapabilities?.['resolve-web-extensions'] ??
94
+ const bundlerCapabilities = (userPackageSettings?.bundlerCapabilities || {});
95
+ const resolveWebExtensions = bundlerCapabilities['resolve-web-extensions'] ??
95
96
  // eslint-disable-next-line etc/no-deprecated
96
- Boolean(features?.resolveWebExtensions);
97
+ !!features?.resolveWebExtensions;
97
98
  // If this is the app package and it has routes with entries, use those to create the exports map.
98
99
  if (slash(appPath) === slash(packagePath) && routes?.length) {
99
100
  const routeExports = {};
@@ -1 +1 @@
1
- {"version":3,"file":"createPackageSettingsTransform.js","sourceRoot":"","sources":["../../src/packageDefinitions/createPackageSettingsTransform.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n CloudpackConfig,\n PackageDefinitionTransform,\n PackageDefinitionsCache,\n PackageJson,\n PackageJsonExports,\n GeneratedExports,\n RenderedRoute,\n} from '@ms-cloudpack/common-types';\nimport { addExportsMapEntry, getDependencies, getExportsMap, expandExportsMap } from '@ms-cloudpack/package-utilities';\nimport { slash } from '@ms-cloudpack/path-string-parsing';\nimport { getPackageSettings, type GetPackageSettingsResult } from '../packageSettings/getPackageSettings.js';\nimport { mergePackageSettings } from '../packageSettings/mergePackageSettings.js';\n\n/**\n * Creates a transform to be registered with a PackageDefinitions registry for updating package.json\n * based on package settings from the config.\n */\nexport function createPackageSettingsTransform(config: CloudpackConfig): PackageDefinitionTransform {\n return async ({ definition, packagePath, packages }) => {\n const { name, version } = definition;\n\n const { userPackageSettings, generatedPackageSettings } = getPackageSettings({\n name,\n version,\n userPackageSettings: config.packageSettings,\n includeBuiltIn: true,\n generatedPackageSettings: config.generated.packageSettings,\n });\n\n // Pull out package settings properties which will be fully processed by this transform.\n const { exports, includedDependencies, excludedDependencies, ...settings } = mergePackageSettings([\n // NOTE: If we add any generated settings in the future where the user settings need to\n // take precedence (such as `bundler` maybe), this merging will need to be adjusted.\n userPackageSettings || {},\n generatedPackageSettings || {},\n ]);\n\n // Calculate exports based on settings\n definition.exports = await computeExports(\n { packagePath, definition, userPackageSettings, generatedPackageSettings },\n { packages, config },\n );\n\n updateDependencies({\n definition,\n userPackageSettings,\n generatedPackageSettings,\n excludedDependencies,\n });\n\n // Store the unprocessed settings plus the mode\n definition.cloudpack = {\n ...definition.cloudpack, // copy anything set by other transforms\n mode: config.mode,\n ...settings,\n };\n\n return definition;\n };\n}\n\nfunction updateDependencies(\n options: Pick<GetPackageSettingsResult, 'userPackageSettings' | 'generatedPackageSettings'> & {\n definition: PackageJson;\n /** Merged `excludedDependencies` from the user, built-in, and generated configs */\n excludedDependencies: string[] | undefined;\n },\n): void {\n const { definition, userPackageSettings, generatedPackageSettings } = options;\n\n // Get merged dependencies in the proper order of precedence, for determining included dep versions.\n const allDependencies = getDependencies(definition, { includeAll: true });\n\n const prodAndPeerDependencies = getDependencies(definition);\n\n // If we have included dependencies, add them.\n const userIncludedDependencies = [...(userPackageSettings?.includedDependencies || [])];\n const generatedIncludedDependencies = [...(generatedPackageSettings?.includedDependencies || [])];\n\n // Expand the $devDependencies placeholder to the actual dev dependencies.\n const includeDevDependenciesIndex = userIncludedDependencies.indexOf('$devDependencies');\n if (includeDevDependenciesIndex !== -1 && definition.devDependencies) {\n userIncludedDependencies.splice(includeDevDependenciesIndex, 1);\n definition.dependencies = {\n ...definition.dependencies,\n ...definition.devDependencies,\n };\n }\n\n // For each included dependency, if it's not already listed, add it using the version from\n // other dep types, or use a wildcard.\n for (const dep of userIncludedDependencies) {\n if (!prodAndPeerDependencies[dep]) {\n definition.dependencies ??= {};\n definition.dependencies[dep] = allDependencies[dep] || '*';\n }\n }\n\n // Add generated included dependencies to peer dependencies as they are ignored if missing.\n // We don't want to add them to dependencies, since if they are ever not required, they will error resolving.\n for (const dep of generatedIncludedDependencies) {\n if (!prodAndPeerDependencies[dep]) {\n definition.peerDependencies ??= {};\n definition.peerDependencies[dep] = allDependencies[dep] || '*';\n }\n }\n\n const excludedDependencies = [...(options.excludedDependencies || [])];\n\n // If the $peerDependencies placeholder is present, remove all peer dependencies.\n const excludePeerDependenciesIndex = excludedDependencies.indexOf('$peerDependencies');\n if (excludePeerDependenciesIndex !== -1) {\n excludedDependencies.splice(excludePeerDependenciesIndex, 1);\n delete definition.peerDependencies;\n delete definition.peerDependenciesMeta;\n }\n\n // Delete the excluded deps from dependencies and peerDependencies.\n // We ignore dev and optional deps by default, so it's probably not necessary to delete from there.\n for (const dep of excludedDependencies) {\n delete definition.dependencies?.[dep];\n delete definition.peerDependencies?.[dep];\n }\n}\n\nasync function computeExports(\n options: GetPackageSettingsResult & {\n packagePath: string;\n definition: PackageJson;\n },\n context: { packages: PackageDefinitionsCache; config: CloudpackConfig },\n): Promise<PackageJsonExports | undefined> {\n const { packagePath, definition, userPackageSettings, generatedPackageSettings } = options;\n const { appPath, routes, features } = context.config;\n const resolveWebExtensions =\n userPackageSettings?.bundlerCapabilities?.['resolve-web-extensions'] ??\n // eslint-disable-next-line etc/no-deprecated\n Boolean(features?.resolveWebExtensions);\n\n // If this is the app package and it has routes with entries, use those to create the exports map.\n if (slash(appPath) === slash(packagePath) && routes?.length) {\n const routeExports: GeneratedExports = {};\n\n for (const route of routes) {\n const { entry = [], serverEntry } = route as RenderedRoute;\n\n for (const entryItem of entry) {\n await addExportsMapEntry(\n {\n exports: routeExports,\n packagePath,\n environmentCondition: 'browser',\n filePath: entryItem.sourcePath,\n importPath: entryItem.importPath,\n resolveWebExtensions,\n },\n context,\n );\n }\n\n if (serverEntry) {\n await addExportsMapEntry(\n {\n exports: routeExports,\n packagePath,\n environmentCondition: 'node',\n filePath: serverEntry.sourcePath,\n importPath: serverEntry.importPath,\n resolveWebExtensions,\n },\n context,\n );\n }\n }\n\n if (Object.keys(routeExports).length) {\n // Currently route exports take precedence over all other exports for the app package.\n return routeExports;\n }\n }\n\n // TODO: an array of export objects is not really valid per the spec and most implementations\n const exports: PackageJsonExports[] = [];\n\n // Push exports from the package.\n if (userPackageSettings?.exports !== undefined) {\n // Prefer user settings over the original definition, including respecting null (remove exports).\n if (userPackageSettings.exports !== null) {\n exports.push(expandExportsMap(userPackageSettings.exports, packagePath));\n }\n } else if (definition.exports !== undefined) {\n // Or take the original exports if specified (again respecting null)\n if (definition.exports !== null) {\n exports.push(definition.exports);\n }\n } else {\n // Otherwise, generate an exports map from any other given entry points.\n exports.push(await getExportsMap({ packagePath, disableTransforms: true, resolveWebExtensions }, context));\n }\n\n // Push generated exports.\n if (generatedPackageSettings?.exports) {\n exports.push(generatedPackageSettings.exports);\n }\n\n if (exports.length === 0) {\n // If nothing was pushed to the array, this means the exports from either user package settings\n // or the original definition must have been null (and we have no route or generated exports),\n // so respect that.\n return null;\n }\n\n if (exports.length === 1) {\n return exports[0];\n }\n\n return exports;\n}\n"]}
1
+ {"version":3,"file":"createPackageSettingsTransform.js","sourceRoot":"","sources":["../../src/packageDefinitions/createPackageSettingsTransform.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n CloudpackConfig,\n PackageDefinitionTransform,\n PackageDefinitionsCache,\n PackageJson,\n PackageJsonExports,\n GeneratedExports,\n RenderedRoute,\n InternalBundlerCapabilitiesOptions,\n} from '@ms-cloudpack/common-types';\nimport { addExportsMapEntry, getDependencies, getExportsMap, expandExportsMap } from '@ms-cloudpack/package-utilities';\nimport { slash } from '@ms-cloudpack/path-string-parsing';\nimport { getPackageSettings, type GetPackageSettingsResult } from '../packageSettings/getPackageSettings.js';\nimport { mergePackageSettings } from '../packageSettings/mergePackageSettings.js';\n\n/**\n * Creates a transform to be registered with a PackageDefinitions registry for updating package.json\n * based on package settings from the config.\n */\nexport function createPackageSettingsTransform(config: CloudpackConfig): PackageDefinitionTransform {\n return async ({ definition, packagePath, packages }) => {\n const { name, version } = definition;\n\n const { userPackageSettings, generatedPackageSettings } = getPackageSettings({\n name,\n version,\n userPackageSettings: config.packageSettings,\n includeBuiltIn: true,\n generatedPackageSettings: config.generated.packageSettings,\n });\n\n // Pull out package settings properties which will be fully processed by this transform.\n const { exports, includedDependencies, excludedDependencies, ...settings } = mergePackageSettings([\n // NOTE: If we add any generated settings in the future where the user settings need to\n // take precedence (such as `bundler` maybe), this merging will need to be adjusted.\n userPackageSettings || {},\n generatedPackageSettings || {},\n ]);\n\n // Calculate exports based on settings\n definition.exports = await computeExports(\n { packagePath, definition, userPackageSettings, generatedPackageSettings },\n { packages, config },\n );\n\n updateDependencies({\n definition,\n userPackageSettings,\n generatedPackageSettings,\n excludedDependencies,\n });\n\n // Store the unprocessed settings plus the mode\n definition.cloudpack = {\n ...definition.cloudpack, // copy anything set by other transforms\n mode: config.mode,\n ...settings,\n };\n\n return definition;\n };\n}\n\nfunction updateDependencies(\n options: Pick<GetPackageSettingsResult, 'userPackageSettings' | 'generatedPackageSettings'> & {\n definition: PackageJson;\n /** Merged `excludedDependencies` from the user, built-in, and generated configs */\n excludedDependencies: string[] | undefined;\n },\n): void {\n const { definition, userPackageSettings, generatedPackageSettings } = options;\n\n // Get merged dependencies in the proper order of precedence, for determining included dep versions.\n const allDependencies = getDependencies(definition, { includeAll: true });\n\n const prodAndPeerDependencies = getDependencies(definition);\n\n // If we have included dependencies, add them.\n const userIncludedDependencies = [...(userPackageSettings?.includedDependencies || [])];\n const generatedIncludedDependencies = [...(generatedPackageSettings?.includedDependencies || [])];\n\n // Expand the $devDependencies placeholder to the actual dev dependencies.\n const includeDevDependenciesIndex = userIncludedDependencies.indexOf('$devDependencies');\n if (includeDevDependenciesIndex !== -1 && definition.devDependencies) {\n userIncludedDependencies.splice(includeDevDependenciesIndex, 1);\n definition.dependencies = {\n ...definition.dependencies,\n ...definition.devDependencies,\n };\n }\n\n // For each included dependency, if it's not already listed, add it using the version from\n // other dep types, or use a wildcard.\n for (const dep of userIncludedDependencies) {\n if (!prodAndPeerDependencies[dep]) {\n definition.dependencies ??= {};\n definition.dependencies[dep] = allDependencies[dep] || '*';\n }\n }\n\n // Add generated included dependencies to peer dependencies as they are ignored if missing.\n // We don't want to add them to dependencies, since if they are ever not required, they will error resolving.\n for (const dep of generatedIncludedDependencies) {\n if (!prodAndPeerDependencies[dep]) {\n definition.peerDependencies ??= {};\n definition.peerDependencies[dep] = allDependencies[dep] || '*';\n }\n }\n\n const excludedDependencies = [...(options.excludedDependencies || [])];\n\n // If the $peerDependencies placeholder is present, remove all peer dependencies.\n const excludePeerDependenciesIndex = excludedDependencies.indexOf('$peerDependencies');\n if (excludePeerDependenciesIndex !== -1) {\n excludedDependencies.splice(excludePeerDependenciesIndex, 1);\n delete definition.peerDependencies;\n delete definition.peerDependenciesMeta;\n }\n\n // Delete the excluded deps from dependencies and peerDependencies.\n // We ignore dev and optional deps by default, so it's probably not necessary to delete from there.\n for (const dep of excludedDependencies) {\n delete definition.dependencies?.[dep];\n delete definition.peerDependencies?.[dep];\n }\n}\n\nasync function computeExports(\n options: GetPackageSettingsResult & {\n packagePath: string;\n definition: PackageJson;\n },\n context: { packages: PackageDefinitionsCache; config: CloudpackConfig },\n): Promise<PackageJsonExports | undefined> {\n const { packagePath, definition, userPackageSettings, generatedPackageSettings } = options;\n const { appPath, routes, features } = context.config;\n const bundlerCapabilities = (userPackageSettings?.bundlerCapabilities || {}) as InternalBundlerCapabilitiesOptions;\n const resolveWebExtensions =\n bundlerCapabilities['resolve-web-extensions'] ??\n // eslint-disable-next-line etc/no-deprecated\n !!features?.resolveWebExtensions;\n\n // If this is the app package and it has routes with entries, use those to create the exports map.\n if (slash(appPath) === slash(packagePath) && routes?.length) {\n const routeExports: GeneratedExports = {};\n\n for (const route of routes) {\n const { entry = [], serverEntry } = route as RenderedRoute;\n\n for (const entryItem of entry) {\n await addExportsMapEntry(\n {\n exports: routeExports,\n packagePath,\n environmentCondition: 'browser',\n filePath: entryItem.sourcePath,\n importPath: entryItem.importPath,\n resolveWebExtensions,\n },\n context,\n );\n }\n\n if (serverEntry) {\n await addExportsMapEntry(\n {\n exports: routeExports,\n packagePath,\n environmentCondition: 'node',\n filePath: serverEntry.sourcePath,\n importPath: serverEntry.importPath,\n resolveWebExtensions,\n },\n context,\n );\n }\n }\n\n if (Object.keys(routeExports).length) {\n // Currently route exports take precedence over all other exports for the app package.\n return routeExports;\n }\n }\n\n // TODO: an array of export objects is not really valid per the spec and most implementations\n const exports: PackageJsonExports[] = [];\n\n // Push exports from the package.\n if (userPackageSettings?.exports !== undefined) {\n // Prefer user settings over the original definition, including respecting null (remove exports).\n if (userPackageSettings.exports !== null) {\n exports.push(expandExportsMap(userPackageSettings.exports, packagePath));\n }\n } else if (definition.exports !== undefined) {\n // Or take the original exports if specified (again respecting null)\n if (definition.exports !== null) {\n exports.push(definition.exports);\n }\n } else {\n // Otherwise, generate an exports map from any other given entry points.\n exports.push(await getExportsMap({ packagePath, disableTransforms: true, resolveWebExtensions }, context));\n }\n\n // Push generated exports.\n if (generatedPackageSettings?.exports) {\n exports.push(generatedPackageSettings.exports);\n }\n\n if (exports.length === 0) {\n // If nothing was pushed to the array, this means the exports from either user package settings\n // or the original definition must have been null (and we have no route or generated exports),\n // so respect that.\n return null;\n }\n\n if (exports.length === 1) {\n return exports[0];\n }\n\n return exports;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mergePackageSettings.d.ts","sourceRoot":"","sources":["../../src/packageSettings/mergePackageSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAI5F;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,SAAS,OAAO,CAAC,eAAe,GAAG,wBAAwB,CAAC,EACxG,QAAQ,EAAE,SAAS,EAAE,GACpB,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAgC1B"}
1
+ {"version":3,"file":"mergePackageSettings.d.ts","sourceRoot":"","sources":["../../src/packageSettings/mergePackageSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAI5F;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,SAAS,OAAO,CAAC,eAAe,GAAG,wBAAwB,CAAC,EACxG,QAAQ,EAAE,SAAS,EAAE,GACpB,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CA6C1B"}
@@ -1,5 +1,5 @@
1
1
  import { mergeObjects, mergeArrayDefaults } from '@ms-cloudpack/package-utilities';
2
- import { sourceFilesGlobs } from '@ms-cloudpack/path-utilities';
2
+ import { alwaysExcludeGlobs, sourceFilesGlobs } from '@ms-cloudpack/path-utilities';
3
3
  /**
4
4
  * Merges package settings together.
5
5
  *
@@ -32,7 +32,19 @@ export function mergePackageSettings(settings) {
32
32
  },
33
33
  });
34
34
  if (result.inputPaths?.length) {
35
- result.inputPaths = mergeArrayDefaults(Array.from(new Set(result.inputPaths)), sourceFilesGlobs);
35
+ const inputPaths = [...result.inputPaths];
36
+ if (!inputPaths.includes('...')) {
37
+ // Add the hardcoded exclusion of node_modules if the user didn't include '...'
38
+ inputPaths.push(...alwaysExcludeGlobs);
39
+ }
40
+ // Dedupe after merging
41
+ const mergedPaths = new Set(mergeArrayDefaults(inputPaths, sourceFilesGlobs));
42
+ if (mergedPaths.has('...')) {
43
+ // Special case: only the first ... token is expanded by mergeArrayDefaults, so delete the
44
+ // extra if there was more than one
45
+ mergedPaths.delete('...');
46
+ }
47
+ result.inputPaths = [...mergedPaths];
36
48
  }
37
49
  delete result.match;
38
50
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"mergePackageSettings.js","sourceRoot":"","sources":["../../src/packageSettings/mergePackageSettings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAqB;IAErB,mFAAmF;IACnF,qEAAqE;IACrE,MAAM,MAAM,GAAG,YAAY,CAAC,QAAsC,EAAE;QAClE,4FAA4F;QAC5F,aAAa,EAAE,CAAC,sBAAsB,EAAE,gBAAgB,EAAE,OAAO,CAAC;QAClE,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBACrB,6EAA6E;gBAC7E,IAAI,CAAC,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBAC1B,8EAA8E;oBAC9E,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAChD,CAAC;gBAED,IAAI,IAAI,EAAE,CAAC;oBACT,uEAAuE;oBACvE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpD,uBAAuB;oBACvB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrD,CAAC;gBAED,OAAO,GAAG,CAAC;YACb,CAAC;SACF;KACF,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAC9B,MAAM,CAAC,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACnG,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACpB,OAAO,MAAmB,CAAC;AAC7B,CAAC","sourcesContent":["import type { GeneratedPackageSettings, PackageSettings } from '@ms-cloudpack/common-types';\nimport { mergeObjects, mergeArrayDefaults } from '@ms-cloudpack/package-utilities';\nimport { sourceFilesGlobs } from '@ms-cloudpack/path-utilities';\n\n/**\n * Merges package settings together.\n *\n * TODO: This \"merges\" exports maps by concatenating them in an array, which is not correct per the\n * spec in Node. However, merging them properly is much more difficult to implement (depends on the\n * conditions that will be applied at the time the map is used), so more thought would be required\n * for how to handle multiple exports maps properly.\n */\nexport function mergePackageSettings<TSettings extends Partial<PackageSettings | GeneratedPackageSettings>>(\n settings: TSettings[],\n): Omit<TSettings, 'match'> {\n // Use PackageSettings as the type while merging so that the key-based typings work\n // (if the key is not present in generated settings, it does nothing)\n const result = mergeObjects(settings as Partial<PackageSettings>[], {\n // match is deleted after merging, so it is best to overwrite it to avoid merging conflicts.\n overwriteKeys: ['ignoreMissingExports', 'bundlerOptions', 'match'],\n customMerge: {\n exports: (acc, curr) => {\n // Use the current setting if it's explicitly null or was previously not set.\n if (!acc || curr === null) {\n // Make a copy if it's an array, so later additions don't affect the original.\n return Array.isArray(curr) ? [...curr] : curr;\n }\n\n if (curr) {\n // If we have previous exports but it's not an array, make it an array.\n acc = acc ? (Array.isArray(acc) ? acc : [acc]) : [];\n // Add the new exports.\n acc.push(...(Array.isArray(curr) ? curr : [curr]));\n }\n\n return acc;\n },\n },\n });\n\n if (result.inputPaths?.length) {\n result.inputPaths = mergeArrayDefaults(Array.from(new Set(result.inputPaths)), sourceFilesGlobs);\n }\n\n delete result.match;\n return result as TSettings;\n}\n"]}
1
+ {"version":3,"file":"mergePackageSettings.js","sourceRoot":"","sources":["../../src/packageSettings/mergePackageSettings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEpF;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAqB;IAErB,mFAAmF;IACnF,qEAAqE;IACrE,MAAM,MAAM,GAAG,YAAY,CAAC,QAAsC,EAAE;QAClE,4FAA4F;QAC5F,aAAa,EAAE,CAAC,sBAAsB,EAAE,gBAAgB,EAAE,OAAO,CAAC;QAClE,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBACrB,6EAA6E;gBAC7E,IAAI,CAAC,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBAC1B,8EAA8E;oBAC9E,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAChD,CAAC;gBAED,IAAI,IAAI,EAAE,CAAC;oBACT,uEAAuE;oBACvE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpD,uBAAuB;oBACvB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrD,CAAC;gBAED,OAAO,GAAG,CAAC;YACb,CAAC;SACF;KACF,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,+EAA+E;YAC/E,UAAU,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC;QACzC,CAAC;QAED,uBAAuB;QACvB,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAC9E,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,0FAA0F;YAC1F,mCAAmC;YACnC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACpB,OAAO,MAAmB,CAAC;AAC7B,CAAC","sourcesContent":["import type { GeneratedPackageSettings, PackageSettings } from '@ms-cloudpack/common-types';\nimport { mergeObjects, mergeArrayDefaults } from '@ms-cloudpack/package-utilities';\nimport { alwaysExcludeGlobs, sourceFilesGlobs } from '@ms-cloudpack/path-utilities';\n\n/**\n * Merges package settings together.\n *\n * TODO: This \"merges\" exports maps by concatenating them in an array, which is not correct per the\n * spec in Node. However, merging them properly is much more difficult to implement (depends on the\n * conditions that will be applied at the time the map is used), so more thought would be required\n * for how to handle multiple exports maps properly.\n */\nexport function mergePackageSettings<TSettings extends Partial<PackageSettings | GeneratedPackageSettings>>(\n settings: TSettings[],\n): Omit<TSettings, 'match'> {\n // Use PackageSettings as the type while merging so that the key-based typings work\n // (if the key is not present in generated settings, it does nothing)\n const result = mergeObjects(settings as Partial<PackageSettings>[], {\n // match is deleted after merging, so it is best to overwrite it to avoid merging conflicts.\n overwriteKeys: ['ignoreMissingExports', 'bundlerOptions', 'match'],\n customMerge: {\n exports: (acc, curr) => {\n // Use the current setting if it's explicitly null or was previously not set.\n if (!acc || curr === null) {\n // Make a copy if it's an array, so later additions don't affect the original.\n return Array.isArray(curr) ? [...curr] : curr;\n }\n\n if (curr) {\n // If we have previous exports but it's not an array, make it an array.\n acc = acc ? (Array.isArray(acc) ? acc : [acc]) : [];\n // Add the new exports.\n acc.push(...(Array.isArray(curr) ? curr : [curr]));\n }\n\n return acc;\n },\n },\n });\n\n if (result.inputPaths?.length) {\n const inputPaths = [...result.inputPaths];\n if (!inputPaths.includes('...')) {\n // Add the hardcoded exclusion of node_modules if the user didn't include '...'\n inputPaths.push(...alwaysExcludeGlobs);\n }\n\n // Dedupe after merging\n const mergedPaths = new Set(mergeArrayDefaults(inputPaths, sourceFilesGlobs));\n if (mergedPaths.has('...')) {\n // Special case: only the first ... token is expanded by mergeArrayDefaults, so delete the\n // extra if there was more than one\n mergedPaths.delete('...');\n }\n result.inputPaths = [...mergedPaths];\n }\n\n delete result.match;\n return result as TSettings;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/config",
3
- "version": "0.38.18",
3
+ "version": "0.38.20",
4
4
  "description": "Configuration handling for Cloudpack",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -13,13 +13,23 @@
13
13
  "import": "./lib/index.js"
14
14
  }
15
15
  },
16
+ "scripts": {
17
+ "api": "cloudpack-scripts api",
18
+ "build:watch": "cloudpack-scripts build-watch",
19
+ "build": "cloudpack-scripts build",
20
+ "lint:update": "cloudpack-scripts lint-update",
21
+ "lint": "cloudpack-scripts lint",
22
+ "test:update": "cloudpack-scripts test-update",
23
+ "test:watch": "cloudpack-scripts test-watch",
24
+ "test": "cloudpack-scripts test"
25
+ },
16
26
  "dependencies": {
17
- "@ms-cloudpack/common-types": "^0.32.2",
27
+ "@ms-cloudpack/common-types": "^0.33.0",
18
28
  "@ms-cloudpack/environment": "^0.1.1",
19
29
  "@ms-cloudpack/json-utilities": "^0.1.11",
20
- "@ms-cloudpack/package-utilities": "^13.2.2",
30
+ "@ms-cloudpack/package-utilities": "^13.2.4",
21
31
  "@ms-cloudpack/path-string-parsing": "^1.2.7",
22
- "@ms-cloudpack/path-utilities": "^3.1.34",
32
+ "@ms-cloudpack/path-utilities": "^3.2.1",
23
33
  "semver": "^7.6.0"
24
34
  },
25
35
  "devDependencies": {
@@ -28,16 +38,6 @@
28
38
  "@ms-cloudpack/scripts": "^0.0.1",
29
39
  "@ms-cloudpack/test-utilities": "^0.5.0"
30
40
  },
31
- "scripts": {
32
- "api": "cloudpack-scripts api",
33
- "build:watch": "cloudpack-scripts build-watch",
34
- "build": "cloudpack-scripts build",
35
- "lint:update": "cloudpack-scripts lint-update",
36
- "lint": "cloudpack-scripts lint",
37
- "test:update": "cloudpack-scripts test-update",
38
- "test:watch": "cloudpack-scripts test-watch",
39
- "test": "cloudpack-scripts test"
40
- },
41
41
  "files": [
42
42
  "lib/**/!(*.test.*)"
43
43
  ]