@ms-cloudpack/api-server 0.57.2 → 0.58.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.
@@ -1,5 +1,4 @@
1
1
  import type { ApiParams } from '../types/ApiParams.js';
2
- import type { SyncInput } from '../types/SyncInput.js';
3
2
  import type { SyncResult } from '../types/SyncResult.js';
4
- export declare function syncDownload(params: ApiParams<SyncInput, 'session' | 'packages' | 'reporter' | 'telemetryClient' | 'packageHashes'>): Promise<SyncResult>;
3
+ export declare function syncDownload(params: ApiParams<undefined, 'session' | 'packages' | 'reporter' | 'telemetryClient' | 'packageHashes' | 'remoteCacheClient'>): Promise<SyncResult>;
5
4
  //# sourceMappingURL=syncDownload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"syncDownload.d.ts","sourceRoot":"","sources":["../../src/apis/syncDownload.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,wBAAsB,YAAY,CAChC,MAAM,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,iBAAiB,GAAG,eAAe,CAAC,GACtG,OAAO,CAAC,UAAU,CAAC,CA0BrB"}
1
+ {"version":3,"file":"syncDownload.d.ts","sourceRoot":"","sources":["../../src/apis/syncDownload.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,wBAAsB,YAAY,CAChC,MAAM,EAAE,SAAS,CACf,SAAS,EACT,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,iBAAiB,GAAG,eAAe,GAAG,mBAAmB,CAChG,GACA,OAAO,CAAC,UAAU,CAAC,CAuBrB"}
@@ -1,21 +1,16 @@
1
1
  import { getPackagesToSync } from '../utilities/getPackagesToSync.js';
2
2
  import { PerfMeasurementSyncDownload } from '../performance/markers.js';
3
3
  import { getRemoteCachePromiseResultCounts } from '../utilities/getRemoteCachePromiseResultCounts.js';
4
- import { createRemoteCacheClient } from '../utilities/createRemoteCacheClient.js';
4
+ import { ensureRemoteCacheEnabled } from '../utilities/ensureRemoteCacheEnabled.js';
5
5
  export async function syncDownload(params) {
6
- const { input, ctx } = params;
7
- const { loginMethod } = input;
8
- const { telemetryClient } = ctx;
6
+ const { ctx } = params;
7
+ const { telemetryClient, remoteCacheClient: client, session } = ctx;
8
+ ensureRemoteCacheEnabled(session.config);
9
+ if (!client) {
10
+ throw new Error('Remote cache client is required to sync upload');
11
+ }
9
12
  return await telemetryClient.tracer.startActiveSpan(PerfMeasurementSyncDownload, async (span) => {
10
- const [client, packagesToSync] = await Promise.all([
11
- createRemoteCacheClient({
12
- input: {
13
- loginMethod,
14
- },
15
- ctx,
16
- }),
17
- getPackagesToSync(ctx),
18
- ]);
13
+ const packagesToSync = await getPackagesToSync(ctx);
19
14
  const downloads = packagesToSync.map((pkg) => client.downloadFolder(pkg));
20
15
  // Do not reject if there is a failure. Failed downloads will be logged in the task reporter.
21
16
  const promiseResults = await Promise.allSettled(downloads);
@@ -1 +1 @@
1
- {"version":3,"file":"syncDownload.js","sourceRoot":"","sources":["../../src/apis/syncDownload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,iCAAiC,EAAE,MAAM,mDAAmD,CAAC;AACtG,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAIlF,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAuG;IAEvG,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAC9B,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC9B,MAAM,EAAE,eAAe,EAAE,GAAG,GAAG,CAAC;IAEhC,OAAO,MAAM,eAAe,CAAC,MAAM,CAAC,eAAe,CAAC,2BAA2B,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC9F,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACjD,uBAAuB,CAAC;gBACtB,KAAK,EAAE;oBACL,WAAW;iBACZ;gBACD,GAAG;aACJ,CAAC;YACF,iBAAiB,CAAC,GAAG,CAAC;SACvB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;QAE1E,6FAA6F;QAC7F,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAE3D,MAAM,MAAM,GAAG,iCAAiC,CAAC,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE3B,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kGAAkG","sourcesContent":["import { getPackagesToSync } from '../utilities/getPackagesToSync.js';\nimport type { ApiParams } from '../types/ApiParams.js';\nimport { PerfMeasurementSyncDownload } from '../performance/markers.js';\nimport { getRemoteCachePromiseResultCounts } from '../utilities/getRemoteCachePromiseResultCounts.js';\nimport { createRemoteCacheClient } from '../utilities/createRemoteCacheClient.js';\nimport type { SyncInput } from '../types/SyncInput.js';\nimport type { SyncResult } from '../types/SyncResult.js';\n\nexport async function syncDownload(\n params: ApiParams<SyncInput, 'session' | 'packages' | 'reporter' | 'telemetryClient' | 'packageHashes'>,\n): Promise<SyncResult> {\n const { input, ctx } = params;\n const { loginMethod } = input;\n const { telemetryClient } = ctx;\n\n return await telemetryClient.tracer.startActiveSpan(PerfMeasurementSyncDownload, async (span) => {\n const [client, packagesToSync] = await Promise.all([\n createRemoteCacheClient({\n input: {\n loginMethod,\n },\n ctx,\n }),\n getPackagesToSync(ctx),\n ]);\n\n const downloads = packagesToSync.map((pkg) => client.downloadFolder(pkg));\n\n // Do not reject if there is a failure. Failed downloads will be logged in the task reporter.\n const promiseResults = await Promise.allSettled(downloads);\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"]}
1
+ {"version":3,"file":"syncDownload.js","sourceRoot":"","sources":["../../src/apis/syncDownload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,iCAAiC,EAAE,MAAM,mDAAmD,CAAC;AAEtG,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAEpF,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAGC;IAED,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IACvB,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAEpE,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,MAAM,eAAe,CAAC,MAAM,CAAC,eAAe,CAAC,2BAA2B,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC9F,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAEpD,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;QAE1E,6FAA6F;QAC7F,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAE3D,MAAM,MAAM,GAAG,iCAAiC,CAAC,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE3B,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kGAAkG","sourcesContent":["import { getPackagesToSync } from '../utilities/getPackagesToSync.js';\nimport type { ApiParams } from '../types/ApiParams.js';\nimport { PerfMeasurementSyncDownload } from '../performance/markers.js';\nimport { getRemoteCachePromiseResultCounts } from '../utilities/getRemoteCachePromiseResultCounts.js';\nimport type { SyncResult } from '../types/SyncResult.js';\nimport { ensureRemoteCacheEnabled } from '../utilities/ensureRemoteCacheEnabled.js';\n\nexport async function syncDownload(\n params: ApiParams<\n undefined,\n 'session' | 'packages' | 'reporter' | 'telemetryClient' | 'packageHashes' | 'remoteCacheClient'\n >,\n): Promise<SyncResult> {\n const { ctx } = params;\n const { telemetryClient, remoteCacheClient: client, session } = ctx;\n\n ensureRemoteCacheEnabled(session.config);\n\n if (!client) {\n throw new Error('Remote cache client is required to sync upload');\n }\n\n return await telemetryClient.tracer.startActiveSpan(PerfMeasurementSyncDownload, async (span) => {\n const packagesToSync = await getPackagesToSync(ctx);\n\n const downloads = packagesToSync.map((pkg) => client.downloadFolder(pkg));\n\n // Do not reject if there is a failure. Failed downloads will be logged in the task reporter.\n const promiseResults = await Promise.allSettled(downloads);\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"]}
@@ -1,5 +1,4 @@
1
1
  import type { ApiParams } from '../types/ApiParams.js';
2
- import type { SyncInput } from '../types/SyncInput.js';
3
2
  import type { SyncResult } from '../types/SyncResult.js';
4
- export declare function syncUpload(params: ApiParams<SyncInput, 'session' | 'packages' | 'reporter' | 'bus' | 'taskRunner' | 'watcher' | 'telemetryClient' | 'packageImportPaths' | 'packageHashes'>): Promise<SyncResult>;
3
+ export declare function syncUpload(params: ApiParams<undefined, 'session' | 'packages' | 'reporter' | 'bus' | 'taskRunner' | 'watcher' | 'telemetryClient' | 'packageImportPaths' | 'packageHashes' | 'remoteCacheClient'>): Promise<SyncResult>;
5
4
  //# sourceMappingURL=syncUpload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"syncUpload.d.ts","sourceRoot":"","sources":["../../src/apis/syncUpload.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAKvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAMvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,CACf,SAAS,EACP,SAAS,GACT,UAAU,GACV,UAAU,GACV,KAAK,GACL,YAAY,GACZ,SAAS,GACT,iBAAiB,GACjB,oBAAoB,GACpB,eAAe,CAClB,GACA,OAAO,CAAC,UAAU,CAAC,CAsErB"}
1
+ {"version":3,"file":"syncUpload.d.ts","sourceRoot":"","sources":["../../src/apis/syncUpload.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AASvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,CACf,SAAS,EACP,SAAS,GACT,UAAU,GACV,UAAU,GACV,KAAK,GACL,YAAY,GACZ,SAAS,GACT,iBAAiB,GACjB,oBAAoB,GACpB,eAAe,GACf,mBAAmB,CACtB,GACA,OAAO,CAAC,UAAU,CAAC,CAmErB"}
@@ -1,7 +1,6 @@
1
1
  import { ensurePackageBundled } from './ensurePackageBundled.js';
2
2
  import { PerfMeasurementSyncUpload } from '../performance/markers.js';
3
3
  import { getRemoteCachePromiseResultCounts } from '../utilities/getRemoteCachePromiseResultCounts.js';
4
- import { createRemoteCacheClient } from '../utilities/createRemoteCacheClient.js';
5
4
  import { createRemoteCacheClientOperationOptions } from '../utilities/createRemoteCacheClientOperationOptions.js';
6
5
  import { createUploadTask } from '../utilities/createUploadTask.js';
7
6
  import { isStaticRoute } from '@ms-cloudpack/common-types';
@@ -9,33 +8,29 @@ import path from 'path';
9
8
  import { getBundleLocation } from '../utilities/getBundleLocation.js';
10
9
  import { cp } from 'fs/promises';
11
10
  import objectHash from 'object-hash';
11
+ import { ensureRemoteCacheEnabled } from '../utilities/ensureRemoteCacheEnabled.js';
12
12
  export async function syncUpload(params) {
13
- const { ctx, input } = params;
14
- const { session, telemetryClient, taskRunner } = ctx;
13
+ const { ctx } = params;
14
+ const { session, telemetryClient, taskRunner, remoteCacheClient: client } = ctx;
15
15
  const { config } = session;
16
16
  const { appPath } = config;
17
- const { loginMethod } = input;
18
17
  const syncInternalPackages = config?.features?.syncInternalPackages ?? false;
18
+ ensureRemoteCacheEnabled(config);
19
+ if (!client) {
20
+ throw new Error('Remote cache client is required to sync upload');
21
+ }
19
22
  // Glob pattern for the files to upload.
20
23
  const globMatches = ['**/*', '!**/*-input.json', '!**/*-output.json'];
21
24
  return await telemetryClient.tracer.startActiveSpan(PerfMeasurementSyncUpload, async (span) => {
22
25
  const { name, version } = await ctx.packages.get(appPath);
23
- const [client, { dependencies, result: bundleResult }] = await Promise.all([
24
- createRemoteCacheClient({
25
- input: {
26
- loginMethod,
27
- },
28
- ctx,
29
- }),
30
- ensurePackageBundled({
31
- input: {
32
- name,
33
- version,
34
- enqueueDependencies: true,
35
- },
36
- ctx,
37
- }),
38
- ]);
26
+ const { dependencies, result: bundleResult } = await ensurePackageBundled({
27
+ input: {
28
+ name,
29
+ version,
30
+ enqueueDependencies: true,
31
+ },
32
+ ctx,
33
+ });
39
34
  const bundledPackages = [bundleResult, ...(await dependencies)];
40
35
  const packagesToUpload = await Promise.all(bundledPackages
41
36
  .filter((p) => p.inputPath && (p.isExternal || syncInternalPackages))
@@ -1 +1 @@
1
- {"version":3,"file":"syncUpload.js","sourceRoot":"","sources":["../../src/apis/syncUpload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,EAAE,iCAAiC,EAAE,MAAM,mDAAmD,CAAC;AACtG,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,EAAE,uCAAuC,EAAE,MAAM,yDAAyD,CAAC;AAClH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,UAAU,MAAM,aAAa,CAAC;AAGrC,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAWC;IAED,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAC9B,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IACrD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAC3B,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC9B,MAAM,oBAAoB,GAAG,MAAM,EAAE,QAAQ,EAAE,oBAAoB,IAAI,KAAK,CAAC;IAE7E,wCAAwC;IACxC,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;IAEtE,OAAO,MAAM,eAAe,CAAC,MAAM,CAAC,eAAe,CAAC,yBAAyB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC5F,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE1D,MAAM,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACzE,uBAAuB,CAAC;gBACtB,KAAK,EAAE;oBACL,WAAW;iBACZ;gBACD,GAAG;aACJ,CAAC;YACF,oBAAoB,CAAC;gBACnB,KAAK,EAAE;oBACL,IAAI;oBACJ,OAAO;oBACP,mBAAmB,EAAE,IAAI;iBAC1B;gBACD,GAAG;aACJ,CAAC;SACH,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC;QAChE,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,GAAG,CACxC,eAAe;aACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,oBAAoB,CAAC,CAAC;aACpE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACT,uCAAuC;QACrC,oGAAoG;QACpG,EAAE,WAAW,EAAE,CAAC,CAAC,SAAU,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,EAC7E,GAAG,CACJ,CACF,CACJ,CAAC;QAEF,IAAI,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;YACvC,MAAM,aAAa,GAAG,CAAC,MAAM,iBAAiB,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YACpF,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;YAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;YAC1D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBACxC,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;oBAC3D,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;oBACpC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;oBACpD,MAAM,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrF,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC3C,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,GAAG,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,CAC/E,CAAC;QAEF,2FAA2F;QAC3F,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEzD,MAAM,MAAM,GAAG,iCAAiC,CAAC,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE3B,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kGAAkG","sourcesContent":["import { ensurePackageBundled } from './ensurePackageBundled.js';\nimport { PerfMeasurementSyncUpload } from '../performance/markers.js';\nimport type { ApiParams } from '../types/ApiParams.js';\nimport { getRemoteCachePromiseResultCounts } from '../utilities/getRemoteCachePromiseResultCounts.js';\nimport { createRemoteCacheClient } from '../utilities/createRemoteCacheClient.js';\nimport { createRemoteCacheClientOperationOptions } from '../utilities/createRemoteCacheClientOperationOptions.js';\nimport { createUploadTask } from '../utilities/createUploadTask.js';\nimport type { SyncInput } from '../types/SyncInput.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';\n\nexport async function syncUpload(\n params: ApiParams<\n SyncInput,\n | 'session'\n | 'packages'\n | 'reporter'\n | 'bus'\n | 'taskRunner'\n | 'watcher'\n | 'telemetryClient'\n | 'packageImportPaths'\n | 'packageHashes'\n >,\n): Promise<SyncResult> {\n const { ctx, input } = params;\n const { session, telemetryClient, taskRunner } = ctx;\n const { config } = session;\n const { appPath } = config;\n const { loginMethod } = input;\n const syncInternalPackages = config?.features?.syncInternalPackages ?? false;\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 [client, { dependencies, result: bundleResult }] = await Promise.all([\n createRemoteCacheClient({\n input: {\n loginMethod,\n },\n ctx,\n }),\n ensurePackageBundled({\n input: {\n name,\n version,\n enqueueDependencies: true,\n },\n ctx,\n }),\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!, packageName: p.name, packageVersion: p.version },\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"]}
1
+ {"version":3,"file":"syncUpload.js","sourceRoot":"","sources":["../../src/apis/syncUpload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,EAAE,iCAAiC,EAAE,MAAM,mDAAmD,CAAC;AACtG,OAAO,EAAE,uCAAuC,EAAE,MAAM,yDAAyD,CAAC;AAClH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,UAAU,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAEpF,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAYC;IAED,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAChF,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAC3B,MAAM,oBAAoB,GAAG,MAAM,EAAE,QAAQ,EAAE,oBAAoB,IAAI,KAAK,CAAC;IAE7E,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAEjC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,wCAAwC;IACxC,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;IAEtE,OAAO,MAAM,eAAe,CAAC,MAAM,CAAC,eAAe,CAAC,yBAAyB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC5F,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE1D,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,oBAAoB,CAAC;YACxE,KAAK,EAAE;gBACL,IAAI;gBACJ,OAAO;gBACP,mBAAmB,EAAE,IAAI;aAC1B;YACD,GAAG;SACJ,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC;QAChE,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,GAAG,CACxC,eAAe;aACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,oBAAoB,CAAC,CAAC;aACpE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACT,uCAAuC;QACrC,oGAAoG;QACpG,EAAE,WAAW,EAAE,CAAC,CAAC,SAAU,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,EAC7E,GAAG,CACJ,CACF,CACJ,CAAC;QAEF,IAAI,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;YACvC,MAAM,aAAa,GAAG,CAAC,MAAM,iBAAiB,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YACpF,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;YAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;YAC1D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBACxC,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;oBAC3D,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;oBACpC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;oBACpD,MAAM,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrF,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC3C,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,GAAG,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,CAC/E,CAAC;QAEF,2FAA2F;QAC3F,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEzD,MAAM,MAAM,GAAG,iCAAiC,CAAC,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE3B,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kGAAkG","sourcesContent":["import { ensurePackageBundled } from './ensurePackageBundled.js';\nimport { PerfMeasurementSyncUpload } from '../performance/markers.js';\nimport type { ApiParams } from '../types/ApiParams.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\nexport async function syncUpload(\n params: ApiParams<\n undefined,\n | 'session'\n | 'packages'\n | 'reporter'\n | 'bus'\n | 'taskRunner'\n | 'watcher'\n | 'telemetryClient'\n | 'packageImportPaths'\n | 'packageHashes'\n | 'remoteCacheClient'\n >,\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!, packageName: p.name, packageVersion: p.version },\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"]}
@@ -3,11 +3,13 @@ import type { TelemetryClient } from '@ms-cloudpack/telemetry';
3
3
  import type { Context } from '../types/Context.js';
4
4
  import type { TaskRunner } from '../utilities/TaskRunner.js';
5
5
  import type { CreateSessionOptions } from './createSession.js';
6
+ import type { LoginMethod } from '@ms-cloudpack/remote-cache';
6
7
  export interface LazyApiContextOptions extends CreateSessionOptions {
7
8
  reporter: TaskReporter;
8
9
  appPath: string;
9
10
  telemetryClient: TelemetryClient;
10
11
  taskRunner?: TaskRunner;
12
+ remoteCacheClientLoginMethod?: LoginMethod;
11
13
  }
12
14
  export declare function createPartialApiContext<TKeys extends Exclude<keyof Context, 'dispose'>, TReturn extends Pick<Context, TKeys | 'dispose' | 'reporter' | 'telemetryClient'>>(options: LazyApiContextOptions & {
13
15
  items: TKeys[];
@@ -1 +1 @@
1
- {"version":3,"file":"createPartialApiContext.d.ts","sourceRoot":"","sources":["../../src/common/createPartialApiContext.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAM/D,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,eAAe,CAAC;IACjC,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AA+HD,wBAAsB,uBAAuB,CAC3C,KAAK,SAAS,OAAO,CAAC,MAAM,OAAO,EAAE,SAAS,CAAC,EAC/C,OAAO,SAAS,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,iBAAiB,CAAC,EACjF,OAAO,EAAE,qBAAqB,GAAG;IAAE,KAAK,EAAE,KAAK,EAAE,CAAA;CAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBvE"}
1
+ {"version":3,"file":"createPartialApiContext.d.ts","sourceRoot":"","sources":["../../src/common/createPartialApiContext.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,4BAA4B,CAAC;AAOjF,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,eAAe,CAAC;IACjC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,4BAA4B,CAAC,EAAE,WAAW,CAAC;CAC5C;AAuJD,wBAAsB,uBAAuB,CAC3C,KAAK,SAAS,OAAO,CAAC,MAAM,OAAO,EAAE,SAAS,CAAC,EAC/C,OAAO,SAAS,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,iBAAiB,CAAC,EACjF,OAAO,EAAE,qBAAqB,GAAG;IAAE,KAAK,EAAE,KAAK,EAAE,CAAA;CAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBvE"}
@@ -9,7 +9,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _LazyApiContext_bus, _LazyApiContext_watcher, _LazyApiContext_packages, _LazyApiContext_taskRunner, _LazyApiContext_session, _LazyApiContext_packageImportPaths, _LazyApiContext_packageHashes;
12
+ var _LazyApiContext_bus, _LazyApiContext_watcher, _LazyApiContext_packages, _LazyApiContext_taskRunner, _LazyApiContext_session, _LazyApiContext_packageImportPaths, _LazyApiContext_packageHashes, _LazyApiContext_remoteCacheClient;
13
+ import { createRemoteCacheClient } from '../utilities/createRemoteCacheClient.js';
13
14
  class LazyApiContext {
14
15
  constructor(options) {
15
16
  this.options = options;
@@ -20,6 +21,7 @@ class LazyApiContext {
20
21
  _LazyApiContext_session.set(this, void 0);
21
22
  _LazyApiContext_packageImportPaths.set(this, void 0);
22
23
  _LazyApiContext_packageHashes.set(this, void 0);
24
+ _LazyApiContext_remoteCacheClient.set(this, void 0);
23
25
  const { taskRunner } = options;
24
26
  if (taskRunner) {
25
27
  __classPrivateFieldSet(this, _LazyApiContext_taskRunner, Promise.resolve(taskRunner), "f");
@@ -112,6 +114,27 @@ class LazyApiContext {
112
114
  }
113
115
  return __classPrivateFieldGet(this, _LazyApiContext_packageImportPaths, "f");
114
116
  }
117
+ get remoteCacheClient() {
118
+ if (!__classPrivateFieldGet(this, _LazyApiContext_remoteCacheClient, "f")) {
119
+ const createRemoteCacheClientLazy = async () => {
120
+ if (!this.options.remoteCacheClientLoginMethod) {
121
+ throw new Error('remoteCacheClientLoginMethod is required to create api context with remote cache');
122
+ }
123
+ return createRemoteCacheClient({
124
+ ctx: {
125
+ session: await this.session,
126
+ reporter: await this.reporter,
127
+ telemetryClient: await this.telemetryClient,
128
+ },
129
+ input: {
130
+ loginMethod: this.options.remoteCacheClientLoginMethod,
131
+ },
132
+ });
133
+ };
134
+ __classPrivateFieldSet(this, _LazyApiContext_remoteCacheClient, createRemoteCacheClientLazy(), "f");
135
+ }
136
+ return __classPrivateFieldGet(this, _LazyApiContext_remoteCacheClient, "f");
137
+ }
115
138
  async dispose() {
116
139
  if (__classPrivateFieldGet(this, _LazyApiContext_watcher, "f")) {
117
140
  const watcher = await __classPrivateFieldGet(this, _LazyApiContext_watcher, "f");
@@ -119,7 +142,7 @@ class LazyApiContext {
119
142
  }
120
143
  }
121
144
  }
122
- _LazyApiContext_bus = new WeakMap(), _LazyApiContext_watcher = new WeakMap(), _LazyApiContext_packages = new WeakMap(), _LazyApiContext_taskRunner = new WeakMap(), _LazyApiContext_session = new WeakMap(), _LazyApiContext_packageImportPaths = new WeakMap(), _LazyApiContext_packageHashes = new WeakMap();
145
+ _LazyApiContext_bus = new WeakMap(), _LazyApiContext_watcher = new WeakMap(), _LazyApiContext_packages = new WeakMap(), _LazyApiContext_taskRunner = new WeakMap(), _LazyApiContext_session = new WeakMap(), _LazyApiContext_packageImportPaths = new WeakMap(), _LazyApiContext_packageHashes = new WeakMap(), _LazyApiContext_remoteCacheClient = new WeakMap();
123
146
  export async function createPartialApiContext(options) {
124
147
  const { reporter, telemetryClient, items } = options;
125
148
  const lazyContext = new LazyApiContext(options);
@@ -1 +1 @@
1
- {"version":3,"file":"createPartialApiContext.js","sourceRoot":"","sources":["../../src/common/createPartialApiContext.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PackageDefinitionsCache, PackageHashesCache, Session } from '@ms-cloudpack/common-types';\nimport type { DataBus } from '@ms-cloudpack/data-bus';\nimport type { Watcher } from '@ms-cloudpack/file-watcher';\nimport type { TaskReporter } from '@ms-cloudpack/task-reporter';\nimport type { TelemetryClient } from '@ms-cloudpack/telemetry';\nimport type { Context } from '../types/Context.js';\nimport type { TaskRunner } from '../utilities/TaskRunner.js';\nimport type { PackageImportPaths } from '@ms-cloudpack/import-map';\nimport type { CreateSessionOptions } from './createSession.js';\n\ntype PromisifyProperties<T> = {\n [K in keyof T]: T[K] extends (...args: unknown[]) => unknown ? T[K] : Promise<T[K]>;\n};\n\nexport interface LazyApiContextOptions extends CreateSessionOptions {\n reporter: TaskReporter;\n appPath: string;\n telemetryClient: TelemetryClient;\n taskRunner?: TaskRunner;\n}\n\nclass LazyApiContext implements PromisifyProperties<Context> {\n #bus: Promise<DataBus> | undefined;\n #watcher: Promise<Watcher> | undefined;\n #packages: Promise<PackageDefinitionsCache> | undefined;\n #taskRunner: Promise<TaskRunner> | undefined;\n #session: Promise<Session> | undefined;\n #packageImportPaths: Promise<PackageImportPaths> | undefined;\n #packageHashes: Promise<PackageHashesCache> | undefined;\n\n constructor(private readonly options: LazyApiContextOptions) {\n const { taskRunner } = options;\n if (taskRunner) {\n this.#taskRunner = Promise.resolve(taskRunner);\n }\n }\n\n public get telemetryClient(): Promise<TelemetryClient> {\n return Promise.resolve(this.options.telemetryClient);\n }\n\n public get bus(): Promise<DataBus> {\n if (!this.#bus) {\n const createDataBusLazy = async () => {\n const { createDataBus } = await import('@ms-cloudpack/data-bus');\n return createDataBus();\n };\n this.#bus = createDataBusLazy();\n }\n\n return this.#bus;\n }\n\n public get watcher(): Promise<Watcher> {\n if (!this.#watcher) {\n const createWatcherLazy = async () => {\n const { createWatcher, createWatcherInFork } = await import('@ms-cloudpack/file-watcher');\n return this.options?.config?.features?.enableWatcherInFork ? createWatcherInFork() : createWatcher();\n };\n this.#watcher = createWatcherLazy();\n }\n\n return this.#watcher;\n }\n\n public get reporter(): Promise<TaskReporter> {\n return Promise.resolve(this.options.reporter);\n }\n\n public get packages(): Promise<PackageDefinitionsCache> {\n if (!this.#packages) {\n const createPackageDefinitionsLazy = async () => {\n const { createPackageDefinitions } = await import('@ms-cloudpack/config');\n return createPackageDefinitions({ config: this.options.config });\n };\n this.#packages = createPackageDefinitionsLazy();\n }\n\n return this.#packages;\n }\n\n public get packageHashes(): Promise<PackageHashesCache> {\n if (!this.#packageHashes) {\n const createPackageHashesLazy = async () => {\n const { PackageHashes } = await import('@ms-cloudpack/package-hashes');\n return new PackageHashes({\n cwd: this.options.appPath,\n context: {\n config: this.options.config,\n packages: await this.packages,\n resolveMap: (await this.session).resolveMap,\n },\n });\n };\n this.#packageHashes = createPackageHashesLazy();\n }\n\n return this.#packageHashes;\n }\n\n public get taskRunner(): Promise<TaskRunner> {\n if (!this.#taskRunner) {\n const createTaskRunnerLazy = async () => {\n const { TaskRunner } = await import('../utilities/TaskRunner.js');\n return new TaskRunner({\n bus: await this.bus,\n reporter: await this.reporter,\n session: await this.session,\n });\n };\n this.#taskRunner = createTaskRunnerLazy();\n }\n return this.#taskRunner;\n }\n\n public get session(): Promise<Session> {\n if (!this.#session) {\n const createSessionLazy = async () => {\n const { createSession } = await import('./createSession.js');\n return createSession(this.options, {\n reporter: await this.reporter,\n packages: await this.packages,\n telemetryClient: await this.telemetryClient,\n });\n };\n this.#session = createSessionLazy();\n }\n\n return this.#session;\n }\n\n public get packageImportPaths(): Promise<PackageImportPaths> {\n if (!this.#packageImportPaths) {\n this.#packageImportPaths = Promise.resolve(new Map<string, string[]>());\n }\n return this.#packageImportPaths;\n }\n\n public async dispose(): Promise<void> {\n if (this.#watcher) {\n const watcher = await this.#watcher;\n await watcher.unwatchAll();\n }\n }\n}\n\nexport async function createPartialApiContext<\n TKeys extends Exclude<keyof Context, 'dispose'>,\n TReturn extends Pick<Context, TKeys | 'dispose' | 'reporter' | 'telemetryClient'>,\n>(options: LazyApiContextOptions & { items: TKeys[] }): Promise<TReturn> {\n const { reporter, telemetryClient, items } = options;\n const lazyContext = new LazyApiContext(options);\n\n const result = {\n reporter,\n telemetryClient,\n dispose: () => {\n return lazyContext.dispose();\n },\n } as TReturn;\n\n for (const item of items) {\n result[item] = (await lazyContext[item]) as TReturn[TKeys];\n }\n\n return result;\n}\n"]}
1
+ {"version":3,"file":"createPartialApiContext.js","sourceRoot":"","sources":["../../src/common/createPartialApiContext.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PackageDefinitionsCache, PackageHashesCache, Session } from '@ms-cloudpack/common-types';\nimport type { DataBus } from '@ms-cloudpack/data-bus';\nimport type { Watcher } from '@ms-cloudpack/file-watcher';\nimport type { TaskReporter } from '@ms-cloudpack/task-reporter';\nimport type { TelemetryClient } from '@ms-cloudpack/telemetry';\nimport type { Context } from '../types/Context.js';\nimport type { TaskRunner } from '../utilities/TaskRunner.js';\nimport type { PackageImportPaths } from '@ms-cloudpack/import-map';\nimport type { CreateSessionOptions } from './createSession.js';\nimport type { LoginMethod, RemoteCacheClient } from '@ms-cloudpack/remote-cache';\nimport { createRemoteCacheClient } from '../utilities/createRemoteCacheClient.js';\n\ntype PromisifyProperties<T> = {\n [K in keyof T]: T[K] extends (...args: unknown[]) => unknown ? T[K] : Promise<T[K]>;\n};\n\nexport interface LazyApiContextOptions extends CreateSessionOptions {\n reporter: TaskReporter;\n appPath: string;\n telemetryClient: TelemetryClient;\n taskRunner?: TaskRunner;\n remoteCacheClientLoginMethod?: LoginMethod;\n}\n\nclass LazyApiContext implements PromisifyProperties<Context> {\n #bus: Promise<DataBus> | undefined;\n #watcher: Promise<Watcher> | undefined;\n #packages: Promise<PackageDefinitionsCache> | undefined;\n #taskRunner: Promise<TaskRunner> | undefined;\n #session: Promise<Session> | undefined;\n #packageImportPaths: Promise<PackageImportPaths> | undefined;\n #packageHashes: Promise<PackageHashesCache> | undefined;\n #remoteCacheClient: Promise<RemoteCacheClient | undefined> | undefined;\n\n constructor(private readonly options: LazyApiContextOptions) {\n const { taskRunner } = options;\n if (taskRunner) {\n this.#taskRunner = Promise.resolve(taskRunner);\n }\n }\n\n public get telemetryClient(): Promise<TelemetryClient> {\n return Promise.resolve(this.options.telemetryClient);\n }\n\n public get bus(): Promise<DataBus> {\n if (!this.#bus) {\n const createDataBusLazy = async () => {\n const { createDataBus } = await import('@ms-cloudpack/data-bus');\n return createDataBus();\n };\n this.#bus = createDataBusLazy();\n }\n\n return this.#bus;\n }\n\n public get watcher(): Promise<Watcher> {\n if (!this.#watcher) {\n const createWatcherLazy = async () => {\n const { createWatcher, createWatcherInFork } = await import('@ms-cloudpack/file-watcher');\n return this.options?.config?.features?.enableWatcherInFork ? createWatcherInFork() : createWatcher();\n };\n this.#watcher = createWatcherLazy();\n }\n\n return this.#watcher;\n }\n\n public get reporter(): Promise<TaskReporter> {\n return Promise.resolve(this.options.reporter);\n }\n\n public get packages(): Promise<PackageDefinitionsCache> {\n if (!this.#packages) {\n const createPackageDefinitionsLazy = async () => {\n const { createPackageDefinitions } = await import('@ms-cloudpack/config');\n return createPackageDefinitions({ config: this.options.config });\n };\n this.#packages = createPackageDefinitionsLazy();\n }\n\n return this.#packages;\n }\n\n public get packageHashes(): Promise<PackageHashesCache> {\n if (!this.#packageHashes) {\n const createPackageHashesLazy = async () => {\n const { PackageHashes } = await import('@ms-cloudpack/package-hashes');\n return new PackageHashes({\n cwd: this.options.appPath,\n context: {\n config: this.options.config,\n packages: await this.packages,\n resolveMap: (await this.session).resolveMap,\n },\n });\n };\n this.#packageHashes = createPackageHashesLazy();\n }\n\n return this.#packageHashes;\n }\n\n public get taskRunner(): Promise<TaskRunner> {\n if (!this.#taskRunner) {\n const createTaskRunnerLazy = async () => {\n const { TaskRunner } = await import('../utilities/TaskRunner.js');\n return new TaskRunner({\n bus: await this.bus,\n reporter: await this.reporter,\n session: await this.session,\n });\n };\n this.#taskRunner = createTaskRunnerLazy();\n }\n return this.#taskRunner;\n }\n\n public get session(): Promise<Session> {\n if (!this.#session) {\n const createSessionLazy = async () => {\n const { createSession } = await import('./createSession.js');\n return createSession(this.options, {\n reporter: await this.reporter,\n packages: await this.packages,\n telemetryClient: await this.telemetryClient,\n });\n };\n this.#session = createSessionLazy();\n }\n\n return this.#session;\n }\n\n public get packageImportPaths(): Promise<PackageImportPaths> {\n if (!this.#packageImportPaths) {\n this.#packageImportPaths = Promise.resolve(new Map<string, string[]>());\n }\n return this.#packageImportPaths;\n }\n\n public get remoteCacheClient(): Promise<RemoteCacheClient | undefined> {\n if (!this.#remoteCacheClient) {\n const createRemoteCacheClientLazy = async () => {\n if (!this.options.remoteCacheClientLoginMethod) {\n throw new Error('remoteCacheClientLoginMethod is required to create api context with remote cache');\n }\n\n return createRemoteCacheClient({\n ctx: {\n session: await this.session,\n reporter: await this.reporter,\n telemetryClient: await this.telemetryClient,\n },\n input: {\n loginMethod: this.options.remoteCacheClientLoginMethod,\n },\n });\n };\n this.#remoteCacheClient = createRemoteCacheClientLazy();\n }\n return this.#remoteCacheClient;\n }\n\n public async dispose(): Promise<void> {\n if (this.#watcher) {\n const watcher = await this.#watcher;\n await watcher.unwatchAll();\n }\n }\n}\n\nexport async function createPartialApiContext<\n TKeys extends Exclude<keyof Context, 'dispose'>,\n TReturn extends Pick<Context, TKeys | 'dispose' | 'reporter' | 'telemetryClient'>,\n>(options: LazyApiContextOptions & { items: TKeys[] }): Promise<TReturn> {\n const { reporter, telemetryClient, items } = options;\n const lazyContext = new LazyApiContext(options);\n\n const result = {\n reporter,\n telemetryClient,\n dispose: () => {\n return lazyContext.dispose();\n },\n } as TReturn;\n\n for (const item of items) {\n result[item] = (await lazyContext[item]) as TReturn[TKeys];\n }\n\n return result;\n}\n"]}
@@ -5,6 +5,7 @@ import type { TaskReporter } from '@ms-cloudpack/task-reporter';
5
5
  import type { TelemetryClient } from '@ms-cloudpack/telemetry';
6
6
  import type { TaskRunner } from '../utilities/TaskRunner.js';
7
7
  import type { PackageImportPaths } from '@ms-cloudpack/import-map';
8
+ import type { RemoteCacheClient } from '@ms-cloudpack/remote-cache';
8
9
  /** Context for Cloudpack API server procedures. */
9
10
  export interface Context {
10
11
  session: Session;
@@ -16,6 +17,7 @@ export interface Context {
16
17
  taskRunner: TaskRunner;
17
18
  packageImportPaths: PackageImportPaths;
18
19
  packageHashes: PackageHashesCache;
20
+ remoteCacheClient?: RemoteCacheClient;
19
21
  dispose(): Promise<void>;
20
22
  }
21
23
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../../src/types/Context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACvG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,mDAAmD;AACnD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;IACb,eAAe,EAAE,eAAe,CAAC;IACjC,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,uBAAuB,CAAC;IAClC,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,aAAa,EAAE,kBAAkB,CAAC;IAClC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,CACxB,YAAY,SAAS,MAAM,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EACnD,YAAY,SAAS,MAAM,OAAO,IAChC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG;IAChC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;CACtC,CAAC"}
1
+ {"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../../src/types/Context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACvG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,mDAAmD;AACnD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;IACb,eAAe,EAAE,eAAe,CAAC;IACjC,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,uBAAuB,CAAC;IAClC,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,aAAa,EAAE,kBAAkB,CAAC;IAClC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,CACxB,YAAY,SAAS,MAAM,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EACnD,YAAY,SAAS,MAAM,OAAO,IAChC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG;IAChC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;CACtC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Context.js","sourceRoot":"","sources":["../../src/types/Context.ts"],"names":[],"mappings":"","sourcesContent":["import type { PackageDefinitionsCache, PackageHashesCache, Session } from '@ms-cloudpack/common-types';\nimport type { DataBus } from '@ms-cloudpack/data-bus';\nimport type { Watcher } from '@ms-cloudpack/file-watcher';\nimport type { TaskReporter } from '@ms-cloudpack/task-reporter';\nimport type { TelemetryClient } from '@ms-cloudpack/telemetry';\nimport type { TaskRunner } from '../utilities/TaskRunner.js';\nimport type { PackageImportPaths } from '@ms-cloudpack/import-map';\n\n/** Context for Cloudpack API server procedures. */\nexport interface Context {\n session: Session;\n bus: DataBus;\n telemetryClient: TelemetryClient;\n reporter: TaskReporter;\n watcher: Watcher;\n packages: PackageDefinitionsCache;\n taskRunner: TaskRunner;\n packageImportPaths: PackageImportPaths;\n packageHashes: PackageHashesCache;\n dispose(): Promise<void>;\n}\n\n/**\n * Helper for partial context and session objects.\n * First param is context keys and second is session keys.\n * (This can make it easier to tell which properties are actually used where.)\n */\nexport type PartialContext<\n TContextKeys extends keyof Omit<Context, 'session'>,\n TSessionKeys extends keyof Session,\n> = Pick<Context, TContextKeys> & {\n session: Pick<Session, TSessionKeys>;\n};\n"]}
1
+ {"version":3,"file":"Context.js","sourceRoot":"","sources":["../../src/types/Context.ts"],"names":[],"mappings":"","sourcesContent":["import type { PackageDefinitionsCache, PackageHashesCache, Session } from '@ms-cloudpack/common-types';\nimport type { DataBus } from '@ms-cloudpack/data-bus';\nimport type { Watcher } from '@ms-cloudpack/file-watcher';\nimport type { TaskReporter } from '@ms-cloudpack/task-reporter';\nimport type { TelemetryClient } from '@ms-cloudpack/telemetry';\nimport type { TaskRunner } from '../utilities/TaskRunner.js';\nimport type { PackageImportPaths } from '@ms-cloudpack/import-map';\nimport type { RemoteCacheClient } from '@ms-cloudpack/remote-cache';\n\n/** Context for Cloudpack API server procedures. */\nexport interface Context {\n session: Session;\n bus: DataBus;\n telemetryClient: TelemetryClient;\n reporter: TaskReporter;\n watcher: Watcher;\n packages: PackageDefinitionsCache;\n taskRunner: TaskRunner;\n packageImportPaths: PackageImportPaths;\n packageHashes: PackageHashesCache;\n remoteCacheClient?: RemoteCacheClient;\n dispose(): Promise<void>;\n}\n\n/**\n * Helper for partial context and session objects.\n * First param is context keys and second is session keys.\n * (This can make it easier to tell which properties are actually used where.)\n */\nexport type PartialContext<\n TContextKeys extends keyof Omit<Context, 'session'>,\n TSessionKeys extends keyof Session,\n> = Pick<Context, TContextKeys> & {\n session: Pick<Session, TSessionKeys>;\n};\n"]}
@@ -1,6 +1,10 @@
1
1
  import type { LoginMethod, RemoteCacheClient } from '@ms-cloudpack/remote-cache';
2
2
  import type { ApiParams } from '../types/ApiParams.js';
3
+ /**
4
+ * Lazy loads the remote cache client and returns it.
5
+ * @returns - The remote cache client if it is configured, otherwise undefined.
6
+ */
3
7
  export declare function createRemoteCacheClient(params: ApiParams<{
4
8
  loginMethod: LoginMethod;
5
- }, 'session' | 'reporter' | 'telemetryClient'>): Promise<RemoteCacheClient>;
9
+ }, 'session' | 'reporter' | 'telemetryClient'>): Promise<RemoteCacheClient | undefined>;
6
10
  //# sourceMappingURL=createRemoteCacheClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createRemoteCacheClient.d.ts","sourceRoot":"","sources":["../../src/utilities/createRemoteCacheClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,SAAS,CACf;IACE,WAAW,EAAE,WAAW,CAAC;CAC1B,EACD,SAAS,GAAG,UAAU,GAAG,iBAAiB,CAC3C,GACA,OAAO,CAAC,iBAAiB,CAAC,CAc5B"}
1
+ {"version":3,"file":"createRemoteCacheClient.d.ts","sourceRoot":"","sources":["../../src/utilities/createRemoteCacheClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,SAAS,CACf;IACE,WAAW,EAAE,WAAW,CAAC;CAC1B,EACD,SAAS,GAAG,UAAU,GAAG,iBAAiB,CAC3C,GACA,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAoBxC"}
@@ -1,9 +1,16 @@
1
- import { ensureRemoteCacheEnabled } from '../utilities/ensureRemoteCacheEnabled.js';
1
+ /**
2
+ * Lazy loads the remote cache client and returns it.
3
+ * @returns - The remote cache client if it is configured, otherwise undefined.
4
+ */
2
5
  export async function createRemoteCacheClient(params) {
3
6
  const { ctx, input } = params;
4
7
  const { loginMethod } = input;
5
8
  const { session, reporter, telemetryClient } = ctx;
6
- const { container, storageAccount, tenantId } = ensureRemoteCacheEnabled(session.config);
9
+ if (!session.config.remoteCache) {
10
+ // Remote cache is not configured, return undefined.
11
+ return undefined;
12
+ }
13
+ const { container, storageAccount, tenantId } = session.config.remoteCache;
7
14
  const remoteCacheModule = await import('@ms-cloudpack/remote-cache');
8
15
  const client = await remoteCacheModule.createRemoteCacheClient({
9
16
  context: { reporter, telemetryClient },
@@ -1 +1 @@
1
- {"version":3,"file":"createRemoteCacheClient.js","sourceRoot":"","sources":["../../src/utilities/createRemoteCacheClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAIpF,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAKC;IAED,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAC9B,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC9B,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,GAAG,CAAC;IACnD,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzF,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAErE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,uBAAuB,CAAC;QAC7D,OAAO,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE;QACtC,OAAO,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE;KAC5F,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import { ensureRemoteCacheEnabled } from '../utilities/ensureRemoteCacheEnabled.js';\nimport type { LoginMethod, RemoteCacheClient } from '@ms-cloudpack/remote-cache';\nimport type { ApiParams } from '../types/ApiParams.js';\n\nexport async function createRemoteCacheClient(\n params: ApiParams<\n {\n loginMethod: LoginMethod;\n },\n 'session' | 'reporter' | 'telemetryClient'\n >,\n): Promise<RemoteCacheClient> {\n const { ctx, input } = params;\n const { loginMethod } = input;\n const { session, reporter, telemetryClient } = ctx;\n const { container, storageAccount, tenantId } = ensureRemoteCacheEnabled(session.config);\n\n const remoteCacheModule = await import('@ms-cloudpack/remote-cache');\n\n const client = await remoteCacheModule.createRemoteCacheClient({\n context: { reporter, telemetryClient },\n options: { container, loginMethod, storageAccount, cachePath: session.cachePath, tenantId },\n });\n\n return client;\n}\n"]}
1
+ {"version":3,"file":"createRemoteCacheClient.js","sourceRoot":"","sources":["../../src/utilities/createRemoteCacheClient.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAKC;IAED,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAC9B,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC9B,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,GAAG,CAAC;IAEnD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAChC,oDAAoD;QACpD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;IAE3E,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAErE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,uBAAuB,CAAC;QAC7D,OAAO,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE;QACtC,OAAO,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE;KAC5F,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import type { LoginMethod, RemoteCacheClient } from '@ms-cloudpack/remote-cache';\nimport type { ApiParams } from '../types/ApiParams.js';\n\n/**\n * Lazy loads the remote cache client and returns it.\n * @returns - The remote cache client if it is configured, otherwise undefined.\n */\nexport async function createRemoteCacheClient(\n params: ApiParams<\n {\n loginMethod: LoginMethod;\n },\n 'session' | 'reporter' | 'telemetryClient'\n >,\n): Promise<RemoteCacheClient | undefined> {\n const { ctx, input } = params;\n const { loginMethod } = input;\n const { session, reporter, telemetryClient } = ctx;\n\n if (!session.config.remoteCache) {\n // Remote cache is not configured, return undefined.\n return undefined;\n }\n\n const { container, storageAccount, tenantId } = session.config.remoteCache;\n\n const remoteCacheModule = await import('@ms-cloudpack/remote-cache');\n\n const client = await remoteCacheModule.createRemoteCacheClient({\n context: { reporter, telemetryClient },\n options: { container, loginMethod, storageAccount, cachePath: session.cachePath, tenantId },\n });\n\n return client;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/api-server",
3
- "version": "0.57.2",
3
+ "version": "0.58.0",
4
4
  "description": "An implementation of the API server that does interacts with a task scheduler.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -40,7 +40,7 @@
40
40
  "@ms-cloudpack/package-utilities": "^11.1.1",
41
41
  "@ms-cloudpack/path-string-parsing": "^1.2.6",
42
42
  "@ms-cloudpack/path-utilities": "^2.8.2",
43
- "@ms-cloudpack/remote-cache": "^0.9.19",
43
+ "@ms-cloudpack/remote-cache": "^0.10.0",
44
44
  "@ms-cloudpack/task-reporter": "^0.14.8",
45
45
  "@ms-cloudpack/telemetry": "^0.10.6",
46
46
  "@trpc/client": "11.0.0-rc.648",