@based/schema 2.0.0 → 2.1.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.
package/dist/types.d.ts CHANGED
@@ -6,7 +6,8 @@ export type AllowedTypes = (string | {
6
6
  type?: string;
7
7
  $filter: any | any[];
8
8
  })[];
9
- export type BasedSchemaFieldType = 'array' | 'object' | 'record' | 'set' | 'string' | 'boolean' | 'number' | 'json' | 'integer' | 'timestamp' | 'reference' | 'references' | 'text' | 'cardinality';
9
+ export declare const basedSchemaFieldTypes: readonly ["array", "object", "record", "set", "string", "boolean", "number", "json", "integer", "timestamp", "reference", "references", "text", "cardinality"];
10
+ export type BasedSchemaFieldType = (typeof basedSchemaFieldTypes)[number];
10
11
  export declare const isCollection: (type: string) => boolean;
11
12
  export type BasedSchemaPattern = string;
12
13
  export type BasedSchemaLanguage = Language;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,WAAW,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAmB1C,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,GAAG,GAAG,GAAG,EAAE,CAAA;CAAE,CAAC,EAAE,CAAA;AAE/E,eAAO,MAAM,qBAAqB,gKAexB,CAAA;AACV,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEzE,eAAO,MAAM,YAAY,SAAU,MAAM,KAAG,OAE3C,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAA;AAEvC,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAA;AAE1C,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAA;AAG1C,MAAM,MAAM,2BAA2B,GACnC,WAAW,GACX,YAAY,GACZ,eAAe,GACf,WAAW,GACX,YAAY,GACZ,WAAW,GACX,SAAS,GACT,SAAS,GACT,SAAS,GACT,KAAK,GACL,GAAG,MAAM,IAAI,MAAM,EAAE,CAAA;AAEzB,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,CAAC,EACF;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GACnC;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACzC,IAAI,CAAC,EAAE,oBAAoB,CAAA;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAA;IAChB,OAAO,CAAC,EAAE,GAAG,CAAA;IAEb,eAAe,CAAC,EAAE,CAChB,KAAK,EAAE,GAAG,EACV,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EACzB,MAAM,EAAE,cAAc,KACnB,OAAO,CAAC,OAAO,CAAC,CAAA;IACrB,KAAK,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAAA;IAE3C,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAGD,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,gBAAgB,CAAC,EAAE,2BAA2B,CAAA;IAC9C,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,MAAM,CAAC,EACH,OAAO,GACP,KAAK,GACL,YAAY,GACZ,IAAI,GACJ,SAAS,GACT,MAAM,GACN,MAAM,GACN,KAAK,GACL,OAAO,GACP,cAAc,GACd,cAAc,GACd,qBAAqB,GACrB,gBAAgB,GAChB,MAAM,GACN,WAAW,GACX,WAAW,GACX,OAAO,GACP,QAAQ,GACR,eAAe,GACf,MAAM,GACN,aAAa,GACb,OAAO,GACP,UAAU,GACV,UAAU,GACV,KAAK,GACL,MAAM,GACN,KAAK,GACL,KAAK,GACL,MAAM,GACN,YAAY,GACZ,YAAY,GACZ,cAAc,GACd,KAAK,GACL,MAAM,GACN,MAAM,GACN,MAAM,GACN,aAAa,GACb,oBAAoB,GACpB,YAAY,GACZ,mBAAmB,GACnB,iBAAiB,GACjB,UAAU,GACV,YAAY,GACZ,SAAS,GACT,SAAS,GACT,SAAS,GACT,gBAAgB,GAChB,gBAAgB,GAChB,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,WAAW,GACX,UAAU,GACV,SAAS,GACT,MAAM,GACN,gBAAgB,GAChB,OAAO,GACP,cAAc,GACd,KAAK,CAAA;CACV,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,QAAQ,CAAA;CAGf,GAAG,sBAAsB,GACxB,uBAAuB,CAAA;AAEzB,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,GAAG,EAAE,CAAA;CACZ,GAAG,sBAAsB,CAAA;AAO1B,KAAK,cAAc,GAAG;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,cAAc,GAAG;IACpD,IAAI,EAAE,QAAQ,CAAA;CACf,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,aAAa,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,cAAc,GAAG;IACrD,IAAI,EAAE,SAAS,CAAA;CAChB,GAAG,sBAAsB,CAAA;AAE1B,MAAM,MAAM,yBAAyB,GAAG,cAAc,GAAG;IACvD,IAAI,EAAE,WAAW,CAAA;CAClB,GAAG,sBAAsB,CAAA;AAE1B,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,SAAS,CAAA;CAChB,GAAG,sBAAsB,CAAA;AAG1B,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,sBAAsB,CAAA;AAE1B,MAAM,MAAM,yBAAyB,GACjC,sBAAsB,GACtB,sBAAsB,GACtB,uBAAuB,GACvB,yBAAyB,GACzB,oBAAoB,GACpB,uBAAuB,GACvB,oBAAoB,GACpB,sBAAsB,CAAA;AAG1B,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAA;CACjC,GAAG,sBAAsB,GACxB,uBAAuB,CAAA;AAEzB,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,QAAQ,CAAA;IACd,UAAU,EAAE;QACV,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAA;KACjC,CAAA;IACD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB,GAAG,sBAAsB,CAAA;AAE1B,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,QAAQ,CAAA;IACd,MAAM,EAAE,gBAAgB,CAAA;CACzB,GAAG,sBAAsB,CAAA;AAE1B,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,gBAAgB,CAAA;CACzB,GAAG,sBAAsB,CAAA;AAE1B,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,KAAK,CAAA;IACX,KAAK,EAAE,yBAAyB,CAAA;CACjC,GAAG,sBAAsB,CAAA;AAE1B,MAAM,MAAM,0BAA0B,GAClC,oBAAoB,GACpB,sBAAsB,GACtB,sBAAsB,GACtB,qBAAqB,GACrB,mBAAmB,CAAA;AAGvB,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,WAAW,CAAA;IACjB,aAAa,CAAC,EAAE;QACd,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;IAED,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,GAAG,sBAAsB,CAAA;AAG1B,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,YAAY,CAAA;IAClB,aAAa,CAAC,EAAE;QACd,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;IACD,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,GAAG,sBAAsB,CAAA;AAG1B,MAAM,MAAM,gBAAgB,GACxB,0BAA0B,GAC1B,yBAAyB,GACzB,yBAAyB,GACzB,0BAA0B,GAC1B,2BAA2B,GAC3B;IACE,IAAI,CAAC,EAAE,oBAAoB,CAAA;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAEL,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,oBAAoB,CAAA;IAC1B,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,EAAE,sBAAsB,CAAA;IAC9B,GAAG,EAAE,mBAAmB,CAAA;IACxB,MAAM,EAAE,sBAAsB,CAAA;IAC9B,MAAM,EAAE,sBAAsB,CAAA;IAC9B,OAAO,EAAE,uBAAuB,CAAA;IAChC,MAAM,EAAE,sBAAsB,CAAA;IAC9B,IAAI,EAAE,oBAAoB,CAAA;IAC1B,OAAO,EAAE,uBAAuB,CAAA;IAChC,SAAS,EAAE,yBAAyB,CAAA;IACpC,SAAS,EAAE,yBAAyB,CAAA;IACpC,UAAU,EAAE,0BAA0B,CAAA;IACtC,IAAI,EAAE,oBAAoB,CAAA;IAC1B,WAAW,EAAE,2BAA2B,CAAA;CACzC,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE;QACN,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAA;KACjC,CAAA;IACD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,qBAAqB,CAAA;IAC9B,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,KAAK,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAAA;IAE3C,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAGD,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAA;IACpC,iBAAiB,CAAC,EAAE,OAAO,CACzB,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,CAAC,CACnD,CAAA;IACD,IAAI,EAAE,eAAe,CAAA;IAIrB,KAAK,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAAA;IAC3C,KAAK,EAAE;QACL,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAAA;KAChC,CAAA;IACD,mBAAmB,EAAE;QACnB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;KACzB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,WAAW,CAAC,eAAe,CAAC,CAAA;AAEjE,MAAM,MAAM,uBAAuB,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAA;AAEnE,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,WAAW,CAAC,CAAA;AAEzD,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,WAAW,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,mBAAmB,CAAA;IAC/B,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,CAAA;IAC/B,SAAS,EAAE,uBAAuB,EAAE,CAAA;IACpC,MAAM,EAAE;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,EAAE,CAAA;CAC3C,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,SAAS,CAAC,cAAc,CAAC,GAAG;IAChE,IAAI,EAAE,SAAS,CAAC,cAAc,CAAC,GAAG;QAChC,UAAU,EAAE,eAAe,CAAA;KAC5B,CAAA;CACF,CAAA"}
