@ms-cloudpack/api-server 0.61.17 → 0.61.19

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,6 +1,6 @@
1
1
  import { type EnsurePackageBundledContext } from './ensurePackageBundled.js';
2
2
  import type { SyncResult } from '../types/SyncResult.js';
3
- import type { LoginMethod } from '@ms-cloudpack/remote-cache';
3
+ import type { LoginMethod } from '@ms-cloudpack/auth';
4
4
  /**
5
5
  * Bundle the current app and its dependencies, and upload them to the remote cache.
6
6
  */
@@ -1 +1 @@
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;AAGzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAY9D;;GAEG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,EAC7B,GAAG,EAAE,IAAI,CAAC,2BAA2B,EAAE,KAAK,GAAG,SAAS,CAAC,GACxD,OAAO,CAAC,UAAU,CAAC,CAkGrB"}
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;AAGzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAYtD;;GAEG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,EAC7B,GAAG,EAAE,IAAI,CAAC,2BAA2B,EAAE,KAAK,GAAG,SAAS,CAAC,GACxD,OAAO,CAAC,UAAU,CAAC,CAkGrB"}
@@ -1 +1 @@
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';\nimport { getRemoteCachePackageId } from '../utilities/getRemoteCachePackageId.js';\nimport type { LoginMethod } from '@ms-cloudpack/remote-cache';\nimport { createImportMap } from '@ms-cloudpack/import-map';\nimport { serializeContext } from '../utilities/serializeContext.js';\nimport { writeJson } from '@ms-cloudpack/json-utilities';\n\nconst cloudpackContextFileName = 'cloudpack-context.json';\nconst templateAppServerUrl = 'template://app-server-url';\nconst templateBundleServerUrl = 'template://bundle-server-url';\n\n// TODO: don't hardcode this\nconst targetEnvironment = 'browser';\n\n/**\n * Bundle the current app and its dependencies, and upload them to the remote cache.\n */\nexport async function syncUpload(\n input: { login: LoginMethod },\n ctx: Omit<EnsurePackageBundledContext, 'bus' | 'watcher'>,\n): Promise<SyncResult> {\n const { login } = input;\n const { session, telemetryClient, taskRunner, remoteCacheClient: client } = ctx;\n const { config } = session;\n const { appPath } = config;\n const { remoteCache: remoteCacheConfig } = 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 if (!remoteCacheConfig) {\n throw new Error('Remote cache configuration 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 packageJson = await ctx.packages.get(appPath);\n const { name, version, description } = packageJson;\n\n const { dependencies, result: bundleResult } = await ensurePackageBundled(\n { name, version, enqueueDependencies: true },\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!, targetEnvironment },\n ctx,\n ),\n ),\n );\n\n if (config.features?.enableCloudHosted) {\n const appBundleLocation = await getBundleLocation({ packagePath: appPath, targetEnvironment }, ctx);\n const appOutputPath = appBundleLocation.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 if (!session.urls.appServer) {\n // Using template URLs for the app and bundle servers, because they are not known at this point and the will be replaced with the actual URLs at runtime.\n session.urls.appServer = templateAppServerUrl;\n session.urls.bundleServer = templateBundleServerUrl;\n }\n session.importMap ??= await createImportMap({ targetEnvironment: 'browser' }, ctx);\n await serializeContext(path.join(destinationFolder, cloudpackContextFileName), ctx);\n\n await writeJson(path.join(destinationFolder, 'package.json'), packageJson);\n\n const { createAppRegistryClient } = await import('@ms-cloudpack/remote-cache');\n const appRegistryClient = await createAppRegistryClient({\n context: ctx,\n options: { cachePath: session.cachePath, loginMethod: login },\n });\n\n await appRegistryClient.registerApp({\n name,\n // Using the current date and time as the version, because most apps are not versioned.\n version: new Date().toISOString().slice(0, 16).replace('T', ' '),\n resourceId: await getRemoteCachePackageId({ packagePath: appPath, targetEnvironment }, ctx),\n storageAccount: remoteCacheConfig.storageAccount,\n container: remoteCacheConfig.container,\n tenantId: remoteCacheConfig.tenantId,\n description,\n localBundleFolderName: appBundleLocation.folderName,\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":"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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';\nimport { getRemoteCachePackageId } from '../utilities/getRemoteCachePackageId.js';\nimport type { LoginMethod } from '@ms-cloudpack/auth';\nimport { createImportMap } from '@ms-cloudpack/import-map';\nimport { serializeContext } from '../utilities/serializeContext.js';\nimport { writeJson } from '@ms-cloudpack/json-utilities';\n\nconst cloudpackContextFileName = 'cloudpack-context.json';\nconst templateAppServerUrl = 'template://app-server-url';\nconst templateBundleServerUrl = 'template://bundle-server-url';\n\n// TODO: don't hardcode this\nconst targetEnvironment = 'browser';\n\n/**\n * Bundle the current app and its dependencies, and upload them to the remote cache.\n */\nexport async function syncUpload(\n input: { login: LoginMethod },\n ctx: Omit<EnsurePackageBundledContext, 'bus' | 'watcher'>,\n): Promise<SyncResult> {\n const { login } = input;\n const { session, telemetryClient, taskRunner, remoteCacheClient: client } = ctx;\n const { config } = session;\n const { appPath } = config;\n const { remoteCache: remoteCacheConfig } = 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 if (!remoteCacheConfig) {\n throw new Error('Remote cache configuration 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 packageJson = await ctx.packages.get(appPath);\n const { name, version, description } = packageJson;\n\n const { dependencies, result: bundleResult } = await ensurePackageBundled(\n { name, version, enqueueDependencies: true },\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!, targetEnvironment },\n ctx,\n ),\n ),\n );\n\n if (config.features?.enableCloudHosted) {\n const appBundleLocation = await getBundleLocation({ packagePath: appPath, targetEnvironment }, ctx);\n const appOutputPath = appBundleLocation.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 if (!session.urls.appServer) {\n // Using template URLs for the app and bundle servers, because they are not known at this point and the will be replaced with the actual URLs at runtime.\n session.urls.appServer = templateAppServerUrl;\n session.urls.bundleServer = templateBundleServerUrl;\n }\n session.importMap ??= await createImportMap({ targetEnvironment: 'browser' }, ctx);\n await serializeContext(path.join(destinationFolder, cloudpackContextFileName), ctx);\n\n await writeJson(path.join(destinationFolder, 'package.json'), packageJson);\n\n const { createAppRegistryClient } = await import('@ms-cloudpack/remote-cache');\n const appRegistryClient = await createAppRegistryClient({\n context: ctx,\n options: { cachePath: session.cachePath, loginMethod: login },\n });\n\n await appRegistryClient.registerApp({\n name,\n // Using the current date and time as the version, because most apps are not versioned.\n version: new Date().toISOString().slice(0, 16).replace('T', ' '),\n resourceId: await getRemoteCachePackageId({ packagePath: appPath, targetEnvironment }, ctx),\n storageAccount: remoteCacheConfig.storageAccount,\n container: remoteCacheConfig.container,\n tenantId: remoteCacheConfig.tenantId,\n description,\n localBundleFolderName: appBundleLocation.folderName,\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,6 +1,6 @@
1
1
  import type { Context } from '../types/Context.js';
