@dxos/edge-compute 0.0.0 → 0.11.1

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.
Files changed (39) hide show
  1. package/dist/lib/bundler.mjs +195 -0
  2. package/dist/lib/bundler.mjs.map +1 -0
  3. package/dist/lib/chunk-http-plugin-esbuild.mjs +52 -0
  4. package/dist/lib/chunk-http-plugin-esbuild.mjs.map +1 -0
  5. package/dist/lib/index.mjs +444 -0
  6. package/dist/lib/index.mjs.map +1 -0
  7. package/dist/lib/native.mjs +148 -0
  8. package/dist/lib/native.mjs.map +1 -0
  9. package/dist/lib/testing.mjs +40 -0
  10. package/dist/lib/testing.mjs.map +1 -0
  11. package/dist/types/src/EdgeProcessManager.d.ts +10 -4
  12. package/dist/types/src/EdgeProcessManager.d.ts.map +1 -1
  13. package/dist/types/src/EdgeProcessManager.test.d.ts +2 -0
  14. package/dist/types/src/EdgeProcessManager.test.d.ts.map +1 -0
  15. package/dist/types/src/EdgeTriggerManager.d.ts +11 -3
  16. package/dist/types/src/EdgeTriggerManager.d.ts.map +1 -1
  17. package/dist/types/src/native/bundler.d.ts.map +1 -1
  18. package/dist/types/src/testing/services.d.ts +7 -4
  19. package/dist/types/src/testing/services.d.ts.map +1 -1
  20. package/dist/types/tsconfig.tsbuildinfo +1 -1
  21. package/package.json +22 -22
  22. package/src/EdgeProcessManager.test.ts +59 -0
  23. package/src/EdgeProcessManager.ts +65 -16
  24. package/src/EdgeTriggerManager.ts +105 -31
  25. package/src/native/bundler.ts +8 -1
  26. package/src/testing/services.ts +22 -16
  27. package/dist/lib/neutral/bundler/index.mjs +0 -213
  28. package/dist/lib/neutral/bundler/index.mjs.map +0 -7
  29. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +0 -10
  30. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +0 -7
  31. package/dist/lib/neutral/chunk-RN6KVGN4.mjs +0 -63
  32. package/dist/lib/neutral/chunk-RN6KVGN4.mjs.map +0 -7
  33. package/dist/lib/neutral/index.mjs +0 -343
  34. package/dist/lib/neutral/index.mjs.map +0 -7
  35. package/dist/lib/neutral/meta.json +0 -1
  36. package/dist/lib/neutral/native/index.mjs +0 -186
  37. package/dist/lib/neutral/native/index.mjs.map +0 -7
  38. package/dist/lib/neutral/testing/index.mjs +0 -41
  39. package/dist/lib/neutral/testing/index.mjs.map +0 -7
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/native/bundler.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n/* eslint-disable no-console */\n\nimport * as Array from 'effect/Array';\nimport * as Function from 'effect/Function';\nimport * as Order from 'effect/Order';\nimport * as Record from 'effect/Record';\nimport { type Message, build } from 'esbuild';\nimport { statSync } from 'node:fs';\nimport { writeFile } from 'node:fs/promises';\nimport * as fs from 'node:fs/promises';\nimport { basename, dirname, join, relative, resolve } from 'node:path';\n\nimport { BaseError } from '@dxos/errors';\nimport { PublicKey } from '@dxos/keys';\nimport { Unit, trim } from '@dxos/util';\n\nimport { httpPlugin } from '../bundler/plugins/http-plugin-esbuild';\n\ntype BundleOptions = {\n entryPoint: string;\n verbose?: boolean;\n};\n\nexport type BundleResult = {\n entryPoint: string;\n assets: Record<string, Uint8Array>;\n};\n\n/**\n * Bundles a function.\n * Pulls in node_modules and wasm files.\n */\nexport const bundleFunction = async (options: BundleOptions): Promise<BundleResult> => {\n const outdir = `/tmp/dxos-functions-bundle-${new Date().toISOString()}-${PublicKey.random().toHex()}`;\n const gitDir = findGitDir(dirname(options.entryPoint));\n\n const result = await build({\n entryPoints: {\n // Gets mapped to `index.js` by esbuild.\n index: 'dxos:entrypoint',\n },\n bundle: true,\n format: 'esm',\n platform: 'browser',\n conditions: ['workerd', 'worker', 'browser'],\n outdir,\n metafile: true,\n treeShaking: true,\n sourcemap: true,\n splitting: true,\n logOverride: {\n 'ignored-bare-import': 'silent',\n },\n loader: {\n '.wasm': 'copy',\n },\n external: ['node:*', 'cloudflare:workers', 'functions-service:user-script'],\n plugins: [\n httpPlugin,\n {\n name: 'entrypoint',\n setup: (build) => {\n build.onResolve({ filter: /^dxos:entrypoint$/ }, () => ({\n path: 'dxos:entrypoint',\n namespace: 'dxos:entrypoint',\n }));\n build.onLoad({ filter: /^dxos:entrypoint$/, namespace: 'dxos:entrypoint' }, () => ({\n contents: trim`\n export default {\n fetch: async (...args) => {\n const { wrapFunctionHandler } = await import('@dxos/compute-runtime');\n const { wrapHandlerForCloudflare, setupFunctionsLogger } = await import('@dxos/functions-runtime-cloudflare');\n const { default: handler } = await import('${options.entryPoint}');\n\n setupFunctionsLogger();\n\n //\n // Wrapper to make the function cloudflare-compatible.\n //\n return wrapHandlerForCloudflare(wrapFunctionHandler(handler))(...args);\n },\n };\n `,\n resolveDir: new URL('.', import.meta.url).pathname,\n }));\n },\n },\n {\n name: 'metafile',\n setup: (build) => {\n build.onEnd(async (result) => {\n await writeFile(\n join(build.initialOptions.outdir!, 'metafile.json'),\n JSON.stringify(result.metafile, null, 2),\n );\n await writeFile(\n join(build.initialOptions.outdir!, 'manifest.json'),\n JSON.stringify(\n {\n files: Object.keys(result.metafile!.outputs).map((path) => ({\n name: relative(build.initialOptions.outdir!, path),\n })),\n },\n null,\n 2,\n ),\n );\n });\n },\n },\n ],\n });\n\n if (result.errors.length > 0) {\n throw new BundleCreationError(result.errors);\n }\n\n const assetPaths = Object.keys(result.metafile!.outputs).map((path) => relative(outdir, path));\n const assets = Function.pipe(\n await Promise.all(assetPaths.map((path) => fs.readFile(join(outdir, path)))),\n Array.zipWith(assetPaths, (content, path) => [path, content] as const),\n Record.fromEntries,\n );\n\n if (options.verbose) {\n console.log('Function compiled');\n console.log('Metafile path:', `${outdir}/metafile.json`);\n console.log('Assets:\\n');\n console.log(\n Object.entries(result.metafile!.outputs)\n .sort((a, b) => b[1].bytes - a[1].bytes)\n .map(\n ([path, desc]) =>\n `${formatBytes(desc.bytes).padEnd(10)} - ${relative(outdir, path)} ${basename(path) === 'index.js' ? ' (entry point)' : ''}`,\n )\n .join('\\n'),\n );\n\n const filesInOutput = Function.pipe(\n result.metafile.outputs,\n Record.values,\n Array.flatMap((_) => Record.toEntries(_.inputs)),\n );\n\n const moduleInOutput = Function.pipe(\n result.metafile.inputs,\n Record.values,\n Array.flatMap((_) => _.imports),\n Array.filter((_) => !!_.original?.match(/^@[a-zA-Z]+/)),\n Array.filter((_) => !!filesInOutput.find(([name]) => name === _.path)),\n Array.map((_) => _.original!),\n Array.dedupe,\n Array.sort(Order.string),\n );\n console.log(`Modules in output:\\n${moduleInOutput.map((_) => ` - ${_}`).join('\\n')}`);\n }\n\n for (const path of Object.keys(assets)) {\n if (path.endsWith('.map')) {\n const content = assets[path];\n const map = JSON.parse(new TextDecoder().decode(content));\n const processedMap = postprocessSourceMap(map, outdir, gitDir);\n assets[path] = Buffer.from(JSON.stringify(processedMap));\n }\n }\n\n // Must match esbuild entry point.\n return { entryPoint: 'index.js', assets };\n};\n\nclass BundleCreationError extends BaseError.extend('BundleCreationError', 'Bundle creation failed') {\n constructor(errors: Message[]) {\n super({ context: { errors } });\n }\n}\n\nconst formatBytes = (bytes: number) => {\n if (bytes < Unit.Kilobyte(1).unit.quotient) {\n return Unit.Byte(bytes).toString();\n }\n if (bytes < Unit.Megabyte(1).unit.quotient) {\n return Unit.Kilobyte(bytes).toString();\n }\n if (bytes < Unit.Gigabyte(1).unit.quotient) {\n return Unit.Megabyte(bytes).toString();\n }\n return Unit.Gigabyte(bytes).toString();\n};\n\nconst findGitDir = (startPath: string): string | null => {\n let current = startPath;\n while (current !== '/') {\n const gitPath = join(current, '.git');\n try {\n if (statSync(gitPath).isDirectory()) {\n return gitPath;\n }\n } catch {\n // ignore\n }\n current = dirname(current);\n }\n return null;\n};\n\n/**\n * Adjust source paths to be relative to the repo root.\n */\nconst postprocessSourceMap = (map: any, outDir: string, gitDir: string | null) => {\n if (!gitDir) {\n return map;\n }\n\n // Update source paths to be relative to the output directory\n if (map.sources && Array.isArray(map.sources)) {\n map.sources = map.sources.map((source: string) => {\n const resolved = resolve(outDir, source);\n if (resolved.startsWith(dirname(gitDir))) {\n const rel = relative(dirname(gitDir), resolved);\n return rel;\n }\n return source;\n });\n }\n\n return map;\n};\n"],
5
- "mappings": ";;;;;;AAMA,YAAYA,WAAW;AACvB,YAAYC,cAAc;AAC1B,YAAYC,WAAW;AACvB,YAAYC,YAAY;AACxB,SAAuBC,aAAa;AACpC,SAASC,gBAAgB;AACzB,SAASC,iBAAiB;AAC1B,YAAYC,QAAQ;AACpB,SAASC,UAAUC,SAASC,MAAMC,UAAUC,eAAe;AAE3D,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,MAAMC,YAAY;AAkBpB,IAAMC,iBAAiB,OAAOC,YAAAA;AACnC,QAAMC,SAAS,+BAA8B,oBAAIC,KAAAA,GAAOC,YAAW,CAAA,IAAMC,UAAUC,OAAM,EAAGC,MAAK,CAAA;AACjG,QAAMC,SAASC,WAAWC,QAAQT,QAAQU,UAAU,CAAA;AAEpD,QAAMC,SAAS,MAAMC,MAAM;IACzBC,aAAa;;MAEXC,OAAO;IACT;IACAC,QAAQ;IACRC,QAAQ;IACRC,UAAU;IACVC,YAAY;MAAC;MAAW;MAAU;;IAClCjB;IACAkB,UAAU;IACVC,aAAa;IACbC,WAAW;IACXC,WAAW;IACXC,aAAa;MACX,uBAAuB;IACzB;IACAC,QAAQ;MACN,SAAS;IACX;IACAC,UAAU;MAAC;MAAU;MAAsB;;IAC3CC,SAAS;MACPC;MACA;QACEC,MAAM;QACNC,OAAO,CAACjB,WAAAA;AACNA,UAAAA,OAAMkB,UAAU;YAAEC,QAAQ;UAAoB,GAAG,OAAO;YACtDC,MAAM;YACNC,WAAW;UACb,EAAA;AACArB,UAAAA,OAAMsB,OAAO;YAAEH,QAAQ;YAAqBE,WAAW;UAAkB,GAAG,OAAO;YACjFE,UAAUC;;;;;+DAKyCpC,QAAQU,UAAU;;;;;;;;;;;YAWrE2B,YAAY,IAAIC,IAAI,KAAK,YAAYC,GAAG,EAAEC;UAC5C,EAAA;QACF;MACF;MACA;QACEZ,MAAM;QACNC,OAAO,CAACjB,WAAAA;AACNA,UAAAA,OAAM6B,MAAM,OAAO9B,YAAAA;AACjB,kBAAM+B,UACJC,KAAK/B,OAAMgC,eAAe3C,QAAS,eAAA,GACnC4C,KAAKC,UAAUnC,QAAOQ,UAAU,MAAM,CAAA,CAAA;AAExC,kBAAMuB,UACJC,KAAK/B,OAAMgC,eAAe3C,QAAS,eAAA,GACnC4C,KAAKC,UACH;cACEC,OAAOC,OAAOC,KAAKtC,QAAOQ,SAAU+B,OAAO,EAAEC,IAAI,CAACnB,UAAU;gBAC1DJ,MAAMwB,SAASxC,OAAMgC,eAAe3C,QAAS+B,IAAAA;cAC/C,EAAA;YACF,GACA,MACA,CAAA,CAAA;UAGN,CAAA;QACF;MACF;;EAEJ,CAAA;AAEA,MAAIrB,OAAO0C,OAAOC,SAAS,GAAG;AAC5B,UAAM,IAAIC,oBAAoB5C,OAAO0C,MAAM;EAC7C;AAEA,QAAMG,aAAaR,OAAOC,KAAKtC,OAAOQ,SAAU+B,OAAO,EAAEC,IAAI,CAACnB,SAASoB,SAASnD,QAAQ+B,IAAAA,CAAAA;AACxF,QAAMyB,SAAkBC,cACtB,MAAMC,QAAQC,IAAIJ,WAAWL,IAAI,CAACnB,SAAY6B,YAASlB,KAAK1C,QAAQ+B,IAAAA,CAAAA,CAAAA,CAAAA,GAC9D8B,cAAQN,YAAY,CAACO,SAAS/B,SAAS;IAACA;IAAM+B;GAAQ,GACrDC,kBAAW;AAGpB,MAAIhE,QAAQiE,SAAS;AACnBC,YAAQC,IAAI,mBAAA;AACZD,YAAQC,IAAI,kBAAkB,GAAGlE,MAAAA,gBAAsB;AACvDiE,YAAQC,IAAI,WAAA;AACZD,YAAQC,IACNnB,OAAOoB,QAAQzD,OAAOQ,SAAU+B,OAAO,EACpCmB,KAAK,CAACC,GAAGC,MAAMA,EAAE,CAAA,EAAGC,QAAQF,EAAE,CAAA,EAAGE,KAAK,EACtCrB,IACC,CAAC,CAACnB,MAAMyC,IAAAA,MACN,GAAGC,YAAYD,KAAKD,KAAK,EAAEG,OAAO,EAAA,CAAA,MAASvB,SAASnD,QAAQ+B,IAAAA,CAAAA,IAAS4C,SAAS5C,IAAAA,MAAU,aAAa,mBAAmB,EAAA,EAAI,EAE/HW,KAAK,IAAA,CAAA;AAGV,UAAMkC,gBAAyBnB,cAC7B/C,OAAOQ,SAAS+B,SACT4B,eACDC,cAAQ,CAACC,MAAaC,iBAAUD,EAAEE,MAAM,CAAA,CAAA;AAGhD,UAAMC,iBAA0BzB,cAC9B/C,OAAOQ,SAAS+D,QACTJ,eACDC,cAAQ,CAACC,MAAMA,EAAEI,OAAO,GACxBrD,aAAO,CAACiD,MAAM,CAAC,CAACA,EAAEK,UAAUC,MAAM,aAAA,CAAA,GAClCvD,aAAO,CAACiD,MAAM,CAAC,CAACH,cAAcU,KAAK,CAAC,CAAC3D,IAAAA,MAAUA,SAASoD,EAAEhD,IAAI,CAAA,GAC9DmB,UAAI,CAAC6B,MAAMA,EAAEK,QAAQ,GACrBG,cACAnB,WAAWoB,YAAM,CAAA;AAEzBvB,YAAQC,IAAI;EAAuBgB,eAAehC,IAAI,CAAC6B,MAAM,MAAMA,CAAAA,EAAG,EAAErC,KAAK,IAAA,CAAA,EAAO;EACtF;AAEA,aAAWX,QAAQgB,OAAOC,KAAKQ,MAAAA,GAAS;AACtC,QAAIzB,KAAK0D,SAAS,MAAA,GAAS;AACzB,YAAM3B,UAAUN,OAAOzB,IAAAA;AACvB,YAAMmB,OAAMN,KAAK8C,MAAM,IAAIC,YAAAA,EAAcC,OAAO9B,OAAAA,CAAAA;AAChD,YAAM+B,eAAeC,qBAAqB5C,MAAKlD,QAAQM,MAAAA;AACvDkD,aAAOzB,IAAAA,IAAQgE,OAAOC,KAAKpD,KAAKC,UAAUgD,YAAAA,CAAAA;IAC5C;EACF;AAGA,SAAO;IAAEpF,YAAY;IAAY+C;EAAO;AAC1C;AAEA,IAAMF,sBAAN,cAAkC2C,UAAUC,OAAO,uBAAuB,wBAAA,EAAA;EACxE,YAAY9C,QAAmB;AAC7B,UAAM;MAAE+C,SAAS;QAAE/C;MAAO;IAAE,CAAA;EAC9B;AACF;AAEA,IAAMqB,cAAc,CAACF,UAAAA;AACnB,MAAIA,QAAQ6B,KAAKC,SAAS,CAAA,EAAGC,KAAKC,UAAU;AAC1C,WAAOH,KAAKI,KAAKjC,KAAAA,EAAOkC,SAAQ;EAClC;AACA,MAAIlC,QAAQ6B,KAAKM,SAAS,CAAA,EAAGJ,KAAKC,UAAU;AAC1C,WAAOH,KAAKC,SAAS9B,KAAAA,EAAOkC,SAAQ;EACtC;AACA,MAAIlC,QAAQ6B,KAAKO,SAAS,CAAA,EAAGL,KAAKC,UAAU;AAC1C,WAAOH,KAAKM,SAASnC,KAAAA,EAAOkC,SAAQ;EACtC;AACA,SAAOL,KAAKO,SAASpC,KAAAA,EAAOkC,SAAQ;AACtC;AAEA,IAAMlG,aAAa,CAACqG,cAAAA;AAClB,MAAIC,UAAUD;AACd,SAAOC,YAAY,KAAK;AACtB,UAAMC,UAAUpE,KAAKmE,SAAS,MAAA;AAC9B,QAAI;AACF,UAAIE,SAASD,OAAAA,EAASE,YAAW,GAAI;AACnC,eAAOF;MACT;IACF,QAAQ;IAER;AACAD,cAAUrG,QAAQqG,OAAAA;EACpB;AACA,SAAO;AACT;AAKA,IAAMf,uBAAuB,CAAC5C,MAAU+D,QAAgB3G,WAAAA;AACtD,MAAI,CAACA,QAAQ;AACX,WAAO4C;EACT;AAGA,MAAIA,KAAIgE,WAAiBC,cAAQjE,KAAIgE,OAAO,GAAG;AAC7ChE,IAAAA,KAAIgE,UAAUhE,KAAIgE,QAAQhE,IAAI,CAACkE,WAAAA;AAC7B,YAAMC,WAAWC,QAAQL,QAAQG,MAAAA;AACjC,UAAIC,SAASE,WAAW/G,QAAQF,MAAAA,CAAAA,GAAU;AACxC,cAAMkH,MAAMrE,SAAS3C,QAAQF,MAAAA,GAAS+G,QAAAA;AACtC,eAAOG;MACT;AACA,aAAOJ;IACT,CAAA;EACF;AAEA,SAAOlE;AACT;",
6
- "names": ["Array", "Function", "Order", "Record", "build", "statSync", "writeFile", "fs", "basename", "dirname", "join", "relative", "resolve", "BaseError", "PublicKey", "Unit", "trim", "bundleFunction", "options", "outdir", "Date", "toISOString", "PublicKey", "random", "toHex", "gitDir", "findGitDir", "dirname", "entryPoint", "result", "build", "entryPoints", "index", "bundle", "format", "platform", "conditions", "metafile", "treeShaking", "sourcemap", "splitting", "logOverride", "loader", "external", "plugins", "httpPlugin", "name", "setup", "onResolve", "filter", "path", "namespace", "onLoad", "contents", "trim", "resolveDir", "URL", "url", "pathname", "onEnd", "writeFile", "join", "initialOptions", "JSON", "stringify", "files", "Object", "keys", "outputs", "map", "relative", "errors", "length", "BundleCreationError", "assetPaths", "assets", "pipe", "Promise", "all", "readFile", "zipWith", "content", "fromEntries", "verbose", "console", "log", "entries", "sort", "a", "b", "bytes", "desc", "formatBytes", "padEnd", "basename", "filesInOutput", "values", "flatMap", "_", "toEntries", "inputs", "moduleInOutput", "imports", "original", "match", "find", "dedupe", "string", "endsWith", "parse", "TextDecoder", "decode", "processedMap", "postprocessSourceMap", "Buffer", "from", "BaseError", "extend", "context", "Unit", "Kilobyte", "unit", "quotient", "Byte", "toString", "Megabyte", "Gigabyte", "startPath", "current", "gitPath", "statSync", "isDirectory", "outDir", "sources", "isArray", "source", "resolved", "resolve", "startsWith", "rel"]
7
- }
@@ -1,41 +0,0 @@
1
- import "../chunk-J5LGTIGS.mjs";
2
-
3
- // src/testing/services.ts
4
- import { ConfiguredCredentialsService } from "@dxos/compute-runtime";
5
- import { ServiceContainer } from "@dxos/compute-runtime";
6
- import { Database } from "@dxos/echo";
7
- import { assertArgument } from "@dxos/invariant";
8
-
9
- // src/testing/logger.ts
10
- import { Trace } from "@dxos/compute";
11
- import { log } from "@dxos/log";
12
- var __dxlog_file = "/Users/dmaretskyi/Code/dxos/dxos/packages/core/compute/edge-compute/src/testing/logger.ts";
13
- var noopTraceWriter = Trace.noopWriter;
14
- var consoleTraceWriter = {
15
- write: (event, payload) => {
16
- log.info(event.key, payload, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 9, S: void 0 });
17
- }
18
- };
19
-
20
- // src/testing/services.ts
21
- var createTestServices = ({ ai, credentials, db, logging, space } = {}) => {
22
- assertArgument(!(!!space && !!db), "space", "space can be provided only if db is not");
23
- return new ServiceContainer().setServices({
24
- // ai: createAiService(ai),
25
- credentials: createCredentialsService(credentials),
26
- database: space || db ? Database.makeService(space?.db || db) : void 0,
27
- trace: logging?.trace ?? (logging?.enabled ? consoleTraceWriter : noopTraceWriter)
28
- });
29
- };
30
- var createCredentialsService = (credentials) => {
31
- if (credentials?.services) {
32
- return new ConfiguredCredentialsService(credentials.services);
33
- }
34
- if (credentials?.service) {
35
- return credentials.service;
36
- }
37
- };
38
- export {
39
- createTestServices
40
- };
41
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/testing/services.ts", "../../../../src/testing/logger.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as Context from 'effect/Context';\n\nimport type { Space } from '@dxos/client/echo';\nimport { type Credential, type Trace } from '@dxos/compute';\nimport { ConfiguredCredentialsService } from '@dxos/compute-runtime';\nimport { ServiceContainer } from '@dxos/compute-runtime';\nimport { Database } from '@dxos/echo';\nimport { type EchoDatabase } from '@dxos/echo-client';\nimport { assertArgument } from '@dxos/invariant';\n\nimport { consoleTraceWriter, noopTraceWriter } from './logger';\n\n// TODO(burdon): Factor out.\nexport type OneOf<T> = {\n [K in keyof T]: { [P in K]: T[P] } & { [P in Exclude<keyof T, K>]?: never };\n}[keyof T];\n\nexport type AiServiceProvider = 'dev' | 'edge' | 'ollama' | 'lmstudio';\n\nexport type TestServiceOptions = {\n /**\n * AI service configuration.\n */\n ai?: any;\n\n /**\n * Credentials service configuration.\n */\n credentials?: OneOf<{\n /**\n * Predefined credentials list.\n */\n services?: Credential.ServiceCredential[];\n\n /**\n * Custom credentials service.\n */\n service?: Context.Tag.Service<Credential.CredentialsService>;\n }>;\n\n /**\n * Database configuration.\n */\n db?: EchoDatabase;\n\n /**\n * Gets database service from the space.\n * Exclusive with: `db`\n */\n space?: Space;\n\n /**\n * Trace writer configuration.\n */\n logging?: {\n enabled?: boolean;\n trace?: Context.Tag.Service<Trace.TraceService>;\n };\n};\n\n/**\n * @deprecated\n */\nexport const createTestServices = ({\n ai,\n credentials,\n db,\n logging,\n space,\n}: TestServiceOptions = {}): ServiceContainer => {\n assertArgument(!(!!space && !!db), 'space', 'space can be provided only if db is not');\n\n return new ServiceContainer().setServices({\n // ai: createAiService(ai),\n credentials: createCredentialsService(credentials),\n database: space || db ? Database.makeService(space?.db || db!) : undefined,\n trace: logging?.trace ?? (logging?.enabled ? consoleTraceWriter : noopTraceWriter),\n });\n};\n\nconst createCredentialsService = (\n credentials: TestServiceOptions['credentials'] | undefined,\n): Context.Tag.Service<Credential.CredentialsService> | undefined => {\n if (credentials?.services) {\n return new ConfiguredCredentialsService(credentials.services);\n }\n\n if (credentials?.service) {\n return credentials.service;\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Trace } from '@dxos/compute';\nimport { log } from '@dxos/log';\n\nexport const noopTraceWriter: Trace.TraceWriter = Trace.noopWriter;\n\nexport const consoleTraceWriter: Trace.TraceWriter = {\n write: (event, payload) => {\n log.info(event.key, payload as object);\n },\n};\n"],
5
- "mappings": ";;;AAQA,SAASA,oCAAoC;AAC7C,SAASC,wBAAwB;AACjC,SAASC,gBAAgB;AAEzB,SAASC,sBAAsB;;;ACR/B,SAASC,aAAa;AACtB,SAASC,WAAW;AAEpB,IAAA,eAAaC;AAGXC,IAAQC,kBAAOC,MAAAA;IACTC,qBAAgBD;EACtB,OAAA,CAAA,OAAA,YAAA;AACA,QAAA,KAAA,MAAA,KAAA,SAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,GAAA,GAAA,OAAA,CAAA;;;;;ADsDK,IAAME,qBAAqB,CAAC,EACjCC,IACAC,aACAC,IACAC,SACAC,MAAK,IACiB,CAAC,MAAC;AACxBC,iBAAe,EAAE,CAAC,CAACD,SAAS,CAAC,CAACF,KAAK,SAAS,yCAAA;AAE5C,SAAO,IAAII,iBAAAA,EAAmBC,YAAY;;IAExCN,aAAaO,yBAAyBP,WAAAA;IACtCQ,UAAUL,SAASF,KAAKQ,SAASC,YAAYP,OAAOF,MAAMA,EAAAA,IAAOU;IACjEC,OAAOV,SAASU,UAAUV,SAASW,UAAUC,qBAAqBC;EACpE,CAAA;AACF;AAEA,IAAMR,2BAA2B,CAC/BP,gBAAAA;AAEA,MAAIA,aAAagB,UAAU;AACzB,WAAO,IAAIC,6BAA6BjB,YAAYgB,QAAQ;EAC9D;AAEA,MAAIhB,aAAakB,SAAS;AACxB,WAAOlB,YAAYkB;EACrB;AACF;",
6
- "names": ["ConfiguredCredentialsService", "ServiceContainer", "Database", "assertArgument", "Trace", "log", "noopTraceWriter", "write", "event", "payload", "info", "createTestServices", "ai", "credentials", "db", "logging", "space", "assertArgument", "ServiceContainer", "setServices", "createCredentialsService", "database", "Database", "makeService", "undefined", "trace", "enabled", "consoleTraceWriter", "noopTraceWriter", "services", "ConfiguredCredentialsService", "service"]
7
- }