@voxgig/sdkgen 3.5.1 → 3.7.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 (255) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/cmp/AgentGuideTop.js +17 -0
  3. package/dist/cmp/AgentGuideTop.js.map +1 -1
  4. package/dist/cmp/ExternalTarget.js +1 -1
  5. package/dist/cmp/ExternalTarget.js.map +1 -1
  6. package/dist/cmp/Readme.js +2 -0
  7. package/dist/cmp/Readme.js.map +1 -1
  8. package/dist/cmp/ReadmeStation.d.ts +2 -0
  9. package/dist/cmp/ReadmeStation.js +57 -0
  10. package/dist/cmp/ReadmeStation.js.map +1 -0
  11. package/dist/helpers/naming.d.ts +6 -1
  12. package/dist/helpers/naming.js +156 -5
  13. package/dist/helpers/naming.js.map +1 -1
  14. package/dist/helpers/opShape.js +72 -0
  15. package/dist/helpers/opShape.js.map +1 -1
  16. package/dist/helpers/packageMeta.d.ts +2 -1
  17. package/dist/helpers/packageMeta.js +57 -20
  18. package/dist/helpers/packageMeta.js.map +1 -1
  19. package/dist/sdkgen.d.ts +3 -3
  20. package/dist/sdkgen.js +63 -18
  21. package/dist/sdkgen.js.map +1 -1
  22. package/dist/testkit.d.ts +39 -0
  23. package/dist/testkit.js +663 -0
  24. package/dist/testkit.js.map +1 -0
  25. package/dist/tsconfig.tsbuildinfo +1 -1
  26. package/dist/utility.d.ts +1 -1
  27. package/dist/utility.js +16 -2
  28. package/dist/utility.js.map +1 -1
  29. package/package.json +32 -8
  30. package/project/.sdk/src/cmp/c/Config_c.ts +34 -13
  31. package/project/.sdk/src/cmp/c/Test_c.ts +5 -7
  32. package/project/.sdk/src/cmp/clojure/Test_clojure.ts +3 -7
  33. package/project/.sdk/src/cmp/cpp/Config_cpp.ts +9 -46
  34. package/project/.sdk/src/cmp/cpp/Test_cpp.ts +4 -7
  35. package/project/.sdk/src/cmp/csharp/Config_csharp.ts +7 -1
  36. package/project/.sdk/src/cmp/csharp/Package_csharp.ts +1 -1
  37. package/project/.sdk/src/cmp/csharp/Test_csharp.ts +5 -7
  38. package/project/.sdk/src/cmp/dart/Config_dart.ts +14 -2
  39. package/project/.sdk/src/cmp/dart/Test_dart.ts +3 -4
  40. package/project/.sdk/src/cmp/dart/fragment/Config.data.fragment.dart +5 -0
  41. package/project/.sdk/src/cmp/dart/fragment/Config.fragment.dart +6 -0
  42. package/project/.sdk/src/cmp/dart/fragment/Main.fragment.dart +13 -4
  43. package/project/.sdk/src/cmp/elixir/Config_elixir.ts +12 -2
  44. package/project/.sdk/src/cmp/elixir/Package_elixir.ts +42 -3
  45. package/project/.sdk/src/cmp/elixir/Test_elixir.ts +5 -6
  46. package/project/.sdk/src/cmp/go/Config_go.ts +8 -1
  47. package/project/.sdk/src/cmp/go/EntityTypes_go.ts +1 -1
  48. package/project/.sdk/src/cmp/go/Entity_go.ts +1 -1
  49. package/project/.sdk/src/cmp/go/Gitignore_go.ts +6 -0
  50. package/project/.sdk/src/cmp/go/Main_go.ts +2 -2
  51. package/project/.sdk/src/cmp/go/Package_go.ts +1 -1
  52. package/project/.sdk/src/cmp/go/ReadmeExamplesTest_go.ts +59 -6
  53. package/project/.sdk/src/cmp/go/ReadmeExplanation_go.ts +1 -1
  54. package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +1 -1
  55. package/project/.sdk/src/cmp/go/ReadmeInstall_go.ts +1 -1
  56. package/project/.sdk/src/cmp/go/ReadmeModel_go.ts +1 -1
  57. package/project/.sdk/src/cmp/go/ReadmeQuick_go.ts +1 -1
  58. package/project/.sdk/src/cmp/go/ReadmeTopQuick_go.ts +1 -1
  59. package/project/.sdk/src/cmp/go/ReadmeTopTest_go.ts +1 -1
  60. package/project/.sdk/src/cmp/go/Test_go.ts +6 -8
  61. package/project/.sdk/src/cmp/go-cli/Main_go-cli.ts +6 -2
  62. package/project/.sdk/src/cmp/go-mcp/Main_go-mcp.ts +6 -2
  63. package/project/.sdk/src/cmp/java/Config_java.ts +8 -1
  64. package/project/.sdk/src/cmp/java/Test_java.ts +4 -7
  65. package/project/.sdk/src/cmp/js/Config_js.ts +9 -1
  66. package/project/.sdk/src/cmp/js/Package_js.ts +1 -1
  67. package/project/.sdk/src/cmp/js/Test_js.ts +4 -7
  68. package/project/.sdk/src/cmp/js/fragment/Config.data.fragment.js +7 -0
  69. package/project/.sdk/src/cmp/js/fragment/Config.fragment.js +8 -0
  70. package/project/.sdk/src/cmp/js/fragment/Main.fragment.js +33 -5
  71. package/project/.sdk/src/cmp/kotlin/Config_kotlin.ts +8 -1
  72. package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +4 -7
  73. package/project/.sdk/src/cmp/lean/Test_lean.ts +3 -3
  74. package/project/.sdk/src/cmp/lua/Config_lua.ts +11 -2
  75. package/project/.sdk/src/cmp/lua/Package_lua.ts +26 -3
  76. package/project/.sdk/src/cmp/lua/Test_lua.ts +5 -7
  77. package/project/.sdk/src/cmp/ocaml/Test_ocaml.ts +3 -7
  78. package/project/.sdk/src/cmp/perl/Config_perl.ts +8 -60
  79. package/project/.sdk/src/cmp/perl/Package_perl.ts +1 -1
  80. package/project/.sdk/src/cmp/perl/Test_perl.ts +5 -7
  81. package/project/.sdk/src/cmp/php/Config_php.ts +11 -2
  82. package/project/.sdk/src/cmp/php/EntityTypes_php.ts +13 -2
  83. package/project/.sdk/src/cmp/php/Main_php.ts +25 -0
  84. package/project/.sdk/src/cmp/php/Package_php.ts +2 -2
  85. package/project/.sdk/src/cmp/php/Test_php.ts +5 -7
  86. package/project/.sdk/src/cmp/php/fragment/Main.fragment.php +23 -6
  87. package/project/.sdk/src/cmp/py/Config_py.ts +11 -2
  88. package/project/.sdk/src/cmp/py/Main_py.ts +17 -7
  89. package/project/.sdk/src/cmp/py/Package_py.ts +2 -2
  90. package/project/.sdk/src/cmp/py/Test_py.ts +5 -7
  91. package/project/.sdk/src/cmp/py/fragment/Main.fragment.py +23 -6
  92. package/project/.sdk/src/cmp/py-data/Main_py-data.ts +14 -19
  93. package/project/.sdk/src/cmp/rb/Config_rb.ts +7 -1
  94. package/project/.sdk/src/cmp/rb/Package_rb.ts +3 -3
  95. package/project/.sdk/src/cmp/rb/ReadmeInstall_rb.ts +1 -1
  96. package/project/.sdk/src/cmp/rb/Test_rb.ts +5 -7
  97. package/project/.sdk/src/cmp/rust/Config_rust.ts +5 -2
  98. package/project/.sdk/src/cmp/rust/Test_rust.ts +5 -7
  99. package/project/.sdk/src/cmp/scala/Test_scala.ts +5 -2
  100. package/project/.sdk/src/cmp/seneca-provider/Gitignore_seneca-provider.ts +161 -0
  101. package/project/.sdk/src/cmp/seneca-provider/Main_seneca-provider.ts +20 -11
  102. package/project/.sdk/src/cmp/swift/Config_swift.ts +8 -54
  103. package/project/.sdk/src/cmp/swift/Package_swift.ts +52 -10
  104. package/project/.sdk/src/cmp/swift/Test_swift.ts +5 -7
  105. package/project/.sdk/src/cmp/ts/Config_ts.ts +9 -1
  106. package/project/.sdk/src/cmp/ts/EntityTypes_ts.ts +5 -2
  107. package/project/.sdk/src/cmp/ts/Entity_ts.ts +8 -2
  108. package/project/.sdk/src/cmp/ts/Package_ts.ts +1 -1
  109. package/project/.sdk/src/cmp/ts/Test_ts.ts +8 -7
  110. package/project/.sdk/src/cmp/ts/fragment/Config.data.fragment.ts +7 -0
  111. package/project/.sdk/src/cmp/ts/fragment/Config.fragment.ts +8 -0
  112. package/project/.sdk/src/cmp/ts/fragment/Entity.fragment.ts +1 -1
  113. package/project/.sdk/src/cmp/ts/fragment/Main.fragment.ts +12 -4
  114. package/project/.sdk/src/cmp/zig/Test_zig.ts +3 -7
  115. package/project/.sdk/tm/c/Makefile +6 -1
  116. package/project/.sdk/tm/c/utility/make_options.c +12 -1
  117. package/project/.sdk/tm/c/utility/make_point.c +64 -3
  118. package/project/.sdk/tm/clojure/src/sdk/core.clj +49 -14
  119. package/project/.sdk/tm/cpp/utility/pipeline.hpp +64 -4
  120. package/project/.sdk/tm/csharp/feature/TestFeature.cs +36 -2
  121. package/project/.sdk/tm/csharp/utility/Fetcher.cs +23 -5
  122. package/project/.sdk/tm/csharp/utility/MakeOptions.cs +13 -0
  123. package/project/.sdk/tm/csharp/utility/MakePoint.cs +65 -2
  124. package/project/.sdk/tm/dart/lib/feature/test/TestFeature.dart +34 -4
  125. package/project/.sdk/tm/dart/lib/utility/FetcherUtility.dart +9 -0
  126. package/project/.sdk/tm/dart/lib/utility/MakeOptionsUtility.dart +17 -0
  127. package/project/.sdk/tm/dart/lib/utility/MakePointUtility.dart +48 -2
  128. package/project/.sdk/tm/elixir/lib/projectname/utility.ex +109 -13
  129. package/project/.sdk/tm/elixir/test/feature_test.exs +19 -0
  130. package/project/.sdk/tm/elixir/test/primary_utility_test.exs +72 -0
  131. package/project/.sdk/tm/go/feature/test_feature.go +34 -2
  132. package/project/.sdk/tm/go/test/primary_utility_test.go +42 -20
  133. package/project/.sdk/tm/go/test/runner_test.go +1 -1
  134. package/project/.sdk/tm/go/utility/fetcher.go +14 -0
  135. package/project/.sdk/tm/go/utility/make_options.go +31 -4
  136. package/project/.sdk/tm/go/utility/make_point.go +66 -2
  137. package/project/.sdk/tm/java/feature/TestFeature.java +42 -2
  138. package/project/.sdk/tm/java/utility/Fetcher.java +11 -1
  139. package/project/.sdk/tm/java/utility/MakeOptions.java +11 -0
  140. package/project/.sdk/tm/java/utility/MakePoint.java +61 -2
  141. package/project/.sdk/tm/js/src/feature/test/TestFeature.js +22 -3
  142. package/project/.sdk/tm/js/src/utility/MakeOptionsUtility.js +20 -2
  143. package/project/.sdk/tm/js/src/utility/MakePointUtility.js +72 -2
  144. package/project/.sdk/tm/kotlin/feature/TestFeature.kt +31 -2
  145. package/project/.sdk/tm/kotlin/utility/Fetcher.kt +10 -1
  146. package/project/.sdk/tm/kotlin/utility/MakeOptions.kt +11 -0
  147. package/project/.sdk/tm/kotlin/utility/MakePoint.kt +58 -2
  148. package/project/.sdk/tm/lean/src/SdkUtility.lean +28 -0
  149. package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +13 -2
  150. package/project/.sdk/tm/lua/utility/make_options.lua +44 -0
  151. package/project/.sdk/tm/lua/utility/make_point.lua +65 -2
  152. package/project/.sdk/tm/ocaml/sdk_runtime.ml +40 -2
  153. package/project/.sdk/tm/perl/utility/fetcher.pm +10 -1
  154. package/project/.sdk/tm/perl/utility/make_options.pm +36 -0
  155. package/project/.sdk/tm/perl/utility/make_point.pm +55 -2
  156. package/project/.sdk/tm/php/feature/TestFeature.php +30 -1
  157. package/project/.sdk/tm/php/test/PipelineTest.php +20 -0
  158. package/project/.sdk/tm/php/utility/Fetcher.php +12 -1
  159. package/project/.sdk/tm/php/utility/MakeOptions.php +58 -0
  160. package/project/.sdk/tm/php/utility/MakePoint.php +49 -1
  161. package/project/.sdk/tm/py/pkg/utility/fetcher.py +13 -1
  162. package/project/.sdk/tm/py/pkg/utility/make_options.py +23 -0
  163. package/project/.sdk/tm/py/pkg/utility/make_point.py +56 -2
  164. package/project/.sdk/tm/rb/utility/make_options.rb +18 -0
  165. package/project/.sdk/tm/rb/utility/make_point.rb +42 -2
  166. package/project/.sdk/tm/rust/tests/common/mod.rs +1 -1
  167. package/project/.sdk/tm/rust/tests/feature_test.rs +27 -0
  168. package/project/.sdk/tm/rust/utility/fetcher.rs +8 -0
  169. package/project/.sdk/tm/rust/utility/make_options.rs +15 -0
  170. package/project/.sdk/tm/rust/utility/make_point.rs +69 -2
  171. package/project/.sdk/tm/scala/feature/TestFeature.scala +36 -1
  172. package/project/.sdk/tm/scala/utility/Make.scala +57 -3
  173. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/TestFeature.swift +29 -1
  174. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Fetcher.swift +24 -1
  175. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Make.swift +51 -2
  176. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/MakeOptions.swift +12 -0
  177. package/project/.sdk/tm/ts/src/feature/test/TestFeature.ts +22 -3
  178. package/project/.sdk/tm/ts/src/utility/MakeOptionsUtility.ts +20 -2
  179. package/project/.sdk/tm/ts/src/utility/MakePointUtility.ts +72 -2
  180. package/project/.sdk/tm/ts/test/utility/Corpus.test.ts +85 -0
  181. package/project/.sdk/tm/ts/test/utility/PrimaryUtility.test.ts +10 -17
  182. package/project/.sdk/tm/zig/core/utility.zig +66 -3
  183. package/project/sdkgen-package.json +1 -2
  184. package/src/cmp/AgentGuideTop.ts +18 -0
  185. package/src/cmp/ExternalTarget.ts +1 -1
  186. package/src/cmp/Readme.ts +2 -0
  187. package/src/cmp/ReadmeStation.ts +69 -0
  188. package/src/helpers/naming.ts +172 -5
  189. package/src/helpers/opShape.ts +85 -0
  190. package/src/helpers/packageMeta.ts +59 -20
  191. package/src/sdkgen.ts +70 -20
  192. package/src/testkit.ts +863 -0
  193. package/src/utility.ts +17 -2
  194. package/testkit.d.ts +3 -0
  195. package/testkit.js +12 -0
  196. package/project/.sdk/model/target/haskell.aontu +0 -72
  197. package/project/.sdk/src/cmp/haskell/Config_haskell.ts +0 -98
  198. package/project/.sdk/src/cmp/haskell/Entity_haskell.ts +0 -13
  199. package/project/.sdk/src/cmp/haskell/Gitignore_haskell.ts +0 -27
  200. package/project/.sdk/src/cmp/haskell/Main_haskell.ts +0 -123
  201. package/project/.sdk/src/cmp/haskell/Package_haskell.ts +0 -60
  202. package/project/.sdk/src/cmp/haskell/ReadmeEntity_haskell.ts +0 -186
  203. package/project/.sdk/src/cmp/haskell/ReadmeExamplesTest_haskell.ts +0 -135
  204. package/project/.sdk/src/cmp/haskell/ReadmeExplanation_haskell.ts +0 -48
  205. package/project/.sdk/src/cmp/haskell/ReadmeHowto_haskell.ts +0 -168
  206. package/project/.sdk/src/cmp/haskell/ReadmeInstall_haskell.ts +0 -51
  207. package/project/.sdk/src/cmp/haskell/ReadmeIntro_haskell.ts +0 -67
  208. package/project/.sdk/src/cmp/haskell/ReadmeModel_haskell.ts +0 -162
  209. package/project/.sdk/src/cmp/haskell/ReadmeOptions_haskell.ts +0 -74
  210. package/project/.sdk/src/cmp/haskell/ReadmeQuick_haskell.ts +0 -241
  211. package/project/.sdk/src/cmp/haskell/ReadmeRef_haskell.ts +0 -408
  212. package/project/.sdk/src/cmp/haskell/ReadmeTopHowto_haskell.ts +0 -31
  213. package/project/.sdk/src/cmp/haskell/ReadmeTopQuick_haskell.ts +0 -104
  214. package/project/.sdk/src/cmp/haskell/ReadmeTopTest_haskell.ts +0 -80
  215. package/project/.sdk/src/cmp/haskell/Test_haskell.ts +0 -300
  216. package/project/.sdk/src/cmp/haskell/tsconfig.json +0 -15
  217. package/project/.sdk/src/cmp/haskell/utility_haskell.ts +0 -166
  218. package/project/.sdk/tm/haskell/LICENSE +0 -21
  219. package/project/.sdk/tm/haskell/Makefile +0 -22
  220. package/project/.sdk/tm/haskell/VERSION +0 -1
  221. package/project/.sdk/tm/haskell/src/SdkFeatures.hs +0 -1440
  222. package/project/.sdk/tm/haskell/src/SdkHelpers.hs +0 -337
  223. package/project/.sdk/tm/haskell/src/SdkJson.hs +0 -111
  224. package/project/.sdk/tm/haskell/src/SdkRuntime.hs +0 -1219
  225. package/project/.sdk/tm/haskell/src/SdkTypes.hs +0 -195
  226. package/project/.sdk/tm/haskell/src/VoxgigStruct.hs +0 -2299
  227. package/project/.sdk/tm/haskell/src/Vregex.hs +0 -237
  228. package/project/.sdk/tm/haskell/src/feature/README.md +0 -5
  229. package/project/.sdk/tm/haskell/src/feature/audit/.gitkeep +0 -0
  230. package/project/.sdk/tm/haskell/src/feature/base/.gitkeep +0 -0
  231. package/project/.sdk/tm/haskell/src/feature/cache/.gitkeep +0 -0
  232. package/project/.sdk/tm/haskell/src/feature/clienttrack/.gitkeep +0 -0
  233. package/project/.sdk/tm/haskell/src/feature/debug/.gitkeep +0 -0
  234. package/project/.sdk/tm/haskell/src/feature/idempotency/.gitkeep +0 -0
  235. package/project/.sdk/tm/haskell/src/feature/log/.gitkeep +0 -0
  236. package/project/.sdk/tm/haskell/src/feature/metrics/.gitkeep +0 -0
  237. package/project/.sdk/tm/haskell/src/feature/netsim/.gitkeep +0 -0
  238. package/project/.sdk/tm/haskell/src/feature/paging/.gitkeep +0 -0
  239. package/project/.sdk/tm/haskell/src/feature/proxy/.gitkeep +0 -0
  240. package/project/.sdk/tm/haskell/src/feature/ratelimit/.gitkeep +0 -0
  241. package/project/.sdk/tm/haskell/src/feature/rbac/.gitkeep +0 -0
  242. package/project/.sdk/tm/haskell/src/feature/retry/.gitkeep +0 -0
  243. package/project/.sdk/tm/haskell/src/feature/streaming/.gitkeep +0 -0
  244. package/project/.sdk/tm/haskell/src/feature/telemetry/.gitkeep +0 -0
  245. package/project/.sdk/tm/haskell/src/feature/test/.gitkeep +0 -0
  246. package/project/.sdk/tm/haskell/src/feature/timeout/.gitkeep +0 -0
  247. package/project/.sdk/tm/haskell/test/Harness.hs +0 -281
  248. package/project/.sdk/tm/haskell/test/Runner.hs +0 -47
  249. package/project/.sdk/tm/haskell/test/StructCorpus.hs +0 -449
  250. package/project/.sdk/tm/haskell/test/TCustomUtility.hs +0 -38
  251. package/project/.sdk/tm/haskell/test/TFeature.hs +0 -794
  252. package/project/.sdk/tm/haskell/test/TNetsim.hs +0 -50
  253. package/project/.sdk/tm/haskell/test/TPipeline.hs +0 -334
  254. package/project/.sdk/tm/haskell/test/TPrimaryUtility.hs +0 -386
  255. package/project/.sdk/tm/haskell/test/Testutil.hs +0 -59
