@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.
Files changed (108) hide show
  1. package/.prettierignore +2 -0
  2. package/demo/app-root.ts +6 -6
  3. package/dist/demo/app-root.js +3 -3
  4. package/dist/demo/app-root.js.map +1 -1
  5. package/dist/index.d.ts +1 -14
  6. package/dist/index.js +0 -12
  7. package/dist/index.js.map +1 -1
  8. package/dist/src/backend/default-metadata-backend.d.ts +1 -1
  9. package/dist/src/backend/default-metadata-backend.js.map +1 -1
  10. package/dist/src/backend/metadata-backend-interface.js.map +1 -1
  11. package/dist/src/metadata-service-error.js +1 -2
  12. package/dist/src/metadata-service-error.js.map +1 -1
  13. package/dist/src/metadata-service-interface.d.ts +1 -1
  14. package/dist/src/metadata-service-interface.js.map +1 -1
  15. package/dist/src/metadata-service.d.ts +3 -3
  16. package/dist/src/metadata-service.js +2 -2
  17. package/dist/src/metadata-service.js.map +1 -1
  18. package/dist/src/responses/metadata-response.d.ts +16 -19
  19. package/dist/src/responses/metadata-response.js +6 -5
  20. package/dist/src/responses/metadata-response.js.map +1 -1
  21. package/dist/test/default-metadata-backend.test.js +5 -6
  22. package/dist/test/default-metadata-backend.test.js.map +1 -1
  23. package/dist/test/metadata-service.test.js +2 -2
  24. package/dist/test/metadata-service.test.js.map +1 -1
  25. package/eslint.config.mjs +53 -0
  26. package/index.ts +1 -27
  27. package/package.json +25 -26
  28. package/src/backend/default-metadata-backend.ts +11 -11
  29. package/src/backend/metadata-backend-interface.ts +1 -1
  30. package/src/metadata-service-error.ts +2 -2
  31. package/src/metadata-service-interface.ts +3 -3
  32. package/src/metadata-service.ts +7 -7
  33. package/src/responses/metadata-response.ts +29 -22
  34. package/test/default-metadata-backend.test.ts +11 -8
  35. package/test/metadata-service.test.ts +16 -16
  36. package/.eslintrc.js +0 -14
  37. package/dist/src/models/file.d.ts +0 -29
  38. package/dist/src/models/file.js +0 -95
  39. package/dist/src/models/file.js.map +0 -1
  40. package/dist/src/models/metadata-fields/field-types/boolean.d.ts +0 -5
  41. package/dist/src/models/metadata-fields/field-types/boolean.js +0 -8
  42. package/dist/src/models/metadata-fields/field-types/boolean.js.map +0 -1
  43. package/dist/src/models/metadata-fields/field-types/byte.d.ts +0 -13
  44. package/dist/src/models/metadata-fields/field-types/byte.js +0 -16
  45. package/dist/src/models/metadata-fields/field-types/byte.js.map +0 -1
  46. package/dist/src/models/metadata-fields/field-types/date.d.ts +0 -5
  47. package/dist/src/models/metadata-fields/field-types/date.js +0 -8
  48. package/dist/src/models/metadata-fields/field-types/date.js.map +0 -1
  49. package/dist/src/models/metadata-fields/field-types/duration.d.ts +0 -14
  50. package/dist/src/models/metadata-fields/field-types/duration.js +0 -17
  51. package/dist/src/models/metadata-fields/field-types/duration.js.map +0 -1
  52. package/dist/src/models/metadata-fields/field-types/list.d.ts +0 -25
  53. package/dist/src/models/metadata-fields/field-types/list.js +0 -34
  54. package/dist/src/models/metadata-fields/field-types/list.js.map +0 -1
  55. package/dist/src/models/metadata-fields/field-types/mediatype.d.ts +0 -5
  56. package/dist/src/models/metadata-fields/field-types/mediatype.js +0 -8
  57. package/dist/src/models/metadata-fields/field-types/mediatype.js.map +0 -1
  58. package/dist/src/models/metadata-fields/field-types/number.d.ts +0 -5
  59. package/dist/src/models/metadata-fields/field-types/number.js +0 -8
  60. package/dist/src/models/metadata-fields/field-types/number.js.map +0 -1
  61. package/dist/src/models/metadata-fields/field-types/page-progression.d.ts +0 -5
  62. package/dist/src/models/metadata-fields/field-types/page-progression.js +0 -8
  63. package/dist/src/models/metadata-fields/field-types/page-progression.js.map +0 -1
  64. package/dist/src/models/metadata-fields/field-types/string.d.ts +0 -5
  65. package/dist/src/models/metadata-fields/field-types/string.js +0 -8
  66. package/dist/src/models/metadata-fields/field-types/string.js.map +0 -1
  67. package/dist/src/models/metadata-fields/metadata-field.d.ts +0 -70
  68. package/dist/src/models/metadata-fields/metadata-field.js +0 -67
  69. package/dist/src/models/metadata-fields/metadata-field.js.map +0 -1
  70. package/dist/src/models/metadata.d.ts +0 -169
  71. package/dist/src/models/metadata.js +0 -627
  72. package/dist/src/models/metadata.js.map +0 -1
  73. package/dist/src/models/review.d.ts +0 -10
  74. package/dist/src/models/review.js +0 -43
  75. package/dist/src/models/review.js.map +0 -1
  76. package/dist/src/models/speech-music-asr-entry.d.ts +0 -10
  77. package/dist/src/models/speech-music-asr-entry.js +0 -2
  78. package/dist/src/models/speech-music-asr-entry.js.map +0 -1
  79. package/dist/test/models/file.test.d.ts +0 -1
  80. package/dist/test/models/file.test.js +0 -9
  81. package/dist/test/models/file.test.js.map +0 -1
  82. package/dist/test/models/metadata-fields/list-field.test.d.ts +0 -1
  83. package/dist/test/models/metadata-fields/list-field.test.js +0 -52
  84. package/dist/test/models/metadata-fields/list-field.test.js.map +0 -1
  85. package/dist/test/models/metadata-fields/metadata-field.test.d.ts +0 -1
  86. package/dist/test/models/metadata-fields/metadata-field.test.js +0 -121
  87. package/dist/test/models/metadata-fields/metadata-field.test.js.map +0 -1
  88. package/dist/test/models/metadata.test.d.ts +0 -1
  89. package/dist/test/models/metadata.test.js +0 -10
  90. package/dist/test/models/metadata.test.js.map +0 -1
  91. package/src/models/file.ts +0 -105
  92. package/src/models/metadata-fields/field-types/boolean.ts +0 -8
  93. package/src/models/metadata-fields/field-types/byte.ts +0 -16
  94. package/src/models/metadata-fields/field-types/date.ts +0 -8
  95. package/src/models/metadata-fields/field-types/duration.ts +0 -17
  96. package/src/models/metadata-fields/field-types/list.ts +0 -44
  97. package/src/models/metadata-fields/field-types/mediatype.ts +0 -8
  98. package/src/models/metadata-fields/field-types/number.ts +0 -8
  99. package/src/models/metadata-fields/field-types/page-progression.ts +0 -14
  100. package/src/models/metadata-fields/field-types/string.ts +0 -8
  101. package/src/models/metadata-fields/metadata-field.ts +0 -108
  102. package/src/models/metadata.ts +0 -463
  103. package/src/models/review.ts +0 -41
  104. package/src/models/speech-music-asr-entry.ts +0 -10
  105. package/test/models/file.test.ts +0 -10
  106. package/test/models/metadata-fields/list-field.test.ts +0 -64
  107. package/test/models/metadata-fields/metadata-field.test.ts +0 -151
  108. package/test/models/metadata.test.ts +0 -11
