@dxos/functions 0.5.9-main.a2de4fa → 0.5.9-main.af4882d
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-YSDC6YCF.mjs → chunk-ERWZ4JUZ.mjs} +2 -2
- package/dist/lib/browser/{chunk-YSDC6YCF.mjs.map → chunk-ERWZ4JUZ.mjs.map} +2 -2
- package/dist/lib/browser/{chunk-ROZT7SSI.mjs → chunk-YKYOGE5O.mjs} +34 -55
- package/dist/lib/browser/chunk-YKYOGE5O.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +2 -2
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +3 -3
- package/dist/lib/browser/testing/index.mjs.map +2 -2
- package/dist/lib/browser/types.mjs +1 -1
- package/dist/lib/node/{chunk-3E6PY6JH.cjs → chunk-BLLSDTKZ.cjs} +5 -5
- package/dist/lib/node/{chunk-3E6PY6JH.cjs.map → chunk-BLLSDTKZ.cjs.map} +2 -2
- package/dist/lib/node/{chunk-H5Q2TXOA.cjs → chunk-CIFOOX2V.cjs} +54 -75
- package/dist/lib/node/chunk-CIFOOX2V.cjs.map +7 -0
- package/dist/lib/node/index.cjs +10 -10
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +10 -10
- package/dist/lib/node/testing/index.cjs.map +2 -2
- package/dist/lib/node/types.cjs +5 -5
- package/dist/lib/node/types.cjs.map +1 -1
- package/dist/types/src/runtime/dev-server.d.ts +1 -2
- package/dist/types/src/runtime/dev-server.d.ts.map +1 -1
- package/dist/types/src/runtime/scheduler.d.ts +1 -8
- package/dist/types/src/runtime/scheduler.d.ts.map +1 -1
- package/dist/types/src/testing/setup.d.ts +1 -1
- package/package.json +14 -15
- package/src/runtime/dev-server.test.ts +3 -3
- package/src/runtime/dev-server.ts +3 -6
- package/src/runtime/scheduler.ts +6 -29
- package/src/testing/functions-integration.test.ts +1 -1
- package/src/testing/setup.ts +1 -1
- package/src/types.ts +1 -1
- package/dist/lib/browser/chunk-ROZT7SSI.mjs.map +0 -7
- package/dist/lib/node/chunk-H5Q2TXOA.cjs.map +0 -7
package/dist/lib/node/meta.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/core/functions/src/types.ts":{"bytes":9803,"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"format":"esm"},"packages/core/functions/src/function/function-registry.ts":{"bytes":12521,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/functions/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/core/functions/src/function/index.ts":{"bytes":529,"imports":[{"path":"packages/core/functions/src/function/function-registry.ts","kind":"import-statement","original":"./function-registry"}],"format":"esm"},"packages/core/functions/src/handler.ts":{"bytes":9119,"imports":[{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/functions/src/runtime/dev-server.ts":{"bytes":28901,"imports":[{"path":"express","kind":"import-statement","external":true},{"path":"get-port-please","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"packages/core/functions/src/runtime/scheduler.ts":{"bytes":20701,"imports":[{"path":"node:path","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo-protocol","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/functions/src/runtime/index.ts":{"bytes":598,"imports":[{"path":"packages/core/functions/src/runtime/dev-server.ts","kind":"import-statement","original":"./dev-server"},{"path":"packages/core/functions/src/runtime/scheduler.ts","kind":"import-statement","original":"./scheduler"}],"format":"esm"},"packages/core/functions/src/trigger/type/subscription-trigger.ts":{"bytes":10635,"imports":[{"path":"@braneframe/types","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/functions/src/trigger/type/timer-trigger.ts":{"bytes":4173,"imports":[{"path":"cron","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/functions/src/trigger/type/webhook-trigger.ts":{"bytes":4388,"imports":[{"path":"get-port-please","kind":"import-statement","external":true},{"path":"node:http","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/functions/src/trigger/type/websocket-trigger.ts":{"bytes":11002,"imports":[{"path":"ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/functions/src/trigger/type/index.ts":{"bytes":865,"imports":[{"path":"packages/core/functions/src/trigger/type/subscription-trigger.ts","kind":"import-statement","original":"./subscription-trigger"},{"path":"packages/core/functions/src/trigger/type/timer-trigger.ts","kind":"import-statement","original":"./timer-trigger"},{"path":"packages/core/functions/src/trigger/type/webhook-trigger.ts","kind":"import-statement","original":"./webhook-trigger"},{"path":"packages/core/functions/src/trigger/type/websocket-trigger.ts","kind":"import-statement","original":"./websocket-trigger"}],"format":"esm"},"packages/core/functions/src/trigger/trigger-registry.ts":{"bytes":27366,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/functions/src/trigger/type/index.ts","kind":"import-statement","original":"./type"},{"path":"packages/core/functions/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/core/functions/src/trigger/index.ts":{"bytes":523,"imports":[{"path":"packages/core/functions/src/trigger/trigger-registry.ts","kind":"import-statement","original":"./trigger-registry"}],"format":"esm"},"packages/core/functions/src/index.ts":{"bytes":837,"imports":[{"path":"packages/core/functions/src/function/index.ts","kind":"import-statement","original":"./function"},{"path":"packages/core/functions/src/handler.ts","kind":"import-statement","original":"./handler"},{"path":"packages/core/functions/src/runtime/index.ts","kind":"import-statement","original":"./runtime"},{"path":"packages/core/functions/src/trigger/index.ts","kind":"import-statement","original":"./trigger"},{"path":"packages/core/functions/src/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/core/functions/src/testing/types.ts":{"bytes":1131,"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"format":"esm"},"packages/core/functions/src/testing/setup.ts":{"bytes":12671,"imports":[{"path":"get-port-please","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/functions/src/testing/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/core/functions/src/function/index.ts","kind":"import-statement","original":"../function"},{"path":"packages/core/functions/src/runtime/index.ts","kind":"import-statement","original":"../runtime"},{"path":"packages/core/functions/src/trigger/index.ts","kind":"import-statement","original":"../trigger"},{"path":"packages/core/functions/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/core/functions/src/testing/util.ts":{"bytes":4292,"imports":[{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/client/testing","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"packages/core/functions/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/core/functions/src/testing/manifest.ts":{"bytes":1139,"imports":[],"format":"esm"},"packages/core/functions/src/testing/index.ts":{"bytes":749,"imports":[{"path":"packages/core/functions/src/testing/setup.ts","kind":"import-statement","original":"./setup"},{"path":"packages/core/functions/src/testing/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/core/functions/src/testing/util.ts","kind":"import-statement","original":"./util"},{"path":"packages/core/functions/src/testing/manifest.ts","kind":"import-statement","original":"./manifest"}],"format":"esm"}},"outputs":{"packages/core/functions/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4835},"packages/core/functions/dist/lib/node/index.cjs":{"imports":[{"path":"packages/core/functions/dist/lib/node/chunk-H5Q2TXOA.cjs","kind":"import-statement"},{"path":"packages/core/functions/dist/lib/node/chunk-3E6PY6JH.cjs","kind":"import-statement"},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["DevServer","FUNCTION_SCHEMA","FunctionDef","FunctionManifestSchema","FunctionRegistry","FunctionTrigger","Scheduler","TriggerRegistry","subscriptionHandler"],"entryPoint":"packages/core/functions/src/index.ts","inputs":{"packages/core/functions/src/index.ts":{"bytesInOutput":0},"packages/core/functions/src/handler.ts":{"bytesInOutput":1622}},"bytes":2100},"packages/core/functions/dist/lib/node/testing/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9728},"packages/core/functions/dist/lib/node/testing/index.cjs":{"imports":[{"path":"packages/core/functions/dist/lib/node/chunk-H5Q2TXOA.cjs","kind":"import-statement"},{"path":"packages/core/functions/dist/lib/node/chunk-3E6PY6JH.cjs","kind":"import-statement"},{"path":"get-port-please","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/client/testing","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true}],"exports":["TestType","createFunctionRuntime","createInitializedClients","inviteMember","startFunctionsHost","testFunctionManifest","triggerWebhook"],"entryPoint":"packages/core/functions/src/testing/index.ts","inputs":{"packages/core/functions/src/testing/setup.ts":{"bytesInOutput":2781},"packages/core/functions/src/testing/types.ts":{"bytesInOutput":182},"packages/core/functions/src/testing/index.ts":{"bytesInOutput":0},"packages/core/functions/src/testing/util.ts":{"bytesInOutput":1034},"packages/core/functions/src/testing/manifest.ts":{"bytesInOutput":146}},"bytes":4760},"packages/core/functions/dist/lib/node/chunk-H5Q2TXOA.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":56120},"packages/core/functions/dist/lib/node/chunk-H5Q2TXOA.cjs":{"imports":[{"path":"packages/core/functions/dist/lib/node/chunk-3E6PY6JH.cjs","kind":"import-statement"},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"express","kind":"import-statement","external":true},{"path":"get-port-please","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo-protocol","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@braneframe/types","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"cron","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"get-port-please","kind":"import-statement","external":true},{"path":"node:http","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["DevServer","FunctionRegistry","Scheduler","TriggerRegistry"],"inputs":{"packages/core/functions/src/function/function-registry.ts":{"bytesInOutput":2927},"packages/core/functions/src/function/index.ts":{"bytesInOutput":0},"packages/core/functions/src/runtime/dev-server.ts":{"bytesInOutput":7880},"packages/core/functions/src/runtime/scheduler.ts":{"bytesInOutput":5208},"packages/core/functions/src/runtime/index.ts":{"bytesInOutput":0},"packages/core/functions/src/trigger/trigger-registry.ts":{"bytesInOutput":6995},"packages/core/functions/src/trigger/type/subscription-trigger.ts":{"bytesInOutput":2349},"packages/core/functions/src/trigger/type/index.ts":{"bytesInOutput":0},"packages/core/functions/src/trigger/type/timer-trigger.ts":{"bytesInOutput":898},"packages/core/functions/src/trigger/type/webhook-trigger.ts":{"bytesInOutput":829},"packages/core/functions/src/trigger/type/websocket-trigger.ts":{"bytesInOutput":2942},"packages/core/functions/src/trigger/index.ts":{"bytesInOutput":0}},"bytes":30785},"packages/core/functions/dist/lib/node/types.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/core/functions/dist/lib/node/types.cjs":{"imports":[{"path":"packages/core/functions/dist/lib/node/chunk-3E6PY6JH.cjs","kind":"import-statement"}],"exports":["FUNCTION_SCHEMA","FunctionDef","FunctionManifestSchema","FunctionTrigger"],"entryPoint":"packages/core/functions/src/types.ts","inputs":{},"bytes":243},"packages/core/functions/dist/lib/node/chunk-3E6PY6JH.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5437},"packages/core/functions/dist/lib/node/chunk-3E6PY6JH.cjs":{"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"exports":["FUNCTION_SCHEMA","FunctionDef","FunctionManifestSchema","FunctionTrigger","__require"],"inputs":{"packages/core/functions/src/types.ts":{"bytesInOutput":1868}},"bytes":2426}}}
|
|
1
|
+
{"inputs":{"packages/core/functions/src/types.ts":{"bytes":9711,"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"format":"esm"},"packages/core/functions/src/function/function-registry.ts":{"bytes":12521,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/functions/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/core/functions/src/function/index.ts":{"bytes":529,"imports":[{"path":"packages/core/functions/src/function/function-registry.ts","kind":"import-statement","original":"./function-registry"}],"format":"esm"},"packages/core/functions/src/handler.ts":{"bytes":9119,"imports":[{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/functions/src/runtime/dev-server.ts":{"bytes":28578,"imports":[{"path":"express","kind":"import-statement","external":true},{"path":"get-port-please","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"packages/core/functions/src/runtime/scheduler.ts":{"bytes":18003,"imports":[{"path":"node:path","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/functions/src/runtime/index.ts":{"bytes":598,"imports":[{"path":"packages/core/functions/src/runtime/dev-server.ts","kind":"import-statement","original":"./dev-server"},{"path":"packages/core/functions/src/runtime/scheduler.ts","kind":"import-statement","original":"./scheduler"}],"format":"esm"},"packages/core/functions/src/trigger/type/subscription-trigger.ts":{"bytes":10635,"imports":[{"path":"@braneframe/types","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/functions/src/trigger/type/timer-trigger.ts":{"bytes":4173,"imports":[{"path":"cron","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/functions/src/trigger/type/webhook-trigger.ts":{"bytes":4388,"imports":[{"path":"get-port-please","kind":"import-statement","external":true},{"path":"node:http","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/functions/src/trigger/type/websocket-trigger.ts":{"bytes":11002,"imports":[{"path":"ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/functions/src/trigger/type/index.ts":{"bytes":865,"imports":[{"path":"packages/core/functions/src/trigger/type/subscription-trigger.ts","kind":"import-statement","original":"./subscription-trigger"},{"path":"packages/core/functions/src/trigger/type/timer-trigger.ts","kind":"import-statement","original":"./timer-trigger"},{"path":"packages/core/functions/src/trigger/type/webhook-trigger.ts","kind":"import-statement","original":"./webhook-trigger"},{"path":"packages/core/functions/src/trigger/type/websocket-trigger.ts","kind":"import-statement","original":"./websocket-trigger"}],"format":"esm"},"packages/core/functions/src/trigger/trigger-registry.ts":{"bytes":27366,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/functions/src/trigger/type/index.ts","kind":"import-statement","original":"./type"},{"path":"packages/core/functions/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/core/functions/src/trigger/index.ts":{"bytes":523,"imports":[{"path":"packages/core/functions/src/trigger/trigger-registry.ts","kind":"import-statement","original":"./trigger-registry"}],"format":"esm"},"packages/core/functions/src/index.ts":{"bytes":837,"imports":[{"path":"packages/core/functions/src/function/index.ts","kind":"import-statement","original":"./function"},{"path":"packages/core/functions/src/handler.ts","kind":"import-statement","original":"./handler"},{"path":"packages/core/functions/src/runtime/index.ts","kind":"import-statement","original":"./runtime"},{"path":"packages/core/functions/src/trigger/index.ts","kind":"import-statement","original":"./trigger"},{"path":"packages/core/functions/src/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/core/functions/src/testing/types.ts":{"bytes":1131,"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"format":"esm"},"packages/core/functions/src/testing/setup.ts":{"bytes":12671,"imports":[{"path":"get-port-please","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/functions/src/testing/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/core/functions/src/function/index.ts","kind":"import-statement","original":"../function"},{"path":"packages/core/functions/src/runtime/index.ts","kind":"import-statement","original":"../runtime"},{"path":"packages/core/functions/src/trigger/index.ts","kind":"import-statement","original":"../trigger"},{"path":"packages/core/functions/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/core/functions/src/testing/util.ts":{"bytes":4292,"imports":[{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/client/testing","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"packages/core/functions/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/core/functions/src/testing/manifest.ts":{"bytes":1139,"imports":[],"format":"esm"},"packages/core/functions/src/testing/index.ts":{"bytes":749,"imports":[{"path":"packages/core/functions/src/testing/setup.ts","kind":"import-statement","original":"./setup"},{"path":"packages/core/functions/src/testing/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/core/functions/src/testing/util.ts","kind":"import-statement","original":"./util"},{"path":"packages/core/functions/src/testing/manifest.ts","kind":"import-statement","original":"./manifest"}],"format":"esm"}},"outputs":{"packages/core/functions/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4835},"packages/core/functions/dist/lib/node/index.cjs":{"imports":[{"path":"packages/core/functions/dist/lib/node/chunk-CIFOOX2V.cjs","kind":"import-statement"},{"path":"packages/core/functions/dist/lib/node/chunk-BLLSDTKZ.cjs","kind":"import-statement"},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["DevServer","FUNCTION_SCHEMA","FunctionDef","FunctionManifestSchema","FunctionRegistry","FunctionTrigger","Scheduler","TriggerRegistry","subscriptionHandler"],"entryPoint":"packages/core/functions/src/index.ts","inputs":{"packages/core/functions/src/index.ts":{"bytesInOutput":0},"packages/core/functions/src/handler.ts":{"bytesInOutput":1622}},"bytes":2100},"packages/core/functions/dist/lib/node/testing/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9728},"packages/core/functions/dist/lib/node/testing/index.cjs":{"imports":[{"path":"packages/core/functions/dist/lib/node/chunk-CIFOOX2V.cjs","kind":"import-statement"},{"path":"packages/core/functions/dist/lib/node/chunk-BLLSDTKZ.cjs","kind":"import-statement"},{"path":"get-port-please","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/client/testing","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true}],"exports":["TestType","createFunctionRuntime","createInitializedClients","inviteMember","startFunctionsHost","testFunctionManifest","triggerWebhook"],"entryPoint":"packages/core/functions/src/testing/index.ts","inputs":{"packages/core/functions/src/testing/setup.ts":{"bytesInOutput":2781},"packages/core/functions/src/testing/types.ts":{"bytesInOutput":182},"packages/core/functions/src/testing/index.ts":{"bytesInOutput":0},"packages/core/functions/src/testing/util.ts":{"bytesInOutput":1034},"packages/core/functions/src/testing/manifest.ts":{"bytesInOutput":146}},"bytes":4760},"packages/core/functions/dist/lib/node/chunk-CIFOOX2V.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":54699},"packages/core/functions/dist/lib/node/chunk-CIFOOX2V.cjs":{"imports":[{"path":"packages/core/functions/dist/lib/node/chunk-BLLSDTKZ.cjs","kind":"import-statement"},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"express","kind":"import-statement","external":true},{"path":"get-port-please","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@braneframe/types","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"cron","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"get-port-please","kind":"import-statement","external":true},{"path":"node:http","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["DevServer","FunctionRegistry","Scheduler","TriggerRegistry"],"inputs":{"packages/core/functions/src/function/function-registry.ts":{"bytesInOutput":2927},"packages/core/functions/src/function/index.ts":{"bytesInOutput":0},"packages/core/functions/src/runtime/dev-server.ts":{"bytesInOutput":7851},"packages/core/functions/src/runtime/scheduler.ts":{"bytesInOutput":4602},"packages/core/functions/src/runtime/index.ts":{"bytesInOutput":0},"packages/core/functions/src/trigger/trigger-registry.ts":{"bytesInOutput":6995},"packages/core/functions/src/trigger/type/subscription-trigger.ts":{"bytesInOutput":2349},"packages/core/functions/src/trigger/type/index.ts":{"bytesInOutput":0},"packages/core/functions/src/trigger/type/timer-trigger.ts":{"bytesInOutput":898},"packages/core/functions/src/trigger/type/webhook-trigger.ts":{"bytesInOutput":829},"packages/core/functions/src/trigger/type/websocket-trigger.ts":{"bytesInOutput":2942},"packages/core/functions/src/trigger/index.ts":{"bytesInOutput":0}},"bytes":30150},"packages/core/functions/dist/lib/node/types.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/core/functions/dist/lib/node/types.cjs":{"imports":[{"path":"packages/core/functions/dist/lib/node/chunk-BLLSDTKZ.cjs","kind":"import-statement"}],"exports":["FUNCTION_SCHEMA","FunctionDef","FunctionManifestSchema","FunctionTrigger"],"entryPoint":"packages/core/functions/src/types.ts","inputs":{},"bytes":243},"packages/core/functions/dist/lib/node/chunk-BLLSDTKZ.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5388},"packages/core/functions/dist/lib/node/chunk-BLLSDTKZ.cjs":{"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"exports":["FUNCTION_SCHEMA","FunctionDef","FunctionManifestSchema","FunctionTrigger","__require"],"inputs":{"packages/core/functions/src/types.ts":{"bytesInOutput":1848}},"bytes":2406}}}
|
|
@@ -37,8 +37,8 @@ __export(testing_exports, {
|
|
|
37
37
|
triggerWebhook: () => triggerWebhook
|
|
38
38
|
});
|
|
39
39
|
module.exports = __toCommonJS(testing_exports);
|
|
40
|
-
var
|
|
41
|
-
var
|
|
40
|
+
var import_chunk_CIFOOX2V = require("../chunk-CIFOOX2V.cjs");
|
|
41
|
+
var import_chunk_BLLSDTKZ = require("../chunk-BLLSDTKZ.cjs");
|
|
42
42
|
var import_get_port_please = require("get-port-please");
|
|
43
43
|
var import_node_path = __toESM(require("node:path"));
|
|
44
44
|
var import_async = require("@dxos/async");
|
|
@@ -69,8 +69,8 @@ var createInitializedClients = async (testBuilder, count = 1, config) => {
|
|
|
69
69
|
});
|
|
70
70
|
await client.spaces.isReady.wait();
|
|
71
71
|
client.addTypes([
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
import_chunk_BLLSDTKZ.FunctionDef,
|
|
73
|
+
import_chunk_BLLSDTKZ.FunctionTrigger,
|
|
74
74
|
TestType
|
|
75
75
|
]);
|
|
76
76
|
return client;
|
|
@@ -99,13 +99,13 @@ var createFunctionRuntime = async (testBuilder, pluginInitializer) => {
|
|
|
99
99
|
};
|
|
100
100
|
var startFunctionsHost = async (testBuilder, pluginInitializer, options) => {
|
|
101
101
|
const functionRuntime = await createFunctionRuntime(testBuilder, pluginInitializer);
|
|
102
|
-
const functionsRegistry = new
|
|
102
|
+
const functionsRegistry = new import_chunk_CIFOOX2V.FunctionRegistry(functionRuntime);
|
|
103
103
|
const devServer = await startDevServer(testBuilder, functionRuntime, functionsRegistry, options);
|
|
104
104
|
const scheduler = await startScheduler(testBuilder, functionRuntime, devServer, functionsRegistry);
|
|
105
105
|
return {
|
|
106
106
|
scheduler,
|
|
107
107
|
client: functionRuntime,
|
|
108
|
-
|
|
108
|
+
waitHasActiveTriggers: async (space) => {
|
|
109
109
|
await (0, import_async.waitForCondition)({
|
|
110
110
|
condition: () => scheduler.triggers.getActiveTriggers(space).length > 0
|
|
111
111
|
});
|
|
@@ -113,8 +113,8 @@ var startFunctionsHost = async (testBuilder, pluginInitializer, options) => {
|
|
|
113
113
|
};
|
|
114
114
|
};
|
|
115
115
|
var startScheduler = async (testBuilder, client, devServer, functionRegistry) => {
|
|
116
|
-
const triggerRegistry = new
|
|
117
|
-
const scheduler = new
|
|
116
|
+
const triggerRegistry = new import_chunk_CIFOOX2V.TriggerRegistry(client);
|
|
117
|
+
const scheduler = new import_chunk_CIFOOX2V.Scheduler(functionRegistry, triggerRegistry, {
|
|
118
118
|
endpoint: devServer.endpoint
|
|
119
119
|
});
|
|
120
120
|
await scheduler.start();
|
|
@@ -122,7 +122,7 @@ var startScheduler = async (testBuilder, client, devServer, functionRegistry) =>
|
|
|
122
122
|
return scheduler;
|
|
123
123
|
};
|
|
124
124
|
var startDevServer = async (testBuilder, client, functionRegistry, options) => {
|
|
125
|
-
const server = new
|
|
125
|
+
const server = new import_chunk_CIFOOX2V.DevServer(client, functionRegistry, {
|
|
126
126
|
baseDir: import_node_path.default.join(__dirname, "../testing"),
|
|
127
127
|
port: await (0, import_get_port_please.getRandomPort)("127.0.0.1"),
|
|
128
128
|
...options
|
|
@@ -133,7 +133,7 @@ var startDevServer = async (testBuilder, client, functionRegistry, options) => {
|
|
|
133
133
|
};
|
|
134
134
|
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/functions/src/testing/util.ts";
|
|
135
135
|
var triggerWebhook = async (space, uri) => {
|
|
136
|
-
const trigger = (await space.db.query(import_echo.Filter.schema(
|
|
136
|
+
const trigger = (await space.db.query(import_echo.Filter.schema(import_chunk_BLLSDTKZ.FunctionTrigger, (t) => t.function === uri)).run()).objects[0];
|
|
137
137
|
(0, import_invariant.invariant)(trigger.spec.type === "webhook", void 0, {
|
|
138
138
|
F: __dxlog_file,
|
|
139
139
|
L: 17,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/testing/setup.ts", "../../../../src/testing/types.ts", "../../../../src/testing/util.ts", "../../../../src/testing/manifest.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { getRandomPort } from 'get-port-please';\nimport path from 'node:path';\n\nimport { waitForCondition } from '@dxos/async';\nimport { Client, Config } from '@dxos/client';\nimport { type Space } from '@dxos/client/echo';\nimport { type TestBuilder } from '@dxos/client/testing';\nimport { range } from '@dxos/util';\n\nimport { TestType } from './types';\nimport { FunctionRegistry } from '../function';\nimport { DevServer, type DevServerOptions, Scheduler } from '../runtime';\nimport { TriggerRegistry } from '../trigger';\nimport { FunctionDef, FunctionTrigger } from '../types';\n\nexport type FunctionsPluginInitializer = (client: Client) => Promise<{ close: () => Promise<void> }>;\n\n// TODO(burdon): Extend/wrap TestBuilder.\n\nexport const createInitializedClients = async (testBuilder: TestBuilder, count: number = 1, config?: Config) => {\n const clients = range(count).map(() => new Client({ config, services: testBuilder.createLocalClientServices() }));\n testBuilder.ctx.onDispose(() => Promise.all(clients.map((client) => client.destroy())));\n return Promise.all(\n clients.map(async (client, index) => {\n await client.initialize();\n await client.halo.createIdentity({ displayName: `Peer ${index}` });\n await client.spaces.isReady.wait();\n client.addTypes([FunctionDef, FunctionTrigger, TestType]);\n return client;\n }),\n );\n};\n\nexport const createFunctionRuntime = async (\n testBuilder: TestBuilder,\n pluginInitializer: FunctionsPluginInitializer,\n): Promise<Client> => {\n const functionsPort = await getRandomPort('127.0.0.1');\n const config = new Config({\n runtime: {\n agent: {\n plugins: [{ id: 'dxos.org/agent/plugin/functions', config: { port: functionsPort } }],\n },\n },\n });\n\n const [client] = await createInitializedClients(testBuilder, 1, config);\n const plugin = await pluginInitializer(client);\n testBuilder.ctx.onDispose(() => plugin.close());\n return client;\n};\n\nexport const startFunctionsHost = async (\n testBuilder: TestBuilder,\n pluginInitializer: FunctionsPluginInitializer,\n options?: DevServerOptions,\n) => {\n const functionRuntime = await createFunctionRuntime(testBuilder, pluginInitializer);\n const functionsRegistry = new FunctionRegistry(functionRuntime);\n const devServer = await startDevServer(testBuilder, functionRuntime, functionsRegistry, options);\n const scheduler = await startScheduler(testBuilder, functionRuntime, devServer, functionsRegistry);\n return {\n scheduler,\n client: functionRuntime,\n
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { getRandomPort } from 'get-port-please';\nimport path from 'node:path';\n\nimport { waitForCondition } from '@dxos/async';\nimport { Client, Config } from '@dxos/client';\nimport { type Space } from '@dxos/client/echo';\nimport { type TestBuilder } from '@dxos/client/testing';\nimport { range } from '@dxos/util';\n\nimport { TestType } from './types';\nimport { FunctionRegistry } from '../function';\nimport { DevServer, type DevServerOptions, Scheduler } from '../runtime';\nimport { TriggerRegistry } from '../trigger';\nimport { FunctionDef, FunctionTrigger } from '../types';\n\nexport type FunctionsPluginInitializer = (client: Client) => Promise<{ close: () => Promise<void> }>;\n\n// TODO(burdon): Extend/wrap TestBuilder.\n\nexport const createInitializedClients = async (testBuilder: TestBuilder, count: number = 1, config?: Config) => {\n const clients = range(count).map(() => new Client({ config, services: testBuilder.createLocalClientServices() }));\n testBuilder.ctx.onDispose(() => Promise.all(clients.map((client) => client.destroy())));\n return Promise.all(\n clients.map(async (client, index) => {\n await client.initialize();\n await client.halo.createIdentity({ displayName: `Peer ${index}` });\n await client.spaces.isReady.wait();\n client.addTypes([FunctionDef, FunctionTrigger, TestType]);\n return client;\n }),\n );\n};\n\nexport const createFunctionRuntime = async (\n testBuilder: TestBuilder,\n pluginInitializer: FunctionsPluginInitializer,\n): Promise<Client> => {\n const functionsPort = await getRandomPort('127.0.0.1');\n const config = new Config({\n runtime: {\n agent: {\n plugins: [{ id: 'dxos.org/agent/plugin/functions', config: { port: functionsPort } }],\n },\n },\n });\n\n const [client] = await createInitializedClients(testBuilder, 1, config);\n const plugin = await pluginInitializer(client);\n testBuilder.ctx.onDispose(() => plugin.close());\n return client;\n};\n\nexport const startFunctionsHost = async (\n testBuilder: TestBuilder,\n pluginInitializer: FunctionsPluginInitializer,\n options?: DevServerOptions,\n) => {\n const functionRuntime = await createFunctionRuntime(testBuilder, pluginInitializer);\n const functionsRegistry = new FunctionRegistry(functionRuntime);\n const devServer = await startDevServer(testBuilder, functionRuntime, functionsRegistry, options);\n const scheduler = await startScheduler(testBuilder, functionRuntime, devServer, functionsRegistry);\n return {\n scheduler,\n client: functionRuntime,\n waitHasActiveTriggers: async (space: Space) => {\n await waitForCondition({ condition: () => scheduler.triggers.getActiveTriggers(space).length > 0 });\n },\n };\n};\n\nconst startScheduler = async (\n testBuilder: TestBuilder,\n client: Client,\n devServer: DevServer,\n functionRegistry: FunctionRegistry,\n) => {\n const triggerRegistry = new TriggerRegistry(client);\n const scheduler = new Scheduler(functionRegistry, triggerRegistry, { endpoint: devServer.endpoint });\n await scheduler.start();\n testBuilder.ctx.onDispose(() => scheduler.stop());\n return scheduler;\n};\n\nconst startDevServer = async (\n testBuilder: TestBuilder,\n client: Client,\n functionRegistry: FunctionRegistry,\n options?: { baseDir?: string },\n) => {\n const server = new DevServer(client, functionRegistry, {\n baseDir: path.join(__dirname, '../testing'),\n port: await getRandomPort('127.0.0.1'),\n ...options,\n });\n await server.start();\n testBuilder.ctx.onDispose(() => server.stop());\n return server;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { S, TypedObject } from '@dxos/echo-schema';\n\nexport class TestType extends TypedObject({ typename: 'example.com/type/Test', version: '0.1.0' })({\n title: S.String,\n}) {}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { Client } from '@dxos/client';\nimport { Filter, type Space } from '@dxos/client/echo';\nimport { performInvitation } from '@dxos/client/testing';\nimport { invariant } from '@dxos/invariant';\nimport { Invitation } from '@dxos/protocols/proto/dxos/client/services';\n\nimport { FunctionTrigger } from '../types';\n\nexport const triggerWebhook = async (space: Space, uri: string) => {\n const trigger = (\n await space.db.query(Filter.schema(FunctionTrigger, (t: FunctionTrigger) => t.function === uri)).run()\n ).objects[0];\n invariant(trigger.spec.type === 'webhook');\n void fetch(`http://localhost:${trigger.spec.port}`);\n};\n\nexport const inviteMember = async (host: Space, guest: Client) => {\n const [{ invitation: hostInvitation }] = await Promise.all(performInvitation({ host, guest: guest.spaces }));\n if (hostInvitation?.state !== Invitation.State.SUCCESS) {\n throw new Error(`Expected ${hostInvitation?.state} to be ${Invitation.State.SUCCESS}.`);\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { FunctionManifest } from '../types';\n\nexport const testFunctionManifest: FunctionManifest = {\n functions: [\n {\n uri: 'example.com/function/test',\n route: 'test',\n handler: 'test',\n },\n ],\n};\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
|
-
"names": ["TestType", "TypedObject", "typename", "version", "title", "S", "String", "createInitializedClients", "testBuilder", "count", "config", "clients", "range", "map", "Client", "services", "createLocalClientServices", "ctx", "onDispose", "Promise", "all", "client", "destroy", "index", "initialize", "halo", "createIdentity", "displayName", "spaces", "isReady", "wait", "addTypes", "FunctionDef", "FunctionTrigger", "createFunctionRuntime", "pluginInitializer", "functionsPort", "getRandomPort", "Config", "runtime", "agent", "plugins", "id", "port", "plugin", "close", "startFunctionsHost", "options", "functionRuntime", "functionsRegistry", "FunctionRegistry", "devServer", "startDevServer", "scheduler", "startScheduler", "
|
|
6
|
+
"names": ["TestType", "TypedObject", "typename", "version", "title", "S", "String", "createInitializedClients", "testBuilder", "count", "config", "clients", "range", "map", "Client", "services", "createLocalClientServices", "ctx", "onDispose", "Promise", "all", "client", "destroy", "index", "initialize", "halo", "createIdentity", "displayName", "spaces", "isReady", "wait", "addTypes", "FunctionDef", "FunctionTrigger", "createFunctionRuntime", "pluginInitializer", "functionsPort", "getRandomPort", "Config", "runtime", "agent", "plugins", "id", "port", "plugin", "close", "startFunctionsHost", "options", "functionRuntime", "functionsRegistry", "FunctionRegistry", "devServer", "startDevServer", "scheduler", "startScheduler", "waitHasActiveTriggers", "space", "waitForCondition", "condition", "triggers", "getActiveTriggers", "length", "functionRegistry", "triggerRegistry", "TriggerRegistry", "Scheduler", "endpoint", "start", "stop", "server", "DevServer", "baseDir", "path", "join", "__dirname", "triggerWebhook", "uri", "trigger", "db", "query", "Filter", "schema", "t", "function", "run", "objects", "invariant", "spec", "type", "fetch", "inviteMember", "host", "guest", "invitation", "hostInvitation", "performInvitation", "state", "Invitation", "State", "SUCCESS", "Error", "testFunctionManifest", "functions", "route", "handler"]
|
|
7
7
|
}
|
package/dist/lib/node/types.cjs
CHANGED
|
@@ -18,13 +18,13 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var types_exports = {};
|
|
20
20
|
__export(types_exports, {
|
|
21
|
-
FUNCTION_SCHEMA: () =>
|
|
22
|
-
FunctionDef: () =>
|
|
23
|
-
FunctionManifestSchema: () =>
|
|
24
|
-
FunctionTrigger: () =>
|
|
21
|
+
FUNCTION_SCHEMA: () => import_chunk_BLLSDTKZ.FUNCTION_SCHEMA,
|
|
22
|
+
FunctionDef: () => import_chunk_BLLSDTKZ.FunctionDef,
|
|
23
|
+
FunctionManifestSchema: () => import_chunk_BLLSDTKZ.FunctionManifestSchema,
|
|
24
|
+
FunctionTrigger: () => import_chunk_BLLSDTKZ.FunctionTrigger
|
|
25
25
|
});
|
|
26
26
|
module.exports = __toCommonJS(types_exports);
|
|
27
|
-
var
|
|
27
|
+
var import_chunk_BLLSDTKZ = require("./chunk-BLLSDTKZ.cjs");
|
|
28
28
|
// Annotate the CommonJS export names for ESM import in node:
|
|
29
29
|
0 && (module.exports = {
|
|
30
30
|
FUNCTION_SCHEMA,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["types.cjs"],
|
|
4
|
-
"sourcesContent": ["import {\n FUNCTION_SCHEMA,\n FunctionDef,\n FunctionManifestSchema,\n FunctionTrigger\n} from \"./chunk-
|
|
4
|
+
"sourcesContent": ["import {\n FUNCTION_SCHEMA,\n FunctionDef,\n FunctionManifestSchema,\n FunctionTrigger\n} from \"./chunk-BLLSDTKZ.cjs\";\nexport {\n FUNCTION_SCHEMA,\n FunctionDef,\n FunctionManifestSchema,\n FunctionTrigger\n};\n//# sourceMappingURL=types.cjs.map\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAKO;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -10,8 +10,7 @@ export type DevServerOptions = {
|
|
|
10
10
|
dataDir?: string;
|
|
11
11
|
};
|
|
12
12
|
/**
|
|
13
|
-
* Functions dev server provides a local HTTP server for
|
|
14
|
-
* Functions are executed in the context of an authenticated client.
|
|
13
|
+
* Functions dev server provides a local HTTP server for testing functions.
|
|
15
14
|
*/
|
|
16
15
|
export declare class DevServer {
|
|
17
16
|
private readonly _client;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../../../src/runtime/dev-server.ts"],"names":[],"mappings":"AASA,OAAO,EAAgB,KAAK,EAAW,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAK3C,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAA4C,KAAK,eAAe,EAAyB,MAAM,YAAY,CAAC;AACnH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../../../src/runtime/dev-server.ts"],"names":[],"mappings":"AASA,OAAO,EAAgB,KAAK,EAAW,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAK3C,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAA4C,KAAK,eAAe,EAAyB,MAAM,YAAY,CAAC;AACnH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAS;IAelB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAhB3B,OAAO,CAAC,IAAI,CAAmB;IAG/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2E;IAErG,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,4BAA4B,CAAC,CAAS;IAC9C,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,IAAI,CAAK;IAEjB,SAAgB,MAAM,gBAAuB;gBAG1B,OAAO,EAAE,MAAM,EACf,kBAAkB,EAAE,gBAAgB,EACpC,QAAQ,EAAE,gBAAgB;IAG7C,IAAI,KAAK;;MAIR;IAED,IAAI,QAAQ,WAGX;IAED,IAAI,KAAK,uBAER;IAED,IAAI,SAAS;;;QAEZ;IAEK,KAAK;IAoDL,IAAI;YAmCI,mBAAmB;IAMjC;;OAEG;YACW,KAAK;YAwBL,uBAAuB;IAYrC;;OAEG;IACU,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;YAY/C,OAAO;CAmBtB"}
|
|
@@ -8,8 +8,7 @@ export type SchedulerOptions = {
|
|
|
8
8
|
callback?: Callback;
|
|
9
9
|
};
|
|
10
10
|
/**
|
|
11
|
-
* The scheduler triggers function execution based on various
|
|
12
|
-
* Functions are scheduled within the context of a specific space.
|
|
11
|
+
* The scheduler triggers function execution based on various triggers.
|
|
13
12
|
*/
|
|
14
13
|
export declare class Scheduler {
|
|
15
14
|
readonly functions: FunctionRegistry;
|
|
@@ -22,13 +21,7 @@ export declare class Scheduler {
|
|
|
22
21
|
stop(): Promise<void>;
|
|
23
22
|
register(space: Space, manifest: FunctionManifest): Promise<void>;
|
|
24
23
|
private _safeActivateTriggers;
|
|
25
|
-
/**
|
|
26
|
-
* Activate trigger.
|
|
27
|
-
*/
|
|
28
24
|
private activate;
|
|
29
|
-
/**
|
|
30
|
-
* Invoke function RPC.
|
|
31
|
-
*/
|
|
32
25
|
private _execFunction;
|
|
33
26
|
}
|
|
34
27
|
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../../src/runtime/scheduler.ts"],"names":[],"mappings":"AAOA,OAAO,
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../../src/runtime/scheduler.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAI/C,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAoB,KAAK,gBAAgB,EAAwB,MAAM,UAAU,CAAC;AAEzF,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAS;aAMF,SAAS,EAAE,gBAAgB;aAC3B,QAAQ,EAAE,eAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAP3B,OAAO,CAAC,IAAI,CAAmB;IAE/B,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA4B;gBAGlD,SAAS,EAAE,gBAAgB,EAC3B,QAAQ,EAAE,eAAe,EACxB,QAAQ,GAAE,gBAAqB;IAU5C,KAAK;IAOL,IAAI;IAOG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB;YAKhD,qBAAqB;YAWrB,QAAQ;YAwBR,aAAa;CA2C5B"}
|
|
@@ -10,6 +10,6 @@ export declare const createFunctionRuntime: (testBuilder: TestBuilder, pluginIni
|
|
|
10
10
|
export declare const startFunctionsHost: (testBuilder: TestBuilder, pluginInitializer: FunctionsPluginInitializer, options?: DevServerOptions) => Promise<{
|
|
11
11
|
scheduler: Scheduler;
|
|
12
12
|
client: Client;
|
|
13
|
-
|
|
13
|
+
waitHasActiveTriggers: (space: Space) => Promise<void>;
|
|
14
14
|
}>;
|
|
15
15
|
//# sourceMappingURL=setup.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/functions",
|
|
3
|
-
"version": "0.5.9-main.
|
|
3
|
+
"version": "0.5.9-main.af4882d",
|
|
4
4
|
"description": "Functions API and runtime.",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -49,24 +49,23 @@
|
|
|
49
49
|
"express": "^4.19.2",
|
|
50
50
|
"get-port-please": "^3.1.1",
|
|
51
51
|
"ws": "^8.14.2",
|
|
52
|
-
"@braneframe/types": "0.5.9-main.
|
|
53
|
-
"@dxos/
|
|
54
|
-
"@dxos/
|
|
55
|
-
"@dxos/
|
|
56
|
-
"@dxos/echo-
|
|
57
|
-
"@dxos/echo-
|
|
58
|
-
"@dxos/invariant": "0.5.9-main.
|
|
59
|
-
"@dxos/
|
|
60
|
-
"@dxos/
|
|
61
|
-
"@dxos/
|
|
62
|
-
"@dxos/
|
|
63
|
-
"@dxos/
|
|
64
|
-
"@dxos/util": "0.5.9-main.a2de4fa"
|
|
52
|
+
"@braneframe/types": "0.5.9-main.af4882d",
|
|
53
|
+
"@dxos/context": "0.5.9-main.af4882d",
|
|
54
|
+
"@dxos/async": "0.5.9-main.af4882d",
|
|
55
|
+
"@dxos/client": "0.5.9-main.af4882d",
|
|
56
|
+
"@dxos/echo-schema": "0.5.9-main.af4882d",
|
|
57
|
+
"@dxos/echo-db": "0.5.9-main.af4882d",
|
|
58
|
+
"@dxos/invariant": "0.5.9-main.af4882d",
|
|
59
|
+
"@dxos/keys": "0.5.9-main.af4882d",
|
|
60
|
+
"@dxos/log": "0.5.9-main.af4882d",
|
|
61
|
+
"@dxos/protocols": "0.5.9-main.af4882d",
|
|
62
|
+
"@dxos/node-std": "0.5.9-main.af4882d",
|
|
63
|
+
"@dxos/util": "0.5.9-main.af4882d"
|
|
65
64
|
},
|
|
66
65
|
"devDependencies": {
|
|
67
66
|
"@types/express": "^4.17.17",
|
|
68
67
|
"@types/ws": "^7.4.0",
|
|
69
|
-
"@dxos/agent": "0.5.9-main.
|
|
68
|
+
"@dxos/agent": "0.5.9-main.af4882d"
|
|
70
69
|
},
|
|
71
70
|
"publishConfig": {
|
|
72
71
|
"access": "public"
|
|
@@ -30,7 +30,7 @@ describe('dev server', () => {
|
|
|
30
30
|
});
|
|
31
31
|
|
|
32
32
|
test('function registry open after dev server started', async () => {
|
|
33
|
-
const {
|
|
33
|
+
const { registry, server, space } = await setupTest();
|
|
34
34
|
await registry.register(space, testFunctionManifest.functions);
|
|
35
35
|
await server.start();
|
|
36
36
|
await registry.open();
|
|
@@ -39,7 +39,7 @@ describe('dev server', () => {
|
|
|
39
39
|
});
|
|
40
40
|
|
|
41
41
|
test('function registry open before dev server started', async () => {
|
|
42
|
-
const {
|
|
42
|
+
const { registry, server, space } = await setupTest();
|
|
43
43
|
await registry.register(space, testFunctionManifest.functions);
|
|
44
44
|
await registry.open();
|
|
45
45
|
await server.start();
|
|
@@ -48,7 +48,7 @@ describe('dev server', () => {
|
|
|
48
48
|
});
|
|
49
49
|
|
|
50
50
|
test('unsubscribes from functions after stopped', async () => {
|
|
51
|
-
const {
|
|
51
|
+
const { registry, server, space } = await setupTest();
|
|
52
52
|
await registry.register(space, testFunctionManifest.functions);
|
|
53
53
|
await server.start();
|
|
54
54
|
await server.stop();
|
|
@@ -17,8 +17,6 @@ import { type FunctionRegistry } from '../function';
|
|
|
17
17
|
import { type FunctionContext, type FunctionEvent, type FunctionHandler, type FunctionResponse } from '../handler';
|
|
18
18
|
import { type FunctionDef } from '../types';
|
|
19
19
|
|
|
20
|
-
const FN_TIMEOUT = 20_000;
|
|
21
|
-
|
|
22
20
|
export type DevServerOptions = {
|
|
23
21
|
baseDir: string;
|
|
24
22
|
port?: number;
|
|
@@ -27,8 +25,7 @@ export type DevServerOptions = {
|
|
|
27
25
|
};
|
|
28
26
|
|
|
29
27
|
/**
|
|
30
|
-
* Functions dev server provides a local HTTP server for
|
|
31
|
-
* Functions are executed in the context of an authenticated client.
|
|
28
|
+
* Functions dev server provides a local HTTP server for testing functions.
|
|
32
29
|
*/
|
|
33
30
|
export class DevServer {
|
|
34
31
|
private _ctx = createContext();
|
|
@@ -74,7 +71,7 @@ export class DevServer {
|
|
|
74
71
|
log.info('starting...');
|
|
75
72
|
this._ctx = createContext();
|
|
76
73
|
|
|
77
|
-
// TODO(burdon):
|
|
74
|
+
// TODO(burdon): Move to hono.
|
|
78
75
|
const app = express();
|
|
79
76
|
app.use(express.json());
|
|
80
77
|
|
|
@@ -88,7 +85,7 @@ export class DevServer {
|
|
|
88
85
|
}
|
|
89
86
|
|
|
90
87
|
// TODO(burdon): Get function context.
|
|
91
|
-
res.statusCode = await asyncTimeout(this.invoke('/' + path, req.body),
|
|
88
|
+
res.statusCode = await asyncTimeout(this.invoke('/' + path, req.body), 20_000);
|
|
92
89
|
res.end();
|
|
93
90
|
} catch (err: any) {
|
|
94
91
|
log.catch(err);
|
package/src/runtime/scheduler.ts
CHANGED
|
@@ -5,9 +5,8 @@
|
|
|
5
5
|
import path from 'node:path';
|
|
6
6
|
|
|
7
7
|
import { Mutex } from '@dxos/async';
|
|
8
|
-
import {
|
|
8
|
+
import { type Space } from '@dxos/client/echo';
|
|
9
9
|
import { Context } from '@dxos/context';
|
|
10
|
-
import { Reference } from '@dxos/echo-protocol';
|
|
11
10
|
import { log } from '@dxos/log';
|
|
12
11
|
|
|
13
12
|
import { type FunctionRegistry } from '../function';
|
|
@@ -23,8 +22,7 @@ export type SchedulerOptions = {
|
|
|
23
22
|
};
|
|
24
23
|
|
|
25
24
|
/**
|
|
26
|
-
* The scheduler triggers function execution based on various
|
|
27
|
-
* Functions are scheduled within the context of a specific space.
|
|
25
|
+
* The scheduler triggers function execution based on various triggers.
|
|
28
26
|
*/
|
|
29
27
|
export class Scheduler {
|
|
30
28
|
private _ctx = createContext();
|
|
@@ -57,7 +55,7 @@ export class Scheduler {
|
|
|
57
55
|
await this.triggers.close();
|
|
58
56
|
}
|
|
59
57
|
|
|
60
|
-
// TODO(burdon): Remove and update registries directly
|
|
58
|
+
// TODO(burdon): Remove and update registries directly.
|
|
61
59
|
public async register(space: Space, manifest: FunctionManifest) {
|
|
62
60
|
await this.functions.register(space, manifest.functions);
|
|
63
61
|
await this.triggers.register(space, manifest);
|
|
@@ -74,9 +72,6 @@ export class Scheduler {
|
|
|
74
72
|
await Promise.all(mountTasks).catch(log.catch);
|
|
75
73
|
}
|
|
76
74
|
|
|
77
|
-
/**
|
|
78
|
-
* Activate trigger.
|
|
79
|
-
*/
|
|
80
75
|
private async activate(space: Space, functions: FunctionDef[], trigger: FunctionTrigger) {
|
|
81
76
|
const definition = functions.find((def) => def.uri === trigger.function);
|
|
82
77
|
if (!definition) {
|
|
@@ -89,25 +84,10 @@ export class Scheduler {
|
|
|
89
84
|
this._functionUriToCallMutex.set(definition.uri, mutex);
|
|
90
85
|
|
|
91
86
|
log.info('function triggered, waiting for mutex', { uri: definition.uri });
|
|
92
|
-
return mutex.executeSynchronized(
|
|
87
|
+
return mutex.executeSynchronized(() => {
|
|
93
88
|
log.info('mutex acquired', { uri: definition.uri });
|
|
94
|
-
|
|
95
|
-
// Load potential references in meta properties to serialize.
|
|
96
|
-
await loadObjectReferences(trigger, (t) => Object.values(t.meta ?? {}));
|
|
97
|
-
const meta: FunctionTrigger['meta'] = {};
|
|
98
|
-
for (const [key, value] of Object.entries(trigger.meta ?? {})) {
|
|
99
|
-
if (value instanceof Reference) {
|
|
100
|
-
const object = await space.db.loadObjectById(value.objectId);
|
|
101
|
-
if (object) {
|
|
102
|
-
meta[key] = object;
|
|
103
|
-
}
|
|
104
|
-
} else {
|
|
105
|
-
meta[key] = value;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
89
|
return this._execFunction(definition, trigger, {
|
|
110
|
-
meta,
|
|
90
|
+
meta: trigger.meta ?? {},
|
|
111
91
|
data: { ...args, spaceKey: space.key },
|
|
112
92
|
});
|
|
113
93
|
});
|
|
@@ -116,13 +96,10 @@ export class Scheduler {
|
|
|
116
96
|
log('activated trigger', { space: space.key, trigger });
|
|
117
97
|
}
|
|
118
98
|
|
|
119
|
-
/**
|
|
120
|
-
* Invoke function RPC.
|
|
121
|
-
*/
|
|
122
99
|
private async _execFunction<TData, TMeta>(
|
|
123
100
|
def: FunctionDef,
|
|
124
101
|
trigger: FunctionTrigger,
|
|
125
|
-
{
|
|
102
|
+
{ data, meta }: { data: TData; meta?: TMeta },
|
|
126
103
|
): Promise<number> {
|
|
127
104
|
let status = 0;
|
|
128
105
|
try {
|
|
@@ -52,7 +52,7 @@ describe('functions e2e', () => {
|
|
|
52
52
|
return args.response.status(200);
|
|
53
53
|
});
|
|
54
54
|
|
|
55
|
-
await functionRuntime.
|
|
55
|
+
await functionRuntime.waitHasActiveTriggers(space);
|
|
56
56
|
const addedObject = space.db.add(create(TestType, { title: '42' }));
|
|
57
57
|
|
|
58
58
|
const callArgs = await called.wait();
|
package/src/testing/setup.ts
CHANGED
|
@@ -66,7 +66,7 @@ export const startFunctionsHost = async (
|
|
|
66
66
|
return {
|
|
67
67
|
scheduler,
|
|
68
68
|
client: functionRuntime,
|
|
69
|
-
|
|
69
|
+
waitHasActiveTriggers: async (space: Space) => {
|
|
70
70
|
await waitForCondition({ condition: () => scheduler.triggers.getActiveTriggers(space).length > 0 });
|
|
71
71
|
},
|
|
72
72
|
};
|
package/src/types.ts
CHANGED
|
@@ -97,7 +97,7 @@ export class FunctionTrigger extends TypedObject({
|
|
|
97
97
|
enabled: S.optional(S.Boolean),
|
|
98
98
|
function: S.String.pipe(S.description('Function URI.')),
|
|
99
99
|
// The `meta` property is merged into the event data passed to the function.
|
|
100
|
-
meta: S.optional(S.mutable(S.
|
|
100
|
+
meta: S.optional(S.mutable(S.Any)),
|
|
101
101
|
spec: TriggerSpecSchema,
|
|
102
102
|
}) {}
|
|
103
103
|
|