marcattacks 2.4.1 → 2.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.
@@ -8,8 +8,8 @@ export async function transform(_opts) {
8
8
  let tail = "";
9
9
  function processLine(line, stream) {
10
10
  if (!line.match(/^\w+\s[\x20-\x7E]{5}\sL\s.*/u)) {
11
- logger.error(`syntax error in record ${recordNum + 1}`);
12
- logger.error(`error> ${line}`);
11
+ logger.warn(`syntax error in record ${recordNum + 1}`);
12
+ logger.warn(`skipping> ${line}`);
13
13
  return false;
14
14
  }
15
15
  const [id, ...rest] = line.split(" ");
@@ -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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"}
@@ -0,0 +1,7 @@
1
+ import { Transform } from 'stream';
2
+ export interface OutputMultipartOptions {
3
+ header?: string;
4
+ delimiter?: string;
5
+ }
6
+ export declare function transform(opts?: OutputMultipartOptions): Promise<Transform>;
7
+ //# sourceMappingURL=mulitipart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mulitipart.d.ts","sourceRoot":"","sources":["../../src/output/mulitipart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAKnC,MAAM,WAAW,sBAAsB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,SAAS,CAAC,IAAI,GAAE,sBAA2B,GAAI,OAAO,CAAC,SAAS,CAAC,CAyDtF"}
@@ -0,0 +1,53 @@
1
+ import { Transform } from 'stream';
2
+ import log4js from 'log4js';
3
+ const logger = log4js.getLogger();
4
+ export async function transform(opts = {}) {
5
+ let header = opts.header ? opts.header :
6
+ "Content-Type: multipart/mixed; boundary=\"marcattacks\"";
7
+ let delimiter = opts.delimiter ? opts.delimiter : "--marcattacks";
8
+ let isFirst = true;
9
+ return new Transform({
10
+ objectMode: true,
11
+ transform(data, _encoding, callback) {
12
+ if (Object.keys(data).length == 0) {
13
+ logger.debug('skipped empty record');
14
+ callback();
15
+ return;
16
+ }
17
+ let output = "";
18
+ if (isFirst) {
19
+ output += header + "\n\n";
20
+ isFirst = false;
21
+ }
22
+ else {
23
+ output += delimiter + "\n";
24
+ }
25
+ let fields = [];
26
+ let sortedKeys = Object.keys(data).sort();
27
+ sortedKeys.forEach(key => {
28
+ if (Array.isArray(data[key])) {
29
+ fields.push(`ARRAY[${data[key].length}]`);
30
+ }
31
+ else if (typeof data[key] === 'object') {
32
+ fields.push(`HASH[${Object.keys(data[key]).length}]`);
33
+ }
34
+ else {
35
+ fields.push(data[key]);
36
+ }
37
+ });
38
+ output += fields.join(" ") + "\n";
39
+ logger.trace(`adding ${output.length} bytes`);
40
+ callback(null, output);
41
+ },
42
+ flush(callback) {
43
+ logger.debug('flush reached');
44
+ if (!isFirst) {
45
+ let output = delimiter + "--\n";
46
+ logger.trace(`adding ${output.length} bytes`);
47
+ this.push(output);
48
+ }
49
+ callback();
50
+ }
51
+ });
52
+ }
53
+ //# sourceMappingURL=mulitipart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mulitipart.js","sourceRoot":"","sources":["../../src/output/mulitipart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AAOlC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAA+B,EAAE;IAC7D,IAAI,MAAM,GAAY,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,yDAAyD,CAAC;IAC9D,IAAI,SAAS,GAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC;IAE3E,IAAI,OAAO,GAAG,IAAI,CAAC;IAEnB,OAAO,IAAI,SAAS,CAAC;QACjB,UAAU,EAAE,IAAI;QAChB,SAAS,CAAC,IAAS,EAAE,SAAS,EAAE,QAAQ;YACpC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAChC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBACrC,QAAQ,EAAE,CAAC;gBACX,OAAO;YACX,CAAC;YAED,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,IAAI,OAAO,EAAE,CAAC;gBACV,MAAM,IAAI,MAAM,GAAG,MAAM,CAAC;gBAC1B,OAAO,GAAG,KAAK,CAAC;YACpB,CAAC;iBACI,CAAC;gBACF,MAAM,IAAI,SAAS,GAAG,IAAI,CAAC;YAC/B,CAAC;YAED,IAAI,MAAM,GAAc,EAAE,CAAC;YAE3B,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YAE1C,UAAU,CAAC,OAAO,CAAE,GAAG,CAAC,EAAE;gBACtB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC9C,CAAC;qBACI,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACrC,MAAM,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC1D,CAAC;qBACI,CAAC;oBACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3B,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAElC,MAAM,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC;YAC9C,QAAQ,CAAC,IAAI,EAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QACD,KAAK,CAAC,QAAQ;YACV,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,IAAI,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;gBAChC,MAAM,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC;YACD,QAAQ,EAAE,CAAC;QACf,CAAC;KACJ,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { Transform } from 'stream';
2
+ export interface OutputMultipartOptions {
3
+ header?: string;
4
+ delimiter?: string;
5
+ noEndDelimiter?: string;
6
+ }
7
+ export declare function transform(opts?: OutputMultipartOptions): Promise<Transform>;
8
+ //# sourceMappingURL=multipart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multipart.d.ts","sourceRoot":"","sources":["../../src/output/multipart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAKnC,MAAM,WAAW,sBAAsB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAsB,SAAS,CAAC,IAAI,GAAE,sBAA2B,GAAI,OAAO,CAAC,SAAS,CAAC,CAoDtF"}
@@ -0,0 +1,49 @@
1
+ import { Transform } from 'stream';
2
+ import log4js from 'log4js';
3
+ const logger = log4js.getLogger();
4
+ export async function transform(opts = {}) {
5
+ let header = opts.header ? opts.header :
6
+ "Content-Type: multipart/mixed; boundary=\"marcattacks\"";
7
+ let delimiter = opts.delimiter ? opts.delimiter : "--marcattacks";
8
+ let noEndDelimiter = opts.noEndDelimiter === 'true' ? true : false;
9
+ let isFirst = true;
10
+ return new Transform({
11
+ objectMode: true,
12
+ transform(data, _encoding, callback) {
13
+ let output = "";
14
+ if (isFirst) {
15
+ output += header + "\n\n";
16
+ isFirst = false;
17
+ }
18
+ else {
19
+ output += delimiter + "\n";
20
+ }
21
+ let fields = [];
22
+ let sortedKeys = Object.keys(data).sort();
23
+ sortedKeys.forEach(key => {
24
+ if (Array.isArray(data[key])) {
25
+ fields.push(`ARRAY[${data[key].length}]`);
26
+ }
27
+ else if (typeof data[key] === 'object') {
28
+ fields.push(`HASH[${Object.keys(data[key]).length}]`);
29
+ }
30
+ else {
31
+ fields.push(data[key]);
32
+ }
33
+ });
34
+ output += fields.join(" ") + "\n";
35
+ logger.trace(`adding ${output.length} bytes`);
36
+ callback(null, output);
37
+ },
38
+ flush(callback) {
39
+ logger.debug('flush reached');
40
+ if (!isFirst && !noEndDelimiter) {
41
+ let output = delimiter + "--\n";
42
+ logger.trace(`adding ${output.length} bytes`);
43
+ this.push(output);
44
+ }
45
+ callback();
46
+ }
47
+ });
48
+ }
49
+ //# sourceMappingURL=multipart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multipart.js","sourceRoot":"","sources":["../../src/output/multipart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AAQlC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAA+B,EAAE;IAC7D,IAAI,MAAM,GAAY,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,yDAAyD,CAAC;IAC9D,IAAI,SAAS,GAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC;IAC3E,IAAI,cAAc,GAAa,IAAI,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAE7E,IAAI,OAAO,GAAG,IAAI,CAAC;IAEnB,OAAO,IAAI,SAAS,CAAC;QACjB,UAAU,EAAE,IAAI;QAChB,SAAS,CAAC,IAAS,EAAE,SAAS,EAAE,QAAQ;YACpC,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,IAAI,OAAO,EAAE,CAAC;gBACV,MAAM,IAAI,MAAM,GAAG,MAAM,CAAC;gBAC1B,OAAO,GAAG,KAAK,CAAC;YACpB,CAAC;iBACI,CAAC;gBACF,MAAM,IAAI,SAAS,GAAG,IAAI,CAAC;YAC/B,CAAC;YAED,IAAI,MAAM,GAAc,EAAE,CAAC;YAE3B,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YAE1C,UAAU,CAAC,OAAO,CAAE,GAAG,CAAC,EAAE;gBACtB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC9C,CAAC;qBACI,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACrC,MAAM,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC1D,CAAC;qBACI,CAAC;oBACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3B,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAElC,MAAM,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC;YAC9C,QAAQ,CAAC,IAAI,EAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QACD,KAAK,CAAC,QAAQ;YACV,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC9B,IAAI,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;gBAChC,MAAM,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC;YACD,QAAQ,EAAE,CAAC;QACf,CAAC;KACJ,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Transform } from 'stream';
2
+ export interface OutputTextOptions {
3
+ newline?: "yes" | "no";
4
+ }
5
+ export declare function transform(opts?: OutputTextOptions): Promise<Transform>;
6
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/output/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAKnC,MAAM,WAAW,iBAAiB;IAC9B,OAAO,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CAC1B;AAED,wBAAsB,SAAS,CAAC,IAAI,GAAE,iBAAsB,GAAI,OAAO,CAAC,SAAS,CAAC,CAkCjF"}
@@ -0,0 +1,34 @@
1
+ import { Transform } from 'stream';
2
+ import log4js from 'log4js';
3
+ const logger = log4js.getLogger();
4
+ export async function transform(opts = {}) {
5
+ let newline = opts.newline ? opts.newline : "no";
6
+ return new Transform({
7
+ objectMode: true,
8
+ transform(data, _encoding, callback) {
9
+ if (Object.keys(data).length == 0) {
10
+ logger.debug('skipped empty record');
11
+ callback();
12
+ return;
13
+ }
14
+ let output = "";
15
+ let fields = [];
16
+ let sortedKeys = Object.keys(data).sort();
17
+ sortedKeys.forEach(key => {
18
+ if (Array.isArray(data[key])) {
19
+ fields.push(`ARRAY[${data[key].length}]`);
20
+ }
21
+ else if (typeof data[key] === 'object') {
22
+ fields.push(`HASH[${Object.keys(data[key]).length}]`);
23
+ }
24
+ else {
25
+ fields.push(data[key]);
26
+ }
27
+ });
28
+ output += fields.join(delimiter) + "\n";
29
+ logger.trace(`adding ${output.length} bytes`);
30
+ callback(null, output);
31
+ }
32
+ });
33
+ }
34
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/output/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AAMlC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAA0B,EAAE;IACxD,IAAI,OAAO,GAAY,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAE1D,OAAO,IAAI,SAAS,CAAC;QACjB,UAAU,EAAE,IAAI;QAChB,SAAS,CAAC,IAAS,EAAE,SAAS,EAAE,QAAQ;YACpC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAChC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBACrC,QAAQ,EAAE,CAAC;gBACX,OAAO;YACX,CAAC;YAED,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,MAAM,GAAc,EAAE,CAAC;YAC3B,IAAI,UAAU,GAAc,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YAErD,UAAU,CAAC,OAAO,CAAE,GAAG,CAAC,EAAE;gBACtB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC9C,CAAC;qBACI,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACrC,MAAM,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC1D,CAAC;qBACI,CAAC;oBACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3B,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;YAExC,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"}
@@ -0,0 +1,6 @@
1
+ import { Transform } from "stream";
2
+ export interface MarcInRDFOptions {
3
+ parse?: "jsonld" | "turtle" | "notation3";
4
+ }
5
+ export declare function transform(opts?: MarcInRDFOptions): Promise<Transform>;
6
+ //# sourceMappingURL=marcinrdf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marcinrdf.d.ts","sourceRoot":"","sources":["../../src/transform/marcinrdf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAKnC,MAAM,WAAW,gBAAgB;IAC7B,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;CAC7C;AAID,wBAAsB,SAAS,CAAC,IAAI,GAAE,gBAAqB,GAAI,OAAO,CAAC,SAAS,CAAC,CAQhF"}
@@ -0,0 +1,78 @@
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
+ // An experimental processor that does a literal translation of
6
+ // alephseq into something JSON-LD-ish
7
+ export async function transform(opts = {}) {
8
+ return new Transform({
9
+ objectMode: true,
10
+ async transform(data, _encoding, callback) {
11
+ const rdfData = await makeRdfData(data, opts);
12
+ callback(null, rdfData);
13
+ }
14
+ });
15
+ }
16
+ async function makeRdfData(data, opts = {}) {
17
+ const parse = opts.parse ? opts.parse : "jsonld";
18
+ // First take a guess if we already have a Record
19
+ // Stupid guess but sufficient for now
20
+ if (isRecord(data)) {
21
+ return data;
22
+ }
23
+ const id = marcmap(data['record'], "001", {})[0];
24
+ const clone = structuredClone(data);
25
+ // Parse the input data as RDF
26
+ clone['@context'] = {
27
+ "@vocab": "http://example.org/ns#",
28
+ "ex": "http://example.org/ns#",
29
+ "record": {
30
+ "@id": "ex:record",
31
+ "@container": "@list"
32
+ }
33
+ };
34
+ clone['@id'] = `http://example.org/record/${id}`;
35
+ clone['@type'] = 'ex:Record';
36
+ if (parse === "turtle") {
37
+ return await parseString(JSON.stringify(clone), "data.jsonld");
38
+ }
39
+ else if (parse === "notation3") {
40
+ const record = {
41
+ "text": serializeRecord(clone)
42
+ };
43
+ return record;
44
+ }
45
+ else {
46
+ return clone;
47
+ }
48
+ }
49
+ function serializeRecord(record) {
50
+ const id = record['@id'];
51
+ const ex = "http://example.org/ns#";
52
+ let result = `<${id}> a <${ex}Record>.\n`;
53
+ const fields = record['record'];
54
+ for (let i = 0; i < fields.length; i++) {
55
+ const tag = fields[i][0];
56
+ const rest = fields[i].splice(1);
57
+ result += `<${id}> <${ex}f${tag}> ${serializeArray(rest)}.\n`;
58
+ }
59
+ return result.trim();
60
+ }
61
+ function serializeArray(array) {
62
+ const result = "(" + array.map(x => {
63
+ if (Array.isArray(x)) {
64
+ return serializeArray(x);
65
+ }
66
+ else {
67
+ return serializeValue(x);
68
+ }
69
+ }).join(" ") + ")";
70
+ return result;
71
+ }
72
+ function serializeValue(value) {
73
+ const result = "\"" +
74
+ value.replaceAll(/\\/g, "\\\\").replaceAll(/"/g, "\\\"") +
75
+ "\"";
76
+ return result;
77
+ }
78
+ //# sourceMappingURL=marcinrdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marcinrdf.js","sourceRoot":"","sources":["../../src/transform/marcinrdf.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "marcattacks",
3
- "version": "2.4.1",
3
+ "version": "2.5.0",
4
4
  "description": "A powerful streaming MARC21 to RDF converter with JSONata transformation and S3 support.",
5
5
  "keywords": [
6
6
  "marc21",