@internetarchive/metadata-service 1.0.3 → 1.0.4-webdev-7436.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 (47) hide show
  1. package/dist/src/models/metadata-fields/field-types/boolean.d.ts +5 -0
  2. package/dist/src/models/metadata-fields/field-types/boolean.js +9 -0
  3. package/dist/src/models/metadata-fields/field-types/boolean.js.map +1 -0
  4. package/dist/src/models/metadata-fields/field-types/byte.d.ts +13 -0
  5. package/dist/src/models/metadata-fields/field-types/byte.js +16 -0
  6. package/dist/src/models/metadata-fields/field-types/byte.js.map +1 -0
  7. package/dist/src/models/metadata-fields/field-types/date.d.ts +5 -0
  8. package/dist/src/models/metadata-fields/field-types/date.js +9 -0
  9. package/dist/src/models/metadata-fields/field-types/date.js.map +1 -0
  10. package/dist/src/models/metadata-fields/field-types/duration.d.ts +14 -0
  11. package/dist/src/models/metadata-fields/field-types/duration.js +17 -0
  12. package/dist/src/models/metadata-fields/field-types/duration.js.map +1 -0
  13. package/dist/src/models/metadata-fields/field-types/list.d.ts +25 -0
  14. package/dist/src/models/metadata-fields/field-types/list.js +34 -0
  15. package/dist/src/models/metadata-fields/field-types/list.js.map +1 -0
  16. package/dist/src/models/metadata-fields/field-types/mediatype.d.ts +5 -0
  17. package/dist/src/models/metadata-fields/field-types/mediatype.js +9 -0
  18. package/dist/src/models/metadata-fields/field-types/mediatype.js.map +1 -0
  19. package/dist/src/models/metadata-fields/field-types/number.d.ts +5 -0
  20. package/dist/src/models/metadata-fields/field-types/number.js +9 -0
  21. package/dist/src/models/metadata-fields/field-types/number.js.map +1 -0
  22. package/dist/src/models/metadata-fields/field-types/page-progression.d.ts +5 -0
  23. package/dist/src/models/metadata-fields/field-types/page-progression.js +9 -0
  24. package/dist/src/models/metadata-fields/field-types/page-progression.js.map +1 -0
  25. package/dist/src/models/metadata-fields/field-types/string.d.ts +5 -0
  26. package/dist/src/models/metadata-fields/field-types/string.js +9 -0
  27. package/dist/src/models/metadata-fields/field-types/string.js.map +1 -0
  28. package/dist/src/models/metadata-fields/metadata-field.d.ts +70 -0
  29. package/dist/src/models/metadata-fields/metadata-field.js +68 -0
  30. package/dist/src/models/metadata-fields/metadata-field.js.map +1 -0
  31. package/dist/src/models/metadata.d.ts +169 -0
  32. package/dist/src/models/metadata.js +685 -0
  33. package/dist/src/models/metadata.js.map +1 -0
  34. package/dist/src/models/review.d.ts +1 -0
  35. package/dist/src/models/review.js +3 -0
  36. package/dist/src/models/review.js.map +1 -1
  37. package/dist/test/models/metadata-fields/list-field.test.d.ts +1 -0
  38. package/dist/test/models/metadata-fields/list-field.test.js +53 -0
  39. package/dist/test/models/metadata-fields/list-field.test.js.map +1 -0
  40. package/dist/test/models/metadata-fields/metadata-field.test.d.ts +1 -0
  41. package/dist/test/models/metadata-fields/metadata-field.test.js +122 -0
  42. package/dist/test/models/metadata-fields/metadata-field.test.js.map +1 -0
  43. package/dist/test/models/metadata.test.d.ts +1 -0
  44. package/dist/test/models/metadata.test.js +11 -0
  45. package/dist/test/models/metadata.test.js.map +1 -0
  46. package/package.json +1 -1
  47. package/src/models/review.ts +4 -0
