@internetarchive/metadata-service 0.1.0 → 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/.editorconfig +29 -29
- package/.github/workflows/ci.yml +27 -26
- package/.prettierignore +2 -0
- package/LICENSE +661 -661
- package/README.md +64 -64
- package/demo/app-root.ts +6 -6
- 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/demo/app-root.js.map +1 -1
- package/dist/index.d.ts +5 -18
- package/dist/index.js +4 -16
- package/dist/index.js.map +1 -1
- 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/default-metadata-backend.js.map +1 -1
- package/dist/src/backend/metadata-backend-interface.d.ts +20 -20
- package/dist/src/backend/metadata-backend-interface.js +1 -1
- package/dist/src/backend/metadata-backend-interface.js.map +1 -1
- package/dist/src/metadata-service-error.d.ts +11 -11
- package/dist/src/metadata-service-error.js +16 -17
- package/dist/src/metadata-service-error.js.map +1 -1
- package/dist/src/metadata-service-interface.d.ts +44 -44
- package/dist/src/metadata-service-interface.js +1 -1
- package/dist/src/metadata-service-interface.js.map +1 -1
- package/dist/src/metadata-service.d.ts +18 -18
- package/dist/src/metadata-service.js +42 -42
- package/dist/src/metadata-service.js.map +1 -1
- package/dist/src/responses/metadata-response.d.ts +25 -28
- package/dist/src/responses/metadata-response.js +31 -30
- package/dist/src/responses/metadata-response.js.map +1 -1
- package/dist/test/default-metadata-backend.test.d.ts +1 -1
- package/dist/test/default-metadata-backend.test.js +89 -90
- package/dist/test/default-metadata-backend.test.js.map +1 -1
- package/dist/test/metadata-service.test.d.ts +1 -1
- package/dist/test/metadata-service.test.js +98 -98
- package/dist/test/metadata-service.test.js.map +1 -1
- package/dist/test/mock-response-generator.d.ts +3 -3
- package/dist/test/mock-response-generator.js +61 -61
- package/eslint.config.mjs +53 -0
- package/index.ts +1 -27
- package/package.json +76 -77
- 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/tsconfig.json +22 -22
- package/web-test-runner.config.mjs +7 -7
- 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 -168
- package/dist/src/models/metadata.js +0 -618
- 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 -457
- 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,8 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import {
|
|
2
|
+
File,
|
|
3
|
+
Metadata,
|
|
4
|
+
Review,
|
|
5
|
+
SpeechMusicASREntry,
|
|
6
|
+
} from '@internetarchive/iaux-item-metadata';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* The main top-level reponse when fetching Metadata
|
|
@@ -11,43 +12,46 @@ import { SpeechMusicASREntry } from '../models/speech-music-asr-entry';
|
|
|
11
12
|
* @class MetadataResponse
|
|
12
13
|
*/
|
|
13
14
|
export class MetadataResponse {
|
|
14
|
-
|
|
15
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
16
|
+
readonly rawResponse: Readonly<Record<string, any>>;
|
|
15
17
|
|
|
16
|
-
created: number;
|
|
18
|
+
readonly created: number;
|
|
17
19
|
|
|
18
|
-
d1: string;
|
|
20
|
+
readonly d1: string;
|
|
19
21
|
|
|
20
|
-
d2: string;
|
|
22
|
+
readonly d2: string;
|
|
21
23
|
|
|
22
|
-
dir: string;
|
|
24
|
+
readonly dir: string;
|
|
23
25
|
|
|
24
|
-
files: File[];
|
|
26
|
+
readonly files: File[];
|
|
25
27
|
|
|
26
|
-
files_count: number;
|
|
28
|
+
readonly files_count: number;
|
|
27
29
|
|
|
28
|
-
item_last_updated: number;
|
|
30
|
+
readonly item_last_updated: number;
|
|
29
31
|
|
|
30
|
-
item_size: number;
|
|
32
|
+
readonly item_size: number;
|
|
31
33
|
|
|
32
|
-
metadata: Metadata;
|
|
34
|
+
readonly metadata: Metadata;
|
|
33
35
|
|
|
34
|
-
server: string;
|
|
36
|
+
readonly server: string;
|
|
35
37
|
|
|
36
|
-
uniq: number;
|
|
38
|
+
readonly uniq: number;
|
|
37
39
|
|
|
38
|
-
workable_servers: string[];
|
|
40
|
+
readonly workable_servers: string[];
|
|
39
41
|
|
|
40
|
-
speech_vs_music_asr?: SpeechMusicASREntry[];
|
|
42
|
+
readonly speech_vs_music_asr?: SpeechMusicASREntry[];
|
|
41
43
|
|
|
42
|
-
reviews?: Review[];
|
|
44
|
+
readonly reviews?: Review[];
|
|
43
45
|
|
|
46
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
44
47
|
constructor(json: Record<string, any>) {
|
|
45
48
|
this.rawResponse = json;
|
|
46
49
|
this.created = json.created;
|
|
47
50
|
this.d1 = json.d1;
|
|
48
51
|
this.d2 = json.d2;
|
|
49
52
|
this.dir = json.dir;
|
|
50
|
-
|
|
53
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
54
|
+
this.files = json.files?.map((file: Record<string, any>) => new File(file));
|
|
51
55
|
this.files_count = json.files_count;
|
|
52
56
|
this.item_last_updated = json.item_last_updated;
|
|
53
57
|
this.item_size = json.item_size;
|
|
@@ -56,6 +60,9 @@ export class MetadataResponse {
|
|
|
56
60
|
this.uniq = json.uniq;
|
|
57
61
|
this.workable_servers = json.workable_servers;
|
|
58
62
|
this.speech_vs_music_asr = json.speech_vs_music_asr;
|
|
59
|
-
this.reviews = json.reviews?.map(
|
|
63
|
+
this.reviews = json.reviews?.map(
|
|
64
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
65
|
+
(entry: Record<string, any>) => new Review(entry),
|
|
66
|
+
);
|
|
60
67
|
}
|
|
61
68
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
-
|
|
2
|
+
|
|
3
3
|
import { expect } from '@open-wc/testing';
|
|
4
4
|
import { DefaultMetadataBackend } from '../src/backend/default-metadata-backend';
|
|
5
5
|
import { MetadataServiceErrorType } from '../src/metadata-service-error';
|
|
@@ -62,8 +62,11 @@ describe('DefaultMetadataBackend', () => {
|
|
|
62
62
|
it('appends the scope if provided', async () => {
|
|
63
63
|
const fetchBackup = window.fetch;
|
|
64
64
|
let urlCalled = '';
|
|
65
|
-
window.fetch = (
|
|
66
|
-
|
|
65
|
+
window.fetch = (
|
|
66
|
+
input: RequestInfo | URL,
|
|
67
|
+
init?: RequestInit | undefined,
|
|
68
|
+
): Promise<Response> => {
|
|
69
|
+
urlCalled = input.toString();
|
|
67
70
|
const response = new Response('boop');
|
|
68
71
|
return new Promise(resolve => resolve(response));
|
|
69
72
|
};
|
|
@@ -78,14 +81,14 @@ describe('DefaultMetadataBackend', () => {
|
|
|
78
81
|
|
|
79
82
|
it('does not credentials for metadata endpoint', async () => {
|
|
80
83
|
const fetchBackup = window.fetch;
|
|
81
|
-
let urlCalled: RequestInfo;
|
|
84
|
+
let urlCalled: RequestInfo | URL;
|
|
82
85
|
let urlConfig: RequestInit | undefined;
|
|
83
86
|
window.fetch = (
|
|
84
|
-
|
|
85
|
-
|
|
87
|
+
input: RequestInfo | URL,
|
|
88
|
+
init?: RequestInit | undefined,
|
|
86
89
|
): Promise<Response> => {
|
|
87
|
-
urlCalled =
|
|
88
|
-
urlConfig =
|
|
90
|
+
urlCalled = input;
|
|
91
|
+
urlConfig = init;
|
|
89
92
|
const response = new Response('boop');
|
|
90
93
|
return new Promise(resolve => resolve(response));
|
|
91
94
|
};
|
|
@@ -2,21 +2,21 @@
|
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
3
|
import { expect } from '@open-wc/testing';
|
|
4
4
|
|
|
5
|
-
import { MockResponseGenerator } from './mock-response-generator';
|
|
6
|
-
import { MetadataResponse } from '../src/responses/metadata-response';
|
|
7
5
|
import { Result } from '@internetarchive/result-type';
|
|
8
6
|
import { MetadataBackendInterface } from '../src/backend/metadata-backend-interface';
|
|
7
|
+
import { MetadataService } from '../src/metadata-service';
|
|
9
8
|
import {
|
|
10
9
|
MetadataServiceError,
|
|
11
10
|
MetadataServiceErrorType,
|
|
12
11
|
} from '../src/metadata-service-error';
|
|
13
|
-
import {
|
|
12
|
+
import { MetadataResponse } from '../src/responses/metadata-response';
|
|
13
|
+
import { MockResponseGenerator } from './mock-response-generator';
|
|
14
14
|
|
|
15
15
|
describe('MetadataService', () => {
|
|
16
16
|
it('can request metadata when requested', async () => {
|
|
17
17
|
class MockMetadataBackend implements MetadataBackendInterface {
|
|
18
18
|
async fetchMetadata(
|
|
19
|
-
identifier: string
|
|
19
|
+
identifier: string,
|
|
20
20
|
): Promise<Result<MetadataResponse, MetadataServiceError>> {
|
|
21
21
|
const responseGenerator = new MockResponseGenerator();
|
|
22
22
|
const mockResponse =
|
|
@@ -36,7 +36,7 @@ describe('MetadataService', () => {
|
|
|
36
36
|
response: any;
|
|
37
37
|
async fetchMetadata(
|
|
38
38
|
identifier: string,
|
|
39
|
-
keypath?: string
|
|
39
|
+
keypath?: string,
|
|
40
40
|
): Promise<Result<any, MetadataServiceError>> {
|
|
41
41
|
return {
|
|
42
42
|
success: {
|
|
@@ -55,7 +55,7 @@ describe('MetadataService', () => {
|
|
|
55
55
|
|
|
56
56
|
let result = await service.fetchMetadataValue<typeof expectedResult>(
|
|
57
57
|
'foo',
|
|
58
|
-
'metadata'
|
|
58
|
+
'metadata',
|
|
59
59
|
);
|
|
60
60
|
expect(result.success).to.equal(expectedResult);
|
|
61
61
|
|
|
@@ -64,7 +64,7 @@ describe('MetadataService', () => {
|
|
|
64
64
|
|
|
65
65
|
result = await service.fetchMetadataValue<typeof expectedResult>(
|
|
66
66
|
'foo',
|
|
67
|
-
'metadata'
|
|
67
|
+
'metadata',
|
|
68
68
|
);
|
|
69
69
|
expect(result.success).to.equal(expectedResult);
|
|
70
70
|
expect(result.success.foo).to.equal('bar');
|
|
@@ -74,7 +74,7 @@ describe('MetadataService', () => {
|
|
|
74
74
|
it('returns an error result if the item is not found', async () => {
|
|
75
75
|
class MockSearchBackend implements MetadataBackendInterface {
|
|
76
76
|
async fetchMetadata(
|
|
77
|
-
identifier: string
|
|
77
|
+
identifier: string,
|
|
78
78
|
): Promise<Result<MetadataResponse, MetadataServiceError>> {
|
|
79
79
|
// this is unfortunate.. instead of getting an http 404 error,
|
|
80
80
|
// we get an empty JSON object when an item is not found
|
|
@@ -91,18 +91,18 @@ describe('MetadataService', () => {
|
|
|
91
91
|
const valueResult = await service.fetchMetadataValue('foo', 'metadata');
|
|
92
92
|
expect(valueResult.error).to.not.equal(undefined);
|
|
93
93
|
expect(valueResult.error?.type).to.equal(
|
|
94
|
-
MetadataServiceErrorType.itemNotFound
|
|
94
|
+
MetadataServiceErrorType.itemNotFound,
|
|
95
95
|
);
|
|
96
96
|
});
|
|
97
97
|
|
|
98
98
|
it('returns the network error if one occurs', async () => {
|
|
99
99
|
class MockSearchBackend implements MetadataBackendInterface {
|
|
100
100
|
async fetchMetadata(
|
|
101
|
-
identifier: string
|
|
101
|
+
identifier: string,
|
|
102
102
|
): Promise<Result<MetadataResponse, MetadataServiceError>> {
|
|
103
103
|
const error = new MetadataServiceError(
|
|
104
104
|
MetadataServiceErrorType.networkError,
|
|
105
|
-
'network error'
|
|
105
|
+
'network error',
|
|
106
106
|
);
|
|
107
107
|
return { error };
|
|
108
108
|
}
|
|
@@ -113,14 +113,14 @@ describe('MetadataService', () => {
|
|
|
113
113
|
const metadataResult = await service.fetchMetadata('foo');
|
|
114
114
|
expect(metadataResult.error).to.not.equal(undefined);
|
|
115
115
|
expect(metadataResult.error?.type).to.equal(
|
|
116
|
-
MetadataServiceErrorType.networkError
|
|
116
|
+
MetadataServiceErrorType.networkError,
|
|
117
117
|
);
|
|
118
118
|
expect(metadataResult.error?.message).to.equal('network error');
|
|
119
119
|
|
|
120
120
|
const metadataValueResult = await service.fetchMetadataValue('foo', 'bar');
|
|
121
121
|
expect(metadataValueResult.error).to.not.equal(undefined);
|
|
122
122
|
expect(metadataValueResult.error?.type).to.equal(
|
|
123
|
-
MetadataServiceErrorType.networkError
|
|
123
|
+
MetadataServiceErrorType.networkError,
|
|
124
124
|
);
|
|
125
125
|
expect(metadataValueResult.error?.message).to.equal('network error');
|
|
126
126
|
});
|
|
@@ -128,11 +128,11 @@ describe('MetadataService', () => {
|
|
|
128
128
|
it('returns a decoding error if one occurs', async () => {
|
|
129
129
|
class MockSearchBackend implements MetadataBackendInterface {
|
|
130
130
|
async fetchMetadata(
|
|
131
|
-
identifier: string
|
|
131
|
+
identifier: string,
|
|
132
132
|
): Promise<Result<MetadataResponse, MetadataServiceError>> {
|
|
133
133
|
const error = new MetadataServiceError(
|
|
134
134
|
MetadataServiceErrorType.decodingError,
|
|
135
|
-
'decoding error'
|
|
135
|
+
'decoding error',
|
|
136
136
|
);
|
|
137
137
|
return { error };
|
|
138
138
|
}
|
|
@@ -143,7 +143,7 @@ describe('MetadataService', () => {
|
|
|
143
143
|
const metadataResult = await service.fetchMetadata('foo');
|
|
144
144
|
expect(metadataResult.error).to.not.equal(undefined);
|
|
145
145
|
expect(metadataResult.error?.type).to.equal(
|
|
146
|
-
MetadataServiceErrorType.decodingError
|
|
146
|
+
MetadataServiceErrorType.decodingError,
|
|
147
147
|
);
|
|
148
148
|
expect(metadataResult.error?.message).to.equal('decoding error');
|
|
149
149
|
});
|
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
|
+
};
|
package/.eslintrc.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
root: true,
|
|
3
|
-
parser: '@typescript-eslint/parser',
|
|
4
|
-
plugins: ['@typescript-eslint', 'html'],
|
|
5
|
-
extends: ['plugin:@typescript-eslint/recommended'],
|
|
6
|
-
settings: {
|
|
7
|
-
'import/resolver': {
|
|
8
|
-
node: {
|
|
9
|
-
extensions: ['.js', '.jsx', '.ts', '.tsx'],
|
|
10
|
-
moduleDirectory: ['node_modules', 'src', 'demo'],
|
|
11
|
-
},
|
|
12
|
-
},
|
|
13
|
-
},
|
|
14
|
-
};
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { Byte, Duration } from '@internetarchive/field-parsers';
|
|
2
|
-
/**
|
|
3
|
-
* This represents an Internet Archive File
|
|
4
|
-
*
|
|
5
|
-
* @export
|
|
6
|
-
* @class File
|
|
7
|
-
*/
|
|
8
|
-
export declare class File {
|
|
9
|
-
rawValue: Record<string, any>;
|
|
10
|
-
get name(): string;
|
|
11
|
-
get source(): string;
|
|
12
|
-
get btih(): string;
|
|
13
|
-
get md5(): string;
|
|
14
|
-
get format(): string;
|
|
15
|
-
get mtime(): string;
|
|
16
|
-
get crc32(): string;
|
|
17
|
-
get sha1(): string;
|
|
18
|
-
get original(): string | undefined;
|
|
19
|
-
get size(): Byte | undefined;
|
|
20
|
-
get title(): string | undefined;
|
|
21
|
-
get length(): Duration | undefined;
|
|
22
|
-
get height(): number | undefined;
|
|
23
|
-
get width(): number | undefined;
|
|
24
|
-
get track(): number | undefined;
|
|
25
|
-
get external_identifier(): string | string[] | undefined;
|
|
26
|
-
get creator(): string | undefined;
|
|
27
|
-
get album(): string | undefined;
|
|
28
|
-
constructor(json: Record<string, any>);
|
|
29
|
-
}
|
package/dist/src/models/file.js
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
-
import { Memoize } from 'typescript-memoize';
|
|
4
|
-
import { ByteParser, DurationParser, NumberParser, } from '@internetarchive/field-parsers';
|
|
5
|
-
/**
|
|
6
|
-
* This represents an Internet Archive File
|
|
7
|
-
*
|
|
8
|
-
* @export
|
|
9
|
-
* @class File
|
|
10
|
-
*/
|
|
11
|
-
export class File {
|
|
12
|
-
constructor(json) {
|
|
13
|
-
this.rawValue = json;
|
|
14
|
-
}
|
|
15
|
-
get name() {
|
|
16
|
-
return this.rawValue.name;
|
|
17
|
-
}
|
|
18
|
-
get source() {
|
|
19
|
-
return this.rawValue.source;
|
|
20
|
-
}
|
|
21
|
-
get btih() {
|
|
22
|
-
return this.rawValue.btih;
|
|
23
|
-
}
|
|
24
|
-
get md5() {
|
|
25
|
-
return this.rawValue.md5;
|
|
26
|
-
}
|
|
27
|
-
get format() {
|
|
28
|
-
return this.rawValue.format;
|
|
29
|
-
}
|
|
30
|
-
get mtime() {
|
|
31
|
-
return this.rawValue.mtime;
|
|
32
|
-
}
|
|
33
|
-
get crc32() {
|
|
34
|
-
return this.rawValue.crc32;
|
|
35
|
-
}
|
|
36
|
-
get sha1() {
|
|
37
|
-
return this.rawValue.sha1;
|
|
38
|
-
}
|
|
39
|
-
get original() {
|
|
40
|
-
return this.rawValue.original;
|
|
41
|
-
}
|
|
42
|
-
get size() {
|
|
43
|
-
return this.rawValue.size
|
|
44
|
-
? ByteParser.shared.parseValue(this.rawValue.size)
|
|
45
|
-
: undefined;
|
|
46
|
-
}
|
|
47
|
-
get title() {
|
|
48
|
-
return this.rawValue.title;
|
|
49
|
-
}
|
|
50
|
-
get length() {
|
|
51
|
-
return this.rawValue.length
|
|
52
|
-
? DurationParser.shared.parseValue(this.rawValue.length)
|
|
53
|
-
: undefined;
|
|
54
|
-
}
|
|
55
|
-
get height() {
|
|
56
|
-
return this.rawValue.height
|
|
57
|
-
? NumberParser.shared.parseValue(this.rawValue.height)
|
|
58
|
-
: undefined;
|
|
59
|
-
}
|
|
60
|
-
get width() {
|
|
61
|
-
return this.rawValue.width
|
|
62
|
-
? NumberParser.shared.parseValue(this.rawValue.width)
|
|
63
|
-
: undefined;
|
|
64
|
-
}
|
|
65
|
-
get track() {
|
|
66
|
-
return this.rawValue.track
|
|
67
|
-
? NumberParser.shared.parseValue(this.rawValue.track)
|
|
68
|
-
: undefined;
|
|
69
|
-
}
|
|
70
|
-
get external_identifier() {
|
|
71
|
-
return this.rawValue.external_identifier;
|
|
72
|
-
}
|
|
73
|
-
get creator() {
|
|
74
|
-
return this.rawValue.creator;
|
|
75
|
-
}
|
|
76
|
-
get album() {
|
|
77
|
-
return this.rawValue.album;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
__decorate([
|
|
81
|
-
Memoize()
|
|
82
|
-
], File.prototype, "size", null);
|
|
83
|
-
__decorate([
|
|
84
|
-
Memoize()
|
|
85
|
-
], File.prototype, "length", null);
|
|
86
|
-
__decorate([
|
|
87
|
-
Memoize()
|
|
88
|
-
], File.prototype, "height", null);
|
|
89
|
-
__decorate([
|
|
90
|
-
Memoize()
|
|
91
|
-
], File.prototype, "width", null);
|
|
92
|
-
__decorate([
|
|
93
|
-
Memoize()
|
|
94
|
-
], File.prototype, "track", null);
|
|
95
|
-
//# sourceMappingURL=file.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/models/file.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Memoize } from 'typescript-memoize';\nimport {\n Byte,\n ByteParser,\n Duration,\n DurationParser,\n NumberParser,\n} from '@internetarchive/field-parsers';\n\n/**\n * This represents an Internet Archive File\n *\n * @export\n * @class File\n */\nexport class File {\n rawValue: Record<string, any>;\n\n get name(): string {\n return this.rawValue.name;\n }\n\n get source(): string {\n return this.rawValue.source;\n }\n\n get btih(): string {\n return this.rawValue.btih;\n }\n\n get md5(): string {\n return this.rawValue.md5;\n }\n\n get format(): string {\n return this.rawValue.format;\n }\n\n get mtime(): string {\n return this.rawValue.mtime;\n }\n\n get crc32(): string {\n return this.rawValue.crc32;\n }\n\n get sha1(): string {\n return this.rawValue.sha1;\n }\n\n get original(): string | undefined {\n return this.rawValue.original;\n }\n\n @Memoize() get size(): Byte | undefined {\n return this.rawValue.size\n ? ByteParser.shared.parseValue(this.rawValue.size)\n : undefined;\n }\n\n get title(): string | undefined {\n return this.rawValue.title;\n }\n\n @Memoize() get length(): Duration | undefined {\n return this.rawValue.length\n ? DurationParser.shared.parseValue(this.rawValue.length)\n : undefined;\n }\n\n @Memoize() get height(): number | undefined {\n return this.rawValue.height\n ? NumberParser.shared.parseValue(this.rawValue.height)\n : undefined;\n }\n\n @Memoize() get width(): number | undefined {\n return this.rawValue.width\n ? NumberParser.shared.parseValue(this.rawValue.width)\n : undefined;\n }\n\n @Memoize() get track(): number | undefined {\n return this.rawValue.track\n ? NumberParser.shared.parseValue(this.rawValue.track)\n : undefined;\n }\n\n get external_identifier(): string | string[] | undefined {\n return this.rawValue.external_identifier;\n }\n\n get creator(): string | undefined {\n return this.rawValue.creator;\n }\n\n get album(): string | undefined {\n return this.rawValue.album;\n }\n\n constructor(json: Record<string, any>) {\n this.rawValue = json;\n }\n}\n"]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { BooleanParser } from '@internetarchive/field-parsers';
|
|
2
|
-
import { MetadataField } from '../metadata-field';
|
|
3
|
-
export class BooleanField extends MetadataField {
|
|
4
|
-
constructor(rawValue) {
|
|
5
|
-
super(BooleanParser.shared, rawValue);
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=boolean.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"boolean.js","sourceRoot":"","sources":["../../../../../src/models/metadata-fields/field-types/boolean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAEpE,MAAM,OAAO,YAAa,SAAQ,aAAqC;IACrE,YAAY,QAA0B;QACpC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;CACF","sourcesContent":["import { BooleanParser } from '@internetarchive/field-parsers';\nimport { MetadataField, MetadataRawValue } from '../metadata-field';\n\nexport class BooleanField extends MetadataField<boolean, BooleanParser> {\n constructor(rawValue: MetadataRawValue) {\n super(BooleanParser.shared, rawValue);\n }\n}\n"]}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Byte, ByteParser } from '@internetarchive/field-parsers';
|
|
2
|
-
import { MetadataField, MetadataRawValue } from '../metadata-field';
|
|
3
|
-
/**
|
|
4
|
-
* ByteField is a unit-specific number field that
|
|
5
|
-
* returns a value in bytes
|
|
6
|
-
*
|
|
7
|
-
* @export
|
|
8
|
-
* @class ByteField
|
|
9
|
-
* @extends {MetadataField<Byte, ByteParser>}
|
|
10
|
-
*/
|
|
11
|
-
export declare class ByteField extends MetadataField<Byte, ByteParser> {
|
|
12
|
-
constructor(rawValue: MetadataRawValue);
|
|
13
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { ByteParser } from '@internetarchive/field-parsers';
|
|
2
|
-
import { MetadataField } from '../metadata-field';
|
|
3
|
-
/**
|
|
4
|
-
* ByteField is a unit-specific number field that
|
|
5
|
-
* returns a value in bytes
|
|
6
|
-
*
|
|
7
|
-
* @export
|
|
8
|
-
* @class ByteField
|
|
9
|
-
* @extends {MetadataField<Byte, ByteParser>}
|
|
10
|
-
*/
|
|
11
|
-
export class ByteField extends MetadataField {
|
|
12
|
-
constructor(rawValue) {
|
|
13
|
-
super(ByteParser.shared, rawValue);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=byte.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"byte.js","sourceRoot":"","sources":["../../../../../src/models/metadata-fields/field-types/byte.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAEpE;;;;;;;GAOG;AACH,MAAM,OAAO,SAAU,SAAQ,aAA+B;IAC5D,YAAY,QAA0B;QACpC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;CACF","sourcesContent":["import { Byte, ByteParser } from '@internetarchive/field-parsers';\nimport { MetadataField, MetadataRawValue } from '../metadata-field';\n\n/**\n * ByteField is a unit-specific number field that\n * returns a value in bytes\n *\n * @export\n * @class ByteField\n * @extends {MetadataField<Byte, ByteParser>}\n */\nexport class ByteField extends MetadataField<Byte, ByteParser> {\n constructor(rawValue: MetadataRawValue) {\n super(ByteParser.shared, rawValue);\n }\n}\n"]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { DateParser } from '@internetarchive/field-parsers';
|
|
2
|
-
import { MetadataField } from '../metadata-field';
|
|
3
|
-
export class DateField extends MetadataField {
|
|
4
|
-
constructor(rawValue) {
|
|
5
|
-
super(DateParser.shared, rawValue);
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=date.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../../../../src/models/metadata-fields/field-types/date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAEpE,MAAM,OAAO,SAAU,SAAQ,aAA+B;IAC5D,YAAY,QAA0B;QACpC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;CACF","sourcesContent":["import { DateParser } from '@internetarchive/field-parsers';\nimport { MetadataField, MetadataRawValue } from '../metadata-field';\n\nexport class DateField extends MetadataField<Date, DateParser> {\n constructor(rawValue: MetadataRawValue) {\n super(DateParser.shared, rawValue);\n }\n}\n"]}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Duration, DurationParser } from '@internetarchive/field-parsers';
|
|
2
|
-
import { MetadataField, MetadataRawValue } from '../metadata-field';
|
|
3
|
-
/**
|
|
4
|
-
* The DurationField parses different duration formats
|
|
5
|
-
* and returns a `Duration`, which is a number in seconds
|
|
6
|
-
* with decimals.
|
|
7
|
-
*
|
|
8
|
-
* @export
|
|
9
|
-
* @class DurationField
|
|
10
|
-
* @extends {MetadataField<Duration, DurationParser>}
|
|
11
|
-
*/
|
|
12
|
-
export declare class DurationField extends MetadataField<Duration, DurationParser> {
|
|
13
|
-
constructor(rawValue: MetadataRawValue);
|
|
14
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { DurationParser } from '@internetarchive/field-parsers';
|
|
2
|
-
import { MetadataField } from '../metadata-field';
|
|
3
|
-
/**
|
|
4
|
-
* The DurationField parses different duration formats
|
|
5
|
-
* and returns a `Duration`, which is a number in seconds
|
|
6
|
-
* with decimals.
|
|
7
|
-
*
|
|
8
|
-
* @export
|
|
9
|
-
* @class DurationField
|
|
10
|
-
* @extends {MetadataField<Duration, DurationParser>}
|
|
11
|
-
*/
|
|
12
|
-
export class DurationField extends MetadataField {
|
|
13
|
-
constructor(rawValue) {
|
|
14
|
-
super(DurationParser.shared, rawValue);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=duration.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"duration.js","sourceRoot":"","sources":["../../../../../src/models/metadata-fields/field-types/duration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAEpE;;;;;;;;GAQG;AACH,MAAM,OAAO,aAAc,SAAQ,aAAuC;IACxE,YAAY,QAA0B;QACpC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;CACF","sourcesContent":["import { Duration, DurationParser } from '@internetarchive/field-parsers';\nimport { MetadataField, MetadataRawValue } from '../metadata-field';\n\n/**\n * The DurationField parses different duration formats\n * and returns a `Duration`, which is a number in seconds\n * with decimals.\n *\n * @export\n * @class DurationField\n * @extends {MetadataField<Duration, DurationParser>}\n */\nexport class DurationField extends MetadataField<Duration, DurationParser> {\n constructor(rawValue: MetadataRawValue) {\n super(DurationParser.shared, rawValue);\n }\n}\n"]}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { FieldParserInterface, ListParser } from '@internetarchive/field-parsers';
|
|
2
|
-
import { MetadataField, MetadataRawValue } from '../metadata-field';
|
|
3
|
-
/**
|
|
4
|
-
* The ListField handles parsing of a list of values.
|
|
5
|
-
*
|
|
6
|
-
* Certain fields in the metadata, like `subject` typically have a
|
|
7
|
-
* comma or semicolon-separated list of values. The `ListField`
|
|
8
|
-
* parses the list values independently and aggregates them into
|
|
9
|
-
* the main `.values` array.
|
|
10
|
-
*/
|
|
11
|
-
export declare class ListField<T, FieldParserInterfaceType extends FieldParserInterface<T[]>> extends MetadataField<T, FieldParserInterfaceType> {
|
|
12
|
-
constructor(rawValue: MetadataRawValue, parser: FieldParserInterfaceType);
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* The StringListField handles parsing of a list of strings.
|
|
16
|
-
*/
|
|
17
|
-
export declare class StringListField extends ListField<string, ListParser<string>> {
|
|
18
|
-
constructor(rawValue: MetadataRawValue);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* The NumberListField handles parsing of a list of numbers.
|
|
22
|
-
*/
|
|
23
|
-
export declare class NumberListField extends ListField<number, ListParser<number>> {
|
|
24
|
-
constructor(rawValue: MetadataRawValue);
|
|
25
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { ListParser, NumberParser, StringParser, } from '@internetarchive/field-parsers';
|
|
2
|
-
import { MetadataField } from '../metadata-field';
|
|
3
|
-
/**
|
|
4
|
-
* The ListField handles parsing of a list of values.
|
|
5
|
-
*
|
|
6
|
-
* Certain fields in the metadata, like `subject` typically have a
|
|
7
|
-
* comma or semicolon-separated list of values. The `ListField`
|
|
8
|
-
* parses the list values independently and aggregates them into
|
|
9
|
-
* the main `.values` array.
|
|
10
|
-
*/
|
|
11
|
-
export class ListField extends MetadataField {
|
|
12
|
-
constructor(rawValue, parser) {
|
|
13
|
-
super(parser, rawValue);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* The StringListField handles parsing of a list of strings.
|
|
18
|
-
*/
|
|
19
|
-
export class StringListField extends ListField {
|
|
20
|
-
constructor(rawValue) {
|
|
21
|
-
const parser = new ListParser(StringParser.shared);
|
|
22
|
-
super(rawValue, parser);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* The NumberListField handles parsing of a list of numbers.
|
|
27
|
-
*/
|
|
28
|
-
export class NumberListField extends ListField {
|
|
29
|
-
constructor(rawValue) {
|
|
30
|
-
const parser = new ListParser(NumberParser.shared);
|
|
31
|
-
super(rawValue, parser);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=list.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../src/models/metadata-fields/field-types/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,YAAY,EACZ,YAAY,GACb,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAEpE;;;;;;;GAOG;AACH,MAAM,OAAO,SAGX,SAAQ,aAA0C;IAClD,YAAY,QAA0B,EAAE,MAAgC;QACtE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,SAAqC;IACxE,YAAY,QAA0B;QACpC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAS,YAAY,CAAC,MAAM,CAAC,CAAC;QAC3D,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,SAAqC;IACxE,YAAY,QAA0B;QACpC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAS,YAAY,CAAC,MAAM,CAAC,CAAC;QAC3D,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC;CACF","sourcesContent":["import {\n FieldParserInterface,\n ListParser,\n NumberParser,\n StringParser,\n} from '@internetarchive/field-parsers';\nimport { MetadataField, MetadataRawValue } from '../metadata-field';\n\n/**\n * The ListField handles parsing of a list of values.\n *\n * Certain fields in the metadata, like `subject` typically have a\n * comma or semicolon-separated list of values. The `ListField`\n * parses the list values independently and aggregates them into\n * the main `.values` array.\n */\nexport class ListField<\n T,\n FieldParserInterfaceType extends FieldParserInterface<T[]>\n> extends MetadataField<T, FieldParserInterfaceType> {\n constructor(rawValue: MetadataRawValue, parser: FieldParserInterfaceType) {\n super(parser, rawValue);\n }\n}\n\n/**\n * The StringListField handles parsing of a list of strings.\n */\nexport class StringListField extends ListField<string, ListParser<string>> {\n constructor(rawValue: MetadataRawValue) {\n const parser = new ListParser<string>(StringParser.shared);\n super(rawValue, parser);\n }\n}\n\n/**\n * The NumberListField handles parsing of a list of numbers.\n */\nexport class NumberListField extends ListField<number, ListParser<number>> {\n constructor(rawValue: MetadataRawValue) {\n const parser = new ListParser<number>(NumberParser.shared);\n super(rawValue, parser);\n }\n}\n"]}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { MediaType, MediaTypeParser } from '@internetarchive/field-parsers';
|
|
2
|
-
import { MetadataField, MetadataRawValue } from '../metadata-field';
|
|
3
|
-
export declare class MediaTypeField extends MetadataField<MediaType, MediaTypeParser> {
|
|
4
|
-
constructor(rawValue: MetadataRawValue);
|
|
5
|
-
}
|