@based/schema 2.2.9 → 2.2.11

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 (95) hide show
  1. package/dist/{display → src/display}/index.d.ts +1 -1
  2. package/dist/src/display/index.js +16 -0
  3. package/dist/{display → src/display}/number.js +1 -3
  4. package/dist/{display → src/display}/string.js +1 -3
  5. package/dist/{display → src/display}/timestamp.js +1 -3
  6. package/dist/{error.js → src/error.js} +2 -5
  7. package/dist/src/index.d.ts +5 -0
  8. package/dist/src/index.js +6 -0
  9. package/dist/{languages.js → src/languages.js} +1 -4
  10. package/dist/src/set/fields/array.d.ts +2 -0
  11. package/dist/{set → src/set}/fields/array.js +10 -14
  12. package/dist/src/set/fields/index.d.ts +3 -0
  13. package/dist/src/set/fields/index.js +71 -0
  14. package/dist/{set → src/set}/fields/number.d.ts +1 -1
  15. package/dist/{set → src/set}/fields/number.js +15 -21
  16. package/dist/{set → src/set}/fields/object.d.ts +1 -1
  17. package/dist/src/set/fields/object.js +28 -0
  18. package/dist/{set → src/set}/fields/references.d.ts +1 -1
  19. package/dist/{set → src/set}/fields/references.js +13 -18
  20. package/dist/src/set/fields/set.d.ts +2 -0
  21. package/dist/{set → src/set}/fields/set.js +4 -8
  22. package/dist/{set → src/set}/fields/string.d.ts +1 -1
  23. package/dist/{set → src/set}/fields/string.js +90 -95
  24. package/dist/{set → src/set}/index.d.ts +2 -2
  25. package/dist/{set → src/set}/index.js +21 -25
  26. package/dist/{set → src/set}/isValidId.d.ts +1 -1
  27. package/dist/{set → src/set}/isValidId.js +1 -5
  28. package/dist/{types.d.ts → src/types.d.ts} +7 -7
  29. package/dist/src/types.js +23 -0
  30. package/dist/src/updateSchema.d.ts +2 -0
  31. package/dist/src/updateSchema.js +12 -0
  32. package/dist/src/validateSchema.d.ts +4 -0
  33. package/dist/{validateSchema.js → src/validateSchema.js} +5 -11
  34. package/dist/{walker → src/walker}/args.d.ts +4 -4
  35. package/dist/{walker → src/walker}/args.js +8 -12
  36. package/dist/src/walker/index.d.ts +6 -0
  37. package/dist/src/walker/index.js +31 -0
  38. package/dist/{walker → src/walker}/parse.d.ts +1 -1
  39. package/dist/{walker → src/walker}/parse.js +7 -11
  40. package/dist/{walker → src/walker}/types.d.ts +3 -3
  41. package/dist/{walker → src/walker}/types.js +2 -5
  42. package/dist/test/array.d.ts +1 -0
  43. package/dist/test/array.js +342 -0
  44. package/dist/test/display.d.ts +1 -0
  45. package/dist/test/display.js +103 -0
  46. package/dist/test/number.d.ts +1 -0
  47. package/dist/test/number.js +374 -0
  48. package/dist/test/reference.d.ts +1 -0
  49. package/dist/test/reference.js +186 -0
  50. package/dist/test/rest.d.ts +1 -0
  51. package/dist/test/rest.js +168 -0
  52. package/dist/test/set.d.ts +1 -0
  53. package/dist/test/set.js +95 -0
  54. package/dist/test/string.d.ts +1 -0
  55. package/dist/test/string.js +120 -0
  56. package/dist/test/text.d.ts +1 -0
  57. package/dist/test/text.js +324 -0
  58. package/dist/test/utils/index.d.ts +11 -0
  59. package/dist/test/utils/index.js +17 -0
  60. package/dist/test/validateSchema.d.ts +1 -0
  61. package/dist/test/validateSchema.js +38 -0
  62. package/dist/test/walker.d.ts +1 -0
  63. package/dist/test/walker.js +289 -0
  64. package/package.json +8 -13
  65. package/dist/display/dateString copy.d.ts +0 -3
  66. package/dist/display/dateString copy.js +0 -127
  67. package/dist/display/dateString.d.ts +0 -3
  68. package/dist/display/dateString.js +0 -127
  69. package/dist/display/display.d.ts +0 -1
  70. package/dist/display/display.js +0 -8
  71. package/dist/display/index.js +0 -26
  72. package/dist/display/number copy.d.ts +0 -3
  73. package/dist/display/number copy.js +0 -81
  74. package/dist/display.d.ts +0 -2
  75. package/dist/display.js +0 -8
  76. package/dist/index.d.ts +0 -5
  77. package/dist/index.js +0 -22
  78. package/dist/set/fields/array.d.ts +0 -2
  79. package/dist/set/fields/index.d.ts +0 -3
  80. package/dist/set/fields/index.js +0 -74
  81. package/dist/set/fields/object.js +0 -33
  82. package/dist/set/fields/set.d.ts +0 -2
  83. package/dist/set/types.d.ts +0 -0
  84. package/dist/set/types.js +0 -1
  85. package/dist/types.js +0 -27
  86. package/dist/updateSchema.d.ts +0 -2
  87. package/dist/updateSchema.js +0 -16
  88. package/dist/validateSchema.d.ts +0 -4
  89. package/dist/walker/index.d.ts +0 -6
  90. package/dist/walker/index.js +0 -49
  91. /package/dist/{display → src/display}/number.d.ts +0 -0
  92. /package/dist/{display → src/display}/string.d.ts +0 -0
  93. /package/dist/{display → src/display}/timestamp.d.ts +0 -0
  94. /package/dist/{error.d.ts → src/error.d.ts} +0 -0
  95. /package/dist/{languages.d.ts → src/languages.d.ts} +0 -0
