@internetarchive/metadata-service 0.1.0 → 0.1.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/.editorconfig +29 -29
- package/.github/workflows/ci.yml +27 -26
- package/LICENSE +661 -661
- package/README.md +64 -64
- package/demo/index.html +27 -27
- package/dist/demo/app-root.d.ts +11 -11
- package/dist/demo/app-root.js +41 -41
- package/dist/index.d.ts +18 -18
- package/dist/index.js +16 -16
- package/dist/src/backend/default-metadata-backend.d.ts +27 -27
- package/dist/src/backend/default-metadata-backend.js +100 -100
- package/dist/src/backend/metadata-backend-interface.d.ts +20 -20
- package/dist/src/backend/metadata-backend-interface.js +1 -1
- package/dist/src/metadata-service-error.d.ts +11 -11
- package/dist/src/metadata-service-error.js +17 -17
- package/dist/src/metadata-service-interface.d.ts +44 -44
- package/dist/src/metadata-service-interface.js +1 -1
- package/dist/src/metadata-service.d.ts +18 -18
- package/dist/src/metadata-service.js +42 -42
- package/dist/src/models/file.d.ts +29 -29
- package/dist/src/models/file.js +94 -94
- package/dist/src/models/metadata-fields/field-types/boolean.d.ts +5 -5
- package/dist/src/models/metadata-fields/field-types/boolean.js +7 -7
- package/dist/src/models/metadata-fields/field-types/byte.d.ts +13 -13
- package/dist/src/models/metadata-fields/field-types/byte.js +15 -15
- package/dist/src/models/metadata-fields/field-types/date.d.ts +5 -5
- package/dist/src/models/metadata-fields/field-types/date.js +7 -7
- package/dist/src/models/metadata-fields/field-types/duration.d.ts +14 -14
- package/dist/src/models/metadata-fields/field-types/duration.js +16 -16
- package/dist/src/models/metadata-fields/field-types/list.d.ts +25 -25
- package/dist/src/models/metadata-fields/field-types/list.js +33 -33
- package/dist/src/models/metadata-fields/field-types/mediatype.d.ts +5 -5
- package/dist/src/models/metadata-fields/field-types/mediatype.js +7 -7
- package/dist/src/models/metadata-fields/field-types/number.d.ts +5 -5
- package/dist/src/models/metadata-fields/field-types/number.js +7 -7
- package/dist/src/models/metadata-fields/field-types/page-progression.d.ts +5 -5
- package/dist/src/models/metadata-fields/field-types/page-progression.js +7 -7
- package/dist/src/models/metadata-fields/field-types/string.d.ts +5 -5
- package/dist/src/models/metadata-fields/field-types/string.js +7 -7
- package/dist/src/models/metadata-fields/metadata-field.d.ts +70 -70
- package/dist/src/models/metadata-fields/metadata-field.js +66 -66
- package/dist/src/models/metadata.d.ts +169 -168
- package/dist/src/models/metadata.js +626 -617
- package/dist/src/models/metadata.js.map +1 -1
- package/dist/src/models/review.d.ts +10 -10
- package/dist/src/models/review.js +42 -42
- package/dist/src/models/speech-music-asr-entry.d.ts +10 -10
- package/dist/src/models/speech-music-asr-entry.js +1 -1
- package/dist/src/responses/metadata-response.d.ts +28 -28
- package/dist/src/responses/metadata-response.js +30 -30
- package/dist/test/default-metadata-backend.test.d.ts +1 -1
- package/dist/test/default-metadata-backend.test.js +90 -90
- package/dist/test/metadata-service.test.d.ts +1 -1
- package/dist/test/metadata-service.test.js +98 -98
- package/dist/test/mock-response-generator.d.ts +3 -3
- package/dist/test/mock-response-generator.js +61 -61
- package/dist/test/models/file.test.d.ts +1 -1
- package/dist/test/models/file.test.js +8 -8
- package/dist/test/models/metadata-fields/list-field.test.d.ts +1 -1
- package/dist/test/models/metadata-fields/list-field.test.js +51 -51
- package/dist/test/models/metadata-fields/metadata-field.test.d.ts +1 -1
- package/dist/test/models/metadata-fields/metadata-field.test.js +120 -120
- package/dist/test/models/metadata.test.d.ts +1 -1
- package/dist/test/models/metadata.test.js +9 -9
- package/package.json +77 -77
- package/src/models/metadata.ts +6 -0
- package/tsconfig.json +22 -22
- package/web-test-runner.config.mjs +7 -7
|
@@ -1,121 +1,121 @@
|
|
|
1
|
-
import { expect } from '@open-wc/testing';
|
|
2
|
-
import { MetadataField } from '../../../src/models/metadata-fields/metadata-field';
|
|
3
|
-
describe('Metadata Field', () => {
|
|
4
|
-
it('can be properly instantiated with single value', () => {
|
|
5
|
-
class MockParser {
|
|
6
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7
|
-
parseValue(rawValue) {
|
|
8
|
-
return rawValue;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
const parser = new MockParser();
|
|
12
|
-
const metadataField = new MetadataField(parser, 'foo');
|
|
13
|
-
expect(metadataField.rawValue).to.equal('foo');
|
|
14
|
-
expect(metadataField.value).to.equal('foo');
|
|
15
|
-
expect(metadataField.values).to.deep.equal(['foo']);
|
|
16
|
-
});
|
|
17
|
-
it('can be properly instantiated with array value', () => {
|
|
18
|
-
class MockParser {
|
|
19
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
20
|
-
parseValue(rawValue) {
|
|
21
|
-
return rawValue;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
const parser = new MockParser();
|
|
25
|
-
const metadataField = new MetadataField(parser, ['foo', 'bar', 'baz']);
|
|
26
|
-
expect(metadataField.rawValue).to.deep.equal(['foo', 'bar', 'baz']);
|
|
27
|
-
expect(metadataField.value).to.equal('foo');
|
|
28
|
-
expect(metadataField.values).to.deep.equal(['foo', 'bar', 'baz']);
|
|
29
|
-
});
|
|
30
|
-
it('properly casts values to expected parser type for single values', () => {
|
|
31
|
-
class MockFloatParser {
|
|
32
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
33
|
-
parseValue(rawValue) {
|
|
34
|
-
return parseFloat(rawValue);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
const parser = new MockFloatParser();
|
|
38
|
-
const metadataField = new MetadataField(parser, '1.3');
|
|
39
|
-
expect(metadataField.rawValue).to.equal('1.3');
|
|
40
|
-
expect(metadataField.value).to.equal(1.3);
|
|
41
|
-
expect(metadataField.values).to.deep.equal([1.3]);
|
|
42
|
-
});
|
|
43
|
-
it('properly casts values to expected parser type for array values', () => {
|
|
44
|
-
class MockFloatParser {
|
|
45
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
46
|
-
parseValue(rawValue) {
|
|
47
|
-
return parseFloat(rawValue);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
const parser = new MockFloatParser();
|
|
51
|
-
const metadataField = new MetadataField(parser, ['1.3', '2.4', '4.5']);
|
|
52
|
-
expect(metadataField.rawValue).to.deep.equal(['1.3', '2.4', '4.5']);
|
|
53
|
-
expect(metadataField.value).to.equal(1.3);
|
|
54
|
-
expect(metadataField.values).to.deep.equal([1.3, 2.4, 4.5]);
|
|
55
|
-
});
|
|
56
|
-
it('has no value if a raw value was not passed in', () => {
|
|
57
|
-
class MockFloatParser {
|
|
58
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
59
|
-
parseValue(rawValue) {
|
|
60
|
-
return rawValue;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
const parser = new MockFloatParser();
|
|
64
|
-
const metadataField = new MetadataField(parser);
|
|
65
|
-
expect(metadataField.rawValue).to.equal(undefined);
|
|
66
|
-
expect(metadataField.value).to.equal(undefined);
|
|
67
|
-
expect(metadataField.values).to.deep.equal([]);
|
|
68
|
-
});
|
|
69
|
-
it('does not add value to values array if parsed value is undefined', () => {
|
|
70
|
-
class MockFloatParser {
|
|
71
|
-
parseValue(rawValue) {
|
|
72
|
-
return undefined;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
const parser = new MockFloatParser();
|
|
76
|
-
const metadataField = new MetadataField(parser);
|
|
77
|
-
expect(metadataField.rawValue).to.equal(undefined);
|
|
78
|
-
expect(metadataField.value).to.equal(undefined);
|
|
79
|
-
expect(metadataField.values).to.deep.equal([]);
|
|
80
|
-
});
|
|
81
|
-
it('handles falsy `0` return values properly', () => {
|
|
82
|
-
class MockFloatParser {
|
|
83
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
84
|
-
parseValue(rawValue) {
|
|
85
|
-
return rawValue;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
const parser = new MockFloatParser();
|
|
89
|
-
const metadataField = new MetadataField(parser, 0);
|
|
90
|
-
expect(metadataField.rawValue).to.equal(0);
|
|
91
|
-
expect(metadataField.value).to.equal(0);
|
|
92
|
-
expect(metadataField.values).to.deep.equal([0]);
|
|
93
|
-
});
|
|
94
|
-
it('handles falsy `false` return values properly', () => {
|
|
95
|
-
class MockFloatParser {
|
|
96
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
97
|
-
parseValue(rawValue) {
|
|
98
|
-
return rawValue;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
const parser = new MockFloatParser();
|
|
102
|
-
const metadataField = new MetadataField(parser, false);
|
|
103
|
-
expect(metadataField.rawValue).to.equal(false);
|
|
104
|
-
expect(metadataField.value).to.equal(false);
|
|
105
|
-
expect(metadataField.values).to.deep.equal([false]);
|
|
106
|
-
});
|
|
107
|
-
it('handles falsy empty string return values properly', () => {
|
|
108
|
-
class MockFloatParser {
|
|
109
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
110
|
-
parseValue(rawValue) {
|
|
111
|
-
return rawValue;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
const parser = new MockFloatParser();
|
|
115
|
-
const metadataField = new MetadataField(parser, '');
|
|
116
|
-
expect(metadataField.rawValue).to.equal('');
|
|
117
|
-
expect(metadataField.value).to.equal('');
|
|
118
|
-
expect(metadataField.values).to.deep.equal(['']);
|
|
119
|
-
});
|
|
120
|
-
});
|
|
1
|
+
import { expect } from '@open-wc/testing';
|
|
2
|
+
import { MetadataField } from '../../../src/models/metadata-fields/metadata-field';
|
|
3
|
+
describe('Metadata Field', () => {
|
|
4
|
+
it('can be properly instantiated with single value', () => {
|
|
5
|
+
class MockParser {
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7
|
+
parseValue(rawValue) {
|
|
8
|
+
return rawValue;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
const parser = new MockParser();
|
|
12
|
+
const metadataField = new MetadataField(parser, 'foo');
|
|
13
|
+
expect(metadataField.rawValue).to.equal('foo');
|
|
14
|
+
expect(metadataField.value).to.equal('foo');
|
|
15
|
+
expect(metadataField.values).to.deep.equal(['foo']);
|
|
16
|
+
});
|
|
17
|
+
it('can be properly instantiated with array value', () => {
|
|
18
|
+
class MockParser {
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
20
|
+
parseValue(rawValue) {
|
|
21
|
+
return rawValue;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const parser = new MockParser();
|
|
25
|
+
const metadataField = new MetadataField(parser, ['foo', 'bar', 'baz']);
|
|
26
|
+
expect(metadataField.rawValue).to.deep.equal(['foo', 'bar', 'baz']);
|
|
27
|
+
expect(metadataField.value).to.equal('foo');
|
|
28
|
+
expect(metadataField.values).to.deep.equal(['foo', 'bar', 'baz']);
|
|
29
|
+
});
|
|
30
|
+
it('properly casts values to expected parser type for single values', () => {
|
|
31
|
+
class MockFloatParser {
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
33
|
+
parseValue(rawValue) {
|
|
34
|
+
return parseFloat(rawValue);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const parser = new MockFloatParser();
|
|
38
|
+
const metadataField = new MetadataField(parser, '1.3');
|
|
39
|
+
expect(metadataField.rawValue).to.equal('1.3');
|
|
40
|
+
expect(metadataField.value).to.equal(1.3);
|
|
41
|
+
expect(metadataField.values).to.deep.equal([1.3]);
|
|
42
|
+
});
|
|
43
|
+
it('properly casts values to expected parser type for array values', () => {
|
|
44
|
+
class MockFloatParser {
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
46
|
+
parseValue(rawValue) {
|
|
47
|
+
return parseFloat(rawValue);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const parser = new MockFloatParser();
|
|
51
|
+
const metadataField = new MetadataField(parser, ['1.3', '2.4', '4.5']);
|
|
52
|
+
expect(metadataField.rawValue).to.deep.equal(['1.3', '2.4', '4.5']);
|
|
53
|
+
expect(metadataField.value).to.equal(1.3);
|
|
54
|
+
expect(metadataField.values).to.deep.equal([1.3, 2.4, 4.5]);
|
|
55
|
+
});
|
|
56
|
+
it('has no value if a raw value was not passed in', () => {
|
|
57
|
+
class MockFloatParser {
|
|
58
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
59
|
+
parseValue(rawValue) {
|
|
60
|
+
return rawValue;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const parser = new MockFloatParser();
|
|
64
|
+
const metadataField = new MetadataField(parser);
|
|
65
|
+
expect(metadataField.rawValue).to.equal(undefined);
|
|
66
|
+
expect(metadataField.value).to.equal(undefined);
|
|
67
|
+
expect(metadataField.values).to.deep.equal([]);
|
|
68
|
+
});
|
|
69
|
+
it('does not add value to values array if parsed value is undefined', () => {
|
|
70
|
+
class MockFloatParser {
|
|
71
|
+
parseValue(rawValue) {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const parser = new MockFloatParser();
|
|
76
|
+
const metadataField = new MetadataField(parser);
|
|
77
|
+
expect(metadataField.rawValue).to.equal(undefined);
|
|
78
|
+
expect(metadataField.value).to.equal(undefined);
|
|
79
|
+
expect(metadataField.values).to.deep.equal([]);
|
|
80
|
+
});
|
|
81
|
+
it('handles falsy `0` return values properly', () => {
|
|
82
|
+
class MockFloatParser {
|
|
83
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
84
|
+
parseValue(rawValue) {
|
|
85
|
+
return rawValue;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const parser = new MockFloatParser();
|
|
89
|
+
const metadataField = new MetadataField(parser, 0);
|
|
90
|
+
expect(metadataField.rawValue).to.equal(0);
|
|
91
|
+
expect(metadataField.value).to.equal(0);
|
|
92
|
+
expect(metadataField.values).to.deep.equal([0]);
|
|
93
|
+
});
|
|
94
|
+
it('handles falsy `false` return values properly', () => {
|
|
95
|
+
class MockFloatParser {
|
|
96
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
97
|
+
parseValue(rawValue) {
|
|
98
|
+
return rawValue;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const parser = new MockFloatParser();
|
|
102
|
+
const metadataField = new MetadataField(parser, false);
|
|
103
|
+
expect(metadataField.rawValue).to.equal(false);
|
|
104
|
+
expect(metadataField.value).to.equal(false);
|
|
105
|
+
expect(metadataField.values).to.deep.equal([false]);
|
|
106
|
+
});
|
|
107
|
+
it('handles falsy empty string return values properly', () => {
|
|
108
|
+
class MockFloatParser {
|
|
109
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
110
|
+
parseValue(rawValue) {
|
|
111
|
+
return rawValue;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const parser = new MockFloatParser();
|
|
115
|
+
const metadataField = new MetadataField(parser, '');
|
|
116
|
+
expect(metadataField.rawValue).to.equal('');
|
|
117
|
+
expect(metadataField.value).to.equal('');
|
|
118
|
+
expect(metadataField.values).to.deep.equal(['']);
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
121
|
//# sourceMappingURL=metadata-field.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { expect } from '@open-wc/testing';
|
|
2
|
-
import { Metadata } from '../../src/models/metadata';
|
|
3
|
-
describe('Metadata', () => {
|
|
4
|
-
it('properly instantiates metadata with identifier', async () => {
|
|
5
|
-
const json = { identifier: 'foo', collection: 'bar' };
|
|
6
|
-
const metadata = new Metadata(json);
|
|
7
|
-
expect(metadata.identifier).to.equal('foo');
|
|
8
|
-
});
|
|
9
|
-
});
|
|
1
|
+
import { expect } from '@open-wc/testing';
|
|
2
|
+
import { Metadata } from '../../src/models/metadata';
|
|
3
|
+
describe('Metadata', () => {
|
|
4
|
+
it('properly instantiates metadata with identifier', async () => {
|
|
5
|
+
const json = { identifier: 'foo', collection: 'bar' };
|
|
6
|
+
const metadata = new Metadata(json);
|
|
7
|
+
expect(metadata.identifier).to.equal('foo');
|
|
8
|
+
});
|
|
9
|
+
});
|
|
10
10
|
//# sourceMappingURL=metadata.test.js.map
|
package/package.json
CHANGED
|
@@ -1,77 +1,77 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@internetarchive/metadata-service",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "A service for fetching metadata about items in the Internet Archive",
|
|
5
|
-
"license": "AGPL-3.0-only",
|
|
6
|
-
"main": "dist/index.js",
|
|
7
|
-
"module": "dist/index.js",
|
|
8
|
-
"types": "dist/index.d.ts",
|
|
9
|
-
"publishConfig": {
|
|
10
|
-
"access": "public"
|
|
11
|
-
},
|
|
12
|
-
"scripts": {
|
|
13
|
-
"start": "concurrently --kill-others --names tsc,web-dev-server \"npm run tsc:watch\" \"web-dev-server --app-index demo/index.html --node-resolve --open --watch\"",
|
|
14
|
-
"tsc:watch": "tsc --watch",
|
|
15
|
-
"docs": "typedoc ./index.ts",
|
|
16
|
-
"prepare": "tsc",
|
|
17
|
-
"lint:eslint": "eslint --ext .ts,.html . --ignore-path .gitignore",
|
|
18
|
-
"format:eslint": "eslint --ext .ts,.html . --fix --ignore-path .gitignore",
|
|
19
|
-
"lint:prettier": "prettier \"**/*.js\" \"**/*.ts\" --check --ignore-path .gitignore",
|
|
20
|
-
"format:prettier": "prettier \"**/*.js\" \"**/*.ts\" --write --ignore-path .gitignore",
|
|
21
|
-
"lint": "npm run lint:eslint && npm run lint:prettier",
|
|
22
|
-
"format": "npm run format:eslint && npm run format:prettier",
|
|
23
|
-
"circular": "madge --circular --extensions ts .",
|
|
24
|
-
"test": "tsc && npm run lint && npm run circular && web-test-runner --coverage",
|
|
25
|
-
"test:watch": "web-test-runner --watch",
|
|
26
|
-
"codecov": "npx codecov"
|
|
27
|
-
},
|
|
28
|
-
"devDependencies": {
|
|
29
|
-
"@open-wc/eslint-config": "^4.2.0",
|
|
30
|
-
"@open-wc/testing": "^2.0.0",
|
|
31
|
-
"@types/node": "13.11.1",
|
|
32
|
-
"@typescript-eslint/eslint-plugin": "^4.16.1",
|
|
33
|
-
"@typescript-eslint/parser": "^4.16.1",
|
|
34
|
-
"@web/dev-server": "^0.0.12",
|
|
35
|
-
"@web/test-runner": "^0.13.23",
|
|
36
|
-
"concurrently": "^5.1.0",
|
|
37
|
-
"eslint": "^7.21.0",
|
|
38
|
-
"eslint-config-prettier": "^6.11.0",
|
|
39
|
-
"husky": "^1.0.0",
|
|
40
|
-
"lint-staged": "^10.0.0",
|
|
41
|
-
"lit-element": "^2.4.0",
|
|
42
|
-
"lit-html": "^1.3.0",
|
|
43
|
-
"madge": "^3.12.0",
|
|
44
|
-
"prettier": "^2.0.4",
|
|
45
|
-
"tslib": "^1.14.1",
|
|
46
|
-
"typedoc": "^0.20.29",
|
|
47
|
-
"typescript": "^4.2.2"
|
|
48
|
-
},
|
|
49
|
-
"eslintConfig": {
|
|
50
|
-
"extends": [
|
|
51
|
-
"@open-wc/eslint-config",
|
|
52
|
-
"eslint-config-prettier"
|
|
53
|
-
]
|
|
54
|
-
},
|
|
55
|
-
"prettier": {
|
|
56
|
-
"singleQuote": true,
|
|
57
|
-
"arrowParens": "avoid"
|
|
58
|
-
},
|
|
59
|
-
"husky": {
|
|
60
|
-
"hooks": {
|
|
61
|
-
"pre-commit": "lint-staged"
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
"lint-staged": {
|
|
65
|
-
"*.ts": [
|
|
66
|
-
"eslint --fix",
|
|
67
|
-
"prettier --write",
|
|
68
|
-
"git add"
|
|
69
|
-
]
|
|
70
|
-
},
|
|
71
|
-
"dependencies": {
|
|
72
|
-
"@internetarchive/field-parsers": "^0.1.3",
|
|
73
|
-
"@internetarchive/result-type": "^0.0.1",
|
|
74
|
-
"decorator-cache-getter": "^1.0.0",
|
|
75
|
-
"typescript-memoize": "^1.1.0"
|
|
76
|
-
}
|
|
77
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@internetarchive/metadata-service",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "A service for fetching metadata about items in the Internet Archive",
|
|
5
|
+
"license": "AGPL-3.0-only",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"module": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"publishConfig": {
|
|
10
|
+
"access": "public"
|
|
11
|
+
},
|
|
12
|
+
"scripts": {
|
|
13
|
+
"start": "concurrently --kill-others --names tsc,web-dev-server \"npm run tsc:watch\" \"web-dev-server --app-index demo/index.html --node-resolve --open --watch\"",
|
|
14
|
+
"tsc:watch": "tsc --watch",
|
|
15
|
+
"docs": "typedoc ./index.ts",
|
|
16
|
+
"prepare": "tsc",
|
|
17
|
+
"lint:eslint": "eslint --ext .ts,.html . --ignore-path .gitignore",
|
|
18
|
+
"format:eslint": "eslint --ext .ts,.html . --fix --ignore-path .gitignore",
|
|
19
|
+
"lint:prettier": "prettier \"**/*.js\" \"**/*.ts\" --check --ignore-path .gitignore",
|
|
20
|
+
"format:prettier": "prettier \"**/*.js\" \"**/*.ts\" --write --ignore-path .gitignore",
|
|
21
|
+
"lint": "npm run lint:eslint && npm run lint:prettier",
|
|
22
|
+
"format": "npm run format:eslint && npm run format:prettier",
|
|
23
|
+
"circular": "madge --circular --extensions ts .",
|
|
24
|
+
"test": "tsc && npm run lint && npm run circular && web-test-runner --coverage",
|
|
25
|
+
"test:watch": "web-test-runner --watch",
|
|
26
|
+
"codecov": "npx codecov"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@open-wc/eslint-config": "^4.2.0",
|
|
30
|
+
"@open-wc/testing": "^2.0.0",
|
|
31
|
+
"@types/node": "13.11.1",
|
|
32
|
+
"@typescript-eslint/eslint-plugin": "^4.16.1",
|
|
33
|
+
"@typescript-eslint/parser": "^4.16.1",
|
|
34
|
+
"@web/dev-server": "^0.0.12",
|
|
35
|
+
"@web/test-runner": "^0.13.23",
|
|
36
|
+
"concurrently": "^5.1.0",
|
|
37
|
+
"eslint": "^7.21.0",
|
|
38
|
+
"eslint-config-prettier": "^6.11.0",
|
|
39
|
+
"husky": "^1.0.0",
|
|
40
|
+
"lint-staged": "^10.0.0",
|
|
41
|
+
"lit-element": "^2.4.0",
|
|
42
|
+
"lit-html": "^1.3.0",
|
|
43
|
+
"madge": "^3.12.0",
|
|
44
|
+
"prettier": "^2.0.4",
|
|
45
|
+
"tslib": "^1.14.1",
|
|
46
|
+
"typedoc": "^0.20.29",
|
|
47
|
+
"typescript": "^4.2.2"
|
|
48
|
+
},
|
|
49
|
+
"eslintConfig": {
|
|
50
|
+
"extends": [
|
|
51
|
+
"@open-wc/eslint-config",
|
|
52
|
+
"eslint-config-prettier"
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
"prettier": {
|
|
56
|
+
"singleQuote": true,
|
|
57
|
+
"arrowParens": "avoid"
|
|
58
|
+
},
|
|
59
|
+
"husky": {
|
|
60
|
+
"hooks": {
|
|
61
|
+
"pre-commit": "lint-staged"
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"lint-staged": {
|
|
65
|
+
"*.ts": [
|
|
66
|
+
"eslint --fix",
|
|
67
|
+
"prettier --write",
|
|
68
|
+
"git add"
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
"dependencies": {
|
|
72
|
+
"@internetarchive/field-parsers": "^0.1.3",
|
|
73
|
+
"@internetarchive/result-type": "^0.0.1",
|
|
74
|
+
"decorator-cache-getter": "^1.0.0",
|
|
75
|
+
"typescript-memoize": "^1.1.0"
|
|
76
|
+
}
|
|
77
|
+
}
|
package/src/models/metadata.ts
CHANGED
|
@@ -127,6 +127,12 @@ export class Metadata {
|
|
|
127
127
|
: undefined;
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
+
@Memoize() get collection_layout(): StringField | undefined {
|
|
131
|
+
return this.rawMetadata?.collection_layout
|
|
132
|
+
? new StringField(this.rawMetadata.collection_layout)
|
|
133
|
+
: undefined;
|
|
134
|
+
}
|
|
135
|
+
|
|
130
136
|
@Memoize() get date(): DateField | undefined {
|
|
131
137
|
return this.rawMetadata?.date
|
|
132
138
|
? new DateField(this.rawMetadata.date)
|
package/tsconfig.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "es2018",
|
|
4
|
-
"module": "esnext",
|
|
5
|
-
"moduleResolution": "node",
|
|
6
|
-
"noEmitOnError": true,
|
|
7
|
-
"lib": ["es2017", "dom"],
|
|
8
|
-
"strict": true,
|
|
9
|
-
"esModuleInterop": false,
|
|
10
|
-
"allowSyntheticDefaultImports": true,
|
|
11
|
-
"experimentalDecorators": true,
|
|
12
|
-
"importHelpers": true,
|
|
13
|
-
"outDir": "dist",
|
|
14
|
-
"sourceMap": true,
|
|
15
|
-
"inlineSources": true,
|
|
16
|
-
"declaration": true,
|
|
17
|
-
"rootDir": "./",
|
|
18
|
-
},
|
|
19
|
-
"include": [
|
|
20
|
-
"**/*.ts"
|
|
21
|
-
],
|
|
22
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "es2018",
|
|
4
|
+
"module": "esnext",
|
|
5
|
+
"moduleResolution": "node",
|
|
6
|
+
"noEmitOnError": true,
|
|
7
|
+
"lib": ["es2017", "dom"],
|
|
8
|
+
"strict": true,
|
|
9
|
+
"esModuleInterop": false,
|
|
10
|
+
"allowSyntheticDefaultImports": true,
|
|
11
|
+
"experimentalDecorators": true,
|
|
12
|
+
"importHelpers": true,
|
|
13
|
+
"outDir": "dist",
|
|
14
|
+
"sourceMap": true,
|
|
15
|
+
"inlineSources": true,
|
|
16
|
+
"declaration": true,
|
|
17
|
+
"rootDir": "./",
|
|
18
|
+
},
|
|
19
|
+
"include": [
|
|
20
|
+
"**/*.ts"
|
|
21
|
+
],
|
|
22
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export default {
|
|
2
|
-
files: 'dist/**/test/**/*.test.js',
|
|
3
|
-
nodeResolve: true,
|
|
4
|
-
coverageConfig: {
|
|
5
|
-
exclude: ['./dist/test/**/*', './node_modules/**/*'],
|
|
6
|
-
},
|
|
7
|
-
};
|
|
1
|
+
export default {
|
|
2
|
+
files: 'dist/**/test/**/*.test.js',
|
|
3
|
+
nodeResolve: true,
|
|
4
|
+
coverageConfig: {
|
|
5
|
+
exclude: ['./dist/test/**/*', './node_modules/**/*'],
|
|
6
|
+
},
|
|
7
|
+
};
|