@cluesurf/kink 1.0.8 → 1.2.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/code/base/index.ts +223 -0
- package/code/index.ts +7 -0
- package/code/site/index.ts +92 -0
- package/code/site/kink.ts +97 -0
- package/code/site/make.ts +17 -0
- package/code/site/test.ts +35 -0
- package/code/tree/browser.ts +20 -0
- package/code/tree/index.ts +1 -0
- package/code/tree/make.ts +347 -0
- package/code/tree/node.ts +99 -0
- package/code/tree/test.ts +51 -0
- package/eslint.config.ts +3 -0
- package/host/code/base/index.js +138 -0
- package/host/code/base/index.js.map +1 -0
- package/host/code/index.d.ts +5 -0
- package/host/code/index.js +6 -0
- package/host/code/index.js.map +1 -0
- package/host/code/site/index.d.ts +7 -0
- package/host/code/site/index.js +75 -0
- package/host/code/site/index.js.map +1 -0
- package/host/code/site/kink.d.ts +31 -0
- package/host/code/site/kink.js +41 -0
- package/host/code/site/kink.js.map +1 -0
- package/host/code/site/make.d.ts +1 -0
- package/host/code/site/make.js +18 -0
- package/host/code/site/make.js.map +1 -0
- package/host/code/site/test.d.ts +7 -0
- package/host/code/site/test.js +23 -0
- package/host/code/site/test.js.map +1 -0
- package/host/code/tree/browser.d.ts +6 -0
- package/host/code/tree/browser.js +17 -0
- package/host/code/tree/browser.js.map +1 -0
- package/host/code/tree/index.d.ts +1 -0
- package/host/code/tree/index.js +2 -0
- package/host/code/tree/index.js.map +1 -0
- package/host/code/tree/make.d.ts +30 -0
- package/host/code/tree/make.js +271 -0
- package/host/code/tree/make.js.map +1 -0
- package/host/code/tree/node.d.ts +6 -0
- package/host/code/tree/node.js +81 -0
- package/host/code/tree/node.js.map +1 -0
- package/host/code/tree/test.d.ts +7 -0
- package/host/code/tree/test.js +37 -0
- package/host/code/tree/test.js.map +1 -0
- package/host/test/index.d.ts +2 -0
- package/host/test/index.js +11 -0
- package/host/test/index.js.map +1 -0
- package/host/test/kink.d.ts +11 -0
- package/host/test/kink.js +12 -0
- package/host/test/kink.js.map +1 -0
- package/package.json +21 -10
- package/readme.md +6 -0
- package/host/index.js +0 -170
- package/host/index.js.map +0 -1
- /package/host/{index.d.ts → code/base/index.d.ts} +0 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import Kink, { KinkList } from '../base';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import kink, { host } from './kink';
|
|
4
|
+
export function isZodError(input) {
|
|
5
|
+
return Boolean(
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
7
|
+
input && !input.success && 'error' in input);
|
|
8
|
+
}
|
|
9
|
+
export function loadKink(error) {
|
|
10
|
+
const kink = loadKinkList(error);
|
|
11
|
+
if (kink instanceof KinkList) {
|
|
12
|
+
if (kink?.list.length === 1) {
|
|
13
|
+
return kink.list[0];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return kink;
|
|
17
|
+
}
|
|
18
|
+
export function loadKinkList(error) {
|
|
19
|
+
if (error instanceof z.ZodError) {
|
|
20
|
+
return loadZodErrorJSON(error);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
if (error instanceof KinkList) {
|
|
24
|
+
error.list.forEach(error => {
|
|
25
|
+
Kink.saveFill(error);
|
|
26
|
+
});
|
|
27
|
+
return error;
|
|
28
|
+
}
|
|
29
|
+
else if (error instanceof Kink) {
|
|
30
|
+
Kink.saveFill(error);
|
|
31
|
+
return error;
|
|
32
|
+
}
|
|
33
|
+
else if (error instanceof Error) {
|
|
34
|
+
return Kink.makeBase(error, { siteCode: 500 });
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
return Kink.makeBase(new Error(error), {
|
|
38
|
+
siteCode: 500,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export function loadZodErrorJSON(error) {
|
|
44
|
+
return new KinkList(error.issues.map(error => {
|
|
45
|
+
// ZodInvalidTypeIssue | ZodInvalidLiteralIssue | ZodUnrecognizedKeysIssue | ZodInvalidUnionIssue | ZodInvalidUnionDiscriminatorIssue | ZodInvalidEnumValueIssue | ZodInvalidArgumentsIssue | ZodInvalidReturnTypeIssue | ZodInvalidDateIssue | ZodInvalidStringIssue | ZodTooSmallIssue | ZodTooBigIssue | ZodInvalidIntersectionTypesIssue | ZodNotMultipleOfIssue | ZodNotFiniteIssue | ZodCustomIssue;
|
|
46
|
+
switch (error.code) {
|
|
47
|
+
case z.ZodIssueCode.invalid_type:
|
|
48
|
+
return kink('form_fail', {
|
|
49
|
+
have: error.received,
|
|
50
|
+
link: error.path.map(String),
|
|
51
|
+
message: error.message,
|
|
52
|
+
need: error.expected,
|
|
53
|
+
}, 406);
|
|
54
|
+
case z.ZodIssueCode.unrecognized_keys:
|
|
55
|
+
return kink('form_link_fail', {
|
|
56
|
+
link: error.path,
|
|
57
|
+
list: error.keys,
|
|
58
|
+
message: error.message,
|
|
59
|
+
}, 406);
|
|
60
|
+
default: {
|
|
61
|
+
const kink = new Kink({
|
|
62
|
+
code: Kink.makeCode(host, 0),
|
|
63
|
+
form: 'z.ZodError',
|
|
64
|
+
host: host,
|
|
65
|
+
note: error.message,
|
|
66
|
+
time: Kink.makeTime(Date.now()),
|
|
67
|
+
});
|
|
68
|
+
kink.siteCode = 406;
|
|
69
|
+
return kink;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
export { default } from './make';
|
|
75
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../code/site/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAGnC,MAAM,UAAU,UAAU,CACxB,KAAU;IAEV,OAAO,OAAO;IACZ,sEAAsE;IACtE,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,OAAO,IAAI,KAAK,CAC5C,CAAA;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAU;IACjC,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IAEhC,IAAI,IAAI,YAAY,QAAQ,EAAE;QAC5B,IAAI,IAAI,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;SACpB;KACF;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAU;IACrC,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE;QAC/B,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAA;KAC/B;SAAM;QACL,IAAI,KAAK,YAAY,QAAQ,EAAE;YAC7B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YACtB,CAAC,CAAC,CAAA;YACF,OAAO,KAAK,CAAA;SACb;aAAM,IAAI,KAAK,YAAY,IAAI,EAAE;YAChC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YACpB,OAAO,KAAK,CAAA;SACb;aAAM,IAAI,KAAK,YAAY,KAAK,EAAE;YACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAA;SAC/C;aAAM;YACL,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,KAAe,CAAC,EAAE;gBAC/C,QAAQ,EAAE,GAAG;aACd,CAAC,CAAA;SACH;KACF;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAiB;IAChD,OAAO,IAAI,QAAQ,CACjB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACvB,0YAA0Y;QAC1Y,QAAQ,KAAK,CAAC,IAAI,EAAE;YAClB,KAAK,CAAC,CAAC,YAAY,CAAC,YAAY;gBAC9B,OAAO,IAAI,CACT,WAAW,EACX;oBACE,IAAI,EAAE,KAAK,CAAC,QAAQ;oBACpB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;oBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,IAAI,EAAE,KAAK,CAAC,QAAQ;iBACrB,EACD,GAAG,CACJ,CAAA;YACH,KAAK,CAAC,CAAC,YAAY,CAAC,iBAAiB;gBACnC,OAAO,IAAI,CACT,gBAAgB,EAChB;oBACE,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB,EACD,GAAG,CACJ,CAAA;YACH,OAAO,CAAC,CAAC;gBACP,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;oBACpB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC5B,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,KAAK,CAAC,OAAO;oBACnB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;iBAChC,CAAC,CAAA;gBACF,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAA;gBACnB,OAAO,IAAI,CAAA;aACZ;SACF;IACH,CAAC,CAAC,CACH,CAAA;AACH,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import Kink from '../../code/base';
|
|
2
|
+
export declare const host = "@cluesurf/kink";
|
|
3
|
+
type BaseZodError = {
|
|
4
|
+
link: Array<string | number>;
|
|
5
|
+
message: string;
|
|
6
|
+
};
|
|
7
|
+
type Base = {
|
|
8
|
+
call_fail: {
|
|
9
|
+
take: {};
|
|
10
|
+
};
|
|
11
|
+
call_time_meet: {
|
|
12
|
+
take: {
|
|
13
|
+
link: string;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
form_fail: {
|
|
17
|
+
take: BaseZodError & {
|
|
18
|
+
have: string;
|
|
19
|
+
link: Array<string>;
|
|
20
|
+
need: string;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
form_link_fail: {
|
|
24
|
+
take: BaseZodError & {
|
|
25
|
+
list: Array<string>;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
type Name = keyof Base;
|
|
30
|
+
export default function makeBase<N extends Name>(form: N, link?: Base[N]['take'], siteCode?: number): Kink;
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import Kink from '../../code/base';
|
|
2
|
+
export const host = '@cluesurf/kink';
|
|
3
|
+
let CODE_INDEX = 1;
|
|
4
|
+
const CODE = {
|
|
5
|
+
call_fail: CODE_INDEX++,
|
|
6
|
+
call_time_meet: CODE_INDEX++,
|
|
7
|
+
form_fail: CODE_INDEX++,
|
|
8
|
+
form_link_fail: CODE_INDEX++,
|
|
9
|
+
};
|
|
10
|
+
Kink.code(host, (code) => code.toString(16).padStart(4, '0'));
|
|
11
|
+
Kink.base(host, 'call_time_meet', (take) => ({
|
|
12
|
+
code: CODE.call_time_meet,
|
|
13
|
+
link: take.link,
|
|
14
|
+
note: 'Request timeout.',
|
|
15
|
+
}));
|
|
16
|
+
Kink.base(host, 'call_fail', () => ({
|
|
17
|
+
code: CODE.call_fail,
|
|
18
|
+
note: 'System unable to make request currently.',
|
|
19
|
+
}));
|
|
20
|
+
Kink.base(host, 'form_fail', (take) => ({
|
|
21
|
+
code: CODE.form_fail,
|
|
22
|
+
have: take.have,
|
|
23
|
+
hint: take.message,
|
|
24
|
+
link: take.link,
|
|
25
|
+
need: take.need,
|
|
26
|
+
note: 'Invalid link type.',
|
|
27
|
+
}));
|
|
28
|
+
// https://github.com/colinhacks/zod/blob/master/ERROR_HANDLING.md
|
|
29
|
+
Kink.base(host, 'form_link_fail', (take) => ({
|
|
30
|
+
code: CODE.form_link_fail,
|
|
31
|
+
hint: take.message,
|
|
32
|
+
link: take.link,
|
|
33
|
+
list: take.list,
|
|
34
|
+
note: 'Unrecognized keys in object.',
|
|
35
|
+
}));
|
|
36
|
+
export default function makeBase(form, link, siteCode) {
|
|
37
|
+
const kink = Kink.make(host, form, link);
|
|
38
|
+
kink.siteCode = siteCode;
|
|
39
|
+
return kink;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=kink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kink.js","sourceRoot":"","sources":["../../../code/site/kink.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,aAAa,CAAA;AAE9B,MAAM,CAAC,MAAM,IAAI,GAAG,gBAAgB,CAAA;AAsCpC,IAAI,UAAU,GAAG,CAAC,CAAA;AAElB,MAAM,IAAI,GAAG;IACX,SAAS,EAAE,UAAU,EAAE;IACvB,cAAc,EAAE,UAAU,EAAE;IAC5B,SAAS,EAAE,UAAU,EAAE;IACvB,cAAc,EAAE,UAAU,EAAE;CAC7B,CAAA;AAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;AAErE,IAAI,CAAC,IAAI,CACP,IAAI,EACJ,gBAAgB,EAChB,CAAC,IAAoC,EAAE,EAAE,CAAC,CAAC;IACzC,IAAI,EAAE,IAAI,CAAC,cAAc;IACzB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,IAAI,EAAE,kBAAkB;CACzB,CAAC,CACH,CAAA;AAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IAClC,IAAI,EAAE,IAAI,CAAC,SAAS;IACpB,IAAI,EAAE,0CAA0C;CACjD,CAAC,CAAC,CAAA;AAEH,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,IAA+B,EAAE,EAAE,CAAC,CAAC;IACjE,IAAI,EAAE,IAAI,CAAC,SAAS;IACpB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,IAAI,EAAE,IAAI,CAAC,OAAO;IAClB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,IAAI,EAAE,oBAAoB;CAC3B,CAAC,CAAC,CAAA;AAEH,kEAAkE;AAClE,IAAI,CAAC,IAAI,CACP,IAAI,EACJ,gBAAgB,EAChB,CAAC,IAAoC,EAAE,EAAE,CAAC,CAAC;IACzC,IAAI,EAAE,IAAI,CAAC,cAAc;IACzB,IAAI,EAAE,IAAI,CAAC,OAAO;IAClB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,IAAI,EAAE,8BAA8B;CACrC,CAAC,CACH,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,QAAQ,CAC9B,IAAO,EACP,IAAsB,EACtB,QAAiB;IAEjB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IACxC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IACxB,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function makeSiteKinkText(error: any): string;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { KinkList } from '../base';
|
|
2
|
+
import { loadKink } from '.';
|
|
3
|
+
import { makeKinkText } from '../tree';
|
|
4
|
+
export default function makeSiteKinkText(error) {
|
|
5
|
+
const kink = loadKink(error);
|
|
6
|
+
const text = [];
|
|
7
|
+
if (kink instanceof KinkList) {
|
|
8
|
+
text.push(makeKinkText(kink));
|
|
9
|
+
kink.list.forEach(kink => {
|
|
10
|
+
text.push(makeKinkText(kink));
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
else if (kink) {
|
|
14
|
+
text.push(makeKinkText(kink));
|
|
15
|
+
}
|
|
16
|
+
return text.join('\n');
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=make.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"make.js","sourceRoot":"","sources":["../../../code/site/make.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,KAAU;IACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC5B,MAAM,IAAI,GAAkB,EAAE,CAAA;IAC9B,IAAI,IAAI,YAAY,QAAQ,EAAE;QAC5B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;QAC/B,CAAC,CAAC,CAAA;KACH;SAAM,IAAI,IAAI,EAAE;QACf,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;KAC9B;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACxB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import Kink from '../../code/base';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import makeSiteKinkText from '.';
|
|
4
|
+
const host = '@cluesurf/kink';
|
|
5
|
+
Kink.base(host, 'syntax_error', () => ({
|
|
6
|
+
code: 1,
|
|
7
|
+
note: 'Syntax error',
|
|
8
|
+
}));
|
|
9
|
+
Kink.code(host, (code) => code.toString(16).padStart(4, '0'));
|
|
10
|
+
export default function kink(form, link) {
|
|
11
|
+
return Kink.make(host, form, link);
|
|
12
|
+
}
|
|
13
|
+
// https://nodejs.org/api/errors.html
|
|
14
|
+
process.on('uncaughtException', err => {
|
|
15
|
+
console.log(makeSiteKinkText(err));
|
|
16
|
+
});
|
|
17
|
+
setTimeout(() => {
|
|
18
|
+
throw kink('syntax_error');
|
|
19
|
+
});
|
|
20
|
+
setTimeout(() => {
|
|
21
|
+
fs.readFileSync('.');
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../code/site/test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,aAAa,CAAA;AAC9B,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,gBAAgB,MAAM,GAAG,CAAA;AAEhC,MAAM,IAAI,GAAG,gBAAgB,CAAA;AAQ7B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,cAAc;CACrB,CAAC,CAAC,CAAA;AAEH,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;AAErE,MAAM,CAAC,OAAO,UAAU,IAAI,CAAiB,IAAO,EAAE,IAAc;IAClE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AACpC,CAAC;AAED,qCAAqC;AACrC,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,GAAG,CAAC,EAAE;IACpC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAA;AACpC,CAAC,CAAC,CAAA;AAEF,UAAU,CAAC,GAAG,EAAE;IACd,MAAM,IAAI,CAAC,cAAc,CAAC,CAAA;AAC5B,CAAC,CAAC,CAAA;AAEF,UAAU,CAAC,GAAG,EAAE;IACd,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;AACtB,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import Kink from '../../code/base';
|
|
2
|
+
import makeText from './make';
|
|
3
|
+
export * from './make';
|
|
4
|
+
export function makeBaseKinkText(kink) {
|
|
5
|
+
return makeText({ ...Kink.makeBase(kink), list: [] });
|
|
6
|
+
}
|
|
7
|
+
export function makeKinkText(kink) {
|
|
8
|
+
return makeText({
|
|
9
|
+
code: kink.code,
|
|
10
|
+
host: kink.host,
|
|
11
|
+
list: kink.stack?.split('\n') ?? [],
|
|
12
|
+
note: kink.note,
|
|
13
|
+
time: kink.time,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
export { makeText };
|
|
17
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../code/tree/browser.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,aAAa,CAAA;AAC9B,OAAO,QAAQ,MAAM,QAAQ,CAAA;AAE7B,cAAc,QAAQ,CAAA;AAEtB,MAAM,UAAU,gBAAgB,CAAC,IAAW;IAC1C,OAAO,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;AACvD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAU;IACrC,OAAO,QAAQ,CAAC;QACd,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;QACnC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC,CAAA;AACJ,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './node';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../code/tree/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export type HostLinkHook = (file: string, line: number, rise: number) => [string, number | undefined, number | undefined];
|
|
2
|
+
export type LineListLink = {
|
|
3
|
+
code?: number;
|
|
4
|
+
file: string;
|
|
5
|
+
line?: number;
|
|
6
|
+
task?: string;
|
|
7
|
+
};
|
|
8
|
+
export type MakeText = {
|
|
9
|
+
code: string;
|
|
10
|
+
hook?: HostLinkHook;
|
|
11
|
+
host: string;
|
|
12
|
+
link?: Record<string, unknown>;
|
|
13
|
+
list: Array<string>;
|
|
14
|
+
note: string;
|
|
15
|
+
time: string;
|
|
16
|
+
};
|
|
17
|
+
export declare const TIME_FORM = "yyyy/MM/dd @ hh:mm:ss.SSSaaa";
|
|
18
|
+
export declare function makeLinkList(list: Array<string>, hook?: HostLinkHook): {
|
|
19
|
+
linkList: LineListLink[];
|
|
20
|
+
note: string[];
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* This you pass it a stack trace and it will render the error text.
|
|
24
|
+
*/
|
|
25
|
+
declare const makeText: ({ host, code, note, link, list, time, hook, }: MakeText) => string;
|
|
26
|
+
export default makeText;
|
|
27
|
+
export { makeKinkText, makeBaseKinkText } from './node';
|
|
28
|
+
export declare const makeTextHead: (note: string, code: string, host: string, time: string) => string[];
|
|
29
|
+
export declare function readListLine(text: string, hook?: HostLinkHook): LineListLink | undefined;
|
|
30
|
+
export declare function readListLineFile(text: string, hook?: HostLinkHook): LineListLink;
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
import { text as tint } from '@cluesurf/show';
|
|
3
|
+
export const TIME_FORM = 'yyyy/MM/dd @ hh:mm:ss.SSSaaa';
|
|
4
|
+
export function makeLinkList(list, hook) {
|
|
5
|
+
const noteLine = [];
|
|
6
|
+
const linkList = [];
|
|
7
|
+
let find = false;
|
|
8
|
+
let i = list.length - 1;
|
|
9
|
+
while (i >= 0) {
|
|
10
|
+
const line = list[i--];
|
|
11
|
+
if (!find && line?.startsWith(' at ')) {
|
|
12
|
+
const link = readListLine(line.slice(' at '.length), hook);
|
|
13
|
+
if (link) {
|
|
14
|
+
linkList.push(link);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
else if (line) {
|
|
18
|
+
find = true;
|
|
19
|
+
noteLine.push(line);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return { linkList: linkList.reverse(), note: noteLine };
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* This you pass it a stack trace and it will render the error text.
|
|
26
|
+
*/
|
|
27
|
+
const makeText = ({ host, code, note, link = {}, list, time, hook, }) => {
|
|
28
|
+
const textList = [];
|
|
29
|
+
const W = { tone: 'white' };
|
|
30
|
+
const WB = { tone: 'whiteBright' };
|
|
31
|
+
const B = { tone: 'blue' };
|
|
32
|
+
const M = { tone: 'magenta' };
|
|
33
|
+
const MB = { bold: true, tone: 'cyan' };
|
|
34
|
+
const G = { tone: 'green' };
|
|
35
|
+
const H = { tone: 'blackBright' };
|
|
36
|
+
textList.push(...makeTextHead(note, code, host, time));
|
|
37
|
+
textList.push(...makeLinkHash(link, 1));
|
|
38
|
+
const { linkList } = makeLinkList(list, hook);
|
|
39
|
+
linkList.forEach(link => {
|
|
40
|
+
let head = [];
|
|
41
|
+
if (link.line) {
|
|
42
|
+
head.push(link.line);
|
|
43
|
+
}
|
|
44
|
+
if (link.code) {
|
|
45
|
+
head.push(link.code);
|
|
46
|
+
}
|
|
47
|
+
const headText = head.length ? ':' + head.join(':') : '';
|
|
48
|
+
const siteText = tint('site <', H);
|
|
49
|
+
const fileText = tint(`${link.file}${headText}`, WB);
|
|
50
|
+
textList.push(` ${siteText}${fileText}${tint('>', H)}`);
|
|
51
|
+
if (link.task) {
|
|
52
|
+
const callText = ' ' + tint(`call <`, H);
|
|
53
|
+
const taskText = tint(link.task, W);
|
|
54
|
+
textList.push(`${callText}${taskText}${tint('>', H)}`);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
return textList.join('\n');
|
|
58
|
+
function makeLinkHash(link, move) {
|
|
59
|
+
const textList = [];
|
|
60
|
+
const moveText = makeTextMove(move);
|
|
61
|
+
for (const name in link) {
|
|
62
|
+
const bond = link[name];
|
|
63
|
+
if (bond === undefined) {
|
|
64
|
+
textList.push(...makeLinkVoid(name, move));
|
|
65
|
+
}
|
|
66
|
+
else if (bond === null) {
|
|
67
|
+
textList.push(...makeLinkNull(name, move));
|
|
68
|
+
}
|
|
69
|
+
else if (typeof bond === 'boolean') {
|
|
70
|
+
textList.push(...makeLinkWave(name, bond, move));
|
|
71
|
+
}
|
|
72
|
+
else if (typeof bond === 'string') {
|
|
73
|
+
textList.push(...makeLinkText(name, bond, move));
|
|
74
|
+
}
|
|
75
|
+
else if (typeof bond === 'number') {
|
|
76
|
+
textList.push(...makeLinkSize(name, bond, move));
|
|
77
|
+
}
|
|
78
|
+
else if (Array.isArray(bond)) {
|
|
79
|
+
bond.forEach(bond => {
|
|
80
|
+
textList.push(...makeLinkBond(name, bond, move));
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
else if (typeof bond === 'object') {
|
|
84
|
+
let base = true;
|
|
85
|
+
for (const bondName in bond) {
|
|
86
|
+
const bind = bond[bondName];
|
|
87
|
+
if (base) {
|
|
88
|
+
base = false;
|
|
89
|
+
if (bind === undefined) {
|
|
90
|
+
textList.push(...makeLinkVoid(name, move));
|
|
91
|
+
}
|
|
92
|
+
else if (bind === null) {
|
|
93
|
+
textList.push(...makeLinkNull(name, move));
|
|
94
|
+
}
|
|
95
|
+
else if (typeof bind === 'boolean') {
|
|
96
|
+
textList.push(...makeLinkWave(name, bind, move));
|
|
97
|
+
}
|
|
98
|
+
else if (typeof bind === 'string') {
|
|
99
|
+
textList.push(...makeLinkText(name, bind, move));
|
|
100
|
+
}
|
|
101
|
+
else if (typeof bind === 'number') {
|
|
102
|
+
textList.push(...makeLinkSize(name, bind, move));
|
|
103
|
+
}
|
|
104
|
+
else if (Array.isArray(bind)) {
|
|
105
|
+
textList.push(`${moveText}${tint(`bind ${name}`, H)}`);
|
|
106
|
+
bind.forEach(bind => {
|
|
107
|
+
textList.push(...makeLinkBond(bondName, bind, move + 1));
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
else if (typeof bind === 'object') {
|
|
111
|
+
textList.push(`${moveText}${tint(`bind ${name}`, H)}`);
|
|
112
|
+
textList.push(...makeLinkBond(bondName, bind, move + 1));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
if (bind === undefined) {
|
|
117
|
+
textList.push(...makeLinkVoid(bondName, move + 1));
|
|
118
|
+
}
|
|
119
|
+
else if (bind === null) {
|
|
120
|
+
textList.push(...makeLinkNull(bondName, move + 1));
|
|
121
|
+
}
|
|
122
|
+
else if (typeof bind === 'boolean') {
|
|
123
|
+
textList.push(...makeLinkWave(bondName, bind, move + 1));
|
|
124
|
+
}
|
|
125
|
+
else if (typeof bind === 'string') {
|
|
126
|
+
textList.push(...makeLinkText(bondName, bind, move + 1));
|
|
127
|
+
}
|
|
128
|
+
else if (typeof bind === 'number') {
|
|
129
|
+
textList.push(...makeLinkSize(bondName, bind, move + 1));
|
|
130
|
+
}
|
|
131
|
+
else if (Array.isArray(bind)) {
|
|
132
|
+
bind.forEach(bind => {
|
|
133
|
+
textList.push(...makeLinkBond(bondName, bind, move + 1));
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
else if (typeof bind === 'object') {
|
|
137
|
+
textList.push(...makeLinkBond(bondName, bind, move + 1));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return textList;
|
|
144
|
+
}
|
|
145
|
+
function makeLinkBond(name, bond, move) {
|
|
146
|
+
const textList = [];
|
|
147
|
+
if (bond === undefined) {
|
|
148
|
+
textList.push(...makeLinkVoid(name, move));
|
|
149
|
+
}
|
|
150
|
+
else if (bond === null) {
|
|
151
|
+
textList.push(...makeLinkNull(name, move));
|
|
152
|
+
}
|
|
153
|
+
else if (typeof bond === 'boolean') {
|
|
154
|
+
textList.push(...makeLinkWave(name, bond, move));
|
|
155
|
+
}
|
|
156
|
+
else if (typeof bond === 'string') {
|
|
157
|
+
textList.push(...makeLinkText(name, bond, move));
|
|
158
|
+
}
|
|
159
|
+
else if (typeof bond === 'number') {
|
|
160
|
+
textList.push(...makeLinkSize(name, bond, move));
|
|
161
|
+
}
|
|
162
|
+
else if (typeof bond === 'object') {
|
|
163
|
+
const moveText = makeTextMove(move);
|
|
164
|
+
textList.push(`${moveText}${tint(`bind ${name}`, H)}`);
|
|
165
|
+
textList.push(...makeLinkHash(bond, move + 1));
|
|
166
|
+
}
|
|
167
|
+
return textList;
|
|
168
|
+
}
|
|
169
|
+
function makeLinkVoid(name, move) {
|
|
170
|
+
const textList = [];
|
|
171
|
+
// const moveText = makeTextMove(move)
|
|
172
|
+
// textList.push(
|
|
173
|
+
// `${moveText}${tint(`${name} <`, H)}${tint('void', B)}${tint(
|
|
174
|
+
// `>`,
|
|
175
|
+
// H,
|
|
176
|
+
// )}`,
|
|
177
|
+
// )
|
|
178
|
+
return textList;
|
|
179
|
+
}
|
|
180
|
+
function makeLinkNull(name, move) {
|
|
181
|
+
const textList = [];
|
|
182
|
+
const moveText = makeTextMove(move);
|
|
183
|
+
textList.push(`${moveText}${tint(`bind`, H)} ${tint(name, W)}${tint(`,`, H)} ${tint('null', MB)}`);
|
|
184
|
+
return textList;
|
|
185
|
+
}
|
|
186
|
+
function makeLinkSize(name, bond, move) {
|
|
187
|
+
const textList = [];
|
|
188
|
+
const moveText = makeTextMove(move);
|
|
189
|
+
textList.push(`${moveText}${tint(`bind`, H)} ${tint(name, W)}${tint(`,`, H)} ${tint(String(bond), G)}`);
|
|
190
|
+
return textList;
|
|
191
|
+
}
|
|
192
|
+
function makeLinkWave(name, bond, move) {
|
|
193
|
+
const textList = [];
|
|
194
|
+
const moveText = makeTextMove(move);
|
|
195
|
+
textList.push(`${moveText}${tint(`bind`, H)} ${tint(name, W)}${tint(`,`, H)} ${tint(String(bond), B)}`);
|
|
196
|
+
return textList;
|
|
197
|
+
}
|
|
198
|
+
function makeLinkText(name, bond, move) {
|
|
199
|
+
const textList = [];
|
|
200
|
+
const moveText = makeTextMove(move);
|
|
201
|
+
if (bond.match(/\n/)) {
|
|
202
|
+
textList.push(`${moveText}${tint(`bind`, H)} ${tint(name, W)}${tint(`, <`, H)}`);
|
|
203
|
+
bond.split(/\n/).forEach(line => {
|
|
204
|
+
const moveNest = move + 1;
|
|
205
|
+
const moveNestText = makeTextMove(moveNest);
|
|
206
|
+
textList.push(`${moveNestText}${tint(line, M)}`);
|
|
207
|
+
});
|
|
208
|
+
textList.push(`${moveText}${tint(`>`, H)}`);
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
textList.push(`${moveText}${tint(`bind`, H)} ${tint(name, W)}${tint(`, <`, H)}${tint(bond, M)}${tint(`>`, H)}`);
|
|
212
|
+
}
|
|
213
|
+
return textList;
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
export default makeText;
|
|
217
|
+
// Export node implementation by default for now
|
|
218
|
+
// Dynamic resolution will be handled by package.json exports field when using @cluesurf/kink/system
|
|
219
|
+
export { makeKinkText, makeBaseKinkText } from './node';
|
|
220
|
+
export const makeTextHead = (note, code, host, time) => {
|
|
221
|
+
const list = [];
|
|
222
|
+
const R = { tone: 'red' };
|
|
223
|
+
const RB = { bold: true, tone: 'red' };
|
|
224
|
+
const W = { tone: 'white' };
|
|
225
|
+
const H = { tone: 'blackBright' };
|
|
226
|
+
const C = { tone: 'cyan' };
|
|
227
|
+
list.push(tint(`kink`, R) +
|
|
228
|
+
' ' +
|
|
229
|
+
tint('<', H) +
|
|
230
|
+
tint(`${note}`, RB) +
|
|
231
|
+
tint('>', H));
|
|
232
|
+
list.push(' ' + tint(`time <`, H) + tint(`${time}`, W) + tint('>,', H));
|
|
233
|
+
list.push(' ' + tint(`code <`, H) + tint(`${code}`, C) + tint(`>`, H));
|
|
234
|
+
list.push(' ' + tint(`host `, H) + tint(`${host}`, H));
|
|
235
|
+
return list;
|
|
236
|
+
};
|
|
237
|
+
export function readListLine(text, hook) {
|
|
238
|
+
const [a, b] = text.trim().split(/\s+/);
|
|
239
|
+
if (a && !b) {
|
|
240
|
+
return readListLineFile(a, hook);
|
|
241
|
+
}
|
|
242
|
+
else if (a && b) {
|
|
243
|
+
return {
|
|
244
|
+
...readListLineFile(b, hook),
|
|
245
|
+
task: a,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
export function readListLineFile(text, hook) {
|
|
250
|
+
const list = text.replace(/[\(\)]/g, '').split(':');
|
|
251
|
+
const code = list.pop();
|
|
252
|
+
let codeMark = code ? parseInt(code, 10) : undefined;
|
|
253
|
+
const line = list.pop();
|
|
254
|
+
let lineMark = line ? parseInt(line, 10) : undefined;
|
|
255
|
+
let file = list.join(':');
|
|
256
|
+
if (hook &&
|
|
257
|
+
typeof lineMark === 'number' &&
|
|
258
|
+
typeof codeMark === 'number') {
|
|
259
|
+
;
|
|
260
|
+
[file, lineMark, codeMark] = hook(file, lineMark, codeMark);
|
|
261
|
+
}
|
|
262
|
+
return {
|
|
263
|
+
code: codeMark,
|
|
264
|
+
file,
|
|
265
|
+
line: lineMark,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
function makeTextMove(move) {
|
|
269
|
+
return new Array(move + 1).join(' ');
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=make.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"make.js","sourceRoot":"","sources":["../../../code/tree/make.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,gBAAgB,CAAA;AA0B7C,MAAM,CAAC,MAAM,SAAS,GAAG,8BAA8B,CAAA;AAEvD,MAAM,UAAU,YAAY,CAAC,IAAmB,EAAE,IAAmB;IACnE,MAAM,QAAQ,GAAkB,EAAE,CAAA;IAClC,MAAM,QAAQ,GAAwB,EAAE,CAAA;IAExC,IAAI,IAAI,GAAG,KAAK,CAAA;IAChB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;IACvB,OAAO,CAAC,IAAI,CAAC,EAAE;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAA;QACtB,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE;YACxC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;YAC7D,IAAI,IAAI,EAAE;gBACR,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aACpB;SACF;aAAM,IAAI,IAAI,EAAE;YACf,IAAI,GAAG,IAAI,CAAA;YACX,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;SACpB;KACF;IAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;AACzD,CAAC;AAED;;GAEG;AAEH,MAAM,QAAQ,GAAG,CAAC,EAChB,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,GAAG,EAAE,EACT,IAAI,EACJ,IAAI,EACJ,IAAI,GACK,EAAU,EAAE;IACrB,MAAM,QAAQ,GAAkB,EAAE,CAAA;IAElC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IAC3B,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;IAClC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IAC1B,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;IAC7B,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IACvC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IAC3B,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;IAEjC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IAEtD,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAEvC,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAE7C,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACtB,IAAI,IAAI,GAAwB,EAAE,CAAA;QAClC,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;SACrB;QACD,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;SACrB;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAA;QACpD,QAAQ,CAAC,IAAI,CAAC,KAAK,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;QAExD,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,MAAM,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YACnC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;SACvD;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAE1B,SAAS,YAAY,CAAC,IAA6B,EAAE,IAAY;QAC/D,MAAM,QAAQ,GAAkB,EAAE,CAAA;QAClC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAEnC,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;YACvB,IAAI,IAAI,KAAK,SAAS,EAAE;gBACtB,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;aAC3C;iBAAM,IAAI,IAAI,KAAK,IAAI,EAAE;gBACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;aAC3C;iBAAM,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE;gBACpC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;aACjD;iBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBACnC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;aACjD;iBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBACnC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;aACjD;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBAClB,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;gBAClD,CAAC,CAAC,CAAA;aACH;iBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBACnC,IAAI,IAAI,GAAG,IAAI,CAAA;gBACf,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE;oBAC3B,MAAM,IAAI,GAAI,IAAgC,CAAC,QAAQ,CAAC,CAAA;oBACxD,IAAI,IAAI,EAAE;wBACR,IAAI,GAAG,KAAK,CAAA;wBACZ,IAAI,IAAI,KAAK,SAAS,EAAE;4BACtB,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;yBAC3C;6BAAM,IAAI,IAAI,KAAK,IAAI,EAAE;4BACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;yBAC3C;6BAAM,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE;4BACpC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;yBACjD;6BAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;4BACnC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;yBACjD;6BAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;4BACnC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;yBACjD;6BAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;4BAC9B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;4BACtD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gCAClB,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;4BAC1D,CAAC,CAAC,CAAA;yBACH;6BAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;4BACnC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;4BACtD,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;yBACzD;qBACF;yBAAM;wBACL,IAAI,IAAI,KAAK,SAAS,EAAE;4BACtB,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;yBACnD;6BAAM,IAAI,IAAI,KAAK,IAAI,EAAE;4BACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;yBACnD;6BAAM,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE;4BACpC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;yBACzD;6BAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;4BACnC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;yBACzD;6BAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;4BACnC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;yBACzD;6BAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;4BAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gCAClB,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;4BAC1D,CAAC,CAAC,CAAA;yBACH;6BAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;4BACnC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;yBACzD;qBACF;iBACF;aACF;SACF;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,SAAS,YAAY,CAAC,IAAY,EAAE,IAAa,EAAE,IAAY;QAC7D,MAAM,QAAQ,GAAkB,EAAE,CAAA;QAClC,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;SAC3C;aAAM,IAAI,IAAI,KAAK,IAAI,EAAE;YACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;SAC3C;aAAM,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE;YACpC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;SACjD;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YACnC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;SACjD;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YACnC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;SACjD;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YACnC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;YACnC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;YACtD,QAAQ,CAAC,IAAI,CACX,GAAG,YAAY,CAAC,IAA+B,EAAE,IAAI,GAAG,CAAC,CAAC,CAC3D,CAAA;SACF;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,SAAS,YAAY,CAAC,IAAY,EAAE,IAAY;QAC9C,MAAM,QAAQ,GAAkB,EAAE,CAAA;QAClC,sCAAsC;QACtC,iBAAiB;QACjB,iEAAiE;QACjE,WAAW;QACX,SAAS;QACT,SAAS;QACT,IAAI;QACJ,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,SAAS,YAAY,CAAC,IAAY,EAAE,IAAY;QAC9C,MAAM,QAAQ,GAAkB,EAAE,CAAA;QAClC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QACnC,QAAQ,CAAC,IAAI,CACX,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CACnD,GAAG,EACH,CAAC,CACF,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CACxB,CAAA;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,SAAS,YAAY,CAAC,IAAY,EAAE,IAAY,EAAE,IAAY;QAC5D,MAAM,QAAQ,GAAkB,EAAE,CAAA;QAClC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QACnC,QAAQ,CAAC,IAAI,CACX,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CACnD,GAAG,EACH,CAAC,CACF,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAC7B,CAAA;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,SAAS,YAAY,CAAC,IAAY,EAAE,IAAa,EAAE,IAAY;QAC7D,MAAM,QAAQ,GAAkB,EAAE,CAAA;QAClC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QACnC,QAAQ,CAAC,IAAI,CACX,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CACnD,GAAG,EACH,CAAC,CACF,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAC7B,CAAA;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,SAAS,YAAY,CAAC,IAAY,EAAE,IAAY,EAAE,IAAY;QAC5D,MAAM,QAAQ,GAAkB,EAAE,CAAA;QAClC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QACnC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACpB,QAAQ,CAAC,IAAI,CACX,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CACnD,KAAK,EACL,CAAC,CACF,EAAE,CACJ,CAAA;YACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC9B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAA;gBACzB,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;gBAC3C,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;YAClD,CAAC,CAAC,CAAA;YACF,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;SAC5C;aAAM;YACL,QAAQ,CAAC,IAAI,CACX,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CACnD,KAAK,EACL,CAAC,CACF,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CACnC,CAAA;SACF;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;AACH,CAAC,CAAA;AAED,eAAe,QAAQ,CAAA;AACvB,gDAAgD;AAChD,oGAAoG;AACpG,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AAEvD,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,EAAE;IACF,MAAM,IAAI,GAAkB,EAAE,CAAA;IAE9B,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;IACzB,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;IACtC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IAC3B,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;IACjC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IAE1B,IAAI,CAAC,IAAI,CACP,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACb,GAAG;QACH,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACZ,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CACf,CAAA;IACD,IAAI,CAAC,IAAI,CACP,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAC9D,CAAA;IACD,IAAI,CAAC,IAAI,CACP,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAC7D,CAAA;IACD,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IACvD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,IAAmB;IAC5D,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACvC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;QACX,OAAO,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;KACjC;SAAM,IAAI,CAAC,IAAI,CAAC,EAAE;QACjB,OAAO;YACL,GAAG,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC;YAC5B,IAAI,EAAE,CAAC;SACR,CAAA;KACF;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,IAAmB;IAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACvB,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACpD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACvB,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACpD,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACzB,IACE,IAAI;QACJ,OAAO,QAAQ,KAAK,QAAQ;QAC5B,OAAO,QAAQ,KAAK,QAAQ,EAC5B;QACA,CAAC;QAAA,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;KAC7D;IACD,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI;QACJ,IAAI,EAAE,QAAQ;KACf,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC"}
|