ondc-code-generator 0.8.9 → 0.9.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.
Files changed (86) hide show
  1. package/alpha/table/page/index.html +11487 -0
  2. package/alpha/table/page/style.css +449 -0
  3. package/alpha/table/rag-table-docs/confirm.md +60 -0
  4. package/alpha/table/rag-table-docs/init.md +78 -0
  5. package/alpha/table/rag-table-docs/on_confirm.md +161 -0
  6. package/alpha/table/rag-table-docs/on_init.md +143 -0
  7. package/alpha/table/rag-table-docs/on_search.md +160 -0
  8. package/alpha/table/rag-table-docs/on_select.md +96 -0
  9. package/alpha/table/rag-table-docs/on_status.md +150 -0
  10. package/alpha/table/rag-table-docs/on_update.md +161 -0
  11. package/alpha/table/rag-table-docs/raw_table.json +11198 -0
  12. package/alpha/table/rag-table-docs/search.md +125 -0
  13. package/alpha/table/rag-table-docs/select.md +67 -0
  14. package/alpha/table/rag-table-docs/status.md +41 -0
  15. package/alpha/table/rag-table-docs/update.md +48 -0
  16. package/alpha/table/readme.md +1312 -0
  17. package/alpha/table/validPaths.json +34134 -0
  18. package/alpha/table.zip +0 -0
  19. package/dist/bin/cli.js +4 -0
  20. package/dist/generator/config-compiler.js +12 -0
  21. package/dist/generator/generators/documentation/md-generator.d.ts +11 -5
  22. package/dist/generator/generators/documentation/md-generator.js +22 -28
  23. package/dist/generator/generators/documentation/templates/index.mustache +162 -26
  24. package/dist/generator/generators/documentation/templates/style.css +387 -142
  25. package/dist/generator/generators/rag/rag-generator.d.ts +48 -0
  26. package/dist/generator/generators/rag/rag-generator.js +185 -0
  27. package/dist/generator/generators/rag/rag-table-generator.d.ts +55 -0
  28. package/dist/generator/generators/rag/rag-table-generator.js +263 -0
  29. package/dist/types/compiler-types.d.ts +3 -1
  30. package/dist/types/compiler-types.js +2 -0
  31. package/package.json +1 -1
  32. package/alpha/docs/page/index.html +0 -6137
  33. package/alpha/docs/page/style.css +0 -204
  34. package/alpha/docs/readme.md +0 -5939
  35. package/alpha/docs/validPaths.json +0 -14351
  36. package/alpha/page/index.html +0 -6137
  37. package/alpha/page/style.css +0 -204
  38. package/alpha/readme.md +0 -5939
  39. package/alpha/validationpkg/examples/search.json +0 -143
  40. package/alpha/validationpkg/examples_output/search/case-001/output.json +0 -12
  41. package/alpha/validationpkg/go.mod +0 -8
  42. package/alpha/validationpkg/go.sum +0 -4
  43. package/alpha/validationpkg/jsonvalidations/cancel.go +0 -1289
  44. package/alpha/validationpkg/jsonvalidations/confirm.go +0 -9121
  45. package/alpha/validationpkg/jsonvalidations/init.go +0 -4864
  46. package/alpha/validationpkg/jsonvalidations/issue.go +0 -4868
  47. package/alpha/validationpkg/jsonvalidations/on_cancel.go +0 -7111
  48. package/alpha/validationpkg/jsonvalidations/on_confirm.go +0 -8903
  49. package/alpha/validationpkg/jsonvalidations/on_init.go +0 -4445
  50. package/alpha/validationpkg/jsonvalidations/on_issue.go +0 -2828
  51. package/alpha/validationpkg/jsonvalidations/on_issue_status.go +0 -1938
  52. package/alpha/validationpkg/jsonvalidations/on_search.go +0 -3356
  53. package/alpha/validationpkg/jsonvalidations/on_status.go +0 -8129
  54. package/alpha/validationpkg/jsonvalidations/on_track.go +0 -1415
  55. package/alpha/validationpkg/jsonvalidations/on_update.go +0 -8700
  56. package/alpha/validationpkg/jsonvalidations/search.go +0 -3585
  57. package/alpha/validationpkg/jsonvalidations/status.go +0 -1073
  58. package/alpha/validationpkg/jsonvalidations/track.go +0 -1073
  59. package/alpha/validationpkg/jsonvalidations/update.go +0 -3012
  60. package/alpha/validationpkg/main-validator.go +0 -196
  61. package/alpha/validationpkg/main-validator_test.go +0 -165
  62. package/alpha/validationpkg/storageutils/api_save_utils.go +0 -83
  63. package/alpha/validationpkg/storageutils/cancel.go +0 -30
  64. package/alpha/validationpkg/storageutils/confirm.go +0 -30
  65. package/alpha/validationpkg/storageutils/index.go +0 -132
  66. package/alpha/validationpkg/storageutils/init.go +0 -30
  67. package/alpha/validationpkg/storageutils/issue.go +0 -30
  68. package/alpha/validationpkg/storageutils/on_cancel.go +0 -30
  69. package/alpha/validationpkg/storageutils/on_confirm.go +0 -30
  70. package/alpha/validationpkg/storageutils/on_init.go +0 -30
  71. package/alpha/validationpkg/storageutils/on_issue.go +0 -30
  72. package/alpha/validationpkg/storageutils/on_issue_status.go +0 -30
  73. package/alpha/validationpkg/storageutils/on_search.go +0 -30
  74. package/alpha/validationpkg/storageutils/on_status.go +0 -30
  75. package/alpha/validationpkg/storageutils/on_track.go +0 -30
  76. package/alpha/validationpkg/storageutils/on_update.go +0 -30
  77. package/alpha/validationpkg/storageutils/save_utils.go +0 -75
  78. package/alpha/validationpkg/storageutils/search.go +0 -30
  79. package/alpha/validationpkg/storageutils/status.go +0 -30
  80. package/alpha/validationpkg/storageutils/track.go +0 -30
  81. package/alpha/validationpkg/storageutils/update.go +0 -30
  82. package/alpha/validationpkg/validationutils/json_normalizer.go +0 -152
  83. package/alpha/validationpkg/validationutils/json_path_utils.go +0 -173
  84. package/alpha/validationpkg/validationutils/storage-interface.go +0 -107
  85. package/alpha/validationpkg/validationutils/test-config.go +0 -69
  86. package/alpha/validationpkg/validationutils/validation_utils.go +0 -429
