@voxgig/sdkgen-langpack 0.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 (300) hide show
  1. package/.sdk/model/target/dart.aon +63 -0
  2. package/.sdk/model/target/haskell.aon +72 -0
  3. package/.sdk/model/target/lean.aon +91 -0
  4. package/.sdk/src/cmp/dart/Config_dart.ts +248 -0
  5. package/.sdk/src/cmp/dart/EntityBase_dart.ts +34 -0
  6. package/.sdk/src/cmp/dart/EntityOperation_dart.ts +43 -0
  7. package/.sdk/src/cmp/dart/EntityTypes_dart.ts +207 -0
  8. package/.sdk/src/cmp/dart/Entity_dart.ts +87 -0
  9. package/.sdk/src/cmp/dart/Gitignore_dart.ts +34 -0
  10. package/.sdk/src/cmp/dart/MainEntity_dart.ts +33 -0
  11. package/.sdk/src/cmp/dart/Main_dart.ts +178 -0
  12. package/.sdk/src/cmp/dart/Package_dart.ts +82 -0
  13. package/.sdk/src/cmp/dart/ReadmeEntity_dart.ts +177 -0
  14. package/.sdk/src/cmp/dart/ReadmeExamplesTest_dart.ts +238 -0
  15. package/.sdk/src/cmp/dart/ReadmeExplanation_dart.ts +53 -0
  16. package/.sdk/src/cmp/dart/ReadmeHowto_dart.ts +152 -0
  17. package/.sdk/src/cmp/dart/ReadmeInstall_dart.ts +59 -0
  18. package/.sdk/src/cmp/dart/ReadmeIntro_dart.ts +65 -0
  19. package/.sdk/src/cmp/dart/ReadmeModel_dart.ts +151 -0
  20. package/.sdk/src/cmp/dart/ReadmeOptions_dart.ts +63 -0
  21. package/.sdk/src/cmp/dart/ReadmeQuick_dart.ts +225 -0
  22. package/.sdk/src/cmp/dart/ReadmeRef_dart.ts +397 -0
  23. package/.sdk/src/cmp/dart/ReadmeTopHowto_dart.ts +24 -0
  24. package/.sdk/src/cmp/dart/ReadmeTopQuick_dart.ts +106 -0
  25. package/.sdk/src/cmp/dart/ReadmeTopTest_dart.ts +78 -0
  26. package/.sdk/src/cmp/dart/SdkError_dart.ts +42 -0
  27. package/.sdk/src/cmp/dart/TestDirect_dart.ts +516 -0
  28. package/.sdk/src/cmp/dart/TestEntity_dart.ts +628 -0
  29. package/.sdk/src/cmp/dart/Test_dart.ts +138 -0
  30. package/.sdk/src/cmp/dart/fragment/Config.data.fragment.dart +98 -0
  31. package/.sdk/src/cmp/dart/fragment/Config.fragment.dart +70 -0
  32. package/.sdk/src/cmp/dart/fragment/Direct.test.fragment.dart +25 -0
  33. package/.sdk/src/cmp/dart/fragment/Entity.fragment.dart +29 -0
  34. package/.sdk/src/cmp/dart/fragment/Entity.test.fragment.dart +28 -0
  35. package/.sdk/src/cmp/dart/fragment/EntityBase.fragment.dart +302 -0
  36. package/.sdk/src/cmp/dart/fragment/EntityCreateOp.fragment.dart +98 -0
  37. package/.sdk/src/cmp/dart/fragment/EntityListOp.fragment.dart +90 -0
  38. package/.sdk/src/cmp/dart/fragment/EntityLoadOp.fragment.dart +102 -0
  39. package/.sdk/src/cmp/dart/fragment/EntityRemoveOp.fragment.dart +108 -0
  40. package/.sdk/src/cmp/dart/fragment/EntityUpdateOp.fragment.dart +102 -0
  41. package/.sdk/src/cmp/dart/fragment/Main.fragment.dart +339 -0
  42. package/.sdk/src/cmp/dart/fragment/SdkError.fragment.dart +26 -0
  43. package/.sdk/src/cmp/dart/tsconfig.json +15 -0
  44. package/.sdk/src/cmp/dart/utility_dart.ts +155 -0
  45. package/.sdk/src/cmp/haskell/Config_haskell.ts +98 -0
  46. package/.sdk/src/cmp/haskell/Entity_haskell.ts +13 -0
  47. package/.sdk/src/cmp/haskell/Gitignore_haskell.ts +27 -0
  48. package/.sdk/src/cmp/haskell/Main_haskell.ts +123 -0
  49. package/.sdk/src/cmp/haskell/Package_haskell.ts +60 -0
  50. package/.sdk/src/cmp/haskell/ReadmeEntity_haskell.ts +186 -0
  51. package/.sdk/src/cmp/haskell/ReadmeExamplesTest_haskell.ts +135 -0
  52. package/.sdk/src/cmp/haskell/ReadmeExplanation_haskell.ts +48 -0
  53. package/.sdk/src/cmp/haskell/ReadmeHowto_haskell.ts +168 -0
  54. package/.sdk/src/cmp/haskell/ReadmeInstall_haskell.ts +51 -0
  55. package/.sdk/src/cmp/haskell/ReadmeIntro_haskell.ts +67 -0
  56. package/.sdk/src/cmp/haskell/ReadmeModel_haskell.ts +162 -0
  57. package/.sdk/src/cmp/haskell/ReadmeOptions_haskell.ts +74 -0
  58. package/.sdk/src/cmp/haskell/ReadmeQuick_haskell.ts +241 -0
  59. package/.sdk/src/cmp/haskell/ReadmeRef_haskell.ts +408 -0
  60. package/.sdk/src/cmp/haskell/ReadmeTopHowto_haskell.ts +31 -0
  61. package/.sdk/src/cmp/haskell/ReadmeTopQuick_haskell.ts +104 -0
  62. package/.sdk/src/cmp/haskell/ReadmeTopTest_haskell.ts +80 -0
  63. package/.sdk/src/cmp/haskell/Test_haskell.ts +297 -0
  64. package/.sdk/src/cmp/haskell/tsconfig.json +15 -0
  65. package/.sdk/src/cmp/haskell/utility_haskell.ts +166 -0
  66. package/.sdk/src/cmp/lean/Config_lean.ts +93 -0
  67. package/.sdk/src/cmp/lean/Entity_lean.ts +9 -0
  68. package/.sdk/src/cmp/lean/Gitignore_lean.ts +18 -0
  69. package/.sdk/src/cmp/lean/Main_lean.ts +120 -0
  70. package/.sdk/src/cmp/lean/Package_lean.ts +93 -0
  71. package/.sdk/src/cmp/lean/ReadmeEntity_lean.ts +29 -0
  72. package/.sdk/src/cmp/lean/ReadmeExplanation_lean.ts +19 -0
  73. package/.sdk/src/cmp/lean/ReadmeHowto_lean.ts +25 -0
  74. package/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +39 -0
  75. package/.sdk/src/cmp/lean/ReadmeIntro_lean.ts +25 -0
  76. package/.sdk/src/cmp/lean/ReadmeModel_lean.ts +24 -0
  77. package/.sdk/src/cmp/lean/ReadmeOptions_lean.ts +22 -0
  78. package/.sdk/src/cmp/lean/ReadmeQuick_lean.ts +50 -0
  79. package/.sdk/src/cmp/lean/ReadmeRef_lean.ts +40 -0
  80. package/.sdk/src/cmp/lean/ReadmeTopHowto_lean.ts +16 -0
  81. package/.sdk/src/cmp/lean/ReadmeTopQuick_lean.ts +23 -0
  82. package/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +19 -0
  83. package/.sdk/src/cmp/lean/Test_lean.ts +261 -0
  84. package/.sdk/src/cmp/lean/utility_lean.ts +129 -0
  85. package/.sdk/tm/dart/LICENSE +22 -0
  86. package/.sdk/tm/dart/Makefile +50 -0
  87. package/.sdk/tm/dart/lib/Context.dart +150 -0
  88. package/.sdk/tm/dart/lib/Control.dart +15 -0
  89. package/.sdk/tm/dart/lib/Operation.dart +31 -0
  90. package/.sdk/tm/dart/lib/Point.dart +51 -0
  91. package/.sdk/tm/dart/lib/Response.dart +32 -0
  92. package/.sdk/tm/dart/lib/Result.dart +39 -0
  93. package/.sdk/tm/dart/lib/Spec.dart +49 -0
  94. package/.sdk/tm/dart/lib/feature/audit/AuditFeature.dart +103 -0
  95. package/.sdk/tm/dart/lib/feature/base/BaseFeature.dart +76 -0
  96. package/.sdk/tm/dart/lib/feature/cache/CacheFeature.dart +152 -0
  97. package/.sdk/tm/dart/lib/feature/clienttrack/ClienttrackFeature.dart +104 -0
  98. package/.sdk/tm/dart/lib/feature/cost/CostFeature.dart +446 -0
  99. package/.sdk/tm/dart/lib/feature/debug/DebugFeature.dart +153 -0
  100. package/.sdk/tm/dart/lib/feature/idempotency/IdempotencyFeature.dart +92 -0
  101. package/.sdk/tm/dart/lib/feature/log/LogFeature.dart +85 -0
  102. package/.sdk/tm/dart/lib/feature/metrics/MetricsFeature.dart +103 -0
  103. package/.sdk/tm/dart/lib/feature/netsim/NetsimFeature.dart +186 -0
  104. package/.sdk/tm/dart/lib/feature/paging/PagingFeature.dart +240 -0
  105. package/.sdk/tm/dart/lib/feature/proxy/ProxyFeature.dart +118 -0
  106. package/.sdk/tm/dart/lib/feature/ratelimit/RatelimitFeature.dart +103 -0
  107. package/.sdk/tm/dart/lib/feature/rbac/RbacFeature.dart +121 -0
  108. package/.sdk/tm/dart/lib/feature/retry/RetryFeature.dart +155 -0
  109. package/.sdk/tm/dart/lib/feature/secrets/SecretsFeature.dart +649 -0
  110. package/.sdk/tm/dart/lib/feature/secrets/plugin/capability.dart +105 -0
  111. package/.sdk/tm/dart/lib/feature/secrets/plugin/catalog.dart +46 -0
  112. package/.sdk/tm/dart/lib/feature/secrets/plugin/config.dart +297 -0
  113. package/.sdk/tm/dart/lib/feature/secrets/plugin/depend.dart +198 -0
  114. package/.sdk/tm/dart/lib/feature/secrets/plugin/env.dart +144 -0
  115. package/.sdk/tm/dart/lib/feature/secrets/plugin/export.dart +58 -0
  116. package/.sdk/tm/dart/lib/feature/secrets/plugin/graph.dart +160 -0
  117. package/.sdk/tm/dart/lib/feature/secrets/plugin/host.dart +1067 -0
  118. package/.sdk/tm/dart/lib/feature/secrets/plugin/order.dart +172 -0
  119. package/.sdk/tm/dart/lib/feature/secrets/plugin/plugin.dart +23 -0
  120. package/.sdk/tm/dart/lib/feature/secrets/plugin/point.dart +117 -0
  121. package/.sdk/tm/dart/lib/feature/secrets/plugin/ref.dart +105 -0
  122. package/.sdk/tm/dart/lib/feature/secrets/plugin/resolve.dart +58 -0
  123. package/.sdk/tm/dart/lib/feature/secrets/plugin/types.dart +201 -0
  124. package/.sdk/tm/dart/lib/feature/secrets/plugin/version.dart +116 -0
  125. package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/aws.dart +285 -0
  126. package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/azuresecrets.dart +178 -0
  127. package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/boru.dart +145 -0
  128. package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/crypto.dart +194 -0
  129. package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/doppler.dart +101 -0
  130. package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/gcpsecrets.dart +143 -0
  131. package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/hashicorp.dart +190 -0
  132. package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/httpjson.dart +363 -0
  133. package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/infisical.dart +149 -0
  134. package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/onepassword.dart +146 -0
  135. package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/secretspec.dart +116 -0
  136. package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/sigv4.dart +237 -0
  137. package/.sdk/tm/dart/lib/feature/secrets/sekreto/src/addr.dart +138 -0
  138. package/.sdk/tm/dart/lib/feature/secrets/sekreto/src/json.dart +276 -0
  139. package/.sdk/tm/dart/lib/feature/secrets/sekreto/src/provider.dart +31 -0
  140. package/.sdk/tm/dart/lib/feature/secrets/sekreto/src/providers.dart +243 -0
  141. package/.sdk/tm/dart/lib/feature/secrets/sekreto/src/sekreto.dart +730 -0
  142. package/.sdk/tm/dart/lib/feature/secrets/sekreto/src/spec.dart +200 -0
  143. package/.sdk/tm/dart/lib/feature/secrets/sekreto/src/support.dart +217 -0
  144. package/.sdk/tm/dart/lib/feature/streaming/StreamingFeature.dart +97 -0
  145. package/.sdk/tm/dart/lib/feature/telemetry/TelemetryFeature.dart +136 -0
  146. package/.sdk/tm/dart/lib/feature/test/TestFeature.dart +328 -0
  147. package/.sdk/tm/dart/lib/feature/timeout/TimeoutFeature.dart +104 -0
  148. package/.sdk/tm/dart/lib/utility/CleanUtility.dart +12 -0
  149. package/.sdk/tm/dart/lib/utility/DoneUtility.dart +18 -0
  150. package/.sdk/tm/dart/lib/utility/ErrUtility.dart +46 -0
  151. package/.sdk/tm/dart/lib/utility/FeatureAddUtility.dart +35 -0
  152. package/.sdk/tm/dart/lib/utility/FeatureHookUtility.dart +20 -0
  153. package/.sdk/tm/dart/lib/utility/FeatureInitUtility.dart +9 -0
  154. package/.sdk/tm/dart/lib/utility/FetcherUtility.dart +104 -0
  155. package/.sdk/tm/dart/lib/utility/GraphqlUtility.dart +162 -0
  156. package/.sdk/tm/dart/lib/utility/MakeContextUtility.dart +6 -0
  157. package/.sdk/tm/dart/lib/utility/MakeErrorUtility.dart +71 -0
  158. package/.sdk/tm/dart/lib/utility/MakeFetchDefUtility.dart +42 -0
  159. package/.sdk/tm/dart/lib/utility/MakeOptionsUtility.dart +233 -0
  160. package/.sdk/tm/dart/lib/utility/MakePointUtility.dart +130 -0
  161. package/.sdk/tm/dart/lib/utility/MakeRequestUtility.dart +66 -0
  162. package/.sdk/tm/dart/lib/utility/MakeResponseUtility.dart +59 -0
  163. package/.sdk/tm/dart/lib/utility/MakeResultUtility.dart +49 -0
  164. package/.sdk/tm/dart/lib/utility/MakeSpecUtility.dart +77 -0
  165. package/.sdk/tm/dart/lib/utility/MakeUrlUtility.dart +51 -0
  166. package/.sdk/tm/dart/lib/utility/ParamUtility.dart +56 -0
  167. package/.sdk/tm/dart/lib/utility/PrepareAuthUtility.dart +46 -0
  168. package/.sdk/tm/dart/lib/utility/PrepareBodyUtility.dart +19 -0
  169. package/.sdk/tm/dart/lib/utility/PrepareHeadersUtility.dart +11 -0
  170. package/.sdk/tm/dart/lib/utility/PrepareMethodUtility.dart +30 -0
  171. package/.sdk/tm/dart/lib/utility/PrepareParamsUtility.dart +23 -0
  172. package/.sdk/tm/dart/lib/utility/PreparePathUtility.dart +9 -0
  173. package/.sdk/tm/dart/lib/utility/PrepareQueryUtility.dart +18 -0
  174. package/.sdk/tm/dart/lib/utility/ResultBasicUtility.dart +29 -0
  175. package/.sdk/tm/dart/lib/utility/ResultBodyUtility.dart +15 -0
  176. package/.sdk/tm/dart/lib/utility/ResultHeadersUtility.dart +18 -0
  177. package/.sdk/tm/dart/lib/utility/StructUtility.dart +127 -0
  178. package/.sdk/tm/dart/lib/utility/TransformRequestUtility.dart +28 -0
  179. package/.sdk/tm/dart/lib/utility/TransformResponseUtility.dart +44 -0
  180. package/.sdk/tm/dart/lib/utility/Utility.dart +239 -0
  181. package/.sdk/tm/dart/lib/utility/voxgig_struct.dart +2462 -0
  182. package/.sdk/tm/dart/src/feature/README.md +3 -0
  183. package/.sdk/tm/dart/src/feature/audit/.gitkeep +0 -0
  184. package/.sdk/tm/dart/src/feature/base/.gitkeep +0 -0
  185. package/.sdk/tm/dart/src/feature/cache/.gitkeep +0 -0
  186. package/.sdk/tm/dart/src/feature/clienttrack/.gitkeep +0 -0
  187. package/.sdk/tm/dart/src/feature/cost/.gitkeep +0 -0
  188. package/.sdk/tm/dart/src/feature/debug/.gitkeep +0 -0
  189. package/.sdk/tm/dart/src/feature/idempotency/.gitkeep +0 -0
  190. package/.sdk/tm/dart/src/feature/log/.gitkeep +0 -0
  191. package/.sdk/tm/dart/src/feature/metrics/.gitkeep +0 -0
  192. package/.sdk/tm/dart/src/feature/netsim/.gitkeep +0 -0
  193. package/.sdk/tm/dart/src/feature/paging/.gitkeep +0 -0
  194. package/.sdk/tm/dart/src/feature/proxy/.gitkeep +0 -0
  195. package/.sdk/tm/dart/src/feature/ratelimit/.gitkeep +0 -0
  196. package/.sdk/tm/dart/src/feature/rbac/.gitkeep +0 -0
  197. package/.sdk/tm/dart/src/feature/retry/.gitkeep +0 -0
  198. package/.sdk/tm/dart/src/feature/secrets/.gitkeep +0 -0
  199. package/.sdk/tm/dart/src/feature/streaming/.gitkeep +0 -0
  200. package/.sdk/tm/dart/src/feature/telemetry/.gitkeep +0 -0
  201. package/.sdk/tm/dart/src/feature/test/.gitkeep +0 -0
  202. package/.sdk/tm/dart/src/feature/timeout/.gitkeep +0 -0
  203. package/.sdk/tm/dart/test/custom_test.dart +65 -0
  204. package/.sdk/tm/dart/test/exists_test.dart +12 -0
  205. package/.sdk/tm/dart/test/feature/harness.dart +347 -0
  206. package/.sdk/tm/dart/test/feature/secrets/secrets_test.dart +1107 -0
  207. package/.sdk/tm/dart/test/feature_test.dart +1193 -0
  208. package/.sdk/tm/dart/test/harness.dart +153 -0
  209. package/.sdk/tm/dart/test/netsim_test.dart +48 -0
  210. package/.sdk/tm/dart/test/omni.dart +520 -0
  211. package/.sdk/tm/dart/test/omni_smoke_test.dart +143 -0
  212. package/.sdk/tm/dart/test/pipeline_test.dart +608 -0
  213. package/.sdk/tm/dart/test/primary_test.dart +476 -0
  214. package/.sdk/tm/dart/test/sdk-test-control.json +19 -0
  215. package/.sdk/tm/dart/test/struct_test.dart +468 -0
  216. package/.sdk/tm/dart/test/utility.dart +198 -0
  217. package/.sdk/tm/dart/test/vendor/omni/omni.dart +7 -0
  218. package/.sdk/tm/dart/test/vendor/omni/runner.dart +653 -0
  219. package/.sdk/tm/dart/test/vendor/omni/util.dart +232 -0
  220. package/.sdk/tm/haskell/LICENSE +21 -0
  221. package/.sdk/tm/haskell/Makefile +22 -0
  222. package/.sdk/tm/haskell/VERSION +1 -0
  223. package/.sdk/tm/haskell/src/SdkFeatures.hs +1440 -0
  224. package/.sdk/tm/haskell/src/SdkHelpers.hs +337 -0
  225. package/.sdk/tm/haskell/src/SdkJson.hs +111 -0
  226. package/.sdk/tm/haskell/src/SdkRuntime.hs +1279 -0
  227. package/.sdk/tm/haskell/src/SdkTypes.hs +195 -0
  228. package/.sdk/tm/haskell/src/VoxgigStruct.hs +2299 -0
  229. package/.sdk/tm/haskell/src/Vregex.hs +237 -0
  230. package/.sdk/tm/haskell/src/feature/README.md +5 -0
  231. package/.sdk/tm/haskell/src/feature/audit/.gitkeep +0 -0
  232. package/.sdk/tm/haskell/src/feature/base/.gitkeep +0 -0
  233. package/.sdk/tm/haskell/src/feature/cache/.gitkeep +0 -0
  234. package/.sdk/tm/haskell/src/feature/clienttrack/.gitkeep +0 -0
  235. package/.sdk/tm/haskell/src/feature/debug/.gitkeep +0 -0
  236. package/.sdk/tm/haskell/src/feature/idempotency/.gitkeep +0 -0
  237. package/.sdk/tm/haskell/src/feature/log/.gitkeep +0 -0
  238. package/.sdk/tm/haskell/src/feature/metrics/.gitkeep +0 -0
  239. package/.sdk/tm/haskell/src/feature/netsim/.gitkeep +0 -0
  240. package/.sdk/tm/haskell/src/feature/paging/.gitkeep +0 -0
  241. package/.sdk/tm/haskell/src/feature/proxy/.gitkeep +0 -0
  242. package/.sdk/tm/haskell/src/feature/ratelimit/.gitkeep +0 -0
  243. package/.sdk/tm/haskell/src/feature/rbac/.gitkeep +0 -0
  244. package/.sdk/tm/haskell/src/feature/retry/.gitkeep +0 -0
  245. package/.sdk/tm/haskell/src/feature/streaming/.gitkeep +0 -0
  246. package/.sdk/tm/haskell/src/feature/telemetry/.gitkeep +0 -0
  247. package/.sdk/tm/haskell/src/feature/test/.gitkeep +0 -0
  248. package/.sdk/tm/haskell/src/feature/timeout/.gitkeep +0 -0
  249. package/.sdk/tm/haskell/test/Harness.hs +281 -0
  250. package/.sdk/tm/haskell/test/OmniResolver.hs +252 -0
  251. package/.sdk/tm/haskell/test/Runner.hs +49 -0
  252. package/.sdk/tm/haskell/test/StructCorpus.hs +449 -0
  253. package/.sdk/tm/haskell/test/TCustomUtility.hs +38 -0
  254. package/.sdk/tm/haskell/test/TFeature.hs +794 -0
  255. package/.sdk/tm/haskell/test/TNetsim.hs +50 -0
  256. package/.sdk/tm/haskell/test/TPipeline.hs +334 -0
  257. package/.sdk/tm/haskell/test/TPrimaryCorpus.hs +263 -0
  258. package/.sdk/tm/haskell/test/TPrimaryUtility.hs +386 -0
  259. package/.sdk/tm/haskell/test/Testutil.hs +59 -0
  260. package/.sdk/tm/haskell/test/vendor/omni/Omni.hs +1147 -0
  261. package/.sdk/tm/lean/LICENSE +21 -0
  262. package/.sdk/tm/lean/Makefile +32 -0
  263. package/.sdk/tm/lean/VERSION +1 -0
  264. package/.sdk/tm/lean/src/SdkFeature.lean +171 -0
  265. package/.sdk/tm/lean/src/SdkFeatures.lean +787 -0
  266. package/.sdk/tm/lean/src/SdkJson.lean +134 -0
  267. package/.sdk/tm/lean/src/SdkRuntime.lean +374 -0
  268. package/.sdk/tm/lean/src/SdkUtility.lean +809 -0
  269. package/.sdk/tm/lean/src/VoxgigStruct.lean +2880 -0
  270. package/.sdk/tm/lean/src/Vregex.lean +412 -0
  271. package/.sdk/tm/lean/src/feature/README.md +5 -0
  272. package/.sdk/tm/lean/src/feature/audit/.gitkeep +0 -0
  273. package/.sdk/tm/lean/src/feature/base/.gitkeep +0 -0
  274. package/.sdk/tm/lean/src/feature/cache/.gitkeep +0 -0
  275. package/.sdk/tm/lean/src/feature/clienttrack/.gitkeep +0 -0
  276. package/.sdk/tm/lean/src/feature/cost/.gitkeep +0 -0
  277. package/.sdk/tm/lean/src/feature/debug/.gitkeep +0 -0
  278. package/.sdk/tm/lean/src/feature/idempotency/.gitkeep +0 -0
  279. package/.sdk/tm/lean/src/feature/log/.gitkeep +0 -0
  280. package/.sdk/tm/lean/src/feature/metrics/.gitkeep +0 -0
  281. package/.sdk/tm/lean/src/feature/netsim/.gitkeep +0 -0
  282. package/.sdk/tm/lean/src/feature/paging/.gitkeep +0 -0
  283. package/.sdk/tm/lean/src/feature/proxy/.gitkeep +0 -0
  284. package/.sdk/tm/lean/src/feature/ratelimit/.gitkeep +0 -0
  285. package/.sdk/tm/lean/src/feature/rbac/.gitkeep +0 -0
  286. package/.sdk/tm/lean/src/feature/retry/.gitkeep +0 -0
  287. package/.sdk/tm/lean/src/feature/streaming/.gitkeep +0 -0
  288. package/.sdk/tm/lean/src/feature/telemetry/.gitkeep +0 -0
  289. package/.sdk/tm/lean/src/feature/test/.gitkeep +0 -0
  290. package/.sdk/tm/lean/src/feature/timeout/.gitkeep +0 -0
  291. package/.sdk/tm/lean/test/OmniResolver.lean +358 -0
  292. package/.sdk/tm/lean/test/OmniSmoke.lean +174 -0
  293. package/.sdk/tm/lean/test/StructCorpus.lean +368 -0
  294. package/.sdk/tm/lean/test/TFeature.lean +281 -0
  295. package/.sdk/tm/lean/test/TPrimaryUtility.lean +227 -0
  296. package/.sdk/tm/lean/test/vendor/omni/Omni.lean +997 -0
  297. package/LICENSE +21 -0
  298. package/README.md +104 -0
  299. package/package.json +78 -0
  300. package/sdkgen-package.json +22 -0
