marcattacks 2.2.10 → 2.2.12
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 +21 -1
- package/dist/command.js +1 -1
- package/dist/input/xml.js +6 -3
- package/dist/input/xml.js.map +1 -1
- package/dist/output/alephseq.d.ts.map +1 -1
- package/dist/output/alephseq.js +9 -2
- package/dist/output/alephseq.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -57,6 +57,10 @@ Transform the MARC input using a [JSONata](https://docs.jsonata.org/overview.htm
|
|
|
57
57
|
marcattacks --param fix=./demo/demo.jsonata ./data/sample.xml
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
+
## Stdin
|
|
61
|
+
|
|
62
|
+
Use a pseudo URL `stdin://` to read from the standard input
|
|
63
|
+
|
|
60
64
|
## Remote files
|
|
61
65
|
|
|
62
66
|
A remote SFTP path:
|
|
@@ -85,7 +89,7 @@ marcattacks s3://accessKey:secretKey@hostname:port/bucket/key
|
|
|
85
89
|
|
|
86
90
|
use `s3s://...` for using an SSL layer.
|
|
87
91
|
|
|
88
|
-
##
|
|
92
|
+
## Options
|
|
89
93
|
|
|
90
94
|
### Input (--from)
|
|
91
95
|
|
|
@@ -174,3 +178,19 @@ Or, for an S3 site:
|
|
|
174
178
|
npx globtrotr s3s://accessKey:privateKey@hostname:port/bucket/@glob:xml
|
|
175
179
|
```
|
|
176
180
|
|
|
181
|
+
## Concatenate files
|
|
182
|
+
|
|
183
|
+
Some formats such as jsonl allow for concatenation of the output. With Bash grouped blocks marcattacks can then be used to concatenate files:
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
#!/bin/bash
|
|
187
|
+
|
|
188
|
+
# Example how to process files in sequence and concatenate the output
|
|
189
|
+
{
|
|
190
|
+
npx marcattacks --from alephseq --to jsonl data/one.alephseq
|
|
191
|
+
npx marcattacks --from xml --to jsonl data/sample.tar
|
|
192
|
+
npx marcattacks --from xml --to jsonl data/sample.tar.gz
|
|
193
|
+
npx marcattacks --from xml --to jsonl data/sample.xml.gz
|
|
194
|
+
npx marcattacks --from xml --to jsonl data/sample.xml
|
|
195
|
+
} | npx marcattacks --from jsonl --to xml stdin://
|
|
196
|
+
```
|
package/dist/command.js
CHANGED
|
@@ -128,7 +128,7 @@ async function main() {
|
|
|
128
128
|
logger.info(`peak RSS: ${usage.maxRSS / 1024} MB`);
|
|
129
129
|
}
|
|
130
130
|
catch (e) {
|
|
131
|
-
logger.
|
|
131
|
+
logger.error(e);
|
|
132
132
|
if (e instanceof PipelineError) {
|
|
133
133
|
logger.error("pipeline error");
|
|
134
134
|
process.exitCode = e.statusCode;
|
package/dist/input/xml.js
CHANGED
|
@@ -41,17 +41,17 @@ export async function transform(_opts) {
|
|
|
41
41
|
parser.on('closetag', (tag) => {
|
|
42
42
|
const localName = tag.replaceAll(/^\w+:/g, '');
|
|
43
43
|
if (localName === 'leader') {
|
|
44
|
-
record.push(['LDR', ' ', ' ', '_', text]);
|
|
44
|
+
record.push(['LDR', ' ', ' ', '_', escapeLine(text)]);
|
|
45
45
|
}
|
|
46
46
|
else if (localName === 'controlfield') {
|
|
47
|
-
record.push([attrib.tag, ' ', ' ', '_', text]);
|
|
47
|
+
record.push([attrib.tag, ' ', ' ', '_', escapeLine(text)]);
|
|
48
48
|
}
|
|
49
49
|
else if (localName === 'datafield') {
|
|
50
50
|
record.push([attrib.tag, attrib.ind1, attrib.ind2, ...subfield]);
|
|
51
51
|
subfield = [];
|
|
52
52
|
}
|
|
53
53
|
else if (localName === 'subfield') {
|
|
54
|
-
subfield.push(sattrib.code, text);
|
|
54
|
+
subfield.push(sattrib.code, escapeLine(text));
|
|
55
55
|
}
|
|
56
56
|
if (localName === 'record') {
|
|
57
57
|
// Push the completed record object down the pipeline
|
|
@@ -68,4 +68,7 @@ export async function transform(_opts) {
|
|
|
68
68
|
});
|
|
69
69
|
return transformStream;
|
|
70
70
|
}
|
|
71
|
+
function escapeLine(val) {
|
|
72
|
+
return val.replaceAll(/[\x00-\x1F\x7F]/g, '');
|
|
73
|
+
}
|
|
71
74
|
//# sourceMappingURL=xml.js.map
|
package/dist/input/xml.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xml.js","sourceRoot":"","sources":["../../src/input/xml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA0B,MAAM,QAAQ,CAAC;AAC3D,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AAKlC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAU;IACtC,IAAI,MAAM,GAAe,EAAE,CAAC;IAC5B,IAAI,QAAQ,GAAa,EAAE,CAAC;IAC5B,IAAI,MAAM,GAAmB,EAAE,CAAC;IAChC,IAAI,OAAO,GAAsB,EAAE,CAAC;IACpC,IAAI,IAAI,GAAW,EAAE,CAAC;IACtB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAEtC,MAAM,eAAe,GAAG,IAAI,SAAS,CAAC;QAClC,UAAU,EAAE,IAAI;QAEhB,SAAS,CAAC,KAAU,EAAE,SAAiB,EAAE,QAA2B;YAChE,IAAI,QAAQ;gBAAE,OAAO,QAAQ,EAAE,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpB,QAAQ,EAAE,CAAC;QACf,CAAC;QAED,KAAK,CAAC,QAA2B;YAC7B,IAAI,QAAQ;gBAAE,OAAO,QAAQ,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,EAAE,CAAC;YACb,QAAQ,EAAE,CAAC;QACf,CAAC;KACJ,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACrD,IAAI,SAAS,KAAK,cAAc,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YAC5D,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,CAAC;aAAM,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAClC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;QAC9B,CAAC;QACD,IAAI,GAAG,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE;QAC5B,IAAI,IAAI,CAAC,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,GAAW,EAAE,EAAE;QAClC,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAE/C,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"xml.js","sourceRoot":"","sources":["../../src/input/xml.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alephseq.d.ts","sourceRoot":"","sources":["../../src/output/alephseq.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAMnC,wBAAsB,SAAS,CAAC,MAAM,EAAC,GAAG,GAAI,OAAO,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"alephseq.d.ts","sourceRoot":"","sources":["../../src/output/alephseq.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAMnC,wBAAsB,SAAS,CAAC,MAAM,EAAC,GAAG,GAAI,OAAO,CAAC,SAAS,CAAC,CAkD/D"}
|
package/dist/output/alephseq.js
CHANGED
|
@@ -25,11 +25,15 @@ export async function transform(_param) {
|
|
|
25
25
|
for (let j = 3; j < rec[i].length; j += 2) {
|
|
26
26
|
let code = rec[i][j];
|
|
27
27
|
let val = rec[i][j + 1];
|
|
28
|
+
if (val === undefined) {
|
|
29
|
+
// skip undefined values
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
28
32
|
if (tag.match(/^LDR|00./g)) {
|
|
29
|
-
sf += `${val}`;
|
|
33
|
+
sf += `${escapeLine(val)}`;
|
|
30
34
|
}
|
|
31
35
|
else {
|
|
32
|
-
sf += `\$\$${code}${val}`;
|
|
36
|
+
sf += `\$\$${code}${escapeLine(val)}`;
|
|
33
37
|
}
|
|
34
38
|
}
|
|
35
39
|
output += `${id} ${tag}${ind1}${ind2} L ${sf}\n`;
|
|
@@ -39,4 +43,7 @@ export async function transform(_param) {
|
|
|
39
43
|
}
|
|
40
44
|
});
|
|
41
45
|
}
|
|
46
|
+
function escapeLine(val) {
|
|
47
|
+
return val.replaceAll(/[\x00-\x1F\x7F]/g, '');
|
|
48
|
+
}
|
|
42
49
|
//# sourceMappingURL=alephseq.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alephseq.js","sourceRoot":"","sources":["../../src/output/alephseq.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAU;IACtC,OAAO,IAAI,SAAS,CAAC;QACjB,UAAU,EAAE,IAAI;QAChB,SAAS,CAAC,IAAS,EAAE,SAAS,EAAE,QAAQ;YACpC,IAAI,GAAG,GAAgB,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEtC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACP,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBACrC,QAAQ,EAAE,CAAC;gBACX,OAAO;YACX,CAAC;YAED,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,EAAC,KAAK,EAAC,EAAE,CAAC,CAAC;YAE/B,IAAI,MAAM,GAAG,GAAG,EAAE,eAAe,CAAC;YAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,GAAG,CAAC,MAAM,EAAG,CAAC,EAAE,EAAE,CAAC;gBACpC,IAAI,GAAG,GAAI,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,EAAE,GAAG,EAAE,CAAC;gBAEZ,IAAI,GAAI,KAAK,KAAK,EAAE,CAAC;oBACjB,SAAS;gBACb,CAAC;gBAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,MAAM,EAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1C,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;oBACtB,IAAI,GAAG,GAAI,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC;oBAExB,IAAI,GAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC1B,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"alephseq.js","sourceRoot":"","sources":["../../src/output/alephseq.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAU;IACtC,OAAO,IAAI,SAAS,CAAC;QACjB,UAAU,EAAE,IAAI;QAChB,SAAS,CAAC,IAAS,EAAE,SAAS,EAAE,QAAQ;YACpC,IAAI,GAAG,GAAgB,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEtC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACP,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBACrC,QAAQ,EAAE,CAAC;gBACX,OAAO;YACX,CAAC;YAED,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,EAAC,KAAK,EAAC,EAAE,CAAC,CAAC;YAE/B,IAAI,MAAM,GAAG,GAAG,EAAE,eAAe,CAAC;YAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,GAAG,CAAC,MAAM,EAAG,CAAC,EAAE,EAAE,CAAC;gBACpC,IAAI,GAAG,GAAI,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,EAAE,GAAG,EAAE,CAAC;gBAEZ,IAAI,GAAI,KAAK,KAAK,EAAE,CAAC;oBACjB,SAAS;gBACb,CAAC;gBAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,MAAM,EAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1C,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;oBACtB,IAAI,GAAG,GAAI,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC;oBAExB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;wBACpB,wBAAwB;wBACxB,SAAS;oBACb,CAAC;oBAED,IAAI,GAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC1B,EAAE,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/B,CAAC;yBACI,CAAC;wBACF,EAAE,IAAI,OAAO,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1C,CAAC;gBACL,CAAC;gBAED,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,MAAM,EAAE,IAAI,CAAC;YACrD,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC;YAC9C,QAAQ,CAAC,IAAI,EAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;KACJ,CAAC,CAAC;AACP,CAAC;AAED,SAAS,UAAU,CAAC,GAAU;IAC1B,OAAO,GAAG,CAAC,UAAU,CAAC,kBAAkB,EAAC,EAAE,CAAC,CAAC;AACjD,CAAC"}
|