@ojiepermana/angular 21.3.4 → 22.0.27

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 (387) hide show
  1. package/README.md +16 -298
  2. package/fesm2022/ojiepermana-angular-chart.mjs +11 -0
  3. package/fesm2022/ojiepermana-angular-chart.mjs.map +1 -0
  4. package/fesm2022/ojiepermana-angular-component.mjs +11 -0
  5. package/fesm2022/ojiepermana-angular-component.mjs.map +1 -0
  6. package/fesm2022/ojiepermana-angular-navigation.mjs +11 -0
  7. package/fesm2022/ojiepermana-angular-navigation.mjs.map +1 -0
  8. package/fesm2022/ojiepermana-angular-sdk.mjs +11 -0
  9. package/fesm2022/ojiepermana-angular-sdk.mjs.map +1 -0
  10. package/fesm2022/ojiepermana-angular-theme.mjs +3 -374
  11. package/fesm2022/ojiepermana-angular-theme.mjs.map +1 -1
  12. package/fesm2022/ojiepermana-angular.mjs +14 -14
  13. package/fesm2022/ojiepermana-angular.mjs.map +1 -1
  14. package/package.json +25 -361
  15. package/types/ojiepermana-angular-chart.d.ts +1 -0
  16. package/types/ojiepermana-angular-component.d.ts +1 -0
  17. package/types/ojiepermana-angular-navigation.d.ts +1 -0
  18. package/types/ojiepermana-angular-sdk.d.ts +1 -0
  19. package/types/ojiepermana-angular-theme.d.ts +1 -116
  20. package/types/ojiepermana-angular.d.ts +5 -3
  21. package/.npmignore +0 -2
  22. package/collection.json +0 -30
  23. package/component/accordion/package.json +0 -4
  24. package/component/alert/package.json +0 -4
  25. package/component/alert-dialog/package.json +0 -4
  26. package/component/aspect-ratio/package.json +0 -4
  27. package/component/avatar/package.json +0 -4
  28. package/component/badge/package.json +0 -4
  29. package/component/breadcrumb/package.json +0 -4
  30. package/component/button/package.json +0 -4
  31. package/component/button-group/package.json +0 -4
  32. package/component/calendar/package.json +0 -4
  33. package/component/card/package.json +0 -4
  34. package/component/carousel/package.json +0 -4
  35. package/component/chart/README.md +0 -249
  36. package/component/chart/area/package.json +0 -4
  37. package/component/chart/bar/package.json +0 -4
  38. package/component/chart/line/package.json +0 -4
  39. package/component/chart/package.json +0 -4
  40. package/component/chart/pie/package.json +0 -4
  41. package/component/chart/radar/package.json +0 -4
  42. package/component/chart/radial/package.json +0 -4
  43. package/component/chart/scatter/package.json +0 -4
  44. package/component/checkbox/package.json +0 -4
  45. package/component/collapsible/package.json +0 -4
  46. package/component/combobox/package.json +0 -4
  47. package/component/command/package.json +0 -4
  48. package/component/context-menu/package.json +0 -4
  49. package/component/date-picker/package.json +0 -4
  50. package/component/dialog/package.json +0 -4
  51. package/component/drawer/package.json +0 -4
  52. package/component/dropdown-menu/package.json +0 -4
  53. package/component/form/package.json +0 -4
  54. package/component/input/package.json +0 -4
  55. package/component/input-group/package.json +0 -4
  56. package/component/item/package.json +0 -4
  57. package/component/label/package.json +0 -4
  58. package/component/pagination/package.json +0 -4
  59. package/component/popover/package.json +0 -4
  60. package/component/progress/package.json +0 -4
  61. package/component/radio/package.json +0 -4
  62. package/component/scroll-area/package.json +0 -4
  63. package/component/select/package.json +0 -4
  64. package/component/separator/package.json +0 -4
  65. package/component/sheet/package.json +0 -4
  66. package/component/skeleton/package.json +0 -4
  67. package/component/slider/package.json +0 -4
  68. package/component/switch/package.json +0 -4
  69. package/component/table/package.json +0 -4
  70. package/component/tabs/package.json +0 -4
  71. package/component/textarea/package.json +0 -4
  72. package/component/toast/package.json +0 -4
  73. package/component/tooltip/package.json +0 -4
  74. package/component/utils/package.json +0 -4
  75. package/fesm2022/ojiepermana-angular-component-accordion.mjs +0 -174
  76. package/fesm2022/ojiepermana-angular-component-accordion.mjs.map +0 -1
  77. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +0 -242
  78. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs.map +0 -1
  79. package/fesm2022/ojiepermana-angular-component-alert.mjs +0 -90
  80. package/fesm2022/ojiepermana-angular-component-alert.mjs.map +0 -1
  81. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +0 -33
  82. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs.map +0 -1
  83. package/fesm2022/ojiepermana-angular-component-avatar.mjs +0 -123
  84. package/fesm2022/ojiepermana-angular-component-avatar.mjs.map +0 -1
  85. package/fesm2022/ojiepermana-angular-component-badge.mjs +0 -47
  86. package/fesm2022/ojiepermana-angular-component-badge.mjs.map +0 -1
  87. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +0 -186
  88. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs.map +0 -1
  89. package/fesm2022/ojiepermana-angular-component-button-group.mjs +0 -95
  90. package/fesm2022/ojiepermana-angular-component-button-group.mjs.map +0 -1
  91. package/fesm2022/ojiepermana-angular-component-button.mjs +0 -64
  92. package/fesm2022/ojiepermana-angular-component-button.mjs.map +0 -1
  93. package/fesm2022/ojiepermana-angular-component-calendar.mjs +0 -78
  94. package/fesm2022/ojiepermana-angular-component-calendar.mjs.map +0 -1
  95. package/fesm2022/ojiepermana-angular-component-card.mjs +0 -137
  96. package/fesm2022/ojiepermana-angular-component-card.mjs.map +0 -1
  97. package/fesm2022/ojiepermana-angular-component-carousel.mjs +0 -310
  98. package/fesm2022/ojiepermana-angular-component-carousel.mjs.map +0 -1
  99. package/fesm2022/ojiepermana-angular-component-chart-area.mjs +0 -6
  100. package/fesm2022/ojiepermana-angular-component-chart-area.mjs.map +0 -1
  101. package/fesm2022/ojiepermana-angular-component-chart-bar.mjs +0 -6
  102. package/fesm2022/ojiepermana-angular-component-chart-bar.mjs.map +0 -1
  103. package/fesm2022/ojiepermana-angular-component-chart-line.mjs +0 -6
  104. package/fesm2022/ojiepermana-angular-component-chart-line.mjs.map +0 -1
  105. package/fesm2022/ojiepermana-angular-component-chart-pie.mjs +0 -6
  106. package/fesm2022/ojiepermana-angular-component-chart-pie.mjs.map +0 -1
  107. package/fesm2022/ojiepermana-angular-component-chart-radar.mjs +0 -6
  108. package/fesm2022/ojiepermana-angular-component-chart-radar.mjs.map +0 -1
  109. package/fesm2022/ojiepermana-angular-component-chart-radial.mjs +0 -6
  110. package/fesm2022/ojiepermana-angular-component-chart-radial.mjs.map +0 -1
  111. package/fesm2022/ojiepermana-angular-component-chart-scatter.mjs +0 -6
  112. package/fesm2022/ojiepermana-angular-component-chart-scatter.mjs.map +0 -1
  113. package/fesm2022/ojiepermana-angular-component-chart.mjs +0 -3714
  114. package/fesm2022/ojiepermana-angular-component-chart.mjs.map +0 -1
  115. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +0 -104
  116. package/fesm2022/ojiepermana-angular-component-checkbox.mjs.map +0 -1
  117. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +0 -116
  118. package/fesm2022/ojiepermana-angular-component-collapsible.mjs.map +0 -1
  119. package/fesm2022/ojiepermana-angular-component-combobox.mjs +0 -263
  120. package/fesm2022/ojiepermana-angular-component-combobox.mjs.map +0 -1
  121. package/fesm2022/ojiepermana-angular-component-command.mjs +0 -268
  122. package/fesm2022/ojiepermana-angular-component-command.mjs.map +0 -1
  123. package/fesm2022/ojiepermana-angular-component-context-menu.mjs +0 -100
  124. package/fesm2022/ojiepermana-angular-component-context-menu.mjs.map +0 -1
  125. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +0 -155
  126. package/fesm2022/ojiepermana-angular-component-date-picker.mjs.map +0 -1
  127. package/fesm2022/ojiepermana-angular-component-dialog.mjs +0 -262
  128. package/fesm2022/ojiepermana-angular-component-dialog.mjs.map +0 -1
  129. package/fesm2022/ojiepermana-angular-component-drawer.mjs +0 -6
  130. package/fesm2022/ojiepermana-angular-component-drawer.mjs.map +0 -1
  131. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +0 -458
  132. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs.map +0 -1
  133. package/fesm2022/ojiepermana-angular-component-form.mjs +0 -208
  134. package/fesm2022/ojiepermana-angular-component-form.mjs.map +0 -1
  135. package/fesm2022/ojiepermana-angular-component-input-group.mjs +0 -164
  136. package/fesm2022/ojiepermana-angular-component-input-group.mjs.map +0 -1
  137. package/fesm2022/ojiepermana-angular-component-input.mjs +0 -43
  138. package/fesm2022/ojiepermana-angular-component-input.mjs.map +0 -1
  139. package/fesm2022/ojiepermana-angular-component-item.mjs +0 -241
  140. package/fesm2022/ojiepermana-angular-component-item.mjs.map +0 -1
  141. package/fesm2022/ojiepermana-angular-component-label.mjs +0 -30
  142. package/fesm2022/ojiepermana-angular-component-label.mjs.map +0 -1
  143. package/fesm2022/ojiepermana-angular-component-pagination.mjs +0 -192
  144. package/fesm2022/ojiepermana-angular-component-pagination.mjs.map +0 -1
  145. package/fesm2022/ojiepermana-angular-component-popover.mjs +0 -163
  146. package/fesm2022/ojiepermana-angular-component-popover.mjs.map +0 -1
  147. package/fesm2022/ojiepermana-angular-component-progress.mjs +0 -53
  148. package/fesm2022/ojiepermana-angular-component-progress.mjs.map +0 -1
  149. package/fesm2022/ojiepermana-angular-component-radio.mjs +0 -92
  150. package/fesm2022/ojiepermana-angular-component-radio.mjs.map +0 -1
  151. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +0 -48
  152. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs.map +0 -1
  153. package/fesm2022/ojiepermana-angular-component-select.mjs +0 -131
  154. package/fesm2022/ojiepermana-angular-component-select.mjs.map +0 -1
  155. package/fesm2022/ojiepermana-angular-component-separator.mjs +0 -33
  156. package/fesm2022/ojiepermana-angular-component-separator.mjs.map +0 -1
  157. package/fesm2022/ojiepermana-angular-component-sheet.mjs +0 -235
  158. package/fesm2022/ojiepermana-angular-component-sheet.mjs.map +0 -1
  159. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +0 -29
  160. package/fesm2022/ojiepermana-angular-component-skeleton.mjs.map +0 -1
  161. package/fesm2022/ojiepermana-angular-component-slider.mjs +0 -29
  162. package/fesm2022/ojiepermana-angular-component-slider.mjs.map +0 -1
  163. package/fesm2022/ojiepermana-angular-component-switch.mjs +0 -84
  164. package/fesm2022/ojiepermana-angular-component-switch.mjs.map +0 -1
  165. package/fesm2022/ojiepermana-angular-component-table.mjs +0 -139
  166. package/fesm2022/ojiepermana-angular-component-table.mjs.map +0 -1
  167. package/fesm2022/ojiepermana-angular-component-tabs.mjs +0 -252
  168. package/fesm2022/ojiepermana-angular-component-tabs.mjs.map +0 -1
  169. package/fesm2022/ojiepermana-angular-component-textarea.mjs +0 -37
  170. package/fesm2022/ojiepermana-angular-component-textarea.mjs.map +0 -1
  171. package/fesm2022/ojiepermana-angular-component-toast.mjs +0 -47
  172. package/fesm2022/ojiepermana-angular-component-toast.mjs.map +0 -1
  173. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +0 -56
  174. package/fesm2022/ojiepermana-angular-component-tooltip.mjs.map +0 -1
  175. package/fesm2022/ojiepermana-angular-component-utils.mjs +0 -13
  176. package/fesm2022/ojiepermana-angular-component-utils.mjs.map +0 -1
  177. package/fesm2022/ojiepermana-angular-generator-api.mjs +0 -68
  178. package/fesm2022/ojiepermana-angular-generator-api.mjs.map +0 -1
  179. package/fesm2022/ojiepermana-angular-layout-component.mjs +0 -581
  180. package/fesm2022/ojiepermana-angular-layout-component.mjs.map +0 -1
  181. package/fesm2022/ojiepermana-angular-layout-empty.mjs +0 -49
  182. package/fesm2022/ojiepermana-angular-layout-empty.mjs.map +0 -1
  183. package/fesm2022/ojiepermana-angular-layout-horizontal.mjs +0 -119
  184. package/fesm2022/ojiepermana-angular-layout-horizontal.mjs.map +0 -1
  185. package/fesm2022/ojiepermana-angular-layout-provider.mjs +0 -21
  186. package/fesm2022/ojiepermana-angular-layout-provider.mjs.map +0 -1
  187. package/fesm2022/ojiepermana-angular-layout-services.mjs +0 -114
  188. package/fesm2022/ojiepermana-angular-layout-services.mjs.map +0 -1
  189. package/fesm2022/ojiepermana-angular-layout-shell.mjs +0 -48
  190. package/fesm2022/ojiepermana-angular-layout-shell.mjs.map +0 -1
  191. package/fesm2022/ojiepermana-angular-layout-token-directive.mjs +0 -27
  192. package/fesm2022/ojiepermana-angular-layout-token-directive.mjs.map +0 -1
  193. package/fesm2022/ojiepermana-angular-layout-token.mjs +0 -33
  194. package/fesm2022/ojiepermana-angular-layout-token.mjs.map +0 -1
  195. package/fesm2022/ojiepermana-angular-layout-vertical.mjs +0 -113
  196. package/fesm2022/ojiepermana-angular-layout-vertical.mjs.map +0 -1
  197. package/fesm2022/ojiepermana-angular-layout.mjs +0 -461
  198. package/fesm2022/ojiepermana-angular-layout.mjs.map +0 -1
  199. package/fesm2022/ojiepermana-angular-navigation-demo-data.mjs +0 -334
  200. package/fesm2022/ojiepermana-angular-navigation-demo-data.mjs.map +0 -1
  201. package/fesm2022/ojiepermana-angular-navigation-icon.mjs +0 -59
  202. package/fesm2022/ojiepermana-angular-navigation-icon.mjs.map +0 -1
  203. package/fesm2022/ojiepermana-angular-navigation-item.mjs +0 -548
  204. package/fesm2022/ojiepermana-angular-navigation-item.mjs.map +0 -1
  205. package/fesm2022/ojiepermana-angular-navigation-service.mjs +0 -204
  206. package/fesm2022/ojiepermana-angular-navigation-service.mjs.map +0 -1
  207. package/fesm2022/ojiepermana-angular-navigation-sidebar.mjs +0 -373
  208. package/fesm2022/ojiepermana-angular-navigation-sidebar.mjs.map +0 -1
  209. package/fesm2022/ojiepermana-angular-navigation-topbar.mjs +0 -433
  210. package/fesm2022/ojiepermana-angular-navigation-topbar.mjs.map +0 -1
  211. package/fesm2022/ojiepermana-angular-navigation-types.mjs +0 -4
  212. package/fesm2022/ojiepermana-angular-navigation-types.mjs.map +0 -1
  213. package/fesm2022/ojiepermana-angular-theme-provider.mjs +0 -35
  214. package/fesm2022/ojiepermana-angular-theme-provider.mjs.map +0 -1
  215. package/fesm2022/ojiepermana-angular-theme-services.mjs +0 -286
  216. package/fesm2022/ojiepermana-angular-theme-services.mjs.map +0 -1
  217. package/fesm2022/ojiepermana-angular-theme-token.mjs +0 -56
  218. package/fesm2022/ojiepermana-angular-theme-token.mjs.map +0 -1
  219. package/generator/api/README.md +0 -252
  220. package/generator/api/bin/package.json +0 -3
  221. package/generator/api/bin/schematics/init/index.js +0 -90
  222. package/generator/api/bin/schematics/ng-add/index.js +0 -131
  223. package/generator/api/bin/schematics/sdk/index.js +0 -76
  224. package/generator/api/bin/src/config/loader.js +0 -41
  225. package/generator/api/bin/src/config/schema.js +0 -57
  226. package/generator/api/bin/src/emit/client.js +0 -246
  227. package/generator/api/bin/src/emit/metadata.js +0 -295
  228. package/generator/api/bin/src/emit/models.js +0 -106
  229. package/generator/api/bin/src/emit/navigation.js +0 -56
  230. package/generator/api/bin/src/emit/operations.js +0 -122
  231. package/generator/api/bin/src/emit/public-api.js +0 -54
  232. package/generator/api/bin/src/emit/services.js +0 -87
  233. package/generator/api/bin/src/engine.js +0 -65
  234. package/generator/api/bin/src/layout/per-domain.js +0 -359
  235. package/generator/api/bin/src/parser/bundle.js +0 -25
  236. package/generator/api/bin/src/parser/ir.js +0 -320
  237. package/generator/api/bin/src/parser/types.js +0 -7
  238. package/generator/api/bin/src/render/template.js +0 -58
  239. package/generator/api/bin/src/writer/index.js +0 -278
  240. package/generator/api/package.json +0 -4
  241. package/generator/api/schematics/init/schema.json +0 -19
  242. package/generator/api/schematics/ng-add/schema.json +0 -14
  243. package/generator/api/schematics/sdk/schema.json +0 -19
  244. package/generator/api/sdk.config.example.json +0 -24
  245. package/generator/guide/README.md +0 -84
  246. package/generator/guide/bin/package.json +0 -3
  247. package/generator/guide/bin/schematics/build/index.js +0 -35
  248. package/generator/guide/bin/schematics/init/index.js +0 -70
  249. package/generator/guide/bin/src/config/loader.js +0 -50
  250. package/generator/guide/bin/src/config/schema.js +0 -12
  251. package/generator/guide/bin/src/engine/component.js +0 -74
  252. package/generator/guide/bin/src/engine/frontmatter.js +0 -42
  253. package/generator/guide/bin/src/engine/index.js +0 -42
  254. package/generator/guide/bin/src/engine/naming.js +0 -39
  255. package/generator/guide/bin/src/engine/render.js +0 -31
  256. package/generator/guide/bin/src/engine/routes.js +0 -106
  257. package/generator/guide/bin/src/engine/walk.js +0 -35
  258. package/generator/guide/guide.config.example.json +0 -9
  259. package/generator/guide/schematics/build/schema.json +0 -14
  260. package/generator/guide/schematics/init/schema.json +0 -19
  261. package/layout/component/package.json +0 -4
  262. package/layout/empty/package.json +0 -4
  263. package/layout/horizontal/package.json +0 -4
  264. package/layout/package.json +0 -4
  265. package/layout/provider/package.json +0 -4
  266. package/layout/services/package.json +0 -4
  267. package/layout/shell/package.json +0 -4
  268. package/layout/token/directive/package.json +0 -4
  269. package/layout/token/package.json +0 -4
  270. package/layout/vertical/package.json +0 -4
  271. package/navigation/demo-data/package.json +0 -4
  272. package/navigation/icon/package.json +0 -4
  273. package/navigation/item/package.json +0 -4
  274. package/navigation/service/package.json +0 -4
  275. package/navigation/sidebar/package.json +0 -4
  276. package/navigation/topbar/package.json +0 -4
  277. package/navigation/types/package.json +0 -4
  278. package/theme/README.md +0 -67
  279. package/theme/package.json +0 -4
  280. package/theme/provider/package.json +0 -4
  281. package/theme/services/package.json +0 -4
  282. package/theme/styles/foundation/components.css +0 -81
  283. package/theme/styles/foundation/layers.css +0 -15
  284. package/theme/styles/foundation/tokens.css +0 -55
  285. package/theme/styles/index.css +0 -37
  286. package/theme/styles/integrations/material.css +0 -254
  287. package/theme/styles/integrations/tailwind.css +0 -114
  288. package/theme/styles/variants/color/amber.css +0 -31
  289. package/theme/styles/variants/color/base.css +0 -36
  290. package/theme/styles/variants/color/blue.css +0 -31
  291. package/theme/styles/variants/color/cyan.css +0 -31
  292. package/theme/styles/variants/color/emerald.css +0 -31
  293. package/theme/styles/variants/color/fuchsia.css +0 -31
  294. package/theme/styles/variants/color/green.css +0 -31
  295. package/theme/styles/variants/color/index.css +0 -22
  296. package/theme/styles/variants/color/indigo.css +0 -31
  297. package/theme/styles/variants/color/lime.css +0 -31
  298. package/theme/styles/variants/color/orange.css +0 -31
  299. package/theme/styles/variants/color/pink.css +0 -31
  300. package/theme/styles/variants/color/purple.css +0 -31
  301. package/theme/styles/variants/color/red.css +0 -31
  302. package/theme/styles/variants/color/rose.css +0 -31
  303. package/theme/styles/variants/color/sky.css +0 -31
  304. package/theme/styles/variants/color/teal.css +0 -31
  305. package/theme/styles/variants/color/violet.css +0 -31
  306. package/theme/styles/variants/color/yellow.css +0 -31
  307. package/theme/styles/variants/mode/dark.css +0 -20
  308. package/theme/styles/variants/mode/index.css +0 -6
  309. package/theme/styles/variants/mode/light.css +0 -24
  310. package/theme/styles/variants/style/brutal.css +0 -50
  311. package/theme/styles/variants/style/default.css +0 -54
  312. package/theme/styles/variants/style/index.css +0 -8
  313. package/theme/styles/variants/style/sharp.css +0 -50
  314. package/theme/styles/variants/style/soft.css +0 -50
  315. package/theme/token/package.json +0 -4
  316. package/types/ojiepermana-angular-component-accordion.d.ts +0 -51
  317. package/types/ojiepermana-angular-component-alert-dialog.d.ts +0 -93
  318. package/types/ojiepermana-angular-component-alert.d.ts +0 -37
  319. package/types/ojiepermana-angular-component-aspect-ratio.d.ts +0 -12
  320. package/types/ojiepermana-angular-component-avatar.d.ts +0 -51
  321. package/types/ojiepermana-angular-component-badge.d.ts +0 -19
  322. package/types/ojiepermana-angular-component-breadcrumb.d.ts +0 -46
  323. package/types/ojiepermana-angular-component-button-group.d.ts +0 -26
  324. package/types/ojiepermana-angular-component-button.d.ts +0 -22
  325. package/types/ojiepermana-angular-component-calendar.d.ts +0 -33
  326. package/types/ojiepermana-angular-component-card.d.ts +0 -60
  327. package/types/ojiepermana-angular-component-carousel.d.ts +0 -86
  328. package/types/ojiepermana-angular-component-chart-area.d.ts +0 -1
  329. package/types/ojiepermana-angular-component-chart-bar.d.ts +0 -1
  330. package/types/ojiepermana-angular-component-chart-line.d.ts +0 -1
  331. package/types/ojiepermana-angular-component-chart-pie.d.ts +0 -1
  332. package/types/ojiepermana-angular-component-chart-radar.d.ts +0 -1
  333. package/types/ojiepermana-angular-component-chart-radial.d.ts +0 -1
  334. package/types/ojiepermana-angular-component-chart-scatter.d.ts +0 -1
  335. package/types/ojiepermana-angular-component-chart.d.ts +0 -1094
  336. package/types/ojiepermana-angular-component-checkbox.d.ts +0 -35
  337. package/types/ojiepermana-angular-component-collapsible.d.ts +0 -42
  338. package/types/ojiepermana-angular-component-combobox.d.ts +0 -51
  339. package/types/ojiepermana-angular-component-command.d.ts +0 -99
  340. package/types/ojiepermana-angular-component-context-menu.d.ts +0 -35
  341. package/types/ojiepermana-angular-component-date-picker.d.ts +0 -41
  342. package/types/ojiepermana-angular-component-dialog.d.ts +0 -87
  343. package/types/ojiepermana-angular-component-drawer.d.ts +0 -1
  344. package/types/ojiepermana-angular-component-dropdown-menu.d.ts +0 -135
  345. package/types/ojiepermana-angular-component-form.d.ts +0 -92
  346. package/types/ojiepermana-angular-component-input-group.d.ts +0 -51
  347. package/types/ojiepermana-angular-component-input.d.ts +0 -16
  348. package/types/ojiepermana-angular-component-item.d.ts +0 -88
  349. package/types/ojiepermana-angular-component-label.d.ts +0 -11
  350. package/types/ojiepermana-angular-component-pagination.d.ts +0 -27
  351. package/types/ojiepermana-angular-component-popover.d.ts +0 -43
  352. package/types/ojiepermana-angular-component-progress.d.ts +0 -17
  353. package/types/ojiepermana-angular-component-radio.d.ts +0 -34
  354. package/types/ojiepermana-angular-component-scroll-area.d.ts +0 -19
  355. package/types/ojiepermana-angular-component-select.d.ts +0 -45
  356. package/types/ojiepermana-angular-component-separator.d.ts +0 -14
  357. package/types/ojiepermana-angular-component-sheet.d.ts +0 -74
  358. package/types/ojiepermana-angular-component-skeleton.d.ts +0 -10
  359. package/types/ojiepermana-angular-component-slider.d.ts +0 -16
  360. package/types/ojiepermana-angular-component-switch.d.ts +0 -30
  361. package/types/ojiepermana-angular-component-table.d.ts +0 -52
  362. package/types/ojiepermana-angular-component-tabs.d.ts +0 -92
  363. package/types/ojiepermana-angular-component-textarea.d.ts +0 -12
  364. package/types/ojiepermana-angular-component-toast.d.ts +0 -29
  365. package/types/ojiepermana-angular-component-tooltip.d.ts +0 -22
  366. package/types/ojiepermana-angular-component-utils.d.ts +0 -5
  367. package/types/ojiepermana-angular-generator-api.d.ts +0 -86
  368. package/types/ojiepermana-angular-layout-component.d.ts +0 -205
  369. package/types/ojiepermana-angular-layout-empty.d.ts +0 -22
  370. package/types/ojiepermana-angular-layout-horizontal.d.ts +0 -36
  371. package/types/ojiepermana-angular-layout-provider.d.ts +0 -6
  372. package/types/ojiepermana-angular-layout-services.d.ts +0 -25
  373. package/types/ojiepermana-angular-layout-shell.d.ts +0 -8
  374. package/types/ojiepermana-angular-layout-token-directive.d.ts +0 -13
  375. package/types/ojiepermana-angular-layout-token.d.ts +0 -36
  376. package/types/ojiepermana-angular-layout-vertical.d.ts +0 -38
  377. package/types/ojiepermana-angular-layout.d.ts +0 -164
  378. package/types/ojiepermana-angular-navigation-demo-data.d.ts +0 -5
  379. package/types/ojiepermana-angular-navigation-icon.d.ts +0 -17
  380. package/types/ojiepermana-angular-navigation-item.d.ts +0 -54
  381. package/types/ojiepermana-angular-navigation-service.d.ts +0 -77
  382. package/types/ojiepermana-angular-navigation-sidebar.d.ts +0 -75
  383. package/types/ojiepermana-angular-navigation-topbar.d.ts +0 -54
  384. package/types/ojiepermana-angular-navigation-types.d.ts +0 -129
  385. package/types/ojiepermana-angular-theme-provider.d.ts +0 -11
  386. package/types/ojiepermana-angular-theme-services.d.ts +0 -55
  387. package/types/ojiepermana-angular-theme-token.d.ts +0 -57
