marcattacks 2.2.11 → 2.2.13

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 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
- ## Formats
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/globber.js CHANGED
File without changes
@@ -16,9 +16,9 @@ export async function transform(_opts) {
16
16
  if (line.length === 0)
17
17
  continue;
18
18
  if (!line.match(/^\w+\s[\x20-\x7E]{5}\sL\s.*/u)) {
19
- const err = new Error(`syntax error in record ${recordNum + 1}`);
20
- logger.error(err.message);
21
- return callback(err);
19
+ logger.error(`syntax error in record ${recordNum + 1}`);
20
+ logger.error(`error> ${line}`);
21
+ continue;
22
22
  }
23
23
  const [id, ...rest] = line.split(" ");
24
24
  const lineData = rest.join(" ");
@@ -1 +1 @@
1
- {"version":3,"file":"alephseq.js","sourceRoot":"","sources":["../../src/input/alephseq.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"alephseq.js","sourceRoot":"","sources":["../../src/input/alephseq.ts"],"names":[],"mappings":"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"}
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
@@ -1 +1 @@
1
- {"version":3,"file":"xml.js","sourceRoot":"","sources":["../../src/input/xml.ts"],"names":[],"mappings":"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"}
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,CA6C/D"}
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"}
@@ -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;oBACnB,CAAC;yBACI,CAAC;wBACF,EAAE,IAAI,OAAO,IAAI,GAAG,GAAG,EAAE,CAAC;oBAC9B,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"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "marcattacks",
3
- "version": "2.2.11",
3
+ "version": "2.2.13",
4
4
  "description": "A powerful streaming MARC21 to RDF converter with JSONata transformation and S3 support.",
5
5
  "keywords": [
6
6
  "marc21",
package/dist/demo.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=demo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":""}
package/dist/demo.js DELETED
@@ -1,8 +0,0 @@
1
- import { createInputReadStream, createInputTransformStage } from "./attacker.js";
2
- main();
3
- async function main() {
4
- const reader1 = await createInputReadStream("./data/sample.xml");
5
- const reader2 = await createInputReadStream("./data/sample.xml");
6
- const parser = await createInputTransformStage({ from: 'xml' }, "./data/sample.xml", reader1);
7
- }
8
- //# sourceMappingURL=demo.js.map
package/dist/demo.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"demo.js","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAEjF,IAAI,EAAE,CAAC;AAEP,KAAK,UAAU,IAAI;IACf,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;IACjE,MAAM,MAAM,GAAI,MAAM,yBAAyB,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,EAAC,mBAAmB,EAAC,OAAO,CAAC,CAAC;AAE/F,CAAC"}
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=rdfparse.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rdfparse.d.ts","sourceRoot":"","sources":["../src/rdfparse.ts"],"names":[],"mappings":""}
package/dist/rdfparse.js DELETED
@@ -1,130 +0,0 @@
1
- #!/usr/bin/env node
2
- import log4js from 'log4js';
3
- import { program } from 'commander';
4
- import fs from 'fs';
5
- import path from 'node:path';
6
- import dotenv from 'dotenv';
7
- import { createRequire } from 'node:module';
8
- import { pathToFileURL } from "node:url";
9
- import { createDecompressionStage, createInputReadStream, createUntarStage } from './attacker.js';
10
- const require = createRequire(import.meta.url);
11
- const pkg = require('../package.json');
12
- program.version(pkg.version)
13
- .argument('<file>')
14
- .option('-c,--config <config>', 'config .env', path.join(process.cwd(), '.env'))
15
- .option('--key <keyfile>', 'private key file')
16
- .option('--key-env <env>', 'private key environment variable')
17
- .option('--log <format>', 'logging format')
18
- .option('--info', 'output debugging messages')
19
- .option('--debug', 'output more debugging messages')
20
- .option('--trace', 'output much more debugging messages');
21
- program.parse(process.argv);
22
- const opts = program.opts();
23
- if (opts.log) {
24
- let output = 'stderr';
25
- let type = 0;
26
- if (opts.log.indexOf('stdout') >= 0) {
27
- output = 'stdout';
28
- }
29
- if (opts.log.indexOf('json') >= 0) {
30
- type = 1;
31
- }
32
- if (type) {
33
- configureJSONLogger(output);
34
- }
35
- else {
36
- configureDefaultLogger(output);
37
- }
38
- }
39
- else {
40
- configureDefaultLogger('stderr');
41
- }
42
- const logger = log4js.getLogger();
43
- if (opts.info) {
44
- logger.level = "info";
45
- }
46
- if (opts.debug) {
47
- logger.level = "debug";
48
- }
49
- if (opts.trace) {
50
- logger.level = "trace";
51
- }
52
- if (opts.config) {
53
- dotenv.config({ path: opts.config, quiet: true });
54
- }
55
- main();
56
- function configureDefaultLogger(output) {
57
- log4js.configure({
58
- appenders: {
59
- err: {
60
- type: output,
61
- layout: {
62
- type: "pattern",
63
- pattern: "%[%d %p %f{2} %m%]"
64
- }
65
- }
66
- },
67
- categories: {
68
- default: { appenders: ["err"], level: "off", enableCallStack: true }
69
- }
70
- });
71
- }
72
- function configureJSONLogger(output) {
73
- log4js.addLayout('json-pattern', (config) => {
74
- return (logEvent) => {
75
- return JSON.stringify({
76
- timestamp: logEvent.startTime, // Similar to %d
77
- level: logEvent.level.levelStr, // Similar to %p
78
- category: logEvent.categoryName, // Similar to %c
79
- message: logEvent.data.join(' '), // Similar to %m
80
- context: logEvent.context, // Similar to %X (tokens)
81
- pid: logEvent.pid // Similar to %z
82
- });
83
- };
84
- });
85
- log4js.configure({
86
- appenders: {
87
- err: {
88
- type: output,
89
- layout: {
90
- type: "json-pattern"
91
- }
92
- }
93
- },
94
- categories: {
95
- default: { appenders: ["err"], level: "off", enableCallStack: true }
96
- }
97
- });
98
- }
99
- async function main() {
100
- try {
101
- const url = program.args[0];
102
- if (!url) {
103
- console.error(`need an input file`);
104
- process.exit(2);
105
- }
106
- let inputFile;
107
- if (fs.existsSync(url)) {
108
- const filePath = path.resolve(process.cwd(), url);
109
- inputFile = pathToFileURL(filePath);
110
- }
111
- else {
112
- inputFile = new URL(url);
113
- }
114
- const { stream: readableStream, resolvedUrl: myFile } = await createInputReadStream(inputFile, opts);
115
- const stages = [readableStream];
116
- const decompressionStage = await createDecompressionStage(inputFile, opts);
117
- if (decompressionStage)
118
- stages.push(decompressionStage);
119
- const untarStage = await createUntarStage(inputFile, opts);
120
- if (untarStage)
121
- stages.push(untarStage);
122
- }
123
- catch (e) {
124
- logger.debug(e);
125
- logger.error("process crashed");
126
- process.exitCode = 4;
127
- process.exit();
128
- }
129
- }
130
- //# sourceMappingURL=rdfparse.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rdfparse.js","sourceRoot":"","sources":["../src/rdfparse.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Transform } from "stream";
2
- export declare function transform(_param: any): Promise<Transform>;
3
- //# sourceMappingURL=marcinrdf.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"marcinrdf.d.ts","sourceRoot":"","sources":["../../src/transform/marcinrdf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAKnC,wBAAsB,SAAS,CAAC,MAAM,EAAE,GAAG,GAAI,OAAO,CAAC,SAAS,CAAC,CAQhE"}
@@ -1,36 +0,0 @@
1
- import { Transform } from "stream";
2
- import { isRecord } from "../types/quad.js";
3
- import { parseString } from "../util/rdf_parse.js";
4
- import { marcmap } from "../marcmap.js";
5
- export async function transform(_param) {
6
- return new Transform({
7
- objectMode: true,
8
- async transform(data, _encoding, callback) {
9
- const rdfData = await makeRdfData(data);
10
- callback(null, rdfData);
11
- }
12
- });
13
- }
14
- async function makeRdfData(data) {
15
- // First take a guess if we already have a Record
16
- // Stupid guess but sufficient for now
17
- if (isRecord(data)) {
18
- return data;
19
- }
20
- const id = marcmap(data['record'], "001", {})[0];
21
- const clone = structuredClone(data);
22
- // Parse the input data as RDF
23
- clone['@context'] = {
24
- "@vocab": "http://example.org/ns#",
25
- "ex": "http://example.org/ns#",
26
- "record": {
27
- "@id": "ex:record",
28
- "@container": "@list"
29
- }
30
- };
31
- clone['@id'] = `http://example.org/record/${id}`;
32
- clone['@type'] = 'ex:Record';
33
- const rdfData = await parseString(JSON.stringify(clone), "data.jsonld");
34
- return rdfData;
35
- }
36
- //# sourceMappingURL=marcinrdf.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"marcinrdf.js","sourceRoot":"","sources":["../../src/transform/marcinrdf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAe,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAW;IACvC,OAAO,IAAI,SAAS,CAAC;QACjB,UAAU,EAAE,IAAI;QAChB,KAAK,CAAC,SAAS,CAAC,IAAS,EAAE,SAAS,EAAE,QAAQ;YAC1C,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YACxC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5B,CAAC;KACJ,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAS;IAChC,kDAAkD;IAClD,sCAAsC;IACtC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/C,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAEpC,8BAA8B;IAC9B,KAAK,CAAC,UAAU,CAAC,GAAG;QAChB,QAAQ,EAAE,wBAAwB;QAClC,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE;YACN,KAAK,EAAE,WAAW;YAClB,YAAY,EAAE,OAAO;SACxB;KACJ,CAAC;IAEF,KAAK,CAAC,KAAK,CAAC,GAAG,6BAA6B,EAAE,EAAE,CAAE;IAClD,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC;IAE7B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC;IAExE,OAAO,OAAO,CAAC;AACnB,CAAC"}
@@ -1,3 +0,0 @@
1
- import { Transform } from "stream";
2
- export declare function transform(param: any): Promise<Transform>;
3
- //# sourceMappingURL=notation3.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notation3.d.ts","sourceRoot":"","sources":["../../src/transform/notation3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAUnC,wBAAsB,SAAS,CAAC,KAAK,EAAE,GAAG,GAAI,OAAO,CAAC,SAAS,CAAC,CAiD/D"}
@@ -1,68 +0,0 @@
1
- import { Transform } from "stream";
2
- import { parseString, writeString } from "../util/rdf_parse.js";
3
- import { isRecord } from "../types/quad.js";
4
- import * as marc_n3_helpers from "../util/marc_n3_helpers.js";
5
- import fs from "fs";
6
- import log4js from 'log4js';
7
- import eyeling from 'eyeling';
8
- const logger = log4js.getLogger();
9
- export async function transform(param) {
10
- let n3 = null;
11
- if (param.fix && fs.existsSync(param.fix)) {
12
- n3 = fs.readFileSync(param.fix, { encoding: 'utf-8' });
13
- }
14
- else {
15
- logger.warn("no notation3 file provided or found, using empty rules");
16
- }
17
- logger.debug(n3);
18
- return new Transform({
19
- objectMode: true,
20
- async transform(data, _encoding, callback) {
21
- try {
22
- const rdfData = await makeRdfData(data);
23
- if (n3) {
24
- // Prepare the eyeling input: first write Turtle
25
- let rdfText = await writeString(rdfData);
26
- // Inject the n3 rules
27
- rdfText += "\n\n###RULES\n" + n3;
28
- // Inject helpers
29
- rdfText += "\n\n##HELPERS\n" + marc_n3_helpers.code;
30
- logger.debug(rdfText);
31
- // Reason
32
- const rdfOutput = eyeling.reason({ proofComments: false }, rdfText);
33
- // Turn it back into JSON
34
- logger.debug(rdfOutput);
35
- const newData = await parseString(rdfOutput, "data.n3");
36
- logger.debug(newData);
37
- callback(null, newData);
38
- }
39
- else {
40
- callback(null, rdfData);
41
- }
42
- }
43
- catch (err) {
44
- callback(err);
45
- }
46
- }
47
- });
48
- }
49
- async function makeRdfData(data) {
50
- // First take a guess if we already have a Record
51
- // Stupid guess but sufficient for now
52
- if (isRecord(data)) {
53
- return data;
54
- }
55
- const clone = structuredClone(data);
56
- // Parse the input data as RDF
57
- clone['@context'] = {
58
- "@vocab": "http://example.org/ns#",
59
- "ex": "http://example.org/ns#",
60
- "record": {
61
- "@id": "ex:record",
62
- "@container": "@list"
63
- }
64
- };
65
- const rdfData = await parseString(JSON.stringify(clone), "data.jsonld");
66
- return rdfData;
67
- }
68
- //# sourceMappingURL=notation3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notation3.js","sourceRoot":"","sources":["../../src/transform/notation3.ts"],"names":[],"mappings":"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"}