node-tao 0.0.1

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.
Files changed (55) hide show
  1. package/README.md +230 -0
  2. package/checks.d.ts +8 -0
  3. package/checks.d.ts.map +1 -0
  4. package/checks.js +37 -0
  5. package/checks.js.map +1 -0
  6. package/const.d.ts +24 -0
  7. package/const.d.ts.map +1 -0
  8. package/const.js +51 -0
  9. package/const.js.map +1 -0
  10. package/default-config.d.ts +4 -0
  11. package/default-config.d.ts.map +1 -0
  12. package/default-config.js +25 -0
  13. package/default-config.js.map +1 -0
  14. package/error/error.html +259 -0
  15. package/error-utils.d.ts +21 -0
  16. package/error-utils.d.ts.map +1 -0
  17. package/error-utils.js +163 -0
  18. package/error-utils.js.map +1 -0
  19. package/index.d.ts +3 -0
  20. package/index.d.ts.map +1 -0
  21. package/index.js +6 -0
  22. package/index.js.map +1 -0
  23. package/init.d.ts +12 -0
  24. package/init.d.ts.map +1 -0
  25. package/init.js +31 -0
  26. package/init.js.map +1 -0
  27. package/interfaces.d.ts +170 -0
  28. package/interfaces.d.ts.map +1 -0
  29. package/interfaces.js +3 -0
  30. package/interfaces.js.map +1 -0
  31. package/metrics.d.ts +16 -0
  32. package/metrics.d.ts.map +1 -0
  33. package/metrics.js +80 -0
  34. package/metrics.js.map +1 -0
  35. package/package.json +45 -0
  36. package/parsing-helpers.d.ts +8 -0
  37. package/parsing-helpers.d.ts.map +1 -0
  38. package/parsing-helpers.js +60 -0
  39. package/parsing-helpers.js.map +1 -0
  40. package/store.d.ts +29 -0
  41. package/store.d.ts.map +1 -0
  42. package/store.js +52 -0
  43. package/store.js.map +1 -0
  44. package/tao.d.ts +81 -0
  45. package/tao.d.ts.map +1 -0
  46. package/tao.js +533 -0
  47. package/tao.js.map +1 -0
  48. package/templates-access.d.ts +15 -0
  49. package/templates-access.d.ts.map +1 -0
  50. package/templates-access.js +38 -0
  51. package/templates-access.js.map +1 -0
  52. package/utils.d.ts +45 -0
  53. package/utils.d.ts.map +1 -0
  54. package/utils.js +227 -0
  55. package/utils.js.map +1 -0
