@based/schema 0.0.16 → 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 +558 -3
  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 -51
  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 -201
  111. package/test/setWalker.ts +0 -494
  112. package/test/text.ts +0 -171
package/test/string.ts CHANGED
@@ -1,183 +1,139 @@
1
- import test from 'ava'
2
- import { BasedSchema, setWalker, BasedSetHandlers } from '../src/index'
3
-
4
- const schema: BasedSchema = {
5
- types: {
6
- bla: {
7
- prefix: 'bl',
8
- fields: {
9
- name: {
10
- minLength: 3,
11
- maxLength: 6,
12
- type: 'string',
13
- },
14
- phonkName: {
15
- type: 'string',
16
- pattern: '\\${1,4}',
17
- },
18
- bla: {
19
- type: 'set',
20
- items: { type: 'string', minLength: 3, maxLength: 6 },
21
- },
22
- },
23
- },
24
- },
25
- $defs: {},
26
- languages: ['en'],
27
- root: {
28
- fields: {},
29
- },
30
- prefixToTypeMapping: {
31
- bl: 'bla',
32
- },
33
- }
34
-
35
- const createHandlers = (): {
36
- results: { path: (number | string)[]; value: any }[]
37
- handlers: BasedSetHandlers
38
- } => {
39
- const results: { path: (number | string)[]; value: any }[] = []
40
- const handlers = {
41
- collect: ({ path, value, typeSchema, fieldSchema, target }) => {
42
- results.push({ path, value })
43
- },
44
- checkRequiredFields: async (paths) => {
45
- return true
46
- },
47
- referenceFilterCondition: async (id, filter) => {
48
- return true
49
- },
50
- }
51
- return { results, handlers }
52
- }
53
-
54
- test('string max length', async (t) => {
55
- const { handlers, results } = createHandlers()
56
- await t.throwsAsync(
57
- setWalker(
58
- schema,
59
- {
60
- $id: 'bl1',
61
- name: 'ax',
62
- },
63
- handlers
64
- )
65
- )
66
- await t.throwsAsync(
67
- setWalker(
68
- schema,
69
- {
70
- $id: 'bl1',
71
- name: 'axaxaxax',
72
- },
73
- handlers
74
- )
75
- )
76
- await setWalker(
77
- schema,
78
- {
79
- $id: 'bl1',
80
- name: 'xaxx',
81
- },
82
- handlers
83
- )
84
- t.deepEqual(results, [{ path: ['name'], value: 'xaxx' }])
85
- })
86
-
87
- test('set with strings', async (t) => {
88
- const { handlers, results } = createHandlers()
89
- await t.throwsAsync(
90
- setWalker(
91
- schema,
92
- {
93
- $id: 'bl1',
94
- bla: ['ax', 'axa', 'axxxxa'],
95
- },
96
- handlers
97
- )
98
- )
99
- t.deepEqual(results, [])
100
- await setWalker(
101
- schema,
102
- {
103
- $id: 'bl1',
104
- bla: ['axx', 'axxxx', 'blaaa'],
105
- },
106
- handlers
107
- )
108
- t.deepEqual(results, [
109
- { path: ['bla'], value: { $value: ['axx', 'axxxx', 'blaaa'] } },
110
- ])
111
- })
112
-
113
- test('string pattern', async (t) => {
114
- const { handlers, results } = createHandlers()
115
- await t.throwsAsync(
116
- setWalker(
117
- schema,
118
- {
119
- $id: 'bl1',
120
- phonkName: 'blabla',
121
- },
122
- handlers
123
- )
124
- )
125
- t.deepEqual(results, [])
126
- await setWalker(
127
- schema,
128
- {
129
- $id: 'bl1',
130
- phonkName: 'bla$',
131
- },
132
- handlers
133
- )
134
- t.deepEqual(results, [{ path: ['phonkName'], value: 'bla$' }])
135
- })
136
-
137
- test('setting $default', async (t) => {
138
- const { handlers, results } = createHandlers()
139
- await t.throwsAsync(
140
- setWalker(
141
- schema,
142
- {
143
- $id: 'bl1',
144
- phonkName: { $default: 'blabla' },
145
- },
146
- handlers
147
- )
148
- )
149
- t.deepEqual(results, [])
150
- await setWalker(
151
- schema,
152
- {
153
- $id: 'bl1',
154
- phonkName: { $default: 'bla$' },
155
- },
156
- handlers
157
- )
158
- t.deepEqual(results, [{ path: ['phonkName'], value: { $default: 'bla$' } }])
159
- })
160
-
161
- test('setting $value', async (t) => {
162
- const { handlers, results } = createHandlers()
163
- await t.throwsAsync(
164
- setWalker(
165
- schema,
166
- {
167
- $id: 'bl1',
168
- phonkName: { $value: 'blabla' },
169
- },
170
- handlers
171
- )
172
- )
173
- t.deepEqual(results, [])
174
- await setWalker(
175
- schema,
176
- {
177
- $id: 'bl1',
178
- phonkName: { $value: 'bla$' },
179
- },
180
- handlers
181
- )
182
- t.deepEqual(results, [{ path: ['phonkName'], value: { $value: 'bla$' } }])
183
- })
1
+ // import test from 'ava'
2
+ // import { BasedSchema, setWalker2 } from '../src/index'
3
+
4
+ // const schema: BasedSchema = {
5
+ // types: {
6
+ // bla: {
7
+ // prefix: 'bl',
8
+ // fields: {
9
+ // name: {
10
+ // minLength: 3,
11
+ // maxLength: 6,
12
+ // type: 'string',
13
+ // },
14
+ // phonkName: {
15
+ // type: 'string',
16
+ // pattern: '\\${1,4}',
17
+ // },
18
+ // bla: {
19
+ // type: 'set',
20
+ // items: { type: 'string', minLength: 3, maxLength: 6 },
21
+ // },
22
+ // },
23
+ // },
24
+ // },
25
+ // $defs: {},
26
+ // languages: ['en'],
27
+ // root: {
28
+ // fields: {},
29
+ // },
30
+ // prefixToTypeMapping: {
31
+ // bl: 'bla',
32
+ // },
33
+ // }
34
+
35
+ // test('string max length', async (t) => {
36
+ // const err1 = await setWalker2(schema, {
37
+ // $id: 'bl1',
38
+ // name: 'ax',
39
+ // })
40
+
41
+ // const err2 = await setWalker2(schema, {
42
+ // $id: 'bl1',
43
+ // name: 'axaxaxax',
44
+ // })
45
+ // const res1 = await setWalker2(schema, {
46
+ // $id: 'bl1',
47
+ // name: 'xaxx',
48
+ // })
49
+
50
+ // console.log(err1.errors)
51
+ // console.log(err2.errors)
52
+ // const err = [err2.errors]
53
+ // const res = [res1]
54
+
55
+ // // t.assert(err[0].length === 2)
56
+ // t.deepEqual(res[0].target.collected, [{ path: ['name'], value: 'xaxx' }])
57
+ // })
58
+
59
+ // //set parser
60
+ // test('set with strings', async (t) => {
61
+ // const err1 = setWalker2(schema, {
62
+ // $id: 'bl1',
63
+ // bla: ['ax', 'axa', 'axxxxa'],
64
+ // })
65
+
66
+ // const res1 = await setWalker2(schema, {
67
+ // $id: 'bl1',
68
+ // bla: ['axx', 'axxxx', 'blaaa'],
69
+ // })
70
+
71
+ // const err = [(await err1).errors]
72
+ // const res = [await res1]
73
+
74
+ // // t.assert(err[0].length === 1)
75
+ // t.deepEqual(res[0].target.collected, [
76
+ // { path: ['bla'], value: { $value: ['axx', 'axxxx', 'blaaa'] } },
77
+ // ])
78
+ // })
79
+
80
+ // // this one causes weird array lenght issue in string max length test
81
+ // test('string pattern', async (t) => {
82
+ // const err1 = await setWalker2(schema, {
83
+ // $id: 'bl1',
84
+ // phonkName: 'blabla',
85
+ // })
86
+
87
+ // const res1 = await setWalker2(schema, {
88
+ // $id: 'bl1',
89
+ // phonkName: 'bla$',
90
+ // })
91
+
92
+ // const err = [err1.errors]
93
+
94
+ // const res = [res1]
95
+ // // t.assert(err[0].length === 1)
96
+ // t.deepEqual(res[0].target.collected, [{ path: ['phonkName'], value: 'bla$' }])
97
+ // })
98
+
99
+ // test('setting $default', async (t) => {
100
+ // const err = await setWalker2(schema, {
101
+ // $id: 'bl1',
102
+ // phonkName: { $default: 'blabla' },
103
+ // })
104
+ // t.assert(err.errors.length > 1)
105
+
106
+ // const res1 = await setWalker2(schema, {
107
+ // $id: 'bl1',
108
+ // phonkName: { $default: 'bla$' },
109
+ // })
110
+
111
+ // const res = [res1]
112
+ // console.log(res) // is ok
113
+ // console.log(res1) // isnt ok???
114
+
115
+ // t.deepEqual(res[0].target.collected, [
116
+ // { path: ['phonkName'], value: { $default: 'bla$' } },
117
+ // ])
118
+ // })
119
+
120
+ // test('setting $value', async (t) => {
121
+ // const err = await setWalker2(schema, {
122
+ // $id: 'bl1',
123
+ // phonkName: { $value: 'blabla' },
124
+ // })
125
+ // t.assert(err.errors.length > 1)
126
+
127
+ // const res1 = await setWalker2(schema, {
128
+ // $id: 'bl1',
129
+ // phonkName: { $value: 'bla$' },
130
+ // })
131
+
132
+ // const res = [res1]
133
+ // console.log(res) // is ok
134
+ // console.log(res1) // isnt ok???
135
+
136
+ // t.deepEqual(res[0].target.collected, [
137
+ // { path: ['phonkName'], value: { $value: 'bla$' } },
138
+ // ])
139
+ // })
@@ -0,0 +1,23 @@
1
+ import { Path } from '@saulx/utils'
2
+ import { BasedSetTarget } from '../../src'
3
+ import { ParseError } from '../../src/error'
4
+
5
+ export const resultCollect = (...results: BasedSetTarget[]) => {
6
+ const assertableResults: { path: Path; value: any }[] = []
7
+ for (let i = 0; i < results.length; i++) {
8
+ assertableResults.push(
9
+ ...results[i].collected.map((v) => ({ path: v.path, value: v.value }))
10
+ )
11
+ }
12
+ return assertableResults
13
+ }
14
+
15
+ export const errorCollect = (...results: BasedSetTarget[]) => {
16
+ const errors: { path: Path; code: ParseError }[] = []
17
+ for (let i = 0; i < results.length; i++) {
18
+ if (results[i].errors) {
19
+ errors.push(...results[i].errors)
20
+ }
21
+ }
22
+ return errors
23
+ }