@ms-cloudpack/api-server 0.65.9 → 0.65.10

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.
@@ -1 +1 @@
1
- {"version":3,"file":"bundleTask.d.ts","sourceRoot":"","sources":["../../src/utilities/bundleTask.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAO/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,iCAAiC;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAC5C,UAAU,GAAG,eAAe,GAAG,UAAU,GAAG,iBAAiB,GAAG,mBAAmB,EACnF,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,eAAe,CACrE,CAAC;AAEF;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CtG"}
1
+ {"version":3,"file":"bundleTask.d.ts","sourceRoot":"","sources":["../../src/utilities/bundleTask.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAO/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAK1D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,iCAAiC;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAC5C,UAAU,GAAG,eAAe,GAAG,UAAU,GAAG,iBAAiB,GAAG,mBAAmB,EACnF,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,eAAe,CACrE,CAAC;AAEF;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CtG"}
@@ -1,4 +1,4 @@
1
- import { bundle, getEntriesMapFromPackage, getExternalsFromPackage } from '@ms-cloudpack/bundler';
1
+ import { bundle } from '@ms-cloudpack/bundler';
2
2
  import { writeJson } from '@ms-cloudpack/json-utilities';
3
3
  import { getExportsMap } from '@ms-cloudpack/package-utilities';
4
4
  import { SpanStatusCode } from '@ms-cloudpack/telemetry';
@@ -12,6 +12,8 @@ import { readResultFromCache } from './readResultFromCache.js';
12
12
  import { saveResultToCache } from './saveResultToCache.js';
13
13
  import { formatBundleTaskResult } from './formatBundleTaskResult.js';
14
14
  import { writeStubForDensityEntries } from './writeStubForDensityEntries.js';
15
+ import { getExternalsFromPackage } from './getExternalsFromPackage.js';
16
+ import { getEntriesMapFromPackage } from './getEntriesMapFromPackage.js';
15
17
  /**
16
18
  * Create and run a TaskReporter task which calls `bundle()` from `@ms-cloudpack/bundler` and formats the result.
17
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"bundleTask.js","sourceRoot":"","sources":["../../src/utilities/bundleTask.ts"],"names":[],"mappings":"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","sourcesContent":["import { bundle, getEntriesMapFromPackage, getExternalsFromPackage } from '@ms-cloudpack/bundler';\nimport type { BundleOptions } from '@ms-cloudpack/common-types';\nimport { writeJson } from '@ms-cloudpack/json-utilities';\nimport { getExportsMap } from '@ms-cloudpack/package-utilities';\nimport { SpanStatusCode } from '@ms-cloudpack/telemetry';\nimport { formatPackageName } from '@ms-cloudpack/task-reporter';\nimport path from 'path';\nimport { prepareOutputPath } from '../common/prepareOutputPath.js';\nimport type { BundleRequest } from '../types/BundleRequest.js';\nimport { getBundleInfo } from './getBundleInfo.js';\nimport { getBundleLocation } from './getBundleLocation.js';\nimport { isCachedResultValid } from './isCachedResultValid.js';\nimport { readResultFromCache } from './readResultFromCache.js';\nimport { saveResultToCache } from './saveResultToCache.js';\nimport { formatBundleTaskResult } from './formatBundleTaskResult.js';\nimport type { PartialContext } from '../types/Context.js';\nimport { writeStubForDensityEntries } from './writeStubForDensityEntries.js';\n\n/**\n * Options for a bundle task.\n */\nexport interface BundleTaskOptions {\n /** Force a bundle to be rerun */\n force?: boolean;\n /** Hash to avoid re-computing */\n hash?: string;\n /** Source hash to avoid recomputing */\n sourceHash?: string;\n /** Retry count for the task */\n retryCount?: number;\n bundleRequest: BundleRequest;\n}\n\nexport type BundleTaskContext = PartialContext<\n 'packages' | 'packageHashes' | 'reporter' | 'telemetryClient' | 'remoteCacheClient',\n 'resolveMap' | 'config' | 'sequence' | 'cachePath' | 'dedupeAliases'\n>;\n\n/**\n * Create and run a TaskReporter task which calls `bundle()` from `@ms-cloudpack/bundler` and formats the result.\n */\nexport async function bundleTask(options: BundleTaskOptions, context: BundleTaskContext): Promise<void> {\n const { bundleRequest, retryCount } = options;\n const { packageName, version } = bundleRequest;\n const { reporter, telemetryClient, session } = context;\n const { sequence } = session;\n\n const task = reporter.addTask(\n `Bundle ${formatPackageName({ name: packageName, version })}${retryCount ? ` (retry ${retryCount})` : ''}`,\n );\n\n try {\n await telemetryClient.tracer.startActiveSpan('BUNDLE_TASK', async (span) => {\n await bundleTaskInternal(options, context);\n\n span.setAttributes({\n sequence,\n isCacheHit: !!bundleRequest.resultFromCache,\n isExternal: bundleRequest.isExternal,\n packageName: bundleRequest.packageName,\n packageVersion: bundleRequest.version,\n bundleSource: bundleRequest.result?.bundleSource,\n bundler: bundleRequest.result?.bundler,\n bundlerVersion: bundleRequest.result?.bundlerVersion,\n ...(retryCount !== undefined && { retryCount }),\n });\n\n if (bundleRequest.result?.errors?.length) {\n // Set the status to `ERROR`\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n });\n } catch (err) {\n // If an unexpected error is thrown, add it to the result.\n // This ensures consistent handling of either actual bundler errors or exceptions.\n bundleRequest.result ??= {};\n bundleRequest.result.errors ??= [];\n bundleRequest.result.errors.push({\n text: `Unexpected exception while bundling: ${(err as Error).stack || String(err)}`,\n source: 'bundleTask',\n });\n }\n\n task.complete(formatBundleTaskResult(bundleRequest, reporter));\n}\n\n/**\n * Actually read the result from the cache or call `bundle()`.\n * NOTE: The result is returned by mutating `options.bundleRequest.result`.\n */\nasync function bundleTaskInternal(options: BundleTaskOptions, context: BundleTaskContext): Promise<void> {\n const { bundleRequest, force, hash, sourceHash } = options;\n const { packageName, version, targetEnvironment } = bundleRequest;\n const { packageHashes, packages, session } = context;\n const { config, dedupeAliases } = session;\n const { mode } = config;\n\n // If force is set, dispose the existing result.\n if (force && bundleRequest.result?.dispose) {\n bundleRequest.result.dispose();\n bundleRequest.result = undefined;\n }\n\n const { packagePath, isExternal, isIncremental, disableSourceMaps, shouldGetBundleInfo } = bundleRequest;\n\n const outputPath =\n bundleRequest.outputPath ??\n (await getBundleLocation({ packagePath, targetEnvironment, shouldRecalculate: force, hash }, context)).path;\n\n // Rehydrate the result if not incremental.\n if (bundleRequest.result === undefined && !force) {\n bundleRequest.result = await readResultFromCache(\n { packageName, version, inputPath: packagePath, outputPath, targetEnvironment },\n context,\n );\n }\n\n const cacheValidationHash = !isExternal\n ? sourceHash ||\n (await packageHashes.get({\n packagePath,\n targetEnvironment,\n isSourceHashingEnabled: true,\n shouldRecalculate: true,\n }))\n : undefined;\n\n // if the cached result is valid, use it.\n if (!force && isCachedResultValid({ bundleRequest, hash: cacheValidationHash })) {\n console.debug(`Using cached result for ${bundleRequest.packageName}@${bundleRequest.version}`);\n bundleRequest.resultFromCache = true;\n } else {\n bundleRequest.resultFromCache = false;\n\n // Only use cached result if it's successful.\n await prepareOutputPath(outputPath);\n\n if (bundleRequest.result?.rebuild) {\n bundleRequest.result = {\n ...(await bundleRequest.result.rebuild()),\n outputPath: bundleRequest.result.outputPath,\n hash: cacheValidationHash,\n };\n } else {\n const {\n bundler,\n bundlerOptions,\n inlinedDependencies,\n dynamicImports,\n bundlerCapabilities,\n ignoredBundlerWarnings,\n unsafeCjsExportNames,\n } = (await packages.get(packagePath)).cloudpack || {};\n\n const bundleOptions: BundleOptions = {\n // We need the package name without transforms to ensure we get the original name.\n packageName: (await packages.get(packagePath, { disableTransforms: true })).name,\n bundler,\n minify: mode === 'production',\n targetEnvironment,\n bundlerOptions,\n inputPath: packagePath,\n outputPath,\n incremental: isIncremental !== undefined ? isIncremental : false,\n sourcemap: !disableSourceMaps,\n entries: await getEntriesMapFromPackage({ inputPath: packagePath, targetEnvironment }, { packages, config }),\n inlined: inlinedDependencies,\n external: await getExternalsFromPackage({ inputPath: packagePath }, { packages }),\n dynamicImports,\n ignoredBundlerWarnings,\n bundlerCapabilities,\n unsafeCjsExportNames,\n dedupeAliases,\n };\n\n const bundleInternalResult = await bundle(bundleOptions, { config });\n bundleRequest.result = {\n ...bundleInternalResult,\n outputPath: bundleOptions.outputPath ?? outputPath,\n hash: cacheValidationHash,\n bundleSource: 'bundler',\n };\n\n if (bundlerCapabilities?.density) {\n // Get export maps that need to be written as stubs for density.\n // If there are density exports, write stubs for them.\n const densityResult = await writeStubForDensityEntries({\n options: {\n packageName,\n packagePath,\n result: bundleInternalResult,\n densityOptions: bundlerCapabilities.density,\n },\n context: { packages, config },\n });\n\n // Add errors and warnings to the appropriate arrays\n if (densityResult.errors.length > 0) {\n bundleRequest.result.errors = [...(bundleRequest.result.errors ?? []), ...densityResult.errors];\n }\n\n if (densityResult.warnings.length > 0) {\n bundleRequest.result.warnings = [...(bundleRequest.result.warnings ?? []), ...densityResult.warnings];\n }\n }\n }\n\n // Write the result to disk.\n await saveResultToCache(bundleRequest.result);\n }\n\n // If we should find required imports and exports per bundle\n if (shouldGetBundleInfo && !bundleRequest.result?.errors?.length && bundleRequest.result?.outputFiles?.length) {\n // Exports map is needed to find the bundle info per entry we intend to bundle.\n // Exports map is used instead of bundleRequest.entries since it is easier to use\n // because it contains the paths other packages use to import the entry and\n // the relative location of the bundled files.\n const exportsMap = await getExportsMap({ packagePath }, { packages, config });\n\n const bundleInfo = await getBundleInfo({\n outputPath,\n outputFiles: bundleRequest.result.outputFiles,\n exportsMap,\n isExternal,\n packagePath,\n });\n\n bundleRequest.result.info = bundleInfo;\n\n if (config.logBundleInfo) {\n // Write to cache for future use. (Ignore the promise result.)\n void writeJson(path.join(outputPath, 'bundle-info.json'), bundleInfo);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"bundleTask.js","sourceRoot":"","sources":["../../src/utilities/bundleTask.ts"],"names":[],"mappings":"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","sourcesContent":["import { bundle } from '@ms-cloudpack/bundler';\nimport type { BundleOptions } from '@ms-cloudpack/common-types';\nimport { writeJson } from '@ms-cloudpack/json-utilities';\nimport { getExportsMap } from '@ms-cloudpack/package-utilities';\nimport { SpanStatusCode } from '@ms-cloudpack/telemetry';\nimport { formatPackageName } from '@ms-cloudpack/task-reporter';\nimport path from 'path';\nimport { prepareOutputPath } from '../common/prepareOutputPath.js';\nimport type { BundleRequest } from '../types/BundleRequest.js';\nimport { getBundleInfo } from './getBundleInfo.js';\nimport { getBundleLocation } from './getBundleLocation.js';\nimport { isCachedResultValid } from './isCachedResultValid.js';\nimport { readResultFromCache } from './readResultFromCache.js';\nimport { saveResultToCache } from './saveResultToCache.js';\nimport { formatBundleTaskResult } from './formatBundleTaskResult.js';\nimport type { PartialContext } from '../types/Context.js';\nimport { writeStubForDensityEntries } from './writeStubForDensityEntries.js';\nimport { getExternalsFromPackage } from './getExternalsFromPackage.js';\nimport { getEntriesMapFromPackage } from './getEntriesMapFromPackage.js';\n\n/**\n * Options for a bundle task.\n */\nexport interface BundleTaskOptions {\n /** Force a bundle to be rerun */\n force?: boolean;\n /** Hash to avoid re-computing */\n hash?: string;\n /** Source hash to avoid recomputing */\n sourceHash?: string;\n /** Retry count for the task */\n retryCount?: number;\n bundleRequest: BundleRequest;\n}\n\nexport type BundleTaskContext = PartialContext<\n 'packages' | 'packageHashes' | 'reporter' | 'telemetryClient' | 'remoteCacheClient',\n 'resolveMap' | 'config' | 'sequence' | 'cachePath' | 'dedupeAliases'\n>;\n\n/**\n * Create and run a TaskReporter task which calls `bundle()` from `@ms-cloudpack/bundler` and formats the result.\n */\nexport async function bundleTask(options: BundleTaskOptions, context: BundleTaskContext): Promise<void> {\n const { bundleRequest, retryCount } = options;\n const { packageName, version } = bundleRequest;\n const { reporter, telemetryClient, session } = context;\n const { sequence } = session;\n\n const task = reporter.addTask(\n `Bundle ${formatPackageName({ name: packageName, version })}${retryCount ? ` (retry ${retryCount})` : ''}`,\n );\n\n try {\n await telemetryClient.tracer.startActiveSpan('BUNDLE_TASK', async (span) => {\n await bundleTaskInternal(options, context);\n\n span.setAttributes({\n sequence,\n isCacheHit: !!bundleRequest.resultFromCache,\n isExternal: bundleRequest.isExternal,\n packageName: bundleRequest.packageName,\n packageVersion: bundleRequest.version,\n bundleSource: bundleRequest.result?.bundleSource,\n bundler: bundleRequest.result?.bundler,\n bundlerVersion: bundleRequest.result?.bundlerVersion,\n ...(retryCount !== undefined && { retryCount }),\n });\n\n if (bundleRequest.result?.errors?.length) {\n // Set the status to `ERROR`\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n });\n } catch (err) {\n // If an unexpected error is thrown, add it to the result.\n // This ensures consistent handling of either actual bundler errors or exceptions.\n bundleRequest.result ??= {};\n bundleRequest.result.errors ??= [];\n bundleRequest.result.errors.push({\n text: `Unexpected exception while bundling: ${(err as Error).stack || String(err)}`,\n source: 'bundleTask',\n });\n }\n\n task.complete(formatBundleTaskResult(bundleRequest, reporter));\n}\n\n/**\n * Actually read the result from the cache or call `bundle()`.\n * NOTE: The result is returned by mutating `options.bundleRequest.result`.\n */\nasync function bundleTaskInternal(options: BundleTaskOptions, context: BundleTaskContext): Promise<void> {\n const { bundleRequest, force, hash, sourceHash } = options;\n const { packageName, version, targetEnvironment } = bundleRequest;\n const { packageHashes, packages, session } = context;\n const { config, dedupeAliases } = session;\n const { mode } = config;\n\n // If force is set, dispose the existing result.\n if (force && bundleRequest.result?.dispose) {\n bundleRequest.result.dispose();\n bundleRequest.result = undefined;\n }\n\n const { packagePath, isExternal, isIncremental, disableSourceMaps, shouldGetBundleInfo } = bundleRequest;\n\n const outputPath =\n bundleRequest.outputPath ??\n (await getBundleLocation({ packagePath, targetEnvironment, shouldRecalculate: force, hash }, context)).path;\n\n // Rehydrate the result if not incremental.\n if (bundleRequest.result === undefined && !force) {\n bundleRequest.result = await readResultFromCache(\n { packageName, version, inputPath: packagePath, outputPath, targetEnvironment },\n context,\n );\n }\n\n const cacheValidationHash = !isExternal\n ? sourceHash ||\n (await packageHashes.get({\n packagePath,\n targetEnvironment,\n isSourceHashingEnabled: true,\n shouldRecalculate: true,\n }))\n : undefined;\n\n // if the cached result is valid, use it.\n if (!force && isCachedResultValid({ bundleRequest, hash: cacheValidationHash })) {\n console.debug(`Using cached result for ${bundleRequest.packageName}@${bundleRequest.version}`);\n bundleRequest.resultFromCache = true;\n } else {\n bundleRequest.resultFromCache = false;\n\n // Only use cached result if it's successful.\n await prepareOutputPath(outputPath);\n\n if (bundleRequest.result?.rebuild) {\n bundleRequest.result = {\n ...(await bundleRequest.result.rebuild()),\n outputPath: bundleRequest.result.outputPath,\n hash: cacheValidationHash,\n };\n } else {\n const {\n bundler,\n bundlerOptions,\n inlinedDependencies,\n dynamicImports,\n bundlerCapabilities,\n ignoredBundlerWarnings,\n unsafeCjsExportNames,\n } = (await packages.get(packagePath)).cloudpack || {};\n\n const bundleOptions: BundleOptions = {\n // We need the package name without transforms to ensure we get the original name.\n packageName: (await packages.get(packagePath, { disableTransforms: true })).name,\n bundler,\n minify: mode === 'production',\n targetEnvironment,\n bundlerOptions,\n inputPath: packagePath,\n outputPath,\n incremental: isIncremental !== undefined ? isIncremental : false,\n sourcemap: !disableSourceMaps,\n entries: await getEntriesMapFromPackage({ inputPath: packagePath, targetEnvironment }, { packages, config }),\n inlined: inlinedDependencies,\n external: await getExternalsFromPackage({ inputPath: packagePath }, { packages }),\n dynamicImports,\n ignoredBundlerWarnings,\n bundlerCapabilities,\n unsafeCjsExportNames,\n dedupeAliases,\n };\n\n const bundleInternalResult = await bundle(bundleOptions, { config });\n bundleRequest.result = {\n ...bundleInternalResult,\n outputPath: bundleOptions.outputPath ?? outputPath,\n hash: cacheValidationHash,\n bundleSource: 'bundler',\n };\n\n if (bundlerCapabilities?.density) {\n // Get export maps that need to be written as stubs for density.\n // If there are density exports, write stubs for them.\n const densityResult = await writeStubForDensityEntries({\n options: {\n packageName,\n packagePath,\n result: bundleInternalResult,\n densityOptions: bundlerCapabilities.density,\n },\n context: { packages, config },\n });\n\n // Add errors and warnings to the appropriate arrays\n if (densityResult.errors.length > 0) {\n bundleRequest.result.errors = [...(bundleRequest.result.errors ?? []), ...densityResult.errors];\n }\n\n if (densityResult.warnings.length > 0) {\n bundleRequest.result.warnings = [...(bundleRequest.result.warnings ?? []), ...densityResult.warnings];\n }\n }\n }\n\n // Write the result to disk.\n await saveResultToCache(bundleRequest.result);\n }\n\n // If we should find required imports and exports per bundle\n if (shouldGetBundleInfo && !bundleRequest.result?.errors?.length && bundleRequest.result?.outputFiles?.length) {\n // Exports map is needed to find the bundle info per entry we intend to bundle.\n // Exports map is used instead of bundleRequest.entries since it is easier to use\n // because it contains the paths other packages use to import the entry and\n // the relative location of the bundled files.\n const exportsMap = await getExportsMap({ packagePath }, { packages, config });\n\n const bundleInfo = await getBundleInfo({\n outputPath,\n outputFiles: bundleRequest.result.outputFiles,\n exportsMap,\n isExternal,\n packagePath,\n });\n\n bundleRequest.result.info = bundleInfo;\n\n if (config.logBundleInfo) {\n // Write to cache for future use. (Ignore the promise result.)\n void writeJson(path.join(outputPath, 'bundle-info.json'), bundleInfo);\n }\n }\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import type { CloudpackConfig, PackageDefinitionsCache, TargetEnvironment } from '@ms-cloudpack/common-types';
2
+ /**
3
+ * Gets the entries map for a given package. An entries map is different from an exports map in that
4
+ * the keys are relative paths to where the output should live, rather than how the entry is imported.
5
+ * The data structure is used for bundler config; not for resolution of imports.
6
+ */
7
+ export declare function getEntriesMapFromPackage(options: {
8
+ inputPath: string;
9
+ targetEnvironment: TargetEnvironment;
10
+ }, context: {
11
+ packages: PackageDefinitionsCache;
12
+ config: Pick<CloudpackConfig, 'features'>;
13
+ }): Promise<Record<string, string>>;
14
+ //# sourceMappingURL=getEntriesMapFromPackage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getEntriesMapFromPackage.d.ts","sourceRoot":"","sources":["../../src/utilities/getEntriesMapFromPackage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAQ9G;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE;IACP,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,iBAAiB,CAAC;CACtC,EACD,OAAO,EAAE;IACP,QAAQ,EAAE,uBAAuB,CAAC;IAClC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;CAC3C,GACA,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAsCjC"}
@@ -0,0 +1,50 @@
1
+ import { flattenExportsMap, getExportsMap } from '@ms-cloudpack/package-utilities';
2
+ import { normalizeRelativePath } from '@ms-cloudpack/path-string-parsing';
3
+ import { intermediateToSourcePath, isExternalPackage } from '@ms-cloudpack/path-utilities';
4
+ import path from 'path';
5
+ import { isValidBundleEntry } from './isValidBundleEntry.js';
6
+ import { toNormalizedEntryKey } from './toNormalizedEntryKey.js';
7
+ /**
8
+ * Gets the entries map for a given package. An entries map is different from an exports map in that
9
+ * the keys are relative paths to where the output should live, rather than how the entry is imported.
10
+ * The data structure is used for bundler config; not for resolution of imports.
11
+ */
12
+ export async function getEntriesMapFromPackage(options, context) {
13
+ const { inputPath, targetEnvironment } = options;
14
+ const isInternal = !isExternalPackage(inputPath);
15
+ const exportsMap = await getExportsMap({ packagePath: inputPath }, context);
16
+ const flattenedMap = flattenExportsMap(exportsMap, {
17
+ conditions: `${targetEnvironment}-defaults`,
18
+ });
19
+ let sourceExportsMap;
20
+ // The flattened map values tell us what physical files will show up in the import map on the page. We use these
21
+ // as the keys for the entries map, which results in physical file output from the bundler.
22
+ // For internal packages, we want the values (the inputs to the each entry) to use source paths if available. To
23
+ // get these, we can either derive from exports map "source" entries, or if those are not available, we can attempt
24
+ // to derive source paths from intermediate paths.
25
+ if (isInternal) {
26
+ sourceExportsMap = flattenExportsMap(exportsMap, {
27
+ // Allow traversing into targetEnvironment conditions to find 'source' conditions
28
+ conditions: [targetEnvironment, 'source'],
29
+ requiredConditions: ['source'],
30
+ });
31
+ for (const [key, value] of Object.entries(flattenedMap)) {
32
+ if (!sourceExportsMap[key]) {
33
+ sourceExportsMap[key] = intermediateToSourcePath(value, inputPath) || value;
34
+ }
35
+ }
36
+ }
37
+ return Object.fromEntries(Object.entries(flattenedMap)
38
+ .filter(([, value]) => isValidBundleEntry(value))
39
+ .map(([key, value]) => [
40
+ toNormalizedEntryKey(value),
41
+ toNormalizedRelativePath(inputPath, sourceExportsMap?.[key] || value),
42
+ ]));
43
+ }
44
+ function toNormalizedRelativePath(inputPath, entry) {
45
+ if (path.isAbsolute(entry)) {
46
+ entry = path.relative(inputPath, entry);
47
+ }
48
+ return normalizeRelativePath(entry);
49
+ }
50
+ //# sourceMappingURL=getEntriesMapFromPackage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getEntriesMapFromPackage.js","sourceRoot":"","sources":["../../src/utilities/getEntriesMapFromPackage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC3F,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAGC,EACD,OAGC;IAED,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC;IACjD,MAAM,UAAU,GAAG,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,iBAAiB,CAAC,UAAU,EAAE;QACjD,UAAU,EAAE,GAAG,iBAAiB,WAAW;KAC5C,CAAC,CAAC;IACH,IAAI,gBAAwC,CAAC;IAE7C,gHAAgH;IAChH,2FAA2F;IAE3F,gHAAgH;IAChH,mHAAmH;IACnH,kDAAkD;IAElD,IAAI,UAAU,EAAE,CAAC;QACf,gBAAgB,GAAG,iBAAiB,CAAC,UAAU,EAAE;YAC/C,iFAAiF;YACjF,UAAU,EAAE,CAAC,iBAAiB,EAAE,QAAQ,CAAC;YACzC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;SAC/B,CAAC,CAAC;QAEH,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,gBAAgB,CAAC,GAAG,CAAC,GAAG,wBAAwB,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,KAAK,CAAC;YAC9E,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;SACzB,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;SAChD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QACrB,oBAAoB,CAAC,KAAK,CAAC;QAC3B,wBAAwB,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;KACtE,CAAC,CACL,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,SAAiB,EAAE,KAAa;IAChE,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC","sourcesContent":["import type { CloudpackConfig, PackageDefinitionsCache, TargetEnvironment } from '@ms-cloudpack/common-types';\nimport { flattenExportsMap, getExportsMap } from '@ms-cloudpack/package-utilities';\nimport { normalizeRelativePath } from '@ms-cloudpack/path-string-parsing';\nimport { intermediateToSourcePath, isExternalPackage } from '@ms-cloudpack/path-utilities';\nimport path from 'path';\nimport { isValidBundleEntry } from './isValidBundleEntry.js';\nimport { toNormalizedEntryKey } from './toNormalizedEntryKey.js';\n\n/**\n * Gets the entries map for a given package. An entries map is different from an exports map in that\n * the keys are relative paths to where the output should live, rather than how the entry is imported.\n * The data structure is used for bundler config; not for resolution of imports.\n */\nexport async function getEntriesMapFromPackage(\n options: {\n inputPath: string;\n targetEnvironment: TargetEnvironment;\n },\n context: {\n packages: PackageDefinitionsCache;\n config: Pick<CloudpackConfig, 'features'>;\n },\n): Promise<Record<string, string>> {\n const { inputPath, targetEnvironment } = options;\n const isInternal = !isExternalPackage(inputPath);\n const exportsMap = await getExportsMap({ packagePath: inputPath }, context);\n const flattenedMap = flattenExportsMap(exportsMap, {\n conditions: `${targetEnvironment}-defaults`,\n });\n let sourceExportsMap: Record<string, string>;\n\n // The flattened map values tell us what physical files will show up in the import map on the page. We use these\n // as the keys for the entries map, which results in physical file output from the bundler.\n\n // For internal packages, we want the values (the inputs to the each entry) to use source paths if available. To\n // get these, we can either derive from exports map \"source\" entries, or if those are not available, we can attempt\n // to derive source paths from intermediate paths.\n\n if (isInternal) {\n sourceExportsMap = flattenExportsMap(exportsMap, {\n // Allow traversing into targetEnvironment conditions to find 'source' conditions\n conditions: [targetEnvironment, 'source'],\n requiredConditions: ['source'],\n });\n\n for (const [key, value] of Object.entries(flattenedMap)) {\n if (!sourceExportsMap[key]) {\n sourceExportsMap[key] = intermediateToSourcePath(value, inputPath) || value;\n }\n }\n }\n\n return Object.fromEntries(\n Object.entries(flattenedMap)\n .filter(([, value]) => isValidBundleEntry(value))\n .map(([key, value]) => [\n toNormalizedEntryKey(value),\n toNormalizedRelativePath(inputPath, sourceExportsMap?.[key] || value),\n ]),\n );\n}\n\nfunction toNormalizedRelativePath(inputPath: string, entry: string): string {\n if (path.isAbsolute(entry)) {\n entry = path.relative(inputPath, entry);\n }\n\n return normalizeRelativePath(entry);\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import type { PackageDefinitionsCache } from '@ms-cloudpack/common-types';
2
+ /**
3
+ * Reads a package definition and derives a flat array of dependencies to externalize for bundling.
4
+ *
5
+ * To reduce the chances of accidentally bundling something that should be external, this includes
6
+ * the names of original dependencies of all types (prior to transforms), as well as any
7
+ * `includedDependencies` from config that were added by `createPackageSettingsTransform`.
8
+ */
9
+ export declare function getExternalsFromPackage(options: {
10
+ inputPath: string;
11
+ }, context: {
12
+ packages: PackageDefinitionsCache;
13
+ }): Promise<string[]>;
14
+ //# sourceMappingURL=getExternalsFromPackage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getExternalsFromPackage.d.ts","sourceRoot":"","sources":["../../src/utilities/getExternalsFromPackage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAG1E;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE;IACP,SAAS,EAAE,MAAM,CAAC;CACnB,EACD,OAAO,EAAE;IACP,QAAQ,EAAE,uBAAuB,CAAC;CACnC,GACA,OAAO,CAAC,MAAM,EAAE,CAAC,CAgBnB"}
@@ -0,0 +1,25 @@
1
+ import { getDependencies } from '@ms-cloudpack/package-utilities';
2
+ /**
3
+ * Reads a package definition and derives a flat array of dependencies to externalize for bundling.
4
+ *
5
+ * To reduce the chances of accidentally bundling something that should be external, this includes
6
+ * the names of original dependencies of all types (prior to transforms), as well as any
7
+ * `includedDependencies` from config that were added by `createPackageSettingsTransform`.
8
+ */
9
+ export async function getExternalsFromPackage(options, context) {
10
+ const { inputPath } = options;
11
+ const { packages } = context;
12
+ const transformedDefinition = await packages.get(inputPath);
13
+ const originalDefinition = await packages.get(inputPath, { disableTransforms: true });
14
+ return Object.keys({
15
+ // Use mostly original dependencies in case of removals by createPackageSettingsTransform.
16
+ ...getDependencies(originalDefinition, { includeAll: true }),
17
+ // peerDependenciesMeta names should be redundant with peerDependencies.
18
+ // But in rare cases (debug@4), it may incorrectly include deps that aren't listed elsewhere...
19
+ // Include them just in case, since we want to externalize as many things as possible.
20
+ ...originalDefinition.peerDependenciesMeta,
21
+ // Also use the transformed deps in case any includedDependencies weren't listed in orignal deps.
22
+ ...transformedDefinition.dependencies,
23
+ });
24
+ }
25
+ //# sourceMappingURL=getExternalsFromPackage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getExternalsFromPackage.js","sourceRoot":"","sources":["../../src/utilities/getExternalsFromPackage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAEC,EACD,OAEC;IAED,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC9B,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC7B,MAAM,qBAAqB,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC5D,MAAM,kBAAkB,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtF,OAAO,MAAM,CAAC,IAAI,CAAC;QACjB,0FAA0F;QAC1F,GAAG,eAAe,CAAC,kBAAkB,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC5D,wEAAwE;QACxE,+FAA+F;QAC/F,sFAAsF;QACtF,GAAG,kBAAkB,CAAC,oBAAoB;QAC1C,iGAAiG;QACjG,GAAG,qBAAqB,CAAC,YAAY;KACtC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { PackageDefinitionsCache } from '@ms-cloudpack/common-types';\nimport { getDependencies } from '@ms-cloudpack/package-utilities';\n\n/**\n * Reads a package definition and derives a flat array of dependencies to externalize for bundling.\n *\n * To reduce the chances of accidentally bundling something that should be external, this includes\n * the names of original dependencies of all types (prior to transforms), as well as any\n * `includedDependencies` from config that were added by `createPackageSettingsTransform`.\n */\nexport async function getExternalsFromPackage(\n options: {\n inputPath: string;\n },\n context: {\n packages: PackageDefinitionsCache;\n },\n): Promise<string[]> {\n const { inputPath } = options;\n const { packages } = context;\n const transformedDefinition = await packages.get(inputPath);\n const originalDefinition = await packages.get(inputPath, { disableTransforms: true });\n\n return Object.keys({\n // Use mostly original dependencies in case of removals by createPackageSettingsTransform.\n ...getDependencies(originalDefinition, { includeAll: true }),\n // peerDependenciesMeta names should be redundant with peerDependencies.\n // But in rare cases (debug@4), it may incorrectly include deps that aren't listed elsewhere...\n // Include them just in case, since we want to externalize as many things as possible.\n ...originalDefinition.peerDependenciesMeta,\n // Also use the transformed deps in case any includedDependencies weren't listed in orignal deps.\n ...transformedDefinition.dependencies,\n });\n}\n"]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Returns true if the file path is a valid bundle-able file extension. This is used to filter exports maps out
3
+ * to ensure we prevent trying to bundle things that bundlers don't support. We can bundle things like TS,
4
+ * JS, CSS, SCSS, JSON, and even text extensions like .txt and .html. These formats all will produce javascript
5
+ * modules. "Valid" is defined by what the bundler abstraction expects. In the future we may want this code to be
6
+ * provided by the plugin itself so that it owns what's "supported".
7
+ */
8
+ export declare function isValidBundleEntry(filePath: string): boolean;
9
+ //# sourceMappingURL=isValidBundleEntry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isValidBundleEntry.d.ts","sourceRoot":"","sources":["../../src/utilities/isValidBundleEntry.ts"],"names":[],"mappings":"AA0BA;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAS5D"}
@@ -0,0 +1,39 @@
1
+ import { sourceExtensions } from '@ms-cloudpack/path-utilities';
2
+ import path from 'path';
3
+ const resourceExtensions = [
4
+ '.bmp',
5
+ '.gif',
6
+ '.jpeg',
7
+ '.jpg',
8
+ '.mp3',
9
+ '.mp4',
10
+ '.otf',
11
+ '.png',
12
+ '.svg',
13
+ '.ttf',
14
+ '.webp',
15
+ '.woff',
16
+ '.woff2',
17
+ ];
18
+ const nonJsSourceExtensions = ['.json', '.css', '.scss', '.wasm'];
19
+ const textExtensions = ['.htm', '.html', '.txt'];
20
+ const supportedExtensions = [...resourceExtensions, ...sourceExtensions, ...nonJsSourceExtensions, ...textExtensions];
21
+ // Note: excluded extensions only need to contain things that are allowed by supportedExtensions but using
22
+ // an extended syntax that we don't want to support. For example, we want to support .ts files but not .d.ts.
23
+ const excludedExtensions = ['.d.ts'];
24
+ /**
25
+ * Returns true if the file path is a valid bundle-able file extension. This is used to filter exports maps out
26
+ * to ensure we prevent trying to bundle things that bundlers don't support. We can bundle things like TS,
27
+ * JS, CSS, SCSS, JSON, and even text extensions like .txt and .html. These formats all will produce javascript
28
+ * modules. "Valid" is defined by what the bundler abstraction expects. In the future we may want this code to be
29
+ * provided by the plugin itself so that it owns what's "supported".
30
+ */
31
+ export function isValidBundleEntry(filePath) {
32
+ const isSupported = supportedExtensions.includes(path.extname(filePath).toLowerCase());
33
+ const isExcluded = excludedExtensions.some((excludedExt) => filePath.endsWith(excludedExt)) ||
34
+ // Exclude files that start with an underscore, as they are typically partials or other non-entry files.
35
+ // https://sass-lang.com/documentation/at-rules/import/#partials
36
+ (path.basename(filePath).startsWith('_') && path.extname(filePath).toLowerCase() === '.scss');
37
+ return isSupported && !isExcluded;
38
+ }
39
+ //# sourceMappingURL=isValidBundleEntry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isValidBundleEntry.js","sourceRoot":"","sources":["../../src/utilities/isValidBundleEntry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,kBAAkB,GAAG;IACzB,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;CACT,CAAC;AACF,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAClE,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACjD,MAAM,mBAAmB,GAAG,CAAC,GAAG,kBAAkB,EAAE,GAAG,gBAAgB,EAAE,GAAG,qBAAqB,EAAE,GAAG,cAAc,CAAC,CAAC;AAEtH,0GAA0G;AAC1G,6GAA6G;AAC7G,MAAM,kBAAkB,GAAG,CAAC,OAAO,CAAC,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,MAAM,WAAW,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACvF,MAAM,UAAU,GACd,kBAAkB,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACxE,wGAAwG;QACxG,gEAAgE;QAChE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,CAAC;IAEhG,OAAO,WAAW,IAAI,CAAC,UAAU,CAAC;AACpC,CAAC","sourcesContent":["import { sourceExtensions } from '@ms-cloudpack/path-utilities';\nimport path from 'path';\n\nconst resourceExtensions = [\n '.bmp',\n '.gif',\n '.jpeg',\n '.jpg',\n '.mp3',\n '.mp4',\n '.otf',\n '.png',\n '.svg',\n '.ttf',\n '.webp',\n '.woff',\n '.woff2',\n];\nconst nonJsSourceExtensions = ['.json', '.css', '.scss', '.wasm'];\nconst textExtensions = ['.htm', '.html', '.txt'];\nconst supportedExtensions = [...resourceExtensions, ...sourceExtensions, ...nonJsSourceExtensions, ...textExtensions];\n\n// Note: excluded extensions only need to contain things that are allowed by supportedExtensions but using\n// an extended syntax that we don't want to support. For example, we want to support .ts files but not .d.ts.\nconst excludedExtensions = ['.d.ts'];\n\n/**\n * Returns true if the file path is a valid bundle-able file extension. This is used to filter exports maps out\n * to ensure we prevent trying to bundle things that bundlers don't support. We can bundle things like TS,\n * JS, CSS, SCSS, JSON, and even text extensions like .txt and .html. These formats all will produce javascript\n * modules. \"Valid\" is defined by what the bundler abstraction expects. In the future we may want this code to be\n * provided by the plugin itself so that it owns what's \"supported\".\n */\nexport function isValidBundleEntry(filePath: string): boolean {\n const isSupported = supportedExtensions.includes(path.extname(filePath).toLowerCase());\n const isExcluded =\n excludedExtensions.some((excludedExt) => filePath.endsWith(excludedExt)) ||\n // Exclude files that start with an underscore, as they are typically partials or other non-entry files.\n // https://sass-lang.com/documentation/at-rules/import/#partials\n (path.basename(filePath).startsWith('_') && path.extname(filePath).toLowerCase() === '.scss');\n\n return isSupported && !isExcluded;\n}\n"]}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * When we derive keys, we want to preserve unknown script extensions. For others, remove them as the bundler
3
+ * will add back `'.js'` for us in the output.
4
+ */
5
+ export declare function toNormalizedEntryKey(entry: string): string;
6
+ //# sourceMappingURL=toNormalizedEntryKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toNormalizedEntryKey.d.ts","sourceRoot":"","sources":["../../src/utilities/toNormalizedEntryKey.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO1D"}
@@ -0,0 +1,14 @@
1
+ import { sourceExtensions } from '@ms-cloudpack/path-utilities';
2
+ import path from 'path';
3
+ /**
4
+ * When we derive keys, we want to preserve unknown script extensions. For others, remove them as the bundler
5
+ * will add back `'.js'` for us in the output.
6
+ */
7
+ export function toNormalizedEntryKey(entry) {
8
+ const extension = path.extname(entry);
9
+ if (sourceExtensions.includes(extension)) {
10
+ return entry.slice(0, -extension.length);
11
+ }
12
+ return entry;
13
+ }
14
+ //# sourceMappingURL=toNormalizedEntryKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toNormalizedEntryKey.js","sourceRoot":"","sources":["../../src/utilities/toNormalizedEntryKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import { sourceExtensions } from '@ms-cloudpack/path-utilities';\nimport path from 'path';\n\n/**\n * When we derive keys, we want to preserve unknown script extensions. For others, remove them as the bundler\n * will add back `'.js'` for us in the output.\n */\nexport function toNormalizedEntryKey(entry: string): string {\n const extension = path.extname(entry);\n if (sourceExtensions.includes(extension)) {\n return entry.slice(0, -extension.length);\n }\n\n return entry;\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { generateESMStubFromExports } from '@ms-cloudpack/esm-stub-utilities';
2
2
  import { writeFile } from 'fs/promises';
3
3
  import path from 'path';
4
- import { toNormalizedEntryKey } from '@ms-cloudpack/bundler';
4
+ import { toNormalizedEntryKey } from './toNormalizedEntryKey.js';
5
5
  import { flattenExportsMap, getExportsMap } from '@ms-cloudpack/package-utilities';
6
6
  import { slash } from '@ms-cloudpack/path-string-parsing';
7
7
  const errorSource = 'density-entry-stub';
@@ -1 +1 @@
1
- {"version":3,"file":"writeStubForDensityEntries.js","sourceRoot":"","sources":["../../src/utilities/writeStubForDensityEntries.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n BundleMessage,\n BundlerCapabilitiesOptions,\n BundlerResult,\n CloudpackConfig,\n PackageDefinitionsCache,\n} from '@ms-cloudpack/common-types';\nimport { generateESMStubFromExports } from '@ms-cloudpack/esm-stub-utilities';\nimport { writeFile } from 'fs/promises';\nimport path from 'path';\nimport { toNormalizedEntryKey } from '@ms-cloudpack/bundler';\nimport { flattenExportsMap, getExportsMap } from '@ms-cloudpack/package-utilities';\nimport { slash } from '@ms-cloudpack/path-string-parsing';\n\nconst errorSource = 'density-entry-stub';\nexport async function writeStubForDensityEntries(params: {\n options: {\n packageName: string;\n packagePath: string;\n result: BundlerResult;\n densityOptions: NonNullable<BundlerCapabilitiesOptions['density']>;\n };\n context: {\n packages: PackageDefinitionsCache;\n config: CloudpackConfig;\n };\n}): Promise<{ errors: BundleMessage[]; warnings: BundleMessage[] }> {\n const { options, context } = params;\n const { packagePath, packageName, result } = options;\n const exportsMap = await getExportsMap({ packagePath }, context);\n const densityCondition = ['density'];\n const densityExportsMap = flattenExportsMap(exportsMap, {\n requiredConditions: densityCondition,\n conditions: densityCondition,\n });\n\n if (Object.keys(densityExportsMap).length === 0 && options.densityOptions === true) {\n return { errors: [], warnings: [] };\n }\n\n if (!result.outputFiles) {\n return {\n errors: [\n {\n source: errorSource,\n text: 'No output files found in the result.',\n },\n ],\n warnings: [],\n };\n }\n\n if (!result.outputPath) {\n return {\n errors: [\n {\n source: errorSource,\n text: 'No output path found in the result.',\n },\n ],\n warnings: [],\n };\n }\n\n const errors: BundleMessage[] = [];\n const warnings: BundleMessage[] = [];\n\n const entriesToStub = Object.entries(densityExportsMap);\n\n if (typeof options.densityOptions === 'object' && Array.isArray(options.densityOptions.entries)) {\n // Add entries that are in the options list\n const flattenedExportsMap = flattenExportsMap(exportsMap);\n\n for (const key of options.densityOptions.entries) {\n const normalizedKey = toNormalizedEntryKey(key);\n if (!flattenedExportsMap[normalizedKey]) {\n warnings.push({\n text: `Entry \"${key}\" from density capability not found in package exports map. Available entries: ${Object.keys(flattenedExportsMap).join(', ')}`,\n source: errorSource,\n });\n continue;\n }\n\n if (densityExportsMap[normalizedKey]) {\n warnings.push({\n text: `Entry \"${key}\" from density capability already has a \"density\" condition in exports map, skipping custom entry`,\n source: errorSource,\n });\n continue;\n }\n\n // Automatically detect the correct extension from the original export\n const originalPath = flattenedExportsMap[normalizedKey];\n const normalizedPath = toNormalizedEntryKey(originalPath);\n const extension = path.extname(originalPath) || '.js'; // Fallback to .js if no extension\n const densityPath = `${normalizedPath}${extension}`;\n\n entriesToStub.push([normalizedKey, densityPath]);\n }\n }\n\n // Generate density stubs for each entry\n for (const [key, value] of entriesToStub) {\n try {\n const entryPath = toNormalizedEntryKey(value);\n const outputFile = result.outputFiles.find((o) => o.outputPath === value);\n if (!outputFile) {\n const availableOutputs = result.outputFiles.map((f) => f.outputPath).join(', ');\n errors.push({\n text: `No output file found for density entry \"${key}\" (expected: ${entryPath}). Available output files: ${availableOutputs}. This might indicate a bundler configuration issue or the entry was not processed correctly.`,\n source: errorSource,\n });\n continue;\n }\n\n const moduleId = key === '.' ? options.packageName : path.join(packageName, entryPath);\n\n // generate new stab file for the external entry by using output.exports\n // found the output file. This file need to be replaced.\n const stub = generateESMStubFromExports({\n export: {\n type: outputFile.exports ? 'object' : 'other',\n // These exports are not technically correct since they might include a default export from the esm bundle\n // but density returns packages without a default.\n keys: outputFile.exports?.filter((e) => e !== 'default') ?? [],\n },\n importStatement: `const moduleExport = requireDensityModule(\"${slash(moduleId)}\");`,\n });\n\n await writeFile(path.join(result.outputPath, outputFile.outputPath), stub);\n } catch (e) {\n errors.push({\n text: `Failed to create density stub for entry \"${key}\": ${e instanceof Error ? e.message : String(e)}.`,\n source: errorSource,\n });\n }\n }\n\n return { errors, warnings };\n}\n"]}
1
+ {"version":3,"file":"writeStubForDensityEntries.js","sourceRoot":"","sources":["../../src/utilities/writeStubForDensityEntries.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n BundleMessage,\n BundlerCapabilitiesOptions,\n BundlerResult,\n CloudpackConfig,\n PackageDefinitionsCache,\n} from '@ms-cloudpack/common-types';\nimport { generateESMStubFromExports } from '@ms-cloudpack/esm-stub-utilities';\nimport { writeFile } from 'fs/promises';\nimport path from 'path';\nimport { toNormalizedEntryKey } from './toNormalizedEntryKey.js';\nimport { flattenExportsMap, getExportsMap } from '@ms-cloudpack/package-utilities';\nimport { slash } from '@ms-cloudpack/path-string-parsing';\n\nconst errorSource = 'density-entry-stub';\nexport async function writeStubForDensityEntries(params: {\n options: {\n packageName: string;\n packagePath: string;\n result: BundlerResult;\n densityOptions: NonNullable<BundlerCapabilitiesOptions['density']>;\n };\n context: {\n packages: PackageDefinitionsCache;\n config: CloudpackConfig;\n };\n}): Promise<{ errors: BundleMessage[]; warnings: BundleMessage[] }> {\n const { options, context } = params;\n const { packagePath, packageName, result } = options;\n const exportsMap = await getExportsMap({ packagePath }, context);\n const densityCondition = ['density'];\n const densityExportsMap = flattenExportsMap(exportsMap, {\n requiredConditions: densityCondition,\n conditions: densityCondition,\n });\n\n if (Object.keys(densityExportsMap).length === 0 && options.densityOptions === true) {\n return { errors: [], warnings: [] };\n }\n\n if (!result.outputFiles) {\n return {\n errors: [\n {\n source: errorSource,\n text: 'No output files found in the result.',\n },\n ],\n warnings: [],\n };\n }\n\n if (!result.outputPath) {\n return {\n errors: [\n {\n source: errorSource,\n text: 'No output path found in the result.',\n },\n ],\n warnings: [],\n };\n }\n\n const errors: BundleMessage[] = [];\n const warnings: BundleMessage[] = [];\n\n const entriesToStub = Object.entries(densityExportsMap);\n\n if (typeof options.densityOptions === 'object' && Array.isArray(options.densityOptions.entries)) {\n // Add entries that are in the options list\n const flattenedExportsMap = flattenExportsMap(exportsMap);\n\n for (const key of options.densityOptions.entries) {\n const normalizedKey = toNormalizedEntryKey(key);\n if (!flattenedExportsMap[normalizedKey]) {\n warnings.push({\n text: `Entry \"${key}\" from density capability not found in package exports map. Available entries: ${Object.keys(flattenedExportsMap).join(', ')}`,\n source: errorSource,\n });\n continue;\n }\n\n if (densityExportsMap[normalizedKey]) {\n warnings.push({\n text: `Entry \"${key}\" from density capability already has a \"density\" condition in exports map, skipping custom entry`,\n source: errorSource,\n });\n continue;\n }\n\n // Automatically detect the correct extension from the original export\n const originalPath = flattenedExportsMap[normalizedKey];\n const normalizedPath = toNormalizedEntryKey(originalPath);\n const extension = path.extname(originalPath) || '.js'; // Fallback to .js if no extension\n const densityPath = `${normalizedPath}${extension}`;\n\n entriesToStub.push([normalizedKey, densityPath]);\n }\n }\n\n // Generate density stubs for each entry\n for (const [key, value] of entriesToStub) {\n try {\n const entryPath = toNormalizedEntryKey(value);\n const outputFile = result.outputFiles.find((o) => o.outputPath === value);\n if (!outputFile) {\n const availableOutputs = result.outputFiles.map((f) => f.outputPath).join(', ');\n errors.push({\n text: `No output file found for density entry \"${key}\" (expected: ${entryPath}). Available output files: ${availableOutputs}. This might indicate a bundler configuration issue or the entry was not processed correctly.`,\n source: errorSource,\n });\n continue;\n }\n\n const moduleId = key === '.' ? options.packageName : path.join(packageName, entryPath);\n\n // generate new stab file for the external entry by using output.exports\n // found the output file. This file need to be replaced.\n const stub = generateESMStubFromExports({\n export: {\n type: outputFile.exports ? 'object' : 'other',\n // These exports are not technically correct since they might include a default export from the esm bundle\n // but density returns packages without a default.\n keys: outputFile.exports?.filter((e) => e !== 'default') ?? [],\n },\n importStatement: `const moduleExport = requireDensityModule(\"${slash(moduleId)}\");`,\n });\n\n await writeFile(path.join(result.outputPath, outputFile.outputPath), stub);\n } catch (e) {\n errors.push({\n text: `Failed to create density stub for entry \"${key}\": ${e instanceof Error ? e.message : String(e)}.`,\n source: errorSource,\n });\n }\n }\n\n return { errors, warnings };\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/api-server",
3
- "version": "0.65.9",
3
+ "version": "0.65.10",
4
4
  "description": "Internal API server for Cloudpack",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -35,23 +35,23 @@
35
35
  "test": "cloudpack-scripts test"
36
36
  },
37
37
  "dependencies": {
38
- "@ms-cloudpack/bundler": "^0.26.18",
38
+ "@ms-cloudpack/bundler": "^0.27.0",
39
39
  "@ms-cloudpack/common-types": "^0.33.0",
40
- "@ms-cloudpack/config": "^0.38.19",
41
- "@ms-cloudpack/create-express-app": "^1.10.64",
40
+ "@ms-cloudpack/config": "^0.38.20",
41
+ "@ms-cloudpack/create-express-app": "^1.10.65",
42
42
  "@ms-cloudpack/data-bus": "^0.5.0",
43
43
  "@ms-cloudpack/environment": "^0.1.1",
44
- "@ms-cloudpack/esm-stub-utilities": "^0.15.33",
45
- "@ms-cloudpack/file-watcher": "^0.4.22",
46
- "@ms-cloudpack/import-map": "^0.10.60",
44
+ "@ms-cloudpack/esm-stub-utilities": "^0.15.34",
45
+ "@ms-cloudpack/file-watcher": "^0.4.23",
46
+ "@ms-cloudpack/import-map": "^0.10.61",
47
47
  "@ms-cloudpack/json-utilities": "^0.1.11",
48
- "@ms-cloudpack/package-hashes": "^0.8.43",
49
- "@ms-cloudpack/package-utilities": "^13.2.3",
48
+ "@ms-cloudpack/package-hashes": "^0.8.44",
49
+ "@ms-cloudpack/package-utilities": "^13.2.4",
50
50
  "@ms-cloudpack/path-string-parsing": "^1.2.7",
51
- "@ms-cloudpack/path-utilities": "^3.2.0",
52
- "@ms-cloudpack/remote-cache": "^0.11.55",
51
+ "@ms-cloudpack/path-utilities": "^3.2.1",
52
+ "@ms-cloudpack/remote-cache": "^0.11.56",
53
53
  "@ms-cloudpack/task-reporter": "^0.17.4",
54
- "@ms-cloudpack/telemetry": "^0.11.55",
54
+ "@ms-cloudpack/telemetry": "^0.11.56",
55
55
  "@trpc/client": "^11.1.1",
56
56
  "@trpc/server": "^11.1.1",
57
57
  "cors": "^2.8.5",