@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,38 @@
1
+ # @simplysm/capacitor-plugin-auto-update
2
+
3
+ > Android APK 자동 업데이트 플러그인. 서버 버전 비교 후 APK 다운로드·설치를 처리하며, 외부 저장소(USB 등)에서도 업데이트할 수 있다. Capacitor 7 기반이며 `@capacitor/core`가 peerDependency다.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @simplysm/capacitor-plugin-auto-update
9
+ ```
10
+
11
+ 피어 의존성으로 `@capacitor/core ^7`이 필요하다. Android 네이티브 플러그인이 포함되어 있으므로 `npx cap sync` 후 사용한다.
12
+
13
+ ## 하려는 작업 → 먼저 읽을 파일
14
+
15
+ | 작업 | 먼저 읽을 파일 |
16
+ |------|----------------|
17
+ | 서버에서 최신 APK 자동 업데이트 | [auto-update.md](./auto-update/auto-update.md) |
18
+ | 외부 저장소(USB)에서 APK 업데이트 | [auto-update.md](./auto-update/auto-update.md) |
19
+ | APK 설치 권한 관리 및 직접 설치 | [apk-installer.md](./apk-installer/apk-installer.md) |
20
+
21
+ ## API Overview
22
+
23
+ ### APK 설치
24
+
25
+ | Entry | Kind | 언제 쓰나 |
26
+ |-------|------|-----------|
27
+ | [`ApkInstaller`](./apk-installer/apk-installer.md) | abstract class | `AutoUpdate` 없이 APK 설치 권한·설치를 직접 제어할 때 |
28
+
29
+ ### 자동 업데이트
30
+
31
+ | Entry | Kind | 언제 쓰나 |
32
+ |-------|------|-----------|
33
+ | [`AutoUpdate`](./auto-update/auto-update.md) | abstract class | 앱 부트스트랩 시 서버 또는 외부 저장소에서 최신 버전을 확인하고 APK를 설치할 때 |
34
+
35
+ ## 이 패키지를 쓰지 말아야 할 때
36
+
37
+ - iOS 앱 업데이트 → App Store 메커니즘을 사용한다. 이 플러그인은 Android APK 전용이다.
38
+ - 웹 앱 업데이트 → 서버 배포로 처리한다. 브라우저 폴백은 알림만 표시하고 실제 설치를 수행하지 않는다.
@@ -0,0 +1,115 @@
1
+ # `ApkInstaller`
2
+
3
+ APK 설치 플러그인 정적 파사드 클래스. Android에서 APK 설치 권한 확인·요청, APK 설치 인텐트 실행, 앱 버전 정보 조회를 제공한다.
4
+
5
+ ## When to use
6
+
7
+ - ✅ `AutoUpdate`를 사용하지 않고 APK 설치 흐름을 직접 제어할 때
8
+ - ✅ 앱의 현재 버전 정보(`versionName`, `versionCode`)를 조회할 때
9
+ - ❌ 서버 또는 외부 저장소에서 자동 업데이트 → [`AutoUpdate`](../auto-update/auto-update.md) — 버전 비교·다운로드·설치를 모두 처리한다
10
+
11
+ ## Signature
12
+
13
+ ```typescript
14
+ export abstract class ApkInstaller {
15
+ static async checkPermissions(): Promise<{ granted: boolean; manifest: boolean }>;
16
+ static async requestPermissions(): Promise<void>;
17
+ static async install(apkUri: string): Promise<void>;
18
+ static async getVersionInfo(): Promise<VersionInfo>;
19
+ }
20
+ ```
21
+
22
+ ## Members
23
+
24
+ | Member | Kind | Return | Description |
25
+ |--------|------|--------|-------------|
26
+ | `checkPermissions` | static method | `Promise<{ granted: boolean; manifest: boolean }>` | 설치 권한 승인 여부(`granted`)와 AndroidManifest 선언 여부(`manifest`) 동시 확인. `manifest: false`이면 APK를 재설치해야 한다. |
27
+ | `requestPermissions` | static method | `Promise<void>` | `REQUEST_INSTALL_PACKAGES` 권한 요청. 시스템 설정 화면으로 이동하므로 이후 `checkPermissions`로 결과를 폴링해야 한다. |
28
+ | `install` | static method | `Promise<void>` | `content://` URI(FileProvider URI)로 APK 설치 인텐트 실행. `FileSystem.getUri(filePath)`로 URI를 얻는다. |
29
+ | `getVersionInfo` | static method | `Promise<VersionInfo>` | 현재 설치된 앱의 버전 정보 조회. 브라우저 환경에서는 `env("__VER__") ?? "0.0.0"`을 `versionName`으로 반환한다. |
30
+
31
+ **브라우저 폴백 동작:**
32
+ - `install()` — `alert()` 메시지 표시 후 반환
33
+ - `checkPermissions()` — 항상 `{ granted: true, manifest: true }` 반환
34
+ - `requestPermissions()` — 무동작
35
+ - `getVersionInfo()` — `versionName: env("__VER__") ?? "0.0.0"`, `versionCode: "0"` 반환
36
+
37
+ ## Usage
38
+
39
+ ### 최소 예제
40
+
41
+ ```typescript
42
+ import { ApkInstaller } from "@simplysm/capacitor-plugin-auto-update";
43
+
44
+ const versionInfo = await ApkInstaller.getVersionInfo();
45
+ // versionInfo.versionName → "1.2.3"
46
+ // versionInfo.versionCode → "42"
47
+ ```
48
+
49
+ ### 전형 예제
50
+
51
+ ```typescript
52
+ import { ApkInstaller } from "@simplysm/capacitor-plugin-auto-update";
53
+ import { FileSystem } from "@simplysm/capacitor-plugin-file-system";
54
+
55
+ // 1. 권한 확인
56
+ const { granted, manifest } = await ApkInstaller.checkPermissions();
57
+ if (!manifest) {
58
+ // AndroidManifest.xml에 REQUEST_INSTALL_PACKAGES 미선언 → APK 재설치 필요
59
+ throw new Error("앱을 재설치해야 합니다.");
60
+ }
61
+ if (!granted) {
62
+ await ApkInstaller.requestPermissions();
63
+ // 시스템 설정 화면으로 이동하므로, 복귀 후 다시 checkPermissions()로 확인해야 한다
64
+ }
65
+
66
+ // 2. APK 설치 (filePath는 FileSystem으로 저장한 경로)
67
+ const apkUri = await FileSystem.getUri("/path/to/latest.apk");
68
+ await ApkInstaller.install(apkUri);
69
+ ```
70
+
71
+ ## 🚫 Anti-patterns
72
+
73
+ ### `install()`에 파일 경로를 직접 전달
74
+
75
+ ```typescript
76
+ // ❌ 파일 시스템 경로를 직접 전달
77
+ await ApkInstaller.install("/path/to/latest.apk");
78
+
79
+ // ✅ FileSystem.getUri()로 content:// URI를 얻어서 전달
80
+ const uri = await FileSystem.getUri("/path/to/latest.apk");
81
+ await ApkInstaller.install(uri);
82
+ ```
83
+
84
+ **근거**: Android에서 APK 설치 인텐트는 `content://` URI(FileProvider)를 요구한다. 파일 경로를 직접 전달하면 보안 예외가 발생한다.
85
+
86
+ ## Related Types
87
+
88
+ ### `VersionInfo`
89
+
90
+ 앱 버전 정보를 나타내는 인터페이스.
91
+
92
+ ```typescript
93
+ export interface VersionInfo {
94
+ versionName: string;
95
+ versionCode: string;
96
+ }
97
+ ```
98
+
99
+ | Field | Type | Description |
100
+ |-------|------|-------------|
101
+ | `versionName` | `string` | 앱 버전 이름. semver 형식 (예: `"1.2.3"`). `AutoUpdate`의 버전 비교에 사용된다. |
102
+ | `versionCode` | `string` | 앱 버전 코드. 정수를 문자열로 표현 (예: `"42"`). |
103
+
104
+ ### `ApkInstallerPlugin`
105
+
106
+ Capacitor 네이티브 플러그인 인터페이스. 직접 사용하지 않고 `ApkInstaller` 파사드를 통해 접근한다. 타입 참조 목적으로만 export된다.
107
+
108
+ ```typescript
109
+ export interface ApkInstallerPlugin {
110
+ install(options: { uri: string }): Promise<void>;
111
+ checkPermissions(): Promise<{ granted: boolean; manifest: boolean }>;
112
+ requestPermissions(): Promise<void>;
113
+ getVersionInfo(): Promise<VersionInfo>;
114
+ }
115
+ ```
@@ -0,0 +1,113 @@
1
+ # `AutoUpdate`
2
+
3
+ 자동 업데이트 오케스트레이터. 서버 또는 외부 저장소에서 최신 APK를 확인하고 설치한다. 모든 메서드가 `static`이며 인스턴스화하지 않는다.
4
+
5
+ ## When to use
6
+
7
+ - ✅ 앱 부트스트랩 시 서버에서 최신 APK를 자동 다운로드·설치할 때 → `run()`
8
+ - ✅ 네트워크 없이 외부 저장소(USB 등)에서 APK를 업데이트할 때 → `runByExternalStorage()`
9
+ - ❌ APK 설치 권한만 확인하거나 설치만 직접 수행 → [`ApkInstaller`](../apk-installer/apk-installer.md)
10
+
11
+ ## Signature
12
+
13
+ ```typescript
14
+ export abstract class AutoUpdate {
15
+ static async run(opt: {
16
+ log: (messageHtml: string) => void;
17
+ serviceClient: ServiceClient;
18
+ }): Promise<void>;
19
+
20
+ static async runByExternalStorage(opt: {
21
+ log: (messageHtml: string) => void;
22
+ dirPath: string;
23
+ }): Promise<void>;
24
+ }
25
+ ```
26
+
27
+ ## Members
28
+
29
+ | Member | Kind | Description |
30
+ |--------|------|-------------|
31
+ | `run` | static method | `AutoUpdateService.getLastVersion("android")`로 서버에서 최신 버전 정보를 조회한 뒤, 현재 버전보다 높으면 APK를 다운로드하여 설치한다. 업데이트 후 앱을 무한 대기 상태로 전환한다. |
32
+ | `runByExternalStorage` | static method | 외부 저장소의 `opt.dirPath` 디렉토리에서 숫자와 점으로만 구성된 이름의 `.apk` 파일(예: `1.2.3.apk`) 중 최신 semver 버전을 찾아 설치한다. |
33
+
34
+ ## Parameters
35
+
36
+ ### `run` opt
37
+
38
+ | Param | Type | Description |
39
+ |-------|------|-------------|
40
+ | `log` | `(messageHtml: string) => void` | 진행 상황 HTML을 받아 사용자에게 표시하는 콜백. 버튼 등 인터랙티브 HTML이 포함될 수 있다. |
41
+ | `serviceClient` | `ServiceClient` | `@simplysm/service-client`의 `ServiceClient` 인스턴스. 서버에서 버전 정보를 조회하는 데 사용된다. |
42
+
43
+ ### `runByExternalStorage` opt
44
+
45
+ | Param | Type | Description |
46
+ |-------|------|-------------|
47
+ | `log` | `(messageHtml: string) => void` | 진행 상황 HTML을 받아 사용자에게 표시하는 콜백. |
48
+ | `dirPath` | `string` | 외부 저장소 루트(`FileSystem.getStoragePath("external")`) 기준 상대 경로. 해당 경로에 `1.2.3.apk` 형식 파일이 있어야 한다. |
49
+
50
+ ## 동작 설명
51
+
52
+ **권한 처리**: 두 메서드 모두 내부적으로 `ApkInstaller.checkPermissions()`를 호출한다.
53
+ - `manifest: false` → 재설치 에러를 throw하고 앱을 무한 대기로 전환한다.
54
+ - `granted: false` → 권한 요청 후 최대 300초(1초 간격)간 승인을 폴링한다.
55
+
56
+ **버전 비교**: `semver` 라이브러리를 사용한다. `versionName`이 유효한 semver 형식이 아니면 업데이트 확인을 건너뛴다.
57
+
58
+ **업데이트 후 동작**: 업데이트가 실행되면 `new Promise(() => {})` 무한 대기로 전환된다. 사용자가 앱을 재시작해야 새 버전이 적용된다. 업데이트가 필요 없을 때만 정상 반환한다.
59
+
60
+ **에러 처리**: `try/catch`로 전체를 감싸며, 에러 발생 시 `opt.log()`로 HTML 에러 메시지를 표시한 뒤 무한 대기로 전환한다.
61
+
62
+ **`run` APK 저장 경로**: `FileSystem.getStoragePath("appCache")`에 `latest.apk`로 저장한다.
63
+
64
+ ## Usage
65
+
66
+ ### 최소 예제 — 서버 기반 자동 업데이트
67
+
68
+ 앱 부트스트랩 시 호출한다. 업데이트가 없으면 정상 반환, 업데이트가 있으면 무한 대기로 전환된다.
69
+
70
+ ```typescript
71
+ import { AutoUpdate } from "@simplysm/capacitor-plugin-auto-update";
72
+ import type { ServiceClient } from "@simplysm/service-client";
73
+
74
+ await AutoUpdate.run({
75
+ log: (messageHtml) => {
76
+ document.getElementById("status")!.innerHTML = messageHtml;
77
+ },
78
+ serviceClient, // 이미 연결된 ServiceClient 인스턴스
79
+ });
80
+ // 이 줄에 도달하면 업데이트가 불필요한 것이다.
81
+ ```
82
+
83
+ ### 전형 예제 — 외부 저장소(USB) 기반 업데이트
84
+
85
+ `opt.dirPath`는 외부 저장소 루트 기준 상대 경로다. 해당 경로에 `1.2.3.apk` 형식 파일이 있어야 한다.
86
+
87
+ ```typescript
88
+ import { AutoUpdate } from "@simplysm/capacitor-plugin-auto-update";
89
+
90
+ await AutoUpdate.runByExternalStorage({
91
+ log: (messageHtml) => {
92
+ document.getElementById("status")!.innerHTML = messageHtml;
93
+ },
94
+ dirPath: "updates/my-app", // 외부 저장소 루트 기준 상대 경로
95
+ });
96
+ ```
97
+
98
+ ## 🚫 Anti-patterns
99
+
100
+ ### `run()` 반환 후 업데이트 완료를 기대
101
+
102
+ ```typescript
103
+ // ❌ run() 반환 후 "업데이트 완료" 처리
104
+ await AutoUpdate.run({ log, serviceClient });
105
+ showMessage("업데이트 완료!"); // 업데이트 시에는 이 줄에 도달하지 않음
106
+
107
+ // ✅ run()이 반환하면 업데이트가 불필요한 것
108
+ await AutoUpdate.run({ log, serviceClient });
109
+ // 정상적으로 앱 초기화 계속
110
+ initApp();
111
+ ```
112
+
113
+ **근거**: 업데이트가 실행되면 APK 설치 후 `_freezeApp()`으로 무한 대기에 진입한다. `run()`이 정상 반환하는 경우는 업데이트가 필요 없을 때뿐이다.
@@ -0,0 +1,197 @@
1
+ # @simplysm/capacitor-plugin-file-system
2
+
3
+ > Capacitor 파일 시스템 접근 플러그인. Android에서 외부 저장소 전체 접근 및 앱 전용 디렉토리 접근을 제공하며, 브라우저 환경에서는 IndexedDB 기반 가상 파일 시스템으로 에뮬레이션한다. `@capacitor/core ^7` peerDependency.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @simplysm/capacitor-plugin-file-system
9
+ ```
10
+
11
+ ## 하려는 작업 → 먼저 읽을 파일
12
+
13
+ | 작업 | 먼저 읽을 파일 |
14
+ |------|----------------|
15
+ | 파일 읽기/쓰기/삭제 | 이 문서의 `FileSystem` 섹션 |
16
+ | 저장소 경로 조회 | 이 문서의 `StorageType` 섹션 |
17
+ | APK 자동 업데이트에서 파일 저장 | [`capacitor-plugin-auto-update`](../capacitor-plugin-auto-update/README.md) |
18
+
19
+ ## API Overview
20
+
21
+ ### `FileSystem`
22
+
23
+ 파일 시스템 접근 파사드 클래스. 모든 API는 정적 메서드로 제공된다.
24
+
25
+ #### When to use
26
+
27
+ - ✅ Android 앱에서 파일 읽기/쓰기/삭제, 디렉토리 탐색이 필요할 때
28
+ - ✅ `content://` URI(FileProvider)를 얻어 다른 앱에 파일을 전달할 때
29
+ - ❌ USB 저장 장치 접근 → [`@simplysm/capacitor-plugin-usb-storage`](../capacitor-plugin-usb-storage/README.md)
30
+
31
+ #### Signature
32
+
33
+ ```typescript
34
+ export abstract class FileSystem {
35
+ static async checkPermissions(): Promise<boolean>;
36
+ static async requestPermissions(): Promise<void>;
37
+ static async readdir(dirPath: string): Promise<FileInfo[]>;
38
+ static async getStoragePath(type: StorageType): Promise<string>;
39
+ static async getUri(filePath: string): Promise<string>;
40
+ static async writeFile(filePath: string, data: string | Bytes): Promise<void>;
41
+ static async readFile(filePath: string): Promise<Bytes>;
42
+ static async readFile(filePath: string, encoding: "utf8"): Promise<string>;
43
+ static async remove(targetPath: string): Promise<void>;
44
+ static async mkdir(targetPath: string): Promise<void>;
45
+ static async exists(targetPath: string): Promise<boolean>;
46
+ }
47
+ ```
48
+
49
+ #### Members
50
+
51
+ | Member | Kind | Signature | Description |
52
+ |--------|------|-----------|-------------|
53
+ | `checkPermissions` | static method | `() => Promise<boolean>` | 파일 시스템 접근 권한 확인. 웹에서는 항상 `true` |
54
+ | `requestPermissions` | static method | `() => Promise<void>` | 파일 시스템 접근 권한 요청. Android 11+: 설정 화면 이동, Android 10-: 권한 대화상자 |
55
+ | `readdir` | static method | `(dirPath: string) => Promise<FileInfo[]>` | 디렉토리 파일/폴더 목록 조회 |
56
+ | `getStoragePath` | static method | `(type: StorageType) => Promise<string>` | 저장소 유형별 절대 경로 조회 |
57
+ | `getUri` | static method | `(filePath: string) => Promise<string>` | 파일 URI 조회. Android: `content://` FileProvider URI, 웹: `blob:` URL |
58
+ | `writeFile` | static method | `(filePath: string, data: string \| Bytes) => Promise<void>` | 파일 쓰기. `string`이면 UTF-8, `Bytes`이면 Base64 중간 포맷으로 전달 |
59
+ | `readFile` | static method | 오버로드 2개 | 파일 읽기. `encoding` 생략 시 `Bytes` 반환, `"utf8"` 지정 시 `string` 반환 |
60
+ | `remove` | static method | `(targetPath: string) => Promise<void>` | 파일/디렉토리 재귀 삭제 |
61
+ | `mkdir` | static method | `(targetPath: string) => Promise<void>` | 디렉토리 재귀 생성. 이미 존재하면 무동작 |
62
+ | `exists` | static method | `(targetPath: string) => Promise<boolean>` | 파일/디렉토리 존재 여부 확인 |
63
+
64
+ #### Usage
65
+
66
+ ##### 최소 예제
67
+
68
+ ```typescript
69
+ import { FileSystem } from "@simplysm/capacitor-plugin-file-system";
70
+
71
+ const appFilesPath = await FileSystem.getStoragePath("appFiles");
72
+ await FileSystem.writeFile(appFilesPath + "/hello.txt", "Hello!");
73
+ const content = await FileSystem.readFile(appFilesPath + "/hello.txt", "utf8");
74
+ ```
75
+
76
+ ##### 전형 예제 — 권한 확인 후 파일 읽기
77
+
78
+ ```typescript
79
+ import { FileSystem } from "@simplysm/capacitor-plugin-file-system";
80
+
81
+ const hasPermission = await FileSystem.checkPermissions();
82
+ if (!hasPermission) {
83
+ await FileSystem.requestPermissions();
84
+ // Android 11+에서는 설정 화면으로 이동하므로, 복귀 후 다시 확인해야 한다
85
+ }
86
+
87
+ const appFilesPath = await FileSystem.getStoragePath("appFiles");
88
+ const exists = await FileSystem.exists(appFilesPath + "/config.json");
89
+ if (exists) {
90
+ const content = await FileSystem.readFile(appFilesPath + "/config.json", "utf8");
91
+ }
92
+ ```
93
+
94
+ ##### 전형 예제 — Bytes 데이터 쓰기/읽기
95
+
96
+ ```typescript
97
+ import { FileSystem } from "@simplysm/capacitor-plugin-file-system";
98
+
99
+ const appCachePath = await FileSystem.getStoragePath("appCache");
100
+ const data = new Uint8Array([0x89, 0x50, 0x4e, 0x47]); // PNG header 예시
101
+ await FileSystem.writeFile(appCachePath + "/image.png", data);
102
+
103
+ // Bytes(Uint8Array)로 반환
104
+ const readData = await FileSystem.readFile(appCachePath + "/image.png");
105
+ ```
106
+
107
+ #### 🚫 Anti-patterns
108
+
109
+ ##### 웹에서 `getUri()` 반환값을 해제하지 않음
110
+
111
+ ```typescript
112
+ // ❌ Blob URL 미해제 → 메모리 누수
113
+ const uri = await FileSystem.getUri(filePath);
114
+ img.src = uri;
115
+
116
+ // ✅ 사용 후 반드시 해제
117
+ const uri = await FileSystem.getUri(filePath);
118
+ img.src = uri;
119
+ img.onload = () => {
120
+ URL.revokeObjectURL(uri);
121
+ };
122
+ ```
123
+
124
+ **근거**: 웹 환경에서 `getUri()`는 `blob:` URL을 생성한다. `URL.revokeObjectURL()`로 해제하지 않으면 페이지가 살아있는 동안 메모리에 남는다.
125
+
126
+ ---
127
+
128
+ ### `StorageType`
129
+
130
+ 저장소 유형을 나타내는 union type.
131
+
132
+ ```typescript
133
+ export type StorageType =
134
+ | "external"
135
+ | "externalFiles"
136
+ | "externalCache"
137
+ | "externalMedia"
138
+ | "appData"
139
+ | "appFiles"
140
+ | "appCache";
141
+ ```
142
+
143
+ **선택 가이드:**
144
+
145
+ | Type | Android 경로 | 웹 경로 | 설명 |
146
+ |------|--------------|---------|------|
147
+ | `external` | `Environment.getExternalStorageDirectory()` | `/webfs/external` | 외부 저장소 루트 (공유 저장소, 권한 필요) |
148
+ | `externalFiles` | `getExternalFilesDir(null)` | `/webfs/externalFiles` | 앱 전용 외부 파일 |
149
+ | `externalCache` | `externalCacheDir` | `/webfs/externalCache` | 앱 전용 외부 캐시 |
150
+ | `externalMedia` | `externalMediaDirs[0]` | `/webfs/externalMedia` | 앱 전용 외부 미디어 |
151
+ | `appData` | `applicationInfo.dataDir` | `/webfs/appData` | 앱 데이터 (내부, 자동 백업 대상) |
152
+ | `appFiles` | `filesDir` | `/webfs/appFiles` | 앱 파일 (내부) |
153
+ | `appCache` | `cacheDir` | `/webfs/appCache` | 앱 캐시 (내부, 시스템이 삭제 가능) |
154
+
155
+ ---
156
+
157
+ ### `FileInfo`
158
+
159
+ 파일 또는 디렉토리 정보 인터페이스. `FileSystem.readdir()`의 반환 타입 요소이다.
160
+
161
+ ```typescript
162
+ export interface FileInfo {
163
+ name: string;
164
+ isDirectory: boolean;
165
+ }
166
+ ```
167
+
168
+ | Field | Type | Description |
169
+ |-------|------|-------------|
170
+ | `name` | `string` | 파일 또는 디렉토리 이름 (경로 제외, 확장자 포함) |
171
+ | `isDirectory` | `boolean` | `true`이면 디렉토리, `false`이면 파일 |
172
+
173
+ ---
174
+
175
+ ### `FileSystemPlugin`
176
+
177
+ Capacitor 네이티브 플러그인 인터페이스. 직접 사용하지 않고 `FileSystem` 파사드를 통해 접근한다. 타입 참조 목적으로만 export된다.
178
+
179
+ ```typescript
180
+ export interface FileSystemPlugin {
181
+ checkPermissions(): Promise<{ granted: boolean }>;
182
+ requestPermissions(): Promise<void>;
183
+ readdir(options: { path: string }): Promise<{ files: FileInfo[] }>;
184
+ getStoragePath(options: { type: StorageType }): Promise<{ path: string }>;
185
+ getUri(options: { path: string }): Promise<{ uri: string }>;
186
+ writeFile(options: { path: string; data: string; encoding?: "utf8" | "base64" }): Promise<void>;
187
+ readFile(options: { path: string; encoding?: "utf8" | "base64" }): Promise<{ data: string }>;
188
+ remove(options: { path: string }): Promise<void>;
189
+ mkdir(options: { path: string }): Promise<void>;
190
+ exists(options: { path: string }): Promise<{ exists: boolean }>;
191
+ }
192
+ ```
193
+
194
+ ## 이 패키지를 쓰지 말아야 할 때
195
+
196
+ - USB Mass Storage 장치 접근 → [`@simplysm/capacitor-plugin-usb-storage`](../capacitor-plugin-usb-storage/README.md)
197
+ - 웹 전용 파일 다운로드 → 브라우저 `fetch()` + `Blob` 사용