@voxgig/system 0.7.0 → 0.8.0
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/lib/utility.js +5 -4
- package/dist/lib/utility.js.map +1 -1
- package/dist/system.d.ts +2 -1
- package/dist/system.js +35 -6
- package/dist/system.js.map +1 -1
- package/lib/utility.ts +3 -6
- package/package.json +3 -2
- package/system.ts +44 -6
package/dist/lib/utility.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/* Copyright © 2022 Voxgig Ltd, MIT License. */
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
3
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
7
|
exports.Utility = void 0;
|
|
5
8
|
const jsonic_next_1 = require("@jsonic/jsonic-next");
|
|
6
|
-
|
|
7
|
-
const Patrun = require('patrun');
|
|
9
|
+
const patrun_1 = __importDefault(require("patrun"));
|
|
8
10
|
// TODO: perform this during model build?
|
|
9
11
|
function srvmsgs(srv, model) {
|
|
10
12
|
const allmsgs = listmsgs(model.main.msg);
|
|
11
|
-
|
|
12
|
-
const allpat = Patrun();
|
|
13
|
+
const allpat = (0, patrun_1.default)({});
|
|
13
14
|
allmsgs.forEach((msg) => allpat.add(msg.props, msg));
|
|
14
15
|
// TODO: need an option to listmsgs to just list patterns
|
|
15
16
|
const srvpats = listmsgs(srv.in).map(m => m.props);
|
package/dist/lib/utility.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utility.js","sourceRoot":"","sources":["../../lib/utility.ts"],"names":[],"mappings":";AAAA,+CAA+C
|
|
1
|
+
{"version":3,"file":"utility.js","sourceRoot":"","sources":["../../lib/utility.ts"],"names":[],"mappings":"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"}
|
package/dist/system.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { Msg } from './lib/types';
|
|
|
2
2
|
import { Utility } from './lib/utility';
|
|
3
3
|
import { MakeSrv } from './srv/make';
|
|
4
4
|
declare function messages(seneca: any, options: any, reload: any): void;
|
|
5
|
+
declare function gubuify(params: any, Gubu: any): any;
|
|
5
6
|
declare function prepare(seneca: any, require: any): void;
|
|
6
7
|
declare function Local(this: any, options: any): void;
|
|
7
8
|
type LiveOptions = {
|
|
@@ -17,4 +18,4 @@ declare const System: {
|
|
|
17
18
|
prepare: typeof prepare;
|
|
18
19
|
};
|
|
19
20
|
export type { Msg };
|
|
20
|
-
export { System, MakeSrv, Utility, Local, Live, };
|
|
21
|
+
export { gubuify, System, MakeSrv, Utility, Local, Live, };
|
package/dist/system.js
CHANGED
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
5
|
};
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.Live = exports.Local = exports.Utility = exports.MakeSrv = exports.System = void 0;
|
|
7
|
+
exports.Live = exports.Local = exports.Utility = exports.MakeSrv = exports.System = exports.gubuify = void 0;
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const fs_1 = __importDefault(require("fs"));
|
|
10
10
|
const utility_1 = require("./lib/utility");
|
|
@@ -17,12 +17,41 @@ function messages(seneca, options, reload) {
|
|
|
17
17
|
let model = seneca.context.model;
|
|
18
18
|
let srvmodel = model.main.srv[srvname];
|
|
19
19
|
let msgs = srvmsgs(srvmodel, model);
|
|
20
|
-
// console.log('SYSTEM: MESSAGES FOUND', srvname,
|
|
21
|
-
// msgs.map(m=>m.pattern))
|
|
22
20
|
for (let msg of msgs) {
|
|
23
|
-
|
|
21
|
+
let action = reload(actpath(msg), { options });
|
|
22
|
+
let params = {};
|
|
23
|
+
if (msg.meta.params) {
|
|
24
|
+
let shape = gubuify(seneca.util.deep(msg.meta.params), seneca.util.Gubu);
|
|
25
|
+
params = shape.node().v;
|
|
26
|
+
}
|
|
27
|
+
seneca.message(msg.pattern, params, action);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Convert string values into Gubu builder expressions.
|
|
31
|
+
function gubuify(params, Gubu) {
|
|
32
|
+
if (null == params) {
|
|
33
|
+
return params;
|
|
34
|
+
}
|
|
35
|
+
for (let pn in params) {
|
|
36
|
+
let m = null;
|
|
37
|
+
let pv = params[pn];
|
|
38
|
+
if ('object' === typeof pv) {
|
|
39
|
+
params[pn] = gubuify(pv, Gubu);
|
|
40
|
+
}
|
|
41
|
+
else if ('string' === typeof pv &&
|
|
42
|
+
-1 === pn.indexOf(':') && ('function' === typeof Gubu[(m = ((pv.match(/\s*([A-Z]\w+)([(.\s]|$)/) || []))[1])] ||
|
|
43
|
+
({ String: 1, Number: 1, Boolean: 1 }[m]))) {
|
|
44
|
+
let png = pn + ':' + pv;
|
|
45
|
+
params[png] = pv;
|
|
46
|
+
delete params[pn];
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
params[pn] = Gubu(pv);
|
|
50
|
+
}
|
|
24
51
|
}
|
|
52
|
+
return Gubu(params);
|
|
25
53
|
}
|
|
54
|
+
exports.gubuify = gubuify;
|
|
26
55
|
function actpath(msg) {
|
|
27
56
|
if (msg.meta.file) {
|
|
28
57
|
return msg.meta.file;
|
|
@@ -52,7 +81,7 @@ function Local(options) {
|
|
|
52
81
|
for (const entry of Object.entries(model.main.srv)) {
|
|
53
82
|
let name = entry[0];
|
|
54
83
|
let srv = entry[1];
|
|
55
|
-
let srvpath = path_1.default.join(folder, name, name + '-srv');
|
|
84
|
+
let srvpath = path_1.default.join(folder, name, name + '-srv.js');
|
|
56
85
|
if (fs_1.default.existsSync(srvpath)) {
|
|
57
86
|
let srvopts = deep({}, srv.options, srvOptions[name]);
|
|
58
87
|
this.root.use(srvpath, srvopts);
|
|
@@ -88,7 +117,7 @@ function useSrvs(seneca, srvs, options, model) {
|
|
|
88
117
|
const srvOptions = options.options || {};
|
|
89
118
|
for (const srv of srvs) {
|
|
90
119
|
let name = srv.name;
|
|
91
|
-
let srvpath = path_1.default.join(folder, name, name + '-srv');
|
|
120
|
+
let srvpath = path_1.default.join(folder, name, name + '-srv.js');
|
|
92
121
|
if (fs_1.default.existsSync(srvpath)) {
|
|
93
122
|
let srvopts = deep({}, srv.options, srvOptions[name]);
|
|
94
123
|
seneca.root.use(srvpath, srvopts);
|
package/dist/system.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.js","sourceRoot":"","sources":["../system.ts"],"names":[],"mappings":";AAAA,+CAA+C;;;;;;AAG/C,gDAAuB;AACvB,4CAAmB;AAOnB,2CAAuC;
|
|
1
|
+
{"version":3,"file":"system.js","sourceRoot":"","sources":["../system.ts"],"names":[],"mappings":"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"}
|
package/lib/utility.ts
CHANGED
|
@@ -8,21 +8,18 @@ import type {
|
|
|
8
8
|
import { util } from '@jsonic/jsonic-next'
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
|
|
12
|
+
import Patrun from 'patrun'
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
// TODO: perform this during model build?
|
|
16
16
|
function srvmsgs(srv: Record<string, any>, model: Record<string, any>): Msg[] {
|
|
17
17
|
const allmsgs = listmsgs(model.main.msg)
|
|
18
|
-
|
|
19
|
-
// const allpat = Seneca.util.Patrun()
|
|
20
|
-
const allpat = Patrun()
|
|
18
|
+
const allpat = Patrun({})
|
|
21
19
|
allmsgs.forEach((msg: Msg) => allpat.add(msg.props, msg))
|
|
22
20
|
|
|
23
21
|
// TODO: need an option to listmsgs to just list patterns
|
|
24
22
|
const srvpats = listmsgs(srv.in).map(m => m.props)
|
|
25
|
-
|
|
26
23
|
const srvmsgs: Msg[] = []
|
|
27
24
|
srvpats.reduce((a, pat) =>
|
|
28
25
|
(a.push(...(allpat
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voxgig/system",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"main": "dist/system.js",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"types": "dist/system.d.ts",
|
|
@@ -37,9 +37,10 @@
|
|
|
37
37
|
],
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/jest": "^29.5.10",
|
|
40
|
+
"es-jest": "^2.1.0",
|
|
40
41
|
"esbuild": "^0.19.8",
|
|
42
|
+
"gubu": "^6.0.1",
|
|
41
43
|
"jest": "^29.7.0",
|
|
42
|
-
"es-jest": "^2.1.0",
|
|
43
44
|
"typescript": "^5.3.2"
|
|
44
45
|
},
|
|
45
46
|
"dependencies": {
|
package/system.ts
CHANGED
|
@@ -22,14 +22,51 @@ function messages(seneca: any, options: any, reload: any) {
|
|
|
22
22
|
|
|
23
23
|
let model = seneca.context.model
|
|
24
24
|
let srvmodel = model.main.srv[srvname]
|
|
25
|
-
|
|
26
25
|
let msgs = srvmsgs(srvmodel, model)
|
|
27
|
-
// console.log('SYSTEM: MESSAGES FOUND', srvname,
|
|
28
|
-
// msgs.map(m=>m.pattern))
|
|
29
26
|
|
|
30
27
|
for (let msg of msgs) {
|
|
31
|
-
|
|
28
|
+
let action: Function = reload(actpath(msg), { options })
|
|
29
|
+
|
|
30
|
+
let params = {}
|
|
31
|
+
|
|
32
|
+
if (msg.meta.params) {
|
|
33
|
+
let shape = gubuify(seneca.util.deep(msg.meta.params), seneca.util.Gubu)
|
|
34
|
+
params = shape.node().v
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
seneca.message(msg.pattern, params, action)
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
// Convert string values into Gubu builder expressions.
|
|
43
|
+
function gubuify(params: any, Gubu: any) {
|
|
44
|
+
if (null == params) {
|
|
45
|
+
return params
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
for (let pn in params) {
|
|
49
|
+
let m = null
|
|
50
|
+
let pv = params[pn]
|
|
51
|
+
if ('object' === typeof pv) {
|
|
52
|
+
params[pn] = gubuify(pv, Gubu)
|
|
53
|
+
}
|
|
54
|
+
else if (
|
|
55
|
+
'string' === typeof pv &&
|
|
56
|
+
-1 === pn.indexOf(':') && (
|
|
57
|
+
'function' === typeof Gubu[(m = ((pv.match(/\s*([A-Z]\w+)([(.\s]|$)/) || []))[1])] ||
|
|
58
|
+
({ String: 1, Number: 1, Boolean: 1 }[m])
|
|
59
|
+
)
|
|
60
|
+
) {
|
|
61
|
+
let png = pn + ':' + pv
|
|
62
|
+
params[png] = pv
|
|
63
|
+
delete params[pn]
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
params[pn] = Gubu(pv)
|
|
67
|
+
}
|
|
32
68
|
}
|
|
69
|
+
return Gubu(params)
|
|
33
70
|
}
|
|
34
71
|
|
|
35
72
|
|
|
@@ -73,7 +110,7 @@ function Local(this: any, options: any) {
|
|
|
73
110
|
let name: string = entry[0]
|
|
74
111
|
let srv: any = entry[1]
|
|
75
112
|
|
|
76
|
-
let srvpath = Path.join(folder, name, name + '-srv')
|
|
113
|
+
let srvpath = Path.join(folder, name, name + '-srv.js')
|
|
77
114
|
|
|
78
115
|
if (Fs.existsSync(srvpath)) {
|
|
79
116
|
let srvopts = deep({}, srv.options, srvOptions[name])
|
|
@@ -134,7 +171,7 @@ function useSrvs(seneca: any, srvs: any[], options: LiveOptions, model: any) {
|
|
|
134
171
|
|
|
135
172
|
for (const srv of srvs) {
|
|
136
173
|
let name = srv.name
|
|
137
|
-
let srvpath = Path.join(folder, name, name + '-srv')
|
|
174
|
+
let srvpath = Path.join(folder, name, name + '-srv.js')
|
|
138
175
|
|
|
139
176
|
if (Fs.existsSync(srvpath)) {
|
|
140
177
|
let srvopts = deep({}, srv.options, srvOptions[name])
|
|
@@ -160,6 +197,7 @@ export type {
|
|
|
160
197
|
}
|
|
161
198
|
|
|
162
199
|
export {
|
|
200
|
+
gubuify,
|
|
163
201
|
System,
|
|
164
202
|
MakeSrv,
|
|
165
203
|
Utility,
|