@dxos/compute 0.8.4-main.b97322e → 0.8.4-main.c4373fc

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 (54) hide show
  1. package/dist/lib/browser/{chunk-AURNYRCC.mjs → chunk-C7KLV2IU.mjs} +179 -113
  2. package/dist/lib/browser/chunk-C7KLV2IU.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +1 -1
  4. package/dist/lib/browser/meta.json +1 -1
  5. package/dist/lib/browser/testing/index.mjs +42 -9
  6. package/dist/lib/browser/testing/index.mjs.map +4 -4
  7. package/dist/lib/node-esm/{chunk-DZMSWKOY.mjs → chunk-K37OSZ5O.mjs} +179 -113
  8. package/dist/lib/node-esm/chunk-K37OSZ5O.mjs.map +7 -0
  9. package/dist/lib/node-esm/index.mjs +1 -1
  10. package/dist/lib/node-esm/meta.json +1 -1
  11. package/dist/lib/node-esm/testing/index.mjs +42 -9
  12. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  13. package/dist/types/src/compute-graph-registry.d.ts +10 -7
  14. package/dist/types/src/compute-graph-registry.d.ts.map +1 -1
  15. package/dist/types/src/compute-graph-registry.test.d.ts +2 -0
  16. package/dist/types/src/compute-graph-registry.test.d.ts.map +1 -0
  17. package/dist/types/src/compute-graph.d.ts +5 -2
  18. package/dist/types/src/compute-graph.d.ts.map +1 -1
  19. package/dist/types/src/compute-node.d.ts +1 -2
  20. package/dist/types/src/compute-node.d.ts.map +1 -1
  21. package/dist/types/src/functions/async-function.d.ts +13 -11
  22. package/dist/types/src/functions/async-function.d.ts.map +1 -1
  23. package/dist/types/src/functions/edge-function.d.ts +3 -3
  24. package/dist/types/src/functions/edge-function.d.ts.map +1 -1
  25. package/dist/types/src/testing/index.d.ts +1 -0
  26. package/dist/types/src/testing/index.d.ts.map +1 -1
  27. package/dist/types/src/testing/test-builder.d.ts +1 -1
  28. package/dist/types/src/testing/test-builder.d.ts.map +1 -1
  29. package/dist/types/src/testing/test-plugin.d.ts +4 -5
  30. package/dist/types/src/testing/test-plugin.d.ts.map +1 -1
  31. package/dist/types/src/testing/test-runtime.d.ts +10 -0
  32. package/dist/types/src/testing/test-runtime.d.ts.map +1 -0
  33. package/dist/types/src/types/hyperformula.d.ts +3 -6
  34. package/dist/types/src/types/hyperformula.d.ts.map +1 -1
  35. package/dist/types/tsconfig.tsbuildinfo +1 -1
  36. package/package.json +24 -28
  37. package/src/compute-graph-registry.test.ts +138 -0
  38. package/src/compute-graph-registry.ts +20 -14
  39. package/src/compute-graph.test.ts +2 -3
  40. package/src/compute-graph.ts +10 -9
  41. package/src/compute-node.ts +2 -5
  42. package/src/functions/async-function.ts +21 -16
  43. package/src/functions/edge-function.ts +24 -22
  44. package/src/hyperformula.test.ts +2 -2
  45. package/src/testing/index.ts +1 -0
  46. package/src/testing/test-builder.ts +8 -2
  47. package/src/testing/test-plugin.ts +2 -5
  48. package/src/testing/test-runtime.ts +38 -0
  49. package/src/testing/util.ts +1 -1
  50. package/src/types/hyperformula.ts +8 -8
  51. package/src/types/types.test.ts +2 -2
  52. package/dist/lib/browser/chunk-AURNYRCC.mjs.map +0 -7
  53. package/dist/lib/node-esm/chunk-DZMSWKOY.mjs.map +0 -7
  54. package/dist/vendor/hyperformula.mjs +0 -36400