2
2
  import type { CreateSessionOptions } from './createSession.js';
3
- import type { LoginMethod } from '@ms-cloudpack/remote-cache';
3
+ import type { LoginMethod } from '@ms-cloudpack/auth';
4
4
  export interface CreateApiContextOptions extends CreateSessionOptions, Pick<Context, 'reporter' | 'telemetryClient' | 'taskRunner'> {
5
5
  /**
6
6
  * Login method for the remote cache.
@@ -1 +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,CA0BvD;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBzF"}
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,oBAAoB,CAAC;AAGtD,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,CA6BvD;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBzF"}
@@ -1,4 +1,3 @@
1
- import { createRemoteCacheClient } from '../utilities/createRemoteCacheClient.js';
2
1
  import { createPackageDefinitions } from '@ms-cloudpack/config';
3
2
  /**
4
3
  * Asynchronously initialize a partial `Context`, encapsulating async importing of certain modules
@@ -20,8 +19,12 @@ export function createPartialApiContext(options) {
20
19
  context: { config, packages, resolveMap: session.resolveMap },
21
20
  });
22
21
  let remoteCacheClient;
23
- if (remoteCacheClientLoginMethod) {
24
- remoteCacheClient = await createRemoteCacheClient({ loginMethod: remoteCacheClientLoginMethod }, { session, reporter, telemetryClient });
22
+ const remoteCacheConfig = session.config.remoteCache;
23
+ if (remoteCacheClientLoginMethod && remoteCacheConfig) {
24
+ remoteCacheClient = await import('@ms-cloudpack/remote-cache').then(({ createRemoteCacheClient }) => createRemoteCacheClient({
25
+ context: { reporter, telemetryClient },
26
+ options: { cachePath: session.cachePath, loginMethod: remoteCacheClientLoginMethod, ...remoteCacheConfig },
27
+ }));
25
28
  }
26
29
  return { reporter, taskRunner, telemetryClient, packageHashes, packages, session, remoteCacheClient };
27
30
  });
@@ -1 +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,CAC/C,EAAE,WAAW,EAAE,4BAA4B,EAAE,EAC7C,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,CACvC,CAAC;QACJ,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;;;;;;;;;GASG;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 { loginMethod: remoteCacheClientLoginMethod },\n { 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 when\n * starting a server (and add unnecessary overhead otherwise). For other commands, use\n * `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"]}
1
+ {"version":3,"file":"createApiContext.js","sourceRoot":"","sources":["../../src/common/createApiContext.ts"],"names":[],"mappings":"AAGA,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,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;QACrD,IAAI,4BAA4B,IAAI,iBAAiB,EAAE,CAAC;YACtD,iBAAiB,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,uBAAuB,EAAE,EAAE,EAAE,CAClG,uBAAuB,CAAC;gBACtB,OAAO,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE;gBACtC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE,4BAA4B,EAAE,GAAG,iBAAiB,EAAE;aAC3G,CAAC,CACH,CAAC;QACJ,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;;;;;;;;;GASG;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/auth';\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 const remoteCacheConfig = session.config.remoteCache;\n if (remoteCacheClientLoginMethod && remoteCacheConfig) {\n remoteCacheClient = await import('@ms-cloudpack/remote-cache').then(({ createRemoteCacheClient }) =>\n createRemoteCacheClient({\n context: { reporter, telemetryClient },\n options: { cachePath: session.cachePath, loginMethod: remoteCacheClientLoginMethod, ...remoteCacheConfig },\n }),\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 when\n * starting a server (and add unnecessary overhead otherwise). For other commands, use\n * `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"]}
@@ -1,4 +1,4 @@
1
- import type { LoginMethod } from '@ms-cloudpack/remote-cache';
1
+ import type { LoginMethod } from '@ms-cloudpack/auth';
2
2
  /** Input for `syncUpload` and `syncDownload`. */
3
3
  export interface SyncInput {
4
4
  loginMethod: LoginMethod;
@@ -1 +1 @@
1
- {"version":3,"file":"SyncInput.d.ts","sourceRoot":"","sources":["../../src/types/SyncInput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,iDAAiD;AACjD,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,WAAW,CAAC;CAC1B"}
1
+ {"version":3,"file":"SyncInput.d.ts","sourceRoot":"","sources":["../../src/types/SyncInput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,iDAAiD;AACjD,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,WAAW,CAAC;CAC1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"SyncInput.js","sourceRoot":"","sources":["../../src/types/SyncInput.ts"],"names":[],"mappings":"","sourcesContent":["import type { LoginMethod } from '@ms-cloudpack/remote-cache';\n\n/** Input for `syncUpload` and `syncDownload`. */\nexport interface SyncInput {\n loginMethod: LoginMethod;\n}\n"]}
1
+ {"version":3,"file":"SyncInput.js","sourceRoot":"","sources":["../../src/types/SyncInput.ts"],"names":[],"mappings":"","sourcesContent":["import type { LoginMethod } from '@ms-cloudpack/auth';\n\n/** Input for `syncUpload` and `syncDownload`. */\nexport interface SyncInput {\n loginMethod: LoginMethod;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/api-server",
3
- "version": "0.61.17",
3
+ "version": "0.61.19",
4
4
  "description": "An implementation of the API server that does interacts with a task scheduler.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -27,25 +27,25 @@
27
27
  "@lage-run/logger": "^1.3.0",
28
28
  "@lage-run/scheduler": "^1.2.1",
29
29
  "@lage-run/target-graph": "^0.11.0",
30
- "@ms-cloudpack/bundler": "^0.24.13",
31
- "@ms-cloudpack/common-types": "^0.24.11",
32
- "@ms-cloudpack/config": "^0.33.23",
33
- "@ms-cloudpack/create-express-app": "^1.10.23",
30
+ "@ms-cloudpack/bundler": "^0.24.14",
31
+ "@ms-cloudpack/common-types": "^0.24.12",
32
+ "@ms-cloudpack/config": "^0.33.24",
33
+ "@ms-cloudpack/create-express-app": "^1.10.24",
34
34
  "@ms-cloudpack/data-bus": "^0.4.3",
35
35
  "@ms-cloudpack/environment": "^0.1.1",
36
- "@ms-cloudpack/esm-stub-utilities": "^0.14.15",
36
+ "@ms-cloudpack/esm-stub-utilities": "^0.14.16",
37
37
  "@ms-cloudpack/file-watcher": "^0.2.0",
38
- "@ms-cloudpack/import-map": "^0.10.5",
38
+ "@ms-cloudpack/import-map": "^0.10.6",
39
39
  "@ms-cloudpack/json-utilities": "^0.1.10",
40
- "@ms-cloudpack/package-hashes": "^0.7.35",
41
- "@ms-cloudpack/package-utilities": "^12.0.2",
40
+ "@ms-cloudpack/package-hashes": "^0.7.36",
41
+ "@ms-cloudpack/package-utilities": "^12.0.3",
42
42
  "@ms-cloudpack/path-string-parsing": "^1.2.6",
43
- "@ms-cloudpack/path-utilities": "^3.0.8",
44
- "@ms-cloudpack/remote-cache": "^0.10.22",
43
+ "@ms-cloudpack/path-utilities": "^3.0.9",
44
+ "@ms-cloudpack/remote-cache": "^0.11.0",
45
45
  "@ms-cloudpack/task-reporter": "^0.16.0",
46
- "@ms-cloudpack/telemetry": "^0.11.4",
47
- "@trpc/client": "11.0.1",
48
- "@trpc/server": "11.0.1",
46
+ "@ms-cloudpack/telemetry": "^0.11.5",
47
+ "@trpc/client": "^11.0.1",
48
+ "@trpc/server": "^11.0.1",
49
49
  "cors": "^2.8.5",
50
50
  "es-module-lexer": "^1.4.1",
51
51
  "filenamify": "^6.0.0",
@@ -57,6 +57,7 @@
57
57
  "zod": "^3.21.4"
58
58
  },
59
59
  "devDependencies": {
60
+ "@ms-cloudpack/auth": "^0.1.1",
60
61
  "@ms-cloudpack/eslint-plugin-internal": "^0.0.1",
61
62
  "@ms-cloudpack/scripts": "^0.0.1",
62
63
  "@ms-cloudpack/test-utilities": "^0.5.0",
@@ -1,10 +0,0 @@
1
- import type { LoginMethod, RemoteCacheClient } from '@ms-cloudpack/remote-cache';
2
- import type { PartialContext } from '../types/Context.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
- */
7
- export declare function createRemoteCacheClient(options: {
8
- loginMethod: LoginMethod;
9
- }, context: PartialContext<'reporter' | 'telemetryClient', 'cachePath' | 'config'>): Promise<RemoteCacheClient | undefined>;
10
- //# sourceMappingURL=createRemoteCacheClient.d.ts.map
@@ -1 +0,0 @@
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,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE;IACP,WAAW,EAAE,WAAW,CAAC;CAC1B,EACD,OAAO,EAAE,cAAc,CAAC,UAAU,GAAG,iBAAiB,EAAE,WAAW,GAAG,QAAQ,CAAC,GAC9E,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAoBxC"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Lazy loads the remote cache client and returns it.
3
- * @returns - The remote cache client if it is configured, otherwise undefined.
4
- */
5
- export async function createRemoteCacheClient(options, context) {
6
- const { loginMethod } = options;
7
- const { session, reporter, telemetryClient } = context;
8
- if (!session.config.remoteCache) {
9
- // Remote cache is not configured, return undefined.
10
- return undefined;
11
- }
12
- const { container, storageAccount, tenantId } = session.config.remoteCache;
13
- return telemetryClient.tracer.startActiveSpan('CREATE_REMOTE_CACHE_CLIENT', async () => {
14
- const remoteCacheModule = await import('@ms-cloudpack/remote-cache');
15
- const client = await remoteCacheModule.createRemoteCacheClient({
16
- context: { reporter, telemetryClient },
17
- options: { container, loginMethod, storageAccount, cachePath: session.cachePath, tenantId },
18
- });
19
- return client;
20
- });
21
- }
22
- //# sourceMappingURL=createRemoteCacheClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createRemoteCacheClient.js","sourceRoot":"","sources":["../../src/utilities/createRemoteCacheClient.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAEC,EACD,OAA+E;IAE/E,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAChC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;IAEvD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAChC,oDAAoD;QACpD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;IAE3E,OAAO,eAAe,CAAC,MAAM,CAAC,eAAe,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;QAErE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,uBAAuB,CAAC;YAC7D,OAAO,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE;YACtC,OAAO,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE;SAC5F,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { LoginMethod, RemoteCacheClient } from '@ms-cloudpack/remote-cache';\nimport type { PartialContext } from '../types/Context.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 options: {\n loginMethod: LoginMethod;\n },\n context: PartialContext<'reporter' | 'telemetryClient', 'cachePath' | 'config'>,\n): Promise<RemoteCacheClient | undefined> {\n const { loginMethod } = options;\n const { session, reporter, telemetryClient } = context;\n\n if (!session.config.remoteCache) {\n // Remote cache is not configured, return undefined.\n return undefined;\n }\n const { container, storageAccount, tenantId } = session.config.remoteCache;\n\n return telemetryClient.tracer.startActiveSpan('CREATE_REMOTE_CACHE_CLIENT', async () => {\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}\n"]}