From 7b46659586d19c681936398de3d1151fc5bc9590 Mon Sep 17 00:00:00 2001 From: Florian Hotze Date: Wed, 14 Aug 2024 19:52:44 +0200 Subject: [PATCH] [rules] Rule Builder: Fix type defs for .if() and .then() Signed-off-by: Florian Hotze --- README.md | 2 + src/rules/condition-builder.js | 49 ++++++++++++++-------- src/rules/trigger-builder.js | 2 +- types/rules/condition-builder.d.ts | 57 ++++++++++++++++++-------- types/rules/condition-builder.d.ts.map | 2 +- types/rules/trigger-builder.d.ts | 4 +- types/rules/trigger-builder.d.ts.map | 2 +- 7 files changed, 81 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index 7977c6b00..82ee1d0e3 100644 --- a/README.md +++ b/README.md @@ -1344,6 +1344,8 @@ Additionally, all the above triggers have the following functions: - `if(optionalFunction)` - `.stateOfItem(itemName)` - `is(state)` + - `isOn()` + - `isOff()` - `in(state...)` #### Rule Builder Operations diff --git a/src/rules/condition-builder.js b/src/rules/condition-builder.js index 00877911c..dedd523e2 100644 --- a/src/rules/condition-builder.js +++ b/src/rules/condition-builder.js @@ -38,7 +38,6 @@ class ConditionBuilder { /** * Condition of an item in determining whether to process rule. * - * @memberof ConditionBuilder * @param {string} itemName the name of the item to assess the state * @returns {ItemStateConditionConf} the operation config */ @@ -49,8 +48,7 @@ class ConditionBuilder { } /** - * {RuleBuilder} RuleBuilder conditions - * @memberof ConditionBuilder + * {@link RuleBuilder} RuleBuilder conditions */ class ConditionConf { constructor (conditionBuilder) { @@ -59,10 +57,9 @@ class ConditionConf { } /** - * - * @param {*} [fn] an optional function - * @returns ConditionBuilder - */ + * @param {*} [fn] an optional function + * @returns {operations.OperationBuilder} + */ then (fn) { return this.conditionBuilder._then(this, fn); } @@ -71,8 +68,7 @@ class ConditionConf { /** * Condition that wraps a function to determine whether if passes * - * @memberof ConditionBuilder - * @extends ConditionBuilder.ConditionConf + * @extends ConditionConf * @hideconstructor */ class FunctionConditionConf extends ConditionConf { @@ -102,8 +98,7 @@ class FunctionConditionConf extends ConditionConf { /** * Condition that wraps a function to determine whether if passes * - * @memberof ConditionBuilder - * @extends ConditionBuilder.ConditionConf + * @extends ConditionConf * @hideconstructor */ class ItemStateConditionConf extends ConditionConf { @@ -114,25 +109,47 @@ class ItemStateConditionConf extends ConditionConf { } /** - * Checks if item state is equal to value - * @param {*} value - * @returns {this} - */ + * Checks if Item state is equal to given value. + * + * @param {string} value + * @return {ItemStateConditionConf} + */ is (value) { this.values = [value]; return this; } + /** + * Checks if the Item state is ON. + * + * @return {ItemStateConditionConf} + */ + isOn () { + this.is('ON'); + return this; + } + + /** + * Checks if the Item state is OFF. + * + * @return {ItemStateConditionConf} + */ + isOff () { + this.is('OFF'); + return this; + } + /** * Checks if item state matches any array of values * @param {...any} values - * @returns {this} + * @return {ItemStateConditionConf} */ in (...values) { this.values = values; return this; } + /** @private */ check (...args) { const item = items.getItem(this.item_name); if (typeof item === 'undefined' || item === null) { diff --git a/src/rules/trigger-builder.js b/src/rules/trigger-builder.js index cc9266beb..27057c823 100644 --- a/src/rules/trigger-builder.js +++ b/src/rules/trigger-builder.js @@ -150,7 +150,7 @@ class TriggerConf { /** * Move to the rule condition * - * @param {*} fn the optional function to execute + * @param {*} [fn] the optional function to execute * @returns {conditions.ConditionBuilder} */ if (fn) { diff --git a/types/rules/condition-builder.d.ts b/types/rules/condition-builder.d.ts index e909e14f6..2ddba9c7e 100644 --- a/types/rules/condition-builder.d.ts +++ b/types/rules/condition-builder.d.ts @@ -1,11 +1,10 @@ /** * Condition that wraps a function to determine whether if passes * - * @memberof ConditionBuilder - * @extends ConditionBuilder.ConditionConf + * @extends ConditionConf * @hideconstructor */ -export class FunctionConditionConf { +export class FunctionConditionConf extends ConditionConf { /** * Creates a new function condition. Don't call directly. * @@ -26,28 +25,41 @@ export class FunctionConditionConf { /** * Condition that wraps a function to determine whether if passes * - * @memberof ConditionBuilder - * @extends ConditionBuilder.ConditionConf + * @extends ConditionConf * @hideconstructor */ -export class ItemStateConditionConf { +export class ItemStateConditionConf extends ConditionConf { constructor(itemName: any, conditionBuilder: any); /** @private */ private item_name; /** - * Checks if item state is equal to value - * @param {*} value - * @returns {this} - */ - is(value: any): this; - values: any[]; + * Checks if Item state is equal to given value. + * + * @param {string} value + * @return {ItemStateConditionConf} + */ + is(value: string): ItemStateConditionConf; + values: any[] | string[]; + /** + * Checks if the Item state is ON. + * + * @return {ItemStateConditionConf} + */ + isOn(): ItemStateConditionConf; + /** + * Checks if the Item state is OFF. + * + * @return {ItemStateConditionConf} + */ + isOff(): ItemStateConditionConf; /** * Checks if item state matches any array of values * @param {...any} values - * @returns {this} + * @return {ItemStateConditionConf} */ - in(...values: any[]): this; - check(...args: any[]): boolean; + in(...values: any[]): ItemStateConditionConf; + /** @private */ + private check; } /** * Condition that wraps a function to determine whether if passes @@ -72,12 +84,25 @@ export class ConditionBuilder { /** * Condition of an item in determining whether to process rule. * - * @memberof ConditionBuilder * @param {string} itemName the name of the item to assess the state * @returns {ItemStateConditionConf} the operation config */ stateOfItem(itemName: string): ItemStateConditionConf; condition: ItemStateConditionConf; } +/** + * {@link RuleBuilder} RuleBuilder conditions + */ +declare class ConditionConf { + constructor(conditionBuilder: any); + /** @private */ + private conditionBuilder; + /** + * @param {*} [fn] an optional function + * @returns {operations.OperationBuilder} + */ + then(fn?: any): operations.OperationBuilder; +} import operations = require("./operation-builder"); +export {}; //# sourceMappingURL=condition-builder.d.ts.map \ No newline at end of file diff --git a/types/rules/condition-builder.d.ts.map b/types/rules/condition-builder.d.ts.map index eead24b5b..5dd01597b 100644 --- a/types/rules/condition-builder.d.ts.map +++ b/types/rules/condition-builder.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"condition-builder.d.ts","sourceRoot":"","sources":["../../src/rules/condition-builder.js"],"names":[],"mappings":"AAsEA;;;;;;GAMG;AACH;IACE;;;;SAIK;IACL,4CAIC;IAFC,eAAe;IACf,WAAY;IAGd;;;;;;SAMK;IACL,cAEC;CACF;AAED;;;;;;GAMG;AACH;IACE,kDAIC;IAFC,eAAe;IACf,kBAAyB;IAG3B;;;;SAIK;IACL,gBAFe,IAAI,CAKlB;IAFC,cAAqB;IAIvB;;;;SAIK;IACL,cAHiB,GAAG,KACL,IAAI,CAKlB;IAED,+BAMC;CACF;AA3ID;;;;GAIG;AACH;IACE,mCAKC;IAJC,eAAe;IACf,iBAAuB;IACvB,eAAe;IACf,YAAa;IAGf,eAAe;IACf,cAGC;IAED;;;;;OAKG;IACH,gBAFa,WAAW,gBAAgB,CASvC;IAED;;;;;;QAMI;IACJ,sBAHY,MAAM,GACJ,sBAAsB,CAKnC;IAFC,kCAA2D;CAG9D"} \ No newline at end of file +{"version":3,"file":"condition-builder.d.ts","sourceRoot":"","sources":["../../src/rules/condition-builder.js"],"names":[],"mappings":"AAmEA;;;;;GAKG;AACH;IACE;;;;SAIK;IACL,4CAIC;IAFC,eAAe;IACf,WAAY;IAGd;;;;;;SAMK;IACL,cAEC;CACF;AAED;;;;;GAKG;AACH;IACE,kDAIC;IAFC,eAAe;IACf,kBAAyB;IAG3B;;;;;QAKI;IACJ,UAHY,MAAM,GACL,sBAAsB,CAKlC;IAFC,yBAAqB;IAIvB;;;;OAIG;IACH,QAFY,sBAAsB,CAKjC;IAED;;;;OAIG;IACH,SAFY,sBAAsB,CAKjC;IAED;;;;SAIK;IACL,cAHiB,GAAG,KACN,sBAAsB,CAKnC;IAED,eAAe;IACf,cAMC;CACF;AA5JD;;;;GAIG;AACH;IACE,mCAKC;IAJC,eAAe;IACf,iBAAuB;IACvB,eAAe;IACf,YAAa;IAGf,eAAe;IACf,cAGC;IAED;;;;;OAKG;IACH,gBAFa,WAAW,gBAAgB,CASvC;IAED;;;;;QAKI;IACJ,sBAHY,MAAM,GACJ,sBAAsB,CAKnC;IAFC,kCAA2D;CAG9D;AAED;;GAEG;AACH;IACE,mCAGC;IAFC,eAAe;IACf,yBAAwC;IAG1C;;;QAGI;IACJ,gBAFc,WAAW,gBAAgB,CAIxC;CACF"} \ No newline at end of file diff --git a/types/rules/trigger-builder.d.ts b/types/rules/trigger-builder.d.ts index ab64a943c..c1af92483 100644 --- a/types/rules/trigger-builder.d.ts +++ b/types/rules/trigger-builder.d.ts @@ -326,10 +326,10 @@ declare class TriggerConf { /** * Move to the rule condition * - * @param {*} fn the optional function to execute + * @param {*} [fn] the optional function to execute * @returns {conditions.ConditionBuilder} */ - if(fn: any): conditions.ConditionBuilder; + if(fn?: any): conditions.ConditionBuilder; } /** * Time of day based trigger diff --git a/types/rules/trigger-builder.d.ts.map b/types/rules/trigger-builder.d.ts.map index 5b2bc4232..5fb521ad8 100644 --- a/types/rules/trigger-builder.d.ts.map +++ b/types/rules/trigger-builder.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"trigger-builder.d.ts","sourceRoot":"","sources":["../../src/rules/trigger-builder.js"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"trigger-builder.d.ts","sourceRoot":"","sources":["../../src/rules/trigger-builder.js"],"names":[],"mappings":"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"} \ No newline at end of file