@cogitator-ai/wasm-tools 0.4.1 → 0.5.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 (70) hide show
  1. package/README.md +141 -6
  2. package/dist/index.d.ts +227 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +194 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/plugins/compression.d.ts +2 -0
  7. package/dist/plugins/compression.d.ts.map +1 -0
  8. package/dist/plugins/compression.js +530 -0
  9. package/dist/plugins/compression.js.map +1 -0
  10. package/dist/plugins/csv.d.ts +2 -0
  11. package/dist/plugins/csv.d.ts.map +1 -0
  12. package/dist/plugins/csv.js +138 -0
  13. package/dist/plugins/csv.js.map +1 -0
  14. package/dist/plugins/datetime.d.ts +2 -0
  15. package/dist/plugins/datetime.d.ts.map +1 -0
  16. package/dist/plugins/datetime.js +184 -0
  17. package/dist/plugins/datetime.js.map +1 -0
  18. package/dist/plugins/diff.d.ts +2 -0
  19. package/dist/plugins/diff.d.ts.map +1 -0
  20. package/dist/plugins/diff.js +187 -0
  21. package/dist/plugins/diff.js.map +1 -0
  22. package/dist/plugins/markdown.d.ts +2 -0
  23. package/dist/plugins/markdown.d.ts.map +1 -0
  24. package/dist/plugins/markdown.js +203 -0
  25. package/dist/plugins/markdown.js.map +1 -0
  26. package/dist/plugins/regex.d.ts +2 -0
  27. package/dist/plugins/regex.d.ts.map +1 -0
  28. package/dist/plugins/regex.js +119 -0
  29. package/dist/plugins/regex.js.map +1 -0
  30. package/dist/plugins/signing.d.ts +2 -0
  31. package/dist/plugins/signing.d.ts.map +1 -0
  32. package/dist/plugins/signing.js +565 -0
  33. package/dist/plugins/signing.js.map +1 -0
  34. package/dist/plugins/slug.d.ts +2 -0
  35. package/dist/plugins/slug.d.ts.map +1 -0
  36. package/dist/plugins/slug.js +180 -0
  37. package/dist/plugins/slug.js.map +1 -0
  38. package/dist/plugins/validation.d.ts +2 -0
  39. package/dist/plugins/validation.d.ts.map +1 -0
  40. package/dist/plugins/validation.js +105 -0
  41. package/dist/plugins/validation.js.map +1 -0
  42. package/dist/plugins/xml.d.ts +2 -0
  43. package/dist/plugins/xml.d.ts.map +1 -0
  44. package/dist/plugins/xml.js +293 -0
  45. package/dist/plugins/xml.js.map +1 -0
  46. package/dist/temp/compression.js +614 -0
  47. package/dist/temp/csv.js +154 -0
  48. package/dist/temp/datetime.js +196 -0
  49. package/dist/temp/diff.js +198 -0
  50. package/dist/temp/markdown.js +220 -0
  51. package/dist/temp/regex.js +140 -0
  52. package/dist/temp/signing.js +569 -0
  53. package/dist/temp/slug.js +198 -0
  54. package/dist/temp/validation.js +125 -0
  55. package/dist/temp/xml.js +289 -0
  56. package/dist/wasm/base64.wasm +0 -0
  57. package/dist/wasm/calc.wasm +0 -0
  58. package/dist/wasm/compression.wasm +0 -0
  59. package/dist/wasm/csv.wasm +0 -0
  60. package/dist/wasm/datetime.wasm +0 -0
  61. package/dist/wasm/diff.wasm +0 -0
  62. package/dist/wasm/hash.wasm +0 -0
  63. package/dist/wasm/json.wasm +0 -0
  64. package/dist/wasm/markdown.wasm +0 -0
  65. package/dist/wasm/regex.wasm +0 -0
  66. package/dist/wasm/signing.wasm +0 -0
  67. package/dist/wasm/slug.wasm +0 -0
  68. package/dist/wasm/validation.wasm +0 -0
  69. package/dist/wasm/xml.wasm +0 -0
  70. package/package.json +2 -2
