@internetarchive/metadata-service 0.1.1 → 1.0.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.
- package/.prettierignore +2 -0
- package/demo/app-root.ts +6 -6
- package/dist/demo/app-root.js +3 -3
- package/dist/demo/app-root.js.map +1 -1
- package/dist/index.d.ts +1 -14
- package/dist/index.js +0 -12
- package/dist/index.js.map +1 -1
- package/dist/src/backend/default-metadata-backend.d.ts +1 -1
- package/dist/src/backend/default-metadata-backend.js.map +1 -1
- package/dist/src/backend/metadata-backend-interface.js.map +1 -1
- package/dist/src/metadata-service-error.js +1 -2
- package/dist/src/metadata-service-error.js.map +1 -1
- package/dist/src/metadata-service-interface.d.ts +1 -1
- package/dist/src/metadata-service-interface.js.map +1 -1
- package/dist/src/metadata-service.d.ts +3 -3
- package/dist/src/metadata-service.js +2 -2
- package/dist/src/metadata-service.js.map +1 -1
- package/dist/src/responses/metadata-response.d.ts +16 -19
- package/dist/src/responses/metadata-response.js +6 -5
- package/dist/src/responses/metadata-response.js.map +1 -1
- package/dist/test/default-metadata-backend.test.js +5 -6
- package/dist/test/default-metadata-backend.test.js.map +1 -1
- package/dist/test/metadata-service.test.js +2 -2
- package/dist/test/metadata-service.test.js.map +1 -1
- package/eslint.config.mjs +53 -0
- package/index.ts +1 -27
- package/package.json +25 -26
- package/src/backend/default-metadata-backend.ts +11 -11
- package/src/backend/metadata-backend-interface.ts +1 -1
- package/src/metadata-service-error.ts +2 -2
- package/src/metadata-service-interface.ts +3 -3
- package/src/metadata-service.ts +7 -7
- package/src/responses/metadata-response.ts +29 -22
- package/test/default-metadata-backend.test.ts +11 -8
- package/test/metadata-service.test.ts +16 -16
- package/.eslintrc.js +0 -14
- package/dist/src/models/file.d.ts +0 -29
- package/dist/src/models/file.js +0 -95
- package/dist/src/models/file.js.map +0 -1
- package/dist/src/models/metadata-fields/field-types/boolean.d.ts +0 -5
- package/dist/src/models/metadata-fields/field-types/boolean.js +0 -8
- package/dist/src/models/metadata-fields/field-types/boolean.js.map +0 -1
- package/dist/src/models/metadata-fields/field-types/byte.d.ts +0 -13
- package/dist/src/models/metadata-fields/field-types/byte.js +0 -16
- package/dist/src/models/metadata-fields/field-types/byte.js.map +0 -1
- package/dist/src/models/metadata-fields/field-types/date.d.ts +0 -5
- package/dist/src/models/metadata-fields/field-types/date.js +0 -8
- package/dist/src/models/metadata-fields/field-types/date.js.map +0 -1
- package/dist/src/models/metadata-fields/field-types/duration.d.ts +0 -14
- package/dist/src/models/metadata-fields/field-types/duration.js +0 -17
- package/dist/src/models/metadata-fields/field-types/duration.js.map +0 -1
- package/dist/src/models/metadata-fields/field-types/list.d.ts +0 -25
- package/dist/src/models/metadata-fields/field-types/list.js +0 -34
- package/dist/src/models/metadata-fields/field-types/list.js.map +0 -1
- package/dist/src/models/metadata-fields/field-types/mediatype.d.ts +0 -5
- package/dist/src/models/metadata-fields/field-types/mediatype.js +0 -8
- package/dist/src/models/metadata-fields/field-types/mediatype.js.map +0 -1
- package/dist/src/models/metadata-fields/field-types/number.d.ts +0 -5
- package/dist/src/models/metadata-fields/field-types/number.js +0 -8
- package/dist/src/models/metadata-fields/field-types/number.js.map +0 -1
- package/dist/src/models/metadata-fields/field-types/page-progression.d.ts +0 -5
- package/dist/src/models/metadata-fields/field-types/page-progression.js +0 -8
- package/dist/src/models/metadata-fields/field-types/page-progression.js.map +0 -1
- package/dist/src/models/metadata-fields/field-types/string.d.ts +0 -5
- package/dist/src/models/metadata-fields/field-types/string.js +0 -8
- package/dist/src/models/metadata-fields/field-types/string.js.map +0 -1
- package/dist/src/models/metadata-fields/metadata-field.d.ts +0 -70
- package/dist/src/models/metadata-fields/metadata-field.js +0 -67
- package/dist/src/models/metadata-fields/metadata-field.js.map +0 -1
- package/dist/src/models/metadata.d.ts +0 -169
- package/dist/src/models/metadata.js +0 -627
- package/dist/src/models/metadata.js.map +0 -1
- package/dist/src/models/review.d.ts +0 -10
- package/dist/src/models/review.js +0 -43
- package/dist/src/models/review.js.map +0 -1
- package/dist/src/models/speech-music-asr-entry.d.ts +0 -10
- package/dist/src/models/speech-music-asr-entry.js +0 -2
- package/dist/src/models/speech-music-asr-entry.js.map +0 -1
- package/dist/test/models/file.test.d.ts +0 -1
- package/dist/test/models/file.test.js +0 -9
- package/dist/test/models/file.test.js.map +0 -1
- package/dist/test/models/metadata-fields/list-field.test.d.ts +0 -1
- package/dist/test/models/metadata-fields/list-field.test.js +0 -52
- package/dist/test/models/metadata-fields/list-field.test.js.map +0 -1
- package/dist/test/models/metadata-fields/metadata-field.test.d.ts +0 -1
- package/dist/test/models/metadata-fields/metadata-field.test.js +0 -121
- package/dist/test/models/metadata-fields/metadata-field.test.js.map +0 -1
- package/dist/test/models/metadata.test.d.ts +0 -1
- package/dist/test/models/metadata.test.js +0 -10
- package/dist/test/models/metadata.test.js.map +0 -1
- package/src/models/file.ts +0 -105
- package/src/models/metadata-fields/field-types/boolean.ts +0 -8
- package/src/models/metadata-fields/field-types/byte.ts +0 -16
- package/src/models/metadata-fields/field-types/date.ts +0 -8
- package/src/models/metadata-fields/field-types/duration.ts +0 -17
- package/src/models/metadata-fields/field-types/list.ts +0 -44
- package/src/models/metadata-fields/field-types/mediatype.ts +0 -8
- package/src/models/metadata-fields/field-types/number.ts +0 -8
- package/src/models/metadata-fields/field-types/page-progression.ts +0 -14
- package/src/models/metadata-fields/field-types/string.ts +0 -8
- package/src/models/metadata-fields/metadata-field.ts +0 -108
- package/src/models/metadata.ts +0 -463
- package/src/models/review.ts +0 -41
- package/src/models/speech-music-asr-entry.ts +0 -10
- package/test/models/file.test.ts +0 -10
- package/test/models/metadata-fields/list-field.test.ts +0 -64
- package/test/models/metadata-fields/metadata-field.test.ts +0 -151
- package/test/models/metadata.test.ts +0 -11
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
-
import { Memoize } from 'typescript-memoize';
|
|
4
|
-
import { DateParser, NumberParser } from '@internetarchive/field-parsers';
|
|
5
|
-
export class Review {
|
|
6
|
-
constructor(json) {
|
|
7
|
-
this.rawValue = json;
|
|
8
|
-
}
|
|
9
|
-
get reviewbody() {
|
|
10
|
-
return this.rawValue.reviewbody;
|
|
11
|
-
}
|
|
12
|
-
get reviewtitle() {
|
|
13
|
-
return this.rawValue.reviewtitle;
|
|
14
|
-
}
|
|
15
|
-
get reviewer() {
|
|
16
|
-
return this.rawValue.reviewer;
|
|
17
|
-
}
|
|
18
|
-
get reviewdate() {
|
|
19
|
-
return this.rawValue.reviewdate
|
|
20
|
-
? DateParser.shared.parseValue(this.rawValue.reviewdate)
|
|
21
|
-
: undefined;
|
|
22
|
-
}
|
|
23
|
-
get createdate() {
|
|
24
|
-
return this.rawValue.createdate
|
|
25
|
-
? DateParser.shared.parseValue(this.rawValue.createdate)
|
|
26
|
-
: undefined;
|
|
27
|
-
}
|
|
28
|
-
get stars() {
|
|
29
|
-
return this.rawValue.stars
|
|
30
|
-
? NumberParser.shared.parseValue(this.rawValue.stars)
|
|
31
|
-
: undefined;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
__decorate([
|
|
35
|
-
Memoize()
|
|
36
|
-
], Review.prototype, "reviewdate", null);
|
|
37
|
-
__decorate([
|
|
38
|
-
Memoize()
|
|
39
|
-
], Review.prototype, "createdate", null);
|
|
40
|
-
__decorate([
|
|
41
|
-
Memoize()
|
|
42
|
-
], Review.prototype, "stars", null);
|
|
43
|
-
//# sourceMappingURL=review.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../../src/models/review.ts"],"names":[],"mappings":";AAAA,uDAAuD;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE1E,MAAM,OAAO,MAAM;IAiCjB,YAAY,IAAyB;QACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAhCD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;IAClC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IACnC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAChC,CAAC;IAEU,IAAI,UAAU;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU;YAC7B,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YACxD,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAEU,IAAI,UAAU;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU;YAC7B,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YACxD,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAEU,IAAI,KAAK;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK;YACxB,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACrD,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;CAKF;AArBY;IAAV,OAAO,EAAE;wCAIT;AAEU;IAAV,OAAO,EAAE;wCAIT;AAEU;IAAV,OAAO,EAAE;mCAIT","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Memoize } from 'typescript-memoize';\nimport { DateParser, NumberParser } from '@internetarchive/field-parsers';\n\nexport class Review {\n rawValue: Record<string, any>;\n\n get reviewbody(): string | undefined {\n return this.rawValue.reviewbody;\n }\n\n get reviewtitle(): string | undefined {\n return this.rawValue.reviewtitle;\n }\n\n get reviewer(): string | undefined {\n return this.rawValue.reviewer;\n }\n\n @Memoize() get reviewdate(): Date | undefined {\n return this.rawValue.reviewdate\n ? DateParser.shared.parseValue(this.rawValue.reviewdate)\n : undefined;\n }\n\n @Memoize() get createdate(): Date | undefined {\n return this.rawValue.createdate\n ? DateParser.shared.parseValue(this.rawValue.createdate)\n : undefined;\n }\n\n @Memoize() get stars(): number | undefined {\n return this.rawValue.stars\n ? NumberParser.shared.parseValue(this.rawValue.stars)\n : undefined;\n }\n\n constructor(json: Record<string, any>) {\n this.rawValue = json;\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"speech-music-asr-entry.js","sourceRoot":"","sources":["../../../src/models/speech-music-asr-entry.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * This is the format used for radio transcripts\n */\nexport interface SpeechMusicASREntry {\n end: number;\n id: number;\n is_music: boolean;\n start: number;\n text: string;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { expect } from '@open-wc/testing';
|
|
2
|
-
import { File } from '../../src/models/file';
|
|
3
|
-
describe('File', () => {
|
|
4
|
-
it('can be instantiated with an object', async () => {
|
|
5
|
-
const file = new File({ name: 'foo.jpg' });
|
|
6
|
-
expect(file.name).to.equal('foo.jpg');
|
|
7
|
-
});
|
|
8
|
-
});
|
|
9
|
-
//# sourceMappingURL=file.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file.test.js","sourceRoot":"","sources":["../../../test/models/file.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAE7C,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IACpB,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { expect } from '@open-wc/testing';\n\nimport { File } from '../../src/models/file';\n\ndescribe('File', () => {\n it('can be instantiated with an object', async () => {\n const file = new File({ name: 'foo.jpg' });\n expect(file.name).to.equal('foo.jpg');\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { expect } from '@open-wc/testing';
|
|
2
|
-
import { NumberListField, StringListField, } from '../../../src/models/metadata-fields/field-types/list';
|
|
3
|
-
describe('List Field', () => {
|
|
4
|
-
describe('String List Field', () => {
|
|
5
|
-
it('can parse individual values', () => {
|
|
6
|
-
const stringListField = new StringListField('foo');
|
|
7
|
-
expect(stringListField.value).to.equal('foo');
|
|
8
|
-
expect(stringListField.values).to.deep.equal(['foo']);
|
|
9
|
-
expect(stringListField.rawValue).to.equal('foo');
|
|
10
|
-
});
|
|
11
|
-
it('can parse lists', () => {
|
|
12
|
-
const stringListField = new StringListField('foo, bar, baz');
|
|
13
|
-
expect(stringListField.value).to.equal('foo');
|
|
14
|
-
expect(stringListField.values).to.deep.equal(['foo', 'bar', 'baz']);
|
|
15
|
-
expect(stringListField.rawValue).to.equal('foo, bar, baz');
|
|
16
|
-
});
|
|
17
|
-
it('can parse lists of lists', () => {
|
|
18
|
-
const stringListField = new StringListField([
|
|
19
|
-
'foo, bar, baz',
|
|
20
|
-
'beep, boop, bop',
|
|
21
|
-
]);
|
|
22
|
-
expect(stringListField.value).to.equal('foo');
|
|
23
|
-
expect(stringListField.values).to.deep.equal([
|
|
24
|
-
'foo',
|
|
25
|
-
'bar',
|
|
26
|
-
'baz',
|
|
27
|
-
'beep',
|
|
28
|
-
'boop',
|
|
29
|
-
'bop',
|
|
30
|
-
]);
|
|
31
|
-
expect(stringListField.rawValue).to.deep.equal([
|
|
32
|
-
'foo, bar, baz',
|
|
33
|
-
'beep, boop, bop',
|
|
34
|
-
]);
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
describe('NumberListField', () => {
|
|
38
|
-
it('can parse lists of numbers', () => {
|
|
39
|
-
const listField = new NumberListField('1, 2, 3');
|
|
40
|
-
expect(listField.value).to.equal(1);
|
|
41
|
-
expect(listField.values).to.deep.equal([1, 2, 3]);
|
|
42
|
-
expect(listField.rawValue).to.equal('1, 2, 3');
|
|
43
|
-
});
|
|
44
|
-
it('can parse lists of lists', () => {
|
|
45
|
-
const listField = new NumberListField(['1, 2, 3', '4, 5, 6']);
|
|
46
|
-
expect(listField.value).to.equal(1);
|
|
47
|
-
expect(listField.values).to.deep.equal([1, 2, 3, 4, 5, 6]);
|
|
48
|
-
expect(listField.rawValue).to.deep.equal(['1, 2, 3', '4, 5, 6']);
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
//# sourceMappingURL=list-field.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-field.test.js","sourceRoot":"","sources":["../../../../test/models/metadata-fields/list-field.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from '@open-wc/testing';\nimport {\n NumberListField,\n StringListField,\n} from '../../../src/models/metadata-fields/field-types/list';\n\ndescribe('List Field', () => {\n describe('String List Field', () => {\n it('can parse individual values', () => {\n const stringListField = new StringListField('foo');\n\n expect(stringListField.value).to.equal('foo');\n expect(stringListField.values).to.deep.equal(['foo']);\n expect(stringListField.rawValue).to.equal('foo');\n });\n\n it('can parse lists', () => {\n const stringListField = new StringListField('foo, bar, baz');\n\n expect(stringListField.value).to.equal('foo');\n expect(stringListField.values).to.deep.equal(['foo', 'bar', 'baz']);\n expect(stringListField.rawValue).to.equal('foo, bar, baz');\n });\n\n it('can parse lists of lists', () => {\n const stringListField = new StringListField([\n 'foo, bar, baz',\n 'beep, boop, bop',\n ]);\n\n expect(stringListField.value).to.equal('foo');\n expect(stringListField.values).to.deep.equal([\n 'foo',\n 'bar',\n 'baz',\n 'beep',\n 'boop',\n 'bop',\n ]);\n expect(stringListField.rawValue).to.deep.equal([\n 'foo, bar, baz',\n 'beep, boop, bop',\n ]);\n });\n });\n\n describe('NumberListField', () => {\n it('can parse lists of numbers', () => {\n const listField = new NumberListField('1, 2, 3');\n\n expect(listField.value).to.equal(1);\n expect(listField.values).to.deep.equal([1, 2, 3]);\n expect(listField.rawValue).to.equal('1, 2, 3');\n });\n\n it('can parse lists of lists', () => {\n const listField = new NumberListField(['1, 2, 3', '4, 5, 6']);\n\n expect(listField.value).to.equal(1);\n expect(listField.values).to.deep.equal([1, 2, 3, 4, 5, 6]);\n expect(listField.rawValue).to.deep.equal(['1, 2, 3', '4, 5, 6']);\n });\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,121 +0,0 @@
|
|
|
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
|
-
//# sourceMappingURL=metadata-field.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-field.test.js","sourceRoot":"","sources":["../../../../test/models/metadata-fields/metadata-field.test.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAC;AAEnF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,UAAU;YACd,8DAA8D;YAC9D,UAAU,CAAC,QAAa;gBACtB,OAAO,QAAQ,CAAC;YAClB,CAAC;SACF;QAED,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAEvD,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,UAAU;YACd,8DAA8D;YAC9D,UAAU,CAAC,QAAa;gBACtB,OAAO,QAAQ,CAAC;YAClB,CAAC;SACF;QAED,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAEvE,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,eAAe;YACnB,8DAA8D;YAC9D,UAAU,CAAC,QAAa;gBACtB,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC9B,CAAC;SACF;QAED,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAEvD,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,eAAe;YACnB,8DAA8D;YAC9D,UAAU,CAAC,QAAa;gBACtB,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC9B,CAAC;SACF;QAED,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAEvE,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,eAAe;YACnB,8DAA8D;YAC9D,UAAU,CAAC,QAAa;gBACtB,OAAO,QAAQ,CAAC;YAClB,CAAC;SACF;QAED,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QAEhD,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,eAAe;YACnB,UAAU,CAAC,QAA6B;gBACtC,OAAO,SAAS,CAAC;YACnB,CAAC;SACF;QAED,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QAEhD,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,eAAe;YACnB,8DAA8D;YAC9D,UAAU,CAAC,QAAa;gBACtB,OAAO,QAAQ,CAAC;YAClB,CAAC;SACF;QAED,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAEnD,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,eAAe;YACnB,8DAA8D;YAC9D,UAAU,CAAC,QAAa;gBACtB,OAAO,QAAQ,CAAC;YAClB,CAAC;SACF;QAED,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAEvD,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,eAAe;YACnB,8DAA8D;YAC9D,UAAU,CAAC,QAAa;gBACtB,OAAO,QAAQ,CAAC;YAClB,CAAC;SACF;QAED,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEpD,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import {\n FieldParserInterface,\n FieldParserRawValue,\n} from '@internetarchive/field-parsers';\nimport { expect } from '@open-wc/testing';\nimport { MetadataField } from '../../../src/models/metadata-fields/metadata-field';\n\ndescribe('Metadata Field', () => {\n it('can be properly instantiated with single value', () => {\n class MockParser implements FieldParserInterface<string> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parseValue(rawValue: any): string {\n return rawValue;\n }\n }\n\n const parser = new MockParser();\n const metadataField = new MetadataField(parser, 'foo');\n\n expect(metadataField.rawValue).to.equal('foo');\n expect(metadataField.value).to.equal('foo');\n expect(metadataField.values).to.deep.equal(['foo']);\n });\n\n it('can be properly instantiated with array value', () => {\n class MockParser implements FieldParserInterface<string> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parseValue(rawValue: any): string {\n return rawValue;\n }\n }\n\n const parser = new MockParser();\n const metadataField = new MetadataField(parser, ['foo', 'bar', 'baz']);\n\n expect(metadataField.rawValue).to.deep.equal(['foo', 'bar', 'baz']);\n expect(metadataField.value).to.equal('foo');\n expect(metadataField.values).to.deep.equal(['foo', 'bar', 'baz']);\n });\n\n it('properly casts values to expected parser type for single values', () => {\n class MockFloatParser implements FieldParserInterface<number> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parseValue(rawValue: any): number {\n return parseFloat(rawValue);\n }\n }\n\n const parser = new MockFloatParser();\n const metadataField = new MetadataField(parser, '1.3');\n\n expect(metadataField.rawValue).to.equal('1.3');\n expect(metadataField.value).to.equal(1.3);\n expect(metadataField.values).to.deep.equal([1.3]);\n });\n\n it('properly casts values to expected parser type for array values', () => {\n class MockFloatParser implements FieldParserInterface<number> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parseValue(rawValue: any): number {\n return parseFloat(rawValue);\n }\n }\n\n const parser = new MockFloatParser();\n const metadataField = new MetadataField(parser, ['1.3', '2.4', '4.5']);\n\n expect(metadataField.rawValue).to.deep.equal(['1.3', '2.4', '4.5']);\n expect(metadataField.value).to.equal(1.3);\n expect(metadataField.values).to.deep.equal([1.3, 2.4, 4.5]);\n });\n\n it('has no value if a raw value was not passed in', () => {\n class MockFloatParser implements FieldParserInterface<number> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parseValue(rawValue: any): number {\n return rawValue;\n }\n }\n\n const parser = new MockFloatParser();\n const metadataField = new MetadataField(parser);\n\n expect(metadataField.rawValue).to.equal(undefined);\n expect(metadataField.value).to.equal(undefined);\n expect(metadataField.values).to.deep.equal([]);\n });\n\n it('does not add value to values array if parsed value is undefined', () => {\n class MockFloatParser implements FieldParserInterface<number> {\n parseValue(rawValue: FieldParserRawValue): number | undefined {\n return undefined;\n }\n }\n\n const parser = new MockFloatParser();\n const metadataField = new MetadataField(parser);\n\n expect(metadataField.rawValue).to.equal(undefined);\n expect(metadataField.value).to.equal(undefined);\n expect(metadataField.values).to.deep.equal([]);\n });\n\n it('handles falsy `0` return values properly', () => {\n class MockFloatParser implements FieldParserInterface<number> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parseValue(rawValue: any): number {\n return rawValue;\n }\n }\n\n const parser = new MockFloatParser();\n const metadataField = new MetadataField(parser, 0);\n\n expect(metadataField.rawValue).to.equal(0);\n expect(metadataField.value).to.equal(0);\n expect(metadataField.values).to.deep.equal([0]);\n });\n\n it('handles falsy `false` return values properly', () => {\n class MockFloatParser implements FieldParserInterface<number> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parseValue(rawValue: any): number {\n return rawValue;\n }\n }\n\n const parser = new MockFloatParser();\n const metadataField = new MetadataField(parser, false);\n\n expect(metadataField.rawValue).to.equal(false);\n expect(metadataField.value).to.equal(false);\n expect(metadataField.values).to.deep.equal([false]);\n });\n\n it('handles falsy empty string return values properly', () => {\n class MockFloatParser implements FieldParserInterface<number> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parseValue(rawValue: any): number {\n return rawValue;\n }\n }\n\n const parser = new MockFloatParser();\n const metadataField = new MetadataField(parser, '');\n\n expect(metadataField.rawValue).to.equal('');\n expect(metadataField.value).to.equal('');\n expect(metadataField.values).to.deep.equal(['']);\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,10 +0,0 @@
|
|
|
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
|
-
//# sourceMappingURL=metadata.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.test.js","sourceRoot":"","sources":["../../../test/models/metadata.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,IAAI,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { expect } from '@open-wc/testing';\n\nimport { Metadata } from '../../src/models/metadata';\n\ndescribe('Metadata', () => {\n it('properly instantiates metadata with identifier', async () => {\n const json = { identifier: 'foo', collection: 'bar' };\n const metadata = new Metadata(json);\n expect(metadata.identifier).to.equal('foo');\n });\n});\n"]}
|
package/src/models/file.ts
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { Memoize } from 'typescript-memoize';
|
|
3
|
-
import {
|
|
4
|
-
Byte,
|
|
5
|
-
ByteParser,
|
|
6
|
-
Duration,
|
|
7
|
-
DurationParser,
|
|
8
|
-
NumberParser,
|
|
9
|
-
} from '@internetarchive/field-parsers';
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* This represents an Internet Archive File
|
|
13
|
-
*
|
|
14
|
-
* @export
|
|
15
|
-
* @class File
|
|
16
|
-
*/
|
|
17
|
-
export class File {
|
|
18
|
-
rawValue: Record<string, any>;
|
|
19
|
-
|
|
20
|
-
get name(): string {
|
|
21
|
-
return this.rawValue.name;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
get source(): string {
|
|
25
|
-
return this.rawValue.source;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
get btih(): string {
|
|
29
|
-
return this.rawValue.btih;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
get md5(): string {
|
|
33
|
-
return this.rawValue.md5;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
get format(): string {
|
|
37
|
-
return this.rawValue.format;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
get mtime(): string {
|
|
41
|
-
return this.rawValue.mtime;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
get crc32(): string {
|
|
45
|
-
return this.rawValue.crc32;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
get sha1(): string {
|
|
49
|
-
return this.rawValue.sha1;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
get original(): string | undefined {
|
|
53
|
-
return this.rawValue.original;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
@Memoize() get size(): Byte | undefined {
|
|
57
|
-
return this.rawValue.size
|
|
58
|
-
? ByteParser.shared.parseValue(this.rawValue.size)
|
|
59
|
-
: undefined;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
get title(): string | undefined {
|
|
63
|
-
return this.rawValue.title;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
@Memoize() get length(): Duration | undefined {
|
|
67
|
-
return this.rawValue.length
|
|
68
|
-
? DurationParser.shared.parseValue(this.rawValue.length)
|
|
69
|
-
: undefined;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
@Memoize() get height(): number | undefined {
|
|
73
|
-
return this.rawValue.height
|
|
74
|
-
? NumberParser.shared.parseValue(this.rawValue.height)
|
|
75
|
-
: undefined;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
@Memoize() get width(): number | undefined {
|
|
79
|
-
return this.rawValue.width
|
|
80
|
-
? NumberParser.shared.parseValue(this.rawValue.width)
|
|
81
|
-
: undefined;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
@Memoize() get track(): number | undefined {
|
|
85
|
-
return this.rawValue.track
|
|
86
|
-
? NumberParser.shared.parseValue(this.rawValue.track)
|
|
87
|
-
: undefined;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
get external_identifier(): string | string[] | undefined {
|
|
91
|
-
return this.rawValue.external_identifier;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
get creator(): string | undefined {
|
|
95
|
-
return this.rawValue.creator;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
get album(): string | undefined {
|
|
99
|
-
return this.rawValue.album;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
constructor(json: Record<string, any>) {
|
|
103
|
-
this.rawValue = json;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { BooleanParser } from '@internetarchive/field-parsers';
|
|
2
|
-
import { MetadataField, MetadataRawValue } from '../metadata-field';
|
|
3
|
-
|
|
4
|
-
export class BooleanField extends MetadataField<boolean, BooleanParser> {
|
|
5
|
-
constructor(rawValue: MetadataRawValue) {
|
|
6
|
-
super(BooleanParser.shared, rawValue);
|
|
7
|
-
}
|
|
8
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Byte, ByteParser } from '@internetarchive/field-parsers';
|
|
2
|
-
import { MetadataField, MetadataRawValue } from '../metadata-field';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* ByteField is a unit-specific number field that
|
|
6
|
-
* returns a value in bytes
|
|
7
|
-
*
|
|
8
|
-
* @export
|
|
9
|
-
* @class ByteField
|
|
10
|
-
* @extends {MetadataField<Byte, ByteParser>}
|
|
11
|
-
*/
|
|
12
|
-
export class ByteField extends MetadataField<Byte, ByteParser> {
|
|
13
|
-
constructor(rawValue: MetadataRawValue) {
|
|
14
|
-
super(ByteParser.shared, rawValue);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { DateParser } from '@internetarchive/field-parsers';
|
|
2
|
-
import { MetadataField, MetadataRawValue } from '../metadata-field';
|
|
3
|
-
|
|
4
|
-
export class DateField extends MetadataField<Date, DateParser> {
|
|
5
|
-
constructor(rawValue: MetadataRawValue) {
|
|
6
|
-
super(DateParser.shared, rawValue);
|
|
7
|
-
}
|
|
8
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Duration, DurationParser } from '@internetarchive/field-parsers';
|
|
2
|
-
import { MetadataField, MetadataRawValue } from '../metadata-field';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* The DurationField parses different duration formats
|
|
6
|
-
* and returns a `Duration`, which is a number in seconds
|
|
7
|
-
* with decimals.
|
|
8
|
-
*
|
|
9
|
-
* @export
|
|
10
|
-
* @class DurationField
|
|
11
|
-
* @extends {MetadataField<Duration, DurationParser>}
|
|
12
|
-
*/
|
|
13
|
-
export class DurationField extends MetadataField<Duration, DurationParser> {
|
|
14
|
-
constructor(rawValue: MetadataRawValue) {
|
|
15
|
-
super(DurationParser.shared, rawValue);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
FieldParserInterface,
|
|
3
|
-
ListParser,
|
|
4
|
-
NumberParser,
|
|
5
|
-
StringParser,
|
|
6
|
-
} from '@internetarchive/field-parsers';
|
|
7
|
-
import { MetadataField, MetadataRawValue } from '../metadata-field';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* The ListField handles parsing of a list of values.
|
|
11
|
-
*
|
|
12
|
-
* Certain fields in the metadata, like `subject` typically have a
|
|
13
|
-
* comma or semicolon-separated list of values. The `ListField`
|
|
14
|
-
* parses the list values independently and aggregates them into
|
|
15
|
-
* the main `.values` array.
|
|
16
|
-
*/
|
|
17
|
-
export class ListField<
|
|
18
|
-
T,
|
|
19
|
-
FieldParserInterfaceType extends FieldParserInterface<T[]>
|
|
20
|
-
> extends MetadataField<T, FieldParserInterfaceType> {
|
|
21
|
-
constructor(rawValue: MetadataRawValue, parser: FieldParserInterfaceType) {
|
|
22
|
-
super(parser, rawValue);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* The StringListField handles parsing of a list of strings.
|
|
28
|
-
*/
|
|
29
|
-
export class StringListField extends ListField<string, ListParser<string>> {
|
|
30
|
-
constructor(rawValue: MetadataRawValue) {
|
|
31
|
-
const parser = new ListParser<string>(StringParser.shared);
|
|
32
|
-
super(rawValue, parser);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* The NumberListField handles parsing of a list of numbers.
|
|
38
|
-
*/
|
|
39
|
-
export class NumberListField extends ListField<number, ListParser<number>> {
|
|
40
|
-
constructor(rawValue: MetadataRawValue) {
|
|
41
|
-
const parser = new ListParser<number>(NumberParser.shared);
|
|
42
|
-
super(rawValue, parser);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { MediaType, MediaTypeParser } from '@internetarchive/field-parsers';
|
|
2
|
-
import { MetadataField, MetadataRawValue } from '../metadata-field';
|
|
3
|
-
|
|
4
|
-
export class MediaTypeField extends MetadataField<MediaType, MediaTypeParser> {
|
|
5
|
-
constructor(rawValue: MetadataRawValue) {
|
|
6
|
-
super(MediaTypeParser.shared, rawValue);
|
|
7
|
-
}
|
|
8
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { NumberParser } from '@internetarchive/field-parsers';
|
|
2
|
-
import { MetadataField, MetadataRawValue } from '../metadata-field';
|
|
3
|
-
|
|
4
|
-
export class NumberField extends MetadataField<number, NumberParser> {
|
|
5
|
-
constructor(rawValue: MetadataRawValue) {
|
|
6
|
-
super(NumberParser.shared, rawValue);
|
|
7
|
-
}
|
|
8
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
PageProgression,
|
|
3
|
-
PageProgressionParser,
|
|
4
|
-
} from '@internetarchive/field-parsers';
|
|
5
|
-
import { MetadataField, MetadataRawValue } from '../metadata-field';
|
|
6
|
-
|
|
7
|
-
export class PageProgressionField extends MetadataField<
|
|
8
|
-
PageProgression,
|
|
9
|
-
PageProgressionParser
|
|
10
|
-
> {
|
|
11
|
-
constructor(rawValue: MetadataRawValue) {
|
|
12
|
-
super(PageProgressionParser.shared, rawValue);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { StringParser } from '@internetarchive/field-parsers';
|
|
2
|
-
import { MetadataField, MetadataRawValue } from '../metadata-field';
|
|
3
|
-
|
|
4
|
-
export class StringField extends MetadataField<string, StringParser> {
|
|
5
|
-
constructor(rawValue: MetadataRawValue) {
|
|
6
|
-
super(StringParser.shared, rawValue);
|
|
7
|
-
}
|
|
8
|
-
}
|