@bitblit/ratchet-misc 4.0.116-alpha → 4.0.119-alpha
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/lib/build/ratchet-misc-info.d.ts +1 -1
- package/lib/index.d.ts +5 -1
- package/lib/index.mjs +5 -0
- package/lib/index.mjs.map +1 -0
- package/lib/rxjs/observable-ratchet.d.ts +1 -1
- package/package.json +9 -10
- package/lib/build/ratchet-misc-info.js +0 -15
- package/lib/build/ratchet-misc-info.js.map +0 -1
- package/lib/handlebars/handlebars-ratchet.js +0 -111
- package/lib/handlebars/handlebars-ratchet.js.map +0 -1
- package/lib/handlebars/handlebars-ratchet.spec.js +0 -108
- package/lib/handlebars/handlebars-ratchet.spec.js.map +0 -1
- package/lib/index.js +0 -2
- package/lib/index.js.map +0 -1
- package/lib/model-validator/model-validator.js +0 -54
- package/lib/model-validator/model-validator.js.map +0 -1
- package/lib/model-validator/model-validator.spec.js +0 -35
- package/lib/model-validator/model-validator.spec.js.map +0 -1
- package/lib/rxjs/observable-ratchet.js +0 -17
- package/lib/rxjs/observable-ratchet.js.map +0 -1
- package/lib/rxjs/observable-ratchet.spec.js +0 -19
- package/lib/rxjs/observable-ratchet.spec.js.map +0 -1
- package/lib/rxjs/rxjs-ratchet.js +0 -37
- package/lib/rxjs/rxjs-ratchet.js.map +0 -1
- package/lib/rxjs/rxjs-ratchet.spec.js +0 -17
- package/lib/rxjs/rxjs-ratchet.spec.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
|
-
import { TimeoutToken } from '@bitblit/ratchet-common
|
|
2
|
+
import { TimeoutToken } from '@bitblit/ratchet-common';
|
|
3
3
|
export declare class ObservableRatchet {
|
|
4
4
|
static timeout<T>(srcObservable: Observable<T | TimeoutToken>, title: string, timeoutMillis: number): Observable<T | TimeoutToken>;
|
|
5
5
|
static createTimeoutObservable<T>(title: string, timeoutMillis: number): Observable<T | TimeoutToken>;
|
package/package.json
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitblit/ratchet-misc",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.119-alpha",
|
|
4
4
|
"description": "Ratchet miscellaneous tooling that requires smallish dependant libraries",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
7
|
-
"module": "index.js",
|
|
8
7
|
"files": [
|
|
9
8
|
"lib/*",
|
|
10
9
|
"bin/*"
|
|
11
10
|
],
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./lib/index.d.ts",
|
|
14
|
+
"import": "./lib/index.mjs"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
12
17
|
"contributors": [
|
|
13
18
|
"Christopher Weiss <bitblit@gmail.com>",
|
|
14
19
|
"William Weiss <npm@codification.org>",
|
|
@@ -35,9 +40,8 @@
|
|
|
35
40
|
"docs": "typedoc",
|
|
36
41
|
"lint": "eslint src/**/*.ts",
|
|
37
42
|
"lint-fix": "eslint --fix src/**/*.ts",
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"build": "tsc",
|
|
43
|
+
"generate-barrels": "barrelsby -q --delete -d src -e .*\\.spec\\.ts && sed -i 's/\\x27;/.js\\x27;/' src/index.ts",
|
|
44
|
+
"build": "yarn clean && yarn generate-barrels && rollup -c rollup.config.js",
|
|
41
45
|
"force-build": "tsc --build --force"
|
|
42
46
|
},
|
|
43
47
|
"repository": {
|
|
@@ -64,11 +68,6 @@
|
|
|
64
68
|
"swagger-model-validator": "3.0.21"
|
|
65
69
|
},
|
|
66
70
|
"peerDependencies": {
|
|
67
|
-
"handlebars": "^4.7.7",
|
|
68
|
-
"handlebars-layouts": "^3.1.4",
|
|
69
|
-
"js-yaml": "^4.1.0",
|
|
70
|
-
"rxjs": "^7.8.1",
|
|
71
|
-
"swagger-model-validator": "^3.0.21"
|
|
72
71
|
},
|
|
73
72
|
"resolutions": {},
|
|
74
73
|
"devDependencies": {}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export class RatchetMiscInfo {
|
|
2
|
-
constructor() { }
|
|
3
|
-
static buildInformation() {
|
|
4
|
-
const val = {
|
|
5
|
-
version: 'LOCAL-SNAPSHOT',
|
|
6
|
-
hash: 'LOCAL-HASH',
|
|
7
|
-
branch: 'LOCAL-BRANCH',
|
|
8
|
-
tag: 'LOCAL-TAG',
|
|
9
|
-
timeBuiltISO: 'LOCAL-TIME-ISO',
|
|
10
|
-
notes: 'LOCAL-NOTES',
|
|
11
|
-
};
|
|
12
|
-
return val;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=ratchet-misc-info.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ratchet-misc-info.js","sourceRoot":"","sources":["../../src/build/ratchet-misc-info.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,eAAe;IAG1B,gBAAuB,CAAC;IAEjB,MAAM,CAAC,gBAAgB;QAC5B,MAAM,GAAG,GAAqB;YAC5B,OAAO,EAAE,gBAAgB;YACzB,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,cAAc;YACtB,GAAG,EAAE,WAAW;YAChB,YAAY,EAAE,gBAAgB;YAC9B,KAAK,EAAE,aAAa;SACrB,CAAC;QACF,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import { StringRatchet } from '@bitblit/ratchet-common/lib/lang/string-ratchet.js';
|
|
2
|
-
import { NumberRatchet } from '@bitblit/ratchet-common/lib/lang/number-ratchet.js';
|
|
3
|
-
import { ErrorRatchet } from '@bitblit/ratchet-common/lib/lang/error-ratchet.js';
|
|
4
|
-
import { Logger } from '@bitblit/ratchet-common/lib/logger/logger.js';
|
|
5
|
-
export class HandlebarsRatchet {
|
|
6
|
-
constructor() { }
|
|
7
|
-
static functionMap() {
|
|
8
|
-
return {
|
|
9
|
-
eq: HandlebarsRatchet.equal,
|
|
10
|
-
ne: HandlebarsRatchet.notEqual,
|
|
11
|
-
lt: HandlebarsRatchet.lessThan,
|
|
12
|
-
gt: HandlebarsRatchet.greaterThan,
|
|
13
|
-
lte: HandlebarsRatchet.lessThanEqual,
|
|
14
|
-
gte: HandlebarsRatchet.greaterThanEqual,
|
|
15
|
-
and: HandlebarsRatchet.and,
|
|
16
|
-
or: HandlebarsRatchet.or,
|
|
17
|
-
formatBytes: HandlebarsRatchet.formatBytes,
|
|
18
|
-
rpn: HandlebarsRatchet.reversePolishNotation,
|
|
19
|
-
add: HandlebarsRatchet.add,
|
|
20
|
-
sub: HandlebarsRatchet.sub,
|
|
21
|
-
mul: HandlebarsRatchet.mul,
|
|
22
|
-
div: HandlebarsRatchet.div,
|
|
23
|
-
mod: HandlebarsRatchet.mod,
|
|
24
|
-
maxNum: HandlebarsRatchet.maxNum,
|
|
25
|
-
minNum: HandlebarsRatchet.minNum,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
static registerAll(handlebars) {
|
|
29
|
-
handlebars.registerHelper(HandlebarsRatchet.functionMap());
|
|
30
|
-
}
|
|
31
|
-
static add(v1, v2) {
|
|
32
|
-
return NumberRatchet.safeNumber(v1) + NumberRatchet.safeNumber(v2);
|
|
33
|
-
}
|
|
34
|
-
static sub(v1, v2) {
|
|
35
|
-
return NumberRatchet.safeNumber(v1) - NumberRatchet.safeNumber(v2);
|
|
36
|
-
}
|
|
37
|
-
static mul(v1, v2) {
|
|
38
|
-
return NumberRatchet.safeNumber(v1) * NumberRatchet.safeNumber(v2);
|
|
39
|
-
}
|
|
40
|
-
static div(v1, v2) {
|
|
41
|
-
return NumberRatchet.safeNumber(v1) / NumberRatchet.safeNumber(v2);
|
|
42
|
-
}
|
|
43
|
-
static mod(v1, v2) {
|
|
44
|
-
return NumberRatchet.safeNumber(v1) % NumberRatchet.safeNumber(v2);
|
|
45
|
-
}
|
|
46
|
-
static equal(v1, v2) {
|
|
47
|
-
return v1 === v2;
|
|
48
|
-
}
|
|
49
|
-
static notEqual(v1, v2) {
|
|
50
|
-
return v1 !== v2;
|
|
51
|
-
}
|
|
52
|
-
static lessThan(v1, v2) {
|
|
53
|
-
return v1 < v2;
|
|
54
|
-
}
|
|
55
|
-
static lessThanEqual(v1, v2) {
|
|
56
|
-
return v1 <= v2;
|
|
57
|
-
}
|
|
58
|
-
static greaterThan(v1, v2) {
|
|
59
|
-
return v1 > v2;
|
|
60
|
-
}
|
|
61
|
-
static greaterThanEqual(v1, v2) {
|
|
62
|
-
return v1 >= v2;
|
|
63
|
-
}
|
|
64
|
-
static maxNum(...args) {
|
|
65
|
-
return Math.max(...args.slice(0, -1));
|
|
66
|
-
}
|
|
67
|
-
static minNum(...args) {
|
|
68
|
-
return Math.min(...args.slice(0, -1));
|
|
69
|
-
}
|
|
70
|
-
static and(...args) {
|
|
71
|
-
return Array.prototype.every.call(args, Boolean);
|
|
72
|
-
}
|
|
73
|
-
static or(...args) {
|
|
74
|
-
return Array.prototype.slice.call(args, 0, -1).some(Boolean);
|
|
75
|
-
}
|
|
76
|
-
static formatBytes(v1) {
|
|
77
|
-
return StringRatchet.formatBytes(v1);
|
|
78
|
-
}
|
|
79
|
-
static reversePolishNotation(...args) {
|
|
80
|
-
let rval = null;
|
|
81
|
-
try {
|
|
82
|
-
const fns = Object.assign({}, HandlebarsRatchet.functionMap());
|
|
83
|
-
delete fns['formatBytes'];
|
|
84
|
-
const stack = [];
|
|
85
|
-
for (let i = 0; i < args.length - 1; i++) {
|
|
86
|
-
const a = args[i];
|
|
87
|
-
if (fns[a]) {
|
|
88
|
-
if (stack.length > 1) {
|
|
89
|
-
const op2 = stack.pop();
|
|
90
|
-
const op1 = stack.pop();
|
|
91
|
-
const res = fns[a](op1, op2, {});
|
|
92
|
-
stack.push(res);
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
ErrorRatchet.throwFormattedErr('Cannot execute operation %s - not enough args', a);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
stack.push(a);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
rval = stack.pop();
|
|
103
|
-
}
|
|
104
|
-
catch (err) {
|
|
105
|
-
Logger.error('Failed to execute RPN: %s', err, err);
|
|
106
|
-
rval = ErrorRatchet.asErr(err)?.message || 'Failure';
|
|
107
|
-
}
|
|
108
|
-
return rval;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
//# sourceMappingURL=handlebars-ratchet.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handlebars-ratchet.js","sourceRoot":"","sources":["../../src/handlebars/handlebars-ratchet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import handlebars from 'handlebars';
|
|
2
|
-
import { HandlebarsRatchet } from './handlebars-ratchet.js';
|
|
3
|
-
describe('#handlebarsService', () => {
|
|
4
|
-
it('should test equal', async () => {
|
|
5
|
-
handlebars.registerHelper('eq', HandlebarsRatchet.equal);
|
|
6
|
-
const out1 = handlebars.compile('{{eq 1 2}}')({});
|
|
7
|
-
expect(out1).toEqual('false');
|
|
8
|
-
const out2 = handlebars.compile('{{eq 1 1}}')({});
|
|
9
|
-
expect(out2).toEqual('true');
|
|
10
|
-
const out3 = handlebars.compile('{{eq 1 a}}')({ a: 1 });
|
|
11
|
-
expect(out3).toEqual('true');
|
|
12
|
-
});
|
|
13
|
-
it('should test notequal', async () => {
|
|
14
|
-
handlebars.registerHelper('ne', HandlebarsRatchet.notEqual);
|
|
15
|
-
const out1 = handlebars.compile('{{ne 1 2}}')({});
|
|
16
|
-
expect(out1).toEqual('true');
|
|
17
|
-
const out2 = handlebars.compile('{{ne 1 1}}')({});
|
|
18
|
-
expect(out2).toEqual('false');
|
|
19
|
-
const out3 = handlebars.compile('{{ne 1 a}}')({ a: 1 });
|
|
20
|
-
expect(out3).toEqual('false');
|
|
21
|
-
});
|
|
22
|
-
it('should test less-than/less-than-equal', async () => {
|
|
23
|
-
handlebars.registerHelper('lt', HandlebarsRatchet.lessThan);
|
|
24
|
-
handlebars.registerHelper('lte', HandlebarsRatchet.lessThanEqual);
|
|
25
|
-
const out1 = handlebars.compile('{{lt 1 2}}')({});
|
|
26
|
-
expect(out1).toEqual('true');
|
|
27
|
-
const out2 = handlebars.compile('{{lt 1 1}}')({});
|
|
28
|
-
expect(out2).toEqual('false');
|
|
29
|
-
const out3 = handlebars.compile('{{lte 1 1}}')({});
|
|
30
|
-
expect(out3).toEqual('true');
|
|
31
|
-
const out4 = handlebars.compile('{{lt 20 1}}')({});
|
|
32
|
-
expect(out4).toEqual('false');
|
|
33
|
-
});
|
|
34
|
-
it('should test greater-than/greater-than-equal', async () => {
|
|
35
|
-
handlebars.registerHelper('gt', HandlebarsRatchet.greaterThan);
|
|
36
|
-
handlebars.registerHelper('gte', HandlebarsRatchet.greaterThanEqual);
|
|
37
|
-
const out1 = handlebars.compile('{{gt 2 1}}')({});
|
|
38
|
-
expect(out1).toEqual('true');
|
|
39
|
-
const out2 = handlebars.compile('{{gt 1 1}}')({});
|
|
40
|
-
expect(out2).toEqual('false');
|
|
41
|
-
const out3 = handlebars.compile('{{gte 1 1}}')({});
|
|
42
|
-
expect(out3).toEqual('true');
|
|
43
|
-
const out4 = handlebars.compile('{{gt 1 20}}')({});
|
|
44
|
-
expect(out4).toEqual('false');
|
|
45
|
-
});
|
|
46
|
-
it('should test and/or', async () => {
|
|
47
|
-
handlebars.registerHelper('and', HandlebarsRatchet.and);
|
|
48
|
-
handlebars.registerHelper('or', HandlebarsRatchet.or);
|
|
49
|
-
const out1 = handlebars.compile('{{and true true}}')({});
|
|
50
|
-
expect(out1).toEqual('true');
|
|
51
|
-
const out2 = handlebars.compile('{{and true false}}')({});
|
|
52
|
-
expect(out2).toEqual('false');
|
|
53
|
-
const out3 = handlebars.compile('{{and false false}}')({});
|
|
54
|
-
expect(out3).toEqual('false');
|
|
55
|
-
const out4 = handlebars.compile('{{or true true}}')({});
|
|
56
|
-
expect(out4).toEqual('true');
|
|
57
|
-
const out5 = handlebars.compile('{{or true false}}')({});
|
|
58
|
-
expect(out5).toEqual('true');
|
|
59
|
-
const out6 = handlebars.compile('{{or false false}}')({});
|
|
60
|
-
expect(out6).toEqual('false');
|
|
61
|
-
const out7 = handlebars.compile('{{and true true true true}}')({});
|
|
62
|
-
expect(out7).toEqual('true');
|
|
63
|
-
const out8 = handlebars.compile('{{or true false true false}}')({});
|
|
64
|
-
expect(out8).toEqual('true');
|
|
65
|
-
});
|
|
66
|
-
it('should test formatBytes', async () => {
|
|
67
|
-
handlebars.registerHelper('formatBytes', HandlebarsRatchet.formatBytes);
|
|
68
|
-
const out1 = handlebars.compile('{{formatBytes 10}}')({});
|
|
69
|
-
expect(out1).toEqual('10 Bytes');
|
|
70
|
-
const out2 = handlebars.compile('{{formatBytes 1040}}')({});
|
|
71
|
-
expect(out2).toEqual('1.02 KB');
|
|
72
|
-
const out3 = handlebars.compile('{{formatBytes 2100000}}')({});
|
|
73
|
-
expect(out3).toEqual('2 MB');
|
|
74
|
-
const out4 = handlebars.compile('{{formatBytes 3300000000}}')({});
|
|
75
|
-
expect(out4).toEqual('3.07 GB');
|
|
76
|
-
});
|
|
77
|
-
it('should test mat', async () => {
|
|
78
|
-
HandlebarsRatchet.registerAll(handlebars);
|
|
79
|
-
const add = handlebars.compile('{{add 2 1}}')({});
|
|
80
|
-
expect(add).toEqual('3');
|
|
81
|
-
const sub1 = handlebars.compile('{{sub 1 2}}')({});
|
|
82
|
-
expect(sub1).toEqual('-1');
|
|
83
|
-
const sub2 = handlebars.compile('{{sub 2 1}}')({});
|
|
84
|
-
expect(sub2).toEqual('1');
|
|
85
|
-
const mul = handlebars.compile('{{mul 2 3}}')({});
|
|
86
|
-
expect(mul).toEqual('6');
|
|
87
|
-
const div1 = handlebars.compile('{{div 2 1}}')({});
|
|
88
|
-
expect(div1).toEqual('2');
|
|
89
|
-
const div2 = handlebars.compile('{{div 1 2}}')({});
|
|
90
|
-
expect(div2).toEqual('0.5');
|
|
91
|
-
const mod = handlebars.compile('{{mod 3 2}}')({});
|
|
92
|
-
expect(mod).toEqual('1');
|
|
93
|
-
const maxNum = handlebars.compile('{{maxNum 2 1 8 5 7}}')({});
|
|
94
|
-
expect(maxNum).toEqual('8');
|
|
95
|
-
const minNum = handlebars.compile('{{minNum 2 1 8 5 7}}')({});
|
|
96
|
-
expect(minNum).toEqual('1');
|
|
97
|
-
});
|
|
98
|
-
it('should test rpn', async () => {
|
|
99
|
-
handlebars.registerHelper('rpn', HandlebarsRatchet.reversePolishNotation);
|
|
100
|
-
const out1 = handlebars.compile('{{rpn 5 10 "maxNum" 10 "add" 3 "sub"}}')({});
|
|
101
|
-
expect(out1).toEqual('17');
|
|
102
|
-
const out2 = handlebars.compile('{{rpn n1 n2 "div" n3 "mul" 6 "mod"}}')({ n1: 10, n2: 5, n3: '10' });
|
|
103
|
-
expect(out2).toEqual('2');
|
|
104
|
-
const out3 = handlebars.compile('{{rpn 1 "div"}}')({});
|
|
105
|
-
expect(out3).toEqual('Cannot execute operation div - not enough args');
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
//# sourceMappingURL=handlebars-ratchet.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handlebars-ratchet.spec.js","sourceRoot":"","sources":["../../src/handlebars/handlebars-ratchet.spec.ts"],"names":[],"mappings":"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"}
|
package/lib/index.js
DELETED
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import Validator from 'swagger-model-validator';
|
|
2
|
-
import yaml from 'js-yaml';
|
|
3
|
-
import { Logger } from '@bitblit/ratchet-common/lib/logger/logger.js';
|
|
4
|
-
import { ErrorRatchet } from '@bitblit/ratchet-common/lib/lang/error-ratchet.js';
|
|
5
|
-
import { MapRatchet } from '@bitblit/ratchet-common/lib/lang/map-ratchet.js';
|
|
6
|
-
export class ModelValidator {
|
|
7
|
-
allModels;
|
|
8
|
-
constructor(allModels) {
|
|
9
|
-
this.allModels = allModels;
|
|
10
|
-
if (!allModels || Object.keys(allModels).length == 0) {
|
|
11
|
-
ErrorRatchet.throwFormattedErr('Cannot create model validator, passed models was null/empty : %j', allModels);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
static createFromYamlString(yamlString, rootPath) {
|
|
15
|
-
const src = yaml.load(yamlString);
|
|
16
|
-
const modelSrc = rootPath && rootPath.length > 0 ? MapRatchet.findValue(src, rootPath) : src;
|
|
17
|
-
return ModelValidator.createFromParsedObject(modelSrc);
|
|
18
|
-
}
|
|
19
|
-
static createFromParsedObject(parsedObject) {
|
|
20
|
-
return new ModelValidator(parsedObject);
|
|
21
|
-
}
|
|
22
|
-
get modelNames() {
|
|
23
|
-
return Object.keys(this.allModels);
|
|
24
|
-
}
|
|
25
|
-
addModel(modelName, model) {
|
|
26
|
-
this.allModels[modelName] = model;
|
|
27
|
-
}
|
|
28
|
-
fetchModel(modelName) {
|
|
29
|
-
return this.allModels[modelName];
|
|
30
|
-
}
|
|
31
|
-
validate(modelName, modelObject, emptyAllowed = false, extraPropertiesAllowed = true) {
|
|
32
|
-
let rval = [];
|
|
33
|
-
Logger.silly('Validating model %s all definitions are : %j', modelName, this.allModels);
|
|
34
|
-
const modelEmpty = !modelObject || Object.keys(modelObject).length === 0;
|
|
35
|
-
if (modelEmpty) {
|
|
36
|
-
if (!emptyAllowed) {
|
|
37
|
-
rval.push('Empty / null object sent, but empty not allowed here');
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
if (this.allModels && modelName && this.allModels[modelName]) {
|
|
42
|
-
const validation = new Validator().validate(modelObject, this.allModels[modelName], this.allModels, emptyAllowed, extraPropertiesAllowed);
|
|
43
|
-
if (validation.errorCount > 0) {
|
|
44
|
-
rval = validation.errors.map((e) => e.message);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
rval = ['Model named "' + modelName + '" not present in schema'];
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return rval;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=model-validator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-validator.js","sourceRoot":"","sources":["../../src/model-validator/model-validator.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,yBAAyB,CAAC;AAChD,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,mDAAmD,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,iDAAiD,CAAC;AAK7E,MAAM,OAAO,cAAc;IACL;IAApB,YAAoB,SAAc;QAAd,cAAS,GAAT,SAAS,CAAK;QAChC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;YACpD,YAAY,CAAC,iBAAiB,CAAC,kEAAkE,EAAE,SAAS,CAAC,CAAC;SAC/G;IACH,CAAC;IAEM,MAAM,CAAC,oBAAoB,CAAC,UAAkB,EAAE,QAAkB;QACvE,MAAM,GAAG,GAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAQ,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAClG,OAAO,cAAc,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAEM,MAAM,CAAC,sBAAsB,CAAC,YAAiB;QACpD,OAAO,IAAI,cAAc,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAEM,QAAQ,CAAC,SAAiB,EAAE,KAAU;QAC3C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;IACpC,CAAC;IAEM,UAAU,CAAC,SAAiB;QACjC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAEM,QAAQ,CAAC,SAAiB,EAAE,WAAgB,EAAE,eAAwB,KAAK,EAAE,yBAAkC,IAAI;QACxH,IAAI,IAAI,GAAa,EAAE,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAExF,MAAM,UAAU,GAAY,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;QAClF,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,YAAY,EAAE;gBACjB,IAAI,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;aACnE;SACF;aAAM;YACL,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;gBAC5D,MAAM,UAAU,GAAG,IAAI,SAAS,EAAE,CAAC,QAAQ,CACzC,WAAW,EACX,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EACzB,IAAI,CAAC,SAAS,EACd,YAAY,EACZ,sBAAsB,CACvB,CAAC;gBAEF,IAAI,UAAU,CAAC,UAAU,GAAG,CAAC,EAAE;oBAC7B,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;iBAChD;aACF;iBAAM;gBACL,IAAI,GAAG,CAAC,eAAe,GAAG,SAAS,GAAG,yBAAyB,CAAC,CAAC;aAClE;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { ModelValidator } from './model-validator.js';
|
|
2
|
-
import fs from 'fs';
|
|
3
|
-
import path from 'path';
|
|
4
|
-
import { Logger } from '@bitblit/ratchet-common/lib/logger/logger.js';
|
|
5
|
-
import { EsmRatchet } from '@bitblit/ratchet-common/lib/lang/esm-ratchet.js';
|
|
6
|
-
describe('#modelValidator', function () {
|
|
7
|
-
it('should list an error', function () {
|
|
8
|
-
const yamlString = fs
|
|
9
|
-
.readFileSync(path.join(EsmRatchet.fetchDirName(import.meta.url), '../../../../test-data/sample-objects.spec.yaml'))
|
|
10
|
-
.toString();
|
|
11
|
-
const validator = ModelValidator.createFromYamlString(yamlString, ['ModelObjects']);
|
|
12
|
-
const shouldPass = {
|
|
13
|
-
numberField: 7,
|
|
14
|
-
stringField: 'xxx',
|
|
15
|
-
};
|
|
16
|
-
const shouldFail = {
|
|
17
|
-
numberField: 70,
|
|
18
|
-
stringField: 'xxx',
|
|
19
|
-
};
|
|
20
|
-
const errShouldPass = validator.validate('SimpleItem', shouldPass, false, true);
|
|
21
|
-
const errShouldFail = validator.validate('SimpleItem', shouldFail, false, true);
|
|
22
|
-
Logger.silly('shouldPass: %j', errShouldPass);
|
|
23
|
-
Logger.silly('shouldFail: %j', errShouldFail);
|
|
24
|
-
expect(errShouldPass).toBeTruthy();
|
|
25
|
-
expect(errShouldPass.length).toEqual(0);
|
|
26
|
-
expect(errShouldFail).toBeTruthy();
|
|
27
|
-
expect(errShouldFail.length).toEqual(1);
|
|
28
|
-
const modelNames = validator.modelNames;
|
|
29
|
-
expect(modelNames.length).toEqual(2);
|
|
30
|
-
expect(modelNames.includes('SimpleItem')).toBeTruthy();
|
|
31
|
-
expect(modelNames.includes('ApiErrorResponse')).toBeTruthy();
|
|
32
|
-
expect(modelNames.includes('XYZ')).toBeFalsy();
|
|
33
|
-
});
|
|
34
|
-
});
|
|
35
|
-
//# sourceMappingURL=model-validator.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-validator.spec.js","sourceRoot":"","sources":["../../src/model-validator/model-validator.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,iDAAiD,CAAC;AAE7E,QAAQ,CAAC,iBAAiB,EAAE;IAC1B,EAAE,CAAC,sBAAsB,EAAE;QACzB,MAAM,UAAU,GAAW,EAAE;aAC1B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,gDAAgD,CAAC,CAAC;aACnH,QAAQ,EAAE,CAAC;QACd,MAAM,SAAS,GAAmB,cAAc,CAAC,oBAAoB,CAAC,UAAU,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;QAEpG,MAAM,UAAU,GAAQ;YACtB,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,KAAK;SACnB,CAAC;QAEF,MAAM,UAAU,GAAQ;YACtB,WAAW,EAAE,EAAE;YACf,WAAW,EAAE,KAAK;SACnB,CAAC;QAEF,MAAM,aAAa,GAAa,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,aAAa,GAAa,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAE1F,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;QAE9C,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CAAC;QACnC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAExC,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CAAC;QACnC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAExC,MAAM,UAAU,GAAa,SAAS,CAAC,UAAU,CAAC;QAClD,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QACvD,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QAC7D,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Observable, race } from 'rxjs';
|
|
2
|
-
import { TimeoutToken } from '@bitblit/ratchet-common/lib/lang/timeout-token.js';
|
|
3
|
-
export class ObservableRatchet {
|
|
4
|
-
static timeout(srcObservable, title, timeoutMillis) {
|
|
5
|
-
const rval = race(srcObservable, this.createTimeoutObservable(title, timeoutMillis));
|
|
6
|
-
return rval;
|
|
7
|
-
}
|
|
8
|
-
static createTimeoutObservable(title, timeoutMillis) {
|
|
9
|
-
return Observable.create((observer) => {
|
|
10
|
-
const id = setTimeout(() => {
|
|
11
|
-
clearTimeout(id);
|
|
12
|
-
observer.next(new TimeoutToken(title, timeoutMillis));
|
|
13
|
-
}, timeoutMillis);
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=observable-ratchet.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"observable-ratchet.js","sourceRoot":"","sources":["../../src/rxjs/observable-ratchet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAY,IAAI,EAAE,MAAM,MAAM,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mDAAmD,CAAC;AAOjF,MAAM,OAAO,iBAAiB;IACrB,MAAM,CAAC,OAAO,CACnB,aAA2C,EAC3C,KAAa,EACb,aAAqB;QAErB,MAAM,IAAI,GAAwB,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;QAC1G,OAAO,IAAoC,CAAC;IAC9C,CAAC;IAEM,MAAM,CAAC,uBAAuB,CAAI,KAAa,EAAE,aAAqB;QAC3E,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,QAAoC,EAAE,EAAE;YAChE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE;gBACzB,YAAY,CAAC,EAAE,CAAC,CAAC;gBACjB,QAAQ,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;YACxD,CAAC,EAAE,aAAa,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { timer } from 'rxjs';
|
|
2
|
-
import { ObservableRatchet } from './observable-ratchet.js';
|
|
3
|
-
import { TimeoutToken } from '@bitblit/ratchet-common/lib/lang/timeout-token.js';
|
|
4
|
-
describe('#timeout', function () {
|
|
5
|
-
it('should correctly return before timeout', function () {
|
|
6
|
-
const src = timer(1000);
|
|
7
|
-
const timeoutOb = ObservableRatchet.timeout(src, '1000ms interval', 1500);
|
|
8
|
-
timeoutOb.subscribe((result) => expect(result).toEqual(0));
|
|
9
|
-
});
|
|
10
|
-
it('should correctly returns null after timeout', function () {
|
|
11
|
-
const src = timer(1500);
|
|
12
|
-
const timeoutOb = ObservableRatchet.timeout(src, '1500ms interval', 1000);
|
|
13
|
-
timeoutOb.subscribe((result) => {
|
|
14
|
-
expect(result).toBeTruthy();
|
|
15
|
-
expect(result instanceof TimeoutToken).toBeTruthy();
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
});
|
|
19
|
-
//# sourceMappingURL=observable-ratchet.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"observable-ratchet.spec.js","sourceRoot":"","sources":["../../src/rxjs/observable-ratchet.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,mDAAmD,CAAC;AAEjF,QAAQ,CAAC,UAAU,EAAE;IACnB,EAAE,CAAC,wCAAwC,EAAE;QAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;QAC1E,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE;QAChD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;QAC1E,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;YAC5B,MAAM,CAAC,MAAM,YAAY,YAAY,CAAC,CAAC,UAAU,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/lib/rxjs/rxjs-ratchet.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { MapRatchet } from '@bitblit/ratchet-common/lib/lang/map-ratchet.js';
|
|
2
|
-
export class RxjsRatchet {
|
|
3
|
-
static safeUnsubscribe(sub) {
|
|
4
|
-
return MapRatchet.safeCallFunction(sub, 'unsubscribe');
|
|
5
|
-
}
|
|
6
|
-
static async waitForNonNullOnSubject(subject) {
|
|
7
|
-
if (!!subject.value) {
|
|
8
|
-
return subject.value;
|
|
9
|
-
}
|
|
10
|
-
else {
|
|
11
|
-
return new Promise((resolve, reject) => {
|
|
12
|
-
const innerSub = subject.subscribe((val) => {
|
|
13
|
-
if (!!val) {
|
|
14
|
-
RxjsRatchet.safeUnsubscribe(innerSub);
|
|
15
|
-
resolve(val);
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
static async waitForTargetValueOnSubject(subject, targetValue) {
|
|
22
|
-
if (subject.value === targetValue) {
|
|
23
|
-
return subject.value;
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
return new Promise((resolve, reject) => {
|
|
27
|
-
const innerSub = subject.subscribe((val) => {
|
|
28
|
-
if (val === targetValue) {
|
|
29
|
-
RxjsRatchet.safeUnsubscribe(innerSub);
|
|
30
|
-
resolve(val);
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=rxjs-ratchet.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rxjs-ratchet.js","sourceRoot":"","sources":["../../src/rxjs/rxjs-ratchet.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,iDAAiD,CAAC;AAG7E,MAAM,OAAO,WAAW;IAEf,MAAM,CAAC,eAAe,CAAC,GAAQ;QACpC,OAAO,UAAU,CAAC,gBAAgB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACzD,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAI,OAA2B;QACxE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE;YACnB,OAAO,OAAO,CAAC,KAAK,CAAC;SACtB;aAAM;YAEL,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACxC,MAAM,QAAQ,GAAiB,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;oBACvD,IAAI,CAAC,CAAC,GAAG,EAAE;wBACT,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;wBACtC,OAAO,CAAC,GAAG,CAAC,CAAC;qBACd;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAI,OAA2B,EAAE,WAAc;QAC5F,IAAI,OAAO,CAAC,KAAK,KAAK,WAAW,EAAE;YACjC,OAAO,OAAO,CAAC,KAAK,CAAC;SACtB;aAAM;YAEL,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACxC,MAAM,QAAQ,GAAiB,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;oBACvD,IAAI,GAAG,KAAK,WAAW,EAAE;wBACvB,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;wBACtC,OAAO,CAAC,GAAG,CAAC,CAAC;qBACd;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;CACF"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { BehaviorSubject } from 'rxjs';
|
|
2
|
-
import { RxjsRatchet } from './rxjs-ratchet.js';
|
|
3
|
-
import { PromiseRatchet } from '@bitblit/ratchet-common/lib/lang/promise-ratchet.js';
|
|
4
|
-
import { Logger } from '@bitblit/ratchet-common/lib/logger/logger.js';
|
|
5
|
-
describe('#waitForNonNullOnSubject', function () {
|
|
6
|
-
it('should resolve after 1 second', async () => {
|
|
7
|
-
const sub = new BehaviorSubject(null);
|
|
8
|
-
const testFn = PromiseRatchet.wait(1000).then((r) => {
|
|
9
|
-
sub.next(5);
|
|
10
|
-
});
|
|
11
|
-
Logger.info('Waiting for non-null');
|
|
12
|
-
const result = await RxjsRatchet.waitForNonNullOnSubject(sub);
|
|
13
|
-
Logger.info('Got %d', result);
|
|
14
|
-
expect(result).toEqual(5);
|
|
15
|
-
}, 10000);
|
|
16
|
-
});
|
|
17
|
-
//# sourceMappingURL=rxjs-ratchet.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rxjs-ratchet.spec.js","sourceRoot":"","sources":["../../src/rxjs/rxjs-ratchet.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,qDAAqD,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AAEtE,QAAQ,CAAC,0BAA0B,EAAE;IACnC,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,GAAG,GAA4B,IAAI,eAAe,CAAS,IAAI,CAAC,CAAC;QACvE,MAAM,MAAM,GAAQ,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACvD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAEpC,MAAM,MAAM,GAAW,MAAM,WAAW,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;QACtE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE9B,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC,CAAC,CAAC"}
|