@dxos/compute 0.8.4-main.e098934 → 0.8.4-main.e8ec1fe
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{chunk-XQYPCRZP.mjs → chunk-CPBXT2HX.mjs} +155 -181
- package/dist/lib/browser/chunk-CPBXT2HX.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +31 -20
- package/dist/lib/browser/testing/index.mjs.map +4 -4
- package/dist/lib/node-esm/{chunk-2XWWSGAU.mjs → chunk-D3RM3FQW.mjs} +155 -181
- package/dist/lib/node-esm/chunk-D3RM3FQW.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +1 -1
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +31 -20
- package/dist/lib/node-esm/testing/index.mjs.map +4 -4
- package/dist/types/src/compute-graph-registry.d.ts +8 -3
- package/dist/types/src/compute-graph-registry.d.ts.map +1 -1
- package/dist/types/src/compute-graph-registry.test.d.ts +2 -0
- package/dist/types/src/compute-graph-registry.test.d.ts.map +1 -0
- package/dist/types/src/compute-graph.d.ts +4 -1
- package/dist/types/src/compute-graph.d.ts.map +1 -1
- package/dist/types/src/functions/async-function.d.ts +11 -9
- package/dist/types/src/functions/async-function.d.ts.map +1 -1
- package/dist/types/src/functions/edge-function.d.ts.map +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/testing/index.d.ts +1 -0
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/test-builder.d.ts +1 -1
- package/dist/types/src/testing/test-builder.d.ts.map +1 -1
- package/dist/types/src/testing/test-runtime.d.ts +10 -0
- package/dist/types/src/testing/test-runtime.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +23 -22
- package/src/compute-graph-registry.test.ts +154 -0
- package/src/compute-graph-registry.ts +17 -8
- package/src/compute-graph.test.ts +29 -10
- package/src/compute-graph.ts +25 -13
- package/src/functions/async-function.ts +13 -12
- package/src/functions/edge-function.ts +22 -19
- package/src/index.ts +0 -27
- package/src/testing/index.ts +1 -0
- package/src/testing/test-builder.ts +8 -2
- package/src/testing/test-runtime.ts +33 -0
- package/dist/lib/browser/chunk-XQYPCRZP.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2XWWSGAU.mjs.map +0 -7
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/testing/test-builder.ts", "../../../../src/testing/test-plugin.ts", "../../../../src/util.ts", "../../../../src/testing/util.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Client, type ClientOptions } from '@dxos/client';\nimport { type Context, Resource } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\n\nimport { type ComputeGraphOptions, ComputeGraphRegistry } from '../compute-graph-registry';\n\nexport type TestBuilderOptions = ClientOptions & ComputeGraphOptions
|
|
5
|
-
"mappings": ";;;;;;AAIA,SAASA,cAAkC;AAC3C,SAAuBC,gBAAgB;AACvC,SAASC,iBAAiB
|
|
6
|
-
"names": ["Client", "Resource", "invariant", "TestBuilder", "Resource", "
|
|
3
|
+
"sources": ["../../../../src/testing/test-builder.ts", "../../../../src/testing/test-runtime.ts", "../../../../src/testing/test-plugin.ts", "../../../../src/util.ts", "../../../../src/testing/util.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Client, type ClientOptions } from '@dxos/client';\nimport { type Context, Resource } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\n\nimport { type ComputeGraphOptions, ComputeGraphRegistry } from '../compute-graph-registry';\n\nimport { createMockedComputeRuntimeProvider } from './test-runtime';\n\nexport type TestBuilderOptions = ClientOptions & Partial<ComputeGraphOptions>;\n\n// TODO(burdon): Reconcile with @dxos/client/testing.\nexport class TestBuilder extends Resource {\n private _client?: Client;\n private _registry?: ComputeGraphRegistry;\n\n constructor(private readonly _options: TestBuilderOptions = {}) {\n super();\n }\n\n get ctx(): Context {\n return this._ctx;\n }\n\n get client(): Client {\n invariant(this._client);\n return this._client;\n }\n\n get registry(): ComputeGraphRegistry {\n invariant(this._registry);\n return this._registry;\n }\n\n override async _open(): Promise<void> {\n const client = new Client(this._options);\n await client.initialize();\n await client.halo.createIdentity();\n this._client = client;\n this._ctx.onDispose(async () => {\n await client.destroy();\n this._client = undefined;\n });\n\n const registry = new ComputeGraphRegistry({\n ...this._options,\n // Provide a default runtime provider for tests if not supplied.\n computeRuntime: this._options.computeRuntime ?? createMockedComputeRuntimeProvider(),\n });\n await registry.open();\n this._registry = registry;\n this._ctx.onDispose(async () => {\n await registry.close();\n this._registry = undefined;\n });\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Layer from 'effect/Layer';\nimport * as ManagedRuntime from 'effect/ManagedRuntime';\n\nimport { AiService } from '@dxos/ai';\nimport { type SpaceId } from '@dxos/client/echo';\nimport { CredentialsService, DatabaseService, type FunctionDefinition, QueueService } from '@dxos/functions';\nimport { FunctionInvocationServiceLayerTest } from '@dxos/functions-runtime/testing';\n\nimport { type FunctionsRuntimeProvider } from '../compute-graph-registry';\n\n/**\n * Minimal compute runtime provider for tests and Storybook.\n * Will cause errors if used for actual runtime.\n */\nexport const createMockedComputeRuntimeProvider = ({\n functions,\n}: { functions?: FunctionDefinition.Any[] } = {}): FunctionsRuntimeProvider => {\n return {\n getRuntime: (_spaceId: SpaceId) =>\n ManagedRuntime.make(\n FunctionInvocationServiceLayerTest({ functions }).pipe(\n Layer.provide(AiService.notAvailable),\n Layer.provide(CredentialsService.configuredLayer([])),\n Layer.provide(DatabaseService.notAvailable),\n Layer.provide(QueueService.notAvailable),\n ),\n ),\n };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { getDeep } from '@dxos/util';\nimport { type InterpreterState, type ProcedureAst } from '@dxos/vendor-hyperformula';\nimport { FunctionArgumentType } from '@dxos/vendor-hyperformula';\n\nimport { type ComputeGraphPlugin } from '../compute-graph-registry';\nimport { type AsyncFunction, AsyncFunctionPlugin } from '../functions';\nimport { parseNumberString } from '../util';\n\n/**\n * Testing functions run locally (not run via EDGE).\n * https://hyperformula.handsontable.com/guide/custom-functions.html#add-a-simple-custom-function\n */\nexport class TestPlugin extends AsyncFunctionPlugin {\n /**\n * Simple local function returns input value.\n */\n test(ast: ProcedureAst, state: InterpreterState) {\n const handler: AsyncFunction = async (_value) => {\n return _value;\n };\n\n return this.runAsyncFunction(ast, state, handler);\n }\n\n /**\n * Simple local function returns random number.\n */\n random(ast: ProcedureAst, state: InterpreterState) {\n const handler: AsyncFunction = async () => {\n return Math.random();\n };\n\n return this.runAsyncFunction(ast, state, handler);\n }\n\n /**\n * Async HTTP function.\n */\n crypto(ast: ProcedureAst, state: InterpreterState) {\n const handler: AsyncFunction = async (_currency) => {\n const currency = (_currency || 'USD').toUpperCase();\n const result = await fetch(`https://api.coindesk.com/v1/bpi/currentprice/${currency}.json`);\n const data = await result.json();\n const rate = getDeep<string>(data, ['bpi', currency, 'rate']);\n if (!rate) {\n return NaN;\n }\n\n return parseNumberString(rate);\n };\n\n return this.runAsyncFunction(ast, state, handler, { ttl: 10_000 });\n }\n}\n\nTestPlugin.implementedFunctions = {\n TEST: {\n method: 'test',\n parameters: [{ argumentType: FunctionArgumentType.NUMBER, optionalArg: false }],\n isVolatile: true,\n },\n\n RANDOM: {\n method: 'random',\n parameters: [],\n isVolatile: true,\n },\n\n CRYPTO: {\n method: 'crypto',\n parameters: [{ argumentType: FunctionArgumentType.STRING, optionalArg: true }],\n isVolatile: true,\n },\n};\n\nexport const TestPluginTranslations = {\n enGB: {\n TEST: 'Returns input value',\n RANDOM: 'Random number',\n CRYPTO: 'Crypto token value',\n },\n enUS: {\n TEST: 'Returns input value',\n RANDOM: 'Random number',\n CRYPTO: 'Crypto token value',\n },\n};\n\nexport const testFunctionPlugins: ComputeGraphPlugin[] = [\n {\n plugin: TestPlugin,\n translations: TestPluginTranslations,\n },\n];\n", "//\n// Copyright 2024 DXOS.org\n//\n\n// TODO(burdon): Factor out.\nexport const parseNumberString = (str: string): number => {\n return parseFloat(str.replace(/[^\\d.]/g, ''));\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { HyperFormula } from '@dxos/vendor-hyperformula';\n\nexport const getRegisteredFunctionNames = () => {\n return HyperFormula.buildEmpty({ licenseKey: 'gpl-v3' }).getRegisteredFunctionNames();\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;AAIA,SAASA,cAAkC;AAC3C,SAAuBC,gBAAgB;AACvC,SAASC,iBAAiB;;;ACF1B,YAAYC,WAAW;AACvB,YAAYC,oBAAoB;AAEhC,SAASC,iBAAiB;AAE1B,SAASC,oBAAoBC,iBAA0CC,oBAAoB;AAC3F,SAASC,0CAA0C;AAQ5C,IAAMC,qCAAqC,CAAC,EACjDC,UAAS,IACmC,CAAC,MAAC;AAC9C,SAAO;IACLC,YAAY,CAACC,aACIC,oBACbC,mCAAmC;MAAEJ;IAAU,CAAA,EAAGK,KAC1CC,cAAQC,UAAUC,YAAY,GAC9BF,cAAQG,mBAAmBC,gBAAgB,CAAA,CAAE,CAAA,GAC7CJ,cAAQK,gBAAgBH,YAAY,GACpCF,cAAQM,aAAaJ,YAAY,CAAA,CAAA;EAG/C;AACF;;;;ADjBO,IAAMK,cAAN,cAA0BC,SAAAA;;EACvBC;EACAC;EAER,YAA6BC,WAA+B,CAAC,GAAG;AAC9D,UAAK,GAAA,KADsBA,WAAAA;EAE7B;EAEA,IAAIC,MAAe;AACjB,WAAO,KAAKC;EACd;EAEA,IAAIC,SAAiB;AACnBC,cAAU,KAAKN,SAAO,QAAA;;;;;;;;;AACtB,WAAO,KAAKA;EACd;EAEA,IAAIO,WAAiC;AACnCD,cAAU,KAAKL,WAAS,QAAA;;;;;;;;;AACxB,WAAO,KAAKA;EACd;EAEA,MAAeO,QAAuB;AACpC,UAAMH,SAAS,IAAII,OAAO,KAAKP,QAAQ;AACvC,UAAMG,OAAOK,WAAU;AACvB,UAAML,OAAOM,KAAKC,eAAc;AAChC,SAAKZ,UAAUK;AACf,SAAKD,KAAKS,UAAU,YAAA;AAClB,YAAMR,OAAOS,QAAO;AACpB,WAAKd,UAAUe;IACjB,CAAA;AAEA,UAAMR,WAAW,IAAIS,qBAAqB;MACxC,GAAG,KAAKd;;MAERe,gBAAgB,KAAKf,SAASe,kBAAkBC,mCAAAA;IAClD,CAAA;AACA,UAAMX,SAASY,KAAI;AACnB,SAAKlB,YAAYM;AACjB,SAAKH,KAAKS,UAAU,YAAA;AAClB,YAAMN,SAASa,MAAK;AACpB,WAAKnB,YAAYc;IACnB,CAAA;EACF;AACF;;;AEvDA,SAASM,eAAe;AAExB,SAASC,4BAA4B;;;ACD9B,IAAMC,oBAAoB,CAACC,QAAAA;AAChC,SAAOC,WAAWD,IAAIE,QAAQ,WAAW,EAAA,CAAA;AAC3C;;;ADSO,IAAMC,aAAN,cAAyBC,oBAAAA;;;;EAI9BC,KAAKC,KAAmBC,OAAyB;AAC/C,UAAMC,UAAyB,OAAOC,WAAAA;AACpC,aAAOA;IACT;AAEA,WAAO,KAAKC,iBAAiBJ,KAAKC,OAAOC,OAAAA;EAC3C;;;;EAKAG,OAAOL,KAAmBC,OAAyB;AACjD,UAAMC,UAAyB,YAAA;AAC7B,aAAOI,KAAKD,OAAM;IACpB;AAEA,WAAO,KAAKD,iBAAiBJ,KAAKC,OAAOC,OAAAA;EAC3C;;;;EAKAK,OAAOP,KAAmBC,OAAyB;AACjD,UAAMC,UAAyB,OAAOM,cAAAA;AACpC,YAAMC,YAAYD,aAAa,OAAOE,YAAW;AACjD,YAAMC,SAAS,MAAMC,MAAM,gDAAgDH,QAAAA,OAAe;AAC1F,YAAMI,OAAO,MAAMF,OAAOG,KAAI;AAC9B,YAAMC,OAAOC,QAAgBH,MAAM;QAAC;QAAOJ;QAAU;OAAO;AAC5D,UAAI,CAACM,MAAM;AACT,eAAOE;MACT;AAEA,aAAOC,kBAAkBH,IAAAA;IAC3B;AAEA,WAAO,KAAKX,iBAAiBJ,KAAKC,OAAOC,SAAS;MAAEiB,KAAK;IAAO,CAAA;EAClE;AACF;AAEAtB,WAAWuB,uBAAuB;EAChCC,MAAM;IACJC,QAAQ;IACRC,YAAY;MAAC;QAAEC,cAAcC,qBAAqBC;QAAQC,aAAa;MAAM;;IAC7EC,YAAY;EACd;EAEAC,QAAQ;IACNP,QAAQ;IACRC,YAAY,CAAA;IACZK,YAAY;EACd;EAEAE,QAAQ;IACNR,QAAQ;IACRC,YAAY;MAAC;QAAEC,cAAcC,qBAAqBM;QAAQJ,aAAa;MAAK;;IAC5EC,YAAY;EACd;AACF;AAEO,IAAMI,yBAAyB;EACpCC,MAAM;IACJZ,MAAM;IACNQ,QAAQ;IACRC,QAAQ;EACV;EACAI,MAAM;IACJb,MAAM;IACNQ,QAAQ;IACRC,QAAQ;EACV;AACF;AAEO,IAAMK,sBAA4C;EACvD;IACEC,QAAQvC;IACRwC,cAAcL;EAChB;;;;AE5FF,SAASM,oBAAoB;AAEtB,IAAMC,6BAA6B,MAAA;AACxC,SAAOC,aAAaC,WAAW;IAAEC,YAAY;EAAS,CAAA,EAAGH,2BAA0B;AACrF;",
|
|
6
|
+
"names": ["Client", "Resource", "invariant", "Layer", "ManagedRuntime", "AiService", "CredentialsService", "DatabaseService", "QueueService", "FunctionInvocationServiceLayerTest", "createMockedComputeRuntimeProvider", "functions", "getRuntime", "_spaceId", "make", "FunctionInvocationServiceLayerTest", "pipe", "provide", "AiService", "notAvailable", "CredentialsService", "configuredLayer", "DatabaseService", "QueueService", "TestBuilder", "Resource", "_client", "_registry", "_options", "ctx", "_ctx", "client", "invariant", "registry", "_open", "Client", "initialize", "halo", "createIdentity", "onDispose", "destroy", "undefined", "ComputeGraphRegistry", "computeRuntime", "createMockedComputeRuntimeProvider", "open", "close", "getDeep", "FunctionArgumentType", "parseNumberString", "str", "parseFloat", "replace", "TestPlugin", "AsyncFunctionPlugin", "test", "ast", "state", "handler", "_value", "runAsyncFunction", "random", "Math", "crypto", "_currency", "currency", "toUpperCase", "result", "fetch", "data", "json", "rate", "getDeep", "NaN", "parseNumberString", "ttl", "implementedFunctions", "TEST", "method", "parameters", "argumentType", "FunctionArgumentType", "NUMBER", "optionalArg", "isVolatile", "RANDOM", "CRYPTO", "STRING", "TestPluginTranslations", "enGB", "enUS", "testFunctionPlugins", "plugin", "translations", "HyperFormula", "getRegisteredFunctionNames", "HyperFormula", "buildEmpty", "licenseKey"]
|
|
7
7
|
}
|
|
@@ -80,20 +80,13 @@ var inRange = (range, cell) => {
|
|
|
80
80
|
import { Event } from "@dxos/async";
|
|
81
81
|
import { Resource } from "@dxos/context";
|
|
82
82
|
import { DetailedCellError as DetailedCellError2 } from "@dxos/vendor-hyperformula";
|
|
83
|
-
function _define_property(obj, key, value) {
|
|
84
|
-
if (key in obj) {
|
|
85
|
-
Object.defineProperty(obj, key, {
|
|
86
|
-
value,
|
|
87
|
-
enumerable: true,
|
|
88
|
-
configurable: true,
|
|
89
|
-
writable: true
|
|
90
|
-
});
|
|
91
|
-
} else {
|
|
92
|
-
obj[key] = value;
|
|
93
|
-
}
|
|
94
|
-
return obj;
|
|
95
|
-
}
|
|
96
83
|
var ComputeNode = class extends Resource {
|
|
84
|
+
_graph;
|
|
85
|
+
sheetId;
|
|
86
|
+
update = new Event();
|
|
87
|
+
constructor(_graph, sheetId) {
|
|
88
|
+
super(), this._graph = _graph, this.sheetId = sheetId;
|
|
89
|
+
}
|
|
97
90
|
get graph() {
|
|
98
91
|
return this._graph;
|
|
99
92
|
}
|
|
@@ -126,9 +119,6 @@ var ComputeNode = class extends Resource {
|
|
|
126
119
|
// TODO(burdon): Load data into sheet.
|
|
127
120
|
async _open() {
|
|
128
121
|
}
|
|
129
|
-
constructor(_graph, sheetId) {
|
|
130
|
-
super(), _define_property(this, "_graph", void 0), _define_property(this, "sheetId", void 0), _define_property(this, "update", void 0), this._graph = _graph, this.sheetId = sheetId, this.update = new Event();
|
|
131
|
-
}
|
|
132
122
|
};
|
|
133
123
|
|
|
134
124
|
// src/functions/async-function.ts
|
|
@@ -136,26 +126,15 @@ import defaultsDeep from "lodash.defaultsdeep";
|
|
|
136
126
|
import { debounce } from "@dxos/async";
|
|
137
127
|
import { log } from "@dxos/log";
|
|
138
128
|
import { CellError, EmptyValue, ErrorType, FunctionPlugin } from "@dxos/vendor-hyperformula";
|
|
139
|
-
function _define_property2(obj, key, value) {
|
|
140
|
-
if (key in obj) {
|
|
141
|
-
Object.defineProperty(obj, key, {
|
|
142
|
-
value,
|
|
143
|
-
enumerable: true,
|
|
144
|
-
configurable: true,
|
|
145
|
-
writable: true
|
|
146
|
-
});
|
|
147
|
-
} else {
|
|
148
|
-
obj[key] = value;
|
|
149
|
-
}
|
|
150
|
-
return obj;
|
|
151
|
-
}
|
|
152
129
|
var __dxlog_file2 = "/__w/dxos/dxos/packages/core/compute/src/functions/async-function.ts";
|
|
153
130
|
var defaultFunctionContextOptions = {
|
|
154
131
|
defaultTtl: 5e3,
|
|
155
|
-
debounceDelay: 200
|
|
156
|
-
remoteFunctionUrl: "https://edge.dxos.workers.dev/functions"
|
|
132
|
+
debounceDelay: 200
|
|
157
133
|
};
|
|
158
134
|
var FunctionContext = class _FunctionContext {
|
|
135
|
+
_hf;
|
|
136
|
+
_runtime;
|
|
137
|
+
_space;
|
|
159
138
|
// Mangle name with params.
|
|
160
139
|
static createInvocationKey(name, ...args) {
|
|
161
140
|
return JSON.stringify({
|
|
@@ -163,18 +142,46 @@ var FunctionContext = class _FunctionContext {
|
|
|
163
142
|
...args
|
|
164
143
|
});
|
|
165
144
|
}
|
|
145
|
+
// TODO(wittjosiah): Persist cached values.
|
|
146
|
+
// Cached values for cell.
|
|
147
|
+
_cache = /* @__PURE__ */ new Map();
|
|
148
|
+
// Active requests.
|
|
149
|
+
_pending = /* @__PURE__ */ new Map();
|
|
150
|
+
// Query subscriptions.
|
|
151
|
+
_subscriptions = /* @__PURE__ */ new Map();
|
|
152
|
+
// Invocation count.
|
|
153
|
+
_invocations = {};
|
|
154
|
+
_options;
|
|
155
|
+
// Debounced update handler.
|
|
156
|
+
_onUpdate;
|
|
157
|
+
constructor(_hf, _runtime, _space, _options) {
|
|
158
|
+
this._hf = _hf;
|
|
159
|
+
this._runtime = _runtime;
|
|
160
|
+
this._space = _space;
|
|
161
|
+
this._options = defaultsDeep(_options ?? {}, defaultFunctionContextOptions);
|
|
162
|
+
this._onUpdate = debounce((update) => {
|
|
163
|
+
log("update", update, {
|
|
164
|
+
F: __dxlog_file2,
|
|
165
|
+
L: 86,
|
|
166
|
+
S: this,
|
|
167
|
+
C: (f, a) => f(...a)
|
|
168
|
+
});
|
|
169
|
+
this._hf.resumeEvaluation();
|
|
170
|
+
this._options.onUpdate?.(update);
|
|
171
|
+
}, this._options.debounceDelay);
|
|
172
|
+
}
|
|
166
173
|
get space() {
|
|
167
174
|
return this._space;
|
|
168
175
|
}
|
|
169
|
-
get remoteFunctionUrl() {
|
|
170
|
-
return this._options.remoteFunctionUrl;
|
|
171
|
-
}
|
|
172
176
|
get info() {
|
|
173
177
|
return {
|
|
174
178
|
cache: this._cache.size,
|
|
175
179
|
invocations: this._invocations
|
|
176
180
|
};
|
|
177
181
|
}
|
|
182
|
+
get runtime() {
|
|
183
|
+
return this._runtime;
|
|
184
|
+
}
|
|
178
185
|
flush() {
|
|
179
186
|
this._cache.clear();
|
|
180
187
|
this._invocations = {};
|
|
@@ -211,7 +218,7 @@ var FunctionContext = class _FunctionContext {
|
|
|
211
218
|
value: value2
|
|
212
219
|
}, {
|
|
213
220
|
F: __dxlog_file2,
|
|
214
|
-
L:
|
|
221
|
+
L: 144,
|
|
215
222
|
S: this,
|
|
216
223
|
C: (f, a) => f(...a)
|
|
217
224
|
});
|
|
@@ -225,7 +232,7 @@ var FunctionContext = class _FunctionContext {
|
|
|
225
232
|
err
|
|
226
233
|
}, {
|
|
227
234
|
F: __dxlog_file2,
|
|
228
|
-
L:
|
|
235
|
+
L: 148,
|
|
229
236
|
S: this,
|
|
230
237
|
C: (f, a) => f(...a)
|
|
231
238
|
});
|
|
@@ -245,39 +252,12 @@ var FunctionContext = class _FunctionContext {
|
|
|
245
252
|
cache: value
|
|
246
253
|
}, {
|
|
247
254
|
F: __dxlog_file2,
|
|
248
|
-
L:
|
|
255
|
+
L: 156,
|
|
249
256
|
S: this,
|
|
250
257
|
C: (f, a) => f(...a)
|
|
251
258
|
});
|
|
252
259
|
return value;
|
|
253
260
|
}
|
|
254
|
-
constructor(_hf, _space, _options) {
|
|
255
|
-
_define_property2(this, "_hf", void 0);
|
|
256
|
-
_define_property2(this, "_space", void 0);
|
|
257
|
-
_define_property2(this, "_cache", void 0);
|
|
258
|
-
_define_property2(this, "_pending", void 0);
|
|
259
|
-
_define_property2(this, "_subscriptions", void 0);
|
|
260
|
-
_define_property2(this, "_invocations", void 0);
|
|
261
|
-
_define_property2(this, "_options", void 0);
|
|
262
|
-
_define_property2(this, "_onUpdate", void 0);
|
|
263
|
-
this._hf = _hf;
|
|
264
|
-
this._space = _space;
|
|
265
|
-
this._cache = /* @__PURE__ */ new Map();
|
|
266
|
-
this._pending = /* @__PURE__ */ new Map();
|
|
267
|
-
this._subscriptions = /* @__PURE__ */ new Map();
|
|
268
|
-
this._invocations = {};
|
|
269
|
-
this._options = defaultsDeep(_options ?? {}, defaultFunctionContextOptions);
|
|
270
|
-
this._onUpdate = debounce((update) => {
|
|
271
|
-
log("update", update, {
|
|
272
|
-
F: __dxlog_file2,
|
|
273
|
-
L: 85,
|
|
274
|
-
S: this,
|
|
275
|
-
C: (f, a) => f(...a)
|
|
276
|
-
});
|
|
277
|
-
this._hf.resumeEvaluation();
|
|
278
|
-
this._options.onUpdate?.(update);
|
|
279
|
-
}, this._options.debounceDelay);
|
|
280
|
-
}
|
|
281
261
|
};
|
|
282
262
|
var AsyncFunctionPlugin = class extends FunctionPlugin {
|
|
283
263
|
get context() {
|
|
@@ -297,10 +277,12 @@ var AsyncFunctionPlugin = class extends FunctionPlugin {
|
|
|
297
277
|
|
|
298
278
|
// src/functions/edge-function.ts
|
|
299
279
|
import { effect } from "@preact/signals-core";
|
|
300
|
-
import
|
|
301
|
-
import
|
|
302
|
-
import {
|
|
303
|
-
import {
|
|
280
|
+
import * as Effect from "effect/Effect";
|
|
281
|
+
import * as SchemaAST from "effect/SchemaAST";
|
|
282
|
+
import { Filter } from "@dxos/client/echo";
|
|
283
|
+
import { toEffectSchema } from "@dxos/echo/internal";
|
|
284
|
+
import { Function, FunctionInvocationService, TracingService } from "@dxos/functions";
|
|
285
|
+
import { FunctionDefinition } from "@dxos/functions";
|
|
304
286
|
import { log as log2 } from "@dxos/log";
|
|
305
287
|
import { isNonNullable } from "@dxos/util";
|
|
306
288
|
import { CellError as CellError2, ErrorType as ErrorType2, FunctionArgumentType } from "@dxos/vendor-hyperformula";
|
|
@@ -314,7 +296,7 @@ var EdgeFunctionPlugin = class extends AsyncFunctionPlugin {
|
|
|
314
296
|
if (!space) {
|
|
315
297
|
return new CellError2(ErrorType2.REF, "Missing space");
|
|
316
298
|
}
|
|
317
|
-
const { objects: [fn] } = await space.db.query(Filter.type(
|
|
299
|
+
const { objects: [fn] } = await space.db.query(Filter.type(Function.Function, {
|
|
318
300
|
binding
|
|
319
301
|
})).run();
|
|
320
302
|
if (!fn) {
|
|
@@ -322,7 +304,7 @@ var EdgeFunctionPlugin = class extends AsyncFunctionPlugin {
|
|
|
322
304
|
binding
|
|
323
305
|
}, {
|
|
324
306
|
F: __dxlog_file3,
|
|
325
|
-
L:
|
|
307
|
+
L: 43,
|
|
326
308
|
S: this,
|
|
327
309
|
C: (f, a) => f(...a)
|
|
328
310
|
});
|
|
@@ -334,7 +316,7 @@ var EdgeFunctionPlugin = class extends AsyncFunctionPlugin {
|
|
|
334
316
|
fn
|
|
335
317
|
}, {
|
|
336
318
|
F: __dxlog_file3,
|
|
337
|
-
L:
|
|
319
|
+
L: 49,
|
|
338
320
|
S: this,
|
|
339
321
|
C: (f, a) => f(...a)
|
|
340
322
|
});
|
|
@@ -345,32 +327,24 @@ var EdgeFunctionPlugin = class extends AsyncFunctionPlugin {
|
|
|
345
327
|
});
|
|
346
328
|
this.context.createSubscription(ast.procedureName, unsubscribe);
|
|
347
329
|
}
|
|
348
|
-
const
|
|
330
|
+
const runtime = this.context.runtime;
|
|
331
|
+
const functionDef = FunctionDefinition.deserialize(fn);
|
|
332
|
+
let input;
|
|
349
333
|
if (fn.inputSchema) {
|
|
350
334
|
const schema = toEffectSchema(fn.inputSchema);
|
|
351
|
-
SchemaAST.getPropertySignatures(schema.ast)
|
|
352
|
-
|
|
335
|
+
const props = SchemaAST.getPropertySignatures(schema.ast);
|
|
336
|
+
input = {};
|
|
337
|
+
props.forEach(({ name }, index) => {
|
|
338
|
+
input[name.toString()] = args[index];
|
|
353
339
|
});
|
|
354
340
|
} else {
|
|
355
|
-
|
|
341
|
+
input = {
|
|
342
|
+
args: args.filter(isNonNullable)
|
|
343
|
+
};
|
|
356
344
|
}
|
|
357
|
-
const
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
headers: {
|
|
361
|
-
"Content-Type": "application/json"
|
|
362
|
-
},
|
|
363
|
-
body: JSON.stringify(body)
|
|
364
|
-
});
|
|
365
|
-
const result = await response.text();
|
|
366
|
-
log2("function executed", {
|
|
367
|
-
result
|
|
368
|
-
}, {
|
|
369
|
-
F: __dxlog_file3,
|
|
370
|
-
L: 74,
|
|
371
|
-
S: this,
|
|
372
|
-
C: (f, a) => f(...a)
|
|
373
|
-
});
|
|
345
|
+
const result = runtime.runPromise(Effect.gen(function* () {
|
|
346
|
+
return yield* FunctionInvocationService.invokeFunction(functionDef, input);
|
|
347
|
+
}).pipe(Effect.provide(TracingService.layerNoop)));
|
|
374
348
|
return result;
|
|
375
349
|
};
|
|
376
350
|
return this.runAsyncFunction(ast, state, handler(true), {
|
|
@@ -2807,30 +2781,19 @@ var defaultFunctions = [
|
|
|
2807
2781
|
];
|
|
2808
2782
|
|
|
2809
2783
|
// src/compute-graph.ts
|
|
2784
|
+
import { effect as effect2 } from "@preact/signals-core";
|
|
2810
2785
|
import { Event as Event2 } from "@dxos/async";
|
|
2811
|
-
import { Filter as Filter2
|
|
2786
|
+
import { Filter as Filter2 } from "@dxos/client/echo";
|
|
2812
2787
|
import { FQ_ID_LENGTH } from "@dxos/client/echo";
|
|
2813
2788
|
import { Resource as Resource2 } from "@dxos/context";
|
|
2814
|
-
import {
|
|
2815
|
-
import {
|
|
2789
|
+
import { Obj } from "@dxos/echo";
|
|
2790
|
+
import { getTypename } from "@dxos/echo/internal";
|
|
2791
|
+
import { Function as Function2 } from "@dxos/functions";
|
|
2816
2792
|
import { invariant as invariant2 } from "@dxos/invariant";
|
|
2817
2793
|
import { PublicKey } from "@dxos/keys";
|
|
2818
2794
|
import { log as log3 } from "@dxos/log";
|
|
2819
2795
|
import { isNonNullable as isNonNullable2 } from "@dxos/util";
|
|
2820
2796
|
import { ExportedCellChange as ExportedCellChange2 } from "@dxos/vendor-hyperformula";
|
|
2821
|
-
function _define_property3(obj, key, value) {
|
|
2822
|
-
if (key in obj) {
|
|
2823
|
-
Object.defineProperty(obj, key, {
|
|
2824
|
-
value,
|
|
2825
|
-
enumerable: true,
|
|
2826
|
-
configurable: true,
|
|
2827
|
-
writable: true
|
|
2828
|
-
});
|
|
2829
|
-
} else {
|
|
2830
|
-
obj[key] = value;
|
|
2831
|
-
}
|
|
2832
|
-
return obj;
|
|
2833
|
-
}
|
|
2834
2797
|
var __dxlog_file4 = "/__w/dxos/dxos/packages/core/compute/src/compute-graph.ts";
|
|
2835
2798
|
var UNKNOWN_BINDING = "__UNKNOWN__";
|
|
2836
2799
|
var createSheetName = ({ type, id }) => `${type}@${id}`;
|
|
@@ -2844,6 +2807,49 @@ var parseSheetName = (name) => {
|
|
|
2844
2807
|
};
|
|
2845
2808
|
};
|
|
2846
2809
|
var ComputeGraph = class extends Resource2 {
|
|
2810
|
+
_hf;
|
|
2811
|
+
_runtime;
|
|
2812
|
+
_space;
|
|
2813
|
+
_options;
|
|
2814
|
+
id = `graph-${PublicKey.random().truncate()}`;
|
|
2815
|
+
// Map of nodes indexed by sheet number.
|
|
2816
|
+
_nodes = /* @__PURE__ */ new Map();
|
|
2817
|
+
// Cached function objects.
|
|
2818
|
+
_remoteFunctions = [];
|
|
2819
|
+
update = new Event2();
|
|
2820
|
+
// The context is passed to all functions.
|
|
2821
|
+
context;
|
|
2822
|
+
constructor(_hf, _runtime, _space, _options) {
|
|
2823
|
+
super(), this._hf = _hf, this._runtime = _runtime, this._space = _space, this._options = _options;
|
|
2824
|
+
this.context = new FunctionContext(this._hf, this._runtime, this._space, {
|
|
2825
|
+
...this._options,
|
|
2826
|
+
onUpdate: (update) => {
|
|
2827
|
+
this._options?.onUpdate?.(update);
|
|
2828
|
+
this.update.emit({
|
|
2829
|
+
type: "valuesUpdated"
|
|
2830
|
+
});
|
|
2831
|
+
}
|
|
2832
|
+
});
|
|
2833
|
+
this._hf.updateConfig({
|
|
2834
|
+
context: this.context
|
|
2835
|
+
});
|
|
2836
|
+
const onValuesUpdate = (changes) => {
|
|
2837
|
+
for (const change of changes) {
|
|
2838
|
+
if (change instanceof ExportedCellChange2) {
|
|
2839
|
+
const { sheet } = change;
|
|
2840
|
+
const node = this._nodes.get(sheet);
|
|
2841
|
+
if (node) {
|
|
2842
|
+
node.update.emit({
|
|
2843
|
+
type: "valuesUpdated",
|
|
2844
|
+
change
|
|
2845
|
+
});
|
|
2846
|
+
}
|
|
2847
|
+
}
|
|
2848
|
+
}
|
|
2849
|
+
};
|
|
2850
|
+
this._hf.on("valuesUpdated", onValuesUpdate);
|
|
2851
|
+
this._ctx.onDispose(() => this._hf.off("valuesUpdated", onValuesUpdate));
|
|
2852
|
+
}
|
|
2847
2853
|
get hf() {
|
|
2848
2854
|
return this._hf;
|
|
2849
2855
|
}
|
|
@@ -2871,7 +2877,7 @@ var ComputeGraph = class extends Resource2 {
|
|
|
2871
2877
|
getOrCreateNode(name) {
|
|
2872
2878
|
invariant2(name.length, void 0, {
|
|
2873
2879
|
F: __dxlog_file4,
|
|
2874
|
-
L:
|
|
2880
|
+
L: 135,
|
|
2875
2881
|
S: this,
|
|
2876
2882
|
A: [
|
|
2877
2883
|
"name.length",
|
|
@@ -2884,7 +2890,7 @@ var ComputeGraph = class extends Resource2 {
|
|
|
2884
2890
|
sheet: name
|
|
2885
2891
|
}, {
|
|
2886
2892
|
F: __dxlog_file4,
|
|
2887
|
-
L:
|
|
2893
|
+
L: 137,
|
|
2888
2894
|
S: this,
|
|
2889
2895
|
C: (f, a) => f(...a)
|
|
2890
2896
|
});
|
|
@@ -2893,7 +2899,7 @@ var ComputeGraph = class extends Resource2 {
|
|
|
2893
2899
|
const sheetId = this._hf.getSheetId(name);
|
|
2894
2900
|
invariant2(sheetId !== void 0, void 0, {
|
|
2895
2901
|
F: __dxlog_file4,
|
|
2896
|
-
L:
|
|
2902
|
+
L: 142,
|
|
2897
2903
|
S: this,
|
|
2898
2904
|
A: [
|
|
2899
2905
|
"sheetId !== undefined",
|
|
@@ -2949,7 +2955,7 @@ var ComputeGraph = class extends Resource2 {
|
|
|
2949
2955
|
}
|
|
2950
2956
|
const fn = this._remoteFunctions.find((fn2) => fn2.binding === binding);
|
|
2951
2957
|
if (fn) {
|
|
2952
|
-
const id =
|
|
2958
|
+
const id = Obj.getDXN(fn).toString();
|
|
2953
2959
|
return `${id}(${args})`;
|
|
2954
2960
|
} else {
|
|
2955
2961
|
return match;
|
|
@@ -2966,7 +2972,7 @@ var ComputeGraph = class extends Resource2 {
|
|
|
2966
2972
|
if (id.length !== FQ_ID_LENGTH) {
|
|
2967
2973
|
return match;
|
|
2968
2974
|
}
|
|
2969
|
-
const fn = this._remoteFunctions.find((fn2) =>
|
|
2975
|
+
const fn = this._remoteFunctions.find((fn2) => Obj.getDXN(fn2).toString() === id);
|
|
2970
2976
|
if (fn?.binding) {
|
|
2971
2977
|
return `${fn.binding}(${args})`;
|
|
2972
2978
|
} else {
|
|
@@ -2981,14 +2987,18 @@ var ComputeGraph = class extends Resource2 {
|
|
|
2981
2987
|
}
|
|
2982
2988
|
async _open() {
|
|
2983
2989
|
if (this._space) {
|
|
2984
|
-
const query = this._space.db.query(Filter2.type(
|
|
2985
|
-
const unsubscribe = query.subscribe(
|
|
2986
|
-
|
|
2990
|
+
const query = this._space.db.query(Filter2.type(Function2.Function));
|
|
2991
|
+
const unsubscribe = query.subscribe();
|
|
2992
|
+
const dispose = effect2(() => {
|
|
2993
|
+
this._remoteFunctions = query.objects.filter(({ binding }) => binding);
|
|
2987
2994
|
this.update.emit({
|
|
2988
2995
|
type: "functionsUpdated"
|
|
2989
2996
|
});
|
|
2990
2997
|
});
|
|
2991
|
-
this._ctx.onDispose(
|
|
2998
|
+
this._ctx.onDispose(() => {
|
|
2999
|
+
unsubscribe();
|
|
3000
|
+
dispose();
|
|
3001
|
+
});
|
|
2992
3002
|
}
|
|
2993
3003
|
}
|
|
2994
3004
|
async _close() {
|
|
@@ -2996,40 +3006,6 @@ var ComputeGraph = class extends Resource2 {
|
|
|
2996
3006
|
await node.close();
|
|
2997
3007
|
}
|
|
2998
3008
|
}
|
|
2999
|
-
constructor(_hf, _space, _options) {
|
|
3000
|
-
super(), _define_property3(this, "_hf", void 0), _define_property3(this, "_space", void 0), _define_property3(this, "_options", void 0), _define_property3(this, "id", void 0), // Map of nodes indexed by sheet number.
|
|
3001
|
-
_define_property3(this, "_nodes", void 0), // Cached function objects.
|
|
3002
|
-
_define_property3(this, "_remoteFunctions", void 0), _define_property3(this, "update", void 0), // The context is passed to all functions.
|
|
3003
|
-
_define_property3(this, "context", void 0), this._hf = _hf, this._space = _space, this._options = _options, this.id = `graph-${PublicKey.random().truncate()}`, this._nodes = /* @__PURE__ */ new Map(), this._remoteFunctions = [], this.update = new Event2();
|
|
3004
|
-
this.context = new FunctionContext(this._hf, this._space, {
|
|
3005
|
-
...this._options,
|
|
3006
|
-
onUpdate: (update) => {
|
|
3007
|
-
this._options?.onUpdate?.(update);
|
|
3008
|
-
this.update.emit({
|
|
3009
|
-
type: "valuesUpdated"
|
|
3010
|
-
});
|
|
3011
|
-
}
|
|
3012
|
-
});
|
|
3013
|
-
this._hf.updateConfig({
|
|
3014
|
-
context: this.context
|
|
3015
|
-
});
|
|
3016
|
-
const onValuesUpdate = (changes) => {
|
|
3017
|
-
for (const change of changes) {
|
|
3018
|
-
if (change instanceof ExportedCellChange2) {
|
|
3019
|
-
const { sheet } = change;
|
|
3020
|
-
const node = this._nodes.get(sheet);
|
|
3021
|
-
if (node) {
|
|
3022
|
-
node.update.emit({
|
|
3023
|
-
type: "valuesUpdated",
|
|
3024
|
-
change
|
|
3025
|
-
});
|
|
3026
|
-
}
|
|
3027
|
-
}
|
|
3028
|
-
}
|
|
3029
|
-
};
|
|
3030
|
-
this._hf.on("valuesUpdated", onValuesUpdate);
|
|
3031
|
-
this._ctx.onDispose(() => this._hf.off("valuesUpdated", onValuesUpdate));
|
|
3032
|
-
}
|
|
3033
3009
|
};
|
|
3034
3010
|
|
|
3035
3011
|
// src/compute-graph-registry.ts
|
|
@@ -3038,30 +3014,27 @@ import { Resource as Resource3 } from "@dxos/context";
|
|
|
3038
3014
|
import { invariant as invariant3 } from "@dxos/invariant";
|
|
3039
3015
|
import { log as log4 } from "@dxos/log";
|
|
3040
3016
|
import { HyperFormula } from "@dxos/vendor-hyperformula";
|
|
3041
|
-
function _define_property4(obj, key, value) {
|
|
3042
|
-
if (key in obj) {
|
|
3043
|
-
Object.defineProperty(obj, key, {
|
|
3044
|
-
value,
|
|
3045
|
-
enumerable: true,
|
|
3046
|
-
configurable: true,
|
|
3047
|
-
writable: true
|
|
3048
|
-
});
|
|
3049
|
-
} else {
|
|
3050
|
-
obj[key] = value;
|
|
3051
|
-
}
|
|
3052
|
-
return obj;
|
|
3053
|
-
}
|
|
3054
3017
|
var __dxlog_file5 = "/__w/dxos/dxos/packages/core/compute/src/compute-graph-registry.ts";
|
|
3055
|
-
var defaultOptions = {
|
|
3056
|
-
licenseKey: "gpl-v3"
|
|
3057
|
-
};
|
|
3058
3018
|
var defaultPlugins = [
|
|
3059
3019
|
{
|
|
3060
3020
|
plugin: EdgeFunctionPlugin,
|
|
3061
3021
|
translations: EdgeFunctionPluginTranslations
|
|
3062
3022
|
}
|
|
3063
3023
|
];
|
|
3024
|
+
var defaultOptions = {
|
|
3025
|
+
licenseKey: "gpl-v3"
|
|
3026
|
+
};
|
|
3064
3027
|
var ComputeGraphRegistry = class extends Resource3 {
|
|
3028
|
+
_graphs = /* @__PURE__ */ new Map();
|
|
3029
|
+
_options;
|
|
3030
|
+
constructor(options) {
|
|
3031
|
+
super();
|
|
3032
|
+
this._options = defaultsDeep2({}, options, defaultOptions);
|
|
3033
|
+
this._options.plugins = this._options.plugins ?? defaultPlugins;
|
|
3034
|
+
this._options.plugins?.forEach(({ plugin, translations }) => {
|
|
3035
|
+
HyperFormula.registerFunctionPlugin(plugin, translations);
|
|
3036
|
+
});
|
|
3037
|
+
}
|
|
3065
3038
|
getGraph(spaceId) {
|
|
3066
3039
|
return this._graphs.get(spaceId);
|
|
3067
3040
|
}
|
|
@@ -3072,7 +3045,7 @@ var ComputeGraphRegistry = class extends Resource3 {
|
|
|
3072
3045
|
space: space.id
|
|
3073
3046
|
}, {
|
|
3074
3047
|
F: __dxlog_file5,
|
|
3075
|
-
L:
|
|
3048
|
+
L: 73,
|
|
3076
3049
|
S: this,
|
|
3077
3050
|
C: (f, a) => f(...a)
|
|
3078
3051
|
});
|
|
@@ -3083,7 +3056,7 @@ var ComputeGraphRegistry = class extends Resource3 {
|
|
|
3083
3056
|
createGraph(space) {
|
|
3084
3057
|
invariant3(!this._graphs.has(space.id), `ComputeGraph already exists for space: ${space.id}`, {
|
|
3085
3058
|
F: __dxlog_file5,
|
|
3086
|
-
L:
|
|
3059
|
+
L: 81,
|
|
3087
3060
|
S: this,
|
|
3088
3061
|
A: [
|
|
3089
3062
|
"!this._graphs.has(space.id)",
|
|
@@ -3091,7 +3064,17 @@ var ComputeGraphRegistry = class extends Resource3 {
|
|
|
3091
3064
|
]
|
|
3092
3065
|
});
|
|
3093
3066
|
const hf = HyperFormula.buildEmpty(this._options);
|
|
3094
|
-
|
|
3067
|
+
invariant3(this._options.computeRuntime, "ComputeRuntime is required", {
|
|
3068
|
+
F: __dxlog_file5,
|
|
3069
|
+
L: 83,
|
|
3070
|
+
S: this,
|
|
3071
|
+
A: [
|
|
3072
|
+
"this._options.computeRuntime",
|
|
3073
|
+
"'ComputeRuntime is required'"
|
|
3074
|
+
]
|
|
3075
|
+
});
|
|
3076
|
+
const runtime = this._options.computeRuntime.getRuntime(space.id);
|
|
3077
|
+
const graph = new ComputeGraph(hf, runtime, space, this._options);
|
|
3095
3078
|
this._graphs.set(space.id, graph);
|
|
3096
3079
|
return graph;
|
|
3097
3080
|
}
|
|
@@ -3101,15 +3084,6 @@ var ComputeGraphRegistry = class extends Resource3 {
|
|
|
3101
3084
|
}
|
|
3102
3085
|
this._graphs.clear();
|
|
3103
3086
|
}
|
|
3104
|
-
constructor(options = {
|
|
3105
|
-
plugins: defaultPlugins
|
|
3106
|
-
}) {
|
|
3107
|
-
super(), _define_property4(this, "_graphs", /* @__PURE__ */ new Map()), _define_property4(this, "_options", void 0);
|
|
3108
|
-
this._options = defaultsDeep2({}, options, defaultOptions);
|
|
3109
|
-
this._options.plugins?.forEach(({ plugin, translations }) => {
|
|
3110
|
-
HyperFormula.registerFunctionPlugin(plugin, translations);
|
|
3111
|
-
});
|
|
3112
|
-
}
|
|
3113
3087
|
};
|
|
3114
3088
|
|
|
3115
3089
|
export {
|
|
@@ -3135,8 +3109,8 @@ export {
|
|
|
3135
3109
|
createSheetName,
|
|
3136
3110
|
parseSheetName,
|
|
3137
3111
|
ComputeGraph,
|
|
3138
|
-
defaultOptions,
|
|
3139
3112
|
defaultPlugins,
|
|
3113
|
+
defaultOptions,
|
|
3140
3114
|
ComputeGraphRegistry
|
|
3141
3115
|
};
|
|
3142
|
-
//# sourceMappingURL=chunk-
|
|
3116
|
+
//# sourceMappingURL=chunk-D3RM3FQW.mjs.map
|