@internetarchive/metadata-service 1.0.5-alpha1 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,7 +1,5 @@
1
1
  export { MetadataResponse } from './src/responses/metadata-response';
2
- export { File } from './src/models/file';
3
- export { Review } from './src/models/review';
4
- export { SpeechMusicASREntry } from './src/models/speech-music-asr-entry';
2
+ export { File, Review, SpeechMusicASREntry, } from '@internetarchive/iaux-item-metadata';
5
3
  export { DefaultMetadataBackend } from './src/backend/default-metadata-backend';
6
4
  export { MetadataService } from './src/metadata-service';
7
5
  export { MetadataServiceError } from './src/metadata-service-error';
package/dist/index.js CHANGED
@@ -1,6 +1,5 @@
1
1
  export { MetadataResponse } from './src/responses/metadata-response';
2
- export { File } from './src/models/file';
3
- export { Review } from './src/models/review';
2
+ export { File, Review, } from '@internetarchive/iaux-item-metadata';
4
3
  export { DefaultMetadataBackend } from './src/backend/default-metadata-backend';
5
4
  export { MetadataService } from './src/metadata-service';
6
5
  export { MetadataServiceError } from './src/metadata-service-error';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAErE,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC","sourcesContent":["export { MetadataResponse } from './src/responses/metadata-response';\n\nexport { File } from './src/models/file';\nexport { Review } from './src/models/review';\nexport { SpeechMusicASREntry } from './src/models/speech-music-asr-entry';\n\nexport { DefaultMetadataBackend } from './src/backend/default-metadata-backend';\nexport { MetadataService } from './src/metadata-service';\nexport { MetadataServiceError } from './src/metadata-service-error';\nexport { MetadataServiceInterface } from './src/metadata-service-interface';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAErE,OAAO,EACL,IAAI,EACJ,MAAM,GAEP,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC","sourcesContent":["export { MetadataResponse } from './src/responses/metadata-response';\n\nexport {\n File,\n Review,\n SpeechMusicASREntry,\n} from '@internetarchive/iaux-item-metadata';\n\nexport { DefaultMetadataBackend } from './src/backend/default-metadata-backend';\nexport { MetadataService } from './src/metadata-service';\nexport { MetadataServiceError } from './src/metadata-service-error';\nexport { MetadataServiceInterface } from './src/metadata-service-interface';\n"]}
