@cogitator-ai/wasm-tools 0.5.11 → 0.6.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.
Files changed (119) hide show
  1. package/README.md +84 -25
  2. package/dist/index.d.ts +22 -3
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +81 -14
  5. package/dist/index.js.map +1 -1
  6. package/dist/manager/types.d.ts +2 -0
  7. package/dist/manager/types.d.ts.map +1 -1
  8. package/dist/manager/wasm-loader.d.ts.map +1 -1
  9. package/dist/manager/wasm-loader.js +11 -2
  10. package/dist/manager/wasm-loader.js.map +1 -1
  11. package/dist/manager/wasm-tool-manager.d.ts +1 -0
  12. package/dist/manager/wasm-tool-manager.d.ts.map +1 -1
  13. package/dist/manager/wasm-tool-manager.js +56 -13
  14. package/dist/manager/wasm-tool-manager.js.map +1 -1
  15. package/dist/runtime.d.ts +11 -0
  16. package/dist/runtime.d.ts.map +1 -0
  17. package/dist/runtime.js +104 -0
  18. package/dist/runtime.js.map +1 -0
  19. package/dist/wasm/base64.wasm +0 -0
  20. package/dist/wasm/calc.wasm +0 -0
  21. package/dist/wasm/compression.wasm +0 -0
  22. package/dist/wasm/csv.wasm +0 -0
  23. package/dist/wasm/datetime.wasm +0 -0
  24. package/dist/wasm/diff.wasm +0 -0
  25. package/dist/wasm/hash.wasm +0 -0
  26. package/dist/wasm/json.wasm +0 -0
  27. package/dist/wasm/markdown.wasm +0 -0
  28. package/dist/wasm/regex.wasm +0 -0
  29. package/dist/wasm/signing.wasm +0 -0
  30. package/dist/wasm/slug.wasm +0 -0
  31. package/dist/wasm/validation.wasm +0 -0
  32. package/dist/wasm/xml.wasm +0 -0
  33. package/package.json +5 -6
  34. package/dist/__tests__/file-watcher.test.d.ts +0 -2
  35. package/dist/__tests__/file-watcher.test.d.ts.map +0 -1
  36. package/dist/__tests__/file-watcher.test.js +0 -99
  37. package/dist/__tests__/file-watcher.test.js.map +0 -1
  38. package/dist/__tests__/index.test.d.ts +0 -2
  39. package/dist/__tests__/index.test.d.ts.map +0 -1
  40. package/dist/__tests__/index.test.js +0 -226
  41. package/dist/__tests__/index.test.js.map +0 -1
  42. package/dist/__tests__/wasm-loader.test.d.ts +0 -2
  43. package/dist/__tests__/wasm-loader.test.d.ts.map +0 -1
  44. package/dist/__tests__/wasm-loader.test.js +0 -68
  45. package/dist/__tests__/wasm-loader.test.js.map +0 -1
  46. package/dist/__tests__/wasm-tool-manager.test.d.ts +0 -2
  47. package/dist/__tests__/wasm-tool-manager.test.d.ts.map +0 -1
  48. package/dist/__tests__/wasm-tool-manager.test.js +0 -166
  49. package/dist/__tests__/wasm-tool-manager.test.js.map +0 -1
  50. package/dist/plugins/base64.d.ts +0 -12
  51. package/dist/plugins/base64.d.ts.map +0 -1
  52. package/dist/plugins/base64.js +0 -144
  53. package/dist/plugins/base64.js.map +0 -1
  54. package/dist/plugins/calc.d.ts +0 -12
  55. package/dist/plugins/calc.d.ts.map +0 -1
  56. package/dist/plugins/calc.js +0 -102
  57. package/dist/plugins/calc.js.map +0 -1
  58. package/dist/plugins/compression.d.ts +0 -2
  59. package/dist/plugins/compression.d.ts.map +0 -1
  60. package/dist/plugins/compression.js +0 -549
  61. package/dist/plugins/compression.js.map +0 -1
  62. package/dist/plugins/csv.d.ts +0 -2
  63. package/dist/plugins/csv.d.ts.map +0 -1
  64. package/dist/plugins/csv.js +0 -142
  65. package/dist/plugins/csv.js.map +0 -1
  66. package/dist/plugins/datetime.d.ts +0 -2
  67. package/dist/plugins/datetime.d.ts.map +0 -1
  68. package/dist/plugins/datetime.js +0 -199
  69. package/dist/plugins/datetime.js.map +0 -1
  70. package/dist/plugins/diff.d.ts +0 -2
  71. package/dist/plugins/diff.d.ts.map +0 -1
  72. package/dist/plugins/diff.js +0 -187
  73. package/dist/plugins/diff.js.map +0 -1
  74. package/dist/plugins/hash.d.ts +0 -12
  75. package/dist/plugins/hash.d.ts.map +0 -1
  76. package/dist/plugins/hash.js +0 -310
  77. package/dist/plugins/hash.js.map +0 -1
  78. package/dist/plugins/json.d.ts +0 -12
  79. package/dist/plugins/json.d.ts.map +0 -1
  80. package/dist/plugins/json.js +0 -70
  81. package/dist/plugins/json.js.map +0 -1
  82. package/dist/plugins/markdown.d.ts +0 -2
  83. package/dist/plugins/markdown.d.ts.map +0 -1
  84. package/dist/plugins/markdown.js +0 -213
  85. package/dist/plugins/markdown.js.map +0 -1
  86. package/dist/plugins/regex.d.ts +0 -2
  87. package/dist/plugins/regex.d.ts.map +0 -1
  88. package/dist/plugins/regex.js +0 -120
  89. package/dist/plugins/regex.js.map +0 -1
  90. package/dist/plugins/signing.d.ts +0 -2
  91. package/dist/plugins/signing.d.ts.map +0 -1
  92. package/dist/plugins/signing.js +0 -589
  93. package/dist/plugins/signing.js.map +0 -1
  94. package/dist/plugins/slug.d.ts +0 -2
  95. package/dist/plugins/slug.d.ts.map +0 -1
  96. package/dist/plugins/slug.js +0 -183
  97. package/dist/plugins/slug.js.map +0 -1
  98. package/dist/plugins/validation.d.ts +0 -2
  99. package/dist/plugins/validation.d.ts.map +0 -1
  100. package/dist/plugins/validation.js +0 -105
  101. package/dist/plugins/validation.js.map +0 -1
  102. package/dist/plugins/xml.d.ts +0 -2
  103. package/dist/plugins/xml.d.ts.map +0 -1
  104. package/dist/plugins/xml.js +0 -297
  105. package/dist/plugins/xml.js.map +0 -1
  106. package/dist/temp/base64.js +0 -149
  107. package/dist/temp/calc.js +0 -108
  108. package/dist/temp/compression.js +0 -742
  109. package/dist/temp/csv.js +0 -161
  110. package/dist/temp/datetime.js +0 -217
  111. package/dist/temp/diff.js +0 -198
  112. package/dist/temp/hash.js +0 -424
  113. package/dist/temp/json.js +0 -80
  114. package/dist/temp/markdown.js +0 -224
  115. package/dist/temp/regex.js +0 -141
  116. package/dist/temp/signing.js +0 -600
  117. package/dist/temp/slug.js +0 -201
  118. package/dist/temp/validation.js +0 -125
  119. package/dist/temp/xml.js +0 -295
