@doeixd/machine 0.0.6 → 0.0.8
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/README.md +288 -272
- package/dist/cjs/development/index.js +1269 -16
- package/dist/cjs/development/index.js.map +4 -4
- package/dist/cjs/production/index.js +5 -5
- package/dist/esm/development/index.js +1269 -16
- package/dist/esm/development/index.js.map +4 -4
- package/dist/esm/production/index.js +5 -5
- package/dist/types/extract.d.ts +40 -4
- package/dist/types/extract.d.ts.map +1 -1
- package/dist/types/generators.d.ts +40 -9
- package/dist/types/generators.d.ts.map +1 -1
- package/dist/types/higher-order.d.ts +221 -0
- package/dist/types/higher-order.d.ts.map +1 -0
- package/dist/types/index.d.ts +65 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/middleware.d.ts +1048 -0
- package/dist/types/middleware.d.ts.map +1 -0
- package/dist/types/primitives.d.ts +105 -3
- package/dist/types/primitives.d.ts.map +1 -1
- package/dist/types/runtime-extract.d.ts.map +1 -1
- package/dist/types/utils.d.ts +313 -0
- package/dist/types/utils.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/adapters.ts +407 -0
- package/src/extract.ts +180 -8
- package/src/generators.ts +25 -25
- package/src/higher-order.ts +364 -0
- package/src/index.ts +215 -9
- package/src/middleware.ts +2325 -0
- package/src/primitives.ts +194 -3
- package/src/runtime-extract.ts +15 -0
- package/src/utils.ts +386 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAMpD;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,MAAM;IACjD,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,kDAAkD;IAClD,IAAI,EAAE,GAAG,EAAE,CAAC;CACb;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM;IAChD,iDAAiD;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,wCAAwC;IACxC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzB,uCAAuC;IACvC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzB,mDAAmD;IACnD,IAAI,EAAE,GAAG,EAAE,CAAC;CACb;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM;IAC/C,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,mDAAmD;IACnD,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,gCAAgC;IAChC,KAAK,EAAE,KAAK,CAAC;CACd;AAED;;;;GAIG;AACH;;;;;GAKG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM;IAC/C;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,MAAM,CAAC,CAAC;IAE7F;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9D;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7G;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAEjC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAMD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,MAAM,eAAmB,CAAC;AAMvC;;;;GAIG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG;IACxD,mDAAmD;IACnD,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,gCAAgC;IAChC,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;IACxF,0CAA0C;IAC1C,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAChC,0BAA0B;IAC1B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,kDAAkD;IAClD,eAAe,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;CACpC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;IAC1F,mDAAmD;IACnD,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,0CAA0C;IAC1C,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAChC,sCAAsC;IACtC,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,kDAAkD;IAClD,eAAe,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IACnC,sDAAsD;IACtD,UAAU,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,CAAC,CAAC;CAC1C,CAAC;AAMF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EACzD,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAClC,OAAO,GAAE,iBAAsB,GAC9B,CAAC,CAyCH;AA8MD;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EACpD,OAAO,EAAE,CAAC,EACV,OAAO,GAAE;IACP,oDAAoD;IACpD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACnD,8CAA8C;IAC9C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gDAAgD;IAChD,WAAW,CAAC,EAAE,OAAO,CAAC;CAClB,GACL,CAAC,CAiBH;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EACtD,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAC/E,OAAO,GAAE;IACP,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,sDAAsD;IACtD,WAAW,CAAC,EAAE,OAAO,CAAC;CAClB,GACL,CAAC,CAyBH;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EACvD,OAAO,EAAE,CAAC,EACV,QAAQ,EAAE,CAAC,GAAG,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,EAC1F,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GACxC,CAAC,CAkBH;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EACxD,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,CAAC,GAAG,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAC9E,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GACxC,CAAC,CAkBH;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EAC3D,OAAO,EAAE,CAAC,EACV,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAClF,OAAO,GAAE;IACP,8DAA8D;IAC9D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wDAAwD;IACxD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gCAAgC;IAChC,IAAI,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;CAC7B,GACL,CAAC,CAoBH;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EAClE,OAAO,EAAE,CAAC,EACV,QAAQ,EAAE,CAAC,MAAM,EAAE;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;CAC/B,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACzB,CAAC,CAqBH;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EAClD,OAAO,EAAE,CAAC,EACV,OAAO,GAAE;IACP,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kFAAkF;IAClF,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IACxC,iCAAiC;IACjC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC9C,GACL,CAAC,CA0DH;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM;IAC3C,0EAA0E;IAC1E,KAAK,EAAE,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjF;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EACnD,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EACtI,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GACxC,CAAC,CA0BH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EACpE,OAAO,EAAE,CAAC,EACV,MAAM,EAAE;IACN,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,gCAAgC;IAChC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,yBAAyB;IACzB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,GACA,CAAC,CA4CH;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EAC9D,OAAO,EAAE,CAAC,EACV,MAAM,EAAE;IACN,2DAA2D;IAC3D,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD,uDAAuD;IACvD,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,yBAAyB;IACzB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,GACA,CAAC,CA6BH;AAMD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,qCAAqC;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,GAAG;IACjC,iCAAiC;IACjC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAC/B,sCAAsC;IACtC,WAAW,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC,CAAC;CACxC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EACpD,OAAO,EAAE,CAAC,EACV,OAAO,GAAE;IACP,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,UAAU,CAAC,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/B,kEAAkE;IAClE,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC;IAC1D,uCAAuC;IACvC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,0CAA0C;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;CAChB,GACL,WAAW,CAAC,CAAC,CAAC,CAyHhB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,GAAG,GAAG;IACrD,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,oCAAoC;IACpC,MAAM,EAAE,CAAC,CAAC;IACV,mCAAmC;IACnC,KAAK,EAAE,CAAC,CAAC;IACT,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gCAAgC;IAChC,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EACrD,OAAO,EAAE,CAAC,EACV,OAAO,GAAE;IACP,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,UAAU,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,0DAA0D;IAC1D,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;IACjE,4DAA4D;IAC5D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oEAAoE;IACpE,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7C,0CAA0C;IAC1C,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC7D,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,0CAA0C;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;CAChB,GACL,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAqM7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EACvD,OAAO,EAAE,CAAC,EACV,OAAO,GAAE;IACP,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CACzD,GACL,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAsJ/B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EAChD,OAAO,EAAE,CAAC,EACV,GAAG,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GACjC,CAAC,CAEH;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EAC/D,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAClC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAEnB;AAMD;;;;GAIG;AACH;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AAEzG;;;GAGG;AACH,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,IAAI;IAC9D,uCAAuC;IACvC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5B,6EAA6E;IAC7E,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC;CAC/B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,IAAI;IACxD,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5B,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3D;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC;IACxD,8CAA8C;IAC9C,OAAO,EAAE,CAAC,CAAC;IACX,gDAAgD;IAChD,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClF,kDAAkD;IAClD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH;;;GAGG;AACH,KAAK,aAAa,CAChB,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EAC1B,EAAE,SAAS,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAC1C,EAAE,SAAS,SAAS,EAAE,GACtB,CAAC,GACD,EAAE,SAAS,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,GAC9C,KAAK,SAAS,YAAY,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC,GAC3C,IAAI,SAAS,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAC5C,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,GAC3B,MAAM,GACR,CAAC,GACH,CAAC,CAAC;AAER;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAC1B,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EAC1B,EAAE,SAAS,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAE5C,OAAO,EAAE,CAAC,EACV,GAAG,WAAW,EAAE,EAAE,GACjB,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,CAEtB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,6BAE3D;AAED;;;GAGG;AACH,cAAM,sBAAsB,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC;IACzC,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,CAAC;IAE9B;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,EACpC,UAAU,EAAE,EAAE,GACb,sBAAsB,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAKvF;;OAEG;IACH,KAAK,IAAI,CAAC;CAGX;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAErG;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAEtF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EACvD,MAAM,GAAE,cAAmB,GAC1B;IACD,CAAC,EAAE,SAAS,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAC3D,OAAO,EAAE,CAAC,EACV,GAAG,WAAW,EAAE,EAAE,GACjB,cAAc,CAAC,CAAC,CAAC,CAAC;CACtB,CA+CA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC;IAI/D;;OAEG;mBAEK,MAAM,cACA,YAAY,CAAC,CAAC,CAAC,gBACb,MAAM,aACT,MAAM;uBAHX,MAAM,cACA,YAAY,CAAC,CAAC,CAAC,gBACb,MAAM,aACT,MAAM;QAUnB;;WAEG;yBACc,MAAM,GAAG,OAAO;QAIjC;;WAEG;kBACO,MAAM,GAAG,OAAO;QAI1B;;WAEG;kBACO,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,SAAS;QAIjD;;WAEG;gBACK,eAAe,CAAC,CAAC,CAAC,EAAE;QAI5B;;;WAGG;uBACY,CAAC,mBAAmB,MAAM,EAAE,GAAG,CAAC;QAc/C;;WAEG;0BACe,CAAC,GAAG,CAAC;;IAjDvB;;OAEG;qBACc,MAAM,GAAG,OAAO;IAIjC;;OAEG;cACO,MAAM,GAAG,OAAO;IAI1B;;OAEG;cACO,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,SAAS;IAIjD;;OAEG;YACK,eAAe,CAAC,CAAC,CAAC,EAAE;IAI5B;;;OAGG;mBACY,CAAC,mBAAmB,MAAM,EAAE,GAAG,CAAC;IAc/C;;OAEG;sBACe,CAAC,GAAG,CAAC;EAK1B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EAC7C,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,EAC3B,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,GACjC,qBAAqB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAS5C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EACtD,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,GAC1B,qBAAqB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAQ5C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,MAAM,OAAO,CAAC,CAAC,CAAC,EAChF,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACpB,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,GAC1B,qBAAqB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAE5C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EAChD,GAAG,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GACrC,YAAY,CAAC,CAAC,CAAC,CAEjB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EAC/C,QAAQ,EAAE,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAClF,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GACzB,YAAY,CAAC,CAAC,CAAC,CASjB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EACvD,KAAK,EAAE,GAAG,GACT,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,CAE1B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EAChE,KAAK,EAAE,GAAG,GACT,KAAK,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAQnC"}
|
|
@@ -10,6 +10,13 @@
|
|
|
10
10
|
* and generate a formal Statechart (JSON) that perfectly matches your implementation,
|
|
11
11
|
* including resolving Class Constructors to their names.
|
|
12
12
|
*/
|
|
13
|
+
/**
|
|
14
|
+
* Options passed to async transition functions, including cancellation support.
|
|
15
|
+
*/
|
|
16
|
+
export interface TransitionOptions {
|
|
17
|
+
/** AbortSignal for cancelling long-running async operations. */
|
|
18
|
+
signal: AbortSignal;
|
|
19
|
+
}
|
|
13
20
|
/**
|
|
14
21
|
* A unique symbol used to "brand" a type with metadata.
|
|
15
22
|
* This key allows the static analyzer to find the metadata within a complex type signature.
|
|
@@ -17,10 +24,18 @@
|
|
|
17
24
|
export declare const META_KEY: unique symbol;
|
|
18
25
|
/**
|
|
19
26
|
* Runtime metadata symbol.
|
|
27
|
+
/**
|
|
20
28
|
* Non-enumerable property key for storing metadata on function objects at runtime.
|
|
21
29
|
* @internal
|
|
22
30
|
*/
|
|
23
31
|
export declare const RUNTIME_META: unique symbol;
|
|
32
|
+
/**
|
|
33
|
+
* Local definition of Machine type to avoid circular imports.
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
type Machine<C extends object> = {
|
|
37
|
+
readonly context: C;
|
|
38
|
+
} & Record<string, (...args: any[]) => Machine<any>>;
|
|
24
39
|
/**
|
|
25
40
|
* Helper type representing a Class Constructor.
|
|
26
41
|
* Used to reference target states by their class definition rather than magic strings.
|
|
@@ -141,14 +156,19 @@ export declare function guarded<F extends (...args: any[]) => any, M extends Tra
|
|
|
141
156
|
* Annotates a transition with an Invoked Service (asynchronous effect).
|
|
142
157
|
*
|
|
143
158
|
* @param service - configuration for the service (source, onDone target, onError target).
|
|
144
|
-
* @param implementation - The async function implementation.
|
|
159
|
+
* @param implementation - The async function implementation that receives an AbortSignal.
|
|
145
160
|
* @example
|
|
146
161
|
* load = invoke(
|
|
147
162
|
* { src: "fetchData", onDone: LoadedMachine, onError: ErrorMachine },
|
|
148
|
-
* async () => {
|
|
163
|
+
* async ({ signal }) => {
|
|
164
|
+
* const response = await fetch('/api/data', { signal });
|
|
165
|
+
* return new LoadedMachine({ data: await response.json() });
|
|
166
|
+
* }
|
|
149
167
|
* );
|
|
150
168
|
*/
|
|
151
|
-
export declare function invoke<D extends ClassConstructor, E extends ClassConstructor, F extends (
|
|
169
|
+
export declare function invoke<D extends ClassConstructor, E extends ClassConstructor, F extends (options: {
|
|
170
|
+
signal: AbortSignal;
|
|
171
|
+
}) => any>(service: {
|
|
152
172
|
src: string;
|
|
153
173
|
onDone: D;
|
|
154
174
|
onError: E;
|
|
@@ -168,6 +188,87 @@ export declare function invoke<D extends ClassConstructor, E extends ClassConstr
|
|
|
168
188
|
export declare function action<F extends (...args: any[]) => any, M extends TransitionMeta>(action: ActionMeta, transition: WithMeta<F, M>): WithMeta<F, M & {
|
|
169
189
|
actions: [typeof action];
|
|
170
190
|
}>;
|
|
191
|
+
/**
|
|
192
|
+
* Configuration options for guard behavior when conditions fail.
|
|
193
|
+
*/
|
|
194
|
+
export interface GuardOptions<C extends object = any> {
|
|
195
|
+
/** What to do when guard fails */
|
|
196
|
+
onFail?: 'throw' | 'ignore' | GuardFallback<C>;
|
|
197
|
+
/** Custom error message for 'throw' mode */
|
|
198
|
+
errorMessage?: string;
|
|
199
|
+
/** Additional metadata for statechart extraction */
|
|
200
|
+
description?: string;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* A fallback machine or function that returns a machine when guard fails.
|
|
204
|
+
*/
|
|
205
|
+
export type GuardFallback<C extends object> = ((this: Machine<C>, ...args: any[]) => Machine<C>) | Machine<C>;
|
|
206
|
+
/**
|
|
207
|
+
* A guarded transition that checks conditions at runtime before executing.
|
|
208
|
+
* Can be called with either machine or context as 'this' binding.
|
|
209
|
+
*/
|
|
210
|
+
export type GuardedTransition<C extends object, T extends Machine<any>> = {
|
|
211
|
+
(...args: any[]): T | Machine<C> | Promise<T | Machine<C>>;
|
|
212
|
+
readonly __guard: true;
|
|
213
|
+
readonly condition: (ctx: C, ...args: any[]) => boolean | Promise<boolean>;
|
|
214
|
+
readonly transition: (...args: any[]) => T;
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Creates a runtime guard that checks conditions before executing transitions.
|
|
218
|
+
* This provides actual runtime protection, unlike the `guarded` primitive which only adds metadata.
|
|
219
|
+
*
|
|
220
|
+
* @template C - The context type
|
|
221
|
+
* @template T - The transition return type
|
|
222
|
+
* @param condition - Function that returns true if transition should proceed
|
|
223
|
+
* @param transition - The transition function to execute if condition passes
|
|
224
|
+
* @param options - Configuration for guard failure behavior
|
|
225
|
+
* @returns A guarded transition function
|
|
226
|
+
*
|
|
227
|
+
* @example
|
|
228
|
+
* ```typescript
|
|
229
|
+
* const machine = createMachine({ balance: 100 }, {
|
|
230
|
+
* withdraw: guard(
|
|
231
|
+
* (ctx, amount) => ctx.balance >= amount,
|
|
232
|
+
* function(amount: number) {
|
|
233
|
+
* return createMachine({ balance: this.balance - amount }, this);
|
|
234
|
+
* },
|
|
235
|
+
* { onFail: 'throw', errorMessage: 'Insufficient funds' }
|
|
236
|
+
* )
|
|
237
|
+
* });
|
|
238
|
+
*
|
|
239
|
+
* machine.withdraw(50); // ✅ Works
|
|
240
|
+
* machine.withdraw(200); // ❌ Throws "Insufficient funds"
|
|
241
|
+
* ```
|
|
242
|
+
*/
|
|
243
|
+
export declare function guard<C extends object, T extends Machine<any>>(condition: (ctx: C, ...args: any[]) => boolean | Promise<boolean>, transition: (...args: any[]) => T, options?: GuardOptions<C>): GuardedTransition<C, T>;
|
|
244
|
+
/**
|
|
245
|
+
* Fluent API for creating guarded transitions.
|
|
246
|
+
* Provides a more readable way to define conditional transitions.
|
|
247
|
+
*
|
|
248
|
+
* @template C - The context type
|
|
249
|
+
* @param condition - Function that returns true if transition should proceed
|
|
250
|
+
* @returns A fluent interface for defining the guarded transition
|
|
251
|
+
*
|
|
252
|
+
* @example
|
|
253
|
+
* ```typescript
|
|
254
|
+
* const machine = createMachine({ isAdmin: false }, {
|
|
255
|
+
* deleteUser: whenGuard((ctx) => ctx.isAdmin)
|
|
256
|
+
* .do(function(userId: string) {
|
|
257
|
+
* return createMachine({ ...this.context, deleted: userId }, this);
|
|
258
|
+
* })
|
|
259
|
+
* .else(function() {
|
|
260
|
+
* return createMachine({ ...this.context, error: 'Unauthorized' }, this);
|
|
261
|
+
* })
|
|
262
|
+
* });
|
|
263
|
+
* ```
|
|
264
|
+
*/
|
|
265
|
+
export declare function whenGuard<C extends object>(condition: (ctx: C, ...args: any[]) => boolean | Promise<boolean>): {
|
|
266
|
+
/**
|
|
267
|
+
* Define the transition to execute when the condition passes.
|
|
268
|
+
* Returns a guarded transition that can optionally have an else clause.
|
|
269
|
+
*/
|
|
270
|
+
do<T extends Machine<any>>(transition: (...args: any[]) => T): GuardedTransition<C, T>;
|
|
271
|
+
};
|
|
171
272
|
/**
|
|
172
273
|
* Flexible metadata wrapper for functional and type-state patterns.
|
|
173
274
|
*
|
|
@@ -199,4 +300,5 @@ export declare function action<F extends (...args: any[]) => any, M extends Tran
|
|
|
199
300
|
* );
|
|
200
301
|
*/
|
|
201
302
|
export declare function metadata<T>(_meta: Partial<TransitionMeta>, value: T): T;
|
|
303
|
+
export {};
|
|
202
304
|
//# sourceMappingURL=primitives.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH;;;GAGG;AACH,eAAO,MAAM,QAAQ,eAAwB,CAAC;AAE9C
|
|
1
|
+
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/primitives.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-extract.d.ts","sourceRoot":"","sources":["../../src/runtime-extract.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAgB,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAExE;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,GAAG,GAAG,qBAAqB,GAAG,IAAI,CAO7E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,GAAG,GAAG,GAAG,
|
|
1
|
+
{"version":3,"file":"runtime-extract.d.ts","sourceRoot":"","sources":["../../src/runtime-extract.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAgB,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAExE;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,GAAG,GAAG,qBAAqB,GAAG,IAAI,CAO7E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,GAAG,GAAG,GAAG,CAmExD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5D,GAAG,CAgBL;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,GAAG,EACpB,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACzC,GAAG,CAUL"}
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file A collection of high-level, type-safe utility functions for @doeixd/machine.
|
|
3
|
+
* @description These helpers provide ergonomic improvements for common patterns like
|
|
4
|
+
* state checking, event creation, debugging, and composing transitions.
|
|
5
|
+
*/
|
|
6
|
+
import { Machine, AsyncMachine, MaybePromise, Context, Event, Transitions, TransitionArgs } from './index';
|
|
7
|
+
/**
|
|
8
|
+
* A type representing a Class Constructor, used for type guards.
|
|
9
|
+
*/
|
|
10
|
+
type ClassConstructor = new (...args: any[]) => any;
|
|
11
|
+
/**
|
|
12
|
+
* A type-safe way to check if a machine is in a specific state, acting as a Type Guard.
|
|
13
|
+
* This is the preferred way to do state checking when using class-based machines.
|
|
14
|
+
*
|
|
15
|
+
* @template T - The class constructor type to check against.
|
|
16
|
+
* @param machine - The machine instance to check.
|
|
17
|
+
* @param machineClass - The class constructor representing the state.
|
|
18
|
+
* @returns {boolean} `true` if the machine is an instance of the class, narrowing its type.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* declare const machine: LoggedInMachine | LoggedOutMachine;
|
|
22
|
+
*
|
|
23
|
+
* if (isState(machine, LoggedInMachine)) {
|
|
24
|
+
* // `machine` is now correctly typed as LoggedInMachine
|
|
25
|
+
* machine.logout();
|
|
26
|
+
* }
|
|
27
|
+
*/
|
|
28
|
+
export declare function isState<T extends ClassConstructor>(machine: any, machineClass: T): machine is InstanceType<T>;
|
|
29
|
+
/**
|
|
30
|
+
* A type-safe factory function for creating event objects for `runMachine`.
|
|
31
|
+
* This provides full autocompletion and type checking for event names and their arguments.
|
|
32
|
+
*
|
|
33
|
+
* @template M - The machine type the event belongs to.
|
|
34
|
+
* @template K - The specific event name (transition method name).
|
|
35
|
+
* @param type - The name of the event (e.g., "increment").
|
|
36
|
+
* @param args - The arguments for that event, correctly typed.
|
|
37
|
+
* @returns A type-safe event object ready to be passed to `dispatch`.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* // Given: type MyMachine = Machine<{...}> & { add: (n: number) => any }
|
|
41
|
+
* const event = createEvent<MyMachine, 'add'>('add', 5);
|
|
42
|
+
* // `event` is correctly typed as { type: "add"; args: [number] }
|
|
43
|
+
*
|
|
44
|
+
* await runner.dispatch(event);
|
|
45
|
+
*/
|
|
46
|
+
export declare function createEvent<M extends Machine<any>, K extends keyof Transitions<M> & string>(type: K, ...args: TransitionArgs<M, K>): Event<M>;
|
|
47
|
+
/**
|
|
48
|
+
* Creates a new machine instance by shallowly merging a partial context into the
|
|
49
|
+
* current context, preserving all original transitions.
|
|
50
|
+
*
|
|
51
|
+
* @template M - The machine type.
|
|
52
|
+
* @param machine - The original machine instance.
|
|
53
|
+
* @param partialContext - An object with a subset of context properties to update.
|
|
54
|
+
* @returns A new machine instance of the same type with the merged context.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* const user = new User({ name: 'Alex', age: 30, status: 'active' });
|
|
58
|
+
* const updatedUser = mergeContext(user, { status: 'inactive' });
|
|
59
|
+
* // updatedUser.context is { name: 'Alex', age: 30, status: 'inactive' }
|
|
60
|
+
*/
|
|
61
|
+
export declare function mergeContext<M extends Machine<any>>(machine: M, partialContext: Partial<Context<M>>): M;
|
|
62
|
+
/**
|
|
63
|
+
* Sequentially applies a series of transitions to a machine.
|
|
64
|
+
* This function correctly handles both synchronous and asynchronous transitions,
|
|
65
|
+
* always returning a Promise with the final machine state.
|
|
66
|
+
*
|
|
67
|
+
* @template M - The machine type, must be compatible with AsyncMachine.
|
|
68
|
+
* @param initialMachine - The starting machine state.
|
|
69
|
+
* @param transitions - An array of functions, each taking a machine and returning the next.
|
|
70
|
+
* @returns A `Promise` that resolves to the final machine state after all transitions complete.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* const finalState = await pipeTransitions(
|
|
74
|
+
* new Counter({ count: 0 }),
|
|
75
|
+
* (m) => m.increment(), // sync
|
|
76
|
+
* (m) => m.addAsync(5), // async
|
|
77
|
+
* (m) => m.increment() // sync
|
|
78
|
+
* );
|
|
79
|
+
* // finalState.context.count will be 6
|
|
80
|
+
*/
|
|
81
|
+
export declare function pipeTransitions<M extends AsyncMachine<any>>(initialMachine: M, ...transitions: ((m: M) => MaybePromise<M>)[]): Promise<M>;
|
|
82
|
+
/**
|
|
83
|
+
* A "tap" utility for logging a machine's context without interrupting a chain of operations.
|
|
84
|
+
* It prints the context to the console and returns the machine instance unchanged.
|
|
85
|
+
*
|
|
86
|
+
* @template M - The machine type.
|
|
87
|
+
* @param machine - The machine instance to log.
|
|
88
|
+
* @param label - An optional label to print before the context object.
|
|
89
|
+
* @returns The original, unmodified machine instance.
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* import { logState as tap } from './utils';
|
|
93
|
+
*
|
|
94
|
+
* await pipeTransitions(
|
|
95
|
+
* new Counter({ count: 0 }),
|
|
96
|
+
* tap, // Logs: { count: 0 }
|
|
97
|
+
* (m) => m.increment(),
|
|
98
|
+
* (m) => tap(m, 'After increment:') // Logs: After increment: { count: 1 }
|
|
99
|
+
* );
|
|
100
|
+
*/
|
|
101
|
+
export declare function logState<M extends Machine<any>>(machine: M, label?: string): M;
|
|
102
|
+
/**
|
|
103
|
+
* Calls a transition function with an explicit `this` context.
|
|
104
|
+
* Useful for invoking transition methods with proper context binding.
|
|
105
|
+
*
|
|
106
|
+
* @template C - The context type that the function expects as `this`.
|
|
107
|
+
* @template F - The function type with a `this` parameter.
|
|
108
|
+
* @template A - The argument types for the function.
|
|
109
|
+
* @param fn - The transition function to call.
|
|
110
|
+
* @param context - The context object to bind as `this`.
|
|
111
|
+
* @param args - Arguments to pass to the function.
|
|
112
|
+
* @returns The result of calling the function with the given context and arguments.
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* type MyContext = { count: number };
|
|
116
|
+
* const increment = function(this: MyContext) { return this.count + 1; };
|
|
117
|
+
* const result = call(increment, { count: 5 }); // Returns 6
|
|
118
|
+
*
|
|
119
|
+
* // Particularly useful with machine transitions:
|
|
120
|
+
* import { call } from '@doeixd/machine/utils';
|
|
121
|
+
* const nextMachine = yield* step(call(m.increment, m.context));
|
|
122
|
+
*/
|
|
123
|
+
export declare function call<C, F extends (this: C, ...args: any[]) => any>(fn: F, context: C, ...args: Parameters<F> extends [any, ...infer Rest] ? Rest : never): ReturnType<F>;
|
|
124
|
+
/**
|
|
125
|
+
* Binds all transition methods of a machine to its context automatically.
|
|
126
|
+
* Returns a Proxy that intercepts method calls and binds them to `machine.context`.
|
|
127
|
+
* This eliminates the need to use `.call(m.context, ...)` for every transition.
|
|
128
|
+
*
|
|
129
|
+
* Automatically recursively wraps returned machines, enabling seamless chaining
|
|
130
|
+
* in generator-based flows.
|
|
131
|
+
*
|
|
132
|
+
* @template M - The machine type with a `context` property and transition methods.
|
|
133
|
+
* @param machine - The machine instance to wrap.
|
|
134
|
+
* @returns A Proxy of the machine where all callable properties (transitions) are automatically bound to the machine's context.
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* type CounterContext = { count: number };
|
|
138
|
+
* const counter = bindTransitions(createMachine({ count: 0 }, {
|
|
139
|
+
* increment(this: CounterContext) { return createCounter(this.count + 1); }
|
|
140
|
+
* }));
|
|
141
|
+
*
|
|
142
|
+
* // Now you can call transitions directly without .call():
|
|
143
|
+
* const next = counter.increment(); // Works! This is automatically bound.
|
|
144
|
+
*
|
|
145
|
+
* // Particularly useful with generators:
|
|
146
|
+
* const result = run(function* (m) {
|
|
147
|
+
* m = yield* step(m.increment()); // Clean syntax
|
|
148
|
+
* m = yield* step(m.add(5)); // No .call() needed
|
|
149
|
+
* return m;
|
|
150
|
+
* }, bindTransitions(counter));
|
|
151
|
+
*
|
|
152
|
+
* @remarks
|
|
153
|
+
* The Proxy preserves all original properties and methods. Non-callable properties
|
|
154
|
+
* are accessed directly from the machine. Callable properties are wrapped to bind
|
|
155
|
+
* them to `machine.context` before invocation. Returned machines are automatically
|
|
156
|
+
* re-wrapped to maintain binding across transition chains.
|
|
157
|
+
*/
|
|
158
|
+
export declare function bindTransitions<M extends {
|
|
159
|
+
context: any;
|
|
160
|
+
}>(machine: M): M;
|
|
161
|
+
/**
|
|
162
|
+
* A strongly-typed wrapper class for binding transitions to machine context.
|
|
163
|
+
* Unlike the Proxy-based `bindTransitions`, this class preserves full type safety
|
|
164
|
+
* and provides better IDE support through explicit property forwarding.
|
|
165
|
+
*
|
|
166
|
+
* @template M - The machine type with a `context` property and transition methods.
|
|
167
|
+
*
|
|
168
|
+
* @example
|
|
169
|
+
* type CounterContext = { count: number };
|
|
170
|
+
* const counter = createMachine({ count: 0 }, {
|
|
171
|
+
* increment(this: CounterContext) { return createCounter(this.count + 1); }
|
|
172
|
+
* });
|
|
173
|
+
*
|
|
174
|
+
* const bound = new BoundMachine(counter);
|
|
175
|
+
*
|
|
176
|
+
* // All transitions are automatically bound to context
|
|
177
|
+
* const result = run(function* (m) {
|
|
178
|
+
* m = yield* step(m.increment());
|
|
179
|
+
* m = yield* step(m.add(5));
|
|
180
|
+
* return m.context.count;
|
|
181
|
+
* }, bound);
|
|
182
|
+
*
|
|
183
|
+
* @remarks
|
|
184
|
+
* Advantages over Proxy-based `bindTransitions`:
|
|
185
|
+
* - Full type safety with TypeScript's type system
|
|
186
|
+
* - Returned machines are automatically re-wrapped
|
|
187
|
+
* - Better IDE autocompletion and hover information
|
|
188
|
+
* - No type casting needed
|
|
189
|
+
*
|
|
190
|
+
* Disadvantages:
|
|
191
|
+
* - Requires explicit instance creation: `new BoundMachine(m)` vs `bindTransitions(m)`
|
|
192
|
+
* - Not a transparent drop-in replacement for the original machine
|
|
193
|
+
*/
|
|
194
|
+
export declare class BoundMachine<M extends {
|
|
195
|
+
context: any;
|
|
196
|
+
}> {
|
|
197
|
+
private readonly wrappedMachine;
|
|
198
|
+
[key: string | symbol]: any;
|
|
199
|
+
constructor(machine: M);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Creates a sequence machine that orchestrates multi-step flows by automatically
|
|
203
|
+
* advancing through a series of machines. When the current machine reaches a "final"
|
|
204
|
+
* state (determined by the isFinal predicate), the sequence automatically transitions
|
|
205
|
+
* to the next machine in the sequence.
|
|
206
|
+
*
|
|
207
|
+
* This is perfect for wizard-style flows, multi-step processes, or any scenario where
|
|
208
|
+
* you need to chain machines together with automatic progression.
|
|
209
|
+
*
|
|
210
|
+
* @template M - The tuple of machine types in the sequence.
|
|
211
|
+
* @param machines - The machines to sequence, in order.
|
|
212
|
+
* @param isFinal - A predicate function that determines when a machine is in a final state.
|
|
213
|
+
* Called after each transition to check if the sequence should advance.
|
|
214
|
+
* @returns A new machine that wraps the sequence, delegating to the current machine
|
|
215
|
+
* and automatically advancing when each machine reaches its final state.
|
|
216
|
+
*
|
|
217
|
+
* @example
|
|
218
|
+
* ```typescript
|
|
219
|
+
* // Define form machines with final states
|
|
220
|
+
* class NameForm extends MachineBase<{ name: string; valid: boolean }> {
|
|
221
|
+
* submit = (name: string) => new NameForm({ name, valid: name.length > 0 });
|
|
222
|
+
* }
|
|
223
|
+
*
|
|
224
|
+
* class EmailForm extends MachineBase<{ email: string; valid: boolean }> {
|
|
225
|
+
* submit = (email: string) => new EmailForm({ email, valid: email.includes('@') });
|
|
226
|
+
* }
|
|
227
|
+
*
|
|
228
|
+
* class PasswordForm extends MachineBase<{ password: string; valid: boolean }> {
|
|
229
|
+
* submit = (password: string) => new PasswordForm({ password, valid: password.length >= 8 });
|
|
230
|
+
* }
|
|
231
|
+
*
|
|
232
|
+
* // Create sequence that advances when each form becomes valid
|
|
233
|
+
* const wizard = sequence(
|
|
234
|
+
* [new NameForm({ name: '', valid: false }),
|
|
235
|
+
* new EmailForm({ email: '', valid: false }),
|
|
236
|
+
* new PasswordForm({ password: '', valid: false })],
|
|
237
|
+
* (machine) => machine.context.valid // Advance when valid becomes true
|
|
238
|
+
* );
|
|
239
|
+
*
|
|
240
|
+
* // Usage - automatically advances through forms
|
|
241
|
+
* let current = wizard;
|
|
242
|
+
* current = current.submit('John'); // Still on NameForm (not valid yet)
|
|
243
|
+
* current = current.submit('John Doe'); // Advances to EmailForm (name is valid)
|
|
244
|
+
* current = current.submit('john@'); // Still on EmailForm (not valid yet)
|
|
245
|
+
* current = current.submit('john@example.com'); // Advances to PasswordForm
|
|
246
|
+
* current = current.submit('12345678'); // Advances to end of sequence
|
|
247
|
+
* ```
|
|
248
|
+
*
|
|
249
|
+
* @example
|
|
250
|
+
* ```typescript
|
|
251
|
+
* // Async sequence with API calls
|
|
252
|
+
* const authSequence = sequence(
|
|
253
|
+
* [new LoginForm(), new TwoFactorForm(), new Dashboard()],
|
|
254
|
+
* (machine) => machine.context.authenticated === true
|
|
255
|
+
* );
|
|
256
|
+
*
|
|
257
|
+
* // The sequence handles async transitions automatically
|
|
258
|
+
* const finalState = await authSequence.login('user@example.com', 'password');
|
|
259
|
+
* ```
|
|
260
|
+
*
|
|
261
|
+
* @example
|
|
262
|
+
* ```typescript
|
|
263
|
+
* // Complex predicate - advance based on multiple conditions
|
|
264
|
+
* const complexSequence = sequence(
|
|
265
|
+
* [step1Machine, step2Machine, step3Machine],
|
|
266
|
+
* (machine) => {
|
|
267
|
+
* // Advance when all required fields are filled AND validated
|
|
268
|
+
* return machine.context.requiredFields.every(f => f.filled) &&
|
|
269
|
+
* machine.context.validationErrors.length === 0;
|
|
270
|
+
* }
|
|
271
|
+
* );
|
|
272
|
+
* ```
|
|
273
|
+
*
|
|
274
|
+
* @remarks
|
|
275
|
+
* - The sequence maintains the union type of all machines in the sequence
|
|
276
|
+
* - Transitions are delegated to the current machine in the sequence
|
|
277
|
+
* - When a machine reaches a final state, the sequence automatically advances
|
|
278
|
+
* - If the sequence reaches the end, further transitions return the final machine
|
|
279
|
+
* - The isFinal predicate is called after every transition to check advancement
|
|
280
|
+
* - Works with both sync and async machines (returns MaybePromise)
|
|
281
|
+
*/
|
|
282
|
+
export declare function sequence<M extends readonly [Machine<any>, ...Machine<any>[]]>(machines: M, isFinal: (machine: M[number]) => boolean): M[number];
|
|
283
|
+
/**
|
|
284
|
+
* Convenience overload for sequencing exactly 2 machines.
|
|
285
|
+
* Provides better type inference and IntelliSense for common 2-step flows.
|
|
286
|
+
*
|
|
287
|
+
* @example
|
|
288
|
+
* ```typescript
|
|
289
|
+
* const flow = sequence2(
|
|
290
|
+
* new LoginForm(),
|
|
291
|
+
* new Dashboard(),
|
|
292
|
+
* (machine) => machine.context.authenticated
|
|
293
|
+
* );
|
|
294
|
+
* ```
|
|
295
|
+
*/
|
|
296
|
+
export declare function sequence2<M1 extends Machine<any>, M2 extends Machine<any>>(machine1: M1, machine2: M2, isFinal: (machine: M1 | M2) => boolean): M1 | M2;
|
|
297
|
+
/**
|
|
298
|
+
* Convenience overload for sequencing exactly 3 machines.
|
|
299
|
+
* Provides better type inference and IntelliSense for common 3-step flows.
|
|
300
|
+
*
|
|
301
|
+
* @example
|
|
302
|
+
* ```typescript
|
|
303
|
+
* const wizard = sequence3(
|
|
304
|
+
* new NameForm({ name: '', valid: false }),
|
|
305
|
+
* new EmailForm({ email: '', valid: false }),
|
|
306
|
+
* new PasswordForm({ password: '', valid: false }),
|
|
307
|
+
* (machine) => machine.context.valid
|
|
308
|
+
* );
|
|
309
|
+
* ```
|
|
310
|
+
*/
|
|
311
|
+
export declare function sequence3<M1 extends Machine<any>, M2 extends Machine<any>, M3 extends Machine<any>>(machine1: M1, machine2: M2, machine3: M3, isFinal: (machine: M1 | M2 | M3) => boolean): M1 | M2 | M3;
|
|
312
|
+
export {};
|
|
313
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,KAAK,EACL,WAAW,EACX,cAAc,EAEf,MAAM,SAAS,CAAC;AAMjB;;GAEG;AACH,KAAK,gBAAgB,GAAG,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAEpD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,gBAAgB,EAChD,OAAO,EAAE,GAAG,EACZ,YAAY,EAAE,CAAC,GACd,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,CAE5B;AAOD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CACzB,CAAC,SAAS,OAAO,CAAC,GAAG,CAAC,EACtB,CAAC,SAAS,MAAM,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,EACvC,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAElD;AAOD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,CAAC,EACjD,OAAO,EAAE,CAAC,EACV,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAClC,CAAC,CAEH;AAOD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,eAAe,CAAC,CAAC,SAAS,YAAY,CAAC,GAAG,CAAC,EAC/D,cAAc,EAAE,CAAC,EACjB,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,GAC5C,OAAO,CAAC,CAAC,CAAC,CAMZ;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,CAO9E;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAChE,EAAE,EAAE,CAAC,EACL,OAAO,EAAE,CAAC,EACV,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GACjE,UAAU,CAAC,CAAC,CAAC,CAEf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAqBzE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,YAAY,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE;IAClD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAI;IACnC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;gBAEhB,OAAO,EAAE,CAAC;CAiCvB;AAgFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AACH,wBAAgB,QAAQ,CACtB,CAAC,SAAS,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAEpD,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,OAAO,GACvC,CAAC,CAAC,MAAM,CAAC,CAEX;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CACvB,EAAE,SAAS,OAAO,CAAC,GAAG,CAAC,EACvB,EAAE,SAAS,OAAO,CAAC,GAAG,CAAC,EAEvB,QAAQ,EAAE,EAAE,EACZ,QAAQ,EAAE,EAAE,EACZ,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,OAAO,GACrC,EAAE,GAAG,EAAE,CAET;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CACvB,EAAE,SAAS,OAAO,CAAC,GAAG,CAAC,EACvB,EAAE,SAAS,OAAO,CAAC,GAAG,CAAC,EACvB,EAAE,SAAS,OAAO,CAAC,GAAG,CAAC,EAEvB,QAAQ,EAAE,EAAE,EACZ,QAAQ,EAAE,EAAE,EACZ,QAAQ,EAAE,EAAE,EACZ,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,OAAO,GAC1C,EAAE,GAAG,EAAE,GAAG,EAAE,CAEd"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@doeixd/machine",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.8",
|
|
4
4
|
"files": [
|
|
5
5
|
"dist",
|
|
6
6
|
"src"
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"watch": "pridepack watch",
|
|
72
72
|
"start": "pridepack start",
|
|
73
73
|
"dev": "pridepack dev",
|
|
74
|
-
"test": "vitest
|
|
74
|
+
"test": "vitest run",
|
|
75
75
|
"extract": "tsx scripts/extract-statechart.ts --config .statechart.config.ts",
|
|
76
76
|
"extract:watch": "tsx scripts/extract-statechart.ts --config .statechart.config.ts --watch",
|
|
77
77
|
"extract:validate": "tsx scripts/extract-statechart.ts --config .statechart.config.ts --validate",
|