@voxgig/create-sdkgen 0.1.0 → 0.1.2

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 (63) hide show
  1. package/package.json +3 -3
  2. package/project/standard/.env.local +1 -0
  3. package/project/standard/.sdk/build/apidef.js +8 -0
  4. package/project/standard/.sdk/build/docgen.js +15 -0
  5. package/project/standard/.sdk/build/sdkgen.js +16 -0
  6. package/project/standard/.sdk/def/README.md +4 -0
  7. package/project/standard/.sdk/model/.model-config/model-config.jsonic +17 -0
  8. package/project/standard/.sdk/model/.model-config/model-config.jsonic~ +16 -0
  9. package/project/standard/.sdk/model/README.md +2 -0
  10. package/project/standard/.sdk/model/api/api-def.jsonic +5 -0
  11. package/project/standard/.sdk/model/api/api-entity-index.jsonic +2 -0
  12. package/project/standard/.sdk/model/config.jsonic +13 -0
  13. package/project/standard/.sdk/model/feature/README.md +2 -0
  14. package/project/standard/.sdk/model/feature/feature-index.jsonic +3 -0
  15. package/project/standard/.sdk/model/flow/flow-index.jsonic +2 -0
  16. package/project/standard/.sdk/model/guide.jsonic +5 -0
  17. package/project/standard/.sdk/model/sdk.fragment.jsonic +38 -0
  18. package/project/standard/.sdk/model/target/README.md +2 -0
  19. package/project/standard/.sdk/model/target/target-index.jsonic +2 -0
  20. package/project/standard/.sdk/model/target/target-index.jsonic~ +4 -0
  21. package/project/standard/.sdk/package.json +34 -0
  22. package/project/standard/.sdk/src/DocStaticRoot.ts +45 -0
  23. package/project/standard/.sdk/src/Root.ts +228 -0
  24. package/project/standard/.sdk/src/cmp/README.md +2 -0
  25. package/project/standard/.sdk/src/tsconfig.json +16 -0
  26. package/project/standard/.sdk/test/.model-config/model-config.json +7 -0
  27. package/project/standard/.sdk/test/.model-config/model-config.jsonic +4 -0
  28. package/project/standard/.sdk/test/primary/auth.jsonic +20 -0
  29. package/project/standard/.sdk/test/primary/body.jsonic +27 -0
  30. package/project/standard/.sdk/test/primary/contextify.jsonic +5 -0
  31. package/project/standard/.sdk/test/primary/done.jsonic +7 -0
  32. package/project/standard/.sdk/test/primary/error.jsonic +19 -0
  33. package/project/standard/.sdk/test/primary/findparam.jsonic +22 -0
  34. package/project/standard/.sdk/test/primary/fullurl.jsonic +50 -0
  35. package/project/standard/.sdk/test/primary/headers.jsonic +12 -0
  36. package/project/standard/.sdk/test/primary/inward.jsonic +3 -0
  37. package/project/standard/.sdk/test/primary/method.jsonic +11 -0
  38. package/project/standard/.sdk/test/primary/operator.jsonic +60 -0
  39. package/project/standard/.sdk/test/primary/options.jsonic +60 -0
  40. package/project/standard/.sdk/test/primary/outward.jsonic +3 -0
  41. package/project/standard/.sdk/test/primary/params.jsonic +10 -0
  42. package/project/standard/.sdk/test/primary/query.jsonic +9 -0
  43. package/project/standard/.sdk/test/primary/reqform.jsonic +9 -0
  44. package/project/standard/.sdk/test/primary/request.jsonic +31 -0
  45. package/project/standard/.sdk/test/primary/resbasic.jsonic +15 -0
  46. package/project/standard/.sdk/test/primary/resbody.jsonic +5 -0
  47. package/project/standard/.sdk/test/primary/resform.jsonic +11 -0
  48. package/project/standard/.sdk/test/primary/resheaders.jsonic +9 -0
  49. package/project/standard/.sdk/test/primary/response.jsonic +20 -0
  50. package/project/standard/.sdk/test/primary/spec.jsonic +32 -0
  51. package/project/standard/.sdk/test/struct/getpath.jsonic +143 -0
  52. package/project/standard/.sdk/test/struct/inject.jsonic +76 -0
  53. package/project/standard/.sdk/test/struct/merge.jsonic +161 -0
  54. package/project/standard/.sdk/test/struct/minor.jsonic +693 -0
  55. package/project/standard/.sdk/test/struct/select.jsonic +166 -0
  56. package/project/standard/.sdk/test/struct/transform.jsonic +453 -0
  57. package/project/standard/.sdk/test/struct/validate.jsonic +287 -0
  58. package/project/standard/.sdk/test/struct/walk.jsonic +57 -0
  59. package/project/standard/.sdk/test/test.json +15080 -0
  60. package/project/standard/.sdk/test/test.jsonic +44 -0
  61. package/project/standard/.sdk/tm/LICENSE +22 -0
  62. package/project/standard/.sdk/tm/README.md +2 -0
  63. /package/bin/{voxgig-create-sdkgen → create-sdkgen} +0 -0