package/utils.d.ts ADDED
@@ -0,0 +1,45 @@
1
+ import { AstObject, ChildTemplateFunction, Data, DefinitiveOptions, ErrorData, FileResolution, HelperFunction, Helpers, Parse, TagType, TemplateFunction } from './interfaces';
2
+ import { Store } from './store';
3
+ declare function initVariablesAndHelpers(dataOrHelpers: Data | Helpers): string;
4
+ declare function valueIsAFunction(value: Function): boolean;
5
+ declare function includeFn(): string;
6
+ declare function isAChildError(error: any): error is ErrorData;
7
+ /**
8
+ * Example: I'm using \ today → I\'m using \\ today
9
+ */
10
+ declare function escapeJSLiteral(value: string): string;
11
+ declare function getCurrentPrefixType(prefix: string, parse: DefinitiveOptions['parse']): TagType;
12
+ declare function compileBody(templateValues: AstObject[], config: DefinitiveOptions): string;
13
+ declare function compileContent(type: TagType, content: string, config: DefinitiveOptions): string | undefined;
14
+ declare function getPathWithExtension(filePath: string, extension: string): string;
15
+ /**
16
+ * Inject data and helpers at every template execution.
17
+ * Always keep placeholders.
18
+ */
19
+ declare function injectDataAndHelpersInTemplate(data: Data, helpers: Helpers, helpersStore: Store<HelperFunction>, executableContent: string): string;
20
+ declare function compileChildToFunction(contentReplaced: string): ChildTemplateFunction;
21
+ declare function compileToFunction(contentReplaced: string): TemplateFunction;
22
+ /**
23
+ * If path resolution is set to "flexible", do not return the full path, it's usefull for providing only unique end path.
24
+ */
25
+ declare function getFullPath(views: string, pathWithExtension: string, fileResolution: FileResolution): string;
26
+ /**
27
+ * Normalize file path on windows.
28
+ */
29
+ declare function normalizeFilesPath(file: string): string;
30
+ declare function getFileName(filename: string): string;
31
+ declare function buildPrefixRegex(parseOptions: Parse): string;
32
+ /**
33
+ * Escape special regular expression characters inside a string
34
+ * MDN
35
+ */
36
+ declare function escapeRegExp(string: string): string;
37
+ /**
38
+ * XML-escapes an input value after converting it to a string.
39
+ * Defaulted to empty string to not render "null" or "undefined" in the template.
40
+ * @param value - Input value
41
+ * @returns XML-escaped string
42
+ */
43
+ declare function XMLEscape(input: unknown): string;
44
+ export { XMLEscape, escapeJSLiteral, getCurrentPrefixType, compileContent, buildPrefixRegex, compileBody, includeFn, initVariablesAndHelpers, getFullPath, escapeRegExp, getPathWithExtension, normalizeFilesPath, getFileName, valueIsAFunction, injectDataAndHelpersInTemplate, compileToFunction, compileChildToFunction, isAChildError, };
45
+ //# sourceMappingURL=utils.d.ts.map
package/utils.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AASA,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,IAAI,EACJ,iBAAiB,EACjB,SAAS,EAET,cAAc,EACd,cAAc,EACd,OAAO,EACP,KAAK,EACL,OAAO,EACP,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,iBAAS,uBAAuB,CAAC,aAAa,EAAE,IAAI,GAAG,OAAO,UAS7D;AAiCD,iBAAS,gBAAgB,CAAC,KAAK,EAAE,QAAQ,WAExC;AAMD,iBAAS,SAAS,WAQjB;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,SAAS,CAErD;AAED;;GAEG;AACH,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,UAErC;AAED,iBAAS,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,WAS9E;AAED,iBAAS,WAAW,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,iBAAiB,UAe1E;AAED,iBAAS,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,sBAmBhF;AAED,iBAAS,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAOhE;AAED;;;GAGG;AACH,iBAAS,8BAA8B,CACrC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC,EACnC,iBAAiB,EAAE,MAAM,UAkB1B;AAED,iBAAS,sBAAsB,CAAC,eAAe,EAAE,MAAM,yBAQtD;AAED,iBAAS,iBAAiB,CAAC,eAAe,EAAE,MAAM,oBAcjD;AAED;;GAEG;AACH,iBAAS,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,UAQ5F;AAED;;GAEG;AACH,iBAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM,UAEvC;AAED,iBAAS,WAAW,CAAC,QAAQ,EAAE,MAAM,UAEpC;AAED,iBAAS,gBAAgB,CAAC,YAAY,EAAE,KAAK,UAW5C;AAMD;;;GAGG;AACH,iBAAS,YAAY,CAAC,MAAM,EAAE,MAAM,UAGnC;AAED;;;;;GAKG;AACH,iBAAS,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKzC;AAED,OAAO,EACL,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,uBAAuB,EACvB,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,8BAA8B,EAC9B,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,GACd,CAAC"}
package/utils.js ADDED
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isAChildError = exports.compileChildToFunction = exports.compileToFunction = exports.injectDataAndHelpersInTemplate = exports.valueIsAFunction = exports.getFileName = exports.normalizeFilesPath = exports.getPathWithExtension = exports.escapeRegExp = exports.getFullPath = exports.initVariablesAndHelpers = exports.includeFn = exports.compileBody = exports.buildPrefixRegex = exports.compileContent = exports.getCurrentPrefixType = exports.escapeJSLiteral = exports.XMLEscape = void 0;
7
+ const checks_1 = require("./checks");
8
+ const const_1 = require("./const");
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ function initVariablesAndHelpers(dataOrHelpers) {
11
+ const dataEntries = Object.entries(dataOrHelpers);
12
+ let variables = '';
13
+ for (const [key, value] of dataEntries) {
14
+ variables += `const ${key} = ${getValueType(value)};`;
15
+ }
16
+ return variables;
17
+ }
18
+ exports.initVariablesAndHelpers = initVariablesAndHelpers;
19
+ function getValueType(value) {
20
+ if (valueIsAFunction(value))
21
+ return value;
22
+ if (valueIsASymbol(value))
23
+ return value;
24
+ if (valueIsABigint(value))
25
+ return value;
26
+ if (valueIsNaN(value))
27
+ return value;
28
+ if (valueIsInfinity(value))
29
+ return value;
30
+ return JSON.stringify(value);
31
+ }
32
+ function valueIsNaN(value) {
33
+ if (typeof value !== 'number')
34
+ return false;
35
+ return isNaN(value);
36
+ }
37
+ function valueIsInfinity(value) {
38
+ if (typeof value !== 'number')
39
+ return false;
40
+ const plusOrMinus = Math.abs(value);
41
+ return plusOrMinus === Infinity;
42
+ }
43
+ function valueIsASymbol(value) {
44
+ return typeof value === 'symbol';
45
+ }
46
+ function valueIsABigint(value) {
47
+ return typeof value === 'bigint';
48
+ }
49
+ function valueIsAFunction(value) {
50
+ return typeof value === 'function';
51
+ }
52
+ exports.valueIsAFunction = valueIsAFunction;
53
+ // il faudra un autre render pour les enfants que le principal
54
+ // le renderChild renverra un objet avec error (réelle) et content
55
+ // si error alors throw new Error(error)
56
+ // sur error toutes les props mises
57
+ function includeFn() {
58
+ return `const include = (templatePath, data, helpers) => {
59
+ data = {...${const_1.TEMPLATE_VARNAME}, ...data};
60
+ helpers = {...${const_1.HELPER_VARNAME}, ...helpers};
61
+ const rendered = this.renderChild(templatePath, data, helpers);
62
+ if (rendered.isAChildError) throw rendered;
63
+ return rendered;
64
+ }`;
65
+ }
66
+ exports.includeFn = includeFn;
67
+ function isAChildError(error) {
68
+ return error.isAChildError;
69
+ }
70
+ exports.isAChildError = isAChildError;
71
+ /**
72
+ * Example: I'm using \ today → I\'m using \\ today
73
+ */
74
+ function escapeJSLiteral(value) {
75
+ return value.replace(/\\|'/g, '\\$&').replace(/\r\n|\n|\r/g, '\\n');
76
+ }
77
+ exports.escapeJSLiteral = escapeJSLiteral;
78
+ function getCurrentPrefixType(prefix, parse) {
79
+ var _a;
80
+ const parseOptions = {
81
+ [parse.exec]: 'execute',
82
+ [parse.raw]: 'raw',
83
+ [parse.interpolate]: 'interpolate',
84
+ };
85
+ // escaping by default
86
+ return (_a = parseOptions[prefix]) !== null && _a !== void 0 ? _a : parse.interpolate;
87
+ }
88
+ exports.getCurrentPrefixType = getCurrentPrefixType;
89
+ function compileBody(templateValues, config) {
90
+ let result = '';
91
+ for (const value of templateValues) {
92
+ if (typeof value === 'string') {
93
+ // HTML content
94
+ result += `${const_1.TP_VARNAME_WITH_PREFIX}.res+='${value}';\n`;
95
+ continue;
96
+ }
97
+ const { type, content = '' } = value;
98
+ result += compileContent(type, content, config);
99
+ }
100
+ return result;
101
+ }
102
+ exports.compileBody = compileBody;
103
+ function compileContent(type, content, config) {
104
+ const { autoEscape } = config;
105
+ const prefix = const_1.TP_VARNAME_WITH_PREFIX;
106
+ if (type === 'raw') {
107
+ return `${prefix}.res+=${content}\n`;
108
+ }
109
+ if (type === 'interpolate') {
110
+ if (autoEscape) {
111
+ content = `${prefix}.e(${content})`;
112
+ }
113
+ return `${prefix}.res+=${content};\n`;
114
+ }
115
+ if (type === 'execute') {
116
+ return `${content}\n`;
117
+ }
118
+ }
119
+ exports.compileContent = compileContent;
120
+ function getPathWithExtension(filePath, extension) {
121
+ if ((0, checks_1.isTemplateDynamicallyDefined)(filePath))
122
+ return filePath;
123
+ const pathContainsExtension = node_path_1.default.extname(filePath);
124
+ if (pathContainsExtension)
125
+ return filePath;
126
+ return `${filePath}.${extension}`;
127
+ }
128
+ exports.getPathWithExtension = getPathWithExtension;
129
+ /**
130
+ * Inject data and helpers at every template execution.
131
+ * Always keep placeholders.
132
+ */
133
+ function injectDataAndHelpersInTemplate(data, helpers, helpersStore, executableContent) {
134
+ let newVariables = const_1.PLACEHOLDER_VAR_START;
135
+ newVariables += initVariablesAndHelpers(data);
136
+ newVariables += initVariablesAndHelpers(helpers);
137
+ newVariables += initVariablesAndHelpers(helpersStore.getAll());
138
+ newVariables += const_1.PLACEHOLDER_VAR_END;
139
+ const startIndex = executableContent.indexOf(const_1.PLACEHOLDER_VAR_START);
140
+ const endIndex = executableContent.indexOf(const_1.PLACEHOLDER_VAR_END);
141
+ const oldVariables = executableContent.substring(startIndex, endIndex + const_1.PLACEHOLDER_VAR_END.length);
142
+ const contentReplaced = executableContent.replace(oldVariables, newVariables);
143
+ return contentReplaced;
144
+ }
145
+ exports.injectDataAndHelpersInTemplate = injectDataAndHelpersInTemplate;
146
+ function compileChildToFunction(contentReplaced) {
147
+ try {
148
+ return new Function(const_1.TEMPLATE_VARNAME, const_1.HELPER_VARNAME, contentReplaced);
149
+ }
150
+ catch (error) {
151
+ const type = 'Compilation Error';
152
+ error.type = type;
153
+ throw error;
154
+ }
155
+ }
156
+ exports.compileChildToFunction = compileChildToFunction;
157
+ function compileToFunction(contentReplaced) {
158
+ try {
159
+ return new Function(const_1.TEMPLATE_VARNAME, const_1.HELPER_VARNAME, 'ɵɵstart', 'ɵɵcacheHit', contentReplaced);
160
+ }
161
+ catch (error) {
162
+ const type = 'Compilation Error';
163
+ error.type = type;
164
+ throw error;
165
+ }
166
+ }
167
+ exports.compileToFunction = compileToFunction;
168
+ /**
169
+ * If path resolution is set to "flexible", do not return the full path, it's usefull for providing only unique end path.
170
+ */
171
+ function getFullPath(views, pathWithExtension, fileResolution) {
172
+ if (fileResolution === 'flexible')
173
+ return pathWithExtension;
174
+ const isAbsolutePath = node_path_1.default.isAbsolute(pathWithExtension);
175
+ if (isAbsolutePath)
176
+ return pathWithExtension;
177
+ const fullPath = node_path_1.default.join(views, pathWithExtension);
178
+ return normalizeFilesPath(fullPath);
179
+ }
180
+ exports.getFullPath = getFullPath;
181
+ /**
182
+ * Normalize file path on windows.
183
+ */
184
+ function normalizeFilesPath(file) {
185
+ return file.replace(/\\/g, '/');
186
+ }
187
+ exports.normalizeFilesPath = normalizeFilesPath;
188
+ function getFileName(filename) {
189
+ return filename.split('/').at(-1);
190
+ }
191
+ exports.getFileName = getFileName;
192
+ function buildPrefixRegex(parseOptions) {
193
+ const options = [];
194
+ for (const prefix of Object.values(parseOptions)) {
195
+ if (!prefix)
196
+ continue;
197
+ const prefixEscaped = escapeRegExp(prefix);
198
+ options.push(prefixEscaped);
199
+ }
200
+ return options.join('|');
201
+ }
202
+ exports.buildPrefixRegex = buildPrefixRegex;
203
+ function replaceChar(input) {
204
+ return const_1.ESC_MAP[input];
205
+ }
206
+ /**
207
+ * Escape special regular expression characters inside a string
208
+ * MDN
209
+ */
210
+ function escapeRegExp(string) {
211
+ // $& means the whole matched string
212
+ return string.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&');
213
+ }
214
+ exports.escapeRegExp = escapeRegExp;
215
+ /**
216
+ * XML-escapes an input value after converting it to a string.
217
+ * Defaulted to empty string to not render "null" or "undefined" in the template.
218
+ * @param value - Input value
219
+ * @returns XML-escaped string
220
+ */
221
+ function XMLEscape(input) {
222
+ const defaultedToEmptyString = input !== null && input !== void 0 ? input : '';
223
+ const newStr = String(defaultedToEmptyString);
224
+ return newStr.replace(/[&<>"']/g, replaceChar);
225
+ }
226
+ exports.XMLEscape = XMLEscape;
227
+ //# sourceMappingURL=utils.js.map
package/utils.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;AAAA,qCAAwD;AACxD,mCAOiB;AAejB,0DAA6B;AAG7B,SAAS,uBAAuB,CAAC,aAA6B;IAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAClD,IAAI,SAAS,GAAG,EAAE,CAAC;IAEnB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,WAAW,EAAE;QACtC,SAAS,IAAI,SAAS,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;KACvD;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAqPC,0DAAuB;AAnPzB,SAAS,YAAY,CAAC,KAAU;IAC9B,IAAI,gBAAgB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,cAAc,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,cAAc,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,eAAe,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEzC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,UAAU,CAAC,KAAU;IAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5C,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,eAAe,CAAC,KAAU;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEpC,OAAO,WAAW,KAAK,QAAQ,CAAC;AAClC,CAAC;AAED,SAAS,cAAc,CAAC,KAAe;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACnC,CAAC;AAED,SAAS,cAAc,CAAC,KAAe;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACnC,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAe;IACvC,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACrC,CAAC;AAwNC,4CAAgB;AAtNlB,8DAA8D;AAC9D,kEAAkE;AAClE,wCAAwC;AACxC,mCAAmC;AACnC,SAAS,SAAS;IAChB,OAAO;mBACU,wBAAgB;sBACb,sBAAc;;;;IAIhC,CAAC;AACL,CAAC;AAmMC,8BAAS;AAjMX,SAAS,aAAa,CAAC,KAAU;IAC/B,OAAO,KAAK,CAAC,aAAa,CAAC;AAC7B,CAAC;AA0MC,sCAAa;AAxMf;;GAEG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AACtE,CAAC;AAmLC,0CAAe;AAjLjB,SAAS,oBAAoB,CAAC,MAAc,EAAE,KAAiC;;IAC7E,MAAM,YAAY,GAA4B;QAC5C,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS;QACvB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK;QAClB,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,aAAa;KACnC,CAAC;IAEF,sBAAsB;IACtB,OAAO,MAAA,YAAY,CAAC,MAAM,CAAC,mCAAI,KAAK,CAAC,WAAW,CAAC;AACnD,CAAC;AAyKC,oDAAoB;AAvKtB,SAAS,WAAW,CAAC,cAA2B,EAAE,MAAyB;IACzE,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE;QAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,eAAe;YACf,MAAM,IAAI,GAAG,8BAAsB,UAAU,KAAK,MAAM,CAAC;YACzD,SAAS;SACV;QAED,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC;QACrC,MAAM,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;KACjD;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AA2JC,kCAAW;AAzJb,SAAS,cAAc,CAAC,IAAa,EAAE,OAAe,EAAE,MAAyB;IAC/E,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAC9B,MAAM,MAAM,GAAG,8BAAsB,CAAC;IAEtC,IAAI,IAAI,KAAK,KAAK,EAAE;QAClB,OAAO,GAAG,MAAM,SAAS,OAAO,IAAI,CAAC;KACtC;IAED,IAAI,IAAI,KAAK,aAAa,EAAE;QAC1B,IAAI,UAAU,EAAE;YACd,OAAO,GAAG,GAAG,MAAM,MAAM,OAAO,GAAG,CAAC;SACrC;QAED,OAAO,GAAG,MAAM,SAAS,OAAO,KAAK,CAAC;KACvC;IAED,IAAI,IAAI,KAAK,SAAS,EAAE;QACtB,OAAO,GAAG,OAAO,IAAI,CAAC;KACvB;AACH,CAAC;AAoIC,wCAAc;AAlIhB,SAAS,oBAAoB,CAAC,QAAgB,EAAE,SAAiB;IAC/D,IAAI,IAAA,qCAA4B,EAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE5D,MAAM,qBAAqB,GAAG,mBAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,qBAAqB;QAAE,OAAO,QAAQ,CAAC;IAE3C,OAAO,GAAG,QAAQ,IAAI,SAAS,EAAE,CAAC;AACpC,CAAC;AAkIC,oDAAoB;AAhItB;;;GAGG;AACH,SAAS,8BAA8B,CACrC,IAAU,EACV,OAAgB,EAChB,YAAmC,EACnC,iBAAyB;IAEzB,IAAI,YAAY,GAAG,6BAAqB,CAAC;IACzC,YAAY,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC9C,YAAY,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjD,YAAY,IAAI,uBAAuB,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,YAAY,IAAI,2BAAmB,CAAC;IAEpC,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,6BAAqB,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,2BAAmB,CAAC,CAAC;IAEhE,MAAM,YAAY,GAAG,iBAAiB,CAAC,SAAS,CAC9C,UAAU,EACV,QAAQ,GAAG,2BAAmB,CAAC,MAAM,CACtC,CAAC;IACF,MAAM,eAAe,GAAG,iBAAiB,CAAC,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAE9E,OAAO,eAAe,CAAC;AACzB,CAAC;AA0GC,wEAA8B;AAxGhC,SAAS,sBAAsB,CAAC,eAAuB;IACrD,IAAI;QACF,OAAO,IAAI,QAAQ,CAAC,wBAAgB,EAAE,sBAAc,EAAE,eAAe,CAA0B,CAAC;KACjG;IAAC,OAAO,KAAU,EAAE;QACnB,MAAM,IAAI,GAAc,mBAAmB,CAAC;QAC5C,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,KAAK,CAAC;KACb;AACH,CAAC;AAkGC,wDAAsB;AAhGxB,SAAS,iBAAiB,CAAC,eAAuB;IAChD,IAAI;QACF,OAAO,IAAI,QAAQ,CACjB,wBAAgB,EAChB,sBAAc,EACd,SAAS,EACT,YAAY,EACZ,eAAe,CACI,CAAC;KACvB;IAAC,OAAO,KAAU,EAAE;QACnB,MAAM,IAAI,GAAc,mBAAmB,CAAC;QAC5C,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,KAAK,CAAC;KACb;AACH,CAAC;AAiFC,8CAAiB;AA/EnB;;GAEG;AACH,SAAS,WAAW,CAAC,KAAa,EAAE,iBAAyB,EAAE,cAA8B;IAC3F,IAAI,cAAc,KAAK,UAAU;QAAE,OAAO,iBAAiB,CAAC;IAE5D,MAAM,cAAc,GAAG,mBAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC1D,IAAI,cAAc;QAAE,OAAO,iBAAiB,CAAC;IAE7C,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IACrD,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC;AA6DC,kCAAW;AA3Db;;GAEG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAyDC,gDAAkB;AAvDpB,SAAS,WAAW,CAAC,QAAgB;IACnC,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;AACrC,CAAC;AAsDC,kCAAW;AApDb,SAAS,gBAAgB,CAAC,YAAmB;IAC3C,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;QAChD,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KAC7B;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAiCC,4CAAgB;AA/BlB,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,eAAO,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,MAAc;IAClC,oCAAoC;IACpC,OAAO,MAAM,CAAC,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC;AAyBC,oCAAY;AAvBd;;;;;GAKG;AACH,SAAS,SAAS,CAAC,KAAc;IAC/B,MAAM,sBAAsB,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAE9C,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AACjD,CAAC;AAGC,8BAAS"}