@based/schema 0.0.15 → 1.0.1

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 (112) hide show
  1. package/dist/{set/error.d.ts → error.d.ts} +4 -2
  2. package/dist/{set/error.js → error.js} +2 -0
  3. package/dist/error.js.map +1 -0
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/index.js.map +1 -1
  7. package/dist/set/fields/array.d.ts +2 -0
  8. package/dist/set/fields/array.js +96 -0
  9. package/dist/set/fields/array.js.map +1 -0
  10. package/dist/set/fields/index.d.ts +3 -0
  11. package/dist/set/fields/index.js +72 -0
  12. package/dist/set/fields/index.js.map +1 -0
  13. package/dist/set/fields/number.d.ts +4 -0
  14. package/dist/set/fields/number.js +121 -0
  15. package/dist/set/fields/number.js.map +1 -0
  16. package/dist/set/fields/object.d.ts +3 -0
  17. package/dist/set/fields/object.js +33 -0
  18. package/dist/set/fields/object.js.map +1 -0
  19. package/dist/set/fields/references.d.ts +3 -0
  20. package/dist/set/fields/references.js +106 -0
  21. package/dist/set/fields/references.js.map +1 -0
  22. package/dist/set/fields/set.d.ts +2 -0
  23. package/dist/set/fields/set.js +63 -0
  24. package/dist/set/fields/set.js.map +1 -0
  25. package/dist/set/fields/string.d.ts +3 -0
  26. package/dist/set/fields/string.js +190 -0
  27. package/dist/set/fields/string.js.map +1 -0
  28. package/dist/set/index.d.ts +2 -5
  29. package/dist/set/index.js +98 -126
  30. package/dist/set/index.js.map +1 -1
  31. package/dist/set/isValidId.d.ts +2 -0
  32. package/dist/set/isValidId.js +21 -0
  33. package/dist/set/isValidId.js.map +1 -0
  34. package/dist/set/types.d.ts +0 -5
  35. package/dist/set/types.js +0 -2
  36. package/dist/types.d.ts +7 -1
  37. package/dist/types.js.map +1 -1
  38. package/dist/walker/args.d.ts +31 -0
  39. package/dist/walker/args.js +120 -0
  40. package/dist/walker/args.js.map +1 -0
  41. package/dist/walker/index.d.ts +6 -0
  42. package/dist/walker/index.js +40 -0
  43. package/dist/walker/index.js.map +1 -0
  44. package/dist/walker/parse.d.ts +2 -0
  45. package/dist/walker/parse.js +157 -0
  46. package/dist/walker/parse.js.map +1 -0
  47. package/dist/walker/types.d.ts +44 -0
  48. package/dist/walker/types.js +9 -0
  49. package/dist/walker/types.js.map +1 -0
  50. package/package.json +2 -2
  51. package/src/{set/error.ts → error.ts} +3 -1
  52. package/src/index.ts +2 -2
  53. package/src/set/fields/array.ts +111 -0
  54. package/src/set/fields/index.ts +69 -0
  55. package/src/set/fields/number.ts +134 -0
  56. package/src/set/fields/object.ts +30 -0
  57. package/src/set/fields/references.ts +114 -0
  58. package/src/set/fields/set.ts +63 -0
  59. package/src/set/fields/string.ts +199 -0
  60. package/src/set/index.ts +103 -188
  61. package/src/set/isValidId.ts +23 -0
  62. package/src/set/types.ts +0 -20
  63. package/src/types.ts +4 -2
  64. package/src/walker/args.ts +159 -0
  65. package/src/walker/index.ts +35 -0
  66. package/src/walker/parse.ts +193 -0
  67. package/src/walker/types.ts +75 -0
  68. package/test/number.ts +289 -543
  69. package/test/reference.ts +150 -198
  70. package/test/rest.ts +227 -0
  71. package/test/string.ts +139 -183
  72. package/test/utils/index.ts +23 -0
  73. package/test/walker.ts +579 -16
  74. package/dist/set/collections.d.ts +0 -5
  75. package/dist/set/collections.js +0 -229
  76. package/dist/set/collections.js.map +0 -1
  77. package/dist/set/error.js.map +0 -1
  78. package/dist/set/number.d.ts +0 -4
  79. package/dist/set/number.js +0 -124
  80. package/dist/set/number.js.map +0 -1
  81. package/dist/set/parseDefaultAndValue.d.ts +0 -3
  82. package/dist/set/parseDefaultAndValue.js +0 -35
  83. package/dist/set/parseDefaultAndValue.js.map +0 -1
  84. package/dist/set/parsers.d.ts +0 -3
  85. package/dist/set/parsers.js +0 -42
  86. package/dist/set/parsers.js.map +0 -1
  87. package/dist/set/references.d.ts +0 -3
  88. package/dist/set/references.js +0 -84
  89. package/dist/set/references.js.map +0 -1
  90. package/dist/set/rest.d.ts +0 -5
  91. package/dist/set/rest.js +0 -76
  92. package/dist/set/rest.js.map +0 -1
  93. package/dist/set/string.d.ts +0 -3
  94. package/dist/set/string.js +0 -173
  95. package/dist/set/string.js.map +0 -1
  96. package/dist/set2/index.d.ts +0 -0
  97. package/dist/set2/index.js +0 -71
  98. package/dist/set2/index.js.map +0 -1
  99. package/dist/walker.d.ts +0 -49
  100. package/dist/walker.js +0 -120
  101. package/dist/walker.js.map +0 -1
  102. package/src/set/collections.ts +0 -338
  103. package/src/set/number.ts +0 -167
  104. package/src/set/parseDefaultAndValue.ts +0 -54
  105. package/src/set/parsers.ts +0 -20
  106. package/src/set/references.ts +0 -113
  107. package/src/set/rest.ts +0 -135
  108. package/src/set/string.ts +0 -254
  109. package/src/set2/index.ts +0 -71
  110. package/src/walker.ts +0 -191
  111. package/test/setWalker.ts +0 -494
  112. package/test/text.ts +0 -171
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.text = exports.string = void 0;
7
+ const error_1 = require("../../error");
8
+ const validator_1 = __importDefault(require("validator"));
9
+ const utils_1 = require("@saulx/utils");
10
+ const formatPatterns = {
11
+ email: validator_1.default.isEmail,
12
+ URL: validator_1.default.isURL,
13
+ MACAddress: validator_1.default.isMACAddress,
14
+ IP: validator_1.default.isIP,
15
+ IPRange: validator_1.default.isIPRange,
16
+ FQDN: validator_1.default.isFQDN,
17
+ IBAN: validator_1.default.isIBAN,
18
+ BIC: validator_1.default.isBIC,
19
+ alpha: validator_1.default.isAlpha,
20
+ alphaLocales: validator_1.default.isAlphaLocales,
21
+ alphanumeric: validator_1.default.isAlphanumeric,
22
+ alphanumericLocales: validator_1.default.isAlphanumericLocales,
23
+ passportNumber: validator_1.default.isPassportNumber,
24
+ port: validator_1.default.isPort,
25
+ lowercase: validator_1.default.isLowercase,
26
+ uppercase: validator_1.default.isUppercase,
27
+ ascii: validator_1.default.isAscii,
28
+ semVer: validator_1.default.isSemVer,
29
+ surrogatePair: validator_1.default.isSurrogatePair,
30
+ IMEI: validator_1.default.isIMEI,
31
+ hexadecimal: validator_1.default.isHexadecimal,
32
+ octal: validator_1.default.isOctal,
33
+ hexColor: validator_1.default.isHexColor,
34
+ rgbColor: validator_1.default.isRgbColor,
35
+ HSL: validator_1.default.isHSL,
36
+ ISRC: validator_1.default.isISRC,
37
+ MD5: validator_1.default.isMD5,
38
+ JWT: validator_1.default.isJWT,
39
+ UUID: validator_1.default.isUUID,
40
+ luhnNumber: validator_1.default.isLuhnNumber,
41
+ creditCard: validator_1.default.isCreditCard,
42
+ identityCard: validator_1.default.isIdentityCard,
43
+ EAN: validator_1.default.isEAN,
44
+ ISIN: validator_1.default.isISIN,
45
+ ISBN: validator_1.default.isISBN,
46
+ ISSN: validator_1.default.isISSN,
47
+ mobilePhone: validator_1.default.isMobilePhone,
48
+ mobilePhoneLocales: validator_1.default.isMobilePhoneLocales,
49
+ postalCode: validator_1.default.isPostalCode,
50
+ postalCodeLocales: validator_1.default.isPostalCodeLocales,
51
+ ethereumAddress: validator_1.default.isEthereumAddress,
52
+ currency: validator_1.default.isCurrency,
53
+ btcAddress: validator_1.default.isBtcAddress,
54
+ ISO6391: validator_1.default.isISO6391,
55
+ ISO8601: validator_1.default.isISO8601,
56
+ RFC3339: validator_1.default.isRFC3339,
57
+ ISO31661Alpha2: validator_1.default.isISO31661Alpha2,
58
+ ISO31661Alpha3: validator_1.default.isISO31661Alpha3,
59
+ ISO4217: validator_1.default.isISO4217,
60
+ base32: validator_1.default.isBase32,
61
+ base58: validator_1.default.isBase58,
62
+ base64: validator_1.default.isBase64,
63
+ dataURI: validator_1.default.isDataURI,
64
+ magnetURI: validator_1.default.isMagnetURI,
65
+ mimeType: validator_1.default.isMimeType,
66
+ latLong: validator_1.default.isLatLong,
67
+ slug: validator_1.default.isSlug,
68
+ strongPassword: validator_1.default.isStrongPassword,
69
+ taxID: validator_1.default.isTaxID,
70
+ licensePlate: validator_1.default.isLicensePlate,
71
+ VAT: validator_1.default.isVAT,
72
+ };
73
+ const validateString = (args, value) => {
74
+ if (typeof value !== 'string') {
75
+ args.error(error_1.ParseError.incorrectFormat);
76
+ return false;
77
+ }
78
+ if (args.fieldSchema.minLength && value.length < args.fieldSchema.minLength) {
79
+ args.error(error_1.ParseError.subceedsMinimum);
80
+ return false;
81
+ }
82
+ if (args.fieldSchema.maxLength && value.length > args.fieldSchema.maxLength) {
83
+ args.error(error_1.ParseError.exceedsMaximum);
84
+ return false;
85
+ }
86
+ if (args.fieldSchema.pattern) {
87
+ const re = new RegExp(args.fieldSchema.pattern);
88
+ if (!re.test(value)) {
89
+ args.error(error_1.ParseError.incorrectFormat);
90
+ return false;
91
+ }
92
+ }
93
+ if (args.fieldSchema.format &&
94
+ !formatPatterns[args.fieldSchema.format](value)) {
95
+ args.error(error_1.ParseError.incorrectFormat);
96
+ return false;
97
+ }
98
+ return true;
99
+ };
100
+ const string = async (args) => {
101
+ if (!validateString(args, args.value)) {
102
+ return;
103
+ }
104
+ args.collect();
105
+ };
106
+ exports.string = string;
107
+ async function next(args, key) {
108
+ const valueArgs = args.create({
109
+ key,
110
+ value: args.value[key],
111
+ skipCollection: true,
112
+ });
113
+ await valueArgs.parse();
114
+ return valueArgs.value;
115
+ }
116
+ const text = async (args) => {
117
+ const value = args.value;
118
+ if (value !== null && typeof value === 'object') {
119
+ args.stop();
120
+ const result = {};
121
+ for (const key in value) {
122
+ if (key === '$value') {
123
+ const nValue = await next(args, key);
124
+ if (typeof nValue.value === 'object') {
125
+ (0, utils_1.deepMerge)(result, nValue.value);
126
+ }
127
+ }
128
+ else if (key === '$default') {
129
+ result.$default = await next(args, key);
130
+ }
131
+ else if (args.schema.languages.includes(key)) {
132
+ if (value[key] && typeof value[key] === 'object') {
133
+ for (const k in value[key]) {
134
+ if (k === '$value') {
135
+ if (!validateString(args, value[key].$value)) {
136
+ args.create({ key }).error(error_1.ParseError.incorrectFormat);
137
+ }
138
+ else {
139
+ result[key] = value[key].$value;
140
+ }
141
+ }
142
+ else if (k === '$default') {
143
+ if (!validateString(args, value[key].$default)) {
144
+ args.create({ key }).error(error_1.ParseError.incorrectFormat);
145
+ }
146
+ else {
147
+ (0, utils_1.setByPath)(result, ['$default', key], value[key].$default);
148
+ }
149
+ }
150
+ else {
151
+ args
152
+ .create({ path: [...args.path, key, k] })
153
+ .error(error_1.ParseError.fieldDoesNotExist);
154
+ }
155
+ }
156
+ }
157
+ else {
158
+ if (!validateString(args, args.value[key])) {
159
+ args.error(error_1.ParseError.incorrectFormat);
160
+ return;
161
+ }
162
+ result[key] = args.value[key];
163
+ }
164
+ }
165
+ else {
166
+ args.create({ key }).error(error_1.ParseError.languageNotSupported);
167
+ }
168
+ }
169
+ args.collect(result);
170
+ return;
171
+ }
172
+ if (typeof value !== 'string') {
173
+ args.error(error_1.ParseError.incorrectFormat);
174
+ return;
175
+ }
176
+ if (!args.target.$language) {
177
+ args.error(error_1.ParseError.noLanguageFound);
178
+ return;
179
+ }
180
+ if (!validateString(args, args.value)) {
181
+ args.error(error_1.ParseError.incorrectFormat);
182
+ return;
183
+ }
184
+ args.value = {
185
+ [args.target.$language]: value,
186
+ };
187
+ args.collect();
188
+ };
189
+ exports.text = text;
190
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../../src/set/fields/string.ts"],"names":[],"mappings":";;;;;;AAKA,uCAAwC;AAExC,0DAAkC;AAClC,wCAAmD;AAInD,MAAM,cAAc,GAGhB;IACF,KAAK,EAAE,mBAAU,CAAC,OAAO;IACzB,GAAG,EAAE,mBAAU,CAAC,KAAK;IACrB,UAAU,EAAE,mBAAU,CAAC,YAAY;IACnC,EAAE,EAAE,mBAAU,CAAC,IAAI;IACnB,OAAO,EAAE,mBAAU,CAAC,SAAS;IAC7B,IAAI,EAAE,mBAAU,CAAC,MAAM;IACvB,IAAI,EAAE,mBAAU,CAAC,MAAM;IACvB,GAAG,EAAE,mBAAU,CAAC,KAAK;IACrB,KAAK,EAAE,mBAAU,CAAC,OAAO;IACzB,YAAY,EAAE,mBAAU,CAAC,cAAc;IACvC,YAAY,EAAE,mBAAU,CAAC,cAAc;IACvC,mBAAmB,EAAE,mBAAU,CAAC,qBAAqB;IACrD,cAAc,EAAE,mBAAU,CAAC,gBAAgB;IAC3C,IAAI,EAAE,mBAAU,CAAC,MAAM;IACvB,SAAS,EAAE,mBAAU,CAAC,WAAW;IACjC,SAAS,EAAE,mBAAU,CAAC,WAAW;IACjC,KAAK,EAAE,mBAAU,CAAC,OAAO;IACzB,MAAM,EAAE,mBAAU,CAAC,QAAQ;IAC3B,aAAa,EAAE,mBAAU,CAAC,eAAe;IACzC,IAAI,EAAE,mBAAU,CAAC,MAAM;IACvB,WAAW,EAAE,mBAAU,CAAC,aAAa;IACrC,KAAK,EAAE,mBAAU,CAAC,OAAO;IACzB,QAAQ,EAAE,mBAAU,CAAC,UAAU;IAC/B,QAAQ,EAAE,mBAAU,CAAC,UAAU;IAC/B,GAAG,EAAE,mBAAU,CAAC,KAAK;IACrB,IAAI,EAAE,mBAAU,CAAC,MAAM;IACvB,GAAG,EAAE,mBAAU,CAAC,KAAK;IACrB,GAAG,EAAE,mBAAU,CAAC,KAAK;IACrB,IAAI,EAAE,mBAAU,CAAC,MAAM;IACvB,UAAU,EAAE,mBAAU,CAAC,YAAY;IACnC,UAAU,EAAE,mBAAU,CAAC,YAAY;IACnC,YAAY,EAAE,mBAAU,CAAC,cAAc;IACvC,GAAG,EAAE,mBAAU,CAAC,KAAK;IACrB,IAAI,EAAE,mBAAU,CAAC,MAAM;IACvB,IAAI,EAAE,mBAAU,CAAC,MAAM;IACvB,IAAI,EAAE,mBAAU,CAAC,MAAM;IACvB,WAAW,EAAE,mBAAU,CAAC,aAAa;IACrC,kBAAkB,EAAE,mBAAU,CAAC,oBAAoB;IACnD,UAAU,EAAE,mBAAU,CAAC,YAAY;IACnC,iBAAiB,EAAE,mBAAU,CAAC,mBAAmB;IACjD,eAAe,EAAE,mBAAU,CAAC,iBAAiB;IAC7C,QAAQ,EAAE,mBAAU,CAAC,UAAU;IAC/B,UAAU,EAAE,mBAAU,CAAC,YAAY;IACnC,OAAO,EAAE,mBAAU,CAAC,SAAS;IAC7B,OAAO,EAAE,mBAAU,CAAC,SAAS;IAC7B,OAAO,EAAE,mBAAU,CAAC,SAAS;IAC7B,cAAc,EAAE,mBAAU,CAAC,gBAAgB;IAC3C,cAAc,EAAE,mBAAU,CAAC,gBAAgB;IAC3C,OAAO,EAAE,mBAAU,CAAC,SAAS;IAC7B,MAAM,EAAE,mBAAU,CAAC,QAAQ;IAC3B,MAAM,EAAE,mBAAU,CAAC,QAAQ;IAC3B,MAAM,EAAE,mBAAU,CAAC,QAAQ;IAC3B,OAAO,EAAE,mBAAU,CAAC,SAAS;IAC7B,SAAS,EAAE,mBAAU,CAAC,WAAW;IACjC,QAAQ,EAAE,mBAAU,CAAC,UAAU;IAC/B,OAAO,EAAE,mBAAU,CAAC,SAAS;IAC7B,IAAI,EAAE,mBAAU,CAAC,MAAM;IACvB,cAAc,EAAE,mBAAU,CAAC,gBAAgB;IAC3C,KAAK,EAAE,mBAAU,CAAC,OAAO;IACzB,YAAY,EAAE,mBAAU,CAAC,cAAc;IACvC,GAAG,EAAE,mBAAU,CAAC,KAAK;CACtB,CAAA;AAED,MAAM,cAAc,GAAG,CACrB,IAA4C,EAC5C,KAAa,EACJ,EAAE;IACX,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,IAAI,CAAC,KAAK,CAAC,kBAAU,CAAC,eAAe,CAAC,CAAA;QACtC,OAAO,KAAK,CAAA;KACb;IACD,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;QAC3E,IAAI,CAAC,KAAK,CAAC,kBAAU,CAAC,eAAe,CAAC,CAAA;QACtC,OAAO,KAAK,CAAA;KACb;IACD,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;QAC3E,IAAI,CAAC,KAAK,CAAC,kBAAU,CAAC,cAAc,CAAC,CAAA;QACrC,OAAO,KAAK,CAAA;KACb;IACD,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;QAC5B,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAC/C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnB,IAAI,CAAC,KAAK,CAAC,kBAAU,CAAC,eAAe,CAAC,CAAA;YACtC,OAAO,KAAK,CAAA;SACb;KACF;IACD,IACE,IAAI,CAAC,WAAW,CAAC,MAAM;QACvB,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAC/C;QACA,IAAI,CAAC,KAAK,CAAC,kBAAU,CAAC,eAAe,CAAC,CAAA;QACtC,OAAO,KAAK,CAAA;KACb;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAEM,MAAM,MAAM,GAA0B,KAAK,EAAE,IAAI,EAAE,EAAE;IAC1D,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;QACrC,OAAM;KACP;IACD,IAAI,CAAC,OAAO,EAAE,CAAA;AAChB,CAAC,CAAA;AALY,QAAA,MAAM,UAKlB;AAED,KAAK,UAAU,IAAI,CAAI,IAAkB,EAAE,GAAW;IACpD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,GAAG;QACH,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QACtB,cAAc,EAAE,IAAI;KACrB,CAAC,CAAA;IACF,MAAM,SAAS,CAAC,KAAK,EAAE,CAAA;IACvB,OAAO,SAAS,CAAC,KAAK,CAAA;AACxB,CAAC;AAEM,MAAM,IAAI,GAAwB,KAAK,EAAE,IAAI,EAAE,EAAE;IACtD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IACxB,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC/C,IAAI,CAAC,IAAI,EAAE,CAAA;QACX,MAAM,MAAM,GAAQ,EAAE,CAAA;QACtB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;YACvB,IAAI,GAAG,KAAK,QAAQ,EAAE;gBACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;gBACpC,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;oBACpC,IAAA,iBAAS,EAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;iBAChC;aACF;iBAAM,IAAI,GAAG,KAAK,UAAU,EAAE;gBAC7B,MAAM,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;aACxC;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAsB,GAAG,CAAC,EAAE;gBACnE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;oBAChD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;wBAC1B,IAAI,CAAC,KAAK,QAAQ,EAAE;4BAClB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE;gCAC5C,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAU,CAAC,eAAe,CAAC,CAAA;6BACvD;iCAAM;gCACL,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAA;6BAChC;yBACF;6BAAM,IAAI,CAAC,KAAK,UAAU,EAAE;4BAC3B,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE;gCAC9C,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAU,CAAC,eAAe,CAAC,CAAA;6BACvD;iCAAM;gCACL,IAAA,iBAAS,EAAC,MAAM,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAA;6BAC1D;yBACF;6BAAM;4BACL,IAAI;iCACD,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;iCACxC,KAAK,CAAC,kBAAU,CAAC,iBAAiB,CAAC,CAAA;yBACvC;qBACF;iBACF;qBAAM;oBACL,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;wBAC1C,IAAI,CAAC,KAAK,CAAC,kBAAU,CAAC,eAAe,CAAC,CAAA;wBACtC,OAAM;qBACP;oBACD,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;iBAC9B;aACF;iBAAM;gBACL,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAU,CAAC,oBAAoB,CAAC,CAAA;aAC5D;SACF;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACpB,OAAM;KACP;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,IAAI,CAAC,KAAK,CAAC,kBAAU,CAAC,eAAe,CAAC,CAAA;QACtC,OAAM;KACP;IAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;QAC1B,IAAI,CAAC,KAAK,CAAC,kBAAU,CAAC,eAAe,CAAC,CAAA;QACtC,OAAM;KACP;IAED,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;QACrC,IAAI,CAAC,KAAK,CAAC,kBAAU,CAAC,eAAe,CAAC,CAAA;QACtC,OAAM;KACP;IAED,IAAI,CAAC,KAAK,GAAG;QACX,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK;KAC/B,CAAA;IAED,IAAI,CAAC,OAAO,EAAE,CAAA;AAChB,CAAC,CAAA;AArEY,QAAA,IAAI,QAqEhB"}
@@ -1,5 +1,2 @@
1
- import { BasedSchemaField, BasedSchemaType, BasedSetHandlers, BasedSchema, BasedSetTarget, BasedSetOptionalHandlers } from '../types';
2
- export declare const fieldWalker: (path: (string | number)[], value: any, fieldSchema: BasedSchemaField, typeSchema: BasedSchemaType, target: BasedSetTarget, handlers: BasedSetHandlers, noCollect?: boolean) => Promise<void>;
3
- export declare const setWalker: (schema: BasedSchema, value: {
4
- [key: string]: any;
5
- }, inHandlers: BasedSetOptionalHandlers) => Promise<BasedSetTarget>;
1
+ import { BasedSchema, BasedSetTarget } from '../types';
2
+ export declare const setWalker: (schema: BasedSchema, value: any) => Promise<BasedSetTarget>;
package/dist/set/index.js CHANGED
@@ -1,140 +1,112 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.setWalker = exports.fieldWalker = void 0;
7
- const error_1 = require("./error");
8
- const parsers_1 = __importDefault(require("./parsers"));
9
- const fieldWalker = async (path, value, fieldSchema, typeSchema, target, handlers, noCollect) => {
10
- if ('$ref' in fieldSchema) {
11
- // TODO: when we have this it has to get it from the schema and redo the parsing with the correct fieldSchema
12
- return;
13
- }
14
- const valueType = typeof value;
15
- const valueIsObject = value && valueType === 'object';
16
- if (valueIsObject && value.$delete === true) {
17
- if (!noCollect) {
18
- handlers.collect({ path, value, typeSchema, fieldSchema, target });
19
- }
20
- return;
21
- }
22
- const typeDef = fieldSchema.type ?? ('enum' in fieldSchema ? 'enum' : '');
23
- if (!typeDef) {
24
- (0, error_1.error)(handlers, error_1.ParseError.fieldDoesNotExist, path);
25
- }
26
- if ('customValidator' in fieldSchema) {
27
- const customValidator = fieldSchema.customValidator;
28
- if (!(await customValidator(value, path, target))) {
29
- (0, error_1.error)(handlers, error_1.ParseError.incorrectFormat, path);
30
- }
31
- }
32
- const parse = parsers_1.default[typeDef];
33
- await parse(path, value, fieldSchema, typeSchema, target, handlers, noCollect);
34
- return;
35
- };
36
- exports.fieldWalker = fieldWalker;
37
- const setWalker = async (schema, value, inHandlers) => {
38
- let errors;
39
- const collect = [];
40
- const x = { ...inHandlers };
41
- if (!('collectErrors' in x)) {
42
- errors = [];
43
- x.collectErrors = (info) => {
44
- errors.push(info);
3
+ exports.setWalker = void 0;
4
+ const error_1 = require("../error");
5
+ const walker_1 = require("../walker");
6
+ const fields_1 = require("./fields");
7
+ const isValidId_1 = require("./isValidId");
8
+ const opts = {
9
+ parsers: {
10
+ keys: {
11
+ $id: async (args) => {
12
+ if (!(0, isValidId_1.isValidId)(args.schema, args.value)) {
13
+ args.error(error_1.ParseError.incorrectFormat);
14
+ return;
15
+ }
16
+ },
17
+ $language: async (args) => {
18
+ if (!args.schema.languages.includes(args.value)) {
19
+ args.error(error_1.ParseError.languageNotSupported);
20
+ return;
21
+ }
22
+ },
23
+ $value: async (args) => {
24
+ const type = args.fieldSchema?.type;
25
+ if (type === 'text') {
26
+ return;
27
+ }
28
+ args.stop();
29
+ if (args.prev.value.$default) {
30
+ args.error(error_1.ParseError.valueAndDefault);
31
+ return;
32
+ }
33
+ return { path: args.path.slice(0, -1) };
34
+ },
35
+ $default: async (args) => {
36
+ const type = args.fieldSchema?.type;
37
+ if (type === 'number' || type === 'integer' || type === 'text') {
38
+ // default can exist with $incr and $decr
39
+ return;
40
+ }
41
+ args.prev.stop();
42
+ const newArgs = args.create({
43
+ path: args.path.slice(0, -1),
44
+ skipCollection: true,
45
+ });
46
+ await newArgs.parse();
47
+ for (const key in args.prev.value) {
48
+ if (key !== '$default') {
49
+ args.prev.create({ key }).error(error_1.ParseError.fieldDoesNotExist);
50
+ }
51
+ }
52
+ newArgs.skipCollection = false;
53
+ newArgs.value = { $default: newArgs.value };
54
+ newArgs.collect();
55
+ },
56
+ },
57
+ fields: fields_1.fields,
58
+ catch: async (args) => {
59
+ args.error(error_1.ParseError.fieldDoesNotExist);
60
+ },
61
+ },
62
+ init: async (value, schema, error) => {
63
+ let type;
64
+ const target = {
65
+ type,
66
+ schema,
67
+ required: [],
68
+ collected: [],
69
+ errors: [],
45
70
  };
46
- }
47
- let prevCollect;
48
- if (!('collect' in x)) {
49
- x.collect = (info) => {
50
- collect.push(info);
51
- };
52
- }
53
- else {
54
- prevCollect = x.collect;
55
- x.collect = (info) => {
56
- collect.push(info);
57
- };
58
- }
59
- const handlers = x;
60
- let type;
61
- if (value.$id) {
62
- type = schema.prefixToTypeMapping[value.$id.slice(0, 2)];
63
- if (!type) {
64
- (0, error_1.error)(handlers, error_1.ParseError.incorrectNodeType, [value.$id]);
65
- }
66
- }
67
- if (value.type) {
68
- if (type && value.type !== type) {
69
- (0, error_1.error)(handlers, error_1.ParseError.incorrectNodeType, [value.$id, value.type]);
70
- }
71
- type = value.type;
72
- }
73
- const schemaType = schema.types[type];
74
- if (!schemaType) {
75
- (0, error_1.error)(handlers, error_1.ParseError.incorrectNodeType, [type]);
76
- }
77
- const target = {
78
- type,
79
- schema,
80
- required: [],
81
- };
82
- if (value.$language) {
83
- if (!schema.languages.includes(value.$language)) {
84
- (0, error_1.error)(handlers, error_1.ParseError.languageNotSupported, ['$language']);
85
- }
86
- target.$language = value.$language;
87
- }
88
- if (value.$id) {
89
- target.$id = value.$id;
90
- }
91
- else if (value.$alias) {
92
- target.$alias = value.$alias;
93
- }
94
- const q = [];
95
- for (const key in value) {
96
- if (key[0] !== '$' && key !== 'type') {
97
- const fieldSchema = schemaType.fields[key];
98
- if (!fieldSchema) {
99
- (0, error_1.error)(handlers, error_1.ParseError.fieldDoesNotExist, [key]);
71
+ if (value.$id) {
72
+ if (value.$id === 'root') {
73
+ type = 'root';
100
74
  }
101
75
  else {
102
- q.push((0, exports.fieldWalker)([key], value[key], fieldSchema, schemaType, target, handlers));
76
+ type = schema.prefixToTypeMapping[value.$id.slice(0, 2)];
103
77
  }
104
- }
105
- }
106
- await Promise.all(q);
107
- if (schemaType.required) {
108
- for (const req of schemaType.required) {
109
- if (!(req in value)) {
110
- target.required.push([req]);
78
+ if (!type) {
79
+ error(error_1.ParseError.incorrectFieldType, { target });
80
+ return;
111
81
  }
112
82
  }
113
- }
114
- if (target.required?.length) {
115
- const requireDefined = await Promise.all(target.required.map(async (req) => {
116
- return handlers.checkRequiredFields(req);
117
- }));
118
- for (let i = 0; i < requireDefined.length; i++) {
119
- if (!requireDefined[i]) {
120
- const r = target.required[i];
121
- (0, error_1.error)(handlers, error_1.ParseError.requiredFieldNotDefined, r);
83
+ if (value.type) {
84
+ if (type && value.type !== type) {
85
+ error(error_1.ParseError.incorrectNodeType, { target });
86
+ return;
122
87
  }
88
+ type = value.type;
123
89
  }
124
- }
125
- if (errors?.length) {
126
- const err = new Error('Errors in in set' +
127
- errors.reduce((str, info) => {
128
- return str + `\n - ${info.message}`;
129
- }, ''));
130
- throw err;
131
- }
132
- if (prevCollect) {
133
- for (const x of collect) {
134
- prevCollect(x);
90
+ const typeSchema = type === 'root' ? schema.root : schema.types[type];
91
+ if (!typeSchema) {
92
+ error(error_1.ParseError.incorrectNodeType, { target });
93
+ return;
135
94
  }
136
- }
137
- return target;
95
+ target.type = type;
96
+ target.$language = value.$language;
97
+ target.$id = value.$id;
98
+ return { target, typeSchema };
99
+ },
100
+ error: (code, args) => {
101
+ args.target.errors.push({
102
+ code,
103
+ path: args.path ?? [],
104
+ });
105
+ },
106
+ collect: (args) => {
107
+ args.root.target.collected.push(args);
108
+ },
138
109
  };
110
+ const setWalker = (schema, value) => (0, walker_1.walk)(schema, opts, value);
139
111
  exports.setWalker = setWalker;
140
112
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/set/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/set/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { BasedSchema } from '../types';
2
+ export declare const isValidId: (schema: BasedSchema, id: any) => boolean;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isValidId = void 0;
4
+ const isValidId = (schema, id) => {
5
+ if (typeof id !== 'string') {
6
+ return false;
7
+ }
8
+ if (id === 'root') {
9
+ return true;
10
+ }
11
+ if (id.length > 10) {
12
+ return false;
13
+ }
14
+ const prefix = id.slice(0, 2);
15
+ if (!schema.prefixToTypeMapping[prefix]) {
16
+ return false;
17
+ }
18
+ return true;
19
+ };
20
+ exports.isValidId = isValidId;
21
+ //# sourceMappingURL=isValidId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isValidId.js","sourceRoot":"","sources":["../../src/set/isValidId.ts"],"names":[],"mappings":";;;AAEO,MAAM,SAAS,GAAG,CAAC,MAAmB,EAAE,EAAO,EAAW,EAAE;IACjE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;QAC1B,OAAO,KAAK,CAAA;KACb;IAED,IAAI,EAAE,KAAK,MAAM,EAAE;QACjB,OAAO,IAAI,CAAA;KACZ;IAED,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE;QAClB,OAAO,KAAK,CAAA;KACb;IAED,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE;QACvC,OAAO,KAAK,CAAA;KACb;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AApBY,QAAA,SAAS,aAoBrB"}
@@ -1,5 +0,0 @@
1
- import { BasedSchemaType, BasedSetHandlers, BasedSetTarget, BasedSchemaFields } from '../types';
2
- export type Parser<K extends keyof BasedSchemaFields> = (path: (string | number)[], value: any, fieldSchema: BasedSchemaFields[K], typeSchema: BasedSchemaType, target: BasedSetTarget, handlers: BasedSetHandlers, noCollect?: boolean) => Promise<void | boolean>;
3
- export type Parsers = {
4
- [Key in keyof BasedSchemaFields]: Parser<Key>;
5
- };
package/dist/set/types.js CHANGED
@@ -1,3 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
1
  //# sourceMappingURL=types.js.map
package/dist/types.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import type { Language } from './languages';
2
2
  import type { PartialDeep, SetOptional } from 'type-fest';
3
- import { ParseError } from './set/error';
3
+ import { ParseError } from './error';
4
+ import { ArgsClass, Path } from './walker';
4
5
  export type AllowedTypes = (string | {
5
6
  type?: string;
6
7
  $filter: any | any[];
@@ -172,6 +173,11 @@ export type BasedSetTarget = {
172
173
  schema: BasedSchema;
173
174
  $language?: BasedSchemaLanguage;
174
175
  required: (number | string)[][];
176
+ collected: ArgsClass<BasedSetTarget>[];
177
+ errors: {
178
+ code: ParseError;
179
+ path: Path;
180
+ }[];
175
181
  };
176
182
  export type BasedSchemaCollectProps = {
177
183
  path: (string | number)[];
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAuCO,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":";;;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"}
@@ -0,0 +1,31 @@
1
+ import { BasedSchema } from '../types';
2
+ import { BasedSchemaType, BasedSchemaFields } from '../types';
3
+ import { ArgsOpts, Path, Opts, Stopped, Collect } from './types';
4
+ import { ParseError } from '../error';
5
+ export declare class ArgsClass<T, K extends keyof BasedSchemaFields = keyof BasedSchemaFields> {
6
+ errors: any[];
7
+ prev: ArgsClass<T, K>;
8
+ root: ArgsClass<T, K>;
9
+ _opts: Opts<T>;
10
+ _target: T;
11
+ _schema: BasedSchema;
12
+ parseTopLevel?: boolean;
13
+ _collectOverride: Collect<T>;
14
+ fieldSchema?: BasedSchemaFields[K];
15
+ typeSchema?: BasedSchemaType;
16
+ path: Path;
17
+ skipCollection: boolean;
18
+ value: any;
19
+ stopped: Stopped | void;
20
+ fromBackTrack: any[];
21
+ collectedCommands: any[];
22
+ constructor(opts: ArgsOpts<T, K>, prev?: ArgsClass<T, K>);
23
+ get schema(): BasedSchema;
24
+ get key(): (number | string) | void;
25
+ get target(): T;
26
+ stop(onllyStopFieldSchemaParser?: boolean): void;
27
+ create(opts?: ArgsOpts<T>): ArgsClass<T>;
28
+ parse(opts?: ArgsOpts<T>): Promise<ArgsClass<T> | void>;
29
+ collect(value?: any): void;
30
+ error(code: ParseError): void;
31
+ }