@effect/cluster 0.36.3 → 0.37.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 (90) hide show
  1. package/ClusterWorkflowEngine/package.json +6 -0
  2. package/dist/cjs/ClusterSchema.js +9 -1
  3. package/dist/cjs/ClusterSchema.js.map +1 -1
  4. package/dist/cjs/ClusterWorkflowEngine.js +386 -0
  5. package/dist/cjs/ClusterWorkflowEngine.js.map +1 -0
  6. package/dist/cjs/Envelope.js +14 -4
  7. package/dist/cjs/Envelope.js.map +1 -1
  8. package/dist/cjs/Message.js +22 -2
  9. package/dist/cjs/Message.js.map +1 -1
  10. package/dist/cjs/MessageStorage.js +59 -21
  11. package/dist/cjs/MessageStorage.js.map +1 -1
  12. package/dist/cjs/Reply.js +15 -0
  13. package/dist/cjs/Reply.js.map +1 -1
  14. package/dist/cjs/Runners.js +2 -2
  15. package/dist/cjs/Runners.js.map +1 -1
  16. package/dist/cjs/Sharding.js +23 -8
  17. package/dist/cjs/Sharding.js.map +1 -1
  18. package/dist/cjs/Snowflake.js +2 -2
  19. package/dist/cjs/Snowflake.js.map +1 -1
  20. package/dist/cjs/SqlMessageStorage.js +36 -12
  21. package/dist/cjs/SqlMessageStorage.js.map +1 -1
  22. package/dist/cjs/SqlShardStorage.js +6 -6
  23. package/dist/cjs/SqlShardStorage.js.map +1 -1
  24. package/dist/cjs/index.js +3 -1
  25. package/dist/cjs/internal/entityManager.js +4 -4
  26. package/dist/cjs/internal/entityManager.js.map +1 -1
  27. package/dist/dts/ClusterSchema.d.ts +7 -0
  28. package/dist/dts/ClusterSchema.d.ts.map +1 -1
  29. package/dist/dts/ClusterWorkflowEngine.d.ts +48 -0
  30. package/dist/dts/ClusterWorkflowEngine.d.ts.map +1 -0
  31. package/dist/dts/Envelope.d.ts +9 -0
  32. package/dist/dts/Envelope.d.ts.map +1 -1
  33. package/dist/dts/Message.d.ts +11 -1
  34. package/dist/dts/Message.d.ts.map +1 -1
  35. package/dist/dts/MessageStorage.d.ts +56 -0
  36. package/dist/dts/MessageStorage.d.ts.map +1 -1
  37. package/dist/dts/Reply.d.ts +7 -0
  38. package/dist/dts/Reply.d.ts.map +1 -1
  39. package/dist/dts/ShardStorage.d.ts +1 -1
  40. package/dist/dts/Sharding.d.ts +9 -0
  41. package/dist/dts/Sharding.d.ts.map +1 -1
  42. package/dist/dts/SqlMessageStorage.d.ts +10 -1
  43. package/dist/dts/SqlMessageStorage.d.ts.map +1 -1
  44. package/dist/dts/SqlShardStorage.d.ts +1 -1
  45. package/dist/dts/index.d.ts +4 -0
  46. package/dist/dts/index.d.ts.map +1 -1
  47. package/dist/dts/internal/resourceMap.d.ts +1 -1
  48. package/dist/dts/internal/resourceMap.d.ts.map +1 -1
  49. package/dist/dts/internal/resourceRef.d.ts +1 -1
  50. package/dist/dts/internal/resourceRef.d.ts.map +1 -1
  51. package/dist/esm/ClusterSchema.js +7 -0
  52. package/dist/esm/ClusterSchema.js.map +1 -1
  53. package/dist/esm/ClusterWorkflowEngine.js +378 -0
  54. package/dist/esm/ClusterWorkflowEngine.js.map +1 -0
  55. package/dist/esm/Envelope.js +12 -3
  56. package/dist/esm/Envelope.js.map +1 -1
  57. package/dist/esm/Message.js +20 -1
  58. package/dist/esm/Message.js.map +1 -1
  59. package/dist/esm/MessageStorage.js +59 -21
  60. package/dist/esm/MessageStorage.js.map +1 -1
  61. package/dist/esm/Reply.js +15 -0
  62. package/dist/esm/Reply.js.map +1 -1
  63. package/dist/esm/Runners.js +2 -2
  64. package/dist/esm/Runners.js.map +1 -1
  65. package/dist/esm/Sharding.js +24 -9
  66. package/dist/esm/Sharding.js.map +1 -1
  67. package/dist/esm/Snowflake.js +2 -2
  68. package/dist/esm/Snowflake.js.map +1 -1
  69. package/dist/esm/SqlMessageStorage.js +36 -12
  70. package/dist/esm/SqlMessageStorage.js.map +1 -1
  71. package/dist/esm/SqlShardStorage.js +6 -6
  72. package/dist/esm/SqlShardStorage.js.map +1 -1
  73. package/dist/esm/index.js +4 -0
  74. package/dist/esm/index.js.map +1 -1
  75. package/dist/esm/internal/entityManager.js +5 -5
  76. package/dist/esm/internal/entityManager.js.map +1 -1
  77. package/package.json +14 -5
  78. package/src/ClusterSchema.ts +10 -0
  79. package/src/ClusterWorkflowEngine.ts +475 -0
  80. package/src/Envelope.ts +17 -3
  81. package/src/Message.ts +24 -2
  82. package/src/MessageStorage.ts +122 -22
  83. package/src/Reply.ts +18 -0
  84. package/src/Runners.ts +2 -2
  85. package/src/Sharding.ts +45 -9
  86. package/src/Snowflake.ts +2 -2
  87. package/src/SqlMessageStorage.ts +74 -16
  88. package/src/SqlShardStorage.ts +6 -6
  89. package/src/index.ts +5 -0
  90. package/src/internal/entityManager.ts +6 -4