@@ -0,0 +1,138 @@
1
+ function parseCsv(data, delimiter, quote, hasHeaders) {
2
+ const rows = [];
3
+ let currentRow = [];
4
+ let currentField = '';
5
+ let inQuotes = false;
6
+ let i = 0;
7
+ while (i < data.length) {
8
+ const char = data[i];
9
+ const nextChar = data[i + 1];
10
+ if (inQuotes) {
11
+ if (char === quote) {
12
+ if (nextChar === quote) {
13
+ currentField += quote;
14
+ i += 2;
15
+ continue;
16
+ }
17
+ else {
18
+ inQuotes = false;
19
+ i++;
20
+ continue;
21
+ }
22
+ }
23
+ else {
24
+ currentField += char;
25
+ i++;
26
+ continue;
27
+ }
28
+ }
29
+ if (char === quote) {
30
+ inQuotes = true;
31
+ i++;
32
+ continue;
33
+ }
34
+ if (char === delimiter) {
35
+ currentRow.push(currentField);
36
+ currentField = '';
37
+ i++;
38
+ continue;
39
+ }
40
+ if (char === '\r' && nextChar === '\n') {
41
+ currentRow.push(currentField);
42
+ rows.push(currentRow);
43
+ currentRow = [];
44
+ currentField = '';
45
+ i += 2;
46
+ continue;
47
+ }
48
+ if (char === '\n' || char === '\r') {
49
+ currentRow.push(currentField);
50
+ rows.push(currentRow);
51
+ currentRow = [];
52
+ currentField = '';
53
+ i++;
54
+ continue;
55
+ }
56
+ currentField += char;
57
+ i++;
58
+ }
59
+ if (currentField || currentRow.length > 0) {
60
+ currentRow.push(currentField);
61
+ rows.push(currentRow);
62
+ }
63
+ const filteredRows = rows.filter(row => row.length > 0 && !(row.length === 1 && row[0] === ''));
64
+ if (hasHeaders && filteredRows.length > 0) {
65
+ const headers = filteredRows[0];
66
+ return { rows: filteredRows.slice(1), headers };
67
+ }
68
+ return { rows: filteredRows };
69
+ }
70
+ function stringifyCsv(data, delimiter, quote, headers) {
71
+ const rows = [];
72
+ const escapeField = (field) => {
73
+ if (field === null || field === undefined)
74
+ return '';
75
+ const str = String(field);
76
+ const needsQuotes = str.includes(delimiter) ||
77
+ str.includes(quote) ||
78
+ str.includes('\n') ||
79
+ str.includes('\r');
80
+ if (needsQuotes) {
81
+ const escaped = str.replace(new RegExp(quote, 'g'), quote + quote);
82
+ return quote + escaped + quote;
83
+ }
84
+ return str;
85
+ };
86
+ if (headers && headers.length > 0) {
87
+ rows.push(headers.map(escapeField).join(delimiter));
88
+ }
89
+ for (const row of data) {
90
+ rows.push(row.map(escapeField).join(delimiter));
91
+ }
92
+ return rows.join('\n');
93
+ }
94
+ export function csv() {
95
+ try {
96
+ const inputStr = Host.inputString();
97
+ const input = JSON.parse(inputStr);
98
+ const delimiter = input.delimiter ?? ',';
99
+ const quote = input.quote ?? '"';
100
+ let result;
101
+ let rowCount;
102
+ let columnCount;
103
+ let headers;
104
+ if (input.operation === 'parse') {
105
+ const hasHeaders = input.headers ?? false;
106
+ const parsed = parseCsv(input.data, delimiter, quote, hasHeaders);
107
+ result = parsed.rows;
108
+ headers = parsed.headers;
109
+ rowCount = parsed.rows.length;
110
+ columnCount = parsed.rows[0]?.length ?? 0;
111
+ }
112
+ else {
113
+ headers = input.headers;
114
+ result = stringifyCsv(input.data, delimiter, quote, headers);
115
+ rowCount = input.data.length;
116
+ columnCount = input.data[0]?.length ?? 0;
117
+ }
118
+ const output = {
119
+ result,
120
+ rowCount,
121
+ columnCount,
122
+ headers,
123
+ };
124
+ Host.outputString(JSON.stringify(output));
125
+ return 0;
126
+ }
127
+ catch (error) {
128
+ const output = {
129
+ result: [],
130
+ rowCount: 0,
131
+ columnCount: 0,
132
+ error: error instanceof Error ? error.message : String(error),
133
+ };
134
+ Host.outputString(JSON.stringify(output));
135
+ return 1;
136
+ }
137
+ }
138
+ //# sourceMappingURL=csv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv.js","sourceRoot":"","sources":["../../src/plugins/csv.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function datetime(): number;
2
+ //# sourceMappingURL=datetime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datetime.d.ts","sourceRoot":"","sources":["../../src/plugins/datetime.ts"],"names":[],"mappings":"AAyJA,wBAAgB,QAAQ,IAAI,MAAM,CA+EjC"}
@@ -0,0 +1,184 @@
1
+ function parseOffset(tz) {
2
+ if (!tz || tz === 'UTC' || tz === 'Z')
3
+ return 0;
4
+ const match = tz.match(/^([+-])(\d{2}):?(\d{2})$/);
5
+ if (!match)
6
+ return 0;
7
+ const sign = match[1] === '+' ? 1 : -1;
8
+ const hours = parseInt(match[2], 10);
9
+ const minutes = parseInt(match[3], 10);
10
+ return sign * (hours * 60 + minutes) * 60 * 1000;
11
+ }
12
+ function parseDate(dateStr) {
13
+ const isoMatch = dateStr.match(/^(\d{4})-(\d{2})-(\d{2})(?:T(\d{2}):(\d{2}):(\d{2})(?:\.(\d{3}))?(?:Z|([+-]\d{2}:?\d{2}))?)?$/);
14
+ if (isoMatch) {
15
+ const [, year, month, day, hour = '0', min = '0', sec = '0', ms = '0', tz] = isoMatch;
16
+ const date = new Date(Date.UTC(parseInt(year, 10), parseInt(month, 10) - 1, parseInt(day, 10), parseInt(hour, 10), parseInt(min, 10), parseInt(sec, 10), parseInt(ms, 10)));
17
+ if (tz) {
18
+ const offset = parseOffset(tz);
19
+ date.setTime(date.getTime() - offset);
20
+ }
21
+ return date;
22
+ }
23
+ const timestamp = Date.parse(dateStr);
24
+ if (!isNaN(timestamp)) {
25
+ return new Date(timestamp);
26
+ }
27
+ throw new Error(`Cannot parse date: ${dateStr}`);
28
+ }
29
+ function formatDate(date, formatStr, offsetMs = 0) {
30
+ const adjusted = new Date(date.getTime() + offsetMs);
31
+ const year = adjusted.getUTCFullYear();
32
+ const month = adjusted.getUTCMonth() + 1;
33
+ const day = adjusted.getUTCDate();
34
+ const hours = adjusted.getUTCHours();
35
+ const minutes = adjusted.getUTCMinutes();
36
+ const seconds = adjusted.getUTCSeconds();
37
+ const ms = adjusted.getUTCMilliseconds();
38
+ const pad = (n, len = 2) => String(n).padStart(len, '0');
39
+ const offsetHours = Math.floor(Math.abs(offsetMs) / 3600000);
40
+ const offsetMins = Math.floor((Math.abs(offsetMs) % 3600000) / 60000);
41
+ const offsetSign = offsetMs >= 0 ? '+' : '-';
42
+ const offsetStr = offsetMs === 0 ? 'Z' : `${offsetSign}${pad(offsetHours)}:${pad(offsetMins)}`;
43
+ return formatStr
44
+ .replace('YYYY', String(year))
45
+ .replace('MM', pad(month))
46
+ .replace('DD', pad(day))
47
+ .replace('HH', pad(hours))
48
+ .replace('mm', pad(minutes))
49
+ .replace('ss', pad(seconds))
50
+ .replace('SSS', pad(ms, 3))
51
+ .replace('Z', offsetStr);
52
+ }
53
+ function addToDate(date, amount, unit) {
54
+ const result = new Date(date.getTime());
55
+ switch (unit) {
56
+ case 'years':
57
+ result.setUTCFullYear(result.getUTCFullYear() + amount);
58
+ break;
59
+ case 'months':
60
+ result.setUTCMonth(result.getUTCMonth() + amount);
61
+ break;
62
+ case 'days':
63
+ result.setUTCDate(result.getUTCDate() + amount);
64
+ break;
65
+ case 'hours':
66
+ result.setUTCHours(result.getUTCHours() + amount);
67
+ break;
68
+ case 'minutes':
69
+ result.setUTCMinutes(result.getUTCMinutes() + amount);
70
+ break;
71
+ case 'seconds':
72
+ result.setUTCSeconds(result.getUTCSeconds() + amount);
73
+ break;
74
+ case 'milliseconds':
75
+ result.setTime(result.getTime() + amount);
76
+ break;
77
+ default:
78
+ throw new Error(`Unknown unit: ${unit}`);
79
+ }
80
+ return result;
81
+ }
82
+ function dateDiff(date1, date2, unit) {
83
+ const diffMs = date2.getTime() - date1.getTime();
84
+ switch (unit) {
85
+ case 'years':
86
+ return date2.getUTCFullYear() - date1.getUTCFullYear();
87
+ case 'months':
88
+ return (date2.getUTCFullYear() - date1.getUTCFullYear()) * 12 +
89
+ (date2.getUTCMonth() - date1.getUTCMonth());
90
+ case 'days':
91
+ return Math.floor(diffMs / (24 * 60 * 60 * 1000));
92
+ case 'hours':
93
+ return Math.floor(diffMs / (60 * 60 * 1000));
94
+ case 'minutes':
95
+ return Math.floor(diffMs / (60 * 1000));
96
+ case 'seconds':
97
+ return Math.floor(diffMs / 1000);
98
+ case 'milliseconds':
99
+ return diffMs;
100
+ default:
101
+ return diffMs;
102
+ }
103
+ }
104
+ export function datetime() {
105
+ try {
106
+ const inputStr = Host.inputString();
107
+ const input = JSON.parse(inputStr);
108
+ const offsetMs = parseOffset(input.timezone);
109
+ let date;
110
+ let result;
111
+ switch (input.operation) {
112
+ case 'now':
113
+ date = new Date();
114
+ result = date.toISOString();
115
+ break;
116
+ case 'parse':
117
+ if (!input.date)
118
+ throw new Error('date is required for parse operation');
119
+ date = parseDate(input.date);
120
+ result = date.toISOString();
121
+ break;
122
+ case 'format':
123
+ if (!input.date)
124
+ throw new Error('date is required for format operation');
125
+ date = parseDate(input.date);
126
+ const format = input.format ?? 'YYYY-MM-DDTHH:mm:ssZ';
127
+ result = formatDate(date, format, offsetMs);
128
+ break;
129
+ case 'add':
130
+ if (!input.date)
131
+ throw new Error('date is required for add operation');
132
+ if (input.amount === undefined)
133
+ throw new Error('amount is required for add operation');
134
+ if (!input.unit)
135
+ throw new Error('unit is required for add operation');
136
+ date = parseDate(input.date);
137
+ date = addToDate(date, input.amount, input.unit);
138
+ result = date.toISOString();
139
+ break;
140
+ case 'subtract':
141
+ if (!input.date)
142
+ throw new Error('date is required for subtract operation');
143
+ if (input.amount === undefined)
144
+ throw new Error('amount is required for subtract operation');
145
+ if (!input.unit)
146
+ throw new Error('unit is required for subtract operation');
147
+ date = parseDate(input.date);
148
+ date = addToDate(date, -input.amount, input.unit);
149
+ result = date.toISOString();
150
+ break;
151
+ case 'diff':
152
+ if (!input.date)
153
+ throw new Error('date is required for diff operation');
154
+ if (!input.endDate)
155
+ throw new Error('endDate is required for diff operation');
156
+ date = parseDate(input.date);
157
+ const endDate = parseDate(input.endDate);
158
+ result = dateDiff(date, endDate, input.unit ?? 'milliseconds');
159
+ break;
160
+ default:
161
+ throw new Error(`Unknown operation: ${input.operation}`);
162
+ }
163
+ const outputDate = input.operation === 'diff' ? parseDate(input.date) : date;
164
+ const output = {
165
+ result,
166
+ iso: outputDate.toISOString(),
167
+ unix: Math.floor(outputDate.getTime() / 1000),
168
+ formatted: input.format ? formatDate(outputDate, input.format, offsetMs) : undefined,
169
+ };
170
+ Host.outputString(JSON.stringify(output));
171
+ return 0;
172
+ }
173
+ catch (error) {
174
+ const output = {
175
+ result: '',
176
+ iso: '',
177
+ unix: 0,
178
+ error: error instanceof Error ? error.message : String(error),
179
+ };
180
+ Host.outputString(JSON.stringify(output));
181
+ return 1;
182
+ }
183
+ }
184
+ //# sourceMappingURL=datetime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datetime.js","sourceRoot":"","sources":["../../src/plugins/datetime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function diff(): number;
2
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/plugins/diff.ts"],"names":[],"mappings":"AAuLA,wBAAgB,IAAI,IAAI,MAAM,CA6C7B"}
@@ -0,0 +1,187 @@
1
+ function myersDiff(oldArr, newArr) {
2
+ const n = oldArr.length;
3
+ const m = newArr.length;
4
+ const max = n + m;
5
+ if (max === 0)
6
+ return [];
7
+ const v = { 1: 0 };
8
+ const trace = [];
9
+ outer: for (let d = 0; d <= max; d++) {
10
+ trace.push({ ...v });
11
+ for (let k = -d; k <= d; k += 2) {
12
+ let x;
13
+ if (k === -d || (k !== d && v[k - 1] < v[k + 1])) {
14
+ x = v[k + 1];
15
+ }
16
+ else {
17
+ x = v[k - 1] + 1;
18
+ }
19
+ let y = x - k;
20
+ while (x < n && y < m && oldArr[x] === newArr[y]) {
21
+ x++;
22
+ y++;
23
+ }
24
+ v[k] = x;
25
+ if (x >= n && y >= m) {
26
+ break outer;
27
+ }
28
+ }
29
+ }
30
+ const changes = [];
31
+ let x = n;
32
+ let y = m;
33
+ for (let d = trace.length - 1; d >= 0; d--) {
34
+ const vPrev = trace[d];
35
+ const k = x - y;
36
+ let prevK;
37
+ if (k === -d || (k !== d && vPrev[k - 1] < vPrev[k + 1])) {
38
+ prevK = k + 1;
39
+ }
40
+ else {
41
+ prevK = k - 1;
42
+ }
43
+ const prevX = vPrev[prevK];
44
+ const prevY = prevX - prevK;
45
+ while (x > prevX && y > prevY) {
46
+ changes.unshift({
47
+ type: 'equal',
48
+ value: oldArr[x - 1],
49
+ lineNumber: { original: x, modified: y },
50
+ });
51
+ x--;
52
+ y--;
53
+ }
54
+ if (d > 0) {
55
+ if (x === prevX) {
56
+ changes.unshift({
57
+ type: 'add',
58
+ value: newArr[y - 1],
59
+ lineNumber: { modified: y },
60
+ });
61
+ y--;
62
+ }
63
+ else {
64
+ changes.unshift({
65
+ type: 'remove',
66
+ value: oldArr[x - 1],
67
+ lineNumber: { original: x },
68
+ });
69
+ x--;
70
+ }
71
+ }
72
+ }
73
+ return changes;
74
+ }
75
+ function formatUnified(changes, context) {
76
+ const lines = [];
77
+ let i = 0;
78
+ while (i < changes.length) {
79
+ let start = i;
80
+ while (start > 0 && i - start < context && changes[start - 1].type === 'equal') {
81
+ start--;
82
+ }
83
+ let end = i;
84
+ while (end < changes.length) {
85
+ if (changes[end].type !== 'equal') {
86
+ let nextChange = end + 1;
87
+ while (nextChange < changes.length && changes[nextChange].type === 'equal') {
88
+ nextChange++;
89
+ }
90
+ if (nextChange - end <= context * 2 && nextChange < changes.length) {
91
+ end = nextChange;
92
+ }
93
+ else {
94
+ end = Math.min(end + context, changes.length - 1);
95
+ break;
96
+ }
97
+ }
98
+ end++;
99
+ }
100
+ if (end >= changes.length)
101
+ end = changes.length - 1;
102
+ let hasChanges = false;
103
+ for (let j = start; j <= end; j++) {
104
+ if (changes[j].type !== 'equal') {
105
+ hasChanges = true;
106
+ break;
107
+ }
108
+ }
109
+ if (hasChanges) {
110
+ for (let j = start; j <= end; j++) {
111
+ const change = changes[j];
112
+ if (change.type === 'add') {
113
+ lines.push(`+ ${change.value}`);
114
+ }
115
+ else if (change.type === 'remove') {
116
+ lines.push(`- ${change.value}`);
117
+ }
118
+ else {
119
+ lines.push(` ${change.value}`);
120
+ }
121
+ }
122
+ }
123
+ i = end + 1;
124
+ while (i < changes.length && changes[i].type === 'equal') {
125
+ i++;
126
+ }
127
+ }
128
+ return lines.join('\n');
129
+ }
130
+ function formatInline(changes) {
131
+ const lines = [];
132
+ for (const change of changes) {
133
+ if (change.type === 'add') {
134
+ lines.push(`[+] ${change.value}`);
135
+ }
136
+ else if (change.type === 'remove') {
137
+ lines.push(`[-] ${change.value}`);
138
+ }
139
+ else {
140
+ lines.push(` ${change.value}`);
141
+ }
142
+ }
143
+ return lines.join('\n');
144
+ }
145
+ export function diff() {
146
+ try {
147
+ const inputStr = Host.inputString();
148
+ const input = JSON.parse(inputStr);
149
+ const format = input.format ?? 'unified';
150
+ const context = input.context ?? 3;
151
+ const oldLines = input.original.split('\n');
152
+ const newLines = input.modified.split('\n');
153
+ const changes = myersDiff(oldLines, newLines);
154
+ const additions = changes.filter(c => c.type === 'add').length;
155
+ const deletions = changes.filter(c => c.type === 'remove').length;
156
+ let diffStr;
157
+ if (format === 'json') {
158
+ diffStr = JSON.stringify(changes);
159
+ }
160
+ else if (format === 'inline') {
161
+ diffStr = formatInline(changes);
162
+ }
163
+ else {
164
+ diffStr = formatUnified(changes, context);
165
+ }
166
+ const output = {
167
+ diff: diffStr,
168
+ additions,
169
+ deletions,
170
+ changes,
171
+ };
172
+ Host.outputString(JSON.stringify(output));
173
+ return 0;
174
+ }
175
+ catch (error) {
176
+ const output = {
177
+ diff: '',
178
+ additions: 0,
179
+ deletions: 0,
180
+ changes: [],
181
+ error: error instanceof Error ? error.message : String(error),
182
+ };
183
+ Host.outputString(JSON.stringify(output));
184
+ return 1;
185
+ }
186
+ }
187
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/plugins/diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function markdown(): number;
2
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/plugins/markdown.ts"],"names":[],"mappings":"AA+NA,wBAAgB,QAAQ,IAAI,MAAM,CAwBjC"}