@@ -0,0 +1,168 @@
1
+ import test from 'ava';
2
+ import { setWalker } from '../src/index.js';
3
+ import { resultCollect } from './utils/index.js';
4
+ const schema = {
5
+ types: {
6
+ thing: {
7
+ prefix: 'ti',
8
+ fields: {
9
+ priority: { type: 'number' },
10
+ something: { type: 'string', format: 'strongPassword' },
11
+ },
12
+ },
13
+ bla: {
14
+ prefix: 'bl',
15
+ fields: {
16
+ enum: {
17
+ enum: ['tony', 'jim'],
18
+ },
19
+ setOfNumbers: {
20
+ type: 'set',
21
+ items: {
22
+ type: 'number',
23
+ },
24
+ },
25
+ object: {
26
+ type: 'object',
27
+ properties: {
28
+ flap: { type: 'boolean' },
29
+ },
30
+ },
31
+ flap: {
32
+ type: 'boolean',
33
+ },
34
+ x: {
35
+ type: 'object',
36
+ properties: {
37
+ flap: {
38
+ type: 'boolean',
39
+ },
40
+ },
41
+ },
42
+ record: {
43
+ type: 'record',
44
+ values: {
45
+ type: 'object',
46
+ properties: {
47
+ bla: {
48
+ type: 'array',
49
+ values: {
50
+ type: 'object',
51
+ properties: {
52
+ snux: {
53
+ type: 'object',
54
+ properties: {
55
+ x: {
56
+ type: 'number',
57
+ },
58
+ },
59
+ },
60
+ flap: { type: 'number' },
61
+ },
62
+ },
63
+ },
64
+ },
65
+ },
66
+ },
67
+ bla: {
68
+ type: 'set',
69
+ items: { type: 'string', minLength: 3, maxLength: 6 },
70
+ },
71
+ },
72
+ },
73
+ },
74
+ $defs: {},
75
+ language: 'en',
76
+ translations: ['de', 'nl', 'ro', 'za', 'ae'],
77
+ root: {
78
+ fields: {},
79
+ },
80
+ prefixToTypeMapping: {
81
+ bl: 'bla',
82
+ ti: 'thing',
83
+ },
84
+ };
85
+ let r;
86
+ test('enum simple', async (t) => {
87
+ r = await setWalker(schema, {
88
+ $id: 'bl120',
89
+ enum: 'tony',
90
+ });
91
+ t.true(r.errors.length === 0);
92
+ t.deepEqual(resultCollect(r), [{ path: ['enum'], value: 0 }]);
93
+ });
94
+ test('enum not exist error', async (t) => {
95
+ r = await setWalker(schema, {
96
+ $id: 'bl120',
97
+ enum: 'kyle',
98
+ });
99
+ t.true(r.errors.length === 1);
100
+ });
101
+ test('default enum', async (t) => {
102
+ r = await setWalker(schema, {
103
+ $id: 'bl120',
104
+ enum: { $default: 'tony' },
105
+ });
106
+ t.true(r.errors.length === 0);
107
+ t.deepEqual(resultCollect(r), [{ path: ['enum'], value: { $default: 0 } }]);
108
+ });
109
+ test('value enum ', async (t) => {
110
+ r = await setWalker(schema, {
111
+ $id: 'bl120',
112
+ enum: { $value: 'tony' },
113
+ });
114
+ t.true(r.errors.length === 0);
115
+ t.deepEqual(resultCollect(r), [{ path: ['enum'], value: 0 }]);
116
+ });
117
+ test('value & default enum ', async (t) => {
118
+ r = await setWalker(schema, {
119
+ $id: 'bl120',
120
+ enum: { $default: 'jim', $value: 'tony' },
121
+ });
122
+ t.true(r.errors.length === 2);
123
+ });
124
+ test('$value & $default enum ', async (t) => {
125
+ r = await setWalker(schema, {
126
+ $id: 'bl120',
127
+ enum: { $value: { $default: 'tony' } },
128
+ });
129
+ t.true(r.errors.length === 0);
130
+ t.deepEqual(resultCollect(r), [{ path: ['enum'], value: { $default: 0 } }]);
131
+ });
132
+ test('default: value enum ', async (t) => {
133
+ r = await setWalker(schema, {
134
+ $id: 'bl120',
135
+ enum: { $default: { $value: 'tony' } },
136
+ });
137
+ t.true(r.errors.length === 0);
138
+ t.deepEqual(resultCollect(r), [{ path: ['enum'], value: { $default: 0 } }]);
139
+ });
140
+ // ask about alias
141
+ test('$alias ', async (t) => {
142
+ r = await setWalker(schema, {
143
+ $id: 'bl120',
144
+ $alias: 'bla',
145
+ });
146
+ t.true(r.errors.length === 0);
147
+ });
148
+ test('$alias array', async (t) => {
149
+ r = await setWalker(schema, {
150
+ $id: 'bl120',
151
+ $alias: ['bla'],
152
+ });
153
+ t.true(r.errors.length === 0);
154
+ });
155
+ test('object: boolean', async (t) => {
156
+ r = await setWalker(schema, {
157
+ $id: 'bl120',
158
+ object: {
159
+ flap: true,
160
+ },
161
+ });
162
+ t.true(r.errors.length === 0);
163
+ t.deepEqual(resultCollect(r), [
164
+ { path: ['object', 'flap'], value: true },
165
+ { path: ['object'], value: { flap: true } },
166
+ ]);
167
+ });
168
+ //# sourceMappingURL=rest.js.map
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,95 @@
1
+ import test from 'ava';
2
+ import { setWalker } from '../src/index.js';
3
+ import { resultCollect } from './utils/index.js';
4
+ let r;
5
+ const schema = {
6
+ types: {
7
+ thing: {
8
+ prefix: 'ti',
9
+ fields: {
10
+ something: { type: 'string', format: 'strongPassword' },
11
+ },
12
+ },
13
+ bla: {
14
+ prefix: 'bl',
15
+ fields: {
16
+ x: {
17
+ type: 'object',
18
+ properties: {
19
+ bla: { type: 'string' },
20
+ },
21
+ },
22
+ setOfNumbers: {
23
+ type: 'set',
24
+ items: {
25
+ type: 'number',
26
+ },
27
+ },
28
+ bla: {
29
+ type: 'set',
30
+ items: { type: 'string', minLength: 3, maxLength: 6 },
31
+ },
32
+ },
33
+ },
34
+ },
35
+ $defs: {},
36
+ language: 'en',
37
+ translations: ['de', 'nl', 'ro', 'za', 'ae'],
38
+ root: {
39
+ fields: {},
40
+ },
41
+ prefixToTypeMapping: {
42
+ bl: 'bla',
43
+ ti: 'thing',
44
+ },
45
+ };
46
+ test('simple setNum', async (t) => {
47
+ r = await setWalker(schema, {
48
+ $id: 'bl120',
49
+ setOfNumbers: [1, 2, 3, 4, 5],
50
+ });
51
+ t.true(r.errors.length === 0);
52
+ t.deepEqual(resultCollect(r), [
53
+ { path: ['setOfNumbers'], value: { $value: [1, 2, 3, 4, 5] } },
54
+ ]);
55
+ });
56
+ test('default arr', async (t) => {
57
+ r = await setWalker(schema, {
58
+ $id: 'bl120',
59
+ setOfNumbers: { $add: 20 },
60
+ });
61
+ t.true(r.errors.length === 0);
62
+ t.deepEqual(resultCollect(r), [
63
+ { path: ['setOfNumbers'], value: { $add: [20] } },
64
+ ]);
65
+ });
66
+ test('$merge on object', async (t) => {
67
+ r = await setWalker(schema, {
68
+ $id: 'bl120',
69
+ x: {
70
+ $merge: false,
71
+ bla: 'x',
72
+ },
73
+ });
74
+ t.true(r.errors.length === 0);
75
+ t.deepEqual(resultCollect(r), [
76
+ { path: ['x'], value: { $delete: true } },
77
+ { path: ['x', 'bla'], value: 'x' },
78
+ { path: ['x'], value: { $merge: false, bla: 'x' } },
79
+ ]);
80
+ });
81
+ test('$merge on set', async (t) => {
82
+ r = await setWalker(schema, {
83
+ $id: 'bl120',
84
+ $merge: false,
85
+ x: {
86
+ bla: 'x',
87
+ },
88
+ });
89
+ t.true(r.errors.length === 0);
90
+ t.deepEqual(resultCollect(r), [
91
+ { path: ['x', 'bla'], value: 'x' },
92
+ { path: ['x'], value: { bla: 'x' } },
93
+ ]);
94
+ });
95
+ //# sourceMappingURL=set.js.map
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,120 @@
1
+ import test from 'ava';
2
+ import { setWalker } from '../src/index.js';
3
+ import { errorCollect, resultCollect } from './utils/index.js';
4
+ const schema = {
5
+ types: {
6
+ bla: {
7
+ prefix: 'bl',
8
+ fields: {
9
+ color: {
10
+ type: 'string',
11
+ format: 'rgbColor',
12
+ },
13
+ name: {
14
+ minLength: 3,
15
+ maxLength: 6,
16
+ type: 'string',
17
+ },
18
+ phonkName: {
19
+ type: 'string',
20
+ pattern: '\\${1,4}',
21
+ },
22
+ bla: {
23
+ type: 'set',
24
+ items: { type: 'string', minLength: 3, maxLength: 6 },
25
+ },
26
+ },
27
+ },
28
+ },
29
+ $defs: {},
30
+ language: 'en',
31
+ root: {
32
+ fields: {},
33
+ },
34
+ prefixToTypeMapping: {
35
+ bl: 'bla',
36
+ },
37
+ };
38
+ test('string max length', async (t) => {
39
+ const err1 = await setWalker(schema, {
40
+ $id: 'bl1',
41
+ name: 'ax',
42
+ });
43
+ const err2 = await setWalker(schema, {
44
+ $id: 'bl1',
45
+ name: 'axaxaxax',
46
+ });
47
+ const res1 = await setWalker(schema, {
48
+ $id: 'bl1',
49
+ name: 'xaxx',
50
+ });
51
+ t.assert(errorCollect(err1, err2).length > 0);
52
+ t.deepEqual(resultCollect(res1), [{ path: ['name'], value: 'xaxx' }]);
53
+ });
54
+ //set parser
55
+ test('set with strings', async (t) => {
56
+ const err1 = await setWalker(schema, {
57
+ $id: 'bl1',
58
+ bla: ['ax', 'axa', 'axxxxa'],
59
+ });
60
+ const res1 = await setWalker(schema, {
61
+ $id: 'bl1',
62
+ bla: ['axx', 'axxxx', 'blaaa'],
63
+ });
64
+ t.assert(errorCollect(err1).length > 0);
65
+ t.deepEqual(resultCollect(res1), [
66
+ { path: ['bla'], value: { $value: ['axx', 'axxxx', 'blaaa'] } },
67
+ ]);
68
+ });
69
+ // this one causes weird array lenght issue in string max length test
70
+ test('string pattern', async (t) => {
71
+ const err1 = await setWalker(schema, {
72
+ $id: 'bl1',
73
+ phonkName: 'blabla',
74
+ });
75
+ const res1 = await setWalker(schema, {
76
+ $id: 'bl1',
77
+ phonkName: 'bla$',
78
+ });
79
+ t.assert(errorCollect(err1).length > 0);
80
+ t.deepEqual(resultCollect(res1), [{ path: ['phonkName'], value: 'bla$' }]);
81
+ });
82
+ test('setting $default', async (t) => {
83
+ const err = await setWalker(schema, {
84
+ $id: 'bl1',
85
+ phonkName: { $default: 'blabla' },
86
+ });
87
+ t.assert(err.errors.length > 0);
88
+ const res1 = await setWalker(schema, {
89
+ $id: 'bl1',
90
+ phonkName: { $default: 'bla$' },
91
+ });
92
+ t.deepEqual(resultCollect(res1), [
93
+ { path: ['phonkName'], value: { $default: 'bla$' } },
94
+ ]);
95
+ });
96
+ test('setting $value', async (t) => {
97
+ const err = await setWalker(schema, {
98
+ $id: 'bl1',
99
+ phonkName: { $value: 'blabla' },
100
+ });
101
+ t.is(err.errors.length, 1);
102
+ const res1 = await setWalker(schema, {
103
+ $id: 'bl1',
104
+ phonkName: { $value: 'bla$' },
105
+ });
106
+ t.deepEqual(resultCollect(res1), [{ path: ['phonkName'], value: 'bla$' }]);
107
+ });
108
+ test('setting color', async (t) => {
109
+ const err = await setWalker(schema, {
110
+ $id: 'bl1',
111
+ color: 'rgba(255,255,255,0.1)',
112
+ });
113
+ t.is(err.errors.length, 0);
114
+ const err2 = await setWalker(schema, {
115
+ $id: 'bl1',
116
+ color: 'rgba(255,255,255,0.1)x',
117
+ });
118
+ t.is(err2.errors.length, 1);
119
+ });
120
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ export {};