@natlibfi/marc-record-validators-melinda 13.0.2 → 13.0.3-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.
Files changed (99) hide show
  1. package/dist/cyrillux-usemarcon-replacement.js +2 -3
  2. package/dist/cyrillux-usemarcon-replacement.js.map +2 -2
  3. package/dist/cyrillux.js +4 -5
  4. package/dist/cyrillux.js.map +2 -2
  5. package/dist/disambiguateSeriesStatements.js +1 -3
  6. package/dist/disambiguateSeriesStatements.js.map +2 -2
  7. package/dist/drop-terms.js +1 -2
  8. package/dist/drop-terms.js.map +2 -2
  9. package/dist/field-008-18-34-character-groups.js +1 -2
  10. package/dist/field-008-18-34-character-groups.js.map +2 -2
  11. package/dist/field-505-separators.js +1 -2
  12. package/dist/field-505-separators.js.map +2 -2
  13. package/dist/field-521-fix.js +1 -2
  14. package/dist/field-521-fix.js.map +2 -2
  15. package/dist/fix-33X.js +1 -2
  16. package/dist/fix-33X.js.map +2 -2
  17. package/dist/fix-language-codes.js +1 -2
  18. package/dist/fix-language-codes.js.map +2 -2
  19. package/dist/fix-sami-041.js +2 -3
  20. package/dist/fix-sami-041.js.map +2 -2
  21. package/dist/fixRelatorTerms.js +1 -2
  22. package/dist/fixRelatorTerms.js.map +2 -2
  23. package/dist/identical-fields.js +2 -2
  24. package/dist/identical-fields.js.map +2 -2
  25. package/dist/mergeRelatorTermFields.js +3 -4
  26. package/dist/mergeRelatorTermFields.js.map +2 -2
  27. package/dist/modernize-502.js +1 -2
  28. package/dist/modernize-502.js.map +2 -2
  29. package/dist/multiple-subfield-0.js.map +2 -2
  30. package/dist/normalize-dashes.js +1 -2
  31. package/dist/normalize-dashes.js.map +2 -2
  32. package/dist/normalize-identifiers.js +1 -2
  33. package/dist/normalize-identifiers.js.map +2 -2
  34. package/dist/normalize-qualifying-information.js +1 -2
  35. package/dist/normalize-qualifying-information.js.map +2 -2
  36. package/dist/normalize-utf8-diacritics.js +1 -2
  37. package/dist/normalize-utf8-diacritics.js.map +2 -2
  38. package/dist/normalizeFieldForComparison.js +1 -2
  39. package/dist/normalizeFieldForComparison.js.map +2 -2
  40. package/dist/punctuation/index.js +3 -8
  41. package/dist/punctuation/index.js.map +2 -2
  42. package/dist/punctuation2.js +1 -2
  43. package/dist/punctuation2.js.map +2 -2
  44. package/dist/remove-041-zxx.js +1 -2
  45. package/dist/remove-041-zxx.js.map +2 -2
  46. package/dist/sanitize-vocabulary-source-codes.js +1 -2
  47. package/dist/sanitize-vocabulary-source-codes.js.map +2 -2
  48. package/dist/sortFields.js +1 -2
  49. package/dist/sortFields.js.map +2 -2
  50. package/dist/sortRelatorTerms.js +1 -2
  51. package/dist/sortRelatorTerms.js.map +2 -2
  52. package/dist/sortSubfields.js +1 -2
  53. package/dist/sortSubfields.js.map +2 -2
  54. package/dist/subfieldValueNormalizations.js +1 -2
  55. package/dist/subfieldValueNormalizations.js.map +2 -2
  56. package/dist/sync-007-and-300.js +1 -2
  57. package/dist/sync-007-and-300.js.map +2 -2
  58. package/dist/sync-language.js +2 -3
  59. package/dist/sync-language.js.map +2 -2
  60. package/dist/translate-terms.js +1 -2
  61. package/dist/translate-terms.js.map +2 -2
  62. package/package.json +2 -2
  63. package/src/cyrillux-usemarcon-replacement.js +3 -3
  64. package/src/cyrillux.js +5 -5
  65. package/src/disambiguateSeriesStatements.js +2 -3
  66. package/src/drop-terms.js +2 -2
  67. package/src/field-008-18-34-character-groups.js +2 -2
  68. package/src/field-505-separators.js +2 -2
  69. package/src/field-521-fix.js +2 -2
  70. package/src/fix-33X.js +2 -2
  71. package/src/fix-language-codes.js +2 -2
  72. package/src/fix-sami-041.js +3 -3
  73. package/src/fixRelatorTerms.js +2 -2
  74. package/src/identical-fields.js +2 -3
  75. package/src/mergeRelatorTermFields.js +4 -4
  76. package/src/modernize-502.js +2 -2
  77. package/src/multiple-subfield-0.js +0 -1
  78. package/src/normalize-dashes.js +2 -2
  79. package/src/normalize-identifiers.js +2 -2
  80. package/src/normalize-qualifying-information.js +1 -2
  81. package/src/normalize-utf8-diacritics.js +2 -2
  82. package/src/normalizeFieldForComparison.js +3 -3
  83. package/src/punctuation/index.js +4 -9
  84. package/src/punctuation2.js +2 -2
  85. package/src/remove-041-zxx.js +2 -2
  86. package/src/sanitize-vocabulary-source-codes.js +2 -2
  87. package/src/sortFields.js +2 -2
  88. package/src/sortRelatorTerms.js +2 -2
  89. package/src/sortSubfields.js +2 -2
  90. package/src/subfieldValueNormalizations.js +2 -2
  91. package/src/sync-007-and-300.js +2 -2
  92. package/src/sync-language.js +2 -3
  93. package/src/translate-terms.js +1 -3
  94. package/dist/sort-tags.js +0 -41
  95. package/dist/sort-tags.js.map +0 -7
  96. package/dist/sort-tags.test.js +0 -261
  97. package/dist/sort-tags.test.js.map +0 -7
  98. package/src/sort-tags.js +0 -48
  99. package/src/sort-tags.test.js +0 -265
