@voxgig/apidef 2.4.1 → 3.0.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 (96) hide show
  1. package/dist/apidef.d.ts +5 -1
  2. package/dist/apidef.js +197 -112
  3. package/dist/apidef.js.map +1 -1
  4. package/dist/builder/entity/entity.d.ts +3 -0
  5. package/dist/builder/entity/{apiEntity.js → entity.js} +12 -9
  6. package/dist/builder/entity/entity.js.map +1 -0
  7. package/dist/builder/entity/info.d.ts +3 -0
  8. package/dist/builder/entity/info.js +22 -0
  9. package/dist/builder/entity/info.js.map +1 -0
  10. package/dist/builder/entity.js +7 -21
  11. package/dist/builder/entity.js.map +1 -1
  12. package/dist/builder/flow/flowHeuristic01.js +21 -11
  13. package/dist/builder/flow/flowHeuristic01.js.map +1 -1
  14. package/dist/builder/flow.d.ts +2 -1
  15. package/dist/builder/flow.js +29 -4
  16. package/dist/builder/flow.js.map +1 -1
  17. package/dist/def.d.ts +62 -0
  18. package/dist/def.js +4 -0
  19. package/dist/def.js.map +1 -0
  20. package/dist/desc.d.ts +89 -0
  21. package/dist/desc.js +4 -0
  22. package/dist/desc.js.map +1 -0
  23. package/dist/guide/guide.d.ts +2 -1
  24. package/dist/guide/guide.js +161 -30
  25. package/dist/guide/guide.js.map +1 -1
  26. package/dist/guide/heuristic01.d.ts +2 -1
  27. package/dist/guide/heuristic01.js +1120 -234
  28. package/dist/guide/heuristic01.js.map +1 -1
  29. package/dist/model.d.ts +55 -0
  30. package/dist/model.js +4 -0
  31. package/dist/model.js.map +1 -0
  32. package/dist/parse.d.ts +1 -2
  33. package/dist/parse.js +8 -47
  34. package/dist/parse.js.map +1 -1
  35. package/dist/transform/args.d.ts +3 -0
  36. package/dist/transform/args.js +58 -0
  37. package/dist/transform/args.js.map +1 -0
  38. package/dist/transform/clean.js +27 -3
  39. package/dist/transform/clean.js.map +1 -1
  40. package/dist/transform/entity.d.ts +11 -3
  41. package/dist/transform/entity.js +57 -41
  42. package/dist/transform/entity.js.map +1 -1
  43. package/dist/transform/field.d.ts +3 -3
  44. package/dist/transform/field.js +90 -65
  45. package/dist/transform/field.js.map +1 -1
  46. package/dist/transform/operation.d.ts +1 -1
  47. package/dist/transform/operation.js +94 -296
  48. package/dist/transform/operation.js.map +1 -1
  49. package/dist/transform/select.d.ts +3 -0
  50. package/dist/transform/select.js +44 -0
  51. package/dist/transform/select.js.map +1 -0
  52. package/dist/transform/top.d.ts +9 -0
  53. package/dist/transform/top.js +11 -2
  54. package/dist/transform/top.js.map +1 -1
  55. package/dist/transform.js +4 -0
  56. package/dist/transform.js.map +1 -1
  57. package/dist/tsconfig.tsbuildinfo +1 -1
  58. package/dist/types.d.ts +112 -19
  59. package/dist/types.js +4 -2
  60. package/dist/types.js.map +1 -1
  61. package/dist/utility.d.ts +30 -2
  62. package/dist/utility.js +381 -6
  63. package/dist/utility.js.map +1 -1
  64. package/model/apidef.jsonic +75 -1
  65. package/model/guide.jsonic +14 -44
  66. package/package.json +17 -14
  67. package/src/apidef.ts +264 -121
  68. package/src/builder/entity/{apiEntity.ts → entity.ts} +18 -11
  69. package/src/builder/entity/info.ts +53 -0
  70. package/src/builder/entity.ts +9 -35
  71. package/src/builder/flow/flowHeuristic01.ts +46 -12
  72. package/src/builder/flow.ts +39 -5
  73. package/src/def.ts +91 -0
  74. package/src/desc.ts +143 -0
  75. package/src/guide/guide.ts +207 -134
  76. package/src/guide/heuristic01.ts +1651 -272
  77. package/src/model.ts +98 -0
  78. package/src/parse.ts +5 -61
  79. package/src/schematron.ts.off +317 -0
  80. package/src/transform/args.ts +102 -0
  81. package/src/transform/clean.ts +43 -8
  82. package/src/transform/entity.ts +100 -51
  83. package/src/transform/field.ts +150 -71
  84. package/src/transform/operation.ts +118 -414
  85. package/src/transform/select.ts +90 -0
  86. package/src/transform/top.ts +76 -3
  87. package/src/transform.ts +4 -0
  88. package/src/types.ts +185 -5
  89. package/src/utility.ts +481 -9
  90. package/dist/builder/entity/apiEntity.d.ts +0 -3
  91. package/dist/builder/entity/apiEntity.js.map +0 -1
  92. package/dist/builder/entity/def.d.ts +0 -3
  93. package/dist/builder/entity/def.js +0 -19
  94. package/dist/builder/entity/def.js.map +0 -1
  95. package/src/builder/entity/def.ts +0 -44
  96. package/src/guide.ts.off +0 -136