@@ -1,183 +0,0 @@
1
- const CHAR_MAP = {
2
- à: 'a',
3
- á: 'a',
4
- â: 'a',
5
- ã: 'a',
6
- ä: 'a',
7
- å: 'a',
8
- æ: 'ae',
9
- ç: 'c',
10
- è: 'e',
11
- é: 'e',
12
- ê: 'e',
13
- ë: 'e',
14
- ì: 'i',
15
- í: 'i',
16
- î: 'i',
17
- ï: 'i',
18
- ð: 'd',
19
- ñ: 'n',
20
- ò: 'o',
21
- ó: 'o',
22
- ô: 'o',
23
- õ: 'o',
24
- ö: 'o',
25
- ø: 'o',
26
- ù: 'u',
27
- ú: 'u',
28
- û: 'u',
29
- ü: 'u',
30
- ý: 'y',
31
- ÿ: 'y',
32
- þ: 'th',
33
- ß: 'ss',
34
- ą: 'a',
35
- ć: 'c',
36
- ę: 'e',
37
- ł: 'l',
38
- ń: 'n',
39
- ś: 's',
40
- ź: 'z',
41
- ż: 'z',
42
- č: 'c',
43
- ď: 'd',
44
- ě: 'e',
45
- ň: 'n',
46
- ř: 'r',
47
- š: 's',
48
- ť: 't',
49
- ů: 'u',
50
- ž: 'z',
51
- ā: 'a',
52
- ē: 'e',
53
- ģ: 'g',
54
- ī: 'i',
55
- ķ: 'k',
56
- ļ: 'l',
57
- ņ: 'n',
58
- ū: 'u',
59
- ő: 'o',
60
- ű: 'u',
61
- а: 'a',
62
- б: 'b',
63
- в: 'v',
64
- г: 'g',
65
- д: 'd',
66
- е: 'e',
67
- ё: 'yo',
68
- ж: 'zh',
69
- з: 'z',
70
- и: 'i',
71
- й: 'y',
72
- к: 'k',
73
- л: 'l',
74
- м: 'm',
75
- н: 'n',
76
- о: 'o',
77
- п: 'p',
78
- р: 'r',
79
- с: 's',
80
- т: 't',
81
- у: 'u',
82
- ф: 'f',
83
- х: 'h',
84
- ц: 'ts',
85
- ч: 'ch',
86
- ш: 'sh',
87
- щ: 'sch',
88
- ъ: '',
89
- ы: 'y',
90
- ь: '',
91
- э: 'e',
92
- ю: 'yu',
93
- я: 'ya',
94
- α: 'a',
95
- β: 'b',
96
- γ: 'g',
97
- δ: 'd',
98
- ε: 'e',
99
- ζ: 'z',
100
- η: 'h',
101
- θ: 'th',
102
- ι: 'i',
103
- κ: 'k',
104
- λ: 'l',
105
- μ: 'm',
106
- ν: 'n',
107
- ξ: 'x',
108
- ο: 'o',
109
- π: 'p',
110
- ρ: 'r',
111
- σ: 's',
112
- τ: 't',
113
- υ: 'y',
114
- φ: 'ph',
115
- χ: 'ch',
116
- ψ: 'ps',
117
- ω: 'o',
118
- };
119
- function transliterate(str) {
120
- let result = '';
121
- for (const char of str) {
122
- const lower = char.toLowerCase();
123
- if (CHAR_MAP[lower]) {
124
- const mapped = CHAR_MAP[lower];
125
- result += char === lower ? mapped : mapped.toUpperCase();
126
- }
127
- else {
128
- result += char;
129
- }
130
- }
131
- return result;
132
- }
133
- function generateSlug(text, separator, lowercase, maxLength) {
134
- let slug = transliterate(text);
135
- if (lowercase) {
136
- slug = slug.toLowerCase();
137
- }
138
- slug = slug
139
- .replace(/[^a-zA-Z0-9\s-]/g, '')
140
- .replace(/\s+/g, separator)
141
- .replace(new RegExp(`${escapeRegex(separator)}+`, 'g'), separator)
142
- .replace(new RegExp(`^${escapeRegex(separator)}|${escapeRegex(separator)}$`, 'g'), '');
143
- if (maxLength !== undefined && maxLength > 0 && slug.length > maxLength) {
144
- slug = slug.substring(0, maxLength);
145
- const lastSep = slug.lastIndexOf(separator);
146
- if (lastSep > maxLength * 0.5) {
147
- slug = slug.substring(0, lastSep);
148
- }
149
- slug = slug.replace(new RegExp(`${escapeRegex(separator)}$`), '');
150
- }
151
- return slug;
152
- }
153
- function escapeRegex(str) {
154
- return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
155
- }
156
- export function slug() {
157
- try {
158
- const inputStr = Host.inputString();
159
- const input = JSON.parse(inputStr);
160
- const separator = input.separator ?? '-';
161
- if (separator.length === 0) {
162
- throw new Error('Separator must not be empty');
163
- }
164
- const lowercase = input.lowercase ?? true;
165
- const result = generateSlug(input.text, separator, lowercase, input.maxLength);
166
- const output = {
167
- slug: result,
168
- original: input.text,
169
- };
170
- Host.outputString(JSON.stringify(output));
171
- return 0;
172
- }
173
- catch (error) {
174
- const output = {
175
- slug: '',
176
- original: '',
177
- error: error instanceof Error ? error.message : String(error),
178
- };
179
- Host.outputString(JSON.stringify(output));
180
- return 1;
181
- }
182
- }
183
- //# sourceMappingURL=slug.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"slug.js","sourceRoot":"","sources":["../../src/plugins/slug.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function validate(): number;
2
- //# sourceMappingURL=validation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/plugins/validation.ts"],"names":[],"mappings":"AAiGA,wBAAgB,QAAQ,IAAI,MAAM,CA8CjC"}
@@ -1,105 +0,0 @@
1
- const EMAIL_REGEX = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
2
- const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
3
- const IPV4_REGEX = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
4
- const IPV6_REGEX = /^(?:(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:){1,7}:|(?:[0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:){1,5}(?::[0-9a-fA-F]{1,4}){1,2}|(?:[0-9a-fA-F]{1,4}:){1,4}(?::[0-9a-fA-F]{1,4}){1,3}|(?:[0-9a-fA-F]{1,4}:){1,3}(?::[0-9a-fA-F]{1,4}){1,4}|(?:[0-9a-fA-F]{1,4}:){1,2}(?::[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:(?::[0-9a-fA-F]{1,4}){1,6}|:(?::[0-9a-fA-F]{1,4}){1,7}|::(?:[fF]{4}:)?(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|(?:[0-9a-fA-F]{1,4}:){1,4}:(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))$/;
5
- function validateEmail(value) {
6
- const trimmed = value.trim().toLowerCase();
7
- const valid = EMAIL_REGEX.test(trimmed) && trimmed.length <= 254;
8
- return { valid, normalized: valid ? trimmed : undefined };
9
- }
10
- function validateUrl(value) {
11
- try {
12
- const trimmed = value.trim();
13
- const hasProtocol = /^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//.test(trimmed);
14
- const urlStr = hasProtocol ? trimmed : `https://${trimmed}`;
15
- const parts = /^([a-zA-Z][a-zA-Z0-9+.-]*):\/\/([^/?#]+)(.*)$/.exec(urlStr);
16
- if (!parts)
17
- return { valid: false };
18
- const [, protocol, host] = parts;
19
- if (!['http', 'https', 'ftp', 'ftps'].includes(protocol.toLowerCase())) {
20
- return { valid: false };
21
- }
22
- const hostParts = host.split(':');
23
- const hostname = hostParts[0];
24
- const port = hostParts[1];
25
- if (port && (!/^\d+$/.test(port) || parseInt(port) > 65535)) {
26
- return { valid: false };
27
- }
28
- if (!/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?)*$/.test(hostname)) {
29
- if (!IPV4_REGEX.test(hostname) && !hostname.startsWith('[')) {
30
- return { valid: false };
31
- }
32
- }
33
- return { valid: true, normalized: urlStr };
34
- }
35
- catch {
36
- return { valid: false };
37
- }
38
- }
39
- function validateUuid(value) {
40
- const trimmed = value.trim().toLowerCase();
41
- const valid = UUID_REGEX.test(trimmed);
42
- return { valid, normalized: valid ? trimmed : undefined };
43
- }
44
- function validateIpv4(value) {
45
- const trimmed = value.trim();
46
- const valid = IPV4_REGEX.test(trimmed);
47
- if (valid) {
48
- const normalized = trimmed
49
- .split('.')
50
- .map((n) => parseInt(n, 10).toString())
51
- .join('.');
52
- return { valid: true, normalized };
53
- }
54
- return { valid: false };
55
- }
56
- function validateIpv6(value) {
57
- const trimmed = value.trim().toLowerCase();
58
- const valid = IPV6_REGEX.test(trimmed);
59
- return { valid, normalized: valid ? trimmed : undefined };
60
- }
61
- export function validate() {
62
- try {
63
- const inputStr = Host.inputString();
64
- const input = JSON.parse(inputStr);
65
- let result;
66
- switch (input.type) {
67
- case 'email':
68
- result = validateEmail(input.value);
69
- break;
70
- case 'url':
71
- result = validateUrl(input.value);
72
- break;
73
- case 'uuid':
74
- result = validateUuid(input.value);
75
- break;
76
- case 'ipv4':
77
- result = validateIpv4(input.value);
78
- break;
79
- case 'ipv6':
80
- result = validateIpv6(input.value);
81
- break;
82
- default:
83
- throw new Error(`Unknown validation type: ${input.type}`);
84
- }
85
- const output = {
86
- valid: result.valid,
87
- type: input.type,
88
- value: input.value,
89
- normalized: result.normalized,
90
- };
91
- Host.outputString(JSON.stringify(output));
92
- return 0;
93
- }
94
- catch (error) {
95
- const output = {
96
- valid: false,
97
- type: 'unknown',
98
- value: '',
99
- error: error instanceof Error ? error.message : String(error),
100
- };
101
- Host.outputString(JSON.stringify(output));
102
- return 1;
103
- }
104
- }
105
- //# sourceMappingURL=validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/plugins/validation.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function xml(): number;
2
- //# sourceMappingURL=xml.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xml.d.ts","sourceRoot":"","sources":["../../src/plugins/xml.ts"],"names":[],"mappings":"AAqTA,wBAAgB,GAAG,IAAI,MAAM,CAwC5B"}
@@ -1,297 +0,0 @@
1
- function parseXml(xml) {
2
- let pos = 0;
3
- const skipWhitespace = () => {
4
- while (pos < xml.length && /\s/.test(xml[pos]))
5
- pos++;
6
- };
7
- const parseAttributes = () => {
8
- const attrs = {};
9
- while (pos < xml.length) {
10
- skipWhitespace();
11
- if (xml[pos] === '>' || xml[pos] === '/' || xml[pos] === '?')
12
- break;
13
- let name = '';
14
- while (pos < xml.length && /[a-zA-Z0-9_:-]/.test(xml[pos])) {
15
- name += xml[pos++];
16
- }
17
- if (!name)
18
- break;
19
- skipWhitespace();
20
- if (xml[pos] !== '=') {
21
- attrs[name] = 'true';
22
- continue;
23
- }
24
- pos++;
25
- skipWhitespace();
26
- const quote = xml[pos];
27
- if (quote !== '"' && quote !== "'") {
28
- throw new Error(`Expected quote at position ${pos}`);
29
- }
30
- pos++;
31
- let value = '';
32
- while (pos < xml.length && xml[pos] !== quote) {
33
- if (xml[pos] === '&') {
34
- const entity = parseEntity();
35
- value += entity;
36
- }
37
- else {
38
- value += xml[pos++];
39
- }
40
- }
41
- pos++;
42
- attrs[name] = value;
43
- }
44
- return attrs;
45
- };
46
- const parseEntity = () => {
47
- let entity = '';
48
- pos++;
49
- while (pos < xml.length && xml[pos] !== ';') {
50
- entity += xml[pos++];
51
- }
52
- pos++;
53
- switch (entity) {
54
- case 'lt':
55
- return '<';
56
- case 'gt':
57
- return '>';
58
- case 'amp':
59
- return '&';
60
- case 'quot':
61
- return '"';
62
- case 'apos':
63
- return "'";
64
- default:
65
- if (entity.startsWith('#x')) {
66
- return String.fromCharCode(parseInt(entity.slice(2), 16));
67
- }
68
- else if (entity.startsWith('#')) {
69
- return String.fromCharCode(parseInt(entity.slice(1), 10));
70
- }
71
- return `&${entity};`;
72
- }
73
- };
74
- const parseText = () => {
75
- let text = '';
76
- while (pos < xml.length && xml[pos] !== '<') {
77
- if (xml[pos] === '&') {
78
- text += parseEntity();
79
- }
80
- else {
81
- text += xml[pos++];
82
- }
83
- }
84
- return text;
85
- };
86
- const parseNode = () => {
87
- skipWhitespace();
88
- if (pos >= xml.length)
89
- return null;
90
- if (xml[pos] !== '<') {
91
- const text = parseText().trim();
92
- if (text) {
93
- return { type: 'text', value: text };
94
- }
95
- return null;
96
- }
97
- pos++;
98
- if (xml.slice(pos, pos + 3) === '!--') {
99
- pos += 3;
100
- const endPos = xml.indexOf('-->', pos);
101
- if (endPos === -1)
102
- throw new Error('Unclosed comment');
103
- const value = xml.slice(pos, endPos);
104
- pos = endPos + 3;
105
- return { type: 'comment', value };
106
- }
107
- if (xml.slice(pos, pos + 8) === '![CDATA[') {
108
- pos += 8;
109
- const endPos = xml.indexOf(']]>', pos);
110
- if (endPos === -1)
111
- throw new Error('Unclosed CDATA');
112
- const value = xml.slice(pos, endPos);
113
- pos = endPos + 3;
114
- return { type: 'cdata', value };
115
- }
116
- if (xml[pos] === '?') {
117
- const endPos = xml.indexOf('?>', pos);
118
- if (endPos === -1)
119
- throw new Error('Unclosed processing instruction');
120
- pos = endPos + 2;
121
- return parseNode();
122
- }
123
- if (xml[pos] === '!') {
124
- const endPos = xml.indexOf('>', pos);
125
- if (endPos === -1)
126
- throw new Error('Unclosed declaration');
127
- pos = endPos + 1;
128
- return parseNode();
129
- }
130
- if (xml[pos] === '/') {
131
- return null;
132
- }
133
- let name = '';
134
- while (pos < xml.length && /[a-zA-Z0-9_:-]/.test(xml[pos])) {
135
- name += xml[pos++];
136
- }
137
- if (!name)
138
- throw new Error(`Expected element name at position ${pos}`);
139
- const attributes = parseAttributes();
140
- skipWhitespace();
141
- if (xml.slice(pos, pos + 2) === '/>') {
142
- pos += 2;
143
- return { type: 'element', name, attributes, children: [] };
144
- }
145
- if (xml[pos] !== '>') {
146
- throw new Error(`Expected > at position ${pos}`);
147
- }
148
- pos++;
149
- const children = [];
150
- while (pos < xml.length) {
151
- skipWhitespace();
152
- if (xml.slice(pos, pos + 2) === '</') {
153
- pos += 2;
154
- let closeName = '';
155
- while (pos < xml.length && /[a-zA-Z0-9_:-]/.test(xml[pos])) {
156
- closeName += xml[pos++];
157
- }
158
- skipWhitespace();
159
- if (xml[pos] !== '>')
160
- throw new Error(`Expected > at position ${pos}`);
161
- pos++;
162
- if (closeName !== name) {
163
- throw new Error(`Mismatched tags: ${name} vs ${closeName}`);
164
- }
165
- break;
166
- }
167
- const child = parseNode();
168
- if (child) {
169
- children.push(child);
170
- }
171
- else if (xml[pos] !== '<') {
172
- break;
173
- }
174
- }
175
- return { type: 'element', name, attributes, children };
176
- };
177
- const root = parseNode();
178
- if (!root)
179
- throw new Error('Empty document');
180
- return root;
181
- }
182
- function queryXml(node, query) {
183
- const parts = query.split('/').filter((p) => p);
184
- if (parts.length === 0)
185
- return node;
186
- let current = node;
187
- for (let i = 0; i < parts.length; i++) {
188
- const part = parts[i];
189
- if (part.startsWith('@')) {
190
- const attrName = part.slice(1);
191
- if (Array.isArray(current)) {
192
- const attrs = [];
193
- for (const n of current) {
194
- if (typeof n !== 'string' && n.type === 'element' && n.attributes?.[attrName]) {
195
- attrs.push(n.attributes[attrName]);
196
- }
197
- }
198
- return attrs.length > 0 ? attrs : null;
199
- }
200
- if (current.type === 'element' && current.attributes?.[attrName]) {
201
- return current.attributes[attrName];
202
- }
203
- return null;
204
- }
205
- const isRecursive = part === '';
206
- if (isRecursive) {
207
- i++;
208
- if (i >= parts.length)
209
- return null;
210
- const targetName = parts[i];
211
- const results = [];
212
- const findAll = (n) => {
213
- if (n.type === 'element') {
214
- if (n.name === targetName)
215
- results.push(n);
216
- if (n.children)
217
- n.children.forEach(findAll);
218
- }
219
- };
220
- if (Array.isArray(current)) {
221
- current.forEach(findAll);
222
- }
223
- else {
224
- findAll(current);
225
- }
226
- current = results;
227
- continue;
228
- }
229
- if (Array.isArray(current)) {
230
- const results = [];
231
- for (const n of current) {
232
- if (n.type === 'element' && n.children) {
233
- for (const child of n.children) {
234
- if (child.type === 'element' && child.name === part) {
235
- results.push(child);
236
- }
237
- }
238
- }
239
- }
240
- current = results;
241
- }
242
- else {
243
- if (current.type !== 'element' || !current.children)
244
- return null;
245
- const matches = current.children.filter((c) => c.type === 'element' && c.name === part);
246
- if (matches.length === 0)
247
- return null;
248
- if (matches.length === 1) {
249
- current = matches[0];
250
- }
251
- else {
252
- current = matches;
253
- }
254
- }
255
- }
256
- return current;
257
- }
258
- export function xml() {
259
- try {
260
- const inputStr = Host.inputString();
261
- const input = JSON.parse(inputStr);
262
- const parsed = parseXml(input.xml);
263
- let result = parsed;
264
- let type = 'document';
265
- if (input.query) {
266
- result = queryXml(parsed, input.query);
267
- if (result === null) {
268
- type = 'element';
269
- }
270
- else if (typeof result === 'string') {
271
- type = 'text';
272
- }
273
- else if (Array.isArray(result)) {
274
- type = 'array';
275
- }
276
- else {
277
- type = 'element';
278
- }
279
- }
280
- const output = {
281
- result,
282
- type,
283
- };
284
- Host.outputString(JSON.stringify(output));
285
- return 0;
286
- }
287
- catch (error) {
288
- const output = {
289
- result: null,
290
- type: 'document',
291
- error: error instanceof Error ? error.message : String(error),
292
- };
293
- Host.outputString(JSON.stringify(output));
294
- return 1;
295
- }
296
- }
297
- //# sourceMappingURL=xml.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xml.js","sourceRoot":"","sources":["../../src/plugins/xml.ts"],"names":[],"mappings":"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"}