@procedures/client 0.2.3 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +94 -0
- package/README.md +77 -44
- package/dist/.tsbuildinfo +1 -1
- package/dist/adapters/http/client/transport.d.ts.map +1 -1
- package/dist/adapters/http/client/transport.js +35 -3
- package/dist/adapters/http/client/transport.js.map +1 -1
- package/dist/adapters/http/client/types.d.ts +3 -2
- package/dist/adapters/http/client/types.d.ts.map +1 -1
- package/dist/adapters/http/server/transport.d.ts +2 -2
- package/dist/adapters/http/server/transport.d.ts.map +1 -1
- package/dist/adapters/http/server/transport.js +54 -22
- package/dist/adapters/http/server/transport.js.map +1 -1
- package/dist/adapters/http/shared/headers.d.ts +1 -1
- package/dist/adapters/http/shared/headers.d.ts.map +1 -1
- package/dist/adapters/http/shared/headers.js +7 -6
- package/dist/adapters/http/shared/headers.js.map +1 -1
- package/dist/adapters/local/client/transport.d.ts +3 -0
- package/dist/adapters/local/client/transport.d.ts.map +1 -1
- package/dist/adapters/local/client/transport.js +67 -6
- package/dist/adapters/local/client/transport.js.map +1 -1
- package/dist/adapters/local/client/types.d.ts +15 -0
- package/dist/adapters/local/client/types.d.ts.map +1 -1
- package/dist/adapters/local/client/types.js.map +1 -1
- package/dist/adapters/mock/client/transport.d.ts +3 -2
- package/dist/adapters/mock/client/transport.d.ts.map +1 -1
- package/dist/adapters/mock/client/transport.js +8 -5
- package/dist/adapters/mock/client/transport.js.map +1 -1
- package/dist/adapters/mock/client/types.d.ts +7 -6
- package/dist/adapters/mock/client/types.d.ts.map +1 -1
- package/dist/adapters/port/transport.d.ts +62 -0
- package/dist/adapters/port/transport.d.ts.map +1 -0
- package/dist/adapters/port/transport.js +94 -0
- package/dist/adapters/port/transport.js.map +1 -0
- package/dist/adapters/websocket/client/index.d.ts +1 -1
- package/dist/adapters/websocket/client/index.d.ts.map +1 -1
- package/dist/adapters/websocket/client/index.js.map +1 -1
- package/dist/adapters/websocket/client/node.d.ts +30 -0
- package/dist/adapters/websocket/client/node.d.ts.map +1 -0
- package/dist/adapters/websocket/client/node.js +32 -0
- package/dist/adapters/websocket/client/node.js.map +1 -0
- package/dist/adapters/websocket/client/transport.d.ts +47 -7
- package/dist/adapters/websocket/client/transport.d.ts.map +1 -1
- package/dist/adapters/websocket/client/transport.js +229 -75
- package/dist/adapters/websocket/client/transport.js.map +1 -1
- package/dist/adapters/websocket/client/types.d.ts +71 -21
- package/dist/adapters/websocket/client/types.d.ts.map +1 -1
- package/dist/adapters/websocket/client/types.js.map +1 -1
- package/dist/adapters/websocket/server/transport.d.ts +65 -24
- package/dist/adapters/websocket/server/transport.d.ts.map +1 -1
- package/dist/adapters/websocket/server/transport.js +192 -263
- package/dist/adapters/websocket/server/transport.js.map +1 -1
- package/dist/adapters/websocket/server/types.d.ts +20 -1
- package/dist/adapters/websocket/server/types.d.ts.map +1 -1
- package/dist/adapters/websocket/shared/rpc.d.ts +129 -0
- package/dist/adapters/websocket/shared/rpc.d.ts.map +1 -0
- package/dist/adapters/websocket/shared/rpc.js +425 -0
- package/dist/adapters/websocket/shared/rpc.js.map +1 -0
- package/dist/browser.d.ts +29 -7
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +26 -3
- package/dist/browser.js.map +1 -1
- package/dist/client/call-types.d.ts +10 -10
- package/dist/client/call-types.d.ts.map +1 -1
- package/dist/client/call-types.js +1 -6
- package/dist/client/call-types.js.map +1 -1
- package/dist/client/client.d.ts +6 -1
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +23 -9
- package/dist/client/client.js.map +1 -1
- package/dist/client/deadline.d.ts +38 -0
- package/dist/client/deadline.d.ts.map +1 -0
- package/dist/client/deadline.js +60 -0
- package/dist/client/deadline.js.map +1 -0
- package/dist/client/errors/factory.d.ts.map +1 -1
- package/dist/client/errors/factory.js +11 -7
- package/dist/client/errors/factory.js.map +1 -1
- package/dist/client/errors/http-errors.d.ts.map +1 -1
- package/dist/client/errors/http-errors.js +6 -0
- package/dist/client/errors/http-errors.js.map +1 -1
- package/dist/client/errors/index.d.ts +1 -1
- package/dist/client/errors/index.js +1 -1
- package/dist/client/errors/registry.d.ts +2 -1
- package/dist/client/errors/registry.d.ts.map +1 -1
- package/dist/client/errors/registry.js +72 -22
- package/dist/client/errors/registry.js.map +1 -1
- package/dist/client/index.d.ts +9 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +8 -2
- package/dist/client/index.js.map +1 -1
- package/dist/client/middleware/cache.d.ts +19 -5
- package/dist/client/middleware/cache.d.ts.map +1 -1
- package/dist/client/middleware/cache.js +106 -18
- package/dist/client/middleware/cache.js.map +1 -1
- package/dist/client/middleware/circuit-breaker.d.ts +28 -10
- package/dist/client/middleware/circuit-breaker.d.ts.map +1 -1
- package/dist/client/middleware/circuit-breaker.js +35 -24
- package/dist/client/middleware/circuit-breaker.js.map +1 -1
- package/dist/client/middleware/contexts.d.ts +16 -10
- package/dist/client/middleware/contexts.d.ts.map +1 -1
- package/dist/client/middleware/contexts.js.map +1 -1
- package/dist/client/middleware/items.d.ts +31 -2
- package/dist/client/middleware/items.d.ts.map +1 -1
- package/dist/client/middleware/items.js +86 -6
- package/dist/client/middleware/items.js.map +1 -1
- package/dist/client/middleware/lru.d.ts +2 -0
- package/dist/client/middleware/lru.d.ts.map +1 -1
- package/dist/client/middleware/lru.js +11 -0
- package/dist/client/middleware/lru.js.map +1 -1
- package/dist/client/middleware/rate-limit.d.ts +7 -6
- package/dist/client/middleware/rate-limit.d.ts.map +1 -1
- package/dist/client/middleware/rate-limit.js +9 -7
- package/dist/client/middleware/rate-limit.js.map +1 -1
- package/dist/client/middleware/resilience.d.ts +61 -0
- package/dist/client/middleware/resilience.d.ts.map +1 -0
- package/dist/client/middleware/resilience.js +59 -0
- package/dist/client/middleware/resilience.js.map +1 -0
- package/dist/client/middleware/retry.d.ts +45 -11
- package/dist/client/middleware/retry.d.ts.map +1 -1
- package/dist/client/middleware/retry.js +102 -22
- package/dist/client/middleware/retry.js.map +1 -1
- package/dist/client/middleware/timeout.d.ts +15 -12
- package/dist/client/middleware/timeout.d.ts.map +1 -1
- package/dist/client/middleware/timeout.js +48 -46
- package/dist/client/middleware/timeout.js.map +1 -1
- package/dist/client/middleware/tracing.d.ts.map +1 -1
- package/dist/client/middleware/tracing.js +11 -3
- package/dist/client/middleware/tracing.js.map +1 -1
- package/dist/client/types.d.ts +9 -1
- package/dist/client/types.d.ts.map +1 -1
- package/dist/client/types.js.map +1 -1
- package/dist/clock.d.ts +19 -0
- package/dist/clock.d.ts.map +1 -0
- package/dist/clock.js +18 -0
- package/dist/clock.js.map +1 -0
- package/dist/duration.d.ts +37 -0
- package/dist/duration.d.ts.map +1 -0
- package/dist/duration.js +44 -0
- package/dist/duration.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/machines.d.ts +90 -0
- package/dist/machines.d.ts.map +1 -0
- package/dist/machines.js +127 -0
- package/dist/machines.js.map +1 -0
- package/dist/node.d.ts +11 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +10 -0
- package/dist/node.js.map +1 -0
- package/dist/procedures/capability.d.ts +3 -6
- package/dist/procedures/capability.d.ts.map +1 -1
- package/dist/procedures/capability.js +7 -8
- package/dist/procedures/capability.js.map +1 -1
- package/dist/procedures/collection/index.d.ts +3 -3
- package/dist/procedures/collection/index.d.ts.map +1 -1
- package/dist/procedures/collection/index.js +1 -1
- package/dist/procedures/collection/index.js.map +1 -1
- package/dist/procedures/collection/procedures.d.ts.map +1 -1
- package/dist/procedures/collection/procedures.js +49 -1
- package/dist/procedures/collection/procedures.js.map +1 -1
- package/dist/procedures/collection/schemas.d.ts +33 -0
- package/dist/procedures/collection/schemas.d.ts.map +1 -1
- package/dist/procedures/collection/schemas.js +68 -0
- package/dist/procedures/collection/schemas.js.map +1 -1
- package/dist/procedures/collection/storage.d.ts +37 -0
- package/dist/procedures/collection/storage.d.ts.map +1 -1
- package/dist/procedures/core/array.d.ts +1 -1
- package/dist/procedures/core/array.d.ts.map +1 -1
- package/dist/procedures/core/array.js +81 -29
- package/dist/procedures/core/array.js.map +1 -1
- package/dist/procedures/core/index.d.ts.map +1 -1
- package/dist/procedures/core/index.js +17 -2
- package/dist/procedures/core/index.js.map +1 -1
- package/dist/procedures/core/logic.js +1 -1
- package/dist/procedures/core/logic.js.map +1 -1
- package/dist/procedures/core/math.d.ts.map +1 -1
- package/dist/procedures/core/math.js +5 -1
- package/dist/procedures/core/math.js.map +1 -1
- package/dist/procedures/core/meta.d.ts.map +1 -1
- package/dist/procedures/core/meta.js +43 -8
- package/dist/procedures/core/meta.js.map +1 -1
- package/dist/procedures/core/object.d.ts.map +1 -1
- package/dist/procedures/core/object.js +42 -13
- package/dist/procedures/core/object.js.map +1 -1
- package/dist/procedures/core/operands.d.ts.map +1 -1
- package/dist/procedures/core/operands.js +6 -1
- package/dist/procedures/core/operands.js.map +1 -1
- package/dist/procedures/core/string.d.ts.map +1 -1
- package/dist/procedures/core/string.js +4 -2
- package/dist/procedures/core/string.js.map +1 -1
- package/dist/procedures/core/type.d.ts.map +1 -1
- package/dist/procedures/core/type.js +4 -2
- package/dist/procedures/core/type.js.map +1 -1
- package/dist/procedures/define-procedure.d.ts +19 -7
- package/dist/procedures/define-procedure.d.ts.map +1 -1
- package/dist/procedures/define-procedure.js +57 -17
- package/dist/procedures/define-procedure.js.map +1 -1
- package/dist/procedures/discovery.d.ts +4 -6
- package/dist/procedures/discovery.d.ts.map +1 -1
- package/dist/procedures/discovery.js +4 -6
- package/dist/procedures/discovery.js.map +1 -1
- package/dist/procedures/effects.d.ts +16 -0
- package/dist/procedures/effects.d.ts.map +1 -1
- package/dist/procedures/effects.js +33 -0
- package/dist/procedures/effects.js.map +1 -1
- package/dist/procedures/idempotency.d.ts +73 -0
- package/dist/procedures/idempotency.d.ts.map +1 -0
- package/dist/procedures/idempotency.js +131 -0
- package/dist/procedures/idempotency.js.map +1 -0
- package/dist/procedures/index.d.ts +7 -3
- package/dist/procedures/index.d.ts.map +1 -1
- package/dist/procedures/index.js +6 -2
- package/dist/procedures/index.js.map +1 -1
- package/dist/procedures/interceptors.d.ts +17 -4
- package/dist/procedures/interceptors.d.ts.map +1 -1
- package/dist/procedures/interceptors.js +18 -7
- package/dist/procedures/interceptors.js.map +1 -1
- package/dist/procedures/invoke.d.ts +15 -3
- package/dist/procedures/invoke.d.ts.map +1 -1
- package/dist/procedures/invoke.js +8 -3
- package/dist/procedures/invoke.js.map +1 -1
- package/dist/procedures/manifest.d.ts +83 -0
- package/dist/procedures/manifest.d.ts.map +1 -0
- package/dist/procedures/manifest.js +90 -0
- package/dist/procedures/manifest.js.map +1 -0
- package/dist/procedures/ref.d.ts +4 -2
- package/dist/procedures/ref.d.ts.map +1 -1
- package/dist/procedures/ref.js +2 -1
- package/dist/procedures/ref.js.map +1 -1
- package/dist/procedures/runtime-programs.d.ts +19 -0
- package/dist/procedures/runtime-programs.d.ts.map +1 -0
- package/dist/procedures/runtime-programs.js +24 -0
- package/dist/procedures/runtime-programs.js.map +1 -0
- package/dist/procedures/types.d.ts +16 -0
- package/dist/procedures/types.d.ts.map +1 -1
- package/dist/procedures/types.js.map +1 -1
- package/dist/protocol.d.ts +47 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +68 -0
- package/dist/protocol.js.map +1 -0
- package/dist/server/host-policy.d.ts +4 -3
- package/dist/server/host-policy.d.ts.map +1 -1
- package/dist/server/host-policy.js +6 -3
- package/dist/server/host-policy.js.map +1 -1
- package/dist/server/host-procedures.d.ts +31 -0
- package/dist/server/host-procedures.d.ts.map +1 -0
- package/dist/server/host-procedures.js +75 -0
- package/dist/server/host-procedures.js.map +1 -0
- package/dist/server/index.d.ts +3 -3
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/procedure-server.d.ts +112 -5
- package/dist/server/procedure-server.d.ts.map +1 -1
- package/dist/server/procedure-server.js +273 -19
- package/dist/server/procedure-server.js.map +1 -1
- package/dist/server/request-auth.d.ts +19 -0
- package/dist/server/request-auth.d.ts.map +1 -0
- package/dist/server/request-auth.js +32 -0
- package/dist/server/request-auth.js.map +1 -0
- package/dist/server/types.d.ts +32 -0
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js.map +1 -1
- package/dist/timers.d.ts +60 -0
- package/dist/timers.d.ts.map +1 -0
- package/dist/timers.js +33 -0
- package/dist/timers.js.map +1 -0
- package/dist/tracing/traceparent.d.ts +26 -0
- package/dist/tracing/traceparent.d.ts.map +1 -0
- package/dist/tracing/traceparent.js +53 -0
- package/dist/tracing/traceparent.js.map +1 -0
- package/package.json +11 -4
- package/src/adapters/http/client/transport.ts +31 -3
- package/src/adapters/http/client/types.ts +3 -2
- package/src/adapters/http/server/transport.ts +61 -26
- package/src/adapters/http/shared/headers.ts +7 -6
- package/src/adapters/local/client/transport.ts +74 -7
- package/src/adapters/local/client/types.ts +18 -0
- package/src/adapters/mock/client/transport.ts +9 -6
- package/src/adapters/mock/client/types.ts +7 -6
- package/src/adapters/port/transport.ts +124 -0
- package/src/adapters/websocket/client/index.ts +1 -0
- package/src/adapters/websocket/client/node.ts +34 -0
- package/src/adapters/websocket/client/transport.ts +251 -81
- package/src/adapters/websocket/client/types.ts +81 -21
- package/src/adapters/websocket/server/transport.ts +199 -301
- package/src/adapters/websocket/server/types.ts +20 -1
- package/src/adapters/websocket/shared/rpc.ts +453 -0
- package/src/browser.ts +51 -3
- package/src/client/call-types.ts +10 -14
- package/src/client/client.ts +28 -9
- package/src/client/deadline.ts +64 -0
- package/src/client/errors/README.md +2 -0
- package/src/client/errors/factory.ts +12 -8
- package/src/client/errors/http-errors.ts +5 -0
- package/src/client/errors/index.ts +1 -1
- package/src/client/errors/registry.ts +79 -22
- package/src/client/index.ts +21 -3
- package/src/client/middleware/cache.ts +120 -23
- package/src/client/middleware/circuit-breaker.ts +65 -35
- package/src/client/middleware/contexts.ts +17 -10
- package/src/client/middleware/items.ts +101 -6
- package/src/client/middleware/lru.ts +12 -0
- package/src/client/middleware/rate-limit.ts +9 -9
- package/src/client/middleware/resilience.ts +81 -0
- package/src/client/middleware/retry.ts +146 -34
- package/src/client/middleware/timeout.ts +57 -55
- package/src/client/middleware/tracing.ts +13 -4
- package/src/client/types.ts +9 -1
- package/src/clock.ts +21 -0
- package/src/duration.ts +56 -0
- package/src/index.ts +4 -0
- package/src/machines.ts +186 -0
- package/src/node.ts +11 -0
- package/src/procedures/capability.ts +7 -8
- package/src/procedures/collection/index.ts +9 -1
- package/src/procedures/collection/procedures.ts +57 -0
- package/src/procedures/collection/schemas.ts +110 -0
- package/src/procedures/collection/storage.ts +38 -0
- package/src/procedures/core/array.ts +79 -31
- package/src/procedures/core/index.ts +17 -2
- package/src/procedures/core/logic.ts +1 -1
- package/src/procedures/core/math.ts +5 -1
- package/src/procedures/core/meta.ts +45 -8
- package/src/procedures/core/object.ts +48 -14
- package/src/procedures/core/operands.ts +7 -0
- package/src/procedures/core/string.ts +4 -2
- package/src/procedures/core/type.ts +4 -2
- package/src/procedures/define-procedure.ts +73 -20
- package/src/procedures/discovery.ts +4 -6
- package/src/procedures/effects.ts +35 -0
- package/src/procedures/idempotency.ts +152 -0
- package/src/procedures/index.ts +18 -2
- package/src/procedures/interceptors.ts +28 -11
- package/src/procedures/invoke.ts +19 -5
- package/src/procedures/manifest.ts +158 -0
- package/src/procedures/ref.ts +4 -2
- package/src/procedures/runtime-programs.ts +27 -0
- package/src/procedures/types.ts +16 -0
- package/src/protocol.ts +108 -0
- package/src/server/host-policy.ts +8 -5
- package/src/server/host-procedures.ts +102 -0
- package/src/server/index.ts +5 -2
- package/src/server/procedure-server.ts +328 -12
- package/src/server/request-auth.ts +35 -0
- package/src/server/types.ts +37 -0
- package/src/timers.ts +82 -0
- package/src/tracing/traceparent.ts +61 -0
- package/dist/procedures/cli/announce.d.ts +0 -67
- package/dist/procedures/cli/announce.d.ts.map +0 -1
- package/dist/procedures/cli/announce.js +0 -392
- package/dist/procedures/cli/announce.js.map +0 -1
- package/dist/procedures/cli/discover.d.ts +0 -66
- package/dist/procedures/cli/discover.d.ts.map +0 -1
- package/dist/procedures/cli/discover.js +0 -310
- package/dist/procedures/cli/discover.js.map +0 -1
- package/dist/procedures/cli/index.d.ts +0 -13
- package/dist/procedures/cli/index.d.ts.map +0 -1
- package/dist/procedures/cli/index.js +0 -203
- package/dist/procedures/cli/index.js.map +0 -1
- package/dist/procedures/cli/init.d.ts +0 -17
- package/dist/procedures/cli/init.d.ts.map +0 -1
- package/dist/procedures/cli/init.js +0 -336
- package/dist/procedures/cli/init.js.map +0 -1
- package/src/procedures/cli/announce.ts +0 -470
- package/src/procedures/cli/discover.ts +0 -390
- package/src/procedures/cli/index.ts +0 -231
- package/src/procedures/cli/init.ts +0 -370
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../../src/client/middleware/timeout.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../../src/client/middleware/timeout.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../../src/client/middleware/tracing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../../src/client/middleware/tracing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,MAAM,CAAC;IAE/B,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,MAAM,CAAC;IAE9B,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAEnE,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AASD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,cAAmB,GAC3B,qBAAqB,CAAC,cAAc,EAAE,EAAE,CAAC,CA8C3C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,6BAA6B,IAAI,qBAAqB,CAAC,cAAc,EAAE,EAAE,CAAC,CAWzF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,IAAI,CAWP"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
*
|
|
12
12
|
* Compatible with OpenTelemetry, Jaeger, and custom tracing systems.
|
|
13
13
|
*/
|
|
14
|
+
import { TRACEPARENT_METADATA_KEY, formatTraceparent, isW3cIds, newSpanId, newTraceId, parseTraceparent } from "../../tracing/traceparent.js";
|
|
14
15
|
/**
|
|
15
16
|
* Generate a simple unique ID (UUID v4 subset)
|
|
16
17
|
*/
|
|
@@ -74,12 +75,14 @@ function generateId() {
|
|
|
74
75
|
* ```
|
|
75
76
|
*/
|
|
76
77
|
export function createTracingMiddleware(options = {}) {
|
|
77
|
-
|
|
78
|
+
// W3C ids by default, so the server continues the trace (roadmap R16)
|
|
79
|
+
const { generateTraceId = newTraceId, generateSpanId = newSpanId, getCurrentTrace, serviceName, } = options;
|
|
78
80
|
return (next) => async function* (context) {
|
|
79
81
|
// Check if there's already tracing metadata
|
|
80
82
|
if (!context.message.metadata.tracing) {
|
|
81
|
-
// Try to get current trace context
|
|
82
|
-
|
|
83
|
+
// Try to get current trace context: the function of the options, or the trace context of
|
|
84
|
+
// the caller (a call that a handler makes on a server carries the span of that handler)
|
|
85
|
+
const currentTrace = getCurrentTrace?.() ?? parseTraceparent(context.message.metadata[TRACEPARENT_METADATA_KEY]) ?? null;
|
|
83
86
|
if (currentTrace) {
|
|
84
87
|
// Continue existing trace (create child span)
|
|
85
88
|
context.message.metadata.tracing = {
|
|
@@ -100,6 +103,11 @@ export function createTracingMiddleware(options = {}) {
|
|
|
100
103
|
context.message.metadata["serviceName"] = serviceName;
|
|
101
104
|
}
|
|
102
105
|
}
|
|
106
|
+
// The W3C trace context of the call: the server continues this trace (R16)
|
|
107
|
+
const tracing = context.message.metadata.tracing;
|
|
108
|
+
if (tracing && isW3cIds(tracing.traceId, tracing.spanId)) {
|
|
109
|
+
context.message.metadata[TRACEPARENT_METADATA_KEY] = formatTraceparent(tracing.traceId, tracing.spanId);
|
|
110
|
+
}
|
|
103
111
|
// Continue middleware chain
|
|
104
112
|
yield* next(context);
|
|
105
113
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../../src/client/middleware/tracing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../../src/client/middleware/tracing.ts"],"names":[],"mappings":"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"}
|
package/dist/client/types.d.ts
CHANGED
|
@@ -22,7 +22,13 @@ export interface Method {
|
|
|
22
22
|
service: string;
|
|
23
23
|
/** Operation name (e.g., "get", "create", "update", "delete", "watch") */
|
|
24
24
|
operation: string;
|
|
25
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Optional version (e.g., "v1", "v2").
|
|
27
|
+
*
|
|
28
|
+
* @deprecated The wire protocol (v1, roadmap R25) has no version of a procedure: the server
|
|
29
|
+
* ignores this field. A URL strategy can put it in the path. Use a new path for a procedure
|
|
30
|
+
* that changes in a way that is not compatible.
|
|
31
|
+
*/
|
|
26
32
|
version?: string;
|
|
27
33
|
}
|
|
28
34
|
/**
|
|
@@ -58,6 +64,8 @@ export interface Metadata {
|
|
|
58
64
|
retry?: {
|
|
59
65
|
attempt: number;
|
|
60
66
|
maxAttempts: number;
|
|
67
|
+
/** True: a second run of the call changes nothing more, so a retry is safe */
|
|
68
|
+
idempotent?: boolean;
|
|
61
69
|
};
|
|
62
70
|
/** Extensible for custom fields */
|
|
63
71
|
[key: string]: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,WAAW,MAAM;IACrB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAEhB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAElB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"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"}
|
package/dist/client/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA+TH;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAElB,MAAM;IACN,UAAU;IAF5B,YACkB,MAA0C,EAC1C,UAAkB;QAElC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;sBAHN,MAAM;0BACN,UAAU;QAG1B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IAC/B,CAAC;CACF"}
|
package/dist/clock.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The clock of the core (roadmap R35). The retry, the circuit breaker and the WebSocket client
|
|
3
|
+
* read the time and start their timers only through a clock. Thus a test gives a fake clock, and
|
|
4
|
+
* the timing is exact and repeatable.
|
|
5
|
+
*
|
|
6
|
+
* The clock comes from `@mark1russell7/service/clock` (roadmap R37). The entry imports nothing
|
|
7
|
+
* else, and it has 228 bytes of gzip. The `fakeClock` of `@mark1russell7/service/testing` fits here.
|
|
8
|
+
* A `Cancel` of the platform also has `unref`. The circuit breaker uses it for its reset: a breaker
|
|
9
|
+
* must not keep a process alive for its reset time (BUGS-2026-07 M4).
|
|
10
|
+
*/
|
|
11
|
+
import { type Cancel, type Clock } from "@mark1russell7/service/clock";
|
|
12
|
+
export type { Cancel, Clock };
|
|
13
|
+
/**
|
|
14
|
+
* The clock of the platform: `performance.now()` and `setTimeout`. Its timers keep a Node process
|
|
15
|
+
* alive, as `setTimeout` does: a script that waits for a retry does not end during the wait. The
|
|
16
|
+
* `realClock` of the service package is different: its timers do not keep a process alive.
|
|
17
|
+
*/
|
|
18
|
+
export declare const realClock: Clock;
|
|
19
|
+
//# sourceMappingURL=clock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../src/clock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAiB,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAEtF,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAE9B;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAAE,KAAuB,CAAC"}
|
package/dist/clock.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The clock of the core (roadmap R35). The retry, the circuit breaker and the WebSocket client
|
|
3
|
+
* read the time and start their timers only through a clock. Thus a test gives a fake clock, and
|
|
4
|
+
* the timing is exact and repeatable.
|
|
5
|
+
*
|
|
6
|
+
* The clock comes from `@mark1russell7/service/clock` (roadmap R37). The entry imports nothing
|
|
7
|
+
* else, and it has 228 bytes of gzip. The `fakeClock` of `@mark1russell7/service/testing` fits here.
|
|
8
|
+
* A `Cancel` of the platform also has `unref`. The circuit breaker uses it for its reset: a breaker
|
|
9
|
+
* must not keep a process alive for its reset time (BUGS-2026-07 M4).
|
|
10
|
+
*/
|
|
11
|
+
import { platformClock } from "@mark1russell7/service/clock";
|
|
12
|
+
/**
|
|
13
|
+
* The clock of the platform: `performance.now()` and `setTimeout`. Its timers keep a Node process
|
|
14
|
+
* alive, as `setTimeout` does: a script that waits for a retry does not end during the wait. The
|
|
15
|
+
* `realClock` of the service package is different: its timers do not keep a process alive.
|
|
16
|
+
*/
|
|
17
|
+
export const realClock = platformClock();
|
|
18
|
+
//# sourceMappingURL=clock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clock.js","sourceRoot":"","sources":["../src/clock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAA2B,MAAM,8BAA8B,CAAC;AAItF;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAU,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed durations (roadmap R11).
|
|
3
|
+
*
|
|
4
|
+
* Each public option of this package that is a time takes a `Duration`: a quantity of
|
|
5
|
+
* `@mark1russell7/quantity` with a time unit. A plain number is a type error, so `timeout: 5`
|
|
6
|
+
* cannot mean five milliseconds in one place and five seconds in another. The wire keeps
|
|
7
|
+
* milliseconds (`procedure-timeout`), and the internals convert each duration one time, when an
|
|
8
|
+
* option is read.
|
|
9
|
+
*
|
|
10
|
+
* `@mark1russell7/quantity` has no `Duration` type yet. This alias narrows its `Quantity` to the
|
|
11
|
+
* time units, so the type also refuses `{ value: 5, unit: "kg" }`.
|
|
12
|
+
*/
|
|
13
|
+
import { type Quantity } from "@mark1russell7/quantity";
|
|
14
|
+
/** The canonical time units of `@mark1russell7/quantity` that a duration of this package uses. */
|
|
15
|
+
export type TimeUnit = "ns" | "us" | "ms" | "s" | "min" | "h" | "d";
|
|
16
|
+
/** A time: a quantity with a time unit. */
|
|
17
|
+
export type Duration = Quantity & {
|
|
18
|
+
readonly unit: TimeUnit;
|
|
19
|
+
};
|
|
20
|
+
/** This function makes a duration of milliseconds. */
|
|
21
|
+
export declare const ms: (value: number) => Duration;
|
|
22
|
+
/** This function makes a duration of seconds. */
|
|
23
|
+
export declare const seconds: (value: number) => Duration;
|
|
24
|
+
/** This function makes a duration of minutes. */
|
|
25
|
+
export declare const minutes: (value: number) => Duration;
|
|
26
|
+
/** This function makes a duration of hours. */
|
|
27
|
+
export declare const hours: (value: number) => Duration;
|
|
28
|
+
/** True when a value is a duration: a finite number with a time unit. */
|
|
29
|
+
export declare function isDuration(value: unknown): value is Duration;
|
|
30
|
+
/**
|
|
31
|
+
* The number of milliseconds of a duration. A value that is not a duration (a plain number, or
|
|
32
|
+
* a quantity of another kind) throws a `TypeError` that names the option.
|
|
33
|
+
*/
|
|
34
|
+
export declare function toMs(duration: Duration, option?: string): number;
|
|
35
|
+
/** The milliseconds of an optional duration, or undefined. */
|
|
36
|
+
export declare function optionalMs(duration: Duration | undefined, option?: string): number | undefined;
|
|
37
|
+
//# sourceMappingURL=duration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../src/duration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAE3E,kGAAkG;AAClG,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;AAEpE,2CAA2C;AAC3C,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAI9D,sDAAsD;AACtD,eAAO,MAAM,EAAE,UAAW,MAAM,KAAG,QAA6C,CAAC;AACjF,iDAAiD;AACjD,eAAO,MAAM,OAAO,UAAW,MAAM,KAAG,QAA4C,CAAC;AACrF,iDAAiD;AACjD,eAAO,MAAM,OAAO,UAAW,MAAM,KAAG,QAA8C,CAAC;AACvF,+CAA+C;AAC/C,eAAO,MAAM,KAAK,UAAW,MAAM,KAAG,QAA4C,CAAC;AAEnF,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAI5D;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAa,GAAG,MAAM,CAOpE;AAED,8DAA8D;AAC9D,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE9F"}
|
package/dist/duration.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed durations (roadmap R11).
|
|
3
|
+
*
|
|
4
|
+
* Each public option of this package that is a time takes a `Duration`: a quantity of
|
|
5
|
+
* `@mark1russell7/quantity` with a time unit. A plain number is a type error, so `timeout: 5`
|
|
6
|
+
* cannot mean five milliseconds in one place and five seconds in another. The wire keeps
|
|
7
|
+
* milliseconds (`procedure-timeout`), and the internals convert each duration one time, when an
|
|
8
|
+
* option is read.
|
|
9
|
+
*
|
|
10
|
+
* `@mark1russell7/quantity` has no `Duration` type yet. This alias narrows its `Quantity` to the
|
|
11
|
+
* time units, so the type also refuses `{ value: 5, unit: "kg" }`.
|
|
12
|
+
*/
|
|
13
|
+
import { quantity, valueIn } from "@mark1russell7/quantity";
|
|
14
|
+
const TIME_UNITS = new Set(["ns", "us", "ms", "s", "min", "h", "d"]);
|
|
15
|
+
/** This function makes a duration of milliseconds. */
|
|
16
|
+
export const ms = (value) => quantity(value, "ms");
|
|
17
|
+
/** This function makes a duration of seconds. */
|
|
18
|
+
export const seconds = (value) => quantity(value, "s");
|
|
19
|
+
/** This function makes a duration of minutes. */
|
|
20
|
+
export const minutes = (value) => quantity(value, "min");
|
|
21
|
+
/** This function makes a duration of hours. */
|
|
22
|
+
export const hours = (value) => quantity(value, "h");
|
|
23
|
+
/** True when a value is a duration: a finite number with a time unit. */
|
|
24
|
+
export function isDuration(value) {
|
|
25
|
+
if (value === null || typeof value !== "object")
|
|
26
|
+
return false;
|
|
27
|
+
const { value: amount, unit } = value;
|
|
28
|
+
return typeof amount === "number" && Number.isFinite(amount) && typeof unit === "string" && TIME_UNITS.has(unit);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The number of milliseconds of a duration. A value that is not a duration (a plain number, or
|
|
32
|
+
* a quantity of another kind) throws a `TypeError` that names the option.
|
|
33
|
+
*/
|
|
34
|
+
export function toMs(duration, option = "duration") {
|
|
35
|
+
if (!isDuration(duration)) {
|
|
36
|
+
throw new TypeError(`${option} must be a duration such as ms(500) or seconds(2), got ${JSON.stringify(duration)}. Plain numbers are not durations (roadmap R11).`);
|
|
37
|
+
}
|
|
38
|
+
return valueIn(duration, "ms");
|
|
39
|
+
}
|
|
40
|
+
/** The milliseconds of an optional duration, or undefined. */
|
|
41
|
+
export function optionalMs(duration, option) {
|
|
42
|
+
return duration === undefined ? undefined : toMs(duration, option);
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=duration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duration.js","sourceRoot":"","sources":["../src/duration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAiB,MAAM,yBAAyB,CAAC;AAQ3E,MAAM,UAAU,GAAwB,IAAI,GAAG,CAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEpG,sDAAsD;AACtD,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAa,EAAY,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAa,CAAC;AACjF,iDAAiD;AACjD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAa,EAAY,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAa,CAAC;AACrF,iDAAiD;AACjD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAa,EAAY,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAa,CAAC;AACvF,+CAA+C;AAC/C,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAa,EAAY,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAa,CAAC;AAEnF,yEAAyE;AACzE,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAA4C,CAAC;IAC7E,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,IAAI,CAAC,QAAkB,EAAE,MAAM,GAAG,UAAU;IAC1D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,SAAS,CACjB,GAAG,MAAM,0DAA0D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,kDAAkD,CAC9I,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,UAAU,CAAC,QAA8B,EAAE,MAAe;IACxE,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACrE,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,10 @@
|
|
|
6
6
|
*
|
|
7
7
|
* This entry point is for Node. It exports the browser-safe entry point
|
|
8
8
|
* ("@procedures/client/browser") and the server transports, which use `http` and `ws`.
|
|
9
|
+
*
|
|
10
|
+
* The `WebSocketTransport` of this entry uses the global `WebSocket`, because some applications
|
|
11
|
+
* bundle this entry for a browser. The Node entry "@procedures/client/node" has a
|
|
12
|
+
* `WebSocketTransport` whose sockets are of the `ws` package: a drop ends them at once.
|
|
9
13
|
*/
|
|
10
14
|
export * from "./browser.js";
|
|
11
15
|
export { HttpServerTransport, defaultServerUrlStrategy, rpcServerUrlStrategy, } from "./server/index.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,cAAc,cAAc,CAAC;AAK7B,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,0BAA0B,EAC1B,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC/G,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAClG,YAAY,EACV,+BAA+B,EAC/B,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,GACjB,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,10 @@
|
|
|
6
6
|
*
|
|
7
7
|
* This entry point is for Node. It exports the browser-safe entry point
|
|
8
8
|
* ("@procedures/client/browser") and the server transports, which use `http` and `ws`.
|
|
9
|
+
*
|
|
10
|
+
* The `WebSocketTransport` of this entry uses the global `WebSocket`, because some applications
|
|
11
|
+
* bundle this entry for a browser. The Node entry "@procedures/client/node" has a
|
|
12
|
+
* `WebSocketTransport` whose sockets are of the `ws` package: a drop ends them at once.
|
|
9
13
|
*/
|
|
10
14
|
export * from "./browser.js";
|
|
11
15
|
// ============================================================================
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,cAAc,cAAc,CAAC;AAE7B,+EAA+E;AAC/E,gCAAgC;AAChC,+EAA+E;AAC/E,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The state machines of the core as data (roadmap R35): the connection of the WebSocket client
|
|
3
|
+
* and the circuit breaker. The documents have the format `mark1russell7.machine/1` of
|
|
4
|
+
* `@mark1russell7/algebra`. They are the specification, and the code implements them. Their knobs
|
|
5
|
+
* are the default times of the core (`TIMER_DEFAULTS`), and their timers say which knob gives each
|
|
6
|
+
* wait.
|
|
7
|
+
*
|
|
8
|
+
* The code reports each change of its state as a `MachineTransition` (the option `onTransition`).
|
|
9
|
+
* `replayTransitions()` replays the reports of a run against a document, so a test finds each
|
|
10
|
+
* change that the document does not allow. It uses `replay` of `@mark1russell7/algebra/replay`
|
|
11
|
+
* (roadmap R37). That entry imports nothing else, and it has 418 bytes of gzip.
|
|
12
|
+
*/
|
|
13
|
+
/** A change of state that the code reports. It has the fields of a lifecycle event of `@mark1russell7/service`. */
|
|
14
|
+
export interface MachineTransition {
|
|
15
|
+
/** The id of the document. */
|
|
16
|
+
readonly machine: string;
|
|
17
|
+
/** The instance: one connection, one breaker. */
|
|
18
|
+
readonly instance: string;
|
|
19
|
+
readonly from: string;
|
|
20
|
+
readonly on: string;
|
|
21
|
+
readonly to: string;
|
|
22
|
+
/** The time of the clock of the instance, in milliseconds. */
|
|
23
|
+
readonly at: number;
|
|
24
|
+
}
|
|
25
|
+
/** A time of a timer: one knob, in a unit. */
|
|
26
|
+
export interface MachineDuration {
|
|
27
|
+
readonly knob: string;
|
|
28
|
+
readonly unit: string;
|
|
29
|
+
}
|
|
30
|
+
/** A timer of a document: the events that start and stop it, and the event that it gives. */
|
|
31
|
+
export interface MachineTimer {
|
|
32
|
+
readonly duration: MachineDuration;
|
|
33
|
+
readonly arms: readonly string[];
|
|
34
|
+
readonly cancels?: readonly string[] | undefined;
|
|
35
|
+
readonly fires: string;
|
|
36
|
+
/** A timer that starts again after it fires, with a longer wait each time. */
|
|
37
|
+
readonly backoff?: {
|
|
38
|
+
readonly resets: readonly string[];
|
|
39
|
+
} | undefined;
|
|
40
|
+
readonly note?: string | undefined;
|
|
41
|
+
}
|
|
42
|
+
/** A transition of a document. */
|
|
43
|
+
export interface MachineTransitionDef {
|
|
44
|
+
readonly id: string;
|
|
45
|
+
readonly from: string | readonly string[];
|
|
46
|
+
readonly on: string | readonly string[];
|
|
47
|
+
readonly to: string;
|
|
48
|
+
readonly timer?: string | undefined;
|
|
49
|
+
readonly note?: string | undefined;
|
|
50
|
+
}
|
|
51
|
+
/** A machine document: the subset of `mark1russell7.machine/1` that the core uses. */
|
|
52
|
+
export interface MachineDocument {
|
|
53
|
+
readonly format: "mark1russell7.machine/1";
|
|
54
|
+
readonly id: string;
|
|
55
|
+
readonly title: string;
|
|
56
|
+
readonly layer: "self";
|
|
57
|
+
readonly version: string;
|
|
58
|
+
readonly sources: ReadonlyArray<{
|
|
59
|
+
readonly ref: string;
|
|
60
|
+
readonly rung: "implemented";
|
|
61
|
+
}>;
|
|
62
|
+
readonly states: Readonly<Record<string, {
|
|
63
|
+
readonly initial?: boolean;
|
|
64
|
+
readonly final?: boolean;
|
|
65
|
+
readonly note?: string;
|
|
66
|
+
}>>;
|
|
67
|
+
readonly events: Readonly<Record<string, {
|
|
68
|
+
readonly kind: "rx" | "tx" | "app" | "timer" | "local";
|
|
69
|
+
readonly note?: string;
|
|
70
|
+
}>>;
|
|
71
|
+
readonly knobs: Readonly<Record<string, {
|
|
72
|
+
readonly key: string;
|
|
73
|
+
readonly scope: string;
|
|
74
|
+
readonly unit: string | null;
|
|
75
|
+
readonly default: number | null;
|
|
76
|
+
}>>;
|
|
77
|
+
readonly timers: Readonly<Record<string, MachineTimer>>;
|
|
78
|
+
readonly transitions: readonly MachineTransitionDef[];
|
|
79
|
+
}
|
|
80
|
+
/** The connection of the WebSocket client (`WebSocketTransport`). */
|
|
81
|
+
export declare const WEBSOCKET_CONNECTION_MACHINE: MachineDocument;
|
|
82
|
+
/** The circuit breaker (`createCircuitBreakerMiddleware`). */
|
|
83
|
+
export declare const CIRCUIT_BREAKER_MACHINE: MachineDocument;
|
|
84
|
+
/**
|
|
85
|
+
* This function replays the reported transitions of one document. Each instance starts in the
|
|
86
|
+
* state that its first transition leaves. Each transition must leave the state where the replay
|
|
87
|
+
* is, and the document must allow it. The function gives each disagreement.
|
|
88
|
+
*/
|
|
89
|
+
export declare function replayTransitions(machine: MachineDocument, events: readonly MachineTransition[]): string[];
|
|
90
|
+
//# sourceMappingURL=machines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machines.d.ts","sourceRoot":"","sources":["../src/machines.ts"],"names":[],"mappings":"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"}
|
package/dist/machines.js
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The state machines of the core as data (roadmap R35): the connection of the WebSocket client
|
|
3
|
+
* and the circuit breaker. The documents have the format `mark1russell7.machine/1` of
|
|
4
|
+
* `@mark1russell7/algebra`. They are the specification, and the code implements them. Their knobs
|
|
5
|
+
* are the default times of the core (`TIMER_DEFAULTS`), and their timers say which knob gives each
|
|
6
|
+
* wait.
|
|
7
|
+
*
|
|
8
|
+
* The code reports each change of its state as a `MachineTransition` (the option `onTransition`).
|
|
9
|
+
* `replayTransitions()` replays the reports of a run against a document, so a test finds each
|
|
10
|
+
* change that the document does not allow. It uses `replay` of `@mark1russell7/algebra/replay`
|
|
11
|
+
* (roadmap R37). That entry imports nothing else, and it has 418 bytes of gzip.
|
|
12
|
+
*/
|
|
13
|
+
import { replay } from "@mark1russell7/algebra/replay";
|
|
14
|
+
import { TIMER_DEFAULTS } from "./timers.js";
|
|
15
|
+
const SOURCE = [{ ref: "packages/client/src (the core implements this document)", rung: "implemented" }];
|
|
16
|
+
const ms = (knob) => ({ knob, unit: "ms" });
|
|
17
|
+
const client = TIMER_DEFAULTS.webSocketClient;
|
|
18
|
+
/** The connection of the WebSocket client (`WebSocketTransport`). */
|
|
19
|
+
export const WEBSOCKET_CONNECTION_MACHINE = {
|
|
20
|
+
format: "mark1russell7.machine/1",
|
|
21
|
+
id: "procedures.machine.websocket-connection",
|
|
22
|
+
title: "The connection of the WebSocket client",
|
|
23
|
+
layer: "self",
|
|
24
|
+
version: "0.2.3",
|
|
25
|
+
sources: SOURCE,
|
|
26
|
+
states: {
|
|
27
|
+
DISCONNECTED: { initial: true, note: "no socket" },
|
|
28
|
+
CONNECTING: { note: "the handshake, with its time limit" },
|
|
29
|
+
CONNECTED: { note: "the calls and the heartbeat" },
|
|
30
|
+
RECONNECTING: { note: "the backoff before the next try" },
|
|
31
|
+
DISCONNECTING: { note: "close() ends the socket and the calls" },
|
|
32
|
+
},
|
|
33
|
+
events: {
|
|
34
|
+
connect: { kind: "app", note: "the transport starts" },
|
|
35
|
+
"reconnect-due": { kind: "timer" },
|
|
36
|
+
open: { kind: "rx", note: "the handshake ends" },
|
|
37
|
+
drop: { kind: "local", note: "the socket closes, or an error ends it" },
|
|
38
|
+
"handshake-timeout": { kind: "timer" },
|
|
39
|
+
"ping-due": { kind: "timer" },
|
|
40
|
+
pong: { kind: "rx" },
|
|
41
|
+
"pong-timeout": { kind: "timer", note: "a drop after the last allowed miss" },
|
|
42
|
+
"give-up": { kind: "local", note: "a drop without reconnect, or without tries left" },
|
|
43
|
+
close: { kind: "app", note: "close() of the application" },
|
|
44
|
+
closed: { kind: "local" },
|
|
45
|
+
},
|
|
46
|
+
knobs: {
|
|
47
|
+
connection_timeout: { key: "connectionTimeout", scope: "client", unit: "ms", default: client.connectionTimeoutMs },
|
|
48
|
+
request_timeout: { key: "requestTimeout", scope: "client", unit: "ms", default: client.requestTimeoutMs },
|
|
49
|
+
heartbeat_interval: { key: "heartbeat.interval", scope: "client", unit: "ms", default: client.heartbeatIntervalMs },
|
|
50
|
+
heartbeat_timeout: { key: "heartbeat.timeout", scope: "client", unit: "ms", default: client.heartbeatTimeoutMs },
|
|
51
|
+
heartbeat_misses: { key: "heartbeat.misses", scope: "client", unit: "count", default: client.heartbeatMisses },
|
|
52
|
+
reconnect_initial_delay: { key: "reconnect.initialDelay", scope: "client", unit: "ms", default: client.reconnectInitialDelayMs },
|
|
53
|
+
reconnect_max_delay: { key: "reconnect.maxDelay", scope: "client", unit: "ms", default: client.reconnectMaxDelayMs },
|
|
54
|
+
},
|
|
55
|
+
timers: {
|
|
56
|
+
handshake: { duration: ms("connection_timeout"), arms: ["enter:CONNECTING"], cancels: ["open", "drop", "close"], fires: "handshake-timeout" },
|
|
57
|
+
reconnect: {
|
|
58
|
+
duration: ms("reconnect_max_delay"),
|
|
59
|
+
arms: ["enter:RECONNECTING"],
|
|
60
|
+
cancels: ["close"],
|
|
61
|
+
fires: "reconnect-due",
|
|
62
|
+
backoff: { resets: ["open"] },
|
|
63
|
+
note: "the longest wait: try n waits a random time up to min(maxDelay, initialDelay × 2^(n-1))",
|
|
64
|
+
},
|
|
65
|
+
ping: { duration: ms("heartbeat_interval"), arms: ["enter:CONNECTED", "ping-due"], cancels: ["drop", "close"], fires: "ping-due" },
|
|
66
|
+
pong: { duration: ms("heartbeat_timeout"), arms: ["ping-due"], cancels: ["pong", "drop", "close"], fires: "pong-timeout" },
|
|
67
|
+
},
|
|
68
|
+
transitions: [
|
|
69
|
+
{ id: "connect", from: "DISCONNECTED", on: "connect", to: "CONNECTING" },
|
|
70
|
+
{ id: "reconnect", from: "RECONNECTING", on: "reconnect-due", to: "CONNECTING", timer: "reconnect" },
|
|
71
|
+
{ id: "open", from: "CONNECTING", on: "open", to: "CONNECTED" },
|
|
72
|
+
{
|
|
73
|
+
id: "drop",
|
|
74
|
+
from: ["CONNECTING", "CONNECTED", "RECONNECTING"],
|
|
75
|
+
on: ["drop", "handshake-timeout", "pong-timeout"],
|
|
76
|
+
to: "RECONNECTING",
|
|
77
|
+
note: "the code reports each of them as drop",
|
|
78
|
+
},
|
|
79
|
+
{ id: "give-up", from: ["CONNECTING", "CONNECTED", "RECONNECTING"], on: "give-up", to: "DISCONNECTED" },
|
|
80
|
+
{ id: "close", from: ["DISCONNECTED", "CONNECTING", "CONNECTED", "RECONNECTING"], on: "close", to: "DISCONNECTING" },
|
|
81
|
+
{ id: "closed", from: "DISCONNECTING", on: "closed", to: "DISCONNECTED" },
|
|
82
|
+
],
|
|
83
|
+
};
|
|
84
|
+
/** The circuit breaker (`createCircuitBreakerMiddleware`). */
|
|
85
|
+
export const CIRCUIT_BREAKER_MACHINE = {
|
|
86
|
+
format: "mark1russell7.machine/1",
|
|
87
|
+
id: "procedures.machine.circuit-breaker",
|
|
88
|
+
title: "The circuit breaker",
|
|
89
|
+
layer: "self",
|
|
90
|
+
version: "0.2.3",
|
|
91
|
+
sources: SOURCE,
|
|
92
|
+
states: {
|
|
93
|
+
CLOSED: { initial: true, note: "each call goes through. The window counts the failures of availability." },
|
|
94
|
+
OPEN: { note: "each call fails at once, until the reset time" },
|
|
95
|
+
HALF_OPEN: { note: "a limited number of probes go through" },
|
|
96
|
+
},
|
|
97
|
+
events: {
|
|
98
|
+
"failure-threshold": { kind: "local", note: "the window has the threshold of failures" },
|
|
99
|
+
"reset-timeout": { kind: "timer" },
|
|
100
|
+
"probe-failure": { kind: "local" },
|
|
101
|
+
"probe-successes": { kind: "local", note: "the threshold of successes of the probes" },
|
|
102
|
+
},
|
|
103
|
+
knobs: {
|
|
104
|
+
failure_threshold: { key: "failureThreshold", scope: "client", unit: "count", default: 5 },
|
|
105
|
+
failure_window: { key: "failureWindow", scope: "client", unit: "ms", default: TIMER_DEFAULTS.circuitBreaker.failureWindowMs },
|
|
106
|
+
reset_timeout: { key: "resetTimeout", scope: "client", unit: "ms", default: TIMER_DEFAULTS.circuitBreaker.resetTimeoutMs },
|
|
107
|
+
success_threshold: { key: "successThreshold", scope: "client", unit: "count", default: 2 },
|
|
108
|
+
},
|
|
109
|
+
timers: {
|
|
110
|
+
reset: { duration: ms("reset_timeout"), arms: ["failure-threshold", "probe-failure"], cancels: ["probe-successes"], fires: "reset-timeout" },
|
|
111
|
+
},
|
|
112
|
+
transitions: [
|
|
113
|
+
{ id: "trip", from: "CLOSED", on: "failure-threshold", to: "OPEN" },
|
|
114
|
+
{ id: "reset", from: "OPEN", on: "reset-timeout", to: "HALF_OPEN", timer: "reset" },
|
|
115
|
+
{ id: "reopen", from: "HALF_OPEN", on: "probe-failure", to: "OPEN" },
|
|
116
|
+
{ id: "recover", from: "HALF_OPEN", on: "probe-successes", to: "CLOSED" },
|
|
117
|
+
],
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* This function replays the reported transitions of one document. Each instance starts in the
|
|
121
|
+
* state that its first transition leaves. Each transition must leave the state where the replay
|
|
122
|
+
* is, and the document must allow it. The function gives each disagreement.
|
|
123
|
+
*/
|
|
124
|
+
export function replayTransitions(machine, events) {
|
|
125
|
+
return replay(machine, events, { machine: machine.id });
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=machines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machines.js","sourceRoot":"","sources":["../src/machines.ts"],"names":[],"mappings":"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"}
|
package/dist/node.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Node entry of `@procedures/client`: `@procedures/client/node`.
|
|
3
|
+
*
|
|
4
|
+
* This entry exports the client transports with the defaults of Node. Its `WebSocketTransport`
|
|
5
|
+
* uses the `WebSocket` class of the `ws` package, so a drop ends a socket at once with
|
|
6
|
+
* `terminate()` (finding of roadmap R36). The other entries keep the global `WebSocket`: a browser
|
|
7
|
+
* bundle imports `@procedures/client/browser`, and that entry does not import `ws`.
|
|
8
|
+
*/
|
|
9
|
+
export { WebSocketTransport } from "./adapters/websocket/client/node.js";
|
|
10
|
+
export type { WebSocketTransportOptions, WebSocketClass } from "./adapters/websocket/client/types.js";
|
|
11
|
+
//# sourceMappingURL=node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,YAAY,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC"}
|
package/dist/node.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Node entry of `@procedures/client`: `@procedures/client/node`.
|
|
3
|
+
*
|
|
4
|
+
* This entry exports the client transports with the defaults of Node. Its `WebSocketTransport`
|
|
5
|
+
* uses the `WebSocket` class of the `ws` package, so a drop ends a socket at once with
|
|
6
|
+
* `terminate()` (finding of roadmap R36). The other entries keep the global `WebSocket`: a browser
|
|
7
|
+
* bundle imports `@procedures/client/browser`, and that entry does not import `ws`.
|
|
8
|
+
*/
|
|
9
|
+
export { WebSocketTransport } from "./adapters/websocket/client/node.js";
|
|
10
|
+
//# sourceMappingURL=node.js.map
|
package/dist/node.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC"}
|