@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.
Files changed (125) hide show
  1. package/.editorconfig +29 -29
  2. package/.github/workflows/ci.yml +27 -26
  3. package/.prettierignore +2 -0
  4. package/LICENSE +661 -661
  5. package/README.md +64 -64
  6. package/demo/app-root.ts +6 -6
  7. package/demo/index.html +27 -27
  8. package/dist/demo/app-root.d.ts +11 -11
  9. package/dist/demo/app-root.js +41 -41
  10. package/dist/demo/app-root.js.map +1 -1
  11. package/dist/index.d.ts +5 -18
  12. package/dist/index.js +4 -16
  13. package/dist/index.js.map +1 -1
  14. package/dist/src/backend/default-metadata-backend.d.ts +27 -27
  15. package/dist/src/backend/default-metadata-backend.js +100 -100
  16. package/dist/src/backend/default-metadata-backend.js.map +1 -1
  17. package/dist/src/backend/metadata-backend-interface.d.ts +20 -20
  18. package/dist/src/backend/metadata-backend-interface.js +1 -1
  19. package/dist/src/backend/metadata-backend-interface.js.map +1 -1
  20. package/dist/src/metadata-service-error.d.ts +11 -11
  21. package/dist/src/metadata-service-error.js +16 -17
  22. package/dist/src/metadata-service-error.js.map +1 -1
  23. package/dist/src/metadata-service-interface.d.ts +44 -44
  24. package/dist/src/metadata-service-interface.js +1 -1
  25. package/dist/src/metadata-service-interface.js.map +1 -1
  26. package/dist/src/metadata-service.d.ts +18 -18
  27. package/dist/src/metadata-service.js +42 -42
  28. package/dist/src/metadata-service.js.map +1 -1
  29. package/dist/src/responses/metadata-response.d.ts +25 -28
  30. package/dist/src/responses/metadata-response.js +31 -30
  31. package/dist/src/responses/metadata-response.js.map +1 -1
  32. package/dist/test/default-metadata-backend.test.d.ts +1 -1
  33. package/dist/test/default-metadata-backend.test.js +89 -90
  34. package/dist/test/default-metadata-backend.test.js.map +1 -1
  35. package/dist/test/metadata-service.test.d.ts +1 -1
  36. package/dist/test/metadata-service.test.js +98 -98
  37. package/dist/test/metadata-service.test.js.map +1 -1
  38. package/dist/test/mock-response-generator.d.ts +3 -3
  39. package/dist/test/mock-response-generator.js +61 -61
  40. package/eslint.config.mjs +53 -0
  41. package/index.ts +1 -27
  42. package/package.json +76 -77
  43. package/src/backend/default-metadata-backend.ts +11 -11
  44. package/src/backend/metadata-backend-interface.ts +1 -1
  45. package/src/metadata-service-error.ts +2 -2
  46. package/src/metadata-service-interface.ts +3 -3
  47. package/src/metadata-service.ts +7 -7
  48. package/src/responses/metadata-response.ts +29 -22
  49. package/test/default-metadata-backend.test.ts +11 -8
  50. package/test/metadata-service.test.ts +16 -16
  51. package/tsconfig.json +22 -22
  52. package/web-test-runner.config.mjs +7 -7
  53. package/.eslintrc.js +0 -14
  54. package/dist/src/models/file.d.ts +0 -29
  55. package/dist/src/models/file.js +0 -95
  56. package/dist/src/models/file.js.map +0 -1
  57. package/dist/src/models/metadata-fields/field-types/boolean.d.ts +0 -5
  58. package/dist/src/models/metadata-fields/field-types/boolean.js +0 -8
  59. package/dist/src/models/metadata-fields/field-types/boolean.js.map +0 -1
  60. package/dist/src/models/metadata-fields/field-types/byte.d.ts +0 -13
  61. package/dist/src/models/metadata-fields/field-types/byte.js +0 -16
  62. package/dist/src/models/metadata-fields/field-types/byte.js.map +0 -1
  63. package/dist/src/models/metadata-fields/field-types/date.d.ts +0 -5
  64. package/dist/src/models/metadata-fields/field-types/date.js +0 -8
  65. package/dist/src/models/metadata-fields/field-types/date.js.map +0 -1
  66. package/dist/src/models/metadata-fields/field-types/duration.d.ts +0 -14
  67. package/dist/src/models/metadata-fields/field-types/duration.js +0 -17
  68. package/dist/src/models/metadata-fields/field-types/duration.js.map +0 -1
  69. package/dist/src/models/metadata-fields/field-types/list.d.ts +0 -25
  70. package/dist/src/models/metadata-fields/field-types/list.js +0 -34
  71. package/dist/src/models/metadata-fields/field-types/list.js.map +0 -1
  72. package/dist/src/models/metadata-fields/field-types/mediatype.d.ts +0 -5
  73. package/dist/src/models/metadata-fields/field-types/mediatype.js +0 -8
  74. package/dist/src/models/metadata-fields/field-types/mediatype.js.map +0 -1
  75. package/dist/src/models/metadata-fields/field-types/number.d.ts +0 -5
  76. package/dist/src/models/metadata-fields/field-types/number.js +0 -8
  77. package/dist/src/models/metadata-fields/field-types/number.js.map +0 -1
  78. package/dist/src/models/metadata-fields/field-types/page-progression.d.ts +0 -5
  79. package/dist/src/models/metadata-fields/field-types/page-progression.js +0 -8
  80. package/dist/src/models/metadata-fields/field-types/page-progression.js.map +0 -1
  81. package/dist/src/models/metadata-fields/field-types/string.d.ts +0 -5
  82. package/dist/src/models/metadata-fields/field-types/string.js +0 -8
  83. package/dist/src/models/metadata-fields/field-types/string.js.map +0 -1
  84. package/dist/src/models/metadata-fields/metadata-field.d.ts +0 -70
  85. package/dist/src/models/metadata-fields/metadata-field.js +0 -67
  86. package/dist/src/models/metadata-fields/metadata-field.js.map +0 -1
  87. package/dist/src/models/metadata.d.ts +0 -168
  88. package/dist/src/models/metadata.js +0 -618
  89. package/dist/src/models/metadata.js.map +0 -1
  90. package/dist/src/models/review.d.ts +0 -10
  91. package/dist/src/models/review.js +0 -43
  92. package/dist/src/models/review.js.map +0 -1
  93. package/dist/src/models/speech-music-asr-entry.d.ts +0 -10
  94. package/dist/src/models/speech-music-asr-entry.js +0 -2
  95. package/dist/src/models/speech-music-asr-entry.js.map +0 -1
  96. package/dist/test/models/file.test.d.ts +0 -1
  97. package/dist/test/models/file.test.js +0 -9
  98. package/dist/test/models/file.test.js.map +0 -1
  99. package/dist/test/models/metadata-fields/list-field.test.d.ts +0 -1
  100. package/dist/test/models/metadata-fields/list-field.test.js +0 -52
  101. package/dist/test/models/metadata-fields/list-field.test.js.map +0 -1
  102. package/dist/test/models/metadata-fields/metadata-field.test.d.ts +0 -1
  103. package/dist/test/models/metadata-fields/metadata-field.test.js +0 -121
  104. package/dist/test/models/metadata-fields/metadata-field.test.js.map +0 -1
  105. package/dist/test/models/metadata.test.d.ts +0 -1
  106. package/dist/test/models/metadata.test.js +0 -10
  107. package/dist/test/models/metadata.test.js.map +0 -1
  108. package/src/models/file.ts +0 -105
  109. package/src/models/metadata-fields/field-types/boolean.ts +0 -8
  110. package/src/models/metadata-fields/field-types/byte.ts +0 -16
  111. package/src/models/metadata-fields/field-types/date.ts +0 -8
  112. package/src/models/metadata-fields/field-types/duration.ts +0 -17
  113. package/src/models/metadata-fields/field-types/list.ts +0 -44
  114. package/src/models/metadata-fields/field-types/mediatype.ts +0 -8
  115. package/src/models/metadata-fields/field-types/number.ts +0 -8
  116. package/src/models/metadata-fields/field-types/page-progression.ts +0 -14
  117. package/src/models/metadata-fields/field-types/string.ts +0 -8
  118. package/src/models/metadata-fields/metadata-field.ts +0 -108
  119. package/src/models/metadata.ts +0 -457
  120. package/src/models/review.ts +0 -41
  121. package/src/models/speech-music-asr-entry.ts +0 -10
  122. package/test/models/file.test.ts +0 -10
  123. package/test/models/metadata-fields/list-field.test.ts +0 -64
  124. package/test/models/metadata-fields/metadata-field.test.ts +0 -151
  125. package/test/models/metadata.test.ts +0 -11