@@ -1,295 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.emitMetadata = emitMetadata;
4
- const template_1 = require("../render/template");
5
- /**
6
- * Emit frontend-friendly metadata:
7
- * - `metadata-types.ts` shared rule types
8
- * - `permissions/<tag>.ts` operation rules (per tag) + `index.ts`
9
- * - `validators/<tag>.ts` schema validation rules (per tag) + `index.ts`
10
- * - `metadata.ts` aggregate export
11
- * - `openapi-helpers.ts` small helpers (`getRequiredPermissions`, etc)
12
- */
13
- function emitMetadata(ir, target) {
14
- const files = [];
15
- files.push({ path: 'metadata-types.ts', content: (0, template_1.finalize)(metadataTypesFile(target)) });
16
- const opsByTag = groupOps(ir.operations);
17
- for (const [tag, ops] of opsByTag) {
18
- files.push({
19
- path: `permissions/${(0, template_1.kebabCase)(tag)}.ts`,
20
- content: (0, template_1.finalize)(permissionFile(tag, ops, target)),
21
- });
22
- }
23
- const permTags = Array.from(opsByTag.keys());
24
- files.push({
25
- path: 'permissions/index.ts',
26
- content: (0, template_1.finalize)(buildAggregateFile(target, permTags, 'ApiOperationRule', 'apiOperationRules', (t) => `${toCamel(t)}OperationRules`)),
27
- });
28
- const schemasByPrefix = groupSchemas(ir.schemas);
29
- for (const [group, schemas] of schemasByPrefix) {
30
- files.push({
31
- path: `validators/${(0, template_1.kebabCase)(group)}.ts`,
32
- content: (0, template_1.finalize)(validatorFile(group, schemas, target)),
33
- });
34
- }
35
- const valGroups = Array.from(schemasByPrefix.keys());
36
- files.push({
37
- path: 'validators/index.ts',
38
- content: (0, template_1.finalize)(buildAggregateFile(target, valGroups, 'ApiSchemaRule', 'apiValidationSchemas', (g) => `${toCamel(g)}ValidationSchemas`)),
39
- });
40
- files.push({ path: 'metadata.ts', content: (0, template_1.finalize)(metadataFile(target)) });
41
- files.push({ path: 'openapi-helpers.ts', content: (0, template_1.finalize)(helpersFile(target)) });
42
- return files;
43
- }
44
- /**
45
- * Emit a per-feature `index.ts` that re-exports each per-tag module plus a
46
- * single aggregated record (`apiOperationRules`, `apiValidationSchemas`).
47
- */
48
- function buildAggregateFile(target, groups, typeName, aggregateName, varNameFor) {
49
- const reexports = groups.map((g) => `export { ${varNameFor(g)} } from './${(0, template_1.kebabCase)(g)}';`).join('\n');
50
- const imports = groups.map((g) => `import { ${varNameFor(g)} } from './${(0, template_1.kebabCase)(g)}';`).join('\n');
51
- const spreads = groups.map((g) => ` ...${varNameFor(g)},`).join('\n');
52
- return `${target.banner}
53
-
54
- import type { ${typeName} } from '../metadata-types';
55
- ${imports}
56
-
57
- ${reexports}
58
-
59
- export const ${aggregateName}: Record<string, ${typeName}> = {
60
- ${spreads}
61
- };
62
- `;
63
- }
64
- function metadataTypesFile(target) {
65
- return `${target.banner}
66
-
67
- export interface ApiFieldRule {
68
- required?: boolean;
69
- type?: string;
70
- format?: string;
71
- description?: string;
72
- nullable?: boolean;
73
- minLength?: number;
74
- maxLength?: number;
75
- minimum?: number;
76
- maximum?: number;
77
- pattern?: string;
78
- enumValues?: readonly (string | number)[];
79
- ref?: string;
80
- itemsRef?: string;
81
- itemsType?: string;
82
- }
83
-
84
- export interface ApiSchemaRule {
85
- required: readonly string[];
86
- properties: Record<string, ApiFieldRule>;
87
- }
88
-
89
- export interface ApiOperationRule {
90
- method: string;
91
- path: string;
92
- tags: readonly string[];
93
- summary?: string;
94
- description?: string;
95
- requiredPermissions: readonly string[];
96
- authorizationNotes: readonly string[];
97
- securitySchemes: readonly string[];
98
- pathParams: Record<string, ApiFieldRule>;
99
- queryParams: Record<string, ApiFieldRule>;
100
- bodySchema?: string;
101
- responseSchemas: Record<string, string | undefined>;
102
- }
103
- `;
104
- }
105
- function permissionFile(tag, ops, target) {
106
- const entries = ops
107
- .slice()
108
- .sort((a, b) => a.operationId.localeCompare(b.operationId))
109
- .map((op) => renderOperationRule(op));
110
- return `${target.banner}
111
-
112
- import type { ApiOperationRule } from '../metadata-types';
113
-
114
- export const ${toCamel(tag)}OperationRules: Record<string, ApiOperationRule> = {
115
- ${entries.join(',\n')},
116
- };
117
- `;
118
- }
119
- function renderOperationRule(op) {
120
- const pathParams = {};
121
- const queryParams = {};
122
- for (const p of op.params) {
123
- const rule = trimRule(p.rule, p.required);
124
- if (p.in === 'path')
125
- pathParams[p.name] = rule;
126
- else if (p.in === 'query')
127
- queryParams[p.name] = rule;
128
- }
129
- const obj = {
130
- method: op.method.toUpperCase(),
131
- path: op.path,
132
- tags: op.tags,
133
- summary: op.summary,
134
- description: op.description,
135
- requiredPermissions: op.requiredPermissions,
136
- authorizationNotes: op.authorizationNotes,
137
- securitySchemes: op.securitySchemes,
138
- pathParams,
139
- queryParams,
140
- bodySchema: op.bodySchemaRef,
141
- responseSchemas: op.responses,
142
- };
143
- return ` ${JSON.stringify(op.operationId)}: ${toInlineJson(obj, 2)}`;
144
- }
145
- function validatorFile(group, schemas, target) {
146
- const entries = schemas
147
- .slice()
148
- .sort((a, b) => a.name.localeCompare(b.name))
149
- .map((s) => renderSchemaRule(s));
150
- return `${target.banner}
151
-
152
- import type { ApiSchemaRule } from '../metadata-types';
153
-
154
- export const ${toCamel(group)}ValidationSchemas: Record<string, ApiSchemaRule> = {
155
- ${entries.join(',\n')},
156
- };
157
- `;
158
- }
159
- function renderSchemaRule(schema) {
160
- const properties = {};
161
- for (const [name, rule] of Object.entries(schema.properties)) {
162
- properties[name] = trimRule(rule, rule.required === true);
163
- }
164
- const obj = {
165
- required: schema.required,
166
- properties,
167
- };
168
- return ` ${JSON.stringify(schema.name)}: ${toInlineJson(obj, 2)}`;
169
- }
170
- function metadataFile(target) {
171
- return `${target.banner}
172
-
173
- export * from './metadata-types';
174
- export * from './permissions';
175
- export * from './validators';
176
- `;
177
- }
178
- function helpersFile(target) {
179
- return `${target.banner}
180
-
181
- import { apiOperationRules, apiValidationSchemas } from './metadata';
182
- import type { ApiFieldRule, ApiOperationRule, ApiSchemaRule } from './metadata-types';
183
-
184
- export function getSchemaRule(schemaName: string): ApiSchemaRule | undefined {
185
- return apiValidationSchemas[schemaName];
186
- }
187
-
188
- export function getFieldRule(schemaName: string, fieldName: string): ApiFieldRule | undefined {
189
- return apiValidationSchemas[schemaName]?.properties[fieldName];
190
- }
191
-
192
- export function getOperationRule(operationId: string): ApiOperationRule | undefined {
193
- return apiOperationRules[operationId];
194
- }
195
-
196
- export function getRequiredPermissions(operationId: string): readonly string[] {
197
- return apiOperationRules[operationId]?.requiredPermissions ?? [];
198
- }
199
-
200
- export function hasRequiredPermissions(
201
- operationId: string,
202
- ownedPermissions: readonly string[],
203
- ): boolean {
204
- return getRequiredPermissions(operationId).every((p) => ownedPermissions.includes(p));
205
- }
206
- `;
207
- }
208
- // ---------------------------------------------------------------------------
209
- // Helpers
210
- // ---------------------------------------------------------------------------
211
- function groupOps(operations) {
212
- const map = new Map();
213
- for (const op of operations) {
214
- const bucket = map.get(op.tag) ?? [];
215
- bucket.push(op);
216
- map.set(op.tag, bucket);
217
- }
218
- return map;
219
- }
220
- /**
221
- * Group schemas for validator output by a common prefix tag. We use a simple
222
- * heuristic: first PascalCase word of the schema name (e.g. `UserListResponse`
223
- * → `User`, `AuthTokenResponse` → `Auth`). Keeps file sizes small and mirrors
224
- * the reference layout.
225
- */
226
- function groupSchemas(schemas) {
227
- const map = new Map();
228
- for (const s of schemas) {
229
- const prefix = detectSchemaGroup(s.name);
230
- const bucket = map.get(prefix) ?? [];
231
- bucket.push(s);
232
- map.set(prefix, bucket);
233
- }
234
- return map;
235
- }
236
- function detectSchemaGroup(name) {
237
- const match = name.match(/^([A-Z][a-z]+)/);
238
- return match ? match[1] : 'Shared';
239
- }
240
- function trimRule(rule, required) {
241
- const out = {};
242
- if (required)
243
- out.required = true;
244
- else
245
- out.required = false;
246
- if (rule.type)
247
- out.type = rule.type;
248
- if (rule.format)
249
- out.format = rule.format;
250
- if (rule.description)
251
- out.description = rule.description;
252
- if (rule.nullable)
253
- out.nullable = true;
254
- if (typeof rule.minLength === 'number')
255
- out.minLength = rule.minLength;
256
- if (typeof rule.maxLength === 'number')
257
- out.maxLength = rule.maxLength;
258
- if (typeof rule.minimum === 'number')
259
- out.minimum = rule.minimum;
260
- if (typeof rule.maximum === 'number')
261
- out.maximum = rule.maximum;
262
- if (rule.pattern)
263
- out.pattern = rule.pattern;
264
- if (rule.enumValues && rule.enumValues.length)
265
- out.enumValues = rule.enumValues;
266
- if (rule.ref)
267
- out.ref = rule.ref;
268
- if (rule.itemsRef)
269
- out.itemsRef = rule.itemsRef;
270
- if (rule.itemsType)
271
- out.itemsType = rule.itemsType;
272
- return out;
273
- }
274
- /** Stable JSON output with stripped `undefined` values. */
275
- function toInlineJson(value, indent) {
276
- const pretty = JSON.stringify(value, (_key, val) => (val === undefined ? undefined : val), 2);
277
- if (!pretty)
278
- return 'undefined';
279
- return pretty
280
- .split('\n')
281
- .map((line, i) => (i === 0 ? line : ' '.repeat(indent) + line))
282
- .join('\n');
283
- }
284
- function toCamel(input) {
285
- const parts = String(input)
286
- .replace(/[^a-zA-Z0-9]+/g, ' ')
287
- .trim()
288
- .split(/\s+/)
289
- .filter(Boolean);
290
- if (!parts.length)
291
- return 'shared';
292
- return parts
293
- .map((w, i) => (i === 0 ? w[0].toLowerCase() + w.slice(1) : w[0].toUpperCase() + w.slice(1).toLowerCase()))
294
- .join('');
295
- }
@@ -1,106 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.emitModels = emitModels;
4
- exports.renderFieldType = renderFieldType;
5
- const template_1 = require("../render/template");
6
- /**
7
- * Emit one `interface` per schema into `models/<kebab>.ts` — type-only, no
8
- * runtime footprint.
9
- */
10
- function emitModels(ir, target) {
11
- const files = [];
12
- for (const schema of ir.schemas) {
13
- const fileName = `${(0, template_1.kebabCase)(schema.name)}.ts`;
14
- files.push({
15
- path: `models/${fileName}`,
16
- content: (0, template_1.finalize)(renderModel(schema, ir, target)),
17
- });
18
- }
19
- return files;
20
- }
21
- function renderModel(schema, ir, target) {
22
- const imports = collectModelImports(schema).filter((name) => name !== schema.name);
23
- const importLines = imports.map((name) => `import type { ${name} } from './${(0, template_1.kebabCase)(name)}';`);
24
- let body = '';
25
- if (schema.enumValues) {
26
- // Primitive enum alias.
27
- body = `export type ${(0, template_1.pascalCase)(schema.name)} = ${schema.enumValues
28
- .map((v) => (typeof v === 'string' ? `'${escapeSingle(v)}'` : String(v)))
29
- .join(' | ')};`;
30
- }
31
- else if (schema.arrayItemRef || schema.arrayItemType) {
32
- const itemType = schema.arrayItemRef ? (0, template_1.pascalCase)(schema.arrayItemRef) : tsPrimitive(schema.arrayItemType);
33
- body = `export type ${(0, template_1.pascalCase)(schema.name)} = ${itemType}[];`;
34
- }
35
- else {
36
- body = renderInterface(schema);
37
- }
38
- return [target.banner, '', ...importLines, importLines.length ? '' : '', body].join('\n');
39
- }
40
- function renderInterface(schema) {
41
- const lines = [];
42
- lines.push(`export interface ${(0, template_1.pascalCase)(schema.name)} {`);
43
- for (const [propName, rule] of Object.entries(schema.properties)) {
44
- const optional = rule.required ? '' : '?';
45
- const type = renderFieldType(rule);
46
- const safeName = /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(propName) ? propName : `'${propName}'`;
47
- lines.push(` ${safeName}${optional}: ${type};`);
48
- }
49
- lines.push(`}`);
50
- return lines.join('\n');
51
- }
52
- function renderFieldType(rule) {
53
- let base;
54
- if (rule.ref) {
55
- base = (0, template_1.pascalCase)(rule.ref);
56
- }
57
- else if (rule.type === 'array') {
58
- const item = rule.itemsRef
59
- ? (0, template_1.pascalCase)(rule.itemsRef)
60
- : rule.enumValues
61
- ? rule.enumValues.map((v) => (typeof v === 'string' ? `'${escapeSingle(v)}'` : String(v))).join(' | ')
62
- : tsPrimitive(rule.itemsType);
63
- base = rule.enumValues && !rule.itemsRef ? `(${item})[]` : `${item}[]`;
64
- }
65
- else if (rule.enumValues && rule.enumValues.length > 0) {
66
- base = rule.enumValues.map((v) => (typeof v === 'string' ? `'${escapeSingle(v)}'` : String(v))).join(' | ');
67
- }
68
- else {
69
- base = tsPrimitive(rule.type);
70
- }
71
- return rule.nullable ? `${base} | null` : base;
72
- }
73
- function tsPrimitive(type) {
74
- switch (type) {
75
- case 'string':
76
- return 'string';
77
- case 'integer':
78
- case 'number':
79
- return 'number';
80
- case 'boolean':
81
- return 'boolean';
82
- case 'array':
83
- return 'unknown[]';
84
- case 'object':
85
- return 'Record<string, unknown>';
86
- case undefined:
87
- case 'unknown':
88
- default:
89
- return 'unknown';
90
- }
91
- }
92
- function escapeSingle(value) {
93
- return value.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
94
- }
95
- function collectModelImports(schema) {
96
- const set = new Set();
97
- if (schema.arrayItemRef)
98
- set.add(schema.arrayItemRef);
99
- for (const rule of Object.values(schema.properties)) {
100
- if (rule.ref)
101
- set.add(rule.ref);
102
- if (rule.itemsRef)
103
- set.add(rule.itemsRef);
104
- }
105
- return [...set].sort();
106
- }
@@ -1,56 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.emitNavigation = emitNavigation;
4
- const template_1 = require("../render/template");
5
- /**
6
- * Emit `api.navigation.ts` exporting `NavigationItem[]` data that plugs
7
- * directly into `NavigationService.registerItems(...)` from
8
- * `@ojiepermana/angular/navigation`.
9
- */
10
- function emitNavigation(ir, target) {
11
- return [
12
- {
13
- path: 'api.navigation.ts',
14
- content: (0, template_1.finalize)(renderNavigation(ir.navigation, target)),
15
- },
16
- ];
17
- }
18
- function renderNavigation(nodes, target) {
19
- return `${target.banner}
20
-
21
- import type { NavigationItem } from '@ojiepermana/angular/navigation/types';
22
-
23
- export const ApiNavigation: NavigationItem[] = ${stringifyNodes(nodes, 0, [])};
24
- `;
25
- }
26
- function stringifyNodes(nodes, depth, lineage) {
27
- if (!nodes.length)
28
- return '[]';
29
- const pad = ' '.repeat(depth + 1);
30
- const closePad = ' '.repeat(depth);
31
- return `[\n${nodes
32
- .map((node) => pad + stringifyNode(node, depth + 1, [...lineage, node.name]))
33
- .join(',\n')},\n${closePad}]`;
34
- }
35
- function stringifyNode(node, depth, lineage) {
36
- const hasChildren = node.children.length > 0;
37
- const pad = ' '.repeat(depth + 1);
38
- const closePad = ' '.repeat(depth);
39
- const fields = [
40
- `${pad}id: ${JSON.stringify(lineage.map(template_1.kebabCase).filter(Boolean).join('-'))}`,
41
- `${pad}title: ${JSON.stringify(node.name)}`,
42
- `${pad}type: ${JSON.stringify(resolveItemType(lineage.length - 1, hasChildren))}`,
43
- ];
44
- if (node.description)
45
- fields.push(`${pad}subtitle: ${JSON.stringify(node.description)}`);
46
- if (node.xIcon)
47
- fields.push(`${pad}icon: ${JSON.stringify(node.xIcon)}`);
48
- if (hasChildren)
49
- fields.push(`${pad}children: ${stringifyNodes(node.children, depth + 1, lineage)}`);
50
- return `{\n${fields.join(',\n')},\n${closePad}}`;
51
- }
52
- function resolveItemType(depth, hasChildren) {
53
- if (!hasChildren)
54
- return 'basic';
55
- return depth === 0 ? 'group' : 'collapsable';
56
- }
@@ -1,122 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.emitOperations = emitOperations;
4
- const template_1 = require("../render/template");
5
- const models_1 = require("./models");
6
- /**
7
- * Emit one tree-shakeable operation function per operationId at
8
- * `fn/<tag-kebab>/<operation-kebab>.ts`.
9
- *
10
- * Each file exports:
11
- * - `<operationId>$Params` interface
12
- * - `<operationId>` function returning `Observable<StrictHttpResponse<R>>`
13
- * - `<operationId>.PATH` constant
14
- */
15
- function emitOperations(ir, target) {
16
- return ir.operations.map((op) => ({
17
- path: `fn/${(0, template_1.kebabCase)(op.tag)}/${(0, template_1.kebabCase)(op.operationId)}.ts`,
18
- content: (0, template_1.finalize)(renderOperation(op, target)),
19
- }));
20
- }
21
- function renderOperation(op, target) {
22
- const fnName = (0, template_1.camelCase)(op.operationId);
23
- const paramsName = `${(0, template_1.pascalCase)(op.operationId)}$Params`;
24
- const responseType = op.successRef ? (0, template_1.pascalCase)(op.successRef) : 'unknown';
25
- const paramImports = collectParamImports(op);
26
- const imports = [
27
- `import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';`,
28
- `import { Observable } from 'rxjs';`,
29
- `import { filter, map } from 'rxjs/operators';`,
30
- ``,
31
- `import { RequestBuilder } from '../../request-builder';`,
32
- `import { StrictHttpResponse } from '../../strict-http-response';`,
33
- ];
34
- for (const name of paramImports) {
35
- imports.push(`import type { ${(0, template_1.pascalCase)(name)} } from '../../models/${(0, template_1.kebabCase)(name)}';`);
36
- }
37
- const paramsInterface = renderParamsInterface(op, paramsName);
38
- const hasAnyParams = paramsInterface.hasAnyField;
39
- const paramsOptional = !paramsInterface.anyRequired;
40
- const bodyCT = op.bodySchemaRef ? "'application/json'" : '';
41
- const pathCalls = op.params
42
- .filter((p) => p.in === 'path')
43
- .map((p) => ` rb.path('${p.name}', params.${safeProp(p.name)});`);
44
- const queryCalls = op.params
45
- .filter((p) => p.in === 'query')
46
- .map((p) => ` rb.query('${p.name}', params.${safeProp(p.name)});`);
47
- const headerCalls = op.params
48
- .filter((p) => p.in === 'header')
49
- .map((p) => ` rb.header('${p.name}', params.${safeProp(p.name)});`);
50
- const bodyCall = op.bodySchemaRef ? ` rb.body(params.body, ${bodyCT});` : '';
51
- const populate = pathCalls.length || queryCalls.length || headerCalls.length || bodyCall
52
- ? ` if (params) {
53
- ${[...pathCalls, ...queryCalls, ...headerCalls, bodyCall].filter(Boolean).join('\n')}
54
- }`
55
- : '';
56
- const paramsArg = hasAnyParams
57
- ? `params${paramsOptional ? '?' : ''}: ${paramsName}`
58
- : `_params?: Record<string, never>`;
59
- return `${target.banner}
60
-
61
- ${imports.join('\n')}
62
-
63
- ${paramsInterface.source}
64
- export function ${fnName}(
65
- http: HttpClient,
66
- rootUrl: string,
67
- ${paramsArg},
68
- context?: HttpContext,
69
- ): Observable<StrictHttpResponse<${responseType}>> {
70
- const rb = new RequestBuilder(rootUrl, ${fnName}.PATH, '${op.method}');
71
- ${populate}
72
- return http.request(rb.build({ responseType: 'json', accept: 'application/json', context })).pipe(
73
- filter((r: unknown): r is HttpResponse<unknown> => r instanceof HttpResponse),
74
- map((r) => r as StrictHttpResponse<${responseType}>),
75
- );
76
- }
77
-
78
- ${fnName}.PATH = '${op.path}';
79
- `;
80
- }
81
- function collectParamImports(op) {
82
- const set = new Set();
83
- for (const p of op.params) {
84
- if (p.rule.ref)
85
- set.add(p.rule.ref);
86
- if (p.rule.itemsRef)
87
- set.add(p.rule.itemsRef);
88
- }
89
- if (op.bodySchemaRef)
90
- set.add(op.bodySchemaRef);
91
- if (op.successRef)
92
- set.add(op.successRef);
93
- return [...set].sort();
94
- }
95
- function renderParamsInterface(op, paramsName) {
96
- const lines = [];
97
- let anyRequired = false;
98
- const pushField = (p) => {
99
- const optional = p.required ? '' : '?';
100
- if (p.required)
101
- anyRequired = true;
102
- const type = (0, models_1.renderFieldType)(p.rule);
103
- const name = /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(p.name) ? p.name : `'${p.name}'`;
104
- lines.push(` ${name}${optional}: ${type};`);
105
- };
106
- for (const p of op.params)
107
- pushField(p);
108
- if (op.bodySchemaRef) {
109
- const optional = op.bodyRequired ? '' : '?';
110
- if (op.bodyRequired)
111
- anyRequired = true;
112
- lines.push(` body${optional}: ${(0, template_1.pascalCase)(op.bodySchemaRef)};`);
113
- }
114
- const hasAnyField = lines.length > 0;
115
- const source = hasAnyField
116
- ? `export interface ${paramsName} {\n${lines.join('\n')}\n}\n`
117
- : `export type ${paramsName} = Record<string, never>;\n`;
118
- return { source, hasAnyField, anyRequired };
119
- }
120
- function safeProp(name) {
121
- return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name) ? name : `['${name}']`;
122
- }
@@ -1,54 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.emitPublicApi = emitPublicApi;
4
- const template_1 = require("../render/template");
5
- /**
6
- * Emit `public-api.ts` — the barrel that re-exports every generated artifact
7
- * based on the resolved feature flags. Mirrors the convention used by the
8
- * reference output in `old/api/index.ts`.
9
- */
10
- function emitPublicApi(ir, target) {
11
- const lines = [target.banner, ''];
12
- if (target.features.client) {
13
- lines.push(`export { ApiConfiguration, provideApiConfiguration } from './api-configuration';`);
14
- lines.push(`export { BaseService } from './base-service';`);
15
- lines.push(`export { RequestBuilder } from './request-builder';`);
16
- lines.push(`export type { StrictHttpResponse } from './strict-http-response';`);
17
- lines.push(`export { ${target.clientName} } from './api';`);
18
- lines.push('');
19
- }
20
- if (target.features.models) {
21
- for (const schema of ir.schemas) {
22
- lines.push(`export type { ${(0, template_1.pascalCase)(schema.name)} } from './models/${(0, template_1.kebabCase)(schema.name)}';`);
23
- }
24
- lines.push('');
25
- }
26
- if (target.features.services) {
27
- const tags = Array.from(new Set(ir.operations.map((o) => o.tag))).sort();
28
- for (const tag of tags) {
29
- lines.push(`export { ${(0, template_1.pascalCase)(tag)}Service } from './services/${(0, template_1.kebabCase)(tag)}.service';`);
30
- }
31
- lines.push('');
32
- }
33
- if (target.features.operations) {
34
- const sorted = [...ir.operations].sort((a, b) => a.operationId.localeCompare(b.operationId));
35
- for (const op of sorted) {
36
- lines.push(renderFnReexport(op));
37
- }
38
- lines.push('');
39
- }
40
- if (target.features.metadata) {
41
- lines.push(`export * from './metadata';`);
42
- lines.push(`export * from './openapi-helpers';`);
43
- lines.push('');
44
- }
45
- if (target.features.navigation) {
46
- lines.push(`export { ApiNavigation } from './api.navigation';`);
47
- }
48
- return [{ path: 'public-api.ts', content: (0, template_1.finalize)(lines.join('\n')) }];
49
- }
50
- function renderFnReexport(op) {
51
- const fnName = (0, template_1.camelCase)(op.operationId);
52
- const paramsName = `${(0, template_1.pascalCase)(op.operationId)}$Params`;
53
- return `export { ${fnName}, type ${paramsName} } from './fn/${(0, template_1.kebabCase)(op.tag)}/${(0, template_1.kebabCase)(op.operationId)}';`;
54
- }