@@ -0,0 +1,693 @@
1
+
2
+ isnode: {
3
+ set: [
4
+ { in: {a:1}, out: true }
5
+ { in: [1], out: true }
6
+ { in: 1, out: false }
7
+ { in: 'a', out: false }
8
+ { in: true, out: false }
9
+ { in: null, out: false }
10
+ { out: false }
11
+ ]
12
+ }
13
+
14
+
15
+ ismap: {
16
+ set: [
17
+ { in: {a:1}, out: true }
18
+ { in: [1], out: false }
19
+ { in: 1, out: false }
20
+ { in: 'a', out: false }
21
+ { in: true, out: false }
22
+ { in: null, out: false }
23
+ { out: false }
24
+ ]
25
+ }
26
+
27
+
28
+ islist: {
29
+ set: [
30
+ { in: {a:1}, out: false }
31
+ { in: [1], out: true }
32
+ { in: 1, out: false }
33
+ { in: 'a', out: false }
34
+ { in: true, out: false }
35
+ { in: null, out: false }
36
+ { out: false }
37
+ ]
38
+ }
39
+
40
+
41
+ iskey: {
42
+ set: [
43
+ { in: 1, out: true }
44
+ { in: 2.2, out: true }
45
+ { in: 'a', out: true }
46
+ { in: '', out: false }
47
+ { in: true, out: false }
48
+ { in: false, out: false }
49
+ { in: {}, out: false }
50
+ { in: {x:1}, out: false }
51
+ { in: [], out: false }
52
+ { in: [1], out: false }
53
+ { in: ['a'], out: false }
54
+ { in: null, out: false }
55
+ { out: false }
56
+ ]
57
+ }
58
+
59
+
60
+ strkey: {
61
+ set: [
62
+ { in: 'a', out: 'a' }
63
+ { in: 1, out: '1' }
64
+ { in: 2.2, out: '2' }
65
+ { in: 'b.c', out: 'b.c' }
66
+ { in: '', out: '' }
67
+ { in: true, out: '' }
68
+ { in: false, out: '' }
69
+ { in: {}, out: '' }
70
+ { in: {x:1}, out: '' }
71
+ { in: [], out: '' }
72
+ { in: [1], out: '' }
73
+ { in: ['a'], out: '' }
74
+ { in: null, out: '' }
75
+ { out: '' }
76
+ ]
77
+ }
78
+
79
+
80
+ isempty: {
81
+ set: [
82
+ { in: '', out: true }
83
+ { in: [], out: true }
84
+ { in: {}, out: true }
85
+
86
+ { in: false, out: false }
87
+ { in: true, out: false }
88
+ { in: 0, out: false }
89
+ { in: 1, out: false }
90
+ { in: 'a', out: false }
91
+ { in: true, out: false }
92
+ { in: 1, out: false }
93
+ { in: {x:2}, out: false }
94
+ { in: [3], out: false }
95
+
96
+ { in: null, out: true }
97
+ { out: true }
98
+ ]
99
+ }
100
+
101
+
102
+ isfunc: {
103
+ set: [
104
+ { out: false }
105
+ { in: null, out: false }
106
+ { in: true, out: false }
107
+ { in: 1, out: false }
108
+ { in: 'a', out: false }
109
+ { in: {}, out: false }
110
+ { in: [], out: false }
111
+ { in: null, out: false }
112
+ { out: false }
113
+ ]
114
+ }
115
+
116
+
117
+ getprop: {
118
+ set: [
119
+ { in: { val: {x:1}, key: x }, out: 1 }
120
+ { in: { val: {x:[11]}, key: x }, out: [11] }
121
+ { in: { val: {x:{z:22}}, key: x }, out: {z:22} }
122
+ { in: { val: {x:2}, key: y } }
123
+ { in: { val: {}, key: z } }
124
+ { in: { val: {}, key: 0 } }
125
+ { in: { val: {x:3}, key: {} } }
126
+ { in: { val: {x:3}, key: [] } }
127
+ { in: { val: {'2':'x'}, key: '2' }, out: 'x' }
128
+ { in: { val: {'2':'x'}, key: 2 }, out: 'x' }
129
+ { in: { val: {'2':'x'}, key: 1 } }
130
+ { in: { val: [], key: 0 } }
131
+ { in: { val: [], key: 'x' } }
132
+ { in: { val: ['a'], key: 0 }, out: 'a' }
133
+ { in: { val: ['a'], key: '0' }, out: 'a' }
134
+ { in: { val: ['a'], key: 'x' } }
135
+ { in: { val: [{x:11},{x:22}], key: 1 }, out: {x:22} }
136
+ { in: { val: [[111],[222]], key: 1 }, out: [222] }
137
+ { in: { val: {x:1}, key: x, alt: 9 }, out: 1 }
138
+ { in: { val: {x:[11]}, key: x, alt: 'A' }, out: [11] }
139
+ { in: { val: {x:{z:22}}, key: x, alt: true }, out: {z:22} }
140
+ { in: { val: {x:2}, key: y, alt: 99 }, out: 99 }
141
+ { in: { val: {}, key: z, alt: 'B' }, out: 'B' }
142
+ { in: { val: {}, key: 0, alt: ['C'] }, out: ['C'] }
143
+ { in: { val: {x:3}, key: {}, alt: {D:88} }, out: {D:88} }
144
+ { in: { val: {x:3}, key: [], alt: {} }, out: {} }
145
+ { in: { val: {'2':'x'}, key: '2', alt: false }, out: 'x' }
146
+ { in: { val: {'2':'x'}, key: 2, alt: [] }, out: 'x' }
147
+ { in: { val: {'2':'x'}, key: 1, alt: [] }, out: [] }
148
+ { in: { val: [], key: 0, alt: true }, out: true }
149
+ { in: { val: [], key: 'x', alt: false }, out: false }
150
+ { in: { val: ['a'], key: 0, alt:{E:[77]} }, out: 'a' }
151
+ { in: { val: ['a'], key: '0', alt:[{F:66}] }, out: 'a' }
152
+ { in: { val: ['a'], key: '0a', alt:false }, out: false }
153
+ { in: { val: ['a'], key: 'x', alt:[{G:551},{G:552}] }, out:[{G:551},{G:552}] }
154
+ { in: { val: [{x:11},{x:22}], key: 1, alt:{H:[441,442,443]} }, out: {x:22} }
155
+ { in: { val: [[111],[222]], key: 1, alt:[[]] }, out: [222] }
156
+ { in: { val: 11, key: 12, alt: 13 }, out: 13 }
157
+ { in: { val: 1, key: 2 } }
158
+ { in: { val: 'a', key: 3 } }
159
+ { in: { val: true, key: 4 } }
160
+ { in: { val: null, key: 5 } }
161
+ { in: { val: {} } }
162
+ { in: { val: [] } }
163
+ { in: { val: 1 } }
164
+ { in: { val: 'a' } }
165
+ { in: { val: true } }
166
+ { in: { val: null } }
167
+ { in: { val: {}, key: null } }
168
+ { in: { val: {}, key: null, alt: null }, out: null }
169
+ { in: {} }
170
+ ]
171
+ }
172
+
173
+
174
+ getelem: {
175
+ set: [
176
+ { in: { val: [101,102], key: 0 }, out: 101}
177
+ { in: { val: [101,102], key: 1 }, out: 102}
178
+ { in: { val: [101,102], key: -1 }, out: 102}
179
+ { in: { val: [101,102], key: -2 }, out: 101}
180
+ { in: { val: [101,102], key: '0' }, out: 101}
181
+ { in: { val: [101,102], key: '1' }, out: 102}
182
+ { in: { val: [101,102], key: '-1' }, out: 102}
183
+ { in: { val: [101,102], key: '-2' }, out: 101}
184
+ { in: { val: [101,102], key: '-3' }}
185
+ { in: { val: [101,102], key: '-1x' }}
186
+ { in: { val: [101,102], key: 'a' }}
187
+
188
+ { in: { val: {x:1}, key: 0 }}
189
+ { in: { val: {x:1}, key: 1 }}
190
+ { in: { val: {x:1}, key: -1 }}
191
+ { in: { val: {x:1}, key: -2 }}
192
+ { in: { val: {x:1}, key: '0' }}
193
+ { in: { val: {x:1}, key: '1' }}
194
+ { in: { val: {x:1}, key: '-1' }}
195
+ { in: { val: {x:1}, key: '-2' }}
196
+ { in: { val: {x:1}, key: '-3' }}
197
+ { in: { val: {x:1}, key: '-1x' }}
198
+ { in: { val: {x:1}, key: 'x' }}
199
+
200
+ { in: { val: {x:1} }}
201
+ { in: { val: [11] }}
202
+ { in: { }}
203
+ { in: { key: 1 }}
204
+ { in: { key: '1' }}
205
+ { in: { key: 'x' }}
206
+ ]
207
+ }
208
+
209
+
210
+ clone: {
211
+ set: [
212
+ { in: {a:1}, out: {a:1} }
213
+ { in: [11], out: [11] }
214
+ { in: 2, out: 2 }
215
+ { in: 'b', out: 'b' }
216
+ { in: true, out: true }
217
+ { in: null, out: null }
218
+ { in: {a:{b:{x:1},c:[2]}}, out: {a:{b:{x:1},c:[2]}} }
219
+ {}
220
+ ]
221
+ }
222
+
223
+
224
+ items: {
225
+ set: [
226
+ { in: {a:11}, out: [['a',11]] }
227
+ { in: {a:1,b:2}, out: [['a',1],['b',2]] }
228
+
229
+ # Keys are sorted.
230
+ { in: {b:22,a:21}, out: [['a',21],['b',22]] }
231
+
232
+ { in: {a:{x:1},b:{x:2},c:{x:3}}, out: [['a',{x:1}],['b',{x:2}],['c',{x:3}]] }
233
+ { in: {a:[111],b:[222],c:[333],d:[444]},
234
+ out: [['a',[111]],['b',[222]],['c',[333]],['d',[444]]] }
235
+ { in: {a:{x:{y:1}},b:{x:{y:2}},c:{x:{y:3}},d:{x:{y:4}},e:{x:{y:5}}},
236
+ out: [['a',{x:{y:1}}],['b',{x:{y:2}}],['c',{x:{y:3}}],['d',{x:{y:4}}],['e',{x:{y:5}}]] }
237
+
238
+ { in: [11], out: [[0,11]] }
239
+ { in: [11,22], out: [[0,11],[1,22]] }
240
+ { in: [{z:1},{z:2},{z:3}], out: [[0,{z:1}],[1,{z:2}],[2,{z:3}]] }
241
+ { in: [[111],[222],[333],[444]], out: [[0,[111]],[1,[222]],[2,[333]],[3,[444]]] }
242
+
243
+ { in: 1, out: [] }
244
+ { in: 'a', out: [] }
245
+ { in: true, out: [] }
246
+ { in: null, out: [] }
247
+ { out: [] }
248
+ ]
249
+ }
250
+
251
+
252
+ keysof: {
253
+ set: [
254
+ { out: [] }
255
+ { in: null, out: [] }
256
+ { in: {}, out: [] }
257
+ { in: [], out: [] }
258
+ { in: {a:1}, out: [a] }
259
+ { in: {a:2,b:3}, out: [a,b] }
260
+ { in: {b:4,a:5}, out: [a,b] }
261
+ { in: [a], out: ['0'] }
262
+ { in: [a,b], out: ['0','1'] }
263
+ ]
264
+ }
265
+
266
+
267
+ haskey: {
268
+ set: [
269
+ { in: { src: {a:1}, key:a}, out: true }
270
+ { in: { src: {a:2}, key:b}, out: false }
271
+ { in: { src: {a:11,c:12}, key:a}, out: true }
272
+ { in: { src: {a:12,c:13}, key:b}, out: false }
273
+ { in: { src: {a:13,c:14}, key:c}, out: true }
274
+ { in: { src: {a:21,b:22}, key:a}, out: true }
275
+ { in: { src: {a:22,b:23}, key:b}, out: true }
276
+ { in: { src: {a:24,b:25}, key:c}, out: false }
277
+ { in: { src: [3], key:0}, out: true }
278
+ { in: { src: [3], key:1}, out: false }
279
+ { in: { src: [3], key:'0'}, out: true }
280
+ { in: { src: [3], key:'1'}, out: false }
281
+ { in: { src: null, key:'a'}, out: false }
282
+ { in: { src: null, key:1}, out: false }
283
+ { in: { src: null, key:null}, out: false }
284
+ { in: { src: {}, key:null}, out: false }
285
+ { in: { src: [], key:null}, out: false }
286
+ { in: { src: []}, out: false }
287
+ { in: { src: {}}, out: false }
288
+ { in: {}, out: false }
289
+ ]
290
+ }
291
+
292
+
293
+ setprop: {
294
+ set: [
295
+ { in: { parent: {}, key: x, val: 1, }, out: {x:1} }
296
+ { in: { key: x, val: 1 } }
297
+ { in: { parent: {}, val: 1 }, out: {} }
298
+
299
+ { in: { parent: {x:11}, key: y, val: 22, }, out: {x:11,y:22} }
300
+ { in: { parent: {x:12}, key: y, val: 'Y' }, out: {x:12,y:'Y'} }
301
+ { in: { parent: {x:13}, key: y, val: true }, out: {x:13,y:true} }
302
+ { in: { parent: {x:14}, key: y, val: false }, out: {x:14,y:false} }
303
+ { in: { parent: {x:141}, key: y, val: null }, out: {x:141,y:null} }
304
+
305
+ { in: { parent: {x:15}, key: y, val: {z:22}, }, out: {x:15,y:{z:22}} }
306
+ { in: { parent: {x:16}, key: y, val: [22], }, out: {x:16,y:[22]} }
307
+
308
+ { in: { parent: {x:17}, key: 0, val: 0, }, out: {x:17,'0':0} }
309
+
310
+ { in: { parent: [22], key: 0, val: 23, }, out: [23] }
311
+ { in: { parent: [23,24], key: 1, val: 25, }, out: [23,25] }
312
+ { in: { parent: [25], key: 1, val: 26, }, out: [25,26] }
313
+ { in: { parent: [27], key: 2, val: 28, }, out: [27, 28] }
314
+ { in: { parent: [271], key: 3, val: 281, }, out: [271, 281] }
315
+ { in: { parent: [271], key: -1, val: 281, }, out: [281, 271] }
316
+ { in: { parent: [272], key: -2, val: 282, }, out: [282, 272] }
317
+
318
+ { in: { parent: [28], key: [], val: 29, }, out: [28] }
319
+ { in: { parent: [29], key: {}, val: 30, }, out: [29] }
320
+ { in: { parent: [30], key: true, val: 31, }, out: [30] }
321
+ { in: { parent: [31], key: false, val: 32, }, out: [31] }
322
+
323
+ { in: { parent: [], key: 'a' }, out: [] }
324
+ ]
325
+ }
326
+
327
+
328
+ delprop: {
329
+ set: [
330
+ { in: { parent: {}, key: x }, out: {} }
331
+ { in: { key: x } }
332
+ { in: { parent: {} }, out: {} }
333
+
334
+ { in: { parent: {x:11}, key: x }, out: {} }
335
+ { in: { parent: {x:11,y:22}, key: x }, out: {y:22} }
336
+ { in: { parent: {x:11,y:22}, key: y }, out: {x:11} }
337
+ { in: { parent: {x:11,y:22,z:33}, key: y }, out: {x:11,z:33} }
338
+
339
+ { in: { parent: {x:15}, key: y }, out: {x:15} }
340
+ { in: { parent: {x:17}, key: 0 }, out: {x:17} }
341
+
342
+ { in: { parent: [22], key: 0 }, out: [] }
343
+ { in: { parent: [23,24], key: 0 }, out: [24] }
344
+ { in: { parent: [23,24], key: 1 }, out: [23] }
345
+ { in: { parent: [25,26,27], key: 1 }, out: [25,27] }
346
+ { in: { parent: [28,29,30], key: 0 }, out: [29,30] }
347
+ { in: { parent: [31,32,33], key: 2 }, out: [31,32] }
348
+
349
+ { in: { parent: [34], key: 1 }, out: [34] }
350
+ { in: { parent: [35], key: 2 }, out: [35] }
351
+ { in: { parent: [36], key: -1 }, out: [36] }
352
+
353
+ { in: { parent: [37], key: [] }, out: [37] }
354
+ { in: { parent: [38], key: {} }, out: [38] }
355
+ { in: { parent: [39], key: true }, out: [39] }
356
+ { in: { parent: [40], key: false }, out: [40] }
357
+
358
+ { in: { parent: {x:41}, key: y }, out: {x:41} }
359
+ { in: { parent: [], key: 'a' }, out: [] }
360
+ ]
361
+ }
362
+
363
+
364
+ stringify: {
365
+ set: [
366
+ { in: { val: 1 }, out: '1' }
367
+ { in: { val: 'a' }, out: 'a' }
368
+ { in: { val: '"' }, out: '"' }
369
+ { in: { val: false }, out: 'false' }
370
+ { in: { val: null }, out: 'null' }
371
+ { in: { }, out: '' }
372
+ { in: { val: [2,'b',true] }, out: '[2,b,true]' }
373
+ { in: { val: [[3],{x:1}] }, out: '[[3],{x:1}]' }
374
+ { in: { val: {b:2,a:3}}, out: '{a:3,b:2}' }
375
+ { in: { val: {x:4,y:'c',z:false} }, out: '{x:4,y:c,z:false}' }
376
+ { in: { val: {x:{y:5,z:'d'},y:[6]} }, out: '{x:{y:5,z:d},y:[6]}' }
377
+ { in: { val: {x:{y:5,z:'d'},y:[6]}, max:10 }, out: '{x:{y:5...' }
378
+ ]
379
+ }
380
+
381
+
382
+ jsonify: {
383
+ set: [
384
+ { in: 1, out: '1' }
385
+ { in: 'a', out: '"a"' }
386
+ { in: true, out: 'true' }
387
+ { in: false, out: 'false' }
388
+ { in: null, out: 'null' }
389
+ { out: 'null' }
390
+ { in: [], out: '[]' }
391
+ { in: {}, out: '{}' }
392
+ { in: [1,2,3], out: '[\n 1,\n 2,\n 3\n]' }
393
+ { in: {a:1}, out: '{\n "a": 1\n}' }
394
+ { in: {a:1,b:2}, out: '{\n "a": 1,\n "b": 2\n}' }
395
+ { in: {x:{y:1}}, out: '{\n "x": {\n "y": 1\n }\n}' }
396
+ { in: [{a:1},{b:2}], out: '[\n {\n "a": 1\n },\n {\n "b": 2\n }\n]' }
397
+ ]
398
+ }
399
+
400
+
401
+ pathify: {
402
+ set: [
403
+ { in: { path: [a] }, out:'a' }
404
+ { in: { path: [a,b] }, out:'a.b' }
405
+ { in: { path: [a,b,c] }, out:'a.b.c' }
406
+ { in: { path: [a,b,c,d] }, out:'a.b.c.d' }
407
+ { in: { path: [a,b,c,d,e] }, out:'a.b.c.d.e' }
408
+ { in: { path: [0] }, out:'0' }
409
+ { in: { path: [1] }, out:'1' }
410
+ { in: { path: [2,3] }, out:'2.3' }
411
+ { in: { path: [4,5,6] }, out:'4.5.6' }
412
+ { in: { path: [7,f,8,g,9,h] }, out:'7.f.8.g.9.h' }
413
+ { in: { path: ['11',22,'33',44.4,'55.5'] }, out:'11.22.33.44.555' }
414
+ { in: { path: [a,true,null,[],{},1] }, out:'a.1' }
415
+ { in: { path: [] }, out:'<root>' }
416
+ { in: { path: a }, out:'a' }
417
+ { in: { path: 1 }, out:'1' }
418
+ { in: { path: true }, out:'<unknown-path:true>' }
419
+ { in: { path: {} }, out:'<unknown-path:{}>' }
420
+ { in: { path: null }, out:'<unknown-path:null>' }
421
+ { in: { }, out:'<unknown-path>' }
422
+
423
+ { in: { path: [A], from: 1 }, out:'<root>' }
424
+ { in: { path: [A,b], from: 1 }, out:'b' }
425
+ { in: { path: [A,b,c], from: 1 }, out:'b.c' }
426
+ { in: { path: [A,b,c,d], from: 1 }, out:'b.c.d' }
427
+ { in: { path: [A,b,c,d,e], from: 1 }, out:'b.c.d.e' }
428
+ { in: { path: [0], from: 1 }, out:'<root>' }
429
+ { in: { path: [11], from: 1 }, out:'<root>' }
430
+ { in: { path: [22,33], from: 1 }, out:'33' }
431
+ { in: { path: [44,55,66], from: 1 }, out:'55.66' }
432
+ { in: { path: [77,f,88,g,99,h], from: 1 }, out:'f.88.g.99.h' }
433
+ { in: { path: ['111',222,'333',444.4,'555.5'], from: 1 }, out:'222.333.444.5555' }
434
+ { in: { path: [A,true,null,[],{},1], from: 1 }, out:'1' }
435
+ { in: { path: [], from: 1 }, out:'<root>' }
436
+ { in: { path: a, from: 1 }, out:'<root>' }
437
+ { in: { from: 1 }, out:'<unknown-path>' }
438
+ { in: { path: 1, from: 1 }, out:'<root>' }
439
+ { in: { path: true, from: 1 }, out:'<unknown-path:true>' }
440
+ { in: { path: {}, from: 1 }, out:'<unknown-path:{}>' }
441
+ { in: { path: null, from: 1 }, out:'<unknown-path:null>' }
442
+ { in: { from: 1 }, out:'<unknown-path>' }
443
+ ]
444
+ }
445
+
446
+
447
+ escre: {
448
+ set: [
449
+ { in: 'a0_', out: 'a0_' }
450
+ { in: '.*+?^${}()|[]\\', out: '\\.\\*\\+\\?\\^\\$\\{\\}\\(\\)\\|\\[\\]\\\\' }
451
+ ]
452
+ }
453
+
454
+
455
+ escurl: {
456
+ set: [
457
+ { in: 'a-B_0.', out: 'a-B_0.' }
458
+ { in: ' ?:', out: '%20%3F%3A' }
459
+ ]
460
+ }
461
+
462
+
463
+ joinurl: {
464
+ set: [
465
+ { out: 'a' in: ['a'] }
466
+ { out: 'a/b' in: ['a','b'] }
467
+ { out: 'a/b' in: ['a',null,'b'] }
468
+ { out: 'a/b' in: ['a/','b'] }
469
+ { out: 'a/b' in: ['a','/b'] }
470
+ { out: 'a/b' in: ['a/','/b'] }
471
+ { out: 'a/b' in: ['a/','//b'] }
472
+ { out: 'a/b/c/d' in: ['a','b','c//d'] }
473
+ { out: '//a/b' in: ['//a','/b'] }
474
+ { in: ['https://www.example.com/','/a','/b/','/c','d'],
475
+ out: 'https://www.example.com/a/b/c/d' }
476
+ ]
477
+ }
478
+
479
+ typify: {
480
+ set: [
481
+ { in: {a:1}, out: 'object' }
482
+ { in: [1], out: 'array' }
483
+ { in: 1, out: 'number' }
484
+ { in: 3.14159, out: 'number' }
485
+ { in: -0.5, out: 'number' }
486
+ { in: 'a', out: 'string' }
487
+ { in: true, out: 'boolean' }
488
+ { in: false, out: 'boolean' }
489
+ { in: null, out: 'null' }
490
+ { out: 'null' }
491
+ ]
492
+ }
493
+
494
+
495
+ size: {
496
+ set: [
497
+ { in: [], out: 0 }
498
+ { in: {}, out: 0 }
499
+
500
+ { in: [10], out: 1 }
501
+ { in: {a:100}, out: 1 }
502
+
503
+ { in: [10,20], out: 2 }
504
+ { in: {a:100,b:200}, out: 2 }
505
+
506
+ { in: '', out: 0 }
507
+ { in: 'a', out: 1 }
508
+ { in: 'ab', out: 2 }
509
+
510
+ { in: 0, out: 0 }
511
+ { in: 1, out: 1 }
512
+ { in: 2, out: 2 }
513
+
514
+ { in: 0.5, out: 0 }
515
+ { in: 1.5, out: 1 }
516
+ { in: 2.5, out: 2 }
517
+
518
+ { in: null, out: 0 }
519
+ { out: 0 }
520
+
521
+ { in: true, out: 1 }
522
+ { in: false, out: 0 }
523
+ ]
524
+ }
525
+
526
+
527
+ slice: {
528
+ set: [
529
+ { in: {val:[10,20,30], start:0, end:0}, out: [] }
530
+ { in: {val:[11,21,31], start:0, end:1}, out: [11] }
531
+ { in: {val:[12,22,32], start:0, end:2}, out: [12,22] }
532
+ { in: {val:[13,23,33], start:0, end:3}, out: [13,23,33] }
533
+ { in: {val:[14,24,34], start:0, end:4}, out: [14,24,34] }
534
+ { in: {val:[15,25,35], start:0, end:5}, out: [15,25,35] }
535
+
536
+ { in: {val:[16,26,36], start:0, end:-1}, out: [16,26] }
537
+ { in: {val:[17,27,37], start:0, end:-2}, out: [17] }
538
+ { in: {val:[18,28,38], start:0, end:-3}, out: [] }
539
+ { in: {val:[19,29,39], start:0, end:-4}, out: [] }
540
+ { in: {val:[21,31,41], start:0, end:-5}, out: [] }
541
+
542
+ { in: {val:[22,32,42], start:-1}, out: [22,32] }
543
+ { in: {val:[23,33,43], start:-2}, out: [23] }
544
+ { in: {val:[24,34,44], start:-3}, out: [] }
545
+ { in: {val:[25,35,45], start:-4}, out: [] }
546
+ { in: {val:[26,36,46], start:-5}, out: [] }
547
+
548
+ { in: {val:[110,120], start:0, end:0}, out: [] }
549
+ { in: {val:[111,121], start:0, end:1}, out: [111] }
550
+ { in: {val:[112,122], start:0, end:2}, out: [112,122] }
551
+ { in: {val:[113,123], start:0, end:3}, out: [113,123] }
552
+ { in: {val:[114,124], start:0, end:4}, out: [114,124] }
553
+ { in: {val:[115,125], start:0, end:5}, out: [115,125] }
554
+
555
+ { in: {val:[116,126], start:0, end:-1}, out: [116] }
556
+ { in: {val:[117,127], start:0, end:-2}, out: [] }
557
+ { in: {val:[118,128], start:0, end:-3}, out: [] }
558
+ { in: {val:[119,129], start:0, end:-4}, out: [] }
559
+ { in: {val:[121,131], start:0, end:-5}, out: [] }
560
+
561
+ { in: {val:[122,132], start:-1}, out: [122] }
562
+ { in: {val:[123,133], start:-2}, out: [] }
563
+ { in: {val:[124,134], start:-3}, out: [] }
564
+ { in: {val:[125,135], start:-4}, out: [] }
565
+ { in: {val:[126,136], start:-5}, out: [] }
566
+
567
+ { in: {val:[210], start:0, end:0}, out: [] }
568
+ { in: {val:[211], start:0, end:1}, out: [211] }
569
+ { in: {val:[212], start:0, end:2}, out: [212] }
570
+ { in: {val:[213], start:0, end:3}, out: [213] }
571
+ { in: {val:[214], start:0, end:4}, out: [214] }
572
+ { in: {val:[215], start:0, end:5}, out: [215] }
573
+
574
+ { in: {val:[216], start:0, end:-1}, out: [] }
575
+ { in: {val:[217], start:0, end:-2}, out: [] }
576
+ { in: {val:[218], start:0, end:-3}, out: [] }
577
+ { in: {val:[219], start:0, end:-4}, out: [] }
578
+ { in: {val:[221], start:0, end:-5}, out: [] }
579
+
580
+ { in: {val:[222], start:-1}, out: [] }
581
+ { in: {val:[223], start:-2}, out: [] }
582
+ { in: {val:[224], start:-3}, out: [] }
583
+ { in: {val:[225], start:-4}, out: [] }
584
+ { in: {val:[226], start:-5}, out: [] }
585
+
586
+ { in: {val:[33,34,35], start:2, end:1}, out: [] }
587
+
588
+ { in: {val:'abc'}, out: 'abc' }
589
+ { in: {val:'ABC', start:1}, out: 'BC' }
590
+ { in: {val:'def', start:-1}, out: 'de' }
591
+ { in: {val:'DEF', start:0,end:-1}, out: 'DE' }
592
+ { in: {val:'ghi', start:1,end:2}, out: 'h' }
593
+ { in: {val:'GHI', start:2,end:1}, out: '' }
594
+
595
+ { in: {val:3}, out: 3 }
596
+ { in: {val:4, start:1}, out: 4 }
597
+ { in: {val:5, start:7}, out: 7 }
598
+ { in: {val:6, start:6}, out: 6 }
599
+
600
+ # NOTE: end is exclusive!
601
+ { in: {val:3, end:4}, out: 3 }
602
+ { in: {val:3, end:3}, out: 2 }
603
+ { in: {val:3, end:2}, out: 1 }
604
+
605
+ { in: {val:5, start:3, end:7}, out: 5 }
606
+ { in: {val:4, start:3, end:7}, out: 4 }
607
+ { in: {val:3, start:3, end:7}, out: 3 }
608
+ { in: {val:2, start:3, end:7}, out: 3 }
609
+ { in: {val:0, start:3, end:7}, out: 3 }
610
+ { in: {val:-1, start:3, end:7}, out: 3 }
611
+ { in: {val:6, start:3, end:7}, out: 6 }
612
+ { in: {val:7, start:3, end:7}, out: 6 }
613
+ { in: {val:8, start:3, end:7}, out: 6 }
614
+
615
+ { in: {val:-3, start:-5, end:-1}, out: -3 }
616
+ { in: {val:-5, start:-5, end:-1}, out: -5 }
617
+ { in: {val:-7, start:-5, end:-1}, out: -5 }
618
+ { in: {val:-2, start:-5, end:-1}, out: -2 }
619
+ { in: {val:-1, start:-5, end:-1}, out: -2 }
620
+ { in: {val:0, start:-5, end:-1}, out: -2 }
621
+ { in: {val:1, start:-5, end:-1}, out: -2 }
622
+
623
+
624
+ { in: {val:true}, out: true }
625
+ { in: {val:true,start:1}, out: true }
626
+ { in: {val:true,start:1,end:2}, out: true }
627
+
628
+ { in: {val:{x:1}}, out: {x:1} }
629
+ { in: {val:{x:1},start:1}, out: {x:1} }
630
+ { in: {val:{x:1},start:1,end:2}, out: {x:1} }
631
+
632
+ ]
633
+ }
634
+
635
+
636
+ pad: {
637
+ set: [
638
+ { in: {val:'a', pad:0}, out: 'a' }
639
+ { in: {val:'a', pad:1}, out: 'a' }
640
+ { in: {val:'a', pad:2}, out: 'a ' }
641
+ { in: {val:'a', pad:3}, out: 'a ' }
642
+ { in: {val:'a', pad:4}, out: 'a ' }
643
+
644
+ { in: {val:'a'}, out: 'a ' }
645
+
646
+ { in: {val:'a', pad:-1}, out: 'a' }
647
+ { in: {val:'a', pad:-2}, out: ' a' }
648
+ { in: {val:'a', pad:-3}, out: ' a' }
649
+ { in: {val:'a', pad:-4}, out: ' a' }
650
+
651
+ { in: {val:'qq', pad:0}, out: 'qq' }
652
+ { in: {val:'qq', pad:1}, out: 'qq' }
653
+ { in: {val:'qq', pad:2}, out: 'qq' }
654
+ { in: {val:'qq', pad:3}, out: 'qq ' }
655
+ { in: {val:'qq', pad:4}, out: 'qq ' }
656
+
657
+ { in: {val:'qq'}, out: 'qq ' }
658
+
659
+ { in: {val:'qq', pad:-1}, out: 'qq' }
660
+ { in: {val:'qq', pad:-2}, out: 'qq' }
661
+ { in: {val:'qq', pad:-3}, out: ' qq' }
662
+ { in: {val:'qq', pad:-4}, out: ' qq' }
663
+
664
+
665
+ { in: {val:'', pad:0}, out: '' }
666
+ { in: {val:'', pad:1}, out: ' ' }
667
+ { in: {val:'', pad:2}, out: ' ' }
668
+ { in: {val:'', pad:3}, out: ' ' }
669
+ { in: {val:'', pad:4}, out: ' ' }
670
+
671
+ { in: {val:''}, out: ' ' }
672
+
673
+ { in: {val:'', pad:-1}, out: ' ' }
674
+ { in: {val:'', pad:-2}, out: ' ' }
675
+ { in: {val:'', pad:-3}, out: ' ' }
676
+ { in: {val:'', pad:-4}, out: ' ' }
677
+
678
+ { in: {val:'', pad:4, char:'i'}, out: 'iiii' }
679
+ { in: {val:'', pad:-4, char:'v'}, out: 'vvvv' }
680
+
681
+ { in: {val:'', pad:0, char:'jk'}, out: '' }
682
+ { in: {val:'', char:'jk'}, out: 'jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj' }
683
+ { in: {val:'', pad:1, char:'jk'}, out: 'j' }
684
+ { in: {val:'', pad:2, char:'jk'}, out: 'jj' }
685
+ { in: {val:'', pad:3, char:'jk'}, out: 'jjj' }
686
+
687
+ { in: {val:'"', pad:2}, out: '" ' }
688
+ { in: {val:'"', pad:-3}, out: ' "' }
689
+
690
+ ]
691
+ }
692
+
693
+