@ms-cloudpack/api-server 0.66.2 → 0.66.3
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/common/createSession.d.ts +10 -1
- package/lib/common/createSession.d.ts.map +1 -1
- package/lib/common/createSession.js +36 -9
- package/lib/common/createSession.js.map +1 -1
- package/lib/utilities/createResolveMapTask.d.ts +3 -3
- package/lib/utilities/createResolveMapTask.d.ts.map +1 -1
- package/lib/utilities/createResolveMapTask.js +30 -12
- package/lib/utilities/createResolveMapTask.js.map +1 -1
- package/package.json +9 -9
|
@@ -16,8 +16,17 @@ export interface CreateSessionOptions {
|
|
|
16
16
|
*/
|
|
17
17
|
cachePath?: string;
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
19
|
+
* Only resolve `inlinedDependencies` (and their dependencies) of the package at `config.appPath`.
|
|
20
|
+
* The returned resolve map will only contain the package at `config.appPath` plus these deps.
|
|
21
|
+
*
|
|
20
22
|
* This should only be used for the `bundle` command when it's bundling the current package.
|
|
23
|
+
* The `inlinedDependencies` still need to be included so that hashing considers them,
|
|
24
|
+
* in case the result of bundling a single package needs to be reused later by start.
|
|
25
|
+
*/
|
|
26
|
+
onlyInlinedDependencies?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Skip full dependency resolution (`resolveMap` will only contain the package at `config.appPath`).
|
|
29
|
+
* This is only relevant for special cases with link when the resolve map will be added later.
|
|
21
30
|
*/
|
|
22
31
|
skipResolveDependencies?: boolean;
|
|
23
32
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSession.d.ts","sourceRoot":"","sources":["../../src/common/createSession.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAc,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAMnG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAKnD,MAAM,MAAM,eAAe,GAAG;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"createSession.d.ts","sourceRoot":"","sources":["../../src/common/createSession.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAc,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAMnG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAKnD,MAAM,MAAM,eAAe,GAAG;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,eAAe,CAAC;IAExB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;OAOG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,GAAG,iBAAiB,CAAC,GAClE,OAAO,CAAC,OAAO,CAAC,CAyJlB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getCachePath, getLocalCachePath } from '@ms-cloudpack/config';
|
|
1
|
+
import { getCachePath, getLocalCachePath, getPackageSettings } from '@ms-cloudpack/config';
|
|
2
2
|
import { readJson, writeJson, writeJsonSync } from '@ms-cloudpack/json-utilities';
|
|
3
3
|
import fs from 'fs';
|
|
4
4
|
import path from 'path';
|
|
@@ -6,12 +6,41 @@ import { createResolveMapTask } from '../utilities/createResolveMapTask.js';
|
|
|
6
6
|
import { randomUUID } from 'crypto';
|
|
7
7
|
import { getDedupeAliases } from '../utilities/getDedupeAliases.js';
|
|
8
8
|
export async function createSession(options, context) {
|
|
9
|
-
const { config, additionalPaths,
|
|
9
|
+
const { config, additionalPaths, onlyInlinedDependencies } = options;
|
|
10
10
|
const { appPath } = config;
|
|
11
11
|
const projectName = path.basename(appPath);
|
|
12
12
|
const id = randomUUID();
|
|
13
|
+
let skipResolveDependencies = options.skipResolveDependencies;
|
|
14
|
+
let onlyResolveDependencies;
|
|
15
|
+
if (onlyInlinedDependencies) {
|
|
16
|
+
// Get the list of inlined dependencies to resolve, but omit anything in excludedDependencies to
|
|
17
|
+
// prevent hashing differences. (We can't use the cached package settings for excludedDependencies.)
|
|
18
|
+
// Related: https://github.com/microsoft/cloudpack/issues/3253 (this logic doesn't handle the tokens)
|
|
19
|
+
const definition = await context.packages.get(appPath);
|
|
20
|
+
const { userPackageSettings, generatedPackageSettings } = getPackageSettings({
|
|
21
|
+
name: definition.name,
|
|
22
|
+
version: definition.version,
|
|
23
|
+
userPackageSettings: config.packageSettings,
|
|
24
|
+
generatedPackageSettings: config.generated.packageSettings,
|
|
25
|
+
});
|
|
26
|
+
const excludeDeps = [
|
|
27
|
+
...(userPackageSettings?.excludedDependencies || []),
|
|
28
|
+
...(generatedPackageSettings?.excludedDependencies || []),
|
|
29
|
+
];
|
|
30
|
+
onlyResolveDependencies = definition.cloudpack?.inlinedDependencies?.filter((dep) => !excludeDeps.includes(dep));
|
|
31
|
+
if (!onlyResolveDependencies?.length) {
|
|
32
|
+
// If there are no inlined dependencies, we can skip resolution entirely.
|
|
33
|
+
skipResolveDependencies = true;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
13
36
|
let resolveMap = options.resolveMap ||
|
|
14
|
-
(await createResolveMapTask({
|
|
37
|
+
(await createResolveMapTask({
|
|
38
|
+
appPath,
|
|
39
|
+
additionalPaths,
|
|
40
|
+
onlyResolveDependencies,
|
|
41
|
+
skipResolveDependencies,
|
|
42
|
+
moduleResolutionConfig: config.resolve,
|
|
43
|
+
}, context));
|
|
15
44
|
let importMap = undefined;
|
|
16
45
|
let dedupeAliases = getDedupeAliases({ resolveMap, dedupe: config.resolve?.dedupe });
|
|
17
46
|
const versionsPath = _getSessionVersionsPath(appPath);
|
|
@@ -65,8 +94,8 @@ export async function createSession(options, context) {
|
|
|
65
94
|
packageImportPaths: new Map(),
|
|
66
95
|
linkedPaths,
|
|
67
96
|
addLinkedPath: async (linkedPath) => {
|
|
68
|
-
if (skipResolveDependencies) {
|
|
69
|
-
throw new Error('Cannot use `addLinkedPath` with `skipResolveDependencies`');
|
|
97
|
+
if (skipResolveDependencies || onlyInlinedDependencies) {
|
|
98
|
+
throw new Error('Cannot use `addLinkedPath` with `skipResolveDependencies` or `onlyInlinedDependencies`');
|
|
70
99
|
}
|
|
71
100
|
if (linkedPaths.some((p) => p.path === linkedPath.path)) {
|
|
72
101
|
return { resolveMap, linkedPaths };
|
|
@@ -76,15 +105,14 @@ export async function createSession(options, context) {
|
|
|
76
105
|
appPath,
|
|
77
106
|
additionalPaths,
|
|
78
107
|
linkedPaths,
|
|
79
|
-
skipResolveDependencies: false,
|
|
80
108
|
moduleResolutionConfig: config.resolve,
|
|
81
109
|
}, context);
|
|
82
110
|
dedupeAliases = getDedupeAliases({ resolveMap, dedupe: config.resolve?.dedupe });
|
|
83
111
|
return { resolveMap, linkedPaths };
|
|
84
112
|
},
|
|
85
113
|
removeLinkedPath: async (linkedPath) => {
|
|
86
|
-
if (skipResolveDependencies) {
|
|
87
|
-
throw new Error('Cannot use `removeLinkedPath` with `skipResolveDependencies`');
|
|
114
|
+
if (skipResolveDependencies || onlyInlinedDependencies) {
|
|
115
|
+
throw new Error('Cannot use `removeLinkedPath` with `skipResolveDependencies` or `onlyInlinedDependencies`');
|
|
88
116
|
}
|
|
89
117
|
const index = linkedPaths.findIndex((p) => p.path === linkedPath.path);
|
|
90
118
|
if (index === -1) {
|
|
@@ -95,7 +123,6 @@ export async function createSession(options, context) {
|
|
|
95
123
|
appPath,
|
|
96
124
|
additionalPaths,
|
|
97
125
|
linkedPaths,
|
|
98
|
-
skipResolveDependencies: false,
|
|
99
126
|
moduleResolutionConfig: config.resolve,
|
|
100
127
|
}, context);
|
|
101
128
|
dedupeAliases = getDedupeAliases({ resolveMap, dedupe: config.resolve?.dedupe });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSession.js","sourceRoot":"","sources":["../../src/common/createSession.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CloudpackConfig, Session, LinkedPath, ResolveMap } from '@ms-cloudpack/common-types';\nimport { getCachePath, getLocalCachePath } from '@ms-cloudpack/config';\nimport type { ImportMap } from '@ms-cloudpack/import-map';\nimport { readJson, writeJson, writeJsonSync } from '@ms-cloudpack/json-utilities';\nimport fs from 'fs';\nimport path from 'path';\nimport type { Context } from '../types/Context.js';\nimport { createResolveMapTask } from '../utilities/createResolveMapTask.js';\nimport { randomUUID } from 'crypto';\nimport { getDedupeAliases } from '../utilities/getDedupeAliases.js';\n\nexport type SessionVersions = {\n sessionVersion: number;\n targetVersions: Record<string, number>;\n};\n\nexport interface CreateSessionOptions {\n config: CloudpackConfig;\n /**\n * Any additional packages whose dependencies we want to resolve, such as the overlay.\n */\n additionalPaths?: string[];\n /**\n * Custom cache folder for the session.\n * If not provided, will use the one from user preferences if set, or the default cache path.\n */\n cachePath?: string;\n /**\n * Skip full dependency resolution (`resolveMap` will only contain the package at `config.appPath`).\n * This should only be used for the `bundle` command when it's bundling the current package.\n */\n skipResolveDependencies?: boolean;\n /**\n * Mock resolve map for testing\n */\n resolveMap?: ResolveMap;\n}\n\nexport async function createSession(\n options: CreateSessionOptions,\n context: Pick<Context, 'reporter' | 'packages' | 'telemetryClient'>,\n): Promise<Session> {\n const { config, additionalPaths, skipResolveDependencies } = options;\n const { appPath } = config;\n\n const projectName = path.basename(appPath);\n const id = randomUUID();\n let resolveMap =\n options.resolveMap ||\n (await createResolveMapTask(\n { appPath, additionalPaths, skipResolveDependencies, moduleResolutionConfig: config.resolve },\n context,\n ));\n\n let importMap: ImportMap | undefined = undefined;\n let dedupeAliases = getDedupeAliases({ resolveMap, dedupe: config.resolve?.dedupe });\n\n const versionsPath = _getSessionVersionsPath(appPath);\n const previousVersions = await readJson<SessionVersions>(versionsPath);\n const versions = previousVersions || { sessionVersion: 0, targetVersions: {} };\n if (!previousVersions) {\n await writeJson(versionsPath, versions);\n }\n\n // In the future, we might put all the user preferences in the session, but right now the only\n // preference is cachePath, so we just read that and save the custom or default value.\n const cachePath = await getCachePath(options.cachePath);\n\n const linkedPaths: LinkedPath[] = [];\n\n return {\n id,\n config,\n projectName,\n get resolveMap() {\n return resolveMap;\n },\n set resolveMap(newResolveMap) {\n // If the resolve map changes, clear the import map\n // so that it is regenerated on the next request\n importMap = undefined;\n resolveMap = newResolveMap;\n dedupeAliases = getDedupeAliases({ resolveMap: newResolveMap, dedupe: config.resolve?.dedupe });\n },\n sequence: 0,\n urls: {},\n targetVersions: versions.targetVersions,\n get sessionVersion() {\n return versions.sessionVersion;\n },\n incrementSessionVersion: () => {\n versions.sessionVersion++;\n importMap = undefined;\n // Write the new session version to the file\n fs.writeFileSync(versionsPath, JSON.stringify(versions, null, 2));\n },\n incrementTargetVersion: (inputPath: string) => {\n versions.targetVersions[inputPath] ??= 0;\n versions.targetVersions[inputPath]++;\n importMap = undefined;\n writeJsonSync(versionsPath, versions);\n },\n get importMap() {\n return importMap;\n },\n set importMap(newImportMap) {\n importMap = newImportMap;\n },\n packageImportPaths: new Map(),\n linkedPaths,\n addLinkedPath: async (linkedPath: LinkedPath) => {\n if (skipResolveDependencies) {\n throw new Error('Cannot use `addLinkedPath` with `skipResolveDependencies`');\n }\n\n if (linkedPaths.some((p) => p.path === linkedPath.path)) {\n return { resolveMap, linkedPaths };\n }\n\n linkedPaths.push(linkedPath);\n resolveMap = await createResolveMapTask(\n {\n appPath,\n additionalPaths,\n linkedPaths,\n skipResolveDependencies: false,\n moduleResolutionConfig: config.resolve,\n },\n context,\n );\n dedupeAliases = getDedupeAliases({ resolveMap, dedupe: config.resolve?.dedupe });\n\n return { resolveMap, linkedPaths };\n },\n removeLinkedPath: async (linkedPath: LinkedPath) => {\n if (skipResolveDependencies) {\n throw new Error('Cannot use `removeLinkedPath` with `skipResolveDependencies`');\n }\n\n const index = linkedPaths.findIndex((p) => p.path === linkedPath.path);\n if (index === -1) {\n return { resolveMap, linkedPaths };\n }\n\n linkedPaths.splice(index, 1);\n resolveMap = await createResolveMapTask(\n {\n appPath,\n additionalPaths,\n linkedPaths,\n skipResolveDependencies: false,\n moduleResolutionConfig: config.resolve,\n },\n context,\n );\n dedupeAliases = getDedupeAliases({ resolveMap, dedupe: config.resolve?.dedupe });\n\n return { resolveMap, linkedPaths };\n },\n cachePath,\n get dedupeAliases() {\n return dedupeAliases;\n },\n };\n}\n\n/**\n * Get `sessionVersions.json` path. Exported for the test.\n * @internal\n */\nexport function _getSessionVersionsPath(appPath: string): string {\n return path.join(getLocalCachePath(appPath), 'sessionVersions.json');\n}\n"]}
|
|
1
|
+
{"version":3,"file":"createSession.js","sourceRoot":"","sources":["../../src/common/createSession.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CloudpackConfig, Session, LinkedPath, ResolveMap } from '@ms-cloudpack/common-types';\nimport { getCachePath, getLocalCachePath, getPackageSettings } from '@ms-cloudpack/config';\nimport type { ImportMap } from '@ms-cloudpack/import-map';\nimport { readJson, writeJson, writeJsonSync } from '@ms-cloudpack/json-utilities';\nimport fs from 'fs';\nimport path from 'path';\nimport type { Context } from '../types/Context.js';\nimport { createResolveMapTask } from '../utilities/createResolveMapTask.js';\nimport { randomUUID } from 'crypto';\nimport { getDedupeAliases } from '../utilities/getDedupeAliases.js';\n\nexport type SessionVersions = {\n sessionVersion: number;\n targetVersions: Record<string, number>;\n};\n\nexport interface CreateSessionOptions {\n config: CloudpackConfig;\n\n /**\n * Any additional packages whose dependencies we want to resolve, such as the overlay.\n */\n additionalPaths?: string[];\n\n /**\n * Custom cache folder for the session.\n * If not provided, will use the one from user preferences if set, or the default cache path.\n */\n cachePath?: string;\n\n /**\n * Only resolve `inlinedDependencies` (and their dependencies) of the package at `config.appPath`.\n * The returned resolve map will only contain the package at `config.appPath` plus these deps.\n *\n * This should only be used for the `bundle` command when it's bundling the current package.\n * The `inlinedDependencies` still need to be included so that hashing considers them,\n * in case the result of bundling a single package needs to be reused later by start.\n */\n onlyInlinedDependencies?: boolean;\n\n /**\n * Skip full dependency resolution (`resolveMap` will only contain the package at `config.appPath`).\n * This is only relevant for special cases with link when the resolve map will be added later.\n */\n skipResolveDependencies?: boolean;\n\n /**\n * Mock resolve map for testing\n */\n resolveMap?: ResolveMap;\n}\n\nexport async function createSession(\n options: CreateSessionOptions,\n context: Pick<Context, 'reporter' | 'packages' | 'telemetryClient'>,\n): Promise<Session> {\n const { config, additionalPaths, onlyInlinedDependencies } = options;\n const { appPath } = config;\n\n const projectName = path.basename(appPath);\n const id = randomUUID();\n\n let skipResolveDependencies = options.skipResolveDependencies;\n let onlyResolveDependencies: string[] | undefined;\n if (onlyInlinedDependencies) {\n // Get the list of inlined dependencies to resolve, but omit anything in excludedDependencies to\n // prevent hashing differences. (We can't use the cached package settings for excludedDependencies.)\n // Related: https://github.com/microsoft/cloudpack/issues/3253 (this logic doesn't handle the tokens)\n const definition = await context.packages.get(appPath);\n const { userPackageSettings, generatedPackageSettings } = getPackageSettings({\n name: definition.name,\n version: definition.version,\n userPackageSettings: config.packageSettings,\n generatedPackageSettings: config.generated.packageSettings,\n });\n const excludeDeps = [\n ...(userPackageSettings?.excludedDependencies || []),\n ...(generatedPackageSettings?.excludedDependencies || []),\n ];\n onlyResolveDependencies = definition.cloudpack?.inlinedDependencies?.filter((dep) => !excludeDeps.includes(dep));\n\n if (!onlyResolveDependencies?.length) {\n // If there are no inlined dependencies, we can skip resolution entirely.\n skipResolveDependencies = true;\n }\n }\n\n let resolveMap =\n options.resolveMap ||\n (await createResolveMapTask(\n {\n appPath,\n additionalPaths,\n onlyResolveDependencies,\n skipResolveDependencies,\n moduleResolutionConfig: config.resolve,\n },\n context,\n ));\n\n let importMap: ImportMap | undefined = undefined;\n let dedupeAliases = getDedupeAliases({ resolveMap, dedupe: config.resolve?.dedupe });\n\n const versionsPath = _getSessionVersionsPath(appPath);\n const previousVersions = await readJson<SessionVersions>(versionsPath);\n const versions = previousVersions || { sessionVersion: 0, targetVersions: {} };\n if (!previousVersions) {\n await writeJson(versionsPath, versions);\n }\n\n // In the future, we might put all the user preferences in the session, but right now the only\n // preference is cachePath, so we just read that and save the custom or default value.\n const cachePath = await getCachePath(options.cachePath);\n\n const linkedPaths: LinkedPath[] = [];\n\n return {\n id,\n config,\n projectName,\n get resolveMap() {\n return resolveMap;\n },\n set resolveMap(newResolveMap) {\n // If the resolve map changes, clear the import map\n // so that it is regenerated on the next request\n importMap = undefined;\n resolveMap = newResolveMap;\n dedupeAliases = getDedupeAliases({ resolveMap: newResolveMap, dedupe: config.resolve?.dedupe });\n },\n sequence: 0,\n urls: {},\n targetVersions: versions.targetVersions,\n get sessionVersion() {\n return versions.sessionVersion;\n },\n incrementSessionVersion: () => {\n versions.sessionVersion++;\n importMap = undefined;\n // Write the new session version to the file\n fs.writeFileSync(versionsPath, JSON.stringify(versions, null, 2));\n },\n incrementTargetVersion: (inputPath: string) => {\n versions.targetVersions[inputPath] ??= 0;\n versions.targetVersions[inputPath]++;\n importMap = undefined;\n writeJsonSync(versionsPath, versions);\n },\n get importMap() {\n return importMap;\n },\n set importMap(newImportMap) {\n importMap = newImportMap;\n },\n packageImportPaths: new Map(),\n linkedPaths,\n addLinkedPath: async (linkedPath: LinkedPath) => {\n if (skipResolveDependencies || onlyInlinedDependencies) {\n throw new Error('Cannot use `addLinkedPath` with `skipResolveDependencies` or `onlyInlinedDependencies`');\n }\n\n if (linkedPaths.some((p) => p.path === linkedPath.path)) {\n return { resolveMap, linkedPaths };\n }\n\n linkedPaths.push(linkedPath);\n resolveMap = await createResolveMapTask(\n {\n appPath,\n additionalPaths,\n linkedPaths,\n moduleResolutionConfig: config.resolve,\n },\n context,\n );\n dedupeAliases = getDedupeAliases({ resolveMap, dedupe: config.resolve?.dedupe });\n\n return { resolveMap, linkedPaths };\n },\n removeLinkedPath: async (linkedPath: LinkedPath) => {\n if (skipResolveDependencies || onlyInlinedDependencies) {\n throw new Error('Cannot use `removeLinkedPath` with `skipResolveDependencies` or `onlyInlinedDependencies`');\n }\n\n const index = linkedPaths.findIndex((p) => p.path === linkedPath.path);\n if (index === -1) {\n return { resolveMap, linkedPaths };\n }\n\n linkedPaths.splice(index, 1);\n resolveMap = await createResolveMapTask(\n {\n appPath,\n additionalPaths,\n linkedPaths,\n moduleResolutionConfig: config.resolve,\n },\n context,\n );\n dedupeAliases = getDedupeAliases({ resolveMap, dedupe: config.resolve?.dedupe });\n\n return { resolveMap, linkedPaths };\n },\n cachePath,\n get dedupeAliases() {\n return dedupeAliases;\n },\n };\n}\n\n/**\n * Get `sessionVersions.json` path. Exported for the test.\n * @internal\n */\nexport function _getSessionVersionsPath(appPath: string): string {\n return path.join(getLocalCachePath(appPath), 'sessionVersions.json');\n}\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { ResolveMap } from '@ms-cloudpack/common-types';
|
|
2
|
-
import {
|
|
2
|
+
import { type CreateResolveMapOptions } from '@ms-cloudpack/package-utilities';
|
|
3
3
|
import type { Context } from '../types/Context.js';
|
|
4
4
|
/**
|
|
5
5
|
* Create the resolve map, logging the results to the task reporter.
|
|
6
6
|
* Throws if dependencies could not be resolved.
|
|
7
7
|
*
|
|
8
8
|
* Usually this will contain all dependencies of `appPath` (and other paths if specified),
|
|
9
|
-
* but if `
|
|
9
|
+
* but if `onlyResolveDependencies` are set, it will only contain the package at `appPath`.
|
|
10
10
|
*/
|
|
11
|
-
export declare function createResolveMapTask(options: Pick<
|
|
11
|
+
export declare function createResolveMapTask(options: Pick<CreateResolveMapOptions, 'appPath' | 'additionalPaths' | 'linkedPaths' | 'skipResolveDependencies' | 'onlyResolveDependencies' | 'moduleResolutionConfig'>, context: Pick<Context, 'reporter' | 'packages' | 'telemetryClient'>): Promise<ResolveMap>;
|
|
12
12
|
//# sourceMappingURL=createResolveMapTask.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createResolveMapTask.d.ts","sourceRoot":"","sources":["../../src/utilities/createResolveMapTask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,4BAA4B,CAAC;AAE9E,OAAO,
|
|
1
|
+
{"version":3,"file":"createResolveMapTask.d.ts","sourceRoot":"","sources":["../../src/utilities/createResolveMapTask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,4BAA4B,CAAC;AAE9E,OAAO,EAAoB,KAAK,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAEjG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,IAAI,CACX,uBAAuB,EACrB,SAAS,GACT,iBAAiB,GACjB,aAAa,GACb,yBAAyB,GACzB,yBAAyB,GACzB,wBAAwB,CAC3B,EACD,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,GAAG,iBAAiB,CAAC,GAClE,OAAO,CAAC,UAAU,CAAC,CA4FrB"}
|
|
@@ -6,31 +6,49 @@ import { bold, bulletedList, cyan, plural, yellow } from '@ms-cloudpack/task-rep
|
|
|
6
6
|
* Throws if dependencies could not be resolved.
|
|
7
7
|
*
|
|
8
8
|
* Usually this will contain all dependencies of `appPath` (and other paths if specified),
|
|
9
|
-
* but if `
|
|
9
|
+
* but if `onlyResolveDependencies` are set, it will only contain the package at `appPath`.
|
|
10
10
|
*/
|
|
11
11
|
export async function createResolveMapTask(options, context) {
|
|
12
|
-
const { appPath, additionalPaths, linkedPaths, skipResolveDependencies, moduleResolutionConfig } = options;
|
|
12
|
+
const { appPath, additionalPaths, linkedPaths, skipResolveDependencies, onlyResolveDependencies, moduleResolutionConfig, } = options;
|
|
13
13
|
const { reporter, packages, telemetryClient } = context;
|
|
14
14
|
let resolveMap;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
const task = reporter.addTask(skipResolveDependencies || (onlyResolveDependencies && !onlyResolveDependencies.length)
|
|
16
|
+
? 'Creating resolve map'
|
|
17
|
+
: onlyResolveDependencies?.length
|
|
18
|
+
? 'Resolving only inlined dependencies'
|
|
19
|
+
: 'Resolving dependencies');
|
|
19
20
|
try {
|
|
20
21
|
resolveMap = await telemetryClient.tracer.startActiveSpan('CREATE_RESOLVE_MAP', async (span) => {
|
|
21
|
-
span.setAttributes({ linkedPaths: linkedPaths?.length || 0, skipResolveDependencies });
|
|
22
|
+
span.setAttributes({ linkedPaths: linkedPaths?.length || 0, skipResolveDependencies, onlyResolveDependencies });
|
|
22
23
|
// await is required here to report telemetry correctly
|
|
23
|
-
return await createResolveMap({
|
|
24
|
+
return await createResolveMap({
|
|
25
|
+
appPath,
|
|
26
|
+
additionalPaths,
|
|
27
|
+
linkedPaths,
|
|
28
|
+
skipResolveDependencies,
|
|
29
|
+
onlyResolveDependencies,
|
|
30
|
+
moduleResolutionConfig,
|
|
31
|
+
}, { packages });
|
|
24
32
|
});
|
|
25
33
|
let message;
|
|
26
34
|
let extended;
|
|
27
|
-
if (skipResolveDependencies) {
|
|
28
|
-
|
|
35
|
+
if (onlyResolveDependencies || skipResolveDependencies) {
|
|
36
|
+
const included = ['the current package'];
|
|
37
|
+
if (onlyResolveDependencies?.length) {
|
|
38
|
+
included.push('its inlined dependencies');
|
|
39
|
+
}
|
|
29
40
|
if (additionalPaths?.length) {
|
|
30
|
-
|
|
41
|
+
included.push(plural(additionalPaths.length, 'additional path'));
|
|
42
|
+
}
|
|
43
|
+
message = 'Created resolve map with ';
|
|
44
|
+
if (included.length === 1) {
|
|
45
|
+
message += `${included[0]} only.`;
|
|
46
|
+
}
|
|
47
|
+
else if (included.length === 2) {
|
|
48
|
+
message += `${included[0]} and ${included[1]}.`;
|
|
31
49
|
}
|
|
32
50
|
else {
|
|
33
|
-
message += '
|
|
51
|
+
message += `${included.slice(0, -1).join(', ')}, and ${included.slice(-1)}.`;
|
|
34
52
|
}
|
|
35
53
|
}
|
|
36
54
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createResolveMapTask.js","sourceRoot":"","sources":["../../src/utilities/createResolveMapTask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"createResolveMapTask.js","sourceRoot":"","sources":["../../src/utilities/createResolveMapTask.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ResolveMap, ResolveMapEntry } from '@ms-cloudpack/common-types';\nimport { environmentInfo } from '@ms-cloudpack/environment';\nimport { createResolveMap, type CreateResolveMapOptions } from '@ms-cloudpack/package-utilities';\nimport { bold, bulletedList, cyan, plural, yellow } from '@ms-cloudpack/task-reporter';\nimport type { Context } from '../types/Context.js';\n\n/**\n * Create the resolve map, logging the results to the task reporter.\n * Throws if dependencies could not be resolved.\n *\n * Usually this will contain all dependencies of `appPath` (and other paths if specified),\n * but if `onlyResolveDependencies` are set, it will only contain the package at `appPath`.\n */\nexport async function createResolveMapTask(\n options: Pick<\n CreateResolveMapOptions,\n | 'appPath'\n | 'additionalPaths'\n | 'linkedPaths'\n | 'skipResolveDependencies'\n | 'onlyResolveDependencies'\n | 'moduleResolutionConfig'\n >,\n context: Pick<Context, 'reporter' | 'packages' | 'telemetryClient'>,\n): Promise<ResolveMap> {\n const {\n appPath,\n additionalPaths,\n linkedPaths,\n skipResolveDependencies,\n onlyResolveDependencies,\n moduleResolutionConfig,\n } = options;\n const { reporter, packages, telemetryClient } = context;\n let resolveMap: ResolveMap | undefined;\n\n const task = reporter.addTask(\n skipResolveDependencies || (onlyResolveDependencies && !onlyResolveDependencies.length)\n ? 'Creating resolve map'\n : onlyResolveDependencies?.length\n ? 'Resolving only inlined dependencies'\n : 'Resolving dependencies',\n );\n\n try {\n resolveMap = await telemetryClient.tracer.startActiveSpan('CREATE_RESOLVE_MAP', async (span) => {\n span.setAttributes({ linkedPaths: linkedPaths?.length || 0, skipResolveDependencies, onlyResolveDependencies });\n\n // await is required here to report telemetry correctly\n return await createResolveMap(\n {\n appPath,\n additionalPaths,\n linkedPaths,\n skipResolveDependencies,\n onlyResolveDependencies,\n moduleResolutionConfig,\n },\n { packages },\n );\n });\n\n let message: string;\n let extended: string | undefined;\n\n if (onlyResolveDependencies || skipResolveDependencies) {\n const included = ['the current package'];\n if (onlyResolveDependencies?.length) {\n included.push('its inlined dependencies');\n }\n if (additionalPaths?.length) {\n included.push(plural(additionalPaths.length, 'additional path'));\n }\n message = 'Created resolve map with ';\n if (included.length === 1) {\n message += `${included[0]} only.`;\n } else if (included.length === 2) {\n message += `${included[0]} and ${included[1]}.`;\n } else {\n message += `${included.slice(0, -1).join(', ')}, and ${included.slice(-1)}.`;\n }\n } else {\n const { allPackages, duplicatedPackages } = getPackagesFromResolveMap(resolveMap);\n\n message = `Found ${cyan(allPackages.size)} total packages, ${\n duplicatedPackages.size ? `${yellow(duplicatedPackages.size)} with multiple versions.` : `no duplicates.`\n }`;\n extended = bulletedList(\n Array.from(\n duplicatedPackages.entries(),\n ([name, versions]) => `${bold(name)}: ${Array.from(versions).join(', ')}`,\n ),\n );\n }\n\n task.complete({ message, extended, forceShow: true });\n\n return resolveMap;\n } catch (err) {\n task.complete({\n status: 'fail',\n message: 'Failed to resolve dependencies',\n errors: [String(err)],\n forceShow: true,\n // Don't use the message as \"details\" because this will cause the message to be logged twice\n extended: (err as Error).stack,\n });\n\n if (err instanceof Error && !environmentInfo.isJest) {\n // Remove the call stack because we already logged it in the extended details of the task\n // (unless running in a test, because it prevents the error from being logged in an understandable way)\n err.stack = undefined;\n }\n\n throw err;\n }\n}\n\n/**\n * Given a resolveMap, returns a map of all packages and a map of packages with multiple versions.\n * This is used to log the results of the resolve task.\n */\nfunction getPackagesFromResolveMap(resolveMap: ResolveMap): {\n allPackages: Map<string, ResolveMapEntry>;\n duplicatedPackages: Map<string, Set<string>>;\n} {\n const allPackages = new Map<string, ResolveMapEntry>();\n const duplicatedPackages = new Map<string, Set<string>>();\n\n function addEntry(entry: ResolveMapEntry): void {\n const existingEntry = allPackages.get(entry.name);\n if (existingEntry) {\n let dupeSet = duplicatedPackages.get(entry.name);\n if (!dupeSet) {\n dupeSet = new Set([existingEntry.version]);\n duplicatedPackages.set(entry.name, dupeSet);\n }\n dupeSet.add(entry.version);\n } else {\n allPackages.set(entry.name, entry);\n }\n }\n\n for (const currentEntry of Object.values(resolveMap)) {\n addEntry(currentEntry);\n\n if (currentEntry.scopedVersions) {\n for (const scopedEntry of Object.values(currentEntry.scopedVersions)) {\n addEntry(scopedEntry);\n }\n }\n }\n\n return {\n allPackages,\n duplicatedPackages,\n };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ms-cloudpack/api-server",
|
|
3
|
-
"version": "0.66.
|
|
3
|
+
"version": "0.66.3",
|
|
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.27.
|
|
38
|
+
"@ms-cloudpack/bundler": "^0.27.6",
|
|
39
39
|
"@ms-cloudpack/common-types": "^0.33.2",
|
|
40
|
-
"@ms-cloudpack/config": "^0.38.
|
|
40
|
+
"@ms-cloudpack/config": "^0.38.24",
|
|
41
41
|
"@ms-cloudpack/create-express-app": "^1.10.67",
|
|
42
42
|
"@ms-cloudpack/data-bus": "^0.5.1",
|
|
43
43
|
"@ms-cloudpack/environment": "^0.1.1",
|
|
44
|
-
"@ms-cloudpack/esm-stub-utilities": "^0.15.
|
|
44
|
+
"@ms-cloudpack/esm-stub-utilities": "^0.15.37",
|
|
45
45
|
"@ms-cloudpack/file-watcher": "^0.4.26",
|
|
46
|
-
"@ms-cloudpack/import-map": "^0.10.
|
|
46
|
+
"@ms-cloudpack/import-map": "^0.10.65",
|
|
47
47
|
"@ms-cloudpack/json-utilities": "^0.1.11",
|
|
48
|
-
"@ms-cloudpack/package-hashes": "^0.8.
|
|
49
|
-
"@ms-cloudpack/package-utilities": "^13.
|
|
48
|
+
"@ms-cloudpack/package-hashes": "^0.8.49",
|
|
49
|
+
"@ms-cloudpack/package-utilities": "^13.3.0",
|
|
50
50
|
"@ms-cloudpack/path-string-parsing": "^1.3.0",
|
|
51
51
|
"@ms-cloudpack/path-utilities": "^3.2.3",
|
|
52
|
-
"@ms-cloudpack/remote-cache": "^0.11.
|
|
52
|
+
"@ms-cloudpack/remote-cache": "^0.11.59",
|
|
53
53
|
"@ms-cloudpack/task-reporter": "^0.17.4",
|
|
54
|
-
"@ms-cloudpack/telemetry": "^0.11.
|
|
54
|
+
"@ms-cloudpack/telemetry": "^0.11.59",
|
|
55
55
|
"@trpc/client": "^11.1.1",
|
|
56
56
|
"@trpc/server": "^11.1.1",
|
|
57
57
|
"cors": "^2.8.5",
|