@deterministic-code/datasources-cli 0.0.0-stage → 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 (945) hide show
  1. package/bin/datasources.mjs +2 -0
  2. package/dist/catalog.js +60 -0
  3. package/dist/commands.js +51 -0
  4. package/dist/detect.js +23 -0
  5. package/dist/env.js +93 -0
  6. package/dist/generate/CSharpRepositories.js +134 -0
  7. package/dist/generate/CodeGenerationProvider.js +0 -0
  8. package/dist/generate/DeterministicProvider.js +53 -0
  9. package/dist/generate/GenerateRequest.js +6 -0
  10. package/dist/generate/RepositoryModel.js +64 -0
  11. package/dist/generate/RepositoryPlan.js +171 -0
  12. package/dist/generate/RustRepositories.js +270 -0
  13. package/dist/generate/TypeScriptRepositories.js +115 -0
  14. package/dist/generate/applyGenerate.js +28 -0
  15. package/dist/generate/applyMigrations.js +28 -0
  16. package/dist/generate/loadSpec.js +48 -0
  17. package/dist/generate/migrateUp.js +76 -0
  18. package/dist/generate/providers.js +10 -0
  19. package/dist/generate/settingsFlat.js +29 -0
  20. package/dist/generate/writeEntries.js +35 -0
  21. package/dist/index.js +10 -0
  22. package/dist/installed.js +14 -0
  23. package/dist/io.js +35 -0
  24. package/dist/main.js +10 -0
  25. package/dist/migrateInit.js +11 -0
  26. package/dist/parse.js +144 -0
  27. package/dist/run.js +197 -0
  28. package/dist/setup.js +54 -0
  29. package/dist/version/applyVersion.js +51 -0
  30. package/dist/version/delta.js +114 -0
  31. package/dist/version/render.js +38 -0
  32. package/dist/wireRegister.js +104 -0
  33. package/node_modules/@deterministic-code/csharp-generators/dist/common/default-casing.js +44 -0
  34. package/node_modules/@deterministic-code/csharp-generators/dist/common/view-shape.js +78 -0
  35. package/node_modules/@deterministic-code/csharp-generators/dist/deterministic-type-converter.js +124 -0
  36. package/node_modules/@deterministic-code/csharp-generators/dist/emit.js +20 -0
  37. package/node_modules/@deterministic-code/csharp-generators/dist/generate-backend-app.js +42 -0
  38. package/node_modules/@deterministic-code/csharp-generators/dist/generate-context.js +0 -0
  39. package/node_modules/@deterministic-code/csharp-generators/dist/generate-datasource-type-validators-tests.js +170 -0
  40. package/node_modules/@deterministic-code/csharp-generators/dist/generate-datasource-types-tests.js +127 -0
  41. package/node_modules/@deterministic-code/csharp-generators/dist/generate-datasource-types.d.ts +3 -0
  42. package/node_modules/@deterministic-code/csharp-generators/dist/generate-datasource-types.js +75 -0
  43. package/node_modules/@deterministic-code/csharp-generators/dist/generate-routes-tests.js +27 -0
  44. package/node_modules/@deterministic-code/csharp-generators/dist/generate-routes.js +93 -0
  45. package/node_modules/@deterministic-code/csharp-generators/dist/generate-service-tests.js +29 -0
  46. package/node_modules/@deterministic-code/csharp-generators/dist/generate-services.js +58 -0
  47. package/node_modules/@deterministic-code/csharp-generators/dist/generate-view-type-validators-tests.js +223 -0
  48. package/node_modules/@deterministic-code/csharp-generators/dist/generate-view-type-validators.js +92 -0
  49. package/node_modules/@deterministic-code/csharp-generators/dist/generate-view-types-tests.js +138 -0
  50. package/node_modules/@deterministic-code/csharp-generators/dist/generate-view-types.d.ts +3 -0
  51. package/node_modules/@deterministic-code/csharp-generators/dist/generate-view-types.js +99 -0
  52. package/node_modules/@deterministic-code/csharp-generators/dist/import-generator.js +167 -0
  53. package/node_modules/@deterministic-code/csharp-generators/dist/resources/backend-app.js +34 -0
  54. package/node_modules/@deterministic-code/csharp-generators/dist/resources/datasource-type-validators-tests.js +12 -0
  55. package/node_modules/@deterministic-code/csharp-generators/dist/resources/datasource-type-validators.js +12 -0
  56. package/node_modules/@deterministic-code/csharp-generators/dist/resources/datasource-types-tests.js +11 -0
  57. package/node_modules/@deterministic-code/csharp-generators/dist/resources/datasource-types.js +9 -0
  58. package/node_modules/@deterministic-code/csharp-generators/dist/resources/routes-tests.js +9 -0
  59. package/node_modules/@deterministic-code/csharp-generators/dist/resources/routes.js +15 -0
  60. package/node_modules/@deterministic-code/csharp-generators/dist/resources/service-tests.js +9 -0
  61. package/node_modules/@deterministic-code/csharp-generators/dist/resources/services.js +13 -0
  62. package/node_modules/@deterministic-code/csharp-generators/dist/resources/view-type-validators-tests.js +12 -0
  63. package/node_modules/@deterministic-code/csharp-generators/dist/resources/view-type-validators.js +9 -0
  64. package/node_modules/@deterministic-code/csharp-generators/dist/resources/view-types-tests.js +11 -0
  65. package/node_modules/@deterministic-code/csharp-generators/dist/resources/view-types.js +9 -0
  66. package/node_modules/@deterministic-code/csharp-generators/dist/specification-parser.js +20 -0
  67. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-backend-app/Dockerfile.tmpl +23 -0
  68. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-backend-app/csharp/App/App.csproj.tmpl +22 -0
  69. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-backend-app/csharp/App/Program.cs.tmpl +28 -0
  70. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-backend-app/csharp/App/appsettings.Development.json.tmpl +8 -0
  71. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-backend-app/csharp/App/appsettings.json.tmpl +9 -0
  72. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-backend-app/docker-compose.yml.tmpl +17 -0
  73. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-backend-app/entrypoint.sh +7 -0
  74. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-backend-app/env.tmpl +1 -0
  75. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-backend-app/gitignore.tmpl +18 -0
  76. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-datasource-type-validators/type.cs.tmpl +14 -0
  77. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-datasource-type-validators-tests/type.tests.cs.tmpl +20 -0
  78. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-datasource-types/type.cs.tmpl +15 -0
  79. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-datasource-types-tests/type.tests.cs.tmpl +44 -0
  80. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-routes/custom-stub.cs.tmpl +5 -0
  81. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-routes/name-enrichment.cs.tmpl +49 -0
  82. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-routes/router.cs.tmpl +15 -0
  83. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-routes-tests/generic.cs.tmpl +3 -0
  84. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-service-tests/generic.cs.tmpl +3 -0
  85. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-services/custom-stub.cs.tmpl +19 -0
  86. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-services/generic.cs.tmpl +9 -0
  87. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-view-type-validators/type.cs.tmpl +17 -0
  88. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-view-type-validators-tests/type.tests.cs.tmpl +30 -0
  89. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-view-types/type.cs.tmpl +20 -0
  90. package/node_modules/@deterministic-code/csharp-generators/dist/templates/create-view-types-tests/type.tests.cs.tmpl +60 -0
  91. package/node_modules/@deterministic-code/csharp-generators/package.json +86 -0
  92. package/node_modules/@deterministic-code/csharp-generators/src/common/default-casing.test.ts +73 -0
  93. package/node_modules/@deterministic-code/csharp-generators/src/common/default-casing.ts +79 -0
  94. package/node_modules/@deterministic-code/csharp-generators/src/common/view-shape.ts +124 -0
  95. package/node_modules/@deterministic-code/csharp-generators/src/deterministic-type-converter.ts +144 -0
  96. package/node_modules/@deterministic-code/csharp-generators/src/emit.ts +22 -0
  97. package/node_modules/@deterministic-code/csharp-generators/src/generate-backend-app.ts +52 -0
  98. package/node_modules/@deterministic-code/csharp-generators/src/generate-context.ts +1 -0
  99. package/node_modules/@deterministic-code/csharp-generators/src/generate-datasource-type-validators-tests.ts +207 -0
  100. package/node_modules/@deterministic-code/csharp-generators/src/generate-datasource-type-validators.ts +227 -0
  101. package/node_modules/@deterministic-code/csharp-generators/src/generate-datasource-types-tests.ts +143 -0
  102. package/node_modules/@deterministic-code/csharp-generators/src/generate-datasource-types.ts +86 -0
  103. package/node_modules/@deterministic-code/csharp-generators/src/generate-routes-tests.ts +29 -0
  104. package/node_modules/@deterministic-code/csharp-generators/src/generate-routes.ts +110 -0
  105. package/node_modules/@deterministic-code/csharp-generators/src/generate-service-tests.ts +31 -0
  106. package/node_modules/@deterministic-code/csharp-generators/src/generate-services.ts +69 -0
  107. package/node_modules/@deterministic-code/csharp-generators/src/generate-view-type-validators-tests.ts +277 -0
  108. package/node_modules/@deterministic-code/csharp-generators/src/generate-view-type-validators.ts +112 -0
  109. package/node_modules/@deterministic-code/csharp-generators/src/generate-view-types-tests.ts +187 -0
  110. package/node_modules/@deterministic-code/csharp-generators/src/generate-view-types.ts +118 -0
  111. package/node_modules/@deterministic-code/csharp-generators/src/import-generator.test.ts +266 -0
  112. package/node_modules/@deterministic-code/csharp-generators/src/import-generator.ts +226 -0
  113. package/node_modules/@deterministic-code/csharp-generators/src/resources/backend-app.ts +26 -0
  114. package/node_modules/@deterministic-code/csharp-generators/src/resources/datasource-type-validators-tests.ts +12 -0
  115. package/node_modules/@deterministic-code/csharp-generators/src/resources/datasource-type-validators.ts +12 -0
  116. package/node_modules/@deterministic-code/csharp-generators/src/resources/datasource-types-tests.ts +11 -0
  117. package/node_modules/@deterministic-code/csharp-generators/src/resources/datasource-types.ts +9 -0
  118. package/node_modules/@deterministic-code/csharp-generators/src/resources/routes-tests.ts +9 -0
  119. package/node_modules/@deterministic-code/csharp-generators/src/resources/routes.ts +14 -0
  120. package/node_modules/@deterministic-code/csharp-generators/src/resources/service-tests.ts +9 -0
  121. package/node_modules/@deterministic-code/csharp-generators/src/resources/services.ts +12 -0
  122. package/node_modules/@deterministic-code/csharp-generators/src/resources/view-type-validators-tests.ts +12 -0
  123. package/node_modules/@deterministic-code/csharp-generators/src/resources/view-type-validators.ts +9 -0
  124. package/node_modules/@deterministic-code/csharp-generators/src/resources/view-types-tests.ts +11 -0
  125. package/node_modules/@deterministic-code/csharp-generators/src/resources/view-types.ts +9 -0
  126. package/node_modules/@deterministic-code/csharp-generators/src/specification-parser.ts +34 -0
  127. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-backend-app/Dockerfile.tmpl +23 -0
  128. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-backend-app/csharp/App/App.csproj.tmpl +22 -0
  129. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-backend-app/csharp/App/Program.cs.tmpl +28 -0
  130. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-backend-app/csharp/App/appsettings.Development.json.tmpl +8 -0
  131. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-backend-app/csharp/App/appsettings.json.tmpl +9 -0
  132. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-backend-app/docker-compose.yml.tmpl +17 -0
  133. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-backend-app/entrypoint.sh +7 -0
  134. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-backend-app/env.tmpl +1 -0
  135. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-backend-app/gitignore.tmpl +18 -0
  136. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-datasource-type-validators/type.cs.tmpl +14 -0
  137. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-datasource-type-validators-tests/type.tests.cs.tmpl +20 -0
  138. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-datasource-types/type.cs.tmpl +15 -0
  139. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-datasource-types-tests/type.tests.cs.tmpl +44 -0
  140. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-routes/custom-stub.cs.tmpl +5 -0
  141. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-routes/name-enrichment.cs.tmpl +49 -0
  142. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-routes/router.cs.tmpl +15 -0
  143. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-routes-tests/generic.cs.tmpl +3 -0
  144. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-service-tests/generic.cs.tmpl +3 -0
  145. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-services/custom-stub.cs.tmpl +19 -0
  146. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-services/generic.cs.tmpl +9 -0
  147. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-view-type-validators/type.cs.tmpl +17 -0
  148. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-view-type-validators-tests/type.tests.cs.tmpl +30 -0
  149. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-view-types/type.cs.tmpl +20 -0
  150. package/node_modules/@deterministic-code/csharp-generators/src/templates/create-view-types-tests/type.tests.cs.tmpl +60 -0
  151. package/node_modules/@deterministic-code/csharp-generators/tsconfig.build.json +10 -0
  152. package/node_modules/@deterministic-code/datasources-code-generators/dist/generate-sql.d.ts +4 -0
  153. package/node_modules/@deterministic-code/datasources-code-generators/dist/generate-sql.js +4 -0
  154. package/node_modules/@deterministic-code/datasources-code-generators/dist/generate-stored-procedures.d.ts +4 -0
  155. package/node_modules/@deterministic-code/datasources-code-generators/dist/generate-stored-procedures.js +4 -0
  156. package/node_modules/@deterministic-code/datasources-code-generators/dist/generateSql.d.ts +1 -0
  157. package/node_modules/@deterministic-code/datasources-code-generators/dist/generateSql.js +1 -0
  158. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/converter-field.d.ts +3 -0
  159. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/converter-field.js +6 -0
  160. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/custom-migrations-source.d.ts +9 -0
  161. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/custom-migrations-source.js +71 -0
  162. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/datasource-by-fields.d.ts +3 -0
  163. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/datasource-by-fields.js +38 -0
  164. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/default-casing.d.ts +20 -0
  165. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/default-casing.js +64 -0
  166. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/generate-custom-migrations.d.ts +6 -0
  167. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/generate-custom-migrations.js +25 -0
  168. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/generate-procedures.d.ts +14 -0
  169. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/generate-procedures.js +106 -0
  170. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/generate-sql.d.ts +5 -0
  171. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/generate-sql.js +116 -0
  172. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/procedures/driver.d.ts +9 -0
  173. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/procedures/driver.js +18 -0
  174. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/procedures/helpers.d.ts +25 -0
  175. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/procedures/helpers.js +39 -0
  176. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/schema-diff.d.ts +10 -0
  177. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/schema-diff.js +136 -0
  178. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/seed-generator.d.ts +6 -0
  179. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/seed-generator.js +82 -0
  180. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/sql-dialect.d.ts +23 -0
  181. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/sql-dialect.js +58 -0
  182. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/sql-keywords.d.ts +4 -0
  183. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/sql-keywords.js +140 -0
  184. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/sql-mapping.d.ts +20 -0
  185. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/sql-mapping.js +43 -0
  186. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/sql-schema.d.ts +35 -0
  187. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/sql-schema.js +112 -0
  188. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/version-apply.d.ts +18 -0
  189. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/version-apply.js +83 -0
  190. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/version-migrations.d.ts +15 -0
  191. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/common/version-migrations.js +127 -0
  192. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/dialect-converters.d.ts +10 -0
  193. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/dialect-converters.js +16 -0
  194. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/generate-sql.d.ts +4 -0
  195. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/generate-sql.js +10 -0
  196. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/generate-stored-procedures.d.ts +4 -0
  197. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/generate-stored-procedures.js +10 -0
  198. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/resources/sql.d.ts +1 -0
  199. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/resources/sql.js +6 -0
  200. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/statements.d.ts +28 -0
  201. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/statements.js +81 -0
  202. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/templates/create-sql/migration-down.sql.tmpl +6 -0
  203. package/node_modules/@deterministic-code/datasources-code-generators/dist/sql/templates/create-sql/migration-up.sql.tmpl +18 -0
  204. package/node_modules/@deterministic-code/datasources-code-generators/package.json +24 -0
  205. package/node_modules/@deterministic-code/deterministic-generators-common/README.md +22 -0
  206. package/node_modules/@deterministic-code/deterministic-generators-common/package.json +40 -0
  207. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/parser/datasource-type-tree.ts +330 -0
  208. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/parser/deterministic-reader.ts +63 -0
  209. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/parser/deterministic.ts +35 -0
  210. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/parser/dist/specification-parser.js +1290 -0
  211. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/parser/ensure-health.ts +57 -0
  212. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/parser/parser/compile-filter.ts +90 -0
  213. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/parser/parser/specification-parser.ts +1057 -0
  214. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/parser/settings.ts +49 -0
  215. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/parser/specification-parser.ts +24 -0
  216. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/parser/specification.ts +383 -0
  217. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/parser/vitest.config.ts +20 -0
  218. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/parser/yaml-node.ts +88 -0
  219. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/validator/SpecValidator.ts +260 -0
  220. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/validator/index.ts +12 -0
  221. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/validator/types.ts +47 -0
  222. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/validator/validators/DatasourceSeedsValidator.test.ts +385 -0
  223. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/validator/validators/DatasourceSeedsValidator.ts +75 -0
  224. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/validator/validators/DatasourceValidator.ts +39 -0
  225. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/validator/validators/FrontendBindingsValidator.ts +11 -0
  226. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/validator/validators/RoutesApiValidator.test.ts +59 -0
  227. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/validator/validators/RoutesApiValidator.ts +18 -0
  228. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/validator/validators/RoutesValidator.ts +24 -0
  229. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/validator/validators/ServicesValidator.ts +24 -0
  230. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/validator/validators/TypesValidator.test.ts +140 -0
  231. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/validator/validators/TypesValidator.ts +31 -0
  232. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/validator/validators/engines.ts +7 -0
  233. package/node_modules/@deterministic-code/deterministic-generators-common/typescript/validator/validators/validator.test.ts +229 -0
  234. package/node_modules/@deterministic-code/deterministic-specifications-typescript/README.md +22 -0
  235. package/node_modules/@deterministic-code/deterministic-specifications-typescript/package.json +40 -0
  236. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/parser/datasource-type-tree.ts +330 -0
  237. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/parser/deterministic-reader.ts +63 -0
  238. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/parser/deterministic.ts +35 -0
  239. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/parser/ensure-health.ts +57 -0
  240. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/parser/parser/compile-filter.ts +90 -0
  241. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/parser/parser/specification-parser.ts +1056 -0
  242. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/parser/settings.ts +49 -0
  243. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/parser/specification-parser.ts +24 -0
  244. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/parser/specification.ts +383 -0
  245. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/parser/vitest.config.ts +20 -0
  246. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/parser/yaml-node.ts +88 -0
  247. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/validator/SpecValidator.ts +260 -0
  248. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/validator/index.ts +12 -0
  249. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/validator/types.ts +47 -0
  250. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/validator/validators/DatasourceSeedsValidator.test.ts +385 -0
  251. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/validator/validators/DatasourceSeedsValidator.ts +75 -0
  252. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/validator/validators/DatasourceValidator.ts +39 -0
  253. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/validator/validators/FrontendBindingsValidator.ts +11 -0
  254. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/validator/validators/RoutesApiValidator.test.ts +59 -0
  255. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/validator/validators/RoutesApiValidator.ts +18 -0
  256. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/validator/validators/RoutesValidator.ts +24 -0
  257. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/validator/validators/ServicesValidator.ts +24 -0
  258. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/validator/validators/TypesValidator.test.ts +140 -0
  259. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/validator/validators/TypesValidator.ts +31 -0
  260. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/validator/validators/engines.ts +7 -0
  261. package/node_modules/@deterministic-code/deterministic-specifications-typescript/typescript/validator/validators/validator.test.ts +229 -0
  262. package/node_modules/@deterministic-code/generators-common/README.md +10 -0
  263. package/node_modules/@deterministic-code/generators-common/dist/casing-strategy.d.ts +10 -0
  264. package/node_modules/@deterministic-code/generators-common/dist/casing-strategy.js +167 -0
  265. package/node_modules/@deterministic-code/generators-common/dist/datasource-naming.d.ts +10 -0
  266. package/node_modules/@deterministic-code/generators-common/dist/datasource-naming.js +29 -0
  267. package/node_modules/@deterministic-code/generators-common/dist/datasource-type-tree.d.ts +42 -0
  268. package/node_modules/@deterministic-code/generators-common/dist/datasource-type-tree.js +240 -0
  269. package/node_modules/@deterministic-code/generators-common/dist/default-token.d.ts +7 -0
  270. package/node_modules/@deterministic-code/generators-common/dist/default-token.js +17 -0
  271. package/node_modules/@deterministic-code/generators-common/dist/deterministic-default-value-converter.d.ts +21 -0
  272. package/node_modules/@deterministic-code/generators-common/dist/deterministic-default-value-converter.js +128 -0
  273. package/node_modules/@deterministic-code/generators-common/dist/deterministic-reader.d.ts +7 -0
  274. package/node_modules/@deterministic-code/generators-common/dist/deterministic-reader.js +47 -0
  275. package/node_modules/@deterministic-code/generators-common/dist/deterministic-type-converter.d.ts +7 -0
  276. package/node_modules/@deterministic-code/generators-common/dist/deterministic-type-converter.js +35 -0
  277. package/node_modules/@deterministic-code/generators-common/dist/fill.d.ts +1 -0
  278. package/node_modules/@deterministic-code/generators-common/dist/fill.js +7 -0
  279. package/node_modules/@deterministic-code/generators-common/dist/generate-context.d.ts +5 -0
  280. package/node_modules/@deterministic-code/generators-common/dist/generate-context.js +0 -0
  281. package/node_modules/@deterministic-code/generators-common/dist/generate-entry.d.ts +17 -0
  282. package/node_modules/@deterministic-code/generators-common/dist/generate-entry.js +25 -0
  283. package/node_modules/@deterministic-code/generators-common/dist/import-generator.d.ts +35 -0
  284. package/node_modules/@deterministic-code/generators-common/dist/import-generator.js +0 -0
  285. package/node_modules/@deterministic-code/generators-common/dist/reference-verifier.d.ts +35 -0
  286. package/node_modules/@deterministic-code/generators-common/dist/reference-verifier.js +223 -0
  287. package/node_modules/@deterministic-code/generators-common/dist/routes-api-converter.d.ts +4 -0
  288. package/node_modules/@deterministic-code/generators-common/dist/routes-api-converter.js +528 -0
  289. package/node_modules/@deterministic-code/generators-common/dist/routes-api.d.ts +57 -0
  290. package/node_modules/@deterministic-code/generators-common/dist/routes-api.js +13 -0
  291. package/node_modules/@deterministic-code/generators-common/dist/settings.d.ts +20 -0
  292. package/node_modules/@deterministic-code/generators-common/dist/settings.js +47 -0
  293. package/node_modules/@deterministic-code/generators-common/dist/spec-types.d.ts +37 -0
  294. package/node_modules/@deterministic-code/generators-common/dist/spec-types.js +162 -0
  295. package/node_modules/@deterministic-code/generators-common/package.json +95 -0
  296. package/node_modules/@deterministic-code/generators-common/src/casing-strategy.test.ts +404 -0
  297. package/node_modules/@deterministic-code/generators-common/src/casing-strategy.ts +222 -0
  298. package/node_modules/@deterministic-code/generators-common/src/datasource-naming.test.ts +232 -0
  299. package/node_modules/@deterministic-code/generators-common/src/datasource-naming.ts +53 -0
  300. package/node_modules/@deterministic-code/generators-common/src/datasource-type-tree.test.ts +406 -0
  301. package/node_modules/@deterministic-code/generators-common/src/datasource-type-tree.ts +333 -0
  302. package/node_modules/@deterministic-code/generators-common/src/default-token.ts +17 -0
  303. package/node_modules/@deterministic-code/generators-common/src/deterministic-default-value-converter.test.ts +97 -0
  304. package/node_modules/@deterministic-code/generators-common/src/deterministic-default-value-converter.ts +148 -0
  305. package/node_modules/@deterministic-code/generators-common/src/deterministic-reader.ts +63 -0
  306. package/node_modules/@deterministic-code/generators-common/src/deterministic-type-converter.test.ts +34 -0
  307. package/node_modules/@deterministic-code/generators-common/src/deterministic-type-converter.ts +35 -0
  308. package/node_modules/@deterministic-code/generators-common/src/fill.ts +6 -0
  309. package/node_modules/@deterministic-code/generators-common/src/generate-context.ts +6 -0
  310. package/node_modules/@deterministic-code/generators-common/src/generate-entry.ts +54 -0
  311. package/node_modules/@deterministic-code/generators-common/src/import-generator.ts +39 -0
  312. package/node_modules/@deterministic-code/generators-common/src/mustache-module.d.ts +9 -0
  313. package/node_modules/@deterministic-code/generators-common/src/pluralize-module.d.ts +10 -0
  314. package/node_modules/@deterministic-code/generators-common/src/reference-verifier.test.ts +257 -0
  315. package/node_modules/@deterministic-code/generators-common/src/reference-verifier.ts +294 -0
  316. package/node_modules/@deterministic-code/generators-common/src/routes-api-converter.test.ts +454 -0
  317. package/node_modules/@deterministic-code/generators-common/src/routes-api-converter.ts +715 -0
  318. package/node_modules/@deterministic-code/generators-common/src/routes-api.ts +82 -0
  319. package/node_modules/@deterministic-code/generators-common/src/settings.test.ts +154 -0
  320. package/node_modules/@deterministic-code/generators-common/src/settings.ts +80 -0
  321. package/node_modules/@deterministic-code/generators-common/src/spec-types.test.ts +156 -0
  322. package/node_modules/@deterministic-code/generators-common/src/spec-types.ts +234 -0
  323. package/node_modules/@deterministic-code/generators-common/tsconfig.build.json +20 -0
  324. package/node_modules/@deterministic-code/generators-openapi/package.json +34 -0
  325. package/node_modules/@deterministic-code/generators-openapi/src/default-casing.ts +15 -0
  326. package/node_modules/@deterministic-code/generators-openapi/src/generate-openapi-docs.ts +1 -0
  327. package/node_modules/@deterministic-code/generators-openapi/src/generate-openapi.integration.test.ts +106 -0
  328. package/node_modules/@deterministic-code/generators-openapi/src/generate-openapi.samples.test.ts +279 -0
  329. package/node_modules/@deterministic-code/generators-openapi/src/generate-openapi.ts +20 -0
  330. package/node_modules/@deterministic-code/generators-openapi/src/openapi-converter.ts +37 -0
  331. package/node_modules/@deterministic-code/generators-openapi/src/openapi-document.ts +158 -0
  332. package/node_modules/@deterministic-code/generators-openapi/src/resources/openapi.ts +9 -0
  333. package/node_modules/@deterministic-code/generators-openapi/src/samples/01-simple/datasource.yaml +5 -0
  334. package/node_modules/@deterministic-code/generators-openapi/src/samples/01-simple/routes.yaml +5 -0
  335. package/node_modules/@deterministic-code/generators-openapi/src/samples/01-simple/types.yaml +8 -0
  336. package/node_modules/@deterministic-code/generators-openapi/src/samples/02-moderate/datasource.yaml +13 -0
  337. package/node_modules/@deterministic-code/generators-openapi/src/samples/02-moderate/routes.yaml +14 -0
  338. package/node_modules/@deterministic-code/generators-openapi/src/samples/02-moderate/types.yaml +21 -0
  339. package/node_modules/@deterministic-code/generators-openapi/src/samples/03-complex/datasource.yaml +13 -0
  340. package/node_modules/@deterministic-code/generators-openapi/src/samples/03-complex/routes.yaml +15 -0
  341. package/node_modules/@deterministic-code/generators-openapi/src/samples/03-complex/types.yaml +35 -0
  342. package/node_modules/@deterministic-code/generators-openapi/src/samples/04-complex-optimistic-concurrency/datasource.yaml +16 -0
  343. package/node_modules/@deterministic-code/generators-openapi/src/samples/04-complex-optimistic-concurrency/routes.yaml +15 -0
  344. package/node_modules/@deterministic-code/generators-openapi/src/samples/04-complex-optimistic-concurrency/types.yaml +35 -0
  345. package/node_modules/@deterministic-code/generators-openapi/src/templates/create-openapi/openapi.json.tmpl +32 -0
  346. package/node_modules/@deterministic-code/generators-openapi/src/templates/create-openapi/openapi.rs.tmpl +17 -0
  347. package/node_modules/@deterministic-code/generators-openapi/src/templates/create-openapi/openapi_conformance.rs.tmpl +56 -0
  348. package/node_modules/@deterministic-code/generators-openapi/src/templates/create-openapi/operation.json.tmpl +55 -0
  349. package/node_modules/@deterministic-code/generators-openapi/tsconfig.build.json +10 -0
  350. package/node_modules/@deterministic-code/patch-merger/README.md +170 -0
  351. package/node_modules/@deterministic-code/patch-merger/package.json +33 -0
  352. package/node_modules/@deterministic-code/patch-merger/typescript/dist/index.cjs +2 -0
  353. package/node_modules/@deterministic-code/patch-merger/typescript/dist/index.cjs.map +1 -0
  354. package/node_modules/@deterministic-code/patch-merger/typescript/dist/index.d.ts +75 -0
  355. package/node_modules/@deterministic-code/patch-merger/typescript/dist/index.js +18 -0
  356. package/node_modules/@deterministic-code/patch-merger/typescript/dist/index.js.map +1 -0
  357. package/node_modules/@deterministic-code/patch-merger/typescript/dist/patch-merger-CjtjSB9r.js +631 -0
  358. package/node_modules/@deterministic-code/patch-merger/typescript/dist/patch-merger-CjtjSB9r.js.map +1 -0
  359. package/node_modules/@deterministic-code/patch-merger/typescript/dist/patch-merger-CvVbM8X5.cjs +14 -0
  360. package/node_modules/@deterministic-code/patch-merger/typescript/dist/patch-merger-CvVbM8X5.cjs.map +1 -0
  361. package/node_modules/@deterministic-code/patch-merger/typescript/dist/patch-merger.cjs +2 -0
  362. package/node_modules/@deterministic-code/patch-merger/typescript/dist/patch-merger.cjs.map +1 -0
  363. package/node_modules/@deterministic-code/patch-merger/typescript/dist/patch-merger.d.ts +53 -0
  364. package/node_modules/@deterministic-code/patch-merger/typescript/dist/patch-merger.js +8 -0
  365. package/node_modules/@deterministic-code/patch-merger/typescript/dist/patch-merger.js.map +1 -0
  366. package/node_modules/@deterministic-code/rust-generators/dist/common/default-casing.js +32 -0
  367. package/node_modules/@deterministic-code/rust-generators/dist/common/dictionary-candidate.js +4 -0
  368. package/node_modules/@deterministic-code/rust-generators/dist/common/test-samples.js +77 -0
  369. package/node_modules/@deterministic-code/rust-generators/dist/common/view-shape.js +28 -0
  370. package/node_modules/@deterministic-code/rust-generators/dist/common/view-test-fixtures.js +105 -0
  371. package/node_modules/@deterministic-code/rust-generators/dist/deterministic-type-converter.js +134 -0
  372. package/node_modules/@deterministic-code/rust-generators/dist/emit.js +20 -0
  373. package/node_modules/@deterministic-code/rust-generators/dist/generate-backend-app.js +39 -0
  374. package/node_modules/@deterministic-code/rust-generators/dist/generate-context.js +0 -0
  375. package/node_modules/@deterministic-code/rust-generators/dist/generate-datasource-type-validators-tests.js +106 -0
  376. package/node_modules/@deterministic-code/rust-generators/dist/generate-datasource-types-tests.js +60 -0
  377. package/node_modules/@deterministic-code/rust-generators/dist/generate-datasource-types.d.ts +3 -0
  378. package/node_modules/@deterministic-code/rust-generators/dist/generate-datasource-types.js +70 -0
  379. package/node_modules/@deterministic-code/rust-generators/dist/generate-openapi.js +32 -0
  380. package/node_modules/@deterministic-code/rust-generators/dist/generate-perf-e2e-tests.js +6 -0
  381. package/node_modules/@deterministic-code/rust-generators/dist/generate-perf-server.js +20 -0
  382. package/node_modules/@deterministic-code/rust-generators/dist/generate-routes-e2e-test.js +102 -0
  383. package/node_modules/@deterministic-code/rust-generators/dist/generate-routes-tests.js +118 -0
  384. package/node_modules/@deterministic-code/rust-generators/dist/generate-routes.js +329 -0
  385. package/node_modules/@deterministic-code/rust-generators/dist/generate-service-integration-tests.js +65 -0
  386. package/node_modules/@deterministic-code/rust-generators/dist/generate-service-tests.js +51 -0
  387. package/node_modules/@deterministic-code/rust-generators/dist/generate-services.js +75 -0
  388. package/node_modules/@deterministic-code/rust-generators/dist/generate-view-type-validators-tests.js +93 -0
  389. package/node_modules/@deterministic-code/rust-generators/dist/generate-view-type-validators.js +137 -0
  390. package/node_modules/@deterministic-code/rust-generators/dist/generate-view-types-tests.js +81 -0
  391. package/node_modules/@deterministic-code/rust-generators/dist/generate-view-types.d.ts +3 -0
  392. package/node_modules/@deterministic-code/rust-generators/dist/generate-view-types.js +142 -0
  393. package/node_modules/@deterministic-code/rust-generators/dist/import-generator.js +243 -0
  394. package/node_modules/@deterministic-code/rust-generators/dist/resources/backend-app.js +31 -0
  395. package/node_modules/@deterministic-code/rust-generators/dist/resources/datasource-type-validators-tests.js +12 -0
  396. package/node_modules/@deterministic-code/rust-generators/dist/resources/datasource-type-validators.js +12 -0
  397. package/node_modules/@deterministic-code/rust-generators/dist/resources/datasource-types-tests.js +11 -0
  398. package/node_modules/@deterministic-code/rust-generators/dist/resources/datasource-types.js +9 -0
  399. package/node_modules/@deterministic-code/rust-generators/dist/resources/openapi.js +13 -0
  400. package/node_modules/@deterministic-code/rust-generators/dist/resources/perf-e2e.js +8 -0
  401. package/node_modules/@deterministic-code/rust-generators/dist/resources/perf-server.js +8 -0
  402. package/node_modules/@deterministic-code/rust-generators/dist/resources/routes-e2e.js +17 -0
  403. package/node_modules/@deterministic-code/rust-generators/dist/resources/routes-tests.js +22 -0
  404. package/node_modules/@deterministic-code/rust-generators/dist/resources/routes.js +46 -0
  405. package/node_modules/@deterministic-code/rust-generators/dist/resources/service-integration-tests.js +12 -0
  406. package/node_modules/@deterministic-code/rust-generators/dist/resources/service-tests.js +9 -0
  407. package/node_modules/@deterministic-code/rust-generators/dist/resources/services.js +13 -0
  408. package/node_modules/@deterministic-code/rust-generators/dist/resources/view-type-validators-tests.js +12 -0
  409. package/node_modules/@deterministic-code/rust-generators/dist/resources/view-type-validators.js +25 -0
  410. package/node_modules/@deterministic-code/rust-generators/dist/resources/view-types-tests.js +11 -0
  411. package/node_modules/@deterministic-code/rust-generators/dist/resources/view-types.js +9 -0
  412. package/node_modules/@deterministic-code/rust-generators/dist/rust-eager-service-graph.js +6 -0
  413. package/node_modules/@deterministic-code/rust-generators/dist/specification-parser.js +20 -0
  414. package/node_modules/@deterministic-code/rust-generators/dist/struct-default.js +70 -0
  415. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-backend-app/Cargo.toml.tmpl +34 -0
  416. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-backend-app/Dockerfile.tmpl +31 -0
  417. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-backend-app/docker-compose.yml.tmpl +17 -0
  418. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-backend-app/entrypoint.sh +7 -0
  419. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-backend-app/env.tmpl +2 -0
  420. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-backend-app/gitignore.tmpl +1 -0
  421. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-backend-app/rust/chunks/README.md +1 -0
  422. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-backend-app/rust/chunks/lib.rs +2 -0
  423. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-backend-app/rust/chunks/main.rs +4 -0
  424. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-backend-app/rust/health_check_service.rs +13 -0
  425. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-datasource-type-validators/type.rs.tmpl +8 -0
  426. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-datasource-type-validators-tests/type_tests.rs.tmpl +14 -0
  427. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-datasource-types/type.rs.tmpl +22 -0
  428. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-datasource-types-tests/type_tests.rs.tmpl +39 -0
  429. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-openapi/openapi.rs.tmpl +17 -0
  430. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-openapi/openapi_conformance.rs.tmpl +56 -0
  431. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-perf-e2e/app_perf_client.rs.tmpl +541 -0
  432. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-perf-server/perf_server.rs.tmpl +3 -0
  433. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-routes/app-wiring-body.rs.tmpl +11 -0
  434. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-routes/app-wiring.rs.tmpl +1 -0
  435. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-routes/by-field-merge.rs.tmpl +10 -0
  436. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-routes/check-eager-child.rs.tmpl +14 -0
  437. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-routes/check-optional-typed.rs.tmpl +3 -0
  438. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-routes/check-required-typed.rs.tmpl +5 -0
  439. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-routes/check-required.rs.tmpl +1 -0
  440. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-routes/coerce-row.rs.tmpl +62 -0
  441. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-routes/crud.rs.tmpl +1 -0
  442. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-routes/readonly.rs.tmpl +1 -0
  443. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-routes/validator-empty.rs.tmpl +1 -0
  444. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-routes/validator.rs.tmpl +5 -0
  445. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-routes-e2e/app_routes_e2e.rs.tmpl +2 -0
  446. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-routes-e2e/crud-tests.rs.tmpl +66 -0
  447. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-routes-e2e/readonly-tests.rs.tmpl +33 -0
  448. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-routes-e2e/setup.rs.tmpl +52 -0
  449. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-routes-tests/by-field-get-list.rs.tmpl +15 -0
  450. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-routes-tests/by-field-get-unique.rs.tmpl +15 -0
  451. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-routes-tests/crud.rs.tmpl +9 -0
  452. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-routes-tests/readonly.rs.tmpl +9 -0
  453. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-service-integration-tests/generic.rs.tmpl +9 -0
  454. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-service-tests/generic.rs.tmpl +9 -0
  455. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-services/custom-stub.rs.tmpl +13 -0
  456. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-services/generic.rs.tmpl +13 -0
  457. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-view-type-validators/check-array-nullable.rs.tmpl +1 -0
  458. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-view-type-validators/check-array.rs.tmpl +1 -0
  459. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-view-type-validators/check-nullable.rs.tmpl +1 -0
  460. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-view-type-validators/check-required.rs.tmpl +1 -0
  461. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-view-type-validators/type.rs.tmpl +20 -0
  462. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-view-type-validators-tests/type_tests.rs.tmpl +14 -0
  463. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-view-types/type.rs.tmpl +35 -0
  464. package/node_modules/@deterministic-code/rust-generators/dist/templates/create-view-types-tests/type_tests.rs.tmpl +48 -0
  465. package/node_modules/@deterministic-code/rust-generators/package.json +106 -0
  466. package/node_modules/@deterministic-code/rust-generators/src/common/default-casing.test.ts +60 -0
  467. package/node_modules/@deterministic-code/rust-generators/src/common/default-casing.ts +47 -0
  468. package/node_modules/@deterministic-code/rust-generators/src/common/dictionary-candidate.ts +4 -0
  469. package/node_modules/@deterministic-code/rust-generators/src/common/test-samples.ts +82 -0
  470. package/node_modules/@deterministic-code/rust-generators/src/common/view-shape.ts +46 -0
  471. package/node_modules/@deterministic-code/rust-generators/src/common/view-test-fixtures.ts +162 -0
  472. package/node_modules/@deterministic-code/rust-generators/src/deterministic-type-converter.ts +168 -0
  473. package/node_modules/@deterministic-code/rust-generators/src/emit.ts +22 -0
  474. package/node_modules/@deterministic-code/rust-generators/src/generate-backend-app.ts +45 -0
  475. package/node_modules/@deterministic-code/rust-generators/src/generate-context.ts +1 -0
  476. package/node_modules/@deterministic-code/rust-generators/src/generate-datasource-type-validators-tests.ts +142 -0
  477. package/node_modules/@deterministic-code/rust-generators/src/generate-datasource-type-validators.ts +182 -0
  478. package/node_modules/@deterministic-code/rust-generators/src/generate-datasource-types-tests.ts +63 -0
  479. package/node_modules/@deterministic-code/rust-generators/src/generate-datasource-types.ts +84 -0
  480. package/node_modules/@deterministic-code/rust-generators/src/generate-openapi.ts +40 -0
  481. package/node_modules/@deterministic-code/rust-generators/src/generate-perf-e2e-tests.ts +7 -0
  482. package/node_modules/@deterministic-code/rust-generators/src/generate-perf-server.ts +21 -0
  483. package/node_modules/@deterministic-code/rust-generators/src/generate-routes-e2e-test.ts +117 -0
  484. package/node_modules/@deterministic-code/rust-generators/src/generate-routes-tests.ts +153 -0
  485. package/node_modules/@deterministic-code/rust-generators/src/generate-routes.ts +465 -0
  486. package/node_modules/@deterministic-code/rust-generators/src/generate-service-integration-tests.ts +84 -0
  487. package/node_modules/@deterministic-code/rust-generators/src/generate-service-tests.ts +64 -0
  488. package/node_modules/@deterministic-code/rust-generators/src/generate-services.ts +86 -0
  489. package/node_modules/@deterministic-code/rust-generators/src/generate-view-type-validators-tests.ts +105 -0
  490. package/node_modules/@deterministic-code/rust-generators/src/generate-view-type-validators.ts +154 -0
  491. package/node_modules/@deterministic-code/rust-generators/src/generate-view-types-tests.ts +92 -0
  492. package/node_modules/@deterministic-code/rust-generators/src/generate-view-types.ts +168 -0
  493. package/node_modules/@deterministic-code/rust-generators/src/import-generator.test.ts +381 -0
  494. package/node_modules/@deterministic-code/rust-generators/src/import-generator.ts +341 -0
  495. package/node_modules/@deterministic-code/rust-generators/src/resources/backend-app.ts +24 -0
  496. package/node_modules/@deterministic-code/rust-generators/src/resources/datasource-type-validators-tests.ts +12 -0
  497. package/node_modules/@deterministic-code/rust-generators/src/resources/datasource-type-validators.ts +12 -0
  498. package/node_modules/@deterministic-code/rust-generators/src/resources/datasource-types-tests.ts +11 -0
  499. package/node_modules/@deterministic-code/rust-generators/src/resources/datasource-types.ts +9 -0
  500. package/node_modules/@deterministic-code/rust-generators/src/resources/openapi.ts +12 -0
  501. package/node_modules/@deterministic-code/rust-generators/src/resources/perf-e2e.ts +6 -0
  502. package/node_modules/@deterministic-code/rust-generators/src/resources/perf-server.ts +6 -0
  503. package/node_modules/@deterministic-code/rust-generators/src/resources/routes-e2e.ts +15 -0
  504. package/node_modules/@deterministic-code/rust-generators/src/resources/routes-tests.ts +19 -0
  505. package/node_modules/@deterministic-code/rust-generators/src/resources/routes.ts +35 -0
  506. package/node_modules/@deterministic-code/rust-generators/src/resources/service-integration-tests.ts +12 -0
  507. package/node_modules/@deterministic-code/rust-generators/src/resources/service-tests.ts +9 -0
  508. package/node_modules/@deterministic-code/rust-generators/src/resources/services.ts +12 -0
  509. package/node_modules/@deterministic-code/rust-generators/src/resources/view-type-validators-tests.ts +12 -0
  510. package/node_modules/@deterministic-code/rust-generators/src/resources/view-type-validators.ts +21 -0
  511. package/node_modules/@deterministic-code/rust-generators/src/resources/view-types-tests.ts +11 -0
  512. package/node_modules/@deterministic-code/rust-generators/src/resources/view-types.ts +9 -0
  513. package/node_modules/@deterministic-code/rust-generators/src/rust-eager-service-graph.ts +4 -0
  514. package/node_modules/@deterministic-code/rust-generators/src/specification-parser.ts +34 -0
  515. package/node_modules/@deterministic-code/rust-generators/src/struct-default.ts +99 -0
  516. package/node_modules/@deterministic-code/rust-generators/src/templates/create-backend-app/Cargo.toml.tmpl +34 -0
  517. package/node_modules/@deterministic-code/rust-generators/src/templates/create-backend-app/Dockerfile.tmpl +31 -0
  518. package/node_modules/@deterministic-code/rust-generators/src/templates/create-backend-app/docker-compose.yml.tmpl +17 -0
  519. package/node_modules/@deterministic-code/rust-generators/src/templates/create-backend-app/entrypoint.sh +7 -0
  520. package/node_modules/@deterministic-code/rust-generators/src/templates/create-backend-app/env.tmpl +2 -0
  521. package/node_modules/@deterministic-code/rust-generators/src/templates/create-backend-app/gitignore.tmpl +1 -0
  522. package/node_modules/@deterministic-code/rust-generators/src/templates/create-backend-app/rust/chunks/README.md +1 -0
  523. package/node_modules/@deterministic-code/rust-generators/src/templates/create-backend-app/rust/chunks/lib.rs +2 -0
  524. package/node_modules/@deterministic-code/rust-generators/src/templates/create-backend-app/rust/chunks/main.rs +4 -0
  525. package/node_modules/@deterministic-code/rust-generators/src/templates/create-backend-app/rust/health_check_service.rs +13 -0
  526. package/node_modules/@deterministic-code/rust-generators/src/templates/create-datasource-type-validators/type.rs.tmpl +8 -0
  527. package/node_modules/@deterministic-code/rust-generators/src/templates/create-datasource-type-validators-tests/type_tests.rs.tmpl +14 -0
  528. package/node_modules/@deterministic-code/rust-generators/src/templates/create-datasource-types/type.rs.tmpl +22 -0
  529. package/node_modules/@deterministic-code/rust-generators/src/templates/create-datasource-types-tests/type_tests.rs.tmpl +39 -0
  530. package/node_modules/@deterministic-code/rust-generators/src/templates/create-openapi/openapi.rs.tmpl +17 -0
  531. package/node_modules/@deterministic-code/rust-generators/src/templates/create-openapi/openapi_conformance.rs.tmpl +56 -0
  532. package/node_modules/@deterministic-code/rust-generators/src/templates/create-perf-e2e/app_perf_client.rs.tmpl +541 -0
  533. package/node_modules/@deterministic-code/rust-generators/src/templates/create-perf-server/perf_server.rs.tmpl +3 -0
  534. package/node_modules/@deterministic-code/rust-generators/src/templates/create-routes/app-wiring-body.rs.tmpl +11 -0
  535. package/node_modules/@deterministic-code/rust-generators/src/templates/create-routes/app-wiring.rs.tmpl +1 -0
  536. package/node_modules/@deterministic-code/rust-generators/src/templates/create-routes/by-field-merge.rs.tmpl +10 -0
  537. package/node_modules/@deterministic-code/rust-generators/src/templates/create-routes/check-eager-child.rs.tmpl +14 -0
  538. package/node_modules/@deterministic-code/rust-generators/src/templates/create-routes/check-optional-typed.rs.tmpl +3 -0
  539. package/node_modules/@deterministic-code/rust-generators/src/templates/create-routes/check-required-typed.rs.tmpl +5 -0
  540. package/node_modules/@deterministic-code/rust-generators/src/templates/create-routes/check-required.rs.tmpl +1 -0
  541. package/node_modules/@deterministic-code/rust-generators/src/templates/create-routes/coerce-row.rs.tmpl +62 -0
  542. package/node_modules/@deterministic-code/rust-generators/src/templates/create-routes/crud.rs.tmpl +1 -0
  543. package/node_modules/@deterministic-code/rust-generators/src/templates/create-routes/readonly.rs.tmpl +1 -0
  544. package/node_modules/@deterministic-code/rust-generators/src/templates/create-routes/validator-empty.rs.tmpl +1 -0
  545. package/node_modules/@deterministic-code/rust-generators/src/templates/create-routes/validator.rs.tmpl +5 -0
  546. package/node_modules/@deterministic-code/rust-generators/src/templates/create-routes-e2e/app_routes_e2e.rs.tmpl +2 -0
  547. package/node_modules/@deterministic-code/rust-generators/src/templates/create-routes-e2e/crud-tests.rs.tmpl +66 -0
  548. package/node_modules/@deterministic-code/rust-generators/src/templates/create-routes-e2e/readonly-tests.rs.tmpl +33 -0
  549. package/node_modules/@deterministic-code/rust-generators/src/templates/create-routes-e2e/setup.rs.tmpl +52 -0
  550. package/node_modules/@deterministic-code/rust-generators/src/templates/create-routes-tests/by-field-get-list.rs.tmpl +15 -0
  551. package/node_modules/@deterministic-code/rust-generators/src/templates/create-routes-tests/by-field-get-unique.rs.tmpl +15 -0
  552. package/node_modules/@deterministic-code/rust-generators/src/templates/create-routes-tests/crud.rs.tmpl +9 -0
  553. package/node_modules/@deterministic-code/rust-generators/src/templates/create-routes-tests/readonly.rs.tmpl +9 -0
  554. package/node_modules/@deterministic-code/rust-generators/src/templates/create-service-integration-tests/generic.rs.tmpl +9 -0
  555. package/node_modules/@deterministic-code/rust-generators/src/templates/create-service-tests/generic.rs.tmpl +9 -0
  556. package/node_modules/@deterministic-code/rust-generators/src/templates/create-services/custom-stub.rs.tmpl +13 -0
  557. package/node_modules/@deterministic-code/rust-generators/src/templates/create-services/generic.rs.tmpl +13 -0
  558. package/node_modules/@deterministic-code/rust-generators/src/templates/create-view-type-validators/check-array-nullable.rs.tmpl +1 -0
  559. package/node_modules/@deterministic-code/rust-generators/src/templates/create-view-type-validators/check-array.rs.tmpl +1 -0
  560. package/node_modules/@deterministic-code/rust-generators/src/templates/create-view-type-validators/check-nullable.rs.tmpl +1 -0
  561. package/node_modules/@deterministic-code/rust-generators/src/templates/create-view-type-validators/check-required.rs.tmpl +1 -0
  562. package/node_modules/@deterministic-code/rust-generators/src/templates/create-view-type-validators/type.rs.tmpl +20 -0
  563. package/node_modules/@deterministic-code/rust-generators/src/templates/create-view-type-validators-tests/type_tests.rs.tmpl +14 -0
  564. package/node_modules/@deterministic-code/rust-generators/src/templates/create-view-types/type.rs.tmpl +35 -0
  565. package/node_modules/@deterministic-code/rust-generators/src/templates/create-view-types-tests/type_tests.rs.tmpl +48 -0
  566. package/node_modules/@deterministic-code/rust-generators/tsconfig.build.json +10 -0
  567. package/node_modules/@deterministic-code/typescript-generators/dist/client-binding-transport.js +15 -0
  568. package/node_modules/@deterministic-code/typescript-generators/dist/client-bindings-ir.js +186 -0
  569. package/node_modules/@deterministic-code/typescript-generators/dist/common/default-casing.js +53 -0
  570. package/node_modules/@deterministic-code/typescript-generators/dist/common/dictionary-candidate.js +4 -0
  571. package/node_modules/@deterministic-code/typescript-generators/dist/common/fake-test-data.js +88 -0
  572. package/node_modules/@deterministic-code/typescript-generators/dist/common/http-path.js +8 -0
  573. package/node_modules/@deterministic-code/typescript-generators/dist/common/type-converters/native-to-zod.js +118 -0
  574. package/node_modules/@deterministic-code/typescript-generators/dist/common/view-shape.js +30 -0
  575. package/node_modules/@deterministic-code/typescript-generators/dist/common/view-test-shape.js +238 -0
  576. package/node_modules/@deterministic-code/typescript-generators/dist/deterministic-type-converter.js +110 -0
  577. package/node_modules/@deterministic-code/typescript-generators/dist/emit-shaped-types.js +353 -0
  578. package/node_modules/@deterministic-code/typescript-generators/dist/emit.js +43 -0
  579. package/node_modules/@deterministic-code/typescript-generators/dist/frontend-bindings-routes.js +4 -0
  580. package/node_modules/@deterministic-code/typescript-generators/dist/generate-backend-app.js +105 -0
  581. package/node_modules/@deterministic-code/typescript-generators/dist/generate-client-bindings-live-tests.js +28 -0
  582. package/node_modules/@deterministic-code/typescript-generators/dist/generate-client-bindings-mock-tests.js +28 -0
  583. package/node_modules/@deterministic-code/typescript-generators/dist/generate-client-bindings.js +55 -0
  584. package/node_modules/@deterministic-code/typescript-generators/dist/generate-context.js +0 -0
  585. package/node_modules/@deterministic-code/typescript-generators/dist/generate-datasource-type-validators-tests.js +167 -0
  586. package/node_modules/@deterministic-code/typescript-generators/dist/generate-datasource-types-tests.js +83 -0
  587. package/node_modules/@deterministic-code/typescript-generators/dist/generate-datasource-types.d.ts +3 -0
  588. package/node_modules/@deterministic-code/typescript-generators/dist/generate-datasource-types.js +10 -0
  589. package/node_modules/@deterministic-code/typescript-generators/dist/generate-frontend-app.js +154 -0
  590. package/node_modules/@deterministic-code/typescript-generators/dist/generate-frontend-types-tests.js +14 -0
  591. package/node_modules/@deterministic-code/typescript-generators/dist/generate-frontend-types.js +18 -0
  592. package/node_modules/@deterministic-code/typescript-generators/dist/generate-frontend-validators-tests.js +14 -0
  593. package/node_modules/@deterministic-code/typescript-generators/dist/generate-frontend-validators.js +34 -0
  594. package/node_modules/@deterministic-code/typescript-generators/dist/generate-perf-e2e-tests.js +8 -0
  595. package/node_modules/@deterministic-code/typescript-generators/dist/generate-perf-server.js +31 -0
  596. package/node_modules/@deterministic-code/typescript-generators/dist/generate-routes-e2e-test.js +21 -0
  597. package/node_modules/@deterministic-code/typescript-generators/dist/generate-routes-tests.js +64 -0
  598. package/node_modules/@deterministic-code/typescript-generators/dist/generate-routes.js +172 -0
  599. package/node_modules/@deterministic-code/typescript-generators/dist/generate-service-integration-tests.js +282 -0
  600. package/node_modules/@deterministic-code/typescript-generators/dist/generate-service-tests.js +80 -0
  601. package/node_modules/@deterministic-code/typescript-generators/dist/generate-services.js +239 -0
  602. package/node_modules/@deterministic-code/typescript-generators/dist/generate-view-type-validators-tests.js +192 -0
  603. package/node_modules/@deterministic-code/typescript-generators/dist/generate-view-type-validators.js +308 -0
  604. package/node_modules/@deterministic-code/typescript-generators/dist/generate-view-types-tests.js +101 -0
  605. package/node_modules/@deterministic-code/typescript-generators/dist/generate-view-types.d.ts +3 -0
  606. package/node_modules/@deterministic-code/typescript-generators/dist/generate-view-types.js +5 -0
  607. package/node_modules/@deterministic-code/typescript-generators/dist/import-generator.js +241 -0
  608. package/node_modules/@deterministic-code/typescript-generators/dist/inline-inherited.js +4 -0
  609. package/node_modules/@deterministic-code/typescript-generators/dist/resources/backend-app-minimal.js +25 -0
  610. package/node_modules/@deterministic-code/typescript-generators/dist/resources/backend-app.js +43 -0
  611. package/node_modules/@deterministic-code/typescript-generators/dist/resources/client-bindings-live-tests.js +16 -0
  612. package/node_modules/@deterministic-code/typescript-generators/dist/resources/client-bindings-mock-tests.js +16 -0
  613. package/node_modules/@deterministic-code/typescript-generators/dist/resources/client-bindings.js +31 -0
  614. package/node_modules/@deterministic-code/typescript-generators/dist/resources/datasource-type-validators-tests.js +14 -0
  615. package/node_modules/@deterministic-code/typescript-generators/dist/resources/datasource-type-validators.js +16 -0
  616. package/node_modules/@deterministic-code/typescript-generators/dist/resources/datasource-types-tests.js +11 -0
  617. package/node_modules/@deterministic-code/typescript-generators/dist/resources/frontend-app-angular.js +46 -0
  618. package/node_modules/@deterministic-code/typescript-generators/dist/resources/frontend-app-next.js +37 -0
  619. package/node_modules/@deterministic-code/typescript-generators/dist/resources/frontend-app-svelte.js +43 -0
  620. package/node_modules/@deterministic-code/typescript-generators/dist/resources/frontend-app.js +37 -0
  621. package/node_modules/@deterministic-code/typescript-generators/dist/resources/frontend-validators.js +28 -0
  622. package/node_modules/@deterministic-code/typescript-generators/dist/resources/perf-e2e.js +8 -0
  623. package/node_modules/@deterministic-code/typescript-generators/dist/resources/perf-server.js +18 -0
  624. package/node_modules/@deterministic-code/typescript-generators/dist/resources/routes-e2e.js +11 -0
  625. package/node_modules/@deterministic-code/typescript-generators/dist/resources/routes-tests.js +37 -0
  626. package/node_modules/@deterministic-code/typescript-generators/dist/resources/routes.js +40 -0
  627. package/node_modules/@deterministic-code/typescript-generators/dist/resources/service-integration-tests.js +11 -0
  628. package/node_modules/@deterministic-code/typescript-generators/dist/resources/service-tests.js +9 -0
  629. package/node_modules/@deterministic-code/typescript-generators/dist/resources/services.js +15 -0
  630. package/node_modules/@deterministic-code/typescript-generators/dist/resources/shaped-types.js +13 -0
  631. package/node_modules/@deterministic-code/typescript-generators/dist/resources/view-type-validators-tests.js +14 -0
  632. package/node_modules/@deterministic-code/typescript-generators/dist/resources/view-type-validators.js +28 -0
  633. package/node_modules/@deterministic-code/typescript-generators/dist/resources/view-types-tests.js +15 -0
  634. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-backend-app/Dockerfile.tmpl +19 -0
  635. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-backend-app/app-boot.test.ts.tmpl +9 -0
  636. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-backend-app/docker-compose.yml.tmpl +18 -0
  637. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-backend-app/entrypoint.sh +7 -0
  638. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-backend-app/env.tmpl +1 -0
  639. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-backend-app/gitignore.tmpl +5 -0
  640. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-backend-app/health-check-service.ts.tmpl +11 -0
  641. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-backend-app/health.test.ts.tmpl +27 -0
  642. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-backend-app/minimal/app.ts.tmpl +15 -0
  643. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-backend-app/minimal/health.test.ts.tmpl +23 -0
  644. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-backend-app/minimal/package.json.tmpl +14 -0
  645. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-backend-app/minimal/server.ts.tmpl +20 -0
  646. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-backend-app/minimal/tsconfig.json.tmpl +22 -0
  647. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-backend-app/package.json.tmpl +30 -0
  648. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-backend-app/tsconfig.json.tmpl +19 -0
  649. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-backend-app/typescript/chunks/README.md +1 -0
  650. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-backend-app/typescript/chunks/app.ts +24 -0
  651. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-backend-app/typescript/chunks/server.ts +20 -0
  652. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-backend-app/vitest.config.ts.tmpl +16 -0
  653. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-backend-app/vitest.perf.config.ts.tmpl +28 -0
  654. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-client-bindings/axios-http.ts.tmpl +28 -0
  655. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-client-bindings/entity.ts.tmpl +13 -0
  656. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-client-bindings/fetch-http.ts.tmpl +33 -0
  657. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-client-bindings/root-index.ts.tmpl +3 -0
  658. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-client-bindings/tanstack-index.ts.tmpl +7 -0
  659. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-client-bindings/tanstack.ts.tmpl +28 -0
  660. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-client-bindings/transport-index.ts.tmpl +4 -0
  661. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-client-bindings-live-tests/http-entity.test.ts.tmpl +29 -0
  662. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-client-bindings-live-tests/tanstack-entity.test.ts.tmpl +29 -0
  663. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-client-bindings-mock-tests/http-entity.test.ts.tmpl +19 -0
  664. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-client-bindings-mock-tests/tanstack-entity.test.ts.tmpl +23 -0
  665. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-datasource-type-validators/index.ts.tmpl +5 -0
  666. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-datasource-type-validators/type.ts.tmpl +12 -0
  667. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-datasource-type-validators-tests/type.test.ts.tmpl +12 -0
  668. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-datasource-types-tests/type.test.ts.tmpl +29 -0
  669. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/Dockerfile.tmpl +9 -0
  670. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/angular/Dockerfile.tmpl +9 -0
  671. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/angular/angular.json.tmpl +34 -0
  672. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/angular/docker-compose-service.yml.tmpl +6 -0
  673. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/angular/gitignore.tmpl +4 -0
  674. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/angular/package.json.tmpl +38 -0
  675. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/angular/src/app/app.config.ts.tmpl +5 -0
  676. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/angular/src/app/app.ts.tmpl +7 -0
  677. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/angular/src/index.html.tmpl +12 -0
  678. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/angular/src/main.ts.tmpl +6 -0
  679. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/angular/src/styles.css.tmpl +1 -0
  680. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/angular/tsconfig.app.json.tmpl +9 -0
  681. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/angular/tsconfig.json.tmpl +22 -0
  682. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/docker-compose-service.yml.tmpl +6 -0
  683. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/gitignore.tmpl +3 -0
  684. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/index.html.tmpl +12 -0
  685. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/next/Dockerfile.tmpl +9 -0
  686. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/next/app/layout.tsx.tmpl +17 -0
  687. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/next/app/page.tsx.tmpl +3 -0
  688. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/next/docker-compose-service.yml.tmpl +6 -0
  689. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/next/gitignore.tmpl +3 -0
  690. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/next/next-env.d.ts.tmpl +2 -0
  691. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/next/next.config.ts.tmpl +5 -0
  692. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/next/package.json.tmpl +33 -0
  693. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/next/tsconfig.json.tmpl +20 -0
  694. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/package.json.tmpl +35 -0
  695. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/src/App.tsx.tmpl +3 -0
  696. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/src/main.tsx.tmpl +9 -0
  697. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/svelte/Dockerfile.tmpl +9 -0
  698. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/svelte/docker-compose-service.yml.tmpl +6 -0
  699. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/svelte/gitignore.tmpl +3 -0
  700. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/svelte/index.html.tmpl +12 -0
  701. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/svelte/package.json.tmpl +32 -0
  702. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/svelte/src/App.svelte.tmpl +1 -0
  703. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/svelte/src/main.ts.tmpl +4 -0
  704. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/svelte/src/vite-env.d.ts.tmpl +2 -0
  705. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/svelte/svelte.config.js.tmpl +5 -0
  706. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/svelte/tsconfig.json.tmpl +15 -0
  707. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/svelte/vite.config.ts.tmpl +10 -0
  708. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/tsconfig.json.tmpl +22 -0
  709. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-app/vite.config.ts.tmpl +10 -0
  710. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-validators/index.ts.tmpl +5 -0
  711. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-validators/schema-inherit.ts.tmpl +5 -0
  712. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-validators/schema-standalone.ts.tmpl +10 -0
  713. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-validators/schema-union.ts.tmpl +4 -0
  714. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-frontend-validators/type.ts.tmpl +11 -0
  715. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-migrate-scripts/setup-typescript.mjs.tmpl +89 -0
  716. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-perf-e2e/app.perf.client.test.ts.tmpl +257 -0
  717. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-perf-server/perf-server.ts.tmpl +19 -0
  718. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-routes/by-field-delete-list.ts.tmpl +13 -0
  719. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-routes/by-field-delete-unique.ts.tmpl +17 -0
  720. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-routes/by-field-get-list.ts.tmpl +9 -0
  721. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-routes/by-field-get-unique.ts.tmpl +17 -0
  722. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-routes/by-field-put-list.ts.tmpl +14 -0
  723. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-routes/by-field-put-unique.ts.tmpl +23 -0
  724. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-routes/crud.ts.tmpl +6 -0
  725. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-routes/custom-stub.ts.tmpl +13 -0
  726. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-routes/index.ts.tmpl +4 -0
  727. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-routes/readonly.ts.tmpl +6 -0
  728. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-routes-e2e/app.integration.test.ts.tmpl +22 -0
  729. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-routes-tests/by-field-delete-list.ts.tmpl +7 -0
  730. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-routes-tests/by-field-delete-unique.ts.tmpl +14 -0
  731. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-routes-tests/by-field-get-list.ts.tmpl +10 -0
  732. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-routes-tests/by-field-get-unique.ts.tmpl +22 -0
  733. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-routes-tests/by-field-put-list.ts.tmpl +7 -0
  734. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-routes-tests/by-field-put-unique.ts.tmpl +17 -0
  735. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-routes-tests/crud.test.ts.tmpl +8 -0
  736. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-routes-tests/mock-factory.ts.tmpl +16 -0
  737. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-routes-tests/readonly.test.ts.tmpl +8 -0
  738. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-service-integration-tests/generic.integration.test.ts.tmpl +109 -0
  739. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-service-tests/generic.test.ts.tmpl +65 -0
  740. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-services/custom-stub.ts.tmpl +30 -0
  741. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-services/generic.ts.tmpl +114 -0
  742. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-services/index.ts.tmpl +3 -0
  743. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-shaped-types/index.ts.tmpl +3 -0
  744. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-shaped-types/type.ts.tmpl +25 -0
  745. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-view-type-validators/index.ts.tmpl +5 -0
  746. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-view-type-validators/schema-inherit.ts.tmpl +5 -0
  747. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-view-type-validators/schema-standalone.ts.tmpl +10 -0
  748. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-view-type-validators/schema-union.ts.tmpl +4 -0
  749. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-view-type-validators/type.ts.tmpl +11 -0
  750. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-view-type-validators-tests/type.test.ts.tmpl +12 -0
  751. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-view-types-tests/field-tests.ts.tmpl +26 -0
  752. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-view-types-tests/type.test.ts.tmpl +26 -0
  753. package/node_modules/@deterministic-code/typescript-generators/dist/templates/create-view-types-tests/value.ts.tmpl +1 -0
  754. package/node_modules/@deterministic-code/typescript-generators/package.json +133 -0
  755. package/node_modules/@deterministic-code/typescript-generators/src/client-binding-transport.ts +26 -0
  756. package/node_modules/@deterministic-code/typescript-generators/src/client-bindings-ir.ts +273 -0
  757. package/node_modules/@deterministic-code/typescript-generators/src/common/default-casing.test.ts +193 -0
  758. package/node_modules/@deterministic-code/typescript-generators/src/common/default-casing.ts +90 -0
  759. package/node_modules/@deterministic-code/typescript-generators/src/common/dictionary-candidate.ts +4 -0
  760. package/node_modules/@deterministic-code/typescript-generators/src/common/fake-test-data.ts +132 -0
  761. package/node_modules/@deterministic-code/typescript-generators/src/common/http-path.ts +12 -0
  762. package/node_modules/@deterministic-code/typescript-generators/src/common/type-converters/native-to-zod.ts +137 -0
  763. package/node_modules/@deterministic-code/typescript-generators/src/common/view-shape.ts +57 -0
  764. package/node_modules/@deterministic-code/typescript-generators/src/common/view-test-shape.ts +354 -0
  765. package/node_modules/@deterministic-code/typescript-generators/src/deterministic-type-converter.ts +134 -0
  766. package/node_modules/@deterministic-code/typescript-generators/src/emit-shaped-types.ts +541 -0
  767. package/node_modules/@deterministic-code/typescript-generators/src/emit.ts +67 -0
  768. package/node_modules/@deterministic-code/typescript-generators/src/frontend-bindings-routes.ts +3 -0
  769. package/node_modules/@deterministic-code/typescript-generators/src/generate-backend-app.ts +116 -0
  770. package/node_modules/@deterministic-code/typescript-generators/src/generate-client-bindings-live-tests.ts +29 -0
  771. package/node_modules/@deterministic-code/typescript-generators/src/generate-client-bindings-mock-tests.ts +29 -0
  772. package/node_modules/@deterministic-code/typescript-generators/src/generate-client-bindings.ts +56 -0
  773. package/node_modules/@deterministic-code/typescript-generators/src/generate-context.ts +1 -0
  774. package/node_modules/@deterministic-code/typescript-generators/src/generate-datasource-type-validators-tests.ts +203 -0
  775. package/node_modules/@deterministic-code/typescript-generators/src/generate-datasource-type-validators.ts +191 -0
  776. package/node_modules/@deterministic-code/typescript-generators/src/generate-datasource-types-tests.ts +97 -0
  777. package/node_modules/@deterministic-code/typescript-generators/src/generate-datasource-types.ts +13 -0
  778. package/node_modules/@deterministic-code/typescript-generators/src/generate-frontend-app.ts +180 -0
  779. package/node_modules/@deterministic-code/typescript-generators/src/generate-frontend-types-tests.ts +17 -0
  780. package/node_modules/@deterministic-code/typescript-generators/src/generate-frontend-types.ts +23 -0
  781. package/node_modules/@deterministic-code/typescript-generators/src/generate-frontend-validators-tests.ts +17 -0
  782. package/node_modules/@deterministic-code/typescript-generators/src/generate-frontend-validators.ts +39 -0
  783. package/node_modules/@deterministic-code/typescript-generators/src/generate-perf-e2e-tests.ts +9 -0
  784. package/node_modules/@deterministic-code/typescript-generators/src/generate-perf-server.ts +32 -0
  785. package/node_modules/@deterministic-code/typescript-generators/src/generate-routes-e2e-test.ts +22 -0
  786. package/node_modules/@deterministic-code/typescript-generators/src/generate-routes-tests.ts +75 -0
  787. package/node_modules/@deterministic-code/typescript-generators/src/generate-routes.ts +196 -0
  788. package/node_modules/@deterministic-code/typescript-generators/src/generate-service-integration-tests.ts +351 -0
  789. package/node_modules/@deterministic-code/typescript-generators/src/generate-service-tests.ts +103 -0
  790. package/node_modules/@deterministic-code/typescript-generators/src/generate-services.ts +287 -0
  791. package/node_modules/@deterministic-code/typescript-generators/src/generate-view-type-validators-tests.ts +233 -0
  792. package/node_modules/@deterministic-code/typescript-generators/src/generate-view-type-validators.ts +391 -0
  793. package/node_modules/@deterministic-code/typescript-generators/src/generate-view-types-tests.ts +124 -0
  794. package/node_modules/@deterministic-code/typescript-generators/src/generate-view-types.ts +8 -0
  795. package/node_modules/@deterministic-code/typescript-generators/src/import-generator.test.ts +432 -0
  796. package/node_modules/@deterministic-code/typescript-generators/src/import-generator.ts +346 -0
  797. package/node_modules/@deterministic-code/typescript-generators/src/inline-inherited.ts +2 -0
  798. package/node_modules/@deterministic-code/typescript-generators/src/resources/backend-app-minimal.ts +21 -0
  799. package/node_modules/@deterministic-code/typescript-generators/src/resources/backend-app.ts +32 -0
  800. package/node_modules/@deterministic-code/typescript-generators/src/resources/client-bindings-live-tests.ts +15 -0
  801. package/node_modules/@deterministic-code/typescript-generators/src/resources/client-bindings-mock-tests.ts +15 -0
  802. package/node_modules/@deterministic-code/typescript-generators/src/resources/client-bindings.ts +25 -0
  803. package/node_modules/@deterministic-code/typescript-generators/src/resources/datasource-type-validators-tests.ts +14 -0
  804. package/node_modules/@deterministic-code/typescript-generators/src/resources/datasource-type-validators.ts +15 -0
  805. package/node_modules/@deterministic-code/typescript-generators/src/resources/datasource-types-tests.ts +11 -0
  806. package/node_modules/@deterministic-code/typescript-generators/src/resources/frontend-app-angular.ts +35 -0
  807. package/node_modules/@deterministic-code/typescript-generators/src/resources/frontend-app-next.ts +29 -0
  808. package/node_modules/@deterministic-code/typescript-generators/src/resources/frontend-app-svelte.ts +33 -0
  809. package/node_modules/@deterministic-code/typescript-generators/src/resources/frontend-app.ts +29 -0
  810. package/node_modules/@deterministic-code/typescript-generators/src/resources/frontend-validators.ts +24 -0
  811. package/node_modules/@deterministic-code/typescript-generators/src/resources/perf-e2e.ts +6 -0
  812. package/node_modules/@deterministic-code/typescript-generators/src/resources/perf-server.ts +15 -0
  813. package/node_modules/@deterministic-code/typescript-generators/src/resources/routes-e2e.ts +9 -0
  814. package/node_modules/@deterministic-code/typescript-generators/src/resources/routes-tests.ts +29 -0
  815. package/node_modules/@deterministic-code/typescript-generators/src/resources/routes.ts +31 -0
  816. package/node_modules/@deterministic-code/typescript-generators/src/resources/service-integration-tests.ts +9 -0
  817. package/node_modules/@deterministic-code/typescript-generators/src/resources/service-tests.ts +9 -0
  818. package/node_modules/@deterministic-code/typescript-generators/src/resources/services.ts +13 -0
  819. package/node_modules/@deterministic-code/typescript-generators/src/resources/shaped-types.ts +12 -0
  820. package/node_modules/@deterministic-code/typescript-generators/src/resources/view-type-validators-tests.ts +14 -0
  821. package/node_modules/@deterministic-code/typescript-generators/src/resources/view-type-validators.ts +24 -0
  822. package/node_modules/@deterministic-code/typescript-generators/src/resources/view-types-tests.ts +13 -0
  823. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-backend-app/Dockerfile.tmpl +19 -0
  824. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-backend-app/app-boot.test.ts.tmpl +9 -0
  825. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-backend-app/docker-compose.yml.tmpl +18 -0
  826. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-backend-app/entrypoint.sh +7 -0
  827. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-backend-app/env.tmpl +1 -0
  828. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-backend-app/gitignore.tmpl +5 -0
  829. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-backend-app/health-check-service.ts.tmpl +11 -0
  830. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-backend-app/health.test.ts.tmpl +27 -0
  831. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-backend-app/minimal/app.ts.tmpl +15 -0
  832. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-backend-app/minimal/health.test.ts.tmpl +23 -0
  833. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-backend-app/minimal/package.json.tmpl +14 -0
  834. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-backend-app/minimal/server.ts.tmpl +20 -0
  835. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-backend-app/minimal/tsconfig.json.tmpl +22 -0
  836. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-backend-app/package.json.tmpl +30 -0
  837. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-backend-app/tsconfig.json.tmpl +19 -0
  838. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-backend-app/typescript/chunks/README.md +1 -0
  839. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-backend-app/typescript/chunks/app.ts +24 -0
  840. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-backend-app/typescript/chunks/server.ts +20 -0
  841. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-backend-app/vitest.config.ts.tmpl +16 -0
  842. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-backend-app/vitest.perf.config.ts.tmpl +28 -0
  843. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-client-bindings/axios-http.ts.tmpl +28 -0
  844. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-client-bindings/entity.ts.tmpl +13 -0
  845. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-client-bindings/fetch-http.ts.tmpl +33 -0
  846. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-client-bindings/root-index.ts.tmpl +3 -0
  847. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-client-bindings/tanstack-index.ts.tmpl +7 -0
  848. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-client-bindings/tanstack.ts.tmpl +28 -0
  849. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-client-bindings/transport-index.ts.tmpl +4 -0
  850. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-client-bindings-live-tests/http-entity.test.ts.tmpl +29 -0
  851. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-client-bindings-live-tests/tanstack-entity.test.ts.tmpl +29 -0
  852. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-client-bindings-mock-tests/http-entity.test.ts.tmpl +19 -0
  853. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-client-bindings-mock-tests/tanstack-entity.test.ts.tmpl +23 -0
  854. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-datasource-type-validators/index.ts.tmpl +5 -0
  855. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-datasource-type-validators/type.ts.tmpl +12 -0
  856. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-datasource-type-validators-tests/type.test.ts.tmpl +12 -0
  857. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-datasource-types-tests/type.test.ts.tmpl +29 -0
  858. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/Dockerfile.tmpl +9 -0
  859. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/angular/Dockerfile.tmpl +9 -0
  860. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/angular/angular.json.tmpl +34 -0
  861. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/angular/docker-compose-service.yml.tmpl +6 -0
  862. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/angular/gitignore.tmpl +4 -0
  863. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/angular/package.json.tmpl +38 -0
  864. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/angular/src/app/app.config.ts.tmpl +5 -0
  865. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/angular/src/app/app.ts.tmpl +7 -0
  866. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/angular/src/index.html.tmpl +12 -0
  867. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/angular/src/main.ts.tmpl +6 -0
  868. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/angular/src/styles.css.tmpl +1 -0
  869. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/angular/tsconfig.app.json.tmpl +9 -0
  870. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/angular/tsconfig.json.tmpl +22 -0
  871. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/docker-compose-service.yml.tmpl +6 -0
  872. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/gitignore.tmpl +3 -0
  873. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/index.html.tmpl +12 -0
  874. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/next/Dockerfile.tmpl +9 -0
  875. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/next/app/layout.tsx.tmpl +17 -0
  876. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/next/app/page.tsx.tmpl +3 -0
  877. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/next/docker-compose-service.yml.tmpl +6 -0
  878. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/next/gitignore.tmpl +3 -0
  879. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/next/next-env.d.ts.tmpl +2 -0
  880. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/next/next.config.ts.tmpl +5 -0
  881. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/next/package.json.tmpl +33 -0
  882. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/next/tsconfig.json.tmpl +20 -0
  883. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/package.json.tmpl +35 -0
  884. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/src/App.tsx.tmpl +3 -0
  885. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/src/main.tsx.tmpl +9 -0
  886. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/svelte/Dockerfile.tmpl +9 -0
  887. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/svelte/docker-compose-service.yml.tmpl +6 -0
  888. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/svelte/gitignore.tmpl +3 -0
  889. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/svelte/index.html.tmpl +12 -0
  890. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/svelte/package.json.tmpl +32 -0
  891. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/svelte/src/App.svelte.tmpl +1 -0
  892. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/svelte/src/main.ts.tmpl +4 -0
  893. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/svelte/src/vite-env.d.ts.tmpl +2 -0
  894. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/svelte/svelte.config.js.tmpl +5 -0
  895. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/svelte/tsconfig.json.tmpl +15 -0
  896. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/svelte/vite.config.ts.tmpl +10 -0
  897. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/tsconfig.json.tmpl +22 -0
  898. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-app/vite.config.ts.tmpl +10 -0
  899. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-validators/index.ts.tmpl +5 -0
  900. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-validators/schema-inherit.ts.tmpl +5 -0
  901. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-validators/schema-standalone.ts.tmpl +10 -0
  902. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-validators/schema-union.ts.tmpl +4 -0
  903. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-frontend-validators/type.ts.tmpl +11 -0
  904. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-migrate-scripts/setup-typescript.mjs.tmpl +89 -0
  905. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-perf-e2e/app.perf.client.test.ts.tmpl +257 -0
  906. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-perf-server/perf-server.ts.tmpl +19 -0
  907. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-routes/by-field-delete-list.ts.tmpl +13 -0
  908. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-routes/by-field-delete-unique.ts.tmpl +17 -0
  909. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-routes/by-field-get-list.ts.tmpl +9 -0
  910. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-routes/by-field-get-unique.ts.tmpl +17 -0
  911. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-routes/by-field-put-list.ts.tmpl +14 -0
  912. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-routes/by-field-put-unique.ts.tmpl +23 -0
  913. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-routes/crud.ts.tmpl +6 -0
  914. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-routes/custom-stub.ts.tmpl +13 -0
  915. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-routes/index.ts.tmpl +4 -0
  916. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-routes/readonly.ts.tmpl +6 -0
  917. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-routes-e2e/app.integration.test.ts.tmpl +22 -0
  918. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-routes-tests/by-field-delete-list.ts.tmpl +7 -0
  919. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-routes-tests/by-field-delete-unique.ts.tmpl +14 -0
  920. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-routes-tests/by-field-get-list.ts.tmpl +10 -0
  921. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-routes-tests/by-field-get-unique.ts.tmpl +22 -0
  922. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-routes-tests/by-field-put-list.ts.tmpl +7 -0
  923. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-routes-tests/by-field-put-unique.ts.tmpl +17 -0
  924. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-routes-tests/crud.test.ts.tmpl +8 -0
  925. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-routes-tests/mock-factory.ts.tmpl +16 -0
  926. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-routes-tests/readonly.test.ts.tmpl +8 -0
  927. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-service-integration-tests/generic.integration.test.ts.tmpl +109 -0
  928. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-service-tests/generic.test.ts.tmpl +65 -0
  929. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-services/custom-stub.ts.tmpl +30 -0
  930. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-services/generic.ts.tmpl +114 -0
  931. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-services/index.ts.tmpl +3 -0
  932. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-shaped-types/index.ts.tmpl +3 -0
  933. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-shaped-types/type.ts.tmpl +25 -0
  934. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-view-type-validators/index.ts.tmpl +5 -0
  935. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-view-type-validators/schema-inherit.ts.tmpl +5 -0
  936. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-view-type-validators/schema-standalone.ts.tmpl +10 -0
  937. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-view-type-validators/schema-union.ts.tmpl +4 -0
  938. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-view-type-validators/type.ts.tmpl +11 -0
  939. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-view-type-validators-tests/type.test.ts.tmpl +12 -0
  940. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-view-types-tests/field-tests.ts.tmpl +26 -0
  941. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-view-types-tests/type.test.ts.tmpl +26 -0
  942. package/node_modules/@deterministic-code/typescript-generators/src/templates/create-view-types-tests/value.ts.tmpl +1 -0
  943. package/node_modules/@deterministic-code/typescript-generators/tsconfig.build.json +10 -0
  944. package/package.json +46 -4
  945. package/README.md +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch-merger-CjtjSB9r.js","sources":["../src/patch.ts","../src/apply-strategy.ts","../src/options.ts","../src/writers/deep-document.ts","../src/writers/deep-json-writer.ts","../src/writers/deep-xml-writer.ts","../src/writers/deep-yaml-writer.ts","../src/writers/line-upsert-writer.ts","../src/writers/section-writer.ts","../src/default-writers.ts","../src/glob.ts","../src/patch-merger.ts"],"sourcesContent":["export type PatchOptions = {\n failIfExists?: boolean;\n jsonTarget?: string;\n sections?: string[];\n appendIfNotExists?: \"None\" | \"End\" | \"Start\";\n};\n\nexport class Patch {\n readonly target: string;\n readonly content: string;\n readonly options?: Readonly<PatchOptions>;\n\n constructor({\n target,\n content,\n options,\n }: {\n target: string;\n content: string;\n options?: PatchOptions;\n }) {\n if (content.length === 0) {\n throw new Error(\n `Patch: content for \"${target}\" must be a non-empty string`,\n );\n }\n this.target = target;\n this.content = content;\n if (options !== undefined) {\n this.options = Object.freeze({ ...options });\n }\n Object.freeze(this);\n }\n}\n","import { mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\n\nexport type IPatchApplyStrategy = {\n apply(target: string, contents: string, rootDir: string): Promise<void>;\n};\n\nexport class IPatchFileSystemApplyStrategy implements IPatchApplyStrategy {\n #dirs = new Map<string, Promise<void>>();\n\n #ensureDir(dir: string): Promise<void> {\n const pending = this.#dirs.get(dir);\n if (pending) return pending;\n const created = mkdir(dir, { recursive: true }).then(\n () => undefined,\n (error: unknown) => {\n this.#dirs.delete(dir);\n throw error;\n },\n );\n this.#dirs.set(dir, created);\n return created;\n }\n\n async apply(\n target: string,\n contents: string,\n rootDir: string,\n ): Promise<void> {\n const path = join(rootDir, target);\n await this.#ensureDir(dirname(path));\n await writeFile(path, contents, \"utf8\");\n }\n}\n","import type { Patch } from \"./patch.ts\";\n\nexport const boolOption = (patch: Patch, fallback = false): boolean => {\n const value = patch.options?.failIfExists;\n if (value === undefined) return fallback;\n if (typeof value !== \"boolean\") {\n throw new Error(\n `Patch.options.failIfExists for \"${patch.target}\" must be a boolean`,\n );\n }\n return value;\n};\n\nexport const stringOption = (patch: Patch, fallback = \"\"): string => {\n const value = patch.options?.jsonTarget;\n if (value === undefined) return fallback;\n if (typeof value !== \"string\") {\n throw new Error(\n `Patch.options.jsonTarget for \"${patch.target}\" must be a string`,\n );\n }\n return value;\n};\n","import { boolOption, stringOption } from \"../options.ts\";\nimport type { Writer } from \"../writer.ts\";\n\nexport type JsonObject = { [key: string]: Json };\nexport type Json = string | number | boolean | null | Json[] | JsonObject;\n\nexport const isObject = (value: Json | undefined): value is JsonObject =>\n value !== null && typeof value === \"object\" && !Array.isArray(value);\n\nexport const parsePath = (jsonTarget: string) =>\n jsonTarget.split(\"/\").filter((segment) => segment.length > 0);\n\nconst asObject = (\n value: Json,\n name: string,\n target: string,\n path: string[],\n): JsonObject => {\n if (isObject(value)) return value;\n throw new Error(\n `${name}: path \"/${path.join(\"/\")}\" in \"${target}\" is not an object`,\n );\n};\n\nconst mergeValue = (\n current: Json | undefined,\n incoming: Json,\n name: string,\n target: string,\n path: string[],\n failIfExists: boolean,\n failOnCollision: boolean,\n): Json => {\n if (current === undefined) return incoming;\n if (isObject(current) && isObject(incoming)) {\n for (const key of Object.keys(incoming)) {\n current[key] = mergeValue(\n current[key],\n incoming[key]!,\n name,\n target,\n [...path, key],\n failIfExists,\n failOnCollision,\n );\n }\n return current;\n }\n if (failIfExists) {\n throw new Error(\n `${name}: value already exists at \"/${path.join(\"/\")}\" in \"${target}\"`,\n );\n }\n if (failOnCollision && JSON.stringify(current) !== JSON.stringify(incoming)) {\n throw new Error(\n `${name}: collision at \"/${path.join(\"/\")}\" in \"${target}\"`,\n );\n }\n return incoming;\n};\n\nexport const assignAtPath = (\n root: JsonObject,\n segs: string[],\n incoming: Json,\n name: string,\n target: string,\n failIfExists: boolean,\n failOnCollision: boolean,\n prefix: string[] = [],\n): JsonObject => {\n const [head, ...rest] = segs;\n if (head === undefined) {\n return asObject(\n mergeValue(\n root,\n incoming,\n name,\n target,\n prefix,\n failIfExists,\n failOnCollision,\n ),\n name,\n target,\n prefix,\n );\n }\n const path = [...prefix, head];\n if (rest.length === 0) {\n root[head] = mergeValue(\n root[head],\n incoming,\n name,\n target,\n path,\n failIfExists,\n failOnCollision,\n );\n return root;\n }\n const child =\n root[head] === undefined\n ? {}\n : asObject(root[head]!, name, target, path);\n root[head] = assignAtPath(\n child,\n rest,\n incoming,\n name,\n target,\n failIfExists,\n failOnCollision,\n path,\n );\n return root;\n};\n\nexport const createDeepWriter = ({\n name,\n parse,\n stringify,\n}: {\n name: string;\n parse: (content: string, target: string) => Json;\n stringify: (root: JsonObject) => string;\n}): Writer => {\n const write: Writer = (patches, { failOnCollision }) => {\n const root = patches.reduce<JsonObject | undefined>((acc, patch) => {\n const failIfExists = boolOption(patch);\n return assignAtPath(\n acc ?? {},\n parsePath(stringOption(patch)),\n parse(patch.content, patch.target),\n name,\n patch.target,\n failIfExists,\n failOnCollision,\n );\n }, undefined);\n return stringify(root ?? {});\n };\n return write;\n};\n","import { createDeepWriter } from \"./deep-document.ts\";\n\nexport const deepJsonWriter = createDeepWriter({\n name: \"DeepJsonWriter\",\n parse: (content, target) => {\n try {\n return JSON.parse(content);\n } catch (error) {\n throw new Error(\n `DeepJsonWriter: invalid JSON for \"${target}\": ${String(error)}`,\n );\n }\n },\n stringify: (root) => `${JSON.stringify(root, null, 2)}\\n`,\n});\n\nexport { deepJsonWriter as DeepJsonWriter };\n","import { XMLBuilder, XMLParser, XMLValidator } from \"fast-xml-parser\";\nimport { createDeepWriter, type JsonObject } from \"./deep-document.ts\";\n\nconst parser = new XMLParser({\n ignoreAttributes: false,\n attributeNamePrefix: \"@_\",\n allowBooleanAttributes: true,\n parseTagValue: true,\n parseAttributeValue: true,\n trimValues: true,\n});\n\nconst builder = new XMLBuilder({\n ignoreAttributes: false,\n attributeNamePrefix: \"@_\",\n format: true,\n indentBy: \" \",\n suppressEmptyNode: true,\n});\n\nexport const deepXmlWriter = createDeepWriter({\n name: \"DeepXmlWriter\",\n parse: (content, target) => {\n const valid = XMLValidator.validate(content);\n if (valid !== true) {\n throw new Error(\n `DeepXmlWriter: invalid XML for \"${target}\": ${valid.err.msg}`,\n );\n }\n return JSON.parse(JSON.stringify(parser.parse(content)));\n },\n stringify: (root: JsonObject) => {\n const xml = String(builder.build(root)).replace(/\\s+$/u, \"\");\n return xml.length === 0 ? \"\\n\" : `${xml}\\n`;\n },\n});\n\nexport { deepXmlWriter as DeepXmlWriter };\n","import { parse, stringify } from \"yaml\";\nimport { createDeepWriter } from \"./deep-document.ts\";\n\nexport const deepYamlWriter = createDeepWriter({\n name: \"DeepYamlWriter\",\n parse: (content, target) => {\n try {\n const parsed = parse(content) ?? {};\n return JSON.parse(JSON.stringify(parsed));\n } catch (error) {\n throw new Error(\n `DeepYamlWriter: invalid YAML for \"${target}\": ${String(error)}`,\n );\n }\n },\n stringify: (root) => {\n const text = stringify(root, { indent: 2 }).replace(/\\s+$/u, \"\");\n return `${text}\\n`;\n },\n});\n\nexport { deepYamlWriter as DeepYamlWriter };\n","import { boolOption } from \"../options.ts\";\nimport type { Writer } from \"../writer.ts\";\n\nconst lineKey = (line: string) => {\n const match = /^([A-Za-z_][A-Za-z0-9_]*)=(.*)$/.exec(line);\n return match ? `env:${match[1]}` : `line:${line}`;\n};\n\nconst patchLines = (content: string) =>\n content\n .replace(/\\r\\n/g, \"\\n\")\n .replace(/\\n$/, \"\")\n .split(\"\\n\")\n .map((line) => line.trimEnd())\n .filter((line) => line.length > 0);\n\nexport const lineUpsertWriter: Writer = (patches, ctx) => {\n const order: string[] = [];\n const values = new Map<string, string>();\n\n for (const patch of patches) {\n const failIfExists = boolOption(patch);\n for (const line of patchLines(patch.content)) {\n const key = lineKey(line);\n const existing = values.get(key);\n if (existing !== undefined) {\n if (failIfExists) {\n throw new Error(\n `LineUpsertWriter: line already exists in \"${patch.target}\" (${key})`,\n );\n }\n if (ctx.failOnCollision && existing !== line) {\n throw new Error(\n `LineUpsertWriter: collision in \"${patch.target}\" (${key})`,\n );\n }\n } else {\n order.push(key);\n }\n values.set(key, line);\n }\n }\n\n return order.length === 0\n ? \"\"\n : `${order.map((key) => values.get(key)).join(\"\\n\")}\\n`;\n};\n\nexport { lineUpsertWriter as LineUpsertWriter };\n","import type { Patch } from \"../patch.ts\";\nimport { boolOption } from \"../options.ts\";\nimport type { Writer } from \"../writer.ts\";\n\nexport type AppendIfNotExists = \"None\" | \"End\" | \"Start\";\n\ntype CommentStyle = { open: string; close: string };\n\nconst START_LINE =\n /^([ \\t]*)(<!--|\\/\\/|\\/\\*|#|--)\\s*(?:[—-]\\s*START|={3}\\s*BEGIN)\\s+(\\S+)(?:\\s.*)?$/;\nconst END_LINE =\n /^([ \\t]*)(<!--|\\/\\/|\\/\\*|#|--)\\s*(?:[—-]\\s*END|={3}\\s*END)\\s+(\\S+)\\s*(?:={3})?\\s*(?:\\*\\/|-->)?\\s*$/;\n\nconst XML_EXT = new Set([\n \"xml\",\n \"csproj\",\n \"fsproj\",\n \"vbproj\",\n \"props\",\n \"targets\",\n \"nuspec\",\n \"html\",\n \"htm\",\n \"vue\",\n \"svelte\",\n \"astro\",\n]);\nconst BLOCK_EXT = new Set([\"css\", \"scss\", \"sass\", \"less\"]);\nconst SLASH_EXT = new Set([\n \"ts\",\n \"tsx\",\n \"mts\",\n \"cts\",\n \"js\",\n \"jsx\",\n \"mjs\",\n \"cjs\",\n \"cs\",\n \"csx\",\n \"fs\",\n \"fsx\",\n \"vb\",\n \"rs\",\n \"go\",\n \"java\",\n \"kt\",\n \"kts\",\n \"scala\",\n \"groovy\",\n \"gradle\",\n \"c\",\n \"cc\",\n \"cpp\",\n \"cxx\",\n \"h\",\n \"hh\",\n \"hpp\",\n \"hxx\",\n \"m\",\n \"mm\",\n \"swift\",\n \"php\",\n]);\nconst HASH_NAMES = new Set([\n \"Dockerfile\",\n \"Makefile\",\n \"makefile\",\n \"GNUmakefile\",\n \"Justfile\",\n \"justfile\",\n \"CMakeLists.txt\",\n]);\n\nconst basenameOf = (target: string): string => {\n const slash = Math.max(target.lastIndexOf(\"/\"), target.lastIndexOf(\"\\\\\"));\n return target.slice(slash + 1);\n};\n\nconst commentStyleFor = (target: string): CommentStyle => {\n const base = basenameOf(target);\n if (HASH_NAMES.has(base) || base.startsWith(\"Dockerfile.\")) {\n return { open: \"#\", close: \"\" };\n }\n const dot = base.lastIndexOf(\".\");\n const ext = dot > 0 ? base.slice(dot + 1).toLowerCase() : \"\";\n if (XML_EXT.has(ext)) return { open: \"<!--\", close: \" -->\" };\n if (BLOCK_EXT.has(ext)) return { open: \"/*\", close: \" */\" };\n if (SLASH_EXT.has(ext)) return { open: \"//\", close: \"\" };\n return { open: \"#\", close: \"\" };\n};\n\nconst splitLines = (content: string): string[] => {\n const trimmed = content.replace(/\\r\\n/g, \"\\n\").replace(/\\n$/, \"\");\n return trimmed.length === 0 ? [] : trimmed.split(\"\\n\");\n};\n\nconst joinLines = (lines: string[]): string =>\n lines.length === 0 ? \"\" : `${lines.join(\"\\n\")}\\n`;\n\nconst marker = (\n style: CommentStyle,\n indent: string,\n kind: \"START\" | \"END\",\n name: string,\n): string => `${indent}${style.open} — ${kind} ${name}${style.close}`;\n\ntype SectionRange = {\n start: number;\n end: number;\n indent: string;\n};\n\nconst findSection = (\n lines: string[],\n name: string,\n lo: number,\n hi: number,\n): SectionRange | null => {\n for (let i = lo; i < hi; i++) {\n const start = START_LINE.exec(lines[i] ?? \"\");\n if (!start || start[3] !== name) continue;\n let nested = 0;\n for (let j = i + 1; j < hi; j++) {\n const open = START_LINE.exec(lines[j] ?? \"\");\n if (open?.[3] === name) {\n nested += 1;\n continue;\n }\n const close = END_LINE.exec(lines[j] ?? \"\");\n if (close?.[3] !== name) continue;\n if (nested > 0) {\n nested -= 1;\n continue;\n }\n return {\n start: i,\n end: j,\n indent: start[1] ?? \"\",\n };\n }\n throw new Error(`SectionWriter: missing END marker for \"${name}\"`);\n }\n return null;\n};\n\nconst countSiblingSections = (\n lines: string[],\n name: string,\n lo: number,\n hi: number,\n): number => {\n let count = 0;\n let i = lo;\n while (i < hi) {\n const start = START_LINE.exec(lines[i] ?? \"\");\n if (!start) {\n i += 1;\n continue;\n }\n const found = findSection(lines, start[3] ?? \"\", i, hi)!;\n if (start[3] === name) count += 1;\n i = found.end + 1;\n }\n return count;\n};\n\nconst sectionBlock = (\n names: string[],\n body: string[],\n style: CommentStyle,\n indent: string,\n): string[] => {\n if (names.length === 0) return body;\n const [head, ...rest] = names;\n const inner = sectionBlock(rest, body, style, indent);\n return [\n marker(style, indent, \"START\", head!),\n ...inner,\n marker(style, indent, \"END\", head!),\n ];\n};\n\nconst replaceRange = (\n lines: string[],\n start: number,\n deleteCount: number,\n insert: string[],\n): string[] => [\n ...lines.slice(0, start),\n ...insert,\n ...lines.slice(start + deleteCount),\n];\n\nconst readSections = (patch: Patch): string[] | undefined => {\n const value = patch.options?.sections;\n if (value === undefined) return undefined;\n if (!Array.isArray(value) || value.length === 0) {\n throw new Error(\n `SectionWriter: options.sections for \"${patch.target}\" must be a non-empty array`,\n );\n }\n if (!value.every((name) => typeof name === \"string\" && name.length > 0)) {\n throw new Error(\n `SectionWriter: options.sections for \"${patch.target}\" must contain non-empty strings`,\n );\n }\n return value;\n};\n\nconst readAppendIfNotExists = (patch: Patch): AppendIfNotExists => {\n const value = patch.options?.appendIfNotExists;\n if (value === undefined) return \"End\";\n if (value === \"None\" || value === \"End\" || value === \"Start\") return value;\n throw new Error(\n `SectionWriter: options.appendIfNotExists for \"${patch.target}\" must be None, End, or Start`,\n );\n};\n\nconst insertMissing = (\n lines: string[],\n parent: SectionRange | null,\n block: string[],\n mode: AppendIfNotExists,\n target: string,\n name: string,\n): string[] => {\n if (mode === \"None\") {\n throw new Error(\n `SectionWriter: section \"${name}\" does not exist in \"${target}\"`,\n );\n }\n if (!parent) {\n return mode === \"Start\" ? [...block, ...lines] : [...lines, ...block];\n }\n if (mode === \"Start\") {\n return replaceRange(lines, parent.start + 1, 0, block);\n }\n return replaceRange(lines, parent.end, 0, block);\n};\n\nexport const sectionWriter: Writer = (patches, ctx) => {\n let lines: string[] = [];\n const written = new Map<string, string>();\n\n for (const patch of patches) {\n const sections = readSections(patch);\n const failIfExists = boolOption(patch);\n\n if (sections === undefined) {\n const previous = written.get(\"\");\n if (previous !== undefined) {\n if (failIfExists) {\n throw new Error(\n `SectionWriter: seed already exists in \"${patch.target}\"`,\n );\n }\n if (ctx.failOnCollision && previous !== patch.content) {\n throw new Error(\n `SectionWriter: collision in \"${patch.target}\" seed`,\n );\n }\n }\n written.clear();\n written.set(\"\", patch.content);\n lines = splitLines(patch.content);\n continue;\n }\n\n const appendIfNotExists = readAppendIfNotExists(patch);\n const pathKey = sections.join(\"/\");\n const previous = written.get(pathKey);\n if (previous !== undefined) {\n if (failIfExists) {\n throw new Error(\n `SectionWriter: section \"${pathKey}\" already exists in \"${patch.target}\"`,\n );\n }\n if (ctx.failOnCollision && previous !== patch.content) {\n throw new Error(\n `SectionWriter: collision in \"${patch.target}\" section \"${pathKey}\"`,\n );\n }\n }\n written.set(pathKey, patch.content);\n\n const style = commentStyleFor(patch.target);\n const body = splitLines(patch.content);\n let lo = 0;\n let hi = lines.length;\n let parent: SectionRange | null = null;\n\n for (let i = 0; i < sections.length; i++) {\n const name = sections[i]!;\n const remaining = sections.slice(i);\n const matches = countSiblingSections(lines, name, lo, hi);\n if (ctx.failOnCollision && matches > 1) {\n throw new Error(\n `SectionWriter: collision: duplicate section \"${name}\" in \"${patch.target}\"`,\n );\n }\n const found = findSection(lines, name, lo, hi);\n const isLeaf = i === sections.length - 1;\n\n if (!found) {\n const indent = parent?.indent ?? \"\";\n const block = sectionBlock(remaining, body, style, indent);\n lines = insertMissing(\n lines,\n parent,\n block,\n appendIfNotExists,\n patch.target,\n remaining.join(\"/\"),\n );\n break;\n }\n\n if (isLeaf) {\n if (failIfExists) {\n throw new Error(\n `SectionWriter: section \"${pathKey}\" already exists in \"${patch.target}\"`,\n );\n }\n lines = replaceRange(\n lines,\n found.start + 1,\n found.end - found.start - 1,\n body,\n );\n break;\n }\n\n parent = found;\n lo = found.start + 1;\n hi = found.end;\n }\n }\n\n return joinLines(lines);\n};\n\nexport { sectionWriter as SectionWriter };\n","import type { Writer } from \"./writer.ts\";\nimport { deepJsonWriter } from \"./writers/deep-json-writer.ts\";\nimport { deepXmlWriter } from \"./writers/deep-xml-writer.ts\";\nimport { deepYamlWriter } from \"./writers/deep-yaml-writer.ts\";\nimport { lineUpsertWriter } from \"./writers/line-upsert-writer.ts\";\nimport { sectionWriter } from \"./writers/section-writer.ts\";\n\nexport type WriterBinding = readonly [glob: string, writer: Writer];\n\nexport const defaultWriters: WriterBinding[] = [\n [\"**/*.{ts,tsx,mts,cts,js,jsx,mjs,cjs}\", sectionWriter],\n [\"**/*.{cs,csx,fs,fsx,vb}\", sectionWriter],\n [\"**/*.rs\", sectionWriter],\n [\"**/*.{go,java,kt,kts,scala,groovy,gradle}\", sectionWriter],\n [\"**/*.{c,cc,cpp,cxx,h,hh,hpp,hxx,m,mm}\", sectionWriter],\n [\"**/*.{swift,php}\", sectionWriter],\n [\"**/*.{py,rb,pl,pm,r,jl}\", sectionWriter],\n [\"**/*.{sh,bash,zsh,ksh,fish}\", sectionWriter],\n [\"**/*.toml\", sectionWriter],\n [\"**/*.{csproj,fsproj,vbproj,props,targets,nuspec}\", sectionWriter],\n [\"**/*.{html,htm,vue,svelte,astro}\", sectionWriter],\n [\"**/*.{css,scss,sass,less}\", sectionWriter],\n [\"**/*.{sql,graphql,gql}\", sectionWriter],\n [\"**/*.{cmake,mk,md}\", sectionWriter],\n [\n \"**/{Dockerfile,Dockerfile.*,Makefile,makefile,GNUmakefile,Justfile,justfile,CMakeLists.txt}\",\n sectionWriter,\n ],\n [\"**/*.json\", deepJsonWriter],\n [\"**/*.jsonc\", deepJsonWriter],\n [\"**/*.json5\", deepJsonWriter],\n [\"**/*.yml\", deepYamlWriter],\n [\"**/*.yaml\", deepYamlWriter],\n [\"**/*.xml\", deepXmlWriter],\n [\"**/.env\", lineUpsertWriter],\n [\"**/.env.*\", lineUpsertWriter],\n [\"**/.gitignore\", lineUpsertWriter],\n [\"**/.dockerignore\", lineUpsertWriter],\n [\"**/.containerignore\", lineUpsertWriter],\n [\"**/.ignore\", lineUpsertWriter],\n [\"**/.npmignore\", lineUpsertWriter],\n [\"**/.eslintignore\", lineUpsertWriter],\n [\"**/.prettierignore\", lineUpsertWriter],\n [\"**/.stylelintignore\", lineUpsertWriter],\n [\"**/.markdownlintignore\", lineUpsertWriter],\n [\"**/.helmignore\", lineUpsertWriter],\n [\"**/.gcloudignore\", lineUpsertWriter],\n [\"**/.fdignore\", lineUpsertWriter],\n [\"**/.rgignore\", lineUpsertWriter],\n [\"**/.cursorignore\", lineUpsertWriter],\n [\"**/.claudeignore\", lineUpsertWriter],\n [\"**/.slugignore\", lineUpsertWriter],\n [\"**/.tfignore\", lineUpsertWriter],\n [\"**/.cvsignore\", lineUpsertWriter],\n [\"**/.bzrignore\", lineUpsertWriter],\n [\"**/.hgignore\", lineUpsertWriter],\n];\n","const expandBraces = (pattern: string): string[] => {\n const match = /\\{([^{}]+)\\}/.exec(pattern);\n if (!match || match.index === undefined) return [pattern];\n const token = match[0];\n const alts = match[1]!;\n return alts.split(\",\").flatMap((alt) =>\n expandBraces(\n `${pattern.slice(0, match.index)}${alt}${pattern.slice(match.index + token.length)}`,\n ),\n );\n};\n\nconst globToRegExp = (glob: string): RegExp => {\n let source = \"\";\n for (let i = 0; i < glob.length; i++) {\n if (glob.startsWith(\"**/\", i)) {\n source += \"(?:.*/)?\";\n i += 2;\n continue;\n }\n if (glob.startsWith(\"**\", i)) {\n source += \".*\";\n i += 1;\n continue;\n }\n const char = glob[i]!;\n if (char === \"*\") {\n source += \"[^/]*\";\n continue;\n }\n if (char === \"?\") {\n source += \"[^/]\";\n continue;\n }\n source += char.replace(/[.*+^${}()|[\\]\\\\]/g, \"\\\\$&\");\n }\n return new RegExp(`^${source}$`);\n};\n\nconst compiledGlobs = new Map<string, RegExp[]>();\n\nexport const compileGlob = (pattern: string): RegExp[] => {\n const key = pattern.replaceAll(\"\\\\\", \"/\");\n const cached = compiledGlobs.get(key);\n if (cached) return cached;\n const regexes = expandBraces(key).map((glob) => globToRegExp(glob));\n compiledGlobs.set(key, regexes);\n return regexes;\n};\n\nexport const matchesGlob = (target: string, pattern: string): boolean => {\n const path = target.replaceAll(\"\\\\\", \"/\");\n return compileGlob(pattern).some((regex) => regex.test(path));\n};\n","import { Patch, type PatchOptions } from \"./patch.ts\";\nimport type { Writer } from \"./writer.ts\";\nimport {\n IPatchFileSystemApplyStrategy,\n type IPatchApplyStrategy,\n} from \"./apply-strategy.ts\";\nimport { defaultWriters, type WriterBinding } from \"./default-writers.ts\";\nimport { compileGlob } from \"./glob.ts\";\n\nexport { Patch, type PatchOptions };\nexport type { Writer, ComposeContext } from \"./writer.ts\";\nexport {\n IPatchFileSystemApplyStrategy,\n type IPatchApplyStrategy,\n} from \"./apply-strategy.ts\";\nexport { defaultWriters, type WriterBinding } from \"./default-writers.ts\";\n\nexport type PatchMergerOptions = {\n failOnCollision?: boolean;\n parallelWriteMode?: boolean;\n writers?: Iterable<WriterBinding>;\n applyStrategy?: IPatchApplyStrategy;\n};\n\nconst WRITE_CONCURRENCY = 32;\n\ntype CompiledBinding = { regexes: RegExp[]; writer: Writer };\n\ntype TargetGroup = { writer: Writer; patches: Patch[] };\n\nconst compileBindings = (\n writers: Iterable<WriterBinding>,\n): CompiledBinding[] =>\n [...writers].map(([glob, writer]) => ({\n regexes: compileGlob(glob),\n writer,\n }));\n\nconst writerFor = (bindings: CompiledBinding[], target: string) => {\n const path = target.replaceAll(\"\\\\\", \"/\");\n for (let i = bindings.length - 1; i >= 0; i--) {\n const binding = bindings[i]!;\n if (binding.regexes.some((regex) => regex.test(path))) return binding.writer;\n }\n return null;\n};\n\nconst runPool = async (\n start: () => Promise<void>,\n inFlight: { count: number },\n waiters: Array<() => void>,\n limit: number,\n): Promise<void> => {\n if (inFlight.count >= limit) {\n await new Promise<void>((resolve) => {\n waiters.push(resolve);\n });\n } else {\n inFlight.count += 1;\n }\n try {\n await start();\n } finally {\n const next = waiters.shift();\n if (next) next();\n else inFlight.count -= 1;\n }\n};\n\nexport class PatchMerger {\n #targets = new Map<string, TargetGroup>();\n #bindings: CompiledBinding[];\n #failOnCollision: boolean;\n #parallelWriteMode: boolean;\n #applyStrategy: IPatchApplyStrategy;\n\n constructor({\n failOnCollision = true,\n parallelWriteMode = true,\n writers = defaultWriters,\n applyStrategy = new IPatchFileSystemApplyStrategy(),\n }: PatchMergerOptions = {}) {\n this.#failOnCollision = failOnCollision;\n this.#parallelWriteMode = parallelWriteMode;\n this.#bindings = compileBindings(writers);\n this.#applyStrategy = applyStrategy;\n }\n\n registerWriter(glob: string, writer: Writer): void {\n this.#bindings.push({ regexes: compileGlob(glob), writer });\n }\n\n add(patch: Patch): void {\n const writer = writerFor(this.#bindings, patch.target);\n if (!writer) {\n throw new Error(\n `PatchMerger.add: no PatchWriter for target '${patch.target}'`,\n );\n }\n const group = this.#targets.get(patch.target);\n if (group) {\n group.writer = writer;\n group.patches.push(patch);\n return;\n }\n this.#targets.set(patch.target, { writer, patches: [patch] });\n }\n\n async apply(\n rootDir: string,\n strategy: IPatchApplyStrategy = this.#applyStrategy,\n ): Promise<string[]> {\n const ctx = { failOnCollision: this.#failOnCollision };\n const written: string[] = [];\n\n if (!this.#parallelWriteMode) {\n for (const [target, group] of this.#targets) {\n const contents = group.writer(group.patches, ctx);\n if (contents === null) continue;\n await strategy.apply(target, contents, rootDir);\n written.push(target);\n }\n return written;\n }\n\n const pending: Promise<void>[] = [];\n const inFlight = { count: 0 };\n const waiters: Array<() => void> = [];\n\n for (const [target, group] of this.#targets) {\n const contents = group.writer(group.patches, ctx);\n if (contents === null) continue;\n written.push(target);\n pending.push(\n runPool(\n () => strategy.apply(target, contents, rootDir),\n inFlight,\n waiters,\n WRITE_CONCURRENCY,\n ),\n );\n }\n await Promise.all(pending);\n return written;\n }\n}\n"],"names":["Patch","target","content","options","__publicField","IPatchFileSystemApplyStrategy","__privateAdd","_IPatchFileSystemApplyStrategy_instances","_dirs","contents","rootDir","path","join","__privateMethod","ensureDir_fn","dirname","writeFile","dir","pending","__privateGet","created","mkdir","error","boolOption","patch","fallback","value","_a","stringOption","isObject","parsePath","jsonTarget","segment","asObject","name","mergeValue","current","incoming","failIfExists","failOnCollision","key","assignAtPath","root","segs","prefix","head","rest","child","createDeepWriter","parse","stringify","patches","acc","deepJsonWriter","parser","XMLParser","builder","XMLBuilder","deepXmlWriter","valid","XMLValidator","xml","deepYamlWriter","parsed","lineKey","line","match","patchLines","lineUpsertWriter","ctx","order","values","existing","START_LINE","END_LINE","XML_EXT","BLOCK_EXT","SLASH_EXT","HASH_NAMES","basenameOf","slash","commentStyleFor","base","dot","ext","splitLines","trimmed","joinLines","lines","marker","style","indent","kind","findSection","lo","hi","i","start","nested","j","open","close","countSiblingSections","count","found","sectionBlock","names","body","inner","replaceRange","deleteCount","insert","readSections","readAppendIfNotExists","insertMissing","parent","block","mode","sectionWriter","written","sections","previous","appendIfNotExists","pathKey","remaining","matches","isLeaf","defaultWriters","expandBraces","pattern","token","alt","globToRegExp","glob","source","char","compiledGlobs","compileGlob","cached","regexes","WRITE_CONCURRENCY","compileBindings","writers","writer","writerFor","bindings","binding","regex","runPool","inFlight","waiters","limit","resolve","next","PatchMerger","parallelWriteMode","applyStrategy","_targets","_bindings","_failOnCollision","_parallelWriteMode","_applyStrategy","__privateSet","group","strategy"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ "use strict";var ft=Object.defineProperty;var B=e=>{throw TypeError(e)};var ut=(e,t,r)=>t in e?ft(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var b=(e,t,r)=>ut(e,typeof t!="symbol"?t+"":t,r),P=(e,t,r)=>t.has(e)||B("Cannot "+r);var p=(e,t,r)=>(P(e,t,"read from private field"),r?r.call(e):t.get(e)),d=(e,t,r)=>t.has(e)?B("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),E=(e,t,r,n)=>(P(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r),q=(e,t,r)=>(P(e,t,"access private method"),r);const U=require("node:fs/promises"),z=require("node:path"),X=require("fast-xml-parser"),Y=require("yaml");class pt{constructor({target:t,content:r,options:n}){b(this,"target");b(this,"content");b(this,"options");if(r.length===0)throw new Error(`Patch: content for "${t}" must be a non-empty string`);this.target=t,this.content=r,n!==void 0&&(this.options=Object.freeze({...n})),Object.freeze(this)}}var $,k,Z;class K{constructor(){d(this,k);d(this,$,new Map)}async apply(t,r,n){const s=z.join(n,t);await q(this,k,Z).call(this,z.dirname(s)),await U.writeFile(s,r,"utf8")}}$=new WeakMap,k=new WeakSet,Z=function(t){const r=p(this,$).get(t);if(r)return r;const n=U.mkdir(t,{recursive:!0}).then(()=>{},s=>{throw p(this,$).delete(t),s});return p(this,$).set(t,n),n};const _=(e,t=!1)=>{var n;const r=(n=e.options)==null?void 0:n.failIfExists;if(r===void 0)return t;if(typeof r!="boolean")throw new Error(`Patch.options.failIfExists for "${e.target}" must be a boolean`);return r},ht=(e,t="")=>{var n;const r=(n=e.options)==null?void 0:n.jsonTarget;if(r===void 0)return t;if(typeof r!="string")throw new Error(`Patch.options.jsonTarget for "${e.target}" must be a string`);return r},L=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),gt=e=>e.split("/").filter(t=>t.length>0),G=(e,t,r,n)=>{if(L(e))return e;throw new Error(`${t}: path "/${n.join("/")}" in "${r}" is not an object`)},D=(e,t,r,n,s,o,c)=>{if(e===void 0)return t;if(L(e)&&L(t)){for(const a of Object.keys(t))e[a]=D(e[a],t[a],r,n,[...s,a],o,c);return e}if(o)throw new Error(`${r}: value already exists at "/${s.join("/")}" in "${n}"`);if(c&&JSON.stringify(e)!==JSON.stringify(t))throw new Error(`${r}: collision at "/${s.join("/")}" in "${n}"`);return t},Q=(e,t,r,n,s,o,c,a=[])=>{const[i,...f]=t;if(i===void 0)return G(D(e,r,n,s,a,o,c),n,s,a);const h=[...a,i];if(f.length===0)return e[i]=D(e[i],r,n,s,h,o,c),e;const W=e[i]===void 0?{}:G(e[i],n,s,h);return e[i]=Q(W,f,r,n,s,o,c,h),e},C=({name:e,parse:t,stringify:r})=>(s,{failOnCollision:o})=>{const c=s.reduce((a,i)=>{const f=_(i);return Q(a??{},gt(ht(i)),t(i.content,i.target),e,i.target,f,o)},void 0);return r(c??{})},N=C({name:"DeepJsonWriter",parse:(e,t)=>{try{return JSON.parse(e)}catch(r){throw new Error(`DeepJsonWriter: invalid JSON for "${t}": ${String(r)}`)}},stringify:e=>`${JSON.stringify(e,null,2)}
2
+ `}),dt=new X.XMLParser({ignoreAttributes:!1,attributeNamePrefix:"@_",allowBooleanAttributes:!0,parseTagValue:!0,parseAttributeValue:!0,trimValues:!0}),wt=new X.XMLBuilder({ignoreAttributes:!1,attributeNamePrefix:"@_",format:!0,indentBy:" ",suppressEmptyNode:!0}),tt=C({name:"DeepXmlWriter",parse:(e,t)=>{const r=X.XMLValidator.validate(e);if(r!==!0)throw new Error(`DeepXmlWriter: invalid XML for "${t}": ${r.err.msg}`);return JSON.parse(JSON.stringify(dt.parse(e)))},stringify:e=>{const t=String(wt.build(e)).replace(/\s+$/u,"");return t.length===0?`
3
+ `:`${t}
4
+ `}}),I=C({name:"DeepYamlWriter",parse:(e,t)=>{try{const r=Y.parse(e)??{};return JSON.parse(JSON.stringify(r))}catch(r){throw new Error(`DeepYamlWriter: invalid YAML for "${t}": ${String(r)}`)}},stringify:e=>`${Y.stringify(e,{indent:2}).replace(/\s+$/u,"")}
5
+ `}),mt=e=>{const t=/^([A-Za-z_][A-Za-z0-9_]*)=(.*)$/.exec(e);return t?`env:${t[1]}`:`line:${e}`},$t=e=>e.replace(/\r\n/g,`
6
+ `).replace(/\n$/,"").split(`
7
+ `).map(t=>t.trimEnd()).filter(t=>t.length>0),l=(e,t)=>{const r=[],n=new Map;for(const s of e){const o=_(s);for(const c of $t(s.content)){const a=mt(c),i=n.get(a);if(i!==void 0){if(o)throw new Error(`LineUpsertWriter: line already exists in "${s.target}" (${a})`);if(t.failOnCollision&&i!==c)throw new Error(`LineUpsertWriter: collision in "${s.target}" (${a})`)}else r.push(a);n.set(a,c)}}return r.length===0?"":`${r.map(s=>n.get(s)).join(`
8
+ `)}
9
+ `},J=/^([ \t]*)(<!--|\/\/|\/\*|#|--)\s*(?:[—-]\s*START|={3}\s*BEGIN)\s+(\S+)(?:\s.*)?$/,yt=/^([ \t]*)(<!--|\/\/|\/\*|#|--)\s*(?:[—-]\s*END|={3}\s*END)\s+(\S+)\s*(?:={3})?\s*(?:\*\/|-->)?\s*$/,xt=new Set(["xml","csproj","fsproj","vbproj","props","targets","nuspec","html","htm","vue","svelte","astro"]),Et=new Set(["css","scss","sass","less"]),St=new Set(["ts","tsx","mts","cts","js","jsx","mjs","cjs","cs","csx","fs","fsx","vb","rs","go","java","kt","kts","scala","groovy","gradle","c","cc","cpp","cxx","h","hh","hpp","hxx","m","mm","swift","php"]),vt=new Set(["Dockerfile","Makefile","makefile","GNUmakefile","Justfile","justfile","CMakeLists.txt"]),jt=e=>{const t=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\"));return e.slice(t+1)},Wt=e=>{const t=jt(e);if(vt.has(t)||t.startsWith("Dockerfile."))return{open:"#",close:""};const r=t.lastIndexOf("."),n=r>0?t.slice(r+1).toLowerCase():"";return xt.has(n)?{open:"<!--",close:" -->"}:Et.has(n)?{open:"/*",close:" */"}:St.has(n)?{open:"//",close:""}:{open:"#",close:""}},V=e=>{const t=e.replace(/\r\n/g,`
10
+ `).replace(/\n$/,"");return t.length===0?[]:t.split(`
11
+ `)},bt=e=>e.length===0?"":`${e.join(`
12
+ `)}
13
+ `,F=(e,t,r,n)=>`${t}${e.open} — ${r} ${n}${e.close}`,et=(e,t,r,n)=>{for(let s=r;s<n;s++){const o=J.exec(e[s]??"");if(!o||o[3]!==t)continue;let c=0;for(let a=s+1;a<n;a++){const i=J.exec(e[a]??"");if((i==null?void 0:i[3])===t){c+=1;continue}const f=yt.exec(e[a]??"");if((f==null?void 0:f[3])===t){if(c>0){c-=1;continue}return{start:s,end:a,indent:o[1]??""}}}throw new Error(`SectionWriter: missing END marker for "${t}"`)}return null},Nt=(e,t,r,n)=>{let s=0,o=r;for(;o<n;){const c=J.exec(e[o]??"");if(!c){o+=1;continue}const a=et(e,c[3]??"",o,n);c[3]===t&&(s+=1),o=a.end+1}return s},rt=(e,t,r,n)=>{if(e.length===0)return t;const[s,...o]=e,c=rt(o,t,r,n);return[F(r,n,"START",s),...c,F(r,n,"END",s)]},T=(e,t,r,n)=>[...e.slice(0,t),...n,...e.slice(t+r)],kt=e=>{var r;const t=(r=e.options)==null?void 0:r.sections;if(t!==void 0){if(!Array.isArray(t)||t.length===0)throw new Error(`SectionWriter: options.sections for "${e.target}" must be a non-empty array`);if(!t.every(n=>typeof n=="string"&&n.length>0))throw new Error(`SectionWriter: options.sections for "${e.target}" must contain non-empty strings`);return t}},Ot=e=>{var r;const t=(r=e.options)==null?void 0:r.appendIfNotExists;if(t===void 0)return"End";if(t==="None"||t==="End"||t==="Start")return t;throw new Error(`SectionWriter: options.appendIfNotExists for "${e.target}" must be None, End, or Start`)},At=(e,t,r,n,s,o)=>{if(n==="None")throw new Error(`SectionWriter: section "${o}" does not exist in "${s}"`);return t?n==="Start"?T(e,t.start+1,0,r):T(e,t.end,0,r):n==="Start"?[...r,...e]:[...e,...r]},u=(e,t)=>{let r=[];const n=new Map;for(const s of e){const o=kt(s),c=_(s);if(o===void 0){const g=n.get("");if(g!==void 0){if(c)throw new Error(`SectionWriter: seed already exists in "${s.target}"`);if(t.failOnCollision&&g!==s.content)throw new Error(`SectionWriter: collision in "${s.target}" seed`)}n.clear(),n.set("",s.content),r=V(s.content);continue}const a=Ot(s),i=o.join("/"),f=n.get(i);if(f!==void 0){if(c)throw new Error(`SectionWriter: section "${i}" already exists in "${s.target}"`);if(t.failOnCollision&&f!==s.content)throw new Error(`SectionWriter: collision in "${s.target}" section "${i}"`)}n.set(i,s.content);const h=Wt(s.target),W=V(s.content);let O=0,A=r.length,x=null;for(let g=0;g<o.length;g++){const M=o[g],R=o.slice(g),it=Nt(r,M,O,A);if(t.failOnCollision&&it>1)throw new Error(`SectionWriter: collision: duplicate section "${M}" in "${s.target}"`);const w=et(r,M,O,A),ct=g===o.length-1;if(!w){const at=(x==null?void 0:x.indent)??"",lt=rt(R,W,h,at);r=At(r,x,lt,a,s.target,R.join("/"));break}if(ct){if(c)throw new Error(`SectionWriter: section "${i}" already exists in "${s.target}"`);r=T(r,w.start+1,w.end-w.start-1,W);break}x=w,O=w.start+1,A=w.end}}return bt(r)},nt=[["**/*.{ts,tsx,mts,cts,js,jsx,mjs,cjs}",u],["**/*.{cs,csx,fs,fsx,vb}",u],["**/*.rs",u],["**/*.{go,java,kt,kts,scala,groovy,gradle}",u],["**/*.{c,cc,cpp,cxx,h,hh,hpp,hxx,m,mm}",u],["**/*.{swift,php}",u],["**/*.{py,rb,pl,pm,r,jl}",u],["**/*.{sh,bash,zsh,ksh,fish}",u],["**/*.toml",u],["**/*.{csproj,fsproj,vbproj,props,targets,nuspec}",u],["**/*.{html,htm,vue,svelte,astro}",u],["**/*.{css,scss,sass,less}",u],["**/*.{sql,graphql,gql}",u],["**/*.{cmake,mk,md}",u],["**/{Dockerfile,Dockerfile.*,Makefile,makefile,GNUmakefile,Justfile,justfile,CMakeLists.txt}",u],["**/*.json",N],["**/*.jsonc",N],["**/*.json5",N],["**/*.yml",I],["**/*.yaml",I],["**/*.xml",tt],["**/.env",l],["**/.env.*",l],["**/.gitignore",l],["**/.dockerignore",l],["**/.containerignore",l],["**/.ignore",l],["**/.npmignore",l],["**/.eslintignore",l],["**/.prettierignore",l],["**/.stylelintignore",l],["**/.markdownlintignore",l],["**/.helmignore",l],["**/.gcloudignore",l],["**/.fdignore",l],["**/.rgignore",l],["**/.cursorignore",l],["**/.claudeignore",l],["**/.slugignore",l],["**/.tfignore",l],["**/.cvsignore",l],["**/.bzrignore",l],["**/.hgignore",l]],st=e=>{const t=/\{([^{}]+)\}/.exec(e);if(!t||t.index===void 0)return[e];const r=t[0];return t[1].split(",").flatMap(s=>st(`${e.slice(0,t.index)}${s}${e.slice(t.index+r.length)}`))},Mt=e=>{let t="";for(let r=0;r<e.length;r++){if(e.startsWith("**/",r)){t+="(?:.*/)?",r+=2;continue}if(e.startsWith("**",r)){t+=".*",r+=1;continue}const n=e[r];if(n==="*"){t+="[^/]*";continue}if(n==="?"){t+="[^/]";continue}t+=n.replace(/[.*+^${}()|[\]\\]/g,"\\$&")}return new RegExp(`^${t}$`)},H=new Map,ot=e=>{const t=e.replaceAll("\\","/"),r=H.get(t);if(r)return r;const n=st(t).map(s=>Mt(s));return H.set(t,n),n},Pt=32,Lt=e=>[...e].map(([t,r])=>({regexes:ot(t),writer:r})),Dt=(e,t)=>{const r=t.replaceAll("\\","/");for(let n=e.length-1;n>=0;n--){const s=e[n];if(s.regexes.some(o=>o.test(r)))return s.writer}return null},It=async(e,t,r,n)=>{t.count>=n?await new Promise(s=>{r.push(s)}):t.count+=1;try{await e()}finally{const s=r.shift();s?s():t.count-=1}};var m,y,S,v,j;class Jt{constructor({failOnCollision:t=!0,parallelWriteMode:r=!0,writers:n=nt,applyStrategy:s=new K}={}){d(this,m,new Map);d(this,y);d(this,S);d(this,v);d(this,j);E(this,S,t),E(this,v,r),E(this,y,Lt(n)),E(this,j,s)}registerWriter(t,r){p(this,y).push({regexes:ot(t),writer:r})}add(t){const r=Dt(p(this,y),t.target);if(!r)throw new Error(`PatchMerger.add: no PatchWriter for target '${t.target}'`);const n=p(this,m).get(t.target);if(n){n.writer=r,n.patches.push(t);return}p(this,m).set(t.target,{writer:r,patches:[t]})}async apply(t,r=p(this,j)){const n={failOnCollision:p(this,S)},s=[];if(!p(this,v)){for(const[i,f]of p(this,m)){const h=f.writer(f.patches,n);h!==null&&(await r.apply(i,h,t),s.push(i))}return s}const o=[],c={count:0},a=[];for(const[i,f]of p(this,m)){const h=f.writer(f.patches,n);h!==null&&(s.push(i),o.push(It(()=>r.apply(i,h,t),c,a,Pt)))}return await Promise.all(o),s}}m=new WeakMap,y=new WeakMap,S=new WeakMap,v=new WeakMap,j=new WeakMap;exports.IPatchFileSystemApplyStrategy=K;exports.Patch=pt;exports.PatchMerger=Jt;exports.deepJsonWriter=N;exports.deepXmlWriter=tt;exports.deepYamlWriter=I;exports.defaultWriters=nt;exports.lineUpsertWriter=l;exports.sectionWriter=u;
14
+ //# sourceMappingURL=patch-merger-CvVbM8X5.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch-merger-CvVbM8X5.cjs","sources":["../src/patch.ts","../src/apply-strategy.ts","../src/options.ts","../src/writers/deep-document.ts","../src/writers/deep-json-writer.ts","../src/writers/deep-xml-writer.ts","../src/writers/deep-yaml-writer.ts","../src/writers/line-upsert-writer.ts","../src/writers/section-writer.ts","../src/default-writers.ts","../src/glob.ts","../src/patch-merger.ts"],"sourcesContent":["export type PatchOptions = {\n failIfExists?: boolean;\n jsonTarget?: string;\n sections?: string[];\n appendIfNotExists?: \"None\" | \"End\" | \"Start\";\n};\n\nexport class Patch {\n readonly target: string;\n readonly content: string;\n readonly options?: Readonly<PatchOptions>;\n\n constructor({\n target,\n content,\n options,\n }: {\n target: string;\n content: string;\n options?: PatchOptions;\n }) {\n if (content.length === 0) {\n throw new Error(\n `Patch: content for \"${target}\" must be a non-empty string`,\n );\n }\n this.target = target;\n this.content = content;\n if (options !== undefined) {\n this.options = Object.freeze({ ...options });\n }\n Object.freeze(this);\n }\n}\n","import { mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\n\nexport type IPatchApplyStrategy = {\n apply(target: string, contents: string, rootDir: string): Promise<void>;\n};\n\nexport class IPatchFileSystemApplyStrategy implements IPatchApplyStrategy {\n #dirs = new Map<string, Promise<void>>();\n\n #ensureDir(dir: string): Promise<void> {\n const pending = this.#dirs.get(dir);\n if (pending) return pending;\n const created = mkdir(dir, { recursive: true }).then(\n () => undefined,\n (error: unknown) => {\n this.#dirs.delete(dir);\n throw error;\n },\n );\n this.#dirs.set(dir, created);\n return created;\n }\n\n async apply(\n target: string,\n contents: string,\n rootDir: string,\n ): Promise<void> {\n const path = join(rootDir, target);\n await this.#ensureDir(dirname(path));\n await writeFile(path, contents, \"utf8\");\n }\n}\n","import type { Patch } from \"./patch.ts\";\n\nexport const boolOption = (patch: Patch, fallback = false): boolean => {\n const value = patch.options?.failIfExists;\n if (value === undefined) return fallback;\n if (typeof value !== \"boolean\") {\n throw new Error(\n `Patch.options.failIfExists for \"${patch.target}\" must be a boolean`,\n );\n }\n return value;\n};\n\nexport const stringOption = (patch: Patch, fallback = \"\"): string => {\n const value = patch.options?.jsonTarget;\n if (value === undefined) return fallback;\n if (typeof value !== \"string\") {\n throw new Error(\n `Patch.options.jsonTarget for \"${patch.target}\" must be a string`,\n );\n }\n return value;\n};\n","import { boolOption, stringOption } from \"../options.ts\";\nimport type { Writer } from \"../writer.ts\";\n\nexport type JsonObject = { [key: string]: Json };\nexport type Json = string | number | boolean | null | Json[] | JsonObject;\n\nexport const isObject = (value: Json | undefined): value is JsonObject =>\n value !== null && typeof value === \"object\" && !Array.isArray(value);\n\nexport const parsePath = (jsonTarget: string) =>\n jsonTarget.split(\"/\").filter((segment) => segment.length > 0);\n\nconst asObject = (\n value: Json,\n name: string,\n target: string,\n path: string[],\n): JsonObject => {\n if (isObject(value)) return value;\n throw new Error(\n `${name}: path \"/${path.join(\"/\")}\" in \"${target}\" is not an object`,\n );\n};\n\nconst mergeValue = (\n current: Json | undefined,\n incoming: Json,\n name: string,\n target: string,\n path: string[],\n failIfExists: boolean,\n failOnCollision: boolean,\n): Json => {\n if (current === undefined) return incoming;\n if (isObject(current) && isObject(incoming)) {\n for (const key of Object.keys(incoming)) {\n current[key] = mergeValue(\n current[key],\n incoming[key]!,\n name,\n target,\n [...path, key],\n failIfExists,\n failOnCollision,\n );\n }\n return current;\n }\n if (failIfExists) {\n throw new Error(\n `${name}: value already exists at \"/${path.join(\"/\")}\" in \"${target}\"`,\n );\n }\n if (failOnCollision && JSON.stringify(current) !== JSON.stringify(incoming)) {\n throw new Error(\n `${name}: collision at \"/${path.join(\"/\")}\" in \"${target}\"`,\n );\n }\n return incoming;\n};\n\nexport const assignAtPath = (\n root: JsonObject,\n segs: string[],\n incoming: Json,\n name: string,\n target: string,\n failIfExists: boolean,\n failOnCollision: boolean,\n prefix: string[] = [],\n): JsonObject => {\n const [head, ...rest] = segs;\n if (head === undefined) {\n return asObject(\n mergeValue(\n root,\n incoming,\n name,\n target,\n prefix,\n failIfExists,\n failOnCollision,\n ),\n name,\n target,\n prefix,\n );\n }\n const path = [...prefix, head];\n if (rest.length === 0) {\n root[head] = mergeValue(\n root[head],\n incoming,\n name,\n target,\n path,\n failIfExists,\n failOnCollision,\n );\n return root;\n }\n const child =\n root[head] === undefined\n ? {}\n : asObject(root[head]!, name, target, path);\n root[head] = assignAtPath(\n child,\n rest,\n incoming,\n name,\n target,\n failIfExists,\n failOnCollision,\n path,\n );\n return root;\n};\n\nexport const createDeepWriter = ({\n name,\n parse,\n stringify,\n}: {\n name: string;\n parse: (content: string, target: string) => Json;\n stringify: (root: JsonObject) => string;\n}): Writer => {\n const write: Writer = (patches, { failOnCollision }) => {\n const root = patches.reduce<JsonObject | undefined>((acc, patch) => {\n const failIfExists = boolOption(patch);\n return assignAtPath(\n acc ?? {},\n parsePath(stringOption(patch)),\n parse(patch.content, patch.target),\n name,\n patch.target,\n failIfExists,\n failOnCollision,\n );\n }, undefined);\n return stringify(root ?? {});\n };\n return write;\n};\n","import { createDeepWriter } from \"./deep-document.ts\";\n\nexport const deepJsonWriter = createDeepWriter({\n name: \"DeepJsonWriter\",\n parse: (content, target) => {\n try {\n return JSON.parse(content);\n } catch (error) {\n throw new Error(\n `DeepJsonWriter: invalid JSON for \"${target}\": ${String(error)}`,\n );\n }\n },\n stringify: (root) => `${JSON.stringify(root, null, 2)}\\n`,\n});\n\nexport { deepJsonWriter as DeepJsonWriter };\n","import { XMLBuilder, XMLParser, XMLValidator } from \"fast-xml-parser\";\nimport { createDeepWriter, type JsonObject } from \"./deep-document.ts\";\n\nconst parser = new XMLParser({\n ignoreAttributes: false,\n attributeNamePrefix: \"@_\",\n allowBooleanAttributes: true,\n parseTagValue: true,\n parseAttributeValue: true,\n trimValues: true,\n});\n\nconst builder = new XMLBuilder({\n ignoreAttributes: false,\n attributeNamePrefix: \"@_\",\n format: true,\n indentBy: \" \",\n suppressEmptyNode: true,\n});\n\nexport const deepXmlWriter = createDeepWriter({\n name: \"DeepXmlWriter\",\n parse: (content, target) => {\n const valid = XMLValidator.validate(content);\n if (valid !== true) {\n throw new Error(\n `DeepXmlWriter: invalid XML for \"${target}\": ${valid.err.msg}`,\n );\n }\n return JSON.parse(JSON.stringify(parser.parse(content)));\n },\n stringify: (root: JsonObject) => {\n const xml = String(builder.build(root)).replace(/\\s+$/u, \"\");\n return xml.length === 0 ? \"\\n\" : `${xml}\\n`;\n },\n});\n\nexport { deepXmlWriter as DeepXmlWriter };\n","import { parse, stringify } from \"yaml\";\nimport { createDeepWriter } from \"./deep-document.ts\";\n\nexport const deepYamlWriter = createDeepWriter({\n name: \"DeepYamlWriter\",\n parse: (content, target) => {\n try {\n const parsed = parse(content) ?? {};\n return JSON.parse(JSON.stringify(parsed));\n } catch (error) {\n throw new Error(\n `DeepYamlWriter: invalid YAML for \"${target}\": ${String(error)}`,\n );\n }\n },\n stringify: (root) => {\n const text = stringify(root, { indent: 2 }).replace(/\\s+$/u, \"\");\n return `${text}\\n`;\n },\n});\n\nexport { deepYamlWriter as DeepYamlWriter };\n","import { boolOption } from \"../options.ts\";\nimport type { Writer } from \"../writer.ts\";\n\nconst lineKey = (line: string) => {\n const match = /^([A-Za-z_][A-Za-z0-9_]*)=(.*)$/.exec(line);\n return match ? `env:${match[1]}` : `line:${line}`;\n};\n\nconst patchLines = (content: string) =>\n content\n .replace(/\\r\\n/g, \"\\n\")\n .replace(/\\n$/, \"\")\n .split(\"\\n\")\n .map((line) => line.trimEnd())\n .filter((line) => line.length > 0);\n\nexport const lineUpsertWriter: Writer = (patches, ctx) => {\n const order: string[] = [];\n const values = new Map<string, string>();\n\n for (const patch of patches) {\n const failIfExists = boolOption(patch);\n for (const line of patchLines(patch.content)) {\n const key = lineKey(line);\n const existing = values.get(key);\n if (existing !== undefined) {\n if (failIfExists) {\n throw new Error(\n `LineUpsertWriter: line already exists in \"${patch.target}\" (${key})`,\n );\n }\n if (ctx.failOnCollision && existing !== line) {\n throw new Error(\n `LineUpsertWriter: collision in \"${patch.target}\" (${key})`,\n );\n }\n } else {\n order.push(key);\n }\n values.set(key, line);\n }\n }\n\n return order.length === 0\n ? \"\"\n : `${order.map((key) => values.get(key)).join(\"\\n\")}\\n`;\n};\n\nexport { lineUpsertWriter as LineUpsertWriter };\n","import type { Patch } from \"../patch.ts\";\nimport { boolOption } from \"../options.ts\";\nimport type { Writer } from \"../writer.ts\";\n\nexport type AppendIfNotExists = \"None\" | \"End\" | \"Start\";\n\ntype CommentStyle = { open: string; close: string };\n\nconst START_LINE =\n /^([ \\t]*)(<!--|\\/\\/|\\/\\*|#|--)\\s*(?:[—-]\\s*START|={3}\\s*BEGIN)\\s+(\\S+)(?:\\s.*)?$/;\nconst END_LINE =\n /^([ \\t]*)(<!--|\\/\\/|\\/\\*|#|--)\\s*(?:[—-]\\s*END|={3}\\s*END)\\s+(\\S+)\\s*(?:={3})?\\s*(?:\\*\\/|-->)?\\s*$/;\n\nconst XML_EXT = new Set([\n \"xml\",\n \"csproj\",\n \"fsproj\",\n \"vbproj\",\n \"props\",\n \"targets\",\n \"nuspec\",\n \"html\",\n \"htm\",\n \"vue\",\n \"svelte\",\n \"astro\",\n]);\nconst BLOCK_EXT = new Set([\"css\", \"scss\", \"sass\", \"less\"]);\nconst SLASH_EXT = new Set([\n \"ts\",\n \"tsx\",\n \"mts\",\n \"cts\",\n \"js\",\n \"jsx\",\n \"mjs\",\n \"cjs\",\n \"cs\",\n \"csx\",\n \"fs\",\n \"fsx\",\n \"vb\",\n \"rs\",\n \"go\",\n \"java\",\n \"kt\",\n \"kts\",\n \"scala\",\n \"groovy\",\n \"gradle\",\n \"c\",\n \"cc\",\n \"cpp\",\n \"cxx\",\n \"h\",\n \"hh\",\n \"hpp\",\n \"hxx\",\n \"m\",\n \"mm\",\n \"swift\",\n \"php\",\n]);\nconst HASH_NAMES = new Set([\n \"Dockerfile\",\n \"Makefile\",\n \"makefile\",\n \"GNUmakefile\",\n \"Justfile\",\n \"justfile\",\n \"CMakeLists.txt\",\n]);\n\nconst basenameOf = (target: string): string => {\n const slash = Math.max(target.lastIndexOf(\"/\"), target.lastIndexOf(\"\\\\\"));\n return target.slice(slash + 1);\n};\n\nconst commentStyleFor = (target: string): CommentStyle => {\n const base = basenameOf(target);\n if (HASH_NAMES.has(base) || base.startsWith(\"Dockerfile.\")) {\n return { open: \"#\", close: \"\" };\n }\n const dot = base.lastIndexOf(\".\");\n const ext = dot > 0 ? base.slice(dot + 1).toLowerCase() : \"\";\n if (XML_EXT.has(ext)) return { open: \"<!--\", close: \" -->\" };\n if (BLOCK_EXT.has(ext)) return { open: \"/*\", close: \" */\" };\n if (SLASH_EXT.has(ext)) return { open: \"//\", close: \"\" };\n return { open: \"#\", close: \"\" };\n};\n\nconst splitLines = (content: string): string[] => {\n const trimmed = content.replace(/\\r\\n/g, \"\\n\").replace(/\\n$/, \"\");\n return trimmed.length === 0 ? [] : trimmed.split(\"\\n\");\n};\n\nconst joinLines = (lines: string[]): string =>\n lines.length === 0 ? \"\" : `${lines.join(\"\\n\")}\\n`;\n\nconst marker = (\n style: CommentStyle,\n indent: string,\n kind: \"START\" | \"END\",\n name: string,\n): string => `${indent}${style.open} — ${kind} ${name}${style.close}`;\n\ntype SectionRange = {\n start: number;\n end: number;\n indent: string;\n};\n\nconst findSection = (\n lines: string[],\n name: string,\n lo: number,\n hi: number,\n): SectionRange | null => {\n for (let i = lo; i < hi; i++) {\n const start = START_LINE.exec(lines[i] ?? \"\");\n if (!start || start[3] !== name) continue;\n let nested = 0;\n for (let j = i + 1; j < hi; j++) {\n const open = START_LINE.exec(lines[j] ?? \"\");\n if (open?.[3] === name) {\n nested += 1;\n continue;\n }\n const close = END_LINE.exec(lines[j] ?? \"\");\n if (close?.[3] !== name) continue;\n if (nested > 0) {\n nested -= 1;\n continue;\n }\n return {\n start: i,\n end: j,\n indent: start[1] ?? \"\",\n };\n }\n throw new Error(`SectionWriter: missing END marker for \"${name}\"`);\n }\n return null;\n};\n\nconst countSiblingSections = (\n lines: string[],\n name: string,\n lo: number,\n hi: number,\n): number => {\n let count = 0;\n let i = lo;\n while (i < hi) {\n const start = START_LINE.exec(lines[i] ?? \"\");\n if (!start) {\n i += 1;\n continue;\n }\n const found = findSection(lines, start[3] ?? \"\", i, hi)!;\n if (start[3] === name) count += 1;\n i = found.end + 1;\n }\n return count;\n};\n\nconst sectionBlock = (\n names: string[],\n body: string[],\n style: CommentStyle,\n indent: string,\n): string[] => {\n if (names.length === 0) return body;\n const [head, ...rest] = names;\n const inner = sectionBlock(rest, body, style, indent);\n return [\n marker(style, indent, \"START\", head!),\n ...inner,\n marker(style, indent, \"END\", head!),\n ];\n};\n\nconst replaceRange = (\n lines: string[],\n start: number,\n deleteCount: number,\n insert: string[],\n): string[] => [\n ...lines.slice(0, start),\n ...insert,\n ...lines.slice(start + deleteCount),\n];\n\nconst readSections = (patch: Patch): string[] | undefined => {\n const value = patch.options?.sections;\n if (value === undefined) return undefined;\n if (!Array.isArray(value) || value.length === 0) {\n throw new Error(\n `SectionWriter: options.sections for \"${patch.target}\" must be a non-empty array`,\n );\n }\n if (!value.every((name) => typeof name === \"string\" && name.length > 0)) {\n throw new Error(\n `SectionWriter: options.sections for \"${patch.target}\" must contain non-empty strings`,\n );\n }\n return value;\n};\n\nconst readAppendIfNotExists = (patch: Patch): AppendIfNotExists => {\n const value = patch.options?.appendIfNotExists;\n if (value === undefined) return \"End\";\n if (value === \"None\" || value === \"End\" || value === \"Start\") return value;\n throw new Error(\n `SectionWriter: options.appendIfNotExists for \"${patch.target}\" must be None, End, or Start`,\n );\n};\n\nconst insertMissing = (\n lines: string[],\n parent: SectionRange | null,\n block: string[],\n mode: AppendIfNotExists,\n target: string,\n name: string,\n): string[] => {\n if (mode === \"None\") {\n throw new Error(\n `SectionWriter: section \"${name}\" does not exist in \"${target}\"`,\n );\n }\n if (!parent) {\n return mode === \"Start\" ? [...block, ...lines] : [...lines, ...block];\n }\n if (mode === \"Start\") {\n return replaceRange(lines, parent.start + 1, 0, block);\n }\n return replaceRange(lines, parent.end, 0, block);\n};\n\nexport const sectionWriter: Writer = (patches, ctx) => {\n let lines: string[] = [];\n const written = new Map<string, string>();\n\n for (const patch of patches) {\n const sections = readSections(patch);\n const failIfExists = boolOption(patch);\n\n if (sections === undefined) {\n const previous = written.get(\"\");\n if (previous !== undefined) {\n if (failIfExists) {\n throw new Error(\n `SectionWriter: seed already exists in \"${patch.target}\"`,\n );\n }\n if (ctx.failOnCollision && previous !== patch.content) {\n throw new Error(\n `SectionWriter: collision in \"${patch.target}\" seed`,\n );\n }\n }\n written.clear();\n written.set(\"\", patch.content);\n lines = splitLines(patch.content);\n continue;\n }\n\n const appendIfNotExists = readAppendIfNotExists(patch);\n const pathKey = sections.join(\"/\");\n const previous = written.get(pathKey);\n if (previous !== undefined) {\n if (failIfExists) {\n throw new Error(\n `SectionWriter: section \"${pathKey}\" already exists in \"${patch.target}\"`,\n );\n }\n if (ctx.failOnCollision && previous !== patch.content) {\n throw new Error(\n `SectionWriter: collision in \"${patch.target}\" section \"${pathKey}\"`,\n );\n }\n }\n written.set(pathKey, patch.content);\n\n const style = commentStyleFor(patch.target);\n const body = splitLines(patch.content);\n let lo = 0;\n let hi = lines.length;\n let parent: SectionRange | null = null;\n\n for (let i = 0; i < sections.length; i++) {\n const name = sections[i]!;\n const remaining = sections.slice(i);\n const matches = countSiblingSections(lines, name, lo, hi);\n if (ctx.failOnCollision && matches > 1) {\n throw new Error(\n `SectionWriter: collision: duplicate section \"${name}\" in \"${patch.target}\"`,\n );\n }\n const found = findSection(lines, name, lo, hi);\n const isLeaf = i === sections.length - 1;\n\n if (!found) {\n const indent = parent?.indent ?? \"\";\n const block = sectionBlock(remaining, body, style, indent);\n lines = insertMissing(\n lines,\n parent,\n block,\n appendIfNotExists,\n patch.target,\n remaining.join(\"/\"),\n );\n break;\n }\n\n if (isLeaf) {\n if (failIfExists) {\n throw new Error(\n `SectionWriter: section \"${pathKey}\" already exists in \"${patch.target}\"`,\n );\n }\n lines = replaceRange(\n lines,\n found.start + 1,\n found.end - found.start - 1,\n body,\n );\n break;\n }\n\n parent = found;\n lo = found.start + 1;\n hi = found.end;\n }\n }\n\n return joinLines(lines);\n};\n\nexport { sectionWriter as SectionWriter };\n","import type { Writer } from \"./writer.ts\";\nimport { deepJsonWriter } from \"./writers/deep-json-writer.ts\";\nimport { deepXmlWriter } from \"./writers/deep-xml-writer.ts\";\nimport { deepYamlWriter } from \"./writers/deep-yaml-writer.ts\";\nimport { lineUpsertWriter } from \"./writers/line-upsert-writer.ts\";\nimport { sectionWriter } from \"./writers/section-writer.ts\";\n\nexport type WriterBinding = readonly [glob: string, writer: Writer];\n\nexport const defaultWriters: WriterBinding[] = [\n [\"**/*.{ts,tsx,mts,cts,js,jsx,mjs,cjs}\", sectionWriter],\n [\"**/*.{cs,csx,fs,fsx,vb}\", sectionWriter],\n [\"**/*.rs\", sectionWriter],\n [\"**/*.{go,java,kt,kts,scala,groovy,gradle}\", sectionWriter],\n [\"**/*.{c,cc,cpp,cxx,h,hh,hpp,hxx,m,mm}\", sectionWriter],\n [\"**/*.{swift,php}\", sectionWriter],\n [\"**/*.{py,rb,pl,pm,r,jl}\", sectionWriter],\n [\"**/*.{sh,bash,zsh,ksh,fish}\", sectionWriter],\n [\"**/*.toml\", sectionWriter],\n [\"**/*.{csproj,fsproj,vbproj,props,targets,nuspec}\", sectionWriter],\n [\"**/*.{html,htm,vue,svelte,astro}\", sectionWriter],\n [\"**/*.{css,scss,sass,less}\", sectionWriter],\n [\"**/*.{sql,graphql,gql}\", sectionWriter],\n [\"**/*.{cmake,mk,md}\", sectionWriter],\n [\n \"**/{Dockerfile,Dockerfile.*,Makefile,makefile,GNUmakefile,Justfile,justfile,CMakeLists.txt}\",\n sectionWriter,\n ],\n [\"**/*.json\", deepJsonWriter],\n [\"**/*.jsonc\", deepJsonWriter],\n [\"**/*.json5\", deepJsonWriter],\n [\"**/*.yml\", deepYamlWriter],\n [\"**/*.yaml\", deepYamlWriter],\n [\"**/*.xml\", deepXmlWriter],\n [\"**/.env\", lineUpsertWriter],\n [\"**/.env.*\", lineUpsertWriter],\n [\"**/.gitignore\", lineUpsertWriter],\n [\"**/.dockerignore\", lineUpsertWriter],\n [\"**/.containerignore\", lineUpsertWriter],\n [\"**/.ignore\", lineUpsertWriter],\n [\"**/.npmignore\", lineUpsertWriter],\n [\"**/.eslintignore\", lineUpsertWriter],\n [\"**/.prettierignore\", lineUpsertWriter],\n [\"**/.stylelintignore\", lineUpsertWriter],\n [\"**/.markdownlintignore\", lineUpsertWriter],\n [\"**/.helmignore\", lineUpsertWriter],\n [\"**/.gcloudignore\", lineUpsertWriter],\n [\"**/.fdignore\", lineUpsertWriter],\n [\"**/.rgignore\", lineUpsertWriter],\n [\"**/.cursorignore\", lineUpsertWriter],\n [\"**/.claudeignore\", lineUpsertWriter],\n [\"**/.slugignore\", lineUpsertWriter],\n [\"**/.tfignore\", lineUpsertWriter],\n [\"**/.cvsignore\", lineUpsertWriter],\n [\"**/.bzrignore\", lineUpsertWriter],\n [\"**/.hgignore\", lineUpsertWriter],\n];\n","const expandBraces = (pattern: string): string[] => {\n const match = /\\{([^{}]+)\\}/.exec(pattern);\n if (!match || match.index === undefined) return [pattern];\n const token = match[0];\n const alts = match[1]!;\n return alts.split(\",\").flatMap((alt) =>\n expandBraces(\n `${pattern.slice(0, match.index)}${alt}${pattern.slice(match.index + token.length)}`,\n ),\n );\n};\n\nconst globToRegExp = (glob: string): RegExp => {\n let source = \"\";\n for (let i = 0; i < glob.length; i++) {\n if (glob.startsWith(\"**/\", i)) {\n source += \"(?:.*/)?\";\n i += 2;\n continue;\n }\n if (glob.startsWith(\"**\", i)) {\n source += \".*\";\n i += 1;\n continue;\n }\n const char = glob[i]!;\n if (char === \"*\") {\n source += \"[^/]*\";\n continue;\n }\n if (char === \"?\") {\n source += \"[^/]\";\n continue;\n }\n source += char.replace(/[.*+^${}()|[\\]\\\\]/g, \"\\\\$&\");\n }\n return new RegExp(`^${source}$`);\n};\n\nconst compiledGlobs = new Map<string, RegExp[]>();\n\nexport const compileGlob = (pattern: string): RegExp[] => {\n const key = pattern.replaceAll(\"\\\\\", \"/\");\n const cached = compiledGlobs.get(key);\n if (cached) return cached;\n const regexes = expandBraces(key).map((glob) => globToRegExp(glob));\n compiledGlobs.set(key, regexes);\n return regexes;\n};\n\nexport const matchesGlob = (target: string, pattern: string): boolean => {\n const path = target.replaceAll(\"\\\\\", \"/\");\n return compileGlob(pattern).some((regex) => regex.test(path));\n};\n","import { Patch, type PatchOptions } from \"./patch.ts\";\nimport type { Writer } from \"./writer.ts\";\nimport {\n IPatchFileSystemApplyStrategy,\n type IPatchApplyStrategy,\n} from \"./apply-strategy.ts\";\nimport { defaultWriters, type WriterBinding } from \"./default-writers.ts\";\nimport { compileGlob } from \"./glob.ts\";\n\nexport { Patch, type PatchOptions };\nexport type { Writer, ComposeContext } from \"./writer.ts\";\nexport {\n IPatchFileSystemApplyStrategy,\n type IPatchApplyStrategy,\n} from \"./apply-strategy.ts\";\nexport { defaultWriters, type WriterBinding } from \"./default-writers.ts\";\n\nexport type PatchMergerOptions = {\n failOnCollision?: boolean;\n parallelWriteMode?: boolean;\n writers?: Iterable<WriterBinding>;\n applyStrategy?: IPatchApplyStrategy;\n};\n\nconst WRITE_CONCURRENCY = 32;\n\ntype CompiledBinding = { regexes: RegExp[]; writer: Writer };\n\ntype TargetGroup = { writer: Writer; patches: Patch[] };\n\nconst compileBindings = (\n writers: Iterable<WriterBinding>,\n): CompiledBinding[] =>\n [...writers].map(([glob, writer]) => ({\n regexes: compileGlob(glob),\n writer,\n }));\n\nconst writerFor = (bindings: CompiledBinding[], target: string) => {\n const path = target.replaceAll(\"\\\\\", \"/\");\n for (let i = bindings.length - 1; i >= 0; i--) {\n const binding = bindings[i]!;\n if (binding.regexes.some((regex) => regex.test(path))) return binding.writer;\n }\n return null;\n};\n\nconst runPool = async (\n start: () => Promise<void>,\n inFlight: { count: number },\n waiters: Array<() => void>,\n limit: number,\n): Promise<void> => {\n if (inFlight.count >= limit) {\n await new Promise<void>((resolve) => {\n waiters.push(resolve);\n });\n } else {\n inFlight.count += 1;\n }\n try {\n await start();\n } finally {\n const next = waiters.shift();\n if (next) next();\n else inFlight.count -= 1;\n }\n};\n\nexport class PatchMerger {\n #targets = new Map<string, TargetGroup>();\n #bindings: CompiledBinding[];\n #failOnCollision: boolean;\n #parallelWriteMode: boolean;\n #applyStrategy: IPatchApplyStrategy;\n\n constructor({\n failOnCollision = true,\n parallelWriteMode = true,\n writers = defaultWriters,\n applyStrategy = new IPatchFileSystemApplyStrategy(),\n }: PatchMergerOptions = {}) {\n this.#failOnCollision = failOnCollision;\n this.#parallelWriteMode = parallelWriteMode;\n this.#bindings = compileBindings(writers);\n this.#applyStrategy = applyStrategy;\n }\n\n registerWriter(glob: string, writer: Writer): void {\n this.#bindings.push({ regexes: compileGlob(glob), writer });\n }\n\n add(patch: Patch): void {\n const writer = writerFor(this.#bindings, patch.target);\n if (!writer) {\n throw new Error(\n `PatchMerger.add: no PatchWriter for target '${patch.target}'`,\n );\n }\n const group = this.#targets.get(patch.target);\n if (group) {\n group.writer = writer;\n group.patches.push(patch);\n return;\n }\n this.#targets.set(patch.target, { writer, patches: [patch] });\n }\n\n async apply(\n rootDir: string,\n strategy: IPatchApplyStrategy = this.#applyStrategy,\n ): Promise<string[]> {\n const ctx = { failOnCollision: this.#failOnCollision };\n const written: string[] = [];\n\n if (!this.#parallelWriteMode) {\n for (const [target, group] of this.#targets) {\n const contents = group.writer(group.patches, ctx);\n if (contents === null) continue;\n await strategy.apply(target, contents, rootDir);\n written.push(target);\n }\n return written;\n }\n\n const pending: Promise<void>[] = [];\n const inFlight = { count: 0 };\n const waiters: Array<() => void> = [];\n\n for (const [target, group] of this.#targets) {\n const contents = group.writer(group.patches, ctx);\n if (contents === null) continue;\n written.push(target);\n pending.push(\n runPool(\n () => strategy.apply(target, contents, rootDir),\n inFlight,\n waiters,\n WRITE_CONCURRENCY,\n ),\n );\n }\n await Promise.all(pending);\n return written;\n }\n}\n"],"names":["Patch","target","content","options","__publicField","IPatchFileSystemApplyStrategy","__privateAdd","_IPatchFileSystemApplyStrategy_instances","_dirs","contents","rootDir","path","join","__privateMethod","ensureDir_fn","dirname","writeFile","dir","pending","__privateGet","created","mkdir","error","boolOption","patch","fallback","value","_a","stringOption","isObject","parsePath","jsonTarget","segment","asObject","name","mergeValue","current","incoming","failIfExists","failOnCollision","key","assignAtPath","root","segs","prefix","head","rest","child","createDeepWriter","parse","stringify","patches","acc","deepJsonWriter","parser","XMLParser","builder","XMLBuilder","deepXmlWriter","valid","XMLValidator","xml","deepYamlWriter","parsed","lineKey","line","match","patchLines","lineUpsertWriter","ctx","order","values","existing","START_LINE","END_LINE","XML_EXT","BLOCK_EXT","SLASH_EXT","HASH_NAMES","basenameOf","slash","commentStyleFor","base","dot","ext","splitLines","trimmed","joinLines","lines","marker","style","indent","kind","findSection","lo","hi","i","start","nested","j","open","close","countSiblingSections","count","found","sectionBlock","names","body","inner","replaceRange","deleteCount","insert","readSections","readAppendIfNotExists","insertMissing","parent","block","mode","sectionWriter","written","sections","previous","appendIfNotExists","pathKey","remaining","matches","isLeaf","defaultWriters","expandBraces","pattern","token","alt","globToRegExp","glob","source","char","compiledGlobs","compileGlob","cached","regexes","WRITE_CONCURRENCY","compileBindings","writers","writer","writerFor","bindings","binding","regex","runPool","inFlight","waiters","limit","resolve","next","PatchMerger","parallelWriteMode","applyStrategy","_targets","_bindings","_failOnCollision","_parallelWriteMode","_applyStrategy","__privateSet","group","strategy"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./patch-merger-CvVbM8X5.cjs");exports.IPatchFileSystemApplyStrategy=e.IPatchFileSystemApplyStrategy;exports.Patch=e.Patch;exports.PatchMerger=e.PatchMerger;exports.defaultWriters=e.defaultWriters;
2
+ //# sourceMappingURL=patch-merger.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch-merger.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,53 @@
1
+ export declare type ComposeContext = {
2
+ failOnCollision: boolean;
3
+ };
4
+
5
+ export declare const defaultWriters: WriterBinding[];
6
+
7
+ export declare type IPatchApplyStrategy = {
8
+ apply(target: string, contents: string, rootDir: string): Promise<void>;
9
+ };
10
+
11
+ export declare class IPatchFileSystemApplyStrategy implements IPatchApplyStrategy {
12
+ #private;
13
+ apply(target: string, contents: string, rootDir: string): Promise<void>;
14
+ }
15
+
16
+ export declare class Patch {
17
+ readonly target: string;
18
+ readonly content: string;
19
+ readonly options?: Readonly<PatchOptions>;
20
+ constructor({ target, content, options, }: {
21
+ target: string;
22
+ content: string;
23
+ options?: PatchOptions;
24
+ });
25
+ }
26
+
27
+ export declare class PatchMerger {
28
+ #private;
29
+ constructor({ failOnCollision, parallelWriteMode, writers, applyStrategy, }?: PatchMergerOptions);
30
+ registerWriter(glob: string, writer: Writer): void;
31
+ add(patch: Patch): void;
32
+ apply(rootDir: string, strategy?: IPatchApplyStrategy): Promise<string[]>;
33
+ }
34
+
35
+ export declare type PatchMergerOptions = {
36
+ failOnCollision?: boolean;
37
+ parallelWriteMode?: boolean;
38
+ writers?: Iterable<WriterBinding>;
39
+ applyStrategy?: IPatchApplyStrategy;
40
+ };
41
+
42
+ export declare type PatchOptions = {
43
+ failIfExists?: boolean;
44
+ jsonTarget?: string;
45
+ sections?: string[];
46
+ appendIfNotExists?: "None" | "End" | "Start";
47
+ };
48
+
49
+ export declare type Writer = (patches: Patch[], ctx: ComposeContext) => string | null;
50
+
51
+ export declare type WriterBinding = readonly [glob: string, writer: Writer];
52
+
53
+ export { }
@@ -0,0 +1,8 @@
1
+ import { I as t, P as r, c as s, e as c } from "./patch-merger-CjtjSB9r.js";
2
+ export {
3
+ t as IPatchFileSystemApplyStrategy,
4
+ r as Patch,
5
+ s as PatchMerger,
6
+ c as defaultWriters
7
+ };
8
+ //# sourceMappingURL=patch-merger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch-merger.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,32 @@
1
+ import {
2
+ createCasingStrategy
3
+ } from "@deterministic-code/generators-common/casing-strategy";
4
+ const GENERATOR_LANGUAGE = "rust";
5
+ const VARIANT_PREFIXES = ["update_", "create_"];
6
+ const featureEntity = (entity) => {
7
+ const prefix = VARIANT_PREFIXES.find((p) => entity.startsWith(p));
8
+ return prefix === void 0 ? entity : entity.slice(prefix.length);
9
+ };
10
+ const createCasing = (settings) => {
11
+ const casing = createCasingStrategy(GENERATOR_LANGUAGE, settings);
12
+ const fileBase = (stem) => casing.convertFileName(stem);
13
+ const directory = (entity) => casing.convertDirectories(featureEntity(entity));
14
+ const filePath = (stem) => `${fileBase(stem)}.rs`;
15
+ return {
16
+ convertFileName: (text) => casing.convertFileName(text),
17
+ convertTypes: (text) => casing.convertTypes(text),
18
+ convertFields: (text) => casing.convertFields(text),
19
+ convertDirectories: (text) => casing.convertDirectories(text),
20
+ fileBase,
21
+ directory,
22
+ filePath,
23
+ serviceClassName: (entity) => casing.convertTypes(`${entity}_service`),
24
+ fnIdent: (stem) => casing.convertFields(stem)
25
+ };
26
+ };
27
+ const defaultCasing = (settings) => createCasing(settings);
28
+ export {
29
+ GENERATOR_LANGUAGE,
30
+ createCasing,
31
+ defaultCasing
32
+ };
@@ -0,0 +1,4 @@
1
+ const isDictionaryCandidate = (candidate) => candidate.inherits === "dictionary";
2
+ export {
3
+ isDictionaryCandidate
4
+ };
@@ -0,0 +1,77 @@
1
+ import { convertSpecType } from "../deterministic-type-converter.js";
2
+ const rustString = (value) => `String::from(${JSON.stringify(value)})`;
3
+ const rustDatetime = (iso) => `chrono::DateTime::parse_from_rfc3339(${JSON.stringify(iso)}).unwrap().with_timezone(&chrono::Utc)`;
4
+ const samplesForNative = (native, fieldType) => {
5
+ switch (native) {
6
+ case "i64":
7
+ return { sample: "1i64", next: "2i64" };
8
+ case "i32":
9
+ return { sample: "1i32", next: "2i32" };
10
+ case "i16":
11
+ return { sample: "1i16", next: "2i16" };
12
+ case "u64":
13
+ return { sample: "1u64", next: "2u64" };
14
+ case "u32":
15
+ return { sample: "1u32", next: "2u32" };
16
+ case "u16":
17
+ return { sample: "1u16", next: "2u16" };
18
+ case "f64":
19
+ return { sample: "1.0f64", next: "2.0f64" };
20
+ case "bool":
21
+ return { sample: "false", next: "true" };
22
+ case "uuid::Uuid":
23
+ return {
24
+ sample: "uuid::Uuid::nil()",
25
+ next: "uuid::Uuid::from_u128(1)"
26
+ };
27
+ case "Vec<u8>":
28
+ return { sample: "Vec::<u8>::new()", next: "vec![1u8]" };
29
+ case "chrono::DateTime<chrono::Utc>":
30
+ return {
31
+ sample: rustDatetime("2024-01-01T00:00:00.000Z"),
32
+ next: rustDatetime("2024-01-02T00:00:00.000Z")
33
+ };
34
+ case "String":
35
+ if (fieldType === "decimal") {
36
+ return { sample: rustString("0"), next: rustString("1") };
37
+ }
38
+ if (fieldType === "uuid") {
39
+ return {
40
+ sample: rustString("00000000-0000-0000-0000-000000000000"),
41
+ next: rustString("00000000-0000-0000-0000-000000000001")
42
+ };
43
+ }
44
+ if (fieldType === "datetime") {
45
+ return {
46
+ sample: rustString("2024-01-01T00:00:00.000Z"),
47
+ next: rustString("2024-01-02T00:00:00.000Z")
48
+ };
49
+ }
50
+ if (fieldType === "date") {
51
+ return {
52
+ sample: rustString("2024-01-01"),
53
+ next: rustString("2024-01-02")
54
+ };
55
+ }
56
+ if (fieldType === "email") {
57
+ return {
58
+ sample: rustString("sample@example.com"),
59
+ next: rustString("next@example.com")
60
+ };
61
+ }
62
+ return { sample: rustString("sample"), next: rustString("sample-next") };
63
+ default:
64
+ throw new Error(`Unknown rust native type: ${native}`);
65
+ }
66
+ };
67
+ const wrapOption = (expr, nullable) => nullable ? `Some(${expr})` : expr;
68
+ const sampleForField = (type, isNullable) => {
69
+ const { sample } = samplesForNative(convertSpecType(type), type);
70
+ return wrapOption(sample, isNullable);
71
+ };
72
+ export {
73
+ rustString,
74
+ sampleForField,
75
+ samplesForNative,
76
+ wrapOption
77
+ };
@@ -0,0 +1,28 @@
1
+ import { isCollectionField } from "@deterministic-code/generators-common/spec-types";
2
+ import { typeHasTag } from "../specification-parser.js";
3
+ const isAlias = (view) => typeHasTag(view, "datasource_type");
4
+ const isUnionEnum = (view) => view.kind === "union" && (view.union?.length ?? 0) > 0;
5
+ const wrapsInheritedDatasource = (view, datasourceNames) => !isAlias(view) && view.kind === "inherit" && view.inherits !== void 0 && datasourceNames.has(view.inherits) && (view.removeFields?.length ?? 0) === 0;
6
+ const emitViewFields = (view, expanded, datasourceNames) => {
7
+ if (isAlias(view)) {
8
+ return (expanded?.fields ?? view.fields).filter(isCollectionField);
9
+ }
10
+ if (wrapsInheritedDatasource(view, datasourceNames)) return view.fields;
11
+ return expanded?.fields ?? view.fields;
12
+ };
13
+ const fieldRefKind = (field, typesByName) => {
14
+ if (field.kind === "primitive") return "primitive";
15
+ const referenced = typesByName.get(field.base);
16
+ if (referenced === void 0) return "view";
17
+ if (typeHasTag(referenced, "view_type") && !typeHasTag(referenced, "datasource_type")) {
18
+ return "view";
19
+ }
20
+ return "datasource";
21
+ };
22
+ export {
23
+ emitViewFields,
24
+ fieldRefKind,
25
+ isAlias,
26
+ isUnionEnum,
27
+ wrapsInheritedDatasource
28
+ };
@@ -0,0 +1,105 @@
1
+ import {
2
+ dictionaryEntryFields,
3
+ dictionaryOfField,
4
+ isCollectionField
5
+ } from "@deterministic-code/generators-common/spec-types";
6
+ import {
7
+ isAlias,
8
+ isUnionEnum,
9
+ wrapsInheritedDatasource
10
+ } from "./view-shape.js";
11
+ import { sampleForField, samplesForNative } from "./test-samples.js";
12
+ import { convertSpecType } from "../deterministic-type-converter.js";
13
+ import { fieldRefKind } from "./view-shape.js";
14
+ const renderDs = (name, opts) => {
15
+ const table = opts.tables.get(name);
16
+ const cls = opts.imports.datasourceQual(name);
17
+ if (table === void 0) return `${cls} {}`;
18
+ if (table.fields.length === 0) return `${cls} {}`;
19
+ const body = table.fields.map(
20
+ (f) => `${opts.casing.convertFields(f.name)}: ${sampleForField(f.type, f.isNullable)}`
21
+ ).join(", ");
22
+ return `${cls} { ${body} }`;
23
+ };
24
+ const wrapValue = (expr, field) => {
25
+ const inner = field.isMap === true ? `HashMap::from([(String::from("k"), ${expr})])` : field.isArray ? `vec![${expr}]` : expr;
26
+ return field.isNullable ? `Some(${inner})` : inner;
27
+ };
28
+ const viewFieldTok = (field, opts, visited) => {
29
+ let pair;
30
+ const dict = dictionaryOfField(field, opts.typesByName);
31
+ const entry = dict === void 0 ? void 0 : dictionaryEntryFields(dict);
32
+ const target = entry?.value ?? field;
33
+ const refKind = fieldRefKind(target, opts.typesByName);
34
+ if (refKind === "primitive") {
35
+ pair = samplesForNative(convertSpecType(target.base), target.base);
36
+ } else {
37
+ const expr = refKind === "datasource" ? renderDs(target.base, opts) : viewExpr(target.base, opts, visited);
38
+ pair = { sample: expr, next: expr };
39
+ }
40
+ return {
41
+ ident: opts.casing.convertFields(field.name),
42
+ sampleExpr: wrapValue(pair.sample, field),
43
+ nextExpr: wrapValue(pair.next, field),
44
+ nullable: field.isNullable,
45
+ getsTest: opts.casing.fnIdent(`gets_${field.name}`),
46
+ setsTest: opts.casing.fnIdent(`sets_${field.name}`),
47
+ allowsNoneTest: opts.casing.fnIdent(
48
+ `allows_setting_${field.name}_to_none`
49
+ )
50
+ };
51
+ };
52
+ const baseTok = (ident, expr, opts) => ({
53
+ ident,
54
+ sampleExpr: expr,
55
+ nextExpr: expr,
56
+ nullable: false,
57
+ getsTest: opts.casing.fnIdent(`gets_${ident}`),
58
+ setsTest: opts.casing.fnIdent(`sets_${ident}`),
59
+ allowsNoneTest: opts.casing.fnIdent(`allows_setting_${ident}_to_none`)
60
+ });
61
+ const shapedToks = (view, opts, visited) => {
62
+ const expanded = opts.expandedViews.get(view.name);
63
+ if (isAlias(view)) {
64
+ const extras = (expanded ?? view).fields.filter(isCollectionField).map((f) => viewFieldTok(f, opts, visited));
65
+ if (extras.length === 0) {
66
+ return (expanded ?? view).fields.map((f) => viewFieldTok(f, opts, visited));
67
+ }
68
+ return [baseTok("base", renderDs(view.name, opts), opts), ...extras];
69
+ }
70
+ const source = wrapsInheritedDatasource(view, opts.datasourceNames) ? view : expanded ?? view;
71
+ const fields = source.fields.map((f) => viewFieldTok(f, opts, visited));
72
+ if (wrapsInheritedDatasource(view, opts.datasourceNames) && view.inherits) {
73
+ return [baseTok("base", renderDs(view.inherits, opts), opts), ...fields];
74
+ }
75
+ return fields;
76
+ };
77
+ const viewExpr = (name, opts, visited) => {
78
+ if (visited.has(name)) {
79
+ throw new Error(`cyclic view reference: ${name}`);
80
+ }
81
+ const view = opts.views.get(name);
82
+ if (view === void 0) {
83
+ throw new Error(`unknown view: ${name}`);
84
+ }
85
+ const next = new Set(visited).add(name);
86
+ const cls = opts.imports.viewQual(name);
87
+ if (isUnionEnum(view)) {
88
+ const first = view.union[0];
89
+ return `${cls}::${opts.casing.convertTypes(first)}(${viewExpr(first, opts, next)})`;
90
+ }
91
+ if (isAlias(view)) {
92
+ const extras = (opts.expandedViews.get(view.name) ?? view).fields.filter(
93
+ isCollectionField
94
+ );
95
+ if (extras.length === 0) return renderDs(view.name, opts);
96
+ }
97
+ const fields = shapedToks(view, opts, next);
98
+ if (fields.length === 0) return `${cls} {}`;
99
+ return `${cls} { ${fields.map((f) => `${f.ident}: ${f.sampleExpr}`).join(", ")} }`;
100
+ };
101
+ export {
102
+ renderDs,
103
+ shapedToks,
104
+ viewExpr
105
+ };