@dxos/functions 0.8.4-main.e098934 → 0.8.4-main.ead640a

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 (106) hide show
  1. package/dist/lib/browser/bundler/index.mjs +10 -6
  2. package/dist/lib/browser/bundler/index.mjs.map +3 -3
  3. package/dist/lib/browser/{chunk-D2XO7XXY.mjs → chunk-LKYT2SAL.mjs} +176 -122
  4. package/dist/lib/browser/chunk-LKYT2SAL.mjs.map +7 -0
  5. package/dist/lib/browser/index.mjs +319 -199
  6. package/dist/lib/browser/index.mjs.map +4 -4
  7. package/dist/lib/browser/meta.json +1 -1
  8. package/dist/lib/browser/testing/index.mjs +11 -9
  9. package/dist/lib/browser/testing/index.mjs.map +3 -3
  10. package/dist/lib/node-esm/bundler/index.mjs +10 -6
  11. package/dist/lib/node-esm/bundler/index.mjs.map +3 -3
  12. package/dist/lib/node-esm/{chunk-Z4CJ62WS.mjs → chunk-NAQIKLZB.mjs} +176 -122
  13. package/dist/lib/node-esm/chunk-NAQIKLZB.mjs.map +7 -0
  14. package/dist/lib/node-esm/index.mjs +319 -199
  15. package/dist/lib/node-esm/index.mjs.map +4 -4
  16. package/dist/lib/node-esm/meta.json +1 -1
  17. package/dist/lib/node-esm/testing/index.mjs +11 -9
  18. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  19. package/dist/types/src/bundler/bundler.d.ts.map +1 -1
  20. package/dist/types/src/errors.d.ts +16 -16
  21. package/dist/types/src/examples/fib.d.ts.map +1 -1
  22. package/dist/types/src/examples/reply.d.ts.map +1 -1
  23. package/dist/types/src/examples/sleep.d.ts.map +1 -1
  24. package/dist/types/src/executor/executor.d.ts +3 -0
  25. package/dist/types/src/executor/executor.d.ts.map +1 -1
  26. package/dist/types/src/handler.d.ts +19 -4
  27. package/dist/types/src/handler.d.ts.map +1 -1
  28. package/dist/types/src/schema.d.ts +5 -5
  29. package/dist/types/src/schema.d.ts.map +1 -1
  30. package/dist/types/src/services/credentials.d.ts +6 -2
  31. package/dist/types/src/services/credentials.d.ts.map +1 -1
  32. package/dist/types/src/services/database.d.ts +6 -2
  33. package/dist/types/src/services/database.d.ts.map +1 -1
  34. package/dist/types/src/services/event-logger.d.ts +4 -1
  35. package/dist/types/src/services/event-logger.d.ts.map +1 -1
  36. package/dist/types/src/services/function-invocation-service.d.ts +28 -0
  37. package/dist/types/src/services/function-invocation-service.d.ts.map +1 -0
  38. package/dist/types/src/services/function-invocation-service.test.d.ts +2 -0
  39. package/dist/types/src/services/function-invocation-service.test.d.ts.map +1 -0
  40. package/dist/types/src/services/index.d.ts +4 -3
  41. package/dist/types/src/services/index.d.ts.map +1 -1
  42. package/dist/types/src/services/local-function-execution.d.ts +18 -9
  43. package/dist/types/src/services/local-function-execution.d.ts.map +1 -1
  44. package/dist/types/src/services/queues.d.ts +3 -1
  45. package/dist/types/src/services/queues.d.ts.map +1 -1
  46. package/dist/types/src/services/remote-function-execution-service.d.ts +11 -4
  47. package/dist/types/src/services/remote-function-execution-service.d.ts.map +1 -1
  48. package/dist/types/src/services/service-container.d.ts +2 -1
  49. package/dist/types/src/services/service-container.d.ts.map +1 -1
  50. package/dist/types/src/services/service-registry.d.ts +3 -1
  51. package/dist/types/src/services/service-registry.d.ts.map +1 -1
  52. package/dist/types/src/services/tracing.d.ts +5 -3
  53. package/dist/types/src/services/tracing.d.ts.map +1 -1
  54. package/dist/types/src/testing/layer.d.ts +6 -3
  55. package/dist/types/src/testing/layer.d.ts.map +1 -1
  56. package/dist/types/src/testing/logger.d.ts +1 -1
  57. package/dist/types/src/testing/logger.d.ts.map +1 -1
  58. package/dist/types/src/testing/services.d.ts +1 -1
  59. package/dist/types/src/testing/services.d.ts.map +1 -1
  60. package/dist/types/src/trace.d.ts +1 -1
  61. package/dist/types/src/trace.d.ts.map +1 -1
  62. package/dist/types/src/triggers/invocation-tracer.d.ts +3 -1
  63. package/dist/types/src/triggers/invocation-tracer.d.ts.map +1 -1
  64. package/dist/types/src/triggers/trigger-dispatcher.d.ts +7 -4
  65. package/dist/types/src/triggers/trigger-dispatcher.d.ts.map +1 -1
  66. package/dist/types/src/triggers/trigger-state-store.d.ts +5 -4
  67. package/dist/types/src/triggers/trigger-state-store.d.ts.map +1 -1
  68. package/dist/types/src/types.d.ts +49 -30
  69. package/dist/types/src/types.d.ts.map +1 -1
  70. package/dist/types/src/url.d.ts +1 -1
  71. package/dist/types/src/url.d.ts.map +1 -1
  72. package/dist/types/tsconfig.tsbuildinfo +1 -1
  73. package/package.json +27 -36
  74. package/src/bundler/bundler.ts +7 -3
  75. package/src/examples/fib.ts +4 -2
  76. package/src/examples/reply.ts +5 -2
  77. package/src/examples/sleep.ts +4 -2
  78. package/src/executor/executor.ts +5 -1
  79. package/src/handler.ts +33 -9
  80. package/src/schema.ts +5 -2
  81. package/src/services/credentials.ts +9 -2
  82. package/src/services/database.ts +6 -2
  83. package/src/services/event-logger.ts +4 -1
  84. package/src/services/function-invocation-service.test.ts +81 -0
  85. package/src/services/function-invocation-service.ts +84 -0
  86. package/src/services/index.ts +4 -3
  87. package/src/services/local-function-execution.ts +65 -26
  88. package/src/services/queues.ts +3 -1
  89. package/src/services/remote-function-execution-service.ts +38 -21
  90. package/src/services/service-container.ts +2 -1
  91. package/src/services/service-registry.test.ts +4 -1
  92. package/src/services/service-registry.ts +7 -3
  93. package/src/services/tracing.ts +17 -14
  94. package/src/testing/layer.ts +10 -7
  95. package/src/testing/logger.ts +2 -1
  96. package/src/testing/persist-database.test.ts +4 -4
  97. package/src/testing/services.ts +1 -1
  98. package/src/trace.ts +2 -2
  99. package/src/triggers/invocation-tracer.ts +3 -1
  100. package/src/triggers/trigger-dispatcher.test.ts +29 -16
  101. package/src/triggers/trigger-dispatcher.ts +29 -8
  102. package/src/triggers/trigger-state-store.ts +6 -5
  103. package/src/types.ts +30 -12
  104. package/src/url.ts +1 -1
  105. package/dist/lib/browser/chunk-D2XO7XXY.mjs.map +0 -7
  106. package/dist/lib/node-esm/chunk-Z4CJ62WS.mjs.map +0 -7