package/index.ts CHANGED
@@ -1,32 +1,6 @@
1
- export { Metadata } from './src/models/metadata';
2
- export { File } from './src/models/file';
3
- export { Review } from './src/models/review';
4
- export { SpeechMusicASREntry } from './src/models/speech-music-asr-entry';
5
-
6
- export { DateField } from './src/models/metadata-fields/field-types/date';
7
-
8
- export { NumberField } from './src/models/metadata-fields/field-types/number';
9
-
10
- export { StringField } from './src/models/metadata-fields/field-types/string';
11
-
12
- export { BooleanField } from './src/models/metadata-fields/field-types/boolean';
13
-
14
- export { ByteField } from './src/models/metadata-fields/field-types/byte';
15
-
16
- export { DurationField } from './src/models/metadata-fields/field-types/duration';
17
-
18
- export { PageProgressionField } from './src/models/metadata-fields/field-types/page-progression';
19
-
20
- export { MediaTypeField } from './src/models/metadata-fields/field-types/mediatype';
21
-
22
- export {
23
- MetadataFieldInterface,
24
- MetadataField,
25
- } from './src/models/metadata-fields/metadata-field';
26
-
27
1
  export { MetadataResponse } from './src/responses/metadata-response';
28
2
 
29
3
  export { DefaultMetadataBackend } from './src/backend/default-metadata-backend';