@@ -0,0 +1,207 @@
1
+
2
+ // Typed-model generator (Dart target). Port of EntityTypes_ts.ts.
3
+ //
4
+ // Reads main.<KIT>.entity.<e>.fields[] and per-op params
5
+ // (op.<name>.points[].args.params[]) and emits one file,
6
+ // lib/<Sdk>Types.dart, with a Dart class per active entity plus a
7
+ // request/match class per active op. Field/param sentinels ($STRING,
8
+ // $INTEGER, ...) map to Dart types via the SHARED canonToType 'dart' column
9
+ // (the single source of truth per language — do not keep a local table
10
+ // here); the doc-comment sentinel key comes from the shared canonKey helper
11
+ // so the source of truth (@voxgig/apidef VALID_CANON) is respected.
12
+ //
13
+ // TYPE CHOICE: plain classes with nullable fields + fromMap/toMap. The
14
+ // generated ops accept/return runtime maps (Dart has no structural typing),
15
+ // so these classes are the documented, convertible view of those maps —
16
+ // mirroring the Python target's TypedDict approach at the level Dart
17
+ // allows. Keep the SAME type-name scheme as every other language: <Name>,
18
+ // <Name>LoadMatch, <Name>ListMatch, <Name>CreateData, <Name>UpdateData,
19
+ // <Name>RemoveMatch.
20
+
21
+ import {
22
+ cmp, each, names,
23
+ File, Content,
24
+ } from '@voxgig/sdkgen'
25
+
26
+ import { canonKey, canonToType, opTypeName, opRequestShape, warnEntityTypeCollisions, deriveEntityNames } from '@voxgig/sdkgen'
27
+
28
+ import {
29
+ KIT,
30
+ getModelPath,
31
+ } from '@voxgig/apidef'
32
+
33
+
34
+ const LANG = 'dart'
35
+
36
+
37
+ // Dart reserved words that cannot be used as field names.
38
+ const DART_KEYWORDS = new Set([
39
+ 'assert', 'break', 'case', 'catch', 'class', 'const', 'continue',
40
+ 'default', 'do', 'else', 'enum', 'extends', 'false', 'final', 'finally',
41
+ 'for', 'if', 'in', 'is', 'new', 'null', 'rethrow', 'return', 'super',
42
+ 'switch', 'this', 'throw', 'true', 'try', 'var', 'void', 'while', 'with',
43
+ ])
44
+
45
+
46
+ // A name usable as a Dart field (valid identifier, not a keyword, public).
47
+ function dartIdent(name: string): boolean {
48
+ return /^[A-Za-z][A-Za-z0-9_]*$/.test(name) && !DART_KEYWORDS.has(name)
49
+ }
50
+
51
+
52
+ // Emit a Dart data class from a list of {name, type, optional} items. All
53
+ // fields are nullable (`optional` is documented) since the runtime passes
54
+ // partial maps; fromMap is lenient (mismatched value types become null). An
55
+ // item whose name is not a legal identifier is skipped (WITH a warning — the
56
+ // key stays reachable via the runtime map, but its absence from the typed
57
+ // model should be visible, not silent).
58
+ function emitClass(typeName: string, items: any[], log?: any): void {
59
+ const usable = items.filter((it: any) => it && null != it.name && dartIdent(it.name))
60
+
61
+ items.forEach((it: any) => {
62
+ if (it && null != it.name && !dartIdent(it.name) && log && log.warn) {
63
+ log.warn({
64
+ point: 'entity-types-skip-field', typeName, field: it.name,
65
+ note: `dart: field "${it.name}" of ${typeName} has no legal Dart ` +
66
+ `identifier form; omitted from the typed model (still reachable ` +
67
+ `via the runtime map)`,
68
+ })
69
+ }
70
+ })
71
+
72
+ Content(`class ${typeName} {
73
+ `)
74
+ usable.forEach((it: any) => {
75
+ const base = canonToType(it.type, LANG)
76
+ const t = 'dynamic' === base ? 'dynamic' : base + '?'
77
+ const req = it.optional ? '' : ' (required at the API)'
78
+ Content(` /// ${canonKey(it.type) || 'ANY'}${req}
79
+ ${t} ${it.name};
80
+ `)
81
+ })
82
+
83
+ if (0 === usable.length) {
84
+ Content(` ${typeName}();
85
+
86
+ factory ${typeName}.fromMap(Map<String, dynamic> m) => ${typeName}();
87
+
88
+ Map<String, dynamic> toMap() => <String, dynamic>{};
89
+ `)
90
+ }
91
+ else {
92
+ Content(`
93
+ ${typeName}({
94
+ `)
95
+ usable.forEach((it: any) => {
96
+ Content(` this.${it.name},
97
+ `)
98
+ })
99
+ Content(` });
100
+
101
+ factory ${typeName}.fromMap(Map<String, dynamic> m) => ${typeName}(
102
+ `)
103
+ usable.forEach((it: any) => {
104
+ const base = canonToType(it.type, LANG)
105
+ if ('dynamic' === base) {
106
+ Content(` ${it.name}: m['${it.name}'],
107
+ `)
108
+ }
109
+ else {
110
+ Content(` ${it.name}: m['${it.name}'] is ${base} ? m['${it.name}'] : null,
111
+ `)
112
+ }
113
+ })
114
+ Content(` );
115
+
116
+ Map<String, dynamic> toMap() {
117
+ final m = <String, dynamic>{};
118
+ `)
119
+ usable.forEach((it: any) => {
120
+ Content(` if (null != ${it.name}) {
121
+ m['${it.name}'] = ${it.name};
122
+ }
123
+ `)
124
+ })
125
+ Content(` return m;
126
+ }
127
+ `)
128
+ }
129
+
130
+ Content(`}
131
+
132
+ `)
133
+ }
134
+
135
+
136
+ const EntityTypes = cmp(function EntityTypes(props: any) {
137
+ const { model, log } = props.ctx$
138
+ const { target } = props
139
+
140
+ // only_active:false — getModelPath DROPS active:false entries by default,
141
+ // but the consumer scaffold (create-sdkgen Root.ts) iterates the RAW entity
142
+ // collection, so inactive entities still get generated entity code that
143
+ // references these typed names. The typed model must cover them too.
144
+ const entity = getModelPath(model, `main.${KIT}.entity`, { only_active: false, required: false })
145
+ // Emit for EVERY entity that gets generated entity code: the consumer
146
+ // scaffold (create-sdkgen Root.ts) iterates entities WITHOUT an active
147
+ // filter, so inactive entities still get class files referencing these
148
+ // typed names. Filter on `name` (always present), NOT `active` — parity
149
+ // with the go emitter's fix.
150
+ const entityList = deriveEntityNames(entity)
151
+ // Derive the PascalCase Name up-front — it is set LAZILY by names(), so an
152
+ // entity not yet named (e.g. a fieldless placeholder) would otherwise read
153
+ // `Name = undefined` below. Parity with the go emitter's fix.
154
+
155
+ // Surface duplicate generated type names (two entities with the same
156
+ // PascalCase Name) — they would redeclare a type in statically-typed
157
+ // targets. Detection only; renaming is a model-level decision.
158
+ warnEntityTypeCollisions(entity, log, LANG)
159
+
160
+ File({ name: model.const.Name + 'Types.' + target.ext }, () => {
161
+
162
+ Content(`// Typed models for the ${model.const.Name} SDK.
163
+ //
164
+ // GENERATED from the API model: main.${KIT}.entity.<e>.fields[] and per-op
165
+ // params (op.<name>.points[].args.params[]). Field/param types come from the
166
+ // canonical type sentinels (source of truth: @voxgig/apidef VALID_CANON).
167
+ // Do not edit by hand.
168
+ //
169
+ // The operation pipeline passes plain maps; these classes are the typed,
170
+ // convertible view: \`${model.const.Name}.fromMap(ent.data())\` / \`model.toMap()\`.
171
+
172
+ `)
173
+
174
+ entityList.forEach((ent: any) => {
175
+ const Name = ent.Name
176
+ const fields = (ent.fields ? each(ent.fields) : [])
177
+ .filter((f: any) => f.active !== false)
178
+
179
+ // Entity data model: one field per model field, `req:false` -> optional.
180
+ emitClass(Name, fields.map((f: any) => ({
181
+ name: f.name,
182
+ type: f.type,
183
+ optional: false === f.req,
184
+ })), log)
185
+
186
+ // Per active op: a request/match type. The members and each member's
187
+ // required/optional decision come from the shared partiality policy
188
+ // (opRequestShape); this file only renders them as a Dart class.
189
+ const ops = ent.op || {}
190
+ ;['load', 'list', 'create', 'update', 'remove'].forEach((opname: string) => {
191
+ if (null == ops[opname]) {
192
+ return
193
+ }
194
+
195
+ const typeName = opTypeName(Name, opname)
196
+ const { items } = opRequestShape(ent, opname)
197
+
198
+ emitClass(typeName, items, log)
199
+ })
200
+ })
201
+ })
202
+ })
203
+
204
+
205
+ export {
206
+ EntityTypes,
207
+ }
@@ -0,0 +1,87 @@
1
+
2
+ import * as Path from 'node:path'
3
+
4
+ import {
5
+ cmp, camelify, names,
6
+ Content, File, Folder, Fragment,
7
+ entityClassName, entityCollection,
8
+ } from '@voxgig/sdkgen'
9
+
10
+ import {
11
+ KIT,
12
+ getModelPath
13
+ } from '@voxgig/apidef'
14
+
15
+ import { EntityOperation } from './EntityOperation_dart'
16
+
17
+
18
+ const Entity = cmp(function Entity(props: any) {
19
+ const { model, stdrep } = props.ctx$
20
+ const { target, entity } = props
21
+
22
+ // Collision-free entity CLASS name (see entityClassName): normally
23
+ // `<Name>Entity`, disambiguated when it would clash with another entity's
24
+ // data-type name. The class file name and the Main accessor both use
25
+ // this, so they always agree.
26
+ const entityColl = entityCollection(model)
27
+ const cls = entityClassName(entity, entityColl)
28
+
29
+ const entrep = {
30
+ ...stdrep,
31
+ }
32
+
33
+ names(entrep, entity.Name, 'EntityName')
34
+
35
+ const ff = Path.normalize(__dirname + '/../../../src/cmp/dart/fragment/')
36
+
37
+ Folder({ name: 'lib/entity' }, () => {
38
+
39
+ File({ name: cls + '.' + target.ext }, () => {
40
+
41
+ const opnames = Object.keys(entity.op || {})
42
+
43
+ const opfrags =
44
+ (['load', 'list', 'create', 'update', 'remove']
45
+ .reduce((a: any, opname: string) =>
46
+ (a['#' + camelify(opname) + 'Op'] =
47
+ !opnames.includes(opname) ? '' : ({ indent }: any) => {
48
+ EntityOperation({ ff, opname, indent, entity, entrep })
49
+ }, a), {}))
50
+
51
+ Fragment({
52
+ from: ff + 'Entity.fragment.dart',
53
+ replace: {
54
+ ...entrep,
55
+ entityname: entity.name,
56
+ SdkName: model.const.Name,
57
+ EntityName: entity.Name,
58
+
59
+ // Class token decoupled from the EntityName data-type token in
60
+ // Entity.fragment.dart so the class can be renamed independently.
61
+ EntyClass: cls,
62
+
63
+ '#TypeImports': ({ indent }: any) => Content({ indent },
64
+ `// Typed models: see ../${model.const.Name}Types.dart ` +
65
+ `(${entity.Name} and the per-op request/match types).`),
66
+
67
+ // dart:async (Future/Stream) and ErrUtility are only referenced by
68
+ // op method bodies, so an op-less entity would import them unused.
69
+ // Emit them only when the entity actually has operations.
70
+ '#OpImports': opnames.length > 0
71
+ ? ({ indent }: any) => Content({ indent },
72
+ `import 'dart:async';\nimport '../utility/ErrUtility.dart';`)
73
+ : '',
74
+
75
+ ...opfrags,
76
+ }
77
+ })
78
+
79
+ })
80
+ })
81
+ })
82
+
83
+
84
+
85
+ export {
86
+ Entity
87
+ }
@@ -0,0 +1,34 @@
1
+
2
+ import {
3
+ Content,
4
+ File,
5
+ cmp,
6
+ } from '@voxgig/sdkgen'
7
+
8
+
9
+ const Gitignore = cmp(async function Gitignore(_props: any) {
10
+ File({ name: '.gitignore' }, () => {
11
+ Content(`# Dart tooling
12
+ .dart_tool/
13
+ .packages
14
+ build/
15
+ *.dill
16
+
17
+ # Library packages do not commit the lockfile
18
+ pubspec.lock
19
+
20
+ # Logs
21
+ *.log
22
+
23
+ # IDE / OS
24
+ .idea/
25
+ .vscode/
26
+ .DS_Store
27
+ `)
28
+ })
29
+ })
30
+
31
+
32
+ export {
33
+ Gitignore
34
+ }
@@ -0,0 +1,33 @@
1
+
2
+
3
+ import { cmp, Content, entityClassName, entityCollection } from '@voxgig/sdkgen'
4
+
5
+ import {
6
+ KIT,
7
+ getModelPath
8
+ } from '@voxgig/apidef'
9
+
10
+
11
+ const MainEntity = cmp(async function MainEntity(props: any) {
12
+ const { entity } = props
13
+ const { model } = props.ctx$
14
+
15
+ // Return the collision-free class TYPE (entityClassName); the accessor
16
+ // METHOD name (entity.Name) is unchanged so callers still write
17
+ // client.<Name>().
18
+ const cls = entityClassName(entity, entityCollection(model))
19
+
20
+ Content(`
21
+ // Entity access: \`client.${entity.Name}().list()\` / \`client.${entity.Name}().load({'id': ...})\`.
22
+ ${cls} ${entity.Name}([dynamic entopts]) {
23
+ return ${cls}(this, entopts);
24
+ }
25
+
26
+ `)
27
+
28
+ })
29
+
30
+
31
+ export {
32
+ MainEntity
33
+ }
@@ -0,0 +1,178 @@
1
+
2
+ import * as Path from 'node:path'
3
+
4
+ import {
5
+ cmp, each,
6
+ List, File, Content, Copy, Folder, Fragment, Line,
7
+ entityClassName, entityCollection, pluginExcludes, targetFeatures,
8
+ TEST_CONTROL_EXCLUDE
9
+ } from '@voxgig/sdkgen'
10
+
11
+
12
+ import type {
13
+ ModelEntity
14
+ } from '@voxgig/apidef'
15
+
16
+
17
+ import {
18
+ KIT,
19
+ getModelPath
20
+ } from '@voxgig/apidef'
21
+
22
+
23
+ import { Package } from './Package_dart'
24
+ import { Config } from './Config_dart'
25
+ import { Gitignore } from './Gitignore_dart'
26
+ import { MainEntity } from './MainEntity_dart'
27
+ import { EntityBase } from './EntityBase_dart'
28
+ import { EntityTypes } from './EntityTypes_dart'
29
+ import { SdkError } from './SdkError_dart'
30
+
31
+
32
+ const Main = cmp(async function Main(props: any) {
33
+
34
+ // Needs type: target object
35
+ const { target } = props
36
+ const { model } = props.ctx$
37
+
38
+ const entity: ModelEntity = getModelPath(model, `main.${KIT}.entity`)
39
+
40
+ // Gated by the applicability tags, so this target never emits a hook for
41
+ // a feature it has no source for. One rule, one place:
42
+ // helpers/applicability.
43
+ const feature = targetFeatures(model, target)
44
+
45
+ // Does the secrets feature apply here and is it switched on? Both, since
46
+ // targetFeatures already dropped it for a target with no sekreto port.
47
+ const secrets = null != feature.secrets
48
+
49
+ Package({ target })
50
+
51
+ Gitignore({})
52
+
53
+ // Copy tm/dart files with replacements. The src/feature/* dirs exist only
54
+ // for the feature-add copy mechanism (real feature sources live under
55
+ // lib/feature/), so they are excluded from the generated package.
56
+ Copy({
57
+ from: 'tm/' + target.name,
58
+ // pluginExcludes: the generate-time plugin trim (an INACTIVE plugin
59
+ // group's declared files stay out of the tree - the model's `path`
60
+ // entries are target-root-relative, which is this Copy's root). The
61
+ // FEATURE-level trim for dart stays an add-time concern (vendor-tag
62
+ // rollout, Decision 5), exactly as for go and py.
63
+ //
64
+ // It must be EXACT for dart in a way it need not be elsewhere:
65
+ // `dart analyze` walks the whole package, so a group `path` list that
66
+ // omits a file another vendored file imports is a hard build failure
67
+ // rather than a silent runtime miss.
68
+ //
69
+ // `^src/`, ANCHORED, and the anchor is load-bearing. CopyOp seeds its
70
+ // walk with an empty path, so an exclude names paths within the copied
71
+ // tree - and the unanchored `/src\//` this used to be matched ANY path
72
+ // with a `src/` segment. The vendored sekreto port keeps upstream's
73
+ // layout, which is `sekreto/src/*.dart`, so the whole secrets core was
74
+ // silently dropped from the generated package while the plugins beside
75
+ // it survived: nine undefined-symbol errors from `dart analyze` and no
76
+ // clue in the copy that anything had been excluded.
77
+ exclude: [/^src\//, TEST_CONTROL_EXCLUDE, ...pluginExcludes(model)],
78
+ replace: {
79
+ ...props.ctx$.stdrep,
80
+ }
81
+ })
82
+
83
+ Folder({ name: 'lib' }, () => {
84
+
85
+ SdkError({ target })
86
+
87
+ File({ name: model.const.Name + 'SDK.' + target.ext }, () => {
88
+
89
+ Line(`// ${model.const.Name} ${target.Name} SDK`)
90
+ Line(``)
91
+
92
+ List({ item: entity }, ({ item }: any) => {
93
+ const cls = entityClassName(item, entityCollection(model))
94
+ return Line(`import 'entity/${cls}.dart';`)
95
+ })
96
+
97
+ // Re-export the generated typed models and entity classes so
98
+ // consumers can import everything from '<Sdk>SDK.dart'.
99
+ Line(``)
100
+ Line(`export '${model.const.Name}Types.dart';`)
101
+ List({ item: entity }, ({ item }: any) => {
102
+ const cls = entityClassName(item, entityCollection(model))
103
+ return Line(`export 'entity/${cls}.dart';`)
104
+ })
105
+
106
+ Fragment(
107
+ {
108
+ from: Path.normalize(__dirname + '/../../../src/cmp/dart/fragment/Main.fragment.dart'),
109
+ replace: {
110
+ ...props.ctx$.stdrep,
111
+
112
+ // SECRETS. Emitted only when the feature applies to this target
113
+ // AND the model activates it. An unconditional edit here would
114
+ // land in every generated SDK and break the inactive-output
115
+ // gate: a model without the feature must generate exactly as it
116
+ // did before the migration.
117
+ //
118
+ // The accessor finds the feature BY NAME in the public
119
+ // `features` list rather than through a planted `_secrets`
120
+ // field, which is what ts and js use: a leading underscore is
121
+ // LIBRARY-private in Dart, so a feature in its own library
122
+ // cannot write one on the SDK at all (see the note in
123
+ // SecretsFeature.dart).
124
+ //
125
+ // The LIVE Sekreto, never a clone: it holds provider and cache
126
+ // state, so a copy would resolve into something the transport
127
+ // never sees.
128
+ // Indentation is baked into the string, and the marker sits at
129
+ // column 0 in the fragment: jostraca hands the marker's own
130
+ // indent to the handler but does not re-indent a multi-line
131
+ // Content, so an indented marker emitted an unindented method
132
+ // body AND left the indent behind as trailing whitespace when
133
+ // the slot was empty. At column 0 an inactive SDK gains one
134
+ // blank line and nothing else.
135
+ '// #SecretsAccessor': () => secrets ?
136
+ Content(`
137
+ // The live sekreto chain this SDK resolves its credential through, for
138
+ // callers who want arbitrary secrets or redaction:
139
+ //
140
+ // await sdk.secrets().get('db.password')
141
+ // sdk.secrets().redact(logline)
142
+ //
143
+ // Null before the secrets feature has initialised, and in an SDK where
144
+ // it is switched off.
145
+ dynamic secrets() {
146
+ for (final f in features) {
147
+ if ('secrets' == f.name) {
148
+ return f.sekreto();
149
+ }
150
+ }
151
+ return null;
152
+ }
153
+
154
+ `) : undefined,
155
+ }
156
+ },
157
+
158
+ // Entities
159
+ () => {
160
+ each(entity, (entity: ModelEntity) => {
161
+ const entitySDK = getModelPath(model, `main.${KIT}.entity.${entity.name}`)
162
+ const entprops = { target, entity, entitySDK }
163
+ MainEntity(entprops)
164
+ })
165
+ })
166
+ })
167
+
168
+ Config({ target })
169
+ EntityBase({ target })
170
+ EntityTypes({ target })
171
+
172
+ })
173
+ })
174
+
175
+
176
+ export {
177
+ Main
178
+ }
@@ -0,0 +1,82 @@
1
+
2
+ import {
3
+ Content,
4
+ File,
5
+ cmp,
6
+ collectDeps,
7
+ pkgDescription,
8
+ keywords,
9
+ repoInfo,
10
+ packageVersion,
11
+ } from '@voxgig/sdkgen'
12
+
13
+
14
+ import type {
15
+ Model,
16
+ } from '@voxgig/apidef'
17
+
18
+
19
+ // pub.dev package names must be lowercase identifiers ([a-z0-9_], starting
20
+ // with a letter). The import path (`lib/`) is unaffected.
21
+ function dartPackageName(model: any): string {
22
+ let name = `${model.name}_sdk`.toLowerCase().replace(/[^a-z0-9_]/g, '_')
23
+ if (!/^[a-z]/.test(name)) {
24
+ name = 'sdk_' + name
25
+ }
26
+ return name
27
+ }
28
+
29
+
30
+ const Package = cmp(async function Package(props: any) {
31
+ const ctx$ = props.ctx$
32
+ const target = props.target
33
+
34
+ const model: Model = ctx$.model
35
+
36
+ const { repoUrl, issuesUrl } = repoInfo(model)
37
+ const kw = keywords(model)
38
+
39
+ File({ name: 'pubspec.yaml' }, () => {
40
+ Content(`name: ${dartPackageName(model)}
41
+ description: >-
42
+ ${pkgDescription(model, target.name)}
43
+ version: ${packageVersion(model, target.name)}
44
+ homepage: ${repoUrl}
45
+ repository: ${repoUrl}
46
+ issue_tracker: ${issuesUrl}
47
+ topics:
48
+ `)
49
+
50
+ // pub.dev topics: max 5, lowercase, hyphenated.
51
+ kw.slice(0, 5).forEach((k: string) => {
52
+ Content(` - ${String(k).toLowerCase().replace(/[^a-z0-9-]/g, '-')}
53
+ `)
54
+ })
55
+
56
+ Content(`environment:
57
+ sdk: '>=3.0.0 <4.0.0'
58
+ `)
59
+
60
+ // Runtime is dependency-free (dart:io + dart:convert + vendored struct);
61
+ // target/feature deps, when declared, land here.
62
+ const deps: Record<string, string> = {}
63
+ for (const d of collectDeps(model, target.name, target.deps, ctx$.log)) {
64
+ deps[d.name] = d.source === 'target' ? (d.version || 'any') : d.version
65
+ }
66
+
67
+ if (0 < Object.keys(deps).length) {
68
+ Content(`dependencies:
69
+ `)
70
+ for (const [name, version] of Object.entries(deps)) {
71
+ Content(` ${name}: '${version}'
72
+ `)
73
+ }
74
+ }
75
+ })
76
+ })
77
+
78
+
79
+ export {
80
+ Package,
81
+ dartPackageName,
82
+ }