@natlibfi/marc-record-validators-melinda 9.0.9 → 9.0.10-alpha.1

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/dist/urn.js CHANGED
@@ -33,7 +33,7 @@ function _default(isLegalDeposit = false) {
33
33
  tag: '856',
34
34
  ind1: '4',
35
35
  ind2: '0',
36
- subfields: [await createURNSubfield(record), ...ldSubfields]
36
+ subfields: [...(await createURNSubfield(record)), ...ldSubfields]
37
37
  });
38
38
  } else if (isLegalDeposit) {
39
39
  // eslint-disable-line functional/no-conditional-statement
@@ -58,10 +58,21 @@ function _default(isLegalDeposit = false) {
58
58
 
59
59
  return acc;
60
60
  }, undefined);
61
- return {
61
+
62
+ if (isbn) {
63
+ return [{
64
+ code: 'u',
65
+ value: await createURN(isbn)
66
+ }];
67
+ }
68
+
69
+ return [{
62
70
  code: 'u',
63
- value: await createURN(isbn)
64
- };
71
+ value: await createURN(false)
72
+ }, {
73
+ code: '9',
74
+ value: 'MELINDA<TEMP>'
75
+ }];
65
76
 
66
77
  async function createURN(isbn = false) {
67
78
  if (isbn) {
package/dist/urn.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"urn.js","names":["URN_GENERATOR_URL","isLegalDeposit","hasURN","f","tag","subfields","some","code","value","test","description","validate","fix","record","f856sUrn","fields","filter","ldSubfields","createLDSubfields","length","insertField","ind1","ind2","createURNSubfield","forEach","ldsf","sf","push","rec","isbn","reduce","acc","a","find","undefined","createURN","response","body","text","valid"],"sources":["../src/urn.js"],"sourcesContent":["import fetch from 'node-fetch';\n\nconst URN_GENERATOR_URL = 'http://generator.urn.fi/cgi-bin/urn_generator.cgi?type=nbn';\n\nexport default function (isLegalDeposit = false) {\n const hasURN = f => f.tag === '856' && f.subfields.some(({code, value}) => code === 'u' && (/urn.fi/u).test(value));\n\n return {\n description: 'Adds URN for record, to 856-field (if not existing)',\n validate,\n fix\n };\n\n async function fix(record) {\n const f856sUrn = record.fields.filter(hasURN);\n const ldSubfields = isLegalDeposit ? createLDSubfields() : [];\n\n if (f856sUrn.length === 0) { // eslint-disable-line functional/no-conditional-statement\n record.insertField({\n tag: '856',\n ind1: '4',\n ind2: '0',\n subfields: [await createURNSubfield(record), ...ldSubfields]\n });\n } else if (isLegalDeposit) { // eslint-disable-line functional/no-conditional-statement\n f856sUrn.forEach(f => {\n ldSubfields.forEach(ldsf => {\n if (!f.subfields.some(sf => sf.code === ldsf.code && sf.value === ldsf.value)) { // eslint-disable-line functional/no-conditional-statement\n f.subfields.push(ldsf); // eslint-disable-line functional/immutable-data\n }\n });\n });\n }\n\n return true;\n\n async function createURNSubfield(rec) {\n const isbn = rec.fields.reduce((acc, f) => {\n if (f.tag === '020') {\n const a = f.subfields.find(sf => sf.code === 'a');\n return a ? a.value : undefined;\n }\n\n return acc;\n }, undefined);\n\n return {\n code: 'u',\n value: await createURN(isbn)\n };\n\n async function createURN(isbn = false) {\n if (isbn) {\n return `http://urn.fi/URN:ISBN:${isbn}`;\n }\n\n const response = await fetch(URN_GENERATOR_URL);\n const body = await response.text();\n return `http://urn.fi/${body}`;\n }\n }\n\n function createLDSubfields() {\n return [\n {\n code: 'z',\n value: 'Käytettävissä vapaakappalekirjastoissa'\n },\n {\n code: '5',\n value: 'FI-Vapaa'\n }\n ];\n }\n }\n\n function validate(record) {\n return {valid: record.fields.some(hasURN) && !isLegalDeposit};\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"urn.js","names":["URN_GENERATOR_URL","isLegalDeposit","hasURN","f","tag","subfields","some","code","value","test","description","validate","fix","record","f856sUrn","fields","filter","ldSubfields","createLDSubfields","length","insertField","ind1","ind2","createURNSubfield","forEach","ldsf","sf","push","rec","isbn","reduce","acc","a","find","undefined","createURN","response","body","text","valid"],"sources":["../src/urn.js"],"sourcesContent":["import fetch from 'node-fetch';\n\nconst URN_GENERATOR_URL = 'http://generator.urn.fi/cgi-bin/urn_generator.cgi?type=nbn';\n\nexport default function (isLegalDeposit = false) {\n const hasURN = f => f.tag === '856' && f.subfields.some(({code, value}) => code === 'u' && (/urn.fi/u).test(value));\n\n return {\n description: 'Adds URN for record, to 856-field (if not existing)',\n validate,\n fix\n };\n\n async function fix(record) {\n const f856sUrn = record.fields.filter(hasURN);\n const ldSubfields = isLegalDeposit ? createLDSubfields() : [];\n\n if (f856sUrn.length === 0) { // eslint-disable-line functional/no-conditional-statement\n record.insertField({\n tag: '856',\n ind1: '4',\n ind2: '0',\n subfields: [...await createURNSubfield(record), ...ldSubfields]\n });\n } else if (isLegalDeposit) { // eslint-disable-line functional/no-conditional-statement\n f856sUrn.forEach(f => {\n ldSubfields.forEach(ldsf => {\n if (!f.subfields.some(sf => sf.code === ldsf.code && sf.value === ldsf.value)) { // eslint-disable-line functional/no-conditional-statement\n f.subfields.push(ldsf); // eslint-disable-line functional/immutable-data\n }\n });\n });\n }\n\n return true;\n\n async function createURNSubfield(rec) {\n const isbn = rec.fields.reduce((acc, f) => {\n if (f.tag === '020') {\n const a = f.subfields.find(sf => sf.code === 'a');\n return a ? a.value : undefined;\n }\n\n return acc;\n }, undefined);\n\n if (isbn) {\n return [{code: 'u', value: await createURN(isbn)}];\n }\n\n return [\n {code: 'u', value: await createURN(false)},\n {code: '9', value: 'MELINDA<TEMP>'}\n ];\n\n async function createURN(isbn = false) {\n if (isbn) {\n return `http://urn.fi/URN:ISBN:${isbn}`;\n }\n\n const response = await fetch(URN_GENERATOR_URL);\n const body = await response.text();\n return `http://urn.fi/${body}`;\n }\n }\n\n function createLDSubfields() {\n return [\n {\n code: 'z',\n value: 'Käytettävissä vapaakappalekirjastoissa'\n },\n {\n code: '5',\n value: 'FI-Vapaa'\n }\n ];\n }\n }\n\n function validate(record) {\n return {valid: record.fields.some(hasURN) && !isLegalDeposit};\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -14,7 +14,7 @@
14
14
  "url": "git@github.com:natlibfi/marc-record-validators-melinda.git"
15
15
  },
16
16
  "license": "MIT",
17
- "version": "9.0.9",
17
+ "version": "9.0.10-alpha.1",
18
18
  "main": "./dist/index.js",
19
19
  "publishConfig": {
20
20
  "access": "public"
@@ -26,10 +26,12 @@
26
26
  "prepare": "npm run build",
27
27
  "lint": "eslint src",
28
28
  "lint:dev": "eslint --fix src",
29
- "test:base": "cross-env NODE_ENV=test nyc -x test-fixtures -x src/**/*.spec.js mocha --require @babel/register",
30
- "test": "npm run lint && npm run test:base -- src/**/*.spec.js && npm run coverage",
31
- "test:dev": "npm run lint:dev && npm run test:base -- src/**/*.spec.js && npm run coverage",
32
- "coverage": "nyc check-coverage --per-file",
29
+ "test:base": "cross-env NODE_ENV=test mocha --require @babel/register --reporter-option maxDiffSize=15000 --recursive --extension .spec.js src",
30
+ "test": "npm run lint && npm run test:base",
31
+ "test:dev": "npm run lint:dev && npm run coverage",
32
+ "coverage": "npm run cover:unit && npm run cover:report",
33
+ "cover:unit": "nyc --silent npm run test:base",
34
+ "cover:report": "nyc report",
33
35
  "build": "babel src --source-maps --copy-files --delete-dir-on-start --out-dir=dist"
34
36
  },
35
37
  "dependencies": {
@@ -93,16 +95,16 @@
93
95
  }
94
96
  },
95
97
  "nyc": {
98
+ "exclude": [
99
+ "src/*.spec.js",
100
+ "src/**/*.spec.js"
101
+ ],
96
102
  "reporter": [
97
- "lcov",
98
- "html"
103
+ "text"
99
104
  ],
100
105
  "require": [
101
106
  "@babel/register"
102
107
  ],
103
- "exclude": [
104
- "src/punctuation/*.js"
105
- ],
106
108
  "sourceMap": false,
107
109
  "instrument": false,
108
110
  "lines": 80,
package/src/urn.js CHANGED
@@ -20,7 +20,7 @@ export default function (isLegalDeposit = false) {
20
20
  tag: '856',
21
21
  ind1: '4',
22
22
  ind2: '0',
23
- subfields: [await createURNSubfield(record), ...ldSubfields]
23
+ subfields: [...await createURNSubfield(record), ...ldSubfields]
24
24
  });
25
25
  } else if (isLegalDeposit) { // eslint-disable-line functional/no-conditional-statement
26
26
  f856sUrn.forEach(f => {
@@ -44,10 +44,14 @@ export default function (isLegalDeposit = false) {
44
44
  return acc;
45
45
  }, undefined);
46
46
 
47
- return {
48
- code: 'u',
49
- value: await createURN(isbn)
50
- };
47
+ if (isbn) {
48
+ return [{code: 'u', value: await createURN(isbn)}];
49
+ }
50
+
51
+ return [
52
+ {code: 'u', value: await createURN(false)},
53
+ {code: '9', value: 'MELINDA<TEMP>'}
54
+ ];
51
55
 
52
56
  async function createURN(isbn = false) {
53
57
  if (isbn) {