@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,85 @@
1
+ # createWorker
2
+
3
+ Worker thread 파일에서 메서드와 이벤트 전송 함수를 등록하는 팩토리 함수. 메인 스레드의 [`Worker.create()`](./worker.md)와 쌍으로 사용한다.
4
+
5
+ ## When to use
6
+
7
+ - ✅ 워커 파일에서 메인 스레드에 노출할 메서드를 정의할 때
8
+ - ✅ 워커에서 메인 스레드로 타입 안전한 이벤트를 보낼 때
9
+ - ❌ 메인 스레드에서 워커 호출 → [`Worker.create()`](./worker.md) 사용
10
+
11
+ ```typescript
12
+ export function createWorker<
13
+ TMethods extends Record<string, (...args: any[]) => unknown>,
14
+ TEvents extends Record<string, unknown> = Record<string, never>,
15
+ >(
16
+ methods: TMethods,
17
+ ): {
18
+ send<TEventName extends keyof TEvents & string>(event: TEventName, data?: TEvents[TEventName]): void;
19
+ __methods: TMethods;
20
+ __events: TEvents;
21
+ }
22
+ ```
23
+
24
+ ## Parameters
25
+
26
+ | Param | Type | Description |
27
+ |-------|------|-------------|
28
+ | `methods` | `TMethods` | 워커가 노출할 메서드 객체. 동기/비동기 모두 지원 |
29
+
30
+ ## Type Parameters
31
+
32
+ | Param | Constraint | Description |
33
+ |-------|-----------|-------------|
34
+ | `TMethods` | `Record<string, (...args: any[]) => unknown>` | 메서드 정의 타입 |
35
+ | `TEvents` | `Record<string, unknown>` | 이벤트 데이터 타입. 기본값: `Record<string, never>` |
36
+
37
+ ## Returns
38
+
39
+ 반환 객체:
40
+
41
+ | Field | Type | Description |
42
+ |-------|------|-------------|
43
+ | `send` | `<TEventName>(event, data?) => void` | 메인 스레드로 이벤트 전송 |
44
+ | `__methods` | `TMethods` | 등록된 메서드 (타입 추론용) |
45
+ | `__events` | `TEvents` | 이벤트 타입 정보 (타입 추론용) |
46
+
47
+ ## stdout 처리
48
+
49
+ `createWorker()` 호출 시 `process.stdout.write`를 가로채서 워커의 로그 출력을 메인 스레드 stdout으로 전달한다.
50
+
51
+ ## 실행 조건
52
+
53
+ `parentPort`가 `null`이면 (= 메인 스레드에서 실행) `SdError`를 throw한다. 반드시 worker thread에서 호출해야 한다.
54
+
55
+ ## Usage
56
+
57
+ ```typescript
58
+ // worker.ts (워커 파일)
59
+ import { createWorker } from "@simplysm/core-node";
60
+
61
+ // 이벤트가 없는 워커
62
+ export default createWorker({
63
+ add: (a: number, b: number) => a + b,
64
+ greet: (name: string) => `Hello, ${name}!`,
65
+ });
66
+
67
+ // 이벤트가 있는 워커
68
+ interface MyEvents {
69
+ progress: number;
70
+ done: { result: number };
71
+ }
72
+
73
+ const methods = {
74
+ calc: async (x: number) => {
75
+ sender.send("progress", 50);
76
+ await new Promise((r) => setTimeout(r, 100));
77
+ sender.send("progress", 100);
78
+ sender.send("done", { result: x * 2 });
79
+ return x * 2;
80
+ },
81
+ };
82
+
83
+ const sender = createWorker<typeof methods, MyEvents>(methods);
84
+ export default sender;
85
+ ```
@@ -0,0 +1,160 @@
1
+ # Worker
2
+
3
+ 타입 안전한 Worker thread 프록시를 생성하는 팩토리 객체. `Worker.create()`로 워커 파일의 메서드를 메인 스레드에서 직접 호출할 수 있다.
4
+
5
+ ## When to use
6
+
7
+ - ✅ CPU 집약적 작업을 별도 스레드로 분리하면서 타입 안전한 메서드 호출이 필요할 때
8
+ - ✅ 워커에서 메인 스레드로 이벤트(진행률 등)를 보내야 할 때
9
+ - ❌ 외부 프로세스 실행 → [`cpx.spawn`](../utils/cpx.md) 사용
10
+
11
+ ```typescript
12
+ export const Worker: {
13
+ create<TModule extends WorkerModule>(
14
+ filePath: string,
15
+ opt?: Omit<WorkerRawOptions, "stdout" | "stderr">,
16
+ ): WorkerProxy<TModule>
17
+ }
18
+ ```
19
+
20
+ ## Members
21
+
22
+ | Member | Kind | Type | Description |
23
+ |--------|------|------|-------------|
24
+ | `create` | static method | `<TModule extends WorkerModule>(filePath: string, opt?: ...) => WorkerProxy<TModule>` | 타입 안전한 Worker Proxy 생성 |
25
+
26
+ ## `create` Parameters
27
+
28
+ | Param | Type | Description |
29
+ |-------|------|-------------|
30
+ | `filePath` | `string` | 워커 파일 경로. `file://` URL 또는 절대 경로 |
31
+ | `opt` | `Omit<WorkerRawOptions, "stdout" \| "stderr">` (optional) | Node.js Worker thread 옵션. `stdout`/`stderr`는 내부에서 자동 처리 |
32
+
33
+ ## 환경별 동작
34
+
35
+ - **개발 환경(`.ts` 파일)**: `lib/worker-dev-proxy.js`를 통해 tsx로 TypeScript 워커 파일을 실행
36
+ - **프로덕션(`.js` 파일)**: Worker를 직접 생성
37
+
38
+ ## Related Types
39
+
40
+ ### `WorkerProxy<TModule>`
41
+
42
+ `Worker.create()`가 반환하는 프록시 타입. 워커 메서드를 Promise 버전으로 제공하고, `on()`/`off()`/`terminate()`를 추가로 지원한다.
43
+
44
+ ```typescript
45
+ export type WorkerProxy<TModule extends WorkerModule> = PromisifyMethods<
46
+ TModule["default"]["__methods"]
47
+ > & {
48
+ on<TEventName extends keyof TModule["default"]["__events"] & string>(
49
+ event: TEventName,
50
+ listener: (data: TModule["default"]["__events"][TEventName]) => void,
51
+ ): void;
52
+ off<TEventName extends keyof TModule["default"]["__events"] & string>(
53
+ event: TEventName,
54
+ listener: (data: TModule["default"]["__events"][TEventName]) => void,
55
+ ): void;
56
+ terminate(): Promise<void>;
57
+ }
58
+ ```
59
+
60
+ | Member | Description |
61
+ |--------|-------------|
62
+ | 워커 메서드들 | 동기 메서드도 항상 `Promise<Awaited<R>>`로 변환됨 |
63
+ | `on(event, listener)` | 워커 이벤트 리스너 등록 |
64
+ | `off(event, listener)` | 워커 이벤트 리스너 해제 |
65
+ | `terminate()` | 워커 종료. 대기 중인 모든 요청을 즉시 거부 |
66
+
67
+ ### `WorkerModule`
68
+
69
+ ```typescript
70
+ export interface WorkerModule {
71
+ default: {
72
+ __methods: Record<string, (...args: any[]) => unknown>;
73
+ __events: Record<string, unknown>;
74
+ };
75
+ }
76
+ ```
77
+
78
+ `createWorker()`가 반환하는 워커 모듈의 타입 구조. `Worker.create<typeof import("./worker")>()`에서 타입 추론에 사용된다.
79
+
80
+ ### `PromisifyMethods<TMethods>`
81
+
82
+ ```typescript
83
+ export type PromisifyMethods<TMethods> = {
84
+ [K in keyof TMethods]: TMethods[K] extends (...args: infer P) => infer R
85
+ ? (...args: P) => Promise<Awaited<R>>
86
+ : never;
87
+ };
88
+ ```
89
+
90
+ 메서드 반환값을 `Promise`로 감싸는 매핑 타입. 워커 메서드는 postMessage 기반으로 동작하여 항상 비동기다.
91
+
92
+ ### `WorkerRequest`
93
+
94
+ ```typescript
95
+ export interface WorkerRequest {
96
+ id: string;
97
+ method: string;
98
+ params: unknown[];
99
+ }
100
+ ```
101
+
102
+ 내부 워커 요청 메시지. `Worker.create()`와 `createWorker()` 사이의 통신 프로토콜.
103
+
104
+ ### `WorkerResponse`
105
+
106
+ ```typescript
107
+ export type WorkerResponse =
108
+ | { request: WorkerRequest; type: "return"; body?: unknown }
109
+ | { request: WorkerRequest; type: "error"; body: Error }
110
+ | { type: "event"; event: string; body?: unknown }
111
+ | { type: "log"; body: string };
112
+ ```
113
+
114
+ 내부 워커 응답 메시지.
115
+
116
+ | Variant | `type` | Description |
117
+ |---------|--------|-------------|
118
+ | 반환 | `"return"` | 메서드 정상 반환값 |
119
+ | 오류 | `"error"` | 메서드 실행 오류 |
120
+ | 이벤트 | `"event"` | 워커에서 메인 스레드로 보내는 이벤트 |
121
+ | 로그 | `"log"` | 워커 stdout 내용 (메인 스레드 stdout으로 전달) |
122
+
123
+ ## Usage
124
+
125
+ ```typescript
126
+ // main.ts
127
+ import { Worker } from "@simplysm/core-node";
128
+ import type * as MyWorkerModule from "./worker";
129
+
130
+ const worker = Worker.create<typeof MyWorkerModule>("./worker.ts");
131
+
132
+ // 타입 안전한 메서드 호출
133
+ const result = await worker.add(10, 20); // 30
134
+
135
+ // 이벤트 리스너
136
+ worker.on("progress", (value) => {
137
+ // value 타입이 자동 추론됨
138
+ });
139
+
140
+ // 종료
141
+ await worker.terminate();
142
+ ```
143
+
144
+ ## 🚫 Anti-patterns
145
+
146
+ ### terminate() 누락
147
+
148
+ ```typescript
149
+ // ❌ terminate하지 않으면 워커 스레드가 계속 실행됨
150
+ const worker = Worker.create<typeof MyWorkerModule>("./worker.ts");
151
+ const result = await worker.add(10, 20);
152
+ // 프로세스 행
153
+
154
+ // ✅ 작업 완료 후 반드시 terminate
155
+ const worker = Worker.create<typeof MyWorkerModule>("./worker.ts");
156
+ const result = await worker.add(10, 20);
157
+ await worker.terminate();
158
+ ```
159
+
160
+ **근거**: 워커 스레드는 명시적으로 종료하지 않으면 프로세스가 끝나지 않는다.
@@ -0,0 +1,66 @@
1
+ # @simplysm/excel
2
+
3
+ > Excel 워크북(xlsx) 읽기/쓰기 라이브러리. DOM 의존성이 없어 Node.js와 브라우저 양쪽에서 동작하는 neutral 패키지다.
4
+ > Lazy Loading 아키텍처로 대용량 파일도 메모리 효율적으로 처리한다.
5
+ > 의존성: `@simplysm/core-common`, `mime`, `zod`
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npm install @simplysm/excel
11
+ ```
12
+
13
+ ## 하려는 작업 → 먼저 읽을 파일
14
+
15
+ | 작업 | 먼저 읽을 파일 |
16
+ |------|----------------|
17
+ | Excel 파일 생성/읽기/저장 | [ExcelWorkbook](./core-classes/excel-workbook.md) |
18
+ | 셀 값/수식/스타일 설정 | [ExcelCell](./core-classes/excel-cell.md) |
19
+ | 행/열 복사, 데이터 테이블, 이미지 삽입 | [ExcelWorksheet](./core-classes/excel-worksheet.md) |
20
+ | Zod 스키마 기반 타입 안전한 읽기/쓰기 | [ExcelWrapper](./wrapper/excel-wrapper.md) |
21
+ | 셀 주소 변환, 날짜↔숫자 변환 | [ExcelUtils](./utilities/excel-utils.md) |
22
+
23
+ ## API Overview
24
+
25
+ ### Core Classes
26
+
27
+ | Entry | Kind | 언제 쓰나 |
28
+ |-------|------|-----------|
29
+ | [`ExcelWorkbook`](./core-classes/excel-workbook.md) | class | xlsx 파일을 열거나 새로 만들 때. 워크시트 조회/생성, 바이트 내보내기의 진입점 |
30
+ | [`ExcelWorksheet`](./core-classes/excel-worksheet.md) | class | 시트 내 셀/행/열 접근, 행 복사, 데이터 테이블 읽기/쓰기, 이미지 삽입이 필요할 때 |
31
+ | [`ExcelCell`](./core-classes/excel-cell.md) | class | 개별 셀의 값/수식/스타일/병합을 조작할 때 |
32
+ | [`ExcelRow`](./core-classes/excel-row.md) | class | 특정 행의 셀들을 일괄 접근할 때 |
33
+ | [`ExcelCol`](./core-classes/excel-col.md) | class | 특정 열의 셀들을 일괄 접근하거나 열 너비를 설정할 때 |
34
+
35
+ ### Wrapper
36
+
37
+ | Entry | Kind | 언제 쓰나 |
38
+ |-------|------|-----------|
39
+ | [`ExcelWrapper`](./wrapper/excel-wrapper.md) | class | Zod 스키마로 타입 안전한 Excel 읽기/쓰기가 필요할 때. 헤더 자동 생성, 유효성 검사 포함 |
40
+
41
+ ### Utilities
42
+
43
+ | Entry | Kind | 언제 쓰나 |
44
+ |-------|------|-----------|
45
+ | [`ExcelUtils`](./utilities/excel-utils.md) | class | 셀 주소 문자열↔좌표 변환, Excel 날짜 숫자↔JS 타임스탬프 변환이 필요할 때 |
46
+
47
+ ### Types
48
+
49
+ | Entry | Kind | 언제 쓰나 |
50
+ |-------|------|-----------|
51
+ | [`ExcelValueType`](./types/excel-value-type.md) | type | 셀 값의 타입을 지정할 때. `ExcelCellType`, `ExcelNumberFormat` 포함 |
52
+ | [`ExcelAddressPoint`](./types/excel-address-point.md) | interface | 셀 좌표를 전달할 때. `ExcelAddressRangePoint` 포함 |
53
+ | [`ExcelStyleOptions`](./types/excel-style-options.md) | interface | 셀 스타일(배경색, 테두리, 정렬, 숫자 형식)을 설정할 때 |
54
+ | [`ExcelXml`](./types/excel-xml.md) | interface | 내부 XML 처리 클래스의 공통 인터페이스 (직접 사용하지 않음) |
55
+ | [`ExcelXmlContentTypeData`](./types/excel-xml-content-type-data.md) | interface | 내부 `[Content_Types].xml` 데이터 구조 (직접 사용하지 않음) |
56
+ | [`ExcelXmlRelationshipData`](./types/excel-xml-relationship-data.md) | interface | 내부 `*.rels` 데이터 구조 (직접 사용하지 않음) |
57
+ | [`ExcelXmlWorkbookData`](./types/excel-xml-workbook-data.md) | interface | 내부 `workbook.xml` 데이터 구조 (직접 사용하지 않음) |
58
+ | [`ExcelXmlWorksheetData`](./types/excel-xml-worksheet-data.md) | interface | 내부 `worksheet*.xml` 데이터 구조 (직접 사용하지 않음) |
59
+ | [`ExcelXmlDrawingData`](./types/excel-xml-drawing-data.md) | interface | 내부 `drawing*.xml` 데이터 구조 (직접 사용하지 않음) |
60
+ | [`ExcelXmlSharedStringData`](./types/excel-xml-shared-string-data.md) | interface | 내부 `sharedStrings.xml` 데이터 구조 (직접 사용하지 않음) |
61
+ | [`ExcelXmlStyleData`](./types/excel-xml-style-data.md) | interface | 내부 `styles.xml` 데이터 구조 (직접 사용하지 않음) |
62
+
63
+ ## 이 패키지를 쓰지 말아야 할 때
64
+
65
+ - xls(구형 바이너리 포맷) 파일 처리가 필요한 경우 -- xlsx만 지원한다
66
+ - CSV 파일만 처리하면 되는 경우 -- 별도 CSV 파서가 더 적합하다
@@ -0,0 +1,79 @@
1
+ # ExcelCell
2
+
3
+ Excel 셀을 나타내는 클래스. 값 읽기/쓰기, 수식, 스타일, 셀 병합 기능을 제공한다.
4
+
5
+ ## When to use
6
+
7
+ - ✅ 개별 셀의 값, 수식, 스타일, 병합을 조작할 때
8
+ - ✅ `ws.cell(r, c)`로 얻은 인스턴스를 통해 사용
9
+ - ❌ 대량 데이터를 한번에 쓸 때는 [`ExcelWorksheet.setDataMatrix()`](./excel-worksheet.md) 또는 [`ExcelWorksheet.setRecords()`](./excel-worksheet.md) -- 내부에서 동기 최적화를 수행한다
10
+
11
+ 모든 메서드가 `async`인 이유는 셀 타입에 따라 필요한 XML만 선택적으로 로드하는 Lazy Loading 아키텍처 때문이다. 문자열 셀은 `sharedStrings.xml`을 로드하고, 숫자 셀은 로드하지 않는다.
12
+
13
+ ```typescript
14
+ export class ExcelCell {
15
+ readonly addr: ExcelAddressPoint;
16
+
17
+ constructor(zipCache: ZipCache, targetFileName: string, r: number, c: number);
18
+
19
+ // Value
20
+ async setValue(val: ExcelValueType): Promise<void>;
21
+ async getValue(): Promise<ExcelValueType>;
22
+ async setFormula(val: string | undefined): Promise<void>;
23
+ async getFormula(): Promise<string | undefined>;
24
+
25
+ // Merge
26
+ async merge(r: number, c: number): Promise<void>;
27
+
28
+ // Style
29
+ async getStyleId(): Promise<string | undefined>;
30
+ async setStyleId(styleId: string | undefined): Promise<void>;
31
+ async setStyle(opts: ExcelStyleOptions): Promise<void>;
32
+ }
33
+ ```
34
+
35
+ ## Members
36
+
37
+ | Member | Kind | Type | Description |
38
+ |--------|------|------|-------------|
39
+ | `addr` | property | `ExcelAddressPoint` | 셀 주소 (0 기반 행/열 인덱스, read-only) |
40
+ | `setValue` | method | `(val: ExcelValueType) => Promise<void>` | 셀 값 설정. `undefined` 전달 시 셀 삭제. `DateOnly`/`DateTime`/`Time`은 Excel 날짜 숫자로 변환하고 numFmt 설정 |
41
+ | `getValue` | method | `() => Promise<ExcelValueType>` | 셀 값 반환. 비어있는 셀은 `undefined` 반환. 셀 타입과 스타일에 따라 적절한 JS 타입으로 변환 |
42
+ | `setFormula` | method | `(val: string \| undefined) => Promise<void>` | 셀 수식 설정. `undefined` 전달 시 수식 제거 |
43
+ | `getFormula` | method | `() => Promise<string \| undefined>` | 셀 수식 반환. 수식 없으면 `undefined` 반환 |
44
+ | `merge` | method | `(r: number, c: number) => Promise<void>` | 현재 셀에서 지정된 끝 좌표까지 셀 병합 |
45
+ | `getStyleId` | method | `() => Promise<string \| undefined>` | 셀의 스타일 ID 반환. 스타일 없으면 `undefined` 반환 |
46
+ | `setStyleId` | method | `(styleId: string \| undefined) => Promise<void>` | 셀의 스타일 ID 직접 설정 |
47
+ | `setStyle` | method | `(opts: ExcelStyleOptions) => Promise<void>` | 셀 스타일 설정. 기존 스타일이 있으면 클론 후 병합 |
48
+
49
+ ## Usage
50
+
51
+ ```typescript
52
+ // 값 설정/읽기
53
+ await ws.cell(0, 0).setValue("텍스트");
54
+ await ws.cell(0, 1).setValue(42);
55
+ await ws.cell(0, 2).setValue(new DateOnly(2024, 6, 15));
56
+ await ws.cell(0, 3).setValue(true);
57
+ await ws.cell(0, 4).setValue(undefined); // 셀 삭제
58
+
59
+ const val = await ws.cell(0, 0).getValue(); // "텍스트"
60
+
61
+ // 수식
62
+ await ws.cell(1, 0).setFormula("SUM(A1:A10)");
63
+ const formula = await ws.cell(1, 0).getFormula(); // "SUM(A1:A10)"
64
+
65
+ // 셀 병합 (A1:C3 병합)
66
+ await ws.cell(0, 0).merge(2, 2);
67
+
68
+ // 스타일
69
+ await ws.cell(0, 0).setStyle({
70
+ background: "00FFFF00", // 노란색 배경
71
+ border: ["left", "right", "top", "bottom"],
72
+ horizontalAlign: "center",
73
+ verticalAlign: "center",
74
+ numberFormat: "number",
75
+ });
76
+
77
+ // 커스텀 formatCode
78
+ await ws.cell(0, 0).setStyle({ numberFormatCode: "0.000000" });
79
+ ```
@@ -0,0 +1,36 @@
1
+ # ExcelCol
2
+
3
+ Excel 워크시트의 열을 나타내는 클래스. 셀 접근 및 열 너비 설정 기능을 제공한다.
4
+
5
+ ```typescript
6
+ export class ExcelCol {
7
+ constructor(zipCache: ZipCache, targetFileName: string, c: number, cellFactory: (r: number) => ExcelCell);
8
+
9
+ cell(r: number): ExcelCell;
10
+ async getCells(): Promise<ExcelCell[]>;
11
+ async setWidth(size: number): Promise<void>;
12
+ }
13
+ ```
14
+
15
+ ## Members
16
+
17
+ | Member | Kind | Type | Description |
18
+ |--------|------|------|-------------|
19
+ | `cell` | method | `(r: number) => ExcelCell` | 지정된 행 인덱스의 셀 반환 (0 기반) |
20
+ | `getCells` | method | `() => Promise<ExcelCell[]>` | 열의 모든 셀 반환. 데이터 범위 내의 모든 행에 대한 셀이 포함된다 |
21
+ | `setWidth` | method | `(size: number) => Promise<void>` | 열 너비 설정 |
22
+
23
+ ## Usage
24
+
25
+ ```typescript
26
+ const col = ws.col(1); // B열
27
+
28
+ // 특정 셀 접근
29
+ const cell = col.cell(0); // B1 셀
30
+
31
+ // 열의 모든 셀
32
+ const cells = await col.getCells();
33
+
34
+ // 열 너비 설정
35
+ await ws.col(0).setWidth(20);
36
+ ```
@@ -0,0 +1,34 @@
1
+ # ExcelRow
2
+
3
+ Excel 워크시트의 행을 나타내는 클래스. 셀 접근 기능을 제공한다.
4
+
5
+ ```typescript
6
+ export class ExcelRow {
7
+ constructor(zipCache: ZipCache, targetFileName: string, r: number, cellFactory: (c: number) => ExcelCell);
8
+
9
+ cell(c: number): ExcelCell;
10
+ async getCells(): Promise<ExcelCell[]>;
11
+ }
12
+ ```
13
+
14
+ ## Members
15
+
16
+ | Member | Kind | Type | Description |
17
+ |--------|------|------|-------------|
18
+ | `cell` | method | `(c: number) => ExcelCell` | 지정된 열 인덱스의 셀 반환 (0 기반) |
19
+ | `getCells` | method | `() => Promise<ExcelCell[]>` | 행의 모든 셀 반환. 데이터 범위 내의 모든 열에 대한 셀이 포함된다 |
20
+
21
+ ## Usage
22
+
23
+ ```typescript
24
+ const row = ws.row(0);
25
+
26
+ // 특정 셀 접근
27
+ const cell = row.cell(2); // C열 셀
28
+
29
+ // 행의 모든 셀
30
+ const cells = await row.getCells();
31
+ for (const cell of cells) {
32
+ const val = await cell.getValue();
33
+ }
34
+ ```
@@ -0,0 +1,93 @@
1
+ # ExcelWorkbook
2
+
3
+ Excel 워크북 처리 클래스. 내부적으로 ZIP 리소스를 관리하므로 사용 후 반드시 `try-finally` 블록에서 `close()`를 호출해야 한다.
4
+
5
+ 대용량 Excel 파일의 메모리 효율을 위해 Lazy Loading 아키텍처를 채택한다. ZIP 내부의 XML은 접근 시점에만 읽고 파싱한다.
6
+
7
+ ## When to use
8
+
9
+ - ✅ xlsx 파일을 새로 생성하거나 기존 파일을 읽고 수정할 때
10
+ - ✅ 워크시트를 추가/조회하고 결과를 바이트 배열이나 Blob으로 내보낼 때
11
+ - ❌ Zod 스키마 기반 타입 안전한 읽기/쓰기가 필요하면 [`ExcelWrapper`](../wrapper/excel-wrapper.md) -- 내부적으로 `ExcelWorkbook`을 사용하므로 직접 관리할 필요 없음
12
+
13
+ ## Signature
14
+
15
+ ```typescript
16
+ export class ExcelWorkbook {
17
+ readonly zipCache: ZipCache;
18
+
19
+ constructor(arg?: Blob | Bytes);
20
+
21
+ async getWorksheetNames(): Promise<string[]>;
22
+ async addWorksheet(name: string): Promise<ExcelWorksheet>;
23
+ async getWorksheet(nameOrIndex: string | number): Promise<ExcelWorksheet>;
24
+ async toBytes(): Promise<Bytes>;
25
+ async toBlob(): Promise<Blob>;
26
+ async close(): Promise<void>;
27
+ }
28
+ ```
29
+
30
+ ## Members
31
+
32
+ | Member | Kind | Type | Description |
33
+ |--------|------|------|-------------|
34
+ | `zipCache` | property | `ZipCache` | ZIP 캐시 인스턴스 (read-only) |
35
+ | `constructor` | method | `(arg?: Blob \| Bytes) => ExcelWorkbook` | `arg` 생략 시 새 워크북 생성, 전달 시 기존 파일 읽기 |
36
+ | `getWorksheetNames` | method | `() => Promise<string[]>` | 워크북의 모든 워크시트 이름 반환 |
37
+ | `addWorksheet` | method | `(name: string) => Promise<ExcelWorksheet>` | 새 워크시트 생성하여 반환 |
38
+ | `getWorksheet` | method | `(nameOrIndex: string \| number) => Promise<ExcelWorksheet>` | 이름 또는 0 기반 인덱스로 워크시트 조회. 찾을 수 없으면 에러 발생 |
39
+ | `toBytes` | method | `() => Promise<Bytes>` | 워크북을 `Bytes`(Uint8Array)로 내보내기 |
40
+ | `toBlob` | method | `() => Promise<Blob>` | 워크북을 `Blob`으로 내보내기. MIME 타입: `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet` |
41
+ | `close` | method | `() => Promise<void>` | ZIP 리더와 내부 캐시 정리. 이미 닫힌 워크북에 대해 호출해도 안전하다 (no-op). 닫힌 후 메서드 호출 시 에러 발생 |
42
+
43
+ ## 🚫 Anti-patterns
44
+
45
+ ### close() 누락
46
+
47
+ ```typescript
48
+ // ❌ close() 없이 사용 -- ZIP 리소스 누수
49
+ const wb = new ExcelWorkbook(bytes);
50
+ const ws = await wb.getWorksheet(0);
51
+
52
+ // ✅ try-finally로 반드시 close()
53
+ const wb = new ExcelWorkbook(bytes);
54
+ try {
55
+ const ws = await wb.getWorksheet(0);
56
+ } finally {
57
+ await wb.close();
58
+ }
59
+ ```
60
+
61
+ **근거**: `ExcelWorkbook`은 내부적으로 ZIP 아카이브를 보유하며, `close()` 없이 방치하면 메모리 누수가 발생한다.
62
+
63
+ ## Usage
64
+
65
+ ### 최소 예제
66
+
67
+ ```typescript
68
+ import { ExcelWorkbook } from "@simplysm/excel";
69
+
70
+ // 신규 생성
71
+ const wb = new ExcelWorkbook();
72
+ try {
73
+ const ws = await wb.addWorksheet("Sheet1");
74
+ await ws.cell(0, 0).setValue("값");
75
+ const bytes = await wb.toBytes();
76
+ } finally {
77
+ await wb.close();
78
+ }
79
+
80
+ ### 전형 예제
81
+
82
+ ```typescript
83
+ // 기존 파일 읽기 (Uint8Array 또는 Blob)
84
+ const wb2 = new ExcelWorkbook(bytes);
85
+ try {
86
+ const ws = await wb2.getWorksheet(0); // 0 기반 인덱스
87
+ const ws2 = await wb2.getWorksheet("Sheet1"); // 시트명으로도 조회 가능
88
+ const names = await wb2.getWorksheetNames();
89
+ } finally {
90
+ await wb2.close();
91
+ }
92
+ ```
93
+ ```