@ferricstore/ferricstore 0.2.0 → 0.3.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.
Files changed (88) hide show
  1. package/README.md +20 -3
  2. package/dist/index.cjs +515 -124
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +58 -7
  5. package/dist/index.d.ts +58 -7
  6. package/dist/index.js +502 -113
  7. package/dist/index.js.map +1 -1
  8. package/docs/api/assets/hierarchy.js +1 -1
  9. package/docs/api/assets/navigation.js +1 -1
  10. package/docs/api/assets/search.js +1 -1
  11. package/docs/api/classes/ClaimHydrationError.html +1 -1
  12. package/docs/api/classes/ConnectionClosedError.html +1 -1
  13. package/docs/api/classes/FerricStoreClient.html +3 -3
  14. package/docs/api/classes/FerricStoreError.html +1 -1
  15. package/docs/api/classes/FlowAlreadyExistsError.html +2 -2
  16. package/docs/api/classes/FlowBatchError.html +1 -1
  17. package/docs/api/classes/FlowNotFoundError.html +1 -1
  18. package/docs/api/classes/FlowWrongStateError.html +1 -1
  19. package/docs/api/classes/InvalidCommandError.html +2 -2
  20. package/docs/api/classes/LeaseRenewalError.html +1 -1
  21. package/docs/api/classes/LockHeldError.html +2 -2
  22. package/docs/api/classes/LockNotOwnedError.html +2 -2
  23. package/docs/api/classes/OverloadedError.html +2 -2
  24. package/docs/api/classes/QueueCompletionError.html +1 -1
  25. package/docs/api/classes/ReconnectingExecutor.html +4 -4
  26. package/docs/api/classes/RequestTimeoutError.html +1 -1
  27. package/docs/api/classes/RerouteError.html +2 -2
  28. package/docs/api/classes/StaleLeaseError.html +1 -1
  29. package/docs/api/classes/StalePolicyGenerationError.html +39 -0
  30. package/docs/api/classes/TopologyNativeAdapterPool.html +3 -3
  31. package/docs/api/classes/Workflow.html +1 -1
  32. package/docs/api/classes/WorkflowWorker.html +2 -2
  33. package/docs/api/functions/classifyServerError.html +1 -1
  34. package/docs/api/functions/isReconnectableClosedConnectionError.html +1 -1
  35. package/docs/api/functions/mapException.html +1 -1
  36. package/docs/api/hierarchy.html +1 -1
  37. package/docs/api/index.html +8 -4
  38. package/docs/api/interfaces/AdminListOptions.html +1 -1
  39. package/docs/api/interfaces/CancelOptions.html +2 -2
  40. package/docs/api/interfaces/CompleteOptions.html +2 -2
  41. package/docs/api/interfaces/CompleteOutcome.html +1 -1
  42. package/docs/api/interfaces/CreateManyOptions.html +1 -1
  43. package/docs/api/interfaces/EffectCompensateOptions.html +1 -1
  44. package/docs/api/interfaces/EffectConfirmOptions.html +1 -1
  45. package/docs/api/interfaces/EffectFailOptions.html +1 -1
  46. package/docs/api/interfaces/EffectStatusOptions.html +1 -1
  47. package/docs/api/interfaces/ExtendLeaseOptions.html +2 -2
  48. package/docs/api/interfaces/FailOptions.html +2 -2
  49. package/docs/api/interfaces/FailOutcome.html +1 -1
  50. package/docs/api/interfaces/FerricStoreClientFromUrlOptions.html +1 -1
  51. package/docs/api/interfaces/FerricStoreClientOptions.html +1 -1
  52. package/docs/api/interfaces/FlowPolicyBackoffSnapshot.html +5 -0
  53. package/docs/api/interfaces/FlowPolicyOptions.html +8 -4
  54. package/docs/api/interfaces/FlowPolicyRetentionSnapshot.html +3 -0
  55. package/docs/api/interfaces/FlowPolicyRetrySnapshot.html +4 -0
  56. package/docs/api/interfaces/FlowPolicySnapshot.html +17 -0
  57. package/docs/api/interfaces/FlowPolicyStateSnapshot.html +6 -0
  58. package/docs/api/interfaces/HistoryOptions.html +2 -2
  59. package/docs/api/interfaces/InvocationCreateOptions.html +2 -2
  60. package/docs/api/interfaces/LeaseMutationOptions.html +2 -2
  61. package/docs/api/interfaces/LimitListOptions.html +1 -1
  62. package/docs/api/interfaces/MutateOptions.html +2 -2
  63. package/docs/api/interfaces/NamedValueMutation.html +1 -1
  64. package/docs/api/interfaces/ProtocolCommand.html +2 -2
  65. package/docs/api/interfaces/ReadOptions.html +2 -2
  66. package/docs/api/interfaces/ReclaimOptions.html +1 -1
  67. package/docs/api/interfaces/RequestContext.html +2 -2
  68. package/docs/api/interfaces/RequestContextOptions.html +2 -2
  69. package/docs/api/interfaces/RetryOptions.html +2 -2
  70. package/docs/api/interfaces/RetryOutcome.html +1 -1
  71. package/docs/api/interfaces/RunStepsItem.html +2 -2
  72. package/docs/api/interfaces/RunStepsManyOptions.html +2 -2
  73. package/docs/api/interfaces/SearchOptions.html +2 -2
  74. package/docs/api/interfaces/StepContinueOptions.html +3 -3
  75. package/docs/api/interfaces/TDigestCreateOptions.html +1 -1
  76. package/docs/api/interfaces/TDigestMergeOptions.html +1 -1
  77. package/docs/api/interfaces/TransitionOptions.html +2 -2
  78. package/docs/api/interfaces/TransitionOutcome.html +1 -1
  79. package/docs/api/modules.html +1 -1
  80. package/docs/api/types/ConnectionRequestDisposition.html +1 -1
  81. package/docs/api/types/FlowPolicyBackoffKind.html +1 -0
  82. package/docs/api/types/ManagementPairs.html +1 -1
  83. package/docs/api/types/SearchStateMeta.html +1 -1
  84. package/docs/api/variables/FERRICSTORE_MINIMUM_SERVER_VERSION.html +1 -1
  85. package/docs/api/variables/FERRICSTORE_NATIVE_PROTOCOL_VERSION.html +1 -1
  86. package/docs/api/variables/FERRICSTORE_SDK_VERSION.html +1 -1
  87. package/docs/api/variables/MAX_FLOW_POLICY_GENERATION.html +1 -0
  88. package/package.json +2 -2
