@larsgw/formica 0.7.2 → 0.7.3

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/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## [0.7.3](https://github.com/identification-resources/formica/compare/v0.7.2...v0.7.3) (2025-04-17)
2
+
3
+
4
+ ### Features
5
+
6
+ * **catalog:** update validation for identifiers ([156a703](https://github.com/identification-resources/formica/commit/156a7036ab09c411d091bc9d0f628831a30ba3f5))
7
+
8
+
9
+
1
10
  ## [0.7.2](https://github.com/identification-resources/formica/compare/v0.7.1...v0.7.2) (2025-04-02)
2
11
 
3
12
 
@@ -22,10 +22,12 @@ var Author = /** @class */ (function (_super) {
22
22
  __extends(Author, _super);
23
23
  function Author(values) {
24
24
  return _super.call(this, values, {
25
- name: { required: true, multiple: false },
25
+ name: { required: true, multiple: true },
26
+ id: { required: true, multiple: false, format: value_1.FORMATS.AUTHOR_ID },
26
27
  qid: { required: false, multiple: false, format: value_1.FORMATS.QID },
27
- main_full_name: { required: false, multiple: false },
28
- full_names: { required: false, multiple: true }
28
+ display_name: { required: false, multiple: false },
29
+ full_names: { required: false, multiple: true },
30
+ duplicate_of: { required: false, multiple: false, format: value_1.FORMATS.AUTHOR_ID }
29
31
  }) || this;
30
32
  }
31
33
  return Author;
@@ -7,9 +7,9 @@ var place_1 = require("./place");
7
7
  var taxon_1 = require("./taxon");
8
8
  var work_1 = require("./work");
9
9
  exports.TYPE_INFO = {
10
- authors: [author_1.Author, 'name'],
11
- publishers: [publisher_1.Publisher, 'name'],
12
- places: [place_1.Place, 'name'],
13
- taxa: [taxon_1.Taxon, 'name'],
10
+ authors: [author_1.Author, 'id'],
11
+ publishers: [publisher_1.Publisher, 'id'],
12
+ places: [place_1.Place, 'id'],
13
+ taxa: [taxon_1.Taxon, 'id'],
14
14
  catalog: [work_1.Work, 'id']
15
15
  };
@@ -23,8 +23,10 @@ var Place = /** @class */ (function (_super) {
23
23
  function Place(values) {
24
24
  return _super.call(this, values, {
25
25
  name: { required: true, multiple: false },
26
+ id: { required: true, multiple: false, format: value_1.FORMATS.PLACE_ID },
26
27
  qid: { required: false, multiple: false, format: value_1.FORMATS.QID },
27
- display_name: { required: false, multiple: false }
28
+ display_name: { required: false, multiple: false },
29
+ duplicate_of: { required: false, multiple: false, format: value_1.FORMATS.PLACE_ID }
28
30
  }) || this;
29
31
  }
30
32
  return Place;
@@ -22,10 +22,12 @@ var Publisher = /** @class */ (function (_super) {
22
22
  __extends(Publisher, _super);
23
23
  function Publisher(values) {
24
24
  return _super.call(this, values, {
25
- name: { required: true, multiple: false },
25
+ name: { required: true, multiple: true },
26
+ id: { required: true, multiple: false, format: value_1.FORMATS.PUBLISHER_ID },
26
27
  qid: { required: false, multiple: false, format: value_1.FORMATS.QID },
27
- full_name: { required: false, multiple: false },
28
- long_name: { required: false, multiple: true }
28
+ display_name: { required: false, multiple: false },
29
+ full_names: { required: false, multiple: true },
30
+ duplicate_of: { required: false, multiple: false, format: value_1.FORMATS.PUBLISHER_ID }
29
31
  }) || this;
30
32
  }
31
33
  return Publisher;
@@ -23,11 +23,13 @@ var Taxon = /** @class */ (function (_super) {
23
23
  function Taxon(values) {
24
24
  return _super.call(this, values, {
25
25
  name: { required: true, multiple: false },
26
+ id: { required: true, multiple: false, format: value_1.FORMATS.TAXON_ID },
26
27
  qid: { required: false, multiple: false, format: value_1.FORMATS.QID },
27
28
  rank: { required: false, multiple: false },
28
29
  gbif: { required: false, multiple: false, format: value_1.FORMATS.INTEGER },
29
30
  children_gbif: { required: false, multiple: true, format: value_1.FORMATS.INTEGER },
30
- ancestors_gbif: { required: false, multiple: true, format: value_1.FORMATS.INTEGER }
31
+ ancestors_gbif: { required: false, multiple: true, format: value_1.FORMATS.INTEGER },
32
+ duplicate_of: { required: false, multiple: false, format: value_1.FORMATS.TAXON_ID }
31
33
  }) || this;
32
34
  }
33
35
  return Taxon;
@@ -22,7 +22,7 @@ var Work = /** @class */ (function (_super) {
22
22
  __extends(Work, _super);
23
23
  function Work(values) {
24
24
  return _super.call(this, values, {
25
- id: { required: true, multiple: false, format: value_1.FORMATS.ID },
25
+ id: { required: true, multiple: false, format: value_1.FORMATS.WORK_ID },
26
26
  title: { required: true, multiple: value_1.CHECK.MULTILANG },
27
27
  author: { required: false, multiple: true },
28
28
  url: { required: false, multiple: true, format: value_1.FORMATS.URL },
@@ -49,10 +49,10 @@ var Work = /** @class */ (function (_super) {
49
49
  region: { required: true, multiple: true },
50
50
  complete: { required: false, multiple: false, format: value_1.FORMATS.COMPLETE },
51
51
  target_taxa: { required: false, multiple: true },
52
- listed_in: { required: false, multiple: true, format: value_1.FORMATS.ID },
53
- part_of: { required: false, multiple: true, format: value_1.FORMATS.ID },
54
- version_of: { required: false, multiple: true, format: value_1.FORMATS.ID },
55
- duplicate_of: { required: false, multiple: false, format: value_1.FORMATS.ID }
52
+ listed_in: { required: false, multiple: true, format: value_1.FORMATS.WORK_ID },
53
+ part_of: { required: false, multiple: true, format: value_1.FORMATS.WORK_ID },
54
+ version_of: { required: false, multiple: true, format: value_1.FORMATS.WORK_ID },
55
+ duplicate_of: { required: false, multiple: false, format: value_1.FORMATS.WORK_ID }
56
56
  }) || this;
57
57
  }
58
58
  Work.prototype.deriveFields = function () {
@@ -2,7 +2,11 @@ export declare const FORMATS: {
2
2
  ENTRY_TYPE: string[];
3
3
  KEY_TYPE: string[];
4
4
  COMPLETE: string[];
5
- ID: RegExp;
5
+ WORK_ID: RegExp;
6
+ AUTHOR_ID: RegExp;
7
+ PLACE_ID: RegExp;
8
+ PUBLISHER_ID: RegExp;
9
+ TAXON_ID: RegExp;
6
10
  EDTF_0: RegExp;
7
11
  ISSN_L: RegExp;
8
12
  ISBN: RegExp;
@@ -10,7 +10,11 @@ exports.FORMATS = {
10
10
  ENTRY_TYPE: ['print', 'online', 'cd', 'application'],
11
11
  KEY_TYPE: ['key', 'matrix', 'reference', 'gallery', 'checklist', 'supplement', 'collection', 'algorithm'],
12
12
  COMPLETE: ['TRUE', 'FALSE'],
13
- ID: /^B\d+$/,
13
+ WORK_ID: /^B[1-9]\d*$/,
14
+ AUTHOR_ID: /^A[1-9]\d*$/,
15
+ PLACE_ID: /^G[1-9]\d*$/,
16
+ PUBLISHER_ID: /^P[1-9]\d*$/,
17
+ TAXON_ID: /^T[1-9]\d*$/,
14
18
  EDTF_0: /^(\d{4}(-\d{2}(-\d{2}(T\d{2}:\d{2}:\d{2}(Z|[-+]\d{2}(:\d{2})?))?)?)?|\d{4}(-\d{2}(-\d{2})?)?\/(\d{4}(-\d{2}(-\d{2})?)?|\.\.))$/,
15
19
  ISSN_L: /^[0-9]{4}-[0-9]{3}[0-9X]$/,
16
20
  ISBN: /^(\d{13}|\d{9}[0-9X])$/,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@larsgw/formica",
3
- "version": "0.7.2",
3
+ "version": "0.7.3",
4
4
  "description": "SDK and tools for data from the Library of Identification Resources",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -4,10 +4,12 @@ import { Entity } from '../entity'
4
4
  export class Author extends Entity {
5
5
  constructor (values: Record<string, string>) {
6
6
  super(values, {
7
- name: { required: true, multiple: false },
7
+ name: { required: true, multiple: true },
8
+ id: { required: true, multiple: false, format: FORMATS.AUTHOR_ID },
8
9
  qid: { required: false, multiple: false, format: FORMATS.QID },
9
- main_full_name: { required: false, multiple: false },
10
- full_names: { required: false, multiple: true }
10
+ display_name: { required: false, multiple: false },
11
+ full_names: { required: false, multiple: true },
12
+ duplicate_of: { required: false, multiple: false, format: FORMATS.AUTHOR_ID }
11
13
  })
12
14
  }
13
15
  }
@@ -6,9 +6,9 @@ import { Taxon } from './taxon'
6
6
  import { Work } from './work'
7
7
 
8
8
  export const TYPE_INFO: Record<string, [typeof Entity, string]> = {
9
- authors: [Author, 'name'],
10
- publishers: [Publisher, 'name'],
11
- places: [Place, 'name'],
12
- taxa: [Taxon, 'name'],
9
+ authors: [Author, 'id'],
10
+ publishers: [Publisher, 'id'],
11
+ places: [Place, 'id'],
12
+ taxa: [Taxon, 'id'],
13
13
  catalog: [Work, 'id']
14
14
  }
@@ -5,8 +5,10 @@ export class Place extends Entity {
5
5
  constructor (values: Record<string, string>) {
6
6
  super(values, {
7
7
  name: { required: true, multiple: false },
8
+ id: { required: true, multiple: false, format: FORMATS.PLACE_ID },
8
9
  qid: { required: false, multiple: false, format: FORMATS.QID },
9
- display_name: { required: false, multiple: false }
10
+ display_name: { required: false, multiple: false },
11
+ duplicate_of: { required: false, multiple: false, format: FORMATS.PLACE_ID }
10
12
  })
11
13
  }
12
14
  }
@@ -4,10 +4,12 @@ import { Entity } from '../entity'
4
4
  export class Publisher extends Entity {
5
5
  constructor (values: Record<string, string>) {
6
6
  super(values, {
7
- name: { required: true, multiple: false },
7
+ name: { required: true, multiple: true },
8
+ id: { required: true, multiple: false, format: FORMATS.PUBLISHER_ID },
8
9
  qid: { required: false, multiple: false, format: FORMATS.QID },
9
- full_name: { required: false, multiple: false },
10
- long_name: { required: false, multiple: true }
10
+ display_name: { required: false, multiple: false },
11
+ full_names: { required: false, multiple: true },
12
+ duplicate_of: { required: false, multiple: false, format: FORMATS.PUBLISHER_ID }
11
13
  })
12
14
  }
13
15
  }
@@ -5,11 +5,13 @@ export class Taxon extends Entity {
5
5
  constructor (values: Record<string, string>) {
6
6
  super(values, {
7
7
  name: { required: true, multiple: false },
8
+ id: { required: true, multiple: false, format: FORMATS.TAXON_ID },
8
9
  qid: { required: false, multiple: false, format: FORMATS.QID },
9
10
  rank: { required: false, multiple: false },
10
11
  gbif: { required: false, multiple: false, format: FORMATS.INTEGER },
11
12
  children_gbif: { required: false, multiple: true, format: FORMATS.INTEGER },
12
- ancestors_gbif: { required: false, multiple: true, format: FORMATS.INTEGER }
13
+ ancestors_gbif: { required: false, multiple: true, format: FORMATS.INTEGER },
14
+ duplicate_of: { required: false, multiple: false, format: FORMATS.TAXON_ID }
13
15
  })
14
16
  }
15
17
  }
@@ -4,7 +4,7 @@ import { Entity } from '../entity'
4
4
  export class Work extends Entity {
5
5
  constructor (values: Record<string, string>) {
6
6
  super(values, {
7
- id: { required: true, multiple: false, format: FORMATS.ID },
7
+ id: { required: true, multiple: false, format: FORMATS.WORK_ID },
8
8
  title: { required: true, multiple: CHECK.MULTILANG },
9
9
  author: { required: false, multiple: true },
10
10
  url: { required: false, multiple: true, format: FORMATS.URL },
@@ -31,10 +31,10 @@ export class Work extends Entity {
31
31
  region: { required: true, multiple: true },
32
32
  complete: { required: false, multiple: false, format: FORMATS.COMPLETE },
33
33
  target_taxa: { required: false, multiple: true },
34
- listed_in: { required: false, multiple: true, format: FORMATS.ID },
35
- part_of: { required: false, multiple: true, format: FORMATS.ID },
36
- version_of: { required: false, multiple: true, format: FORMATS.ID },
37
- duplicate_of: { required: false, multiple: false, format: FORMATS.ID }
34
+ listed_in: { required: false, multiple: true, format: FORMATS.WORK_ID },
35
+ part_of: { required: false, multiple: true, format: FORMATS.WORK_ID },
36
+ version_of: { required: false, multiple: true, format: FORMATS.WORK_ID },
37
+ duplicate_of: { required: false, multiple: false, format: FORMATS.WORK_ID }
38
38
  })
39
39
  }
40
40
 
@@ -10,7 +10,11 @@ export const FORMATS = {
10
10
  KEY_TYPE: ['key', 'matrix', 'reference', 'gallery', 'checklist', 'supplement', 'collection', 'algorithm'],
11
11
  COMPLETE: ['TRUE', 'FALSE'],
12
12
 
13
- ID: /^B\d+$/,
13
+ WORK_ID: /^B[1-9]\d*$/,
14
+ AUTHOR_ID: /^A[1-9]\d*$/,
15
+ PLACE_ID: /^G[1-9]\d*$/,
16
+ PUBLISHER_ID: /^P[1-9]\d*$/,
17
+ TAXON_ID: /^T[1-9]\d*$/,
14
18
  EDTF_0: /^(\d{4}(-\d{2}(-\d{2}(T\d{2}:\d{2}:\d{2}(Z|[-+]\d{2}(:\d{2})?))?)?)?|\d{4}(-\d{2}(-\d{2})?)?\/(\d{4}(-\d{2}(-\d{2})?)?|\.\.))$/,
15
19
  ISSN_L: /^[0-9]{4}-[0-9]{3}[0-9X]$/,
16
20
  ISBN: /^(\d{13}|\d{9}[0-9X])$/,