marcattacks 2.5.0 → 2.7.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/README.md +82 -2
- package/dist/attacker.d.ts.map +1 -1
- package/dist/attacker.js +10 -0
- package/dist/attacker.js.map +1 -1
- package/dist/command.js +1 -0
- package/dist/command.js.map +1 -1
- package/dist/fix/binds.d.ts +5 -0
- package/dist/fix/binds.d.ts.map +1 -0
- package/dist/fix/binds.js +82 -0
- package/dist/fix/binds.js.map +1 -0
- package/dist/fix/conditions.d.ts +5 -0
- package/dist/fix/conditions.d.ts.map +1 -0
- package/dist/fix/conditions.js +111 -0
- package/dist/fix/conditions.js.map +1 -0
- package/dist/fix/fixes.d.ts +7 -0
- package/dist/fix/fixes.d.ts.map +1 -0
- package/dist/fix/fixes.js +478 -0
- package/dist/fix/fixes.js.map +1 -0
- package/dist/fix/index.d.ts +12 -0
- package/dist/fix/index.d.ts.map +1 -0
- package/dist/fix/index.js +40 -0
- package/dist/fix/index.js.map +1 -0
- package/dist/fix/parser.d.ts +25 -0
- package/dist/fix/parser.d.ts.map +1 -0
- package/dist/fix/parser.js +156 -0
- package/dist/fix/parser.js.map +1 -0
- package/dist/fix/path.d.ts +23 -0
- package/dist/fix/path.d.ts.map +1 -0
- package/dist/fix/path.js +351 -0
- package/dist/fix/path.js.map +1 -0
- package/dist/fix/signal.d.ts +2 -0
- package/dist/fix/signal.d.ts.map +1 -0
- package/dist/fix/signal.js +5 -0
- package/dist/fix/signal.js.map +1 -0
- package/dist/fix/util.d.ts +6 -0
- package/dist/fix/util.d.ts.map +1 -0
- package/dist/fix/util.js +133 -0
- package/dist/fix/util.js.map +1 -0
- package/dist/input/alephseq.d.ts.map +1 -1
- package/dist/input/alephseq.js +18 -5
- package/dist/input/alephseq.js.map +1 -1
- package/dist/input/fastxml.d.ts +3 -0
- package/dist/input/fastxml.d.ts.map +1 -0
- package/dist/input/fastxml.js +134 -0
- package/dist/input/fastxml.js.map +1 -0
- package/dist/input/xml.d.ts.map +1 -1
- package/dist/input/xml.js +4 -2
- package/dist/input/xml.js.map +1 -1
- package/dist/marcmap.d.ts.map +1 -1
- package/dist/marcmap.js +15 -3
- package/dist/marcmap.js.map +1 -1
- package/dist/output/alephseq.d.ts.map +1 -1
- package/dist/output/alephseq.js +29 -5
- package/dist/output/alephseq.js.map +1 -1
- package/dist/output/null.d.ts +3 -0
- package/dist/output/null.d.ts.map +1 -0
- package/dist/output/null.js +13 -0
- package/dist/output/null.js.map +1 -0
- package/dist/output/xml.d.ts.map +1 -1
- package/dist/output/xml.js +27 -0
- package/dist/output/xml.js.map +1 -1
- package/dist/stream/framer.d.ts.map +1 -0
- package/dist/stream/framer.js.map +1 -0
- package/dist/stream/worker-pool-str.d.ts.map +1 -0
- package/dist/stream/worker-pool-str.js.map +1 -0
- package/dist/stream/worker-pool.d.ts +10 -0
- package/dist/stream/worker-pool.d.ts.map +1 -0
- package/dist/stream/worker-pool.js +206 -0
- package/dist/stream/worker-pool.js.map +1 -0
- package/dist/transform/fix.d.ts +16 -0
- package/dist/transform/fix.d.ts.map +1 -0
- package/dist/transform/fix.js +46 -0
- package/dist/transform/fix.js.map +1 -0
- package/dist/transform/jsonata.d.ts +4 -0
- package/dist/transform/jsonata.d.ts.map +1 -1
- package/dist/transform/jsonata.js +40 -44
- package/dist/transform/jsonata.js.map +1 -1
- package/dist/transform/marcinrdf.d.ts +1 -1
- package/dist/transform/marcinrdf.d.ts.map +1 -1
- package/dist/transform/marcinrdf.js +16 -3
- package/dist/transform/marcinrdf.js.map +1 -1
- package/dist/util/marc_record.d.ts +19 -0
- package/dist/util/marc_record.d.ts.map +1 -0
- package/dist/util/marc_record.js +16 -0
- package/dist/util/marc_record.js.map +1 -0
- package/dist/worker-str.d.ts.map +1 -0
- package/dist/worker-str.js.map +1 -0
- package/dist/worker.d.ts +2 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +33 -0
- package/dist/worker.js.map +1 -0
- package/package.json +4 -1
- package/dist/output/mulitipart.d.ts +0 -7
- package/dist/output/mulitipart.d.ts.map +0 -1
- package/dist/output/mulitipart.js +0 -53
- package/dist/output/mulitipart.js.map +0 -1
- package/dist/output/text.d.ts +0 -6
- package/dist/output/text.d.ts.map +0 -1
- package/dist/output/text.js +0 -34
- package/dist/output/text.js.map +0 -1
|
@@ -0,0 +1,478 @@
|
|
|
1
|
+
// A subset of Catmandu Fix functions, ported to JS on top of the Path engine.
|
|
2
|
+
// Each fix is `(args) => (data) => data`, mirroring how Catmandu builds a
|
|
3
|
+
// fixer from a path plus arguments. Semantics follow Catmandu::Fix::* exactly
|
|
4
|
+
// (see the conformance tests, which are ported from Catmandu's own t/).
|
|
5
|
+
import { Path, isArray, isHash, KEEP, DROP } from './path.js';
|
|
6
|
+
import { marcmap } from '../marcmap.js';
|
|
7
|
+
import { randomUUID } from 'node:crypto';
|
|
8
|
+
import { REJECT } from './signal.js';
|
|
9
|
+
import { sprintf, collapseHash, expandHash } from './util.js';
|
|
10
|
+
import fs from 'node:fs';
|
|
11
|
+
function clone(v) {
|
|
12
|
+
return v === undefined ? v : structuredClone(v);
|
|
13
|
+
}
|
|
14
|
+
// Catmandu is_value: a defined scalar (string or number), not a ref.
|
|
15
|
+
function isValue(v) {
|
|
16
|
+
return typeof v === 'string' || typeof v === 'number';
|
|
17
|
+
}
|
|
18
|
+
// Perl s/search/replace/g with $1 / ${1} interpolation -> JS replace.
|
|
19
|
+
function substituter(search, replace) {
|
|
20
|
+
const re = new RegExp(search, 'g');
|
|
21
|
+
const js = replace.replace(/\$\{(\d+)\}/g, '$$$1'); // ${1} -> $1
|
|
22
|
+
return (v) => String(v).replace(re, js);
|
|
23
|
+
}
|
|
24
|
+
export const FIXES = {
|
|
25
|
+
// --- field creation / movement ---
|
|
26
|
+
add_field: ([path, value]) => new Path(path).creator(value ?? null),
|
|
27
|
+
set_field: ([path, value]) => new Path(path).setter(value ?? null),
|
|
28
|
+
remove_field: ([path]) => new Path(path).deleter(),
|
|
29
|
+
copy_field: ([oldPath, newPath]) => {
|
|
30
|
+
const getter = new Path(oldPath).getter();
|
|
31
|
+
const creator = new Path(newPath).creator(undefined);
|
|
32
|
+
return (data) => {
|
|
33
|
+
for (const v of getter(data).map(clone))
|
|
34
|
+
data = creator(data, v);
|
|
35
|
+
return data;
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
move_field: ([oldPath, newPath]) => {
|
|
39
|
+
const getter = new Path(oldPath).getter();
|
|
40
|
+
const creator = new Path(newPath).creator(undefined);
|
|
41
|
+
const deleter = new Path(oldPath).deleter();
|
|
42
|
+
return (data) => {
|
|
43
|
+
for (const v of getter(data).map(clone))
|
|
44
|
+
data = creator(data, v);
|
|
45
|
+
return deleter(data);
|
|
46
|
+
};
|
|
47
|
+
},
|
|
48
|
+
// --- string transforms (only act on existing string values) ---
|
|
49
|
+
upcase: ([path]) => new Path(path).updater((v) => v.toUpperCase(), 'string'),
|
|
50
|
+
downcase: ([path]) => new Path(path).updater((v) => v.toLowerCase(), 'string'),
|
|
51
|
+
capitalize: ([path]) => new Path(path).updater((v) => {
|
|
52
|
+
const s = v.toLowerCase();
|
|
53
|
+
return s.charAt(0).toUpperCase() + s.slice(1);
|
|
54
|
+
}, 'string'),
|
|
55
|
+
trim: ([path, mode = 'whitespace']) => {
|
|
56
|
+
const cb = mode === 'nonword'
|
|
57
|
+
? (v) => v.replace(/^\W+/u, '').replace(/\W+$/u, '')
|
|
58
|
+
: mode === 'diacritics'
|
|
59
|
+
? (v) => v.normalize('NFKD').replace(/\p{Mn}/gu, '')
|
|
60
|
+
: (v) => v.replace(/^\s+/u, '').replace(/\s+$/u, '');
|
|
61
|
+
return new Path(path).updater(cb, 'string');
|
|
62
|
+
},
|
|
63
|
+
prepend: ([path, str = '']) => new Path(path).updater((v) => str + v, 'string'),
|
|
64
|
+
append: ([path, str = '']) => new Path(path).updater((v) => v + str, 'string'),
|
|
65
|
+
replace_all: ([path, search, replace = '']) => new Path(path).updater(substituter(search, replace), 'value'),
|
|
66
|
+
// --- array <-> string ---
|
|
67
|
+
join_field: ([path, sep = ' ']) => new Path(path).updater((v) => v.filter(isValue).join(sep), 'array'),
|
|
68
|
+
split_field: ([path, sep = ' ']) => {
|
|
69
|
+
const re = new RegExp(sep);
|
|
70
|
+
return new Path(path).updater((v) => String(v).split(re), 'value');
|
|
71
|
+
},
|
|
72
|
+
// --- paste: concatenate several fields/literals into one ---
|
|
73
|
+
paste: (args) => {
|
|
74
|
+
const target = args[0];
|
|
75
|
+
let joinChar = ' ';
|
|
76
|
+
const parts = [];
|
|
77
|
+
for (let i = 1; i < args.length; i++) {
|
|
78
|
+
const a = args[i];
|
|
79
|
+
if (a === 'join_char') {
|
|
80
|
+
joinChar = args[i + 1] ?? ' ';
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
if (a.startsWith('~'))
|
|
84
|
+
parts.push({ literal: a.slice(1) });
|
|
85
|
+
else
|
|
86
|
+
parts.push({ getter: new Path(a).getter() });
|
|
87
|
+
}
|
|
88
|
+
const creator = new Path(target).creator(undefined);
|
|
89
|
+
return (data) => {
|
|
90
|
+
const vals = [];
|
|
91
|
+
for (const p of parts) {
|
|
92
|
+
if ('literal' in p)
|
|
93
|
+
vals.push(p.literal);
|
|
94
|
+
else
|
|
95
|
+
for (const v of p.getter(data))
|
|
96
|
+
if (isValue(v))
|
|
97
|
+
vals.push(v);
|
|
98
|
+
}
|
|
99
|
+
return creator(data, vals.join(joinChar));
|
|
100
|
+
};
|
|
101
|
+
},
|
|
102
|
+
// --- MARC: reuse marcattacks' existing marcmap() for field extraction ---
|
|
103
|
+
// marc_map(MARC_PATH, JSON_PATH, split:0|1, join:Str, value:Str)
|
|
104
|
+
// Mirrors Catmandu::Fix::marc_map's emit loop: the result is a list of
|
|
105
|
+
// values and each value is created at JSON_PATH (so a $append/numeric
|
|
106
|
+
// target appends one element per value). Supports a /from-to substring.
|
|
107
|
+
marc_map: (args) => {
|
|
108
|
+
const marcPath0 = args[0];
|
|
109
|
+
const jsonPath = args[1];
|
|
110
|
+
const opts = {};
|
|
111
|
+
for (let i = 2; i < args.length; i += 2)
|
|
112
|
+
opts[args[i]] = args[i + 1];
|
|
113
|
+
const split = opts.split === '1' || opts.split === 'true';
|
|
114
|
+
const joinChar = opts.join ?? ''; // Catmandu marc_map default join is empty
|
|
115
|
+
const value = opts.value;
|
|
116
|
+
// substring suffix, e.g. 008/35-37
|
|
117
|
+
let marcPath = marcPath0;
|
|
118
|
+
let from;
|
|
119
|
+
let len = 1;
|
|
120
|
+
const sub = /^(.*)\/(\d+)(?:-(\d+))?$/.exec(marcPath0);
|
|
121
|
+
if (sub) {
|
|
122
|
+
marcPath = sub[1];
|
|
123
|
+
from = Number(sub[2]);
|
|
124
|
+
if (sub[3] !== undefined)
|
|
125
|
+
len = Number(sub[3]) - from + 1;
|
|
126
|
+
}
|
|
127
|
+
const p = new Path(jsonPath);
|
|
128
|
+
const lastKey = p.keys.length ? p.keys[p.keys.length - 1] : '';
|
|
129
|
+
const forceArray = /^(\$.*|[0-9]+)$/.test(lastKey);
|
|
130
|
+
const creator = p.creator(undefined);
|
|
131
|
+
return (data) => {
|
|
132
|
+
const rec = data?.record;
|
|
133
|
+
if (!isArray(rec))
|
|
134
|
+
return data;
|
|
135
|
+
// marcmap() yields one entry per tag-matched field; an empty string
|
|
136
|
+
// means the field matched the tag but had no matching subfield.
|
|
137
|
+
// Catmandu drops those, so filter them out.
|
|
138
|
+
let vals = marcmap(rec, marcPath, { join_char: joinChar }).filter((v) => v !== '');
|
|
139
|
+
if (from !== undefined) {
|
|
140
|
+
vals = vals.map((v) => (v.length > from ? v.substr(from, len) : undefined))
|
|
141
|
+
.filter((v) => v !== undefined);
|
|
142
|
+
}
|
|
143
|
+
if (!vals.length)
|
|
144
|
+
return data;
|
|
145
|
+
let result;
|
|
146
|
+
if (value !== undefined)
|
|
147
|
+
result = [value]; // value:Str -> constant when field exists
|
|
148
|
+
else if (forceArray)
|
|
149
|
+
result = vals; // append/numeric target: one element per value
|
|
150
|
+
else if (split)
|
|
151
|
+
result = [vals]; // split: a single array value
|
|
152
|
+
else
|
|
153
|
+
result = [vals.join(joinChar)]; // default: one joined string
|
|
154
|
+
for (const v of result)
|
|
155
|
+
data = creator(data, v);
|
|
156
|
+
return data;
|
|
157
|
+
};
|
|
158
|
+
},
|
|
159
|
+
// genid(PATH): create / overwrite each terminal slot with a fresh id.
|
|
160
|
+
// A fresh id is generated per slot (so PATH.* yields a distinct id each).
|
|
161
|
+
genid: ([path]) => new Path(path).creator(() => `genid:${randomUUID()}`),
|
|
162
|
+
// marc_remove(TAG): drop all MARC fields with the given tag.
|
|
163
|
+
marc_remove: ([tag]) => (data) => {
|
|
164
|
+
if (data && isArray(data.record))
|
|
165
|
+
data.record = data.record.filter((r) => r[0] !== tag);
|
|
166
|
+
return data;
|
|
167
|
+
},
|
|
168
|
+
// reject(): drop the current record / field (used inside marc_each etc.)
|
|
169
|
+
reject: () => () => REJECT,
|
|
170
|
+
// lookup(PATH, FILE, default:X, delete:1, sep_char:C): map values through a
|
|
171
|
+
// 2-column CSV (key,val; no header). No match -> default / delete / keep.
|
|
172
|
+
lookup: (args) => {
|
|
173
|
+
const path = args[0];
|
|
174
|
+
const file = args[1];
|
|
175
|
+
const opts = {};
|
|
176
|
+
for (let i = 2; i < args.length; i += 2)
|
|
177
|
+
opts[args[i]] = args[i + 1];
|
|
178
|
+
const sep = opts.sep_char ?? ',';
|
|
179
|
+
const dict = new Map();
|
|
180
|
+
for (const line of fs.readFileSync(file, 'utf8').split(/\r?\n/)) {
|
|
181
|
+
if (!line)
|
|
182
|
+
continue;
|
|
183
|
+
const idx = line.indexOf(sep);
|
|
184
|
+
if (idx < 0)
|
|
185
|
+
continue;
|
|
186
|
+
dict.set(line.slice(0, idx), line.slice(idx + sep.length));
|
|
187
|
+
}
|
|
188
|
+
const del = opts.delete === '1' || opts.delete === 'true';
|
|
189
|
+
const hasDefault = 'default' in opts;
|
|
190
|
+
return new Path(path).rewrite((v) => {
|
|
191
|
+
if ((typeof v === 'string' || typeof v === 'number') && dict.has(String(v)))
|
|
192
|
+
return dict.get(String(v));
|
|
193
|
+
if (del)
|
|
194
|
+
return DROP;
|
|
195
|
+
if (hasDefault)
|
|
196
|
+
return opts.default;
|
|
197
|
+
return KEEP;
|
|
198
|
+
});
|
|
199
|
+
},
|
|
200
|
+
// retain(PATH, ...): keep only the listed paths, drop everything else.
|
|
201
|
+
retain: (paths) => {
|
|
202
|
+
const getters = paths.map((p) => new Path(p).getter());
|
|
203
|
+
const creators = paths.map((p) => new Path(p).creator(undefined));
|
|
204
|
+
return (data) => {
|
|
205
|
+
const temp = {};
|
|
206
|
+
for (let i = 0; i < paths.length; i++) {
|
|
207
|
+
for (const v of getters[i](data))
|
|
208
|
+
creators[i](temp, v);
|
|
209
|
+
}
|
|
210
|
+
if (isHash(data)) {
|
|
211
|
+
for (const k of Object.keys(data))
|
|
212
|
+
delete data[k];
|
|
213
|
+
Object.assign(data, temp);
|
|
214
|
+
}
|
|
215
|
+
return data;
|
|
216
|
+
};
|
|
217
|
+
},
|
|
218
|
+
// retain_field(PATH): delete every sibling of the final key under its parent.
|
|
219
|
+
retain_field: ([path]) => {
|
|
220
|
+
const p = new Path(path);
|
|
221
|
+
const key = p.keys.length ? p.keys[p.keys.length - 1] : '';
|
|
222
|
+
const keep = key.replace(/^['"]|['"]$/g, '');
|
|
223
|
+
const parentGet = new Path(p.keys.slice(0, -1).join('.')).getter();
|
|
224
|
+
return (data) => {
|
|
225
|
+
const parents = p.keys.length <= 1 ? [data] : parentGet(data);
|
|
226
|
+
for (const c of parents)
|
|
227
|
+
if (isHash(c))
|
|
228
|
+
for (const k of Object.keys(c))
|
|
229
|
+
if (k !== keep)
|
|
230
|
+
delete c[k];
|
|
231
|
+
return data;
|
|
232
|
+
};
|
|
233
|
+
},
|
|
234
|
+
// substring(PATH, offset, [length], [replacement])
|
|
235
|
+
substring: (args) => {
|
|
236
|
+
const path = args[0];
|
|
237
|
+
const off = Number(args[1]);
|
|
238
|
+
const a2 = args[2];
|
|
239
|
+
const a3 = args[3];
|
|
240
|
+
return new Path(path).updater((v) => {
|
|
241
|
+
const s = String(v);
|
|
242
|
+
if (a3 !== undefined) { // replacement form
|
|
243
|
+
const len = Number(a2);
|
|
244
|
+
return s.slice(0, off) + a3 + s.slice(off + len);
|
|
245
|
+
}
|
|
246
|
+
if (a2 !== undefined)
|
|
247
|
+
return s.substr(off, Number(a2));
|
|
248
|
+
return s.substr(off);
|
|
249
|
+
}, 'value');
|
|
250
|
+
},
|
|
251
|
+
// sort_field(PATH, uniq:1, reverse:1, numeric:1)
|
|
252
|
+
sort_field: (args) => {
|
|
253
|
+
const path = args[0];
|
|
254
|
+
const opts = {};
|
|
255
|
+
for (let i = 1; i < args.length; i += 2)
|
|
256
|
+
opts[args[i]] = args[i + 1];
|
|
257
|
+
const doUniq = opts.uniq === '1';
|
|
258
|
+
const rev = opts.reverse === '1';
|
|
259
|
+
const num = opts.numeric === '1';
|
|
260
|
+
return new Path(path).updater((arr) => {
|
|
261
|
+
let defined = arr.filter((x) => x !== undefined && x !== null);
|
|
262
|
+
const hadUndef = defined.length !== arr.length;
|
|
263
|
+
if (doUniq) {
|
|
264
|
+
const seen = new Set();
|
|
265
|
+
defined = defined.filter((x) => { const k = String(x); if (seen.has(k))
|
|
266
|
+
return false; seen.add(k); return true; });
|
|
267
|
+
}
|
|
268
|
+
defined.sort(num ? (a, b) => Number(a) - Number(b) : (a, b) => String(a) < String(b) ? -1 : String(a) > String(b) ? 1 : 0);
|
|
269
|
+
if (rev)
|
|
270
|
+
defined.reverse();
|
|
271
|
+
if (hadUndef)
|
|
272
|
+
defined.push(null); // undefs collapse to one at the end (undef_position default last)
|
|
273
|
+
return defined;
|
|
274
|
+
}, 'array');
|
|
275
|
+
},
|
|
276
|
+
// uniq(PATH): strip duplicate values from an array (keep first occurrence).
|
|
277
|
+
uniq: ([path]) => new Path(path).updater((arr) => {
|
|
278
|
+
const seen = new Set();
|
|
279
|
+
return arr.filter((x) => { const k = String(x); if (seen.has(k))
|
|
280
|
+
return false; seen.add(k); return true; });
|
|
281
|
+
}, 'array'),
|
|
282
|
+
// vacuum(): recursively delete empty fields (null, blank string, [], {}).
|
|
283
|
+
vacuum: () => (data) => { vacuum(data); return data; },
|
|
284
|
+
// format(PATH, SPEC): sprintf the value (string / array / hash) with SPEC.
|
|
285
|
+
format: ([path, spec]) => new Path(path).updater((v) => {
|
|
286
|
+
if (isArray(v))
|
|
287
|
+
return sprintf(spec, v);
|
|
288
|
+
if (isHash(v))
|
|
289
|
+
return sprintf(spec, Object.entries(v).flat());
|
|
290
|
+
return sprintf(spec, [v]);
|
|
291
|
+
}),
|
|
292
|
+
// count(PATH): replace an array/hash value with its size.
|
|
293
|
+
count: ([path]) => new Path(path).updater((v) => isArray(v) ? v.length : isHash(v) ? Object.keys(v).length : v),
|
|
294
|
+
// set_array(PATH, v...) / set_hash(PATH, k, v, ...): set to a fresh array/hash.
|
|
295
|
+
set_array: (args) => new Path(args[0]).setter(() => [...args.slice(1)]),
|
|
296
|
+
set_hash: (args) => new Path(args[0]).setter(() => {
|
|
297
|
+
const o = {};
|
|
298
|
+
const vs = args.slice(1);
|
|
299
|
+
for (let i = 0; i < vs.length; i += 2)
|
|
300
|
+
o[vs[i]] = vs[i + 1];
|
|
301
|
+
return o;
|
|
302
|
+
}),
|
|
303
|
+
// from_json(PATH) / to_json(PATH)
|
|
304
|
+
from_json: ([path]) => new Path(path).updater((v) => JSON.parse(v), 'string'),
|
|
305
|
+
to_json: ([path]) => new Path(path).updater((v) => JSON.stringify(v)),
|
|
306
|
+
// rename(PATH, SEARCH, REPLACE): regex-rename hash keys under PATH (recursive).
|
|
307
|
+
rename: ([path, search, replace]) => {
|
|
308
|
+
const re = new RegExp(search, 'g');
|
|
309
|
+
const renamer = (node) => {
|
|
310
|
+
if (isHash(node)) {
|
|
311
|
+
for (const old of Object.keys(node)) {
|
|
312
|
+
const val = node[old];
|
|
313
|
+
const nw = old.replace(re, replace);
|
|
314
|
+
if (nw !== old) {
|
|
315
|
+
delete node[old];
|
|
316
|
+
node[nw] = val;
|
|
317
|
+
}
|
|
318
|
+
renamer(val);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
else if (isArray(node)) {
|
|
322
|
+
for (const el of node)
|
|
323
|
+
renamer(el);
|
|
324
|
+
}
|
|
325
|
+
return node;
|
|
326
|
+
};
|
|
327
|
+
return new Path(path).updater(renamer);
|
|
328
|
+
},
|
|
329
|
+
// filter(PATH, REGEX, invert:1): keep array values (not) matching REGEX.
|
|
330
|
+
filter: (args) => {
|
|
331
|
+
const opts = {};
|
|
332
|
+
for (let i = 2; i < args.length; i += 2)
|
|
333
|
+
opts[args[i]] = args[i + 1];
|
|
334
|
+
const re = new RegExp(args[1]);
|
|
335
|
+
const invert = opts.invert === '1' || opts.invert === 'true';
|
|
336
|
+
return new Path(args[0]).updater((arr) => arr.filter((x) => re.test(String(x)) !== invert), 'array');
|
|
337
|
+
},
|
|
338
|
+
// flatten(PATH): recursively flatten nested arrays into one flat array.
|
|
339
|
+
flatten: ([path]) => new Path(path).updater((arr) => {
|
|
340
|
+
let a = arr;
|
|
341
|
+
while (a.some((x) => isArray(x)))
|
|
342
|
+
a = a.flatMap((x) => (isArray(x) ? x : [x]));
|
|
343
|
+
return a;
|
|
344
|
+
}, 'array'),
|
|
345
|
+
// collapse([sep]) / expand([sep]): whole-record flatten / nest (dot convention)
|
|
346
|
+
collapse: (args) => {
|
|
347
|
+
const sep = parseDashOpt(args, 'sep');
|
|
348
|
+
return (data) => {
|
|
349
|
+
const c = collapseHash(data);
|
|
350
|
+
if (sep === undefined || sep === '.')
|
|
351
|
+
return c;
|
|
352
|
+
const o = {};
|
|
353
|
+
for (const k of Object.keys(c))
|
|
354
|
+
o[k.replaceAll('.', sep)] = c[k];
|
|
355
|
+
return o;
|
|
356
|
+
};
|
|
357
|
+
},
|
|
358
|
+
expand: (args) => {
|
|
359
|
+
const sep = parseDashOpt(args, 'sep');
|
|
360
|
+
return (data) => {
|
|
361
|
+
if (sep === undefined || sep === '.')
|
|
362
|
+
return expandHash(data);
|
|
363
|
+
const o = {};
|
|
364
|
+
for (const k of Object.keys(data))
|
|
365
|
+
o[k.replaceAll(sep, '.')] = data[k];
|
|
366
|
+
return expandHash(o);
|
|
367
|
+
};
|
|
368
|
+
},
|
|
369
|
+
// parse_text(PATH, PATTERN): parse a string via regex -> hash (named
|
|
370
|
+
// groups), array (numbered groups), or unchanged (no groups / no match).
|
|
371
|
+
parse_text: ([path, pattern]) => {
|
|
372
|
+
const re = new RegExp(pattern);
|
|
373
|
+
return new Path(path).updater((v) => {
|
|
374
|
+
const m = re.exec(String(v));
|
|
375
|
+
if (!m)
|
|
376
|
+
return v;
|
|
377
|
+
if (m.groups && Object.keys(m.groups).length)
|
|
378
|
+
return { ...m.groups };
|
|
379
|
+
if (m.length > 1)
|
|
380
|
+
return m.slice(1);
|
|
381
|
+
return v;
|
|
382
|
+
}, 'string');
|
|
383
|
+
},
|
|
384
|
+
// int(PATH): first integer in a string, else array/hash size, else 0.
|
|
385
|
+
int: ([path]) => new Path(path).updater((v) => {
|
|
386
|
+
if (typeof v === 'number')
|
|
387
|
+
return Math.trunc(v);
|
|
388
|
+
if (typeof v === 'string') {
|
|
389
|
+
const m = /([+-]?[0-9]+)/.exec(v);
|
|
390
|
+
return m ? Number(m[1]) : 0;
|
|
391
|
+
}
|
|
392
|
+
if (isArray(v))
|
|
393
|
+
return v.length;
|
|
394
|
+
if (isHash(v))
|
|
395
|
+
return Object.keys(v).length;
|
|
396
|
+
return 0;
|
|
397
|
+
}),
|
|
398
|
+
// string(PATH): stringify a value / join array / join hash values (sorted keys).
|
|
399
|
+
string: ([path]) => new Path(path).updater((v) => {
|
|
400
|
+
if (typeof v === 'string' || typeof v === 'number')
|
|
401
|
+
return String(v);
|
|
402
|
+
if (isArray(v) && v.every((x) => typeof x === 'string' || typeof x === 'number'))
|
|
403
|
+
return v.join('');
|
|
404
|
+
if (isHash(v) && Object.values(v).every((x) => typeof x === 'string' || typeof x === 'number')) {
|
|
405
|
+
return Object.keys(v).sort().map((k) => v[k]).join('');
|
|
406
|
+
}
|
|
407
|
+
return '';
|
|
408
|
+
}),
|
|
409
|
+
// uri_encode / uri_decode (percent encoding, like Perl URI::Escape)
|
|
410
|
+
uri_encode: ([path]) => new Path(path).updater((v) => encodeURIComponent(String(v)).replace(/[!*'()]/g, (c) => '%' + c.charCodeAt(0).toString(16).toUpperCase()), 'string'),
|
|
411
|
+
uri_decode: ([path]) => new Path(path).updater((v) => decodeURIComponent(String(v)), 'string'),
|
|
412
|
+
// compact(PATH): drop null/undefined values from an array.
|
|
413
|
+
compact: ([path]) => new Path(path).updater((arr) => arr.filter((x) => x !== null && x !== undefined), 'array'),
|
|
414
|
+
// expand_date([FIELD=date]): split a date value into year/month/day at root.
|
|
415
|
+
expand_date: ([field]) => {
|
|
416
|
+
const get = new Path(field ?? 'date').getter();
|
|
417
|
+
return (data) => {
|
|
418
|
+
const v = get(data)[0];
|
|
419
|
+
if (typeof v !== 'string')
|
|
420
|
+
return data;
|
|
421
|
+
const parts = v.split(/\D+/).filter((p) => p !== '');
|
|
422
|
+
if (parts.length >= 1)
|
|
423
|
+
data.year = parts[0]; // string
|
|
424
|
+
if (parts.length >= 2)
|
|
425
|
+
data.month = Number(parts[1]); // number
|
|
426
|
+
if (parts.length >= 3)
|
|
427
|
+
data.day = Number(parts[2]); // number
|
|
428
|
+
return data;
|
|
429
|
+
};
|
|
430
|
+
},
|
|
431
|
+
// --- misc ---
|
|
432
|
+
nothing: () => (data) => data,
|
|
433
|
+
};
|
|
434
|
+
// parse a Catmandu-style "-sep => x" / "sep: x" option out of an arg list
|
|
435
|
+
function parseDashOpt(args, name) {
|
|
436
|
+
for (let i = 0; i < args.length; i++) {
|
|
437
|
+
if (args[i] === name || args[i] === `-${name}`)
|
|
438
|
+
return args[i + 1];
|
|
439
|
+
}
|
|
440
|
+
return undefined;
|
|
441
|
+
}
|
|
442
|
+
function isEmpty(v) {
|
|
443
|
+
return v === undefined || v === null
|
|
444
|
+
|| (typeof v === 'string' && !/\S/.test(v))
|
|
445
|
+
|| (isArray(v) && v.length === 0)
|
|
446
|
+
|| (isHash(v) && Object.keys(v).length === 0);
|
|
447
|
+
}
|
|
448
|
+
function vacuum(node) {
|
|
449
|
+
if (isHash(node)) {
|
|
450
|
+
for (const k of Object.keys(node)) {
|
|
451
|
+
if (isEmpty(node[k]))
|
|
452
|
+
delete node[k];
|
|
453
|
+
else {
|
|
454
|
+
vacuum(node[k]);
|
|
455
|
+
if (isEmpty(node[k]))
|
|
456
|
+
delete node[k];
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
else if (isArray(node)) {
|
|
461
|
+
for (let i = node.length - 1; i >= 0; i--) {
|
|
462
|
+
if (isEmpty(node[i]))
|
|
463
|
+
node.splice(i, 1);
|
|
464
|
+
else {
|
|
465
|
+
vacuum(node[i]);
|
|
466
|
+
if (isEmpty(node[i]))
|
|
467
|
+
node.splice(i, 1);
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
export function buildFix(name, args) {
|
|
473
|
+
const builder = FIXES[name];
|
|
474
|
+
if (!builder)
|
|
475
|
+
throw new Error(`unknown fix: ${name}`);
|
|
476
|
+
return builder(args);
|
|
477
|
+
}
|
|
478
|
+
//# sourceMappingURL=fixes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixes.js","sourceRoot":"","sources":["../../src/fix/fixes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { Path } from './path.js';
|
|
2
|
+
export { FIXES, buildFix } from './fixes.js';
|
|
3
|
+
export { parseFix } from './parser.js';
|
|
4
|
+
export { buildCondition } from './conditions.js';
|
|
5
|
+
export { buildBind } from './binds.js';
|
|
6
|
+
export { REJECT } from './signal.js';
|
|
7
|
+
/**
|
|
8
|
+
* Compile a Catmandu Fix script into a record -> record function.
|
|
9
|
+
* Parsed and built once; the returned function just runs the chain per record.
|
|
10
|
+
*/
|
|
11
|
+
export declare function compileFix(src: string): (data: any) => any;
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fix/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAuBrC;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG,CAE1D"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { parseFix } from './parser.js';
|
|
2
|
+
import { buildFix } from './fixes.js';
|
|
3
|
+
import { buildCondition } from './conditions.js';
|
|
4
|
+
import { buildBind } from './binds.js';
|
|
5
|
+
import { REJECT } from './signal.js';
|
|
6
|
+
export { Path } from './path.js';
|
|
7
|
+
export { FIXES, buildFix } from './fixes.js';
|
|
8
|
+
export { parseFix } from './parser.js';
|
|
9
|
+
export { buildCondition } from './conditions.js';
|
|
10
|
+
export { buildBind } from './binds.js';
|
|
11
|
+
export { REJECT } from './signal.js';
|
|
12
|
+
function compileStatements(stmts) {
|
|
13
|
+
const runners = stmts.map((s) => {
|
|
14
|
+
if (s.type === 'fix')
|
|
15
|
+
return buildFix(s.name, s.args);
|
|
16
|
+
if (s.type === 'bind')
|
|
17
|
+
return buildBind(s.name, s.args, compileStatements(s.body), s.doset);
|
|
18
|
+
const cond = buildCondition(s.cond.name, s.cond.args);
|
|
19
|
+
const thenRun = compileStatements(s.then);
|
|
20
|
+
const elseRun = compileStatements(s.otherwise);
|
|
21
|
+
const wantTrue = s.kind === 'if';
|
|
22
|
+
return (data) => (cond(data) === wantTrue ? thenRun(data) : elseRun(data));
|
|
23
|
+
});
|
|
24
|
+
return (data) => {
|
|
25
|
+
for (const r of runners) {
|
|
26
|
+
data = r(data);
|
|
27
|
+
if (data === REJECT)
|
|
28
|
+
return REJECT; // stop the sequence on reject()
|
|
29
|
+
}
|
|
30
|
+
return data;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Compile a Catmandu Fix script into a record -> record function.
|
|
35
|
+
* Parsed and built once; the returned function just runs the chain per record.
|
|
36
|
+
*/
|
|
37
|
+
export function compileFix(src) {
|
|
38
|
+
return compileStatements(parseFix(src));
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fix/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,SAAS,iBAAiB,CAAC,KAAkB;IACzC,MAAM,OAAO,GAAa,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACtC,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAC5F,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;QACjC,OAAO,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,IAAS,EAAE,EAAE;QACjB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACtB,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,IAAI,KAAK,MAAM;gBAAE,OAAO,MAAM,CAAC,CAAC,gCAAgC;QACxE,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IAClC,OAAO,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface FixCall {
|
|
2
|
+
type: 'fix';
|
|
3
|
+
name: string;
|
|
4
|
+
args: string[];
|
|
5
|
+
}
|
|
6
|
+
export interface CondBlock {
|
|
7
|
+
type: 'cond';
|
|
8
|
+
kind: 'if' | 'unless';
|
|
9
|
+
cond: {
|
|
10
|
+
name: string;
|
|
11
|
+
args: string[];
|
|
12
|
+
};
|
|
13
|
+
then: Statement[];
|
|
14
|
+
otherwise: Statement[];
|
|
15
|
+
}
|
|
16
|
+
export interface BindBlock {
|
|
17
|
+
type: 'bind';
|
|
18
|
+
name: string;
|
|
19
|
+
args: string[];
|
|
20
|
+
body: Statement[];
|
|
21
|
+
doset: boolean;
|
|
22
|
+
}
|
|
23
|
+
export type Statement = FixCall | CondBlock | BindBlock;
|
|
24
|
+
export declare function parseFix(src: string): Statement[];
|
|
25
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/fix/parser.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,OAAO;IAAG,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;CAAE;AACvE,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,GAAG,QAAQ,CAAC;IACtB,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACvC,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,SAAS,EAAE,SAAS,EAAE,CAAC;CAC1B;AACD,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;CAClB;AACD,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAExD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAkGjD"}
|