@ojiepermana/angular 22.0.1 → 22.0.29

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 (513) hide show
  1. package/README.md +61 -311
  2. package/fesm2022/ojiepermana-angular-chart.mjs +10 -0
  3. package/fesm2022/ojiepermana-angular-component.mjs +10 -0
  4. package/fesm2022/ojiepermana-angular-navigation.mjs +10 -0
  5. package/fesm2022/ojiepermana-angular-sdk.mjs +10 -0
  6. package/fesm2022/ojiepermana-angular-theme.mjs +4 -384
  7. package/fesm2022/ojiepermana-angular.mjs +15 -16
  8. package/package.json +25 -425
  9. package/types/ojiepermana-angular-chart.d.ts +1 -0
  10. package/types/ojiepermana-angular-component.d.ts +1 -0
  11. package/types/ojiepermana-angular-navigation.d.ts +1 -0
  12. package/types/ojiepermana-angular-sdk.d.ts +1 -0
  13. package/types/ojiepermana-angular-theme.d.ts +1 -116
  14. package/types/ojiepermana-angular.d.ts +5 -3
  15. package/.npmignore +0 -2
  16. package/collection.json +0 -30
  17. package/component/accordion/README.md +0 -195
  18. package/component/accordion/package.json +0 -4
  19. package/component/alert/README.md +0 -182
  20. package/component/alert/package.json +0 -4
  21. package/component/alert-dialog/README.md +0 -239
  22. package/component/alert-dialog/package.json +0 -4
  23. package/component/aspect-ratio/README.md +0 -112
  24. package/component/aspect-ratio/package.json +0 -4
  25. package/component/avatar/README.md +0 -176
  26. package/component/avatar/package.json +0 -4
  27. package/component/badge/README.md +0 -133
  28. package/component/badge/package.json +0 -4
  29. package/component/breadcrumb/README.md +0 -216
  30. package/component/breadcrumb/package.json +0 -4
  31. package/component/button/README.md +0 -139
  32. package/component/button/package.json +0 -4
  33. package/component/button-group/README.md +0 -208
  34. package/component/button-group/package.json +0 -4
  35. package/component/calendar/README.md +0 -132
  36. package/component/calendar/package.json +0 -4
  37. package/component/card/README.md +0 -220
  38. package/component/card/package.json +0 -4
  39. package/component/carousel/README.md +0 -276
  40. package/component/carousel/package.json +0 -4
  41. package/component/chart/README.md +0 -249
  42. package/component/chart/area/package.json +0 -4
  43. package/component/chart/bar/package.json +0 -4
  44. package/component/chart/line/package.json +0 -4
  45. package/component/chart/package.json +0 -4
  46. package/component/chart/pie/package.json +0 -4
  47. package/component/chart/radar/package.json +0 -4
  48. package/component/chart/radial/package.json +0 -4
  49. package/component/chart/scatter/package.json +0 -4
  50. package/component/checkbox/README.md +0 -149
  51. package/component/checkbox/package.json +0 -4
  52. package/component/collapsible/README.md +0 -195
  53. package/component/collapsible/package.json +0 -4
  54. package/component/combobox/README.md +0 -198
  55. package/component/combobox/package.json +0 -4
  56. package/component/command/README.md +0 -275
  57. package/component/command/package.json +0 -4
  58. package/component/composer/README.md +0 -235
  59. package/component/composer/package.json +0 -4
  60. package/component/context-menu/README.md +0 -267
  61. package/component/context-menu/package.json +0 -4
  62. package/component/date-picker/README.md +0 -177
  63. package/component/date-picker/package.json +0 -4
  64. package/component/dialog/README.md +0 -237
  65. package/component/dialog/package.json +0 -4
  66. package/component/drawer/README.md +0 -145
  67. package/component/drawer/package.json +0 -4
  68. package/component/dropdown-menu/README.md +0 -311
  69. package/component/dropdown-menu/package.json +0 -4
  70. package/component/editor/README.md +0 -136
  71. package/component/editor/package.json +0 -4
  72. package/component/empty/README.md +0 -183
  73. package/component/empty/package.json +0 -4
  74. package/component/form/README.md +0 -210
  75. package/component/form/package.json +0 -4
  76. package/component/hover-card/README.md +0 -146
  77. package/component/hover-card/package.json +0 -4
  78. package/component/input/README.md +0 -159
  79. package/component/input/package.json +0 -4
  80. package/component/input-group/README.md +0 -239
  81. package/component/input-group/package.json +0 -4
  82. package/component/input-otp/README.md +0 -278
  83. package/component/input-otp/package.json +0 -4
  84. package/component/item/README.md +0 -247
  85. package/component/item/package.json +0 -4
  86. package/component/kanban/README.md +0 -81
  87. package/component/kanban/package.json +0 -4
  88. package/component/kbd/README.md +0 -139
  89. package/component/kbd/package.json +0 -4
  90. package/component/label/README.md +0 -136
  91. package/component/label/package.json +0 -4
  92. package/component/menubar/README.md +0 -269
  93. package/component/menubar/package.json +0 -4
  94. package/component/native-select/README.md +0 -176
  95. package/component/native-select/package.json +0 -4
  96. package/component/navigation-menu/README.md +0 -160
  97. package/component/navigation-menu/package.json +0 -4
  98. package/component/pagination/README.md +0 -144
  99. package/component/pagination/package.json +0 -4
  100. package/component/pillbox/README.md +0 -67
  101. package/component/pillbox/package.json +0 -4
  102. package/component/popover/README.md +0 -43
  103. package/component/popover/package.json +0 -4
  104. package/component/progress/README.md +0 -160
  105. package/component/progress/package.json +0 -4
  106. package/component/radio/README.md +0 -209
  107. package/component/radio/package.json +0 -4
  108. package/component/resizable/README.md +0 -168
  109. package/component/resizable/package.json +0 -4
  110. package/component/scroll-area/README.md +0 -143
  111. package/component/scroll-area/package.json +0 -4
  112. package/component/select/README.md +0 -174
  113. package/component/select/package.json +0 -4
  114. package/component/separator/README.md +0 -170
  115. package/component/separator/package.json +0 -4
  116. package/component/sheet/README.md +0 -183
  117. package/component/sheet/package.json +0 -4
  118. package/component/skeleton/README.md +0 -158
  119. package/component/skeleton/package.json +0 -4
  120. package/component/slider/README.md +0 -207
  121. package/component/slider/package.json +0 -4
  122. package/component/spinner/README.md +0 -160
  123. package/component/spinner/package.json +0 -4
  124. package/component/switch/README.md +0 -166
  125. package/component/switch/package.json +0 -4
  126. package/component/table/README.md +0 -291
  127. package/component/table/package.json +0 -4
  128. package/component/tabs/README.md +0 -219
  129. package/component/tabs/package.json +0 -4
  130. package/component/textarea/README.md +0 -154
  131. package/component/textarea/package.json +0 -4
  132. package/component/timeline/README.md +0 -94
  133. package/component/timeline/package.json +0 -4
  134. package/component/toast/README.md +0 -321
  135. package/component/toast/package.json +0 -4
  136. package/component/toggle/README.md +0 -131
  137. package/component/toggle/package.json +0 -4
  138. package/component/toggle-group/README.md +0 -206
  139. package/component/toggle-group/package.json +0 -4
  140. package/component/tooltip/README.md +0 -211
  141. package/component/tooltip/package.json +0 -4
  142. package/component/utils/package.json +0 -4
  143. package/fesm2022/ojiepermana-angular-component-accordion.mjs +0 -189
  144. package/fesm2022/ojiepermana-angular-component-accordion.mjs.map +0 -1
  145. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +0 -276
  146. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs.map +0 -1
  147. package/fesm2022/ojiepermana-angular-component-alert.mjs +0 -99
  148. package/fesm2022/ojiepermana-angular-component-alert.mjs.map +0 -1
  149. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +0 -37
  150. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs.map +0 -1
  151. package/fesm2022/ojiepermana-angular-component-avatar.mjs +0 -139
  152. package/fesm2022/ojiepermana-angular-component-avatar.mjs.map +0 -1
  153. package/fesm2022/ojiepermana-angular-component-badge.mjs +0 -50
  154. package/fesm2022/ojiepermana-angular-component-badge.mjs.map +0 -1
  155. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +0 -200
  156. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs.map +0 -1
  157. package/fesm2022/ojiepermana-angular-component-button-group.mjs +0 -103
  158. package/fesm2022/ojiepermana-angular-component-button-group.mjs.map +0 -1
  159. package/fesm2022/ojiepermana-angular-component-button.mjs +0 -68
  160. package/fesm2022/ojiepermana-angular-component-button.mjs.map +0 -1
  161. package/fesm2022/ojiepermana-angular-component-calendar.mjs +0 -88
  162. package/fesm2022/ojiepermana-angular-component-calendar.mjs.map +0 -1
  163. package/fesm2022/ojiepermana-angular-component-card.mjs +0 -152
  164. package/fesm2022/ojiepermana-angular-component-card.mjs.map +0 -1
  165. package/fesm2022/ojiepermana-angular-component-carousel.mjs +0 -334
  166. package/fesm2022/ojiepermana-angular-component-carousel.mjs.map +0 -1
  167. package/fesm2022/ojiepermana-angular-component-chart-area.mjs +0 -6
  168. package/fesm2022/ojiepermana-angular-component-chart-area.mjs.map +0 -1
  169. package/fesm2022/ojiepermana-angular-component-chart-bar.mjs +0 -6
  170. package/fesm2022/ojiepermana-angular-component-chart-bar.mjs.map +0 -1
  171. package/fesm2022/ojiepermana-angular-component-chart-line.mjs +0 -6
  172. package/fesm2022/ojiepermana-angular-component-chart-line.mjs.map +0 -1
  173. package/fesm2022/ojiepermana-angular-component-chart-pie.mjs +0 -6
  174. package/fesm2022/ojiepermana-angular-component-chart-pie.mjs.map +0 -1
  175. package/fesm2022/ojiepermana-angular-component-chart-radar.mjs +0 -6
  176. package/fesm2022/ojiepermana-angular-component-chart-radar.mjs.map +0 -1
  177. package/fesm2022/ojiepermana-angular-component-chart-radial.mjs +0 -6
  178. package/fesm2022/ojiepermana-angular-component-chart-radial.mjs.map +0 -1
  179. package/fesm2022/ojiepermana-angular-component-chart-scatter.mjs +0 -6
  180. package/fesm2022/ojiepermana-angular-component-chart-scatter.mjs.map +0 -1
  181. package/fesm2022/ojiepermana-angular-component-chart.mjs +0 -3925
  182. package/fesm2022/ojiepermana-angular-component-chart.mjs.map +0 -1
  183. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +0 -114
  184. package/fesm2022/ojiepermana-angular-component-checkbox.mjs.map +0 -1
  185. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +0 -124
  186. package/fesm2022/ojiepermana-angular-component-collapsible.mjs.map +0 -1
  187. package/fesm2022/ojiepermana-angular-component-combobox.mjs +0 -272
  188. package/fesm2022/ojiepermana-angular-component-combobox.mjs.map +0 -1
  189. package/fesm2022/ojiepermana-angular-component-command.mjs +0 -293
  190. package/fesm2022/ojiepermana-angular-component-command.mjs.map +0 -1
  191. package/fesm2022/ojiepermana-angular-component-composer.mjs +0 -352
  192. package/fesm2022/ojiepermana-angular-component-composer.mjs.map +0 -1
  193. package/fesm2022/ojiepermana-angular-component-context-menu.mjs +0 -103
  194. package/fesm2022/ojiepermana-angular-component-context-menu.mjs.map +0 -1
  195. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +0 -170
  196. package/fesm2022/ojiepermana-angular-component-date-picker.mjs.map +0 -1
  197. package/fesm2022/ojiepermana-angular-component-dialog.mjs +0 -279
  198. package/fesm2022/ojiepermana-angular-component-dialog.mjs.map +0 -1
  199. package/fesm2022/ojiepermana-angular-component-drawer.mjs +0 -6
  200. package/fesm2022/ojiepermana-angular-component-drawer.mjs.map +0 -1
  201. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +0 -492
  202. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs.map +0 -1
  203. package/fesm2022/ojiepermana-angular-component-editor.mjs +0 -717
  204. package/fesm2022/ojiepermana-angular-component-editor.mjs.map +0 -1
  205. package/fesm2022/ojiepermana-angular-component-empty.mjs +0 -145
  206. package/fesm2022/ojiepermana-angular-component-empty.mjs.map +0 -1
  207. package/fesm2022/ojiepermana-angular-component-form.mjs +0 -366
  208. package/fesm2022/ojiepermana-angular-component-form.mjs.map +0 -1
  209. package/fesm2022/ojiepermana-angular-component-hover-card.mjs +0 -297
  210. package/fesm2022/ojiepermana-angular-component-hover-card.mjs.map +0 -1
  211. package/fesm2022/ojiepermana-angular-component-input-group.mjs +0 -179
  212. package/fesm2022/ojiepermana-angular-component-input-group.mjs.map +0 -1
  213. package/fesm2022/ojiepermana-angular-component-input-otp.mjs +0 -514
  214. package/fesm2022/ojiepermana-angular-component-input-otp.mjs.map +0 -1
  215. package/fesm2022/ojiepermana-angular-component-input.mjs +0 -45
  216. package/fesm2022/ojiepermana-angular-component-input.mjs.map +0 -1
  217. package/fesm2022/ojiepermana-angular-component-item.mjs +0 -264
  218. package/fesm2022/ojiepermana-angular-component-item.mjs.map +0 -1
  219. package/fesm2022/ojiepermana-angular-component-kanban.mjs +0 -314
  220. package/fesm2022/ojiepermana-angular-component-kanban.mjs.map +0 -1
  221. package/fesm2022/ojiepermana-angular-component-kbd.mjs +0 -55
  222. package/fesm2022/ojiepermana-angular-component-kbd.mjs.map +0 -1
  223. package/fesm2022/ojiepermana-angular-component-label.mjs +0 -33
  224. package/fesm2022/ojiepermana-angular-component-label.mjs.map +0 -1
  225. package/fesm2022/ojiepermana-angular-component-menubar.mjs +0 -308
  226. package/fesm2022/ojiepermana-angular-component-menubar.mjs.map +0 -1
  227. package/fesm2022/ojiepermana-angular-component-native-select.mjs +0 -67
  228. package/fesm2022/ojiepermana-angular-component-native-select.mjs.map +0 -1
  229. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +0 -413
  230. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs.map +0 -1
  231. package/fesm2022/ojiepermana-angular-component-pagination.mjs +0 -226
  232. package/fesm2022/ojiepermana-angular-component-pagination.mjs.map +0 -1
  233. package/fesm2022/ojiepermana-angular-component-pillbox.mjs +0 -812
  234. package/fesm2022/ojiepermana-angular-component-pillbox.mjs.map +0 -1
  235. package/fesm2022/ojiepermana-angular-component-popover.mjs +0 -169
  236. package/fesm2022/ojiepermana-angular-component-popover.mjs.map +0 -1
  237. package/fesm2022/ojiepermana-angular-component-progress.mjs +0 -60
  238. package/fesm2022/ojiepermana-angular-component-progress.mjs.map +0 -1
  239. package/fesm2022/ojiepermana-angular-component-radio.mjs +0 -122
  240. package/fesm2022/ojiepermana-angular-component-radio.mjs.map +0 -1
  241. package/fesm2022/ojiepermana-angular-component-resizable.mjs +0 -481
  242. package/fesm2022/ojiepermana-angular-component-resizable.mjs.map +0 -1
  243. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +0 -54
  244. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs.map +0 -1
  245. package/fesm2022/ojiepermana-angular-component-select.mjs +0 -176
  246. package/fesm2022/ojiepermana-angular-component-select.mjs.map +0 -1
  247. package/fesm2022/ojiepermana-angular-component-separator.mjs +0 -37
  248. package/fesm2022/ojiepermana-angular-component-separator.mjs.map +0 -1
  249. package/fesm2022/ojiepermana-angular-component-sheet.mjs +0 -284
  250. package/fesm2022/ojiepermana-angular-component-sheet.mjs.map +0 -1
  251. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +0 -31
  252. package/fesm2022/ojiepermana-angular-component-skeleton.mjs.map +0 -1
  253. package/fesm2022/ojiepermana-angular-component-slider.mjs +0 -423
  254. package/fesm2022/ojiepermana-angular-component-slider.mjs.map +0 -1
  255. package/fesm2022/ojiepermana-angular-component-spinner.mjs +0 -60
  256. package/fesm2022/ojiepermana-angular-component-spinner.mjs.map +0 -1
  257. package/fesm2022/ojiepermana-angular-component-switch.mjs +0 -116
  258. package/fesm2022/ojiepermana-angular-component-switch.mjs.map +0 -1
  259. package/fesm2022/ojiepermana-angular-component-table.mjs +0 -155
  260. package/fesm2022/ojiepermana-angular-component-table.mjs.map +0 -1
  261. package/fesm2022/ojiepermana-angular-component-tabs.mjs +0 -272
  262. package/fesm2022/ojiepermana-angular-component-tabs.mjs.map +0 -1
  263. package/fesm2022/ojiepermana-angular-component-textarea.mjs +0 -39
  264. package/fesm2022/ojiepermana-angular-component-textarea.mjs.map +0 -1
  265. package/fesm2022/ojiepermana-angular-component-timeline.mjs +0 -237
  266. package/fesm2022/ojiepermana-angular-component-timeline.mjs.map +0 -1
  267. package/fesm2022/ojiepermana-angular-component-toast.mjs +0 -71
  268. package/fesm2022/ojiepermana-angular-component-toast.mjs.map +0 -1
  269. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +0 -289
  270. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs.map +0 -1
  271. package/fesm2022/ojiepermana-angular-component-toggle.mjs +0 -82
  272. package/fesm2022/ojiepermana-angular-component-toggle.mjs.map +0 -1
  273. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +0 -354
  274. package/fesm2022/ojiepermana-angular-component-tooltip.mjs.map +0 -1
  275. package/fesm2022/ojiepermana-angular-component-utils.mjs +0 -13
  276. package/fesm2022/ojiepermana-angular-component-utils.mjs.map +0 -1
  277. package/fesm2022/ojiepermana-angular-generator-api.mjs +0 -68
  278. package/fesm2022/ojiepermana-angular-generator-api.mjs.map +0 -1
  279. package/fesm2022/ojiepermana-angular-layout-component.mjs +0 -602
  280. package/fesm2022/ojiepermana-angular-layout-component.mjs.map +0 -1
  281. package/fesm2022/ojiepermana-angular-layout-provider.mjs +0 -21
  282. package/fesm2022/ojiepermana-angular-layout-provider.mjs.map +0 -1
  283. package/fesm2022/ojiepermana-angular-layout-services.mjs +0 -116
  284. package/fesm2022/ojiepermana-angular-layout-services.mjs.map +0 -1
  285. package/fesm2022/ojiepermana-angular-layout-shell.mjs +0 -48
  286. package/fesm2022/ojiepermana-angular-layout-shell.mjs.map +0 -1
  287. package/fesm2022/ojiepermana-angular-layout-token-directive.mjs +0 -30
  288. package/fesm2022/ojiepermana-angular-layout-token-directive.mjs.map +0 -1
  289. package/fesm2022/ojiepermana-angular-layout-token.mjs +0 -33
  290. package/fesm2022/ojiepermana-angular-layout-token.mjs.map +0 -1
  291. package/fesm2022/ojiepermana-angular-layout-type-empty.mjs +0 -49
  292. package/fesm2022/ojiepermana-angular-layout-type-empty.mjs.map +0 -1
  293. package/fesm2022/ojiepermana-angular-layout-type-horizontal.mjs +0 -128
  294. package/fesm2022/ojiepermana-angular-layout-type-horizontal.mjs.map +0 -1
  295. package/fesm2022/ojiepermana-angular-layout-type-vertical.mjs +0 -123
  296. package/fesm2022/ojiepermana-angular-layout-type-vertical.mjs.map +0 -1
  297. package/fesm2022/ojiepermana-angular-layout.mjs +0 -485
  298. package/fesm2022/ojiepermana-angular-layout.mjs.map +0 -1
  299. package/fesm2022/ojiepermana-angular-navigation-demo-data.mjs +0 -334
  300. package/fesm2022/ojiepermana-angular-navigation-demo-data.mjs.map +0 -1
  301. package/fesm2022/ojiepermana-angular-navigation-icon.mjs +0 -63
  302. package/fesm2022/ojiepermana-angular-navigation-icon.mjs.map +0 -1
  303. package/fesm2022/ojiepermana-angular-navigation-item.mjs +0 -559
  304. package/fesm2022/ojiepermana-angular-navigation-item.mjs.map +0 -1
  305. package/fesm2022/ojiepermana-angular-navigation-service.mjs +0 -213
  306. package/fesm2022/ojiepermana-angular-navigation-service.mjs.map +0 -1
  307. package/fesm2022/ojiepermana-angular-navigation-sidebar.mjs +0 -401
  308. package/fesm2022/ojiepermana-angular-navigation-sidebar.mjs.map +0 -1
  309. package/fesm2022/ojiepermana-angular-navigation-topbar.mjs +0 -670
  310. package/fesm2022/ojiepermana-angular-navigation-topbar.mjs.map +0 -1
  311. package/fesm2022/ojiepermana-angular-navigation-types.mjs +0 -4
  312. package/fesm2022/ojiepermana-angular-navigation-types.mjs.map +0 -1
  313. package/fesm2022/ojiepermana-angular-theme-provider.mjs +0 -35
  314. package/fesm2022/ojiepermana-angular-theme-provider.mjs.map +0 -1
  315. package/fesm2022/ojiepermana-angular-theme-services.mjs +0 -294
  316. package/fesm2022/ojiepermana-angular-theme-services.mjs.map +0 -1
  317. package/fesm2022/ojiepermana-angular-theme-token.mjs +0 -56
  318. package/fesm2022/ojiepermana-angular-theme-token.mjs.map +0 -1
  319. package/fesm2022/ojiepermana-angular-theme.mjs.map +0 -1
  320. package/fesm2022/ojiepermana-angular.mjs.map +0 -1
  321. package/generator/api/README.md +0 -252
  322. package/generator/api/bin/package.json +0 -3
  323. package/generator/api/bin/schematics/init/index.js +0 -90
  324. package/generator/api/bin/schematics/ng-add/index.js +0 -131
  325. package/generator/api/bin/schematics/sdk/index.js +0 -76
  326. package/generator/api/bin/src/config/loader.js +0 -41
  327. package/generator/api/bin/src/config/schema.js +0 -57
  328. package/generator/api/bin/src/emit/client.js +0 -248
  329. package/generator/api/bin/src/emit/metadata.js +0 -295
  330. package/generator/api/bin/src/emit/models.js +0 -106
  331. package/generator/api/bin/src/emit/navigation.js +0 -56
  332. package/generator/api/bin/src/emit/operations.js +0 -122
  333. package/generator/api/bin/src/emit/public-api.js +0 -54
  334. package/generator/api/bin/src/emit/services.js +0 -87
  335. package/generator/api/bin/src/engine.js +0 -65
  336. package/generator/api/bin/src/layout/per-domain.js +0 -359
  337. package/generator/api/bin/src/parser/bundle.js +0 -25
  338. package/generator/api/bin/src/parser/ir.js +0 -320
  339. package/generator/api/bin/src/parser/types.js +0 -7
  340. package/generator/api/bin/src/render/template.js +0 -58
  341. package/generator/api/bin/src/writer/index.js +0 -278
  342. package/generator/api/package.json +0 -4
  343. package/generator/api/schematics/init/schema.json +0 -19
  344. package/generator/api/schematics/ng-add/schema.json +0 -14
  345. package/generator/api/schematics/sdk/schema.json +0 -19
  346. package/generator/api/sdk.config.example.json +0 -24
  347. package/generator/guide/README.md +0 -84
  348. package/generator/guide/bin/package.json +0 -3
  349. package/generator/guide/bin/schematics/build/index.js +0 -36
  350. package/generator/guide/bin/schematics/init/index.js +0 -70
  351. package/generator/guide/bin/src/config/loader.js +0 -50
  352. package/generator/guide/bin/src/config/schema.js +0 -12
  353. package/generator/guide/bin/src/engine/component.js +0 -74
  354. package/generator/guide/bin/src/engine/frontmatter.js +0 -42
  355. package/generator/guide/bin/src/engine/index.js +0 -42
  356. package/generator/guide/bin/src/engine/naming.js +0 -39
  357. package/generator/guide/bin/src/engine/render.js +0 -36
  358. package/generator/guide/bin/src/engine/routes.js +0 -106
  359. package/generator/guide/bin/src/engine/walk.js +0 -35
  360. package/generator/guide/guide.config.example.json +0 -9
  361. package/generator/guide/schematics/build/schema.json +0 -14
  362. package/generator/guide/schematics/init/schema.json +0 -19
  363. package/layout/component/package.json +0 -4
  364. package/layout/package.json +0 -4
  365. package/layout/provider/package.json +0 -4
  366. package/layout/services/package.json +0 -4
  367. package/layout/shell/package.json +0 -4
  368. package/layout/token/directive/package.json +0 -4
  369. package/layout/token/package.json +0 -4
  370. package/layout/type/empty/package.json +0 -4
  371. package/layout/type/horizontal/package.json +0 -4
  372. package/layout/type/vertical/package.json +0 -4
  373. package/navigation/demo-data/package.json +0 -4
  374. package/navigation/icon/package.json +0 -4
  375. package/navigation/item/package.json +0 -4
  376. package/navigation/service/package.json +0 -4
  377. package/navigation/sidebar/package.json +0 -4
  378. package/navigation/topbar/README.md +0 -196
  379. package/navigation/topbar/package.json +0 -4
  380. package/navigation/types/package.json +0 -4
  381. package/theme/README.md +0 -174
  382. package/theme/package.json +0 -4
  383. package/theme/provider/package.json +0 -4
  384. package/theme/services/package.json +0 -4
  385. package/theme/styles/foundation/components.css +0 -81
  386. package/theme/styles/foundation/layers.css +0 -15
  387. package/theme/styles/foundation/tokens.css +0 -55
  388. package/theme/styles/index.css +0 -37
  389. package/theme/styles/integrations/material/autocomplete.css +0 -178
  390. package/theme/styles/integrations/material/button.css +0 -468
  391. package/theme/styles/integrations/material/dialog.css +0 -152
  392. package/theme/styles/integrations/material/select.css +0 -175
  393. package/theme/styles/integrations/material/slide-toggle.css +0 -234
  394. package/theme/styles/integrations/material/slider.css +0 -194
  395. package/theme/styles/integrations/material/tabs.css +0 -229
  396. package/theme/styles/integrations/material.css +0 -264
  397. package/theme/styles/integrations/tailwind.css +0 -114
  398. package/theme/styles/variants/color/amber.css +0 -31
  399. package/theme/styles/variants/color/base.css +0 -36
  400. package/theme/styles/variants/color/blue.css +0 -31
  401. package/theme/styles/variants/color/cyan.css +0 -31
  402. package/theme/styles/variants/color/emerald.css +0 -31
  403. package/theme/styles/variants/color/fuchsia.css +0 -31
  404. package/theme/styles/variants/color/green.css +0 -31
  405. package/theme/styles/variants/color/index.css +0 -22
  406. package/theme/styles/variants/color/indigo.css +0 -31
  407. package/theme/styles/variants/color/lime.css +0 -31
  408. package/theme/styles/variants/color/orange.css +0 -31
  409. package/theme/styles/variants/color/pink.css +0 -31
  410. package/theme/styles/variants/color/purple.css +0 -31
  411. package/theme/styles/variants/color/red.css +0 -31
  412. package/theme/styles/variants/color/rose.css +0 -31
  413. package/theme/styles/variants/color/sky.css +0 -31
  414. package/theme/styles/variants/color/teal.css +0 -31
  415. package/theme/styles/variants/color/violet.css +0 -31
  416. package/theme/styles/variants/color/yellow.css +0 -31
  417. package/theme/styles/variants/mode/dark.css +0 -20
  418. package/theme/styles/variants/mode/index.css +0 -6
  419. package/theme/styles/variants/mode/light.css +0 -24
  420. package/theme/styles/variants/style/brutal.css +0 -50
  421. package/theme/styles/variants/style/default.css +0 -54
  422. package/theme/styles/variants/style/index.css +0 -8
  423. package/theme/styles/variants/style/sharp.css +0 -50
  424. package/theme/styles/variants/style/soft.css +0 -50
  425. package/theme/token/package.json +0 -4
  426. package/types/ojiepermana-angular-component-accordion.d.ts +0 -51
  427. package/types/ojiepermana-angular-component-alert-dialog.d.ts +0 -93
  428. package/types/ojiepermana-angular-component-alert.d.ts +0 -37
  429. package/types/ojiepermana-angular-component-aspect-ratio.d.ts +0 -12
  430. package/types/ojiepermana-angular-component-avatar.d.ts +0 -51
  431. package/types/ojiepermana-angular-component-badge.d.ts +0 -19
  432. package/types/ojiepermana-angular-component-breadcrumb.d.ts +0 -46
  433. package/types/ojiepermana-angular-component-button-group.d.ts +0 -26
  434. package/types/ojiepermana-angular-component-button.d.ts +0 -22
  435. package/types/ojiepermana-angular-component-calendar.d.ts +0 -33
  436. package/types/ojiepermana-angular-component-card.d.ts +0 -60
  437. package/types/ojiepermana-angular-component-carousel.d.ts +0 -86
  438. package/types/ojiepermana-angular-component-chart-area.d.ts +0 -1
  439. package/types/ojiepermana-angular-component-chart-bar.d.ts +0 -1
  440. package/types/ojiepermana-angular-component-chart-line.d.ts +0 -1
  441. package/types/ojiepermana-angular-component-chart-pie.d.ts +0 -1
  442. package/types/ojiepermana-angular-component-chart-radar.d.ts +0 -1
  443. package/types/ojiepermana-angular-component-chart-radial.d.ts +0 -1
  444. package/types/ojiepermana-angular-component-chart-scatter.d.ts +0 -1
  445. package/types/ojiepermana-angular-component-chart.d.ts +0 -1094
  446. package/types/ojiepermana-angular-component-checkbox.d.ts +0 -35
  447. package/types/ojiepermana-angular-component-collapsible.d.ts +0 -42
  448. package/types/ojiepermana-angular-component-combobox.d.ts +0 -50
  449. package/types/ojiepermana-angular-component-command.d.ts +0 -99
  450. package/types/ojiepermana-angular-component-composer.d.ts +0 -90
  451. package/types/ojiepermana-angular-component-context-menu.d.ts +0 -35
  452. package/types/ojiepermana-angular-component-date-picker.d.ts +0 -41
  453. package/types/ojiepermana-angular-component-dialog.d.ts +0 -87
  454. package/types/ojiepermana-angular-component-drawer.d.ts +0 -1
  455. package/types/ojiepermana-angular-component-dropdown-menu.d.ts +0 -137
  456. package/types/ojiepermana-angular-component-editor.d.ts +0 -123
  457. package/types/ojiepermana-angular-component-empty.d.ts +0 -50
  458. package/types/ojiepermana-angular-component-form.d.ts +0 -141
  459. package/types/ojiepermana-angular-component-hover-card.d.ts +0 -74
  460. package/types/ojiepermana-angular-component-input-group.d.ts +0 -51
  461. package/types/ojiepermana-angular-component-input-otp.d.ts +0 -136
  462. package/types/ojiepermana-angular-component-input.d.ts +0 -16
  463. package/types/ojiepermana-angular-component-item.d.ts +0 -88
  464. package/types/ojiepermana-angular-component-kanban.d.ts +0 -70
  465. package/types/ojiepermana-angular-component-kbd.d.ts +0 -16
  466. package/types/ojiepermana-angular-component-label.d.ts +0 -11
  467. package/types/ojiepermana-angular-component-menubar.d.ts +0 -67
  468. package/types/ojiepermana-angular-component-native-select.d.ts +0 -26
  469. package/types/ojiepermana-angular-component-navigation-menu.d.ts +0 -96
  470. package/types/ojiepermana-angular-component-pagination.d.ts +0 -33
  471. package/types/ojiepermana-angular-component-pillbox.d.ts +0 -157
  472. package/types/ojiepermana-angular-component-popover.d.ts +0 -43
  473. package/types/ojiepermana-angular-component-progress.d.ts +0 -17
  474. package/types/ojiepermana-angular-component-radio.d.ts +0 -40
  475. package/types/ojiepermana-angular-component-resizable.d.ts +0 -99
  476. package/types/ojiepermana-angular-component-scroll-area.d.ts +0 -19
  477. package/types/ojiepermana-angular-component-select.d.ts +0 -57
  478. package/types/ojiepermana-angular-component-separator.d.ts +0 -14
  479. package/types/ojiepermana-angular-component-sheet.d.ts +0 -76
  480. package/types/ojiepermana-angular-component-skeleton.d.ts +0 -10
  481. package/types/ojiepermana-angular-component-slider.d.ts +0 -74
  482. package/types/ojiepermana-angular-component-spinner.d.ts +0 -13
  483. package/types/ojiepermana-angular-component-switch.d.ts +0 -40
  484. package/types/ojiepermana-angular-component-table.d.ts +0 -52
  485. package/types/ojiepermana-angular-component-tabs.d.ts +0 -92
  486. package/types/ojiepermana-angular-component-textarea.d.ts +0 -12
  487. package/types/ojiepermana-angular-component-timeline.d.ts +0 -63
  488. package/types/ojiepermana-angular-component-toast.d.ts +0 -38
  489. package/types/ojiepermana-angular-component-toggle-group.d.ts +0 -89
  490. package/types/ojiepermana-angular-component-toggle.d.ts +0 -25
  491. package/types/ojiepermana-angular-component-tooltip.d.ts +0 -89
  492. package/types/ojiepermana-angular-component-utils.d.ts +0 -5
  493. package/types/ojiepermana-angular-generator-api.d.ts +0 -86
  494. package/types/ojiepermana-angular-layout-component.d.ts +0 -205
  495. package/types/ojiepermana-angular-layout-provider.d.ts +0 -6
  496. package/types/ojiepermana-angular-layout-services.d.ts +0 -25
  497. package/types/ojiepermana-angular-layout-shell.d.ts +0 -8
  498. package/types/ojiepermana-angular-layout-token-directive.d.ts +0 -13
  499. package/types/ojiepermana-angular-layout-token.d.ts +0 -36
  500. package/types/ojiepermana-angular-layout-type-empty.d.ts +0 -22
  501. package/types/ojiepermana-angular-layout-type-horizontal.d.ts +0 -36
  502. package/types/ojiepermana-angular-layout-type-vertical.d.ts +0 -38
  503. package/types/ojiepermana-angular-layout.d.ts +0 -164
  504. package/types/ojiepermana-angular-navigation-demo-data.d.ts +0 -5
  505. package/types/ojiepermana-angular-navigation-icon.d.ts +0 -17
  506. package/types/ojiepermana-angular-navigation-item.d.ts +0 -54
  507. package/types/ojiepermana-angular-navigation-service.d.ts +0 -77
  508. package/types/ojiepermana-angular-navigation-sidebar.d.ts +0 -75
  509. package/types/ojiepermana-angular-navigation-topbar.d.ts +0 -74
  510. package/types/ojiepermana-angular-navigation-types.d.ts +0 -135
  511. package/types/ojiepermana-angular-theme-provider.d.ts +0 -11
  512. package/types/ojiepermana-angular-theme-services.d.ts +0 -55
  513. 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
- }