package/README.md CHANGED
@@ -18,7 +18,7 @@ Requires Node.js 22.22 or newer. The SDK ships ESM and CommonJS builds and is te
18
18
 
19
19
  ## Compatibility
20
20
 
21
- SDK `0.2.x` requires FerricStore server `0.8.0` or newer. FerricStore 0.8 is a
21
+ SDK `0.3.x` requires FerricStore server `0.9.1` or newer. FerricStore 0.9.1 is a
22
22
  breaking beta API contract update, while the native wire protocol remains v1
23
23
  (`FSNP` framing and existing opcode numbers are unchanged). Capabilities and
24
24
  response-size limits are negotiated per connection from the HELLO-shaped
@@ -42,7 +42,7 @@ const { FerricStoreClient, JsonCodec } = require("@ferricstore/ferricstore");
42
42
  docker run -p 6388:6388 \
43
43
  -e FERRICSTORE_PROTECTED_MODE=false \
44
44
  -v ferricstore_data:/data \
45
- ghcr.io/ferricstore/ferricstore:0.8.0
45
+ ghcr.io/ferricstore/ferricstore:0.9.1
46
46
  ```
47
47
 
48
48
  ## Cluster-aware client
@@ -387,12 +387,25 @@ await flow.scheduleCreate("orders-every-five-minutes", {
387
387
  FIFO Flow state policy is opt-in per state:
388
388
 
389
389
  ```ts
390
- await flow.installPolicy("email", {
390
+ const policy = await flow.installPolicy("email", {
391
391
  states: {
392
392
  queued: { mode: "fifo" }
393
393
  }
394
394
  });
395
395
 
396
+ // Direct writes deep-patch by default. Fence concurrent editors with generation CAS.
397
+ const updated = await flow.installPolicy("email", {
398
+ expectedGeneration: policy.generation,
399
+ maxActiveMs: 300_000
400
+ });
401
+
402
+ // Full replacement is explicit on the client API.
403
+ await flow.installPolicy("email", {
404
+ expectedGeneration: updated.generation,
405
+ replace: true,
406
+ states: { queued: { mode: "fifo" } }
407
+ });
408
+
396
409
  await flow.create("email-3", {
397
410
  partitionKey: "tenant-a:email",
398
411
  payload: Buffer.from("welcome"),
@@ -402,6 +415,10 @@ await flow.create("email-3", {
402
415
  ```
403
416
 
404
417
  FIFO states require a `partitionKey`; priority is for parallel states.
418
+ `Workflow.installPolicy()` defaults to full replacement because workflow declarations
419
+ describe a complete policy. Pass `replace: false` when a workflow install should patch.
420
+ FIFO ordering is enforced by the server per `(type, state, partitionKey)`; worker
421
+ concurrency remains available across different partitions.
405
422
 
406
423
  ## FerricStore KV And Data Structures
407
424