package/src/guide.ts.off DELETED
@@ -1,136 +0,0 @@
1
-
2
- import Path from 'node:path'
3
-
4
- import { File, Content, each } from 'jostraca'
5
-
6
- import { merge, items } from '@voxgig/struct'
7
-
8
-
9
- import { heuristic01 } from './guide/heuristic01'
10
-
11
- import {
12
- getdlog,
13
- } from './utility'
14
-
15
-
16
- // Log non-fatal wierdness.
17
- const dlog = getdlog('apidef', __filename)
18
-
19
- async function resolveGuide(ctx: any) {
20
- let baseguide: Record<string, any> = {}
21
- let override: Record<string, any> = ctx.model.main.api.guide
22
-
23
- if ('heuristic01' === ctx.opts.strategy) {
24
- baseguide = await heuristic01(ctx)
25
- }
26
- else {
27
- throw new Error('Unknown guide strategy: ' + ctx.opts.strategy)
28
- }
29
-
30
- // Override generated base guide with custom hints
31
- let guide = merge([{}, baseguide, override])
32
-
33
- // TODO: this is a hack!!!
34
- // Instead, update @voxgig/model, so that builders can request a reload of the entire
35
- // model. This allows builders to modify the model for later buidlers
36
- // during a single generation pass.
37
-
38
-
39
- guide = cleanGuide(guide)
40
-
41
-
42
- // TODO: FIX: sdk.jsonic should have final version of guide
43
- if (ctx.model.main?.api) {
44
- ctx.model.main.api.guide = guide
45
- }
46
- else {
47
- dlog('missing', 'ctx.model.main.api')
48
- }
49
-
50
- const guideFile =
51
- Path.join(ctx.opts.folder,
52
- (null == ctx.opts.outprefix ? '' : ctx.opts.outprefix) + 'base-guide.jsonic')
53
-
54
- const guideBlocks = [
55
- '# Guide',
56
- '',
57
- 'main: api: guide: {',
58
- ]
59
-
60
-
61
- guideBlocks.push(...each(baseguide.entity, (entity, entityname) => {
62
- guideBlocks.push(`
63
- entity: ${entityname}: {` +
64
- (0 < entity.why_name.length ? ' # name:' + entity.why_name.join(';') : ''))
65
-
66
- items(entity.path).map((pathn) => {
67
- const [pathname, path] = pathn
68
- guideBlocks.push(` path: '${pathname}': op: {` +
69
- (0 < path.why_ent.length ? ' # ent:' + path.why_ent.join(';') : ''))
70
-
71
- items(path.op).map((opn) => {
72
- const [opname, op] = opn
73
- guideBlocks.push(` '${opname}': method: ${op.method}` +
74
- (0 < op.why_op.length ? ' # ' + op.why_op : ''))
75
- if (op.transform?.reqform) {
76
- guideBlocks.push(
77
- ` '${opname}': transform: reqform: ${JSON.stringify(op.transform.reqform)}`)
78
- }
79
- })
80
-
81
- guideBlocks.push(` }`)
82
- })
83
-
84
- guideBlocks.push(`}`)
85
- }))
86
-
87
- guideBlocks.push('}')
88
-
89
- const guideSrc = guideBlocks.join('\n')
90
-
91
- ctx.note.guide = { base: guideSrc }
92
-
93
- return () => {
94
- // Save base guide for reference
95
- File({ name: '../def/' + Path.basename(guideFile) }, () => Content(guideSrc))
96
- }
97
- }
98
-
99
-
100
- function cleanGuide(guide: Record<string, any>): Record<string, any> {
101
- const clean: Record<string, any> = {
102
- control: guide.control,
103
- entity: {}
104
- }
105
-
106
- const exclude_entity = guide.exclude?.entity?.split(',') || []
107
- const include_entity = guide.include?.entity?.split(',') || []
108
-
109
- each(guide.entity, (entity: any, name: string) => {
110
- if (exclude_entity.includes(name)) {
111
- return
112
- }
113
- if (exclude_entity.includes('*')) {
114
- if (!include_entity.includes(name)) {
115
- return
116
- }
117
- }
118
-
119
- let ent: any = clean.entity[name] = clean.entity[name] = {
120
- name,
121
- why_name: entity.why_name || [],
122
- path: {}
123
- }
124
-
125
- each(entity.path, (path: any, pathname: string) => {
126
- ent.path[pathname] = path
127
- })
128
- })
129
-
130
- return clean
131
- }
132
-
133
-
134
- export {
135
- resolveGuide
136
- }