@ojiepermana/angular 22.0.1 → 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 (517) hide show
  1. package/README.md +16 -302
  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 -382
  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 -425
  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/README.md +0 -195
  24. package/component/accordion/package.json +0 -4
  25. package/component/alert/README.md +0 -182
  26. package/component/alert/package.json +0 -4
  27. package/component/alert-dialog/README.md +0 -239
  28. package/component/alert-dialog/package.json +0 -4
  29. package/component/aspect-ratio/README.md +0 -112
  30. package/component/aspect-ratio/package.json +0 -4
  31. package/component/avatar/README.md +0 -176
  32. package/component/avatar/package.json +0 -4
  33. package/component/badge/README.md +0 -133
  34. package/component/badge/package.json +0 -4
  35. package/component/breadcrumb/README.md +0 -216
  36. package/component/breadcrumb/package.json +0 -4
  37. package/component/button/README.md +0 -139
  38. package/component/button/package.json +0 -4
  39. package/component/button-group/README.md +0 -208
  40. package/component/button-group/package.json +0 -4
  41. package/component/calendar/README.md +0 -132
  42. package/component/calendar/package.json +0 -4
  43. package/component/card/README.md +0 -220
  44. package/component/card/package.json +0 -4
  45. package/component/carousel/README.md +0 -276
  46. package/component/carousel/package.json +0 -4
  47. package/component/chart/README.md +0 -249
  48. package/component/chart/area/package.json +0 -4
  49. package/component/chart/bar/package.json +0 -4
  50. package/component/chart/line/package.json +0 -4
  51. package/component/chart/package.json +0 -4
  52. package/component/chart/pie/package.json +0 -4
  53. package/component/chart/radar/package.json +0 -4
  54. package/component/chart/radial/package.json +0 -4
  55. package/component/chart/scatter/package.json +0 -4
  56. package/component/checkbox/README.md +0 -149
  57. package/component/checkbox/package.json +0 -4
  58. package/component/collapsible/README.md +0 -195
  59. package/component/collapsible/package.json +0 -4
  60. package/component/combobox/README.md +0 -198
  61. package/component/combobox/package.json +0 -4
  62. package/component/command/README.md +0 -275
  63. package/component/command/package.json +0 -4
  64. package/component/composer/README.md +0 -235
  65. package/component/composer/package.json +0 -4
  66. package/component/context-menu/README.md +0 -267
  67. package/component/context-menu/package.json +0 -4
  68. package/component/date-picker/README.md +0 -177
  69. package/component/date-picker/package.json +0 -4
  70. package/component/dialog/README.md +0 -237
  71. package/component/dialog/package.json +0 -4
  72. package/component/drawer/README.md +0 -145
  73. package/component/drawer/package.json +0 -4
  74. package/component/dropdown-menu/README.md +0 -311
  75. package/component/dropdown-menu/package.json +0 -4
  76. package/component/editor/README.md +0 -136
  77. package/component/editor/package.json +0 -4
  78. package/component/empty/README.md +0 -183
  79. package/component/empty/package.json +0 -4
  80. package/component/form/README.md +0 -210
  81. package/component/form/package.json +0 -4
  82. package/component/hover-card/README.md +0 -146
  83. package/component/hover-card/package.json +0 -4
  84. package/component/input/README.md +0 -159
  85. package/component/input/package.json +0 -4
  86. package/component/input-group/README.md +0 -239
  87. package/component/input-group/package.json +0 -4
  88. package/component/input-otp/README.md +0 -278
  89. package/component/input-otp/package.json +0 -4
  90. package/component/item/README.md +0 -247
  91. package/component/item/package.json +0 -4
  92. package/component/kanban/README.md +0 -81
  93. package/component/kanban/package.json +0 -4
  94. package/component/kbd/README.md +0 -139
  95. package/component/kbd/package.json +0 -4
  96. package/component/label/README.md +0 -136
  97. package/component/label/package.json +0 -4
  98. package/component/menubar/README.md +0 -269
  99. package/component/menubar/package.json +0 -4
  100. package/component/native-select/README.md +0 -176
  101. package/component/native-select/package.json +0 -4
  102. package/component/navigation-menu/README.md +0 -160
  103. package/component/navigation-menu/package.json +0 -4
  104. package/component/pagination/README.md +0 -144
  105. package/component/pagination/package.json +0 -4
  106. package/component/pillbox/README.md +0 -67
  107. package/component/pillbox/package.json +0 -4
  108. package/component/popover/README.md +0 -43
  109. package/component/popover/package.json +0 -4
  110. package/component/progress/README.md +0 -160
  111. package/component/progress/package.json +0 -4
  112. package/component/radio/README.md +0 -209
  113. package/component/radio/package.json +0 -4
  114. package/component/resizable/README.md +0 -168
  115. package/component/resizable/package.json +0 -4
  116. package/component/scroll-area/README.md +0 -143
  117. package/component/scroll-area/package.json +0 -4
  118. package/component/select/README.md +0 -174
  119. package/component/select/package.json +0 -4
  120. package/component/separator/README.md +0 -170
  121. package/component/separator/package.json +0 -4
  122. package/component/sheet/README.md +0 -183
  123. package/component/sheet/package.json +0 -4
  124. package/component/skeleton/README.md +0 -158
  125. package/component/skeleton/package.json +0 -4
  126. package/component/slider/README.md +0 -207
  127. package/component/slider/package.json +0 -4
  128. package/component/spinner/README.md +0 -160
  129. package/component/spinner/package.json +0 -4
  130. package/component/switch/README.md +0 -166
  131. package/component/switch/package.json +0 -4
  132. package/component/table/README.md +0 -291
  133. package/component/table/package.json +0 -4
  134. package/component/tabs/README.md +0 -219
  135. package/component/tabs/package.json +0 -4
  136. package/component/textarea/README.md +0 -154
  137. package/component/textarea/package.json +0 -4
  138. package/component/timeline/README.md +0 -94
  139. package/component/timeline/package.json +0 -4
  140. package/component/toast/README.md +0 -321
  141. package/component/toast/package.json +0 -4
  142. package/component/toggle/README.md +0 -131
  143. package/component/toggle/package.json +0 -4
  144. package/component/toggle-group/README.md +0 -206
  145. package/component/toggle-group/package.json +0 -4
  146. package/component/tooltip/README.md +0 -211
  147. package/component/tooltip/package.json +0 -4
  148. package/component/utils/package.json +0 -4
  149. package/fesm2022/ojiepermana-angular-component-accordion.mjs +0 -189
  150. package/fesm2022/ojiepermana-angular-component-accordion.mjs.map +0 -1
  151. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +0 -276
  152. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs.map +0 -1
  153. package/fesm2022/ojiepermana-angular-component-alert.mjs +0 -99
  154. package/fesm2022/ojiepermana-angular-component-alert.mjs.map +0 -1
  155. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +0 -37
  156. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs.map +0 -1
  157. package/fesm2022/ojiepermana-angular-component-avatar.mjs +0 -139
  158. package/fesm2022/ojiepermana-angular-component-avatar.mjs.map +0 -1
  159. package/fesm2022/ojiepermana-angular-component-badge.mjs +0 -50
  160. package/fesm2022/ojiepermana-angular-component-badge.mjs.map +0 -1
  161. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +0 -200
  162. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs.map +0 -1
  163. package/fesm2022/ojiepermana-angular-component-button-group.mjs +0 -103
  164. package/fesm2022/ojiepermana-angular-component-button-group.mjs.map +0 -1
  165. package/fesm2022/ojiepermana-angular-component-button.mjs +0 -68
  166. package/fesm2022/ojiepermana-angular-component-button.mjs.map +0 -1
  167. package/fesm2022/ojiepermana-angular-component-calendar.mjs +0 -88
  168. package/fesm2022/ojiepermana-angular-component-calendar.mjs.map +0 -1
  169. package/fesm2022/ojiepermana-angular-component-card.mjs +0 -152
  170. package/fesm2022/ojiepermana-angular-component-card.mjs.map +0 -1
  171. package/fesm2022/ojiepermana-angular-component-carousel.mjs +0 -334
  172. package/fesm2022/ojiepermana-angular-component-carousel.mjs.map +0 -1
  173. package/fesm2022/ojiepermana-angular-component-chart-area.mjs +0 -6
  174. package/fesm2022/ojiepermana-angular-component-chart-area.mjs.map +0 -1
  175. package/fesm2022/ojiepermana-angular-component-chart-bar.mjs +0 -6
  176. package/fesm2022/ojiepermana-angular-component-chart-bar.mjs.map +0 -1
  177. package/fesm2022/ojiepermana-angular-component-chart-line.mjs +0 -6
  178. package/fesm2022/ojiepermana-angular-component-chart-line.mjs.map +0 -1
  179. package/fesm2022/ojiepermana-angular-component-chart-pie.mjs +0 -6
  180. package/fesm2022/ojiepermana-angular-component-chart-pie.mjs.map +0 -1
  181. package/fesm2022/ojiepermana-angular-component-chart-radar.mjs +0 -6
  182. package/fesm2022/ojiepermana-angular-component-chart-radar.mjs.map +0 -1
  183. package/fesm2022/ojiepermana-angular-component-chart-radial.mjs +0 -6
  184. package/fesm2022/ojiepermana-angular-component-chart-radial.mjs.map +0 -1
  185. package/fesm2022/ojiepermana-angular-component-chart-scatter.mjs +0 -6
  186. package/fesm2022/ojiepermana-angular-component-chart-scatter.mjs.map +0 -1
  187. package/fesm2022/ojiepermana-angular-component-chart.mjs +0 -3925
  188. package/fesm2022/ojiepermana-angular-component-chart.mjs.map +0 -1
  189. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +0 -114
  190. package/fesm2022/ojiepermana-angular-component-checkbox.mjs.map +0 -1
  191. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +0 -124
  192. package/fesm2022/ojiepermana-angular-component-collapsible.mjs.map +0 -1
  193. package/fesm2022/ojiepermana-angular-component-combobox.mjs +0 -272
  194. package/fesm2022/ojiepermana-angular-component-combobox.mjs.map +0 -1
  195. package/fesm2022/ojiepermana-angular-component-command.mjs +0 -293
  196. package/fesm2022/ojiepermana-angular-component-command.mjs.map +0 -1
  197. package/fesm2022/ojiepermana-angular-component-composer.mjs +0 -352
  198. package/fesm2022/ojiepermana-angular-component-composer.mjs.map +0 -1
  199. package/fesm2022/ojiepermana-angular-component-context-menu.mjs +0 -103
  200. package/fesm2022/ojiepermana-angular-component-context-menu.mjs.map +0 -1
  201. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +0 -170
  202. package/fesm2022/ojiepermana-angular-component-date-picker.mjs.map +0 -1
  203. package/fesm2022/ojiepermana-angular-component-dialog.mjs +0 -279
  204. package/fesm2022/ojiepermana-angular-component-dialog.mjs.map +0 -1
  205. package/fesm2022/ojiepermana-angular-component-drawer.mjs +0 -6
  206. package/fesm2022/ojiepermana-angular-component-drawer.mjs.map +0 -1
  207. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +0 -492
  208. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs.map +0 -1
  209. package/fesm2022/ojiepermana-angular-component-editor.mjs +0 -717
  210. package/fesm2022/ojiepermana-angular-component-editor.mjs.map +0 -1
  211. package/fesm2022/ojiepermana-angular-component-empty.mjs +0 -145
  212. package/fesm2022/ojiepermana-angular-component-empty.mjs.map +0 -1
  213. package/fesm2022/ojiepermana-angular-component-form.mjs +0 -366
  214. package/fesm2022/ojiepermana-angular-component-form.mjs.map +0 -1
  215. package/fesm2022/ojiepermana-angular-component-hover-card.mjs +0 -297
  216. package/fesm2022/ojiepermana-angular-component-hover-card.mjs.map +0 -1
  217. package/fesm2022/ojiepermana-angular-component-input-group.mjs +0 -179
  218. package/fesm2022/ojiepermana-angular-component-input-group.mjs.map +0 -1
  219. package/fesm2022/ojiepermana-angular-component-input-otp.mjs +0 -514
  220. package/fesm2022/ojiepermana-angular-component-input-otp.mjs.map +0 -1
  221. package/fesm2022/ojiepermana-angular-component-input.mjs +0 -45
  222. package/fesm2022/ojiepermana-angular-component-input.mjs.map +0 -1
  223. package/fesm2022/ojiepermana-angular-component-item.mjs +0 -264
  224. package/fesm2022/ojiepermana-angular-component-item.mjs.map +0 -1
  225. package/fesm2022/ojiepermana-angular-component-kanban.mjs +0 -314
  226. package/fesm2022/ojiepermana-angular-component-kanban.mjs.map +0 -1
  227. package/fesm2022/ojiepermana-angular-component-kbd.mjs +0 -55
  228. package/fesm2022/ojiepermana-angular-component-kbd.mjs.map +0 -1
  229. package/fesm2022/ojiepermana-angular-component-label.mjs +0 -33
  230. package/fesm2022/ojiepermana-angular-component-label.mjs.map +0 -1
  231. package/fesm2022/ojiepermana-angular-component-menubar.mjs +0 -308
  232. package/fesm2022/ojiepermana-angular-component-menubar.mjs.map +0 -1
  233. package/fesm2022/ojiepermana-angular-component-native-select.mjs +0 -67
  234. package/fesm2022/ojiepermana-angular-component-native-select.mjs.map +0 -1
  235. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +0 -413
  236. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs.map +0 -1
  237. package/fesm2022/ojiepermana-angular-component-pagination.mjs +0 -226
  238. package/fesm2022/ojiepermana-angular-component-pagination.mjs.map +0 -1
  239. package/fesm2022/ojiepermana-angular-component-pillbox.mjs +0 -812
  240. package/fesm2022/ojiepermana-angular-component-pillbox.mjs.map +0 -1
  241. package/fesm2022/ojiepermana-angular-component-popover.mjs +0 -169
  242. package/fesm2022/ojiepermana-angular-component-popover.mjs.map +0 -1
  243. package/fesm2022/ojiepermana-angular-component-progress.mjs +0 -60
  244. package/fesm2022/ojiepermana-angular-component-progress.mjs.map +0 -1
  245. package/fesm2022/ojiepermana-angular-component-radio.mjs +0 -122
  246. package/fesm2022/ojiepermana-angular-component-radio.mjs.map +0 -1
  247. package/fesm2022/ojiepermana-angular-component-resizable.mjs +0 -481
  248. package/fesm2022/ojiepermana-angular-component-resizable.mjs.map +0 -1
  249. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +0 -54
  250. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs.map +0 -1
  251. package/fesm2022/ojiepermana-angular-component-select.mjs +0 -176
  252. package/fesm2022/ojiepermana-angular-component-select.mjs.map +0 -1
  253. package/fesm2022/ojiepermana-angular-component-separator.mjs +0 -37
  254. package/fesm2022/ojiepermana-angular-component-separator.mjs.map +0 -1
  255. package/fesm2022/ojiepermana-angular-component-sheet.mjs +0 -284
  256. package/fesm2022/ojiepermana-angular-component-sheet.mjs.map +0 -1
  257. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +0 -31
  258. package/fesm2022/ojiepermana-angular-component-skeleton.mjs.map +0 -1
  259. package/fesm2022/ojiepermana-angular-component-slider.mjs +0 -423
  260. package/fesm2022/ojiepermana-angular-component-slider.mjs.map +0 -1
  261. package/fesm2022/ojiepermana-angular-component-spinner.mjs +0 -60
  262. package/fesm2022/ojiepermana-angular-component-spinner.mjs.map +0 -1
  263. package/fesm2022/ojiepermana-angular-component-switch.mjs +0 -116
  264. package/fesm2022/ojiepermana-angular-component-switch.mjs.map +0 -1
  265. package/fesm2022/ojiepermana-angular-component-table.mjs +0 -155
  266. package/fesm2022/ojiepermana-angular-component-table.mjs.map +0 -1
  267. package/fesm2022/ojiepermana-angular-component-tabs.mjs +0 -272
  268. package/fesm2022/ojiepermana-angular-component-tabs.mjs.map +0 -1
  269. package/fesm2022/ojiepermana-angular-component-textarea.mjs +0 -39
  270. package/fesm2022/ojiepermana-angular-component-textarea.mjs.map +0 -1
  271. package/fesm2022/ojiepermana-angular-component-timeline.mjs +0 -237
  272. package/fesm2022/ojiepermana-angular-component-timeline.mjs.map +0 -1
  273. package/fesm2022/ojiepermana-angular-component-toast.mjs +0 -71
  274. package/fesm2022/ojiepermana-angular-component-toast.mjs.map +0 -1
  275. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +0 -289
  276. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs.map +0 -1
  277. package/fesm2022/ojiepermana-angular-component-toggle.mjs +0 -82
  278. package/fesm2022/ojiepermana-angular-component-toggle.mjs.map +0 -1
  279. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +0 -354
  280. package/fesm2022/ojiepermana-angular-component-tooltip.mjs.map +0 -1
  281. package/fesm2022/ojiepermana-angular-component-utils.mjs +0 -13
  282. package/fesm2022/ojiepermana-angular-component-utils.mjs.map +0 -1
  283. package/fesm2022/ojiepermana-angular-generator-api.mjs +0 -68
  284. package/fesm2022/ojiepermana-angular-generator-api.mjs.map +0 -1
  285. package/fesm2022/ojiepermana-angular-layout-component.mjs +0 -602
  286. package/fesm2022/ojiepermana-angular-layout-component.mjs.map +0 -1
  287. package/fesm2022/ojiepermana-angular-layout-provider.mjs +0 -21
  288. package/fesm2022/ojiepermana-angular-layout-provider.mjs.map +0 -1
  289. package/fesm2022/ojiepermana-angular-layout-services.mjs +0 -116
  290. package/fesm2022/ojiepermana-angular-layout-services.mjs.map +0 -1
  291. package/fesm2022/ojiepermana-angular-layout-shell.mjs +0 -48
  292. package/fesm2022/ojiepermana-angular-layout-shell.mjs.map +0 -1
  293. package/fesm2022/ojiepermana-angular-layout-token-directive.mjs +0 -30
  294. package/fesm2022/ojiepermana-angular-layout-token-directive.mjs.map +0 -1
  295. package/fesm2022/ojiepermana-angular-layout-token.mjs +0 -33
  296. package/fesm2022/ojiepermana-angular-layout-token.mjs.map +0 -1
  297. package/fesm2022/ojiepermana-angular-layout-type-empty.mjs +0 -49
  298. package/fesm2022/ojiepermana-angular-layout-type-empty.mjs.map +0 -1
  299. package/fesm2022/ojiepermana-angular-layout-type-horizontal.mjs +0 -128
  300. package/fesm2022/ojiepermana-angular-layout-type-horizontal.mjs.map +0 -1
  301. package/fesm2022/ojiepermana-angular-layout-type-vertical.mjs +0 -123
  302. package/fesm2022/ojiepermana-angular-layout-type-vertical.mjs.map +0 -1
  303. package/fesm2022/ojiepermana-angular-layout.mjs +0 -485
  304. package/fesm2022/ojiepermana-angular-layout.mjs.map +0 -1
  305. package/fesm2022/ojiepermana-angular-navigation-demo-data.mjs +0 -334
  306. package/fesm2022/ojiepermana-angular-navigation-demo-data.mjs.map +0 -1
  307. package/fesm2022/ojiepermana-angular-navigation-icon.mjs +0 -63
  308. package/fesm2022/ojiepermana-angular-navigation-icon.mjs.map +0 -1
  309. package/fesm2022/ojiepermana-angular-navigation-item.mjs +0 -559
  310. package/fesm2022/ojiepermana-angular-navigation-item.mjs.map +0 -1
  311. package/fesm2022/ojiepermana-angular-navigation-service.mjs +0 -213
  312. package/fesm2022/ojiepermana-angular-navigation-service.mjs.map +0 -1
  313. package/fesm2022/ojiepermana-angular-navigation-sidebar.mjs +0 -401
  314. package/fesm2022/ojiepermana-angular-navigation-sidebar.mjs.map +0 -1
  315. package/fesm2022/ojiepermana-angular-navigation-topbar.mjs +0 -670
  316. package/fesm2022/ojiepermana-angular-navigation-topbar.mjs.map +0 -1
  317. package/fesm2022/ojiepermana-angular-navigation-types.mjs +0 -4
  318. package/fesm2022/ojiepermana-angular-navigation-types.mjs.map +0 -1
  319. package/fesm2022/ojiepermana-angular-theme-provider.mjs +0 -35
  320. package/fesm2022/ojiepermana-angular-theme-provider.mjs.map +0 -1
  321. package/fesm2022/ojiepermana-angular-theme-services.mjs +0 -294
  322. package/fesm2022/ojiepermana-angular-theme-services.mjs.map +0 -1
  323. package/fesm2022/ojiepermana-angular-theme-token.mjs +0 -56
  324. package/fesm2022/ojiepermana-angular-theme-token.mjs.map +0 -1
  325. package/generator/api/README.md +0 -252
  326. package/generator/api/bin/package.json +0 -3
  327. package/generator/api/bin/schematics/init/index.js +0 -90
  328. package/generator/api/bin/schematics/ng-add/index.js +0 -131
  329. package/generator/api/bin/schematics/sdk/index.js +0 -76
  330. package/generator/api/bin/src/config/loader.js +0 -41
  331. package/generator/api/bin/src/config/schema.js +0 -57
  332. package/generator/api/bin/src/emit/client.js +0 -248
  333. package/generator/api/bin/src/emit/metadata.js +0 -295
  334. package/generator/api/bin/src/emit/models.js +0 -106
  335. package/generator/api/bin/src/emit/navigation.js +0 -56
  336. package/generator/api/bin/src/emit/operations.js +0 -122
  337. package/generator/api/bin/src/emit/public-api.js +0 -54
  338. package/generator/api/bin/src/emit/services.js +0 -87
  339. package/generator/api/bin/src/engine.js +0 -65
  340. package/generator/api/bin/src/layout/per-domain.js +0 -359
  341. package/generator/api/bin/src/parser/bundle.js +0 -25
  342. package/generator/api/bin/src/parser/ir.js +0 -320
  343. package/generator/api/bin/src/parser/types.js +0 -7
  344. package/generator/api/bin/src/render/template.js +0 -58
  345. package/generator/api/bin/src/writer/index.js +0 -278
  346. package/generator/api/package.json +0 -4
  347. package/generator/api/schematics/init/schema.json +0 -19
  348. package/generator/api/schematics/ng-add/schema.json +0 -14
  349. package/generator/api/schematics/sdk/schema.json +0 -19
  350. package/generator/api/sdk.config.example.json +0 -24
  351. package/generator/guide/README.md +0 -84
  352. package/generator/guide/bin/package.json +0 -3
  353. package/generator/guide/bin/schematics/build/index.js +0 -36
  354. package/generator/guide/bin/schematics/init/index.js +0 -70
  355. package/generator/guide/bin/src/config/loader.js +0 -50
  356. package/generator/guide/bin/src/config/schema.js +0 -12
  357. package/generator/guide/bin/src/engine/component.js +0 -74
  358. package/generator/guide/bin/src/engine/frontmatter.js +0 -42
  359. package/generator/guide/bin/src/engine/index.js +0 -42
  360. package/generator/guide/bin/src/engine/naming.js +0 -39
  361. package/generator/guide/bin/src/engine/render.js +0 -36
  362. package/generator/guide/bin/src/engine/routes.js +0 -106
  363. package/generator/guide/bin/src/engine/walk.js +0 -35
  364. package/generator/guide/guide.config.example.json +0 -9
  365. package/generator/guide/schematics/build/schema.json +0 -14
  366. package/generator/guide/schematics/init/schema.json +0 -19
  367. package/layout/component/package.json +0 -4
  368. package/layout/package.json +0 -4
  369. package/layout/provider/package.json +0 -4
  370. package/layout/services/package.json +0 -4
  371. package/layout/shell/package.json +0 -4
  372. package/layout/token/directive/package.json +0 -4
  373. package/layout/token/package.json +0 -4
  374. package/layout/type/empty/package.json +0 -4
  375. package/layout/type/horizontal/package.json +0 -4
  376. package/layout/type/vertical/package.json +0 -4
  377. package/navigation/demo-data/package.json +0 -4
  378. package/navigation/icon/package.json +0 -4
  379. package/navigation/item/package.json +0 -4
  380. package/navigation/service/package.json +0 -4
  381. package/navigation/sidebar/package.json +0 -4
  382. package/navigation/topbar/README.md +0 -196
  383. package/navigation/topbar/package.json +0 -4
  384. package/navigation/types/package.json +0 -4
  385. package/theme/README.md +0 -174
  386. package/theme/package.json +0 -4
  387. package/theme/provider/package.json +0 -4
  388. package/theme/services/package.json +0 -4
  389. package/theme/styles/foundation/components.css +0 -81
  390. package/theme/styles/foundation/layers.css +0 -15
  391. package/theme/styles/foundation/tokens.css +0 -55
  392. package/theme/styles/index.css +0 -37
  393. package/theme/styles/integrations/material/autocomplete.css +0 -178
  394. package/theme/styles/integrations/material/button.css +0 -468
  395. package/theme/styles/integrations/material/dialog.css +0 -152
  396. package/theme/styles/integrations/material/select.css +0 -175
  397. package/theme/styles/integrations/material/slide-toggle.css +0 -234
  398. package/theme/styles/integrations/material/slider.css +0 -194
  399. package/theme/styles/integrations/material/tabs.css +0 -229
  400. package/theme/styles/integrations/material.css +0 -264
  401. package/theme/styles/integrations/tailwind.css +0 -114
  402. package/theme/styles/variants/color/amber.css +0 -31
  403. package/theme/styles/variants/color/base.css +0 -36
  404. package/theme/styles/variants/color/blue.css +0 -31
  405. package/theme/styles/variants/color/cyan.css +0 -31
  406. package/theme/styles/variants/color/emerald.css +0 -31
  407. package/theme/styles/variants/color/fuchsia.css +0 -31
  408. package/theme/styles/variants/color/green.css +0 -31
  409. package/theme/styles/variants/color/index.css +0 -22
  410. package/theme/styles/variants/color/indigo.css +0 -31
  411. package/theme/styles/variants/color/lime.css +0 -31
  412. package/theme/styles/variants/color/orange.css +0 -31
  413. package/theme/styles/variants/color/pink.css +0 -31
  414. package/theme/styles/variants/color/purple.css +0 -31
  415. package/theme/styles/variants/color/red.css +0 -31
  416. package/theme/styles/variants/color/rose.css +0 -31
  417. package/theme/styles/variants/color/sky.css +0 -31
  418. package/theme/styles/variants/color/teal.css +0 -31
  419. package/theme/styles/variants/color/violet.css +0 -31
  420. package/theme/styles/variants/color/yellow.css +0 -31
  421. package/theme/styles/variants/mode/dark.css +0 -20
  422. package/theme/styles/variants/mode/index.css +0 -6
  423. package/theme/styles/variants/mode/light.css +0 -24
  424. package/theme/styles/variants/style/brutal.css +0 -50
  425. package/theme/styles/variants/style/default.css +0 -54
  426. package/theme/styles/variants/style/index.css +0 -8
  427. package/theme/styles/variants/style/sharp.css +0 -50
  428. package/theme/styles/variants/style/soft.css +0 -50
  429. package/theme/token/package.json +0 -4
  430. package/types/ojiepermana-angular-component-accordion.d.ts +0 -51
  431. package/types/ojiepermana-angular-component-alert-dialog.d.ts +0 -93
  432. package/types/ojiepermana-angular-component-alert.d.ts +0 -37
  433. package/types/ojiepermana-angular-component-aspect-ratio.d.ts +0 -12
  434. package/types/ojiepermana-angular-component-avatar.d.ts +0 -51
  435. package/types/ojiepermana-angular-component-badge.d.ts +0 -19
  436. package/types/ojiepermana-angular-component-breadcrumb.d.ts +0 -46
  437. package/types/ojiepermana-angular-component-button-group.d.ts +0 -26
  438. package/types/ojiepermana-angular-component-button.d.ts +0 -22
  439. package/types/ojiepermana-angular-component-calendar.d.ts +0 -33
  440. package/types/ojiepermana-angular-component-card.d.ts +0 -60
  441. package/types/ojiepermana-angular-component-carousel.d.ts +0 -86
  442. package/types/ojiepermana-angular-component-chart-area.d.ts +0 -1
  443. package/types/ojiepermana-angular-component-chart-bar.d.ts +0 -1
  444. package/types/ojiepermana-angular-component-chart-line.d.ts +0 -1
  445. package/types/ojiepermana-angular-component-chart-pie.d.ts +0 -1
  446. package/types/ojiepermana-angular-component-chart-radar.d.ts +0 -1
  447. package/types/ojiepermana-angular-component-chart-radial.d.ts +0 -1
  448. package/types/ojiepermana-angular-component-chart-scatter.d.ts +0 -1
  449. package/types/ojiepermana-angular-component-chart.d.ts +0 -1094
  450. package/types/ojiepermana-angular-component-checkbox.d.ts +0 -35
  451. package/types/ojiepermana-angular-component-collapsible.d.ts +0 -42
  452. package/types/ojiepermana-angular-component-combobox.d.ts +0 -50
  453. package/types/ojiepermana-angular-component-command.d.ts +0 -99
  454. package/types/ojiepermana-angular-component-composer.d.ts +0 -90
  455. package/types/ojiepermana-angular-component-context-menu.d.ts +0 -35
  456. package/types/ojiepermana-angular-component-date-picker.d.ts +0 -41
  457. package/types/ojiepermana-angular-component-dialog.d.ts +0 -87
  458. package/types/ojiepermana-angular-component-drawer.d.ts +0 -1
  459. package/types/ojiepermana-angular-component-dropdown-menu.d.ts +0 -137
  460. package/types/ojiepermana-angular-component-editor.d.ts +0 -123
  461. package/types/ojiepermana-angular-component-empty.d.ts +0 -50
  462. package/types/ojiepermana-angular-component-form.d.ts +0 -141
  463. package/types/ojiepermana-angular-component-hover-card.d.ts +0 -74
  464. package/types/ojiepermana-angular-component-input-group.d.ts +0 -51
  465. package/types/ojiepermana-angular-component-input-otp.d.ts +0 -136
  466. package/types/ojiepermana-angular-component-input.d.ts +0 -16
  467. package/types/ojiepermana-angular-component-item.d.ts +0 -88
  468. package/types/ojiepermana-angular-component-kanban.d.ts +0 -70
  469. package/types/ojiepermana-angular-component-kbd.d.ts +0 -16
  470. package/types/ojiepermana-angular-component-label.d.ts +0 -11
  471. package/types/ojiepermana-angular-component-menubar.d.ts +0 -67
  472. package/types/ojiepermana-angular-component-native-select.d.ts +0 -26
  473. package/types/ojiepermana-angular-component-navigation-menu.d.ts +0 -96
  474. package/types/ojiepermana-angular-component-pagination.d.ts +0 -33
  475. package/types/ojiepermana-angular-component-pillbox.d.ts +0 -157
  476. package/types/ojiepermana-angular-component-popover.d.ts +0 -43
  477. package/types/ojiepermana-angular-component-progress.d.ts +0 -17
  478. package/types/ojiepermana-angular-component-radio.d.ts +0 -40
  479. package/types/ojiepermana-angular-component-resizable.d.ts +0 -99
  480. package/types/ojiepermana-angular-component-scroll-area.d.ts +0 -19
  481. package/types/ojiepermana-angular-component-select.d.ts +0 -57
  482. package/types/ojiepermana-angular-component-separator.d.ts +0 -14
  483. package/types/ojiepermana-angular-component-sheet.d.ts +0 -76
  484. package/types/ojiepermana-angular-component-skeleton.d.ts +0 -10
  485. package/types/ojiepermana-angular-component-slider.d.ts +0 -74
  486. package/types/ojiepermana-angular-component-spinner.d.ts +0 -13
  487. package/types/ojiepermana-angular-component-switch.d.ts +0 -40
  488. package/types/ojiepermana-angular-component-table.d.ts +0 -52
  489. package/types/ojiepermana-angular-component-tabs.d.ts +0 -92
  490. package/types/ojiepermana-angular-component-textarea.d.ts +0 -12
  491. package/types/ojiepermana-angular-component-timeline.d.ts +0 -63
  492. package/types/ojiepermana-angular-component-toast.d.ts +0 -38
  493. package/types/ojiepermana-angular-component-toggle-group.d.ts +0 -89
  494. package/types/ojiepermana-angular-component-toggle.d.ts +0 -25
  495. package/types/ojiepermana-angular-component-tooltip.d.ts +0 -89
  496. package/types/ojiepermana-angular-component-utils.d.ts +0 -5
  497. package/types/ojiepermana-angular-generator-api.d.ts +0 -86
  498. package/types/ojiepermana-angular-layout-component.d.ts +0 -205
  499. package/types/ojiepermana-angular-layout-provider.d.ts +0 -6
  500. package/types/ojiepermana-angular-layout-services.d.ts +0 -25
  501. package/types/ojiepermana-angular-layout-shell.d.ts +0 -8
  502. package/types/ojiepermana-angular-layout-token-directive.d.ts +0 -13
  503. package/types/ojiepermana-angular-layout-token.d.ts +0 -36
  504. package/types/ojiepermana-angular-layout-type-empty.d.ts +0 -22
  505. package/types/ojiepermana-angular-layout-type-horizontal.d.ts +0 -36
  506. package/types/ojiepermana-angular-layout-type-vertical.d.ts +0 -38
  507. package/types/ojiepermana-angular-layout.d.ts +0 -164
  508. package/types/ojiepermana-angular-navigation-demo-data.d.ts +0 -5
  509. package/types/ojiepermana-angular-navigation-icon.d.ts +0 -17
  510. package/types/ojiepermana-angular-navigation-item.d.ts +0 -54
  511. package/types/ojiepermana-angular-navigation-service.d.ts +0 -77
  512. package/types/ojiepermana-angular-navigation-sidebar.d.ts +0 -75
  513. package/types/ojiepermana-angular-navigation-topbar.d.ts +0 -74
  514. package/types/ojiepermana-angular-navigation-types.d.ts +0 -135
  515. package/types/ojiepermana-angular-theme-provider.d.ts +0 -11
  516. package/types/ojiepermana-angular-theme-services.d.ts +0 -55
  517. package/types/ojiepermana-angular-theme-token.d.ts +0 -57