30
- export { MetadataServiceInterface } from './src/metadata-service-interface';
31
4
  export { MetadataService } from './src/metadata-service';
32
5
  export { MetadataServiceError } from './src/metadata-service-error';
6
+ export { MetadataServiceInterface } from './src/metadata-service-interface';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@internetarchive/metadata-service",
3
- "version": "0.1.1",
3
+ "version": "1.0.0",
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",
@@ -14,10 +14,10 @@
14
14
  "tsc:watch": "tsc --watch",
15
15
  "docs": "typedoc ./index.ts",
16
16
  "prepare": "tsc",
17
- "lint:eslint": "eslint --ext .ts,.html . --ignore-path .gitignore",
18
- "format:eslint": "eslint --ext .ts,.html . --fix --ignore-path .gitignore",
19
- "lint:prettier": "prettier \"**/*.js\" \"**/*.ts\" --check --ignore-path .gitignore",
20
- "format:prettier": "prettier \"**/*.js\" \"**/*.ts\" --write --ignore-path .gitignore",
17
+ "lint:eslint": "eslint .",
18
+ "format:eslint": "eslint . --fix",
19
+ "lint:prettier": "prettier \"**/*.js\" \"**/*.ts\" --check",
20
+ "format:prettier": "prettier \"**/*.js\" \"**/*.ts\" --write",
21
21
  "lint": "npm run lint:eslint && npm run lint:prettier",
22
22
  "format": "npm run format:eslint && npm run format:prettier",
23
23
  "circular": "madge --circular --extensions ts .",
@@ -25,26 +25,31 @@
25
25
  "test:watch": "web-test-runner --watch",
26
26
  "codecov": "npx codecov"
27
27
  },
28
+ "dependencies": {
29
+ "@internetarchive/iaux-item-metadata": "^1.0.1",
30
+ "@internetarchive/result-type": "^0.0.1"
31
+ },
28
32
  "devDependencies": {
29
- "@open-wc/eslint-config": "^4.2.0",
30
- "@open-wc/testing": "^2.0.0",
31
- "@types/node": "13.11.1",
32
- "@typescript-eslint/eslint-plugin": "^4.16.1",
33
- "@typescript-eslint/parser": "^4.16.1",
34
- "@web/dev-server": "^0.0.12",
35
- "@web/test-runner": "^0.13.23",
33
+ "@open-wc/eslint-config": "^12.0.3",
34
+ "@open-wc/testing": "^4.0.0",
35
+ "@types/mocha": "^10.0.10",
36
+ "@types/node": "^22.10.6",
37
+ "@typescript-eslint/eslint-plugin": "^8.20.0",
38
+ "@typescript-eslint/parser": "^8.20.0",
39
+ "@web/dev-server": "^0.4.6",
40
+ "@web/test-runner": "^0.19.0",
36
41
  "concurrently": "^5.1.0",
37
- "eslint": "^7.21.0",
38
- "eslint-config-prettier": "^6.11.0",
39
- "husky": "^1.0.0",
42
+ "eslint": "^9.18.0",
43
+ "eslint-config-prettier": "^10.0.1",
44
+ "husky": "^9.1.7",
40
45
  "lint-staged": "^10.0.0",
41
46
  "lit-element": "^2.4.0",
42
47
  "lit-html": "^1.3.0",
43
- "madge": "^3.12.0",
44
- "prettier": "^2.0.4",
45
- "tslib": "^1.14.1",
46
- "typedoc": "^0.20.29",
47
- "typescript": "^4.2.2"
48
+ "madge": "^8.0.0",
49
+ "prettier": "^3.4.2",
50
+ "tslib": "^2.8.1",
51
+ "typedoc": "^0.27.6",
52
+ "typescript": "^5.7.3"
48
53
  },
