@simplysm/sd-claude 14.0.50 → 14.0.52

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 (318) hide show
  1. package/claude/references/sd-frontend-design.md +10 -9
  2. package/claude/references/sd-simplysm-v14/angular/README.md +497 -0
  3. package/claude/references/sd-simplysm-v14/angular/bootstrap/provide-sd-angular.md +37 -0
  4. package/claude/references/sd-simplysm-v14/angular/bootstrap/sd-angular-config-provider.md +16 -0
  5. package/claude/references/sd-simplysm-v14/angular/directives/sd-command-directive.md +27 -0
  6. package/claude/references/sd-simplysm-v14/angular/directives/sd-events.md +25 -0
  7. package/claude/references/sd-simplysm-v14/angular/directives/sd-intersection-directive.md +36 -0
  8. package/claude/references/sd-simplysm-v14/angular/directives/sd-invalid.md +24 -0
  9. package/claude/references/sd-simplysm-v14/angular/directives/sd-resize-directive.md +42 -0
  10. package/claude/references/sd-simplysm-v14/angular/directives/sd-ripple.md +23 -0
  11. package/claude/references/sd-simplysm-v14/angular/directives/sd-router-link.md +38 -0
  12. package/claude/references/sd-simplysm-v14/angular/directives/sd-show-effect.md +18 -0
  13. package/claude/references/sd-simplysm-v14/angular/directives/sd-typed-template.md +69 -0
  14. package/claude/references/sd-simplysm-v14/angular/features/sd-address-search-modal.md +50 -0
  15. package/claude/references/sd-simplysm-v14/angular/features/sd-permission-table.md +20 -0
  16. package/claude/references/sd-simplysm-v14/angular/features/sd-shared-data-components.md +158 -0
  17. package/claude/references/sd-simplysm-v14/angular/features/sd-tiptap-editor.md +26 -0
  18. package/claude/references/sd-simplysm-v14/angular/pipes/format-pipe.md +41 -0
  19. package/claude/references/sd-simplysm-v14/angular/plugins/sd-global-error-handler.md +23 -0
  20. package/claude/references/sd-simplysm-v14/angular/plugins/sd-option-event-plugin.md +34 -0
  21. package/claude/references/sd-simplysm-v14/angular/provider-types/sd-menu.md +65 -0
  22. package/claude/references/sd-simplysm-v14/angular/provider-types/sd-modal-content-def.md +148 -0
  23. package/claude/references/sd-simplysm-v14/angular/provider-types/sd-toast-content-def.md +73 -0
  24. package/claude/references/sd-simplysm-v14/angular/provider-types/shared-data-base.md +59 -0
  25. package/claude/references/sd-simplysm-v14/angular/providers/sd-activated-modal-provider.md +34 -0
  26. package/claude/references/sd-simplysm-v14/angular/providers/sd-app-structure-provider.md +81 -0
  27. package/claude/references/sd-simplysm-v14/angular/providers/sd-busy-provider.md +18 -0
  28. package/claude/references/sd-simplysm-v14/angular/providers/sd-file-dialog-provider.md +40 -0
  29. package/claude/references/sd-simplysm-v14/angular/providers/sd-local-storage-provider.md +20 -0
  30. package/claude/references/sd-simplysm-v14/angular/providers/sd-modal-provider.md +67 -0
  31. package/claude/references/sd-simplysm-v14/angular/providers/sd-navigate-window-provider.md +18 -0
  32. package/claude/references/sd-simplysm-v14/angular/providers/sd-print-provider.md +25 -0
  33. package/claude/references/sd-simplysm-v14/angular/providers/sd-service-client-factory-provider.md +43 -0
  34. package/claude/references/sd-simplysm-v14/angular/providers/sd-shared-data-provider.md +64 -0
  35. package/claude/references/sd-simplysm-v14/angular/providers/sd-system-config-provider.md +46 -0
  36. package/claude/references/sd-simplysm-v14/angular/providers/sd-system-log-provider.md +18 -0
  37. package/claude/references/sd-simplysm-v14/angular/providers/sd-theme-provider.md +38 -0
  38. package/claude/references/sd-simplysm-v14/angular/providers/sd-toast-provider.md +65 -0
  39. package/claude/references/sd-simplysm-v14/angular/recipes/_common-rules.md +336 -0
  40. package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-a-edit-save.md +191 -0
  41. package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-b-delete-restore.md +103 -0
  42. package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-c-modal-view.md +198 -0
  43. package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-d-control-view.md +109 -0
  44. package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-e-auxiliary.md +87 -0
  45. package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-f-complex-detail.md +202 -0
  46. package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail.md +280 -0
  47. package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-a-inline-edit.md +386 -0
  48. package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-b-selection.md +215 -0
  49. package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-c-inline-delete.md +64 -0
  50. package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-d-select-modal.md +193 -0
  51. package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-e-readonly-modal.md +140 -0
  52. package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-f-modal-edit.md +123 -0
  53. package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-g-excel.md +145 -0
  54. package/claude/references/sd-simplysm-v14/angular/recipes/crud-list.md +377 -0
  55. package/claude/references/sd-simplysm-v14/angular/recipes/data-select-button.md +368 -0
  56. package/claude/references/sd-simplysm-v14/angular/recipes/page-modal-container.md +238 -0
  57. package/claude/references/sd-simplysm-v14/angular/styling/classes.md +149 -0
  58. package/claude/references/sd-simplysm-v14/angular/styling/mixins.md +100 -0
  59. package/claude/references/sd-simplysm-v14/angular/styling/themes.md +35 -0
  60. package/claude/references/sd-simplysm-v14/angular/styling/variables.md +147 -0
  61. package/claude/references/sd-simplysm-v14/angular/type-utilities/directive-input-signals.md +232 -0
  62. package/claude/references/sd-simplysm-v14/angular/ui-data/sd-list.md +37 -0
  63. package/claude/references/sd-simplysm-v14/angular/ui-data/sd-sheet.md +212 -0
  64. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-additional-button.md +26 -0
  65. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-anchor.md +31 -0
  66. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-button.md +103 -0
  67. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-checkbox-group.md +39 -0
  68. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-checkbox.md +81 -0
  69. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-date-range-picker.md +27 -0
  70. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-form.md +89 -0
  71. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-modal-select-button.md +54 -0
  72. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-numpad.md +26 -0
  73. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-range.md +26 -0
  74. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-select.md +68 -0
  75. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-shared-data-select.md +52 -0
  76. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-state-preset.md +37 -0
  77. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-switch.md +27 -0
  78. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-textarea.md +33 -0
  79. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-textfield.md +145 -0
  80. package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-dock-container.md +64 -0
  81. package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-dock.md +37 -0
  82. package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-gap.md +26 -0
  83. package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-kanban-board.md +96 -0
  84. package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-kanban-lane.md +34 -0
  85. package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-kanban.md +29 -0
  86. package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-collapse.md +35 -0
  87. package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-pagination.md +26 -0
  88. package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-sidebar-container.md +49 -0
  89. package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-sidebar-menu.md +22 -0
  90. package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-sidebar-user.md +43 -0
  91. package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-tab.md +51 -0
  92. package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-topbar-container.md +97 -0
  93. package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-topbar-menu.md +23 -0
  94. package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-topbar-user.md +38 -0
  95. package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-topbar.md +30 -0
  96. package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-busy-container.md +69 -0
  97. package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-confirm-modal.md +30 -0
  98. package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-dropdown.md +40 -0
  99. package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-modal.md +34 -0
  100. package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-prompt-modal.md +30 -0
  101. package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-toast.md +35 -0
  102. package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-barcode.md +36 -0
  103. package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-calendar.md +34 -0
  104. package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-echarts.md +32 -0
  105. package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-label.md +24 -0
  106. package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-note.md +23 -0
  107. package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-progress.md +23 -0
  108. package/claude/references/sd-simplysm-v14/angular/utils/inject-routing-signals.md +161 -0
  109. package/claude/references/sd-simplysm-v14/angular/utils/inject-sd-system-config-resource.md +35 -0
  110. package/claude/references/sd-simplysm-v14/angular/utils/mark.md +43 -0
  111. package/claude/references/sd-simplysm-v14/angular/utils/selection-managers.md +96 -0
  112. package/claude/references/sd-simplysm-v14/angular/utils/set-safe-style.md +19 -0
  113. package/claude/references/sd-simplysm-v14/angular/utils/setup-functions.md +93 -0
  114. package/claude/references/sd-simplysm-v14/capacitor-plugin-auto-update/README.md +38 -0
  115. package/claude/references/sd-simplysm-v14/capacitor-plugin-auto-update/apk-installer/apk-installer.md +115 -0
  116. package/claude/references/sd-simplysm-v14/capacitor-plugin-auto-update/auto-update/auto-update.md +113 -0
  117. package/claude/references/sd-simplysm-v14/capacitor-plugin-file-system/README.md +197 -0
  118. package/claude/references/sd-simplysm-v14/capacitor-plugin-intent/README.md +235 -0
  119. package/claude/references/sd-simplysm-v14/capacitor-plugin-usb-storage/README.md +251 -0
  120. package/claude/references/sd-simplysm-v14/core-browser/README.md +52 -0
  121. package/claude/references/sd-simplysm-v14/core-browser/extensions/copy-paste.md +59 -0
  122. package/claude/references/sd-simplysm-v14/core-browser/extensions/element-prototype-extensions.md +137 -0
  123. package/claude/references/sd-simplysm-v14/core-browser/extensions/get-bounds.md +84 -0
  124. package/claude/references/sd-simplysm-v14/core-browser/utils/download-blob.md +59 -0
  125. package/claude/references/sd-simplysm-v14/core-browser/utils/fetch-url-bytes.md +91 -0
  126. package/claude/references/sd-simplysm-v14/core-browser/utils/indexed-db-store.md +131 -0
  127. package/claude/references/sd-simplysm-v14/core-browser/utils/indexed-db-virtual-fs.md +121 -0
  128. package/claude/references/sd-simplysm-v14/core-browser/utils/open-file-dialog.md +60 -0
  129. package/claude/references/sd-simplysm-v14/core-common/README.md +179 -0
  130. package/claude/references/sd-simplysm-v14/core-common/errors/argument-error.md +26 -0
  131. package/claude/references/sd-simplysm-v14/core-common/errors/not-implemented-error.md +33 -0
  132. package/claude/references/sd-simplysm-v14/core-common/errors/sd-error.md +38 -0
  133. package/claude/references/sd-simplysm-v14/core-common/errors/timeout-error.md +36 -0
  134. package/claude/references/sd-simplysm-v14/core-common/extensions/array.md +125 -0
  135. package/claude/references/sd-simplysm-v14/core-common/extensions/map.md +43 -0
  136. package/claude/references/sd-simplysm-v14/core-common/extensions/set.md +35 -0
  137. package/claude/references/sd-simplysm-v14/core-common/features/debounce-queue.md +48 -0
  138. package/claude/references/sd-simplysm-v14/core-common/features/event-emitter.md +52 -0
  139. package/claude/references/sd-simplysm-v14/core-common/features/serial-queue.md +44 -0
  140. package/claude/references/sd-simplysm-v14/core-common/type-utils/common-types.md +100 -0
  141. package/claude/references/sd-simplysm-v14/core-common/type-utils/env.md +42 -0
  142. package/claude/references/sd-simplysm-v14/core-common/types/date-only.md +86 -0
  143. package/claude/references/sd-simplysm-v14/core-common/types/date-time.md +106 -0
  144. package/claude/references/sd-simplysm-v14/core-common/types/lazy-gc-map.md +59 -0
  145. package/claude/references/sd-simplysm-v14/core-common/types/time.md +62 -0
  146. package/claude/references/sd-simplysm-v14/core-common/types/uuid.md +41 -0
  147. package/claude/references/sd-simplysm-v14/core-common/utils/bytes.md +36 -0
  148. package/claude/references/sd-simplysm-v14/core-common/utils/dt.md +60 -0
  149. package/claude/references/sd-simplysm-v14/core-common/utils/err.md +26 -0
  150. package/claude/references/sd-simplysm-v14/core-common/utils/json.md +58 -0
  151. package/claude/references/sd-simplysm-v14/core-common/utils/num.md +56 -0
  152. package/claude/references/sd-simplysm-v14/core-common/utils/obj.md +107 -0
  153. package/claude/references/sd-simplysm-v14/core-common/utils/path.md +30 -0
  154. package/claude/references/sd-simplysm-v14/core-common/utils/primitive.md +28 -0
  155. package/claude/references/sd-simplysm-v14/core-common/utils/str.md +63 -0
  156. package/claude/references/sd-simplysm-v14/core-common/utils/template-strings.md +49 -0
  157. package/claude/references/sd-simplysm-v14/core-common/utils/transfer.md +35 -0
  158. package/claude/references/sd-simplysm-v14/core-common/utils/wait.md +35 -0
  159. package/claude/references/sd-simplysm-v14/core-common/utils/xml.md +49 -0
  160. package/claude/references/sd-simplysm-v14/core-common/utils/zip-archive.md +77 -0
  161. package/claude/references/sd-simplysm-v14/core-node/README.md +59 -0
  162. package/claude/references/sd-simplysm-v14/core-node/features/fs-watcher.md +110 -0
  163. package/claude/references/sd-simplysm-v14/core-node/logging/create-file-reporter.md +78 -0
  164. package/claude/references/sd-simplysm-v14/core-node/logging/pretty-reporter.md +38 -0
  165. package/claude/references/sd-simplysm-v14/core-node/logging/setup-consola.md +77 -0
  166. package/claude/references/sd-simplysm-v14/core-node/utils/cpx.md +128 -0
  167. package/claude/references/sd-simplysm-v14/core-node/utils/fsx.md +168 -0
  168. package/claude/references/sd-simplysm-v14/core-node/utils/pathx.md +73 -0
  169. package/claude/references/sd-simplysm-v14/core-node/worker/create-worker.md +85 -0
  170. package/claude/references/sd-simplysm-v14/core-node/worker/worker.md +160 -0
  171. package/claude/references/sd-simplysm-v14/excel/README.md +66 -0
  172. package/claude/references/sd-simplysm-v14/excel/core-classes/excel-cell.md +79 -0
  173. package/claude/references/sd-simplysm-v14/excel/core-classes/excel-col.md +36 -0
  174. package/claude/references/sd-simplysm-v14/excel/core-classes/excel-row.md +34 -0
  175. package/claude/references/sd-simplysm-v14/excel/core-classes/excel-workbook.md +93 -0
  176. package/claude/references/sd-simplysm-v14/excel/core-classes/excel-worksheet.md +147 -0
  177. package/claude/references/sd-simplysm-v14/excel/types/excel-address-point.md +33 -0
  178. package/claude/references/sd-simplysm-v14/excel/types/excel-style-options.md +57 -0
  179. package/claude/references/sd-simplysm-v14/excel/types/excel-value-type.md +28 -0
  180. package/claude/references/sd-simplysm-v14/excel/types/excel-xml-content-type-data.md +23 -0
  181. package/claude/references/sd-simplysm-v14/excel/types/excel-xml-drawing-data.md +29 -0
  182. package/claude/references/sd-simplysm-v14/excel/types/excel-xml-relationship-data.md +39 -0
  183. package/claude/references/sd-simplysm-v14/excel/types/excel-xml-shared-string-data.md +42 -0
  184. package/claude/references/sd-simplysm-v14/excel/types/excel-xml-style-data.md +97 -0
  185. package/claude/references/sd-simplysm-v14/excel/types/excel-xml-workbook-data.md +22 -0
  186. package/claude/references/sd-simplysm-v14/excel/types/excel-xml-worksheet-data.md +68 -0
  187. package/claude/references/sd-simplysm-v14/excel/types/excel-xml.md +15 -0
  188. package/claude/references/sd-simplysm-v14/excel/utilities/excel-utils.md +101 -0
  189. package/claude/references/sd-simplysm-v14/excel/wrapper/excel-wrapper.md +108 -0
  190. package/claude/references/sd-simplysm-v14/lint/README.md +183 -0
  191. package/claude/references/sd-simplysm-v14/orm-common/README.md +156 -0
  192. package/claude/references/sd-simplysm-v14/orm-common/core/db-context.md +208 -0
  193. package/claude/references/sd-simplysm-v14/orm-common/core/db-transaction-error.md +64 -0
  194. package/claude/references/sd-simplysm-v14/orm-common/expression/expr-unit.md +62 -0
  195. package/claude/references/sd-simplysm-v14/orm-common/expression/expr.md +198 -0
  196. package/claude/references/sd-simplysm-v14/orm-common/models/migration.md +37 -0
  197. package/claude/references/sd-simplysm-v14/orm-common/query-builder/create-query-builder.md +80 -0
  198. package/claude/references/sd-simplysm-v14/orm-common/queryable-executable/executable.md +54 -0
  199. package/claude/references/sd-simplysm-v14/orm-common/queryable-executable/parse-search-query.md +75 -0
  200. package/claude/references/sd-simplysm-v14/orm-common/queryable-executable/queryable.md +238 -0
  201. package/claude/references/sd-simplysm-v14/orm-common/schema-builders/column-builder.md +63 -0
  202. package/claude/references/sd-simplysm-v14/orm-common/schema-builders/foreign-key-builder.md +137 -0
  203. package/claude/references/sd-simplysm-v14/orm-common/schema-builders/index-builder.md +54 -0
  204. package/claude/references/sd-simplysm-v14/orm-common/schema-builders/procedure.md +67 -0
  205. package/claude/references/sd-simplysm-v14/orm-common/schema-builders/table.md +95 -0
  206. package/claude/references/sd-simplysm-v14/orm-common/schema-builders/view.md +71 -0
  207. package/claude/references/sd-simplysm-v14/orm-common/types/data-type.md +146 -0
  208. package/claude/references/sd-simplysm-v14/orm-common/types/dialect.md +151 -0
  209. package/claude/references/sd-simplysm-v14/orm-common/types/expr.md +175 -0
  210. package/claude/references/sd-simplysm-v14/orm-common/types/parse-query-result.md +58 -0
  211. package/claude/references/sd-simplysm-v14/orm-common/types/query-def.md +224 -0
  212. package/claude/references/sd-simplysm-v14/orm-node/README.md +65 -0
  213. package/claude/references/sd-simplysm-v14/orm-node/connections/mssql-db-conn.md +85 -0
  214. package/claude/references/sd-simplysm-v14/orm-node/connections/mysql-db-conn.md +83 -0
  215. package/claude/references/sd-simplysm-v14/orm-node/connections/postgresql-db-conn.md +86 -0
  216. package/claude/references/sd-simplysm-v14/orm-node/core/create-db-conn.md +62 -0
  217. package/claude/references/sd-simplysm-v14/orm-node/core/create-orm.md +107 -0
  218. package/claude/references/sd-simplysm-v14/orm-node/core/node-db-context-executor.md +50 -0
  219. package/claude/references/sd-simplysm-v14/orm-node/types/db-conn-config.md +91 -0
  220. package/claude/references/sd-simplysm-v14/orm-node/types/db-conn-constants.md +33 -0
  221. package/claude/references/sd-simplysm-v14/orm-node/types/db-conn.md +60 -0
  222. package/claude/references/sd-simplysm-v14/orm-node/types/get-dialect-from-config.md +17 -0
  223. package/{README.md → claude/references/sd-simplysm-v14/sd-claude/README.md} +85 -84
  224. package/{docs → claude/references/sd-simplysm-v14/sd-claude}/assets.md +2 -2
  225. package/{docs → claude/references/sd-simplysm-v14/sd-claude}/hooks.md +15 -1
  226. package/claude/references/sd-simplysm-v14/sd-cli/README.md +138 -0
  227. package/claude/references/sd-simplysm-v14/sd-cli/angular-vite-plugin/sd-angular-plugin.md +60 -0
  228. package/claude/references/sd-simplysm-v14/sd-cli/config/build-target.md +31 -0
  229. package/claude/references/sd-simplysm-v14/sd-cli/config/npm-config.md +27 -0
  230. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-browser-support-config.md +19 -0
  231. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-build-package-config.md +21 -0
  232. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-capacitor-config.md +109 -0
  233. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-client-package-config.md +33 -0
  234. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-config.md +78 -0
  235. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-electron-config.md +27 -0
  236. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-package-config.md +18 -0
  237. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-post-publish-script-config.md +19 -0
  238. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-publish-config.md +72 -0
  239. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-pwa-config.md +41 -0
  240. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-scripts-package-config.md +19 -0
  241. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-server-package-config.md +32 -0
  242. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-watch-hook-config.md +19 -0
  243. package/claude/references/sd-simplysm-v14/sd-cli/ts-compiler/sd-ts-compiler.md +158 -0
  244. package/claude/references/sd-simplysm-v14/service-client/README.md +74 -0
  245. package/claude/references/sd-simplysm-v14/service-client/features/event-client.md +93 -0
  246. package/claude/references/sd-simplysm-v14/service-client/features/file-client.md +63 -0
  247. package/claude/references/sd-simplysm-v14/service-client/features/orm-client-connector.md +89 -0
  248. package/claude/references/sd-simplysm-v14/service-client/features/orm-client-db-context-executor.md +31 -0
  249. package/claude/references/sd-simplysm-v14/service-client/main/service-client.md +206 -0
  250. package/claude/references/sd-simplysm-v14/service-client/protocol/client-protocol-wrapper.md +64 -0
  251. package/claude/references/sd-simplysm-v14/service-client/transport/service-transport.md +68 -0
  252. package/claude/references/sd-simplysm-v14/service-client/transport/socket-provider.md +100 -0
  253. package/claude/references/sd-simplysm-v14/service-client/types/blob-input.md +7 -0
  254. package/claude/references/sd-simplysm-v14/service-client/types/browser-worker.md +47 -0
  255. package/claude/references/sd-simplysm-v14/service-client/types/file-collection.md +21 -0
  256. package/claude/references/sd-simplysm-v14/service-client/types/service-connection-options.md +22 -0
  257. package/claude/references/sd-simplysm-v14/service-client/types/service-progress.md +39 -0
  258. package/claude/references/sd-simplysm-v14/service-common/README.md +161 -0
  259. package/claude/references/sd-simplysm-v14/service-common/app-structure/app-structure-item.md +107 -0
  260. package/claude/references/sd-simplysm-v14/service-common/app-structure/get-flat-permissions.md +57 -0
  261. package/claude/references/sd-simplysm-v14/service-common/app-structure/is-usable-modules-chain.md +23 -0
  262. package/claude/references/sd-simplysm-v14/service-common/app-structure/is-usable-modules.md +42 -0
  263. package/claude/references/sd-simplysm-v14/service-common/events/define-event.md +68 -0
  264. package/claude/references/sd-simplysm-v14/service-common/protocol/create-service-protocol.md +93 -0
  265. package/claude/references/sd-simplysm-v14/service-common/protocol/protocol-config.md +21 -0
  266. package/claude/references/sd-simplysm-v14/service-common/protocol/service-add-event-listener-message.md +23 -0
  267. package/claude/references/sd-simplysm-v14/service-common/protocol/service-auth-message.md +17 -0
  268. package/claude/references/sd-simplysm-v14/service-common/protocol/service-emit-event-message.md +21 -0
  269. package/claude/references/sd-simplysm-v14/service-common/protocol/service-error-message.md +29 -0
  270. package/claude/references/sd-simplysm-v14/service-common/protocol/service-event-message.md +21 -0
  271. package/claude/references/sd-simplysm-v14/service-common/protocol/service-get-event-listener-infos-message.md +19 -0
  272. package/claude/references/sd-simplysm-v14/service-common/protocol/service-message.md +52 -0
  273. package/claude/references/sd-simplysm-v14/service-common/protocol/service-progress-message.md +21 -0
  274. package/claude/references/sd-simplysm-v14/service-common/protocol/service-remove-event-listener-message.md +19 -0
  275. package/claude/references/sd-simplysm-v14/service-common/protocol/service-request-message.md +17 -0
  276. package/claude/references/sd-simplysm-v14/service-common/protocol/service-response-message.md +17 -0
  277. package/claude/references/sd-simplysm-v14/service-common/service-types/app-structure-service.md +15 -0
  278. package/claude/references/sd-simplysm-v14/service-common/service-types/auto-update-service.md +20 -0
  279. package/claude/references/sd-simplysm-v14/service-common/service-types/orm-service.md +61 -0
  280. package/claude/references/sd-simplysm-v14/service-common/types/service-upload-result.md +19 -0
  281. package/claude/references/sd-simplysm-v14/service-server/README.md +162 -0
  282. package/claude/references/sd-simplysm-v14/service-server/auth/auth-token-payload.md +18 -0
  283. package/claude/references/sd-simplysm-v14/service-server/auth/sign-jwt.md +30 -0
  284. package/claude/references/sd-simplysm-v14/service-server/auth/verify-jwt.md +35 -0
  285. package/claude/references/sd-simplysm-v14/service-server/core/auth.md +64 -0
  286. package/claude/references/sd-simplysm-v14/service-server/core/define-service.md +81 -0
  287. package/claude/references/sd-simplysm-v14/service-server/core/execute-service-method.md +43 -0
  288. package/claude/references/sd-simplysm-v14/service-server/core/service-context.md +79 -0
  289. package/claude/references/sd-simplysm-v14/service-server/legacy/handle-v1-connection.md +25 -0
  290. package/claude/references/sd-simplysm-v14/service-server/main/create-service-server.md +32 -0
  291. package/claude/references/sd-simplysm-v14/service-server/main/service-server.md +113 -0
  292. package/claude/references/sd-simplysm-v14/service-server/protocol/server-protocol-wrapper.md +35 -0
  293. package/claude/references/sd-simplysm-v14/service-server/services/app-structure-service.md +59 -0
  294. package/claude/references/sd-simplysm-v14/service-server/services/auto-update-service.md +34 -0
  295. package/claude/references/sd-simplysm-v14/service-server/services/orm-service.md +43 -0
  296. package/claude/references/sd-simplysm-v14/service-server/transport-http/handle-http-request.md +33 -0
  297. package/claude/references/sd-simplysm-v14/service-server/transport-http/handle-static-file.md +29 -0
  298. package/claude/references/sd-simplysm-v14/service-server/transport-http/handle-upload.md +33 -0
  299. package/claude/references/sd-simplysm-v14/service-server/transport-socket/service-socket.md +64 -0
  300. package/claude/references/sd-simplysm-v14/service-server/transport-socket/websocket-handler.md +57 -0
  301. package/claude/references/sd-simplysm-v14/service-server/types/service-server-options.md +36 -0
  302. package/claude/references/sd-simplysm-v14/service-server/utils/get-config.md +29 -0
  303. package/claude/references/sd-simplysm-v14/storage/README.md +99 -0
  304. package/claude/references/sd-simplysm-v14/storage/clients/ftp-storage-client.md +99 -0
  305. package/claude/references/sd-simplysm-v14/storage/clients/sftp-storage-client.md +108 -0
  306. package/claude/references/sd-simplysm-v14/storage/factory/storage-factory.md +114 -0
  307. package/claude/references/sd-simplysm-v14/storage/types/file-info.md +32 -0
  308. package/claude/references/sd-simplysm-v14/storage/types/storage-client.md +55 -0
  309. package/claude/references/sd-simplysm-v14/storage/types/storage-conn-config.md +34 -0
  310. package/claude/rules/sd-claude-rules.md +8 -8
  311. package/claude/rules/sd-simplysm-v14.md +33 -0
  312. package/claude/skills/sd-claude-docs/SKILL.md +41 -24
  313. package/claude/skills/sd-claude-docs/references/package-docs.md +240 -116
  314. package/claude/skills/sd-inner-debug/SKILL.md +1 -1
  315. package/claude/skills/sd-inner-review/SKILL.md +4 -2
  316. package/package.json +2 -3
  317. /package/{docs → claude/references/sd-simplysm-v14/sd-claude}/cli.md +0 -0
  318. /package/{docs → claude/references/sd-simplysm-v14/sd-claude}/scripts.md +0 -0
