diff --git a/README.md b/README.md index 521ea725..b28b6762 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,10 @@ ## What are Flows? -Flows are a modern paradign for describing the logic of digital information systems that interact with individuals, -often for the purpose of (a) collecting data or (b) providing information through interactive requests. -Some common examples of this are in mobile services using voice-based or SMS-based conversations over basic mobile -phones. Flows follow the "flowchart" paradigm, consisting of actions (nodes) and connections between actions, which can +Flows are a modern paradign for describing the logic of digital information systems that interact with individuals, +often for the purpose of (a) collecting data or (b) providing information through interactive requests. +Some common examples of this are in mobile services using voice-based or SMS-based conversations over basic mobile +phones. Flows follow the "flowchart" paradigm, consisting of actions (nodes) and connections between actions, which can incorporate decision-making logic. More details and definitions of components within this ecosystem at: https://floip.gitbooks.io/flow-specification/content/ @@ -16,9 +16,9 @@ Flow Runner is a concrete implementation of the Flow Interoperability specificat ## Usage example 1: Basic -To begin and set up, we first need to create a context to run a flow with. We have exposed a helper method with sane defaults to support this called `createContextDataObjectFor(contact)`. +To begin and set up, we first need to create a context to run a flow with. We have exposed a helper method with sane defaults to support this called `createContextDataObjectFor(contact)`. -Context is the single piece of truth to the state of the current run, which must adhere to the IContext interface (source found at: src/flow-spec/IContext.ts). We've designed this tool in such a way that we can pause execution between any interactive interaction and resume exactly where we'd left off. The context object is all we need, and it's 100% JSON-serializable. +Context is the single piece of truth to the state of the current run, which must adhere to the IContext interface (source found at: src/flow-spec/IContext.ts). We've designed this tool in such a way that we can pause execution between any interactive interaction and resume exactly where we'd left off. The context object is all we need, and it's 100% JSON-serializable. Contact is any concrete implementation of the exposed interface `IContact`, which only requires three props as follows: @@ -33,7 +33,7 @@ interface IContact { Next, we create a runner instance by providing the newly generated context data object as the first parameter. -And lastly, invoke `run()`. +And lastly, invoke `run()`. ```typescript const context: IContext = createContextDataObjectFor( @@ -59,7 +59,7 @@ We can inspect how the run went through a few different artifacts: ## Usage example 2: Interactive blocks with Prompts -Some Flows contain Blocks that require interaction with the Contact (via the host application) during their execution in order to fulfill their role within the Flow. This is accomplished through an interface exposed as IPrompt (src/domain/prompt/IPrompt.ts). +Some Flows contain Blocks that require interaction with the Contact (via the host application) during their execution in order to fulfill their role within the Flow. This is accomplished through an interface exposed as IPrompt (src/domain/prompt/IPrompt.ts). When running a flow, the runner will sprint full speed ahead until reaching a block requiring interaction, at which point the runner will pause, return a cursor (containing an IPrompt), and wait until further action is taken. @@ -83,7 +83,7 @@ const {prompt}: IRichCursorInputRequired = prompt.fulfill('Jenso Ubla')! --- -The prompt's requirements are preconfigured in the corresponding block before the run is begun. An example of configuration that could take place are min/max constraints when requiring numeric input. +The prompt's requirements are preconfigured in the corresponding block before the run is begun. An example of configuration that could take place are min/max constraints when requiring numeric input. Note that at the lowest level, the `validate(input)` method is called when attempting to set a value on the prompt instance. What this means is that we'll see `PromptValidationException` s bubbled at all levels: @@ -97,16 +97,6 @@ Error: Value provided is greater than allowed at NumericPrompt.fulfill (src/domain/prompt/BasePrompt.ts:63:15) ``` -```typescript -> prompt.value = 200 - -Error: Value provided is greater than allowed - - at NumericPrompt.validate (src/domain/prompt/NumericPrompt.ts:20:13) - at NumericPrompt.set value [as value] (src/domain/prompt/BasePrompt.ts:46:27) - at NumericPrompt.fulfill (src/domain/prompt/BasePrompt.ts:63:15) -``` - ```typescript > prompt.validate(200) @@ -157,7 +147,7 @@ interface ICursor { } ``` -Sometimes we need a bit more data to pass around and some functional behaviour to work with. This is where the concept of hydration/dehydration comes in. With an `ICursor`'s corresponding `IContext`, we can swap between our primitive and rich cursor formats. +Sometimes we need a bit more data to pass around and some functional behaviour to work with. This is where the concept of hydration/dehydration comes in. With an `ICursor`'s corresponding `IContext`, we can swap between our primitive and rich cursor formats. ``` const richCursor: IRichCursor = runner.hydrateRichCursorFrom(context) @@ -251,7 +241,7 @@ It should be noted here, that after satisfying a prompt, and taking action on ru ## Usage example 4: Customization of block runners -Sometimes we need to perform some additional customization of our `IBlockRunner` collection before beginning the Flow run. +Sometimes we need to perform some additional customization of our `IBlockRunner` collection before beginning the Flow run. > Please be very wary of modifying this configuration amidst a partially completed flow run, this has the potential for reducing the predictability and consistency of resulting run data. @@ -273,7 +263,7 @@ const runnerFactoryStore: IBlockRunnerFactoryStore = createDefaultBlockRunnerSto const messageBlockRunnerFactory: TBlockRunnerFactory = runnerFactoryStore.get('MobilePrimitives\\Message') // ... and new block runners can be added -runnerFactoryStore.set('MobilePrimitives\\Message', (block, ctx) => +runnerFactoryStore.set('MobilePrimitives\\Message', (block, ctx) => new MessageBlockRunner(block as IMessageBlock, ctx)) const runner: IFlowRunner = new FlowRunner(context, runnerFactoryStore) @@ -353,7 +343,7 @@ class NumericResponseBlockRunner implements IBlockRunner { ## Usage example 5: Customization of FlowRunner via `IBehaviour` -`IBehaviour`s are our first pass at solving for extensibility within the FlowRunner itself. +`IBehaviour`s are our first pass at solving for extensibility within the FlowRunner itself. ```typescript interface IBehaviour { @@ -386,4 +376,4 @@ runner.behaviours.basicBacktracking = new BasicBacktrackingBehaviour(context) A couple examples of how we've found behaviours useful are: - traversing back through interaction history -- improving performance through caching values +- improving performance through caching values diff --git a/dist/__tests__/prompt/SelectManyPrompt.spec.js b/dist/__tests__/prompt/SelectManyPrompt.spec.js index 7c992515..9b1634c3 100644 --- a/dist/__tests__/prompt/SelectManyPrompt.spec.js +++ b/dist/__tests__/prompt/SelectManyPrompt.spec.js @@ -32,17 +32,17 @@ describe('SelectManyPrompt', () => { })); it('should raise when no selections are provided', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const selections = []; - verifyValidationThrows(prompt.validate.bind(prompt, selections), __1.ValidationException, __1.INVALID_AT_LEAST_ONE_SELECTION_REQUIRED); + verifyValidationThrows(prompt.validate.bind(prompt, selections), __1.PromptValidationException, __1.INVALID_AT_LEAST_ONE_SELECTION_REQUIRED); })); }); it('should return true when all selections are valid', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const selections = ['choice-A', 'choice-D']; - expect(prompt.validate(selections)).toBe(true); + expect(() => prompt.validate(selections)).not.toThrow(); })); it('should raise when some selections are invalid when isRequired is false', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { prompt.config.isResponseRequired = false; const selections = ['choice-A', 'choice-B', 'key-not-in-prompt-config', 'choice-C']; - expect(prompt.validate(selections)).toBe(true); + expect(() => prompt.validate(selections)).not.toThrow(); })); }); }); diff --git a/dist/__tests__/prompt/SelectManyPrompt.spec.js.map b/dist/__tests__/prompt/SelectManyPrompt.spec.js.map index 69d19f17..f6617fab 100644 --- a/dist/__tests__/prompt/SelectManyPrompt.spec.js.map +++ b/dist/__tests__/prompt/SelectManyPrompt.spec.js.map @@ -1 +1 @@ -{"version":3,"file":"SelectManyPrompt.spec.js","sourceRoot":"","sources":["../../../src/__tests__/prompt/SelectManyPrompt.spec.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"SelectManyPrompt.spec.js","sourceRoot":"","sources":["../../../src/__tests__/prompt/SelectManyPrompt.spec.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/domain/FlowRunner.d.ts.map b/dist/domain/FlowRunner.d.ts.map index 54545bb9..164ce658 100644 --- a/dist/domain/FlowRunner.d.ts.map +++ b/dist/domain/FlowRunner.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"FlowRunner.d.ts","sourceRoot":"","sources":["../../src/domain/FlowRunner.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"FlowRunner.d.ts","sourceRoot":"","sources":["../../src/domain/FlowRunner.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAC,0BAA0B,EAAS,MAAM,KAAK,CAAA;AAEtD,OAAO,EAQL,UAAU,EACV,qBAAqB,EACrB,MAAM,EACN,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,wBAAwB,EAExB,QAAQ,EAER,eAAe,EACf,kBAAkB,EAClB,OAAO,EAEP,WAAW,EACX,YAAY,EAEZ,aAAa,EAKb,aAAa,EACb,0BAA0B,EAC1B,WAAW,EACX,wBAAwB,EAWxB,iBAAiB,EAOjB,mBAAmB,EACnB,cAAc,EAEf,MAAM,IAAI,CAAA;AAEX,qBAAa,uBAAwB,SAAQ,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAE,YAAW,wBAAwB;CAAG;AAEpH,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;CAC/D;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAA;CACnG;AAUD,eAAO,MAAM,2BAA2B,UAAkC,CAAA;AAK1E,wBAAgB,6BAA6B,IAAI,wBAAwB,CAcxE;AAOD,qBAAa,UAAW,YAAW,WAAW,EAAE,cAAc,EAAE,cAAc;IAErE,OAAO,EAAE,QAAQ,CAAA;IAGjB,kBAAkB,EAAE,wBAAwB,CAAkC;IAGrF,SAAS,CAAC,WAAW,EAAE,YAAY,CAA0B;IAGtD,UAAU,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;KAAC,CAAK;IAE5C,eAAe,EAAE,eAAe,CAAiB;gBAGtD,OAAO,EAAE,QAAQ,EACjB,kBAAkB,GAAE,wBAA0D,EAC9E,WAAW,GAAE,YAAsC,EACnD,UAAU,GAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;KAAM,EAC5C,eAAe,GAAE,eAAgC;IAgBnD,oBAAoB,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,GAAG,IAAI;IAepE,UAAU,IAAI,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAoBpD,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,GAAG,IAAI,kBAAkB;IAUvD,OAAO,IAAI,OAAO;IAkBlB,MAAM,IAAI,OAAO;IAYX,GAAG,IAAI,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC;IAa1D,kBAAkB,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO;IAgB1C,2BAA2B,CACzB,EAAC,IAAI,EAAE,OAAO,EAAC,EAAE,iBAAiB,EAClC,EAAC,IAAI,EAAE,MAAM,EAAE,EAAC,MAAM,EAAC,EAAC,EAAE,aAAa,EACvC,OAAO,GAAE,QAAuB,GAC/B,IAAI;IA8BP,4BAA4B,CAC1B,OAAO,EAAE,0BAA0B,EACnC,OAAO,EAAE,0BAA0B,EACnC,OAAO,GAAE,QAAuB,GAC/B,IAAI;IAaP,wBAAwB,CAAC,OAAO,GAAE,QAAuB,GAAG,0BAA0B,GAAG,SAAS;IAiB5F,yBAAyB,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC;IAqDvG,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,GAAE,IAAiB,GAAG,IAAI;IAY7D,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,WAAW,GAAE,IAAiB,GAAG,iBAAiB;IAcnI,wBAAwB,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,GAAE,IAAiB,GAAG,iBAAiB;IAwB1F,eAAe,CAAC,UAAU,EAAE,WAAW,GAAG,OAAO;IAcjD,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,GAAG,WAAW;IAerD,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAYvI,yBAAyB,CAAC,UAAU,EAAE,WAAW,GAAG,UAAU,IAAI,wBAAwB;IAUpF,gBAAgB,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAoCnF,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,YAAY;IAgB1D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;IAapE,mBAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,GAAG,IAAI;IAI3D,wCAAwC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;IA4BlG,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS;IAoCjE,OAAO,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS;IAI1C,iCAAiC,CAAC,EAAC,OAAO,EAAC,EAAE,iBAAiB,EAAE,GAAG,EAAE,QAAQ,GAAG,UAAU;IAU1F,4BAA4B,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS;IAoB/D,iBAAiB,CAAC,EAAC,OAAO,EAAE,cAAc,EAAC,EAAE,iBAAiB,EAAE,GAAG,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS;IA2BlG,OAAO,CAAC,yBAAyB;IAwB3B,0BAA0B,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1G,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAYxG,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,cAAc,GAAG,SAAS;CAY5G;AAMD,yBAAiB,UAAU,CAAC;IAE1B,MAAa,OAAO;QAClB,OAAO,CAAC,EAAE,QAAQ,CAAA;QAClB,kBAAkB,EAAE,uBAAuB,CAAkC;QAC7E,WAAW,EAAE,YAAY,CAA0B;QACnD,UAAU,EAAE;YAAC,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;SAAC,CAAK;QAC5C,eAAe,EAAE,eAAe,CAAiB;QAEjD,UAAU,CAAC,OAAO,EAAE,QAAQ,GAAG,UAAU,CAAC,OAAO;QAKjD,cAAc,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,uBAAuB,GAAG,UAAU,CAAC,OAAO;QAKpG,cAAc,CAAC,WAAW,EAAE,YAAY,GAAG,UAAU,CAAC,OAAO;QAK7D,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,GAAG,UAAU,CAAC,OAAO;QAK7E,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO;QAK5F,KAAK,IAAI,UAAU;KAIpB;CACF"} \ No newline at end of file diff --git a/dist/domain/FlowRunner.js b/dist/domain/FlowRunner.js index 90f59edd..24b38a62 100644 --- a/dist/domain/FlowRunner.js +++ b/dist/domain/FlowRunner.js @@ -95,13 +95,7 @@ class FlowRunner { return true; } const { prompt } = this.hydrateRichCursorFrom(ctx); - try { - prompt.validate(prompt.value); - return false; - } - catch (e) { - return true; - } + return !prompt.isValid(); } cacheInteractionByBlockName({ uuid, entryAt }, { name, config: { prompt } }, context = this.context) { if (!('blockInteractionsByBlockName' in this.context.sessionVars)) { diff --git a/dist/domain/FlowRunner.js.map b/dist/domain/FlowRunner.js.map index f59f9d9c..5a4b393d 100644 --- a/dist/domain/FlowRunner.js.map +++ b/dist/domain/FlowRunner.js.map @@ -1 +1 @@ -{"version":3,"file":"FlowRunner.js","sourceRoot":"","sources":["../../src/domain/FlowRunner.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"FlowRunner.js","sourceRoot":"","sources":["../../src/domain/FlowRunner.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/domain/exceptions/InvalidChoiceException.d.ts b/dist/domain/exceptions/InvalidChoiceException.d.ts index 838b3b80..deb19396 100644 --- a/dist/domain/exceptions/InvalidChoiceException.d.ts +++ b/dist/domain/exceptions/InvalidChoiceException.d.ts @@ -1,4 +1,5 @@ -export declare class InvalidChoiceException extends Error { +import { PromptValidationException } from './PromptValidationException'; +export declare class InvalidChoiceException extends PromptValidationException { choices?: ChoiceType[] | undefined; constructor(message?: string, choices?: ChoiceType[] | undefined); } diff --git a/dist/domain/exceptions/InvalidChoiceException.d.ts.map b/dist/domain/exceptions/InvalidChoiceException.d.ts.map index b1aca5c9..a55fdb9b 100644 --- a/dist/domain/exceptions/InvalidChoiceException.d.ts.map +++ b/dist/domain/exceptions/InvalidChoiceException.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"InvalidChoiceException.d.ts","sourceRoot":"","sources":["../../../src/domain/exceptions/InvalidChoiceException.ts"],"names":[],"mappings":"AAsBA,qBAAa,sBAAsB,CAAC,UAAU,CAAE,SAAQ,KAAK;IACtB,OAAO,CAAC;gBAAjC,OAAO,CAAC,EAAE,MAAM,EAAS,OAAO,CAAC,0BAAc;CAG5D"} \ No newline at end of file +{"version":3,"file":"InvalidChoiceException.d.ts","sourceRoot":"","sources":["../../../src/domain/exceptions/InvalidChoiceException.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,yBAAyB,EAAC,MAAM,6BAA6B,CAAA;AAKrE,qBAAa,sBAAsB,CAAC,UAAU,CAAE,SAAQ,yBAAyB;IAC1C,OAAO,CAAC;gBAAjC,OAAO,CAAC,EAAE,MAAM,EAAS,OAAO,CAAC,0BAAc;CAG5D"} \ No newline at end of file diff --git a/dist/domain/exceptions/InvalidChoiceException.js b/dist/domain/exceptions/InvalidChoiceException.js index 53c510ca..8571b308 100644 --- a/dist/domain/exceptions/InvalidChoiceException.js +++ b/dist/domain/exceptions/InvalidChoiceException.js @@ -1,7 +1,8 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.InvalidChoiceException = void 0; -class InvalidChoiceException extends Error { +const PromptValidationException_1 = require("./PromptValidationException"); +class InvalidChoiceException extends PromptValidationException_1.PromptValidationException { constructor(message, choices) { super(message); this.choices = choices; diff --git a/dist/domain/exceptions/InvalidChoiceException.js.map b/dist/domain/exceptions/InvalidChoiceException.js.map index d13ed114..d58992b7 100644 --- a/dist/domain/exceptions/InvalidChoiceException.js.map +++ b/dist/domain/exceptions/InvalidChoiceException.js.map @@ -1 +1 @@ -{"version":3,"file":"InvalidChoiceException.js","sourceRoot":"","sources":["../../../src/domain/exceptions/InvalidChoiceException.ts"],"names":[],"mappings":";;;AAsBA,MAAa,sBAAmC,SAAQ,KAAK;IAC3D,YAAY,OAAgB,EAAS,OAAsB;QACzD,KAAK,CAAC,OAAO,CAAC,CAAA;QADqB,YAAO,GAAP,OAAO,CAAe;IAE3D,CAAC;CACF;AAJD,wDAIC"} \ No newline at end of file +{"version":3,"file":"InvalidChoiceException.js","sourceRoot":"","sources":["../../../src/domain/exceptions/InvalidChoiceException.ts"],"names":[],"mappings":";;;AAmBA,2EAAqE;AAKrE,MAAa,sBAAmC,SAAQ,qDAAyB;IAC/E,YAAY,OAAgB,EAAS,OAAsB;QACzD,KAAK,CAAC,OAAO,CAAC,CAAA;QADqB,YAAO,GAAP,OAAO,CAAe;IAE3D,CAAC;CACF;AAJD,wDAIC"} \ No newline at end of file diff --git a/dist/domain/prompt/AdvancedSelectOnePrompt.d.ts b/dist/domain/prompt/AdvancedSelectOnePrompt.d.ts index 252c0e5e..eaebe23e 100644 --- a/dist/domain/prompt/AdvancedSelectOnePrompt.d.ts +++ b/dist/domain/prompt/AdvancedSelectOnePrompt.d.ts @@ -1,6 +1,6 @@ import { BasePrompt, IAdvancedSelectOne, IAdvancedSelectOnePromptConfig } from '../..'; export declare const ADVANCED_SELECT_ONE_PROMPT_KEY = "AdvancedSelectOne"; export declare class AdvancedSelectOnePrompt extends BasePrompt { - validate(selectedRow?: IAdvancedSelectOne[], choiceRows?: string[][]): boolean; + validate(selectedRow?: IAdvancedSelectOne[], choiceRows?: string[][]): void; } //# sourceMappingURL=AdvancedSelectOnePrompt.d.ts.map \ No newline at end of file diff --git a/dist/domain/prompt/AdvancedSelectOnePrompt.d.ts.map b/dist/domain/prompt/AdvancedSelectOnePrompt.d.ts.map index 1ec37539..53590247 100644 --- a/dist/domain/prompt/AdvancedSelectOnePrompt.d.ts.map +++ b/dist/domain/prompt/AdvancedSelectOnePrompt.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"AdvancedSelectOnePrompt.d.ts","sourceRoot":"","sources":["../../../src/domain/prompt/AdvancedSelectOnePrompt.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAgB,UAAU,EAAE,kBAAkB,EAAE,8BAA8B,EAAsB,MAAM,OAAO,CAAA;AAExH,eAAO,MAAM,8BAA8B,sBAAsB,CAAA;AAEjE,qBAAa,uBAAwB,SAAQ,UAAU,CAAC,8BAA8B,CAAC;IACrF,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO;CA2B/E"} \ No newline at end of file +{"version":3,"file":"AdvancedSelectOnePrompt.d.ts","sourceRoot":"","sources":["../../../src/domain/prompt/AdvancedSelectOnePrompt.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAgB,UAAU,EAAE,kBAAkB,EAAE,8BAA8B,EAA4B,MAAM,OAAO,CAAA;AAE9H,eAAO,MAAM,8BAA8B,sBAAsB,CAAA;AAEjE,qBAAa,uBAAwB,SAAQ,UAAU,CAAC,8BAA8B,CAAC;IACrF,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI;CAiC5E"} \ No newline at end of file diff --git a/dist/domain/prompt/AdvancedSelectOnePrompt.js b/dist/domain/prompt/AdvancedSelectOnePrompt.js index 5a783c98..58544e16 100644 --- a/dist/domain/prompt/AdvancedSelectOnePrompt.js +++ b/dist/domain/prompt/AdvancedSelectOnePrompt.js @@ -6,22 +6,23 @@ exports.ADVANCED_SELECT_ONE_PROMPT_KEY = 'AdvancedSelectOne'; class AdvancedSelectOnePrompt extends __1.BasePrompt { validate(selectedRow, choiceRows) { const { choiceRowFields, isResponseRequired } = this.config; - __1.assertNotNull(choiceRows, () => 'choiceRows must be non-null', message => new __1.ValidationException(message)); + __1.assertNotNull(selectedRow, () => 'Value provided is null or undefined', message => new __1.PromptValidationException(message)); + __1.assertNotNull(choiceRows, () => 'choiceRows must be non-null', message => new __1.PromptValidationException(message)); if (isResponseRequired) { const hasSelectedRow = choiceRows.some(row => selectedRow === null || selectedRow === void 0 ? void 0 : selectedRow.every(selection => { const columnIndex = choiceRowFields.indexOf(selection.name); if (columnIndex < 0) { - throw new __1.ValidationException(`Failed to find a column called: ${selection.name}`); + throw new __1.PromptValidationException(`Failed to find a column called: ${selection.name}`); } else { return selection.value === row[columnIndex]; } })); if (!hasSelectedRow) { - throw new __1.ValidationException(`Failed to find the given row: ${selectedRow}`); + throw new __1.PromptValidationException(`Failed to find the given row: ${selectedRow}`); } } - return true; + return; } } exports.AdvancedSelectOnePrompt = AdvancedSelectOnePrompt; diff --git a/dist/domain/prompt/AdvancedSelectOnePrompt.js.map b/dist/domain/prompt/AdvancedSelectOnePrompt.js.map index d9532650..56064daf 100644 --- a/dist/domain/prompt/AdvancedSelectOnePrompt.js.map +++ b/dist/domain/prompt/AdvancedSelectOnePrompt.js.map @@ -1 +1 @@ -{"version":3,"file":"AdvancedSelectOnePrompt.js","sourceRoot":"","sources":["../../../src/domain/prompt/AdvancedSelectOnePrompt.ts"],"names":[],"mappings":";;;AAmBA,6BAAwH;AAE3G,QAAA,8BAA8B,GAAG,mBAAmB,CAAA;AAEjE,MAAa,uBAAwB,SAAQ,cAA0C;IACrF,QAAQ,CAAC,WAAkC,EAAE,UAAuB;QAClE,MAAM,EAAC,eAAe,EAAE,kBAAkB,EAAC,GAAG,IAAI,CAAC,MAAM,CAAA;QAEzD,iBAAa,CACX,UAAU,EACV,GAAG,EAAE,CAAC,6BAA6B,EACnC,OAAO,CAAC,EAAE,CAAC,IAAI,uBAAmB,CAAC,OAAO,CAAC,CAC5C,CAAA;QAED,IAAI,kBAAkB,EAAE;YACtB,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC3C,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,CAAC,SAAS,CAAC,EAAE;gBAC7B,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;gBAC3D,IAAI,WAAW,GAAG,CAAC,EAAE;oBACnB,MAAM,IAAI,uBAAmB,CAAC,mCAAmC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;iBACnF;qBAAM;oBACL,OAAO,SAAS,CAAC,KAAK,KAAK,GAAG,CAAC,WAAW,CAAC,CAAA;iBAC5C;YACH,CAAC,CAAC,CACH,CAAA;YACD,IAAI,CAAC,cAAc,EAAE;gBACnB,MAAM,IAAI,uBAAmB,CAAC,iCAAiC,WAAW,EAAE,CAAC,CAAA;aAC9E;SACF;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AA5BD,0DA4BC"} \ No newline at end of file +{"version":3,"file":"AdvancedSelectOnePrompt.js","sourceRoot":"","sources":["../../../src/domain/prompt/AdvancedSelectOnePrompt.ts"],"names":[],"mappings":";;;AAmBA,6BAA8H;AAEjH,QAAA,8BAA8B,GAAG,mBAAmB,CAAA;AAEjE,MAAa,uBAAwB,SAAQ,cAA0C;IACrF,QAAQ,CAAC,WAAkC,EAAE,UAAuB;QAClE,MAAM,EAAC,eAAe,EAAE,kBAAkB,EAAC,GAAG,IAAI,CAAC,MAAM,CAAA;QAEzD,iBAAa,CACX,WAAW,EACX,GAAG,EAAE,CAAC,qCAAqC,EAC3C,OAAO,CAAC,EAAE,CAAC,IAAI,6BAAyB,CAAC,OAAO,CAAC,CAClD,CAAA;QAED,iBAAa,CACX,UAAU,EACV,GAAG,EAAE,CAAC,6BAA6B,EACnC,OAAO,CAAC,EAAE,CAAC,IAAI,6BAAyB,CAAC,OAAO,CAAC,CAClD,CAAA;QAED,IAAI,kBAAkB,EAAE;YACtB,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC3C,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,CAAC,SAAS,CAAC,EAAE;gBAC7B,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;gBAC3D,IAAI,WAAW,GAAG,CAAC,EAAE;oBACnB,MAAM,IAAI,6BAAyB,CAAC,mCAAmC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;iBACzF;qBAAM;oBACL,OAAO,SAAS,CAAC,KAAK,KAAK,GAAG,CAAC,WAAW,CAAC,CAAA;iBAC5C;YACH,CAAC,CAAC,CACH,CAAA;YACD,IAAI,CAAC,cAAc,EAAE;gBACnB,MAAM,IAAI,6BAAyB,CAAC,iCAAiC,WAAW,EAAE,CAAC,CAAA;aACpF;SACF;QAED,OAAM;IACR,CAAC;CACF;AAlCD,0DAkCC"} \ No newline at end of file diff --git a/dist/domain/prompt/BasePrompt.d.ts b/dist/domain/prompt/BasePrompt.d.ts index c85e7be8..e55deaca 100644 --- a/dist/domain/prompt/BasePrompt.d.ts +++ b/dist/domain/prompt/BasePrompt.d.ts @@ -12,6 +12,6 @@ export declare abstract class BasePrompt> im get block(): IBlock | undefined; fulfill(val: T['value'] | undefined): Promise; isValid(): boolean; - abstract validate(val?: T['value']): boolean; + abstract validate(val?: T['value']): void; } //# sourceMappingURL=BasePrompt.d.ts.map \ No newline at end of file diff --git a/dist/domain/prompt/BasePrompt.d.ts.map b/dist/domain/prompt/BasePrompt.d.ts.map index 9e3dc4bf..d297bdad 100644 --- a/dist/domain/prompt/BasePrompt.d.ts.map +++ b/dist/domain/prompt/BasePrompt.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"BasePrompt.d.ts","sourceRoot":"","sources":["../../../src/domain/prompt/BasePrompt.ts"],"names":[],"mappings":"AAkBA,OAAO,EAIL,MAAM,EACN,WAAW,EACX,OAAO,EACP,aAAa,EACb,wBAAwB,EACxB,yBAAyB,EAE1B,MAAM,OAAO,CAAA;AAEd,oBAAY,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;AAMxD,8BAAsB,UAAU,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,YAAW,OAAO,CAAC,CAAC,CAAC;IAGtE,MAAM,EAAE,CAAC;IAAS,aAAa,EAAE,MAAM;IAAS,MAAM,EAAE,WAAW;IAFtF,KAAK,EAAE,yBAAyB,GAAG,IAAI,CAAO;gBAE3B,MAAM,EAAE,CAAC,EAAS,aAAa,EAAE,MAAM,EAAS,MAAM,EAAE,WAAW;IAKtF,IAAI,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAGtB;IASD,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,EAYxB;IAGD,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAc9B;IAEK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC;IASlF,OAAO,IAAI,OAAO;IAYzB,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,OAAO;CAC7C"} \ No newline at end of file +{"version":3,"file":"BasePrompt.d.ts","sourceRoot":"","sources":["../../../src/domain/prompt/BasePrompt.ts"],"names":[],"mappings":"AAkBA,OAAO,EAIL,MAAM,EACN,WAAW,EACX,OAAO,EACP,aAAa,EACb,wBAAwB,EACxB,yBAAyB,EAE1B,MAAM,OAAO,CAAA;AAEd,oBAAY,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;AAMxD,8BAAsB,UAAU,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,YAAW,OAAO,CAAC,CAAC,CAAC;IAGtE,MAAM,EAAE,CAAC;IAAS,aAAa,EAAE,MAAM;IAAS,MAAM,EAAE,WAAW;IAFtF,KAAK,EAAE,yBAAyB,GAAG,IAAI,CAAO;gBAE3B,MAAM,EAAE,CAAC,EAAS,aAAa,EAAE,MAAM,EAAS,MAAM,EAAE,WAAW;IAKtF,IAAI,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAGtB;IAQD,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,EAaxB;IAGD,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAc9B;IAEK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC;IAUlF,OAAO,IAAI,OAAO;IAczB,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI;CAC1C"} \ No newline at end of file diff --git a/dist/domain/prompt/BasePrompt.js b/dist/domain/prompt/BasePrompt.js index c2877091..b4abec05 100644 --- a/dist/domain/prompt/BasePrompt.js +++ b/dist/domain/prompt/BasePrompt.js @@ -14,6 +14,7 @@ class BasePrompt { return this.config.value; } set value(val) { + this.error = null; try { this.validate(val); } @@ -52,7 +53,8 @@ class BasePrompt { } isValid() { try { - return this.validate(this.config.value); + this.validate(this.config.value); + return true; } catch (e) { return false; diff --git a/dist/domain/prompt/BasePrompt.js.map b/dist/domain/prompt/BasePrompt.js.map index 6ea1d1fb..a809758f 100644 --- a/dist/domain/prompt/BasePrompt.js.map +++ b/dist/domain/prompt/BasePrompt.js.map @@ -1 +1 @@ -{"version":3,"file":"BasePrompt.js","sourceRoot":"","sources":["../../../src/domain/prompt/BasePrompt.ts"],"names":[],"mappings":";;;;AAkBA,6BAWc;AAQd,MAAsB,UAAU;IAG9B,YAAmB,MAAS,EAAS,aAAqB,EAAS,MAAmB;QAAnE,WAAM,GAAN,MAAM,CAAG;QAAS,kBAAa,GAAb,aAAa,CAAQ;QAAS,WAAM,GAAN,MAAM,CAAa;QAFtF,UAAK,GAAqC,IAAI,CAAA;IAI9C,CAAC;IAGD,IAAI,KAAK;QAEP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAA;IAC1B,CAAC;IASD,IAAI,KAAK,CAAC,GAAe;QACvB,IAAI;YACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;SACnB;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,CAAC,CAAC,YAAY,6BAAyB,CAAC,EAAE;gBAC7C,MAAM,CAAC,CAAA;aACR;YAED,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;SACf;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAA;IACzB,CAAC;IAGD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAA;IACjC,CAAC;IAED,IAAI,KAAK;QACP,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;QAC/B,MAAM,IAAI,GAAG,uBAAmB,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA;QACzD,MAAM,IAAI,GAAG,gBAAY,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAE3C,IAAI;YACF,OAAO,iBAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;SACzC;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,CAAC,CAAC,YAAY,uBAAmB,CAAC,EAAE;gBACvC,MAAM,CAAC,CAAA;aACR;YAED,OAAM;SACP;IACH,CAAC;IAEK,OAAO,CAAC,GAA2B;;YAEvC,IAAI,GAAG,KAAK,SAAS,EAAE;gBACrB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAA;aACjB;YAED,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;QAC1B,CAAC;KAAA;IAEM,OAAO;QACZ,IAAI;YACF,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;SACxC;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,KAAK,CAAA;SACb;IACH,CAAC;CAOF;AA7ED,gCA6EC"} \ No newline at end of file +{"version":3,"file":"BasePrompt.js","sourceRoot":"","sources":["../../../src/domain/prompt/BasePrompt.ts"],"names":[],"mappings":";;;;AAkBA,6BAWc;AAQd,MAAsB,UAAU;IAG9B,YAAmB,MAAS,EAAS,aAAqB,EAAS,MAAmB;QAAnE,WAAM,GAAN,MAAM,CAAG;QAAS,kBAAa,GAAb,aAAa,CAAQ;QAAS,WAAM,GAAN,MAAM,CAAa;QAFtF,UAAK,GAAqC,IAAI,CAAA;IAI9C,CAAC;IAGD,IAAI,KAAK;QAEP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAA;IAC1B,CAAC;IAQD,IAAI,KAAK,CAAC,GAAe;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI;YACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;SACnB;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,CAAC,CAAC,YAAY,6BAAyB,CAAC,EAAE;gBAC7C,MAAM,CAAC,CAAA;aACR;YAED,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;SACf;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAA;IACzB,CAAC;IAGD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAA;IACjC,CAAC;IAED,IAAI,KAAK;QACP,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;QAC/B,MAAM,IAAI,GAAG,uBAAmB,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA;QACzD,MAAM,IAAI,GAAG,gBAAY,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAE3C,IAAI;YACF,OAAO,iBAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;SACzC;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,CAAC,CAAC,YAAY,uBAAmB,CAAC,EAAE;gBACvC,MAAM,CAAC,CAAA;aACR;YAED,OAAM;SACP;IACH,CAAC;IAEK,OAAO,CAAC,GAA2B;;YAGvC,IAAI,GAAG,KAAK,SAAS,EAAE;gBACrB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAA;aACjB;YAED,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;QAC1B,CAAC;KAAA;IAEM,OAAO;QACZ,IAAI;YACF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAChC,OAAO,IAAI,CAAA;SACZ;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,KAAK,CAAA;SACb;IACH,CAAC;CAQF;AAhFD,gCAgFC"} \ No newline at end of file diff --git a/dist/domain/prompt/IPrompt.d.ts b/dist/domain/prompt/IPrompt.d.ts index 1ffa2497..332d6347 100644 --- a/dist/domain/prompt/IPrompt.d.ts +++ b/dist/domain/prompt/IPrompt.d.ts @@ -7,7 +7,7 @@ export interface IPrompt; } export interface IPromptConfig extends IBasePromptConfig { diff --git a/dist/domain/prompt/IPrompt.d.ts.map b/dist/domain/prompt/IPrompt.d.ts.map index 04417813..64784780 100644 --- a/dist/domain/prompt/IPrompt.d.ts.map +++ b/dist/domain/prompt/IPrompt.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"IPrompt.d.ts","sourceRoot":"","sources":["../../../src/domain/prompt/IPrompt.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,wBAAwB,EAAE,yBAAyB,EAAC,MAAM,OAAO,CAAA;AAM1G,MAAM,WAAW,OAAO,CAAC,gBAAgB,SAAS,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACxF,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,gBAAgB,CAAA;IACxB,MAAM,EAAE,WAAW,CAAA;IAEnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAEhC,KAAK,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAGvC,OAAO,IAAI,OAAO,CAAA;IAGlB,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;IAGjD,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAAA;CACvF;AAMD,MAAM,WAAW,aAAa,CAAC,CAAC,CAAE,SAAQ,iBAAiB;IACzD,IAAI,EAAE,MAAM,CAAA;IACZ,kBAAkB,EAAE,OAAO,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,CAAC,CAAA;CACV;AAGD,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,KAAI,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;CAC5E"} \ No newline at end of file +{"version":3,"file":"IPrompt.d.ts","sourceRoot":"","sources":["../../../src/domain/prompt/IPrompt.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,wBAAwB,EAAE,yBAAyB,EAAC,MAAM,OAAO,CAAA;AAM1G,MAAM,WAAW,OAAO,CAAC,gBAAgB,SAAS,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACxF,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,gBAAgB,CAAA;IACxB,MAAM,EAAE,WAAW,CAAA;IAEnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAEhC,KAAK,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAGvC,OAAO,IAAI,OAAO,CAAA;IAGlB,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;IAG9C,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAAA;CACvF;AAMD,MAAM,WAAW,aAAa,CAAC,CAAC,CAAE,SAAQ,iBAAiB;IACzD,IAAI,EAAE,MAAM,CAAA;IACZ,kBAAkB,EAAE,OAAO,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,CAAC,CAAA;CACV;AAGD,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,KAAK,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;CAC7E"} \ No newline at end of file diff --git a/dist/domain/prompt/MessagePrompt.d.ts b/dist/domain/prompt/MessagePrompt.d.ts index 4a37b79a..072b7b72 100644 --- a/dist/domain/prompt/MessagePrompt.d.ts +++ b/dist/domain/prompt/MessagePrompt.d.ts @@ -1,6 +1,6 @@ import { BasePrompt, IMessagePromptConfig } from '../..'; export declare const MESSAGE_PROMPT_KEY = "Message"; export declare class MessagePrompt extends BasePrompt { - validate(): boolean; + validate(): void; } //# sourceMappingURL=MessagePrompt.d.ts.map \ No newline at end of file diff --git a/dist/domain/prompt/MessagePrompt.d.ts.map b/dist/domain/prompt/MessagePrompt.d.ts.map index c71d9458..bffa3f7c 100644 --- a/dist/domain/prompt/MessagePrompt.d.ts.map +++ b/dist/domain/prompt/MessagePrompt.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MessagePrompt.d.ts","sourceRoot":"","sources":["../../../src/domain/prompt/MessagePrompt.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,UAAU,EAAE,oBAAoB,EAAC,MAAM,OAAO,CAAA;AAEtD,eAAO,MAAM,kBAAkB,YAAY,CAAA;AAK3C,qBAAa,aAAc,SAAQ,UAAU,CAAC,oBAAoB,CAAC;IACjE,QAAQ,IAAI,OAAO;CAGpB"} \ No newline at end of file +{"version":3,"file":"MessagePrompt.d.ts","sourceRoot":"","sources":["../../../src/domain/prompt/MessagePrompt.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,UAAU,EAAE,oBAAoB,EAAC,MAAM,OAAO,CAAA;AAEtD,eAAO,MAAM,kBAAkB,YAAY,CAAA;AAK3C,qBAAa,aAAc,SAAQ,UAAU,CAAC,oBAAoB,CAAC;IACjE,QAAQ,IAAI,IAAI;CAGjB"} \ No newline at end of file diff --git a/dist/domain/prompt/MessagePrompt.js b/dist/domain/prompt/MessagePrompt.js index ca8081ca..771012f4 100644 --- a/dist/domain/prompt/MessagePrompt.js +++ b/dist/domain/prompt/MessagePrompt.js @@ -5,7 +5,7 @@ const __1 = require("../.."); exports.MESSAGE_PROMPT_KEY = 'Message'; class MessagePrompt extends __1.BasePrompt { validate() { - return true; + return; } } exports.MessagePrompt = MessagePrompt; diff --git a/dist/domain/prompt/MessagePrompt.js.map b/dist/domain/prompt/MessagePrompt.js.map index a3ad59e6..664781be 100644 --- a/dist/domain/prompt/MessagePrompt.js.map +++ b/dist/domain/prompt/MessagePrompt.js.map @@ -1 +1 @@ -{"version":3,"file":"MessagePrompt.js","sourceRoot":"","sources":["../../../src/domain/prompt/MessagePrompt.ts"],"names":[],"mappings":";;;AAmBA,6BAAsD;AAEzC,QAAA,kBAAkB,GAAG,SAAS,CAAA;AAK3C,MAAa,aAAc,SAAQ,cAAgC;IACjE,QAAQ;QACN,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAJD,sCAIC"} \ No newline at end of file +{"version":3,"file":"MessagePrompt.js","sourceRoot":"","sources":["../../../src/domain/prompt/MessagePrompt.ts"],"names":[],"mappings":";;;AAmBA,6BAAsD;AAEzC,QAAA,kBAAkB,GAAG,SAAS,CAAA;AAK3C,MAAa,aAAc,SAAQ,cAAgC;IACjE,QAAQ;QACN,OAAM;IACR,CAAC;CACF;AAJD,sCAIC"} \ No newline at end of file diff --git a/dist/domain/prompt/NumericPrompt.d.ts b/dist/domain/prompt/NumericPrompt.d.ts index 1ef036c4..f725ec90 100644 --- a/dist/domain/prompt/NumericPrompt.d.ts +++ b/dist/domain/prompt/NumericPrompt.d.ts @@ -1,7 +1,6 @@ import { BasePrompt, INumericPromptConfig } from '../..'; export declare const NUMERIC_PROMPT_KEY = "Numeric"; export declare class NumericPrompt extends BasePrompt { - static readonly promptKey = "Numeric"; - validate(val: number): boolean; + validate(val: INumericPromptConfig['value']): void; } //# sourceMappingURL=NumericPrompt.d.ts.map \ No newline at end of file diff --git a/dist/domain/prompt/NumericPrompt.d.ts.map b/dist/domain/prompt/NumericPrompt.d.ts.map index 591ad7b3..de623488 100644 --- a/dist/domain/prompt/NumericPrompt.d.ts.map +++ b/dist/domain/prompt/NumericPrompt.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"NumericPrompt.d.ts","sourceRoot":"","sources":["../../../src/domain/prompt/NumericPrompt.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,UAAU,EAAE,oBAAoB,EAAsB,MAAM,OAAO,CAAA;AAE3E,eAAO,MAAM,kBAAkB,YAAY,CAAA;AAM3C,qBAAa,aAAc,SAAQ,UAAU,CAAC,oBAAoB,CAAC;IACjE,MAAM,CAAC,QAAQ,CAAC,SAAS,aAAY;IAErC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAiB/B"} \ No newline at end of file +{"version":3,"file":"NumericPrompt.d.ts","sourceRoot":"","sources":["../../../src/domain/prompt/NumericPrompt.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,UAAU,EAAE,oBAAoB,EAA4B,MAAM,OAAO,CAAA;AAGjF,eAAO,MAAM,kBAAkB,YAAY,CAAA;AAM3C,qBAAa,aAAc,SAAQ,UAAU,CAAC,oBAAoB,CAAC;IACjE,QAAQ,CAAC,GAAG,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,IAAI;CAiBnD"} \ No newline at end of file diff --git a/dist/domain/prompt/NumericPrompt.js b/dist/domain/prompt/NumericPrompt.js index 369892b9..42861f42 100644 --- a/dist/domain/prompt/NumericPrompt.js +++ b/dist/domain/prompt/NumericPrompt.js @@ -2,22 +2,22 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.NumericPrompt = exports.NUMERIC_PROMPT_KEY = void 0; const __1 = require("../.."); +const lodash_1 = require("lodash"); exports.NUMERIC_PROMPT_KEY = 'Numeric'; class NumericPrompt extends __1.BasePrompt { validate(val) { - if (Number.isNaN(val) || val === null) { - return false; + if (val == null || !lodash_1.isFinite(val)) { + throw new __1.PromptValidationException('Value provided is not a number'); } const { min, max } = this.config; if (min != null && val < min) { - throw new __1.ValidationException('Value provided is less than allowed'); + throw new __1.PromptValidationException('Value provided is less than allowed'); } if (max != null && val > max) { - throw new __1.ValidationException('Value provided is greater than allowed'); + throw new __1.PromptValidationException('Value provided is greater than allowed'); } - return true; + return; } } exports.NumericPrompt = NumericPrompt; -NumericPrompt.promptKey = 'Numeric'; //# sourceMappingURL=NumericPrompt.js.map \ No newline at end of file diff --git a/dist/domain/prompt/NumericPrompt.js.map b/dist/domain/prompt/NumericPrompt.js.map index 6e2154f9..082c3867 100644 --- a/dist/domain/prompt/NumericPrompt.js.map +++ b/dist/domain/prompt/NumericPrompt.js.map @@ -1 +1 @@ -{"version":3,"file":"NumericPrompt.js","sourceRoot":"","sources":["../../../src/domain/prompt/NumericPrompt.ts"],"names":[],"mappings":";;;AAmBA,6BAA2E;AAE9D,QAAA,kBAAkB,GAAG,SAAS,CAAA;AAM3C,MAAa,aAAc,SAAQ,cAAgC;IAGjE,QAAQ,CAAC,GAAW;QAClB,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,EAAE;YACrC,OAAO,KAAK,CAAA;SACb;QAED,MAAM,EAAC,GAAG,EAAE,GAAG,EAAC,GAAG,IAAI,CAAC,MAAM,CAAA;QAE9B,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE;YAC5B,MAAM,IAAI,uBAAmB,CAAC,qCAAqC,CAAC,CAAA;SACrE;QAED,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE;YAC5B,MAAM,IAAI,uBAAmB,CAAC,wCAAwC,CAAC,CAAA;SACxE;QAED,OAAO,IAAI,CAAA;IACb,CAAC;;AAnBH,sCAoBC;AAnBiB,uBAAS,GAAG,SAAS,CAAA"} \ No newline at end of file +{"version":3,"file":"NumericPrompt.js","sourceRoot":"","sources":["../../../src/domain/prompt/NumericPrompt.ts"],"names":[],"mappings":";;;AAmBA,6BAAiF;AACjF,mCAA+B;AAElB,QAAA,kBAAkB,GAAG,SAAS,CAAA;AAM3C,MAAa,aAAc,SAAQ,cAAgC;IACjE,QAAQ,CAAC,GAAkC;QACzC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,iBAAQ,CAAC,GAAG,CAAC,EAAE;YACjC,MAAM,IAAI,6BAAyB,CAAC,gCAAgC,CAAC,CAAA;SACtE;QAED,MAAM,EAAC,GAAG,EAAE,GAAG,EAAC,GAAG,IAAI,CAAC,MAAM,CAAA;QAE9B,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE;YAC5B,MAAM,IAAI,6BAAyB,CAAC,qCAAqC,CAAC,CAAA;SAC3E;QAED,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE;YAC5B,MAAM,IAAI,6BAAyB,CAAC,wCAAwC,CAAC,CAAA;SAC9E;QAED,OAAM;IACR,CAAC;CACF;AAlBD,sCAkBC"} \ No newline at end of file diff --git a/dist/domain/prompt/OpenPrompt.d.ts b/dist/domain/prompt/OpenPrompt.d.ts index c5577ae7..063eba04 100644 --- a/dist/domain/prompt/OpenPrompt.d.ts +++ b/dist/domain/prompt/OpenPrompt.d.ts @@ -1,6 +1,6 @@ import { BasePrompt, IOpenPromptConfig } from '../..'; export declare const OPEN_PROMPT_KEY = "Open"; export declare class OpenPrompt extends BasePrompt { - validate(val: string): boolean; + validate(val: IOpenPromptConfig['value']): void; } //# sourceMappingURL=OpenPrompt.d.ts.map \ No newline at end of file diff --git a/dist/domain/prompt/OpenPrompt.d.ts.map b/dist/domain/prompt/OpenPrompt.d.ts.map index 90d49a91..d97b8ac2 100644 --- a/dist/domain/prompt/OpenPrompt.d.ts.map +++ b/dist/domain/prompt/OpenPrompt.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"OpenPrompt.d.ts","sourceRoot":"","sources":["../../../src/domain/prompt/OpenPrompt.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,UAAU,EAAE,iBAAiB,EAAsB,MAAM,OAAO,CAAA;AAExE,eAAO,MAAM,eAAe,SAAS,CAAA;AAMrC,qBAAa,UAAW,SAAQ,UAAU,CAAC,iBAAiB,CAAC;IAC3D,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAW/B"} \ No newline at end of file +{"version":3,"file":"OpenPrompt.d.ts","sourceRoot":"","sources":["../../../src/domain/prompt/OpenPrompt.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,UAAU,EAAE,iBAAiB,EAA4B,MAAM,OAAO,CAAA;AAE9E,eAAO,MAAM,eAAe,SAAS,CAAA;AAMrC,qBAAa,UAAW,SAAQ,UAAU,CAAC,iBAAiB,CAAC;IAC3D,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,IAAI;CAehD"} \ No newline at end of file diff --git a/dist/domain/prompt/OpenPrompt.js b/dist/domain/prompt/OpenPrompt.js index ebf09e28..d52c70cc 100644 --- a/dist/domain/prompt/OpenPrompt.js +++ b/dist/domain/prompt/OpenPrompt.js @@ -5,11 +5,14 @@ const __1 = require("../.."); exports.OPEN_PROMPT_KEY = 'Open'; class OpenPrompt extends __1.BasePrompt { validate(val) { + if (val == null) { + throw new __1.PromptValidationException('Value provided is null or undefined'); + } const { maxResponseCharacters: maxLength } = this.config; if (maxLength != null && val.length > maxLength) { - throw new __1.ValidationException('Too many characters on value provided'); + throw new __1.PromptValidationException('Too many characters on value provided'); } - return true; + return; } } exports.OpenPrompt = OpenPrompt; diff --git a/dist/domain/prompt/OpenPrompt.js.map b/dist/domain/prompt/OpenPrompt.js.map index 46b68009..eb859343 100644 --- a/dist/domain/prompt/OpenPrompt.js.map +++ b/dist/domain/prompt/OpenPrompt.js.map @@ -1 +1 @@ -{"version":3,"file":"OpenPrompt.js","sourceRoot":"","sources":["../../../src/domain/prompt/OpenPrompt.ts"],"names":[],"mappings":";;;AAmBA,6BAAwE;AAE3D,QAAA,eAAe,GAAG,MAAM,CAAA;AAMrC,MAAa,UAAW,SAAQ,cAA6B;IAC3D,QAAQ,CAAC,GAAW;QAClB,MAAM,EAAC,qBAAqB,EAAE,SAAS,EAAC,GAAG,IAAI,CAAC,MAAM,CAAA;QAEtD,IAAI,SAAS,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE;YAG/C,MAAM,IAAI,uBAAmB,CAAC,uCAAuC,CAAC,CAAA;SACvE;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAZD,gCAYC"} \ No newline at end of file +{"version":3,"file":"OpenPrompt.js","sourceRoot":"","sources":["../../../src/domain/prompt/OpenPrompt.ts"],"names":[],"mappings":";;;AAmBA,6BAA8E;AAEjE,QAAA,eAAe,GAAG,MAAM,CAAA;AAMrC,MAAa,UAAW,SAAQ,cAA6B;IAC3D,QAAQ,CAAC,GAA+B;QACtC,IAAI,GAAG,IAAI,IAAI,EAAE;YACf,MAAM,IAAI,6BAAyB,CAAC,qCAAqC,CAAC,CAAA;SAC3E;QAED,MAAM,EAAC,qBAAqB,EAAE,SAAS,EAAC,GAAG,IAAI,CAAC,MAAM,CAAA;QAEtD,IAAI,SAAS,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE;YAG/C,MAAM,IAAI,6BAAyB,CAAC,uCAAuC,CAAC,CAAA;SAC7E;QAED,OAAM;IACR,CAAC;CACF;AAhBD,gCAgBC"} \ No newline at end of file diff --git a/dist/domain/prompt/SelectManyPrompt.d.ts b/dist/domain/prompt/SelectManyPrompt.d.ts index f52fc695..bfad1a7e 100644 --- a/dist/domain/prompt/SelectManyPrompt.d.ts +++ b/dist/domain/prompt/SelectManyPrompt.d.ts @@ -1,8 +1,8 @@ -import { BasePrompt, IChoice, ISelectManyPromptConfig } from '../..'; +import { BasePrompt, ISelectManyPromptConfig } from '../..'; export declare const INVALID_AT_LEAST_ONE_SELECTION_REQUIRED = "At least one selection is required, but none provided"; export declare const INVALID_ALL_SELECTIONS_MUST_EXIST_ON_BLOCK = "All selections must be valid choices on block"; export declare const SELECT_MANY_PROMPT_KEY = "SelectMany"; export declare class SelectManyPrompt extends BasePrompt { - validate(selections: IChoice['key'][]): boolean; + validate(selections: ISelectManyPromptConfig['value']): void; } //# sourceMappingURL=SelectManyPrompt.d.ts.map \ No newline at end of file diff --git a/dist/domain/prompt/SelectManyPrompt.d.ts.map b/dist/domain/prompt/SelectManyPrompt.d.ts.map index 41ca3319..5a42e9ca 100644 --- a/dist/domain/prompt/SelectManyPrompt.d.ts.map +++ b/dist/domain/prompt/SelectManyPrompt.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"SelectManyPrompt.d.ts","sourceRoot":"","sources":["../../../src/domain/prompt/SelectManyPrompt.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,UAAU,EAAE,OAAO,EAA0B,uBAAuB,EAAsB,MAAM,OAAO,CAAA;AAG/G,eAAO,MAAM,uCAAuC,0DAA0D,CAAA;AAC9G,eAAO,MAAM,0CAA0C,kDAAkD,CAAA;AACzG,eAAO,MAAM,sBAAsB,eAAe,CAAA;AAMlD,qBAAa,gBAAiB,SAAQ,UAAU,CAAC,uBAAuB,CAAC;IACvE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO;CAkBhD"} \ No newline at end of file +{"version":3,"file":"SelectManyPrompt.d.ts","sourceRoot":"","sources":["../../../src/domain/prompt/SelectManyPrompt.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,UAAU,EAAmC,uBAAuB,EAA4B,MAAM,OAAO,CAAA;AAGrH,eAAO,MAAM,uCAAuC,0DAA0D,CAAA;AAC9G,eAAO,MAAM,0CAA0C,kDAAkD,CAAA;AACzG,eAAO,MAAM,sBAAsB,eAAe,CAAA;AAMlD,qBAAa,gBAAiB,SAAQ,UAAU,CAAC,uBAAuB,CAAC;IACvE,QAAQ,CAAC,UAAU,EAAE,uBAAuB,CAAC,OAAO,CAAC,GAAG,IAAI;CAsB7D"} \ No newline at end of file diff --git a/dist/domain/prompt/SelectManyPrompt.js b/dist/domain/prompt/SelectManyPrompt.js index 70f7ec53..0f08f90a 100644 --- a/dist/domain/prompt/SelectManyPrompt.js +++ b/dist/domain/prompt/SelectManyPrompt.js @@ -8,18 +8,21 @@ exports.INVALID_ALL_SELECTIONS_MUST_EXIST_ON_BLOCK = 'All selections must be val exports.SELECT_MANY_PROMPT_KEY = 'SelectMany'; class SelectManyPrompt extends __1.BasePrompt { validate(selections) { + if (selections == null) { + throw new __1.PromptValidationException('Value provided is null or undefined'); + } const { isResponseRequired, choices } = this.config; if (!isResponseRequired) { - return true; + return; } - if (selections.length === 0) { - throw new __1.ValidationException(exports.INVALID_AT_LEAST_ONE_SELECTION_REQUIRED); + if (choices.length !== 0 && selections.length === 0) { + throw new __1.PromptValidationException(exports.INVALID_AT_LEAST_ONE_SELECTION_REQUIRED); } const invalidChoices = lodash_1.difference(selections, lodash_1.map(choices, 'key')); if (invalidChoices.length !== 0) { throw new __1.InvalidChoiceException(exports.INVALID_ALL_SELECTIONS_MUST_EXIST_ON_BLOCK, invalidChoices); } - return true; + return; } } exports.SelectManyPrompt = SelectManyPrompt; diff --git a/dist/domain/prompt/SelectManyPrompt.js.map b/dist/domain/prompt/SelectManyPrompt.js.map index 8dac2bc1..df51149f 100644 --- a/dist/domain/prompt/SelectManyPrompt.js.map +++ b/dist/domain/prompt/SelectManyPrompt.js.map @@ -1 +1 @@ -{"version":3,"file":"SelectManyPrompt.js","sourceRoot":"","sources":["../../../src/domain/prompt/SelectManyPrompt.ts"],"names":[],"mappings":";;;AAmBA,6BAA+G;AAC/G,mCAAsC;AAEzB,QAAA,uCAAuC,GAAG,uDAAuD,CAAA;AACjG,QAAA,0CAA0C,GAAG,+CAA+C,CAAA;AAC5F,QAAA,sBAAsB,GAAG,YAAY,CAAA;AAMlD,MAAa,gBAAiB,SAAQ,cAAmC;IACvE,QAAQ,CAAC,UAA4B;QACnC,MAAM,EAAC,kBAAkB,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC,MAAM,CAAA;QAEjD,IAAI,CAAC,kBAAkB,EAAE;YACvB,OAAO,IAAI,CAAA;SACZ;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,MAAM,IAAI,uBAAmB,CAAC,+CAAuC,CAAC,CAAA;SACvE;QAED,MAAM,cAAc,GAAG,mBAAU,CAAC,UAAU,EAAE,YAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;QAClE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/B,MAAM,IAAI,0BAAsB,CAAiB,kDAA0C,EAAE,cAAc,CAAC,CAAA;SAC7G;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAnBD,4CAmBC"} \ No newline at end of file +{"version":3,"file":"SelectManyPrompt.js","sourceRoot":"","sources":["../../../src/domain/prompt/SelectManyPrompt.ts"],"names":[],"mappings":";;;AAmBA,6BAAqH;AACrH,mCAAsC;AAEzB,QAAA,uCAAuC,GAAG,uDAAuD,CAAA;AACjG,QAAA,0CAA0C,GAAG,+CAA+C,CAAA;AAC5F,QAAA,sBAAsB,GAAG,YAAY,CAAA;AAMlD,MAAa,gBAAiB,SAAQ,cAAmC;IACvE,QAAQ,CAAC,UAA4C;QACnD,IAAI,UAAU,IAAI,IAAI,EAAE;YACtB,MAAM,IAAI,6BAAyB,CAAC,qCAAqC,CAAC,CAAA;SAC3E;QAED,MAAM,EAAC,kBAAkB,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC,MAAM,CAAA;QAEjD,IAAI,CAAC,kBAAkB,EAAE;YACvB,OAAM;SACP;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YACnD,MAAM,IAAI,6BAAyB,CAAC,+CAAuC,CAAC,CAAA;SAC7E;QAED,MAAM,cAAc,GAAG,mBAAU,CAAC,UAAU,EAAE,YAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;QAClE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/B,MAAM,IAAI,0BAAsB,CAAiB,kDAA0C,EAAE,cAAc,CAAC,CAAA;SAC7G;QAED,OAAM;IACR,CAAC;CACF;AAvBD,4CAuBC"} \ No newline at end of file diff --git a/dist/domain/prompt/SelectOnePrompt.d.ts b/dist/domain/prompt/SelectOnePrompt.d.ts index 5d31db48..88d812d9 100644 --- a/dist/domain/prompt/SelectOnePrompt.d.ts +++ b/dist/domain/prompt/SelectOnePrompt.d.ts @@ -1,6 +1,6 @@ import { BasePrompt, ISelectOnePromptConfig } from '../..'; export declare const SELECT_ONE_PROMPT_KEY = "SelectOne"; export declare class SelectOnePrompt extends BasePrompt { - validate(choiceKey?: string | null): boolean; + validate(choiceKey: ISelectOnePromptConfig['value']): void; } //# sourceMappingURL=SelectOnePrompt.d.ts.map \ No newline at end of file diff --git a/dist/domain/prompt/SelectOnePrompt.d.ts.map b/dist/domain/prompt/SelectOnePrompt.d.ts.map index 23889696..ab5592b2 100644 --- a/dist/domain/prompt/SelectOnePrompt.d.ts.map +++ b/dist/domain/prompt/SelectOnePrompt.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"SelectOnePrompt.d.ts","sourceRoot":"","sources":["../../../src/domain/prompt/SelectOnePrompt.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,UAAU,EAAE,sBAAsB,EAAsB,MAAM,OAAO,CAAA;AAE7E,eAAO,MAAM,qBAAqB,cAAc,CAAA;AAMhD,qBAAa,eAAgB,SAAQ,UAAU,CAAC,sBAAsB,CAAC;IACrE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;CAS7C"} \ No newline at end of file +{"version":3,"file":"SelectOnePrompt.d.ts","sourceRoot":"","sources":["../../../src/domain/prompt/SelectOnePrompt.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,UAAU,EAAE,sBAAsB,EAA4B,MAAM,OAAO,CAAA;AAEnF,eAAO,MAAM,qBAAqB,cAAc,CAAA;AAMhD,qBAAa,eAAgB,SAAQ,UAAU,CAAC,sBAAsB,CAAC;IACrE,QAAQ,CAAC,SAAS,EAAE,sBAAsB,CAAC,OAAO,CAAC,GAAG,IAAI;CAa3D"} \ No newline at end of file diff --git a/dist/domain/prompt/SelectOnePrompt.js b/dist/domain/prompt/SelectOnePrompt.js index fbcf2e16..e8f3a992 100644 --- a/dist/domain/prompt/SelectOnePrompt.js +++ b/dist/domain/prompt/SelectOnePrompt.js @@ -5,11 +5,14 @@ const __1 = require("../.."); exports.SELECT_ONE_PROMPT_KEY = 'SelectOne'; class SelectOnePrompt extends __1.BasePrompt { validate(choiceKey) { + if (choiceKey == null) { + throw new __1.PromptValidationException('Value provided is null or undefined'); + } const { isResponseRequired, choices } = this.config; if (isResponseRequired && choices.find(({ key }) => key === choiceKey) == null) { - throw new __1.ValidationException('Value provided must be in list of choices'); + throw new __1.PromptValidationException('Value provided must be in list of choices'); } - return true; + return; } } exports.SelectOnePrompt = SelectOnePrompt; diff --git a/dist/domain/prompt/SelectOnePrompt.js.map b/dist/domain/prompt/SelectOnePrompt.js.map index e748ef5f..738757eb 100644 --- a/dist/domain/prompt/SelectOnePrompt.js.map +++ b/dist/domain/prompt/SelectOnePrompt.js.map @@ -1 +1 @@ -{"version":3,"file":"SelectOnePrompt.js","sourceRoot":"","sources":["../../../src/domain/prompt/SelectOnePrompt.ts"],"names":[],"mappings":";;;AAmBA,6BAA6E;AAEhE,QAAA,qBAAqB,GAAG,WAAW,CAAA;AAMhD,MAAa,eAAgB,SAAQ,cAAkC;IACrE,QAAQ,CAAC,SAAyB;QAChC,MAAM,EAAC,kBAAkB,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC,MAAM,CAAA;QAEjD,IAAI,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,IAAI,IAAI,EAAE;YAC5E,MAAM,IAAI,uBAAmB,CAAC,2CAA2C,CAAC,CAAA;SAC3E;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAVD,0CAUC"} \ No newline at end of file +{"version":3,"file":"SelectOnePrompt.js","sourceRoot":"","sources":["../../../src/domain/prompt/SelectOnePrompt.ts"],"names":[],"mappings":";;;AAmBA,6BAAmF;AAEtE,QAAA,qBAAqB,GAAG,WAAW,CAAA;AAMhD,MAAa,eAAgB,SAAQ,cAAkC;IACrE,QAAQ,CAAC,SAA0C;QACjD,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,MAAM,IAAI,6BAAyB,CAAC,qCAAqC,CAAC,CAAA;SAC3E;QAED,MAAM,EAAC,kBAAkB,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC,MAAM,CAAA;QAEjD,IAAI,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,IAAI,IAAI,EAAE;YAC5E,MAAM,IAAI,6BAAyB,CAAC,2CAA2C,CAAC,CAAA;SACjF;QAED,OAAM;IACR,CAAC;CACF;AAdD,0CAcC"} \ No newline at end of file diff --git a/src/__tests__/prompt/SelectManyPrompt.spec.ts b/src/__tests__/prompt/SelectManyPrompt.spec.ts index dfa7bf17..0721e1cc 100644 --- a/src/__tests__/prompt/SelectManyPrompt.spec.ts +++ b/src/__tests__/prompt/SelectManyPrompt.spec.ts @@ -8,7 +8,7 @@ import { IPromptConfig, ISelectManyPromptConfig, SelectManyPrompt, - ValidationException, + PromptValidationException, } from '../..' import {createDefaultDataset, IDataset} from '../fixtures/IDataset' @@ -59,20 +59,20 @@ describe('SelectManyPrompt', () => { it('should raise when no selections are provided', async () => { const selections: IChoice['key'][] = [] - verifyValidationThrows(prompt.validate.bind(prompt, selections), ValidationException, INVALID_AT_LEAST_ONE_SELECTION_REQUIRED) + verifyValidationThrows(prompt.validate.bind(prompt, selections), PromptValidationException, INVALID_AT_LEAST_ONE_SELECTION_REQUIRED) }) }) it('should return true when all selections are valid', async () => { const selections = ['choice-A', 'choice-D'] - expect(prompt.validate(selections)).toBe(true) + expect(() => prompt.validate(selections)).not.toThrow() }) it('should raise when some selections are invalid when isRequired is false', async () => { prompt.config.isResponseRequired = false const selections = ['choice-A', 'choice-B', 'key-not-in-prompt-config', 'choice-C'] - expect(prompt.validate(selections)).toBe(true) + expect(() => prompt.validate(selections)).not.toThrow() }) }) }) diff --git a/src/domain/FlowRunner.ts b/src/domain/FlowRunner.ts index 8ee14fdf..9dcb0ccf 100644 --- a/src/domain/FlowRunner.ts +++ b/src/domain/FlowRunner.ts @@ -255,12 +255,7 @@ export class FlowRunner implements IFlowRunner, IFlowNavigator, IPromptBuilder { const {prompt}: IRichCursorInputRequired = this.hydrateRichCursorFrom(ctx as IContextInputRequired) as IRichCursorInputRequired - try { - prompt.validate(prompt.value) - return false - } catch (e) { - return true - } + return !prompt.isValid() } // todo: this could be findFirstExitOnActiveFlowBlockFor to an Expressions Behaviour diff --git a/src/domain/exceptions/InvalidChoiceException.ts b/src/domain/exceptions/InvalidChoiceException.ts index 5bb07fbf..55c47211 100644 --- a/src/domain/exceptions/InvalidChoiceException.ts +++ b/src/domain/exceptions/InvalidChoiceException.ts @@ -17,10 +17,12 @@ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **/ +import {PromptValidationException} from './PromptValidationException' + /** * Generic exception for selection validation; typically leveraged by {@link IPrompt} implementations. */ -export class InvalidChoiceException extends Error { +export class InvalidChoiceException extends PromptValidationException { constructor(message?: string, public choices?: ChoiceType[]) { super(message) } diff --git a/src/domain/prompt/AdvancedSelectOnePrompt.ts b/src/domain/prompt/AdvancedSelectOnePrompt.ts index 9b066ddd..a95beed5 100644 --- a/src/domain/prompt/AdvancedSelectOnePrompt.ts +++ b/src/domain/prompt/AdvancedSelectOnePrompt.ts @@ -17,18 +17,24 @@ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **/ -import {assertNotNull, BasePrompt, IAdvancedSelectOne, IAdvancedSelectOnePromptConfig, ValidationException} from '../..' +import {assertNotNull, BasePrompt, IAdvancedSelectOne, IAdvancedSelectOnePromptConfig, PromptValidationException} from '../..' export const ADVANCED_SELECT_ONE_PROMPT_KEY = 'AdvancedSelectOne' export class AdvancedSelectOnePrompt extends BasePrompt { - validate(selectedRow?: IAdvancedSelectOne[], choiceRows?: string[][]): boolean { + validate(selectedRow?: IAdvancedSelectOne[], choiceRows?: string[][]): void { const {choiceRowFields, isResponseRequired} = this.config + assertNotNull( + selectedRow, + () => 'Value provided is null or undefined', + message => new PromptValidationException(message) + ) + assertNotNull( choiceRows, () => 'choiceRows must be non-null', - message => new ValidationException(message) + message => new PromptValidationException(message) ) if (isResponseRequired) { @@ -36,17 +42,17 @@ export class AdvancedSelectOnePrompt extends BasePrompt { const columnIndex = choiceRowFields.indexOf(selection.name) if (columnIndex < 0) { - throw new ValidationException(`Failed to find a column called: ${selection.name}`) + throw new PromptValidationException(`Failed to find a column called: ${selection.name}`) } else { return selection.value === row[columnIndex] } }) ) if (!hasSelectedRow) { - throw new ValidationException(`Failed to find the given row: ${selectedRow}`) + throw new PromptValidationException(`Failed to find the given row: ${selectedRow}`) } } - return true + return } } diff --git a/src/domain/prompt/BasePrompt.ts b/src/domain/prompt/BasePrompt.ts index c49bf1f5..6ad15458 100644 --- a/src/domain/prompt/BasePrompt.ts +++ b/src/domain/prompt/BasePrompt.ts @@ -49,13 +49,13 @@ export abstract class BasePrompt> implements } /** - * Set local {@link IPromptConfig.value}. This action is guarded by {@link validate}, where the result of - * {@link validate} is applied to {@link isValid}. Any exceptions raised by {@link validate} are applied to - * {@link error} property. + * Set local {@link IPromptConfig.value}. This action is guarded by {@link validate}. + * Any exceptions raised by {@link validate} are applied to {@link error} property. * * It's important to note that {@link value} property will be set (proxied onto local {@link IPromptConfig.value}) * regardless of any {@link PromptValidationException}s raised. */ set value(val: T['value']) { + this.error = null try { this.validate(val) } catch (e) { @@ -91,7 +91,8 @@ export abstract class BasePrompt> implements } async fulfill(val: T['value'] | undefined): Promise { - // allow prompt.fulfill() for continuation + // We need to exempt setting this.value when prompt.fulfill() is called without any arguments, + // because it would reset our state to "uninitialized" due to val being undefined if (val !== undefined) { this.value = val } @@ -101,7 +102,8 @@ export abstract class BasePrompt> implements public isValid(): boolean { try { - return this.validate(this.config.value) + this.validate(this.config.value) + return true } catch (e) { return false } @@ -110,6 +112,7 @@ export abstract class BasePrompt> implements /** * Template method to be implemented by concrete {@link IPrompt} implementations. * @param val + * @throws PromptValidationException */ - abstract validate(val?: T['value']): boolean + abstract validate(val?: T['value']): void } diff --git a/src/domain/prompt/IPrompt.ts b/src/domain/prompt/IPrompt.ts index d1d18437..74127da3 100644 --- a/src/domain/prompt/IPrompt.ts +++ b/src/domain/prompt/IPrompt.ts @@ -30,14 +30,14 @@ export interface IPrompt @@ -60,5 +60,5 @@ export interface IBasePromptConfig { } export interface PromptConstructor { - new(config: T, interactionId: string, runner: IFlowRunner): BasePrompt + new (config: T, interactionId: string, runner: IFlowRunner): BasePrompt } diff --git a/src/domain/prompt/MessagePrompt.ts b/src/domain/prompt/MessagePrompt.ts index e9c6f30c..0495bba9 100644 --- a/src/domain/prompt/MessagePrompt.ts +++ b/src/domain/prompt/MessagePrompt.ts @@ -25,7 +25,7 @@ export const MESSAGE_PROMPT_KEY = 'Message' * Concrete implementation of {@link BasePrompt} to present a message to an {@link IContact}. */ export class MessagePrompt extends BasePrompt { - validate(): boolean { - return true + validate(): void { + return } } diff --git a/src/domain/prompt/NumericPrompt.ts b/src/domain/prompt/NumericPrompt.ts index 2d545c63..edb6d320 100644 --- a/src/domain/prompt/NumericPrompt.ts +++ b/src/domain/prompt/NumericPrompt.ts @@ -17,7 +17,8 @@ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **/ -import {BasePrompt, INumericPromptConfig, ValidationException} from '../..' +import {BasePrompt, INumericPromptConfig, PromptValidationException} from '../..' +import {isFinite} from 'lodash' export const NUMERIC_PROMPT_KEY = 'Numeric' @@ -26,23 +27,21 @@ export const NUMERIC_PROMPT_KEY = 'Numeric' * {@link IContact}. */ export class NumericPrompt extends BasePrompt { - static readonly promptKey = 'Numeric' - - validate(val: number): boolean { - if (Number.isNaN(val) || val === null) { - return false + validate(val: INumericPromptConfig['value']): void { + if (val == null || !isFinite(val)) { + throw new PromptValidationException('Value provided is not a number') } const {min, max} = this.config if (min != null && val < min) { - throw new ValidationException('Value provided is less than allowed') + throw new PromptValidationException('Value provided is less than allowed') } if (max != null && val > max) { - throw new ValidationException('Value provided is greater than allowed') + throw new PromptValidationException('Value provided is greater than allowed') } - return true + return } } diff --git a/src/domain/prompt/OpenPrompt.ts b/src/domain/prompt/OpenPrompt.ts index 205e8bdf..b60e2b66 100644 --- a/src/domain/prompt/OpenPrompt.ts +++ b/src/domain/prompt/OpenPrompt.ts @@ -17,7 +17,7 @@ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **/ -import {BasePrompt, IOpenPromptConfig, ValidationException} from '../..' +import {BasePrompt, IOpenPromptConfig, PromptValidationException} from '../..' export const OPEN_PROMPT_KEY = 'Open' @@ -26,15 +26,19 @@ export const OPEN_PROMPT_KEY = 'Open' * from an {@link IContact}. */ export class OpenPrompt extends BasePrompt { - validate(val: string): boolean { + validate(val: IOpenPromptConfig['value']): void { + if (val == null) { + throw new PromptValidationException('Value provided is null or undefined') + } + const {maxResponseCharacters: maxLength} = this.config if (maxLength != null && val.length > maxLength) { // todo: add ability to provide validation codes to ValidationException for use as comparator in consumers // todo: need a method to define resources frontend needs from backend - throw new ValidationException('Too many characters on value provided') + throw new PromptValidationException('Too many characters on value provided') } - return true + return } } diff --git a/src/domain/prompt/SelectManyPrompt.ts b/src/domain/prompt/SelectManyPrompt.ts index 84c3b54b..1edeafa2 100644 --- a/src/domain/prompt/SelectManyPrompt.ts +++ b/src/domain/prompt/SelectManyPrompt.ts @@ -17,7 +17,7 @@ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **/ -import {BasePrompt, IChoice, InvalidChoiceException, ISelectManyPromptConfig, ValidationException} from '../..' +import {BasePrompt, IChoice, InvalidChoiceException, ISelectManyPromptConfig, PromptValidationException} from '../..' import {difference, map} from 'lodash' export const INVALID_AT_LEAST_ONE_SELECTION_REQUIRED = 'At least one selection is required, but none provided' @@ -29,15 +29,19 @@ export const SELECT_MANY_PROMPT_KEY = 'SelectMany' * least one, from an {@link IContact}. */ export class SelectManyPrompt extends BasePrompt { - validate(selections: IChoice['key'][]): boolean { + validate(selections: ISelectManyPromptConfig['value']): void { + if (selections == null) { + throw new PromptValidationException('Value provided is null or undefined') + } + const {isResponseRequired, choices} = this.config if (!isResponseRequired) { - return true + return } - if (selections.length === 0) { - throw new ValidationException(INVALID_AT_LEAST_ONE_SELECTION_REQUIRED) + if (choices.length !== 0 && selections.length === 0) { + throw new PromptValidationException(INVALID_AT_LEAST_ONE_SELECTION_REQUIRED) } const invalidChoices = difference(selections, map(choices, 'key')) @@ -45,6 +49,6 @@ export class SelectManyPrompt extends BasePrompt { throw new InvalidChoiceException(INVALID_ALL_SELECTIONS_MUST_EXIST_ON_BLOCK, invalidChoices) } - return true + return } } diff --git a/src/domain/prompt/SelectOnePrompt.ts b/src/domain/prompt/SelectOnePrompt.ts index faf9a0a5..9b27c78d 100644 --- a/src/domain/prompt/SelectOnePrompt.ts +++ b/src/domain/prompt/SelectOnePrompt.ts @@ -17,7 +17,7 @@ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **/ -import {BasePrompt, ISelectOnePromptConfig, ValidationException} from '../..' +import {BasePrompt, ISelectOnePromptConfig, PromptValidationException} from '../..' export const SELECT_ONE_PROMPT_KEY = 'SelectOne' @@ -26,13 +26,17 @@ export const SELECT_ONE_PROMPT_KEY = 'SelectOne' * {@link IContact}. */ export class SelectOnePrompt extends BasePrompt { - validate(choiceKey?: string | null): boolean { + validate(choiceKey: ISelectOnePromptConfig['value']): void { + if (choiceKey == null) { + throw new PromptValidationException('Value provided is null or undefined') + } + const {isResponseRequired, choices} = this.config if (isResponseRequired && choices.find(({key}) => key === choiceKey) == null) { - throw new ValidationException('Value provided must be in list of choices') + throw new PromptValidationException('Value provided must be in list of choices') } - return true + return } }