@@ -12,7 +12,7 @@ export declare class File {
12
12
  get btih(): string;
13
13
  get md5(): string;
14
14
  get format(): string;
15
- get mtime(): string;
15
+ get mtime(): Date | undefined;
16
16
  get crc32(): string;
17
17
  get sha1(): string;
18
18
  get original(): string | undefined;
@@ -24,7 +24,13 @@ export class File {
24
24
  return this.rawValue.format;
25
25
  }
26
26
  get mtime() {
27
- return this.rawValue.mtime;
27
+ if (this.rawValue.mtime == null) {
28
+ return undefined;
29
+ }
30
+ const numberValue = NumberParser.shared.parseValue(this.rawValue.mtime);
31
+ if (numberValue) {
32
+ return new Date(numberValue * 1000);
33
+ }
28
34
  }
29
35
  get crc32() {
30
36
  return this.rawValue.crc32;
@@ -77,6 +83,9 @@ export class File {
77
83
  this.rawValue = json;
78
84
  }
79
85
  }
86
+ __decorate([
87
+ Memoize()
88
+ ], File.prototype, "mtime", null);
80
89
  __decorate([
81
90
  Memoize()
82
91
  ], File.prototype, "size", null);
@@ -1 +1 @@
1
- {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/models/file.ts"],"names":[],"mappings":"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","sourcesContent":["import { 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 /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n readonly rawValue: Readonly<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 != null\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 != null\n ? DurationParser.shared.parseValue(this.rawValue.length)\n : undefined;\n }\n\n @Memoize() get height(): number | undefined {\n return this.rawValue.height != null\n ? NumberParser.shared.parseValue(this.rawValue.height)\n : undefined;\n }\n\n @Memoize() get width(): number | undefined {\n return this.rawValue.width != null\n ? NumberParser.shared.parseValue(this.rawValue.width)\n : undefined;\n }\n\n @Memoize() get track(): number | undefined {\n return this.rawValue.track != null\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 /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n constructor(json: Record<string, any> = {}) {\n this.rawValue = json;\n }\n}\n"]}
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/models/file.ts"],"names":[],"mappings":"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","sourcesContent":["import { 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 /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n readonly rawValue: Readonly<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 @Memoize() get mtime(): Date | undefined {\n if (this.rawValue.mtime == null) {\n return undefined;\n }\n const numberValue = NumberParser.shared.parseValue(this.rawValue.mtime);\n if (numberValue) {\n return new Date(numberValue * 1000);\n }\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 != null\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 != null\n ? DurationParser.shared.parseValue(this.rawValue.length)\n : undefined;\n }\n\n @Memoize() get height(): number | undefined {\n return this.rawValue.height != null\n ? NumberParser.shared.parseValue(this.rawValue.height)\n : undefined;\n }\n\n @Memoize() get width(): number | undefined {\n return this.rawValue.width != null\n ? NumberParser.shared.parseValue(this.rawValue.width)\n : undefined;\n }\n\n @Memoize() get track(): number | undefined {\n return this.rawValue.track != null\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 /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n constructor(json: Record<string, any> = {}) {\n this.rawValue = json;\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ export type TaskColor = 'red' | 'green' | 'blue' | 'purple' | 'brown';
2
+ export type TaskStatus = 'error' | 'queued' | 'running' | 'passed' | 'paused';
3
+ export type Task = {
4
+ task_id: number;
5
+ cmd: string;
6
+ priority: number;
7
+ wait_admin: number;
8
+ args: Record<string, string>;
9
+ color: TaskColor;
10
+ status: TaskStatus;
11
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../../src/models/task.ts"],"names":[],"mappings":"","sourcesContent":["export type TaskColor = 'red' | 'green' | 'blue' | 'purple' | 'brown';\n\nexport type TaskStatus = 'error' | 'queued' | 'running' | 'passed' | 'paused';\n\nexport type Task = {\n task_id: number;\n cmd: string;\n priority: number;\n wait_admin: number;\n args: Record<string, string>;\n color: TaskColor;\n status: TaskStatus;\n};\n"]}
@@ -1,7 +1,4 @@
1
- import { Metadata } from '@internetarchive/iaux-item-metadata';
2
- import { File } from '../models/file';
3
- import { Review } from '../models/review';
4
- import { SpeechMusicASREntry } from '../models/speech-music-asr-entry';
1
+ import { File, Metadata, Review, SpeechMusicASREntry } from '@internetarchive/iaux-item-metadata';
5
2
  /**
6
3
  * The main top-level reponse when fetching Metadata
7
4
  *
@@ -20,7 +17,6 @@ export declare class MetadataResponse {
20
17
  readonly item_size: number;
21
18
  readonly metadata: Metadata;
22
19
  readonly server: string;
23
- readonly simplelists: Readonly<Record<string, any>>;
24
20
  readonly uniq: number;
25
21
  readonly workable_servers: string[];
26
22
  readonly speech_vs_music_asr?: SpeechMusicASREntry[];
@@ -1,6 +1,4 @@
1
- import { Metadata } from '@internetarchive/iaux-item-metadata';
2
- import { File } from '../models/file';
3
- import { Review } from '../models/review';
1
+ import { File, Metadata, Review, } from '@internetarchive/iaux-item-metadata';
4
2
  /**
5
3
  * The main top-level reponse when fetching Metadata
6
4
  *
@@ -23,7 +21,6 @@ export class MetadataResponse {
23
21
  this.item_size = json.item_size;
24
22
  this.metadata = new Metadata(json.metadata);
25
23
  this.server = json.server;
26
- this.simplelists = json.simplelists;
27
24
  this.uniq = json.uniq;
28
25
  this.workable_servers = json.workable_servers;
29
26
  this.speech_vs_music_asr = json.speech_vs_music_asr;
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-response.js","sourceRoot":"","sources":["../../../src/responses/metadata-response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IAkC3B,iEAAiE;IACjE,YAAY,IAAyB;;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,iEAAiE;QACjE,IAAI,CAAC,KAAK,GAAG,MAAA,IAAI,CAAC,KAAK,0CAAE,GAAG,CAAC,CAAC,IAAyB,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC9C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACpD,IAAI,CAAC,OAAO,GAAG,MAAA,IAAI,CAAC,OAAO,0CAAE,GAAG;QAC9B,iEAAiE;QACjE,CAAC,KAA0B,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAClD,CAAC;IACJ,CAAC;CACF","sourcesContent":["import { Metadata } from '@internetarchive/iaux-item-metadata';\nimport { File } from '../models/file';\nimport { Review } from '../models/review';\nimport { SpeechMusicASREntry } from '../models/speech-music-asr-entry';\n\n/**\n * The main top-level reponse when fetching Metadata\n *\n * @export\n * @class MetadataResponse\n */\nexport class MetadataResponse {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n readonly rawResponse: Readonly<Record<string, any>>;\n\n readonly created: number;\n\n readonly d1: string;\n\n readonly d2: string;\n\n readonly dir: string;\n\n readonly files: File[];\n\n readonly files_count: number;\n\n readonly item_last_updated: number;\n\n readonly item_size: number;\n\n readonly metadata: Metadata;\n\n readonly server: string;\n\n readonly simplelists: Readonly<Record<string, any>>;\n\n readonly uniq: number;\n\n readonly workable_servers: string[];\n\n readonly speech_vs_music_asr?: SpeechMusicASREntry[];\n\n readonly reviews?: Review[];\n\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n constructor(json: Record<string, any>) {\n this.rawResponse = json;\n this.created = json.created;\n this.d1 = json.d1;\n this.d2 = json.d2;\n this.dir = json.dir;\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.files = json.files?.map((file: Record<string, any>) => new File(file));\n this.files_count = json.files_count;\n this.item_last_updated = json.item_last_updated;\n this.item_size = json.item_size;\n this.metadata = new Metadata(json.metadata);\n this.server = json.server;\n this.simplelists = json.simplelists;\n this.uniq = json.uniq;\n this.workable_servers = json.workable_servers;\n this.speech_vs_music_asr = json.speech_vs_music_asr;\n this.reviews = json.reviews?.map(\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n (entry: Record<string, any>) => new Review(entry),\n );\n }\n}\n"]}
1
+ {"version":3,"file":"metadata-response.js","sourceRoot":"","sources":["../../../src/responses/metadata-response.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,MAAM,GAEP,MAAM,qCAAqC,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IAgC3B,iEAAiE;IACjE,YAAY,IAAyB;;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,iEAAiE;QACjE,IAAI,CAAC,KAAK,GAAG,MAAA,IAAI,CAAC,KAAK,0CAAE,GAAG,CAAC,CAAC,IAAyB,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC9C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACpD,IAAI,CAAC,OAAO,GAAG,MAAA,IAAI,CAAC,OAAO,0CAAE,GAAG;QAC9B,iEAAiE;QACjE,CAAC,KAA0B,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAClD,CAAC;IACJ,CAAC;CACF","sourcesContent":["import {\n File,\n Metadata,\n Review,\n SpeechMusicASREntry,\n} from '@internetarchive/iaux-item-metadata';\n\n/**\n * The main top-level reponse when fetching Metadata\n *\n * @export\n * @class MetadataResponse\n */\nexport class MetadataResponse {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n readonly rawResponse: Readonly<Record<string, any>>;\n\n readonly created: number;\n\n readonly d1: string;\n\n readonly d2: string;\n\n readonly dir: string;\n\n readonly files: File[];\n\n readonly files_count: number;\n\n readonly item_last_updated: number;\n\n readonly item_size: number;\n\n readonly metadata: Metadata;\n\n readonly server: string;\n\n readonly uniq: number;\n\n readonly workable_servers: string[];\n\n readonly speech_vs_music_asr?: SpeechMusicASREntry[];\n\n readonly reviews?: Review[];\n\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n constructor(json: Record<string, any>) {\n this.rawResponse = json;\n this.created = json.created;\n this.d1 = json.d1;\n this.d2 = json.d2;\n this.dir = json.dir;\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.files = json.files?.map((file: Record<string, any>) => new File(file));\n this.files_count = json.files_count;\n this.item_last_updated = json.item_last_updated;\n this.item_size = json.item_size;\n this.metadata = new Metadata(json.metadata);\n this.server = json.server;\n this.uniq = json.uniq;\n this.workable_servers = json.workable_servers;\n this.speech_vs_music_asr = json.speech_vs_music_asr;\n this.reviews = json.reviews?.map(\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n (entry: Record<string, any>) => new Review(entry),\n );\n }\n}\n"]}
@@ -43,5 +43,15 @@ describe('File', () => {
43
43
  expect(file.track).to.not.be.undefined;
44
44
  expect(file.track).to.equal(0);
45
45
  });
46
+ it('parses mtime properly', async () => {
47
+ var _a;
48
+ const file = new File({
49
+ name: 'foo.jpg',
50
+ mtime: '1639591034',
51
+ });
52
+ expect(file.mtime).to.not.be.undefined;
53
+ expect(file.mtime instanceof Date).to.be.true;
54
+ expect((_a = file.mtime) === null || _a === void 0 ? void 0 : _a.getTime()).to.equal(1639591034000);
55
+ });
46
56
  });
47
57
  //# sourceMappingURL=file.test.js.map
@@ -1 +1 @@
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;IAEH,uEAAuE;IACvE,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;YACpB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;YACpB,IAAI,EAAE,SAAS;YACf,mBAAmB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;SACpC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;YACpB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,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 // some fields like size and length get converted to their proper types\n it('properly instantiates modeled fields', async () => {\n const file = new File({\n name: 'foo.jpg',\n size: '1234',\n length: '1:23',\n height: '1080',\n width: '1920',\n track: '1',\n });\n expect(file.size).to.equal(1234);\n expect(file.length).to.equal(83);\n expect(file.height).to.equal(1080);\n expect(file.width).to.equal(1920);\n expect(file.track).to.equal(1);\n });\n\n it('external_identifier can be a single value', async () => {\n const file = new File({ name: 'foo.jpg', external_identifier: 'bar' });\n expect(file.external_identifier).to.equal('bar');\n });\n\n it('external_identifier can be an array', async () => {\n const file = new File({\n name: 'foo.jpg',\n external_identifier: ['foo', 'bar'],\n });\n expect(file.external_identifier).to.deep.equal(['foo', 'bar']);\n });\n\n it('handles falsy values properly', async () => {\n const file = new File({\n name: 'foo.jpg',\n size: 0,\n track: 0,\n });\n expect(file.size).to.not.be.undefined;\n expect(file.size).to.equal(0);\n expect(file.track).to.not.be.undefined;\n expect(file.track).to.equal(0);\n });\n});\n"]}
1
+ {"version":3,"file":"file.test.js","sourceRoot":"","sources":["../../../test/models/file.test.ts"],"names":[],"mappings":"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","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 // some fields like size and length get converted to their proper types\n it('properly instantiates modeled fields', async () => {\n const file = new File({\n name: 'foo.jpg',\n size: '1234',\n length: '1:23',\n height: '1080',\n width: '1920',\n track: '1',\n });\n expect(file.size).to.equal(1234);\n expect(file.length).to.equal(83);\n expect(file.height).to.equal(1080);\n expect(file.width).to.equal(1920);\n expect(file.track).to.equal(1);\n });\n\n it('external_identifier can be a single value', async () => {\n const file = new File({ name: 'foo.jpg', external_identifier: 'bar' });\n expect(file.external_identifier).to.equal('bar');\n });\n\n it('external_identifier can be an array', async () => {\n const file = new File({\n name: 'foo.jpg',\n external_identifier: ['foo', 'bar'],\n });\n expect(file.external_identifier).to.deep.equal(['foo', 'bar']);\n });\n\n it('handles falsy values properly', async () => {\n const file = new File({\n name: 'foo.jpg',\n size: 0,\n track: 0,\n });\n expect(file.size).to.not.be.undefined;\n expect(file.size).to.equal(0);\n expect(file.track).to.not.be.undefined;\n expect(file.track).to.equal(0);\n });\n\n it('parses mtime properly', async () => {\n const file = new File({\n name: 'foo.jpg',\n mtime: '1639591034',\n });\n expect(file.mtime).to.not.be.undefined;\n expect(file.mtime instanceof Date).to.be.true;\n expect(file.mtime?.getTime()).to.equal(1639591034000);\n });\n});\n"]}
package/index.ts CHANGED
@@ -1,8 +1,10 @@
1
1
  export { MetadataResponse } from './src/responses/metadata-response';
2
2
 
3
- export { File } from './src/models/file';
4
- export { Review } from './src/models/review';
5
- export { SpeechMusicASREntry } from './src/models/speech-music-asr-entry';
3
+ export {
4
+ File,
5
+ Review,
6
+ SpeechMusicASREntry,
7
+ } from '@internetarchive/iaux-item-metadata';
6
8
 
7
9
  export { DefaultMetadataBackend } from './src/backend/default-metadata-backend';
8
10
  export { MetadataService } from './src/metadata-service';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@internetarchive/metadata-service",
3
- "version": "1.0.5-alpha1",
3
+ "version": "1.0.5",
4
4
  "description": "A service for fetching metadata about items in the Internet Archive",
5
5
  "license": "AGPL-3.0-only",
6
6
  "main": "dist/index.js",
@@ -27,7 +27,7 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "@internetarchive/field-parsers": "^0.1.4",
30
- "@internetarchive/iaux-item-metadata": "^1.0.4",
30
+ "@internetarchive/iaux-item-metadata": "^1.1.0",
31
31
  "@internetarchive/result-type": "^0.0.1",
32
32
  "typescript-memoize": "^1.1.1"
33
33
  },
@@ -1,7 +1,9 @@
1
- import { Metadata } from '@internetarchive/iaux-item-metadata';
2
- import { File } from '../models/file';
3
- import { Review } from '../models/review';
4
- import { SpeechMusicASREntry } from '../models/speech-music-asr-entry';
1
+ import {
2
+ File,
3
+ Metadata,
4
+ Review,
5
+ SpeechMusicASREntry,
6
+ } from '@internetarchive/iaux-item-metadata';
5
7
 
6
8
  /**
7
9
  * The main top-level reponse when fetching Metadata
@@ -33,8 +35,6 @@ export class MetadataResponse {
33
35
 
34
36
  readonly server: string;
35
37
 
36
- readonly simplelists: Readonly<Record<string, any>>;
37
-
38
38
  readonly uniq: number;
39
39
 
40
40
  readonly workable_servers: string[];
@@ -57,7 +57,6 @@ export class MetadataResponse {
57
57
  this.item_size = json.item_size;
58
58
  this.metadata = new Metadata(json.metadata);
59
59
  this.server = json.server;
60
- this.simplelists = json.simplelists;
61
60
  this.uniq = json.uniq;
62
61
  this.workable_servers = json.workable_servers;
63
62
  this.speech_vs_music_asr = json.speech_vs_music_asr;
@@ -1,106 +0,0 @@
1
- import { Memoize } from 'typescript-memoize';
2
- import {
3
- Byte,
4
- ByteParser,
5
- Duration,
6
- DurationParser,
7
- NumberParser,
8
- } from '@internetarchive/field-parsers';
9
-
10
- /**
11
- * This represents an Internet Archive File
12
- *
13
- * @export
14
- * @class File
15
- */
16
- export class File {
17
- /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
18
- readonly rawValue: Readonly<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 != null
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 != null
68
- ? DurationParser.shared.parseValue(this.rawValue.length)
69
- : undefined;
70
- }
71
-
72
- @Memoize() get height(): number | undefined {
73
- return this.rawValue.height != null
74
- ? NumberParser.shared.parseValue(this.rawValue.height)
75
- : undefined;
76
- }
77
-
78
- @Memoize() get width(): number | undefined {
79
- return this.rawValue.width != null
80
- ? NumberParser.shared.parseValue(this.rawValue.width)
81
- : undefined;
82
- }
83
-
84
- @Memoize() get track(): number | undefined {
85
- return this.rawValue.track != null
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
- /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
103
- constructor(json: Record<string, any> = {}) {
104
- this.rawValue = json;
105
- }
106
- }
@@ -1,46 +0,0 @@
1
- import { Memoize } from 'typescript-memoize';
2
- import { DateParser, NumberParser } from '@internetarchive/field-parsers';
3
-
4
- export class Review {
5
- /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
6
- readonly rawValue: Readonly<Record<string, any>>;
7
-
8
- get reviewbody(): string | undefined {
9
- return this.rawValue.reviewbody;
10
- }
11
-
12
- get reviewtitle(): string | undefined {
13
- return this.rawValue.reviewtitle;
14
- }
15
-
16
- get reviewer(): string | undefined {
17
- return this.rawValue.reviewer;
18
- }
19
-
20
- get reviewer_itemname(): string | undefined {
21
- return this.rawValue.reviewer_itemname;
22
- }
23
-
24
- @Memoize() get reviewdate(): Date | undefined {
25
- return this.rawValue.reviewdate != null
26
- ? DateParser.shared.parseValue(this.rawValue.reviewdate)
27
- : undefined;
28
- }
29
-
30
- @Memoize() get createdate(): Date | undefined {
31
- return this.rawValue.createdate != null
32
- ? DateParser.shared.parseValue(this.rawValue.createdate)
33
- : undefined;
34
- }
35
-
36
- @Memoize() get stars(): number | undefined {
37
- return this.rawValue.stars != null
38
- ? NumberParser.shared.parseValue(this.rawValue.stars)
39
- : undefined;
40
- }
41
-
42
- /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
43
- constructor(json: Record<string, any> = {}) {
44
- this.rawValue = json;
45
- }
46
- }
@@ -1,10 +0,0 @@
1
- /**
2
- * This is the format used for radio transcripts
3
- */
4
- export type SpeechMusicASREntry = {
5
- readonly end: number;
6
- readonly id: number;
7
- readonly is_music: boolean;
8
- readonly start: number;
9
- readonly text: string;
10
- };
@@ -1,52 +0,0 @@
1
- import { expect } from '@open-wc/testing';
2
-
3
- import { File } from '../../src/models/file';
4
-
5
- describe('File', () => {
6
- it('can be instantiated with an object', async () => {
7
- const file = new File({ name: 'foo.jpg' });
8
- expect(file.name).to.equal('foo.jpg');
9
- });
10
-
11
- // some fields like size and length get converted to their proper types
12
- it('properly instantiates modeled fields', async () => {
13
- const file = new File({
14
- name: 'foo.jpg',
15
- size: '1234',
16
- length: '1:23',
17
- height: '1080',
18
- width: '1920',
19
- track: '1',
20
- });
21
- expect(file.size).to.equal(1234);
22
- expect(file.length).to.equal(83);
23
- expect(file.height).to.equal(1080);
24
- expect(file.width).to.equal(1920);
25
- expect(file.track).to.equal(1);
26
- });
27
-
28
- it('external_identifier can be a single value', async () => {
29
- const file = new File({ name: 'foo.jpg', external_identifier: 'bar' });
30
- expect(file.external_identifier).to.equal('bar');
31
- });
32
-
33
- it('external_identifier can be an array', async () => {
34
- const file = new File({
35
- name: 'foo.jpg',
36
- external_identifier: ['foo', 'bar'],
37
- });
38
- expect(file.external_identifier).to.deep.equal(['foo', 'bar']);
39
- });
40
-
41
- it('handles falsy values properly', async () => {
42
- const file = new File({
43
- name: 'foo.jpg',
44
- size: 0,
45
- track: 0,
46
- });
47
- expect(file.size).to.not.be.undefined;
48
- expect(file.size).to.equal(0);
49
- expect(file.track).to.not.be.undefined;
50
- expect(file.track).to.equal(0);
51
- });
52
- });
@@ -1,59 +0,0 @@
1
- import { expect } from '@open-wc/testing';
2
-
3
- import { Review } from '../../src/models/review';
4
-
5
- describe('Review', () => {
6
- it('can be instantiated with a title', async () => {
7
- const review = new Review({
8
- reviewtitle: 'It was awesome!',
9
- });
10
- expect(review.reviewtitle).to.equal('It was awesome!');
11
- });
12
-
13
- it('stars get converted to a number', async () => {
14
- const review = new Review({
15
- stars: '5',
16
- });
17
- expect(review.stars).to.equal(5);
18
- });
19
-
20
- it('reviewdate get converted to a date', async () => {
21
- const review = new Review({
22
- reviewdate: '2014-05-09 09:47:15',
23
- });
24
-
25
- const expected = new Date();
26
- expected.setHours(9);
27
- expected.setMinutes(47);
28
- expected.setSeconds(15);
29
- expected.setMilliseconds(0);
30
- expected.setMonth(4);
31
- expected.setDate(9);
32
- expected.setFullYear(2014);
33
-
34
- expect(review.reviewdate?.getTime()).to.equal(expected.getTime());
35
- });
36
-
37
- it('handles falsy values properly', async () => {
38
- const review = new Review({
39
- reviewtitle: 'yay',
40
- reviewdate: '0',
41
- stars: 0,
42
- });
43
-
44
- const expected = new Date();
45
- expected.setHours(0);
46
- expected.setMinutes(0);
47
- expected.setSeconds(0);
48
- expected.setMilliseconds(0);
49
- expected.setMonth(0);
50
- expected.setDate(1);
51
- expected.setFullYear(2000);
52
-
53
- expect(review.reviewtitle).to.equal('yay');
54
- expect(review.reviewdate).to.not.be.undefined;
55
- expect(review.reviewdate?.getTime()).to.equal(expected.getTime());
56
- expect(review.stars).to.not.be.undefined;
57
- expect(review.stars).to.equal(0);
58
- });
59
- });