aws-local-stepfunctions 0.3.0 → 0.3.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/build/main.cjs +5 -3
- package/build/main.d.ts +4 -4
- package/build/main.esm.js +5 -3
- package/package.json +3 -3
package/build/main.cjs
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
Object.defineProperty(
|
|
2
|
-
${this.wrappedError.stack}`}constructor(e,t){super(`Execution of Lambda function "${t}" failed`),this.name="LambdaExecutionError",this.wrappedError=Error(e.errorMessage),this.wrappedError.stack=e.trace.join("\n")}}function asyncGeneratorStep$8(e,t,r,n,a,i,s){try{var o=e[i](s),u=o.value}catch(l){r(l);return}o.done?t(u):Promise.resolve(u).then(n,a)}function _asyncToGenerator$8(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var i=e.apply(t,r);function s(e){asyncGeneratorStep$8(i,n,a,s,o,"next",e)}function o(e){asyncGeneratorStep$8(i,n,a,s,o,"throw",e)}s(void 0)})}}class LambdaClient{invokeFunction(e,t){var r=this;return _asyncToGenerator$8(function*(){let n=Buffer.from(JSON.stringify(t)),a=new clientLambda.InvokeCommand({FunctionName:e,Payload:n}),i=yield r.client.send(a),s=null;if(i.Payload&&(s=JSON.parse(s=Buffer.from(i.Payload).toString())),i.FunctionError)throw new LambdaExecutionError(s,e);return s})()}constructor(e){this.client=new clientLambda.LambdaClient(null!=e?e:{})}}function asyncGeneratorStep$7(e,t,r,n,a,i,s){try{var o=e[i](s),u=o.value}catch(l){r(l);return}o.done?t(u):Promise.resolve(u).then(n,a)}function _asyncToGenerator$7(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var i=e.apply(t,r);function s(e){asyncGeneratorStep$7(i,n,a,s,o,"next",e)}function o(e){asyncGeneratorStep$7(i,n,a,s,o,"throw",e)}s(void 0)})}}class TaskStateHandler extends BaseStateHandler{executeState(e,t,r){var n=this;return _asyncToGenerator$7(function*(){let t=n.stateDefinition,a=new LambdaClient;try{if(null==r?void 0:r.overrideFn){let i=yield r.overrideFn(e);return n.buildExecutionResult(i)}let s=yield a.invokeFunction(t.Resource,e);return n.buildExecutionResult(s)}catch(o){throw o instanceof LambdaExecutionError?console.error(o.toString()):console.error(o),o}})()}constructor(e){super(e)}}function jsonPathQuery(e,t,r){return e.startsWith("$$")?jsonpathPlus.JSONPath({path:e.slice(1),json:null!=r?r:null,wrap:!1}):jsonpathPlus.JSONPath({path:e,json:t,wrap:!1})}function isPlainObj(e){return!!e&&Object.getPrototypeOf(e)===Object.prototype}function sleep(e,t){return new Promise(r=>{let n=setTimeout(r,e);null==t||t.addEventListener("abort",()=>{n.unref()})})}function processInputPath(e,t,r){return void 0===e?t:null===e?{}:jsonPathQuery(e,t,r)}function processPayloadTemplate(e,t,r){let n=Object.entries(e).map(([e,n])=>{let a=e,i=n;return isPlainObj(n)&&(i=processPayloadTemplate(n,t)),e.endsWith(".$")&&"string"==typeof n&&(a=e.replace(".$",""),i=jsonPathQuery(n,t,r)),[a,i]});return Object.fromEntries(n)}function processResultPath(e,t,r){if(void 0===e)return r;if(null===e)return t;let n=e.replace("$.","");if(isPlainObj(t)){let a=cloneDeep__default.default(t);return set__default.default(a,n,r)}throw Error("TODO: Change this error message for a more descriptive one")}function processOutputPath(e,t,r){return void 0===e?t:null===e?{}:jsonPathQuery(e,t,r)}function asyncGeneratorStep$6(e,t,r,n,a,i,s){try{var o=e[i](s),u=o.value}catch(l){r(l);return}o.done?t(u):Promise.resolve(u).then(n,a)}function _asyncToGenerator$6(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var i=e.apply(t,r);function s(e){asyncGeneratorStep$6(i,n,a,s,o,"next",e)}function o(e){asyncGeneratorStep$6(i,n,a,s,o,"throw",e)}s(void 0)})}}class MapStateHandler extends BaseStateHandler{processItem(e,t,r,n,a){let i;let s=this.stateDefinition;r.Map={Item:{Index:n,Value:e}},s.Parameters&&(i=processPayloadTemplate(s.Parameters,t,r));let o=new StateMachine(s.Iterator,null==a?void 0:a.validationOptions),{result:u}=o.run(null!=i?i:e,null==a?void 0:a.runOptions);return u}executeState(e,t,r){var n=this;return _asyncToGenerator$6(function*(){let a=n.stateDefinition,i=e;if(a.ItemsPath&&(i=jsonPathQuery(a.ItemsPath,e,t)),!Array.isArray(i))return n.buildExecutionResult([]);let s=pLimit__default.default(a.MaxConcurrency||40),o=i.map((a,i)=>s(()=>n.processItem(a,e,t,i,r))),u=yield Promise.all(o);return delete t.Map,n.buildExecutionResult(u)})()}constructor(e){super(e)}}function asyncGeneratorStep$5(e,t,r,n,a,i,s){try{var o=e[i](s),u=o.value}catch(l){r(l);return}o.done?t(u):Promise.resolve(u).then(n,a)}function _asyncToGenerator$5(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var i=e.apply(t,r);function s(e){asyncGeneratorStep$5(i,n,a,s,o,"next",e)}function o(e){asyncGeneratorStep$5(i,n,a,s,o,"throw",e)}s(void 0)})}}class PassStateHandler extends BaseStateHandler{executeState(e,t,r){var n=this;return _asyncToGenerator$5(function*(){return n.stateDefinition.Result?n.buildExecutionResult(n.stateDefinition.Result):n.buildExecutionResult(e)})()}constructor(e){super(e)}}function asyncGeneratorStep$4(e,t,r,n,a,i,s){try{var o=e[i](s),u=o.value}catch(l){r(l);return}o.done?t(u):Promise.resolve(u).then(n,a)}function _asyncToGenerator$4(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var i=e.apply(t,r);function s(e){asyncGeneratorStep$4(i,n,a,s,o,"next",e)}function o(e){asyncGeneratorStep$4(i,n,a,s,o,"throw",e)}s(void 0)})}}class WaitStateHandler extends BaseStateHandler{executeState(e,t,r){var n=this;return _asyncToGenerator$4(function*(){let a=n.stateDefinition;if((null==r?void 0:r.waitTimeOverrideOption)!==void 0)return yield sleep(r.waitTimeOverrideOption,r.abortSignal),n.buildExecutionResult(e);if(a.Seconds)yield sleep(1e3*a.Seconds,null==r?void 0:r.abortSignal);else if(a.Timestamp){let i=new Date(a.Timestamp),s=Date.now(),o=i.getTime()-s;yield sleep(o,null==r?void 0:r.abortSignal)}else if(a.SecondsPath){let u=jsonPathQuery(a.SecondsPath,e,t);yield sleep(1e3*u,null==r?void 0:r.abortSignal)}else if(a.TimestampPath){let l=jsonPathQuery(a.TimestampPath,e,t),c=new Date(l),h=Date.now(),d=c.getTime()-h;yield sleep(d,null==r?void 0:r.abortSignal)}return n.buildExecutionResult(e)})()}constructor(e){super(e)}}function asyncGeneratorStep$3(e,t,r,n,a,i,s){try{var o=e[i](s),u=o.value}catch(l){r(l);return}o.done?t(u):Promise.resolve(u).then(n,a)}function _asyncToGenerator$3(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var i=e.apply(t,r);function s(e){asyncGeneratorStep$3(i,n,a,s,o,"next",e)}function o(e){asyncGeneratorStep$3(i,n,a,s,o,"throw",e)}s(void 0)})}}class ChoiceStateHandler extends BaseStateHandler{testChoiceRule(e,t){if("And"in e)return e.And.every(e=>this.testChoiceRule(e,t));if("Or"in e)return e.Or.some(e=>this.testChoiceRule(e,t));if("Not"in e)return!this.testChoiceRule(e.Not,t);if("StringEquals"in e){let r=jsonPathQuery(e.Variable,t);return r===e.StringEquals}if("StringEqualsPath"in e){let n=jsonPathQuery(e.Variable,t),a=jsonPathQuery(e.StringEqualsPath,t);return n===a}if("StringLessThan"in e){let i=jsonPathQuery(e.Variable,t);return i<e.StringLessThan}if("StringLessThanPath"in e){let s=jsonPathQuery(e.Variable,t),o=jsonPathQuery(e.StringLessThanPath,t);return s<o}if("StringGreaterThan"in e){let u=jsonPathQuery(e.Variable,t);return u>e.StringGreaterThan}if("StringGreaterThanPath"in e){let l=jsonPathQuery(e.Variable,t),c=jsonPathQuery(e.StringGreaterThanPath,t);return l>c}if("StringLessThanEquals"in e){let h=jsonPathQuery(e.Variable,t);return h<=e.StringLessThanEquals}if("StringLessThanEqualsPath"in e){let d=jsonPathQuery(e.Variable,t),f=jsonPathQuery(e.StringLessThanEqualsPath,t);return d<=f}if("StringGreaterThanEquals"in e){let p=jsonPathQuery(e.Variable,t);return p>=e.StringGreaterThanEquals}if("StringGreaterThanEqualsPath"in e){let y=jsonPathQuery(e.Variable,t),P=jsonPathQuery(e.StringGreaterThanEqualsPath,t);return y>=P}if("StringMatches"in e){let m=jsonPathQuery(e.Variable,t),S=wcmatch__default.default(e.StringMatches,{separator:!1});return S(m)}if("NumericEquals"in e){let T=jsonPathQuery(e.Variable,t);return T===e.NumericEquals}if("NumericEqualsPath"in e){let v=jsonPathQuery(e.Variable,t),b=jsonPathQuery(e.NumericEqualsPath,t);return v===b}if("NumericLessThan"in e){let E=jsonPathQuery(e.Variable,t);return E<e.NumericLessThan}if("NumericLessThanPath"in e){let x=jsonPathQuery(e.Variable,t),w=jsonPathQuery(e.NumericLessThanPath,t);return x<w}if("NumericGreaterThan"in e){let j=jsonPathQuery(e.Variable,t);return j>e.NumericGreaterThan}if("NumericGreaterThanPath"in e){let G=jsonPathQuery(e.Variable,t),Q=jsonPathQuery(e.NumericGreaterThanPath,t);return G>Q}if("NumericLessThanEquals"in e){let g=jsonPathQuery(e.Variable,t);return g<=e.NumericLessThanEquals}if("NumericLessThanEqualsPath"in e){let _=jsonPathQuery(e.Variable,t),D=jsonPathQuery(e.NumericLessThanEqualsPath,t);return _<=D}if("NumericGreaterThanEquals"in e){let L=jsonPathQuery(e.Variable,t);return L>=e.NumericGreaterThanEquals}if("NumericGreaterThanEqualsPath"in e){let $=jsonPathQuery(e.Variable,t),q=jsonPathQuery(e.NumericGreaterThanEqualsPath,t);return $>=q}if("BooleanEquals"in e){let V=jsonPathQuery(e.Variable,t);return V===e.BooleanEquals}if("BooleanEqualsPath"in e){let O=jsonPathQuery(e.Variable,t),N=jsonPathQuery(e.BooleanEqualsPath,t);return O===N}if("TimestampEquals"in e){let R=new Date(jsonPathQuery(e.Variable,t)),I=new Date(e.TimestampEquals);return R.getTime()===I.getTime()}if("TimestampEqualsPath"in e){let H=new Date(jsonPathQuery(e.Variable,t)),C=new Date(jsonPathQuery(e.TimestampEqualsPath,t));return H.getTime()===C.getTime()}if("TimestampLessThan"in e){let M=new Date(jsonPathQuery(e.Variable,t)),B=new Date(e.TimestampLessThan);return M<B}if("TimestampLessThanPath"in e){let k=new Date(jsonPathQuery(e.Variable,t)),A=new Date(jsonPathQuery(e.TimestampLessThanPath,t));return k<A}if("TimestampGreaterThan"in e){let F=new Date(jsonPathQuery(e.Variable,t)),W=new Date(e.TimestampGreaterThan);return F>W}if("TimestampGreaterThanPath"in e){let J=new Date(jsonPathQuery(e.Variable,t)),Z=new Date(jsonPathQuery(e.TimestampGreaterThanPath,t));return J>Z}if("TimestampLessThanEquals"in e){let z=new Date(jsonPathQuery(e.Variable,t)),K=new Date(e.TimestampLessThanEquals);return z<=K}if("TimestampLessThanEqualsPath"in e){let U=new Date(jsonPathQuery(e.Variable,t)),X=new Date(jsonPathQuery(e.TimestampLessThanEqualsPath,t));return U<=X}if("TimestampGreaterThanEquals"in e){let Y=new Date(jsonPathQuery(e.Variable,t)),ee=new Date(e.TimestampGreaterThanEquals);return Y>=ee}if("TimestampGreaterThanEqualsPath"in e){let et=new Date(jsonPathQuery(e.Variable,t)),er=new Date(jsonPathQuery(e.TimestampGreaterThanEqualsPath,t));return et>=er}if("IsNull"in e){let en=jsonPathQuery(e.Variable,t),ea=e.IsNull;return ea&&null===en}if("IsPresent"in e){let ei=jsonPathQuery(e.Variable,t),es=e.IsPresent;return es&&void 0!==ei}if("IsNumeric"in e){let eo=jsonPathQuery(e.Variable,t),eu=e.IsNumeric;return eu&&"number"==typeof eo}if("IsString"in e){let el=jsonPathQuery(e.Variable,t),ec=e.IsString;return ec&&"string"==typeof el}if("IsBoolean"in e){let eh=jsonPathQuery(e.Variable,t),ed=e.IsBoolean;return ed&&"boolean"==typeof eh}if("IsTimestamp"in e){let ef=jsonPathQuery(e.Variable,t),ep=e.IsTimestamp;return ep&&/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(Z|(\+|-)\d{2}:\d{2})/.test(ef)}return!1}executeState(e,t,r){var n=this;return _asyncToGenerator$3(function*(){let t=n.stateDefinition;for(let r of t.Choices){let a=n.testChoiceRule(r,e);if(a)return{stateResult:e,nextState:r.Next,isEndState:!1}}if(t.Default)return{stateResult:e,nextState:t.Default,isEndState:!1};throw Error("States.NoChoiceMatched")})()}constructor(e){super(e)}}function asyncGeneratorStep$2(e,t,r,n,a,i,s){try{var o=e[i](s),u=o.value}catch(l){r(l);return}o.done?t(u):Promise.resolve(u).then(n,a)}function _asyncToGenerator$2(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var i=e.apply(t,r);function s(e){asyncGeneratorStep$2(i,n,a,s,o,"next",e)}function o(e){asyncGeneratorStep$2(i,n,a,s,o,"throw",e)}s(void 0)})}}class SucceedStateHandler extends BaseStateHandler{executeState(e,t,r){return _asyncToGenerator$2(function*(){return{stateResult:e,nextState:"",isEndState:!0}})()}constructor(e){super(e)}}function asyncGeneratorStep$1(e,t,r,n,a,i,s){try{var o=e[i](s),u=o.value}catch(l){r(l);return}o.done?t(u):Promise.resolve(u).then(n,a)}function _asyncToGenerator$1(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var i=e.apply(t,r);function s(e){asyncGeneratorStep$1(i,n,a,s,o,"next",e)}function o(e){asyncGeneratorStep$1(i,n,a,s,o,"throw",e)}s(void 0)})}}class FailStateHandler extends BaseStateHandler{executeState(e,t,r){return _asyncToGenerator$1(function*(){return{stateResult:e,nextState:"",isEndState:!0}})()}constructor(e){super(e)}}class ExecutionAbortedError extends CustomError{toString(){return"Execution aborted"}constructor(){super("Execution aborted"),this.name="ExecutionAbortedError"}}function asyncGeneratorStep(e,t,r,n,a,i,s){try{var o=e[i](s),u=o.value}catch(l){r(l);return}o.done?t(u):Promise.resolve(u).then(n,a)}function _asyncToGenerator(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var i=e.apply(t,r);function s(e){asyncGeneratorStep(i,n,a,s,o,"next",e)}function o(e){asyncGeneratorStep(i,n,a,s,o,"throw",e)}s(void 0)})}}function _extends(){return(_extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}class StateMachine{run(e,t){let r=new AbortController,n=new Promise((e,n)=>{(null==t?void 0:t.noThrowOnAbort)?r.signal.addEventListener("abort",()=>e(null)):r.signal.addEventListener("abort",()=>n(new ExecutionAbortedError))}),a=this.execute(e,{runOptions:t,abortSignal:r.signal}),i=Promise.race([a,n]);return{abort:()=>r.abort(),result:i}}execute(e,t){var r=this;return _asyncToGenerator(function*(){let n=r.definition.States[r.definition.StartAt],a=r.definition.StartAt,i=cloneDeep__default.default(e),s=cloneDeep__default.default(e),o=null,u="",l=!1,c={};do s=r.processInput(n,s,c),({stateResult:o,nextState:u,isEndState:l}=yield r.stateExecutors[n.Type](n,s,c,a,t)),i=o=r.processResult(n,o,i,c),s=o,n=r.definition.States[u],a=u;while(!l&&!t.abortSignal.aborted);return o})()}processInput(e,t,r){let n=t;return"InputPath"in e&&(n=processInputPath(e.InputPath,n,r)),"Parameters"in e&&"Map"!==e.Type&&(n=processPayloadTemplate(e.Parameters,n,r)),n}processResult(e,t,r,n){let a=t;return"ResultSelector"in e&&(a=processPayloadTemplate(e.ResultSelector,a,n)),"ResultPath"in e&&(a=processResultPath(e.ResultPath,r,a)),"OutputPath"in e&&(a=processOutputPath(e.OutputPath,a,n)),a}executeTaskState(e,t,r,n,a){return _asyncToGenerator(function*(){var i,s,o;let u=null==(i=a.runOptions)?void 0:null==(s=i.overrides)?void 0:null==(o=s.taskResourceLocalHandlers)?void 0:o[n],l=new TaskStateHandler(e),c=yield l.executeState(t,r,{overrideFn:u});return c})()}executeMapState(e,t,r,n,a){var i=this;return _asyncToGenerator(function*(){let n=new MapStateHandler(e),s=yield n.executeState(t,r,{validationOptions:i.validationOptions,runOptions:a.runOptions});return s})()}executePassState(e,t,r,n,a){return _asyncToGenerator(function*(){let n=new PassStateHandler(e),a=yield n.executeState(t,r);return a})()}executeWaitState(e,t,r,n,a){return _asyncToGenerator(function*(){var i,s,o;let u=null==(i=a.runOptions)?void 0:null==(s=i.overrides)?void 0:null==(o=s.waitTimeOverrides)?void 0:o[n],l=a.abortSignal,c=new WaitStateHandler(e),h=yield c.executeState(t,r,{waitTimeOverrideOption:u,abortSignal:l});return h})()}executeChoiceState(e,t,r,n,a){return _asyncToGenerator(function*(){let n=new ChoiceStateHandler(e),a=yield n.executeState(t,r);return a})()}executeSucceedState(e,t,r,n,a){return _asyncToGenerator(function*(){let n=new SucceedStateHandler(e),a=yield n.executeState(t,r);return a})()}executeFailState(e,t,r,n,a){return _asyncToGenerator(function*(){let n=new FailStateHandler(e),a=yield n.executeState(t,r);return a})()}constructor(e,t){let{isValid:r,errorsText:n}=aslValidator__default.default(e,_extends({checkArn:!0,checkPaths:!0},t));if(!r)throw Error(`State machine definition is invalid, see error(s) below:
|
|
3
|
-
|
|
1
|
+
"use strict";var K=Object.create;var E=Object.defineProperty;var X=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames,q=Object.getOwnPropertySymbols,Z=Object.getPrototypeOf,G=Object.prototype.hasOwnProperty,R=Object.prototype.propertyIsEnumerable;var M=(s,t,e)=>t in s?E(s,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[t]=e,A=(s,t)=>{for(var e in t||(t={}))G.call(t,e)&&M(s,e,t[e]);if(q)for(var e of q(t))R.call(t,e)&&M(s,e,t[e]);return s};var tt=(s,t)=>{for(var e in t)E(s,e,{get:t[e],enumerable:!0})},B=(s,t,e,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Y(t))!G.call(s,r)&&r!==e&&E(s,r,{get:()=>t[r],enumerable:!(a=X(t,r))||a.enumerable});return s};var c=(s,t,e)=>(e=s!=null?K(Z(s)):{},B(t||!s||!s.__esModule?E(e,"default",{value:s,enumerable:!0}):e,s)),et=s=>B(E({},"__esModule",{value:!0}),s);var l=(s,t,e)=>new Promise((a,r)=>{var i=m=>{try{u(e.next(m))}catch(p){r(p)}},o=m=>{try{u(e.throw(m))}catch(p){r(p)}},u=m=>m.done?a(m.value):Promise.resolve(m.value).then(i,o);u((e=e.apply(s,t)).next())});var at={};tt(at,{ExecutionAbortedError:()=>y,StateMachine:()=>O});module.exports=et(at);var S=class{constructor(t){this.stateDefinition=t}buildExecutionResult(t){let e={stateResult:t,nextState:"",isEndState:!1};return"Next"in this.stateDefinition&&(e.nextState=this.stateDefinition.Next),"End"in this.stateDefinition&&(e.isEndState=this.stateDefinition.End),e}};var N=require("@aws-sdk/client-lambda");var V=class extends Error{constructor(t){super(t)}};var g=class extends V{constructor(e,a){super(`Execution of Lambda function "${a}" failed`);this.name="LambdaExecutionError",this.wrappedError=new Error(e.errorMessage),this.wrappedError.stack=e.trace.join(`
|
|
2
|
+
`)}toString(){return`${this.name}: ${this.message}. The error thrown by the Lambda was:
|
|
3
|
+
${this.wrappedError.stack}`}};var b=class{constructor(t){this.client=new N.LambdaClient(t!=null?t:{})}invokeFunction(t,e){return l(this,null,function*(){let a=Buffer.from(JSON.stringify(e)),r=new N.InvokeCommand({FunctionName:t,Payload:a}),i=yield this.client.send(r),o=null;if(i.Payload&&(o=Buffer.from(i.Payload).toString(),o=JSON.parse(o)),i.FunctionError)throw new g(o,t);return o})}};var P=class extends S{constructor(t){super(t)}executeState(t,e,a){return l(this,null,function*(){let r=this.stateDefinition,i=new b;try{if(a!=null&&a.overrideFn){let u=yield a.overrideFn(t);return this.buildExecutionResult(u)}let o=yield i.invokeFunction(r.Resource,t);return this.buildExecutionResult(o)}catch(o){throw o instanceof g?console.error(o.toString()):console.error(o),o}})}};var H=require("jsonpath-plus");function n(s,t,e){return s.startsWith("$$")?(0,H.JSONPath)({path:s.slice(1),json:e!=null?e:null,wrap:!1}):(0,H.JSONPath)({path:s,json:t,wrap:!1})}function k(s){return!!s&&Object.getPrototypeOf(s)===Object.prototype}function x(s,t){return new Promise(e=>{let a=setTimeout(e,s);t==null||t.addEventListener("abort",()=>{a.unref()})})}var F=c(require("lodash/cloneDeep.js"),1),W=c(require("lodash/set.js"),1);function j(s,t,e){return s===void 0?t:s===null?{}:n(s,t,e)}function T(s,t,e){let a=Object.entries(s).map(([r,i])=>{let o=r,u=i;return k(i)&&(u=T(i,t)),r.endsWith(".$")&&typeof i=="string"&&(o=r.replace(".$",""),u=n(i,t,e)),[o,u]});return Object.fromEntries(a)}function $(s,t,e){if(s===void 0)return e;if(s===null)return t;let a=s.replace("$.","");if(k(t)){let r=(0,F.default)(t);return(0,W.default)(r,a,e)}else throw new Error("TODO: Change this error message for a more descriptive one")}function Q(s,t,e){return s===void 0?t:s===null?{}:n(s,t,e)}var z=c(require("p-limit"),1);var w=class extends S{constructor(t){super(t)}processItem(t,e,a,r,i){let o=this.stateDefinition,u;a.Map={Item:{Index:r,Value:t}},o.Parameters&&(u=T(o.Parameters,e,a));let m=new O(o.Iterator,i==null?void 0:i.validationOptions),{result:p}=m.run(u!=null?u:t,i==null?void 0:i.runOptions);return p}executeState(t,e,a){return l(this,null,function*(){let r=this.stateDefinition,i=t;if(r.ItemsPath&&(i=n(r.ItemsPath,t,e)),!Array.isArray(i))return this.buildExecutionResult([]);let o=40,u=(0,z.default)(r.MaxConcurrency||o),m=i.map((d,f)=>u(()=>this.processItem(d,t,e,f,a))),p=yield Promise.all(m);return delete e.Map,this.buildExecutionResult(p)})}};var v=class extends S{constructor(t){super(t)}executeState(t,e,a){return l(this,null,function*(){return this.stateDefinition.Result?this.buildExecutionResult(this.stateDefinition.Result):this.buildExecutionResult(t)})}};var h=class extends S{constructor(t){super(t)}executeState(t,e,a){return l(this,null,function*(){let r=this.stateDefinition;if((a==null?void 0:a.waitTimeOverrideOption)!==void 0)return yield x(a.waitTimeOverrideOption,a.abortSignal),this.buildExecutionResult(t);if(r.Seconds)yield x(r.Seconds*1e3,a==null?void 0:a.abortSignal);else if(r.Timestamp){let i=new Date(r.Timestamp),o=Date.now(),u=i.getTime()-o;yield x(u,a==null?void 0:a.abortSignal)}else if(r.SecondsPath){let i=n(r.SecondsPath,t,e);yield x(i*1e3,a==null?void 0:a.abortSignal)}else if(r.TimestampPath){let i=n(r.TimestampPath,t,e),o=new Date(i),u=Date.now(),m=o.getTime()-u;yield x(m,a==null?void 0:a.abortSignal)}return this.buildExecutionResult(t)})}};var U=c(require("wildcard-match"),1);var J=class extends S{constructor(t){super(t)}testChoiceRule(t,e){if("And"in t)return t.And.every(a=>this.testChoiceRule(a,e));if("Or"in t)return t.Or.some(a=>this.testChoiceRule(a,e));if("Not"in t)return!this.testChoiceRule(t.Not,e);if("StringEquals"in t)return n(t.Variable,e)===t.StringEquals;if("StringEqualsPath"in t){let a=n(t.Variable,e),r=n(t.StringEqualsPath,e);return a===r}if("StringLessThan"in t)return n(t.Variable,e)<t.StringLessThan;if("StringLessThanPath"in t){let a=n(t.Variable,e),r=n(t.StringLessThanPath,e);return a<r}if("StringGreaterThan"in t)return n(t.Variable,e)>t.StringGreaterThan;if("StringGreaterThanPath"in t){let a=n(t.Variable,e),r=n(t.StringGreaterThanPath,e);return a>r}if("StringLessThanEquals"in t)return n(t.Variable,e)<=t.StringLessThanEquals;if("StringLessThanEqualsPath"in t){let a=n(t.Variable,e),r=n(t.StringLessThanEqualsPath,e);return a<=r}if("StringGreaterThanEquals"in t)return n(t.Variable,e)>=t.StringGreaterThanEquals;if("StringGreaterThanEqualsPath"in t){let a=n(t.Variable,e),r=n(t.StringGreaterThanEqualsPath,e);return a>=r}if("StringMatches"in t){let a=n(t.Variable,e);return(0,U.default)(t.StringMatches,{separator:!1})(a)}if("NumericEquals"in t)return n(t.Variable,e)===t.NumericEquals;if("NumericEqualsPath"in t){let a=n(t.Variable,e),r=n(t.NumericEqualsPath,e);return a===r}if("NumericLessThan"in t)return n(t.Variable,e)<t.NumericLessThan;if("NumericLessThanPath"in t){let a=n(t.Variable,e),r=n(t.NumericLessThanPath,e);return a<r}if("NumericGreaterThan"in t)return n(t.Variable,e)>t.NumericGreaterThan;if("NumericGreaterThanPath"in t){let a=n(t.Variable,e),r=n(t.NumericGreaterThanPath,e);return a>r}if("NumericLessThanEquals"in t)return n(t.Variable,e)<=t.NumericLessThanEquals;if("NumericLessThanEqualsPath"in t){let a=n(t.Variable,e),r=n(t.NumericLessThanEqualsPath,e);return a<=r}if("NumericGreaterThanEquals"in t)return n(t.Variable,e)>=t.NumericGreaterThanEquals;if("NumericGreaterThanEqualsPath"in t){let a=n(t.Variable,e),r=n(t.NumericGreaterThanEqualsPath,e);return a>=r}if("BooleanEquals"in t)return n(t.Variable,e)===t.BooleanEquals;if("BooleanEqualsPath"in t){let a=n(t.Variable,e),r=n(t.BooleanEqualsPath,e);return a===r}if("TimestampEquals"in t){let a=new Date(n(t.Variable,e)),r=new Date(t.TimestampEquals);return a.getTime()===r.getTime()}if("TimestampEqualsPath"in t){let a=new Date(n(t.Variable,e)),r=new Date(n(t.TimestampEqualsPath,e));return a.getTime()===r.getTime()}if("TimestampLessThan"in t){let a=new Date(n(t.Variable,e)),r=new Date(t.TimestampLessThan);return a<r}if("TimestampLessThanPath"in t){let a=new Date(n(t.Variable,e)),r=new Date(n(t.TimestampLessThanPath,e));return a<r}if("TimestampGreaterThan"in t){let a=new Date(n(t.Variable,e)),r=new Date(t.TimestampGreaterThan);return a>r}if("TimestampGreaterThanPath"in t){let a=new Date(n(t.Variable,e)),r=new Date(n(t.TimestampGreaterThanPath,e));return a>r}if("TimestampLessThanEquals"in t){let a=new Date(n(t.Variable,e)),r=new Date(t.TimestampLessThanEquals);return a<=r}if("TimestampLessThanEqualsPath"in t){let a=new Date(n(t.Variable,e)),r=new Date(n(t.TimestampLessThanEqualsPath,e));return a<=r}if("TimestampGreaterThanEquals"in t){let a=new Date(n(t.Variable,e)),r=new Date(t.TimestampGreaterThanEquals);return a>=r}if("TimestampGreaterThanEqualsPath"in t){let a=new Date(n(t.Variable,e)),r=new Date(n(t.TimestampGreaterThanEqualsPath,e));return a>=r}if("IsNull"in t){let a=n(t.Variable,e);return t.IsNull&&a===null}if("IsPresent"in t){let a=n(t.Variable,e);return t.IsPresent&&a!==void 0}if("IsNumeric"in t){let a=n(t.Variable,e);return t.IsNumeric&&typeof a=="number"}if("IsString"in t){let a=n(t.Variable,e);return t.IsString&&typeof a=="string"}if("IsBoolean"in t){let a=n(t.Variable,e);return t.IsBoolean&&typeof a=="boolean"}if("IsTimestamp"in t){let a=n(t.Variable,e);return t.IsTimestamp&&/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(Z|(\+|-)\d{2}:\d{2})/.test(a)}return!1}executeState(t,e,a){return l(this,null,function*(){let r=this.stateDefinition;for(let i of r.Choices)if(this.testChoiceRule(i,t))return{stateResult:t,nextState:i.Next,isEndState:!1};if(r.Default)return{stateResult:t,nextState:r.Default,isEndState:!1};throw new Error("States.NoChoiceMatched")})}};var D=class extends S{constructor(t){super(t)}executeState(t,e,a){return l(this,null,function*(){return{stateResult:t,nextState:"",isEndState:!0}})}};var I=class extends S{constructor(t){super(t)}executeState(t,e,a){return l(this,null,function*(){return{stateResult:t,nextState:"",isEndState:!0}})}};var y=class extends V{constructor(){super("Execution aborted"),this.name="ExecutionAbortedError"}toString(){return"Execution aborted"}};var _=c(require("asl-validator"),1),C=c(require("lodash/cloneDeep.js"),1);var O=class{constructor(t,e){let{isValid:a,errorsText:r}=(0,_.default)(t,A({checkArn:!0,checkPaths:!0},e));if(!a)throw new Error(`State machine definition is invalid, see error(s) below:
|
|
4
|
+
${r(`
|
|
5
|
+
`)}`);this.definition=t,this.stateExecutors={Task:this.executeTaskState,Map:this.executeMapState,Pass:this.executePassState,Wait:this.executeWaitState,Choice:this.executeChoiceState,Succeed:this.executeSucceedState,Fail:this.executeFailState},this.validationOptions=e}run(t,e){let a=new AbortController,r=new Promise((u,m)=>{e!=null&&e.noThrowOnAbort?a.signal.addEventListener("abort",()=>u(null)):a.signal.addEventListener("abort",()=>m(new y))}),i=this.execute(t,{validationOptions:this.validationOptions,runOptions:e,abortSignal:a.signal}),o=Promise.race([i,r]);return{abort:()=>a.abort(),result:o}}execute(t,e){return l(this,null,function*(){let a=this.definition.States[this.definition.StartAt],r=this.definition.StartAt,i=(0,C.default)(t),o=(0,C.default)(t),u=null,m="",p=!1,d={};do o=this.processInput(a,o,d),{stateResult:u,nextState:m,isEndState:p}=yield this.stateExecutors[a.Type](a,o,d,r,e),u=this.processResult(a,u,i,d),i=u,o=u,a=this.definition.States[m],r=m;while(!p&&!e.abortSignal.aborted);return u})}processInput(t,e,a){let r=e;return"InputPath"in t&&(r=j(t.InputPath,r,a)),"Parameters"in t&&t.Type!=="Map"&&(r=T(t.Parameters,r,a)),r}processResult(t,e,a,r){let i=e;return"ResultSelector"in t&&(i=T(t.ResultSelector,i,r)),"ResultPath"in t&&(i=$(t.ResultPath,a,i)),"OutputPath"in t&&(i=Q(t.OutputPath,i,r)),i}executeTaskState(t,e,a,r,i){return l(this,null,function*(){var p,d,f;let o=(f=(d=(p=i.runOptions)==null?void 0:p.overrides)==null?void 0:d.taskResourceLocalHandlers)==null?void 0:f[r];return yield new P(t).executeState(e,a,{overrideFn:o})})}executeMapState(t,e,a,r,i){return l(this,null,function*(){return yield new w(t).executeState(e,a,{validationOptions:i.validationOptions,runOptions:i.runOptions})})}executePassState(t,e,a,r,i){return l(this,null,function*(){return yield new v(t).executeState(e,a)})}executeWaitState(t,e,a,r,i){return l(this,null,function*(){var d,f,L;let o=(L=(f=(d=i.runOptions)==null?void 0:d.overrides)==null?void 0:f.waitTimeOverrides)==null?void 0:L[r],u=i.abortSignal;return yield new h(t).executeState(e,a,{waitTimeOverrideOption:o,abortSignal:u})})}executeChoiceState(t,e,a,r,i){return l(this,null,function*(){return yield new J(t).executeState(e,a)})}executeSucceedState(t,e,a,r,i){return l(this,null,function*(){return yield new D(t).executeState(e,a)})}executeFailState(t,e,a,r,i){return l(this,null,function*(){return yield new I(t).executeState(e,a)})}};0&&(module.exports={ExecutionAbortedError,StateMachine});
|
package/build/main.d.ts
CHANGED
|
@@ -157,14 +157,14 @@ interface Overrides {
|
|
|
157
157
|
taskResourceLocalHandlers?: TaskStateResourceLocalHandler;
|
|
158
158
|
waitTimeOverrides?: WaitStateTimeOverride;
|
|
159
159
|
}
|
|
160
|
-
interface RunOptions {
|
|
161
|
-
overrides?: Overrides;
|
|
162
|
-
noThrowOnAbort?: boolean;
|
|
163
|
-
}
|
|
164
160
|
interface ValidationOptions {
|
|
165
161
|
readonly checkPaths?: boolean;
|
|
166
162
|
readonly checkArn?: boolean;
|
|
167
163
|
}
|
|
164
|
+
interface RunOptions {
|
|
165
|
+
overrides?: Overrides;
|
|
166
|
+
noThrowOnAbort?: boolean;
|
|
167
|
+
}
|
|
168
168
|
|
|
169
169
|
declare class StateMachine {
|
|
170
170
|
/**
|
package/build/main.esm.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
${this.wrappedError.stack}`}constructor(e,t){super(`Execution of Lambda function "${t}" failed`),this.name="LambdaExecutionError",this.wrappedError=Error(e.errorMessage),this.wrappedError.stack=e.trace.join("\n")}}function asyncGeneratorStep$8(e,t,r,n,a,i,s){try{var o=e[i](s),u=o.value}catch(l){r(l);return}o.done?t(u):Promise.resolve(u).then(n,a)}function _asyncToGenerator$8(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var i=e.apply(t,r);function s(e){asyncGeneratorStep$8(i,n,a,s,o,"next",e)}function o(e){asyncGeneratorStep$8(i,n,a,s,o,"throw",e)}s(void 0)})}}class LambdaClient{invokeFunction(e,r){var n=this;return _asyncToGenerator$8(function*(){let a=Buffer.from(JSON.stringify(r)),i=new t({FunctionName:e,Payload:a}),s=yield n.client.send(i),o=null;if(s.Payload&&(o=JSON.parse(o=Buffer.from(s.Payload).toString())),s.FunctionError)throw new LambdaExecutionError(o,e);return o})()}constructor(t){this.client=new e(null!=t?t:{})}}function asyncGeneratorStep$7(e,t,r,n,a,i,s){try{var o=e[i](s),u=o.value}catch(l){r(l);return}o.done?t(u):Promise.resolve(u).then(n,a)}function _asyncToGenerator$7(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var i=e.apply(t,r);function s(e){asyncGeneratorStep$7(i,n,a,s,o,"next",e)}function o(e){asyncGeneratorStep$7(i,n,a,s,o,"throw",e)}s(void 0)})}}class TaskStateHandler extends BaseStateHandler{executeState(e,t,r){var n=this;return _asyncToGenerator$7(function*(){let t=n.stateDefinition,a=new LambdaClient;try{if(null==r?void 0:r.overrideFn){let i=yield r.overrideFn(e);return n.buildExecutionResult(i)}let s=yield a.invokeFunction(t.Resource,e);return n.buildExecutionResult(s)}catch(o){throw o instanceof LambdaExecutionError?console.error(o.toString()):console.error(o),o}})()}constructor(e){super(e)}}function jsonPathQuery(e,t,n){return e.startsWith("$$")?r({path:e.slice(1),json:null!=n?n:null,wrap:!1}):r({path:e,json:t,wrap:!1})}function isPlainObj(e){return!!e&&Object.getPrototypeOf(e)===Object.prototype}function sleep(e,t){return new Promise(r=>{let n=setTimeout(r,e);null==t||t.addEventListener("abort",()=>{n.unref()})})}function processInputPath(e,t,r){return void 0===e?t:null===e?{}:jsonPathQuery(e,t,r)}function processPayloadTemplate(e,t,r){let n=Object.entries(e).map(([e,n])=>{let a=e,i=n;return isPlainObj(n)&&(i=processPayloadTemplate(n,t)),e.endsWith(".$")&&"string"==typeof n&&(a=e.replace(".$",""),i=jsonPathQuery(n,t,r)),[a,i]});return Object.fromEntries(n)}function processResultPath(e,t,r){if(void 0===e)return r;if(null===e)return t;let i=e.replace("$.","");if(isPlainObj(t)){let s=n(t);return a(s,i,r)}throw Error("TODO: Change this error message for a more descriptive one")}function processOutputPath(e,t,r){return void 0===e?t:null===e?{}:jsonPathQuery(e,t,r)}function asyncGeneratorStep$6(e,t,r,n,a,i,s){try{var o=e[i](s),u=o.value}catch(l){r(l);return}o.done?t(u):Promise.resolve(u).then(n,a)}function _asyncToGenerator$6(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var i=e.apply(t,r);function s(e){asyncGeneratorStep$6(i,n,a,s,o,"next",e)}function o(e){asyncGeneratorStep$6(i,n,a,s,o,"throw",e)}s(void 0)})}}class MapStateHandler extends BaseStateHandler{processItem(e,t,r,n,a){let i;let s=this.stateDefinition;r.Map={Item:{Index:n,Value:e}},s.Parameters&&(i=processPayloadTemplate(s.Parameters,t,r));let o=new StateMachine(s.Iterator,null==a?void 0:a.validationOptions),{result:u}=o.run(null!=i?i:e,null==a?void 0:a.runOptions);return u}executeState(e,t,r){var n=this;return _asyncToGenerator$6(function*(){let a=n.stateDefinition,s=e;if(a.ItemsPath&&(s=jsonPathQuery(a.ItemsPath,e,t)),!Array.isArray(s))return n.buildExecutionResult([]);let o=i(a.MaxConcurrency||40),u=s.map((a,i)=>o(()=>n.processItem(a,e,t,i,r))),l=yield Promise.all(u);return delete t.Map,n.buildExecutionResult(l)})()}constructor(e){super(e)}}function asyncGeneratorStep$5(e,t,r,n,a,i,s){try{var o=e[i](s),u=o.value}catch(l){r(l);return}o.done?t(u):Promise.resolve(u).then(n,a)}function _asyncToGenerator$5(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var i=e.apply(t,r);function s(e){asyncGeneratorStep$5(i,n,a,s,o,"next",e)}function o(e){asyncGeneratorStep$5(i,n,a,s,o,"throw",e)}s(void 0)})}}class PassStateHandler extends BaseStateHandler{executeState(e,t,r){var n=this;return _asyncToGenerator$5(function*(){return n.stateDefinition.Result?n.buildExecutionResult(n.stateDefinition.Result):n.buildExecutionResult(e)})()}constructor(e){super(e)}}function asyncGeneratorStep$4(e,t,r,n,a,i,s){try{var o=e[i](s),u=o.value}catch(l){r(l);return}o.done?t(u):Promise.resolve(u).then(n,a)}function _asyncToGenerator$4(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var i=e.apply(t,r);function s(e){asyncGeneratorStep$4(i,n,a,s,o,"next",e)}function o(e){asyncGeneratorStep$4(i,n,a,s,o,"throw",e)}s(void 0)})}}class WaitStateHandler extends BaseStateHandler{executeState(e,t,r){var n=this;return _asyncToGenerator$4(function*(){let a=n.stateDefinition;if((null==r?void 0:r.waitTimeOverrideOption)!==void 0)return yield sleep(r.waitTimeOverrideOption,r.abortSignal),n.buildExecutionResult(e);if(a.Seconds)yield sleep(1e3*a.Seconds,null==r?void 0:r.abortSignal);else if(a.Timestamp){let i=new Date(a.Timestamp),s=Date.now(),o=i.getTime()-s;yield sleep(o,null==r?void 0:r.abortSignal)}else if(a.SecondsPath){let u=jsonPathQuery(a.SecondsPath,e,t);yield sleep(1e3*u,null==r?void 0:r.abortSignal)}else if(a.TimestampPath){let l=jsonPathQuery(a.TimestampPath,e,t),c=new Date(l),h=Date.now(),d=c.getTime()-h;yield sleep(d,null==r?void 0:r.abortSignal)}return n.buildExecutionResult(e)})()}constructor(e){super(e)}}function asyncGeneratorStep$3(e,t,r,n,a,i,s){try{var o=e[i](s),u=o.value}catch(l){r(l);return}o.done?t(u):Promise.resolve(u).then(n,a)}function _asyncToGenerator$3(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var i=e.apply(t,r);function s(e){asyncGeneratorStep$3(i,n,a,s,o,"next",e)}function o(e){asyncGeneratorStep$3(i,n,a,s,o,"throw",e)}s(void 0)})}}class ChoiceStateHandler extends BaseStateHandler{testChoiceRule(e,t){if("And"in e)return e.And.every(e=>this.testChoiceRule(e,t));if("Or"in e)return e.Or.some(e=>this.testChoiceRule(e,t));if("Not"in e)return!this.testChoiceRule(e.Not,t);if("StringEquals"in e){let r=jsonPathQuery(e.Variable,t);return r===e.StringEquals}if("StringEqualsPath"in e){let n=jsonPathQuery(e.Variable,t),a=jsonPathQuery(e.StringEqualsPath,t);return n===a}if("StringLessThan"in e){let i=jsonPathQuery(e.Variable,t);return i<e.StringLessThan}if("StringLessThanPath"in e){let o=jsonPathQuery(e.Variable,t),u=jsonPathQuery(e.StringLessThanPath,t);return o<u}if("StringGreaterThan"in e){let l=jsonPathQuery(e.Variable,t);return l>e.StringGreaterThan}if("StringGreaterThanPath"in e){let c=jsonPathQuery(e.Variable,t),h=jsonPathQuery(e.StringGreaterThanPath,t);return c>h}if("StringLessThanEquals"in e){let d=jsonPathQuery(e.Variable,t);return d<=e.StringLessThanEquals}if("StringLessThanEqualsPath"in e){let f=jsonPathQuery(e.Variable,t),p=jsonPathQuery(e.StringLessThanEqualsPath,t);return f<=p}if("StringGreaterThanEquals"in e){let y=jsonPathQuery(e.Variable,t);return y>=e.StringGreaterThanEquals}if("StringGreaterThanEqualsPath"in e){let m=jsonPathQuery(e.Variable,t),P=jsonPathQuery(e.StringGreaterThanEqualsPath,t);return m>=P}if("StringMatches"in e){let S=jsonPathQuery(e.Variable,t),T=s(e.StringMatches,{separator:!1});return T(S)}if("NumericEquals"in e){let v=jsonPathQuery(e.Variable,t);return v===e.NumericEquals}if("NumericEqualsPath"in e){let E=jsonPathQuery(e.Variable,t),b=jsonPathQuery(e.NumericEqualsPath,t);return E===b}if("NumericLessThan"in e){let x=jsonPathQuery(e.Variable,t);return x<e.NumericLessThan}if("NumericLessThanPath"in e){let w=jsonPathQuery(e.Variable,t),j=jsonPathQuery(e.NumericLessThanPath,t);return w<j}if("NumericGreaterThan"in e){let G=jsonPathQuery(e.Variable,t);return G>e.NumericGreaterThan}if("NumericGreaterThanPath"in e){let Q=jsonPathQuery(e.Variable,t),g=jsonPathQuery(e.NumericGreaterThanPath,t);return Q>g}if("NumericLessThanEquals"in e){let $=jsonPathQuery(e.Variable,t);return $<=e.NumericLessThanEquals}if("NumericLessThanEqualsPath"in e){let q=jsonPathQuery(e.Variable,t),D=jsonPathQuery(e.NumericLessThanEqualsPath,t);return q<=D}if("NumericGreaterThanEquals"in e){let V=jsonPathQuery(e.Variable,t);return V>=e.NumericGreaterThanEquals}if("NumericGreaterThanEqualsPath"in e){let L=jsonPathQuery(e.Variable,t),O=jsonPathQuery(e.NumericGreaterThanEqualsPath,t);return L>=O}if("BooleanEquals"in e){let N=jsonPathQuery(e.Variable,t);return N===e.BooleanEquals}if("BooleanEqualsPath"in e){let R=jsonPathQuery(e.Variable,t),_=jsonPathQuery(e.BooleanEqualsPath,t);return R===_}if("TimestampEquals"in e){let I=new Date(jsonPathQuery(e.Variable,t)),H=new Date(e.TimestampEquals);return I.getTime()===H.getTime()}if("TimestampEqualsPath"in e){let C=new Date(jsonPathQuery(e.Variable,t)),B=new Date(jsonPathQuery(e.TimestampEqualsPath,t));return C.getTime()===B.getTime()}if("TimestampLessThan"in e){let M=new Date(jsonPathQuery(e.Variable,t)),k=new Date(e.TimestampLessThan);return M<k}if("TimestampLessThanPath"in e){let A=new Date(jsonPathQuery(e.Variable,t)),F=new Date(jsonPathQuery(e.TimestampLessThanPath,t));return A<F}if("TimestampGreaterThan"in e){let W=new Date(jsonPathQuery(e.Variable,t)),J=new Date(e.TimestampGreaterThan);return W>J}if("TimestampGreaterThanPath"in e){let Z=new Date(jsonPathQuery(e.Variable,t)),z=new Date(jsonPathQuery(e.TimestampGreaterThanPath,t));return Z>z}if("TimestampLessThanEquals"in e){let K=new Date(jsonPathQuery(e.Variable,t)),U=new Date(e.TimestampLessThanEquals);return K<=U}if("TimestampLessThanEqualsPath"in e){let X=new Date(jsonPathQuery(e.Variable,t)),Y=new Date(jsonPathQuery(e.TimestampLessThanEqualsPath,t));return X<=Y}if("TimestampGreaterThanEquals"in e){let ee=new Date(jsonPathQuery(e.Variable,t)),et=new Date(e.TimestampGreaterThanEquals);return ee>=et}if("TimestampGreaterThanEqualsPath"in e){let er=new Date(jsonPathQuery(e.Variable,t)),en=new Date(jsonPathQuery(e.TimestampGreaterThanEqualsPath,t));return er>=en}if("IsNull"in e){let ea=jsonPathQuery(e.Variable,t),ei=e.IsNull;return ei&&null===ea}if("IsPresent"in e){let es=jsonPathQuery(e.Variable,t),eo=e.IsPresent;return eo&&void 0!==es}if("IsNumeric"in e){let eu=jsonPathQuery(e.Variable,t),el=e.IsNumeric;return el&&"number"==typeof eu}if("IsString"in e){let ec=jsonPathQuery(e.Variable,t),eh=e.IsString;return eh&&"string"==typeof ec}if("IsBoolean"in e){let ed=jsonPathQuery(e.Variable,t),ef=e.IsBoolean;return ef&&"boolean"==typeof ed}if("IsTimestamp"in e){let ep=jsonPathQuery(e.Variable,t),ey=e.IsTimestamp;return ey&&/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(Z|(\+|-)\d{2}:\d{2})/.test(ep)}return!1}executeState(e,t,r){var n=this;return _asyncToGenerator$3(function*(){let t=n.stateDefinition;for(let r of t.Choices){let a=n.testChoiceRule(r,e);if(a)return{stateResult:e,nextState:r.Next,isEndState:!1}}if(t.Default)return{stateResult:e,nextState:t.Default,isEndState:!1};throw Error("States.NoChoiceMatched")})()}constructor(e){super(e)}}function asyncGeneratorStep$2(e,t,r,n,a,i,s){try{var o=e[i](s),u=o.value}catch(l){r(l);return}o.done?t(u):Promise.resolve(u).then(n,a)}function _asyncToGenerator$2(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var i=e.apply(t,r);function s(e){asyncGeneratorStep$2(i,n,a,s,o,"next",e)}function o(e){asyncGeneratorStep$2(i,n,a,s,o,"throw",e)}s(void 0)})}}class SucceedStateHandler extends BaseStateHandler{executeState(e,t,r){return _asyncToGenerator$2(function*(){return{stateResult:e,nextState:"",isEndState:!0}})()}constructor(e){super(e)}}function asyncGeneratorStep$1(e,t,r,n,a,i,s){try{var o=e[i](s),u=o.value}catch(l){r(l);return}o.done?t(u):Promise.resolve(u).then(n,a)}function _asyncToGenerator$1(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var i=e.apply(t,r);function s(e){asyncGeneratorStep$1(i,n,a,s,o,"next",e)}function o(e){asyncGeneratorStep$1(i,n,a,s,o,"throw",e)}s(void 0)})}}class FailStateHandler extends BaseStateHandler{executeState(e,t,r){return _asyncToGenerator$1(function*(){return{stateResult:e,nextState:"",isEndState:!0}})()}constructor(e){super(e)}}class ExecutionAbortedError extends CustomError{toString(){return"Execution aborted"}constructor(){super("Execution aborted"),this.name="ExecutionAbortedError"}}function asyncGeneratorStep(e,t,r,n,a,i,s){try{var o=e[i](s),u=o.value}catch(l){r(l);return}o.done?t(u):Promise.resolve(u).then(n,a)}function _asyncToGenerator(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var i=e.apply(t,r);function s(e){asyncGeneratorStep(i,n,a,s,o,"next",e)}function o(e){asyncGeneratorStep(i,n,a,s,o,"throw",e)}s(void 0)})}}function _extends(){return(_extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}class StateMachine{run(e,t){let r=new AbortController,n=new Promise((e,n)=>{(null==t?void 0:t.noThrowOnAbort)?r.signal.addEventListener("abort",()=>e(null)):r.signal.addEventListener("abort",()=>n(new ExecutionAbortedError))}),a=this.execute(e,{runOptions:t,abortSignal:r.signal}),i=Promise.race([a,n]);return{abort:()=>r.abort(),result:i}}execute(e,t){var r=this;return _asyncToGenerator(function*(){let a=r.definition.States[r.definition.StartAt],i=r.definition.StartAt,s=n(e),o=n(e),u=null,l="",c=!1,h={};do o=r.processInput(a,o,h),({stateResult:u,nextState:l,isEndState:c}=yield r.stateExecutors[a.Type](a,o,h,i,t)),s=u=r.processResult(a,u,s,h),o=u,a=r.definition.States[l],i=l;while(!c&&!t.abortSignal.aborted);return u})()}processInput(e,t,r){let n=t;return"InputPath"in e&&(n=processInputPath(e.InputPath,n,r)),"Parameters"in e&&"Map"!==e.Type&&(n=processPayloadTemplate(e.Parameters,n,r)),n}processResult(e,t,r,n){let a=t;return"ResultSelector"in e&&(a=processPayloadTemplate(e.ResultSelector,a,n)),"ResultPath"in e&&(a=processResultPath(e.ResultPath,r,a)),"OutputPath"in e&&(a=processOutputPath(e.OutputPath,a,n)),a}executeTaskState(e,t,r,n,a){return _asyncToGenerator(function*(){var i,s,o;let u=null==(i=a.runOptions)?void 0:null==(s=i.overrides)?void 0:null==(o=s.taskResourceLocalHandlers)?void 0:o[n],l=new TaskStateHandler(e),c=yield l.executeState(t,r,{overrideFn:u});return c})()}executeMapState(e,t,r,n,a){var i=this;return _asyncToGenerator(function*(){let n=new MapStateHandler(e),s=yield n.executeState(t,r,{validationOptions:i.validationOptions,runOptions:a.runOptions});return s})()}executePassState(e,t,r,n,a){return _asyncToGenerator(function*(){let n=new PassStateHandler(e),a=yield n.executeState(t,r);return a})()}executeWaitState(e,t,r,n,a){return _asyncToGenerator(function*(){var i,s,o;let u=null==(i=a.runOptions)?void 0:null==(s=i.overrides)?void 0:null==(o=s.waitTimeOverrides)?void 0:o[n],l=a.abortSignal,c=new WaitStateHandler(e),h=yield c.executeState(t,r,{waitTimeOverrideOption:u,abortSignal:l});return h})()}executeChoiceState(e,t,r,n,a){return _asyncToGenerator(function*(){let n=new ChoiceStateHandler(e),a=yield n.executeState(t,r);return a})()}executeSucceedState(e,t,r,n,a){return _asyncToGenerator(function*(){let n=new SucceedStateHandler(e),a=yield n.executeState(t,r);return a})()}executeFailState(e,t,r,n,a){return _asyncToGenerator(function*(){let n=new FailStateHandler(e),a=yield n.executeState(t,r);return a})()}constructor(e,t){let{isValid:r,errorsText:n}=o(e,_extends({checkArn:!0,checkPaths:!0},t));if(!r)throw Error(`State machine definition is invalid, see error(s) below:
|
|
3
|
-
${n("
|
|
1
|
+
var A=Object.defineProperty;var I=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,F=Object.prototype.propertyIsEnumerable;var H=(i,t,a)=>t in i?A(i,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[t]=a,k=(i,t)=>{for(var a in t||(t={}))B.call(t,a)&&H(i,a,t[a]);if(I)for(var a of I(t))F.call(t,a)&&H(i,a,t[a]);return i};var l=(i,t,a)=>new Promise((e,r)=>{var s=m=>{try{u(a.next(m))}catch(p){r(p)}},o=m=>{try{u(a.throw(m))}catch(p){r(p)}},u=m=>m.done?e(m.value):Promise.resolve(m.value).then(s,o);u((a=a.apply(i,t)).next())});var S=class{constructor(t){this.stateDefinition=t}buildExecutionResult(t){let a={stateResult:t,nextState:"",isEndState:!1};return"Next"in this.stateDefinition&&(a.nextState=this.stateDefinition.Next),"End"in this.stateDefinition&&(a.isEndState=this.stateDefinition.End),a}};import{LambdaClient as W,InvokeCommand as j}from"@aws-sdk/client-lambda";var c=class extends Error{constructor(t){super(t)}};var V=class extends c{constructor(a,e){super(`Execution of Lambda function "${e}" failed`);this.name="LambdaExecutionError",this.wrappedError=new Error(a.errorMessage),this.wrappedError.stack=a.trace.join(`
|
|
2
|
+
`)}toString(){return`${this.name}: ${this.message}. The error thrown by the Lambda was:
|
|
3
|
+
${this.wrappedError.stack}`}};var y=class{constructor(t){this.client=new W(t!=null?t:{})}invokeFunction(t,a){return l(this,null,function*(){let e=Buffer.from(JSON.stringify(a)),r=new j({FunctionName:t,Payload:e}),s=yield this.client.send(r),o=null;if(s.Payload&&(o=Buffer.from(s.Payload).toString(),o=JSON.parse(o)),s.FunctionError)throw new V(o,t);return o})}};var E=class extends S{constructor(t){super(t)}executeState(t,a,e){return l(this,null,function*(){let r=this.stateDefinition,s=new y;try{if(e!=null&&e.overrideFn){let u=yield e.overrideFn(t);return this.buildExecutionResult(u)}let o=yield s.invokeFunction(r.Resource,t);return this.buildExecutionResult(o)}catch(o){throw o instanceof V?console.error(o.toString()):console.error(o),o}})}};import{JSONPath as C}from"jsonpath-plus";function n(i,t,a){return i.startsWith("$$")?C({path:i.slice(1),json:a!=null?a:null,wrap:!1}):C({path:i,json:t,wrap:!1})}function J(i){return!!i&&Object.getPrototypeOf(i)===Object.prototype}function g(i,t){return new Promise(a=>{let e=setTimeout(a,i);t==null||t.addEventListener("abort",()=>{e.unref()})})}import $ from"lodash/cloneDeep.js";import Q from"lodash/set.js";function L(i,t,a){return i===void 0?t:i===null?{}:n(i,t,a)}function x(i,t,a){let e=Object.entries(i).map(([r,s])=>{let o=r,u=s;return J(s)&&(u=x(s,t)),r.endsWith(".$")&&typeof s=="string"&&(o=r.replace(".$",""),u=n(s,t,a)),[o,u]});return Object.fromEntries(e)}function q(i,t,a){if(i===void 0)return a;if(i===null)return t;let e=i.replace("$.","");if(J(t)){let r=$(t);return Q(r,e,a)}else throw new Error("TODO: Change this error message for a more descriptive one")}function M(i,t,a){return i===void 0?t:i===null?{}:n(i,t,a)}import z from"p-limit";var b=class extends S{constructor(t){super(t)}processItem(t,a,e,r,s){let o=this.stateDefinition,u;e.Map={Item:{Index:r,Value:t}},o.Parameters&&(u=x(o.Parameters,a,e));let m=new T(o.Iterator,s==null?void 0:s.validationOptions),{result:p}=m.run(u!=null?u:t,s==null?void 0:s.runOptions);return p}executeState(t,a,e){return l(this,null,function*(){let r=this.stateDefinition,s=t;if(r.ItemsPath&&(s=n(r.ItemsPath,t,a)),!Array.isArray(s))return this.buildExecutionResult([]);let o=40,u=z(r.MaxConcurrency||o),m=s.map((d,f)=>u(()=>this.processItem(d,t,a,f,e))),p=yield Promise.all(m);return delete a.Map,this.buildExecutionResult(p)})}};var N=class extends S{constructor(t){super(t)}executeState(t,a,e){return l(this,null,function*(){return this.stateDefinition.Result?this.buildExecutionResult(this.stateDefinition.Result):this.buildExecutionResult(t)})}};var P=class extends S{constructor(t){super(t)}executeState(t,a,e){return l(this,null,function*(){let r=this.stateDefinition;if((e==null?void 0:e.waitTimeOverrideOption)!==void 0)return yield g(e.waitTimeOverrideOption,e.abortSignal),this.buildExecutionResult(t);if(r.Seconds)yield g(r.Seconds*1e3,e==null?void 0:e.abortSignal);else if(r.Timestamp){let s=new Date(r.Timestamp),o=Date.now(),u=s.getTime()-o;yield g(u,e==null?void 0:e.abortSignal)}else if(r.SecondsPath){let s=n(r.SecondsPath,t,a);yield g(s*1e3,e==null?void 0:e.abortSignal)}else if(r.TimestampPath){let s=n(r.TimestampPath,t,a),o=new Date(s),u=Date.now(),m=o.getTime()-u;yield g(m,e==null?void 0:e.abortSignal)}return this.buildExecutionResult(t)})}};import U from"wildcard-match";var w=class extends S{constructor(t){super(t)}testChoiceRule(t,a){if("And"in t)return t.And.every(e=>this.testChoiceRule(e,a));if("Or"in t)return t.Or.some(e=>this.testChoiceRule(e,a));if("Not"in t)return!this.testChoiceRule(t.Not,a);if("StringEquals"in t)return n(t.Variable,a)===t.StringEquals;if("StringEqualsPath"in t){let e=n(t.Variable,a),r=n(t.StringEqualsPath,a);return e===r}if("StringLessThan"in t)return n(t.Variable,a)<t.StringLessThan;if("StringLessThanPath"in t){let e=n(t.Variable,a),r=n(t.StringLessThanPath,a);return e<r}if("StringGreaterThan"in t)return n(t.Variable,a)>t.StringGreaterThan;if("StringGreaterThanPath"in t){let e=n(t.Variable,a),r=n(t.StringGreaterThanPath,a);return e>r}if("StringLessThanEquals"in t)return n(t.Variable,a)<=t.StringLessThanEquals;if("StringLessThanEqualsPath"in t){let e=n(t.Variable,a),r=n(t.StringLessThanEqualsPath,a);return e<=r}if("StringGreaterThanEquals"in t)return n(t.Variable,a)>=t.StringGreaterThanEquals;if("StringGreaterThanEqualsPath"in t){let e=n(t.Variable,a),r=n(t.StringGreaterThanEqualsPath,a);return e>=r}if("StringMatches"in t){let e=n(t.Variable,a);return U(t.StringMatches,{separator:!1})(e)}if("NumericEquals"in t)return n(t.Variable,a)===t.NumericEquals;if("NumericEqualsPath"in t){let e=n(t.Variable,a),r=n(t.NumericEqualsPath,a);return e===r}if("NumericLessThan"in t)return n(t.Variable,a)<t.NumericLessThan;if("NumericLessThanPath"in t){let e=n(t.Variable,a),r=n(t.NumericLessThanPath,a);return e<r}if("NumericGreaterThan"in t)return n(t.Variable,a)>t.NumericGreaterThan;if("NumericGreaterThanPath"in t){let e=n(t.Variable,a),r=n(t.NumericGreaterThanPath,a);return e>r}if("NumericLessThanEquals"in t)return n(t.Variable,a)<=t.NumericLessThanEquals;if("NumericLessThanEqualsPath"in t){let e=n(t.Variable,a),r=n(t.NumericLessThanEqualsPath,a);return e<=r}if("NumericGreaterThanEquals"in t)return n(t.Variable,a)>=t.NumericGreaterThanEquals;if("NumericGreaterThanEqualsPath"in t){let e=n(t.Variable,a),r=n(t.NumericGreaterThanEqualsPath,a);return e>=r}if("BooleanEquals"in t)return n(t.Variable,a)===t.BooleanEquals;if("BooleanEqualsPath"in t){let e=n(t.Variable,a),r=n(t.BooleanEqualsPath,a);return e===r}if("TimestampEquals"in t){let e=new Date(n(t.Variable,a)),r=new Date(t.TimestampEquals);return e.getTime()===r.getTime()}if("TimestampEqualsPath"in t){let e=new Date(n(t.Variable,a)),r=new Date(n(t.TimestampEqualsPath,a));return e.getTime()===r.getTime()}if("TimestampLessThan"in t){let e=new Date(n(t.Variable,a)),r=new Date(t.TimestampLessThan);return e<r}if("TimestampLessThanPath"in t){let e=new Date(n(t.Variable,a)),r=new Date(n(t.TimestampLessThanPath,a));return e<r}if("TimestampGreaterThan"in t){let e=new Date(n(t.Variable,a)),r=new Date(t.TimestampGreaterThan);return e>r}if("TimestampGreaterThanPath"in t){let e=new Date(n(t.Variable,a)),r=new Date(n(t.TimestampGreaterThanPath,a));return e>r}if("TimestampLessThanEquals"in t){let e=new Date(n(t.Variable,a)),r=new Date(t.TimestampLessThanEquals);return e<=r}if("TimestampLessThanEqualsPath"in t){let e=new Date(n(t.Variable,a)),r=new Date(n(t.TimestampLessThanEqualsPath,a));return e<=r}if("TimestampGreaterThanEquals"in t){let e=new Date(n(t.Variable,a)),r=new Date(t.TimestampGreaterThanEquals);return e>=r}if("TimestampGreaterThanEqualsPath"in t){let e=new Date(n(t.Variable,a)),r=new Date(n(t.TimestampGreaterThanEqualsPath,a));return e>=r}if("IsNull"in t){let e=n(t.Variable,a);return t.IsNull&&e===null}if("IsPresent"in t){let e=n(t.Variable,a);return t.IsPresent&&e!==void 0}if("IsNumeric"in t){let e=n(t.Variable,a);return t.IsNumeric&&typeof e=="number"}if("IsString"in t){let e=n(t.Variable,a);return t.IsString&&typeof e=="string"}if("IsBoolean"in t){let e=n(t.Variable,a);return t.IsBoolean&&typeof e=="boolean"}if("IsTimestamp"in t){let e=n(t.Variable,a);return t.IsTimestamp&&/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(Z|(\+|-)\d{2}:\d{2})/.test(e)}return!1}executeState(t,a,e){return l(this,null,function*(){let r=this.stateDefinition;for(let s of r.Choices)if(this.testChoiceRule(s,t))return{stateResult:t,nextState:s.Next,isEndState:!1};if(r.Default)return{stateResult:t,nextState:r.Default,isEndState:!1};throw new Error("States.NoChoiceMatched")})}};var v=class extends S{constructor(t){super(t)}executeState(t,a,e){return l(this,null,function*(){return{stateResult:t,nextState:"",isEndState:!0}})}};var h=class extends S{constructor(t){super(t)}executeState(t,a,e){return l(this,null,function*(){return{stateResult:t,nextState:"",isEndState:!0}})}};var O=class extends c{constructor(){super("Execution aborted"),this.name="ExecutionAbortedError"}toString(){return"Execution aborted"}};import _ from"asl-validator";import G from"lodash/cloneDeep.js";var T=class{constructor(t,a){let{isValid:e,errorsText:r}=_(t,k({checkArn:!0,checkPaths:!0},a));if(!e)throw new Error(`State machine definition is invalid, see error(s) below:
|
|
4
|
+
${r(`
|
|
5
|
+
`)}`);this.definition=t,this.stateExecutors={Task:this.executeTaskState,Map:this.executeMapState,Pass:this.executePassState,Wait:this.executeWaitState,Choice:this.executeChoiceState,Succeed:this.executeSucceedState,Fail:this.executeFailState},this.validationOptions=a}run(t,a){let e=new AbortController,r=new Promise((u,m)=>{a!=null&&a.noThrowOnAbort?e.signal.addEventListener("abort",()=>u(null)):e.signal.addEventListener("abort",()=>m(new O))}),s=this.execute(t,{validationOptions:this.validationOptions,runOptions:a,abortSignal:e.signal}),o=Promise.race([s,r]);return{abort:()=>e.abort(),result:o}}execute(t,a){return l(this,null,function*(){let e=this.definition.States[this.definition.StartAt],r=this.definition.StartAt,s=G(t),o=G(t),u=null,m="",p=!1,d={};do o=this.processInput(e,o,d),{stateResult:u,nextState:m,isEndState:p}=yield this.stateExecutors[e.Type](e,o,d,r,a),u=this.processResult(e,u,s,d),s=u,o=u,e=this.definition.States[m],r=m;while(!p&&!a.abortSignal.aborted);return u})}processInput(t,a,e){let r=a;return"InputPath"in t&&(r=L(t.InputPath,r,e)),"Parameters"in t&&t.Type!=="Map"&&(r=x(t.Parameters,r,e)),r}processResult(t,a,e,r){let s=a;return"ResultSelector"in t&&(s=x(t.ResultSelector,s,r)),"ResultPath"in t&&(s=q(t.ResultPath,e,s)),"OutputPath"in t&&(s=M(t.OutputPath,s,r)),s}executeTaskState(t,a,e,r,s){return l(this,null,function*(){var p,d,f;let o=(f=(d=(p=s.runOptions)==null?void 0:p.overrides)==null?void 0:d.taskResourceLocalHandlers)==null?void 0:f[r];return yield new E(t).executeState(a,e,{overrideFn:o})})}executeMapState(t,a,e,r,s){return l(this,null,function*(){return yield new b(t).executeState(a,e,{validationOptions:s.validationOptions,runOptions:s.runOptions})})}executePassState(t,a,e,r,s){return l(this,null,function*(){return yield new N(t).executeState(a,e)})}executeWaitState(t,a,e,r,s){return l(this,null,function*(){var d,f,D;let o=(D=(f=(d=s.runOptions)==null?void 0:d.overrides)==null?void 0:f.waitTimeOverrides)==null?void 0:D[r],u=s.abortSignal;return yield new P(t).executeState(a,e,{waitTimeOverrideOption:o,abortSignal:u})})}executeChoiceState(t,a,e,r,s){return l(this,null,function*(){return yield new w(t).executeState(a,e)})}executeSucceedState(t,a,e,r,s){return l(this,null,function*(){return yield new v(t).executeState(a,e)})}executeFailState(t,a,e,r,s){return l(this,null,function*(){return yield new h(t).executeState(a,e)})}};export{O as ExecutionAbortedError,T as StateMachine};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aws-local-stepfunctions",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "Execute an AWS Step Function locally",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"aws",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
},
|
|
35
35
|
"scripts": {
|
|
36
36
|
"test": "jest",
|
|
37
|
-
"build": "
|
|
37
|
+
"build": "tsup",
|
|
38
38
|
"prettier": "prettier --write src/**/*.ts",
|
|
39
39
|
"lint": "eslint src/**/*.ts",
|
|
40
40
|
"lint:fix": "eslint src/**/*.ts --fix"
|
|
@@ -47,12 +47,12 @@
|
|
|
47
47
|
"@types/picomatch": "^2.3.0",
|
|
48
48
|
"@typescript-eslint/eslint-plugin": "^5.22.0",
|
|
49
49
|
"@typescript-eslint/parser": "^5.22.0",
|
|
50
|
-
"bunchee": "^2.2.0",
|
|
51
50
|
"eslint": "^8.14.0",
|
|
52
51
|
"eslint-config-prettier": "^8.5.0",
|
|
53
52
|
"eslint-plugin-prettier": "^4.0.0",
|
|
54
53
|
"prettier": "^2.6.2",
|
|
55
54
|
"ts-jest": "^29.0.3",
|
|
55
|
+
"tsup": "^6.6.3",
|
|
56
56
|
"typescript": "^4.6.4"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|