@@ -0,0 +1,5 @@
1
+ import { BooleanParser } from '@internetarchive/field-parsers';
2
+ import { MetadataField, MetadataRawValue } from '../metadata-field';
3
+ export declare class BooleanField extends MetadataField<boolean, BooleanParser> {
4
+ constructor(rawValue: MetadataRawValue);
5
+ }
@@ -0,0 +1,9 @@
1
+ import { BooleanParser } from '@internetarchive/field-parsers';
2
+ import { MetadataField } from '../metadata-field';
3
+
4
+ export class BooleanField extends MetadataField {
5
+ constructor(rawValue) {
6
+ super(BooleanParser.shared, rawValue);
7
+ }
8
+ }
9
+ // # sourceMappingURL=boolean.js.map
@@ -0,0 +1 @@
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"]}
@@ -0,0 +1,13 @@
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
+ }
@@ -0,0 +1,16 @@
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
@@ -0,0 +1 @@
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"]}
@@ -0,0 +1,5 @@
1
+ import { DateParser } from '@internetarchive/field-parsers';
2
+ import { MetadataField, MetadataRawValue } from '../metadata-field';
3
+ export declare class DateField extends MetadataField<Date, DateParser> {
4
+ constructor(rawValue: MetadataRawValue);
5
+ }
@@ -0,0 +1,9 @@
1
+ import { DateParser } from '@internetarchive/field-parsers';
2
+ import { MetadataField } from '../metadata-field';
3
+
4
+ export class DateField extends MetadataField {
5
+ constructor(rawValue) {
6
+ super(DateParser.shared, rawValue);
7
+ }
8
+ }
9
+ // # sourceMappingURL=date.js.map
@@ -0,0 +1 @@
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"]}
@@ -0,0 +1,14 @@
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
+ }
@@ -0,0 +1,17 @@
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
@@ -0,0 +1 @@
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"]}
@@ -0,0 +1,25 @@
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
+ }
@@ -0,0 +1,34 @@
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
@@ -0,0 +1 @@
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"]}
@@ -0,0 +1,5 @@
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
+ }
@@ -0,0 +1,9 @@
1
+ import { MediaTypeParser } from '@internetarchive/field-parsers';
2
+ import { MetadataField } from '../metadata-field';
3
+
4
+ export class MediaTypeField extends MetadataField {
5
+ constructor(rawValue) {
6
+ super(MediaTypeParser.shared, rawValue);
7
+ }
8
+ }
9
+ // # sourceMappingURL=mediatype.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mediatype.js","sourceRoot":"","sources":["../../../../../src/models/metadata-fields/field-types/mediatype.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAEpE,MAAM,OAAO,cAAe,SAAQ,aAAyC;IAC3E,YAAY,QAA0B;QACpC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import { MediaType, MediaTypeParser } from '@internetarchive/field-parsers';\nimport { MetadataField, MetadataRawValue } from '../metadata-field';\n\nexport class MediaTypeField extends MetadataField<MediaType, MediaTypeParser> {\n constructor(rawValue: MetadataRawValue) {\n super(MediaTypeParser.shared, rawValue);\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { NumberParser } from '@internetarchive/field-parsers';
2
+ import { MetadataField, MetadataRawValue } from '../metadata-field';
3
+ export declare class NumberField extends MetadataField<number, NumberParser> {
4
+ constructor(rawValue: MetadataRawValue);
5
+ }
@@ -0,0 +1,9 @@
1
+ import { NumberParser } from '@internetarchive/field-parsers';
2
+ import { MetadataField } from '../metadata-field';
3
+
4
+ export class NumberField extends MetadataField {
5
+ constructor(rawValue) {
6
+ super(NumberParser.shared, rawValue);
7
+ }
8
+ }
9
+ // # sourceMappingURL=number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../../../../src/models/metadata-fields/field-types/number.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAEpE,MAAM,OAAO,WAAY,SAAQ,aAAmC;IAClE,YAAY,QAA0B;QACpC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;CACF","sourcesContent":["import { NumberParser } from '@internetarchive/field-parsers';\nimport { MetadataField, MetadataRawValue } from '../metadata-field';\n\nexport class NumberField extends MetadataField<number, NumberParser> {\n constructor(rawValue: MetadataRawValue) {\n super(NumberParser.shared, rawValue);\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { PageProgression, PageProgressionParser } from '@internetarchive/field-parsers';
2
+ import { MetadataField, MetadataRawValue } from '../metadata-field';
3
+ export declare class PageProgressionField extends MetadataField<PageProgression, PageProgressionParser> {
4
+ constructor(rawValue: MetadataRawValue);
5
+ }
@@ -0,0 +1,9 @@
1
+ import { PageProgressionParser, } from '@internetarchive/field-parsers';
2
+ import { MetadataField } from '../metadata-field';
3
+
4
+ export class PageProgressionField extends MetadataField {
5
+ constructor(rawValue) {
6
+ super(PageProgressionParser.shared, rawValue);
7
+ }
8
+ }
9
+ // # sourceMappingURL=page-progression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-progression.js","sourceRoot":"","sources":["../../../../../src/models/metadata-fields/field-types/page-progression.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,GACtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAEpE,MAAM,OAAO,oBAAqB,SAAQ,aAGzC;IACC,YAAY,QAA0B;QACpC,KAAK,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;CACF","sourcesContent":["import {\n PageProgression,\n PageProgressionParser,\n} from '@internetarchive/field-parsers';\nimport { MetadataField, MetadataRawValue } from '../metadata-field';\n\nexport class PageProgressionField extends MetadataField<\n PageProgression,\n PageProgressionParser\n> {\n constructor(rawValue: MetadataRawValue) {\n super(PageProgressionParser.shared, rawValue);\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { StringParser } from '@internetarchive/field-parsers';
2
+ import { MetadataField, MetadataRawValue } from '../metadata-field';
3
+ export declare class StringField extends MetadataField<string, StringParser> {
4
+ constructor(rawValue: MetadataRawValue);
5
+ }
@@ -0,0 +1,9 @@
1
+ import { StringParser } from '@internetarchive/field-parsers';
2
+ import { MetadataField } from '../metadata-field';
3
+
4
+ export class StringField extends MetadataField {
5
+ constructor(rawValue) {
6
+ super(StringParser.shared, rawValue);
7
+ }
8
+ }
9
+ // # sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../../../../src/models/metadata-fields/field-types/string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAEpE,MAAM,OAAO,WAAY,SAAQ,aAAmC;IAClE,YAAY,QAA0B;QACpC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;CACF","sourcesContent":["import { StringParser } from '@internetarchive/field-parsers';\nimport { MetadataField, MetadataRawValue } from '../metadata-field';\n\nexport class StringField extends MetadataField<string, StringParser> {\n constructor(rawValue: MetadataRawValue) {\n super(StringParser.shared, rawValue);\n }\n}\n"]}
@@ -0,0 +1,70 @@
1
+ import { FieldParserInterface } from '@internetarchive/field-parsers';
2
+ /**
3
+ * The MetadataRawValue is all of the possible raw types we can get for a field.
4
+ *
5
+ * This allows the parsers to know if they can handle the raw value or not and
6
+ * how to handle it if they can.
7
+ */
8
+ export declare type MetadataRawValue = string | string[] | number | boolean;
9
+ export interface MetadataFieldInterface<T> {
10
+ /**
11
+ * The raw value received from the API response
12
+ *
13
+ * @type {MetadataRawValue}
14
+ * @memberof MetadataField
15
+ */
16
+ rawValue?: MetadataRawValue;
17
+ /**
18
+ * The first value if there are multiple or the only value if there is one
19
+ *
20
+ * @readonly
21
+ * @type {(T | undefined)}
22
+ * @memberof MetadataField
23
+ */
24
+ value?: T;
25
+ /**
26
+ * The array of all values for the field.
27
+ *
28
+ * Many fields only contain a single value and
29
+ * can be accessed via the `.value` getter
30
+ *
31
+ * @type {T[]}
32
+ * @memberof MetadataField
33
+ */
34
+ values: T[];
35
+ }
36
+ /**
37
+ * The MetadataField is responsible for three things:
38
+ * 1. Take in some raw data (strings, arrays, numbers, etc)
39
+ * 2. Normalize the input to an array of the input,
40
+ * ie. [string, string], [number, number], [Date, Date], etc
41
+ * 3. Cast the values to their expected `Type`
42
+ *
43
+ * This class gets instiated with a `Type` and a parser of that type. For instance, the
44
+ * `DateField` is a subclass of `MetadataField` with a `Type` of `Date` and a `DateParser`.
45
+ *
46
+ * When using a `DateField`, you can pass it a string date and it will cast it to a javascript Date,
47
+ * ie:
48
+ *
49
+ * ```
50
+ * const dateField = new DateField('2020-02-13')
51
+ * dateField.value = Date(2020-02-13) // native javascript Date object
52
+ * dateField.values = [Date(2020-02-13)] // the normalized array of values
53
+ * dateField.rawValue = '2020-02-13' // the raw string that was passed in
54
+ * ```
55
+ *
56
+ * @class MetadataField
57
+ * @template Type The type of metadata this is (string, number, Date, etc)
58
+ * @template FieldParserInterfaceType The parser for that type (StringParser, NumberParser, etc)
59
+ */
60
+ export declare class MetadataField<Type, FieldParserInterfaceType extends FieldParserInterface<Type | Type[]>> implements MetadataFieldInterface<Type> {
61
+ /** @inheritdoc */
62
+ rawValue?: MetadataRawValue;
63
+ /** @inheritdoc */
64
+ get values(): Type[];
65
+ /** @inheritdoc */
66
+ get value(): Type | undefined;
67
+ constructor(parser: FieldParserInterfaceType, rawValue?: MetadataRawValue);
68
+ private parser;
69
+ private parseRawValue;
70
+ }
@@ -0,0 +1,68 @@
1
+ import { __decorate } from "tslib";
2
+ import { Memoize } from 'typescript-memoize';
3
+ /**
4
+ * The MetadataField is responsible for three things:
5
+ * 1. Take in some raw data (strings, arrays, numbers, etc)
6
+ * 2. Normalize the input to an array of the input,
7
+ * ie. [string, string], [number, number], [Date, Date], etc
8
+ * 3. Cast the values to their expected `Type`
9
+ *
10
+ * This class gets instiated with a `Type` and a parser of that type. For instance, the
11
+ * `DateField` is a subclass of `MetadataField` with a `Type` of `Date` and a `DateParser`.
12
+ *
13
+ * When using a `DateField`, you can pass it a string date and it will cast it to a javascript Date,
14
+ * ie:
15
+ *
16
+ * ```
17
+ * const dateField = new DateField('2020-02-13')
18
+ * dateField.value = Date(2020-02-13) // native javascript Date object
19
+ * dateField.values = [Date(2020-02-13)] // the normalized array of values
20
+ * dateField.rawValue = '2020-02-13' // the raw string that was passed in
21
+ * ```
22
+ *
23
+ * @class MetadataField
24
+ * @template Type The type of metadata this is (string, number, Date, etc)
25
+ * @template FieldParserInterfaceType The parser for that type (StringParser, NumberParser, etc)
26
+ */
27
+ export class MetadataField {
28
+ constructor(parser, rawValue) {
29
+ this.parser = parser;
30
+ this.rawValue = rawValue;
31
+ }
32
+
33
+ /** @inheritdoc */
34
+ get values() {
35
+ const values = this.parseRawValue();
36
+ return values;
37
+ }
38
+
39
+ /** @inheritdoc */
40
+ get value() {
41
+ return this.values[0];
42
+ }
43
+
44
+ parseRawValue() {
45
+ if (this.rawValue === undefined)
46
+ return [];
47
+ const rawValues = Array.isArray(this.rawValue)
48
+ ? this.rawValue
49
+ : [this.rawValue];
50
+ const values = [];
51
+ rawValues.forEach(value => {
52
+ const parsed = this.parser.parseValue(value);
53
+ if (Array.isArray(parsed)) {
54
+ values.push(...parsed);
55
+ }
56
+ else if (parsed !== undefined)
57
+ values.push(parsed);
58
+ });
59
+ return values;
60
+ }
61
+ }
62
+ __decorate([
63
+ Memoize()
64
+ ], MetadataField.prototype, "values", null);
65
+ __decorate([
66
+ Memoize()
67
+ ], MetadataField.prototype, "value", null);
68
+ // # sourceMappingURL=metadata-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-field.js","sourceRoot":"","sources":["../../../../src/models/metadata-fields/metadata-field.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAyC7C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,aAAa;IAmBxB,YAAY,MAAgC,EAAE,QAA2B;QACvE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAdD,kBAAkB;IACP,IAAI,MAAM;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,kBAAkB;IACP,IAAI,KAAK;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IASO,aAAa;QACnB,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC5C,CAAC,CAAC,IAAI,CAAC,QAAQ;YACf,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpB,MAAM,MAAM,GAAW,EAAE,CAAC;QAC1B,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACzB,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;aACxB;iBAAM;gBACL,IAAI,MAAM,KAAK,SAAS;oBAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC/C;QACH,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAjCY;IAAV,OAAO,EAAE;2CAGT;AAGU;IAAV,OAAO,EAAE;0CAET","sourcesContent":["import { Memoize } from 'typescript-memoize';\nimport { FieldParserInterface } from '@internetarchive/field-parsers';\n\n/**\n * The MetadataRawValue is all of the possible raw types we can get for a field.\n *\n * This allows the parsers to know if they can handle the raw value or not and\n * how to handle it if they can.\n */\nexport type MetadataRawValue = string | string[] | number | boolean;\n\nexport interface MetadataFieldInterface<T> {\n /**\n * The raw value received from the API response\n *\n * @type {MetadataRawValue}\n * @memberof MetadataField\n */\n rawValue?: MetadataRawValue;\n\n /**\n * The first value if there are multiple or the only value if there is one\n *\n * @readonly\n * @type {(T | undefined)}\n * @memberof MetadataField\n */\n value?: T;\n\n /**\n * The array of all values for the field.\n *\n * Many fields only contain a single value and\n * can be accessed via the `.value` getter\n *\n * @type {T[]}\n * @memberof MetadataField\n */\n values: T[];\n}\n\n/**\n * The MetadataField is responsible for three things:\n * 1. Take in some raw data (strings, arrays, numbers, etc)\n * 2. Normalize the input to an array of the input,\n * ie. [string, string], [number, number], [Date, Date], etc\n * 3. Cast the values to their expected `Type`\n *\n * This class gets instiated with a `Type` and a parser of that type. For instance, the\n * `DateField` is a subclass of `MetadataField` with a `Type` of `Date` and a `DateParser`.\n *\n * When using a `DateField`, you can pass it a string date and it will cast it to a javascript Date,\n * ie:\n *\n * ```\n * const dateField = new DateField('2020-02-13')\n * dateField.value = Date(2020-02-13) // native javascript Date object\n * dateField.values = [Date(2020-02-13)] // the normalized array of values\n * dateField.rawValue = '2020-02-13' // the raw string that was passed in\n * ```\n *\n * @class MetadataField\n * @template Type The type of metadata this is (string, number, Date, etc)\n * @template FieldParserInterfaceType The parser for that type (StringParser, NumberParser, etc)\n */\nexport class MetadataField<\n Type,\n FieldParserInterfaceType extends FieldParserInterface<Type | Type[]>\n> implements MetadataFieldInterface<Type>\n{\n /** @inheritdoc */\n rawValue?: MetadataRawValue;\n\n /** @inheritdoc */\n @Memoize() get values(): Type[] {\n const values = this.parseRawValue();\n return values;\n }\n\n /** @inheritdoc */\n @Memoize() get value(): Type | undefined {\n return this.values[0];\n }\n\n constructor(parser: FieldParserInterfaceType, rawValue?: MetadataRawValue) {\n this.parser = parser;\n this.rawValue = rawValue;\n }\n\n private parser: FieldParserInterfaceType;\n\n private parseRawValue(): Type[] {\n if (this.rawValue === undefined) return [];\n const rawValues = Array.isArray(this.rawValue)\n ? this.rawValue\n : [this.rawValue];\n const values: Type[] = [];\n rawValues.forEach(value => {\n const parsed = this.parser.parseValue(value);\n if (Array.isArray(parsed)) {\n values.push(...parsed);\n } else {\n if (parsed !== undefined) values.push(parsed);\n }\n });\n return values;\n }\n}\n"]}
@@ -0,0 +1,169 @@
1
+ import { BooleanField } from './metadata-fields/field-types/boolean';
2
+ import { DateField } from './metadata-fields/field-types/date';
3
+ import { DurationField } from './metadata-fields/field-types/duration';
4
+ import { NumberField } from './metadata-fields/field-types/number';
5
+ import { StringField } from './metadata-fields/field-types/string';
6
+ import { PageProgressionField } from './metadata-fields/field-types/page-progression';
7
+ import { ByteField } from './metadata-fields/field-types/byte';
8
+ import { MediaTypeField } from './metadata-fields/field-types/mediatype';
9
+ import { StringListField } from './metadata-fields/field-types/list';
10
+ /**
11
+ * Metadata is an expansive model that describes an Item.
12
+ *
13
+ * The fields in here get casted to their respective field types. See `metadata-fields/field-type`.
14
+ *
15
+ * Add additional fields as needed.
16
+ *
17
+ * @export
18
+ * @class Metadata
19
+ */
20
+ export declare class Metadata {
21
+ /**
22
+ * This is the raw metadata reponse; useful for inspecting the raw data returned from the server.
23
+ *
24
+ * @type { string: any }
25
+ * @memberof Metadata
26
+ */
27
+ rawMetadata?: Record<string, any>;
28
+ /**
29
+ * The item identifier.
30
+ *
31
+ * _Note_ This is a plain string instead of a `MetadataField` since it's
32
+ * the primary key of the item.
33
+ *
34
+ * @type {string}
35
+ * @memberof Metadata
36
+ */
37
+ get identifier(): string | undefined;
38
+ get addeddate(): DateField | undefined;
39
+ get audio_codec(): StringField | undefined;
40
+ get audio_sample_rate(): NumberField | undefined;
41
+ get avg_rating(): NumberField | undefined;
42
+ /**
43
+ * All of the collections that an Item is in, including
44
+ * all of the side-loaded collections from the ListAPI
45
+ * and SimpleListsAPI like `fav-*`
46
+ *
47
+ * @type {StringField}
48
+ * @memberof Metadata
49
+ */
50
+ get collection(): StringField | undefined;
51
+ /**
52
+ * The "natural" collections for an item before augmentation
53
+ * by side-loaded collections like ListsAPI and SimpleLists
54
+ *
55
+ * The `collection` field above includes things like all of
56
+ * the `fav-*` collections, whereas this is only the collections
57
+ * that have been directly added in the hierarchy.
58
+ *
59
+ * @type {StringField}
60
+ * @memberof Metadata
61
+ */
62
+ get collections_raw(): StringField | undefined;
63
+ /**
64
+ * The size of a collection in bytes
65
+ *
66
+ * @type {ByteField}
67
+ * @memberof Metadata
68
+ */
69
+ get collection_size(): ByteField | undefined;
70
+ get contributor(): StringField | undefined;
71
+ get coverage(): StringField | undefined;
72
+ get creator(): StringField | undefined;
73
+ get collection_layout(): StringField | undefined;
74
+ get date(): DateField | undefined;
75
+ get description(): StringField | undefined;
76
+ /**
77
+ * All time download count
78
+ *
79
+ * @type {NumberField}
80
+ * @memberof Metadata
81
+ */
82
+ get downloads(): NumberField | undefined;
83
+ /**
84
+ * The item duration in seconds
85
+ *
86
+ * @type {DurationField}
87
+ * @memberof Metadata
88
+ */
89
+ get duration(): DurationField | undefined;
90
+ get 'external-identifier'(): StringField | undefined;
91
+ /**
92
+ * The number of files in an item
93
+ *
94
+ * @type {NumberField}
95
+ * @memberof Metadata
96
+ */
97
+ get files_count(): NumberField | undefined;
98
+ get indexdate(): DateField | undefined;
99
+ get isbn(): StringField | undefined;
100
+ get issue(): StringField | undefined;
101
+ /**
102
+ * For collections, the number of items in the collection
103
+ *
104
+ * @type {NumberField}
105
+ * @memberof Metadata
106
+ */
107
+ get item_count(): NumberField | undefined;
108
+ /**
109
+ * The size of the item in bytes
110
+ *
111
+ * @type {NumberField}
112
+ * @memberof Metadata
113
+ */
114
+ get item_size(): ByteField | undefined;
115
+ get language(): StringField | undefined;
116
+ get length(): DurationField | undefined;
117
+ get lineage(): StringField | undefined;
118
+ /**
119
+ * The number of downloads in the last month
120
+ *
121
+ * @type {NumberField}
122
+ * @memberof Metadata
123
+ */
124
+ get month(): NumberField | undefined;
125
+ get mediatype(): MediaTypeField | undefined;
126
+ get noindex(): BooleanField | undefined;
127
+ get notes(): StringField | undefined;
128
+ /**
129
+ * The number of users that have favorited the item
130
+ *
131
+ * @type {NumberField}
132
+ * @memberof Metadata
133
+ */
134
+ get num_favorites(): NumberField | undefined;
135
+ get num_reviews(): NumberField | undefined;
136
+ get openlibrary_edition(): StringField | undefined;
137
+ get openlibrary_work(): StringField | undefined;
138
+ get page_progression(): PageProgressionField | undefined;
139
+ get partner(): StringField | undefined;
140
+ get ppi(): NumberField | undefined;
141
+ get publicdate(): DateField | undefined;
142
+ get publisher(): StringField | undefined;
143
+ get reviewdate(): DateField | undefined;
144
+ get runtime(): DurationField | undefined;
145
+ get scanner(): StringField | undefined;
146
+ get source(): StringField | undefined;
147
+ get start_localtime(): DateField | undefined;
148
+ get start_time(): DateField | undefined;
149
+ get stop_time(): DateField | undefined;
150
+ get subject(): StringListField | undefined;
151
+ get taper(): StringField | undefined;
152
+ get title(): StringField | undefined;
153
+ get transferer(): StringField | undefined;
154
+ get track(): NumberField | undefined;
155
+ get type(): StringField | undefined;
156
+ get uploader(): StringField | undefined;
157
+ get utc_offset(): NumberField | undefined;
158
+ get venue(): StringField | undefined;
159
+ get volume(): StringField | undefined;
160
+ /**
161
+ * The number of downloads in the last week
162
+ *
163
+ * @type {NumberField}
164
+ * @memberof Metadata
165
+ */
166
+ get week(): NumberField | undefined;
167
+ get year(): DateField | undefined;
168
+ constructor(json: Record<string, any>);
169
+ }