@@ -1 +1 @@
1
- {"version":3,"file":"entityManager.js","names":["RequestId","RpcServer","Arr","Cause","Context","Duration","Effect","Exit","FiberRef","identity","HashMap","Metric","Option","Schedule","Schema","Scope","AlreadyProcessingMessage","EntityNotAssignedToRunner","MailboxFull","MalformedMessage","ClusterMetrics","Persisted","CurrentAddress","CurrentRunnerAddress","Request","Envelope","Message","MessageStorage","Reply","ShardingConfig","Snowflake","EntityReaper","internalInterruptors","ResourceMap","ResourceRef","make","fnUntraced","entity","buildHandlers","options","config","snowflakeGen","Generator","managerScope","scope","storageEnabled","storage","noop","mailboxCapacity","entityMailboxCapacity","clock","context","activeServers","Map","entities","address","sharding","isShutdown","endLatch","makeLatch","addFinalizer","ignore","resetAddress","activeRequests","defectRequestIds","writeRef","from","isShuttingDown","handlers","protocol","toHandlersContext","pipe","provide","add","runnerAddress","locally","currentLogAnnotations","empty","server","makeNoSerialization","spanPrefix","type","entityId","concurrency","onFromServer","response","_tag","request","get","requestId","void","sentReply","rpc","annotations","isInterrupted","exit","retryRespond","suspend","message","respond","WithExit","id","unsafeNext","flatMap","delete","size","state","lastActiveCheck","unsafeCurrentTimeMillis","orDie","sequence","reply","Chunk","values","lastSentChunk","some","effect","unsafeRebuild","Array","keys","logError","die","defect","andThen","tapErrorCause","retry","spaced","annotateLogs","module","runner","open","extend","sync","write","envelope","tag","payload","mailboxGauge","mailboxSize","tagged","clientId","current","await","value","withFiberRuntime","fiber","interruptible","timeoutOption","entityTerminationTimeout","set","reaper","maxIdleTime","toMillis","entityMaxIdleTime","Number","isFinite","register","servers","gauge","unsafeUpdate","BigInt","sleep","forever","forkIn","sendLocal","entry","fail","envelopeId","requests","dieMessage","lastSentReply","match","onNone","onSome","isSome","replyId","interruptors","interruptShard","shardId","loop","toInterrupt","Set","forEach","removeIgnore","discard","decodeMessage","decode","makeMessageSchema","isProcessingFor","undefined","excludeReplies","send","matchEffect","onFailure","cause","ReplyWithContext","onSuccess","decoded","IncomingEnvelope","IncomingRequestLocal","activeEntityCount","push","TaggedStruct","transform","Struct","PartialEncodedRequestFromSelf","fields","Literal","payloadSchema","RequestFromSelf","encoded","makeRequest","encode","OptionFromSelf","Union","typeSchema","AckChunk","Interrupt","times","catchAll","delay"],"sources":["../../../src/internal/entityManager.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"entityManager.js","names":["RequestId","RpcServer","Arr","Cause","Context","Duration","Effect","Exit","FiberRef","identity","HashMap","Metric","Option","Schedule","Schema","Scope","AlreadyProcessingMessage","EntityNotAssignedToRunner","MailboxFull","MalformedMessage","ClusterMetrics","Persisted","Uninterruptible","CurrentAddress","CurrentRunnerAddress","Request","Envelope","Message","MessageStorage","Reply","ShardingConfig","Snowflake","EntityReaper","internalInterruptors","ResourceMap","ResourceRef","make","fnUntraced","entity","buildHandlers","options","config","snowflakeGen","Generator","managerScope","scope","storageEnabled","storage","noop","mailboxCapacity","entityMailboxCapacity","clock","context","activeServers","Map","entities","address","sharding","isShutdown","endLatch","makeLatch","addFinalizer","ignore","resetAddress","activeRequests","defectRequestIds","writeRef","from","isShuttingDown","handlers","protocol","toHandlersContext","pipe","provide","add","runnerAddress","locally","currentLogAnnotations","empty","server","makeNoSerialization","spanPrefix","type","entityId","concurrency","onFromServer","response","_tag","request","get","requestId","void","sentReply","rpc","annotations","isInterrupted","exit","retryRespond","suspend","message","respond","WithExit","id","unsafeNext","flatMap","delete","size","state","lastActiveCheck","unsafeCurrentTimeMillis","orDie","sequence","reply","Chunk","values","lastSentChunk","some","effect","unsafeRebuild","Array","keys","logError","die","defect","andThen","tapErrorCause","retry","spaced","annotateLogs","module","runner","open","extend","sync","write","envelope","tag","payload","mailboxGauge","mailboxSize","tagged","clientId","current","await","value","withFiberRuntime","fiber","interruptible","timeoutOption","entityTerminationTimeout","set","reaper","maxIdleTime","toMillis","entityMaxIdleTime","Number","isFinite","register","servers","gauge","unsafeUpdate","BigInt","sleep","forever","forkIn","sendLocal","entry","fail","envelopeId","requests","dieMessage","lastSentReply","match","onNone","onSome","isSome","replyId","interruptors","interruptShard","shardId","loop","toInterrupt","Set","forEach","removeIgnore","discard","decodeMessage","decode","makeMessageSchema","isProcessingFor","undefined","excludeReplies","send","matchEffect","onFailure","cause","ReplyWithContext","onSuccess","decoded","IncomingEnvelope","IncomingRequestLocal","activeEntityCount","push","TaggedStruct","transform","Struct","PartialEncodedRequestFromSelf","fields","Literal","payloadSchema","RequestFromSelf","encoded","makeRequest","encode","OptionFromSelf","Union","typeSchema","AckChunk","Interrupt","times","catchAll","delay"],"sources":["../../../src/internal/entityManager.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,SAAS,QAAQ,wBAAwB;AAClD,OAAO,KAAKC,SAAS,MAAM,uBAAuB;AAClD,OAAO,KAAKC,GAAG,MAAM,cAAc;AACnC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAE3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,IAAI,MAAM,aAAa;AACnC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,SAASC,wBAAwB,EAAEC,yBAAyB,EAAEC,WAAW,EAAEC,gBAAgB,QAAQ,oBAAoB;AACvH,OAAO,KAAKC,cAAc,MAAM,sBAAsB;AACtD,SAASC,SAAS,EAAEC,eAAe,QAAQ,qBAAqB;AAEhE,SAASC,cAAc,EAAEC,oBAAoB,EAAEC,OAAO,QAAQ,cAAc;AAG5E,OAAO,KAAKC,QAAQ,MAAM,gBAAgB;AAC1C,OAAO,KAAKC,OAAO,MAAM,eAAe;AACxC,OAAO,KAAKC,cAAc,MAAM,sBAAsB;AACtD,OAAO,KAAKC,KAAK,MAAM,aAAa;AAIpC,SAASC,cAAc,QAAQ,sBAAsB;AACrD,OAAO,KAAKC,SAAS,MAAM,iBAAiB;AAC5C,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAASC,oBAAoB,QAAQ,mBAAmB;AACxD,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,SAASC,WAAW,QAAQ,kBAAkB;AAqC9C;AACA,OAAO,MAAMC,IAAI,gBAAG9B,MAAM,CAAC+B,UAAU,CAAC,WAKpCC,MAAoB,EACpBC,aAAiD,EACjDC,OAOC;EAED,MAAMC,MAAM,GAAG,OAAOX,cAAc;EACpC,MAAMY,YAAY,GAAG,OAAOX,SAAS,CAACY,SAAS;EAC/C,MAAMC,YAAY,GAAG,OAAOtC,MAAM,CAACuC,KAAK;EACxC,MAAMC,cAAc,GAAGN,OAAO,CAACO,OAAO,KAAKnB,cAAc,CAACoB,IAAI;EAC9D,MAAMC,eAAe,GAAGT,OAAO,CAACS,eAAe,IAAIR,MAAM,CAACS,qBAAqB;EAC/E,MAAMC,KAAK,GAAG,OAAO7C,MAAM,CAAC6C,KAAK;EACjC,MAAMC,OAAO,GAAG,OAAO9C,MAAM,CAAC8C,OAAO,EAAiD;EAEtF,MAAMC,aAAa,GAAG,IAAIC,GAAG,EAAyB;EAEtD,MAAMC,QAAQ,GAIV,OAAOrB,WAAW,CAACE,IAAI,CAAC9B,MAAM,CAAC+B,UAAU,CAAC,WAAUmB,OAAO;IAC7D,IAAI,OAAOhB,OAAO,CAACiB,QAAQ,CAACC,UAAU,EAAE;MACtC,OAAO,OAAO,IAAIzC,yBAAyB,CAAC;QAAEuC;MAAO,CAAE,CAAC;IAC1D;IAEA,MAAMX,KAAK,GAAG,OAAOvC,MAAM,CAACuC,KAAK;IACjC,MAAMc,QAAQ,GAAG,OAAOrD,MAAM,CAACsD,SAAS,EAAE;IAE1C;IACA,OAAO7C,KAAK,CAAC8C,YAAY,CACvBhB,KAAK,EACLvC,MAAM,CAACwD,MAAM,CAACtB,OAAO,CAACO,OAAO,CAACgB,YAAY,CAACP,OAAO,CAAC,CAAC,CACrD;IAED,MAAMQ,cAAc,GAAkC,IAAIV,GAAG,EAAE;IAC/D,IAAIW,gBAAgB,GAAkB,EAAE;IAExC;IACA;IACA,MAAMC,QAAQ,GAAG,OAAO/B,WAAW,CAACgC,IAAI,CACtCtB,KAAK,EACLvC,MAAM,CAAC+B,UAAU,CAAC,WAAUQ,KAAK;MAC/B,IAAIuB,cAAc,GAAG,KAAK;MAE1B;MACA,MAAMC,QAAQ,GAAG,OAAQ/B,MAAM,CAACgC,QAAQ,CAACC,iBAAiB,CAAChC,aAAa,CAAC,CAACiC,IAAI,CAC5ElE,MAAM,CAACmE,OAAO,CAACrB,OAAO,CAACoB,IAAI,CACzBpE,OAAO,CAACsE,GAAG,CAACnD,cAAc,EAAEiC,OAAO,CAAC,EACpCpD,OAAO,CAACsE,GAAG,CAAClD,oBAAoB,EAAEgB,OAAO,CAACmC,aAAa,CAAC,EACxDvE,OAAO,CAACsE,GAAG,CAAC3D,KAAK,CAACA,KAAK,EAAE8B,KAAK,CAAC,CAChC,CAAC,EACFvC,MAAM,CAACsE,OAAO,CAACpE,QAAQ,CAACqE,qBAAqB,EAAEnE,OAAO,CAACoE,KAAK,EAAE,CAAC,CACR;MAEzD,MAAMC,MAAM,GAAG,OAAO9E,SAAS,CAAC+E,mBAAmB,CAAC1C,MAAM,CAACgC,QAAQ,EAAE;QACnEW,UAAU,EAAE,GAAG3C,MAAM,CAAC4C,IAAI,IAAI1B,OAAO,CAAC2B,QAAQ,GAAG;QACjDC,WAAW,EAAE5C,OAAO,CAAC4C,WAAW,IAAI,CAAC;QACrCC,YAAYA,CAACC,QAAQ;UACnB,QAAQA,QAAQ,CAACC,IAAI;YACnB,KAAK,MAAM;cAAE;gBACX,MAAMC,OAAO,GAAGxB,cAAc,CAACyB,GAAG,CAACH,QAAQ,CAACI,SAAS,CAAC;gBACtD,IAAI,CAACF,OAAO,EAAE,OAAOlF,MAAM,CAACqF,IAAI;gBAEhCH,OAAO,CAACI,SAAS,GAAG,IAAI;gBAExB;gBACA;gBACA;gBACA;gBACA,IACE9C,cAAc,IACd1C,OAAO,CAACqF,GAAG,CAACD,OAAO,CAACK,GAAG,CAACC,WAAW,EAAEzE,SAAS,CAAC,IAC/Cd,IAAI,CAACwF,aAAa,CAACT,QAAQ,CAACU,IAAI,CAAC,KAChC5B,cAAc,IAAIhE,OAAO,CAACqF,GAAG,CAACD,OAAO,CAACK,GAAG,CAACC,WAAW,EAAExE,eAAe,CAAC,CAAC,EACzE;kBACA,OAAOhB,MAAM,CAACqF,IAAI;gBACpB;gBACA,OAAOM,YAAY,CACjB,CAAC,EACD3F,MAAM,CAAC4F,OAAO,CAAC,MACbV,OAAO,CAACW,OAAO,CAACC,OAAO,CACrB,IAAIvE,KAAK,CAACwE,QAAQ,CAAC;kBACjBX,SAAS,EAAE3D,SAAS,CAACA,SAAS,CAACuD,QAAQ,CAACI,SAAS,CAAC;kBAClDY,EAAE,EAAE5D,YAAY,CAAC6D,UAAU,EAAE;kBAC7BP,IAAI,EAAEV,QAAQ,CAACU;iBAChB,CAAC,CACH,CACF,CACF,CAACxB,IAAI,CACJlE,MAAM,CAACkG,OAAO,CAAC,MAAK;kBAClBxC,cAAc,CAACyC,MAAM,CAACnB,QAAQ,CAACI,SAAS,CAAC;kBAEzC;kBACA;kBACA,IAAI1B,cAAc,CAAC0C,IAAI,KAAK,CAAC,EAAE;oBAC7BC,KAAK,CAACC,eAAe,GAAGzD,KAAK,CAAC0D,uBAAuB,EAAE;kBACzD;kBAEA,OAAOvG,MAAM,CAACqF,IAAI;gBACpB,CAAC,CAAC,EACFrF,MAAM,CAACwG,KAAK,CACb;cACH;YACA,KAAK,OAAO;cAAE;gBACZ,MAAMtB,OAAO,GAAGxB,cAAc,CAACyB,GAAG,CAACH,QAAQ,CAACI,SAAS,CAAC;gBACtD,IAAI,CAACF,OAAO,EAAE,OAAOlF,MAAM,CAACqF,IAAI;gBAChC,MAAMoB,QAAQ,GAAGvB,OAAO,CAACuB,QAAQ;gBACjCvB,OAAO,CAACuB,QAAQ,EAAE;gBAClB,IAAI,CAACvB,OAAO,CAACI,SAAS,EAAE;kBACtBJ,OAAO,CAACI,SAAS,GAAG,IAAI;gBAC1B;gBACA,OAAOtF,MAAM,CAACwG,KAAK,CAACb,YAAY,CAC9B,CAAC,EACD3F,MAAM,CAAC4F,OAAO,CAAC,MAAK;kBAClB,MAAMc,KAAK,GAAG,IAAInF,KAAK,CAACoF,KAAK,CAAC;oBAC5BvB,SAAS,EAAE3D,SAAS,CAACA,SAAS,CAACuD,QAAQ,CAACI,SAAS,CAAC;oBAClDY,EAAE,EAAE5D,YAAY,CAAC6D,UAAU,EAAE;oBAC7BQ,QAAQ;oBACRG,MAAM,EAAE5B,QAAQ,CAAC4B;mBAClB,CAAC;kBACF1B,OAAO,CAAC2B,aAAa,GAAGvG,MAAM,CAACwG,IAAI,CAACJ,KAAK,CAAC;kBAC1C,OAAOxB,OAAO,CAACW,OAAO,CAACC,OAAO,CAACY,KAAK,CAAC;gBACvC,CAAC,CAAC,CACH,CAAC;cACJ;YACA,KAAK,QAAQ;cAAE;gBACb,MAAMK,MAAM,GAAGnD,QAAQ,CAACoD,aAAa,EAAE;gBACvCrD,gBAAgB,GAAGsD,KAAK,CAACpD,IAAI,CAACH,cAAc,CAACwD,IAAI,EAAE,CAAC;gBACpD,OAAOlH,MAAM,CAACmH,QAAQ,CAAC,8BAA8B,EAAEtH,KAAK,CAACuH,GAAG,CAACpC,QAAQ,CAACqC,MAAM,CAAC,CAAC,CAACnD,IAAI,CACrFlE,MAAM,CAACsH,OAAO,CAACP,MAAM,CAAC7C,IAAI,CACxBlE,MAAM,CAACuH,aAAa,CAACvH,MAAM,CAACmH,QAAQ,CAAC,EACrCnH,MAAM,CAACwH,KAAK,CAACjH,QAAQ,CAACkH,MAAM,CAAC,GAAG,CAAC,CAAC,CACnC,CAAC,EACFzH,MAAM,CAAC0H,YAAY,CAAC;kBAClBC,MAAM,EAAE,eAAe;kBACvBzE,OAAO;kBACP0E,MAAM,EAAE1F,OAAO,CAACmC;iBACjB,CAAC,CACH;cACH;YACA,KAAK,WAAW;cAAE;gBAChB,OAAOhB,QAAQ,CAACwE,IAAI;cACtB;UACF;QACF;OACD,CAAC,CAAC3D,IAAI,CACLzD,KAAK,CAACqH,MAAM,CAACvF,KAAK,CAAC,EACnBvC,MAAM,CAACmE,OAAO,CAACJ,QAAQ,CAAC,CACzB;MAED,OAAOtD,KAAK,CAAC8C,YAAY,CACvBhB,KAAK,EACLvC,MAAM,CAAC+H,IAAI,CAAC,MAAK;QACfjE,cAAc,GAAG,IAAI;MACvB,CAAC,CAAC,CACH;MAED,KAAK,MAAMkC,EAAE,IAAIrC,gBAAgB,EAAE;QACjC,MAAM;UAAEkD,aAAa;UAAEhB;QAAO,CAAE,GAAGnC,cAAc,CAACyB,GAAG,CAACa,EAAE,CAAE;QAC1D,OAAOvB,MAAM,CAACuD,KAAK,CAAC,CAAC,EAAE;UACrB,GAAGnC,OAAO,CAACoC,QAAQ;UACnBjC,EAAE,EAAEtG,SAAS,CAACmG,OAAO,CAACoC,QAAQ,CAAC7C,SAAS,CAAC;UACzC8C,GAAG,EAAErC,OAAO,CAACoC,QAAQ,CAACC,GAAU;UAChCC,OAAO,EAAE,IAAIhH,OAAO,CAAC;YACnB,GAAG0E,OAAO,CAACoC,QAAQ;YACnBpB;WACM;SACT,CAAC;MACJ;MACAlD,gBAAgB,GAAG,EAAE;MAErB,OAAOc,MAAM,CAACuD,KAAK;IACrB,CAAC,CAAC,CACH;IAED,MAAM3B,KAAK,GAAgB;MACzBnD,OAAO;MACPkF,YAAY,EAAEtH,cAAc,CAACuH,WAAW,CAACnE,IAAI,CAC3C7D,MAAM,CAACiI,MAAM,CAAC,MAAM,EAAEtG,MAAM,CAAC4C,IAAI,CAAC,EAClCvE,MAAM,CAACiI,MAAM,CAAC,UAAU,EAAEpF,OAAO,CAAC2B,QAAQ,CAAC,CAC5C;MACDmD,KAAKA,CAACO,QAAQ,EAAE1C,OAAO;QACrB,IAAIjC,QAAQ,CAACyC,KAAK,CAACmC,OAAO,CAACvD,IAAI,KAAK,UAAU,EAAE;UAC9C,OAAOjF,MAAM,CAACkG,OAAO,CAACtC,QAAQ,CAAC6E,KAAK,EAAGT,KAAK,IAAKA,KAAK,CAACO,QAAQ,EAAE1C,OAAO,CAAC,CAAC;QAC5E;QACA,OAAOjC,QAAQ,CAACyC,KAAK,CAACmC,OAAO,CAACE,KAAK,CAACH,QAAQ,EAAE1C,OAAO,CAAC;MACxD,CAAC;MACDnC,cAAc;MACd4C,eAAe,EAAEzD,KAAK,CAAC0D,uBAAuB;KAC/C;IAED;IACA;IACA;IACA;IACA,OAAO9F,KAAK,CAAC8C,YAAY,CACvBhB,KAAK,EACLvC,MAAM,CAAC2I,gBAAgB,CAAEC,KAAK,IAAI;MAChC7F,aAAa,CAACoD,MAAM,CAACjD,OAAO,CAAC2B,QAAQ,CAAC;MACtClD,oBAAoB,CAACyC,GAAG,CAACwE,KAAK,CAAC5C,EAAE,EAAE,CAAC;MACpC,OAAOK,KAAK,CAAC2B,KAAK,CAAC,CAAC,EAAE;QAAE/C,IAAI,EAAE;MAAK,CAAE,CAAC,CAACf,IAAI,CACzClE,MAAM,CAACsH,OAAO,CAACtH,MAAM,CAAC6I,aAAa,CAACxF,QAAQ,CAACoF,KAAK,CAAC,CAAC,EACpDzI,MAAM,CAAC8I,aAAa,CAAC3G,MAAM,CAAC4G,wBAAwB,CAAC,CACtD;IACH,CAAC,CAAC,CACH;IACDhG,aAAa,CAACiG,GAAG,CAAC9F,OAAO,CAAC2B,QAAQ,EAAEwB,KAAK,CAAC;IAE1C,OAAOA,KAAK;EACd,CAAC,EAAErG,MAAM,CAACsE,OAAO,CAACpE,QAAQ,CAACqE,qBAAqB,EAAEnE,OAAO,CAACoE,KAAK,EAAE,CAAC,CAAC,CAAC;EAEpE,MAAMyE,MAAM,GAAG,OAAOvH,YAAY;EAClC,MAAMwH,WAAW,GAAGnJ,QAAQ,CAACoJ,QAAQ,CAACjH,OAAO,CAACgH,WAAW,IAAI/G,MAAM,CAACiH,iBAAiB,CAAC;EACtF,IAAIC,MAAM,CAACC,QAAQ,CAACJ,WAAW,CAAC,EAAE;IAChC,OAAOD,MAAM,CAACM,QAAQ,CAAC;MACrBL,WAAW;MACXM,OAAO,EAAEzG,aAAa;MACtBE;KACD,CAAC;EACJ;EAEA;EACA,MAAMwG,KAAK,GAAG3I,cAAc,CAACmC,QAAQ,CAACiB,IAAI,CAAC7D,MAAM,CAACiI,MAAM,CAAC,MAAM,EAAEtG,MAAM,CAAC4C,IAAI,CAAC,CAAC;EAC9E,OAAO5E,MAAM,CAAC+H,IAAI,CAAC,MAAK;IACtB0B,KAAK,CAACC,YAAY,CAACC,MAAM,CAAC5G,aAAa,CAACqD,IAAI,CAAC,EAAE,EAAE,CAAC;IAClD,KAAK,MAAMC,KAAK,IAAItD,aAAa,CAAC6D,MAAM,EAAE,EAAE;MAC1CP,KAAK,CAAC+B,YAAY,CAACsB,YAAY,CAACC,MAAM,CAACtD,KAAK,CAAC3C,cAAc,CAAC0C,IAAI,CAAC,EAAE,EAAE,CAAC;IACxE;EACF,CAAC,CAAC,CAAClC,IAAI,CACLlE,MAAM,CAACsH,OAAO,CAACtH,MAAM,CAAC4J,KAAK,CAAC,IAAI,CAAC,CAAC,EAClC5J,MAAM,CAAC6J,OAAO,EACd7J,MAAM,CAAC8J,MAAM,CAACxH,YAAY,CAAC,CAC5B;EAED,SAASyH,SAASA,CAChBlE,OAAiC;IAEjC,OAAO7F,MAAM,CAACsE,OAAO,CACnBtE,MAAM,CAACkG,OAAO,CACZjD,QAAQ,CAACkC,GAAG,CAACU,OAAO,CAACoC,QAAQ,CAAC/E,OAAO,CAAC,EACrCuB,MAAM,IAA6F;MAClG,QAAQoB,OAAO,CAACZ,IAAI;QAClB,KAAK,sBAAsB;UAAE;YAC3B;YACA;YACA;YACA,IAAI+E,KAAK,GAAGvF,MAAM,CAACf,cAAc,CAACyB,GAAG,CAACU,OAAO,CAACoC,QAAQ,CAAC7C,SAAS,CAAC;YACjE,IAAI4E,KAAK,EAAE;cACT,OAAOhK,MAAM,CAACiK,IAAI,CAChB,IAAIvJ,wBAAwB,CAAC;gBAC3BwJ,UAAU,EAAErE,OAAO,CAACoC,QAAQ,CAAC7C,SAAS;gBACtClC,OAAO,EAAE2C,OAAO,CAACoC,QAAQ,CAAC/E;eAC3B,CAAC,CACH;YACH;YAEA,MAAMqC,GAAG,GAAGvD,MAAM,CAACgC,QAAQ,CAACmG,QAAQ,CAAChF,GAAG,CAACU,OAAO,CAACoC,QAAQ,CAACC,GAAG,CAA6B;YAC1F,IAAI,CAAC1F,cAAc,IAAI1C,OAAO,CAACqF,GAAG,CAACI,GAAG,CAACC,WAAW,EAAEzE,SAAS,CAAC,EAAE;cAC9D,OAAOf,MAAM,CAACoK,UAAU,CACtB,oFAAoF,CACrF;YACH;YAEA,IAAIzH,eAAe,KAAK,WAAW,IAAI8B,MAAM,CAACf,cAAc,CAAC0C,IAAI,IAAIzD,eAAe,EAAE;cACpF,OAAO3C,MAAM,CAACiK,IAAI,CAAC,IAAIrJ,WAAW,CAAC;gBAAEsC,OAAO,EAAE2C,OAAO,CAACoC,QAAQ,CAAC/E;cAAO,CAAE,CAAC,CAAC;YAC5E;YAEA8G,KAAK,GAAG;cACNzE,GAAG;cACHM,OAAO;cACPP,SAAS,EAAE,KAAK;cAChBuB,aAAa,EAAEhB,OAAO,CAACwE,aAAoB;cAC3C5D,QAAQ,EAAEnG,MAAM,CAACgK,KAAK,CAACzE,OAAO,CAACwE,aAAa,EAAE;gBAC5CE,MAAM,EAAEA,CAAA,KAAM,CAAC;gBACfC,MAAM,EAAG9D,KAAK,IAAKA,KAAK,CAACzB,IAAI,KAAK,OAAO,GAAGyB,KAAK,CAACD,QAAQ,GAAG,CAAC,GAAG;eAClE;aACF;YACDhC,MAAM,CAACf,cAAc,CAACsF,GAAG,CAACnD,OAAO,CAACoC,QAAQ,CAAC7C,SAAS,EAAE4E,KAAK,CAAC;YAC5D,OAAOvF,MAAM,CAACuD,KAAK,CAAC,CAAC,EAAE;cACrB,GAAGnC,OAAO,CAACoC,QAAQ;cACnBjC,EAAE,EAAEtG,SAAS,CAACmG,OAAO,CAACoC,QAAQ,CAAC7C,SAAS,CAAC;cACzC+C,OAAO,EAAE,IAAIhH,OAAO,CAAC;gBACnB,GAAG0E,OAAO,CAACoC,QAAQ;gBACnBpB,aAAa,EAAEhB,OAAO,CAACwE;eACxB;aACF,CAAC;UACJ;QACA,KAAK,kBAAkB;UAAE;YACvB,MAAML,KAAK,GAAGvF,MAAM,CAACf,cAAc,CAACyB,GAAG,CAACU,OAAO,CAACoC,QAAQ,CAAC7C,SAAS,CAAC;YACnE,IAAI,CAAC4E,KAAK,EAAE;cACV,OAAOhK,MAAM,CAACqF,IAAI;YACpB,CAAC,MAAM,IACLQ,OAAO,CAACoC,QAAQ,CAAChD,IAAI,KAAK,UAAU,IACpC3E,MAAM,CAACmK,MAAM,CAACT,KAAK,CAACnD,aAAa,CAAC,IAClChB,OAAO,CAACoC,QAAQ,CAACyC,OAAO,KAAKV,KAAK,CAACnD,aAAa,CAAC6B,KAAK,CAAC1C,EAAE,EACzD;cACA,OAAOhG,MAAM,CAACqF,IAAI;YACpB;YACA,OAAOZ,MAAM,CAACuD,KAAK,CACjB,CAAC,EACDnC,OAAO,CAACoC,QAAQ,CAAChD,IAAI,KAAK,UAAU,GAChC;cAAEA,IAAI,EAAE,KAAK;cAAEG,SAAS,EAAE1F,SAAS,CAACmG,OAAO,CAACoC,QAAQ,CAAC7C,SAAS;YAAC,CAAE,GACjE;cAAEH,IAAI,EAAE,WAAW;cAAEG,SAAS,EAAE1F,SAAS,CAACmG,OAAO,CAACoC,QAAQ,CAAC7C,SAAS,CAAC;cAAEuF,YAAY,EAAE;YAAE,CAAE,CAC9F;UACH;MACF;IACF,CAAC,CACF,EACDzK,QAAQ,CAACqE,qBAAqB,EAC9BnE,OAAO,CAACoE,KAAK,EAAE,CAChB;EACH;EAEA,MAAMoG,cAAc,GAAIC,OAAgB,IACtC7K,MAAM,CAAC4F,OAAO,CAAC,SAASkF,IAAIA,CAAA;IAC1B,MAAMC,WAAW,GAAG,IAAIC,GAAG,EAAe;IAC1C,KAAK,MAAM3E,KAAK,IAAItD,aAAa,CAAC6D,MAAM,EAAE,EAAE;MAC1C,IAAIiE,OAAO,KAAKxE,KAAK,CAACnD,OAAO,CAAC2H,OAAO,EAAE;QACrCE,WAAW,CAAC3G,GAAG,CAACiC,KAAK,CAAC;MACxB;IACF;IACA,IAAI0E,WAAW,CAAC3E,IAAI,KAAK,CAAC,EAAE;MAC1B,OAAOpG,MAAM,CAACqF,IAAI;IACpB;IACA,OAAOrF,MAAM,CAACkG,OAAO,CACnBlG,MAAM,CAACiL,OAAO,CAACF,WAAW,EAAG1E,KAAK,IAAKpD,QAAQ,CAACiI,YAAY,CAAC7E,KAAK,CAACnD,OAAO,CAAC,EAAE;MAC3E4B,WAAW,EAAE,WAAW;MACxBqG,OAAO,EAAE;KACV,CAAC,EACFL,IAAI,CACL;EACH,CAAC,CAAC;EAEJ,MAAMM,aAAa,GAAG5K,MAAM,CAAC6K,MAAM,CAACC,iBAAiB,CAACtJ,MAAM,CAAC,CAAC;EAE9D,OAAO7B,QAAQ,CAAgB;IAC7ByK,cAAc;IACdW,eAAeA,CAAC1F,OAAO,EAAE3D,OAAO;MAC9B,MAAMmE,KAAK,GAAGtD,aAAa,CAACoC,GAAG,CAACU,OAAO,CAACoC,QAAQ,CAAC/E,OAAO,CAAC2B,QAAQ,CAAC;MAClE,IAAI,CAACwB,KAAK,EAAE,OAAO,KAAK;MACxB,MAAMnB,OAAO,GAAGmB,KAAK,CAAC3C,cAAc,CAACyB,GAAG,CAACU,OAAO,CAACoC,QAAQ,CAAC7C,SAAS,CAAC;MACpE,IAAIF,OAAO,KAAKsG,SAAS,EAAE;QACzB,OAAO,KAAK;MACd,CAAC,MAAM,IAAItJ,OAAO,EAAEuJ,cAAc,IAAIvG,OAAO,CAACI,SAAS,EAAE;QACvD,OAAO,KAAK;MACd;MACA,OAAO,IAAI;IACb,CAAC;IACDyE,SAAS;IACT2B,IAAI,EAAG7F,OAAO,IACZuF,aAAa,CAACvF,OAAO,CAAC,CAAC3B,IAAI,CACzBlE,MAAM,CAAC2L,WAAW,CAAC;MACjBC,SAAS,EAAGC,KAAK,IAAI;QACnB,IAAIhG,OAAO,CAACZ,IAAI,KAAK,kBAAkB,EAAE;UACvC,OAAOjF,MAAM,CAACoH,GAAG,CAAC,IAAIvG,gBAAgB,CAAC;YAAEgL;UAAK,CAAE,CAAC,CAAC;QACpD;QACA,OAAO7L,MAAM,CAACwG,KAAK,CAACX,OAAO,CAACC,OAAO,CACjC,IAAIvE,KAAK,CAACuK,gBAAgB,CAAC;UACzBpF,KAAK,EAAE,IAAInF,KAAK,CAACwE,QAAQ,CAAC;YACxBC,EAAE,EAAE5D,YAAY,CAAC6D,UAAU,EAAE;YAC7Bb,SAAS,EAAES,OAAO,CAACoC,QAAQ,CAAC7C,SAAS;YACrCM,IAAI,EAAEzF,IAAI,CAACmH,GAAG,CAAC,IAAIvG,gBAAgB,CAAC;cAAEgL;YAAK,CAAE,CAAC;WAC/C,CAAC;UACFtG,GAAG,EAAEvD,MAAM,CAACgC,QAAQ,CAACmG,QAAQ,CAAChF,GAAG,CAACU,OAAO,CAACoC,QAAQ,CAACC,GAAG,CAAE;UACxDpF;SACD,CAAC,CACH,CAAC;MACJ,CAAC;MACDiJ,SAAS,EAAGC,OAAO,IAAI;QACrB,IAAIA,OAAO,CAAC/G,IAAI,KAAK,kBAAkB,EAAE;UACvC,OAAO8E,SAAS,CACd,IAAI1I,OAAO,CAAC4K,gBAAgB,CAACD,OAAO,CAAC,CACtC;QACH;QACA,MAAM9G,OAAO,GAAGW,OAAuC;QACvD,MAAMN,GAAG,GAAGvD,MAAM,CAACgC,QAAQ,CAACmG,QAAQ,CAAChF,GAAG,CAAC6G,OAAO,CAAC/D,QAAQ,CAACC,GAAG,CAAE;QAC/D,OAAO6B,SAAS,CACd,IAAI1I,OAAO,CAAC6K,oBAAoB,CAAC;UAC/BjE,QAAQ,EAAE+D,OAAO,CAAC/D,QAAQ;UAC1BoC,aAAa,EAAE2B,OAAO,CAAC3B,aAAa;UACpCvE,OAAO,EAAGY,KAAK,IACbxB,OAAO,CAACY,OAAO,CACb,IAAIvE,KAAK,CAACuK,gBAAgB,CAAC;YACzBpF,KAAK;YACLnB,GAAG;YACHzC;WACD,CAAC;SAEP,CAAC,CACH;MACH;KACD,CAAC,EACF9C,MAAM,CAACmE,OAAO,CAACrB,OAAmC,CAAC,CACpD;IACHqJ,iBAAiB,EAAEnM,MAAM,CAAC+H,IAAI,CAAC,MAAMhF,aAAa,CAACqD,IAAI;GACxD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAMkF,iBAAiB,GAA0BtJ,MAAoB,IAWjE;EACF,MAAMmI,QAAQ,GAAGvK,GAAG,CAAC4E,KAAK,EAAqB;EAE/C,KAAK,MAAMe,GAAG,IAAIvD,MAAM,CAACgC,QAAQ,CAACmG,QAAQ,CAACvD,MAAM,EAAE,EAAE;IACnDuD,QAAQ,CAACiC,IAAI,CACX5L,MAAM,CAAC6L,YAAY,CAAC,iBAAiB,EAAE;MACrCpE,QAAQ,EAAEzH,MAAM,CAAC8L,SAAS,CACxB9L,MAAM,CAAC+L,MAAM,CAAC;QACZ,GAAGnL,QAAQ,CAACoL,6BAA6B,CAACC,MAAM;QAChDvE,GAAG,EAAE1H,MAAM,CAACkM,OAAO,CAACnH,GAAG,CAACN,IAAI,CAAC;QAC7BkD,OAAO,EAAG5C,GAA+B,CAACoH;OAC3C,CAAC,EACFvL,QAAQ,CAACwL,eAAe,EACxB;QACEvB,MAAM,EAAGwB,OAAO,IAAKzL,QAAQ,CAAC0L,WAAW,CAACD,OAAO,CAAC;QAClDE,MAAM,EAAE5M;OACT,CACF;MACDkK,aAAa,EAAE7J,MAAM,CAACwM,cAAc,CAACzL,KAAK,CAACA,KAAK,CAACgE,GAAG,CAAC;KACtD,CAAC,CACH;EACH;EAEA,OAAO/E,MAAM,CAACyM,KAAK,CACjB,GAAG9C,QAAQ,EACX3J,MAAM,CAAC6L,YAAY,CAAC,kBAAkB,EAAE;IACtCpE,QAAQ,EAAEzH,MAAM,CAACyM,KAAK,CACpBzM,MAAM,CAAC0M,UAAU,CAAC9L,QAAQ,CAAC+L,QAAQ,CAAC,EACpC3M,MAAM,CAAC0M,UAAU,CAAC9L,QAAQ,CAACgM,SAAS,CAAC;GAExC,CAAC,CACI;AACV,CAAC;AAED,MAAMzH,YAAY,GAAGA,CAAU0H,KAAa,EAAEtG,MAA8B,KAC1EsG,KAAK,KAAK,CAAC,GACTtG,MAAM,GACN/G,MAAM,CAACsN,QAAQ,CAACvG,MAAM,EAAE,MAAM/G,MAAM,CAACuN,KAAK,CAAC5H,YAAY,CAAC0H,KAAK,GAAG,CAAC,EAAEtG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/cluster",
3
- "version": "0.36.3",
3
+ "version": "0.37.0",
4
4
  "description": "Unified interfaces for common cluster-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -11,10 +11,11 @@
11
11
  "sideEffects": [],
12
12
  "homepage": "https://effect.website",
13
13
  "peerDependencies": {
14
- "@effect/platform": "^0.84.3",
15
- "@effect/rpc": "^0.61.3",
16
- "@effect/sql": "^0.37.3",
17
- "effect": "^3.16.2"
14
+ "@effect/platform": "^0.84.4",
15
+ "@effect/rpc": "^0.61.4",
16
+ "@effect/sql": "^0.37.4",
17
+ "@effect/workflow": "^0.1.0",
18
+ "effect": "^3.16.3"
18
19
  },
19
20
  "publishConfig": {
20
21
  "provenance": true
@@ -44,6 +45,11 @@
44
45
  "import": "./dist/esm/ClusterSchema.js",
45
46
  "default": "./dist/cjs/ClusterSchema.js"
46
47
  },
48
+ "./ClusterWorkflowEngine": {
49
+ "types": "./dist/dts/ClusterWorkflowEngine.d.ts",
50
+ "import": "./dist/esm/ClusterWorkflowEngine.js",
51
+ "default": "./dist/cjs/ClusterWorkflowEngine.js"
52
+ },
47
53
  "./DeliverAt": {
48
54
  "types": "./dist/dts/DeliverAt.d.ts",
49
55
  "import": "./dist/esm/DeliverAt.js",
@@ -221,6 +227,9 @@
221
227
  "ClusterSchema": [
222
228
  "./dist/dts/ClusterSchema.d.ts"
223
229
  ],
230
+ "ClusterWorkflowEngine": [
231
+ "./dist/dts/ClusterWorkflowEngine.d.ts"
232
+ ],
224
233
  "DeliverAt": [
225
234
  "./dist/dts/DeliverAt.d.ts"
226
235
  ],
@@ -11,3 +11,13 @@ import { constFalse } from "effect/Function"
11
11
  export class Persisted extends Context.Reference<Persisted>()("@effect/cluster/ClusterSchema/Persisted", {
12
12
  defaultValue: constFalse
13
13
  }) {}
14
+
15
+ /**
16
+ * @since 1.0.0
17
+ * @category Annotations
18
+ */
19
+ export class Uninterruptible
20
+ extends Context.Reference<Uninterruptible>()("@effect/cluster/ClusterSchema/Uninterruptible", {
21
+ defaultValue: constFalse
22
+ })
23
+ {}
@@ -0,0 +1,475 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as Rpc from "@effect/rpc/Rpc"
5
+ import * as Activity from "@effect/workflow/Activity"
6
+ import * as DurableClock from "@effect/workflow/DurableClock"
7
+ import * as Workflow from "@effect/workflow/Workflow"
8
+ import { WorkflowEngine, WorkflowInstance } from "@effect/workflow/WorkflowEngine"
9
+ import * as Arr from "effect/Array"
10
+ import * as Context from "effect/Context"
11
+ import * as DateTime from "effect/DateTime"
12
+ import * as Duration from "effect/Duration"
13
+ import * as Effect from "effect/Effect"
14
+ import * as Layer from "effect/Layer"
15
+ import * as Option from "effect/Option"
16
+ import * as PrimaryKey from "effect/PrimaryKey"
17
+ import * as RcMap from "effect/RcMap"
18
+ import * as Schedule from "effect/Schedule"
19
+ import * as Schema from "effect/Schema"
20
+ import * as ClusterSchema from "./ClusterSchema.js"
21
+ import * as DeliverAt from "./DeliverAt.js"
22
+ import * as Entity from "./Entity.js"
23
+ import { EntityAddress } from "./EntityAddress.js"
24
+ import { EntityId } from "./EntityId.js"
25
+ import { EntityType } from "./EntityType.js"
26
+ import * as Message from "./Message.js"
27
+ import { MessageStorage } from "./MessageStorage.js"
28
+ import * as Reply from "./Reply.js"
29
+ import type { WithExitEncoded } from "./Reply.js"
30
+ import * as Sharding from "./Sharding.js"
31
+ import * as Snowflake from "./Snowflake.js"
32
+
33
+ /**
34
+ * @since 1.0.0
35
+ * @category Constructors
36
+ */
37
+ export const make = Effect.gen(function*() {
38
+ const sharding = yield* Sharding.Sharding
39
+ const storage = yield* MessageStorage
40
+ const snowflakeGen = yield* Snowflake.Generator
41
+
42
+ const entities = new Map<
43
+ string,
44
+ Entity.Entity<
45
+ | Rpc.Rpc<"run", Schema.Struct<{}>, Schema.Schema<Workflow.Result<any, any>>>
46
+ | Rpc.Rpc<
47
+ "activity",
48
+ Schema.Struct<{ name: typeof Schema.String; attempt: typeof Schema.Number }>,
49
+ Schema.Schema<Workflow.Result<any, any>>
50
+ >
51
+ >
52
+ >()
53
+ const activities = new Map<string, {
54
+ readonly activity: Activity.Any
55
+ readonly context: Context.Context<any>
56
+ }>()
57
+ const activityLatches = new Map<string, Effect.Latch>()
58
+ const clients = yield* RcMap.make({
59
+ lookup: Effect.fnUntraced(function*(workflowName: string) {
60
+ const entity = entities.get(workflowName)
61
+ if (!entity) {
62
+ return yield* Effect.dieMessage(`Workflow ${workflowName} not registered`)
63
+ }
64
+ return yield* entity.client
65
+ }),
66
+ idleTimeToLive: "5 minutes"
67
+ })
68
+ const clockClient = yield* ClockEntity.client
69
+ const deferredClient = yield* DeferredEntity.client
70
+
71
+ const requestIdFor = Effect.fnUntraced(function*(options: {
72
+ readonly entityType: string
73
+ readonly executionId: string
74
+ readonly tag: string
75
+ readonly id: string
76
+ }) {
77
+ const entityId = EntityId.make(options.executionId)
78
+ const address = new EntityAddress({
79
+ entityType: EntityType.make(options.entityType),
80
+ entityId,
81
+ shardId: sharding.getShardId(entityId)
82
+ })
83
+ return yield* storage.requestIdForPrimaryKey({ address, tag: options.tag, id: options.id })
84
+ })
85
+
86
+ const replyForRequestId = Effect.fnUntraced(function*(requestId: Snowflake.Snowflake) {
87
+ const replies = yield* storage.repliesForUnfiltered([requestId])
88
+ return Arr.last(replies).pipe(
89
+ Option.filter((reply) => reply._tag === "WithExit"),
90
+ Option.map((reply) =>
91
+ reply as WithExitEncoded<Rpc.Rpc<string, Schema.Struct<{}>, Schema.Schema<Workflow.Result<any, any>>>>
92
+ )
93
+ )
94
+ })
95
+
96
+ const requestReply = Effect.fnUntraced(function*(options: {
97
+ readonly entityType: string
98
+ readonly executionId: string
99
+ readonly tag: string
100
+ readonly id: string
101
+ }) {
102
+ const requestId = yield* requestIdFor(options)
103
+ if (Option.isNone(requestId)) {
104
+ return Option.none()
105
+ }
106
+ return yield* replyForRequestId(requestId.value)
107
+ })
108
+
109
+ const resetActivityAttempt = Effect.fnUntraced(
110
+ function*(options: {
111
+ readonly workflow: Workflow.Any
112
+ readonly executionId: string
113
+ readonly activity: Activity.Any
114
+ readonly attempt: number
115
+ }) {
116
+ const requestId = yield* requestIdFor({
117
+ entityType: `Workflow/${options.workflow.name}`,
118
+ executionId: options.executionId,
119
+ tag: "activity",
120
+ id: activityPrimaryKey(options.activity.name, options.attempt)
121
+ })
122
+ if (Option.isNone(requestId)) return
123
+ yield* sharding.reset(requestId.value)
124
+ },
125
+ Effect.retry({
126
+ times: 3,
127
+ schedule: Schedule.exponential(250)
128
+ }),
129
+ Effect.orDie
130
+ )
131
+
132
+ return WorkflowEngine.of({
133
+ register: (workflow, execute) =>
134
+ Effect.suspend(() => {
135
+ if (entities.has(workflow.name)) {
136
+ return Effect.dieMessage(`Workflow ${workflow.name} already registered`)
137
+ }
138
+ const entity = makeWorkflowEntity(workflow)
139
+ entities.set(workflow.name, entity as any)
140
+ return sharding.registerEntity(
141
+ entity,
142
+ Effect.gen(function*() {
143
+ const address = yield* Entity.CurrentAddress
144
+ const executionId = address.entityId
145
+ return {
146
+ run: (request: Entity.Request<any>) =>
147
+ execute(request.payload, executionId).pipe(
148
+ Workflow.intoResult,
149
+ Effect.provideService(
150
+ WorkflowInstance,
151
+ WorkflowInstance.of({
152
+ workflow,
153
+ executionId,
154
+ suspended: false
155
+ })
156
+ )
157
+ ) as any,
158
+ activity: Effect.fnUntraced(function*(request: Entity.Request<any>) {
159
+ const activityId = `${executionId}/${request.payload.name}`
160
+ let entry = activities.get(activityId)
161
+ while (!entry) {
162
+ const latch = Effect.unsafeMakeLatch()
163
+ activityLatches.set(activityId, latch)
164
+ yield* latch.await
165
+ entry = activities.get(activityId)
166
+ }
167
+ const contextMap = new Map(entry.context.unsafeMap)
168
+ contextMap.set(Activity.CurrentAttempt.key, request.payload.attempt)
169
+ contextMap.set(
170
+ WorkflowInstance.key,
171
+ WorkflowInstance.of({
172
+ workflow,
173
+ executionId,
174
+ suspended: false
175
+ })
176
+ )
177
+ return yield* entry.activity.executeEncoded.pipe(
178
+ Workflow.intoResult,
179
+ Effect.provide(Context.unsafeMake(contextMap)),
180
+ Effect.ensuring(Effect.sync(() => {
181
+ activities.delete(activityId)
182
+ }))
183
+ )
184
+ }, Rpc.fork)
185
+ }
186
+ })
187
+ ) as Effect.Effect<void>
188
+ }),
189
+
190
+ execute: ({ discard, executionId, payload, workflow }) =>
191
+ RcMap.get(clients, workflow.name).pipe(
192
+ Effect.flatMap((make) => make(executionId).run(payload, { discard })),
193
+ Effect.orDie,
194
+ Effect.scoped
195
+ ),
196
+
197
+ interrupt: Effect.fnUntraced(
198
+ function*(workflow, executionId) {
199
+ const requestId = yield* requestIdFor({
200
+ entityType: `Workflow/${workflow.name}`,
201
+ executionId,
202
+ tag: "run",
203
+ id: ""
204
+ })
205
+ if (Option.isNone(requestId)) {
206
+ return
207
+ }
208
+ const reply = yield* replyForRequestId(requestId.value)
209
+ const nonSuspendedReply = reply.pipe(
210
+ Option.filter((reply) => reply.exit._tag !== "Success" || reply.exit.value._tag !== "Suspended")
211
+ )
212
+ if (Option.isSome(nonSuspendedReply)) {
213
+ return
214
+ }
215
+
216
+ const entityId = EntityId.make(executionId)
217
+ const shardId = sharding.getShardId(entityId)
218
+ const workflowAddress = new EntityAddress({
219
+ entityType: EntityType.make(`Workflow/${workflow.name}`),
220
+ entityId,
221
+ shardId
222
+ })
223
+ const deferredAddress = new EntityAddress({
224
+ entityType: DeferredEntity.type,
225
+ entityId,
226
+ shardId
227
+ })
228
+ const clockAddress = new EntityAddress({
229
+ entityType: ClockEntity.type,
230
+ entityId,
231
+ shardId
232
+ })
233
+ if (Option.isNone(reply)) {
234
+ yield* sharding.sendOutgoing(
235
+ Message.OutgoingEnvelope.interrupt({
236
+ address: workflowAddress,
237
+ id: snowflakeGen.unsafeNext(),
238
+ requestId: requestId.value
239
+ }),
240
+ true
241
+ )
242
+ } else {
243
+ yield* sharding.reset(requestId.value)
244
+ }
245
+ yield* storage.saveReply(Reply.ReplyWithContext.interrupt({
246
+ id: snowflakeGen.unsafeNext(),
247
+ requestId: requestId.value
248
+ }))
249
+ yield* storage.clearAddress(deferredAddress)
250
+ yield* storage.clearAddress(clockAddress)
251
+ },
252
+ Effect.retry({
253
+ while: (e) => e._tag === "PersistenceError",
254
+ times: 3,
255
+ schedule: Schedule.exponential(250)
256
+ }),
257
+ Effect.orDie
258
+ ),
259
+
260
+ resume: Effect.fnUntraced(
261
+ function*(workflowName: string, executionId: string) {
262
+ const maybeReply = yield* requestReply({
263
+ entityType: `Workflow/${workflowName}`,
264
+ executionId,
265
+ tag: "run",
266
+ id: ""
267
+ })
268
+ const maybeSuspended = Option.filter(
269
+ maybeReply,
270
+ (reply) => reply.exit._tag === "Success" && reply.exit.value._tag === "Suspended"
271
+ )
272
+ if (Option.isNone(maybeSuspended)) return
273
+ yield* sharding.reset(Snowflake.Snowflake(maybeSuspended.value.requestId))
274
+ },
275
+ Effect.retry({
276
+ while: (e) => e._tag === "PersistenceError",
277
+ times: 3,
278
+ schedule: Schedule.exponential(250)
279
+ }),
280
+ Effect.orDie
281
+ ),
282
+
283
+ activityExecute: Effect.fnUntraced(function*({ activity, attempt }) {
284
+ const context = yield* Effect.context<WorkflowInstance>()
285
+ const instance = Context.get(context, WorkflowInstance)
286
+ const activityId = `${instance.executionId}/${activity.name}`
287
+ activities.set(activityId, { activity, context })
288
+ const latch = activityLatches.get(activityId)
289
+ if (latch) {
290
+ yield* latch.release
291
+ activityLatches.delete(activityId)
292
+ }
293
+ const client = (yield* RcMap.get(clients, instance.workflow.name))(instance.executionId)
294
+ while (true) {
295
+ const result = yield* Effect.orDie(client.activity({ name: activity.name, attempt }))
296
+ // If the activity has suspended and did not execute, we need to resume
297
+ // it by resetting the attempt and re-executing.
298
+ if (result._tag === "Suspended" && activities.has(activityId)) {
299
+ yield* resetActivityAttempt({
300
+ workflow: instance.workflow,
301
+ executionId: instance.executionId,
302
+ activity,
303
+ attempt
304
+ })
305
+ continue
306
+ }
307
+ activities.delete(activityId)
308
+ return result
309
+ }
310
+ }, Effect.scoped),
311
+
312
+ deferredResult: (deferred) =>
313
+ WorkflowInstance.pipe(
314
+ Effect.flatMap((instance) =>
315
+ requestReply({
316
+ entityType: DeferredEntity.type,
317
+ executionId: instance.executionId,
318
+ tag: "set",
319
+ id: deferred.name
320
+ })
321
+ ),
322
+ Effect.map(Option.map((reply) => reply.exit)),
323
+ Effect.retry({
324
+ while: (e) => e._tag === "PersistenceError",
325
+ times: 3,
326
+ schedule: Schedule.exponential(250)
327
+ }),
328
+ Effect.orDie
329
+ ),
330
+
331
+ deferredDone({ deferred, executionId, exit, workflowName }) {
332
+ const client = deferredClient(executionId)
333
+ return Effect.orDie(client.set({
334
+ workflowName,
335
+ name: deferred.name,
336
+ exit
337
+ }))
338
+ },
339
+
340
+ scheduleClock(options) {
341
+ const client = clockClient(options.executionId)
342
+ return DateTime.now.pipe(
343
+ Effect.flatMap((now) =>
344
+ client.run({
345
+ name: options.clock.name,
346
+ workflowName: options.workflow.name,
347
+ wakeUp: DateTime.addDuration(now, options.clock.duration)
348
+ }, { discard: true })
349
+ ),
350
+ Effect.orDie
351
+ )
352
+ }
353
+ })
354
+ })
355
+
356
+ const ActivityRpc = Rpc.make("activity", {
357
+ payload: {
358
+ name: Schema.String,
359
+ attempt: Schema.Number
360
+ },
361
+ primaryKey: ({ attempt, name }) => activityPrimaryKey(name, attempt),
362
+ success: Workflow.Result({
363
+ success: Schema.Unknown,
364
+ error: Schema.Unknown
365
+ })
366
+ })
367
+
368
+ const makeWorkflowEntity = (workflow: Workflow.Any) =>
369
+ Entity.make(`Workflow/${workflow.name}`, [
370
+ Rpc.make("run", {
371
+ payload: workflow.payloadSchema.fields,
372
+ primaryKey: () => "",
373
+ success: Workflow.Result({
374
+ success: workflow.successSchema,
375
+ error: workflow.errorSchema
376
+ })
377
+ }),
378
+ ActivityRpc
379
+ ])
380
+ .annotateRpcs(ClusterSchema.Persisted, true)
381
+ .annotateRpcs(ClusterSchema.Uninterruptible, true)
382
+
383
+ const activityPrimaryKey = (activity: string, attempt: number) => `${activity}/${attempt}`
384
+
385
+ const ExitUnknown = Schema.encodedSchema(Schema.Exit({
386
+ success: Schema.Unknown,
387
+ failure: Schema.Unknown,
388
+ defect: Schema.Defect
389
+ }))
390
+
391
+ const DeferredEntity = Entity.make("Workflow/-/DurableDeferred", [
392
+ Rpc.make("set", {
393
+ payload: {
394
+ workflowName: Schema.String,
395
+ name: Schema.String,
396
+ exit: ExitUnknown
397
+ },
398
+ primaryKey: ({ name }) => name,
399
+ success: ExitUnknown
400
+ }),
401
+ Rpc.make("resume", {
402
+ payload: {
403
+ workflowName: Schema.String,
404
+ name: Schema.String
405
+ },
406
+ primaryKey: ({ name }) => name
407
+ })
408
+ ])
409
+ .annotateRpcs(ClusterSchema.Persisted, true)
410
+ .annotateRpcs(ClusterSchema.Uninterruptible, true)
411
+
412
+ const DeferredEntityLayer = DeferredEntity.toLayer(Effect.gen(function*() {
413
+ const engine = yield* WorkflowEngine
414
+ const address = yield* Entity.CurrentAddress
415
+ const executionId = address.entityId
416
+ const client = (yield* DeferredEntity.client)(executionId)
417
+ return {
418
+ set: (request) =>
419
+ Effect.as(
420
+ Effect.orDie(client.resume(request.payload, { discard: true })),
421
+ request.payload.exit
422
+ ),
423
+ resume: (request) => engine.resume(request.payload.workflowName, executionId)
424
+ }
425
+ }))
426
+
427
+ class ClockPayload extends Schema.Class<ClockPayload>(`Workflow/DurableClock/Run`)({
428
+ name: Schema.String,
429
+ workflowName: Schema.String,
430
+ wakeUp: Schema.DateTimeUtcFromNumber
431
+ }) {
432
+ [PrimaryKey.symbol]() {
433
+ return this.name
434
+ }
435
+ [DeliverAt.symbol]() {
436
+ return this.wakeUp
437
+ }
438
+ }
439
+
440
+ const ClockEntity = Entity.make("Workflow/-/DurableClock", [
441
+ Rpc.make("run", { payload: ClockPayload })
442
+ .annotate(ClusterSchema.Persisted, true)
443
+ .annotate(ClusterSchema.Uninterruptible, true)
444
+ ])
445
+
446
+ const ClockEntityLayer = ClockEntity.toLayer(Effect.gen(function*() {
447
+ const engine = yield* WorkflowEngine
448
+ const address = yield* Entity.CurrentAddress
449
+ const executionId = address.entityId
450
+ return {
451
+ run(request) {
452
+ const deferred = DurableClock.make({ name: request.payload.name, duration: Duration.zero }).deferred
453
+ return engine.deferredDone({
454
+ workflowName: request.payload.workflowName,
455
+ executionId,
456
+ deferred,
457
+ exit: { _tag: "Success", value: void 0 }
458
+ })
459
+ }
460
+ }
461
+ }))
462
+
463
+ /**
464
+ * @since 1.0.0
465
+ * @category Layers
466
+ */
467
+ export const layer: Layer.Layer<
468
+ WorkflowEngine,
469
+ never,
470
+ Sharding.Sharding | MessageStorage
471
+ > = DeferredEntityLayer.pipe(
472
+ Layer.merge(ClockEntityLayer),
473
+ Layer.provideMerge(Layer.scoped(WorkflowEngine, make)),
474
+ Layer.provide(Snowflake.layerGenerator)
475
+ )
package/src/Envelope.ts CHANGED
@@ -346,7 +346,21 @@ export const primaryKey = <R extends Rpc.Any>(envelope: Envelope<R>): string | n
346
346
  if (envelope._tag !== "Request" || !(Predicate.hasProperty(envelope.payload, PrimaryKey.symbol))) {
347
347
  return null
348
348
  }
349
- const value = PrimaryKey.value(envelope.payload)
350
- // hash the entity address to save space?
351
- return `${envelope.address.entityType}/${envelope.address.entityId}/${envelope.tag}/${value}`
349
+ return primaryKeyByAddress({
350
+ address: envelope.address,
351
+ tag: envelope.tag,
352
+ id: PrimaryKey.value(envelope.payload)
353
+ })
352
354
  }
355
+
356
+ /**
357
+ * @since 1.0.0
358
+ * @category primary key
359
+ */
360
+ export const primaryKeyByAddress = (options: {
361
+ readonly address: EntityAddress
362
+ readonly tag: string
363
+ readonly id: string
364
+ }): string =>
365
+ // hash the entity address to save space?
366
+ `${options.address.entityType}/${options.address.entityId}/${options.tag}/${options.id}`