@@ -1,261 +0,0 @@
1
- import assert from "node:assert";
2
- import { MarcRecord } from "@natlibfi/marc-record";
3
- import validatorFactory from "./sort-tags.js";
4
- import { describe, it } from "node:test";
5
- describe("sort-tags", () => {
6
- it("Creates a validator", async () => {
7
- const validator = await validatorFactory();
8
- assert.equal(typeof validator, "object");
9
- assert.equal(typeof validator.description, "string");
10
- assert.equal(typeof validator.validate, "function");
11
- });
12
- describe("#validate", () => {
13
- it("Finds the record valid", async () => {
14
- const validator = await validatorFactory();
15
- const record = new MarcRecord({
16
- fields: [
17
- {
18
- tag: "001",
19
- value: "100"
20
- },
21
- {
22
- tag: "008",
23
- value: "bar"
24
- },
25
- {
26
- tag: "100",
27
- ind1: " ",
28
- ind2: " ",
29
- subfields: [
30
- {
31
- code: "a",
32
- value: "Foo Bar"
33
- }
34
- ]
35
- },
36
- {
37
- tag: "245",
38
- ind1: " ",
39
- ind2: " ",
40
- subfields: [
41
- {
42
- code: "a",
43
- value: "Fubar"
44
- }
45
- ]
46
- }
47
- ]
48
- });
49
- const result = await validator.validate(record);
50
- assert.deepEqual(result, { valid: true, messages: [] });
51
- });
52
- it("Finds the record invalid", async () => {
53
- const validator = await validatorFactory();
54
- const record = new MarcRecord({
55
- fields: [
56
- {
57
- tag: "008",
58
- value: "bar"
59
- },
60
- {
61
- tag: "001",
62
- value: "100"
63
- },
64
- {
65
- tag: "245",
66
- ind1: " ",
67
- ind2: " ",
68
- subfields: [
69
- {
70
- code: "a",
71
- value: "Fubar"
72
- }
73
- ]
74
- },
75
- {
76
- tag: "100",
77
- ind1: " ",
78
- ind2: " ",
79
- subfields: [
80
- {
81
- code: "a",
82
- value: "Foo Bar"
83
- }
84
- ]
85
- }
86
- ]
87
- });
88
- const result = await validator.validate(record);
89
- assert.deepEqual(result, { valid: false, messages: ["Fields are in incorrect order"] });
90
- });
91
- });
92
- describe("#fix", () => {
93
- it("Sorts with exclusion", async () => {
94
- const validator = await validatorFactory([/^5..$/u, /^7..$/u]);
95
- const record = new MarcRecord({
96
- fields: [
97
- {
98
- tag: "001",
99
- value: "100"
100
- },
101
- {
102
- tag: "530",
103
- value: "bar"
104
- },
105
- {
106
- tag: "300",
107
- value: "bar"
108
- },
109
- {
110
- tag: "CCC",
111
- ind1: " ",
112
- ind2: " ",
113
- subfields: [
114
- {
115
- code: "a",
116
- value: "Fubar"
117
- }
118
- ]
119
- },
120
- {
121
- tag: "520",
122
- ind1: " ",
123
- ind2: " ",
124
- subfields: [
125
- {
126
- code: "a",
127
- value: "asdassdaasdsadsasad"
128
- }
129
- ]
130
- },
131
- {
132
- tag: "AAA",
133
- ind1: " ",
134
- ind2: " ",
135
- subfields: [
136
- {
137
- code: "a",
138
- value: "qweweqewqqweweqwq"
139
- }
140
- ]
141
- },
142
- {
143
- tag: "700",
144
- ind1: " ",
145
- ind2: " ",
146
- subfields: [
147
- {
148
- code: "a",
149
- value: "Bar Foo"
150
- }
151
- ]
152
- },
153
- {
154
- tag: "711",
155
- ind1: " ",
156
- ind2: " ",
157
- subfields: [
158
- {
159
- code: "a",
160
- value: "Foo"
161
- }
162
- ]
163
- },
164
- {
165
- tag: "710",
166
- ind1: " ",
167
- ind2: " ",
168
- subfields: [
169
- {
170
- code: "w",
171
- value: "Bar"
172
- }
173
- ]
174
- }
175
- ]
176
- });
177
- await validator.fix(record);
178
- assert.deepEqual(record.fields, [
179
- {
180
- tag: "001",
181
- value: "100"
182
- },
183
- {
184
- tag: "300",
185
- value: "bar"
186
- },
187
- {
188
- tag: "530",
189
- value: "bar"
190
- },
191
- {
192
- tag: "520",
193
- ind1: " ",
194
- ind2: " ",
195
- subfields: [
196
- {
197
- code: "a",
198
- value: "asdassdaasdsadsasad"
199
- }
200
- ]
201
- },
202
- {
203
- tag: "700",
204
- ind1: " ",
205
- ind2: " ",
206
- subfields: [
207
- {
208
- code: "a",
209
- value: "Bar Foo"
210
- }
211
- ]
212
- },
213
- {
214
- tag: "711",
215
- ind1: " ",
216
- ind2: " ",
217
- subfields: [
218
- {
219
- code: "a",
220
- value: "Foo"
221
- }
222
- ]
223
- },
224
- {
225
- tag: "710",
226
- ind1: " ",
227
- ind2: " ",
228
- subfields: [
229
- {
230
- code: "w",
231
- value: "Bar"
232
- }
233
- ]
234
- },
235
- {
236
- tag: "AAA",
237
- ind1: " ",
238
- ind2: " ",
239
- subfields: [
240
- {
241
- code: "a",
242
- value: "qweweqewqqweweqwq"
243
- }
244
- ]
245
- },
246
- {
247
- tag: "CCC",
248
- ind1: " ",
249
- ind2: " ",
250
- subfields: [
251
- {
252
- code: "a",
253
- value: "Fubar"
254
- }
255
- ]
256
- }
257
- ]);
258
- });
259
- });
260
- });
261
- //# sourceMappingURL=sort-tags.test.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/sort-tags.test.js"],
4
- "sourcesContent": ["import assert from 'node:assert';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from './sort-tags.js';\nimport {describe, it} from 'node:test';\n\ndescribe('sort-tags', () => {\n it('Creates a validator', async () => {\n const validator = await validatorFactory();\n\n assert.equal(typeof validator, 'object');\n assert.equal(typeof validator.description, 'string');\n assert.equal(typeof validator.validate, 'function');\n });\n\n describe('#validate', () => {\n it('Finds the record valid', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [\n {\n tag: '001',\n value: '100'\n },\n {\n tag: '008',\n value: 'bar'\n },\n {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Foo Bar'\n }\n ]\n },\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Fubar'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n\n assert.deepEqual(result, {valid: true, messages: []});\n });\n it('Finds the record invalid', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [\n {\n tag: '008',\n value: 'bar'\n },\n {\n tag: '001',\n value: '100'\n },\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Fubar'\n }\n ]\n },\n {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Foo Bar'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n assert.deepEqual(result, {valid: false, messages: ['Fields are in incorrect order']});\n });\n });\n\n describe('#fix', () => {\n it('Sorts with exclusion', async () => {\n const validator = await validatorFactory([/^5..$/u, /^7..$/u]);\n const record = new MarcRecord({\n fields: [\n {\n tag: '001',\n value: '100'\n },\n {\n tag: '530',\n value: 'bar'\n },\n {\n tag: '300',\n value: 'bar'\n },\n {\n tag: 'CCC',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Fubar'\n }\n ]\n },\n {\n tag: '520',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'asdassdaasdsadsasad'\n }\n ]\n },\n {\n tag: 'AAA',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'qweweqewqqweweqwq'\n }\n ]\n },\n {\n tag: '700',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Bar Foo'\n }\n ]\n },\n {\n tag: '711',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Foo'\n }\n ]\n },\n {\n tag: '710',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'w',\n value: 'Bar'\n }\n ]\n }\n ]\n });\n await validator.fix(record);\n assert.deepEqual(record.fields, [\n {\n tag: '001',\n value: '100'\n },\n {\n tag: '300',\n value: 'bar'\n },\n {\n tag: '530',\n value: 'bar'\n },\n {\n tag: '520',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'asdassdaasdsadsasad'\n }\n ]\n },\n {\n tag: '700',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Bar Foo'\n }\n ]\n },\n {\n tag: '711',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Foo'\n }\n ]\n },\n {\n tag: '710',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'w',\n value: 'Bar'\n }\n ]\n },\n {\n tag: 'AAA',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'qweweqewqqweweqwq'\n }\n ]\n },\n {\n tag: 'CCC',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Fubar'\n }\n ]\n }\n ]);\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
package/src/sort-tags.js DELETED
@@ -1,48 +0,0 @@
1
- import {MarcRecord} from '@natlibfi/marc-record';
2
-
3
- export default function (tagPattern) {
4
- return {
5
- description:
6
- 'Handles field ordering',
7
- validate,
8
- fix: async record => ({
9
- fix: await sort(record, tagPattern)
10
- })
11
- };
12
-
13
- function validate(record, tagPattern) {
14
- return MarcRecord.isEqual(record.fields, sort(record.fields, tagPattern)) ? {valid: true, messages: []} : {valid: false, messages: ['Fields are in incorrect order']};
15
- }
16
-
17
- function sort(record, tagPattern) {
18
- if (tagPattern) {
19
- return sortPatternFields(record, tagPattern);
20
- }
21
-
22
- return sortFields(record);
23
- }
24
- }
25
-
26
- function sortPatternFields(record, tagPattern) {
27
- const matchingTags = record.fields.map(field => tagPattern.some(pattern => pattern.test(field.tag)) ? field : null).filter(tag => tag);
28
- const sortedArray = sortFields(record.fields);
29
- const fixedArray = sortedArray.filter(field => !tagPattern.some(pattern => pattern.test(field.tag)));
30
- fixedArray.splice(index(sortedArray, tagPattern), 0, ...matchingTags);
31
- record.fields = fixedArray;
32
- }
33
-
34
- function sortFields(fields) {
35
- return [...fields].sort((a, b) => {
36
- if (a.tag > b.tag) {
37
- return 1;
38
- }
39
- if (b.tag > a.tag) {
40
- return -1;
41
- }
42
- return 0;
43
- });
44
- }
45
-
46
- function index(fields, tagPattern) {
47
- return fields.findIndex(field => tagPattern.some(pattern => pattern.test(field.tag)));
48
- }
@@ -1,265 +0,0 @@
1
- import assert from 'node:assert';
2
- import {MarcRecord} from '@natlibfi/marc-record';
3
- import validatorFactory from './sort-tags.js';
4
- import {describe, it} from 'node:test';
5
-
6
- describe('sort-tags', () => {
7
- it('Creates a validator', async () => {
8
- const validator = await validatorFactory();
9
-
10
- assert.equal(typeof validator, 'object');
11
- assert.equal(typeof validator.description, 'string');
12
- assert.equal(typeof validator.validate, 'function');
13
- });
14
-
15
- describe('#validate', () => {
16
- it('Finds the record valid', async () => {
17
- const validator = await validatorFactory();
18
- const record = new MarcRecord({
19
- fields: [
20
- {
21
- tag: '001',
22
- value: '100'
23
- },
24
- {
25
- tag: '008',
26
- value: 'bar'
27
- },
28
- {
29
- tag: '100',
30
- ind1: ' ',
31
- ind2: ' ',
32
- subfields: [
33
- {
34
- code: 'a',
35
- value: 'Foo Bar'
36
- }
37
- ]
38
- },
39
- {
40
- tag: '245',
41
- ind1: ' ',
42
- ind2: ' ',
43
- subfields: [
44
- {
45
- code: 'a',
46
- value: 'Fubar'
47
- }
48
- ]
49
- }
50
- ]
51
- });
52
- const result = await validator.validate(record);
53
-
54
- assert.deepEqual(result, {valid: true, messages: []});
55
- });
56
- it('Finds the record invalid', async () => {
57
- const validator = await validatorFactory();
58
- const record = new MarcRecord({
59
- fields: [
60
- {
61
- tag: '008',
62
- value: 'bar'
63
- },
64
- {
65
- tag: '001',
66
- value: '100'
67
- },
68
- {
69
- tag: '245',
70
- ind1: ' ',
71
- ind2: ' ',
72
- subfields: [
73
- {
74
- code: 'a',
75
- value: 'Fubar'
76
- }
77
- ]
78
- },
79
- {
80
- tag: '100',
81
- ind1: ' ',
82
- ind2: ' ',
83
- subfields: [
84
- {
85
- code: 'a',
86
- value: 'Foo Bar'
87
- }
88
- ]
89
- }
90
- ]
91
- });
92
- const result = await validator.validate(record);
93
- assert.deepEqual(result, {valid: false, messages: ['Fields are in incorrect order']});
94
- });
95
- });
96
-
97
- describe('#fix', () => {
98
- it('Sorts with exclusion', async () => {
99
- const validator = await validatorFactory([/^5..$/u, /^7..$/u]);
100
- const record = new MarcRecord({
101
- fields: [
102
- {
103
- tag: '001',
104
- value: '100'
105
- },
106
- {
107
- tag: '530',
108
- value: 'bar'
109
- },
110
- {
111
- tag: '300',
112
- value: 'bar'
113
- },
114
- {
115
- tag: 'CCC',
116
- ind1: ' ',
117
- ind2: ' ',
118
- subfields: [
119
- {
120
- code: 'a',
121
- value: 'Fubar'
122
- }
123
- ]
124
- },
125
- {
126
- tag: '520',
127
- ind1: ' ',
128
- ind2: ' ',
129
- subfields: [
130
- {
131
- code: 'a',
132
- value: 'asdassdaasdsadsasad'
133
- }
134
- ]
135
- },
136
- {
137
- tag: 'AAA',
138
- ind1: ' ',
139
- ind2: ' ',
140
- subfields: [
141
- {
142
- code: 'a',
143
- value: 'qweweqewqqweweqwq'
144
- }
145
- ]
146
- },
147
- {
148
- tag: '700',
149
- ind1: ' ',
150
- ind2: ' ',
151
- subfields: [
152
- {
153
- code: 'a',
154
- value: 'Bar Foo'
155
- }
156
- ]
157
- },
158
- {
159
- tag: '711',
160
- ind1: ' ',
161
- ind2: ' ',
162
- subfields: [
163
- {
164
- code: 'a',
165
- value: 'Foo'
166
- }
167
- ]
168
- },
169
- {
170
- tag: '710',
171
- ind1: ' ',
172
- ind2: ' ',
173
- subfields: [
174
- {
175
- code: 'w',
176
- value: 'Bar'
177
- }
178
- ]
179
- }
180
- ]
181
- });
182
- await validator.fix(record);
183
- assert.deepEqual(record.fields, [
184
- {
185
- tag: '001',
186
- value: '100'
187
- },
188
- {
189
- tag: '300',
190
- value: 'bar'
191
- },
192
- {
193
- tag: '530',
194
- value: 'bar'
195
- },
196
- {
197
- tag: '520',
198
- ind1: ' ',
199
- ind2: ' ',
200
- subfields: [
201
- {
202
- code: 'a',
203
- value: 'asdassdaasdsadsasad'
204
- }
205
- ]
206
- },
207
- {
208
- tag: '700',
209
- ind1: ' ',
210
- ind2: ' ',
211
- subfields: [
212
- {
213
- code: 'a',
214
- value: 'Bar Foo'
215
- }
216
- ]
217
- },
218
- {
219
- tag: '711',
220
- ind1: ' ',
221
- ind2: ' ',
222
- subfields: [
223
- {
224
- code: 'a',
225
- value: 'Foo'
226
- }
227
- ]
228
- },
229
- {
230
- tag: '710',
231
- ind1: ' ',
232
- ind2: ' ',
233
- subfields: [
234
- {
235
- code: 'w',
236
- value: 'Bar'
237
- }
238
- ]
239
- },
240
- {
241
- tag: 'AAA',
242
- ind1: ' ',
243
- ind2: ' ',
244
- subfields: [
245
- {
246
- code: 'a',
247
- value: 'qweweqewqqweweqwq'
248
- }
249
- ]
250
- },
251
- {
252
- tag: 'CCC',
253
- ind1: ' ',
254
- ind2: ' ',
255
- subfields: [
256
- {
257
- code: 'a',
258
- value: 'Fubar'
259
- }
260
- ]
261
- }
262
- ]);
263
- });
264
- });
265
- });