@@ -1,429 +0,0 @@
1
- // Code generated by github.com/ONDC-Official/automation-validation-compiler, DO NOT EDIT.
2
-
3
- package validationutils
4
-
5
- import (
6
- "fmt"
7
- "strconv"
8
- "strings"
9
- "sync"
10
- "time"
11
-
12
- "github.com/dlclark/regexp2"
13
- )
14
-
15
- // toStringSlice converts []interface{} to []string, returns false if any element is not a string
16
- func toStringSlice(operand []interface{}) ([]string, bool) {
17
- result := make([]string, len(operand))
18
- for i, v := range operand {
19
- str, ok := v.(string)
20
- if !ok {
21
- // Try to convert to string
22
- if v == nil {
23
- result[i] = "null"
24
- } else {
25
- result[i] = fmt.Sprintf("%v", v)
26
- }
27
- } else {
28
- result[i] = str
29
- }
30
- }
31
- return result, true
32
- }
33
-
34
- func AreUnique(operand []interface{}) bool {
35
- strs, ok := toStringSlice(operand)
36
- if !ok {
37
- return false
38
- }
39
-
40
- valuesSet := make(map[string]struct{})
41
- for _, v := range strs {
42
- valuesSet[v] = struct{}{}
43
- }
44
- return len(valuesSet) == len(strs)
45
- }
46
-
47
- func ArePresent(operand []interface{}) bool {
48
- strs, ok := toStringSlice(operand)
49
- if !ok {
50
- return false
51
- }
52
- return NoneIn(operand, []interface{}{"null", "undefined"}) && len(strs) > 0
53
- }
54
-
55
- // Lookup interface for abstraction
56
- type lookup interface {
57
- contains(string) bool
58
- isEmpty() bool
59
- }
60
-
61
- // Map-based lookup (O(1))
62
- type mapLookup struct {
63
- items map[string]bool
64
- }
65
-
66
- func (m *mapLookup) contains(item string) bool {
67
- return m.items[item]
68
- }
69
-
70
- func (m *mapLookup) isEmpty() bool {
71
- return len(m.items) == 0
72
- }
73
-
74
- // Slice-based lookup (O(n))
75
- type sliceLookup struct {
76
- items []string
77
- }
78
-
79
- func (s *sliceLookup) contains(item string) bool {
80
- for _, v := range s.items {
81
- if v == item {
82
- return true
83
- }
84
- }
85
- return false
86
- }
87
-
88
- func (s *sliceLookup) isEmpty() bool {
89
- return len(s.items) == 0
90
- }
91
-
92
- // Smart lookup creation - auto-detects and optimizes
93
- func createLookup(right []interface{}) (lookup, bool) {
94
- // Case 1: Check if right contains a single map
95
- if len(right) == 1 {
96
- switch m := right[0].(type) {
97
- case map[string]interface{}:
98
- result := make(map[string]bool, len(m))
99
- for k := range m {
100
- result[k] = true
101
- }
102
- return &mapLookup{items: result}, true
103
- case map[string]bool:
104
- return &mapLookup{items: m}, true
105
- case map[string]string:
106
- result := make(map[string]bool, len(m))
107
- for k := range m {
108
- result[k] = true
109
- }
110
- return &mapLookup{items: result}, true
111
- }
112
- }
113
-
114
- // Case 2: Convert slice to string slice
115
- rightStrs, ok := toStringSlice(right)
116
- if !ok {
117
- return nil, false
118
- }
119
-
120
- // Optimization: Convert large slices to maps for better performance
121
- const threshold = 10
122
- if len(rightStrs) > threshold {
123
- m := make(map[string]bool, len(rightStrs))
124
- for _, v := range rightStrs {
125
- m[v] = true
126
- }
127
- return &mapLookup{items: m}, true
128
- }
129
-
130
- return &sliceLookup{items: rightStrs}, true
131
- }
132
-
133
- // Updated comparison functions
134
- func AllIn(left []interface{}, right []interface{}) bool {
135
- leftStrs, ok1 := toStringSlice(left)
136
- if !ok1 {
137
- return false
138
- }
139
-
140
- rightLookup, ok2 := createLookup(right)
141
- if !ok2 {
142
- return false
143
- }
144
-
145
- if len(leftStrs) == 0 && !rightLookup.isEmpty() {
146
- return false
147
- }
148
-
149
- for _, v := range leftStrs {
150
- if !rightLookup.contains(v) {
151
- return false
152
- }
153
- }
154
- return true
155
- }
156
-
157
- func AnyIn(left []interface{}, right []interface{}) bool {
158
- leftStrs, ok1 := toStringSlice(left)
159
- if !ok1 {
160
- return false
161
- }
162
-
163
- rightLookup, ok2 := createLookup(right)
164
- if !ok2 {
165
- return false
166
- }
167
-
168
- if len(leftStrs) == 0 && !rightLookup.isEmpty() {
169
- return false
170
- }
171
-
172
- for _, v := range leftStrs {
173
- if rightLookup.contains(v) {
174
- return true
175
- }
176
- }
177
- return false
178
- }
179
-
180
- func NoneIn(left []interface{}, right []interface{}) bool {
181
- leftStrs, ok1 := toStringSlice(left)
182
- if !ok1 {
183
- return false
184
- }
185
-
186
- rightLookup, ok2 := createLookup(right)
187
- if !ok2 {
188
- return false
189
- }
190
-
191
- for _, v := range leftStrs {
192
- if rightLookup.contains(v) {
193
- return false
194
- }
195
- }
196
- return true
197
- }
198
- func EqualTo(left []interface{}, right []interface{}) bool {
199
- leftStrs, ok1 := toStringSlice(left)
200
- rightStrs, ok2 := toStringSlice(right)
201
- if !ok1 || !ok2 {
202
- return false
203
- }
204
-
205
- if len(leftStrs) != len(rightStrs) {
206
- return false
207
- }
208
- for i, v := range leftStrs {
209
- if v != rightStrs[i] {
210
- return false
211
- }
212
- }
213
- return true
214
- }
215
-
216
- func GreaterThan(left []interface{}, right []interface{}) bool {
217
- leftStrs, ok1 := toStringSlice(left)
218
- rightStrs, ok2 := toStringSlice(right)
219
- if !ok1 || !ok2 {
220
- return false
221
- }
222
-
223
- areAllISO := func(arr []string) bool {
224
- for _, v := range arr {
225
- if !isISO8601(v) {
226
- return false
227
- }
228
- }
229
- return true
230
- }
231
-
232
- areAllNumbers := func(arr []string) bool {
233
- for _, v := range arr {
234
- if _, err := strconv.ParseFloat(v, 64); err != nil {
235
- return false
236
- }
237
- }
238
- return true
239
- }
240
-
241
- if areAllISO(leftStrs) && areAllISO(rightStrs) {
242
- leftDates := make([]int64, len(leftStrs))
243
- for i, date := range leftStrs {
244
- t, _ := time.Parse(time.RFC3339, date)
245
- leftDates[i] = t.UnixMilli()
246
- }
247
-
248
- rightDates := make([]int64, len(rightStrs))
249
- for i, date := range rightStrs {
250
- t, _ := time.Parse(time.RFC3339, date)
251
- rightDates[i] = t.UnixMilli()
252
- }
253
-
254
- for i, ld := range leftDates {
255
- if i >= len(rightDates) || ld <= rightDates[i] {
256
- if i < len(rightDates) {
257
- return false
258
- }
259
- }
260
- }
261
- return true
262
- } else if areAllNumbers(leftStrs) && areAllNumbers(rightStrs) {
263
- leftNumbers := make([]float64, len(leftStrs))
264
- for i, v := range leftStrs {
265
- leftNumbers[i], _ = strconv.ParseFloat(v, 64)
266
- }
267
-
268
- rightNumbers := make([]float64, len(rightStrs))
269
- for i, v := range rightStrs {
270
- rightNumbers[i], _ = strconv.ParseFloat(v, 64)
271
- }
272
-
273
- for i, ln := range leftNumbers {
274
- if i >= len(rightNumbers) || ln <= rightNumbers[i] {
275
- if i < len(rightNumbers) {
276
- return false
277
- }
278
- }
279
- }
280
- return true
281
- }
282
-
283
- return false
284
- }
285
-
286
- func LessThan(left []interface{}, right []interface{}) bool {
287
- leftStrs, ok1 := toStringSlice(left)
288
- rightStrs, ok2 := toStringSlice(right)
289
- if !ok1 || !ok2 {
290
- return false
291
- }
292
-
293
- areAllISO := func(arr []string) bool {
294
- for _, v := range arr {
295
- if !isISO8601(v) {
296
- return false
297
- }
298
- }
299
- return true
300
- }
301
-
302
- areAllNumbers := func(arr []string) bool {
303
- for _, v := range arr {
304
- if _, err := strconv.ParseFloat(v, 64); err != nil {
305
- return false
306
- }
307
- }
308
- return true
309
- }
310
-
311
- if areAllISO(leftStrs) && areAllISO(rightStrs) {
312
- leftDates := make([]int64, len(leftStrs))
313
- for i, date := range leftStrs {
314
- t, _ := time.Parse(time.RFC3339, date)
315
- leftDates[i] = t.UnixMilli()
316
- }
317
-
318
- rightDates := make([]int64, len(rightStrs))
319
- for i, date := range rightStrs {
320
- t, _ := time.Parse(time.RFC3339, date)
321
- rightDates[i] = t.UnixMilli()
322
- }
323
-
324
- for i, ld := range leftDates {
325
- if i >= len(rightDates) || ld >= rightDates[i] {
326
- if i < len(rightDates) {
327
- return false
328
- }
329
- }
330
- }
331
- return true
332
- } else if areAllNumbers(leftStrs) && areAllNumbers(rightStrs) {
333
- leftNumbers := make([]float64, len(leftStrs))
334
- for i, v := range leftStrs {
335
- leftNumbers[i], _ = strconv.ParseFloat(v, 64)
336
- }
337
-
338
- rightNumbers := make([]float64, len(rightStrs))
339
- for i, v := range rightStrs {
340
- rightNumbers[i], _ = strconv.ParseFloat(v, 64)
341
- }
342
-
343
- for i, ln := range leftNumbers {
344
- if i >= len(rightNumbers) || ln >= rightNumbers[i] {
345
- if i < len(rightNumbers) {
346
- return false
347
- }
348
- }
349
- }
350
- return true
351
- }
352
-
353
- return false
354
- }
355
-
356
- var regexCache sync.Map // cache compiled regexes
357
-
358
- func FollowRegex(left []interface{}, regexArray []interface{}) bool {
359
- leftStrs, ok1 := toStringSlice(left)
360
- regexStrs, ok2 := toStringSlice(regexArray)
361
- if !ok1 || !ok2 {
362
- return false
363
- }
364
-
365
- if len(leftStrs) == 0 && len(regexStrs) != 0 {
366
- return false
367
- }
368
-
369
- for _, regexStr := range regexStrs {
370
- var re *regexp2.Regexp
371
- regexStr = sanitizeRegex(regexStr)
372
- fmt.Printf("Using regex: %s\n", regexStr)
373
- // Check cache first
374
- if cached, ok := regexCache.Load(regexStr); ok {
375
- re = cached.(*regexp2.Regexp)
376
- } else {
377
- compiled, err := regexp2.Compile(regexStr, 0)
378
- if err != nil {
379
- fmt.Printf("Invalid regex '%s': %v\n", regexStr, err)
380
- return false
381
- }
382
- regexCache.Store(regexStr, compiled)
383
- re = compiled
384
- }
385
-
386
- for _, v := range leftStrs {
387
- match, err := re.MatchString(v)
388
- if err != nil || !match {
389
- return false
390
- }
391
- }
392
- }
393
-
394
- return true
395
- }
396
-
397
- // Only fixes escapes that are invalid in regexp2
398
- func sanitizeRegex(regex string) string {
399
- regex = strings.ReplaceAll(regex, `\_`, `_`) // escaped underscore → literal
400
- regex = strings.ReplaceAll(regex, `\-`, `-`) // escaped hyphen → literal
401
- return regex
402
- }
403
-
404
- func isISO8601(str string) bool {
405
- iso8601Regex, err := regexp2.Compile(`^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$`, 0)
406
- if err != nil {
407
- return false
408
- }
409
-
410
- match, err := iso8601Regex.MatchString(str)
411
- if err != nil || !match {
412
- return false
413
- }
414
-
415
- _, err = time.Parse(time.RFC3339, str)
416
- return err == nil
417
- }
418
-
419
- // StringSliceToInterface converts []string to []interface{}
420
- func StringSliceToInterface(strs []string) []interface{} {
421
- result := make([]interface{}, len(strs))
422
- for i, v := range strs {
423
- result[i] = v
424
- }
425
- return result
426
- }
427
-
428
- // UnusedFunction to avoid unused variable errors
429
- func UnusedFunction(item interface{}) {}