@@ -1,248 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.emitClient = emitClient;
4
- const template_1 = require("../render/template");
5
- /**
6
- * Emit the tiny runtime client primitives:
7
- * - `api-configuration.ts` — root-url config + provider
8
- * - `base-service.ts` — per-service rootUrl override
9
- * - `strict-http-response.ts`— HttpResponse alias
10
- * - `request-builder.ts` — minimal (path / query / header / body / build)
11
- * - `api.ts` — `Api` helper with invoke() / invoke$Response()
12
- *
13
- * These files are **static** — identical across specs — so we embed them as
14
- * template literals rather than parsing the IR. The only dynamic bits are the
15
- * banner comment and the configured default `rootUrl`.
16
- */
17
- function emitClient(target) {
18
- const defaultRootUrl = target.rootUrl ?? '';
19
- return [
20
- { path: 'api-configuration.ts', content: (0, template_1.finalize)(apiConfigurationFile(target, defaultRootUrl)) },
21
- { path: 'base-service.ts', content: (0, template_1.finalize)(baseServiceFile(target)) },
22
- { path: 'strict-http-response.ts', content: (0, template_1.finalize)(strictResponseFile(target)) },
23
- { path: 'request-builder.ts', content: (0, template_1.finalize)(requestBuilderFile(target)) },
24
- { path: 'api.ts', content: (0, template_1.finalize)(apiFile(target)) },
25
- ];
26
- }
27
- function apiConfigurationFile(target, rootUrl) {
28
- return `${target.banner}
29
-
30
- import { Injectable, makeEnvironmentProviders, type EnvironmentProviders } from '@angular/core';
31
-
32
- @Injectable({ providedIn: 'root' })
33
- export class ApiConfiguration {
34
- rootUrl: string = ${JSON.stringify(rootUrl)};
35
- }
36
-
37
- export function provideApiConfiguration(rootUrl: string): EnvironmentProviders {
38
- return makeEnvironmentProviders([
39
- {
40
- provide: ApiConfiguration,
41
- useFactory: () => {
42
- const c = new ApiConfiguration();
43
- c.rootUrl = rootUrl;
44
- return c;
45
- },
46
- },
47
- ]);
48
- }
49
- `;
50
- }
51
- function baseServiceFile(target) {
52
- return `${target.banner}
53
-
54
- import { HttpClient } from '@angular/common/http';
55
- import { Injectable, inject } from '@angular/core';
56
-
57
- import { ApiConfiguration } from './api-configuration';
58
-
59
- @Injectable()
60
- export class BaseService {
61
- protected readonly config = inject(ApiConfiguration);
62
- protected readonly http = inject(HttpClient);
63
-
64
- private _rootUrl?: string;
65
-
66
- get rootUrl(): string {
67
- return this._rootUrl ?? this.config.rootUrl;
68
- }
69
- set rootUrl(url: string) {
70
- this._rootUrl = url;
71
- }
72
- }
73
- `;
74
- }
75
- function strictResponseFile(target) {
76
- return `${target.banner}
77
-
78
- import { HttpResponse } from '@angular/common/http';
79
-
80
- export type StrictHttpResponse<T> = HttpResponse<T> & { readonly body: T };
81
- `;
82
- }
83
- /**
84
- * Minimal request builder — intentionally drops the style/explode serializer
85
- * from ng-openapi-gen's output. Covers the 99% case: path templating, simple
86
- * query params (with array → repeated key), JSON body, and header params.
87
- */
88
- function requestBuilderFile(target) {
89
- return `${target.banner}
90
-
91
- import {
92
- HttpContext,
93
- HttpHeaders,
94
- HttpParams,
95
- HttpRequest,
96
- } from '@angular/common/http';
97
-
98
- export interface BuildOptions {
99
- accept?: string;
100
- responseType?: 'json' | 'text' | 'blob' | 'arraybuffer';
101
- reportUploadProgress?: boolean;
102
- reportDownloadProgress?: boolean;
103
- context?: HttpContext;
104
- }
105
-
106
- export class RequestBuilder {
107
- private readonly _pathParams = new Map<string, unknown>();
108
- private readonly _queryParams = new Map<string, unknown>();
109
- private readonly _headerParams = new Map<string, unknown>();
110
- private _body: unknown = undefined;
111
- private _bodyContentType: string | undefined;
112
-
113
- constructor(
114
- public readonly rootUrl: string,
115
- public readonly operationPath: string,
116
- public readonly method: string,
117
- ) {}
118
-
119
- path(name: string, value: unknown): void {
120
- this._pathParams.set(name, value);
121
- }
122
-
123
- query(name: string, value: unknown): void {
124
- this._queryParams.set(name, value);
125
- }
126
-
127
- header(name: string, value: unknown): void {
128
- this._headerParams.set(name, value);
129
- }
130
-
131
- body(value: unknown, contentType = 'application/json'): void {
132
- if (value instanceof Blob) {
133
- this._bodyContentType = value.type;
134
- } else if (value instanceof FormData) {
135
- // FormData sets its own Content-Type (with boundary) — leave it alone.
136
- this._bodyContentType = undefined;
137
- } else {
138
- this._bodyContentType = contentType;
139
- }
140
- this._body = value;
141
- }
142
-
143
- build<T = unknown>(options: BuildOptions = {}): HttpRequest<T> {
144
- let path = this.operationPath;
145
- for (const [name, value] of this._pathParams) {
146
- path = path.replace(
147
- '{' + name + '}',
148
- encodeURIComponent(value == null ? '' : String(value)),
149
- );
150
- }
151
-
152
- let params = new HttpParams();
153
- for (const [name, value] of this._queryParams) {
154
- if (value === undefined || value === null) continue;
155
- if (Array.isArray(value)) {
156
- for (const v of value) {
157
- if (v !== undefined && v !== null) params = params.append(name, String(v));
158
- }
159
- } else {
160
- params = params.append(name, String(value));
161
- }
162
- }
163
-
164
- let headers = new HttpHeaders();
165
- if (options.accept) headers = headers.set('Accept', options.accept);
166
- for (const [name, value] of this._headerParams) {
167
- if (value === undefined || value === null) continue;
168
- if (Array.isArray(value)) {
169
- for (const v of value) headers = headers.append(name, String(v));
170
- } else {
171
- headers = headers.set(name, String(value));
172
- }
173
- }
174
- if (this._bodyContentType) {
175
- headers = headers.set('Content-Type', this._bodyContentType);
176
- }
177
-
178
- return new HttpRequest<T>(
179
- this.method.toUpperCase(),
180
- this.rootUrl + path,
181
- this._body as T,
182
- {
183
- params,
184
- headers,
185
- responseType: options.responseType,
186
- reportUploadProgress: options.reportUploadProgress,
187
- reportDownloadProgress: options.reportDownloadProgress,
188
- context: options.context,
189
- },
190
- );
191
- }
192
- }
193
- `;
194
- }
195
- function apiFile(target) {
196
- return `${target.banner}
197
-
198
- import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';
199
- import { Injectable, inject } from '@angular/core';
200
- import { Observable } from 'rxjs';
201
- import { filter, map } from 'rxjs/operators';
202
-
203
- import { ApiConfiguration } from './api-configuration';
204
- import { StrictHttpResponse } from './strict-http-response';
205
-
206
- export type ApiFn<P, R> = (
207
- http: HttpClient,
208
- rootUrl: string,
209
- params: P,
210
- context?: HttpContext,
211
- ) => Observable<StrictHttpResponse<R>>;
212
-
213
- /**
214
- * Helper to invoke any tree-shakeable operation function directly.
215
- */
216
- @Injectable({ providedIn: 'root' })
217
- export class ${target.clientName} {
218
- private readonly config = inject(ApiConfiguration);
219
- private readonly http = inject(HttpClient);
220
-
221
- private _rootUrl?: string;
222
-
223
- get rootUrl(): string {
224
- return this._rootUrl ?? this.config.rootUrl;
225
- }
226
- set rootUrl(url: string) {
227
- this._rootUrl = url;
228
- }
229
-
230
- /** Invoke an operation function and stream the response body. */
231
- invoke<P, R>(fn: ApiFn<P, R>, params: P, context?: HttpContext): Observable<R> {
232
- return this.invoke$Response(fn, params, context).pipe(map((r) => r.body));
233
- }
234
-
235
- /** Invoke an operation function and stream the full HTTP response. */
236
- invoke$Response<P, R>(
237
- fn: ApiFn<P, R>,
238
- params: P,
239
- context?: HttpContext,
240
- ): Observable<StrictHttpResponse<R>> {
241
- return fn(this.http, this.rootUrl, params, context).pipe(
242
- filter((r: unknown): r is HttpResponse<unknown> => r instanceof HttpResponse),
243
- map((r) => r as StrictHttpResponse<R>),
244
- );
245
- }
246
- }
247
- `;
248
- }
@@ -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
- }