prostgles-server 4.2.553 → 4.2.555
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/dist/DboBuilder/TableHandler/TableHandler.d.ts +11 -3
- package/dist/DboBuilder/TableHandler/TableHandler.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/TableHandler.js +48 -6
- package/dist/DboBuilder/TableHandler/TableHandler.js.map +1 -1
- package/dist/DboBuilder/TableHandler/delete.js +3 -3
- package/dist/DboBuilder/TableHandler/delete.js.map +1 -1
- package/dist/DboBuilder/TableHandler/{executeHooksCheckAndPostValidation.d.ts → executeAfterHooksCheckAndPostValidation.d.ts} +2 -2
- package/dist/DboBuilder/TableHandler/executeAfterHooksCheckAndPostValidation.d.ts.map +1 -0
- package/dist/DboBuilder/TableHandler/executeAfterHooksCheckAndPostValidation.js +96 -0
- package/dist/DboBuilder/TableHandler/executeAfterHooksCheckAndPostValidation.js.map +1 -0
- package/dist/DboBuilder/TableHandler/insert/insert.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/insert/insert.js +11 -5
- package/dist/DboBuilder/TableHandler/insert/insert.js.map +1 -1
- package/dist/DboBuilder/TableHandler/isApplicableHook.d.ts +5 -0
- package/dist/DboBuilder/TableHandler/isApplicableHook.d.ts.map +1 -0
- package/dist/DboBuilder/TableHandler/isApplicableHook.js +17 -0
- package/dist/DboBuilder/TableHandler/isApplicableHook.js.map +1 -0
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +2 -2
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js.map +1 -1
- package/dist/DboBuilder/TableHandler/update.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/update.js +4 -1
- package/dist/DboBuilder/TableHandler/update.js.map +1 -1
- package/dist/PublishParser/publishTypesAndUtils.d.ts +23 -1
- package/dist/PublishParser/publishTypesAndUtils.d.ts.map +1 -1
- package/dist/PublishParser/publishTypesAndUtils.js.map +1 -1
- package/dist/TableConfig/TableConfig.d.ts +3 -2
- package/dist/TableConfig/TableConfig.d.ts.map +1 -1
- package/dist/TableConfig/TableConfig.js.map +1 -1
- package/dist/TableConfig/getCreateSchemaQueries.d.ts +2 -0
- package/dist/TableConfig/getCreateSchemaQueries.d.ts.map +1 -1
- package/dist/TableConfig/getTableConfigSchemaQueries.d.ts +2 -0
- package/dist/TableConfig/getTableConfigSchemaQueries.d.ts.map +1 -1
- package/lib/DboBuilder/TableHandler/TableHandler.ts +58 -5
- package/lib/DboBuilder/TableHandler/delete.ts +3 -3
- package/lib/DboBuilder/TableHandler/executeAfterHooksCheckAndPostValidation.ts +124 -0
- package/lib/DboBuilder/TableHandler/insert/insert.ts +21 -7
- package/lib/DboBuilder/TableHandler/isApplicableHook.ts +28 -0
- package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +2 -2
- package/lib/DboBuilder/TableHandler/update.ts +5 -1
- package/lib/PublishParser/publishTypesAndUtils.ts +23 -1
- package/lib/TableConfig/TableConfig.ts +3 -2
- package/package.json +1 -1
- package/dist/DboBuilder/TableHandler/executeHooksCheckAndPostValidation.d.ts.map +0 -1
- package/dist/DboBuilder/TableHandler/executeHooksCheckAndPostValidation.js +0 -69
- package/dist/DboBuilder/TableHandler/executeHooksCheckAndPostValidation.js.map +0 -1
- package/lib/DboBuilder/TableHandler/executeHooksCheckAndPostValidation.ts +0 -88
|
@@ -5,7 +5,7 @@ import type { LocalParams } from "../DboBuilder";
|
|
|
5
5
|
import { rejectWithPGClientError, withUserRLS } from "../DboBuilder";
|
|
6
6
|
import type { TableHandler } from "./TableHandler";
|
|
7
7
|
import { getSelectItemQuery } from "./TableHandler";
|
|
8
|
-
import {
|
|
8
|
+
import { executeAfterHooksCheckAndPostValidation } from "./executeAfterHooksCheckAndPostValidation";
|
|
9
9
|
|
|
10
10
|
type RunInsertUpdateQueryArgs = {
|
|
11
11
|
tableHandler: TableHandler;
|
|
@@ -126,7 +126,7 @@ export const runInsertUpdateQuery = async (args: RunInsertUpdateQueryArgs) => {
|
|
|
126
126
|
|
|
127
127
|
const rows = result.modified ?? [];
|
|
128
128
|
|
|
129
|
-
await
|
|
129
|
+
await executeAfterHooksCheckAndPostValidation({
|
|
130
130
|
tableHandler,
|
|
131
131
|
operation: command === "insert" ? { name: "insert", rule } : { name: "update", rule },
|
|
132
132
|
localParams,
|
|
@@ -33,7 +33,7 @@ export async function update(
|
|
|
33
33
|
),
|
|
34
34
|
);
|
|
35
35
|
const rule = tableRules?.[ACTION];
|
|
36
|
-
if (this.shouldWrapInTx({ name: ACTION, rule }, localParams).shouldWrap) {
|
|
36
|
+
if (this.shouldWrapInTx({ name: ACTION, rule }, localParams, [_newData]).shouldWrap) {
|
|
37
37
|
return wrapInTx();
|
|
38
38
|
}
|
|
39
39
|
|
|
@@ -76,6 +76,9 @@ export async function update(
|
|
|
76
76
|
);
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
+
const beforeResult = await this.beforeEach(newData, localParams, "update");
|
|
80
|
+
newData = beforeResult.row;
|
|
81
|
+
|
|
79
82
|
const { data, allowedCols } = prepareNewData({
|
|
80
83
|
row: newData,
|
|
81
84
|
forcedData,
|
|
@@ -205,6 +208,7 @@ export async function update(
|
|
|
205
208
|
data: { filter, _newData, params },
|
|
206
209
|
duration: Date.now() - start,
|
|
207
210
|
});
|
|
211
|
+
beforeResult.successCallbacks.forEach((cb) => cb());
|
|
208
212
|
return result;
|
|
209
213
|
} catch (e) {
|
|
210
214
|
await this._log({
|
|
@@ -55,6 +55,12 @@ export type UpdateRequestData<R extends AnyObject = AnyObject> =
|
|
|
55
55
|
| UpdateRequestDataOne<R>
|
|
56
56
|
| UpdateRequestDataBatch<R>;
|
|
57
57
|
|
|
58
|
+
export type ValidateBeforeRowArgsCommon<R = AnyObject, DBX = DBHandlerServer> = {
|
|
59
|
+
dbx: DBX;
|
|
60
|
+
tx: pgPromise.ITask<{}> | DB;
|
|
61
|
+
command: "insert" | "update";
|
|
62
|
+
data: Partial<R>;
|
|
63
|
+
};
|
|
58
64
|
export type ValidateRowArgsCommon<R = AnyObject, DBX = DBHandlerServer> = {
|
|
59
65
|
row: R;
|
|
60
66
|
dbx: DBX;
|
|
@@ -74,9 +80,25 @@ export type ValidateRowArgsCommon<R = AnyObject, DBX = DBHandlerServer> = {
|
|
|
74
80
|
}
|
|
75
81
|
);
|
|
76
82
|
|
|
83
|
+
export type BeforeEachTsTrigger<R, DBX> = {
|
|
84
|
+
commands: Partial<Record<"insert" | "update", 1>>;
|
|
85
|
+
/**
|
|
86
|
+
* Will only run this trigger if the insert/update provides non null values for these fields.
|
|
87
|
+
*/
|
|
88
|
+
changedFields?: (keyof R)[];
|
|
89
|
+
validate: (
|
|
90
|
+
params: ValidateBeforeRowArgsCommon<R, DBX> & {
|
|
91
|
+
localParams: undefined | LocalParams;
|
|
92
|
+
},
|
|
93
|
+
) => Promise<void | { row: R; onInserted?: () => void }>;
|
|
94
|
+
};
|
|
95
|
+
|
|
77
96
|
export type AfterEachTsTrigger<R, DBX> = {
|
|
78
97
|
commands: Partial<Record<"insert" | "update" | "delete", 1>>;
|
|
79
|
-
|
|
98
|
+
/**
|
|
99
|
+
* Will only run this trigger if the insert/update provides non null values for these fields.
|
|
100
|
+
*/
|
|
101
|
+
changedFields?: (keyof R)[];
|
|
80
102
|
validate: (
|
|
81
103
|
params: ValidateRowArgsCommon<R, DBX> & {
|
|
82
104
|
localParams: undefined | LocalParams;
|
|
@@ -16,10 +16,10 @@ import type { DB, DBHandlerServer, Prostgles } from "../Prostgles";
|
|
|
16
16
|
import type {
|
|
17
17
|
AfterAllTsTrigger,
|
|
18
18
|
AfterEachTsTrigger,
|
|
19
|
+
BeforeEachTsTrigger,
|
|
19
20
|
InsertRule,
|
|
20
21
|
SyncConfig,
|
|
21
22
|
ValidateRowArgsCommon,
|
|
22
|
-
ValidateRowsArgsCommon,
|
|
23
23
|
} from "../PublishParser/PublishParser";
|
|
24
24
|
import {
|
|
25
25
|
DEFAULT_SYNC_BATCH_SIZE,
|
|
@@ -63,11 +63,12 @@ type BaseTableDefinition<R = AnyObject, DBX = DBHandlerServer> = {
|
|
|
63
63
|
hooks?: {
|
|
64
64
|
/**
|
|
65
65
|
* Hook used to run custom logic before inserting a row.
|
|
66
|
-
* The returned row must satisfy the table schema
|
|
66
|
+
* The returned row must satisfy the table schema.
|
|
67
67
|
*/
|
|
68
68
|
getPreInsertRow?: (
|
|
69
69
|
args: GetPreInsertRowArgs,
|
|
70
70
|
) => Promise<{ row: AnyObject; onInserted: Promise<void> }>;
|
|
71
|
+
beforeEach?: BeforeEachTsTrigger<R, DBX>[];
|
|
71
72
|
afterEach?: AfterEachTsTrigger<R, DBX>[];
|
|
72
73
|
afterAll?: AfterAllTsTrigger<R, DBX>[];
|
|
73
74
|
};
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"executeHooksCheckAndPostValidation.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/TableHandler/executeHooksCheckAndPostValidation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAE5F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,eAAO,MAAM,kCAAkC,GAAU,uDAMtD;IACD,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EACL;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,SAAS,GAAG,UAAU,CAAA;KAAE,GAChD;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,SAAS,GAAG,UAAU,CAAA;KAAE,GAChD;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,SAAS,GAAG,UAAU,CAAA;KAAE,CAAC;IACrD,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;IAC9B,IAAI,EAAE,SAAS,EAAE,CAAC;CACnB,kBAkEA,CAAC"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.executeHooksCheckAndPostValidation = void 0;
|
|
4
|
-
const utils_1 = require("../../utils/utils");
|
|
5
|
-
const executeHooksCheckAndPostValidation = async ({ tableHandler, operation, data, localParams, rows, }) => {
|
|
6
|
-
const command = operation.name;
|
|
7
|
-
const transaction = tableHandler.getTransaction(localParams);
|
|
8
|
-
const hooks = tableHandler.getHooksAndChecks(operation, localParams);
|
|
9
|
-
let changedFieldsSet = undefined;
|
|
10
|
-
const getChangedFieldsSet = () => {
|
|
11
|
-
changedFieldsSet ??= new Set(((0, utils_1.isArray)(data) ? data : [data]).map((row) => Object.keys(row)).flat());
|
|
12
|
-
return changedFieldsSet;
|
|
13
|
-
};
|
|
14
|
-
const applicableHooks = hooks.filter((hook) => {
|
|
15
|
-
if (hook.type === "checkFilter")
|
|
16
|
-
return false;
|
|
17
|
-
if (hook.type === "postValidate")
|
|
18
|
-
return true;
|
|
19
|
-
const { commands, changedFields } = hook;
|
|
20
|
-
return (commands[command] &&
|
|
21
|
-
(!changedFields || changedFields.some((f) => getChangedFieldsSet().has(f))));
|
|
22
|
-
});
|
|
23
|
-
if (applicableHooks.length) {
|
|
24
|
-
if (!transaction) {
|
|
25
|
-
throw new Error("Unexpected: hooks/postValidate require a transaction dbo handler");
|
|
26
|
-
}
|
|
27
|
-
const txParams = {
|
|
28
|
-
tx: transaction.t,
|
|
29
|
-
dbx: transaction.dbTX,
|
|
30
|
-
};
|
|
31
|
-
for (const row of rows) {
|
|
32
|
-
const commonParams = {
|
|
33
|
-
row: row,
|
|
34
|
-
...txParams,
|
|
35
|
-
command,
|
|
36
|
-
data,
|
|
37
|
-
};
|
|
38
|
-
for (const hook of applicableHooks) {
|
|
39
|
-
if (hook.type === "afterEach") {
|
|
40
|
-
await hook.validate({
|
|
41
|
-
...commonParams,
|
|
42
|
-
localParams,
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
else if (hook.type === "postValidate") {
|
|
46
|
-
if (!localParams)
|
|
47
|
-
throw new Error("Unexpected: no localParams for postValidate");
|
|
48
|
-
await hook.validate({
|
|
49
|
-
...commonParams,
|
|
50
|
-
localParams,
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
for (const hook of applicableHooks) {
|
|
56
|
-
if (hook.type === "afterAll") {
|
|
57
|
-
await hook.validate({
|
|
58
|
-
...txParams,
|
|
59
|
-
command,
|
|
60
|
-
data: Array.isArray(data) ? data : [data],
|
|
61
|
-
rows,
|
|
62
|
-
localParams,
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
exports.executeHooksCheckAndPostValidation = executeHooksCheckAndPostValidation;
|
|
69
|
-
//# sourceMappingURL=executeHooksCheckAndPostValidation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"executeHooksCheckAndPostValidation.js","sourceRoot":"","sources":["../../../lib/DboBuilder/TableHandler/executeHooksCheckAndPostValidation.ts"],"names":[],"mappings":";;;AAEA,6CAA4C;AAIrC,MAAM,kCAAkC,GAAG,KAAK,EAAE,EACvD,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,WAAW,EACX,IAAI,GAUL,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC;IAC/B,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,YAAY,CAAC,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACrE,IAAI,gBAAgB,GAAG,SAAoC,CAAC;IAC5D,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC/B,gBAAgB,KAAK,IAAI,GAAG,CAC1B,CAAC,IAAA,eAAO,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CACtE,CAAC;QACF,OAAO,gBAAgB,CAAC;IAC1B,CAAC,CAAC;IACF,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa;YAAE,OAAO,KAAK,CAAC;QAC9C,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc;YAAE,OAAO,IAAI,CAAC;QAC9C,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;QACzC,OAAO,CACL,QAAQ,CAAC,OAAO,CAAC;YACjB,CAAC,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5E,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACtF,CAAC;QAED,MAAM,QAAQ,GAAG;YACf,EAAE,EAAE,WAAW,CAAC,CAAC;YACjB,GAAG,EAAE,WAAW,CAAC,IAAI;SACtB,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,YAAY,GAAG;gBACnB,GAAG,EAAE,GAAG;gBACR,GAAG,QAAQ;gBACX,OAAO;gBACP,IAAI;aACI,CAAC;YACX,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;gBACnC,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBAC9B,MAAM,IAAI,CAAC,QAAQ,CAAC;wBAClB,GAAG,YAAY;wBACf,WAAW;qBACZ,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBACxC,IAAI,CAAC,WAAW;wBAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;oBACjF,MAAM,IAAI,CAAC,QAAQ,CAAC;wBAClB,GAAG,YAAY;wBACf,WAAW;qBACZ,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC7B,MAAM,IAAI,CAAC,QAAQ,CAAC;oBAClB,GAAG,QAAQ;oBACX,OAAO;oBACP,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBACzC,IAAI;oBACJ,WAAW;iBACZ,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAjFW,QAAA,kCAAkC,sCAiF7C"}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import type { AnyObject } from "prostgles-types";
|
|
2
|
-
import type { DeleteRule, InsertRule, UpdateRule } from "../../PublishParser/PublishParser";
|
|
3
|
-
import { isArray } from "../../utils/utils";
|
|
4
|
-
import type { LocalParams } from "../DboBuilder";
|
|
5
|
-
import type { TableHandler } from "./TableHandler";
|
|
6
|
-
|
|
7
|
-
export const executeHooksCheckAndPostValidation = async ({
|
|
8
|
-
tableHandler,
|
|
9
|
-
operation,
|
|
10
|
-
data,
|
|
11
|
-
localParams,
|
|
12
|
-
rows,
|
|
13
|
-
}: {
|
|
14
|
-
tableHandler: TableHandler;
|
|
15
|
-
operation:
|
|
16
|
-
| { name: "delete"; rule: undefined | DeleteRule }
|
|
17
|
-
| { name: "update"; rule: undefined | UpdateRule }
|
|
18
|
-
| { name: "insert"; rule: undefined | InsertRule };
|
|
19
|
-
localParams: LocalParams | undefined;
|
|
20
|
-
data: AnyObject | AnyObject[];
|
|
21
|
-
rows: AnyObject[];
|
|
22
|
-
}) => {
|
|
23
|
-
const command = operation.name;
|
|
24
|
-
const transaction = tableHandler.getTransaction(localParams);
|
|
25
|
-
const hooks = tableHandler.getHooksAndChecks(operation, localParams);
|
|
26
|
-
let changedFieldsSet = undefined as undefined | Set<string>;
|
|
27
|
-
const getChangedFieldsSet = () => {
|
|
28
|
-
changedFieldsSet ??= new Set<string>(
|
|
29
|
-
(isArray(data) ? data : [data]).map((row) => Object.keys(row)).flat(),
|
|
30
|
-
);
|
|
31
|
-
return changedFieldsSet;
|
|
32
|
-
};
|
|
33
|
-
const applicableHooks = hooks.filter((hook) => {
|
|
34
|
-
if (hook.type === "checkFilter") return false;
|
|
35
|
-
if (hook.type === "postValidate") return true;
|
|
36
|
-
const { commands, changedFields } = hook;
|
|
37
|
-
return (
|
|
38
|
-
commands[command] &&
|
|
39
|
-
(!changedFields || changedFields.some((f) => getChangedFieldsSet().has(f)))
|
|
40
|
-
);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
if (applicableHooks.length) {
|
|
44
|
-
if (!transaction) {
|
|
45
|
-
throw new Error("Unexpected: hooks/postValidate require a transaction dbo handler");
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const txParams = {
|
|
49
|
-
tx: transaction.t,
|
|
50
|
-
dbx: transaction.dbTX,
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
for (const row of rows) {
|
|
54
|
-
const commonParams = {
|
|
55
|
-
row: row,
|
|
56
|
-
...txParams,
|
|
57
|
-
command,
|
|
58
|
-
data,
|
|
59
|
-
} as const;
|
|
60
|
-
for (const hook of applicableHooks) {
|
|
61
|
-
if (hook.type === "afterEach") {
|
|
62
|
-
await hook.validate({
|
|
63
|
-
...commonParams,
|
|
64
|
-
localParams,
|
|
65
|
-
});
|
|
66
|
-
} else if (hook.type === "postValidate") {
|
|
67
|
-
if (!localParams) throw new Error("Unexpected: no localParams for postValidate");
|
|
68
|
-
await hook.validate({
|
|
69
|
-
...commonParams,
|
|
70
|
-
localParams,
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
for (const hook of applicableHooks) {
|
|
77
|
-
if (hook.type === "afterAll") {
|
|
78
|
-
await hook.validate({
|
|
79
|
-
...txParams,
|
|
80
|
-
command,
|
|
81
|
-
data: Array.isArray(data) ? data : [data],
|
|
82
|
-
rows,
|
|
83
|
-
localParams,
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
};
|