@@ -1 +1 @@
1
- {"inputs":{"src/bundler/bundler.ts":{"bytes":33439,"imports":[{"path":"@effect/platform","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"esbuild-wasm","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/bundler/index.ts":{"bytes":457,"imports":[{"path":"src/bundler/bundler.ts","kind":"import-statement","original":"./bundler"}],"format":"esm"},"src/edge/functions.ts":{"bytes":6996,"imports":[{"path":"@dxos/client/edge","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/edge/index.ts":{"bytes":864,"imports":[{"path":"src/edge/functions.ts","kind":"import-statement","original":"./functions"}],"format":"esm"},"src/errors.ts":{"bytes":3093,"imports":[{"path":"@dxos/errors","kind":"import-statement","external":true}],"format":"esm"},"src/schema.ts":{"bytes":6542,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"format":"esm"},"src/handler.ts":{"bytes":15811,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"src/schema.ts","kind":"import-statement","original":"./schema"}],"format":"esm"},"src/types.ts":{"bytes":20376,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"src/schema.ts","kind":"import-statement","original":"./schema"}],"format":"esm"},"src/trace.ts":{"bytes":16919,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/url.ts":{"bytes":5797,"imports":[],"format":"esm"},"src/services/database.ts":{"bytes":16506,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true}],"format":"esm"},"src/services/queues.ts":{"bytes":6886,"imports":[{"path":"effect","kind":"import-statement","external":true}],"format":"esm"},"src/services/credentials.ts":{"bytes":15123,"imports":[{"path":"@effect/platform","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/services/database.ts","kind":"import-statement","original":"./database"}],"format":"esm"},"src/services/tracing.ts":{"bytes":12645,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"format":"esm"},"src/services/event-logger.ts":{"bytes":12016,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/services/tracing.ts","kind":"import-statement","original":"./tracing"}],"format":"esm"},"src/services/remote-function-execution-service.ts":{"bytes":5591,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"src/url.ts","kind":"import-statement","original":"../url"}],"format":"esm"},"src/services/service-container.ts":{"bytes":12560,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/services/credentials.ts","kind":"import-statement","original":"./credentials"},{"path":"src/services/database.ts","kind":"import-statement","original":"./database"},{"path":"src/services/event-logger.ts","kind":"import-statement","original":"./event-logger"},{"path":"src/services/queues.ts","kind":"import-statement","original":"./queues"},{"path":"src/services/remote-function-execution-service.ts","kind":"import-statement","original":"./remote-function-execution-service"},{"path":"src/services/tracing.ts","kind":"import-statement","original":"./tracing"}],"format":"esm"},"src/services/local-function-execution.ts":{"bytes":13322,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"src/errors.ts","kind":"import-statement","original":"../errors"}],"format":"esm"},"src/services/index.ts":{"bytes":1217,"imports":[{"path":"src/services/database.ts","kind":"import-statement","original":"./database"},{"path":"src/services/queues.ts","kind":"import-statement","original":"./queues"},{"path":"src/services/service-container.ts","kind":"import-statement","original":"./service-container"},{"path":"src/services/credentials.ts","kind":"import-statement","original":"./credentials"},{"path":"src/services/tracing.ts","kind":"import-statement","original":"./tracing"},{"path":"src/services/event-logger.ts","kind":"import-statement","original":"./event-logger"},{"path":"src/services/remote-function-execution-service.ts","kind":"import-statement","original":"./remote-function-execution-service"},{"path":"src/services/local-function-execution.ts","kind":"import-statement","original":"./local-function-execution"}],"format":"esm"},"src/triggers/invocation-tracer.ts":{"bytes":11680,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"src/services/index.ts","kind":"import-statement","original":"../services"},{"path":"src/trace.ts","kind":"import-statement","original":"../trace"}],"format":"esm"},"src/triggers/input-builder.ts":{"bytes":3617,"imports":[],"format":"esm"},"src/triggers/trigger-state-store.ts":{"bytes":7894,"imports":[{"path":"@effect/platform","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"src/errors.ts","kind":"import-statement","original":"../errors"}],"format":"esm"},"src/triggers/trigger-dispatcher.ts":{"bytes":58723,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"src/handler.ts","kind":"import-statement","original":"../handler"},{"path":"src/schema.ts","kind":"import-statement","original":"../schema"},{"path":"src/services/index.ts","kind":"import-statement","original":"../services"},{"path":"src/services/local-function-execution.ts","kind":"import-statement","original":"../services/local-function-execution"},{"path":"src/types.ts","kind":"import-statement","original":"../types"},{"path":"src/triggers/input-builder.ts","kind":"import-statement","original":"./input-builder"},{"path":"src/triggers/invocation-tracer.ts","kind":"import-statement","original":"./invocation-tracer"},{"path":"src/triggers/trigger-state-store.ts","kind":"import-statement","original":"./trigger-state-store"},{"path":"src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/triggers/index.ts":{"bytes":713,"imports":[{"path":"src/triggers/invocation-tracer.ts","kind":"import-statement","original":"./invocation-tracer"},{"path":"src/triggers/trigger-dispatcher.ts","kind":"import-statement","original":"./trigger-dispatcher"},{"path":"src/triggers/trigger-state-store.ts","kind":"import-statement","original":"./trigger-state-store"}],"format":"esm"},"src/executor/executor.ts":{"bytes":5681,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true}],"format":"esm"},"src/executor/index.ts":{"bytes":459,"imports":[{"path":"src/executor/executor.ts","kind":"import-statement","original":"./executor"}],"format":"esm"},"src/examples/fib.ts":{"bytes":3071,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"src/handler.ts","kind":"import-statement","original":"../handler"}],"format":"esm"},"src/examples/reply.ts":{"bytes":1876,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"src/handler.ts","kind":"import-statement","original":"../handler"}],"format":"esm"},"src/examples/sleep.ts":{"bytes":2411,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"src/handler.ts","kind":"import-statement","original":"../handler"}],"format":"esm"},"src/examples/index.ts":{"bytes":847,"imports":[{"path":"src/examples/fib.ts","kind":"import-statement","original":"./fib"},{"path":"src/examples/reply.ts","kind":"import-statement","original":"./reply"},{"path":"src/examples/sleep.ts","kind":"import-statement","original":"./sleep"}],"format":"esm"},"src/index.ts":{"bytes":1302,"imports":[{"path":"src/errors.ts","kind":"import-statement","original":"./errors"},{"path":"src/handler.ts","kind":"import-statement","original":"./handler"},{"path":"src/schema.ts","kind":"import-statement","original":"./schema"},{"path":"src/trace.ts","kind":"import-statement","original":"./trace"},{"path":"src/types.ts","kind":"import-statement","original":"./types"},{"path":"src/url.ts","kind":"import-statement","original":"./url"},{"path":"src/triggers/index.ts","kind":"import-statement","original":"./triggers"},{"path":"src/services/index.ts","kind":"import-statement","original":"./services"},{"path":"src/executor/index.ts","kind":"import-statement","original":"./executor"},{"path":"src/examples/index.ts","kind":"import-statement","original":"./examples"}],"format":"esm"},"src/testing/logger.ts":{"bytes":1635,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/services/index.ts","kind":"import-statement","original":"../services"}],"format":"esm"},"src/testing/services.ts":{"bytes":6645,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"src/services/index.ts","kind":"import-statement","original":"../services"},{"path":"src/testing/logger.ts","kind":"import-statement","original":"./logger"}],"format":"esm"},"src/testing/layer.ts":{"bytes":13682,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo-db/testing","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/kv-store/testing","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/services/index.ts","kind":"import-statement","original":"../services"}],"format":"esm"},"src/testing/index.ts":{"bytes":539,"imports":[{"path":"src/testing/services.ts","kind":"import-statement","original":"./services"},{"path":"src/testing/layer.ts","kind":"import-statement","original":"./layer"}],"format":"esm"}},"outputs":{"dist/lib/browser/bundler/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":16005},"dist/lib/browser/bundler/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@effect/platform","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"esbuild-wasm","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["Bundler","initializeBundler"],"entryPoint":"src/bundler/index.ts","inputs":{"src/bundler/bundler.ts":{"bytesInOutput":8084},"src/bundler/index.ts":{"bytesInOutput":0}},"bytes":8221},"dist/lib/browser/edge/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3513},"dist/lib/browser/edge/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@dxos/client/edge","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["incrementSemverPatch","publicKeyToDid","uploadWorkerFunction"],"entryPoint":"src/edge/index.ts","inputs":{"src/edge/functions.ts":{"bytesInOutput":1853},"src/edge/index.ts":{"bytesInOutput":0}},"bytes":2023},"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":86538},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-D2XO7XXY.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@dxos/errors","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@effect/platform","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true}],"exports":["ComputeEvent","ComputeEventLogger","ComputeEventPayload","ConfiguredCredentialsService","ContextQueueService","CredentialsService","DatabaseService","EmailTriggerOutput","FUNCTIONS_META_KEY","FUNCTIONS_PRESET_META_KEY","FUNCTION_TYPES","FunctionDefinition","FunctionError","FunctionExecutor","FunctionImplementationResolver","FunctionManifestSchema","FunctionNotFoundError","FunctionTrigger","FunctionType","InvocationOutcome","InvocationTraceEndEvent","InvocationTraceEventType","InvocationTraceStartEvent","InvocationTracer","LocalFunctionExecutionService","MESSAGE_PROPERTY_TOOL_CALL_ID","QueueService","QueueTriggerOutput","RemoteFunctionExecutionService","SERVICE_TAGS","ScriptType","ServiceContainer","ServiceNotAvailableError","SubscriptionTriggerOutput","TimerTriggerOutput","TraceEvent","TraceEventException","TraceEventLog","TracingService","TriggerDispatcher","TriggerKinds","TriggerSchema","TriggerState","TriggerStateNotFoundError","TriggerStateStore","WebhookTriggerOutput","createDefectLogger","createEventLogger","createInvocationSpans","defineFunction","deserializeFunction","exampleFunctions","getInvocationUrl","getUserFunctionIdInMetadata","logCustomEvent","serializeFunction","setUserFunctionIdInMetadata","withAuthorization"],"entryPoint":"src/index.ts","inputs":{"src/errors.ts":{"bytesInOutput":744},"src/index.ts":{"bytesInOutput":0},"src/handler.ts":{"bytesInOutput":2681},"src/schema.ts":{"bytesInOutput":1634},"src/trace.ts":{"bytesInOutput":4274},"src/types.ts":{"bytesInOutput":4306},"src/triggers/invocation-tracer.ts":{"bytesInOutput":2734},"src/services/local-function-execution.ts":{"bytesInOutput":3027},"src/triggers/trigger-dispatcher.ts":{"bytesInOutput":14045},"src/triggers/input-builder.ts":{"bytesInOutput":770},"src/triggers/trigger-state-store.ts":{"bytesInOutput":2066},"src/executor/executor.ts":{"bytesInOutput":1375},"src/examples/index.ts":{"bytesInOutput":145},"src/examples/fib.ts":{"bytesInOutput":667},"src/examples/reply.ts":{"bytesInOutput":377},"src/examples/sleep.ts":{"bytesInOutput":518}},"bytes":41863},"dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":11667},"dist/lib/browser/testing/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-D2XO7XXY.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo-db/testing","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/kv-store/testing","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["TestDatabaseLayer","createTestServices","testStoragePath"],"entryPoint":"src/testing/index.ts","inputs":{"src/testing/services.ts":{"bytesInOutput":904},"src/testing/logger.ts":{"bytesInOutput":201},"src/testing/index.ts":{"bytesInOutput":0},"src/testing/layer.ts":{"bytesInOutput":2861}},"bytes":4361},"dist/lib/browser/chunk-D2XO7XXY.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":45396},"dist/lib/browser/chunk-D2XO7XXY.mjs":{"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@effect/platform","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["ComputeEvent","ComputeEventLogger","ComputeEventPayload","ConfiguredCredentialsService","ContextQueueService","CredentialsService","DatabaseService","FUNCTIONS_META_KEY","FUNCTIONS_PRESET_META_KEY","MESSAGE_PROPERTY_TOOL_CALL_ID","QueueService","RemoteFunctionExecutionService","SERVICE_TAGS","ServiceContainer","TracingService","createDefectLogger","createEventLogger","getInvocationUrl","getUserFunctionIdInMetadata","logCustomEvent","setUserFunctionIdInMetadata","withAuthorization"],"inputs":{"src/url.ts":{"bytesInOutput":1077},"src/services/database.ts":{"bytesInOutput":3422},"src/services/queues.ts":{"bytesInOutput":1543},"src/services/credentials.ts":{"bytesInOutput":3586},"src/services/tracing.ts":{"bytesInOutput":2903},"src/services/event-logger.ts":{"bytesInOutput":3046},"src/services/remote-function-execution-service.ts":{"bytesInOutput":1461},"src/services/service-container.ts":{"bytesInOutput":2779}},"bytes":20637},"dist/lib/browser/chunk-J5LGTIGS.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/chunk-J5LGTIGS.mjs":{"imports":[],"exports":["__export"],"inputs":{},"bytes":235}}}
1
+ {"inputs":{"src/bundler/bundler.ts":{"bytes":33985,"imports":[{"path":"@effect/platform/FetchHttpClient","kind":"import-statement","external":true},{"path":"@effect/platform/HttpClient","kind":"import-statement","external":true},{"path":"effect/Duration","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Function","kind":"import-statement","external":true},{"path":"effect/Schedule","kind":"import-statement","external":true},{"path":"esbuild-wasm","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/bundler/index.ts":{"bytes":457,"imports":[{"path":"src/bundler/bundler.ts","kind":"import-statement","original":"./bundler"}],"format":"esm"},"src/edge/functions.ts":{"bytes":6996,"imports":[{"path":"@dxos/client/edge","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/edge/index.ts":{"bytes":864,"imports":[{"path":"src/edge/functions.ts","kind":"import-statement","original":"./functions"}],"format":"esm"},"src/errors.ts":{"bytes":3093,"imports":[{"path":"@dxos/errors","kind":"import-statement","external":true}],"format":"esm"},"src/schema.ts":{"bytes":6722,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"format":"esm"},"src/url.ts":{"bytes":5801,"imports":[],"format":"esm"},"src/handler.ts":{"bytes":18117,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"src/schema.ts","kind":"import-statement","original":"./schema"},{"path":"src/url.ts","kind":"import-statement","original":"./url"}],"format":"esm"},"src/types.ts":{"bytes":21642,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"effect/SchemaAST","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"src/schema.ts","kind":"import-statement","original":"./schema"}],"format":"esm"},"src/trace.ts":{"bytes":16941,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/services/database.ts":{"bytes":16853,"imports":[{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true}],"format":"esm"},"src/services/credentials.ts":{"bytes":15642,"imports":[{"path":"@effect/platform/HttpClient","kind":"import-statement","external":true},{"path":"@effect/platform/HttpClientRequest","kind":"import-statement","external":true},{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"effect/Redacted","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/services/database.ts","kind":"import-statement","original":"./database"}],"format":"esm"},"src/services/tracing.ts":{"bytes":12915,"imports":[{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"format":"esm"},"src/services/event-logger.ts":{"bytes":12315,"imports":[{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/services/tracing.ts","kind":"import-statement","original":"./tracing"}],"format":"esm"},"src/services/queues.ts":{"bytes":7092,"imports":[{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true}],"format":"esm"},"src/services/remote-function-execution-service.ts":{"bytes":7688,"imports":[{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"src/errors.ts","kind":"import-statement","original":"../errors"},{"path":"src/url.ts","kind":"import-statement","original":"../url"}],"format":"esm"},"src/services/local-function-execution.ts":{"bytes":19147,"imports":[{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/errors.ts","kind":"import-statement","original":"../errors"},{"path":"src/services/credentials.ts","kind":"import-statement","original":"./credentials"},{"path":"src/services/database.ts","kind":"import-statement","original":"./database"},{"path":"src/services/queues.ts","kind":"import-statement","original":"./queues"},{"path":"src/services/remote-function-execution-service.ts","kind":"import-statement","original":"./remote-function-execution-service"}],"format":"esm"},"src/services/function-invocation-service.ts":{"bytes":9583,"imports":[{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"src/services/credentials.ts","kind":"import-statement","original":"./credentials"},{"path":"src/services/database.ts","kind":"import-statement","original":"./database"},{"path":"src/services/local-function-execution.ts","kind":"import-statement","original":"./local-function-execution"},{"path":"src/services/queues.ts","kind":"import-statement","original":"./queues"},{"path":"src/services/remote-function-execution-service.ts","kind":"import-statement","original":"./remote-function-execution-service"}],"format":"esm"},"src/services/service-container.ts":{"bytes":12615,"imports":[{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/services/credentials.ts","kind":"import-statement","original":"./credentials"},{"path":"src/services/database.ts","kind":"import-statement","original":"./database"},{"path":"src/services/event-logger.ts","kind":"import-statement","original":"./event-logger"},{"path":"src/services/queues.ts","kind":"import-statement","original":"./queues"},{"path":"src/services/remote-function-execution-service.ts","kind":"import-statement","original":"./remote-function-execution-service"},{"path":"src/services/tracing.ts","kind":"import-statement","original":"./tracing"}],"format":"esm"},"src/services/index.ts":{"bytes":1352,"imports":[{"path":"src/services/credentials.ts","kind":"import-statement","original":"./credentials"},{"path":"src/services/database.ts","kind":"import-statement","original":"./database"},{"path":"src/services/event-logger.ts","kind":"import-statement","original":"./event-logger"},{"path":"src/services/function-invocation-service.ts","kind":"import-statement","original":"./function-invocation-service"},{"path":"src/services/local-function-execution.ts","kind":"import-statement","original":"./local-function-execution"},{"path":"src/services/queues.ts","kind":"import-statement","original":"./queues"},{"path":"src/services/service-container.ts","kind":"import-statement","original":"./service-container"},{"path":"src/services/tracing.ts","kind":"import-statement","original":"./tracing"},{"path":"src/services/remote-function-execution-service.ts","kind":"import-statement","original":"./remote-function-execution-service"}],"format":"esm"},"src/triggers/invocation-tracer.ts":{"bytes":11886,"imports":[{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"src/services/index.ts","kind":"import-statement","original":"../services"},{"path":"src/trace.ts","kind":"import-statement","original":"../trace"}],"format":"esm"},"src/triggers/input-builder.ts":{"bytes":3617,"imports":[],"format":"esm"},"src/triggers/trigger-state-store.ts":{"bytes":8074,"imports":[{"path":"@effect/platform/KeyValueStore","kind":"import-statement","external":true},{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"src/errors.ts","kind":"import-statement","original":"../errors"}],"format":"esm"},"src/triggers/trigger-dispatcher.ts":{"bytes":60085,"imports":[{"path":"effect/Cause","kind":"import-statement","external":true},{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Cron","kind":"import-statement","external":true},{"path":"effect/Duration","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Either","kind":"import-statement","external":true},{"path":"effect/Exit","kind":"import-statement","external":true},{"path":"effect/Fiber","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"effect/Record","kind":"import-statement","external":true},{"path":"effect/Schedule","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"src/handler.ts","kind":"import-statement","original":"../handler"},{"path":"src/schema.ts","kind":"import-statement","original":"../schema"},{"path":"src/services/index.ts","kind":"import-statement","original":"../services"},{"path":"src/types.ts","kind":"import-statement","original":"../types"},{"path":"src/triggers/input-builder.ts","kind":"import-statement","original":"./input-builder"},{"path":"src/triggers/invocation-tracer.ts","kind":"import-statement","original":"./invocation-tracer"},{"path":"src/triggers/trigger-state-store.ts","kind":"import-statement","original":"./trigger-state-store"},{"path":"src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/triggers/index.ts":{"bytes":713,"imports":[{"path":"src/triggers/invocation-tracer.ts","kind":"import-statement","original":"./invocation-tracer"},{"path":"src/triggers/trigger-dispatcher.ts","kind":"import-statement","original":"./trigger-dispatcher"},{"path":"src/triggers/trigger-state-store.ts","kind":"import-statement","original":"./trigger-state-store"}],"format":"esm"},"src/executor/executor.ts":{"bytes":5937,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true}],"format":"esm"},"src/executor/index.ts":{"bytes":459,"imports":[{"path":"src/executor/executor.ts","kind":"import-statement","original":"./executor"}],"format":"esm"},"src/examples/fib.ts":{"bytes":3254,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"src/handler.ts","kind":"import-statement","original":"../handler"}],"format":"esm"},"src/examples/reply.ts":{"bytes":2145,"imports":[{"path":"effect/Console","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"src/handler.ts","kind":"import-statement","original":"../handler"}],"format":"esm"},"src/examples/sleep.ts":{"bytes":2586,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"src/handler.ts","kind":"import-statement","original":"../handler"}],"format":"esm"},"src/examples/index.ts":{"bytes":847,"imports":[{"path":"src/examples/fib.ts","kind":"import-statement","original":"./fib"},{"path":"src/examples/reply.ts","kind":"import-statement","original":"./reply"},{"path":"src/examples/sleep.ts","kind":"import-statement","original":"./sleep"}],"format":"esm"},"src/index.ts":{"bytes":1302,"imports":[{"path":"src/errors.ts","kind":"import-statement","original":"./errors"},{"path":"src/handler.ts","kind":"import-statement","original":"./handler"},{"path":"src/schema.ts","kind":"import-statement","original":"./schema"},{"path":"src/trace.ts","kind":"import-statement","original":"./trace"},{"path":"src/types.ts","kind":"import-statement","original":"./types"},{"path":"src/url.ts","kind":"import-statement","original":"./url"},{"path":"src/triggers/index.ts","kind":"import-statement","original":"./triggers"},{"path":"src/services/index.ts","kind":"import-statement","original":"./services"},{"path":"src/executor/index.ts","kind":"import-statement","original":"./executor"},{"path":"src/examples/index.ts","kind":"import-statement","original":"./examples"}],"format":"esm"},"src/testing/logger.ts":{"bytes":1695,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/services/index.ts","kind":"import-statement","original":"../services"}],"format":"esm"},"src/testing/services.ts":{"bytes":6657,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"src/services/index.ts","kind":"import-statement","original":"../services"},{"path":"src/testing/logger.ts","kind":"import-statement","original":"./logger"}],"format":"esm"},"src/testing/layer.ts":{"bytes":14046,"imports":[{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"@dxos/echo-db/testing","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/kv-store/testing","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/services/index.ts","kind":"import-statement","original":"../services"}],"format":"esm"},"src/testing/index.ts":{"bytes":539,"imports":[{"path":"src/testing/services.ts","kind":"import-statement","original":"./services"},{"path":"src/testing/layer.ts","kind":"import-statement","original":"./layer"}],"format":"esm"}},"outputs":{"dist/lib/browser/bundler/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":16185},"dist/lib/browser/bundler/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@effect/platform/FetchHttpClient","kind":"import-statement","external":true},{"path":"@effect/platform/HttpClient","kind":"import-statement","external":true},{"path":"effect/Duration","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Function","kind":"import-statement","external":true},{"path":"effect/Schedule","kind":"import-statement","external":true},{"path":"esbuild-wasm","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["Bundler","initializeBundler"],"entryPoint":"src/bundler/index.ts","inputs":{"src/bundler/bundler.ts":{"bytesInOutput":8274},"src/bundler/index.ts":{"bytesInOutput":0}},"bytes":8411},"dist/lib/browser/edge/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3513},"dist/lib/browser/edge/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@dxos/client/edge","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["incrementSemverPatch","publicKeyToDid","uploadWorkerFunction"],"entryPoint":"src/edge/index.ts","inputs":{"src/edge/functions.ts":{"bytesInOutput":1853},"src/edge/index.ts":{"bytesInOutput":0}},"bytes":2023},"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93857},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-LKYT2SAL.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"effect/SchemaAST","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"effect/Cause","kind":"import-statement","external":true},{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Cron","kind":"import-statement","external":true},{"path":"effect/Duration","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Either","kind":"import-statement","external":true},{"path":"effect/Exit","kind":"import-statement","external":true},{"path":"effect/Fiber","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"effect/Record","kind":"import-statement","external":true},{"path":"effect/Schedule","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@effect/platform/KeyValueStore","kind":"import-statement","external":true},{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"effect/Console","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true}],"exports":["ComputeEvent","ComputeEventLogger","ComputeEventPayload","ConfiguredCredentialsService","ContextQueueService","CredentialsService","DatabaseService","EmailTriggerOutput","FUNCTIONS_META_KEY","FUNCTIONS_PRESET_META_KEY","FUNCTION_TYPES","FunctionDefinition","FunctionError","FunctionExecutor","FunctionImplementationResolver","FunctionInvocationService","FunctionManifestSchema","FunctionNotFoundError","FunctionTrigger","FunctionType","InvocationOutcome","InvocationTraceEndEvent","InvocationTraceEventType","InvocationTraceStartEvent","InvocationTracer","LocalFunctionExecutionService","MESSAGE_PROPERTY_TOOL_CALL_ID","QueueService","QueueTriggerOutput","RemoteFunctionExecutionService","SERVICE_TAGS","ScriptType","ServiceContainer","ServiceNotAvailableError","SubscriptionTriggerOutput","TimerTriggerOutput","TraceEvent","TraceEventException","TraceEventLog","TracingService","TriggerDispatcher","TriggerKinds","TriggerSchema","TriggerState","TriggerStateNotFoundError","TriggerStateStore","WebhookTriggerOutput","createDefectLogger","createEventLogger","createInvocationSpans","defineFunction","deserializeFunction","exampleFunctions","getInvocationUrl","getUserFunctionIdInMetadata","logCustomEvent","serializeFunction","setUserFunctionIdInMetadata","withAuthorization"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/handler.ts":{"bytesInOutput":3032},"src/schema.ts":{"bytesInOutput":1644},"src/trace.ts":{"bytesInOutput":4278},"src/types.ts":{"bytesInOutput":4679},"src/triggers/invocation-tracer.ts":{"bytesInOutput":2778},"src/services/function-invocation-service.ts":{"bytesInOutput":1950},"src/services/local-function-execution.ts":{"bytesInOutput":4384},"src/triggers/trigger-dispatcher.ts":{"bytesInOutput":14489},"src/triggers/input-builder.ts":{"bytesInOutput":770},"src/triggers/trigger-state-store.ts":{"bytesInOutput":2106},"src/executor/executor.ts":{"bytesInOutput":1396},"src/examples/index.ts":{"bytesInOutput":145},"src/examples/fib.ts":{"bytesInOutput":708},"src/examples/reply.ts":{"bytesInOutput":448},"src/examples/sleep.ts":{"bytesInOutput":558}},"bytes":46071},"dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":11761},"dist/lib/browser/testing/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-LKYT2SAL.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"@dxos/echo-db/testing","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/kv-store/testing","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["TestDatabaseLayer","createTestServices","testStoragePath"],"entryPoint":"src/testing/index.ts","inputs":{"src/testing/services.ts":{"bytesInOutput":904},"src/testing/logger.ts":{"bytesInOutput":209},"src/testing/index.ts":{"bytesInOutput":0},"src/testing/layer.ts":{"bytesInOutput":2955}},"bytes":4463},"dist/lib/browser/chunk-LKYT2SAL.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":47938},"dist/lib/browser/chunk-LKYT2SAL.mjs":{"imports":[{"path":"@dxos/errors","kind":"import-statement","external":true},{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@effect/platform/HttpClient","kind":"import-statement","external":true},{"path":"@effect/platform/HttpClientRequest","kind":"import-statement","external":true},{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"effect/Redacted","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["ComputeEvent","ComputeEventLogger","ComputeEventPayload","ConfiguredCredentialsService","ContextQueueService","CredentialsService","DatabaseService","FUNCTIONS_META_KEY","FUNCTIONS_PRESET_META_KEY","FunctionError","FunctionNotFoundError","MESSAGE_PROPERTY_TOOL_CALL_ID","QueueService","RemoteFunctionExecutionService","SERVICE_TAGS","ServiceContainer","ServiceNotAvailableError","TracingService","TriggerStateNotFoundError","createDefectLogger","createEventLogger","getInvocationUrl","getUserFunctionIdInMetadata","logCustomEvent","setUserFunctionIdInMetadata","withAuthorization"],"inputs":{"src/errors.ts":{"bytesInOutput":744},"src/url.ts":{"bytesInOutput":1077},"src/services/database.ts":{"bytesInOutput":3539},"src/services/credentials.ts":{"bytesInOutput":3741},"src/services/tracing.ts":{"bytesInOutput":3014},"src/services/event-logger.ts":{"bytesInOutput":3133},"src/services/queues.ts":{"bytesInOutput":1597},"src/services/remote-function-execution-service.ts":{"bytesInOutput":1991},"src/services/service-container.ts":{"bytesInOutput":2787}},"bytes":22560},"dist/lib/browser/chunk-J5LGTIGS.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/chunk-J5LGTIGS.mjs":{"imports":[],"exports":["__export"],"inputs":{},"bytes":235}}}
@@ -4,14 +4,14 @@ import {
4
4
  QueueService,
5
5
  ServiceContainer,
6
6
  createEventLogger
7
- } from "../chunk-D2XO7XXY.mjs";
7
+ } from "../chunk-LKYT2SAL.mjs";
8
8
  import "../chunk-J5LGTIGS.mjs";
9
9
 
10
10
  // src/testing/services.ts
11
11
  import { assertArgument } from "@dxos/invariant";
12
12
 
13
13
  // src/testing/logger.ts
14
- import { Effect } from "effect";
14
+ import * as Effect from "effect/Effect";
15
15
  import { LogLevel } from "@dxos/log";
16
16
  var noopLogger = {
17
17
  log: () => Effect.succeed(void 0),
@@ -41,18 +41,20 @@ var createCredentialsService = (credentials) => {
41
41
  };
42
42
 
43
43
  // src/testing/layer.ts
44
- import { Context, Effect as Effect2, Layer } from "effect";
44
+ import * as Context from "effect/Context";
45
+ import * as Effect2 from "effect/Effect";
46
+ import * as Layer from "effect/Layer";
45
47
  import { EchoTestBuilder } from "@dxos/echo-db/testing";
46
- import { accuireReleaseResource } from "@dxos/effect";
48
+ import { acquireReleaseResource } from "@dxos/effect";
47
49
  import { PublicKey } from "@dxos/keys";
48
50
  import { createTestLevel } from "@dxos/kv-store/testing";
49
51
  import { log } from "@dxos/log";
50
52
  var __dxlog_file = "/__w/dxos/dxos/packages/core/functions/src/testing/layer.ts";
51
- var testBuilder = accuireReleaseResource(() => new EchoTestBuilder());
53
+ var testBuilder = acquireReleaseResource(() => new EchoTestBuilder());
52
54
  var testStoragePath = ({ name = PublicKey.random().toHex() }) => {
53
55
  return `/tmp/dxos-${name}`;
54
56
  };
55
- var TestDatabaseLayer = ({ indexing, types, storagePath, onInit } = {}) => Layer.scopedContext(Effect2.gen(function* () {
57
+ var TestDatabaseLayer = ({ indexing, types, spaceKey, storagePath, onInit } = {}) => Layer.scopedContext(Effect2.gen(function* () {
56
58
  const builder = yield* testBuilder;
57
59
  let kv;
58
60
  if (storagePath) {
@@ -84,12 +86,12 @@ var TestDatabaseLayer = ({ indexing, types, storagePath, onInit } = {}) => Layer
84
86
  testMetadata
85
87
  }, {
86
88
  F: __dxlog_file,
87
- L: 60,
89
+ L: 63,
88
90
  S: this,
89
91
  C: (f, a) => f(...a)
90
92
  });
91
93
  if (!testMetadata) {
92
- const key = PublicKey.random();
94
+ const key = spaceKey ?? PublicKey.random();
93
95
  db = yield* Effect2.promise(() => peer.createDatabase(key));
94
96
  queues = peer.client.constructQueueFactory(db.spaceId);
95
97
  yield* Effect2.promise(() => kv.put("test-metadata", {
@@ -108,7 +110,7 @@ var TestDatabaseLayer = ({ indexing, types, storagePath, onInit } = {}) => Layer
108
110
  queues = peer.client.constructQueueFactory(db.spaceId);
109
111
  }
110
112
  } else {
111
- db = yield* Effect2.promise(() => peer.createDatabase());
113
+ db = yield* Effect2.promise(() => peer.createDatabase(spaceKey));
112
114
  queues = peer.client.constructQueueFactory(db.spaceId);
113
115
  if (onInit) {
114
116
  yield* onInit().pipe(Effect2.provideService(DatabaseService, DatabaseService.make(db)), Effect2.provideService(QueueService, QueueService.make(queues, void 0)));
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/testing/services.ts", "../../../../src/testing/logger.ts", "../../../../src/testing/layer.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Context } from 'effect';\n\nimport type { Space } from '@dxos/client/echo';\nimport type { EchoDatabase, QueueFactory } from '@dxos/echo-db';\nimport { assertArgument } from '@dxos/invariant';\n\nimport {\n type ComputeEventLogger,\n ConfiguredCredentialsService,\n type CredentialsService,\n DatabaseService,\n QueueService,\n ServiceContainer,\n type ServiceCredential,\n type TracingService,\n} from '../services';\n\nimport { consoleLogger, noopLogger } from './logger';\n\n// TODO(burdon): Factor out.\nexport type OneOf<T> = {\n [K in keyof T]: { [P in K]: T[P] } & { [P in Exclude<keyof T, K>]?: never };\n}[keyof T];\n\nexport type AiServiceProvider = 'dev' | 'edge' | 'ollama' | 'lmstudio';\n\nexport type TestServiceOptions = {\n /**\n * AI service configuration.\n */\n ai?: any;\n\n /**\n * Credentials service configuration.\n */\n credentials?: OneOf<{\n /**\n * Predefined credentials list.\n */\n services?: ServiceCredential[];\n\n /**\n * Custom credentials service.\n */\n service?: Context.Tag.Service<CredentialsService>;\n }>;\n\n /**\n * Database configuration.\n */\n db?: EchoDatabase;\n\n /**\n * Gets database and queue services from the space.\n * Exclusive with: `db`, `queues`\n */\n space?: Space;\n\n /**\n * Logging configuration.\n */\n logging?: {\n enabled?: boolean;\n logger?: Context.Tag.Service<ComputeEventLogger>;\n };\n\n /**\n * Queue service configuration.\n */\n queues?: QueueFactory;\n\n tracing?: {\n service?: Context.Tag.Service<TracingService>;\n };\n};\n\n/**\n * @deprecated\n */\nexport const createTestServices = ({\n ai,\n credentials,\n db,\n logging,\n queues,\n space,\n tracing,\n}: TestServiceOptions = {}): ServiceContainer => {\n assertArgument(!(!!space && (!!db || !!queues)), 'space', 'space can be provided only if db and queues are not');\n\n return new ServiceContainer().setServices({\n // ai: createAiService(ai),\n credentials: createCredentialsService(credentials),\n database: space || db ? DatabaseService.make(space?.db || db!) : undefined,\n eventLogger: (logging?.logger ?? logging?.enabled) ? consoleLogger : noopLogger,\n queues: space || queues ? QueueService.make(space?.queues || queues!, undefined) : undefined,\n tracing: tracing?.service,\n });\n};\n\nconst createCredentialsService = (\n credentials: TestServiceOptions['credentials'] | undefined,\n): Context.Tag.Service<CredentialsService> | undefined => {\n if (credentials?.services) {\n return new ConfiguredCredentialsService(credentials.services);\n }\n\n if (credentials?.service) {\n return credentials.service;\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Context, Effect } from 'effect';\n\nimport { LogLevel } from '@dxos/log';\n\nimport { type ComputeEventLogger, createEventLogger } from '../services';\n\nexport const noopLogger: Context.Tag.Service<ComputeEventLogger> = {\n log: () => Effect.succeed(undefined),\n nodeId: undefined,\n};\n\nexport const consoleLogger: Context.Tag.Service<ComputeEventLogger> = createEventLogger(LogLevel.INFO);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport type { Schema } from 'effect';\nimport { Context, Effect, Layer } from 'effect';\n\nimport type { EchoDatabaseImpl, QueueFactory } from '@dxos/echo-db';\nimport { EchoTestBuilder } from '@dxos/echo-db/testing';\nimport type { EchoHostIndexingConfig } from '@dxos/echo-pipeline';\nimport { accuireReleaseResource } from '@dxos/effect';\nimport { PublicKey } from '@dxos/keys';\nimport type { LevelDB } from '@dxos/kv-store';\nimport { createTestLevel } from '@dxos/kv-store/testing';\nimport { log } from '@dxos/log';\n\nimport { DatabaseService, QueueService } from '../services';\n\nconst testBuilder = accuireReleaseResource(() => new EchoTestBuilder());\n\nexport const testStoragePath = ({ name = PublicKey.random().toHex() }: { name?: string }) => {\n return `/tmp/dxos-${name}`;\n};\n\nexport type TestDatabaseOptions = {\n indexing?: Partial<EchoHostIndexingConfig>;\n types?: Schema.Schema.AnyNoContext[];\n storagePath?: string;\n onInit?: () => Effect.Effect<void, never, DatabaseService | QueueService>;\n};\n\nexport const TestDatabaseLayer = ({ indexing, types, storagePath, onInit }: TestDatabaseOptions = {}) =>\n Layer.scopedContext(\n Effect.gen(function* () {\n const builder = yield* testBuilder;\n\n let kv: LevelDB | undefined;\n if (storagePath) {\n kv = createTestLevel(storagePath);\n yield* Effect.promise(() => kv!.open());\n // const keyCount = yield* Effect.promise(async () => (await kv!.iterator({ values: false }).all()).length);\n // log.info('opened test db', { storagePath, keyCount });\n }\n const peer = yield* Effect.promise(() => builder.createPeer({ indexing, types, kv }));\n\n let db: EchoDatabaseImpl | undefined;\n let queues: QueueFactory | undefined;\n\n if (storagePath) {\n const testMetadata = yield* Effect.promise(async () => {\n try {\n return await kv!.get('test-metadata', { valueEncoding: 'json' });\n } catch (e) {\n if ((e as any).code === 'LEVEL_NOT_FOUND') {\n return undefined;\n }\n throw e;\n }\n });\n log('starting persistant test db', { storagePath, testMetadata });\n if (!testMetadata) {\n const key = PublicKey.random();\n db = yield* Effect.promise(() => peer.createDatabase(key));\n queues = peer.client.constructQueueFactory(db.spaceId);\n\n yield* Effect.promise(() =>\n kv!.put('test-metadata', { key: key.toHex(), rootUrl: db!.rootUrl }, { valueEncoding: 'json' }),\n );\n\n if (onInit) {\n yield* onInit().pipe(\n Effect.provideService(DatabaseService, DatabaseService.make(db)),\n Effect.provideService(QueueService, QueueService.make(queues, undefined)),\n );\n }\n } else {\n const key = PublicKey.from((testMetadata as any).key);\n const rootUrl = (testMetadata as any).rootUrl;\n db = yield* Effect.promise(() => peer.openDatabase(key, rootUrl));\n queues = peer.client.constructQueueFactory(db.spaceId);\n }\n } else {\n db = yield* Effect.promise(() => peer.createDatabase());\n queues = peer.client.constructQueueFactory(db.spaceId);\n if (onInit) {\n yield* onInit().pipe(\n Effect.provideService(DatabaseService, DatabaseService.make(db)),\n Effect.provideService(QueueService, QueueService.make(queues, undefined)),\n );\n }\n }\n\n yield* Effect.addFinalizer(() =>\n Effect.promise(async () => {\n if (kv) {\n // {\n // const keyCount = (await kv.iterator({ values: false }).all()).length;\n // log.info('closing persistant test db', { storagePath, keyCount });\n // }\n\n await kv.close();\n }\n }),\n );\n\n return Context.mergeAll(\n Context.make(DatabaseService, DatabaseService.make(db)),\n Context.make(QueueService, QueueService.make(queues, undefined)),\n );\n }),\n );\n"],
5
- "mappings": "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",
6
- "names": ["assertArgument", "Effect", "LogLevel", "noopLogger", "log", "Effect", "succeed", "undefined", "nodeId", "consoleLogger", "createEventLogger", "LogLevel", "INFO", "createTestServices", "ai", "credentials", "db", "logging", "queues", "space", "tracing", "assertArgument", "ServiceContainer", "setServices", "createCredentialsService", "database", "DatabaseService", "make", "undefined", "eventLogger", "logger", "enabled", "consoleLogger", "noopLogger", "QueueService", "service", "services", "ConfiguredCredentialsService", "Context", "Effect", "Layer", "EchoTestBuilder", "accuireReleaseResource", "PublicKey", "createTestLevel", "log", "testBuilder", "accuireReleaseResource", "EchoTestBuilder", "testStoragePath", "name", "PublicKey", "random", "toHex", "TestDatabaseLayer", "indexing", "types", "storagePath", "onInit", "Layer", "scopedContext", "Effect", "gen", "builder", "kv", "createTestLevel", "promise", "open", "peer", "createPeer", "db", "queues", "testMetadata", "get", "valueEncoding", "e", "code", "undefined", "log", "key", "createDatabase", "client", "constructQueueFactory", "spaceId", "put", "rootUrl", "pipe", "provideService", "DatabaseService", "make", "QueueService", "from", "openDatabase", "addFinalizer", "close", "Context", "mergeAll"]
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as Context from 'effect/Context';\n\nimport type { Space } from '@dxos/client/echo';\nimport type { EchoDatabase, QueueFactory } from '@dxos/echo-db';\nimport { assertArgument } from '@dxos/invariant';\n\nimport {\n type ComputeEventLogger,\n ConfiguredCredentialsService,\n type CredentialsService,\n DatabaseService,\n QueueService,\n ServiceContainer,\n type ServiceCredential,\n type TracingService,\n} from '../services';\n\nimport { consoleLogger, noopLogger } from './logger';\n\n// TODO(burdon): Factor out.\nexport type OneOf<T> = {\n [K in keyof T]: { [P in K]: T[P] } & { [P in Exclude<keyof T, K>]?: never };\n}[keyof T];\n\nexport type AiServiceProvider = 'dev' | 'edge' | 'ollama' | 'lmstudio';\n\nexport type TestServiceOptions = {\n /**\n * AI service configuration.\n */\n ai?: any;\n\n /**\n * Credentials service configuration.\n */\n credentials?: OneOf<{\n /**\n * Predefined credentials list.\n */\n services?: ServiceCredential[];\n\n /**\n * Custom credentials service.\n */\n service?: Context.Tag.Service<CredentialsService>;\n }>;\n\n /**\n * Database configuration.\n */\n db?: EchoDatabase;\n\n /**\n * Gets database and queue services from the space.\n * Exclusive with: `db`, `queues`\n */\n space?: Space;\n\n /**\n * Logging configuration.\n */\n logging?: {\n enabled?: boolean;\n logger?: Context.Tag.Service<ComputeEventLogger>;\n };\n\n /**\n * Queue service configuration.\n */\n queues?: QueueFactory;\n\n tracing?: {\n service?: Context.Tag.Service<TracingService>;\n };\n};\n\n/**\n * @deprecated\n */\nexport const createTestServices = ({\n ai,\n credentials,\n db,\n logging,\n queues,\n space,\n tracing,\n}: TestServiceOptions = {}): ServiceContainer => {\n assertArgument(!(!!space && (!!db || !!queues)), 'space', 'space can be provided only if db and queues are not');\n\n return new ServiceContainer().setServices({\n // ai: createAiService(ai),\n credentials: createCredentialsService(credentials),\n database: space || db ? DatabaseService.make(space?.db || db!) : undefined,\n eventLogger: (logging?.logger ?? logging?.enabled) ? consoleLogger : noopLogger,\n queues: space || queues ? QueueService.make(space?.queues || queues!, undefined) : undefined,\n tracing: tracing?.service,\n });\n};\n\nconst createCredentialsService = (\n credentials: TestServiceOptions['credentials'] | undefined,\n): Context.Tag.Service<CredentialsService> | undefined => {\n if (credentials?.services) {\n return new ConfiguredCredentialsService(credentials.services);\n }\n\n if (credentials?.service) {\n return credentials.service;\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as Context from 'effect/Context';\nimport * as Effect from 'effect/Effect';\n\nimport { LogLevel } from '@dxos/log';\n\nimport { type ComputeEventLogger, createEventLogger } from '../services';\n\nexport const noopLogger: Context.Tag.Service<ComputeEventLogger> = {\n log: () => Effect.succeed(undefined),\n nodeId: undefined,\n};\n\nexport const consoleLogger: Context.Tag.Service<ComputeEventLogger> = createEventLogger(LogLevel.INFO);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Context from 'effect/Context';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport type * as Schema from 'effect/Schema';\n\nimport type { EchoDatabaseImpl, QueueFactory } from '@dxos/echo-db';\nimport { EchoTestBuilder } from '@dxos/echo-db/testing';\nimport type { EchoHostIndexingConfig } from '@dxos/echo-pipeline';\nimport { acquireReleaseResource } from '@dxos/effect';\nimport { PublicKey } from '@dxos/keys';\nimport type { LevelDB } from '@dxos/kv-store';\nimport { createTestLevel } from '@dxos/kv-store/testing';\nimport { log } from '@dxos/log';\n\nimport { DatabaseService, QueueService } from '../services';\n\nconst testBuilder = acquireReleaseResource(() => new EchoTestBuilder());\n\nexport const testStoragePath = ({ name = PublicKey.random().toHex() }: { name?: string }) => {\n return `/tmp/dxos-${name}`;\n};\n\nexport type TestDatabaseOptions = {\n indexing?: Partial<EchoHostIndexingConfig>;\n types?: Schema.Schema.AnyNoContext[];\n spaceKey?: PublicKey;\n storagePath?: string;\n onInit?: () => Effect.Effect<void, never, DatabaseService | QueueService>;\n};\n\nexport const TestDatabaseLayer = ({ indexing, types, spaceKey, storagePath, onInit }: TestDatabaseOptions = {}) =>\n Layer.scopedContext(\n Effect.gen(function* () {\n const builder = yield* testBuilder;\n\n let kv: LevelDB | undefined;\n if (storagePath) {\n kv = createTestLevel(storagePath);\n yield* Effect.promise(() => kv!.open());\n // const keyCount = yield* Effect.promise(async () => (await kv!.iterator({ values: false }).all()).length);\n // log.info('opened test db', { storagePath, keyCount });\n }\n const peer = yield* Effect.promise(() => builder.createPeer({ indexing, types, kv }));\n\n let db: EchoDatabaseImpl | undefined;\n let queues: QueueFactory | undefined;\n\n if (storagePath) {\n const testMetadata = yield* Effect.promise(async () => {\n try {\n return await kv!.get('test-metadata', { valueEncoding: 'json' });\n } catch (e) {\n if ((e as any).code === 'LEVEL_NOT_FOUND') {\n return undefined;\n }\n throw e;\n }\n });\n log('starting persistant test db', { storagePath, testMetadata });\n if (!testMetadata) {\n const key = spaceKey ?? PublicKey.random();\n db = yield* Effect.promise(() => peer.createDatabase(key));\n queues = peer.client.constructQueueFactory(db.spaceId);\n\n yield* Effect.promise(() =>\n kv!.put('test-metadata', { key: key.toHex(), rootUrl: db!.rootUrl }, { valueEncoding: 'json' }),\n );\n\n if (onInit) {\n yield* onInit().pipe(\n Effect.provideService(DatabaseService, DatabaseService.make(db)),\n Effect.provideService(QueueService, QueueService.make(queues, undefined)),\n );\n }\n } else {\n const key = PublicKey.from((testMetadata as any).key);\n const rootUrl = (testMetadata as any).rootUrl;\n db = yield* Effect.promise(() => peer.openDatabase(key, rootUrl));\n queues = peer.client.constructQueueFactory(db.spaceId);\n }\n } else {\n db = yield* Effect.promise(() => peer.createDatabase(spaceKey));\n queues = peer.client.constructQueueFactory(db.spaceId);\n if (onInit) {\n yield* onInit().pipe(\n Effect.provideService(DatabaseService, DatabaseService.make(db)),\n Effect.provideService(QueueService, QueueService.make(queues, undefined)),\n );\n }\n }\n\n yield* Effect.addFinalizer(() =>\n Effect.promise(async () => {\n if (kv) {\n // {\n // const keyCount = (await kv.iterator({ values: false }).all()).length;\n // log.info('closing persistant test db', { storagePath, keyCount });\n // }\n\n await kv.close();\n }\n }),\n );\n\n return Context.mergeAll(\n Context.make(DatabaseService, DatabaseService.make(db)),\n Context.make(QueueService, QueueService.make(queues, undefined)),\n );\n }),\n );\n"],
5
+ "mappings": "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",
6
+ "names": ["assertArgument", "Effect", "LogLevel", "noopLogger", "log", "succeed", "undefined", "nodeId", "consoleLogger", "createEventLogger", "LogLevel", "INFO", "createTestServices", "ai", "credentials", "db", "logging", "queues", "space", "tracing", "assertArgument", "ServiceContainer", "setServices", "createCredentialsService", "database", "DatabaseService", "make", "undefined", "eventLogger", "logger", "enabled", "consoleLogger", "noopLogger", "QueueService", "service", "services", "ConfiguredCredentialsService", "Context", "Effect", "Layer", "EchoTestBuilder", "acquireReleaseResource", "PublicKey", "createTestLevel", "log", "testBuilder", "acquireReleaseResource", "EchoTestBuilder", "testStoragePath", "name", "PublicKey", "random", "toHex", "TestDatabaseLayer", "indexing", "types", "spaceKey", "storagePath", "onInit", "scopedContext", "gen", "builder", "kv", "createTestLevel", "promise", "open", "peer", "createPeer", "db", "queues", "testMetadata", "get", "valueEncoding", "e", "code", "undefined", "log", "key", "createDatabase", "client", "constructQueueFactory", "spaceId", "put", "rootUrl", "pipe", "provideService", "DatabaseService", "make", "QueueService", "from", "openDatabase", "addFinalizer", "close", "mergeAll"]
7
7
  }
@@ -2,8 +2,12 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import "../chunk-HSLMI22Q.mjs";
3
3
 
4
4
  // src/bundler/bundler.ts
5
- import { FetchHttpClient, HttpClient } from "@effect/platform";
6
- import { Duration, Effect, Schedule, pipe } from "effect";
5
+ import * as FetchHttpClient from "@effect/platform/FetchHttpClient";
6
+ import * as HttpClient from "@effect/platform/HttpClient";
7
+ import * as Duration from "effect/Duration";
8
+ import * as Effect from "effect/Effect";
9
+ import * as Function from "effect/Function";
10
+ import * as Schedule from "effect/Schedule";
7
11
  import { build, initialize } from "esbuild-wasm";
8
12
  import { subtleCrypto } from "@dxos/crypto";
9
13
  import { runAndForwardErrors } from "@dxos/effect";
@@ -36,7 +40,7 @@ var Bundler = class {
36
40
  if (this._options.platform === "browser") {
37
41
  invariant(initialized, "Compiler not initialized.", {
38
42
  F: __dxlog_file,
39
- L: 66,
43
+ L: 70,
40
44
  S: this,
41
45
  A: [
42
46
  "initialized",
@@ -131,7 +135,7 @@ var Bundler = class {
131
135
  });
132
136
  log("compile complete", result.metafile, {
133
137
  F: __dxlog_file,
134
- L: 133,
138
+ L: 137,
135
139
  S: this,
136
140
  C: (f, a) => f(...a)
137
141
  });
@@ -156,7 +160,7 @@ var Bundler = class {
156
160
  analyzeImports(result) {
157
161
  invariant(result.outputFiles, void 0, {
158
162
  F: __dxlog_file,
159
- L: 151,
163
+ L: 155,
160
164
  S: this,
161
165
  A: [
162
166
  "result.outputFiles",
@@ -255,7 +259,7 @@ var httpPlugin = {
255
259
  contents: text,
256
260
  loader: "jsx"
257
261
  };
258
- }).pipe(Effect.retry(pipe(Schedule.exponential(Duration.millis(INITIAL_DELAY)), Schedule.jittered, Schedule.intersect(Schedule.recurs(MAX_RETRIES - 1)))), Effect.provide(FetchHttpClient.layer), runAndForwardErrors);
262
+ }).pipe(Effect.retry(Function.pipe(Schedule.exponential(Duration.millis(INITIAL_DELAY)), Schedule.jittered, Schedule.intersect(Schedule.recurs(MAX_RETRIES - 1)))), Effect.provide(FetchHttpClient.layer), runAndForwardErrors);
259
263
  });
260
264
  }
261
265
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/bundler/bundler.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { FetchHttpClient, HttpClient } from '@effect/platform';\nimport { Duration, Effect, Schedule, pipe } from 'effect';\nimport { type BuildOptions, type BuildResult, type Loader, type Plugin, build, initialize } from 'esbuild-wasm';\n\nimport { subtleCrypto } from '@dxos/crypto';\nimport { runAndForwardErrors } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\n\nexport type Import = {\n moduleUrl: string;\n defaultImport: boolean;\n namedImports: string[];\n};\n\nexport type BundleOptions = {\n /**\n * Source code to bundle.\n */\n source: string;\n};\n\nexport type BundleResult =\n | {\n timestamp: number;\n sourceHash: Buffer;\n error: unknown;\n }\n | {\n timestamp: number;\n sourceHash: Buffer;\n imports: Import[];\n entryPoint: string;\n asset: Uint8Array;\n bundle: string;\n };\n\nexport type BundlerOptions = {\n platform: BuildOptions['platform'];\n sandboxedModules: string[];\n remoteModules: Record<string, string>;\n};\n\nlet initialized: Promise<void>;\nexport const initializeBundler = async (options: { wasmUrl: string }) => {\n await (initialized ??= initialize({\n wasmURL: options.wasmUrl,\n }));\n};\n\n/**\n * ESBuild bundler.\n */\nexport class Bundler {\n constructor(private readonly _options: BundlerOptions) {}\n\n async bundle({ source }: BundleOptions): Promise<BundleResult> {\n const { sandboxedModules: providedModules, ...options } = this._options;\n const sourceHash = Buffer.from(await subtleCrypto.digest('SHA-256', Buffer.from(source)));\n\n if (this._options.platform === 'browser') {\n invariant(initialized, 'Compiler not initialized.');\n await initialized;\n }\n\n const imports = source ? analyzeSourceFileImports(source) : [];\n\n // https://esbuild.github.io/api/#build\n try {\n const result = await build({\n platform: options.platform,\n conditions: ['workerd', 'browser'],\n metafile: true,\n write: false,\n entryPoints: {\n // Gets mapped to `userFunc.js` by esbuild.\n userFunc: 'memory:main.tsx',\n },\n bundle: true,\n format: 'esm',\n plugins: [\n {\n name: 'memory',\n setup: (build) => {\n build.onResolve({ filter: /^\\.\\/runtime\\.js$/ }, ({ path }) => {\n return { path, external: true };\n });\n\n build.onResolve({ filter: /^dxos:functions$/ }, ({ path }) => {\n return { path: './runtime.js', external: true };\n });\n\n build.onResolve({ filter: /^memory:/ }, ({ path }) => {\n return { path: path.split(':')[1], namespace: 'memory' };\n });\n\n build.onLoad({ filter: /.*/, namespace: 'memory' }, ({ path }) => {\n if (path === 'main.tsx') {\n return {\n contents: source,\n loader: 'tsx',\n };\n }\n });\n\n for (const module of providedModules) {\n build.onResolve({ filter: new RegExp(`^${module}$`) }, ({ path }) => {\n return { path, namespace: 'injected-module' };\n });\n }\n\n build.onLoad({ filter: /.*/, namespace: 'injected-module' }, ({ path }) => {\n const namedImports = imports.find((entry) => entry.moduleIdentifier === path)?.namedImports ?? [];\n return {\n contents: `\n const { ${namedImports.join(',')} } = window.__DXOS_SANDBOX_MODULES__[${JSON.stringify(path)}];\n export { ${namedImports.join(',')} };\n export default window.__DXOS_SANDBOX_MODULES__[${JSON.stringify(path)}].default;\n `,\n loader: 'tsx',\n };\n });\n },\n },\n httpPlugin,\n ],\n });\n\n log('compile complete', result.metafile);\n\n const entryPoint = 'userFunc.js';\n return {\n timestamp: Date.now(),\n sourceHash,\n imports: this.analyzeImports(result),\n entryPoint,\n asset: result.outputFiles![0].contents,\n bundle: result.outputFiles![0].text,\n };\n } catch (err) {\n return { timestamp: Date.now(), sourceHash, error: err };\n }\n }\n\n // TODO(dmaretskyi): In the future we can replace the compiler with SWC with plugins running in WASM.\n analyzeImports(result: BuildResult): Import[] {\n invariant(result.outputFiles);\n\n // TODO(dmaretskyi): Support import aliases and wildcard imports.\n const parsedImports = allMatches(IMPORT_REGEX, result.outputFiles[0].text);\n return Object.values(result.metafile!.outputs)[0].imports.map((entry): Import => {\n const namedImports: string[] = [];\n const parsedImport = parsedImports.find((capture) => capture?.[4] === entry.path);\n if (parsedImport?.[2]) {\n NAMED_IMPORTS_REGEX.lastIndex = 0;\n const namedImportsMatch = NAMED_IMPORTS_REGEX.exec(parsedImport[2]);\n if (namedImportsMatch) {\n namedImportsMatch[1].split(',').forEach((importName) => {\n namedImports.push(importName.trim());\n });\n }\n }\n\n return {\n moduleUrl: entry.path,\n defaultImport: !!parsedImport?.[1],\n namedImports,\n };\n });\n }\n\n analyzeSourceFileImports(code: string): {\n defaultImportName: string;\n namedImports: string[];\n wildcardImportName: string;\n moduleIdentifier: string;\n quotes: string;\n }[] {\n // TODO(dmaretskyi): Support import aliases and wildcard imports.\n const parsedImports = allMatches(IMPORT_REGEX, code);\n return parsedImports.map((capture) => {\n return {\n defaultImportName: capture[1],\n namedImports: capture[2]?.split(',').map((importName) => importName.trim()),\n wildcardImportName: capture[3],\n moduleIdentifier: capture[4],\n quotes: capture[5],\n };\n });\n }\n}\n\n// https://regex101.com/r/FEN5ks/1\n// https://stackoverflow.com/a/73265022\n// $1 = default import name (can be non-existent)\n// $2 = destructured exports (can be non-existent)\n// $3 = wildcard import name (can be non-existent)\n// $4 = module identifier\n// $5 = quotes used (either ' or \")\nconst IMPORT_REGEX =\n /import(?:(?:(?:[ \\n\\t]+([^ *\\n\\t{},]+)[ \\n\\t]*(?:,|[ \\n\\t]+))?([ \\n\\t]*{(?:[ \\n\\t]*[^ \\n\\t\"'{}]+[ \\n\\t]*,?)+})?[ \\n\\t]*)|[ \\n\\t]*\\*[ \\n\\t]*as[ \\n\\t]+([^ \\n\\t{}]+)[ \\n\\t]+)from[ \\n\\t]*(?:['\"])([^'\"\\n]+)(['\"])/gm;\n\nconst NAMED_IMPORTS_REGEX = /[ \\n\\t]*{((?:[ \\n\\t]*[^ \\n\\t\"'{}]+[ \\n\\t]*,?)+)}[ \\n\\t]*/gm;\n\nconst allMatches = (regex: RegExp, str: string) => {\n let match;\n const matches = [];\n regex.lastIndex = 0;\n while ((match = regex.exec(str))) {\n matches.push(match);\n }\n\n return matches;\n};\n\ntype ParsedImport = {\n defaultImportName?: string;\n namedImports: string[];\n wildcardImportName?: string;\n moduleIdentifier: string;\n quotes: string;\n};\n\nconst analyzeSourceFileImports = (code: string): ParsedImport[] => {\n // TODO(dmaretskyi): Support import aliases and wildcard imports.\n const parsedImports = allMatches(IMPORT_REGEX, code);\n return parsedImports.map((capture) => {\n return {\n defaultImportName: capture[1],\n namedImports: capture[2]\n ?.trim()\n .slice(1, -1)\n .split(',')\n .map((importName) => importName.trim()),\n wildcardImportName: capture[3],\n moduleIdentifier: capture[4],\n quotes: capture[5],\n };\n });\n};\n\nconst MAX_RETRIES = 5;\nconst INITIAL_DELAY = 1_000;\n\nconst httpPlugin: Plugin = {\n name: 'http',\n setup: (build) => {\n // Intercept import paths starting with \"http:\" and \"https:\" so esbuild doesn't attempt to map them to a file system location.\n // Tag them with the \"http-url\" namespace to associate them with this plugin.\n build.onResolve({ filter: /^https?:\\/\\// }, (args) => ({\n path: args.path,\n namespace: 'http-url',\n }));\n\n // We also want to intercept all import paths inside downloaded files and resolve them against the original URL.\n // All of these files will be in the \"http-url\" namespace.\n // Make sure to keep the newly resolved URL in the \"http-url\" namespace so imports inside it will also be resolved as URLs recursively.\n build.onResolve({ filter: /.*/, namespace: 'http-url' }, (args) => ({\n path: new URL(args.path, args.importer).toString(),\n namespace: 'http-url',\n }));\n\n // When a URL is loaded, we want to actually download the content from the internet.\n // This has just enough logic to be able to handle the example import from unpkg.com but in reality this would probably need to be more complex.\n build.onLoad({ filter: /.*/, namespace: 'http-url' }, async (args) => {\n return Effect.gen(function* () {\n const response = yield* HttpClient.get(args.path);\n if (response.status !== 200) {\n throw new Error(`failed to fetch: ${response.status}`);\n }\n\n const text = yield* response.text;\n return { contents: text, loader: 'jsx' as Loader };\n }).pipe(\n Effect.retry(\n pipe(\n Schedule.exponential(Duration.millis(INITIAL_DELAY)),\n Schedule.jittered,\n Schedule.intersect(Schedule.recurs(MAX_RETRIES - 1)),\n ),\n ),\n Effect.provide(FetchHttpClient.layer),\n runAndForwardErrors,\n );\n });\n },\n};\n"],
5
- "mappings": "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",
6
- "names": ["FetchHttpClient", "HttpClient", "Duration", "Effect", "Schedule", "pipe", "build", "initialize", "subtleCrypto", "runAndForwardErrors", "invariant", "log", "initialized", "initializeBundler", "options", "wasmURL", "wasmUrl", "Bundler", "bundle", "source", "sandboxedModules", "providedModules", "_options", "sourceHash", "Buffer", "from", "digest", "platform", "imports", "analyzeSourceFileImports", "result", "conditions", "metafile", "write", "entryPoints", "userFunc", "format", "plugins", "name", "setup", "onResolve", "filter", "path", "external", "split", "namespace", "onLoad", "contents", "loader", "module", "RegExp", "namedImports", "find", "entry", "moduleIdentifier", "join", "JSON", "stringify", "httpPlugin", "entryPoint", "timestamp", "Date", "now", "analyzeImports", "asset", "outputFiles", "text", "err", "error", "parsedImports", "allMatches", "IMPORT_REGEX", "Object", "values", "outputs", "map", "parsedImport", "capture", "NAMED_IMPORTS_REGEX", "lastIndex", "namedImportsMatch", "exec", "forEach", "importName", "push", "trim", "moduleUrl", "defaultImport", "code", "defaultImportName", "wildcardImportName", "quotes", "regex", "str", "match", "matches", "slice", "MAX_RETRIES", "INITIAL_DELAY", "args", "URL", "importer", "toString", "gen", "response", "get", "status", "Error", "retry", "exponential", "millis", "jittered", "intersect", "recurs", "provide", "layer"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as FetchHttpClient from '@effect/platform/FetchHttpClient';\nimport * as HttpClient from '@effect/platform/HttpClient';\nimport * as Duration from 'effect/Duration';\nimport * as Effect from 'effect/Effect';\nimport * as Function from 'effect/Function';\nimport * as Schedule from 'effect/Schedule';\nimport { type BuildOptions, type BuildResult, type Loader, type Plugin, build, initialize } from 'esbuild-wasm';\n\nimport { subtleCrypto } from '@dxos/crypto';\nimport { runAndForwardErrors } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\n\nexport type Import = {\n moduleUrl: string;\n defaultImport: boolean;\n namedImports: string[];\n};\n\nexport type BundleOptions = {\n /**\n * Source code to bundle.\n */\n source: string;\n};\n\nexport type BundleResult =\n | {\n timestamp: number;\n sourceHash: Buffer;\n error: unknown;\n }\n | {\n timestamp: number;\n sourceHash: Buffer;\n imports: Import[];\n entryPoint: string;\n asset: Uint8Array;\n bundle: string;\n };\n\nexport type BundlerOptions = {\n platform: BuildOptions['platform'];\n sandboxedModules: string[];\n remoteModules: Record<string, string>;\n};\n\nlet initialized: Promise<void>;\nexport const initializeBundler = async (options: { wasmUrl: string }) => {\n await (initialized ??= initialize({\n wasmURL: options.wasmUrl,\n }));\n};\n\n/**\n * ESBuild bundler.\n */\nexport class Bundler {\n constructor(private readonly _options: BundlerOptions) {}\n\n async bundle({ source }: BundleOptions): Promise<BundleResult> {\n const { sandboxedModules: providedModules, ...options } = this._options;\n const sourceHash = Buffer.from(await subtleCrypto.digest('SHA-256', Buffer.from(source)));\n\n if (this._options.platform === 'browser') {\n invariant(initialized, 'Compiler not initialized.');\n await initialized;\n }\n\n const imports = source ? analyzeSourceFileImports(source) : [];\n\n // https://esbuild.github.io/api/#build\n try {\n const result = await build({\n platform: options.platform,\n conditions: ['workerd', 'browser'],\n metafile: true,\n write: false,\n entryPoints: {\n // Gets mapped to `userFunc.js` by esbuild.\n userFunc: 'memory:main.tsx',\n },\n bundle: true,\n format: 'esm',\n plugins: [\n {\n name: 'memory',\n setup: (build) => {\n build.onResolve({ filter: /^\\.\\/runtime\\.js$/ }, ({ path }) => {\n return { path, external: true };\n });\n\n build.onResolve({ filter: /^dxos:functions$/ }, ({ path }) => {\n return { path: './runtime.js', external: true };\n });\n\n build.onResolve({ filter: /^memory:/ }, ({ path }) => {\n return { path: path.split(':')[1], namespace: 'memory' };\n });\n\n build.onLoad({ filter: /.*/, namespace: 'memory' }, ({ path }) => {\n if (path === 'main.tsx') {\n return {\n contents: source,\n loader: 'tsx',\n };\n }\n });\n\n for (const module of providedModules) {\n build.onResolve({ filter: new RegExp(`^${module}$`) }, ({ path }) => {\n return { path, namespace: 'injected-module' };\n });\n }\n\n build.onLoad({ filter: /.*/, namespace: 'injected-module' }, ({ path }) => {\n const namedImports = imports.find((entry) => entry.moduleIdentifier === path)?.namedImports ?? [];\n return {\n contents: `\n const { ${namedImports.join(',')} } = window.__DXOS_SANDBOX_MODULES__[${JSON.stringify(path)}];\n export { ${namedImports.join(',')} };\n export default window.__DXOS_SANDBOX_MODULES__[${JSON.stringify(path)}].default;\n `,\n loader: 'tsx',\n };\n });\n },\n },\n httpPlugin,\n ],\n });\n\n log('compile complete', result.metafile);\n\n const entryPoint = 'userFunc.js';\n return {\n timestamp: Date.now(),\n sourceHash,\n imports: this.analyzeImports(result),\n entryPoint,\n asset: result.outputFiles![0].contents,\n bundle: result.outputFiles![0].text,\n };\n } catch (err) {\n return { timestamp: Date.now(), sourceHash, error: err };\n }\n }\n\n // TODO(dmaretskyi): In the future we can replace the compiler with SWC with plugins running in WASM.\n analyzeImports(result: BuildResult): Import[] {\n invariant(result.outputFiles);\n\n // TODO(dmaretskyi): Support import aliases and wildcard imports.\n const parsedImports = allMatches(IMPORT_REGEX, result.outputFiles[0].text);\n return Object.values(result.metafile!.outputs)[0].imports.map((entry): Import => {\n const namedImports: string[] = [];\n const parsedImport = parsedImports.find((capture) => capture?.[4] === entry.path);\n if (parsedImport?.[2]) {\n NAMED_IMPORTS_REGEX.lastIndex = 0;\n const namedImportsMatch = NAMED_IMPORTS_REGEX.exec(parsedImport[2]);\n if (namedImportsMatch) {\n namedImportsMatch[1].split(',').forEach((importName) => {\n namedImports.push(importName.trim());\n });\n }\n }\n\n return {\n moduleUrl: entry.path,\n defaultImport: !!parsedImport?.[1],\n namedImports,\n };\n });\n }\n\n analyzeSourceFileImports(code: string): {\n defaultImportName: string;\n namedImports: string[];\n wildcardImportName: string;\n moduleIdentifier: string;\n quotes: string;\n }[] {\n // TODO(dmaretskyi): Support import aliases and wildcard imports.\n const parsedImports = allMatches(IMPORT_REGEX, code);\n return parsedImports.map((capture) => {\n return {\n defaultImportName: capture[1],\n namedImports: capture[2]?.split(',').map((importName) => importName.trim()),\n wildcardImportName: capture[3],\n moduleIdentifier: capture[4],\n quotes: capture[5],\n };\n });\n }\n}\n\n// https://regex101.com/r/FEN5ks/1\n// https://stackoverflow.com/a/73265022\n// $1 = default import name (can be non-existent)\n// $2 = destructured exports (can be non-existent)\n// $3 = wildcard import name (can be non-existent)\n// $4 = module identifier\n// $5 = quotes used (either ' or \")\nconst IMPORT_REGEX =\n /import(?:(?:(?:[ \\n\\t]+([^ *\\n\\t{},]+)[ \\n\\t]*(?:,|[ \\n\\t]+))?([ \\n\\t]*{(?:[ \\n\\t]*[^ \\n\\t\"'{}]+[ \\n\\t]*,?)+})?[ \\n\\t]*)|[ \\n\\t]*\\*[ \\n\\t]*as[ \\n\\t]+([^ \\n\\t{}]+)[ \\n\\t]+)from[ \\n\\t]*(?:['\"])([^'\"\\n]+)(['\"])/gm;\n\nconst NAMED_IMPORTS_REGEX = /[ \\n\\t]*{((?:[ \\n\\t]*[^ \\n\\t\"'{}]+[ \\n\\t]*,?)+)}[ \\n\\t]*/gm;\n\nconst allMatches = (regex: RegExp, str: string) => {\n let match;\n const matches = [];\n regex.lastIndex = 0;\n while ((match = regex.exec(str))) {\n matches.push(match);\n }\n\n return matches;\n};\n\ntype ParsedImport = {\n defaultImportName?: string;\n namedImports: string[];\n wildcardImportName?: string;\n moduleIdentifier: string;\n quotes: string;\n};\n\nconst analyzeSourceFileImports = (code: string): ParsedImport[] => {\n // TODO(dmaretskyi): Support import aliases and wildcard imports.\n const parsedImports = allMatches(IMPORT_REGEX, code);\n return parsedImports.map((capture) => {\n return {\n defaultImportName: capture[1],\n namedImports: capture[2]\n ?.trim()\n .slice(1, -1)\n .split(',')\n .map((importName) => importName.trim()),\n wildcardImportName: capture[3],\n moduleIdentifier: capture[4],\n quotes: capture[5],\n };\n });\n};\n\nconst MAX_RETRIES = 5;\nconst INITIAL_DELAY = 1_000;\n\nconst httpPlugin: Plugin = {\n name: 'http',\n setup: (build) => {\n // Intercept import paths starting with \"http:\" and \"https:\" so esbuild doesn't attempt to map them to a file system location.\n // Tag them with the \"http-url\" namespace to associate them with this plugin.\n build.onResolve({ filter: /^https?:\\/\\// }, (args) => ({\n path: args.path,\n namespace: 'http-url',\n }));\n\n // We also want to intercept all import paths inside downloaded files and resolve them against the original URL.\n // All of these files will be in the \"http-url\" namespace.\n // Make sure to keep the newly resolved URL in the \"http-url\" namespace so imports inside it will also be resolved as URLs recursively.\n build.onResolve({ filter: /.*/, namespace: 'http-url' }, (args) => ({\n path: new URL(args.path, args.importer).toString(),\n namespace: 'http-url',\n }));\n\n // When a URL is loaded, we want to actually download the content from the internet.\n // This has just enough logic to be able to handle the example import from unpkg.com but in reality this would probably need to be more complex.\n build.onLoad({ filter: /.*/, namespace: 'http-url' }, async (args) => {\n return Effect.gen(function* () {\n const response = yield* HttpClient.get(args.path);\n if (response.status !== 200) {\n throw new Error(`failed to fetch: ${response.status}`);\n }\n\n const text = yield* response.text;\n return { contents: text, loader: 'jsx' as Loader };\n }).pipe(\n Effect.retry(\n Function.pipe(\n Schedule.exponential(Duration.millis(INITIAL_DELAY)),\n Schedule.jittered,\n Schedule.intersect(Schedule.recurs(MAX_RETRIES - 1)),\n ),\n ),\n Effect.provide(FetchHttpClient.layer),\n runAndForwardErrors,\n );\n });\n },\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["FetchHttpClient", "HttpClient", "Duration", "Effect", "Function", "Schedule", "build", "initialize", "subtleCrypto", "runAndForwardErrors", "invariant", "log", "initialized", "initializeBundler", "options", "wasmURL", "wasmUrl", "Bundler", "bundle", "source", "sandboxedModules", "providedModules", "_options", "sourceHash", "Buffer", "from", "digest", "platform", "imports", "analyzeSourceFileImports", "result", "conditions", "metafile", "write", "entryPoints", "userFunc", "format", "plugins", "name", "setup", "onResolve", "filter", "path", "external", "split", "namespace", "onLoad", "contents", "loader", "module", "RegExp", "namedImports", "find", "entry", "moduleIdentifier", "join", "JSON", "stringify", "httpPlugin", "entryPoint", "timestamp", "Date", "now", "analyzeImports", "asset", "outputFiles", "text", "err", "error", "parsedImports", "allMatches", "IMPORT_REGEX", "Object", "values", "outputs", "map", "parsedImport", "capture", "NAMED_IMPORTS_REGEX", "lastIndex", "namedImportsMatch", "exec", "forEach", "importName", "push", "trim", "moduleUrl", "defaultImport", "code", "defaultImportName", "wildcardImportName", "quotes", "regex", "str", "match", "matches", "slice", "MAX_RETRIES", "INITIAL_DELAY", "args", "URL", "importer", "toString", "gen", "response", "get", "status", "Error", "pipe", "retry", "exponential", "millis", "jittered", "intersect", "recurs", "provide", "layer"]
7
7
  }