@@ -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;\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(this._options);\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 2024 DXOS.org\n//\n\nimport { type InterpreterState } from 'hyperformula/typings/interpreter/InterpreterState';\nimport { type ProcedureAst } from 'hyperformula/typings/parser';\n\nimport { getDeep } from '@dxos/util';\n\nimport { FunctionArgumentType } from '#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 'hyperformula';\n\nexport const getRegisteredFunctionNames = () => {\n return HyperFormula.buildEmpty({ licenseKey: 'gpl-v3' }).getRegisteredFunctionNames();\n};\n"],
5
- "mappings": "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",
6
- "names": ["Client", "Resource", "invariant", "TestBuilder", "Resource", "_options", "ctx", "_ctx", "client", "invariant", "_client", "registry", "_registry", "_open", "Client", "initialize", "halo", "createIdentity", "onDispose", "destroy", "undefined", "ComputeGraphRegistry", "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"]
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 {\n CredentialsService,\n DatabaseService,\n type FunctionDefinition,\n FunctionInvocationService,\n QueueService,\n} from '@dxos/functions';\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, any>[] } = {}): FunctionsRuntimeProvider => {\n return {\n getRuntime: (_spaceId: SpaceId) =>\n ManagedRuntime.make(\n FunctionInvocationService.layerTest({ 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": "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",
6
+ "names": ["Client", "Resource", "invariant", "Layer", "ManagedRuntime", "AiService", "CredentialsService", "DatabaseService", "FunctionInvocationService", "QueueService", "createMockedComputeRuntimeProvider", "functions", "getRuntime", "_spaceId", "make", "FunctionInvocationService", "layerTest", "pipe", "provide", "AiService", "notAvailable", "CredentialsService", "configuredLayer", "DatabaseService", "QueueService", "TestBuilder", "Resource", "ctx", "_ctx", "client", "invariant", "_client", "registry", "_registry", "_open", "Client", "_options", "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
  }
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
 
3
3
  // src/types/hyperformula.ts
4
- import { DetailedCellError, ExportedCellChange } from "#hyperformula";
4
+ import { DetailedCellError, ExportedCellChange } from "@dxos/vendor-hyperformula";
5
5
 
6
6
  // src/types/types.ts
7
7
  import { invariant } from "@dxos/invariant";
@@ -79,11 +79,21 @@ var inRange = (range, cell) => {
79
79
  // src/compute-node.ts
80
80
  import { Event } from "@dxos/async";
81
81
  import { Resource } from "@dxos/context";
82
- import { DetailedCellError as DetailedCellError2 } from "#hyperformula";
83
- var ComputeNode = class extends Resource {
84
- constructor(_graph, sheetId) {
85
- super(), this._graph = _graph, this.sheetId = sheetId, this.update = new Event();
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;
86
93
  }
94
+ return obj;
95
+ }
96
+ var ComputeNode = class extends Resource {
87
97
  get graph() {
88
98
  return this._graph;
89
99
  }
@@ -116,18 +126,33 @@ var ComputeNode = class extends Resource {
116
126
  // TODO(burdon): Load data into sheet.
117
127
  async _open() {
118
128
  }
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
+ }
119
132
  };
120
133
 
121
134
  // src/functions/async-function.ts
122
135
  import defaultsDeep from "lodash.defaultsdeep";
123
136
  import { debounce } from "@dxos/async";
124
137
  import { log } from "@dxos/log";
125
- import { CellError, ErrorType, EmptyValue, FunctionPlugin } from "#hyperformula";
138
+ 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
+ }
126
152
  var __dxlog_file2 = "/__w/dxos/dxos/packages/core/compute/src/functions/async-function.ts";
127
153
  var defaultFunctionContextOptions = {
128
154
  defaultTtl: 5e3,
129
- debounceDelay: 200,
130
- remoteFunctionUrl: "https://edge.dxos.workers.dev/functions"
155
+ debounceDelay: 200
131
156
  };
132
157
  var FunctionContext = class _FunctionContext {
133
158
  // Mangle name with params.
@@ -137,37 +162,18 @@ var FunctionContext = class _FunctionContext {
137
162
  ...args
138
163
  });
139
164
  }
140
- constructor(_hf, _space, _options) {
141
- this._hf = _hf;
142
- this._space = _space;
143
- this._cache = /* @__PURE__ */ new Map();
144
- this._pending = /* @__PURE__ */ new Map();
145
- this._subscriptions = /* @__PURE__ */ new Map();
146
- this._invocations = {};
147
- this._options = defaultsDeep(_options ?? {}, defaultFunctionContextOptions);
148
- this._onUpdate = debounce((update) => {
149
- log("update", update, {
150
- F: __dxlog_file2,
151
- L: 86,
152
- S: this,
153
- C: (f, a) => f(...a)
154
- });
155
- this._hf.resumeEvaluation();
156
- this._options.onUpdate?.(update);
157
- }, this._options.debounceDelay);
158
- }
159
165
  get space() {
160
166
  return this._space;
161
167
  }
162
- get remoteFunctionUrl() {
163
- return this._options.remoteFunctionUrl;
164
- }
165
168
  get info() {
166
169
  return {
167
170
  cache: this._cache.size,
168
171
  invocations: this._invocations
169
172
  };
170
173
  }
174
+ get runtime() {
175
+ return this._runtime;
176
+ }
171
177
  flush() {
172
178
  this._cache.clear();
173
179
  this._invocations = {};
@@ -244,6 +250,35 @@ var FunctionContext = class _FunctionContext {
244
250
  });
245
251
  return value;
246
252
  }
253
+ constructor(_hf, _runtime, _space, _options) {
254
+ _define_property2(this, "_hf", void 0);
255
+ _define_property2(this, "_runtime", 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._runtime = _runtime;
265
+ this._space = _space;
266
+ this._cache = /* @__PURE__ */ new Map();
267
+ this._pending = /* @__PURE__ */ new Map();
268
+ this._subscriptions = /* @__PURE__ */ new Map();
269
+ this._invocations = {};
270
+ this._options = defaultsDeep(_options ?? {}, defaultFunctionContextOptions);
271
+ this._onUpdate = debounce((update) => {
272
+ log("update", update, {
273
+ F: __dxlog_file2,
274
+ L: 86,
275
+ S: this,
276
+ C: (f, a) => f(...a)
277
+ });
278
+ this._hf.resumeEvaluation();
279
+ this._options.onUpdate?.(update);
280
+ }, this._options.debounceDelay);
281
+ }
247
282
  };
248
283
  var AsyncFunctionPlugin = class extends FunctionPlugin {
249
284
  get context() {
@@ -263,13 +298,15 @@ var AsyncFunctionPlugin = class extends FunctionPlugin {
263
298
 
264
299
  // src/functions/edge-function.ts
265
300
  import { effect } from "@preact/signals-core";
266
- import { SchemaAST } from "effect";
267
- import { Filter, getMeta } from "@dxos/client/echo";
268
- import { toEffectSchema } from "@dxos/echo-schema";
269
- import { FunctionType, getUserFunctionUrlInMetadata } from "@dxos/functions";
301
+ import * as Effect from "effect/Effect";
302
+ import * as SchemaAST from "effect/SchemaAST";
303
+ import { Filter } from "@dxos/client/echo";
304
+ import { toEffectSchema } from "@dxos/echo/internal";
305
+ import { ComputeEventLogger, FunctionInvocationService, FunctionType, TracingService } from "@dxos/functions";
306
+ import { FunctionDefinition } from "@dxos/functions";
270
307
  import { log as log2 } from "@dxos/log";
271
308
  import { isNonNullable } from "@dxos/util";
272
- import { CellError as CellError2, ErrorType as ErrorType2, FunctionArgumentType } from "#hyperformula";
309
+ import { CellError as CellError2, ErrorType as ErrorType2, FunctionArgumentType } from "@dxos/vendor-hyperformula";
273
310
  var __dxlog_file3 = "/__w/dxos/dxos/packages/core/compute/src/functions/edge-function.ts";
274
311
  var EDGE_FUNCTION_NAME = "DX";
275
312
  var FUNCTION_TTL = 1e4;
@@ -288,7 +325,7 @@ var EdgeFunctionPlugin = class extends AsyncFunctionPlugin {
288
325
  binding
289
326
  }, {
290
327
  F: __dxlog_file3,
291
- L: 42,
328
+ L: 43,
292
329
  S: this,
293
330
  C: (f, a) => f(...a)
294
331
  });
@@ -300,7 +337,7 @@ var EdgeFunctionPlugin = class extends AsyncFunctionPlugin {
300
337
  fn
301
338
  }, {
302
339
  F: __dxlog_file3,
303
- L: 48,
340
+ L: 49,
304
341
  S: this,
305
342
  C: (f, a) => f(...a)
306
343
  });
@@ -311,32 +348,24 @@ var EdgeFunctionPlugin = class extends AsyncFunctionPlugin {
311
348
  });
312
349
  this.context.createSubscription(ast.procedureName, unsubscribe);
313
350
  }
314
- const body = {};
351
+ const runtime = this.context.runtime;
352
+ const functionDef = FunctionDefinition.deserialize(fn);
353
+ let input;
315
354
  if (fn.inputSchema) {
316
355
  const schema = toEffectSchema(fn.inputSchema);
317
- SchemaAST.getPropertySignatures(schema.ast).forEach(({ name }, index) => {
318
- body[name.toString()] = args[index];
356
+ const props = SchemaAST.getPropertySignatures(schema.ast);
357
+ input = {};
358
+ props.forEach(({ name }, index) => {
359
+ input[name.toString()] = args[index];
319
360
  });
320
361
  } else {
321
- body.args = args.filter(isNonNullable);
362
+ input = {
363
+ args: args.filter(isNonNullable)
364
+ };
322
365
  }
323
- const path = getUserFunctionUrlInMetadata(getMeta(fn));
324
- const response = await fetch(`${this.context.remoteFunctionUrl}${path}`, {
325
- method: "POST",
326
- headers: {
327
- "Content-Type": "application/json"
328
- },
329
- body: JSON.stringify(body)
330
- });
331
- const result = await response.text();
332
- log2("function executed", {
333
- result
334
- }, {
335
- F: __dxlog_file3,
336
- L: 75,
337
- S: this,
338
- C: (f, a) => f(...a)
339
- });
366
+ const result = runtime.runPromise(Effect.gen(function* () {
367
+ return yield* FunctionInvocationService.invokeFunction(functionDef, input);
368
+ }).pipe(Effect.provide(ComputeEventLogger.layerFromTracing), Effect.provide(TracingService.layerNoop)));
340
369
  return result;
341
370
  };
342
371
  return this.runAsyncFunction(ast, state, handler(true), {
@@ -2777,13 +2806,26 @@ import { Event as Event2 } from "@dxos/async";
2777
2806
  import { Filter as Filter2, fullyQualifiedId } from "@dxos/client/echo";
2778
2807
  import { FQ_ID_LENGTH } from "@dxos/client/echo";
2779
2808
  import { Resource as Resource2 } from "@dxos/context";
2780
- import { getTypename } from "@dxos/echo-schema";
2809
+ import { getTypename } from "@dxos/echo/internal";
2781
2810
  import { FunctionType as FunctionType2 } from "@dxos/functions";
2782
2811
  import { invariant as invariant2 } from "@dxos/invariant";
2783
2812
  import { PublicKey } from "@dxos/keys";
2784
2813
  import { log as log3 } from "@dxos/log";
2785
2814
  import { isNonNullable as isNonNullable2 } from "@dxos/util";
2786
- import { ExportedCellChange as ExportedCellChange2 } from "#hyperformula";
2815
+ import { ExportedCellChange as ExportedCellChange2 } from "@dxos/vendor-hyperformula";
2816
+ function _define_property3(obj, key, value) {
2817
+ if (key in obj) {
2818
+ Object.defineProperty(obj, key, {
2819
+ value,
2820
+ enumerable: true,
2821
+ configurable: true,
2822
+ writable: true
2823
+ });
2824
+ } else {
2825
+ obj[key] = value;
2826
+ }
2827
+ return obj;
2828
+ }
2787
2829
  var __dxlog_file4 = "/__w/dxos/dxos/packages/core/compute/src/compute-graph.ts";
2788
2830
  var UNKNOWN_BINDING = "__UNKNOWN__";
2789
2831
  var createSheetName = ({ type, id }) => `${type}@${id}`;
@@ -2797,37 +2839,6 @@ var parseSheetName = (name) => {
2797
2839
  };
2798
2840
  };
2799
2841
  var ComputeGraph = class extends Resource2 {
2800
- constructor(_hf, _space, _options) {
2801
- super(), 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();
2802
- this.context = new FunctionContext(this._hf, this._space, {
2803
- ...this._options,
2804
- onUpdate: (update) => {
2805
- this._options?.onUpdate?.(update);
2806
- this.update.emit({
2807
- type: "valuesUpdated"
2808
- });
2809
- }
2810
- });
2811
- this._hf.updateConfig({
2812
- context: this.context
2813
- });
2814
- const onValuesUpdate = (changes) => {
2815
- for (const change of changes) {
2816
- if (change instanceof ExportedCellChange2) {
2817
- const { sheet } = change;
2818
- const node = this._nodes.get(sheet);
2819
- if (node) {
2820
- node.update.emit({
2821
- type: "valuesUpdated",
2822
- change
2823
- });
2824
- }
2825
- }
2826
- }
2827
- };
2828
- this._hf.on("valuesUpdated", onValuesUpdate);
2829
- this._ctx.onDispose(() => this._hf.off("valuesUpdated", onValuesUpdate));
2830
- }
2831
2842
  get hf() {
2832
2843
  return this._hf;
2833
2844
  }
@@ -2855,7 +2866,7 @@ var ComputeGraph = class extends Resource2 {
2855
2866
  getOrCreateNode(name) {
2856
2867
  invariant2(name.length, void 0, {
2857
2868
  F: __dxlog_file4,
2858
- L: 129,
2869
+ L: 130,
2859
2870
  S: this,
2860
2871
  A: [
2861
2872
  "name.length",
@@ -2868,7 +2879,7 @@ var ComputeGraph = class extends Resource2 {
2868
2879
  sheet: name
2869
2880
  }, {
2870
2881
  F: __dxlog_file4,
2871
- L: 131,
2882
+ L: 132,
2872
2883
  S: this,
2873
2884
  C: (f, a) => f(...a)
2874
2885
  });
@@ -2877,7 +2888,7 @@ var ComputeGraph = class extends Resource2 {
2877
2888
  const sheetId = this._hf.getSheetId(name);
2878
2889
  invariant2(sheetId !== void 0, void 0, {
2879
2890
  F: __dxlog_file4,
2880
- L: 136,
2891
+ L: 137,
2881
2892
  S: this,
2882
2893
  A: [
2883
2894
  "sheetId !== undefined",
@@ -2980,6 +2991,40 @@ var ComputeGraph = class extends Resource2 {
2980
2991
  await node.close();
2981
2992
  }
2982
2993
  }
2994
+ constructor(_hf, _runtime, _space, _options) {
2995
+ super(), _define_property3(this, "_hf", void 0), _define_property3(this, "_runtime", 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.
2996
+ _define_property3(this, "_nodes", void 0), // Cached function objects.
2997
+ _define_property3(this, "_remoteFunctions", void 0), _define_property3(this, "update", void 0), // The context is passed to all functions.
2998
+ _define_property3(this, "context", void 0), this._hf = _hf, this._runtime = _runtime, this._space = _space, this._options = _options, this.id = `graph-${PublicKey.random().truncate()}`, this._nodes = /* @__PURE__ */ new Map(), this._remoteFunctions = [], this.update = new Event2();
2999
+ this.context = new FunctionContext(this._hf, this._runtime, this._space, {
3000
+ ...this._options,
3001
+ onUpdate: (update) => {
3002
+ this._options?.onUpdate?.(update);
3003
+ this.update.emit({
3004
+ type: "valuesUpdated"
3005
+ });
3006
+ }
3007
+ });
3008
+ this._hf.updateConfig({
3009
+ context: this.context
3010
+ });
3011
+ const onValuesUpdate = (changes) => {
3012
+ for (const change of changes) {
3013
+ if (change instanceof ExportedCellChange2) {
3014
+ const { sheet } = change;
3015
+ const node = this._nodes.get(sheet);
3016
+ if (node) {
3017
+ node.update.emit({
3018
+ type: "valuesUpdated",
3019
+ change
3020
+ });
3021
+ }
3022
+ }
3023
+ }
3024
+ };
3025
+ this._hf.on("valuesUpdated", onValuesUpdate);
3026
+ this._ctx.onDispose(() => this._hf.off("valuesUpdated", onValuesUpdate));
3027
+ }
2983
3028
  };
2984
3029
 
2985
3030
  // src/compute-graph-registry.ts
@@ -2987,28 +3032,31 @@ import defaultsDeep2 from "lodash.defaultsdeep";
2987
3032
  import { Resource as Resource3 } from "@dxos/context";
2988
3033
  import { invariant as invariant3 } from "@dxos/invariant";
2989
3034
  import { log as log4 } from "@dxos/log";
2990
- import { HyperFormula } from "#hyperformula";
3035
+ import { HyperFormula } from "@dxos/vendor-hyperformula";
3036
+ function _define_property4(obj, key, value) {
3037
+ if (key in obj) {
3038
+ Object.defineProperty(obj, key, {
3039
+ value,
3040
+ enumerable: true,
3041
+ configurable: true,
3042
+ writable: true
3043
+ });
3044
+ } else {
3045
+ obj[key] = value;
3046
+ }
3047
+ return obj;
3048
+ }
2991
3049
  var __dxlog_file5 = "/__w/dxos/dxos/packages/core/compute/src/compute-graph-registry.ts";
2992
- var defaultOptions = {
2993
- licenseKey: "gpl-v3"
2994
- };
2995
3050
  var defaultPlugins = [
2996
3051
  {
2997
3052
  plugin: EdgeFunctionPlugin,
2998
3053
  translations: EdgeFunctionPluginTranslations
2999
3054
  }
3000
3055
  ];
3056
+ var defaultOptions = {
3057
+ licenseKey: "gpl-v3"
3058
+ };
3001
3059
  var ComputeGraphRegistry = class extends Resource3 {
3002
- constructor(options = {
3003
- plugins: defaultPlugins
3004
- }) {
3005
- super();
3006
- this._graphs = /* @__PURE__ */ new Map();
3007
- this._options = defaultsDeep2({}, options, defaultOptions);
3008
- this._options.plugins?.forEach(({ plugin, translations }) => {
3009
- HyperFormula.registerFunctionPlugin(plugin, translations);
3010
- });
3011
- }
3012
3060
  getGraph(spaceId) {
3013
3061
  return this._graphs.get(spaceId);
3014
3062
  }
@@ -3019,7 +3067,7 @@ var ComputeGraphRegistry = class extends Resource3 {
3019
3067
  space: space.id
3020
3068
  }, {
3021
3069
  F: __dxlog_file5,
3022
- L: 70,
3070
+ L: 73,
3023
3071
  S: this,
3024
3072
  C: (f, a) => f(...a)
3025
3073
  });
@@ -3030,7 +3078,7 @@ var ComputeGraphRegistry = class extends Resource3 {
3030
3078
  createGraph(space) {
3031
3079
  invariant3(!this._graphs.has(space.id), `ComputeGraph already exists for space: ${space.id}`, {
3032
3080
  F: __dxlog_file5,
3033
- L: 78,
3081
+ L: 81,
3034
3082
  S: this,
3035
3083
  A: [
3036
3084
  "!this._graphs.has(space.id)",
@@ -3038,7 +3086,17 @@ var ComputeGraphRegistry = class extends Resource3 {
3038
3086
  ]
3039
3087
  });
3040
3088
  const hf = HyperFormula.buildEmpty(this._options);
3041
- const graph = new ComputeGraph(hf, space, this._options);
3089
+ invariant3(this._options.computeRuntime, "ComputeRuntime is required", {
3090
+ F: __dxlog_file5,
3091
+ L: 83,
3092
+ S: this,
3093
+ A: [
3094
+ "this._options.computeRuntime",
3095
+ "'ComputeRuntime is required'"
3096
+ ]
3097
+ });
3098
+ const runtime = this._options.computeRuntime.getRuntime(space.id);
3099
+ const graph = new ComputeGraph(hf, runtime, space, this._options);
3042
3100
  this._graphs.set(space.id, graph);
3043
3101
  return graph;
3044
3102
  }
@@ -3048,6 +3106,14 @@ var ComputeGraphRegistry = class extends Resource3 {
3048
3106
  }
3049
3107
  this._graphs.clear();
3050
3108
  }
3109
+ constructor(options) {
3110
+ super(), _define_property4(this, "_graphs", /* @__PURE__ */ new Map()), _define_property4(this, "_options", void 0);
3111
+ this._options = defaultsDeep2({}, options, defaultOptions);
3112
+ this._options.plugins = this._options.plugins ?? defaultPlugins;
3113
+ this._options.plugins?.forEach(({ plugin, translations }) => {
3114
+ HyperFormula.registerFunctionPlugin(plugin, translations);
3115
+ });
3116
+ }
3051
3117
  };
3052
3118
 
3053
3119
  export {
@@ -3073,8 +3139,8 @@ export {
3073
3139
  createSheetName,
3074
3140
  parseSheetName,
3075
3141
  ComputeGraph,
3076
- defaultOptions,
3077
3142
  defaultPlugins,
3143
+ defaultOptions,
3078
3144
  ComputeGraphRegistry
3079
3145
  };
3080
- //# sourceMappingURL=chunk-DZMSWKOY.mjs.map
3146
+ //# sourceMappingURL=chunk-K37OSZ5O.mjs.map