@ms-cloudpack/api-server 0.21.10 → 0.22.0
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/apis/ensurePackageBundled.d.ts +16 -16
- package/lib/apis/ensurePackageBundled.d.ts.map +1 -1
- package/lib/apis/ensurePackageBundled.js +1 -2
- package/lib/apis/ensurePackageBundled.js.map +1 -1
- package/lib/index.d.ts +0 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +0 -1
- package/lib/index.js.map +1 -1
- package/lib/startApiServer.d.ts +4 -2
- package/lib/startApiServer.d.ts.map +1 -1
- package/lib/startApiServer.js +6 -61
- package/lib/startApiServer.js.map +1 -1
- package/lib/trpc/createAppRouter.d.ts +8 -8
- package/lib/trpc/createCloudpackServer.d.ts +4 -4
- package/lib/types/ApiServer.d.ts +0 -7
- package/lib/types/ApiServer.d.ts.map +1 -1
- package/lib/types/ApiServer.js.map +1 -1
- package/lib/types/BundleRequest.d.ts +2 -3
- package/lib/types/BundleRequest.d.ts.map +1 -1
- package/lib/types/BundleRequest.js.map +1 -1
- package/lib/utilities/TaskRunner.d.ts +3 -1
- package/lib/utilities/TaskRunner.d.ts.map +1 -1
- package/lib/utilities/TaskRunner.js +23 -2
- package/lib/utilities/TaskRunner.js.map +1 -1
- package/lib/utilities/bundleTask.d.ts.map +1 -1
- package/lib/utilities/bundleTask.js +31 -13
- package/lib/utilities/bundleTask.js.map +1 -1
- package/lib/utilities/createBundleRequestForPackage.d.ts +1 -1
- package/lib/utilities/createBundleRequestForPackage.d.ts.map +1 -1
- package/lib/utilities/createBundleRequestForPackage.js +5 -7
- package/lib/utilities/createBundleRequestForPackage.js.map +1 -1
- package/lib/utilities/createBundleTask.d.ts.map +1 -1
- package/lib/utilities/createBundleTask.js +8 -5
- package/lib/utilities/createBundleTask.js.map +1 -1
- package/lib/utilities/getBundleLocation.d.ts +10 -0
- package/lib/utilities/getBundleLocation.d.ts.map +1 -0
- package/lib/utilities/{getBundleDetails.js → getBundleLocation.js} +8 -13
- package/lib/utilities/getBundleLocation.js.map +1 -0
- package/lib/utilities/getPackagesToSync.d.ts.map +1 -1
- package/lib/utilities/getPackagesToSync.js +6 -5
- package/lib/utilities/getPackagesToSync.js.map +1 -1
- package/lib/utilities/isCachedResultValid.d.ts.map +1 -1
- package/lib/utilities/isCachedResultValid.js +5 -1
- package/lib/utilities/isCachedResultValid.js.map +1 -1
- package/package.json +4 -5
- package/lib/utilities/getBundleDetails.d.ts +0 -16
- package/lib/utilities/getBundleDetails.d.ts.map +0 -1
- package/lib/utilities/getBundleDetails.js.map +0 -1
- package/lib/utilities/startWatcher.d.ts +0 -9
- package/lib/utilities/startWatcher.d.ts.map +0 -1
- package/lib/utilities/startWatcher.js +0 -51
- package/lib/utilities/startWatcher.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiServer.js","sourceRoot":"","sources":["../../src/types/ApiServer.ts"],"names":[],"mappings":"","sourcesContent":["
|
|
1
|
+
{"version":3,"file":"ApiServer.js","sourceRoot":"","sources":["../../src/types/ApiServer.ts"],"names":[],"mappings":"","sourcesContent":["export interface ApiServer {\n url: string;\n port: number;\n\n notifyReload: () => void;\n\n close: () => Promise<void>;\n}\n"]}
|
|
@@ -8,16 +8,15 @@ export interface BundleRequest {
|
|
|
8
8
|
packageName: string;
|
|
9
9
|
version: string;
|
|
10
10
|
packagePath: string;
|
|
11
|
-
outputPath
|
|
11
|
+
outputPath?: string;
|
|
12
12
|
isExternal: boolean;
|
|
13
|
-
hash?: string;
|
|
14
13
|
bundlerType?: string;
|
|
15
14
|
result?: BundleResult & {
|
|
16
15
|
imports?: Record<string, string[]>;
|
|
17
16
|
hash?: string;
|
|
17
|
+
outputPath: string;
|
|
18
18
|
};
|
|
19
19
|
resultFromCache?: boolean;
|
|
20
|
-
isRebuildRequired?: boolean;
|
|
21
20
|
disableSourceMaps?: boolean;
|
|
22
21
|
enableFindImports?: boolean;
|
|
23
22
|
enableCacheInternalPackages?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BundleRequest.d.ts","sourceRoot":"","sources":["../../src/types/BundleRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACzF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"BundleRequest.d.ts","sourceRoot":"","sources":["../../src/types/BundleRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACzF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,YAAY,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAClG,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,uBAAuB,CAAC;IAClC,MAAM,EAAE,eAAe,CAAC;CACzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BundleRequest.js","sourceRoot":"","sources":["../../src/types/BundleRequest.ts"],"names":[],"mappings":"","sourcesContent":["import type { BundleResult, PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\nimport type { CloudpackConfig } from '@ms-cloudpack/config';\n\n/**\n * Tracks a given bundle request and its result.\n */\n\nexport interface BundleRequest {\n id: string;\n packageName: string;\n version: string;\n packagePath: string;\n outputPath
|
|
1
|
+
{"version":3,"file":"BundleRequest.js","sourceRoot":"","sources":["../../src/types/BundleRequest.ts"],"names":[],"mappings":"","sourcesContent":["import type { BundleResult, PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\nimport type { CloudpackConfig } from '@ms-cloudpack/config';\n\n/**\n * Tracks a given bundle request and its result.\n */\n\nexport interface BundleRequest {\n id: string;\n packageName: string;\n version: string;\n packagePath: string;\n outputPath?: string;\n isExternal: boolean;\n bundlerType?: string;\n result?: BundleResult & { imports?: Record<string, string[]>; hash?: string; outputPath: string };\n resultFromCache?: boolean;\n disableSourceMaps?: boolean;\n enableFindImports?: boolean;\n enableCacheInternalPackages?: boolean;\n hashPackages?: boolean;\n packages: PackageDefinitionsCache;\n config: CloudpackConfig;\n}\n"]}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import type { TaskOptions } from '../types/TaskOptions.js';
|
|
2
3
|
import type { Task } from '../types/Task.js';
|
|
4
|
+
import EventEmitter from 'events';
|
|
3
5
|
/**
|
|
4
6
|
* TaskRunner class manages the state of Tasks.
|
|
5
7
|
* This class is to be called by the api server.
|
|
6
8
|
*/
|
|
7
|
-
export declare class TaskRunner {
|
|
9
|
+
export declare class TaskRunner extends EventEmitter {
|
|
8
10
|
private _queue;
|
|
9
11
|
private _pendingTasks;
|
|
10
12
|
private _completedTasks;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskRunner.d.ts","sourceRoot":"","sources":["../../src/utilities/TaskRunner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"TaskRunner.d.ts","sourceRoot":"","sources":["../../src/utilities/TaskRunner.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,YAAY,MAAM,QAAQ,CAAC;AAQlC;;;GAGG;AACH,qBAAa,UAAW,SAAQ,YAAY;IAC1C,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,aAAa,CAA4B;IAEjD,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,cAAc,CAAc;IAEpC,OAAO,CAAC,UAAU,CAAyB;;IAY3C;;;;;OAKG;IACH,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IA0F1E;;;;;;;;OAQG;IACH,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS5C;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;CAYzB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import PQueue from 'p-queue';
|
|
2
|
+
import EventEmitter from 'events';
|
|
2
3
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3
4
|
const log = (...messages) => {
|
|
4
5
|
// console.log(`TaskRunner:`, ...messages);
|
|
@@ -7,8 +8,9 @@ const log = (...messages) => {
|
|
|
7
8
|
* TaskRunner class manages the state of Tasks.
|
|
8
9
|
* This class is to be called by the api server.
|
|
9
10
|
*/
|
|
10
|
-
export class TaskRunner {
|
|
11
|
+
export class TaskRunner extends EventEmitter {
|
|
11
12
|
constructor() {
|
|
13
|
+
super();
|
|
12
14
|
this._queue = new PQueue({ concurrency: 10 });
|
|
13
15
|
this._pendingTasks = new Map();
|
|
14
16
|
this._completedTasks = new Map();
|
|
@@ -53,7 +55,26 @@ export class TaskRunner {
|
|
|
53
55
|
try {
|
|
54
56
|
// TODO: possibly remove cast once this issue is resolved
|
|
55
57
|
// https://github.com/sindresorhus/p-queue/issues/175
|
|
56
|
-
taskResult = (await this._queue.add(
|
|
58
|
+
taskResult = (await this._queue.add(async () => {
|
|
59
|
+
const startDescription = {
|
|
60
|
+
...task.getStartDescription?.(),
|
|
61
|
+
id: task.id,
|
|
62
|
+
};
|
|
63
|
+
this.emit('executeStarted', startDescription);
|
|
64
|
+
let result;
|
|
65
|
+
try {
|
|
66
|
+
result = await execute();
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
// no-op
|
|
70
|
+
}
|
|
71
|
+
const endDescription = {
|
|
72
|
+
...task.getEndDescription?.(result),
|
|
73
|
+
id: task.id,
|
|
74
|
+
};
|
|
75
|
+
this.emit('executeCompleted', endDescription);
|
|
76
|
+
return result;
|
|
77
|
+
}));
|
|
57
78
|
completed = true;
|
|
58
79
|
}
|
|
59
80
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskRunner.js","sourceRoot":"","sources":["../../src/utilities/TaskRunner.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"TaskRunner.js","sourceRoot":"","sources":["../../src/utilities/TaskRunner.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,SAAS,CAAC;AAG7B,OAAO,YAAY,MAAM,QAAQ,CAAC;AAGlC,6DAA6D;AAC7D,MAAM,GAAG,GAAG,CAAC,GAAG,QAAmB,EAAE,EAAE;IACrC,2CAA2C;AAC7C,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,UAAW,SAAQ,YAAY;IAU1C;QACE,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAU,IAAmB,EAAE,OAAqB;QACrD,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACnC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;QAEvC,KAAK,EAAE,EAAE,CAAC;QAEV,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;SAC/B;QAED,2DAA2D;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAwB,CAAC;QACnE,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE;YAClC,GAAG,CAAC,sCAAsC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;YACzD,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SAChC;QAED,yDAAyD;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAiC,CAAC;QAC3E,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aAC7B;YACD,GAAG,CAAC,oCAAoC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;YACvD,OAAO,OAAO,CAAC;SAChB;QAED,MAAM,aAAa,GAAG,CAAC,KAAK,IAAI,EAAE;YAChC,IAAI,UAA+B,CAAC;YACpC,IAAI,SAAkB,CAAC;YACvB,IAAI,SAAS,GAAG,KAAK,CAAC;YAEtB,GAAG;gBACD,uCAAuC;gBACvC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC/B,IAAI;oBACF,yDAAyD;oBACzD,qDAAqD;oBACrD,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;wBAC7C,MAAM,gBAAgB,GAAyB;4BAC7C,GAAG,IAAI,CAAC,mBAAmB,EAAE,EAAE;4BAC/B,EAAE,EAAE,IAAI,CAAC,EAAE;yBACZ,CAAC;wBACF,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;wBAE9C,IAAI,MAAM,CAAC;wBAEX,IAAI;4BACF,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;yBAC1B;wBAAC,OAAO,GAAG,EAAE;4BACZ,QAAQ;yBACT;wBAED,MAAM,cAAc,GAAuB;4BACzC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC;4BACnC,EAAE,EAAE,IAAI,CAAC,EAAE;yBACZ,CAAC;wBACF,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;wBAE9C,OAAO,MAAM,CAAC;oBAChB,CAAC,CAAC,CAAwB,CAAC;oBAC3B,SAAS,GAAG,IAAI,CAAC;iBAClB;gBAAC,OAAO,GAAG,EAAE;oBACZ,wEAAwE;oBACxE,SAAS,GAAG,GAAG,CAAC;iBACjB;aACF,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAEtC,GAAG,CAAC,mBAAmB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;YAEtC,4BAA4B;YAC5B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAE9B,IAAI,SAAS,EAAE;gBACb,yBAAyB;gBACzB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;gBACzC,uBAAuB;gBACvB,OAAO,UAAqB,CAAC;aAC9B;YAED,0EAA0E;YAC1E,MAAM,SAAS,CAAC;QAClB,CAAC,CAAC,EAAE,CAAC;QAEL,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QAC1C,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEhC,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAU,EAAU;QACvB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;SAC1C;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAqB,CAAC;IACjE,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAU;QACf,IAAI,CAAC,UAAU;aACZ,GAAG,CAAC,EAAE,CAAC;YACR,EAAE,OAAO,EAAE,EAAE;aACZ,KAAK,CAAC,GAAG,EAAE;YACV,GAAG,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QACL,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;CACF","sourcesContent":["import PQueue from 'p-queue';\nimport type { TaskOptions } from '../types/TaskOptions.js';\nimport type { Task } from '../types/Task.js';\nimport EventEmitter from 'events';\nimport type { TaskEndDescription, TaskStartDescription } from '../index.js';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst log = (...messages: unknown[]) => {\n // console.log(`TaskRunner:`, ...messages);\n};\n\n/**\n * TaskRunner class manages the state of Tasks.\n * This class is to be called by the api server.\n */\nexport class TaskRunner extends EventEmitter {\n private _queue: PQueue;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _pendingTasks: Map<string, Promise<any>>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _completedTasks: Map<string, any>;\n private _requiresRerun: Set<string>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _prevTasks: Map<string, Task<any>>;\n\n constructor() {\n super();\n\n this._queue = new PQueue({ concurrency: 10 });\n this._pendingTasks = new Map();\n this._completedTasks = new Map();\n this._requiresRerun = new Set();\n this._prevTasks = new Map();\n }\n\n /**\n * The add method enqueues a Task and returns its Promise.\n * If a Task with the same id has already been processed,\n * it returns either the result or the promise.\n * Rerun flag forces the Task to be run again.\n */\n add<TReturn>(task: Task<TReturn>, options?: TaskOptions): Promise<TReturn> {\n const { name, id, execute } = task;\n const { rerun, watch } = options || {};\n\n watch?.();\n\n if (!this._prevTasks.get(id)) {\n this._prevTasks.set(id, task);\n }\n\n // Check if we are already completed the task with that id.\n const action = this._completedTasks.get(id) as TReturn | undefined;\n if (action !== undefined && !rerun) {\n log(`Previous action found, returning: \"${name}:${id}\"`);\n return Promise.resolve(action);\n }\n\n // Check if we are already running the task with that id.\n const pending = this._pendingTasks.get(id) as Promise<TReturn> | undefined;\n if (pending !== undefined) {\n if (rerun) {\n this._requiresRerun.add(id);\n }\n log(`Previous action found, waiting: \"${name}:${id}\"`);\n return pending;\n }\n\n const resultPromise = (async () => {\n let taskResult: TReturn | undefined;\n let taskError: unknown;\n let completed = false;\n\n do {\n // Delete from rerun list (if present).\n this._requiresRerun.delete(id);\n try {\n // TODO: possibly remove cast once this issue is resolved\n // https://github.com/sindresorhus/p-queue/issues/175\n taskResult = (await this._queue.add(async () => {\n const startDescription: TaskStartDescription = {\n ...task.getStartDescription?.(),\n id: task.id,\n };\n this.emit('executeStarted', startDescription);\n\n let result;\n\n try {\n result = await execute();\n } catch (err) {\n // no-op\n }\n\n const endDescription: TaskEndDescription = {\n ...task.getEndDescription?.(result),\n id: task.id,\n };\n this.emit('executeCompleted', endDescription);\n\n return result;\n })) as TReturn | undefined;\n completed = true;\n } catch (err) {\n // Save the error--it will be thrown later if a rerun was not requested.\n taskError = err;\n }\n } while (this._requiresRerun.has(id));\n\n log(`Task finished: \"${name}:${id}\"`);\n\n // Delete from pending list.\n this._pendingTasks.delete(id);\n\n if (completed) {\n // Update finished Tasks.\n this._completedTasks.set(id, taskResult);\n // Resolve the promise.\n return taskResult as TReturn;\n }\n\n // If the task never completed successfully, throw the error from earlier.\n throw taskError;\n })();\n\n this._pendingTasks.set(id, resultPromise);\n this._completedTasks.delete(id);\n\n return resultPromise;\n }\n\n /**\n * The reset method removes a task from the TaskRunner\n * and then adds it again through a previous execute function.\n *\n * This is useful for when a task needs to be forcibly rerun.\n *\n * It is intented to be used by the api server\n * to rerun a task when it is stuck or it failed.\n */\n reset<TReturn>(id: string): Promise<TReturn> {\n this.remove(id);\n const prevTask = this._prevTasks.get(id);\n if (prevTask === undefined) {\n throw new Error(`Task not found: ${id}`);\n }\n return this.add(prevTask, { rerun: true }) as Promise<TReturn>;\n }\n\n /**\n * The remove method disposes a task if available\n * and then removes it from the TaskRunner.\n *\n * This is useful when the state of a task needs to be cleared.\n *\n * It is intented to be used by the api server\n * to clear the TaskRunner's state before reloading the page.\n */\n remove(id: string): void {\n this._prevTasks\n .get(id)\n ?.dispose?.()\n .catch(() => {\n log(`Error disposing task: ${id}`);\n });\n this._prevTasks.get(id)?.clear?.();\n this._requiresRerun.delete(id);\n this._pendingTasks.delete(id);\n this._completedTasks.delete(id);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundleTask.d.ts","sourceRoot":"","sources":["../../src/utilities/bundleTask.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,6BAA6B,CAAC;AAIrC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAO/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"bundleTask.d.ts","sourceRoot":"","sources":["../../src/utilities/bundleTask.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,6BAA6B,CAAC;AAIrC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAO/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI/D,wBAAsB,UAAU,CAAC,MAAM,EAAE;IACvC,aAAa,EAAE,aAAa,CAAC;IAC7B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,GAAG,OAAO,CAAC,aAAa,CAAC,CA8EzB"}
|
|
@@ -11,16 +11,23 @@ import { hashPackage } from './hashPackage.js';
|
|
|
11
11
|
import { getPackageSettings } from '@ms-cloudpack/config';
|
|
12
12
|
import { isCachedResultValid } from './isCachedResultValid.js';
|
|
13
13
|
import { diskCacheRatioMetricEventAggregator } from './diskCacheRatioMetricEventAggregator.js';
|
|
14
|
+
import { getBundleLocation } from './getBundleLocation.js';
|
|
14
15
|
export async function bundleTask(params) {
|
|
15
16
|
const { bundleRequest, options = {}, reporter, telemetryClient } = params;
|
|
16
17
|
const { packageName, version } = bundleRequest;
|
|
17
18
|
const { force } = options || {};
|
|
18
|
-
const
|
|
19
|
-
const taskName = `${rebuild ? `Re-bundle` : `Bundle`} ${formatPackageName({
|
|
19
|
+
const bundleResult = bundleRequest.result;
|
|
20
|
+
const taskName = `${bundleResult?.rebuild ? `Re-bundle` : `Bundle`} ${formatPackageName({
|
|
21
|
+
name: packageName,
|
|
22
|
+
version,
|
|
23
|
+
})}`;
|
|
20
24
|
telemetryClient?.performance.registerAggregator(diskCacheRatioMetricEventAggregator);
|
|
21
25
|
const executeBundle = async () => {
|
|
22
|
-
if (rebuild) {
|
|
23
|
-
bundleRequest.result =
|
|
26
|
+
if (bundleResult?.rebuild) {
|
|
27
|
+
bundleRequest.result = {
|
|
28
|
+
...(await bundleResult.rebuild()),
|
|
29
|
+
outputPath: bundleResult.outputPath,
|
|
30
|
+
};
|
|
24
31
|
bundleRequest.resultFromCache = false;
|
|
25
32
|
}
|
|
26
33
|
else {
|
|
@@ -30,13 +37,19 @@ export async function bundleTask(params) {
|
|
|
30
37
|
isCacheHit: !!bundleRequest.resultFromCache,
|
|
31
38
|
isExternal: bundleRequest.isExternal,
|
|
32
39
|
});
|
|
33
|
-
const result =
|
|
40
|
+
const { result } = bundleRequest;
|
|
41
|
+
if (!result) {
|
|
42
|
+
return {
|
|
43
|
+
status: 'fail',
|
|
44
|
+
details: `No result was found for "${packageName}@${version}"`,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
34
47
|
result.outputFiles ??= [];
|
|
35
48
|
result.errors ??= [];
|
|
36
49
|
result.warnings ??= [];
|
|
37
50
|
if (!result.outputFiles.length && !result.errors?.length) {
|
|
38
51
|
result.warnings.push({
|
|
39
|
-
text: `No output files were found for "${packageName}" in "${
|
|
52
|
+
text: `No output files were found for "${packageName}" in "${result.outputPath}"`,
|
|
40
53
|
});
|
|
41
54
|
}
|
|
42
55
|
return {
|
|
@@ -46,12 +59,12 @@ export async function bundleTask(params) {
|
|
|
46
59
|
: {
|
|
47
60
|
details: bulletedList([
|
|
48
61
|
`Package: ${bundleRequest.packageName}@${bundleRequest.version}`,
|
|
49
|
-
`Bundler: ${
|
|
62
|
+
`Bundler: ${result.bundlerName || 'unknown'}`,
|
|
50
63
|
`Input path: ${bundleRequest.packagePath}`,
|
|
51
64
|
`Entries:`,
|
|
52
|
-
Object.values(
|
|
53
|
-
`Output path: ${
|
|
54
|
-
|
|
65
|
+
Object.values(result.entries || {}),
|
|
66
|
+
`Output path: ${result.outputPath}`,
|
|
67
|
+
result.outputFiles?.map((file) => `${safeRelativePath(path.relative(result.outputPath, file.outputPath))} (${getFileSizeSync(path.resolve(result.outputPath, file.outputPath))})`),
|
|
55
68
|
]),
|
|
56
69
|
}),
|
|
57
70
|
};
|
|
@@ -72,7 +85,8 @@ async function bundle(bundleRequest, force) {
|
|
|
72
85
|
bundleRequest.result.dispose();
|
|
73
86
|
bundleRequest.result = undefined;
|
|
74
87
|
}
|
|
75
|
-
const { packagePath,
|
|
88
|
+
const { packagePath, isExternal, disableSourceMaps, enableFindImports, enableCacheInternalPackages } = bundleRequest;
|
|
89
|
+
const outputPath = bundleRequest.outputPath ?? (await getBundleLocation({ packagePath }, context)).path;
|
|
76
90
|
// Rehydrate the result if not incremental.
|
|
77
91
|
if ((isExternal || enableCacheInternalPackages) && !force) {
|
|
78
92
|
bundleRequest.result = await readJson(path.join(outputPath, 'result.json'));
|
|
@@ -105,8 +119,12 @@ async function bundle(bundleRequest, force) {
|
|
|
105
119
|
bundleRequest.resultFromCache = false;
|
|
106
120
|
// Only use cached result if it's successful.
|
|
107
121
|
await prepareOutputPath(outputPath);
|
|
108
|
-
|
|
109
|
-
bundleRequest.result
|
|
122
|
+
const bundleInternalResult = await bundleInternal(bundleOptions);
|
|
123
|
+
bundleRequest.result = {
|
|
124
|
+
...bundleInternalResult,
|
|
125
|
+
outputPath: bundleOptions.outputPath ?? outputPath,
|
|
126
|
+
hash,
|
|
127
|
+
};
|
|
110
128
|
// Write the result to disk.
|
|
111
129
|
if (isExternal || enableCacheInternalPackages) {
|
|
112
130
|
const result = { ...bundleRequest.result };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundleTask.js","sourceRoot":"","sources":["../../src/utilities/bundleTask.ts"],"names":[],"mappings":"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","sourcesContent":["import { bundle as bundleInternal, getEntriesMapFromPackage, getExternalsFromPackage } from '@ms-cloudpack/bundler';\nimport { readJson, writeJson } from '@ms-cloudpack/json-utilities';\nimport { safeRelativePath } from '@ms-cloudpack/path-string-parsing';\nimport {\n bulletedList,\n formatPackageName,\n type TaskReporter,\n type TaskReporterTaskResult,\n} from '@ms-cloudpack/task-reporter';\nimport path from 'path';\nimport { findImports } from './findImports.js';\nimport { prepareOutputPath } from '../common/prepareOutputPath.js';\nimport type { BundleTaskOptions } from '../types/BundleTaskOptions.js';\nimport type { BundleRequest } from '../types/BundleRequest.js';\nimport { formatBundleErrors } from './formatBundleErrors.js';\nimport { getFileSizeSync } from './getFileSizeSync.js';\nimport { hashPackage } from './hashPackage.js';\nimport type { BundleOptions } from '@ms-cloudpack/bundler-types';\nimport { getPackageSettings } from '@ms-cloudpack/config';\nimport { isCachedResultValid } from './isCachedResultValid.js';\nimport type { TelemetryClient } from '@ms-cloudpack/telemetry';\nimport { diskCacheRatioMetricEventAggregator } from './diskCacheRatioMetricEventAggregator.js';\n\nexport async function bundleTask(params: {\n bundleRequest: BundleRequest;\n options?: BundleTaskOptions;\n reporter?: TaskReporter;\n telemetryClient?: TelemetryClient;\n}): Promise<BundleRequest> {\n const { bundleRequest, options = {}, reporter, telemetryClient } = params;\n const { packageName, version } = bundleRequest;\n const { force } = options || {};\n\n const { rebuild } = bundleRequest?.result || {};\n const taskName = `${rebuild ? `Re-bundle` : `Bundle`} ${formatPackageName({ name: packageName, version })}`;\n\n telemetryClient?.performance.registerAggregator(diskCacheRatioMetricEventAggregator);\n\n const executeBundle = async (): Promise<TaskReporterTaskResult> => {\n if (rebuild) {\n bundleRequest.result = await rebuild();\n bundleRequest.resultFromCache = false;\n } else {\n await bundle(bundleRequest, force);\n }\n\n diskCacheRatioMetricEventAggregator?.record({\n isCacheHit: !!bundleRequest.resultFromCache,\n isExternal: bundleRequest.isExternal,\n });\n\n const result = (bundleRequest.result ??= {});\n\n result.outputFiles ??= [];\n result.errors ??= [];\n result.warnings ??= [];\n\n if (!result.outputFiles.length && !result.errors?.length) {\n result.warnings.push({\n text: `No output files were found for \"${packageName}\" in \"${bundleRequest.outputPath}\"`,\n });\n }\n\n return {\n status: result.errors.length ? 'fail' : 'complete',\n ...(result.errors?.length\n ? formatBundleErrors(result.errors)\n : {\n details: bulletedList([\n `Package: ${bundleRequest.packageName}@${bundleRequest.version}`,\n `Bundler: ${bundleRequest.result?.bundlerName || 'unknown'}`,\n `Input path: ${bundleRequest.packagePath}`,\n `Entries:`,\n Object.values(bundleRequest.result?.entries || {}),\n `Output path: ${bundleRequest.outputPath}`,\n bundleRequest.result?.outputFiles?.map(\n (file) =>\n `${safeRelativePath(path.relative(bundleRequest.outputPath, file.outputPath))} (${getFileSizeSync(\n path.resolve(bundleRequest.outputPath, file.outputPath),\n )})`,\n ),\n ]),\n }),\n };\n };\n\n if (reporter) {\n await reporter.runTask(taskName, executeBundle);\n } else {\n await executeBundle();\n }\n\n return bundleRequest;\n}\n\nasync function bundle(bundleRequest: BundleRequest, force?: boolean): Promise<BundleRequest> {\n const { packages, config } = bundleRequest;\n const context = { packages, 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, outputPath, isExternal, disableSourceMaps, enableFindImports, enableCacheInternalPackages } =\n bundleRequest;\n\n // Rehydrate the result if not incremental.\n if ((isExternal || enableCacheInternalPackages) && !force) {\n bundleRequest.result = await readJson(path.join(outputPath, 'result.json'));\n }\n\n const { userPackageSettings } =\n getPackageSettings({\n name: bundleRequest.packageName,\n version: bundleRequest.version,\n config,\n }) || {};\n const { bundlerType, bundlerOptions } = userPackageSettings || {};\n\n const bundleOptions: BundleOptions = {\n bundlerType: bundleRequest.bundlerType || bundlerType,\n overrideOptions: bundlerOptions,\n inputPath: packagePath,\n outputPath,\n incremental: !isExternal,\n sourcemap: disableSourceMaps ? undefined : 'linked',\n entries: await getEntriesMapFromPackage({ inputPath: packagePath }, context),\n external: await getExternalsFromPackage({ inputPath: packagePath }, context),\n };\n\n const hash =\n !isExternal && enableCacheInternalPackages\n ? await hashPackage({ packagePath, isExternal, additionalProperties: bundleOptions })\n : undefined;\n\n // if the cached result is valid, use it.\n if (!force && isCachedResultValid({ bundleRequest, hash })) {\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 bundleRequest.result = await bundleInternal(bundleOptions);\n bundleRequest.result.hash = hash;\n\n // Write the result to disk.\n if (isExternal || enableCacheInternalPackages) {\n const result = { ...bundleRequest.result };\n\n // Clear the rawInput/output properties.\n result.rawInput = result.rawOutput = undefined;\n\n await writeJson(path.join(outputPath, 'result.json'), bundleRequest.result);\n }\n }\n\n if (enableFindImports && !bundleRequest.result?.errors?.length && bundleRequest.result?.outputFiles?.length) {\n const importsPath = path.join(outputPath, 'imports.json');\n let imports = await readJson<Record<string, string[]>>(importsPath);\n\n // If we couldn't rehydrate imports from cache, compute them.\n if (!imports) {\n const scriptPaths = bundleRequest.result.outputFiles.map((f) => path.resolve(outputPath, f.outputPath));\n\n imports = await findImports(scriptPaths);\n\n // Write to cache for future use. (Ignore the promise result.)\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n writeJson(importsPath, imports);\n }\n\n bundleRequest.result.imports = imports;\n\n // Find imports that are in the output files and set dependencies.\n const outputFilePaths = bundleRequest.result.outputFiles?.map((f) => path.resolve(outputPath, f.outputPath));\n bundleRequest.result.imports = outputFilePaths && (await findImports(outputFilePaths));\n }\n\n return bundleRequest;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"bundleTask.js","sourceRoot":"","sources":["../../src/utilities/bundleTask.ts"],"names":[],"mappings":"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","sourcesContent":["import { bundle as bundleInternal, getEntriesMapFromPackage, getExternalsFromPackage } from '@ms-cloudpack/bundler';\nimport { readJson, writeJson } from '@ms-cloudpack/json-utilities';\nimport { safeRelativePath } from '@ms-cloudpack/path-string-parsing';\nimport {\n bulletedList,\n formatPackageName,\n type TaskReporter,\n type TaskReporterTaskResult,\n} from '@ms-cloudpack/task-reporter';\nimport path from 'path';\nimport { findImports } from './findImports.js';\nimport { prepareOutputPath } from '../common/prepareOutputPath.js';\nimport type { BundleTaskOptions } from '../types/BundleTaskOptions.js';\nimport type { BundleRequest } from '../types/BundleRequest.js';\nimport { formatBundleErrors } from './formatBundleErrors.js';\nimport { getFileSizeSync } from './getFileSizeSync.js';\nimport { hashPackage } from './hashPackage.js';\nimport type { BundleOptions } from '@ms-cloudpack/bundler-types';\nimport { getPackageSettings } from '@ms-cloudpack/config';\nimport { isCachedResultValid } from './isCachedResultValid.js';\nimport type { TelemetryClient } from '@ms-cloudpack/telemetry';\nimport { diskCacheRatioMetricEventAggregator } from './diskCacheRatioMetricEventAggregator.js';\nimport { getBundleLocation } from './getBundleLocation.js';\n\nexport async function bundleTask(params: {\n bundleRequest: BundleRequest;\n options?: BundleTaskOptions;\n reporter?: TaskReporter;\n telemetryClient?: TelemetryClient;\n}): Promise<BundleRequest> {\n const { bundleRequest, options = {}, reporter, telemetryClient } = params;\n const { packageName, version } = bundleRequest;\n const { force } = options || {};\n\n const bundleResult = bundleRequest.result;\n const taskName = `${bundleResult?.rebuild ? `Re-bundle` : `Bundle`} ${formatPackageName({\n name: packageName,\n version,\n })}`;\n\n telemetryClient?.performance.registerAggregator(diskCacheRatioMetricEventAggregator);\n\n const executeBundle = async (): Promise<TaskReporterTaskResult> => {\n if (bundleResult?.rebuild) {\n bundleRequest.result = {\n ...(await bundleResult.rebuild()),\n outputPath: bundleResult.outputPath,\n };\n bundleRequest.resultFromCache = false;\n } else {\n await bundle(bundleRequest, force);\n }\n\n diskCacheRatioMetricEventAggregator?.record({\n isCacheHit: !!bundleRequest.resultFromCache,\n isExternal: bundleRequest.isExternal,\n });\n\n const { result } = bundleRequest;\n\n if (!result) {\n return {\n status: 'fail',\n details: `No result was found for \"${packageName}@${version}\"`,\n };\n }\n\n result.outputFiles ??= [];\n result.errors ??= [];\n result.warnings ??= [];\n\n if (!result.outputFiles.length && !result.errors?.length) {\n result.warnings.push({\n text: `No output files were found for \"${packageName}\" in \"${result.outputPath}\"`,\n });\n }\n\n return {\n status: result.errors.length ? 'fail' : 'complete',\n ...(result.errors?.length\n ? formatBundleErrors(result.errors)\n : {\n details: bulletedList([\n `Package: ${bundleRequest.packageName}@${bundleRequest.version}`,\n `Bundler: ${result.bundlerName || 'unknown'}`,\n `Input path: ${bundleRequest.packagePath}`,\n `Entries:`,\n Object.values(result.entries || {}),\n `Output path: ${result.outputPath}`,\n result.outputFiles?.map(\n (file) =>\n `${safeRelativePath(path.relative(result.outputPath, file.outputPath))} (${getFileSizeSync(\n path.resolve(result.outputPath, file.outputPath),\n )})`,\n ),\n ]),\n }),\n };\n };\n\n if (reporter) {\n await reporter.runTask(taskName, executeBundle);\n } else {\n await executeBundle();\n }\n\n return bundleRequest;\n}\n\nasync function bundle(bundleRequest: BundleRequest, force?: boolean): Promise<BundleRequest> {\n const { packages, config } = bundleRequest;\n const context = { packages, 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, disableSourceMaps, enableFindImports, enableCacheInternalPackages } = bundleRequest;\n\n const outputPath = bundleRequest.outputPath ?? (await getBundleLocation({ packagePath }, context)).path;\n\n // Rehydrate the result if not incremental.\n if ((isExternal || enableCacheInternalPackages) && !force) {\n bundleRequest.result = await readJson(path.join(outputPath, 'result.json'));\n }\n\n const { userPackageSettings } =\n getPackageSettings({\n name: bundleRequest.packageName,\n version: bundleRequest.version,\n config,\n }) || {};\n const { bundlerType, bundlerOptions } = userPackageSettings || {};\n\n const bundleOptions: BundleOptions = {\n bundlerType: bundleRequest.bundlerType || bundlerType,\n overrideOptions: bundlerOptions,\n inputPath: packagePath,\n outputPath,\n incremental: !isExternal,\n sourcemap: disableSourceMaps ? undefined : 'linked',\n entries: await getEntriesMapFromPackage({ inputPath: packagePath }, context),\n external: await getExternalsFromPackage({ inputPath: packagePath }, context),\n };\n\n const hash =\n !isExternal && enableCacheInternalPackages\n ? await hashPackage({ packagePath, isExternal, additionalProperties: bundleOptions })\n : undefined;\n\n // if the cached result is valid, use it.\n if (!force && isCachedResultValid({ bundleRequest, hash })) {\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 const bundleInternalResult = await bundleInternal(bundleOptions);\n bundleRequest.result = {\n ...bundleInternalResult,\n outputPath: bundleOptions.outputPath ?? outputPath,\n hash,\n };\n\n // Write the result to disk.\n if (isExternal || enableCacheInternalPackages) {\n const result = { ...bundleRequest.result };\n\n // Clear the rawInput/output properties.\n result.rawInput = result.rawOutput = undefined;\n\n await writeJson(path.join(outputPath, 'result.json'), bundleRequest.result);\n }\n }\n\n if (enableFindImports && !bundleRequest.result?.errors?.length && bundleRequest.result?.outputFiles?.length) {\n const importsPath = path.join(outputPath, 'imports.json');\n let imports = await readJson<Record<string, string[]>>(importsPath);\n\n // If we couldn't rehydrate imports from cache, compute them.\n if (!imports) {\n const scriptPaths = bundleRequest.result.outputFiles.map((f) => path.resolve(outputPath, f.outputPath));\n\n imports = await findImports(scriptPaths);\n\n // Write to cache for future use. (Ignore the promise result.)\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n writeJson(importsPath, imports);\n }\n\n bundleRequest.result.imports = imports;\n\n // Find imports that are in the output files and set dependencies.\n const outputFilePaths = bundleRequest.result.outputFiles?.map((f) => path.resolve(outputPath, f.outputPath));\n bundleRequest.result.imports = outputFilePaths && (await findImports(outputFilePaths));\n }\n\n return bundleRequest;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createBundleRequestForPackage.d.ts","sourceRoot":"","sources":["../../src/utilities/createBundleRequestForPackage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"createBundleRequestForPackage.d.ts","sourceRoot":"","sources":["../../src/utilities/createBundleRequestForPackage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE;IACP,YAAY,EAAE,eAAe,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,EACD,OAAO,EAAE;IACP,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE,uBAAuB,CAAC;CACnC,GACA,aAAa,CAoBf"}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
export async function createBundleRequestForPackage(options, context) {
|
|
1
|
+
export function createBundleRequestForPackage(options, context) {
|
|
3
2
|
const { packageEntry } = options;
|
|
4
3
|
const { config } = context;
|
|
5
4
|
const { features = {} } = config;
|
|
6
|
-
const { path, version, name } = packageEntry;
|
|
7
|
-
const { bundleId, isExternal, outputLocation } = await getBundleDetails({ packagePath: path }, context);
|
|
5
|
+
const { path, version, name, isExternal } = packageEntry;
|
|
8
6
|
return {
|
|
9
|
-
id:
|
|
7
|
+
id: path,
|
|
10
8
|
packagePath: path,
|
|
11
9
|
packageName: name,
|
|
12
|
-
isExternal,
|
|
13
|
-
outputPath: options.outputPath
|
|
10
|
+
isExternal: !!isExternal,
|
|
11
|
+
outputPath: options.outputPath,
|
|
14
12
|
version,
|
|
15
13
|
disableSourceMaps: options.disableSourceMaps ?? features.disableSourceMaps,
|
|
16
14
|
enableFindImports: options.enableFindImports ?? features.enqueueDependencies,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createBundleRequestForPackage.js","sourceRoot":"","sources":["../../src/utilities/createBundleRequestForPackage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createBundleRequestForPackage.js","sourceRoot":"","sources":["../../src/utilities/createBundleRequestForPackage.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,6BAA6B,CAC3C,OAMC,EACD,OAGC;IAED,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IACjC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;IACjC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC;IAEzD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,OAAO;QACP,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,QAAQ,CAAC,iBAAiB;QAC1E,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,QAAQ,CAAC,mBAAmB;QAC5E,2BAA2B,EAAE,QAAQ,CAAC,qBAAqB;QAC3D,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,GAAG,OAAO;KACX,CAAC;AACJ,CAAC","sourcesContent":["import type { CloudpackConfig } from '@ms-cloudpack/config';\nimport type { ResolveMapEntry } from '@ms-cloudpack/package-utilities';\nimport type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\nimport type { BundleRequest } from '../types/BundleRequest.js';\n\nexport function createBundleRequestForPackage(\n options: {\n packageEntry: ResolveMapEntry;\n outputPath?: string;\n bundlerType?: string;\n disableSourceMaps?: boolean;\n enableFindImports?: boolean;\n },\n context: {\n config: CloudpackConfig;\n packages: PackageDefinitionsCache;\n },\n): BundleRequest {\n const { packageEntry } = options;\n const { config } = context;\n const { features = {} } = config;\n const { path, version, name, isExternal } = packageEntry;\n\n return {\n id: path,\n packagePath: path,\n packageName: name,\n isExternal: !!isExternal,\n outputPath: options.outputPath,\n version,\n disableSourceMaps: options.disableSourceMaps ?? features.disableSourceMaps,\n enableFindImports: options.enableFindImports ?? features.enqueueDependencies,\n enableCacheInternalPackages: features.cacheInternalPackages,\n hashPackages: features.hashPackages,\n bundlerType: options.bundlerType,\n ...context,\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createBundleTask.d.ts","sourceRoot":"","sources":["../../src/utilities/createBundleTask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE;IACP,QAAQ,EAAE,uBAAuB,CAAC;IAClC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,EACD,OAAO,CAAC,EAAE,iBAAiB,GAC1B,IAAI,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"createBundleTask.d.ts","sourceRoot":"","sources":["../../src/utilities/createBundleTask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE;IACP,QAAQ,EAAE,uBAAuB,CAAC;IAClC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,EACD,OAAO,CAAC,EAAE,iBAAiB,GAC1B,IAAI,CAAC,aAAa,CAAC,CAuDrB"}
|
|
@@ -21,8 +21,8 @@ export function createBundleTask(bundleRequest, context, options) {
|
|
|
21
21
|
packages.removeHash(packagePath);
|
|
22
22
|
}
|
|
23
23
|
try {
|
|
24
|
-
|
|
25
|
-
addImportMapHash(packageName, version, session.getImportMap(), session.resolveMap,
|
|
24
|
+
const hash = await packages.getHash(packagePath);
|
|
25
|
+
addImportMapHash(packageName, version, session.getImportMap(), session.resolveMap, hash, {
|
|
26
26
|
packageImportPaths,
|
|
27
27
|
});
|
|
28
28
|
}
|
|
@@ -33,10 +33,13 @@ export function createBundleTask(bundleRequest, context, options) {
|
|
|
33
33
|
return bundleRequest;
|
|
34
34
|
},
|
|
35
35
|
clear: () => {
|
|
36
|
-
bundleRequest.result
|
|
37
|
-
|
|
36
|
+
if (!bundleRequest.result) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
bundleRequest.result.dispose?.();
|
|
38
40
|
// eslint-disable-next-line @ms-cloudpack/internal/no-sync-filesystem -- this function can't be async
|
|
39
|
-
fs.rmSync(outputPath, { recursive: true, force: true });
|
|
41
|
+
fs.rmSync(bundleRequest.result.outputPath, { recursive: true, force: true });
|
|
42
|
+
bundleRequest.result = undefined;
|
|
40
43
|
},
|
|
41
44
|
onDispose: () => {
|
|
42
45
|
bundleRequest.result?.dispose?.();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createBundleTask.js","sourceRoot":"","sources":["../../src/utilities/createBundleTask.ts"],"names":[],"mappings":"AAIA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAKnE;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,aAA4B,EAC5B,OAOC,EACD,OAA2B;IAE3B,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC;IACxF,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC;IAE7F,OAAO;QACL,IAAI,EAAE,UAAU,WAAW,IAAI,OAAO,EAAE;QACxC,EAAE;QACF,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE;QACvC,KAAK,EAAE,CAAC,UAAU;QAClB,KAAK,CAAC,OAAO;YACX,MAAM,UAAU,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;YACxE,IAAI,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE;gBAClC,IAAI,CAAC,UAAU,EAAE;oBACf,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;iBAClC;gBACD,IAAI;oBACF,
|
|
1
|
+
{"version":3,"file":"createBundleTask.js","sourceRoot":"","sources":["../../src/utilities/createBundleTask.ts"],"names":[],"mappings":"AAIA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAKnE;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,aAA4B,EAC5B,OAOC,EACD,OAA2B;IAE3B,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC;IACxF,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC;IAE7F,OAAO;QACL,IAAI,EAAE,UAAU,WAAW,IAAI,OAAO,EAAE;QACxC,EAAE;QACF,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE;QACvC,KAAK,EAAE,CAAC,UAAU;QAClB,KAAK,CAAC,OAAO;YACX,MAAM,UAAU,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;YACxE,IAAI,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE;gBAClC,IAAI,CAAC,UAAU,EAAE;oBACf,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;iBAClC;gBACD,IAAI;oBACF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;oBACjD,gBAAgB,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE;wBACvF,kBAAkB;qBACnB,CAAC,CAAC;iBACJ;gBAAC,OAAO,CAAC,EAAE;oBACV,OAAO,CAAC,KAAK,CAAC,uCAAuC,aAAa,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;iBACtF;aACF;YACD,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACV,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;gBACzB,OAAO;aACR;YAED,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YAEjC,qGAAqG;YACrG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAE7E,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC;QACnC,CAAC;QACD,SAAS,EAAE,GAAG,EAAE;YACd,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QACpC,CAAC;QACD,SAAS,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM;QAC7C,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;YAC1B,EAAE;YACF,IAAI,EAAE,UAAU,WAAW,IAAI,OAAO,EAAE;YACxC,SAAS,EAAE,WAAW,IAAI,EAAE;YAC5B,UAAU;SACX,CAAC;QACF,iBAAiB,EAAE,CAAC,UAAU,EAAE,EAAE,CAChC,CAAC;YACC,EAAE;YACF,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM;YAClC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ;SACvC,CAAuB;KAC3B,CAAC;AACJ,CAAC","sourcesContent":["import type { BundleTaskOptions } from '../types/BundleTaskOptions.js';\nimport type { BundleRequest } from '../types/BundleRequest.js';\nimport type { Task } from '../types/Task.js';\nimport type { TaskEndDescription } from '../types/TaskEndDescription.js';\nimport path from 'path';\nimport fs from 'fs';\nimport { bundleTask } from './bundleTask.js';\nimport type { TaskReporter } from '@ms-cloudpack/task-reporter';\nimport type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\nimport type { CloudpackConfig } from '@ms-cloudpack/config';\nimport { addImportMapHash } from '@ms-cloudpack/package-utilities';\nimport type { Session } from '../types/Session.js';\nimport type { TelemetryClient } from '@ms-cloudpack/telemetry';\nimport type { PackageImportPaths } from '@ms-cloudpack/package-utilities';\n\n/**\n * Creates a bundle task tracked in the task runner of the api server. This allows active tasks to be tracked\n * remotely (e.g. in the browser) and allows the user to cancel tasks.\n */\nexport function createBundleTask(\n bundleRequest: BundleRequest,\n context: {\n packages: PackageDefinitionsCache;\n packageImportPaths: PackageImportPaths;\n config: CloudpackConfig;\n session: Session;\n reporter?: TaskReporter;\n telemetryClient?: TelemetryClient;\n },\n options?: BundleTaskOptions,\n): Task<BundleRequest> {\n const { id, packageName, version, outputPath, packagePath, isExternal } = bundleRequest;\n const { packages, config, session, reporter, telemetryClient, packageImportPaths } = context;\n\n return {\n name: `Bundle ${packageName}@${version}`,\n id,\n dir: `${path.join(packagePath, 'src')}`,\n watch: !isExternal,\n async execute(): Promise<BundleRequest> {\n await bundleTask({ bundleRequest, options, reporter, telemetryClient });\n if (config?.features?.hashPackages) {\n if (!isExternal) {\n packages.removeHash(packagePath);\n }\n try {\n const hash = await packages.getHash(packagePath);\n addImportMapHash(packageName, version, session.getImportMap(), session.resolveMap, hash, {\n packageImportPaths,\n });\n } catch (e) {\n console.error(`Error adding hash to import map for ${bundleRequest.packagePath}`, e);\n }\n }\n return bundleRequest;\n },\n clear: () => {\n if (!bundleRequest.result) {\n return;\n }\n\n bundleRequest.result.dispose?.();\n\n // eslint-disable-next-line @ms-cloudpack/internal/no-sync-filesystem -- this function can't be async\n fs.rmSync(bundleRequest.result.outputPath, { recursive: true, force: true });\n\n bundleRequest.result = undefined;\n },\n onDispose: () => {\n bundleRequest.result?.dispose?.();\n },\n getErrors: () => bundleRequest.result?.errors,\n getStartDescription: () => ({\n id,\n name: `Bundle ${packageName}@${version}`,\n inputPath: packagePath || '',\n outputPath,\n }),\n getEndDescription: (taskResult) =>\n ({\n id,\n errors: taskResult?.result?.errors,\n warnings: taskResult?.result?.warnings,\n }) as TaskEndDescription,\n };\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';
|
|
2
|
+
export declare function getBundleLocation(options: {
|
|
3
|
+
packagePath: string;
|
|
4
|
+
}, context: {
|
|
5
|
+
packages: PackageDefinitionsCache;
|
|
6
|
+
}): Promise<{
|
|
7
|
+
path: string;
|
|
8
|
+
folderName: string;
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=getBundleLocation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getBundleLocation.d.ts","sourceRoot":"","sources":["../../src/utilities/getBundleLocation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAE3E,wBAAsB,iBAAiB,CACrC,OAAO,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,EAChC,OAAO,EAAE;IAAE,QAAQ,EAAE,uBAAuB,CAAA;CAAE;;;GA+B/C"}
|
|
@@ -3,33 +3,28 @@ import hash from 'object-hash';
|
|
|
3
3
|
import filenamify from 'filenamify';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import { getCachePath } from './getCachePath.js';
|
|
6
|
-
export async function
|
|
6
|
+
export async function getBundleLocation(options, context) {
|
|
7
7
|
const { packagePath } = options;
|
|
8
8
|
const { packages } = context;
|
|
9
9
|
const definition = await packages.get(packagePath);
|
|
10
10
|
if (!definition) {
|
|
11
11
|
throw new Error(`Package definition (package.json) missing or invalid at "${packagePath}"`);
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
if (!packageName) {
|
|
13
|
+
if (!definition.name) {
|
|
15
14
|
throw new Error(`Package definition (package.json) missing name at "${packagePath}"`);
|
|
16
15
|
}
|
|
16
|
+
const { name, version } = definition;
|
|
17
17
|
const isExternal = isExternalPackage(packagePath);
|
|
18
|
-
const
|
|
19
|
-
name: packageName,
|
|
18
|
+
const hashResult = hash({
|
|
20
19
|
...definition,
|
|
21
20
|
version: (isExternal ? version : packagePath) || packagePath,
|
|
22
21
|
});
|
|
23
22
|
// Derive where the output should be.
|
|
24
|
-
const folderName = `${filenamify(
|
|
23
|
+
const folderName = `${filenamify(name)}-${version}-${hashResult}`;
|
|
25
24
|
const outputPath = path.join(getCachePath(), folderName);
|
|
26
25
|
return {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
outputLocation: {
|
|
30
|
-
path: outputPath,
|
|
31
|
-
folderName,
|
|
32
|
-
},
|
|
26
|
+
path: outputPath,
|
|
27
|
+
folderName,
|
|
33
28
|
};
|
|
34
29
|
}
|
|
35
|
-
//# sourceMappingURL=
|
|
30
|
+
//# sourceMappingURL=getBundleLocation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getBundleLocation.js","sourceRoot":"","sources":["../../src/utilities/getBundleLocation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAgC,EAChC,OAA8C;IAE9C,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAChC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC7B,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAEnD,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,4DAA4D,WAAW,GAAG,CAAC,CAAC;KAC7F;IAED,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;QACpB,MAAM,IAAI,KAAK,CAAC,sDAAsD,WAAW,GAAG,CAAC,CAAC;KACvF;IAED,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;IAErC,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAElD,MAAM,UAAU,GAAG,IAAI,CAAC;QACtB,GAAG,UAAU;QACb,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,WAAW;KAC7D,CAAC,CAAC;IAEH,qCAAqC;IACrC,MAAM,UAAU,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,UAAU,CAAC,CAAC;IAEzD,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,UAAU;KACX,CAAC;AACJ,CAAC","sourcesContent":["import { isExternalPackage } from '@ms-cloudpack/package-utilities';\nimport hash from 'object-hash';\nimport filenamify from 'filenamify';\nimport path from 'path';\nimport { getCachePath } from './getCachePath.js';\nimport type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\n\nexport async function getBundleLocation(\n options: { packagePath: string },\n context: { packages: PackageDefinitionsCache },\n) {\n const { packagePath } = options;\n const { packages } = context;\n const definition = await packages.get(packagePath);\n\n if (!definition) {\n throw new Error(`Package definition (package.json) missing or invalid at \"${packagePath}\"`);\n }\n\n if (!definition.name) {\n throw new Error(`Package definition (package.json) missing name at \"${packagePath}\"`);\n }\n\n const { name, version } = definition;\n\n const isExternal = isExternalPackage(packagePath);\n\n const hashResult = hash({\n ...definition,\n version: (isExternal ? version : packagePath) || packagePath,\n });\n\n // Derive where the output should be.\n const folderName = `${filenamify(name)}-${version}-${hashResult}`;\n const outputPath = path.join(getCachePath(), folderName);\n\n return {\n path: outputPath,\n folderName,\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPackagesToSync.d.ts","sourceRoot":"","sources":["../../src/utilities/getPackagesToSync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,
|
|
1
|
+
{"version":3,"file":"getPackagesToSync.d.ts","sourceRoot":"","sources":["../../src/utilities/getPackagesToSync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,iCAAiC,CAAC;AAGzC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAC/C,QAAQ,EAAE,uBAAuB,CAAC;IAClC,UAAU,EAAE,UAAU,CAAC;CACxB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAsB3B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { findResolveMapEntry } from '@ms-cloudpack/package-utilities';
|
|
2
|
-
import {
|
|
1
|
+
import { findResolveMapEntry, isExternalPackage, } from '@ms-cloudpack/package-utilities';
|
|
2
|
+
import { getBundleLocation } from './getBundleLocation.js';
|
|
3
3
|
export async function getPackagesToSync(options) {
|
|
4
4
|
const { packages, resolveMap } = options;
|
|
5
5
|
const list = [];
|
|
@@ -10,9 +10,10 @@ export async function getPackagesToSync(options) {
|
|
|
10
10
|
}))
|
|
11
11
|
.filter((item) => item);
|
|
12
12
|
for (const { path: packagePath, name, version } of packageEntries) {
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
const isExternal = isExternalPackage(packagePath);
|
|
14
|
+
const outputLocation = await getBundleLocation({ packagePath }, { packages });
|
|
15
|
+
if (isExternal) {
|
|
16
|
+
list.push({ ...outputLocation, friendlyName: `${name}@${version}` });
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
19
|
return list;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPackagesToSync.js","sourceRoot":"","sources":["../../src/utilities/getPackagesToSync.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"getPackagesToSync.js","sourceRoot":"","sources":["../../src/utilities/getPackagesToSync.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAGlB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAQ3D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAGvC;IACC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACzC,MAAM,IAAI,GAAoB,EAAE,CAAC;IAEjC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;SAC3C,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CACnB,mBAAmB,CAAC;QAClB,WAAW;QACX,UAAU;KACX,CAAC,CACH;SACA,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAsB,CAAC;IAE/C,KAAK,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,cAAc,EAAE;QACjE,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9E,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,cAAc,EAAE,YAAY,EAAE,GAAG,IAAI,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC;SACtE;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\nimport {\n findResolveMapEntry,\n isExternalPackage,\n type ResolveMap,\n type ResolveMapEntry,\n} from '@ms-cloudpack/package-utilities';\nimport { getBundleLocation } from './getBundleLocation.js';\n\nexport interface PackageToSync {\n path: string;\n folderName: string;\n friendlyName: string;\n}\n\nexport async function getPackagesToSync(options: {\n packages: PackageDefinitionsCache;\n resolveMap: ResolveMap;\n}): Promise<PackageToSync[]> {\n const { packages, resolveMap } = options;\n const list: PackageToSync[] = [];\n\n const packageEntries = Object.keys(resolveMap)\n .map((packageName) =>\n findResolveMapEntry({\n packageName,\n resolveMap,\n }),\n )\n .filter((item) => item) as ResolveMapEntry[];\n\n for (const { path: packagePath, name, version } of packageEntries) {\n const isExternal = isExternalPackage(packagePath);\n const outputLocation = await getBundleLocation({ packagePath }, { packages });\n if (isExternal) {\n list.push({ ...outputLocation, friendlyName: `${name}@${version}` });\n }\n }\n\n return list;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isCachedResultValid.d.ts","sourceRoot":"","sources":["../../src/utilities/isCachedResultValid.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,UAAU,0BAA0B;IAClC,aAAa,EAAE,aAAa,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"isCachedResultValid.d.ts","sourceRoot":"","sources":["../../src/utilities/isCachedResultValid.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,UAAU,0BAA0B;IAClC,aAAa,EAAE,aAAa,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CA8BhF"}
|
|
@@ -11,10 +11,14 @@ export function isCachedResultValid(options) {
|
|
|
11
11
|
// The result is undefined, so the result is invalid
|
|
12
12
|
return false;
|
|
13
13
|
}
|
|
14
|
-
if (result
|
|
14
|
+
if (result.errors?.length) {
|
|
15
15
|
// There are errors, so the result is invalid
|
|
16
16
|
return false;
|
|
17
17
|
}
|
|
18
|
+
if (!result.outputPath) {
|
|
19
|
+
// outputPath used to be an optional field, however, we do not want it to be undefined anymore.
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
18
22
|
if (enableCacheInternalPackages && !isExternal && result.hash !== hash) {
|
|
19
23
|
// The package is internal, enableCacheInternalPackages is enabled but hashes do not match, this is an invalid result.
|
|
20
24
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isCachedResultValid.js","sourceRoot":"","sources":["../../src/utilities/isCachedResultValid.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAQxB;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAmC;IACrE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,EAAE,2BAA2B,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;IAE1E,IAAI,CAAC,MAAM,EAAE;QACX,oDAAoD;QACpD,OAAO,KAAK,CAAC;KACd;IAED,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"isCachedResultValid.js","sourceRoot":"","sources":["../../src/utilities/isCachedResultValid.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAQxB;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAmC;IACrE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,EAAE,2BAA2B,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;IAE1E,IAAI,CAAC,MAAM,EAAE;QACX,oDAAoD;QACpD,OAAO,KAAK,CAAC;KACd;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE;QACzB,6CAA6C;QAC7C,OAAO,KAAK,CAAC;KACd;IAED,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;QACtB,+FAA+F;QAC/F,OAAO,KAAK,CAAC;KACd;IAED,IAAI,2BAA2B,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE;QACtE,sHAAsH;QACtH,OAAO,KAAK,CAAC;KACd;IAED,gCAAgC;IAChC,IAAI,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE;QAC7E,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import path from 'path';\nimport type { BundleRequest } from '../types/BundleRequest.js';\n\ninterface IsCachedResultValidOptions {\n bundleRequest: BundleRequest;\n hash?: string;\n}\n\n/**\n * Validates the result of a bundle request.\n * @param options - The options to use when validating the result.\n * @returns True if the result is valid, false otherwise.\n */\nexport function isCachedResultValid(options: IsCachedResultValidOptions): boolean {\n const { bundleRequest, hash } = options;\n const { enableCacheInternalPackages, isExternal, result } = bundleRequest;\n\n if (!result) {\n // The result is undefined, so the result is invalid\n return false;\n }\n\n if (result.errors?.length) {\n // There are errors, so the result is invalid\n return false;\n }\n\n if (!result.outputPath) {\n // outputPath used to be an optional field, however, we do not want it to be undefined anymore.\n return false;\n }\n\n if (enableCacheInternalPackages && !isExternal && result.hash !== hash) {\n // The package is internal, enableCacheInternalPackages is enabled but hashes do not match, this is an invalid result.\n return false;\n }\n\n // Output files must be relative\n if (result.outputFiles?.find(({ outputPath }) => path.isAbsolute(outputPath))) {\n return false;\n }\n\n return true;\n}\n"]}
|