@nocobase/plugin-workflow 0.7.0-alpha.17 → 0.7.0-alpha.20
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/esm/triggers/model.d.ts
CHANGED
package/esm/triggers/model.js
CHANGED
|
@@ -7,26 +7,35 @@ const MODE_BITMAP_EVENTS = new Map();
|
|
|
7
7
|
MODE_BITMAP_EVENTS.set(MODE_BITMAP.CREATE, 'afterCreate');
|
|
8
8
|
MODE_BITMAP_EVENTS.set(MODE_BITMAP.UPDATE, 'afterUpdate');
|
|
9
9
|
MODE_BITMAP_EVENTS.set(MODE_BITMAP.DESTROY, 'afterDestroy');
|
|
10
|
+
// async function, should return promise
|
|
11
|
+
function bindHandler(callback) {
|
|
12
|
+
const { condition, changed } = this.config;
|
|
13
|
+
return (data, options) => {
|
|
14
|
+
// NOTE: if no configured fields changed, do not trigger
|
|
15
|
+
if (changed && changed.length && changed.every(name => !data.changed(name))) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
// NOTE: if no configured condition match, do not trigger
|
|
19
|
+
if (condition && condition.$and.length) {
|
|
20
|
+
// TODO: check all conditions in condition against data
|
|
21
|
+
// const calculation = toCalculation(condition);
|
|
22
|
+
}
|
|
23
|
+
return callback({ data: data.get() }, options);
|
|
24
|
+
};
|
|
25
|
+
}
|
|
10
26
|
export default {
|
|
11
27
|
name: 'model',
|
|
12
28
|
on(callback) {
|
|
13
29
|
const { database } = this.constructor;
|
|
14
|
-
const { collection, mode
|
|
30
|
+
const { collection, mode } = this.config;
|
|
15
31
|
const Collection = database.getCollection(collection);
|
|
16
32
|
if (!Collection) {
|
|
17
33
|
return;
|
|
18
34
|
}
|
|
19
|
-
// async function, should return promise
|
|
20
|
-
const handler = (data, options) => {
|
|
21
|
-
if (filter) {
|
|
22
|
-
// TODO: check all conditions in filter against data
|
|
23
|
-
}
|
|
24
|
-
return callback({ data: data.get() }, options);
|
|
25
|
-
};
|
|
26
35
|
// TODO: duplication when mode change should be considered
|
|
27
36
|
for (let [key, event] of MODE_BITMAP_EVENTS.entries()) {
|
|
28
37
|
if (mode & key) {
|
|
29
|
-
Collection.model.addHook(event, this.getHookId(),
|
|
38
|
+
Collection.model.addHook(event, this.getHookId(), bindHandler.call(this, callback));
|
|
30
39
|
}
|
|
31
40
|
}
|
|
32
41
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/triggers/model.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;CACX,CAAC;AAEF,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;AACrC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAC1D,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAC1D,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAE5D,
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/triggers/model.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;CACX,CAAC;AAEF,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;AACrC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAC1D,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAC1D,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAE5D,wCAAwC;AACxC,SAAS,WAAW,CAAsB,QAAkB;IAC1D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3C,OAAO,CAAC,IAAS,EAAE,OAAO,EAAE,EAAE;QAC5B,wDAAwD;QACxD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;YAC3E,OAAO;SACR;QACD,yDAAyD;QACzD,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE;YACtC,uDAAuD;YACvD,gDAAgD;SACjD;QAED,OAAO,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC,CAAC;AACJ,CAAC;AAED,eAAe;IACb,IAAI,EAAE,OAAO;IACb,EAAE,CAAsB,QAAkB;QACxC,MAAM,EAAE,QAAQ,EAAE,GAAyB,IAAI,CAAC,WAAW,CAAC;QAC5D,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE;YACf,OAAO;SACR;QACD,0DAA0D;QAC1D,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,kBAAkB,CAAC,OAAO,EAAE,EAAE;YACrD,IAAI,IAAI,GAAG,GAAG,EAAE;gBACd,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;aACrF;SACF;IACH,CAAC;IACD,GAAG;QACD,MAAM,EAAE,QAAQ,EAAE,GAAyB,IAAI,CAAC,WAAW,CAAC;QAC5D,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE;YACf,OAAO;SACR;QACD,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,kBAAkB,CAAC,OAAO,EAAE,EAAE;YACrD,IAAI,IAAI,GAAG,GAAG,EAAE;gBACd,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;aACtD;SACF;IACH,CAAC;CACF,CAAA","sourcesContent":["import WorkflowModel from \"../models/Workflow\";\n\nexport interface ModelChangeTriggerConfig {\n collection: string;\n mode: number;\n // TODO: ICondition\n condition: any;\n}\n\nconst MODE_BITMAP = {\n CREATE: 1,\n UPDATE: 2,\n DESTROY: 4\n};\n\nconst MODE_BITMAP_EVENTS = new Map();\nMODE_BITMAP_EVENTS.set(MODE_BITMAP.CREATE, 'afterCreate');\nMODE_BITMAP_EVENTS.set(MODE_BITMAP.UPDATE, 'afterUpdate');\nMODE_BITMAP_EVENTS.set(MODE_BITMAP.DESTROY, 'afterDestroy');\n\n// async function, should return promise\nfunction bindHandler(this: WorkflowModel, callback: Function) {\n const { condition, changed } = this.config;\n return (data: any, options) => {\n // NOTE: if no configured fields changed, do not trigger\n if (changed && changed.length && changed.every(name => !data.changed(name))) {\n return;\n }\n // NOTE: if no configured condition match, do not trigger\n if (condition && condition.$and.length) {\n // TODO: check all conditions in condition against data\n // const calculation = toCalculation(condition);\n }\n\n return callback({ data: data.get() }, options);\n };\n}\n\nexport default {\n name: 'model',\n on(this: WorkflowModel, callback: Function) {\n const { database } = <typeof WorkflowModel>this.constructor;\n const { collection, mode } = this.config;\n const Collection = database.getCollection(collection);\n if (!Collection) {\n return;\n }\n // TODO: duplication when mode change should be considered\n for (let [key, event] of MODE_BITMAP_EVENTS.entries()) {\n if (mode & key) {\n Collection.model.addHook(event, this.getHookId(), bindHandler.call(this, callback));\n }\n }\n },\n off(this: WorkflowModel) {\n const { database } = <typeof WorkflowModel>this.constructor;\n const { collection, mode } = this.config;\n const Collection = database.getCollection(collection);\n if (!Collection) {\n return;\n }\n for (let [key, event] of MODE_BITMAP_EVENTS.entries()) {\n if (mode & key) {\n Collection.model.removeHook(event, this.getHookId());\n }\n }\n }\n}\n"]}
|
package/lib/triggers/model.d.ts
CHANGED
package/lib/triggers/model.js
CHANGED
|
@@ -9,26 +9,35 @@ const MODE_BITMAP_EVENTS = new Map();
|
|
|
9
9
|
MODE_BITMAP_EVENTS.set(MODE_BITMAP.CREATE, 'afterCreate');
|
|
10
10
|
MODE_BITMAP_EVENTS.set(MODE_BITMAP.UPDATE, 'afterUpdate');
|
|
11
11
|
MODE_BITMAP_EVENTS.set(MODE_BITMAP.DESTROY, 'afterDestroy');
|
|
12
|
+
// async function, should return promise
|
|
13
|
+
function bindHandler(callback) {
|
|
14
|
+
const { condition, changed } = this.config;
|
|
15
|
+
return (data, options) => {
|
|
16
|
+
// NOTE: if no configured fields changed, do not trigger
|
|
17
|
+
if (changed && changed.length && changed.every(name => !data.changed(name))) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// NOTE: if no configured condition match, do not trigger
|
|
21
|
+
if (condition && condition.$and.length) {
|
|
22
|
+
// TODO: check all conditions in condition against data
|
|
23
|
+
// const calculation = toCalculation(condition);
|
|
24
|
+
}
|
|
25
|
+
return callback({ data: data.get() }, options);
|
|
26
|
+
};
|
|
27
|
+
}
|
|
12
28
|
exports.default = {
|
|
13
29
|
name: 'model',
|
|
14
30
|
on(callback) {
|
|
15
31
|
const { database } = this.constructor;
|
|
16
|
-
const { collection, mode
|
|
32
|
+
const { collection, mode } = this.config;
|
|
17
33
|
const Collection = database.getCollection(collection);
|
|
18
34
|
if (!Collection) {
|
|
19
35
|
return;
|
|
20
36
|
}
|
|
21
|
-
// async function, should return promise
|
|
22
|
-
const handler = (data, options) => {
|
|
23
|
-
if (filter) {
|
|
24
|
-
// TODO: check all conditions in filter against data
|
|
25
|
-
}
|
|
26
|
-
return callback({ data: data.get() }, options);
|
|
27
|
-
};
|
|
28
37
|
// TODO: duplication when mode change should be considered
|
|
29
38
|
for (let [key, event] of MODE_BITMAP_EVENTS.entries()) {
|
|
30
39
|
if (mode & key) {
|
|
31
|
-
Collection.model.addHook(event, this.getHookId(),
|
|
40
|
+
Collection.model.addHook(event, this.getHookId(), bindHandler.call(this, callback));
|
|
32
41
|
}
|
|
33
42
|
}
|
|
34
43
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/triggers/model.ts"],"names":[],"mappings":";;AASA,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;CACX,CAAC;AAEF,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;AACrC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAC1D,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAC1D,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAE5D,
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/triggers/model.ts"],"names":[],"mappings":";;AASA,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;CACX,CAAC;AAEF,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;AACrC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAC1D,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAC1D,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAE5D,wCAAwC;AACxC,SAAS,WAAW,CAAsB,QAAkB;IAC1D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3C,OAAO,CAAC,IAAS,EAAE,OAAO,EAAE,EAAE;QAC5B,wDAAwD;QACxD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;YAC3E,OAAO;SACR;QACD,yDAAyD;QACzD,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE;YACtC,uDAAuD;YACvD,gDAAgD;SACjD;QAED,OAAO,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC,CAAC;AACJ,CAAC;AAED,kBAAe;IACb,IAAI,EAAE,OAAO;IACb,EAAE,CAAsB,QAAkB;QACxC,MAAM,EAAE,QAAQ,EAAE,GAAyB,IAAI,CAAC,WAAW,CAAC;QAC5D,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE;YACf,OAAO;SACR;QACD,0DAA0D;QAC1D,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,kBAAkB,CAAC,OAAO,EAAE,EAAE;YACrD,IAAI,IAAI,GAAG,GAAG,EAAE;gBACd,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;aACrF;SACF;IACH,CAAC;IACD,GAAG;QACD,MAAM,EAAE,QAAQ,EAAE,GAAyB,IAAI,CAAC,WAAW,CAAC;QAC5D,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE;YACf,OAAO;SACR;QACD,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,kBAAkB,CAAC,OAAO,EAAE,EAAE;YACrD,IAAI,IAAI,GAAG,GAAG,EAAE;gBACd,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;aACtD;SACF;IACH,CAAC;CACF,CAAA","sourcesContent":["import WorkflowModel from \"../models/Workflow\";\n\nexport interface ModelChangeTriggerConfig {\n collection: string;\n mode: number;\n // TODO: ICondition\n condition: any;\n}\n\nconst MODE_BITMAP = {\n CREATE: 1,\n UPDATE: 2,\n DESTROY: 4\n};\n\nconst MODE_BITMAP_EVENTS = new Map();\nMODE_BITMAP_EVENTS.set(MODE_BITMAP.CREATE, 'afterCreate');\nMODE_BITMAP_EVENTS.set(MODE_BITMAP.UPDATE, 'afterUpdate');\nMODE_BITMAP_EVENTS.set(MODE_BITMAP.DESTROY, 'afterDestroy');\n\n// async function, should return promise\nfunction bindHandler(this: WorkflowModel, callback: Function) {\n const { condition, changed } = this.config;\n return (data: any, options) => {\n // NOTE: if no configured fields changed, do not trigger\n if (changed && changed.length && changed.every(name => !data.changed(name))) {\n return;\n }\n // NOTE: if no configured condition match, do not trigger\n if (condition && condition.$and.length) {\n // TODO: check all conditions in condition against data\n // const calculation = toCalculation(condition);\n }\n\n return callback({ data: data.get() }, options);\n };\n}\n\nexport default {\n name: 'model',\n on(this: WorkflowModel, callback: Function) {\n const { database } = <typeof WorkflowModel>this.constructor;\n const { collection, mode } = this.config;\n const Collection = database.getCollection(collection);\n if (!Collection) {\n return;\n }\n // TODO: duplication when mode change should be considered\n for (let [key, event] of MODE_BITMAP_EVENTS.entries()) {\n if (mode & key) {\n Collection.model.addHook(event, this.getHookId(), bindHandler.call(this, callback));\n }\n }\n },\n off(this: WorkflowModel) {\n const { database } = <typeof WorkflowModel>this.constructor;\n const { collection, mode } = this.config;\n const Collection = database.getCollection(collection);\n if (!Collection) {\n return;\n }\n for (let [key, event] of MODE_BITMAP_EVENTS.entries()) {\n if (mode & key) {\n Collection.model.removeHook(event, this.getHookId());\n }\n }\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocobase/plugin-workflow",
|
|
3
|
-
"version": "0.7.0-alpha.
|
|
3
|
+
"version": "0.7.0-alpha.20",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"licenses": [
|
|
@@ -15,14 +15,14 @@
|
|
|
15
15
|
"build:esm": "tsc --project tsconfig.build.json --module es2015 --outDir esm"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@nocobase/actions": "0.7.0-alpha.
|
|
19
|
-
"@nocobase/database": "0.7.0-alpha.
|
|
20
|
-
"@nocobase/server": "0.7.0-alpha.
|
|
21
|
-
"@nocobase/utils": "0.7.0-alpha.
|
|
18
|
+
"@nocobase/actions": "0.7.0-alpha.20",
|
|
19
|
+
"@nocobase/database": "0.7.0-alpha.20",
|
|
20
|
+
"@nocobase/server": "0.7.0-alpha.20",
|
|
21
|
+
"@nocobase/utils": "0.7.0-alpha.20",
|
|
22
22
|
"json-templates": "^4.2.0"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@nocobase/test": "0.7.0-alpha.
|
|
25
|
+
"@nocobase/test": "0.7.0-alpha.20"
|
|
26
26
|
},
|
|
27
|
-
"gitHead": "
|
|
27
|
+
"gitHead": "d2e0cbdb5d26ba66e87a9d7660b10f3ec30a3c4b"
|
|
28
28
|
}
|