@ms-cloudpack/api-server 0.58.17 → 0.60.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/addPackageOverride.d.ts +1 -1
- package/lib/apis/addPackageOverride.d.ts.map +1 -1
- package/lib/apis/addPackageOverride.js.map +1 -1
- package/lib/apis/ensurePackageBundled.d.ts +18 -6
- package/lib/apis/ensurePackageBundled.d.ts.map +1 -1
- package/lib/apis/ensurePackageBundled.js +25 -20
- package/lib/apis/ensurePackageBundled.js.map +1 -1
- package/lib/apis/restartTask.d.ts +4 -0
- package/lib/apis/restartTask.d.ts.map +1 -1
- package/lib/apis/restartTask.js +4 -0
- package/lib/apis/restartTask.js.map +1 -1
- package/lib/apis/syncUpload.d.ts +5 -2
- package/lib/apis/syncUpload.d.ts.map +1 -1
- package/lib/apis/syncUpload.js +1 -0
- package/lib/apis/syncUpload.js.map +1 -1
- package/lib/common/createApiContext.d.ts +29 -0
- package/lib/common/createApiContext.d.ts.map +1 -0
- package/lib/common/createApiContext.js +62 -0
- package/lib/common/createApiContext.js.map +1 -0
- package/lib/common/createSession.d.ts +7 -0
- package/lib/common/createSession.d.ts.map +1 -1
- package/lib/common/createSession.js +1 -0
- package/lib/common/createSession.js.map +1 -1
- package/lib/index.d.ts +1 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/trpc/common.d.ts +5 -3
- package/lib/trpc/common.d.ts.map +1 -1
- package/lib/trpc/common.js.map +1 -1
- package/lib/trpc/createCloudpackServer.d.ts.map +1 -1
- package/lib/trpc/createCloudpackServer.js +1 -2
- package/lib/trpc/createCloudpackServer.js.map +1 -1
- package/lib/types/BundleRequest.d.ts +3 -1
- package/lib/types/BundleRequest.d.ts.map +1 -1
- package/lib/types/BundleRequest.js.map +1 -1
- package/lib/types/Context.d.ts +6 -5
- package/lib/types/Context.d.ts.map +1 -1
- package/lib/types/Context.js.map +1 -1
- package/lib/types/Task.d.ts +1 -0
- package/lib/types/Task.d.ts.map +1 -1
- package/lib/types/Task.js.map +1 -1
- package/lib/utilities/TaskRunner.d.ts +22 -11
- package/lib/utilities/TaskRunner.d.ts.map +1 -1
- package/lib/utilities/TaskRunner.js +24 -25
- package/lib/utilities/TaskRunner.js.map +1 -1
- package/lib/utilities/bundleTask.js +3 -2
- package/lib/utilities/bundleTask.js.map +1 -1
- package/lib/utilities/createBundleTask.d.ts +1 -1
- package/lib/utilities/createBundleTask.d.ts.map +1 -1
- package/lib/utilities/createBundleTask.js.map +1 -1
- package/lib/utilities/notifyReload.d.ts +2 -8
- package/lib/utilities/notifyReload.d.ts.map +1 -1
- package/lib/utilities/notifyReload.js.map +1 -1
- package/package.json +13 -13
- package/lib/common/createPartialApiContext.d.ts +0 -17
- package/lib/common/createPartialApiContext.d.ts.map +0 -1
- package/lib/common/createPartialApiContext.js +0 -170
- package/lib/common/createPartialApiContext.js.map +0 -1
- package/lib/trpc/createContextFactory.d.ts +0 -9
- package/lib/trpc/createContextFactory.d.ts.map +0 -1
- package/lib/trpc/createContextFactory.js +0 -17
- package/lib/trpc/createContextFactory.js.map +0 -1
- package/lib/types/TaskOptions.d.ts +0 -6
- package/lib/types/TaskOptions.d.ts.map +0 -1
- package/lib/types/TaskOptions.js +0 -2
- package/lib/types/TaskOptions.js.map +0 -1
- package/lib/types/TaskRunnerContext.d.ts +0 -3
- package/lib/types/TaskRunnerContext.d.ts.map +0 -1
- package/lib/types/TaskRunnerContext.js +0 -2
- package/lib/types/TaskRunnerContext.js.map +0 -1
|
@@ -32,7 +32,7 @@ export type AddPackageOverrideInput = z.infer<typeof ZodAddPackageOverrideInput>
|
|
|
32
32
|
/**
|
|
33
33
|
* Adds an override to the Cloudpack config.
|
|
34
34
|
*/
|
|
35
|
-
export declare function addPackageOverride(params: ApiParams<AddPackageOverrideInput, 'bus' | '
|
|
35
|
+
export declare function addPackageOverride(params: ApiParams<AddPackageOverrideInput, 'bus' | 'taskRunner' | 'packages' | 'session' | 'packageHashes' | 'telemetryClient'>): Promise<boolean>;
|
|
36
36
|
export declare namespace addPackageOverride {
|
|
37
37
|
var procedure: import("@trpc/server").TRPCMutationProcedure<{
|
|
38
38
|
input: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addPackageOverride.d.ts","sourceRoot":"","sources":["../../src/apis/addPackageOverride.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGvD,QAAA,MAAM,0BAA0B;IAC9B;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;;;;;;;;;;;EAEH,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEjF;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,SAAS,CACf,uBAAuB,
|
|
1
|
+
{"version":3,"file":"addPackageOverride.d.ts","sourceRoot":"","sources":["../../src/apis/addPackageOverride.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGvD,QAAA,MAAM,0BAA0B;IAC9B;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;;;;;;;;;;;EAEH,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEjF;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,SAAS,CACf,uBAAuB,EACvB,KAAK,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,eAAe,GAAG,iBAAiB,CACpF,GACA,OAAO,CAAC,OAAO,CAAC,CAqBlB;yBA1BqB,kBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addPackageOverride.js","sourceRoot":"","sources":["../../src/apis/addPackageOverride.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C;;OAEG;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IAEvB;;OAEG;IACH,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IAEtB;;OAEG;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE9B;;OAEG;IACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAGH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,
|
|
1
|
+
{"version":3,"file":"addPackageOverride.js","sourceRoot":"","sources":["../../src/apis/addPackageOverride.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C;;OAEG;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IAEvB;;OAEG;IACH,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IAEtB;;OAEG;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE9B;;OAEG;IACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAGH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAGC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAC9B,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,GAAG,CAAC;IACnF,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IACjF,IAAI,KAAK,IAAI,aAAa,EAAE,CAAC;QAC3B,wFAAwF;QACxF,MAAM,aAAa,CAAC,GAAG,CAAC;YACtB,WAAW,EAAE,KAAK,CAAC,IAAI;YACvB,sBAAsB,EAAE,KAAK;YAC7B,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;QACH,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,gFAAgF;QAChF,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;YAC/C,uEAAuE;YACvE,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,YAAY,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,kBAAkB,CAAC,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\nimport { publicProcedure } from '../trpc/common.js';\nimport { addOverride } from '../utilities/addOverride.js';\nimport { notifyReload } from '../utilities/notifyReload.js';\nimport type { ApiParams } from '../types/ApiParams.js';\nimport { errorEntrySource } from '../data/busSources.js';\n\nconst ZodAddPackageOverrideInput = z.object({\n /**\n * The package name to override.\n */\n packageName: z.string(),\n\n /**\n * The import path to add for the package.\n */\n importPath: z.string(),\n\n /**\n * The version of the package to override.\n */\n version: z.string().optional(),\n\n /**\n * URL that issued the import.\n */\n issuerUrl: z.string().optional(),\n});\nexport type AddPackageOverrideInput = z.infer<typeof ZodAddPackageOverrideInput>;\n\n/**\n * Adds an override to the Cloudpack config.\n */\nexport async function addPackageOverride(\n params: ApiParams<\n AddPackageOverrideInput,\n 'bus' | 'taskRunner' | 'packages' | 'session' | 'packageHashes' | 'telemetryClient'\n >,\n): Promise<boolean> {\n const { input, ctx } = params;\n const { session, bus, packages, taskRunner, packageHashes, telemetryClient } = ctx;\n const { addedOverride, entry } = await addOverride(input, { session, packages });\n if (entry && addedOverride) {\n // The import map hash needs to be recalculated to ensure that the client is up to date.\n await packageHashes.get({\n packagePath: entry.path,\n isSourceHashingEnabled: false,\n shouldRecalculate: true,\n });\n taskRunner.remove(entry.path);\n // Incrementing the target version will cause the import map to be recalculated.\n session.incrementTargetVersion(entry.path);\n if (session.config.features?.autoUpdateEntries) {\n // We can clear the error message now that the override has been added.\n bus.publish(errorEntrySource, '');\n }\n await notifyReload({ reason: 'add-package-override' }, { bus, session, telemetryClient });\n }\n return addedOverride;\n}\n\naddPackageOverride.procedure = publicProcedure.input(ZodAddPackageOverrideInput).mutation(addPackageOverride);\n"]}
|
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
import type { BundleRequest } from '../types/BundleRequest.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type { Context } from '../types/Context.js';
|
|
3
|
+
import type { TargetEnvironment, WithOptional } from '@ms-cloudpack/common-types';
|
|
3
4
|
/**
|
|
4
5
|
* Input for `ensurePackageBundled`.
|
|
5
6
|
*/
|
|
6
7
|
export interface EnsurePackageBundledInput extends Pick<BundleRequest, 'outputPath' | 'version' | 'disableSourceMaps' | 'shouldGetBundleInfo'> {
|
|
7
8
|
/** Package name */
|
|
8
9
|
name: string;
|
|
10
|
+
/**
|
|
11
|
+
* Target environment for the bundle.
|
|
12
|
+
* @default 'browser'
|
|
13
|
+
*/
|
|
14
|
+
targetEnvironment?: TargetEnvironment;
|
|
9
15
|
/** Whether to also ensure dependencies are bundled */
|
|
10
16
|
enqueueDependencies?: boolean;
|
|
11
17
|
/** Whether to re-run the bundle task */
|
|
12
18
|
shouldRerun?: boolean;
|
|
13
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Whether to watch for changes (internal packages only).
|
|
21
|
+
* NOTE: requires `ctx.bus` and `ctx.watcher` to be set.
|
|
22
|
+
*/
|
|
14
23
|
shouldWatch?: boolean;
|
|
15
24
|
/** Whether to force re-bundling */
|
|
16
25
|
shouldForce?: boolean;
|
|
@@ -51,10 +60,13 @@ export interface EnsurePackageBundledOutput {
|
|
|
51
60
|
/** Results of bundling dependencies */
|
|
52
61
|
dependencies: Promise<EnsurePackageBundledResult[]>;
|
|
53
62
|
}
|
|
63
|
+
export type EnsurePackageBundledContext = WithOptional<Context, 'bus' | 'watcher'>;
|
|
54
64
|
/**
|
|
55
|
-
* Checks if the package is bundled or needs bundling, and returns the result.
|
|
56
|
-
* we also notify the watcher to monitor for code changes.
|
|
65
|
+
* Checks if the package is bundled or needs bundling, and returns the result.
|
|
66
|
+
* For internal packages, we also notify the watcher to monitor for code changes.
|
|
57
67
|
*/
|
|
58
|
-
export declare function ensurePackageBundled(params:
|
|
59
|
-
|
|
68
|
+
export declare function ensurePackageBundled(params: {
|
|
69
|
+
input: EnsurePackageBundledInput;
|
|
70
|
+
ctx: EnsurePackageBundledContext;
|
|
71
|
+
}): Promise<EnsurePackageBundledOutput>;
|
|
60
72
|
//# sourceMappingURL=ensurePackageBundled.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensurePackageBundled.d.ts","sourceRoot":"","sources":["../../src/apis/ensurePackageBundled.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ensurePackageBundled.d.ts","sourceRoot":"","sources":["../../src/apis/ensurePackageBundled.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,yBACf,SAAQ,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,SAAS,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;IACnG,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wCAAwC;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mCAAmC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kCAAkC;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wFAAwF;IACxF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,0BACf,SAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;IACvG,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,2FAA2F;IAC3F,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,sCAAsC;IACtC,MAAM,EAAE,0BAA0B,CAAC;IACnC,uCAAuC;IACvC,YAAY,EAAE,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAAC;CACrD;AAED,MAAM,MAAM,2BAA2B,GAAG,YAAY,CAAC,OAAO,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC;AAEnF;;;GAGG;AAEH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,KAAK,EAAE,yBAAyB,CAAC;IACjC,GAAG,EAAE,2BAA2B,CAAC;CAClC,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAyDtC"}
|
|
@@ -3,9 +3,10 @@ import { notifyReload } from '../utilities/notifyReload.js';
|
|
|
3
3
|
import { createBundleTask } from '../utilities/createBundleTask.js';
|
|
4
4
|
import { getConsumedDependencies } from '../utilities/getConsumedDependencies.js';
|
|
5
5
|
/**
|
|
6
|
-
* Checks if the package is bundled or needs bundling, and returns the result.
|
|
7
|
-
* we also notify the watcher to monitor for code changes.
|
|
6
|
+
* Checks if the package is bundled or needs bundling, and returns the result.
|
|
7
|
+
* For internal packages, we also notify the watcher to monitor for code changes.
|
|
8
8
|
*/
|
|
9
|
+
// This is not actually a tRPC API, but it follows the same signature for now.
|
|
9
10
|
export async function ensurePackageBundled(params) {
|
|
10
11
|
const { input, ctx } = params;
|
|
11
12
|
const results = [];
|
|
@@ -62,8 +63,8 @@ export async function ensurePackageBundled(params) {
|
|
|
62
63
|
}
|
|
63
64
|
async function ensurePackageBundledInternal(params) {
|
|
64
65
|
const { input, ctx, visited } = params;
|
|
65
|
-
const { name, version, shouldWatch, disableSourceMaps, outputPath, shouldGetBundleInfo, shouldRerun, shouldForce, disableCache, isIncremental, useHashAsId, priority, } = input;
|
|
66
|
-
const { taskRunner, session, watcher, packageHashes } = ctx;
|
|
66
|
+
const { name, version, shouldWatch, disableSourceMaps, outputPath, shouldGetBundleInfo, shouldRerun, shouldForce, disableCache, isIncremental, useHashAsId, priority, targetEnvironment = 'browser', } = input;
|
|
67
|
+
const { taskRunner, session, watcher, packageHashes, bus, telemetryClient } = ctx;
|
|
67
68
|
const { resolveMap, config } = session;
|
|
68
69
|
const { features } = config;
|
|
69
70
|
const enqueueDependencies = input.enqueueDependencies ?? features?.enqueueDependencies;
|
|
@@ -76,19 +77,6 @@ async function ensurePackageBundledInternal(params) {
|
|
|
76
77
|
throw new Error(`Could not find package ${name} in the resolve map.`);
|
|
77
78
|
}
|
|
78
79
|
const isExternal = !!packageEntry.isExternal;
|
|
79
|
-
const bundleRequest = {
|
|
80
|
-
id: packageEntry.path,
|
|
81
|
-
packagePath: packageEntry.path,
|
|
82
|
-
packageName: name,
|
|
83
|
-
isExternal,
|
|
84
|
-
isIncremental,
|
|
85
|
-
outputPath,
|
|
86
|
-
version,
|
|
87
|
-
disableSourceMaps: disableSourceMaps ?? features?.disableSourceMaps,
|
|
88
|
-
shouldGetBundleInfo: shouldGetBundleInfo || enqueueDependencies,
|
|
89
|
-
disableCache,
|
|
90
|
-
mode: config.mode,
|
|
91
|
-
};
|
|
92
80
|
let hash = undefined;
|
|
93
81
|
let sourceHash = undefined;
|
|
94
82
|
if (useHashAsId) {
|
|
@@ -107,9 +95,23 @@ async function ensurePackageBundledInternal(params) {
|
|
|
107
95
|
shouldRecalculate: true,
|
|
108
96
|
});
|
|
109
97
|
}
|
|
110
|
-
// Use the hash as the id
|
|
111
|
-
bundleRequest.id = hash;
|
|
112
98
|
}
|
|
99
|
+
const bundleRequest = {
|
|
100
|
+
// TODO: David had this as follows--think about what it should be
|
|
101
|
+
// id: hash ?? `${packageEntry.path}--env:${targetEnvironment}`,
|
|
102
|
+
id: (useHashAsId && hash) || packageEntry.path,
|
|
103
|
+
packagePath: packageEntry.path,
|
|
104
|
+
packageName: name,
|
|
105
|
+
targetEnvironment,
|
|
106
|
+
isExternal,
|
|
107
|
+
isIncremental,
|
|
108
|
+
outputPath,
|
|
109
|
+
version,
|
|
110
|
+
disableSourceMaps: disableSourceMaps ?? features?.disableSourceMaps,
|
|
111
|
+
shouldGetBundleInfo: shouldGetBundleInfo || enqueueDependencies,
|
|
112
|
+
disableCache,
|
|
113
|
+
mode: config.mode,
|
|
114
|
+
};
|
|
113
115
|
// Make priority negative to have retry count set to positive values.
|
|
114
116
|
const retryCount = priority ? -1 * priority : undefined;
|
|
115
117
|
const task = createBundleTask({ bundleRequest, force: shouldForce, hash, sourceHash, retryCount }, ctx);
|
|
@@ -120,6 +122,9 @@ async function ensurePackageBundledInternal(params) {
|
|
|
120
122
|
}
|
|
121
123
|
// For internal packages, make sure we're watching the source to re-trigger bundling.
|
|
122
124
|
if (shouldWatch && !isExternal) {
|
|
125
|
+
if (!bus || !watcher) {
|
|
126
|
+
throw new Error('bus and watcher must be provided in context if shouldWatch is true (this is a bug).');
|
|
127
|
+
}
|
|
123
128
|
const definition = await ctx.packages.get(packageEntry.path);
|
|
124
129
|
const watchOptions = {
|
|
125
130
|
id: bundleRequest.id,
|
|
@@ -130,7 +135,7 @@ async function ensurePackageBundledInternal(params) {
|
|
|
130
135
|
const watchedResult = await taskRunner.add(task, { rerun: true });
|
|
131
136
|
// If the result was successful, notify potential clients for reload.
|
|
132
137
|
if (watchedResult.result?.errors?.length === 0) {
|
|
133
|
-
await notifyReload({ reason: 'on-package-change' },
|
|
138
|
+
await notifyReload({ reason: 'on-package-change' }, { bus, session, telemetryClient });
|
|
134
139
|
}
|
|
135
140
|
};
|
|
136
141
|
watcher.watch(watchOptions, () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensurePackageBundled.js","sourceRoot":"","sources":["../../src/apis/ensurePackageBundled.ts"],"names":[],"mappings":"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","sourcesContent":["import { findResolveMapEntry } from '@ms-cloudpack/package-utilities';\nimport { notifyReload } from '../utilities/notifyReload.js';\nimport type { BundleRequest } from '../types/BundleRequest.js';\nimport { createBundleTask } from '../utilities/createBundleTask.js';\nimport type { ApiParams } from '../types/ApiParams.js';\nimport type { WatchOptions } from '@ms-cloudpack/file-watcher';\nimport { getConsumedDependencies } from '../utilities/getConsumedDependencies.js';\n\n/**\n * Input for `ensurePackageBundled`.\n */\nexport interface EnsurePackageBundledInput\n extends Pick<BundleRequest, 'outputPath' | 'version' | 'disableSourceMaps' | 'shouldGetBundleInfo'> {\n /** Package name */\n name: string;\n /** Whether to also ensure dependencies are bundled */\n enqueueDependencies?: boolean;\n /** Whether to re-run the bundle task */\n shouldRerun?: boolean;\n /** Whether to watch for changes (internal packages only) */\n shouldWatch?: boolean;\n /** Whether to force re-bundling */\n shouldForce?: boolean;\n /** Whether to disable caching. */\n disableCache?: boolean;\n /** Whether to support incremental rebuilds. Defaults to true for internal libraries. */\n isIncremental?: boolean;\n /**\n * Whether to use a hash as the bundle id instead of the path.\n * Reduces performance when used with shouldForce as it hashes twice,\n * but eliminates task cache artifacts when handling many apps.\n */\n useHashAsId?: boolean;\n /** Priority for bundling. Greater priority will be scheduled first (defaults to 0). */\n priority?: number;\n}\n\n/**\n * Result of ensuring a single package is bundled.\n */\nexport interface EnsurePackageBundledResult\n extends Omit<NonNullable<BundleRequest['result']>, 'rebuild' | 'dispose' | 'bundlerName' | 'inputPath'> {\n /** Package name */\n name: string;\n /** Package version */\n version: string;\n /** Package dependency names (prod and peer) */\n dependencies?: string[];\n /** Whether the package is external (not defined in this repo). Unset if it's not found. */\n isExternal?: boolean;\n /** Absolute path of the package. Will be unset if the package couldn't be found. */\n inputPath?: string;\n}\n\n/**\n * Complete output for `ensurePackageBundled`.\n */\nexport interface EnsurePackageBundledOutput {\n /** Result of bundling this package */\n result: EnsurePackageBundledResult;\n /** Results of bundling dependencies */\n dependencies: Promise<EnsurePackageBundledResult[]>;\n}\n\n/**\n * Checks if the package is bundled or needs bundling, and returns the result. For internal packages,\n * we also notify the watcher to monitor for code changes.\n */\nexport async function ensurePackageBundled(\n params: ApiParams<\n EnsurePackageBundledInput,\n | 'bus'\n | 'taskRunner'\n | 'session'\n | 'watcher'\n | 'packages'\n | 'reporter'\n | 'telemetryClient'\n | 'packageImportPaths'\n | 'packageHashes'\n | 'remoteCacheClient'\n >,\n): Promise<EnsurePackageBundledOutput> {\n const { input, ctx } = params;\n const results: EnsurePackageBundledResult[] = [];\n const visited = new Set<`${string}@${string}`>();\n\n // Bundle the package itself\n let result: EnsurePackageBundledResult;\n let mainDependencies: EnsurePackageBundledInput[];\n try {\n ({ result, dependencyInputs: mainDependencies } = await ensurePackageBundledInternal({ input, ctx, visited }));\n } catch (err) {\n return {\n result: getErrorResult(input, err),\n dependencies: Promise.resolve([]),\n };\n }\n\n // Enqueue main dependencies\n // TODO: should processing this queue have a rate limit? right now if enqueueDependencies is enabled,\n // `await dependencies` will fire off all deps at once.\n let pending = 0;\n const dependencies = new Promise<EnsurePackageBundledResult[]>((resolve) => {\n const enqueue = (dependencyInputs: EnsurePackageBundledInput[]) => {\n for (const dependencyInput of dependencyInputs) {\n pending++;\n\n void ensurePackageBundledInternal({\n input: dependencyInput,\n ctx,\n visited,\n })\n .then((dependencyBundleResult) => {\n // Save result and enqueue this dep's deps\n results.push(dependencyBundleResult.result);\n enqueue(dependencyBundleResult.dependencyInputs);\n })\n .catch((err) => {\n // If there's an error (most likely that the dependency wasn't found in the resolve map),\n // save it in a result instead of throwing. This generally gives better logging.\n results.push(getErrorResult(dependencyInput, err));\n })\n .then(() => {\n pending--;\n if (!pending) {\n resolve(results);\n }\n });\n }\n };\n\n enqueue(mainDependencies);\n });\n\n return {\n result,\n dependencies,\n };\n}\n\nasync function ensurePackageBundledInternal(\n params: Parameters<typeof ensurePackageBundled>[0] & {\n visited: Set<`${string}@${string}`>;\n },\n): Promise<{ result: EnsurePackageBundledResult; dependencyInputs: EnsurePackageBundledInput[] }> {\n const { input, ctx, visited } = params;\n const {\n name,\n version,\n shouldWatch,\n disableSourceMaps,\n outputPath,\n shouldGetBundleInfo,\n shouldRerun,\n shouldForce,\n disableCache,\n isIncremental,\n useHashAsId,\n priority,\n } = input;\n const { taskRunner, session, watcher, packageHashes } = ctx;\n const { resolveMap, config } = session;\n const { features } = config;\n const enqueueDependencies = input.enqueueDependencies ?? features?.enqueueDependencies;\n const dependencyInputs: EnsurePackageBundledInput[] = [];\n\n visited.add(`${name}@${version}`);\n\n // First, we find the resolve map entry. This helps us resolve the physical location of the package\n // according to the resolveMap used in the session. (This can change based on linking.)\n const packageEntry = findResolveMapEntry({ packageName: name, version, resolveMap });\n\n if (!packageEntry) {\n throw new Error(`Could not find package ${name} in the resolve map.`);\n }\n\n const isExternal = !!packageEntry.isExternal;\n\n const bundleRequest: BundleRequest = {\n id: packageEntry.path,\n packagePath: packageEntry.path,\n packageName: name,\n isExternal,\n isIncremental,\n outputPath,\n version,\n disableSourceMaps: disableSourceMaps ?? features?.disableSourceMaps,\n shouldGetBundleInfo: shouldGetBundleInfo || enqueueDependencies,\n disableCache,\n mode: config.mode,\n };\n\n let hash: string | undefined = undefined;\n let sourceHash: string | undefined = undefined;\n\n if (useHashAsId) {\n // If we are using the hash as the task id, we need to calculate it once and pass it to the task\n // to prevent a race condition in which we get a different hash than the one used in the task id.\n hash = await packageHashes.get({\n packagePath: packageEntry.path,\n isSourceHashingEnabled: false,\n shouldRecalculate: true,\n });\n\n if (!packageEntry.isExternal) {\n // We only need the source hash for internal packages for cache validation.\n sourceHash = await packageHashes.get({\n packagePath: packageEntry.path,\n isSourceHashingEnabled: true,\n shouldRecalculate: true,\n });\n }\n\n // Use the hash as the id\n bundleRequest.id = hash;\n }\n\n // Make priority negative to have retry count set to positive values.\n const retryCount = priority ? -1 * priority : undefined;\n\n const task = createBundleTask({ bundleRequest, force: shouldForce, hash, sourceHash, retryCount }, ctx);\n\n // TODO: Add lage scheduling back.\n const { result } = await taskRunner.add<BundleRequest>(task, { rerun: shouldRerun, priority });\n\n if (!result) {\n throw new Error('Bundle failed, no result');\n }\n\n // For internal packages, make sure we're watching the source to re-trigger bundling.\n if (shouldWatch && !isExternal) {\n const definition = await ctx.packages.get(packageEntry.path);\n const watchOptions: WatchOptions = {\n id: bundleRequest.id,\n path: packageEntry.path,\n watchPaths: definition.cloudpack?.inputPaths,\n };\n\n const onPackageChange = async () => {\n const watchedResult = await taskRunner.add<BundleRequest>(task, { rerun: true });\n\n // If the result was successful, notify potential clients for reload.\n if (watchedResult.result?.errors?.length === 0) {\n await notifyReload({ reason: 'on-package-change' }, ctx);\n }\n };\n watcher.watch(watchOptions, () => {\n void onPackageChange();\n });\n }\n\n // If enabled, enqueue dependencies.\n if (enqueueDependencies && result.info) {\n for (const dependencyName of getConsumedDependencies(result.info)) {\n const dependencyVersion = packageEntry.dependencies[dependencyName];\n\n // If we've already visited this package from another package, skip it.\n if (visited.has(`${dependencyName}@${dependencyVersion}`)) {\n continue;\n }\n\n dependencyInputs.push({\n name: dependencyName,\n version: dependencyVersion,\n shouldWatch,\n enqueueDependencies,\n });\n }\n }\n\n return {\n result: {\n version,\n name,\n isExternal,\n ...result,\n },\n dependencyInputs,\n };\n}\n\nfunction getErrorResult(input: EnsurePackageBundledInput, error: unknown): EnsurePackageBundledResult {\n const text = `Error thrown while bundling: ${error instanceof Error ? error.stack || error.message : error}`;\n return {\n name: input.name,\n version: input.version,\n errors: [{ text, source: 'ensurePackageBundled' }],\n };\n}\n\nexport type EnsurePackageBundledContext = Parameters<typeof ensurePackageBundled>[0]['ctx'];\n\n// This function doesn't have an attached procedure because it's never called via the TRPC server.\n"]}
|
|
1
|
+
{"version":3,"file":"ensurePackageBundled.js","sourceRoot":"","sources":["../../src/apis/ensurePackageBundled.ts"],"names":[],"mappings":"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","sourcesContent":["import { findResolveMapEntry } from '@ms-cloudpack/package-utilities';\nimport { notifyReload } from '../utilities/notifyReload.js';\nimport type { BundleRequest } from '../types/BundleRequest.js';\nimport { createBundleTask } from '../utilities/createBundleTask.js';\nimport type { Context } from '../types/Context.js';\nimport type { WatchOptions } from '@ms-cloudpack/file-watcher';\nimport { getConsumedDependencies } from '../utilities/getConsumedDependencies.js';\nimport type { TargetEnvironment, WithOptional } from '@ms-cloudpack/common-types';\n\n/**\n * Input for `ensurePackageBundled`.\n */\nexport interface EnsurePackageBundledInput\n extends Pick<BundleRequest, 'outputPath' | 'version' | 'disableSourceMaps' | 'shouldGetBundleInfo'> {\n /** Package name */\n name: string;\n /**\n * Target environment for the bundle.\n * @default 'browser'\n */\n targetEnvironment?: TargetEnvironment;\n /** Whether to also ensure dependencies are bundled */\n enqueueDependencies?: boolean;\n /** Whether to re-run the bundle task */\n shouldRerun?: boolean;\n /**\n * Whether to watch for changes (internal packages only).\n * NOTE: requires `ctx.bus` and `ctx.watcher` to be set.\n */\n shouldWatch?: boolean;\n /** Whether to force re-bundling */\n shouldForce?: boolean;\n /** Whether to disable caching. */\n disableCache?: boolean;\n /** Whether to support incremental rebuilds. Defaults to true for internal libraries. */\n isIncremental?: boolean;\n /**\n * Whether to use a hash as the bundle id instead of the path.\n * Reduces performance when used with shouldForce as it hashes twice,\n * but eliminates task cache artifacts when handling many apps.\n */\n useHashAsId?: boolean;\n /** Priority for bundling. Greater priority will be scheduled first (defaults to 0). */\n priority?: number;\n}\n\n/**\n * Result of ensuring a single package is bundled.\n */\nexport interface EnsurePackageBundledResult\n extends Omit<NonNullable<BundleRequest['result']>, 'rebuild' | 'dispose' | 'bundlerName' | 'inputPath'> {\n /** Package name */\n name: string;\n /** Package version */\n version: string;\n /** Package dependency names (prod and peer) */\n dependencies?: string[];\n /** Whether the package is external (not defined in this repo). Unset if it's not found. */\n isExternal?: boolean;\n /** Absolute path of the package. Will be unset if the package couldn't be found. */\n inputPath?: string;\n}\n\n/**\n * Complete output for `ensurePackageBundled`.\n */\nexport interface EnsurePackageBundledOutput {\n /** Result of bundling this package */\n result: EnsurePackageBundledResult;\n /** Results of bundling dependencies */\n dependencies: Promise<EnsurePackageBundledResult[]>;\n}\n\nexport type EnsurePackageBundledContext = WithOptional<Context, 'bus' | 'watcher'>;\n\n/**\n * Checks if the package is bundled or needs bundling, and returns the result.\n * For internal packages, we also notify the watcher to monitor for code changes.\n */\n// This is not actually a tRPC API, but it follows the same signature for now.\nexport async function ensurePackageBundled(params: {\n input: EnsurePackageBundledInput;\n ctx: EnsurePackageBundledContext;\n}): Promise<EnsurePackageBundledOutput> {\n const { input, ctx } = params;\n const results: EnsurePackageBundledResult[] = [];\n const visited = new Set<`${string}@${string}`>();\n\n // Bundle the package itself\n let result: EnsurePackageBundledResult;\n let mainDependencies: EnsurePackageBundledInput[];\n try {\n ({ result, dependencyInputs: mainDependencies } = await ensurePackageBundledInternal({ input, ctx, visited }));\n } catch (err) {\n return {\n result: getErrorResult(input, err),\n dependencies: Promise.resolve([]),\n };\n }\n\n // Enqueue main dependencies\n // TODO: should processing this queue have a rate limit? right now if enqueueDependencies is enabled,\n // `await dependencies` will fire off all deps at once.\n let pending = 0;\n const dependencies = new Promise<EnsurePackageBundledResult[]>((resolve) => {\n const enqueue = (dependencyInputs: EnsurePackageBundledInput[]) => {\n for (const dependencyInput of dependencyInputs) {\n pending++;\n\n void ensurePackageBundledInternal({\n input: dependencyInput,\n ctx,\n visited,\n })\n .then((dependencyBundleResult) => {\n // Save result and enqueue this dep's deps\n results.push(dependencyBundleResult.result);\n enqueue(dependencyBundleResult.dependencyInputs);\n })\n .catch((err) => {\n // If there's an error (most likely that the dependency wasn't found in the resolve map),\n // save it in a result instead of throwing. This generally gives better logging.\n results.push(getErrorResult(dependencyInput, err));\n })\n .then(() => {\n pending--;\n if (!pending) {\n resolve(results);\n }\n });\n }\n };\n\n enqueue(mainDependencies);\n });\n\n return {\n result,\n dependencies,\n };\n}\n\nasync function ensurePackageBundledInternal(\n params: Parameters<typeof ensurePackageBundled>[0] & {\n visited: Set<`${string}@${string}`>;\n },\n): Promise<{ result: EnsurePackageBundledResult; dependencyInputs: EnsurePackageBundledInput[] }> {\n const { input, ctx, visited } = params;\n const {\n name,\n version,\n shouldWatch,\n disableSourceMaps,\n outputPath,\n shouldGetBundleInfo,\n shouldRerun,\n shouldForce,\n disableCache,\n isIncremental,\n useHashAsId,\n priority,\n targetEnvironment = 'browser',\n } = input;\n const { taskRunner, session, watcher, packageHashes, bus, telemetryClient } = ctx;\n const { resolveMap, config } = session;\n const { features } = config;\n const enqueueDependencies = input.enqueueDependencies ?? features?.enqueueDependencies;\n const dependencyInputs: EnsurePackageBundledInput[] = [];\n\n visited.add(`${name}@${version}`);\n\n // First, we find the resolve map entry. This helps us resolve the physical location of the package\n // according to the resolveMap used in the session. (This can change based on linking.)\n const packageEntry = findResolveMapEntry({ packageName: name, version, resolveMap });\n\n if (!packageEntry) {\n throw new Error(`Could not find package ${name} in the resolve map.`);\n }\n\n const isExternal = !!packageEntry.isExternal;\n\n let hash: string | undefined = undefined;\n let sourceHash: string | undefined = undefined;\n\n if (useHashAsId) {\n // If we are using the hash as the task id, we need to calculate it once and pass it to the task\n // to prevent a race condition in which we get a different hash than the one used in the task id.\n hash = await packageHashes.get({\n packagePath: packageEntry.path,\n isSourceHashingEnabled: false,\n shouldRecalculate: true,\n });\n\n if (!packageEntry.isExternal) {\n // We only need the source hash for internal packages for cache validation.\n sourceHash = await packageHashes.get({\n packagePath: packageEntry.path,\n isSourceHashingEnabled: true,\n shouldRecalculate: true,\n });\n }\n }\n\n const bundleRequest: BundleRequest = {\n // TODO: David had this as follows--think about what it should be\n // id: hash ?? `${packageEntry.path}--env:${targetEnvironment}`,\n id: (useHashAsId && hash) || packageEntry.path,\n packagePath: packageEntry.path,\n packageName: name,\n targetEnvironment,\n isExternal,\n isIncremental,\n outputPath,\n version,\n disableSourceMaps: disableSourceMaps ?? features?.disableSourceMaps,\n shouldGetBundleInfo: shouldGetBundleInfo || enqueueDependencies,\n disableCache,\n mode: config.mode,\n };\n\n // Make priority negative to have retry count set to positive values.\n const retryCount = priority ? -1 * priority : undefined;\n\n const task = createBundleTask({ bundleRequest, force: shouldForce, hash, sourceHash, retryCount }, ctx);\n\n // TODO: Add lage scheduling back.\n const { result } = await taskRunner.add<BundleRequest>(task, { rerun: shouldRerun, priority });\n\n if (!result) {\n throw new Error('Bundle failed, no result');\n }\n\n // For internal packages, make sure we're watching the source to re-trigger bundling.\n if (shouldWatch && !isExternal) {\n if (!bus || !watcher) {\n throw new Error('bus and watcher must be provided in context if shouldWatch is true (this is a bug).');\n }\n\n const definition = await ctx.packages.get(packageEntry.path);\n const watchOptions: WatchOptions = {\n id: bundleRequest.id,\n path: packageEntry.path,\n watchPaths: definition.cloudpack?.inputPaths,\n };\n\n const onPackageChange = async () => {\n const watchedResult = await taskRunner.add<BundleRequest>(task, { rerun: true });\n\n // If the result was successful, notify potential clients for reload.\n if (watchedResult.result?.errors?.length === 0) {\n await notifyReload({ reason: 'on-package-change' }, { bus, session, telemetryClient });\n }\n };\n watcher.watch(watchOptions, () => {\n void onPackageChange();\n });\n }\n\n // If enabled, enqueue dependencies.\n if (enqueueDependencies && result.info) {\n for (const dependencyName of getConsumedDependencies(result.info)) {\n const dependencyVersion = packageEntry.dependencies[dependencyName];\n\n // If we've already visited this package from another package, skip it.\n if (visited.has(`${dependencyName}@${dependencyVersion}`)) {\n continue;\n }\n\n dependencyInputs.push({\n name: dependencyName,\n version: dependencyVersion,\n shouldWatch,\n enqueueDependencies,\n });\n }\n }\n\n return {\n result: {\n version,\n name,\n isExternal,\n ...result,\n },\n dependencyInputs,\n };\n}\n\nfunction getErrorResult(input: EnsurePackageBundledInput, error: unknown): EnsurePackageBundledResult {\n const text = `Error thrown while bundling: ${error instanceof Error ? error.stack || error.message : error}`;\n return {\n name: input.name,\n version: input.version,\n errors: [{ text, source: 'ensurePackageBundled' }],\n };\n}\n\n// This function doesn't have an attached procedure because it's never called via the TRPC server.\n"]}
|
|
@@ -11,6 +11,10 @@ declare const ZodRestartTaskInput: z.ZodObject<{
|
|
|
11
11
|
inputPath: string;
|
|
12
12
|
}>;
|
|
13
13
|
export type RestartTaskInput = z.infer<typeof ZodRestartTaskInput>;
|
|
14
|
+
/**
|
|
15
|
+
* Remove the record of a specific task (usually bundle result) and notify the client to reload,
|
|
16
|
+
* which will trigger the task to be re-run.
|
|
17
|
+
*/
|
|
14
18
|
export declare function restartTask(params: ApiParams<RestartTaskInput, 'session' | 'bus' | 'taskRunner' | 'telemetryClient'>): Promise<void>;
|
|
15
19
|
export declare namespace restartTask {
|
|
16
20
|
var procedure: import("@trpc/server").TRPCMutationProcedure<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restartTask.d.ts","sourceRoot":"","sources":["../../src/apis/restartTask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,QAAA,MAAM,mBAAmB;;;;;;;;;EAGvB,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEnE,wBAAsB,WAAW,CAC/B,MAAM,EAAE,SAAS,CAAC,gBAAgB,EAAE,SAAS,GAAG,KAAK,GAAG,YAAY,GAAG,iBAAiB,CAAC,GACxF,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"restartTask.d.ts","sourceRoot":"","sources":["../../src/apis/restartTask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,QAAA,MAAM,mBAAmB;;;;;;;;;EAGvB,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEnE;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,SAAS,CAAC,gBAAgB,EAAE,SAAS,GAAG,KAAK,GAAG,YAAY,GAAG,iBAAiB,CAAC,GACxF,OAAO,CAAC,IAAI,CAAC,CASf;yBAXqB,WAAW"}
|
package/lib/apis/restartTask.js
CHANGED
|
@@ -5,6 +5,10 @@ const ZodRestartTaskInput = z.object({
|
|
|
5
5
|
id: z.string(),
|
|
6
6
|
inputPath: z.string(),
|
|
7
7
|
});
|
|
8
|
+
/**
|
|
9
|
+
* Remove the record of a specific task (usually bundle result) and notify the client to reload,
|
|
10
|
+
* which will trigger the task to be re-run.
|
|
11
|
+
*/
|
|
8
12
|
export async function restartTask(params) {
|
|
9
13
|
const { input, ctx } = params;
|
|
10
14
|
const { id, inputPath } = input;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restartTask.js","sourceRoot":"","sources":["../../src/apis/restartTask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG5D,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAGH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAyF;IAEzF,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAC9B,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAChC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"restartTask.js","sourceRoot":"","sources":["../../src/apis/restartTask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG5D,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAGH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAyF;IAEzF,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAC9B,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAChC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,GAAG,CAAC;IAE1D,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;IAClD,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtB,OAAO,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,YAAY,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;AACpF,CAAC;AAED,2CAA2C;AAC3C,WAAW,CAAC,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\nimport { publicProcedure } from '../trpc/common.js';\nimport { notifyReload } from '../utilities/notifyReload.js';\nimport type { ApiParams } from '../types/ApiParams.js';\n\nconst ZodRestartTaskInput = z.object({\n id: z.string(),\n inputPath: z.string(),\n});\nexport type RestartTaskInput = z.infer<typeof ZodRestartTaskInput>;\n\n/**\n * Remove the record of a specific task (usually bundle result) and notify the client to reload,\n * which will trigger the task to be re-run.\n */\nexport async function restartTask(\n params: ApiParams<RestartTaskInput, 'session' | 'bus' | 'taskRunner' | 'telemetryClient'>,\n): Promise<void> {\n const { input, ctx } = params;\n const { id, inputPath } = input;\n const { session, bus, taskRunner, telemetryClient } = ctx;\n\n console.debug(`ApiServer: Restarting task ${id}`);\n taskRunner.remove(id);\n session.incrementTargetVersion(inputPath);\n await notifyReload({ reason: 'restart-task' }, { bus, session, telemetryClient });\n}\n\n// Attach a trpc procedure to the function.\nrestartTask.procedure = publicProcedure.input(ZodRestartTaskInput).mutation(restartTask);\n"]}
|
package/lib/apis/syncUpload.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type EnsurePackageBundledContext } from './ensurePackageBundled.js';
|
|
2
2
|
import type { SyncResult } from '../types/SyncResult.js';
|
|
3
|
-
export declare function syncUpload(params:
|
|
3
|
+
export declare function syncUpload(params: {
|
|
4
|
+
input: undefined;
|
|
5
|
+
ctx: Omit<EnsurePackageBundledContext, 'bus' | 'watcher'>;
|
|
6
|
+
}): Promise<SyncResult>;
|
|
4
7
|
//# sourceMappingURL=syncUpload.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncUpload.d.ts","sourceRoot":"","sources":["../../src/apis/syncUpload.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"syncUpload.d.ts","sourceRoot":"","sources":["../../src/apis/syncUpload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAUnG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIzD,wBAAsB,UAAU,CAAC,MAAM,EAAE;IACvC,KAAK,EAAE,SAAS,CAAC;IACjB,GAAG,EAAE,IAAI,CAAC,2BAA2B,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC;CAC3D,GAAG,OAAO,CAAC,UAAU,CAAC,CAmEtB"}
|
package/lib/apis/syncUpload.js
CHANGED
|
@@ -9,6 +9,7 @@ import { getBundleLocation } from '../utilities/getBundleLocation.js';
|
|
|
9
9
|
import { cp } from 'fs/promises';
|
|
10
10
|
import objectHash from 'object-hash';
|
|
11
11
|
import { ensureRemoteCacheEnabled } from '../utilities/ensureRemoteCacheEnabled.js';
|
|
12
|
+
// This is not actually a tRPC API, but it follows the same signature for now.
|
|
12
13
|
export async function syncUpload(params) {
|
|
13
14
|
const { ctx } = params;
|
|
14
15
|
const { session, telemetryClient, taskRunner, remoteCacheClient: client } = ctx;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncUpload.js","sourceRoot":"","sources":["../../src/apis/syncUpload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"syncUpload.js","sourceRoot":"","sources":["../../src/apis/syncUpload.ts"],"names":[],"mappings":"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","sourcesContent":["import { ensurePackageBundled, type EnsurePackageBundledContext } from './ensurePackageBundled.js';\nimport { PerfMeasurementSyncUpload } from '../performance/markers.js';\nimport { getRemoteCachePromiseResultCounts } from '../utilities/getRemoteCachePromiseResultCounts.js';\nimport { createRemoteCacheClientOperationOptions } from '../utilities/createRemoteCacheClientOperationOptions.js';\nimport { createUploadTask } from '../utilities/createUploadTask.js';\nimport { isStaticRoute } from '@ms-cloudpack/common-types';\nimport path from 'path';\nimport { getBundleLocation } from '../utilities/getBundleLocation.js';\nimport { cp } from 'fs/promises';\nimport objectHash from 'object-hash';\nimport type { SyncResult } from '../types/SyncResult.js';\nimport { ensureRemoteCacheEnabled } from '../utilities/ensureRemoteCacheEnabled.js';\n\n// This is not actually a tRPC API, but it follows the same signature for now.\nexport async function syncUpload(params: {\n input: undefined;\n ctx: Omit<EnsurePackageBundledContext, 'bus' | 'watcher'>;\n}): Promise<SyncResult> {\n const { ctx } = params;\n const { session, telemetryClient, taskRunner, remoteCacheClient: client } = ctx;\n const { config } = session;\n const { appPath } = config;\n const syncInternalPackages = config?.features?.syncInternalPackages ?? false;\n\n ensureRemoteCacheEnabled(config);\n\n if (!client) {\n throw new Error('Remote cache client is required to sync upload');\n }\n\n // Glob pattern for the files to upload.\n const globMatches = ['**/*', '!**/*-input.json', '!**/*-output.json'];\n\n return await telemetryClient.tracer.startActiveSpan(PerfMeasurementSyncUpload, async (span) => {\n const { name, version } = await ctx.packages.get(appPath);\n\n const { dependencies, result: bundleResult } = await ensurePackageBundled({\n input: {\n name,\n version,\n enqueueDependencies: true,\n },\n ctx,\n });\n\n const bundledPackages = [bundleResult, ...(await dependencies)];\n const packagesToUpload = await Promise.all(\n bundledPackages\n .filter((p) => p.inputPath && (p.isExternal || syncInternalPackages))\n .map((p) =>\n createRemoteCacheClientOperationOptions(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- verified above that it's set\n { packagePath: p.inputPath! },\n ctx,\n ),\n ),\n );\n\n if (config.features?.enableCloudHosted) {\n const appOutputPath = (await getBundleLocation({ packagePath: appPath }, ctx)).path;\n const destinationFolder = path.join(appOutputPath, '__cloudpack');\n const routesPath = path.join(destinationFolder, 'routes');\n for (const route of config.routes ?? []) {\n if (isStaticRoute(route)) {\n const staticPath = path.resolve(appPath, route.staticPath);\n const routeHash = objectHash(route);\n const folderPath = path.join(routesPath, routeHash);\n await cp(staticPath, path.join(folderPath, route.staticPath), { recursive: true });\n }\n }\n }\n\n const uploads = packagesToUpload.map((pkg) =>\n taskRunner.add(createUploadTask({ client, options: { ...pkg, globMatches } })),\n );\n\n // Do not reject if there is a failure. Failed uploads will be logged in the task reporter.\n const promiseResults = await Promise.allSettled(uploads);\n\n const result = getRemoteCachePromiseResultCounts(promiseResults);\n span.setAttributes(result);\n\n return result;\n });\n}\n\n// This function doesn't have an attached procedure because it's never called via the TRPC server.\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Context } from '../types/Context.js';
|
|
2
|
+
import type { CreateSessionOptions } from './createSession.js';
|
|
3
|
+
import type { LoginMethod } from '@ms-cloudpack/remote-cache';
|
|
4
|
+
export interface CreateApiContextOptions extends CreateSessionOptions, Pick<Context, 'reporter' | 'telemetryClient' | 'taskRunner'> {
|
|
5
|
+
/**
|
|
6
|
+
* Login method for the remote cache.
|
|
7
|
+
* If this isn't provided, `context.remoteCacheClient` will not be set.
|
|
8
|
+
*/
|
|
9
|
+
remoteCacheClientLoginMethod?: LoginMethod;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Asynchronously initialize a partial `Context`, encapsulating async importing of certain modules
|
|
13
|
+
* to speed up boot time.
|
|
14
|
+
*
|
|
15
|
+
* This version skips some properties that are only needed for starting an app.
|
|
16
|
+
* For a full context, use `createApiContext`.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createPartialApiContext(options: CreateApiContextOptions): Promise<Omit<Context, 'bus' | 'watcher' | 'dispose'>>;
|
|
19
|
+
/**
|
|
20
|
+
* Asynchronously initialize a `Context`, encapsulating async importing of certain packages/modules
|
|
21
|
+
* to speed up boot time.
|
|
22
|
+
*
|
|
23
|
+
* When finished with the context, call `dispose` to clean up resources.
|
|
24
|
+
*
|
|
25
|
+
* NOTE: This version initializes the data bus and the file watcher, which are only needed for when
|
|
26
|
+
* starting an app. For other commands, use `createPartialApiContext`.
|
|
27
|
+
*/
|
|
28
|
+
export declare function createApiContext(options: CreateApiContextOptions): Promise<Context>;
|
|
29
|
+
//# sourceMappingURL=createApiContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createApiContext.d.ts","sourceRoot":"","sources":["../../src/common/createApiContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAI9D,MAAM,WAAW,uBACf,SAAQ,oBAAoB,EAC1B,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,iBAAiB,GAAG,YAAY,CAAC;IAC9D;;;OAGG;IACH,4BAA4B,CAAC,EAAE,WAAW,CAAC;CAC5C;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC,CA4BvD;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBzF"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { createRemoteCacheClient } from '../utilities/createRemoteCacheClient.js';
|
|
2
|
+
import { createPackageDefinitions } from '@ms-cloudpack/config';
|
|
3
|
+
/**
|
|
4
|
+
* Asynchronously initialize a partial `Context`, encapsulating async importing of certain modules
|
|
5
|
+
* to speed up boot time.
|
|
6
|
+
*
|
|
7
|
+
* This version skips some properties that are only needed for starting an app.
|
|
8
|
+
* For a full context, use `createApiContext`.
|
|
9
|
+
*/
|
|
10
|
+
export function createPartialApiContext(options) {
|
|
11
|
+
const { reporter, taskRunner, telemetryClient, config, remoteCacheClientLoginMethod } = options;
|
|
12
|
+
return telemetryClient.tracer.startActiveSpan('CREATE_PARTIAL_API_CONTEXT', async () => {
|
|
13
|
+
// Start by creating the properties that are always used
|
|
14
|
+
const packages = createPackageDefinitions({ config });
|
|
15
|
+
const { createSession } = await import('./createSession.js');
|
|
16
|
+
const session = await createSession(options, { reporter, packages, telemetryClient });
|
|
17
|
+
const { PackageHashes } = await import('@ms-cloudpack/package-hashes');
|
|
18
|
+
const packageHashes = new PackageHashes({
|
|
19
|
+
cwd: config.appPath,
|
|
20
|
+
context: { config, packages, resolveMap: session.resolveMap },
|
|
21
|
+
});
|
|
22
|
+
let remoteCacheClient;
|
|
23
|
+
if (remoteCacheClientLoginMethod) {
|
|
24
|
+
remoteCacheClient = await createRemoteCacheClient({
|
|
25
|
+
input: {
|
|
26
|
+
loginMethod: remoteCacheClientLoginMethod,
|
|
27
|
+
},
|
|
28
|
+
ctx: { session, reporter, telemetryClient },
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return { reporter, taskRunner, telemetryClient, packageHashes, packages, session, remoteCacheClient };
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Asynchronously initialize a `Context`, encapsulating async importing of certain packages/modules
|
|
36
|
+
* to speed up boot time.
|
|
37
|
+
*
|
|
38
|
+
* When finished with the context, call `dispose` to clean up resources.
|
|
39
|
+
*
|
|
40
|
+
* NOTE: This version initializes the data bus and the file watcher, which are only needed for when
|
|
41
|
+
* starting an app. For other commands, use `createPartialApiContext`.
|
|
42
|
+
*/
|
|
43
|
+
export async function createApiContext(options) {
|
|
44
|
+
return options.telemetryClient.tracer.startActiveSpan('CREATE_API_CONTEXT', async () => {
|
|
45
|
+
const context = await createPartialApiContext(options);
|
|
46
|
+
const { createWatcher } = await import('@ms-cloudpack/file-watcher');
|
|
47
|
+
const watcher = createWatcher({
|
|
48
|
+
type: context.session.config.features?.enableWatcherInFork ? 'fork' : 'default',
|
|
49
|
+
});
|
|
50
|
+
const { createDataBus } = await import('@ms-cloudpack/data-bus');
|
|
51
|
+
const bus = createDataBus();
|
|
52
|
+
// Without this line, the overlay won't work.
|
|
53
|
+
context.taskRunner.connectToBus(bus);
|
|
54
|
+
return {
|
|
55
|
+
...context,
|
|
56
|
+
bus,
|
|
57
|
+
watcher,
|
|
58
|
+
dispose: () => watcher.dispose(),
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=createApiContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createApiContext.js","sourceRoot":"","sources":["../../src/common/createApiContext.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAYhE;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAgC;IAEhC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,EAAE,4BAA4B,EAAE,GAAG,OAAO,CAAC;IAEhG,OAAO,eAAe,CAAC,MAAM,CAAC,eAAe,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QACrF,wDAAwD;QACxD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAEtD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;QAEtF,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;QACvE,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC;YACtC,GAAG,EAAE,MAAM,CAAC,OAAO;YACnB,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE;SAC9D,CAAC,CAAC;QAEH,IAAI,iBAA2D,CAAC;QAChE,IAAI,4BAA4B,EAAE,CAAC;YACjC,iBAAiB,GAAG,MAAM,uBAAuB,CAAC;gBAChD,KAAK,EAAE;oBACL,WAAW,EAAE,4BAA4B;iBAC1C;gBACD,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE;aAC5C,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;IACxG,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAgC;IACrE,OAAO,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,eAAe,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAEvD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,aAAa,CAAC;YAC5B,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SAChF,CAAC,CAAC;QAEH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;QACjE,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;QAC5B,6CAA6C;QAC7C,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAErC,OAAO;YACL,GAAG,OAAO;YACV,GAAG;YACH,OAAO;YACP,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;SACjC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { Context } from '../types/Context.js';\nimport type { CreateSessionOptions } from './createSession.js';\nimport type { LoginMethod } from '@ms-cloudpack/remote-cache';\nimport { createRemoteCacheClient } from '../utilities/createRemoteCacheClient.js';\nimport { createPackageDefinitions } from '@ms-cloudpack/config';\n\nexport interface CreateApiContextOptions\n extends CreateSessionOptions,\n Pick<Context, 'reporter' | 'telemetryClient' | 'taskRunner'> {\n /**\n * Login method for the remote cache.\n * If this isn't provided, `context.remoteCacheClient` will not be set.\n */\n remoteCacheClientLoginMethod?: LoginMethod;\n}\n\n/**\n * Asynchronously initialize a partial `Context`, encapsulating async importing of certain modules\n * to speed up boot time.\n *\n * This version skips some properties that are only needed for starting an app.\n * For a full context, use `createApiContext`.\n */\nexport function createPartialApiContext(\n options: CreateApiContextOptions,\n): Promise<Omit<Context, 'bus' | 'watcher' | 'dispose'>> {\n const { reporter, taskRunner, telemetryClient, config, remoteCacheClientLoginMethod } = options;\n\n return telemetryClient.tracer.startActiveSpan('CREATE_PARTIAL_API_CONTEXT', async () => {\n // Start by creating the properties that are always used\n const packages = createPackageDefinitions({ config });\n\n const { createSession } = await import('./createSession.js');\n const session = await createSession(options, { reporter, packages, telemetryClient });\n\n const { PackageHashes } = await import('@ms-cloudpack/package-hashes');\n const packageHashes = new PackageHashes({\n cwd: config.appPath,\n context: { config, packages, resolveMap: session.resolveMap },\n });\n\n let remoteCacheClient: Context['remoteCacheClient'] | undefined;\n if (remoteCacheClientLoginMethod) {\n remoteCacheClient = await createRemoteCacheClient({\n input: {\n loginMethod: remoteCacheClientLoginMethod,\n },\n ctx: { session, reporter, telemetryClient },\n });\n }\n\n return { reporter, taskRunner, telemetryClient, packageHashes, packages, session, remoteCacheClient };\n });\n}\n\n/**\n * Asynchronously initialize a `Context`, encapsulating async importing of certain packages/modules\n * to speed up boot time.\n *\n * When finished with the context, call `dispose` to clean up resources.\n *\n * NOTE: This version initializes the data bus and the file watcher, which are only needed for when\n * starting an app. For other commands, use `createPartialApiContext`.\n */\nexport async function createApiContext(options: CreateApiContextOptions): Promise<Context> {\n return options.telemetryClient.tracer.startActiveSpan('CREATE_API_CONTEXT', async () => {\n const context = await createPartialApiContext(options);\n\n const { createWatcher } = await import('@ms-cloudpack/file-watcher');\n const watcher = createWatcher({\n type: context.session.config.features?.enableWatcherInFork ? 'fork' : 'default',\n });\n\n const { createDataBus } = await import('@ms-cloudpack/data-bus');\n const bus = createDataBus();\n // Without this line, the overlay won't work.\n context.taskRunner.connectToBus(bus);\n\n return {\n ...context,\n bus,\n watcher,\n dispose: () => watcher.dispose(),\n };\n });\n}\n"]}
|
|
@@ -5,7 +5,14 @@ export type SessionVersions = {
|
|
|
5
5
|
targetVersions: Record<string, number>;
|
|
6
6
|
};
|
|
7
7
|
export interface CreateSessionOptions {
|
|
8
|
+
/**
|
|
9
|
+
* Path to the `@ms-cloudpack/overlay` package root directory.
|
|
10
|
+
*/
|
|
8
11
|
overlayPath?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Custom cache folder for the session.
|
|
14
|
+
* If not provided, will use the one from user preferences if set, or the default cache path.
|
|
15
|
+
*/
|
|
9
16
|
cachePath?: string;
|
|
10
17
|
config: CloudpackConfig;
|
|
11
18
|
}
|
|
@@ -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,MAAM,4BAA4B,CAAC;AAMvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAInD,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,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,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,
|
|
1
|
+
{"version":3,"file":"createSession.d.ts","sourceRoot":"","sources":["../../src/common/createSession.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAc,MAAM,4BAA4B,CAAC;AAMvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAInD,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;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,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,CAyGlB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/D"}
|
|
@@ -61,6 +61,7 @@ export async function createSession(options, context) {
|
|
|
61
61
|
set importMap(newImportMap) {
|
|
62
62
|
importMap = newImportMap;
|
|
63
63
|
},
|
|
64
|
+
packageImportPaths: new Map(),
|
|
64
65
|
linkedPaths,
|
|
65
66
|
addLinkedPath: async (linkedPath) => {
|
|
66
67
|
if (linkedPaths.find((p) => p.path === linkedPath.path)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSession.js","sourceRoot":"","sources":["../../src/common/createSession.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEvE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"createSession.js","sourceRoot":"","sources":["../../src/common/createSession.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CloudpackConfig, Session, LinkedPath } 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 { resolveDependenciesTask } from '../utilities/resolveDependenciesTask.js';\nimport { randomUUID } from 'crypto';\n\nexport type SessionVersions = {\n sessionVersion: number;\n targetVersions: Record<string, number>;\n};\n\nexport interface CreateSessionOptions {\n /**\n * Path to the `@ms-cloudpack/overlay` package root directory.\n */\n overlayPath?: 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 config: CloudpackConfig;\n}\n\nexport async function createSession(\n options: CreateSessionOptions,\n context: Pick<Context, 'reporter' | 'packages' | 'telemetryClient'>,\n): Promise<Session> {\n const { config, overlayPath } = options;\n const { appPath } = config;\n\n const projectName = path.basename(appPath);\n const id = randomUUID();\n let resolveMap = await resolveDependenciesTask(\n {\n appPath,\n additionalPaths: overlayPath ? [overlayPath] : [],\n },\n context,\n );\n\n let importMap: ImportMap | undefined = undefined;\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 },\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 (linkedPaths.find((p) => p.path === linkedPath.path)) {\n return { resolveMap: resolveMap, linkedPaths: linkedPaths };\n }\n\n linkedPaths.push(linkedPath);\n resolveMap = await resolveDependenciesTask(\n {\n appPath,\n additionalPaths: overlayPath ? [overlayPath] : [],\n linkedPaths,\n },\n context,\n );\n\n return { resolveMap, linkedPaths };\n },\n removeLinkedPath: async (linkedPath: LinkedPath) => {\n const index = linkedPaths.findIndex((p) => p.path === linkedPath.path);\n if (index === -1) {\n return { resolveMap: resolveMap, linkedPaths: linkedPaths };\n }\n\n linkedPaths.splice(index, 1);\n resolveMap = await resolveDependenciesTask(\n {\n appPath,\n additionalPaths: overlayPath ? [overlayPath] : [],\n linkedPaths,\n },\n context,\n );\n\n return { resolveMap, linkedPaths };\n },\n cachePath,\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"]}
|
package/lib/index.d.ts
CHANGED
|
@@ -6,7 +6,6 @@ export type { Task } from './types/Task.js';
|
|
|
6
6
|
export type { TaskDescription } from './types/TaskDescription.js';
|
|
7
7
|
export type { TaskEndDescription } from './types/TaskEndDescription.js';
|
|
8
8
|
export type { TaskMessage } from './types/TaskMessage.js';
|
|
9
|
-
export type { TaskOptions } from './types/TaskOptions.js';
|
|
10
9
|
export type { TaskStartDescription } from './types/TaskStartDescription.js';
|
|
11
10
|
export type { EnsurePackageBundledContext, EnsurePackageBundledResult } from './apis/ensurePackageBundled.js';
|
|
12
11
|
export { TaskRunner } from './utilities/TaskRunner.js';
|
|
@@ -16,7 +15,7 @@ export { createCloudpackServer, type CloudpackServer } from './trpc/createCloudp
|
|
|
16
15
|
export { getActiveSessionsPath } from './utilities/getActiveSessionsPath.js';
|
|
17
16
|
export { getConsumedDependencies } from './utilities/getConsumedDependencies.js';
|
|
18
17
|
export { getConsumedPaths } from './utilities/getConsumedPaths.js';
|
|
19
|
-
export { createPartialApiContext, type
|
|
18
|
+
export { createApiContext, createPartialApiContext, type CreateApiContextOptions } from './common/createApiContext.js';
|
|
20
19
|
export { addPackageOverride } from './apis/addPackageOverride.js';
|
|
21
20
|
export { ensurePackageBundled } from './apis/ensurePackageBundled.js';
|
|
22
21
|
export { syncDownload } from './apis/syncDownload.js';
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAClE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC9F,YAAY,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,YAAY,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAClE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC9F,YAAY,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,YAAY,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,YAAY,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAE9G,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGnE,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,KAAK,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGvH,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -6,7 +6,7 @@ export { getActiveSessionsPath } from './utilities/getActiveSessionsPath.js';
|
|
|
6
6
|
export { getConsumedDependencies } from './utilities/getConsumedDependencies.js';
|
|
7
7
|
export { getConsumedPaths } from './utilities/getConsumedPaths.js';
|
|
8
8
|
// Utilities
|
|
9
|
-
export { createPartialApiContext } from './common/
|
|
9
|
+
export { createApiContext, createPartialApiContext } from './common/createApiContext.js';
|
|
10
10
|
// API methods directly used outside this package
|
|
11
11
|
export { addPackageOverride } from './apis/addPackageOverride.js';
|
|
12
12
|
export { ensurePackageBundled } from './apis/ensurePackageBundled.js';
|