@emilia-protocol/gate 0.15.0 → 0.15.2
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 +40 -0
- package/dist/aeb-consumption-store.d.ts +9 -1
- package/dist/aeb-consumption-store.d.ts.map +1 -1
- package/dist/aeb-consumption-store.js +42 -1
- package/dist/aeb-consumption-store.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/proposal-to-effect-postgres.d.ts +15 -0
- package/dist/proposal-to-effect-postgres.d.ts.map +1 -1
- package/dist/proposal-to-effect-postgres.js +76 -5
- package/dist/proposal-to-effect-postgres.js.map +1 -1
- package/dist/proposal-to-effect-status-head-store.d.ts +72 -0
- package/dist/proposal-to-effect-status-head-store.d.ts.map +1 -0
- package/dist/proposal-to-effect-status-head-store.js +355 -0
- package/dist/proposal-to-effect-status-head-store.js.map +1 -0
- package/dist/proposal-to-effect-status.d.ts +9 -9
- package/dist/proposal-to-effect-status.d.ts.map +1 -1
- package/dist/proposal-to-effect-status.js +33 -19
- package/dist/proposal-to-effect-status.js.map +1 -1
- package/package.json +6 -1
- package/proposal-to-effect-status-head-store.js +2 -0
- package/src/aeb-consumption-store.ts +48 -1
- package/src/index.ts +15 -1
- package/src/proposal-to-effect-postgres.ts +102 -5
- package/src/proposal-to-effect-status-head-store.ts +449 -0
- package/src/proposal-to-effect-status.ts +62 -31
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proposal-to-effect-status.js","sourceRoot":"","sources":["../src/proposal-to-effect-status.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC;;;;;;;GAOG;AAGH,OAAO,EACL,oBAAoB,
|
|
1
|
+
{"version":3,"file":"proposal-to-effect-status.js","sourceRoot":"","sources":["../src/proposal-to-effect-status.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC;;;;;;;GAOG;AAGH,OAAO,EACL,oBAAoB,GAIrB,MAAM,gCAAgC,CAAC;AAUxC,OAAO,EACL,4CAA4C,EAC5C,oCAAoC,EACpC,kCAAkC,EAClC,6CAA6C,GAC9C,MAAM,2CAA2C,CAAC;AA0DnD,MAAM,cAAc,GAAG,uBAAuB,CAAC;AAC/C,MAAM,YAAY,GAAG,wGAAwG,CAAC;AAC9H,MAAM,aAAa,GAAG;IACpB,WAAW;IACX,aAAa;IACb,cAAc;IACd,MAAM;IACN,cAAc;IACd,iBAAiB;IACjB,aAAa;CACL,CAAC;AACX,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAC;AAC/D,MAAM,kBAAkB,GAAG;IACzB,kBAAkB;IAClB,cAAc;IACd,QAAQ;IACR,YAAY;CACJ,CAAC;AAEX,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACvE,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1C,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/D,OAAO,OAAO,CAAC,UAAU,EAAE,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CACtB,KAAc,EACd,IAAuB;IAEvB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,OAAO,GAAG,GAAG;IAClD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC;AAClF,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,kBAAkB,CAAC;WACxC,CAAC,aAAa,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC;WAC3C,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC;WAClC,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;WAC5B,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC;WACnC,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC;WAC/B,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC;WACjC,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC;WAClC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;WAC9B,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;WAC9B,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC;WAClC,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC;WAC9B,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,WAAW,EAAE,KAAK,CAAC,WAAW;KAC/B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC;WACjC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAc,CAAC;WACnE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;WACxB,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;WACrB,CAAC,CAAC,eAAe,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAe,CAAC,EAAE,CAAC;QACrF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,KAAK,CAAC,IAA4B;QACxC,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,KAA8B;KAC5C,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC5F,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/E,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,UAAU,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;IACnF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,KAAc,EAAE,OAAO,IAAI,OAAO,EAAU;IAChE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC5F,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACzC,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChB,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;IAChF,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,QAAQ,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;AAC9C,CAAC;AAED,SAAS,OAAO,CACd,OAAoC,EACpC,MAAc;IAEd,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,OAAO;QACP,MAAM,EAAE,IAAI;QACZ,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAA8C;IAE9C,MAAM,YAAY,GAAG,oBAAoB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACjE,IAAI,CAAC,YAAY;WACV,OAAO,OAAO,CAAC,YAAY,KAAK,UAAU;WAC1C,OAAO,OAAO,CAAC,mBAAmB,KAAK,UAAU;WACjD,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC;WACpC,OAAO,CAAC,eAAe,CAAC,OAAO,KAAK,IAAI;WACxC,CAAC,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC;WAChD,CAAC,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC;WACtD,OAAO,OAAO,CAAC,eAAe,CAAC,MAAM,KAAK,UAAU;WACpD,OAAO,OAAO,CAAC,wBAAwB,KAAK,UAAU,EAAE,CAAC;QAC9D,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oCAAoC,CAClD,OAA8C;IAE9C,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC1C,MAAM,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IACxD,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAChD,MAAM,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAElE,OAAO,KAAK,EAAE,KAAK,EAAsD,EAAE;QACzE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5B,OAAO,OAAO,CAAC,eAAe,EAAE,iCAAiC,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,cAAuB,CAAC;QAC5B,IAAI,MAA8B,CAAC;QACnC,IAAI,CAAC;YACH,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;YAChD,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,CAAC,QAAQ;gBAAE,OAAO,OAAO,CAAC,eAAe,EAAE,iCAAiC,CAAC,CAAC;YAClF,MAAM,GAAG,QAAQ,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,OAAO,CAAC,eAAe,EAAE,iCAAiC,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACpD,IAAI,WAAoB,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,mBAAmB,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC/D,IAAI,mBAAmB,KAAK,SAAS,IAAI,mBAAmB,KAAK,IAAI,EAAE,CAAC;gBACtE,OAAO,OAAO,CAAC,eAAe,EAAE,gCAAgC,CAAC,CAAC;YACpE,CAAC;YACD,WAAW,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,OAAO,CAAC,eAAe,EAAE,gCAAgC,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,eAAe,CAAC,QAAQ,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC;YACpD,OAAO,OAAO,CAAC,eAAe,EAAE,4BAA4B,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,UAAU,CAAC;QACf,IAAI,CAAC;YACH,UAAU,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC;gBACxC,MAAM;gBACN,MAAM,EAAE,cAAc;gBACtB,MAAM,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,cAAc,EAAE;oBACvE,YAAY;oBACZ,WAAW;oBACX,cAAc;oBACd,GAAG,EAAE,KAAK,CAAC,GAAG;iBACf,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,OAAO,CAAC,eAAe,EAAE,+BAA+B,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;eACpB,OAAO,UAAU,CAAC,QAAQ,KAAK,SAAS;eACxC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC;eAC1C,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5C,OAAO,OAAO,CAAC,eAAe,EAAE,2BAA2B,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YACzB,OAAO,OAAO,CACZ,eAAe,EACf,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC;gBAC9B,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,2BAA2B,CACpD,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,UAAU,CAAC,YAA6C,CAAC;QAC9E,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,OAAO,KAAK,eAAe,EAAE,CAAC;YACpE,OAAO,OAAO,CACZ,eAAe,EACf,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,4BAA4B,CACxD,CAAC;QACJ,CAAC;QACD,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACvC,OAAO,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC;eAChC,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC;eAC5C,YAAY,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtC,OAAO,OAAO,CAAC,eAAe,EAAE,gCAAgC,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,WAA6C,CAAC;QAClD,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC;gBACzD,GAAG,OAAO;gBACV,aAAa,EAAE,YAAY,CAAC,aAAa;gBACzC,QAAQ,EAAE,YAAY,CAAC,QAAQ;aAChC,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,OAAO,CAAC,eAAe,EAAE,sCAAsC,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;eACrB,WAAW,CAAC,aAAa,KAAK,IAAI;eAClC,OAAO,WAAW,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACjD,OAAO,OAAO,CAAC,eAAe,EAAE,kCAAkC,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;YACzB,OAAO,OAAO,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACjE,OAAO,OAAO,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAAC;QAC3D,CAAC;QAED,wEAAwE;QACxE,6EAA6E;QAC7E,MAAM,MAAM,GAAmB;YAC7B,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,SAAS;YACrB,kBAAkB,EAAE,IAAI;YACxB,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,OAAO;YACL,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,qBAAqB;YAC9B,MAAM;SACP,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@emilia-protocol/gate",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.2",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/emiliaprotocol/emilia-protocol.git",
|
|
@@ -269,6 +269,10 @@
|
|
|
269
269
|
"types": "./dist/proposal-to-effect-status.d.ts",
|
|
270
270
|
"import": "./proposal-to-effect-status.js"
|
|
271
271
|
},
|
|
272
|
+
"./proposal-to-effect-status-head-store": {
|
|
273
|
+
"types": "./dist/proposal-to-effect-status-head-store.d.ts",
|
|
274
|
+
"import": "./proposal-to-effect-status-head-store.js"
|
|
275
|
+
},
|
|
272
276
|
"./proposal-to-effect-postgres": {
|
|
273
277
|
"types": "./dist/proposal-to-effect-postgres.d.ts",
|
|
274
278
|
"import": "./proposal-to-effect-postgres.js"
|
|
@@ -325,6 +329,7 @@
|
|
|
325
329
|
"remedy-case-set-postgres.js",
|
|
326
330
|
"proposal-to-effect.js",
|
|
327
331
|
"proposal-to-effect-status.js",
|
|
332
|
+
"proposal-to-effect-status-head-store.js",
|
|
328
333
|
"proposal-to-effect-postgres.js",
|
|
329
334
|
"aeb-consumption-store.js",
|
|
330
335
|
"zk-range-proof.js",
|
|
@@ -136,6 +136,22 @@ BEGIN
|
|
|
136
136
|
RETURNING ${AEB_CONSUMPTION_OPERATION_TABLE}.operation_key;
|
|
137
137
|
END
|
|
138
138
|
$fn$;
|
|
139
|
+
CREATE OR REPLACE FUNCTION ep_aeb_private.has_replay_fence(
|
|
140
|
+
p_tenant_id TEXT, p_relying_party_id TEXT, p_replay_key TEXT
|
|
141
|
+
) RETURNS TABLE(fenced BOOLEAN)
|
|
142
|
+
LANGUAGE plpgsql VOLATILE SECURITY DEFINER SET search_path = ''
|
|
143
|
+
AS $fn$
|
|
144
|
+
BEGIN
|
|
145
|
+
PERFORM ep_aeb_private.assert_tenant_principal(p_tenant_id, FALSE);
|
|
146
|
+
RETURN QUERY SELECT EXISTS (
|
|
147
|
+
SELECT 1
|
|
148
|
+
FROM public.${AEB_CONSUMPTION_REPLAY_TABLE} AS fences
|
|
149
|
+
WHERE fences.tenant_id = p_tenant_id
|
|
150
|
+
AND fences.relying_party_id = p_relying_party_id
|
|
151
|
+
AND fences.replay_key = p_replay_key
|
|
152
|
+
);
|
|
153
|
+
END
|
|
154
|
+
$fn$;
|
|
139
155
|
CREATE OR REPLACE FUNCTION ep_aeb_private.reserve_replay_keys(
|
|
140
156
|
p_tenant_id TEXT, p_relying_party_id TEXT, p_operation_key TEXT, p_replay_keys TEXT[]
|
|
141
157
|
) RETURNS TABLE(replay_key TEXT)
|
|
@@ -200,6 +216,8 @@ ALTER FUNCTION ep_aeb_private.assert_tenant_principal(TEXT, BOOLEAN)
|
|
|
200
216
|
OWNER TO ${AEB_CONSUMPTION_OWNER_ROLE};
|
|
201
217
|
ALTER FUNCTION ep_aeb_private.reserve_operation(TEXT, TEXT, TEXT, TEXT)
|
|
202
218
|
OWNER TO ${AEB_CONSUMPTION_OWNER_ROLE};
|
|
219
|
+
ALTER FUNCTION ep_aeb_private.has_replay_fence(TEXT, TEXT, TEXT)
|
|
220
|
+
OWNER TO ${AEB_CONSUMPTION_OWNER_ROLE};
|
|
203
221
|
ALTER FUNCTION ep_aeb_private.reserve_replay_keys(TEXT, TEXT, TEXT, TEXT[])
|
|
204
222
|
OWNER TO ${AEB_CONSUMPTION_OWNER_ROLE};
|
|
205
223
|
ALTER FUNCTION ep_aeb_private.commit_operation(TEXT, TEXT, TEXT, TEXT)
|
|
@@ -211,7 +229,8 @@ ALTER FUNCTION ep_aeb_private.release_operation(TEXT, TEXT, TEXT, TEXT)
|
|
|
211
229
|
REVOKE ALL ON ALL FUNCTIONS IN SCHEMA ep_aeb_private
|
|
212
230
|
FROM PUBLIC, anon, authenticated, service_role;
|
|
213
231
|
GRANT USAGE ON SCHEMA ep_aeb_private TO ${AEB_CONSUMPTION_EXECUTOR_ROLE}, ${AEB_CONSUMPTION_RECOVERY_ROLE};
|
|
214
|
-
GRANT EXECUTE ON FUNCTION ep_aeb_private.
|
|
232
|
+
GRANT EXECUTE ON FUNCTION ep_aeb_private.has_replay_fence(TEXT, TEXT, TEXT),
|
|
233
|
+
ep_aeb_private.reserve_operation(TEXT, TEXT, TEXT, TEXT),
|
|
215
234
|
ep_aeb_private.reserve_replay_keys(TEXT, TEXT, TEXT, TEXT[]),
|
|
216
235
|
ep_aeb_private.commit_operation(TEXT, TEXT, TEXT, TEXT),
|
|
217
236
|
ep_aeb_private.release_operation(TEXT, TEXT, TEXT, TEXT)
|
|
@@ -222,6 +241,7 @@ REVOKE ${AEB_CONSUMPTION_OWNER_ROLE} FROM CURRENT_USER;`;
|
|
|
222
241
|
|
|
223
242
|
/** Exact statements issued by the store, exported for audit and deterministic fakes. */
|
|
224
243
|
export const AEB_CONSUMPTION_SQL = Object.freeze({
|
|
244
|
+
hasReplayFence: `SELECT fenced FROM ep_aeb_private.has_replay_fence($1::text, $2::text, $3::text)`,
|
|
225
245
|
reserveOperation: `SELECT operation_key FROM ep_aeb_private.reserve_operation($1::text, $2::text, $3::text, $4::text)`,
|
|
226
246
|
reserveReplayKeys: `SELECT replay_key FROM ep_aeb_private.reserve_replay_keys($1::text, $2::text, $3::text, $4::text[])`,
|
|
227
247
|
commitOperation: `SELECT operation_key FROM ep_aeb_private.commit_operation($1::text, $2::text, $3::text, $4::text)`,
|
|
@@ -270,6 +290,12 @@ export type AebRecoveryClaimAuthorizer = (
|
|
|
270
290
|
|
|
271
291
|
export interface PostgresAebDurableConsumptionStore extends AebDurableConsumptionStore {
|
|
272
292
|
recoveryClaimSupported: true;
|
|
293
|
+
/**
|
|
294
|
+
* Authenticated pre-reservation observation for one exact native replay key.
|
|
295
|
+
* A true result includes both RESERVED and CONSUMED fences. Atomic reserve
|
|
296
|
+
* remains the race-closing operation.
|
|
297
|
+
*/
|
|
298
|
+
hasReplayFence(replayKey: string): Promise<boolean>;
|
|
273
299
|
/**
|
|
274
300
|
* Rotate ownership of an existing RESERVED row after external authorization.
|
|
275
301
|
* The stored and replacement owner tokens are never returned or passed to
|
|
@@ -395,6 +421,27 @@ export function createPostgresAebDurableConsumptionStore({
|
|
|
395
421
|
atomicReplayFenced: true,
|
|
396
422
|
recoveryClaimSupported: true,
|
|
397
423
|
|
|
424
|
+
async hasReplayFence(replayKey): Promise<boolean> {
|
|
425
|
+
assertText(replayKey, 'native replay key', 4096);
|
|
426
|
+
const client = await pool.connect();
|
|
427
|
+
if (!client || typeof client.query !== 'function' || typeof client.release !== 'function') {
|
|
428
|
+
throw new TypeError('AEB consumption pg pool returned an invalid client');
|
|
429
|
+
}
|
|
430
|
+
try {
|
|
431
|
+
const result = await client.query(AEB_CONSUMPTION_SQL.hasReplayFence, [
|
|
432
|
+
tenantId, relyingPartyId, replayKey,
|
|
433
|
+
]);
|
|
434
|
+
const rows = exactRowCount(result, 'lookup replay fence');
|
|
435
|
+
const fenced = result.rows?.[0]?.fenced;
|
|
436
|
+
if (rows !== 1 || result.rows?.length !== 1 || typeof fenced !== 'boolean') {
|
|
437
|
+
throw new Error('lookup replay fence: malformed PostgreSQL result');
|
|
438
|
+
}
|
|
439
|
+
return fenced;
|
|
440
|
+
} finally {
|
|
441
|
+
client.release();
|
|
442
|
+
}
|
|
443
|
+
},
|
|
444
|
+
|
|
398
445
|
async reserve(key, replayKeys = []): Promise<AebReservationResult> {
|
|
399
446
|
assertText(key, 'operation key', 4096);
|
|
400
447
|
if (!Array.isArray(replayKeys)) {
|
package/src/index.ts
CHANGED
|
@@ -313,7 +313,21 @@ export {
|
|
|
313
313
|
proposalToEffectConsumptionNonce,
|
|
314
314
|
createProposalToEffect,
|
|
315
315
|
} from './proposal-to-effect.js';
|
|
316
|
-
export {
|
|
316
|
+
export {
|
|
317
|
+
PROPOSAL_TO_EFFECT_STATUS_HEAD_STORE_VERSION,
|
|
318
|
+
PROPOSAL_TO_EFFECT_STATUS_HEAD_TABLE,
|
|
319
|
+
PROPOSAL_TO_EFFECT_STATUS_HEAD_SQL,
|
|
320
|
+
createProposalToEffectStatusVerifier,
|
|
321
|
+
createPostgresProposalToEffectStatusHeadStore,
|
|
322
|
+
} from './proposal-to-effect-status.js';
|
|
323
|
+
export type {
|
|
324
|
+
PostgresProposalToEffectStatusHeadStoreOptions,
|
|
325
|
+
ProposalToEffectStatusHeadAcceptance,
|
|
326
|
+
ProposalToEffectStatusHeadAcceptanceInput,
|
|
327
|
+
ProposalToEffectStatusHeadPgClient,
|
|
328
|
+
ProposalToEffectStatusHeadPgPool,
|
|
329
|
+
ProposalToEffectStatusHeadStore,
|
|
330
|
+
} from './proposal-to-effect-status.js';
|
|
317
331
|
export {
|
|
318
332
|
PROPOSAL_TO_EFFECT_POSTGRES_DDL,
|
|
319
333
|
PROPOSAL_TO_EFFECT_POSTGRES_SQL,
|
|
@@ -68,6 +68,14 @@ export interface ProposalToEffectAttemptDigests {
|
|
|
68
68
|
config_digest: AebDigest;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
export interface ProposalToEffectPostgresAttemptLookup {
|
|
72
|
+
tenant_id: string;
|
|
73
|
+
provider_id: string;
|
|
74
|
+
provider_account_id: string;
|
|
75
|
+
environment: string;
|
|
76
|
+
request_digest: AebDigest;
|
|
77
|
+
}
|
|
78
|
+
|
|
71
79
|
export interface ProposalToEffectPostgresAttemptReference {
|
|
72
80
|
tenant_id: string;
|
|
73
81
|
provider_id: string;
|
|
@@ -110,6 +118,14 @@ export type ProposalToEffectPostgresRecoveryResult =
|
|
|
110
118
|
|
|
111
119
|
export interface ProposalToEffectPostgresStore
|
|
112
120
|
extends ProposalToEffectConsequenceAttemptStore {
|
|
121
|
+
/**
|
|
122
|
+
* Rediscover an attempt after a lost response using only the exact,
|
|
123
|
+
* server-derived provider tuple and request digest. This neither executes
|
|
124
|
+
* nor rotates custody and returns no owner or operational state.
|
|
125
|
+
*/
|
|
126
|
+
lookup(
|
|
127
|
+
input: ProposalToEffectPostgresAttemptLookup,
|
|
128
|
+
): Promise<ProposalToEffectPostgresAttemptReference | null>;
|
|
113
129
|
/**
|
|
114
130
|
* Read operational saga state by its complete durable namespace and request
|
|
115
131
|
* digest. Owner material is deliberately absent.
|
|
@@ -885,11 +901,11 @@ BEGIN
|
|
|
885
901
|
attempts.owner_generation,
|
|
886
902
|
pg_catalog.to_char(
|
|
887
903
|
attempts.last_heartbeat_at AT TIME ZONE 'UTC',
|
|
888
|
-
'YYYY-MM-DD"T"HH24:MI:SS.
|
|
904
|
+
'YYYY-MM-DD"T"HH24:MI:SS.US"Z"'
|
|
889
905
|
),
|
|
890
906
|
pg_catalog.to_char(
|
|
891
907
|
attempts.lease_expires_at AT TIME ZONE 'UTC',
|
|
892
|
-
'YYYY-MM-DD"T"HH24:MI:SS.
|
|
908
|
+
'YYYY-MM-DD"T"HH24:MI:SS.US"Z"'
|
|
893
909
|
),
|
|
894
910
|
attempts.lease_expires_at <= pg_catalog.clock_timestamp()
|
|
895
911
|
FROM proposal_to_effect_private.consequence_attempts AS attempts
|
|
@@ -1037,6 +1053,9 @@ export const PROPOSAL_TO_EFFECT_POSTGRES_SQL = Object.freeze({
|
|
|
1037
1053
|
$1, $2, $3, $4, $5, $6, $7, $8, $9,
|
|
1038
1054
|
$10, $11, $12, $13, $14, $15, $16, $17, $18, $19
|
|
1039
1055
|
)`,
|
|
1056
|
+
lookup: `SELECT * FROM proposal_to_effect_private.lookup_attempt(
|
|
1057
|
+
$1, $2, $3, $4, $5
|
|
1058
|
+
)`,
|
|
1040
1059
|
read: `SELECT * FROM proposal_to_effect_private.read_attempt(
|
|
1041
1060
|
$1, $2, $3, $4, $5, $6
|
|
1042
1061
|
)`,
|
|
@@ -1072,9 +1091,13 @@ function assertDigest(value: unknown, name: string): asserts value is AebDigest
|
|
|
1072
1091
|
|
|
1073
1092
|
function assertInstant(value: unknown, name: string): asserts value is string {
|
|
1074
1093
|
if (typeof value !== 'string'
|
|
1075
|
-
|| !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/.test(value)
|
|
1076
|
-
|
|
1077
|
-
|
|
1094
|
+
|| !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3,6}Z$/.test(value)) {
|
|
1095
|
+
throw new TypeError(`${name} is invalid`);
|
|
1096
|
+
}
|
|
1097
|
+
const parsed = Date.parse(value);
|
|
1098
|
+
const millisecondInstant = value.replace(/\.(\d{3})\d{0,3}Z$/, '.$1Z');
|
|
1099
|
+
if (!Number.isFinite(parsed)
|
|
1100
|
+
|| new Date(parsed).toISOString() !== millisecondInstant) {
|
|
1078
1101
|
throw new TypeError(`${name} is invalid`);
|
|
1079
1102
|
}
|
|
1080
1103
|
}
|
|
@@ -1120,6 +1143,25 @@ function assertAttemptReference(
|
|
|
1120
1143
|
assertBinding(value);
|
|
1121
1144
|
}
|
|
1122
1145
|
|
|
1146
|
+
function assertAttemptLookup(
|
|
1147
|
+
value: unknown,
|
|
1148
|
+
): asserts value is ProposalToEffectPostgresAttemptLookup {
|
|
1149
|
+
if (!isRecord(value) || !hasExactKeys(value, [
|
|
1150
|
+
'tenant_id',
|
|
1151
|
+
'provider_id',
|
|
1152
|
+
'provider_account_id',
|
|
1153
|
+
'environment',
|
|
1154
|
+
'request_digest',
|
|
1155
|
+
])) {
|
|
1156
|
+
throw new TypeError('consequence attempt lookup is invalid');
|
|
1157
|
+
}
|
|
1158
|
+
assertIdentifier(value.tenant_id, 'lookup tenant_id');
|
|
1159
|
+
assertIdentifier(value.provider_id, 'lookup provider_id');
|
|
1160
|
+
assertIdentifier(value.provider_account_id, 'lookup provider_account_id');
|
|
1161
|
+
assertIdentifier(value.environment, 'lookup environment');
|
|
1162
|
+
assertDigest(value.request_digest, 'lookup request_digest');
|
|
1163
|
+
}
|
|
1164
|
+
|
|
1123
1165
|
function assertResolvedDigests(value: unknown): asserts value is ProposalToEffectAttemptDigests {
|
|
1124
1166
|
if (!isRecord(value) || !hasExactKeys(value, [
|
|
1125
1167
|
'operation_digest',
|
|
@@ -1305,6 +1347,47 @@ function parseSnapshot(
|
|
|
1305
1347
|
};
|
|
1306
1348
|
}
|
|
1307
1349
|
|
|
1350
|
+
function parseLookup(
|
|
1351
|
+
result: ProposalToEffectPostgresQueryResult,
|
|
1352
|
+
input: ProposalToEffectPostgresAttemptLookup,
|
|
1353
|
+
): ProposalToEffectPostgresAttemptReference | null {
|
|
1354
|
+
assertResultEnvelope(result, 'lookup');
|
|
1355
|
+
if (result.rowCount === 0 && result.rows.length === 0) return null;
|
|
1356
|
+
const row = result.rows[0];
|
|
1357
|
+
if (result.rowCount !== 1 || result.rows.length !== 1 || !isRecord(row)
|
|
1358
|
+
|| !hasExactKeys(row, [
|
|
1359
|
+
'tenant_id',
|
|
1360
|
+
'provider_id',
|
|
1361
|
+
'provider_account_id',
|
|
1362
|
+
'environment',
|
|
1363
|
+
'attempt_id',
|
|
1364
|
+
'request_digest',
|
|
1365
|
+
])) {
|
|
1366
|
+
throw new Error('malformed Postgres result: lookup');
|
|
1367
|
+
}
|
|
1368
|
+
assertIdentifier(row.tenant_id, 'lookup tenant_id');
|
|
1369
|
+
assertIdentifier(row.provider_id, 'lookup provider_id');
|
|
1370
|
+
assertIdentifier(row.provider_account_id, 'lookup provider_account_id');
|
|
1371
|
+
assertIdentifier(row.environment, 'lookup environment');
|
|
1372
|
+
assertIdentifier(row.attempt_id, 'lookup attempt_id');
|
|
1373
|
+
assertDigest(row.request_digest, 'lookup request_digest');
|
|
1374
|
+
if (row.tenant_id !== input.tenant_id
|
|
1375
|
+
|| row.provider_id !== input.provider_id
|
|
1376
|
+
|| row.provider_account_id !== input.provider_account_id
|
|
1377
|
+
|| row.environment !== input.environment
|
|
1378
|
+
|| row.request_digest !== input.request_digest) {
|
|
1379
|
+
throw new Error('malformed Postgres result: lookup binding');
|
|
1380
|
+
}
|
|
1381
|
+
return {
|
|
1382
|
+
tenant_id: row.tenant_id,
|
|
1383
|
+
provider_id: row.provider_id,
|
|
1384
|
+
provider_account_id: row.provider_account_id,
|
|
1385
|
+
environment: row.environment,
|
|
1386
|
+
attempt_id: row.attempt_id,
|
|
1387
|
+
request_digest: row.request_digest,
|
|
1388
|
+
};
|
|
1389
|
+
}
|
|
1390
|
+
|
|
1308
1391
|
function transitionAllowed(expected: string, next: string): boolean {
|
|
1309
1392
|
return (expected === 'RESERVED' && next === 'INVOKING')
|
|
1310
1393
|
|| (expected === 'INVOKING' && next === 'INDETERMINATE')
|
|
@@ -1666,6 +1749,20 @@ export function createProposalToEffectPostgresStore(
|
|
|
1666
1749
|
return result.applied;
|
|
1667
1750
|
},
|
|
1668
1751
|
|
|
1752
|
+
async lookup(input) {
|
|
1753
|
+
assertAttemptLookup(input);
|
|
1754
|
+
return retryAmbiguousCommit(pool, true, 'lookup', async (client) => parseLookup(
|
|
1755
|
+
await client.query(PROPOSAL_TO_EFFECT_POSTGRES_SQL.lookup, [
|
|
1756
|
+
input.tenant_id,
|
|
1757
|
+
input.provider_id,
|
|
1758
|
+
input.provider_account_id,
|
|
1759
|
+
input.environment,
|
|
1760
|
+
input.request_digest,
|
|
1761
|
+
]),
|
|
1762
|
+
input,
|
|
1763
|
+
));
|
|
1764
|
+
},
|
|
1765
|
+
|
|
1669
1766
|
async read(input) {
|
|
1670
1767
|
assertAttemptReference(input);
|
|
1671
1768
|
const snapshot = await readInternal(pool, input);
|