@@ -1,151 +0,0 @@
1
- import {
2
- FieldParserInterface,
3
- FieldParserRawValue,
4
- } from '@internetarchive/field-parsers';
5
- import { expect } from '@open-wc/testing';
6
- import { MetadataField } from '../../../src/models/metadata-fields/metadata-field';
7
-
8
- describe('Metadata Field', () => {
9
- it('can be properly instantiated with single value', () => {
10
- class MockParser implements FieldParserInterface<string> {
11
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
- parseValue(rawValue: any): string {
13
- return rawValue;
14
- }
15
- }
16
-
17
- const parser = new MockParser();
18
- const metadataField = new MetadataField(parser, 'foo');
19
-
20
- expect(metadataField.rawValue).to.equal('foo');
21
- expect(metadataField.value).to.equal('foo');
22
- expect(metadataField.values).to.deep.equal(['foo']);
23
- });
24
-
25
- it('can be properly instantiated with array value', () => {
26
- class MockParser implements FieldParserInterface<string> {
27
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
- parseValue(rawValue: any): string {
29
- return rawValue;
30
- }
31
- }
32
-
33
- const parser = new MockParser();
34
- const metadataField = new MetadataField(parser, ['foo', 'bar', 'baz']);
35
-
36
- expect(metadataField.rawValue).to.deep.equal(['foo', 'bar', 'baz']);
37
- expect(metadataField.value).to.equal('foo');
38
- expect(metadataField.values).to.deep.equal(['foo', 'bar', 'baz']);
39
- });
40
-
41
- it('properly casts values to expected parser type for single values', () => {
42
- class MockFloatParser implements FieldParserInterface<number> {
43
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
- parseValue(rawValue: any): number {
45
- return parseFloat(rawValue);
46
- }
47
- }
48
-
49
- const parser = new MockFloatParser();
50
- const metadataField = new MetadataField(parser, '1.3');
51
-
52
- expect(metadataField.rawValue).to.equal('1.3');
53
- expect(metadataField.value).to.equal(1.3);
54
- expect(metadataField.values).to.deep.equal([1.3]);
55
- });
56
-
57
- it('properly casts values to expected parser type for array values', () => {
58
- class MockFloatParser implements FieldParserInterface<number> {
59
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
- parseValue(rawValue: any): number {
61
- return parseFloat(rawValue);
62
- }
63
- }
64
-
65
- const parser = new MockFloatParser();
66
- const metadataField = new MetadataField(parser, ['1.3', '2.4', '4.5']);
67
-
68
- expect(metadataField.rawValue).to.deep.equal(['1.3', '2.4', '4.5']);
69
- expect(metadataField.value).to.equal(1.3);
70
- expect(metadataField.values).to.deep.equal([1.3, 2.4, 4.5]);
71
- });
72
-
73
- it('has no value if a raw value was not passed in', () => {
74
- class MockFloatParser implements FieldParserInterface<number> {
75
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
76
- parseValue(rawValue: any): number {
77
- return rawValue;
78
- }
79
- }
80
-
81
- const parser = new MockFloatParser();
82
- const metadataField = new MetadataField(parser);
83
-
84
- expect(metadataField.rawValue).to.equal(undefined);
85
- expect(metadataField.value).to.equal(undefined);
86
- expect(metadataField.values).to.deep.equal([]);
87
- });
88
-
89
- it('does not add value to values array if parsed value is undefined', () => {
90
- class MockFloatParser implements FieldParserInterface<number> {
91
- parseValue(rawValue: FieldParserRawValue): number | undefined {
92
- return undefined;
93
- }
94
- }
95
-
96
- const parser = new MockFloatParser();
97
- const metadataField = new MetadataField(parser);
98
-
99
- expect(metadataField.rawValue).to.equal(undefined);
100
- expect(metadataField.value).to.equal(undefined);
101
- expect(metadataField.values).to.deep.equal([]);
102
- });
103
-
104
- it('handles falsy `0` return values properly', () => {
105
- class MockFloatParser implements FieldParserInterface<number> {
106
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
107
- parseValue(rawValue: any): number {
108
- return rawValue;
109
- }
110
- }
111
-
112
- const parser = new MockFloatParser();
113
- const metadataField = new MetadataField(parser, 0);
114
-
115
- expect(metadataField.rawValue).to.equal(0);
116
- expect(metadataField.value).to.equal(0);
117
- expect(metadataField.values).to.deep.equal([0]);
118
- });
119
-
120
- it('handles falsy `false` return values properly', () => {
121
- class MockFloatParser implements FieldParserInterface<number> {
122
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
123
- parseValue(rawValue: any): number {
124
- return rawValue;
125
- }
126
- }
127
-
128
- const parser = new MockFloatParser();
129
- const metadataField = new MetadataField(parser, false);
130
-
131
- expect(metadataField.rawValue).to.equal(false);
132
- expect(metadataField.value).to.equal(false);
133
- expect(metadataField.values).to.deep.equal([false]);
134
- });
135
-
136
- it('handles falsy empty string return values properly', () => {
137
- class MockFloatParser implements FieldParserInterface<number> {
138
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
139
- parseValue(rawValue: any): number {
140
- return rawValue;
141
- }
142
- }
143
-
144
- const parser = new MockFloatParser();
145
- const metadataField = new MetadataField(parser, '');
146
-
147
- expect(metadataField.rawValue).to.equal('');
148
- expect(metadataField.value).to.equal('');
149
- expect(metadataField.values).to.deep.equal(['']);
150
- });
151
- });
@@ -1,11 +0,0 @@
1
- import { expect } from '@open-wc/testing';
2
-
3
- import { Metadata } from '../../src/models/metadata';
4
-
5
- describe('Metadata', () => {
6
- it('properly instantiates metadata with identifier', async () => {
7
- const json = { identifier: 'foo', collection: 'bar' };
8
- const metadata = new Metadata(json);
9
- expect(metadata.identifier).to.equal('foo');
10
- });
11
- });