package/dist/types.js CHANGED
@@ -1,6 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isCollection = void 0;
3
+ exports.isCollection = exports.basedSchemaFieldTypes = void 0;
4
+ exports.basedSchemaFieldTypes = [
5
+ 'array',
6
+ 'object',
7
+ 'record',
8
+ 'set',
9
+ 'string',
10
+ 'boolean',
11
+ 'number',
12
+ 'json',
13
+ 'integer',
14
+ 'timestamp',
15
+ 'reference',
16
+ 'references',
17
+ 'text',
18
+ 'cardinality',
19
+ ];
4
20
  const isCollection = (type) => {
5
21
  return type === 'array' || type === 'object' || type === 'record';
6
22
  };
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAwCO,MAAM,YAAY,GAAG,CAAC,IAAY,EAAW,EAAE;IACpD,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAA;AACnE,CAAC,CAAA;AAFY,QAAA,YAAY,gBAExB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAwBa,QAAA,qBAAqB,GAAG;IACnC,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,MAAM;IACN,SAAS;IACT,WAAW;IACX,WAAW;IACX,YAAY;IACZ,MAAM;IACN,aAAa;CACL,CAAA;AAGH,MAAM,YAAY,GAAG,CAAC,IAAY,EAAW,EAAE;IACpD,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAA;AACnE,CAAC,CAAA;AAFY,QAAA,YAAY,gBAExB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@based/schema",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
package/src/error.ts DELETED
@@ -1,19 +0,0 @@
1
- export enum ParseError {
2
- 'incorrectFieldType',
3
- 'incorrectNodeType',
4
- 'exceedsMaximum',
5
- 'subceedsMinimum',
6
- 'fieldDoesNotExist',
7
- 'incorrectFormat',
8
- 'referenceIsIncorrectType',
9
- 'valueAndDefault',
10
- 'defaultNotSupported',
11
- 'multipleOperationsNotAllowed',
12
- 'requiredFieldNotDefined',
13
- 'languageNotSupported',
14
- 'invalidJSON',
15
- 'noLanguageFound',
16
- 'cannotDeleteNodeFromModify',
17
- 'nestedModifyObjectNotAllowed',
18
- 'infinityNotSupported',
19
- }
package/src/index.ts DELETED
@@ -1,7 +0,0 @@
1
- export * from './types'
2
-
3
- export * from './validateSchema'
4
-
5
- export * from './walker'
6
-
7
- export * from './set'
package/src/languages.ts DELETED
@@ -1,188 +0,0 @@
1
- export const languages = {
2
- ab: 'Abkhazian',
3
- aa: 'Afar',
4
- af: 'Afrikaans',
5
- ak: 'Akan',
6
- sq: 'Albanian',
7
- am: 'Amharic',
8
- ar: 'Arabic',
9
- an: 'Aragonese',
10
- hy: 'Armenian',
11
- as: 'Assamese',
12
- av: 'Avaric',
13
- ae: 'Avestan',
14
- ay: 'Aymara',
15
- az: 'Azerbaijani',
16
- bm: 'Bambara',
17
- ba: 'Bashkir',
18
- eu: 'Basque',
19
- be: 'Belarusian',
20
- bn: 'Bengali',
21
- bh: 'Bihari languages',
22
- bi: 'Bislama',
23
- bs: 'Bosnian',
24
- br: 'Breton',
25
- bg: 'Bulgarian',
26
- my: 'Burmese',
27
- ca: 'Catalan, Valencian',
28
- km: 'Central Khmer',
29
- ch: 'Chamorro',
30
- ce: 'Chechen',
31
- ny: 'Chichewa, Chewa, Nyanja',
32
- zh: 'Chinese',
33
- cu: 'Church Slavonic, Old Bulgarian, Old Church Slavonic',
34
- cv: 'Chuvash',
35
- kw: 'Cornish',
36
- co: 'Corsican',
37
- cr: 'Cree',
38
- hr: 'Croatian',
39
- cs: 'Czech',
40
- da: 'Danish',
41
- dv: 'Divehi, Dhivehi, Maldivian',
42
- nl: 'Dutch, Flemish',
43
- dz: 'Dzongkha',
44
- en: 'English',
45
- eo: 'Esperanto',
46
- et: 'Estonian',
47
- ee: 'Ewe',
48
- fo: 'Faroese',
49
- fj: 'Fijian',
50
- fi: 'Finnish',
51
- fr: 'French',
52
- ff: 'Fulah',
53
- gd: 'Gaelic, Scottish Gaelic',
54
- gl: 'Galician',
55
- lg: 'Ganda',
56
- ka: 'Georgian',
57
- de: 'German',
58
- ki: 'Gikuyu, Kikuyu',
59
- el: 'Greek (Modern)',
60
- kl: 'Greenlandic, Kalaallisut',
61
- gn: 'Guarani',
62
- gu: 'Gujarati',
63
- ht: 'Haitian, Haitian Creole',
64
- ha: 'Hausa',
65
- he: 'Hebrew',
66
- hz: 'Herero',
67
- hi: 'Hindi',
68
- ho: 'Hiri Motu',
69
- hu: 'Hungarian',
70
- is: 'Icelandic',
71
- io: 'Ido',
72
- ig: 'Igbo',
73
- id: 'Indonesian',
74
- ia: 'Interlingua (International Auxiliary Language Association)',
75
- ie: 'Interlingue',
76
- iu: 'Inuktitut',
77
- ik: 'Inupiaq',
78
- ga: 'Irish',
79
- it: 'Italian',
80
- ja: 'Japanese',
81
- jv: 'Javanese',
82
- kn: 'Kannada',
83
- kr: 'Kanuri',
84
- ks: 'Kashmiri',
85
- kk: 'Kazakh',
86
- rw: 'Kinyarwanda',
87
- kv: 'Komi',
88
- kg: 'Kongo',
89
- ko: 'Korean',
90
- kj: 'Kwanyama, Kuanyama',
91
- ku: 'Kurdish',
92
- ky: 'Kyrgyz',
93
- lo: 'Lao',
94
- la: 'Latin',
95
- lv: 'Latvian',
96
- lb: 'Letzeburgesch, Luxembourgish',
97
- li: 'Limburgish, Limburgan, Limburger',
98
- ln: 'Lingala',
99
- lt: 'Lithuanian',
100
- lu: 'Luba-Katanga',
101
- mk: 'Macedonian',
102
- mg: 'Malagasy',
103
- ms: 'Malay',
104
- ml: 'Malayalam',
105
- mt: 'Maltese',
106
- gv: 'Manx',
107
- mi: 'Maori',
108
- mr: 'Marathi',
109
- mh: 'Marshallese',
110
- ro: 'Moldovan, Moldavian, Romanian',
111
- mn: 'Mongolian',
112
- na: 'Nauru',
113
- nv: 'Navajo, Navaho',
114
- nd: 'Northern Ndebele',
115
- ng: 'Ndonga',
116
- ne: 'Nepali',
117
- se: 'Northern Sami',
118
- no: 'Norwegian',
119
- nb: 'Norwegian Bokmål',
120
- nn: 'Norwegian Nynorsk',
121
- ii: 'Nuosu, Sichuan Yi',
122
- oc: 'Occitan (post 1500)',
123
- oj: 'Ojibwa',
124
- or: 'Oriya',
125
- om: 'Oromo',
126
- os: 'Ossetian, Ossetic',
127
- pi: 'Pali',
128
- pa: 'Panjabi, Punjabi',
129
- ps: 'Pashto, Pushto',
130
- fa: 'Persian',
131
- pl: 'Polish',
132
- pt: 'Portuguese',
133
- qu: 'Quechua',
134
- rm: 'Romansh',
135
- rn: 'Rundi',
136
- ru: 'Russian',
137
- sm: 'Samoan',
138
- sg: 'Sango',
139
- sa: 'Sanskrit',
140
- sc: 'Sardinian',
141
- sr: 'Serbian',
142
- sn: 'Shona',
143
- sd: 'Sindhi',
144
- si: 'Sinhala, Sinhalese',
145
- sk: 'Slovak',
146
- sl: 'Slovenian',
147
- so: 'Somali',
148
- st: 'Sotho, Southern',
149
- nr: 'South Ndebele',
150
- es: 'Spanish, Castilian',
151
- su: 'Sundanese',
152
- sw: 'Swahili',
153
- ss: 'Swati',
154
- sv: 'Swedish',
155
- tl: 'Tagalog',
156
- ty: 'Tahitian',
157
- tg: 'Tajik',
158
- ta: 'Tamil',
159
- tt: 'Tatar',
160
- te: 'Telugu',
161
- th: 'Thai',
162
- bo: 'Tibetan',
163
- ti: 'Tigrinya',
164
- to: 'Tonga (Tonga Islands)',
165
- ts: 'Tsonga',
166
- tn: 'Tswana',
167
- tr: 'Turkish',
168
- tk: 'Turkmen',
169
- tw: 'Twi',
170
- ug: 'Uighur, Uyghur',
171
- uk: 'Ukrainian',
172
- ur: 'Urdu',
173
- uz: 'Uzbek',
174
- ve: 'Venda',
175
- vi: 'Vietnamese',
176
- vo: 'Volap_k',
177
- wa: 'Walloon',
178
- cy: 'Welsh',
179
- fy: 'Western Frisian',
180
- wo: 'Wolof',
181
- xh: 'Xhosa',
182
- yi: 'Yiddish',
183
- yo: 'Yoruba',
184
- za: 'Zhuang, Chuang',
185
- zu: 'Zulu',
186
- }
187
-
188
- export type Language = keyof typeof languages
@@ -1,155 +0,0 @@
1
- import { setByPath } from '@saulx/utils'
2
- import { ParseError } from '../../error'
3
- import { FieldParser, ArgsClass } from '../../walker'
4
- import { BasedSetTarget } from '../../types'
5
-
6
- const collectOperation = (
7
- fromArgs: ArgsClass<BasedSetTarget, 'array'>,
8
- collected: any[],
9
- value: any,
10
- makeNegative?: number
11
- ) => {
12
- fromArgs.collect(value)
13
- if (collected.length) {
14
- const collect = fromArgs.root._opts.collect
15
- for (const args of collected) {
16
- if (makeNegative) {
17
- args.path[fromArgs.path.length] =
18
- args.path[fromArgs.path.length] - makeNegative
19
-
20
- collect(args)
21
- } else {
22
- collect(args)
23
- }
24
- }
25
- }
26
- }
27
-
28
- const parseArray = async (
29
- args: ArgsClass<BasedSetTarget, 'array'>,
30
- value: any,
31
- idx: number = 0
32
- ): Promise<{ collected: ArgsClass<BasedSetTarget>[]; arr: any[] }> => {
33
- const fromValue = Array.isArray(value) ? value : [value]
34
- const q: Promise<any>[] = []
35
- const arr = new Array(fromValue.length)
36
- const collectNested = ['object', 'record', 'text'].includes(
37
- args.fieldSchema.values.type
38
- )
39
- const collected: ArgsClass<BasedSetTarget>[] = []
40
- for (let i = 0; i < fromValue.length; i++) {
41
- q.push(
42
- args.parse({
43
- key: i + idx,
44
- value: fromValue[i],
45
- fieldSchema: args.fieldSchema.values,
46
- collect: (nArgs) => {
47
- const p = nArgs.path.slice(args.path.length)
48
- // @ts-ignore
49
- p[0] = p[0] - idx
50
- setByPath(arr, p, nArgs.value)
51
- if (collectNested) {
52
- collected.push(nArgs)
53
- }
54
- },
55
- })
56
- )
57
- }
58
- await Promise.all(q)
59
- return { arr, collected }
60
- }
61
-
62
- const operations: {
63
- [key: string]: (
64
- args: ArgsClass<BasedSetTarget, 'array'>,
65
- value: any
66
- ) => Promise<void>
67
- } = {
68
- $insert: async (args, value) => {
69
- if (typeof value.$insert.$idx !== 'number') {
70
- args.error(ParseError.incorrectFormat)
71
- return
72
- }
73
- const { collected, arr } = await parseArray(
74
- args,
75
- value.$insert.$value,
76
- value.$insert.$idx
77
- )
78
- value.$insert.$value = arr
79
- collectOperation(args, collected, value)
80
- },
81
- $push: async (args, value) => {
82
- const { collected, arr } = await parseArray(
83
- args,
84
- value.$push.$value ?? value.$push
85
- )
86
- value.$push = arr
87
- collectOperation(args, collected, value, arr.length)
88
- },
89
- $unshift: async (args, value) => {
90
- const { collected, arr } = await parseArray(
91
- args,
92
- value.$unshift.$value ?? value.$unshift
93
- )
94
- value.$unshift = arr
95
- collectOperation(args, collected, value)
96
- },
97
- $remove: async (args, value) => {
98
- if (typeof value.$remove.$idx !== 'number') {
99
- args.error(ParseError.incorrectFormat)
100
- return
101
- }
102
- args.collect(value)
103
- },
104
- $assign: async (args, value) => {
105
- if (
106
- typeof value.$assign !== 'object' ||
107
- typeof value.$assign.$idx !== 'number'
108
- ) {
109
- args.error(ParseError.incorrectFormat)
110
- return
111
- }
112
- await args.parse({
113
- key: value.$assign.$idx,
114
- value: value.$assign.$value,
115
- fieldSchema: args.fieldSchema.values,
116
- })
117
- },
118
- }
119
-
120
- export const array: FieldParser<'array'> = async (args) => {
121
- args.stop()
122
- if (typeof args.value !== 'object') {
123
- args.error(ParseError.incorrectFormat)
124
- return
125
- }
126
- let value = '$value' in args.value ? args.value.$value : args.value
127
- if (Array.isArray(value)) {
128
- const q: Promise<any>[] = []
129
- args.collect({ $delete: true })
130
- for (let i = 0; i < value.length; i++) {
131
- q.push(
132
- args.parse({
133
- key: i,
134
- value: args.value[i],
135
- fieldSchema: args.fieldSchema.values,
136
- })
137
- )
138
- }
139
- await Promise.all(q)
140
- return
141
- }
142
- let hasOperation = false
143
- for (const key in value) {
144
- if (operations[key]) {
145
- if (hasOperation) {
146
- args.error(ParseError.multipleOperationsNotAllowed)
147
- return
148
- }
149
- await operations[key](args, value)
150
- hasOperation = true
151
- } else {
152
- args.error(ParseError.fieldDoesNotExist)
153
- }
154
- }
155
- }
@@ -1,70 +0,0 @@
1
- import { FieldParsers } from '../../walker'
2
- import { ParseError } from '../../error'
3
- import { BasedSetTarget } from '../../types'
4
- import { array } from './array'
5
- import { object, record } from './object'
6
- import { number, integer, timestamp } from './number'
7
- import { string, text } from './string'
8
- import { reference, references } from './references'
9
- import { set } from './set'
10
- import { hashObjectIgnoreKeyOrder, hash } from '@saulx/hash'
11
- import { deepEqual } from '@saulx/utils'
12
-
13
- export const fields: Partial<FieldParsers<BasedSetTarget>> = {
14
- array,
15
- object,
16
- record,
17
- number,
18
- integer,
19
- timestamp,
20
- string,
21
- set,
22
- text,
23
- reference,
24
- references,
25
- cardinality: async (args) => {
26
- let hashedValue: string
27
- if (args.value && typeof args.value === 'object') {
28
- args.stop()
29
- if (args.value.$default !== undefined) {
30
- args.error(ParseError.defaultNotSupported)
31
- return
32
- }
33
- if (args.value.$value !== undefined) {
34
- hashedValue = hashObjectIgnoreKeyOrder(args.value.$value).toString(16)
35
- } else {
36
- hashedValue = hashObjectIgnoreKeyOrder(args.value).toString(16)
37
- }
38
- } else {
39
- hashedValue = hash(args.value).toString(16)
40
- }
41
- args.collect(hashedValue)
42
- },
43
- boolean: async (args) => {
44
- if (typeof args.value !== 'boolean') {
45
- args.error(ParseError.incorrectFormat)
46
- return
47
- }
48
- args.collect()
49
- },
50
- json: async (args) => {
51
- args.stop()
52
- try {
53
- const parsedValue = JSON.stringify(args.value)
54
- args.collect(parsedValue)
55
- } catch (err) {
56
- args.error(ParseError.invalidJSON)
57
- }
58
- },
59
- enum: async (args) => {
60
- // args.stop()
61
- const enumValues = args.fieldSchema.enum
62
- for (let i = 0; i < enumValues.length; i++) {
63
- if (deepEqual(enumValues[i], args.value)) {
64
- args.collect(i)
65
- return
66
- }
67
- }
68
- args.error(ParseError.incorrectFormat)
69
- },
70
- }
@@ -1,144 +0,0 @@
1
- import { ParseError } from '../../error'
2
- import { FieldParser, ArgsClass } from '../../walker'
3
- import { BasedSetTarget } from '../../types'
4
-
5
- type NumberTypes = 'number' | 'timestamp' | 'integer'
6
-
7
- const validateNumber = (
8
- args: ArgsClass<BasedSetTarget, NumberTypes>,
9
- value: number,
10
- ignoreMinMax?: boolean
11
- ): boolean => {
12
- const { fieldSchema } = args
13
- if (typeof value !== 'number') {
14
- args.error(ParseError.incorrectFormat)
15
- return false
16
- }
17
-
18
- if (isNaN(value)) {
19
- args.error(ParseError.incorrectFormat)
20
- return false
21
- }
22
-
23
- if (value === Infinity || value === -Infinity) {
24
- args.error(ParseError.infinityNotSupported)
25
- return false
26
- }
27
-
28
- if (fieldSchema.type === 'integer' && value - Math.floor(value) !== 0) {
29
- args.error(ParseError.incorrectFormat)
30
- return false
31
- }
32
-
33
- if (
34
- fieldSchema.multipleOf &&
35
- value / fieldSchema.multipleOf -
36
- Math.floor(value / fieldSchema.multipleOf) !==
37
- 0
38
- ) {
39
- args.error(ParseError.incorrectFormat)
40
- return false
41
- }
42
-
43
- if (ignoreMinMax) {
44
- // TODO: will be handled in the actual modify command
45
- return true
46
- }
47
-
48
- if (fieldSchema.maximum) {
49
- if (fieldSchema.exclusiveMaximum) {
50
- if (value >= fieldSchema.maximum) {
51
- args.error(ParseError.exceedsMaximum)
52
- return false
53
- }
54
- } else if (value > fieldSchema.maximum) {
55
- args.error(ParseError.exceedsMaximum)
56
- return false
57
- }
58
- }
59
-
60
- if (fieldSchema.minimum) {
61
- if (fieldSchema.exclusiveMinimum) {
62
- if (value <= fieldSchema.minimum) {
63
- args.error(ParseError.subceedsMinimum)
64
- return false
65
- }
66
- } else if (value < fieldSchema.minimum) {
67
- args.error(ParseError.subceedsMinimum)
68
- return false
69
- }
70
- }
71
-
72
- return true
73
- }
74
-
75
- const validate = (
76
- args: ArgsClass<BasedSetTarget, NumberTypes>,
77
- value: any
78
- ): boolean => {
79
- if (value === null) {
80
- return false
81
- }
82
-
83
- if (typeof value !== 'object') {
84
- return validateNumber(args, value)
85
- }
86
- if ('$value' in value) {
87
- return
88
- }
89
-
90
- args.stop()
91
- for (const key in value) {
92
- if (key === '$default') {
93
- if (!validateNumber(args, value.$default)) {
94
- return false
95
- }
96
- } else if (key === '$increment') {
97
- if (!validateNumber(args, value.$increment, true)) {
98
- return false
99
- }
100
- } else if (key === '$decrement') {
101
- if (!validateNumber(args, value.$decrement, true)) {
102
- return false
103
- }
104
- } else {
105
- args.create({ key }).error(ParseError.fieldDoesNotExist)
106
- return false
107
- }
108
- }
109
- return true
110
- }
111
-
112
- export const number: FieldParser<'number'> = async (args) => {
113
- if (!validate(args, args.value)) {
114
- return
115
- }
116
- args.collect()
117
- }
118
-
119
- export const integer: FieldParser<'integer'> = async (args) => {
120
- if (!validate(args, args.value)) {
121
- return
122
- }
123
- args.collect()
124
- }
125
-
126
- export const timestamp: FieldParser<'timestamp'> = async (args) => {
127
- if (typeof args.value === 'string') {
128
- if (args.value === 'now') {
129
- // TODO: + 1s + 10s etc
130
- args.value = Date.now()
131
- } else {
132
- const d = new Date(args.value)
133
- args.value = d.valueOf()
134
- if (isNaN(args.value)) {
135
- args.error(ParseError.incorrectFormat)
136
- return
137
- }
138
- }
139
- }
140
- if (!validateNumber(args, args.value)) {
141
- return
142
- }
143
- args.collect()
144
- }