49
54
  "eslintConfig": {
50
55
  "extends": [
@@ -67,11 +72,5 @@
67
72
  "prettier --write",
68
73
  "git add"
69
74
  ]
70
- },
71
- "dependencies": {
72
- "@internetarchive/field-parsers": "^0.1.3",
73
- "@internetarchive/result-type": "^0.0.1",
74
- "decorator-cache-getter": "^1.0.0",
75
- "typescript-memoize": "^1.1.0"
76
75
  }
77
76
  }
@@ -1,10 +1,10 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  import type { Result } from '@internetarchive/result-type';
3
- import { MetadataBackendInterface } from './metadata-backend-interface';
4
3
  import {
5
4
  MetadataServiceError,
6
5
  MetadataServiceErrorType,
7
6
  } from '../metadata-service-error';
7
+ import { MetadataBackendInterface } from './metadata-backend-interface';
8
8
 
9
9
  /**
10
10
  * The DefaultSearchBackend performs a `window.fetch` request to archive.org
@@ -49,7 +49,7 @@ export class DefaultMetadataBackend implements MetadataBackendInterface {
49
49
  /** @inheritdoc */
50
50
  async fetchMetadata(
51
51
  identifier: string,
52
- keypath?: string
52
+ keypath?: string,
53
53
  ): Promise<Result<any, MetadataServiceError>> {
54
54
  const path = keypath ? `/${keypath}` : '';
55
55
  const url = `https://${this.baseUrl}/metadata/${identifier}${path}`;
@@ -71,7 +71,7 @@ export class DefaultMetadataBackend implements MetadataBackendInterface {
71
71
  url: string,
72
72
  options?: {
73
73
  requestOptions?: RequestInit;
74
- }
74
+ },
75
75
  ): Promise<Result<any, MetadataServiceError>> {
76
76
  const finalUrl = new URL(url);
77
77
  if (this.requestScope) {
@@ -90,11 +90,11 @@ export class DefaultMetadataBackend implements MetadataBackendInterface {
90
90
  err instanceof Error
91
91
  ? err.message
92
92
  : typeof err === 'string'
93
- ? err
94
- : 'Unknown error';
93
+ ? err
94
+ : 'Unknown error';
95
95
  return this.getErrorResult(
96
96
  MetadataServiceErrorType.networkError,
97
- message
97
+ message,
98
98
  );
99
99
  }
100
100
 
@@ -109,7 +109,7 @@ export class DefaultMetadataBackend implements MetadataBackendInterface {
109
109
  return this.getErrorResult(
110
110
  MetadataServiceErrorType.searchEngineError,
111
111
  error,
112
- forensics
112
+ forensics,
113
113
  );
114
114
  } else {
115
115
  // success
@@ -120,11 +120,11 @@ export class DefaultMetadataBackend implements MetadataBackendInterface {
120
120
  err instanceof Error
121
121
  ? err.message
122
122
  : typeof err === 'string'
123
- ? err
124
- : 'Unknown error';
123
+ ? err
124
+ : 'Unknown error';
125
125
  return this.getErrorResult(
126
126
  MetadataServiceErrorType.decodingError,
127
- message
127
+ message,
128
128
  );
129
129
  }
130
130
  }
@@ -132,7 +132,7 @@ export class DefaultMetadataBackend implements MetadataBackendInterface {
132
132
  private getErrorResult(
133
133
  errorType: MetadataServiceErrorType,
134
134
  message?: string,
135
- details?: any
135
+ details?: any,
136
136
  ): Result<any, MetadataServiceError> {
137
137
  const error = new MetadataServiceError(errorType, message, details);
138
138
  const result = { error };
@@ -20,6 +20,6 @@ export interface MetadataBackendInterface {
20
20
  */
21
21
  fetchMetadata(
22
22
  identifier: string,
23
- keypath?: string
23
+ keypath?: string,
24
24
  ): Promise<Result<any, MetadataServiceError>>;
25
25
  }
@@ -1,5 +1,3 @@
1
- /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
3
1
  export enum MetadataServiceErrorType {
4
2
  networkError = 'MetadataService.NetworkError',
5
3
  itemNotFound = 'MetadataService.ItemNotFound',
@@ -10,8 +8,10 @@ export enum MetadataServiceErrorType {
10
8
  export class MetadataServiceError extends Error {
11
9
  type: MetadataServiceErrorType;
12
10
 
11
+ /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
13
12
  details?: any;
14
13
 
14
+ /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
15
15
  constructor(type: MetadataServiceErrorType, message?: string, details?: any) {
16
16
  super(message);
17
17
  this.name = type;
@@ -1,6 +1,6 @@
1
- import type { MetadataResponse } from './responses/metadata-response';
2
1
  import type { Result } from '@internetarchive/result-type';
3
2
  import type { MetadataServiceError } from './metadata-service-error';
3
+ import type { MetadataResponse } from './responses/metadata-response';
4
4
 
5
5
  export interface MetadataServiceInterface {
6
6
  /**
@@ -10,7 +10,7 @@ export interface MetadataServiceInterface {
10
10
  * @returns {Promise<Result<MetadataResponse, MetadataServiceError>>}
11
11
  */
12
12
  fetchMetadata(
13
- identifier: string
13
+ identifier: string,
14
14
  ): Promise<Result<MetadataResponse, MetadataServiceError>>;
15
15
 
16
16
  /**
@@ -46,6 +46,6 @@ export interface MetadataServiceInterface {
46
46
  */
47
47
  fetchMetadataValue<T>(
48
48
  identifier: string,
49
- keypath: string
49
+ keypath: string,
50
50
  ): Promise<Result<T, MetadataServiceError>>;
51
51
  }
@@ -1,12 +1,12 @@
1
- import { MetadataResponse } from './responses/metadata-response';
1
+ import type { Result } from '@internetarchive/result-type';
2
+ import { DefaultMetadataBackend } from './backend/default-metadata-backend';
3
+ import { MetadataBackendInterface } from './backend/metadata-backend-interface';
2
4
  import {
3
5
  MetadataServiceError,
4
6
  MetadataServiceErrorType,
5
7
  } from './metadata-service-error';
6
8
  import type { MetadataServiceInterface } from './metadata-service-interface';
7
- import type { Result } from '@internetarchive/result-type';
8
- import { DefaultMetadataBackend } from './backend/default-metadata-backend';
9
- import { MetadataBackendInterface } from './backend/metadata-backend-interface';
9
+ import { MetadataResponse } from './responses/metadata-response';
10
10
 
11
11
  /**
12
12
  * The Metadata Service is responsible for taking the raw response provided by
@@ -14,7 +14,7 @@ import { MetadataBackendInterface } from './backend/metadata-backend-interface';
14
14
  */
15
15
  export class MetadataService implements MetadataServiceInterface {
16
16
  public static default: MetadataServiceInterface = new MetadataService(
17
- new DefaultMetadataBackend()
17
+ new DefaultMetadataBackend(),
18
18
  );
19
19
 
20
20
  private backend: MetadataBackendInterface;
@@ -25,7 +25,7 @@ export class MetadataService implements MetadataServiceInterface {
25
25
 
26
26
  /** @inheritdoc */
27
27
  async fetchMetadata(
28
- identifier: string
28
+ identifier: string,
29
29
  ): Promise<Result<MetadataResponse, MetadataServiceError>> {
30
30
  const rawResponse = await this.backend.fetchMetadata(identifier);
31
31
  if (rawResponse.error) {
@@ -45,7 +45,7 @@ export class MetadataService implements MetadataServiceInterface {
45
45
  /** @inheritdoc */
46
46
  async fetchMetadataValue<T>(
47
47
  identifier: string,
48
- keypath: string
48
+ keypath: string,
49
49
  ): Promise<Result<T, MetadataServiceError>> {
50
50
  const result = await this.backend.fetchMetadata(identifier, keypath);
51
51
  if (result.error) {
@@ -1,8 +1,9 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { File } from '../models/file';
3
- import { Metadata } from '../models/metadata';
4
- import { Review } from '../models/review';
5
- import { SpeechMusicASREntry } from '../models/speech-music-asr-entry';
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
- rawResponse: any;
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
- this.files = json.files?.map((file: any) => new File(file));
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((entry: any) => new Review(entry));
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
- /* eslint-disable @typescript-eslint/no-explicit-any */
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 = (url: RequestInfo): Promise<Response> => {
66
- urlCalled = url.toString();
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
- url: RequestInfo,
85
- config?: RequestInit
87
+ input: RequestInfo | URL,
88
+ init?: RequestInit | undefined,
86
89
  ): Promise<Response> => {
87
- urlCalled = url;
88
- urlConfig = config;
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 { MetadataService } from '../src/metadata-service';
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/.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
- }