@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,252 +0,0 @@
1
- # SDK Generator
2
-
3
- OpenAPI → Angular SDK generator shipped as the secondary entrypoint
4
- `@ojiepermana/angular/generator/api`.
5
-
6
- It generates a **lightweight Angular SDK** from any OpenAPI 3.x spec (including
7
- 3.2.0): typed `HttpClient` services, tree-shakeable fn modules, optional
8
- metadata (permissions / validators), and a navigation tree.
9
-
10
- ## Local development in this repo
11
-
12
- ```bash
13
- # 1. Build the schematic runtime
14
- bun run gen:sdk:build
15
-
16
- # 2. Scaffold a workspace config
17
- bun run gen:sdk:init
18
-
19
- # 3. Edit sdk.config.json, then generate
20
- bun run gen:sdk
21
-
22
- # 4. Run the split-by-domain regression checks
23
- bun run test:gen:sdk
24
- ```
25
-
26
- ## Consumer usage after publish
27
-
28
- ```bash
29
- # inside an Angular workspace that installed @ojiepermana/angular
30
- ng generate @ojiepermana/angular:sdk-init
31
- # edit config/sdk.config.json
32
- ng generate @ojiepermana/angular:sdk
33
- ```
34
-
35
- The main consumer feature is generating an SDK from
36
- `config/sdk.config.json`. The consumer flow is: initialize the config once,
37
- edit it, then run `sdk` whenever the OpenAPI source changes.
38
-
39
- If a consumer wants short script aliases in `package.json`, they can add this
40
- script block to their workspace:
41
-
42
- ```json
43
- {
44
- "scripts": {
45
- "gen:sdk:init": "ng generate @ojiepermana/angular:sdk-init",
46
- "gen:sdk": "ng generate @ojiepermana/angular:sdk"
47
- }
48
- }
49
- ```
50
-
51
- Consumers do not need a `gen:sdk:build` step. That build command only exists
52
- for developing this repository, where the schematic source under
53
- `projects/angular/generator/api` must be compiled before local execution.
54
-
55
- ## Schematics
56
-
57
- The entrypoint exposes two schematics, registered in the parent collection at [`projects/angular/collection.json`](../../collection.json):
58
-
59
- | Schematic | Script | Purpose |
60
- | ---------- | ---------------------- | ------------------------------------------------ |
61
- | `sdk-init` | `bun run gen:sdk:init` | Create `config/sdk.config.json` from the example |
62
- | `sdk` | `bun run gen:sdk` | Run the generator using `config/sdk.config.json` |
63
-
64
- Both can be invoked directly with `ng generate` too:
65
-
66
- ```bash
67
- bunx ng generate ./projects/angular/collection.json:sdk-init [--force] [--path=custom/sdk.config.json]
68
- bunx ng generate ./projects/angular/collection.json:sdk [--dry-run] [--config=sdk.config.json] [--target=1]
69
-
70
- # after publish / inside a consuming workspace:
71
- ng generate @ojiepermana/angular:sdk-init [--force] [--path=custom/sdk.config.json]
72
- ng generate @ojiepermana/angular:sdk [--dry-run] [--config=sdk.config.json] [--target=1]
73
- ```
74
-
75
- ### `init` options
76
-
77
- | Option | Type | Default | Description |
78
- | --------- | ------- | ------------------------ | --------------------------------------------- |
79
- | `--path` | string | `config/sdk.config.json` | Destination path, relative to workspace root. |
80
- | `--force` | boolean | `false` | Overwrite the file if it already exists. |
81
-
82
- ### `sdk` options
83
-
84
- | Option | Type | Default | Description |
85
- | ----------- | ------ | ------------------------ | ------------------------------------------------------------------ |
86
- | `--config` | string | `config/sdk.config.json` | Path to the config file, relative to workspace root. |
87
- | `--target` | string | _(all)_ | Only generate one target. Accepts a 1-based index or `clientName`. |
88
- | `--dry-run` | flag | — | Preview file operations without writing anything. |
89
-
90
- ## Config shape
91
-
92
- ```jsonc
93
- {
94
- "$schema": "./node_modules/@ojiepermana/angular/generator/api/schematics/sdk/schema.json",
95
- "targets": [
96
- {
97
- "input": "./openapi.yaml",
98
- "output": "./sdk",
99
- "mode": "library", // "standalone" | "library" | "secondary-entrypoint"
100
- "clientName": "Api",
101
- "packageName": "@my-scope/sdk", // used in "library" mode
102
- "packageVersion": "0.0.1", // used in "library" mode
103
- "rootUrl": "", // optional; empty string means same-origin requests
104
- "splitByDomain": true, // optional; defaults true for "library", false otherwise
105
- "splitDepth": "service", // "service" (default) | "tag"
106
- "features": {
107
- "models": true,
108
- "operations": true,
109
- "services": true,
110
- "client": true,
111
- "metadata": true,
112
- "navigation": true,
113
- },
114
- },
115
- ],
116
- }
117
- ```
118
-
119
- Multiple targets are supported — one config run can emit several SDKs.
120
-
121
- If `rootUrl` is omitted or left empty, the generated SDK uses same-origin
122
- requests by default. Consumer apps can override it at runtime with
123
- `provideApiConfiguration(...)`.
124
-
125
- ### Runtime base URL
126
-
127
- The generated SDK does not read `sdk.config.json` at runtime. The value of
128
- `targets[].rootUrl` is only used during code generation to seed the default
129
- `ApiConfiguration.rootUrl` value.
130
-
131
- - `rootUrl: ""` or omitted: requests use the current origin, for example
132
- `/api/users` on the same host as the Angular app.
133
- - `rootUrl: "https://api.example.com"`: the generated SDK defaults to that
134
- absolute backend URL.
135
- - Runtime override: consumer apps can replace the default by providing a new
136
- value during bootstrap.
137
-
138
- Example runtime override in a consumer app:
139
-
140
- ```ts
141
- import { bootstrapApplication } from '@angular/platform-browser';
142
- import { provideHttpClient } from '@angular/common/http';
143
-
144
- import { AppComponent } from './app/app.component';
145
- import { provideApiConfiguration } from '@my-scope/sdk';
146
-
147
- bootstrapApplication(AppComponent, {
148
- providers: [provideHttpClient(), provideApiConfiguration('https://api.example.com')],
149
- });
150
- ```
151
-
152
- For standalone generated output inside the same workspace, import
153
- `provideApiConfiguration` from the generated SDK barrel instead of an npm
154
- package path.
155
-
156
- ## Per-domain layout
157
-
158
- By default, standalone and secondary-entrypoint targets emit a flat layout
159
- (`models/`, `fn/`, `services/`, … all at the output root). `mode: "library"`
160
- defaults to `splitByDomain: true` so the generated package is split into
161
- secondary entrypoints immediately. You can still set `splitByDomain: false` if
162
- you need the older flat library shape. Cross-domain models and client primitives
163
- land in `shared/`.
164
-
165
- ```jsonc
166
- {
167
- "splitByDomain": true,
168
- "splitDepth": "service", // or "tag"
169
- }
170
- ```
171
-
172
- `splitDepth` controls granularity. It is only read when `splitByDomain` is
173
- `true`.
174
-
175
- | `splitDepth` | Folder strategy | Example (spec with tags `Access/Role`, `Access/Permission`, `Storage/GCS`, `Storage/S3`, `Auth`) |
176
- | ------------ | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
177
- | `service` | One folder per **root** tag (each tag's `parent` chain collapses to its root). One folder per backend service. | `access/` (holds Role + Permission + Role-Permission + …), `storage/` (holds GCS + S3), `auth/`, `shared/`, root `public-api.ts` |
178
- | `tag` | One folder per **leaf** tag, nested under the parent chain. Keeps fine-grained separation while staying grouped. | `access/role/`, `access/permission/`, `access/role-permission/`, `storage/gcs/`, `storage/s3/`, `auth/`, `shared/`, root `public-api.ts` |
179
-
180
- Every domain folder contains `services/`, `fn/`, `models/`, `permissions/`,
181
- and its own `public-api.ts`. The root still owns the aggregate metadata barrel:
182
- `metadata.ts`, `openapi-helpers.ts`, and `permissions/index.ts` stay at the SDK
183
- root so `shared/` never depends on sibling domains. In standalone and
184
- secondary-entrypoint modes, the root `public-api.ts` aggregates `shared`, root
185
- metadata helpers, and every domain for convenience. In library mode, domain
186
- exports stay in their secondary entrypoints so consumers deep import the domain
187
- they need.
188
-
189
- Model ownership rule (per-domain mode):
190
-
191
- - A model used by exactly one domain → emitted inside that domain's `models/`.
192
- - A model shared across two or more domains → emitted inside `shared/models/`.
193
- - Client primitives (`ApiConfiguration`, `BaseService`, `RequestBuilder`,
194
- `StrictHttpResponse`, `Api`), shared metadata types, validators, and
195
- navigation always live under `shared/`.
196
- - Aggregate metadata helpers (`metadata.ts`, `openapi-helpers.ts`) and the
197
- top-level `permissions/index.ts` stay at the SDK root.
198
-
199
- Example consumption when using `mode: 'library'`:
200
-
201
- ```ts
202
- import { RoleService } from '@my-scope/sdk/access';
203
- import { ApprovalInstanceService, SubmitRequest } from '@my-scope/sdk/approval';
204
- import { GCSService } from '@my-scope/sdk/storage'; // splitDepth: 'service'
205
- import { GCSService } from '@my-scope/sdk/storage/gcs'; // splitDepth: 'tag'
206
- ```
207
-
208
- ## Output modes
209
-
210
- | Mode | What it emits | Use when… |
211
- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------- |
212
- | `standalone` | A plain folder (no `ng-package.json`). | You consume the SDK via path alias / `tsconfig.paths` inside the same app. |
213
- | `library` | Split-by-domain output plus package metadata and nested `ng-package.json` manifests for secondary entrypoints. | You want a buildable/publishable Angular package with efficient deep imports. |
214
- | `secondary-entrypoint` | Standalone output **plus** a minimal `ng-package.json` pointing at `public-api.ts`, plus nested `ng-package.json` files for split-by-domain secondary entrypoints. | You drop the folder inside an existing library so ng-packagr picks it up as a subpath. |
215
-
216
- In `library` mode, output also includes `tsconfig.lib.json` and `tsconfig.lib.prod.json`.
217
- `ng-package.dest` defaults to `dist/<output-folder-name>`.
218
-
219
- ## Feature flags
220
-
221
- All default to `true`. Turn off anything you don't need to shrink the output.
222
-
223
- | Flag | Emits |
224
- | ------------ | ------------------------------------------------------------------------------------------ |
225
- | `models` | `models/*.ts` — flat interfaces, enum aliases, array aliases. |
226
- | `operations` | `fn/<tag>/<operation-id>.ts` — tree-shakeable request functions with `.PATH`. |
227
- | `services` | `services/<tag>.service.ts` — `@Injectable({providedIn:'root'})` wrappers. |
228
- | `client` | `api-configuration.ts`, `base-service.ts`, `request-builder.ts`, `api.ts`. |
229
- | `metadata` | `permissions/*`, `validators/*`, `metadata.ts`, `openapi-helpers.ts`. |
230
- | `navigation` | `api.navigation.ts` — `NavigationItem[]` ready for `NavigationService.registerItems(...)`. |
231
-
232
- ## Pipeline
233
-
234
- ```text
235
- sdk.config.json → loader → spec (YAML/JSON) → IR → emitters → writer → Angular CLI Tree
236
- ```
237
-
238
- - `src/config/` — config schema + loader (supports JSONC and `.js`/`.cjs`).
239
- - `src/parser/` — OpenAPI → intermediate representation.
240
- - `src/emit/` — one module per output concern (models, operations, services, client, metadata, navigation, public-api).
241
- - `src/layout/` — post-emit layout transforms (e.g. `splitByDomain` reorganisation).
242
- - `src/writer/` — mode wrappers (standalone / library / secondary entrypoint).
243
- - `public-api.ts` — published TypeScript entrypoint for `@ojiepermana/angular/generator/api`.
244
- - `schematics/init/` — creates `sdk.config.json` from the example template.
245
- - `schematics/sdk/` — orchestrates engine and writes virtual files into the CLI `Tree`.
246
-
247
- ## Generated runtime conventions
248
-
249
- - Tree-shakeable: `import { listUsers } from './sdk/fn/user/list-users'` pulls only one HTTP call.
250
- - Services: every operation gets `op()` (body `Observable<T>`) and `op$Response()` (full `StrictHttpResponse<T>`).
251
- - `RequestBuilder` is intentionally minimal — no `style`/`explode` logic — to keep the output lightweight.
252
- - All files carry a `DO NOT EDIT` banner and `/* eslint-disable */`.
@@ -1,3 +0,0 @@
1
- {
2
- "type": "commonjs"
3
- }
@@ -1,90 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.init = init;
4
- const node_fs_1 = require("node:fs");
5
- const node_path_1 = require("node:path");
6
- /**
7
- * Default config template. The published package also ships a concrete
8
- * `sdk.config.example.json`; this fallback only exists so `init` still works if
9
- * the file is missing in unusual local/dev states.
10
- */
11
- const FALLBACK_TEMPLATE = {
12
- $schema: './node_modules/@ojiepermana/angular/generator/api/schematics/sdk/schema.json',
13
- targets: [
14
- {
15
- input: './openapi.yaml',
16
- output: './sdk',
17
- mode: 'library',
18
- clientName: 'Api',
19
- packageName: '@my-scope/sdk',
20
- packageVersion: '0.0.1',
21
- rootUrl: '',
22
- splitByDomain: true,
23
- splitDepth: 'service',
24
- features: {
25
- models: true,
26
- operations: true,
27
- services: true,
28
- client: true,
29
- metadata: true,
30
- navigation: true,
31
- },
32
- },
33
- ],
34
- };
35
- function init(options = {}) {
36
- return (tree, context) => {
37
- const workspaceRoot = process.cwd();
38
- const destRelative = options.path ?? 'config/sdk.config.json';
39
- const treePath = destRelative.startsWith('/') ? destRelative : `/${destRelative}`;
40
- if (tree.exists(treePath) && !options.force) {
41
- throw new Error(`${destRelative} already exists. Re-run with --force to overwrite.`);
42
- }
43
- const content = loadTemplate(workspaceRoot, destRelative);
44
- const buffer = Buffer.from(content, 'utf8');
45
- if (tree.exists(treePath)) {
46
- tree.overwrite(treePath, buffer);
47
- context.logger.info(`[sdk:init] overwrote ${destRelative}`);
48
- }
49
- else {
50
- tree.create(treePath, buffer);
51
- context.logger.info(`[sdk:init] created ${destRelative}`);
52
- }
53
- context.logger.info(`[sdk:init] edit targets[].input and targets[].output, then run \`${getNextCommand(workspaceRoot)}\`.`);
54
- };
55
- }
56
- function loadTemplate(workspaceRoot, destRelative) {
57
- const candidates = [
58
- (0, node_path_1.resolve)(workspaceRoot, 'sdk.config.example.json'),
59
- (0, node_path_1.resolve)(__dirname, '../../../sdk.config.example.json'),
60
- (0, node_path_1.resolve)(workspaceRoot, 'projects/angular/generator/api/sdk.config.example.json'),
61
- ];
62
- for (const candidate of candidates) {
63
- try {
64
- const parsed = JSON.parse((0, node_fs_1.readFileSync)(candidate, 'utf8'));
65
- parsed.$schema = resolveSchemaPath(workspaceRoot, destRelative);
66
- return `${JSON.stringify(parsed, null, 2)}\n`;
67
- }
68
- catch {
69
- // try next
70
- }
71
- }
72
- return `${JSON.stringify({ ...FALLBACK_TEMPLATE, $schema: resolveSchemaPath(workspaceRoot, destRelative) }, null, 2)}\n`;
73
- }
74
- function resolveSchemaPath(workspaceRoot, destRelative) {
75
- const prefix = relativePrefix(destRelative);
76
- if ((0, node_fs_1.existsSync)((0, node_path_1.resolve)(workspaceRoot, 'projects/angular/generator/api/schematics/sdk/schema.json'))) {
77
- return `${prefix}projects/angular/generator/api/schematics/sdk/schema.json`;
78
- }
79
- return `${prefix}node_modules/@ojiepermana/angular/generator/api/schematics/sdk/schema.json`;
80
- }
81
- function relativePrefix(destRelative) {
82
- const depth = destRelative.replace(/^\/+/, '').split('/').length - 1;
83
- return depth <= 0 ? './' : '../'.repeat(depth);
84
- }
85
- function getNextCommand(workspaceRoot) {
86
- if ((0, node_fs_1.existsSync)((0, node_path_1.resolve)(workspaceRoot, 'projects/angular/collection.json'))) {
87
- return 'bun run gen:sdk';
88
- }
89
- return 'ng generate @ojiepermana/angular:sdk';
90
- }
@@ -1,131 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ngAdd = ngAdd;
4
- const node_fs_1 = require("node:fs");
5
- const node_path_1 = require("node:path");
6
- const tasks_1 = require("@angular-devkit/schematics/tasks");
7
- const semver_1 = require("semver");
8
- function ngAdd(options = {}) {
9
- return (tree, context) => {
10
- const manifest = loadLibraryManifest();
11
- const requiredDependencies = collectRequiredDependencies(manifest);
12
- if (requiredDependencies.length === 0) {
13
- context.logger.warn('[ng-add] No peer dependencies were declared by @ojiepermana/angular.');
14
- return;
15
- }
16
- const workspacePackageJson = readWorkspacePackageJson(tree);
17
- workspacePackageJson.dependencies ??= {};
18
- let changed = false;
19
- for (const dependency of requiredDependencies) {
20
- const existingDependency = findExistingDependency(workspacePackageJson, dependency.name);
21
- if (existingDependency) {
22
- if (shouldUpdateDependency(existingDependency.version, dependency.version)) {
23
- const section = workspacePackageJson[existingDependency.section] ?? {};
24
- section[dependency.name] = dependency.version;
25
- workspacePackageJson[existingDependency.section] = section;
26
- changed = true;
27
- context.logger.info(`[ng-add] updated ${dependency.name} from ${existingDependency.version} to ${dependency.version} in ${existingDependency.section}.`);
28
- }
29
- else {
30
- context.logger.info(`[ng-add] keeping existing ${dependency.name}@${existingDependency.version} from ${existingDependency.section}.`);
31
- }
32
- continue;
33
- }
34
- workspacePackageJson.dependencies[dependency.name] = dependency.version;
35
- changed = true;
36
- context.logger.info(`[ng-add] added ${dependency.name}@${dependency.version}.`);
37
- }
38
- if (!changed) {
39
- context.logger.info('[ng-add] Required dependencies are already present.');
40
- return;
41
- }
42
- workspacePackageJson.dependencies = sortSection(workspacePackageJson.dependencies);
43
- writeWorkspacePackageJson(tree, workspacePackageJson);
44
- if (!options.skipInstall) {
45
- context.addTask(new tasks_1.NodePackageInstallTask());
46
- }
47
- };
48
- }
49
- /**
50
- * Use the package manifest as the source of truth so ng-add stays aligned with
51
- * the published peerDependencies and ng-update packageGroup metadata.
52
- */
53
- function loadLibraryManifest() {
54
- const candidates = [
55
- (0, node_path_1.resolve)(__dirname, '../../../../../package.json'),
56
- (0, node_path_1.resolve)(process.cwd(), 'node_modules/@ojiepermana/angular/package.json'),
57
- (0, node_path_1.resolve)(process.cwd(), 'projects/angular/package.json'),
58
- ];
59
- for (const candidate of candidates) {
60
- if (!(0, node_fs_1.existsSync)(candidate))
61
- continue;
62
- return JSON.parse((0, node_fs_1.readFileSync)(candidate, 'utf8'));
63
- }
64
- throw new Error('Could not locate the @ojiepermana/angular package manifest for ng-add.');
65
- }
66
- function collectRequiredDependencies(manifest) {
67
- const peerDependencies = manifest.peerDependencies ?? {};
68
- const packageGroup = normalizePackageGroup(manifest['ng-update']?.packageGroup);
69
- return Object.keys(peerDependencies)
70
- .sort((left, right) => left.localeCompare(right))
71
- .map((name) => ({
72
- name,
73
- version: packageGroup[name] ?? peerDependencies[name],
74
- }));
75
- }
76
- function normalizePackageGroup(packageGroup) {
77
- if (!packageGroup) {
78
- return {};
79
- }
80
- if (Array.isArray(packageGroup)) {
81
- return {};
82
- }
83
- return packageGroup;
84
- }
85
- function readWorkspacePackageJson(tree) {
86
- const buffer = tree.read('/package.json');
87
- if (!buffer) {
88
- throw new Error('No package.json found at the workspace root.');
89
- }
90
- return JSON.parse(buffer.toString('utf8'));
91
- }
92
- function writeWorkspacePackageJson(tree, packageJson) {
93
- const content = `${JSON.stringify(packageJson, null, 2)}\n`;
94
- if (tree.exists('/package.json')) {
95
- tree.overwrite('/package.json', content);
96
- }
97
- else {
98
- tree.create('/package.json', content);
99
- }
100
- }
101
- function findExistingDependency(packageJson, dependencyName) {
102
- const sections = [
103
- 'dependencies',
104
- 'devDependencies',
105
- 'peerDependencies',
106
- 'optionalDependencies',
107
- ];
108
- for (const section of sections) {
109
- const version = packageJson[section]?.[dependencyName];
110
- if (version) {
111
- return { section, version };
112
- }
113
- }
114
- return null;
115
- }
116
- function shouldUpdateDependency(existingVersion, requiredVersion) {
117
- const existing = (0, semver_1.validRange)(existingVersion);
118
- const required = (0, semver_1.validRange)(requiredVersion);
119
- if (!existing || !required) {
120
- return false;
121
- }
122
- const existingMinimum = (0, semver_1.minVersion)(existing);
123
- const requiredMinimum = (0, semver_1.minVersion)(required);
124
- if (!existingMinimum || !requiredMinimum) {
125
- return false;
126
- }
127
- return existingMinimum.compare(requiredMinimum) < 0;
128
- }
129
- function sortSection(section) {
130
- return Object.fromEntries(Object.entries(section).sort(([left], [right]) => left.localeCompare(right)));
131
- }
@@ -1,76 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sdk = sdk;
4
- exports.writeResult = writeResult;
5
- const node_path_1 = require("node:path");
6
- const loader_1 = require("../../src/config/loader");
7
- const engine_1 = require("../../src/engine");
8
- /**
9
- * Schematic factory. Reads `sdk.config.json` at the workspace root, runs the
10
- * pure generator, and writes each emitted file into the Tree so
11
- * `--dry-run` / `--force` behave as expected.
12
- */
13
- function sdk(options = {}) {
14
- return async (tree, context) => {
15
- const workspaceRoot = process.cwd();
16
- const configPath = options.config ?? 'config/sdk.config.json';
17
- const targets = (0, loader_1.loadConfig)(configPath, workspaceRoot);
18
- const selected = selectTargets(targets, options.target);
19
- if (selected.length === 0) {
20
- throw new Error(`No SDK targets matched "${options.target}"`);
21
- }
22
- for (const target of selected) {
23
- const result = await (0, engine_1.generate)(target, workspaceRoot);
24
- writeResult(tree, workspaceRoot, result, context);
25
- }
26
- };
27
- }
28
- function selectTargets(targets, selector) {
29
- if (!selector)
30
- return [...targets];
31
- const idx = Number.parseInt(selector, 10);
32
- if (!Number.isNaN(idx) && idx > 0 && idx <= targets.length) {
33
- return [targets[idx - 1]];
34
- }
35
- const lc = selector.toLowerCase();
36
- return targets.filter((t) => t.clientName.toLowerCase() === lc || t.output.toLowerCase().includes(lc) || t.packageName.toLowerCase() === lc);
37
- }
38
- function writeResult(tree, workspaceRoot, result, context) {
39
- const relOutput = (0, node_path_1.relative)(workspaceRoot, result.outputDir) || '.';
40
- context.logger.info(`[sdk] ${result.target.mode} → ${relOutput} ` +
41
- `(schemas=${result.stats.schemas}, operations=${result.stats.operations}, ` +
42
- `tags=${result.stats.tags}, files=${result.stats.files})`);
43
- removeStaleFiles(tree, workspaceRoot, result);
44
- for (const file of result.files) {
45
- const absolute = (0, node_path_1.resolve)(result.outputDir, file.path);
46
- const treePath = normalizeTreePath(workspaceRoot, absolute);
47
- const buffer = Buffer.from(file.content, 'utf8');
48
- if (tree.exists(treePath)) {
49
- tree.overwrite(treePath, buffer);
50
- }
51
- else {
52
- tree.create(treePath, buffer);
53
- }
54
- }
55
- }
56
- function removeStaleFiles(tree, workspaceRoot, result) {
57
- const outputRoot = normalizeTreePath(workspaceRoot, result.outputDir);
58
- if (outputRoot === '/') {
59
- return;
60
- }
61
- const nextFiles = new Set(result.files.map((file) => normalizeTreePath(workspaceRoot, (0, node_path_1.resolve)(result.outputDir, file.path))));
62
- const staleFiles = [];
63
- tree.getDir(outputRoot).visit((path) => {
64
- if (!nextFiles.has(path)) {
65
- staleFiles.push(path);
66
- }
67
- });
68
- for (const staleFile of staleFiles) {
69
- tree.delete(staleFile);
70
- }
71
- }
72
- function normalizeTreePath(workspaceRoot, absolute) {
73
- const rel = (0, node_path_1.relative)(workspaceRoot, absolute);
74
- const posix = rel.split(/\\+/).join('/');
75
- return posix.startsWith('/') ? posix : `/${posix}`;
76
- }
@@ -1,41 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loadConfig = loadConfig;
4
- const node_fs_1 = require("node:fs");
5
- const node_path_1 = require("node:path");
6
- const schema_1 = require("./schema");
7
- /**
8
- * Loads an SDK generator config from disk. Supports `.json` and `.js`/`.cjs`
9
- * (require-based). `.ts` is intentionally not supported in the first iteration
10
- * to avoid pulling an extra compile step — use `.json` or `.js` instead.
11
- */
12
- function loadConfig(configPath, workspaceRoot) {
13
- const absolute = (0, node_path_1.isAbsolute)(configPath) ? configPath : (0, node_path_1.resolve)(workspaceRoot, configPath);
14
- if (!(0, node_fs_1.existsSync)(absolute)) {
15
- throw new Error(`SDK config not found at ${absolute}`);
16
- }
17
- const ext = (0, node_path_1.extname)(absolute).toLowerCase();
18
- let raw;
19
- if (ext === '.json' || ext === '') {
20
- const text = (0, node_fs_1.readFileSync)(absolute, 'utf8');
21
- raw = JSON.parse(stripJsonComments(text));
22
- }
23
- else if (ext === '.js' || ext === '.cjs') {
24
- const mod = require(absolute);
25
- raw = extractDefaultExport(mod);
26
- }
27
- else {
28
- throw new Error(`Unsupported SDK config extension: ${ext} (use .json or .js)`);
29
- }
30
- return (0, schema_1.resolveConfig)(raw);
31
- }
32
- function extractDefaultExport(mod) {
33
- if (mod && typeof mod === 'object' && 'default' in mod) {
34
- return mod.default;
35
- }
36
- return mod;
37
- }
38
- function stripJsonComments(text) {
39
- // Minimal JSONC support: strip // line comments and /* */ block comments.
40
- return text.replace(/\/\*[\s\S]*?\*\//g, '').replace(/(^|[^:])\/\/.*$/gm, '$1');
41
- }
@@ -1,57 +0,0 @@
1
- "use strict";
2
- /**
3
- * Public config shape for the SDK generator.
4
- *
5
- * Users place an `sdk.config.json` at the workspace root describing one or more
6
- * generation targets. All paths are resolved relative to the workspace root
7
- * (i.e. the directory containing the config file).
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.resolveTarget = resolveTarget;
11
- exports.resolveConfig = resolveConfig;
12
- const DEFAULT_BANNER = '/* eslint-disable */\n/* Auto-generated by @ojiepermana/angular/generator/api. DO NOT EDIT. */';
13
- const DEFAULT_FEATURES = {
14
- models: true,
15
- operations: true,
16
- services: true,
17
- client: true,
18
- metadata: true,
19
- navigation: true,
20
- };
21
- function resolveTarget(raw) {
22
- if (!raw || typeof raw !== 'object') {
23
- throw new Error('Invalid target: expected object');
24
- }
25
- if (!raw.input)
26
- throw new Error('Target is missing required "input"');
27
- if (!raw.output)
28
- throw new Error('Target is missing required "output"');
29
- const mode = raw.mode ?? 'standalone';
30
- if (!['standalone', 'library', 'secondary-entrypoint'].includes(mode)) {
31
- throw new Error(`Invalid target mode: ${mode}`);
32
- }
33
- const splitByDomain = raw.splitByDomain ?? mode === 'library';
34
- return {
35
- input: raw.input,
36
- output: raw.output,
37
- mode,
38
- clientName: raw.clientName ?? 'Api',
39
- packageName: raw.packageName ?? '@local/sdk',
40
- packageVersion: raw.packageVersion ?? '0.0.1',
41
- rootUrl: raw.rootUrl,
42
- features: { ...DEFAULT_FEATURES, ...(raw.features ?? {}) },
43
- splitByDomain,
44
- splitDepth: raw.splitDepth === 'tag' ? 'tag' : 'service',
45
- banner: raw.banner ?? DEFAULT_BANNER,
46
- };
47
- }
48
- function resolveConfig(raw) {
49
- if (!raw || typeof raw !== 'object') {
50
- throw new Error('Invalid SDK config: root must be an object');
51
- }
52
- const cfg = raw;
53
- if (!Array.isArray(cfg.targets) || cfg.targets.length === 0) {
54
- throw new Error('Invalid SDK config: "targets" must be a non-empty array');
55
- }
56
- return cfg.targets.map(resolveTarget);
57
- }