@@ -1,74 +0,0 @@
1
-
2
- import { cmp, each, Content, envName, isAuthActive } from '@voxgig/sdkgen'
3
-
4
-
5
- const ReadmeOptions = cmp(function ReadmeOptions(props: any) {
6
- const { target } = props
7
- const { model } = props.ctx$
8
-
9
- const publishedOptions = each(target.options).filter((option: any) =>
10
- option.publish && ('apikey' !== option.name || isAuthActive(model)))
11
- if (0 === publishedOptions.length) {
12
- return
13
- }
14
-
15
- const authActive = isAuthActive(model)
16
-
17
- Content(`
18
-
19
- ## Options
20
-
21
- Pass an options \`Value\` (built with \`jo\`) when constructing a client. Any
22
- option may be omitted; the entries below are illustrative.
23
-
24
- `)
25
-
26
- if (authActive) {
27
- Content(`\`\`\`haskell
28
- import qualified SdkClient as Sdk
29
- import VoxgigStruct (Value (..))
30
- import SdkHelpers (jo)
31
-
32
- makeClient :: IO Sdk.Client
33
- makeClient = do
34
- -- Read the API key from the ${envName(model)}_APIKEY environment variable.
35
- opts <- jo [("apikey", VStr "your-api-key")]
36
- Sdk.newSdk opts
37
- \`\`\`
38
-
39
- `)
40
- }
41
- else {
42
- Content(`\`\`\`haskell
43
- import qualified SdkClient as Sdk
44
- import VoxgigStruct (Value (..))
45
- import SdkHelpers (jo)
46
-
47
- makeClient :: IO Sdk.Client
48
- makeClient = do
49
- opts <- jo [("base", VStr "https://api.example.com")]
50
- Sdk.newSdk opts
51
- \`\`\`
52
-
53
- `)
54
- }
55
-
56
- Content(`Every published option:
57
-
58
- | Option | Type | Description |
59
- | --- | --- | --- |
60
- `)
61
-
62
- publishedOptions.map((option: any) => {
63
- Content(`| \`${option.name}\` | \`${option.kind}\` | ${option.short} |
64
- `)
65
- })
66
-
67
- Content(`
68
- `)
69
- })
70
-
71
-
72
- export {
73
- ReadmeOptions
74
- }
@@ -1,241 +0,0 @@
1
-
2
- import { cmp, Content, isAuthActive, envName, canonKey, opRequestShape, entityIdField, entityOps } from '@voxgig/sdkgen'
3
-
4
- import {
5
- KIT,
6
- getModelPath,
7
- nom,
8
- } from '@voxgig/apidef'
9
-
10
- import { hsVarName } from './utility_haskell'
11
-
12
-
13
- // A type-correct Haskell `Value` literal for a param. List/object params fall
14
- // back to VNoval (they cannot be built as a pure literal inside `jo`); scalars
15
- // use the matching constructor.
16
- function hsLit(type: any, placeholder: string = 'example'): string {
17
- const k = canonKey(type)
18
- if ('INTEGER' === k || 'NUMBER' === k) return 'VNum 1'
19
- if ('BOOLEAN' === k) return 'VBool True'
20
- if ('ARRAY' === k || 'OBJECT' === k) return 'VNoval'
21
- return `VStr "${placeholder}"`
22
- }
23
-
24
-
25
- const ReadmeQuick = cmp(function ReadmeQuick(props: any) {
26
- const { target, ctx$: { model } } = props
27
-
28
- const entity = getModelPath(model, `main.${KIT}.entity`)
29
-
30
- const exampleEntity = Object.values(entity).find((e: any) => e.active !== false) as any
31
-
32
- // Find a nested entity if available: one with a parent chain
33
- // (relations.ancestors), an active load op, and a required non-id load
34
- // param to demonstrate (the parent key, e.g. page_id).
35
- const nestedEntity = Object.values(entity).find((e: any) =>
36
- e.active !== false &&
37
- e.relations && e.relations.ancestors && 0 < e.relations.ancestors.length &&
38
- entityOps(e).includes('load') &&
39
- opRequestShape(e, 'load').items.some((it: any) =>
40
- !it.optional && it.name !== entityIdField(e))
41
- ) as any
42
-
43
- const authActive = isAuthActive(model)
44
-
45
- Content(`### 1. Create a client
46
-
47
- \`\`\`haskell
48
- `)
49
- if (authActive) {
50
- Content(`import System.Environment (lookupEnv)
51
- import qualified SdkClient as Sdk
52
- import VoxgigStruct (Value (..), emptyMap)
53
- import SdkHelpers (jo)
54
-
55
- main :: IO ()
56
- main = do
57
- mkey <- lookupEnv "${envName(model)}_APIKEY"
58
- opts <- jo [("apikey", maybe VNoval VStr mkey)]
59
- sdk <- Sdk.newSdk opts
60
- `)
61
- }
62
- else {
63
- Content(`import qualified SdkClient as Sdk
64
- import VoxgigStruct (Value (..), emptyMap)
65
- import SdkHelpers (jo)
66
-
67
- main :: IO ()
68
- main = do
69
- sdk <- Sdk.newSdk0
70
- `)
71
- }
72
- Content(`\`\`\`
73
-
74
- Entity operations raise on error (via \`Control.Exception.throwIO\`) and
75
- return the bare result \`Value\`. Wrap a call in \`Control.Exception.try\`
76
- to recover from failures.
77
-
78
- `)
79
-
80
- if (exampleEntity) {
81
- const eName = nom(exampleEntity, 'Name')
82
- const article = /^[aeiou]/i.test(eName) ? 'an' : 'a'
83
- const eFn = hsVarName(exampleEntity.name)
84
- const opnames = entityOps(exampleEntity)
85
- // Model-driven id key: `idF` is the entity's id-like MATCH field name, or
86
- // null when it has none. `dataIdF` is the id on the RETURNED record's data
87
- // type.
88
- const idF = entityIdField(exampleEntity)
89
-
90
- if (opnames.includes('list')) {
91
- Content(`### 2. List ${eName.toLowerCase()} records
92
-
93
- \`eList ent match ctrl\` resolves to one ENTITY per record and raises on
94
- error. Read a record with \`eDataGet\`.
95
-
96
- \`\`\`haskell
97
- ent <- Sdk.${eFn} sdk VNoval
98
- match <- emptyMap
99
- ctrl <- emptyMap
100
- ${eFn}s <- Sdk.eList ent match ctrl
101
- mapM_ (\\en -> print =<< Sdk.eDataGet en) ${eFn}s
102
- \`\`\`
103
-
104
- `)
105
- }
106
-
107
- if (nestedEntity) {
108
- const neName = nom(nestedEntity, 'Name')
109
- const neArticle = /^[aeiou]/i.test(neName) ? 'an' : 'a'
110
- const neFn = hsVarName(nestedEntity.name)
111
-
112
- const neIdF = entityIdField(nestedEntity)
113
- const neRequired = opRequestShape(nestedEntity, 'load').items
114
- .filter((it: any) => !it.optional)
115
- .sort((a: any, b: any) =>
116
- (a.name === neIdF ? 1 : 0) - (b.name === neIdF ? 1 : 0))
117
- const parentItem = neRequired.find((it: any) => it.name !== neIdF) as any
118
- const parentParam = parentItem && parentItem.name
119
- const parentName = parentParam ? parentParam.replace(/_id$/, '') : 'its parent'
120
- const neMatch = neRequired.map((it: any) =>
121
- `("${it.name}", ${hsLit(it.type,
122
- it.name === neIdF ? 'example_id' : 'example_' + it.name)})`)
123
-
124
- Content(`### 3. Load ${neArticle} ${neName.toLowerCase()}
125
-
126
- ${neName} is nested under ${parentName}, so provide the \`${parentParam}\`.
127
- \`eLoad\` resolves to the ENTITY and raises on error; \`eDataGet\` gives the
128
- record.
129
-
130
- \`\`\`haskell
131
- ${neFn}Ent <- Sdk.${neFn} sdk VNoval
132
- m <- jo [${neMatch.join(', ')}]
133
- ctrl2 <- emptyMap
134
- ${neFn} <- Sdk.eLoad ${neFn}Ent m ctrl2
135
- print =<< Sdk.eDataGet ${neFn}
136
- \`\`\`
137
-
138
- `)
139
- }
140
- else if (opnames.includes('load')) {
141
- const loadRequired = opRequestShape(exampleEntity, 'load').items
142
- .filter((it: any) => !it.optional || it.name === idF)
143
- .sort((a: any, b: any) =>
144
- (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
145
- const loadArg = 0 < loadRequired.length
146
- ? `[${loadRequired.map((it: any) =>
147
- `("${it.name}", ${hsLit(it.type,
148
- it.name === idF ? 'example_id' : 'example_' + it.name)})`).join(', ')}]`
149
- : '[]'
150
-
151
- Content(`### 3. Load ${article} ${eName.toLowerCase()}
152
-
153
- \`eLoad ent match ctrl\` resolves to the ENTITY and raises on error;
154
- \`eDataGet\` gives the record.
155
-
156
- \`\`\`haskell
157
- ent2 <- Sdk.${eFn} sdk VNoval
158
- m <- jo ${loadArg}
159
- ctrl2 <- emptyMap
160
- ${eFn} <- Sdk.eLoad ent2 m ctrl2
161
- print =<< Sdk.eDataGet ${eFn}
162
- \`\`\`
163
-
164
- `)
165
- }
166
-
167
- // Model-driven example fields: derive the create/update body from the op
168
- // shape so the docs reference REAL writable fields.
169
- const examplePairs = (opname: string): string[] => {
170
- const items = opRequestShape(exampleEntity, opname).items
171
- .filter((it: any) => (it.name !== idF && it.name !== 'id') ||
172
- ('create' === opname && !it.optional))
173
- const required = items.filter((it: any) => !it.optional)
174
- const optional = items.filter((it: any) => it.optional)
175
- const chosen = 'create' === opname
176
- ? (required.length ? required : items.slice(0, 2))
177
- : required.concat(optional).slice(0, Math.max(2, required.length))
178
- return chosen.map((it: any) => `("${it.name}", ${hsLit(it.type, 'example_' + it.name)})`)
179
- }
180
-
181
- const idParamType = (opname: string): any => {
182
- const it = opRequestShape(exampleEntity, opname).items.find((x: any) => x.name === idF)
183
- return it && it.type
184
- }
185
- const idValueFor = (opname: string): string =>
186
- hsLit(idParamType(opname), 'example_id')
187
-
188
- if (opnames.includes('create') || opnames.includes('update') || opnames.includes('remove')) {
189
- Content(`### 4. Create, update, and remove
190
-
191
- `)
192
- if (opnames.includes('create')) {
193
- Content(`\`\`\`haskell
194
- createEnt <- Sdk.${eFn} sdk VNoval
195
- d <- jo [${examplePairs('create').join(', ')}]
196
- cctrl <- emptyMap
197
- created <- Sdk.eCreate createEnt d cctrl
198
- print =<< Sdk.eDataGet created
199
- \`\`\`
200
-
201
- `)
202
- }
203
- if (opnames.includes('update')) {
204
- const updatePairs = (idF ? [`("${idF}", ${idValueFor('update')})`] : []).concat(examplePairs('update'))
205
- Content(`\`\`\`haskell
206
- updateEnt <- Sdk.${eFn} sdk VNoval
207
- upd <- jo [${updatePairs.join(', ')}]
208
- uctrl <- emptyMap
209
- updated <- Sdk.eUpdate updateEnt upd uctrl
210
- print =<< Sdk.eDataGet updated
211
- \`\`\`
212
-
213
- `)
214
- }
215
- if (opnames.includes('remove')) {
216
- const removePairs = opRequestShape(exampleEntity, 'remove').items
217
- .filter((it: any) => !it.optional || it.name === idF)
218
- .sort((a: any, b: any) =>
219
- (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
220
- .map((it: any) => it.name === idF
221
- ? `("${it.name}", ${idValueFor('remove')})`
222
- : `("${it.name}", ${hsLit(it.type, 'example_' + it.name)})`)
223
- Content(`\`\`\`haskell
224
- removeEnt <- Sdk.${eFn} sdk VNoval
225
- rm <- jo [${removePairs.length ? removePairs.join(', ') : ''}]
226
- rctrl <- emptyMap
227
- -- Resolves to the entity, marked deleted; it keeps the data it held.
228
- removed <- Sdk.eRemove removeEnt rm rctrl
229
- print =<< readIORef (Sdk.eDeleted removed)
230
- \`\`\`
231
-
232
- `)
233
- }
234
- }
235
- }
236
- })
237
-
238
-
239
- export {
240
- ReadmeQuick
241
- }