@@ -0,0 +1,224 @@
1
+ # QueryDef
2
+
3
+ SQL AST 정의 타입 모음. `Queryable`이 내부적으로 생성하며, `QueryBuilderBase.build(def)`에 전달되어 SQL 문자열로 변환된다.
4
+
5
+ ## `QueryDef`
6
+
7
+ 모든 쿼리 정의의 유니온 타입.
8
+
9
+ ```typescript
10
+ export type QueryDef =
11
+ | SelectQueryDef
12
+ | InsertQueryDef
13
+ | InsertIfNotExistsQueryDef
14
+ | InsertIntoQueryDef
15
+ | UpdateQueryDef
16
+ | DeleteQueryDef
17
+ | UpsertQueryDef
18
+ | SwitchFkQueryDef
19
+ | CreateTableQueryDef
20
+ | DropTableQueryDef
21
+ | RenameTableQueryDef
22
+ | TruncateQueryDef
23
+ | AddColumnQueryDef
24
+ | DropColumnQueryDef
25
+ | ModifyColumnQueryDef
26
+ | RenameColumnQueryDef
27
+ | AddPrimaryKeyQueryDef
28
+ | DropPrimaryKeyQueryDef
29
+ | AddForeignKeyQueryDef
30
+ | DropForeignKeyQueryDef
31
+ | AddIndexQueryDef
32
+ | DropIndexQueryDef
33
+ | CreateViewQueryDef
34
+ | DropViewQueryDef
35
+ | CreateProcQueryDef
36
+ | DropProcQueryDef
37
+ | ExecProcQueryDef
38
+ | ClearSchemaQueryDef
39
+ | SchemaExistsQueryDef;
40
+ ```
41
+
42
+ ## `QueryDefObjectName`
43
+
44
+ DB 객체 이름 (테이블, 뷰, 프로시저 등).
45
+
46
+ ```typescript
47
+ export interface QueryDefObjectName {
48
+ database?: string;
49
+ schema?: string;
50
+ name: string;
51
+ }
52
+ ```
53
+
54
+ DBMS별 네임스페이스 처리:
55
+ - MySQL: `database.name` (schema 무시)
56
+ - MSSQL: `database.schema.name` (schema 기본값 dbo)
57
+ - PostgreSQL: `schema.name` (database는 연결용)
58
+
59
+ ## DML 쿼리 정의
60
+
61
+ ### `SelectQueryDef`
62
+
63
+ ```typescript
64
+ export interface SelectQueryDef {
65
+ type: "select";
66
+ from?: QueryDefObjectName | SelectQueryDef | SelectQueryDef[] | string;
67
+ as: string;
68
+ select?: Record<string, Expr>;
69
+ distinct?: boolean;
70
+ top?: number;
71
+ lock?: boolean;
72
+ where?: WhereExpr[];
73
+ joins?: SelectQueryDefJoin[];
74
+ orderBy?: [Expr, ("ASC" | "DESC")?][];
75
+ limit?: [number, number];
76
+ groupBy?: Expr[];
77
+ having?: WhereExpr[];
78
+ with?: { name: string; base: SelectQueryDef; recursive: SelectQueryDef };
79
+ }
80
+ ```
81
+
82
+ ### `SelectQueryDefJoin`
83
+
84
+ ```typescript
85
+ export interface SelectQueryDefJoin extends SelectQueryDef {
86
+ isSingle?: boolean;
87
+ }
88
+ ```
89
+
90
+ ### `InsertQueryDef`
91
+
92
+ ```typescript
93
+ export interface InsertQueryDef {
94
+ type: "insert";
95
+ table: QueryDefObjectName;
96
+ records: Record<string, ColumnPrimitive>[];
97
+ overrideIdentity?: boolean;
98
+ output?: CudOutputDef;
99
+ }
100
+ ```
101
+
102
+ ### `InsertIfNotExistsQueryDef`
103
+
104
+ ```typescript
105
+ export interface InsertIfNotExistsQueryDef {
106
+ type: "insertIfNotExists";
107
+ table: QueryDefObjectName;
108
+ record: Record<string, ColumnPrimitive>;
109
+ existsSelectQuery: SelectQueryDef;
110
+ overrideIdentity?: boolean;
111
+ output?: CudOutputDef;
112
+ }
113
+ ```
114
+
115
+ ### `InsertIntoQueryDef`
116
+
117
+ ```typescript
118
+ export interface InsertIntoQueryDef {
119
+ type: "insertInto";
120
+ table: QueryDefObjectName;
121
+ recordsSelectQuery: SelectQueryDef;
122
+ overrideIdentity?: boolean;
123
+ output?: CudOutputDef;
124
+ }
125
+ ```
126
+
127
+ ### `UpdateQueryDef`
128
+
129
+ ```typescript
130
+ export interface UpdateQueryDef {
131
+ type: "update";
132
+ table: QueryDefObjectName;
133
+ as: string;
134
+ record: Record<string, Expr>;
135
+ top?: number;
136
+ where?: WhereExpr[];
137
+ joins?: SelectQueryDefJoin[];
138
+ limit?: [number, number];
139
+ output?: CudOutputDef;
140
+ }
141
+ ```
142
+
143
+ ### `DeleteQueryDef`
144
+
145
+ ```typescript
146
+ export interface DeleteQueryDef {
147
+ type: "delete";
148
+ table: QueryDefObjectName;
149
+ as: string;
150
+ top?: number;
151
+ where?: WhereExpr[];
152
+ joins?: SelectQueryDefJoin[];
153
+ limit?: [number, number];
154
+ output?: CudOutputDef;
155
+ }
156
+ ```
157
+
158
+ ### `UpsertQueryDef`
159
+
160
+ ```typescript
161
+ export interface UpsertQueryDef {
162
+ type: "upsert";
163
+ table: QueryDefObjectName;
164
+ existsSelectQuery: SelectQueryDef;
165
+ insertRecord: Record<string, Expr>;
166
+ updateRecord: Record<string, Expr>;
167
+ overrideIdentity?: boolean;
168
+ output?: CudOutputDef;
169
+ }
170
+ ```
171
+
172
+ ## `CudOutputDef`
173
+
174
+ INSERT/UPDATE/DELETE 후 반환값 정의 (OUTPUT 절).
175
+
176
+ ```typescript
177
+ export interface CudOutputDef {
178
+ columns: string[];
179
+ pkColNames: string[];
180
+ aiColName?: string;
181
+ }
182
+ ```
183
+
184
+ | 필드 | 타입 | 설명 |
185
+ |------|------|------|
186
+ | `columns` | `string[]` | 반환할 컬럼 이름 배열 |
187
+ | `pkColNames` | `string[]` | PK 컬럼 이름 배열 |
188
+ | `aiColName` | `string \| undefined` | AUTO_INCREMENT 컬럼 이름 |
189
+
190
+ ## DDL 쿼리 정의
191
+
192
+ | 인터페이스 | `type` 값 | 설명 |
193
+ |------------|-----------|------|
194
+ | `CreateTableQueryDef` | `"createTable"` | CREATE TABLE |
195
+ | `DropTableQueryDef` | `"dropTable"` | DROP TABLE |
196
+ | `RenameTableQueryDef` | `"renameTable"` | RENAME TABLE |
197
+ | `TruncateQueryDef` | `"truncate"` | TRUNCATE TABLE |
198
+ | `AddColumnQueryDef` | `"addColumn"` | ADD COLUMN |
199
+ | `DropColumnQueryDef` | `"dropColumn"` | DROP COLUMN |
200
+ | `ModifyColumnQueryDef` | `"modifyColumn"` | MODIFY/ALTER COLUMN |
201
+ | `RenameColumnQueryDef` | `"renameColumn"` | RENAME COLUMN |
202
+ | `AddPrimaryKeyQueryDef` | `"addPrimaryKey"` | ADD PRIMARY KEY |
203
+ | `DropPrimaryKeyQueryDef` | `"dropPrimaryKey"` | DROP PRIMARY KEY |
204
+ | `AddForeignKeyQueryDef` | `"addForeignKey"` | ADD FOREIGN KEY |
205
+ | `DropForeignKeyQueryDef` | `"dropForeignKey"` | DROP FOREIGN KEY |
206
+ | `AddIndexQueryDef` | `"addIndex"` | ADD INDEX |
207
+ | `DropIndexQueryDef` | `"dropIndex"` | DROP INDEX |
208
+ | `CreateViewQueryDef` | `"createView"` | CREATE VIEW |
209
+ | `DropViewQueryDef` | `"dropView"` | DROP VIEW |
210
+ | `CreateProcQueryDef` | `"createProc"` | CREATE PROCEDURE |
211
+ | `DropProcQueryDef` | `"dropProc"` | DROP PROCEDURE |
212
+ | `ExecProcQueryDef` | `"execProc"` | EXEC PROCEDURE |
213
+ | `ClearSchemaQueryDef` | `"clearSchema"` | 스키마 내 모든 객체 제거 |
214
+ | `SchemaExistsQueryDef` | `"schemaExists"` | 스키마 존재 여부 확인 |
215
+ | `SwitchFkQueryDef` | `"switchFk"` | FK 제약조건 활성화/비활성화 |
216
+
217
+ ## `DDL_TYPES` / `DdlType`
218
+
219
+ DDL 타입 문자열 목록 및 유니온 타입. `DbContext.executeDefs()` 내부에서 트랜잭션 중 DDL 실행 차단에 사용된다.
220
+
221
+ ```typescript
222
+ export const DDL_TYPES: readonly string[];
223
+ export type DdlType = typeof DDL_TYPES[number];
224
+ ```
@@ -0,0 +1,65 @@
1
+ # @simplysm/orm-node
2
+
3
+ > Node.js 환경에서 MSSQL, MySQL, PostgreSQL에 대한 저수준 DB 연결 및 ORM 실행자를 제공한다.
4
+ > `@simplysm/orm-common`의 `DbContext`와 함께 사용하며, 네이티브 드라이버(tedious, mysql2, pg)를 선택적 peerDependency로 지연 로딩한다.
5
+
6
+ ## Installation
7
+
8
+ ```bash
9
+ npm install @simplysm/orm-node
10
+ ```
11
+
12
+ Peer dependencies (사용하는 DBMS에 따라 선택적 설치):
13
+
14
+ ```bash
15
+ # MySQL
16
+ npm install mysql2
17
+
18
+ # PostgreSQL
19
+ npm install pg pg-copy-streams
20
+
21
+ # MSSQL
22
+ npm install tedious
23
+ ```
24
+
25
+ ## 하려는 작업 → 먼저 읽을 파일
26
+
27
+ | 작업 | 먼저 읽을 파일 |
28
+ |------|----------------|
29
+ | DbContext로 ORM 쿼리 실행 | [createOrm](./core/create-orm.md) |
30
+ | 저수준 SQL 직접 실행 | [createDbConn](./core/create-db-conn.md) |
31
+ | 연결 설정 구성 | [DbConnConfig](./types/db-conn-config.md) |
32
+ | 특정 DBMS의 bulk insert 동작 확인 | [MssqlDbConn](./connections/mssql-db-conn.md), [MysqlDbConn](./connections/mysql-db-conn.md), [PostgresqlDbConn](./connections/postgresql-db-conn.md) |
33
+ | DbConn 인터페이스 확인 | [DbConn](./types/db-conn.md) |
34
+
35
+ ## API Overview
36
+
37
+ ### Types
38
+
39
+ | Entry | Kind | 언제 쓰나 |
40
+ |-------|------|-----------|
41
+ | [`DbConn`](./types/db-conn.md) | interface | DbConn 구현체의 공통 인터페이스를 확인할 때 |
42
+ | [`DbConnConfig`](./types/db-conn-config.md) | type | DB 연결 설정을 구성할 때. `dialect` 필드로 DBMS를 결정한다 |
43
+ | [`DB_CONN_CONNECT_TIMEOUT`](./types/db-conn-constants.md) | const | 타임아웃 상수나 오류 메시지 상수를 참조할 때 |
44
+ | [`getDialectFromConfig`](./types/get-dialect-from-config.md) | function | `DbConnConfig`에서 정규화된 `Dialect`를 추출할 때 (`"mssql-azure"` → `"mssql"`) |
45
+
46
+ ### Connections
47
+
48
+ | Entry | Kind | 언제 쓰나 |
49
+ |-------|------|-----------|
50
+ | [`MssqlDbConn`](./connections/mssql-db-conn.md) | class | MSSQL/Azure SQL에 저수준으로 연결할 때 (tedious 사용) |
51
+ | [`MysqlDbConn`](./connections/mysql-db-conn.md) | class | MySQL에 저수준으로 연결할 때 (mysql2/promise 사용) |
52
+ | [`PostgresqlDbConn`](./connections/postgresql-db-conn.md) | class | PostgreSQL에 저수준으로 연결할 때 (pg + pg-copy-streams 사용) |
53
+
54
+ ### Core
55
+
56
+ | Entry | Kind | 언제 쓰나 |
57
+ |-------|------|-----------|
58
+ | [`createDbConn`](./core/create-db-conn.md) | function | dialect 기반으로 DbConn 인스턴스를 자동 생성할 때 |
59
+ | [`NodeDbContextExecutor`](./core/node-db-context-executor.md) | class | DbContext 내부에서 사용하는 실행자. 직접 사용할 일은 거의 없다 |
60
+ | [`createOrm`](./core/create-orm.md) | function | DbContext 서브클래스와 연결 설정으로 트랜잭션 관리 ORM 인스턴스를 만들 때 |
61
+
62
+ ## 이 패키지를 쓰지 말아야 할 때
63
+
64
+ - 브라우저/클라이언트에서 DB 접근 → `@simplysm/service-client`로 서버를 경유한다.
65
+ - ORM 쿼리빌더·스키마 정의만 필요 → `@simplysm/orm-common`을 직접 사용한다.
@@ -0,0 +1,85 @@
1
+ # `MssqlDbConn`
2
+
3
+ tedious 라이브러리를 사용하여 MSSQL/Azure SQL 연결을 관리하는 클래스.
4
+
5
+ ## When to use
6
+
7
+ - ✅ 테스트 코드에서 MSSQL 연결을 직접 생성하여 네이티브 라이브러리를 주입할 때.
8
+ - ❌ 일반적으로 직접 생성하지 않는다. [`createDbConn()`](../core/create-db-conn.md)이 dialect에 따라 자동 생성한다.
9
+
10
+ ## Signature
11
+
12
+ ```typescript
13
+ class MssqlDbConn extends EventEmitter<{ close: void }> implements DbConn {
14
+ isConnected: boolean;
15
+ isInTransaction: boolean;
16
+ readonly config: MssqlDbConnConfig;
17
+
18
+ constructor(
19
+ tedious: typeof import("tedious"),
20
+ config: MssqlDbConnConfig,
21
+ );
22
+
23
+ connect(): Promise<void>;
24
+ close(): Promise<void>;
25
+ beginTransaction(isolationLevel?: IsolationLevel): Promise<void>;
26
+ commitTransaction(): Promise<void>;
27
+ rollbackTransaction(): Promise<void>;
28
+ execute(queries: string[]): Promise<Record<string, unknown>[][]>;
29
+ executeParametrized(query: string, params?: unknown[]): Promise<Record<string, unknown>[][]>;
30
+ bulkInsert(
31
+ tableName: string,
32
+ columnMetas: Record<string, ColumnMeta>,
33
+ records: Record<string, unknown>[],
34
+ ): Promise<void>;
35
+ }
36
+ ```
37
+
38
+ ## Members
39
+
40
+ | Member | Kind | Type | Description |
41
+ |--------|------|------|-------------|
42
+ | `isConnected` | property | `boolean` | 연결 여부 |
43
+ | `isInTransaction` | property | `boolean` | 트랜잭션 진행 여부 |
44
+ | `config` | property | `MssqlDbConnConfig` | 연결 설정 |
45
+ | `connect()` | method | `Promise<void>` | DB 연결을 수립한다. `dialect === "mssql-azure"`인 경우 `encrypt: true`로 연결한다. 연결 성공 시 유휴 타임아웃 타이머(`DB_CONN_DEFAULT_TIMEOUT * 2`)를 시작한다 |
46
+ | `close()` | method | `Promise<void>` | 진행 중인 요청을 취소(`cancel()`)하고 30초 내에 완료될 때까지 대기한 뒤 연결을 종료한다 |
47
+ | `beginTransaction(isolationLevel?)` | method | `Promise<void>` | 트랜잭션을 시작한다 |
48
+ | `commitTransaction()` | method | `Promise<void>` | 트랜잭션을 커밋한다 |
49
+ | `rollbackTransaction()` | method | `Promise<void>` | 트랜잭션을 롤백한다 |
50
+ | `execute(queries)` | method | `Promise<Record<string, unknown>[][]>` | SQL 쿼리 배열을 순차 실행한다 |
51
+ | `executeParametrized(query, params?)` | method | `Promise<Record<string, unknown>[][]>` | 파라미터화된 쿼리를 실행한다. 파라미터가 있으면 `execSql()`, 없으면 `execSqlBatch()`를 사용한다. 쿼리 오류 시 오류 발생 줄을 `==> ` 접두사로 표시하여 에러 메시지에 포함한다 |
52
+ | `bulkInsert(tableName, columnMetas, records)` | method | `Promise<void>` | tedious `BulkLoad` API를 사용하여 대량 삽입한다 |
53
+
54
+ 일반적으로 직접 생성하지 않고 [`createDbConn()`](../core/create-db-conn.md)을 통해 인스턴스를 얻는다. 직접 생성은 테스트 코드에서 네이티브 라이브러리를 주입할 때 사용한다.
55
+
56
+ 생성자에서 tedious 라이브러리 모듈을 첫 번째 인수로 직접 주입받는다. `createDbConn()`이 동적 import 후 전달한다.
57
+
58
+ ## `bulkInsert()` 값 변환 규칙
59
+
60
+ | 값 타입 | 변환 방식 |
61
+ |---------|-----------|
62
+ | `Uuid` | `toString()` |
63
+ | `Uint8Array` | `Buffer.from(val)` (tedious 라이브러리 요구사항으로 인한 예외적 허용) |
64
+ | `DateTime` / `DateOnly` | `.date` (native Date 객체) |
65
+ | `Time` | `"HH:mm:ss"` 포맷 문자열 |
66
+
67
+ ## Usage
68
+
69
+ ```typescript
70
+ import { MssqlDbConn } from "@simplysm/orm-node";
71
+
72
+ const tedious = await import("tedious");
73
+ const conn = new MssqlDbConn(tedious, {
74
+ dialect: "mssql",
75
+ host: "localhost",
76
+ port: 1433,
77
+ username: "sa",
78
+ password: "password",
79
+ database: "mydb",
80
+ });
81
+
82
+ await conn.connect();
83
+ const results = await conn.execute(["SELECT 1 AS val"]);
84
+ await conn.close();
85
+ ```
@@ -0,0 +1,83 @@
1
+ # `MysqlDbConn`
2
+
3
+ mysql2/promise 라이브러리를 사용하여 MySQL 연결을 관리하는 클래스.
4
+
5
+ ## When to use
6
+
7
+ - ✅ 테스트 코드에서 MySQL 연결을 직접 생성하여 네이티브 라이브러리를 주입할 때.
8
+ - ❌ 일반적으로 직접 생성하지 않는다. [`createDbConn()`](../core/create-db-conn.md)이 dialect에 따라 자동 생성한다.
9
+
10
+ ## Signature
11
+
12
+ ```typescript
13
+ class MysqlDbConn extends EventEmitter<{ close: void }> implements DbConn {
14
+ isConnected: boolean;
15
+ isInTransaction: boolean;
16
+ readonly config: MysqlDbConnConfig;
17
+
18
+ constructor(
19
+ mysql2: typeof import("mysql2/promise"),
20
+ config: MysqlDbConnConfig,
21
+ );
22
+
23
+ connect(): Promise<void>;
24
+ close(): Promise<void>;
25
+ beginTransaction(isolationLevel?: IsolationLevel): Promise<void>;
26
+ commitTransaction(): Promise<void>;
27
+ rollbackTransaction(): Promise<void>;
28
+ execute(queries: string[]): Promise<Record<string, unknown>[][]>;
29
+ executeParametrized(query: string, params?: unknown[]): Promise<Record<string, unknown>[][]>;
30
+ bulkInsert(
31
+ tableName: string,
32
+ columnMetas: Record<string, ColumnMeta>,
33
+ records: Record<string, unknown>[],
34
+ ): Promise<void>;
35
+ }
36
+ ```
37
+
38
+ ## Members
39
+
40
+ | Member | Kind | Type | Description |
41
+ |--------|------|------|-------------|
42
+ | `isConnected` | property | `boolean` | 연결 여부 |
43
+ | `isInTransaction` | property | `boolean` | 트랜잭션 진행 여부 |
44
+ | `config` | property | `MysqlDbConnConfig` | 연결 설정 |
45
+ | `connect()` | method | `Promise<void>` | DB 연결을 수립한다. `multipleStatements: true`, `charset: "utf8mb4"`로 연결한다 |
46
+ | `close()` | method | `Promise<void>` | DB 연결을 종료한다 |
47
+ | `beginTransaction(isolationLevel?)` | method | `Promise<void>` | `SET SESSION TRANSACTION ISOLATION LEVEL {level}` 후 `BEGIN`을 실행한다. MySQL은 트랜잭션 시작 전에 격리 수준을 설정해야 한다 |
48
+ | `commitTransaction()` | method | `Promise<void>` | 트랜잭션을 커밋한다 |
49
+ | `rollbackTransaction()` | method | `Promise<void>` | 트랜잭션을 롤백한다 |
50
+ | `execute(queries)` | method | `Promise<Record<string, unknown>[][]>` | SQL 쿼리 배열을 순차 실행한다 |
51
+ | `executeParametrized(query, params?)` | method | `Promise<Record<string, unknown>[][]>` | 파라미터화된 쿼리를 실행한다. 결과 형식에 따라 처리: single SELECT → flat 배열, single INSERT/UPDATE/DELETE → 빈 결과 집합, multi-statement → 각 statement의 결과를 별도 결과 집합으로 분리 |
52
+ | `bulkInsert(tableName, columnMetas, records)` | method | `Promise<void>` | `LOAD DATA LOCAL INFILE`을 사용하여 대량 삽입한다 |
53
+
54
+ 일반적으로 직접 생성하지 않고 [`createDbConn()`](../core/create-db-conn.md)을 통해 인스턴스를 얻는다. 직접 생성은 테스트 코드에서 네이티브 라이브러리를 주입할 때 사용한다.
55
+
56
+ 생성자에서 mysql2/promise 라이브러리 모듈을 첫 번째 인수로 직접 주입받는다.
57
+
58
+ ## `bulkInsert()` 처리 흐름
59
+
60
+ 1. `os.tmpdir()`에 UUID 기반 임시 CSV 파일 생성 (TAB 구분)
61
+ 2. UUID/binary 컬럼은 hex 문자열로 기록, `SET` 절에서 `UNHEX()` 변환
62
+ 3. `LOAD DATA LOCAL INFILE` 실행
63
+ 4. `finally` 블록에서 임시 파일 삭제
64
+
65
+ ## Usage
66
+
67
+ ```typescript
68
+ import { MysqlDbConn } from "@simplysm/orm-node";
69
+
70
+ const mysql2 = await import("mysql2/promise");
71
+ const conn = new MysqlDbConn(mysql2, {
72
+ dialect: "mysql",
73
+ host: "localhost",
74
+ port: 3306,
75
+ username: "root",
76
+ password: "password",
77
+ database: "testdb",
78
+ });
79
+
80
+ await conn.connect();
81
+ const results = await conn.execute(["SELECT 1 AS val"]);
82
+ await conn.close();
83
+ ```
@@ -0,0 +1,86 @@
1
+ # `PostgresqlDbConn`
2
+
3
+ pg + pg-copy-streams 라이브러리를 사용하여 PostgreSQL 연결을 관리하는 클래스.
4
+
5
+ ## When to use
6
+
7
+ - ✅ 테스트 코드에서 PostgreSQL 연결을 직접 생성하여 네이티브 라이브러리를 주입할 때.
8
+ - ❌ 일반적으로 직접 생성하지 않는다. [`createDbConn()`](../core/create-db-conn.md)이 dialect에 따라 자동 생성한다.
9
+
10
+ ## Signature
11
+
12
+ ```typescript
13
+ class PostgresqlDbConn extends EventEmitter<{ close: void }> implements DbConn {
14
+ isConnected: boolean;
15
+ isInTransaction: boolean;
16
+ readonly config: PostgresqlDbConnConfig;
17
+
18
+ constructor(
19
+ pg: typeof import("pg"),
20
+ pgCopyStreams: typeof import("pg-copy-streams"),
21
+ config: PostgresqlDbConnConfig,
22
+ );
23
+
24
+ connect(): Promise<void>;
25
+ close(): Promise<void>;
26
+ beginTransaction(isolationLevel?: IsolationLevel): Promise<void>;
27
+ commitTransaction(): Promise<void>;
28
+ rollbackTransaction(): Promise<void>;
29
+ execute(queries: string[]): Promise<Record<string, unknown>[][]>;
30
+ executeParametrized(query: string, params?: unknown[]): Promise<Record<string, unknown>[][]>;
31
+ bulkInsert(
32
+ tableName: string,
33
+ columnMetas: Record<string, ColumnMeta>,
34
+ records: Record<string, unknown>[],
35
+ ): Promise<void>;
36
+ }
37
+ ```
38
+
39
+ ## Members
40
+
41
+ | Member | Kind | Type | Description |
42
+ |--------|------|------|-------------|
43
+ | `isConnected` | property | `boolean` | 연결 여부 |
44
+ | `isInTransaction` | property | `boolean` | 트랜잭션 진행 여부 |
45
+ | `config` | property | `PostgresqlDbConnConfig` | 연결 설정 |
46
+ | `connect()` | method | `Promise<void>` | DB 연결을 수립한다. 기본 포트는 `5432`. `connectionTimeoutMillis: DB_CONN_CONNECT_TIMEOUT`, `query_timeout: DB_CONN_DEFAULT_TIMEOUT`으로 연결한다 |
47
+ | `close()` | method | `Promise<void>` | DB 연결을 종료한다 |
48
+ | `beginTransaction(isolationLevel?)` | method | `Promise<void>` | `BEGIN` 후 `SET TRANSACTION ISOLATION LEVEL {level}`을 실행한다 |
49
+ | `commitTransaction()` | method | `Promise<void>` | `COMMIT`을 실행한다 |
50
+ | `rollbackTransaction()` | method | `Promise<void>` | `ROLLBACK`을 실행한다 |
51
+ | `execute(queries)` | method | `Promise<Record<string, unknown>[][]>` | SQL 쿼리 배열을 순차 실행한다 |
52
+ | `executeParametrized(query, params?)` | method | `Promise<Record<string, unknown>[][]>` | 파라미터화된 쿼리를 실행한다. PostgreSQL은 단일 결과 집합을 반환하므로 `[result.rows]`로 래핑하여 반환한다 |
53
+ | `bulkInsert(tableName, columnMetas, records)` | method | `Promise<void>` | `COPY FROM STDIN`(CSV 형식)을 사용하여 대량 삽입한다 |
54
+
55
+ 일반적으로 직접 생성하지 않고 [`createDbConn()`](../core/create-db-conn.md)을 통해 인스턴스를 얻는다. 직접 생성은 테스트 코드에서 네이티브 라이브러리를 주입할 때 사용한다.
56
+
57
+ 생성자에서 pg와 pg-copy-streams 라이브러리 모듈을 첫 번째, 두 번째 인수로 직접 주입받는다.
58
+
59
+ ## `bulkInsert()` 처리 방식
60
+
61
+ `pg-copy-streams`의 `from()` 함수로 스트림을 생성하고, `Readable.from(csvContent)`를 파이프한다.
62
+
63
+ binary 컬럼 값 변환:
64
+ - `binary` 타입: PostgreSQL bytea hex 형식 (`\x{hex}`, CSV 큰따옴표로 감쌈)
65
+ - `uuid` 타입: `toString()` 그대로
66
+
67
+ ## Usage
68
+
69
+ ```typescript
70
+ import { PostgresqlDbConn } from "@simplysm/orm-node";
71
+
72
+ const pg = await import("pg");
73
+ const pgCopyStreams = await import("pg-copy-streams");
74
+ const conn = new PostgresqlDbConn(pg, pgCopyStreams, {
75
+ dialect: "postgresql",
76
+ host: "localhost",
77
+ port: 5432,
78
+ username: "postgres",
79
+ password: "password",
80
+ database: "testdb",
81
+ });
82
+
83
+ await conn.connect();
84
+ const results = await conn.execute(["SELECT 1 AS val"]);
85
+ await conn.close();
86
+ ```
@@ -0,0 +1,62 @@
1
+ # `createDbConn`
2
+
3
+ dialect 기반 DbConn 팩토리. 네이티브 드라이버를 지연 로딩하여 DbConn 인스턴스를 생성한다.
4
+
5
+ ## When to use
6
+
7
+ - ✅ ORM 없이 생 SQL을 직접 실행할 때.
8
+ - ✅ 트랜잭션·연결 생명주기를 직접 제어할 때.
9
+ - ❌ DbContext 기반 ORM 쿼리를 실행할 때 → [`createOrm`](./create-orm.md)이 내부적으로 연결을 관리한다.
10
+
11
+ ## Signature
12
+
13
+ ```typescript
14
+ async function createDbConn(config: DbConnConfig): Promise<DbConn>;
15
+ ```
16
+
17
+ ## Parameters
18
+
19
+ | Param | Type | Description |
20
+ |-------|------|-------------|
21
+ | `config` | `DbConnConfig` | 데이터베이스 연결 설정. `dialect` 필드로 구현체를 결정한다 |
22
+
23
+ ## Returns
24
+
25
+ `Promise<DbConn>` — 아직 연결되지 않은 상태의 DbConn 인스턴스. `connect()`를 별도로 호출해야 한다.
26
+
27
+ `config.dialect`에 따라 적절한 DbConn 구현체를 생성한다:
28
+
29
+ | dialect | 반환 타입 | 로드하는 패키지 |
30
+ |---------|-----------|----------------|
31
+ | `"mysql"` | [`MysqlDbConn`](../connections/mysql-db-conn.md) | `mysql2/promise` |
32
+ | `"postgresql"` | [`PostgresqlDbConn`](../connections/postgresql-db-conn.md) | `pg`, `pg-copy-streams` |
33
+ | `"mssql"` / `"mssql-azure"` | [`MssqlDbConn`](../connections/mssql-db-conn.md) | `tedious` |
34
+
35
+ 네이티브 드라이버 패키지는 최초 호출 시에만 동적 import로 로드하고 모듈 수준 캐시에 보관한다. 이후 호출에서는 캐시된 모듈을 재사용한다.
36
+
37
+ ## Usage
38
+
39
+ ```typescript
40
+ import { createDbConn } from "@simplysm/orm-node";
41
+
42
+ const conn = await createDbConn({
43
+ dialect: "postgresql",
44
+ host: "localhost",
45
+ port: 5432,
46
+ username: "postgres",
47
+ password: "password",
48
+ database: "mydb",
49
+ });
50
+
51
+ await conn.connect();
52
+
53
+ try {
54
+ await conn.beginTransaction();
55
+ await conn.execute(["INSERT INTO users (name) VALUES ('Alice')"]);
56
+ await conn.commitTransaction();
57
+ } catch {
58
+ await conn.rollbackTransaction();
59
+ } finally {
60
+ await conn.close();
61
+ }
62
+ ```