@simplysm/sd-cli 10.0.4 → 10.0.21

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 (282) hide show
  1. package/.eslintrc.cjs +1 -1
  2. package/dist/SdLinter.d.ts +5 -0
  3. package/dist/SdLinter.js.map +1 -0
  4. package/dist/SdLinter.mjs +37 -0
  5. package/dist/SdTsIncrementalBuilder.d.ts +16 -0
  6. package/dist/SdTsIncrementalBuilder.js.map +1 -0
  7. package/dist/SdTsIncrementalBuilder.mjs +54 -0
  8. package/dist/build-cluster.js.map +1 -1
  9. package/dist/build-cluster.mjs +124 -0
  10. package/dist/builders/SdCliClientBuilder.d.ts +13 -0
  11. package/dist/builders/SdCliClientBuilder.js.map +1 -0
  12. package/dist/builders/SdCliClientBuilder.mjs +167 -0
  13. package/dist/builders/SdCliJsLibLinter.d.ts +3 -7
  14. package/dist/builders/SdCliJsLibLinter.js.map +1 -1
  15. package/dist/builders/{SdCliJsLibLinter.js → SdCliJsLibLinter.mjs} +8 -17
  16. package/dist/builders/SdCliServerBuilder.d.ts +14 -0
  17. package/dist/builders/SdCliServerBuilder.js.map +1 -0
  18. package/dist/builders/SdCliServerBuilder.mjs +171 -0
  19. package/dist/builders/SdCliTsLibBuilder.d.ts +3 -10
  20. package/dist/builders/SdCliTsLibBuilder.js.map +1 -1
  21. package/dist/builders/SdCliTsLibBuilder.mjs +75 -0
  22. package/dist/commons.d.ts +27 -2
  23. package/dist/entry/SdCliProject.d.ts +1 -0
  24. package/dist/entry/SdCliProject.js.map +1 -1
  25. package/dist/entry/{SdCliProject.js → SdCliProject.mjs} +94 -10
  26. package/dist/sd-cli.js.map +1 -1
  27. package/dist/{sd-cli.js → sd-cli.mjs} +1 -0
  28. package/dist/sd-core-common/src/decorators/NotifyPropertyChange.d.ts +20 -0
  29. package/dist/sd-core-common/src/decorators/NotifyPropertyChange.js.map +1 -0
  30. package/dist/sd-core-common/src/decorators/NotifyPropertyChange.mjs +12 -0
  31. package/dist/sd-core-common/src/decorators/PropertyGetSetDecoratorBase.d.ts +43 -0
  32. package/dist/sd-core-common/src/decorators/PropertyGetSetDecoratorBase.js.map +1 -0
  33. package/dist/sd-core-common/src/decorators/PropertyGetSetDecoratorBase.mjs +54 -0
  34. package/dist/sd-core-common/src/decorators/PropertyValidate.d.ts +16 -0
  35. package/dist/sd-core-common/src/decorators/PropertyValidate.js.map +1 -0
  36. package/dist/sd-core-common/src/decorators/PropertyValidate.mjs +26 -0
  37. package/dist/sd-core-common/src/decorators/decorator-return-types.d.ts +14 -0
  38. package/dist/sd-core-common/src/decorators/decorator-return-types.js.map +1 -0
  39. package/dist/sd-core-common/src/decorators/decorator-return-types.mjs +2 -0
  40. package/dist/sd-core-common/src/errors/ArgumentError.d.ts +10 -0
  41. package/dist/sd-core-common/src/errors/ArgumentError.js.map +1 -0
  42. package/dist/sd-core-common/src/errors/ArgumentError.mjs +13 -0
  43. package/dist/sd-core-common/src/errors/NeverEntryError.d.ts +10 -0
  44. package/dist/sd-core-common/src/errors/NeverEntryError.js.map +1 -0
  45. package/dist/sd-core-common/src/errors/NeverEntryError.mjs +13 -0
  46. package/dist/sd-core-common/src/errors/NotImplementError.d.ts +10 -0
  47. package/dist/sd-core-common/src/errors/NotImplementError.js.map +1 -0
  48. package/dist/sd-core-common/src/errors/NotImplementError.mjs +13 -0
  49. package/dist/sd-core-common/src/errors/SdError.d.ts +23 -0
  50. package/dist/sd-core-common/src/errors/SdError.js.map +1 -0
  51. package/dist/sd-core-common/src/errors/SdError.mjs +40 -0
  52. package/dist/sd-core-common/src/errors/TimeoutError.d.ts +11 -0
  53. package/dist/sd-core-common/src/errors/TimeoutError.js.map +1 -0
  54. package/dist/sd-core-common/src/errors/TimeoutError.mjs +16 -0
  55. package/dist/sd-core-common/src/extensions/ArrayExtension.d.ts +147 -0
  56. package/dist/sd-core-common/src/extensions/ArrayExtension.js.map +1 -0
  57. package/dist/sd-core-common/src/extensions/ArrayExtension.mjs +448 -0
  58. package/dist/sd-core-common/src/extensions/MapExtension.d.ts +4 -0
  59. package/dist/sd-core-common/src/extensions/MapExtension.js.map +1 -0
  60. package/dist/sd-core-common/src/extensions/MapExtension.mjs +15 -0
  61. package/dist/sd-core-common/src/extensions/SetExtension.d.ts +3 -0
  62. package/dist/sd-core-common/src/extensions/SetExtension.js.map +1 -0
  63. package/dist/sd-core-common/src/extensions/SetExtension.mjs +10 -0
  64. package/dist/sd-core-common/src/index.d.ts +32 -0
  65. package/dist/sd-core-common/src/index.js.map +1 -0
  66. package/dist/sd-core-common/src/index.mjs +33 -0
  67. package/dist/sd-core-common/src/types/DateOnly.d.ts +135 -0
  68. package/dist/sd-core-common/src/types/DateOnly.js.map +1 -0
  69. package/dist/sd-core-common/src/types/DateOnly.mjs +220 -0
  70. package/dist/sd-core-common/src/types/DateTime.d.ts +42 -0
  71. package/dist/sd-core-common/src/types/DateTime.js.map +1 -0
  72. package/dist/sd-core-common/src/types/DateTime.mjs +156 -0
  73. package/dist/sd-core-common/src/types/DeepPartial.d.ts +3 -0
  74. package/dist/sd-core-common/src/types/DeepPartial.js.map +1 -0
  75. package/dist/sd-core-common/src/types/DeepPartial.mjs +2 -0
  76. package/dist/sd-core-common/src/types/ObjectSet.d.ts +4 -0
  77. package/dist/sd-core-common/src/types/ObjectSet.js.map +1 -0
  78. package/dist/sd-core-common/src/types/ObjectSet.mjs +18 -0
  79. package/dist/sd-core-common/src/types/Time.d.ts +27 -0
  80. package/dist/sd-core-common/src/types/Time.js.map +1 -0
  81. package/dist/sd-core-common/src/types/Time.mjs +108 -0
  82. package/dist/sd-core-common/src/types/Type.d.ts +7 -0
  83. package/dist/sd-core-common/src/types/Type.js.map +1 -0
  84. package/dist/sd-core-common/src/types/Type.mjs +2 -0
  85. package/dist/sd-core-common/src/types/UnwrappedType.d.ts +1 -0
  86. package/dist/sd-core-common/src/types/UnwrappedType.js.map +1 -0
  87. package/dist/sd-core-common/src/types/UnwrappedType.mjs +2 -0
  88. package/dist/sd-core-common/src/types/Uuid.d.ts +8 -0
  89. package/dist/sd-core-common/src/types/Uuid.js.map +1 -0
  90. package/dist/sd-core-common/src/types/Uuid.mjs +26 -0
  91. package/dist/sd-core-common/src/types/WrappedType.d.ts +1 -0
  92. package/dist/sd-core-common/src/types/WrappedType.js.map +1 -0
  93. package/dist/sd-core-common/src/types/WrappedType.mjs +2 -0
  94. package/dist/sd-core-common/src/utils/DateTimeFormatUtil.d.ts +12 -0
  95. package/dist/sd-core-common/src/utils/DateTimeFormatUtil.js.map +1 -0
  96. package/dist/sd-core-common/src/utils/DateTimeFormatUtil.mjs +67 -0
  97. package/dist/sd-core-common/src/utils/FunctionQueue.d.ts +8 -0
  98. package/dist/sd-core-common/src/utils/FunctionQueue.js.map +1 -0
  99. package/dist/sd-core-common/src/utils/FunctionQueue.mjs +46 -0
  100. package/dist/sd-core-common/src/utils/FunctionUtil.d.ts +6 -0
  101. package/dist/sd-core-common/src/utils/FunctionUtil.js.map +1 -0
  102. package/dist/sd-core-common/src/utils/FunctionUtil.mjs +31 -0
  103. package/dist/sd-core-common/src/utils/JsonConvert.d.ts +8 -0
  104. package/dist/sd-core-common/src/utils/JsonConvert.js.map +1 -0
  105. package/dist/sd-core-common/src/utils/JsonConvert.mjs +78 -0
  106. package/dist/sd-core-common/src/utils/MathUtil.d.ts +3 -0
  107. package/dist/sd-core-common/src/utils/MathUtil.js.map +1 -0
  108. package/dist/sd-core-common/src/utils/MathUtil.mjs +6 -0
  109. package/dist/sd-core-common/src/utils/NumberUtil.d.ts +6 -0
  110. package/dist/sd-core-common/src/utils/NumberUtil.js.map +1 -0
  111. package/dist/sd-core-common/src/utils/NumberUtil.mjs +32 -0
  112. package/dist/sd-core-common/src/utils/ObjectUtil.d.ts +80 -0
  113. package/dist/sd-core-common/src/utils/ObjectUtil.js.map +1 -0
  114. package/dist/sd-core-common/src/utils/ObjectUtil.mjs +452 -0
  115. package/dist/sd-core-common/src/utils/SdSyncEventEmitter.d.ts +6 -0
  116. package/dist/sd-core-common/src/utils/SdSyncEventEmitter.js.map +1 -0
  117. package/dist/sd-core-common/src/utils/SdSyncEventEmitter.mjs +27 -0
  118. package/dist/sd-core-common/src/utils/StringUtil.d.ts +8 -0
  119. package/dist/sd-core-common/src/utils/StringUtil.js.map +1 -0
  120. package/dist/sd-core-common/src/utils/StringUtil.mjs +77 -0
  121. package/dist/sd-core-common/src/utils/Wait.d.ts +4 -0
  122. package/dist/sd-core-common/src/utils/Wait.js.map +1 -0
  123. package/dist/sd-core-common/src/utils/Wait.mjs +23 -0
  124. package/dist/sd-core-node/src/index.d.ts +6 -0
  125. package/dist/sd-core-node/src/index.js.map +1 -0
  126. package/dist/sd-core-node/src/index.mjs +7 -0
  127. package/dist/sd-core-node/src/utils/FsUtil.d.ts +44 -0
  128. package/dist/sd-core-node/src/utils/FsUtil.js.map +1 -0
  129. package/dist/sd-core-node/src/utils/FsUtil.mjs +493 -0
  130. package/dist/sd-core-node/src/utils/Logger.d.ts +91 -0
  131. package/dist/sd-core-node/src/utils/Logger.js.map +1 -0
  132. package/dist/sd-core-node/src/utils/Logger.mjs +185 -0
  133. package/dist/sd-core-node/src/utils/PathUtil.d.ts +6 -0
  134. package/dist/sd-core-node/src/utils/PathUtil.js.map +1 -0
  135. package/dist/sd-core-node/src/utils/PathUtil.mjs +24 -0
  136. package/dist/sd-core-node/src/utils/SdFsWatcher.d.ts +15 -0
  137. package/dist/sd-core-node/src/utils/SdFsWatcher.js.map +1 -0
  138. package/dist/sd-core-node/src/utils/SdFsWatcher.mjs +43 -0
  139. package/dist/sd-core-node/src/utils/SdProcess.d.ts +5 -0
  140. package/dist/sd-core-node/src/utils/SdProcess.js.map +1 -0
  141. package/dist/sd-core-node/src/utils/SdProcess.mjs +36 -0
  142. package/dist/sd-orm-common/src/CaseQueryHelper.d.ts +12 -0
  143. package/dist/sd-orm-common/src/CaseQueryHelper.js.map +1 -0
  144. package/dist/sd-orm-common/src/CaseQueryHelper.mjs +19 -0
  145. package/dist/sd-orm-common/src/CaseWhenQueryHelper.d.ts +12 -0
  146. package/dist/sd-orm-common/src/CaseWhenQueryHelper.js.map +1 -0
  147. package/dist/sd-orm-common/src/CaseWhenQueryHelper.mjs +20 -0
  148. package/dist/sd-orm-common/src/DbContext.d.ts +81 -0
  149. package/dist/sd-orm-common/src/DbContext.js.map +1 -0
  150. package/dist/sd-orm-common/src/DbContext.mjs +635 -0
  151. package/dist/sd-orm-common/src/IDbConnection.d.ts +15 -0
  152. package/dist/sd-orm-common/src/IDbConnection.js.map +1 -0
  153. package/dist/sd-orm-common/src/IDbConnection.mjs +2 -0
  154. package/dist/sd-orm-common/src/IDbContextExecutor.d.ts +17 -0
  155. package/dist/sd-orm-common/src/IDbContextExecutor.js.map +1 -0
  156. package/dist/sd-orm-common/src/IDbContextExecutor.mjs +2 -0
  157. package/dist/sd-orm-common/src/IDbMigration.d.ts +4 -0
  158. package/dist/sd-orm-common/src/IDbMigration.js.map +1 -0
  159. package/dist/sd-orm-common/src/IDbMigration.mjs +2 -0
  160. package/dist/sd-orm-common/src/QueryBuilder.d.ts +48 -0
  161. package/dist/sd-orm-common/src/QueryBuilder.js.map +1 -0
  162. package/dist/sd-orm-common/src/QueryBuilder.mjs +1022 -0
  163. package/dist/sd-orm-common/src/QueryHelper.d.ts +75 -0
  164. package/dist/sd-orm-common/src/QueryHelper.js.map +1 -0
  165. package/dist/sd-orm-common/src/QueryHelper.mjs +627 -0
  166. package/dist/sd-orm-common/src/QueryUnit.d.ts +10 -0
  167. package/dist/sd-orm-common/src/QueryUnit.js.map +1 -0
  168. package/dist/sd-orm-common/src/QueryUnit.mjs +16 -0
  169. package/dist/sd-orm-common/src/Queryable.d.ts +105 -0
  170. package/dist/sd-orm-common/src/Queryable.js.map +1 -0
  171. package/dist/sd-orm-common/src/Queryable.mjs +1375 -0
  172. package/dist/sd-orm-common/src/SdOrmDataType.d.ts +21 -0
  173. package/dist/sd-orm-common/src/SdOrmDataType.js.map +1 -0
  174. package/dist/sd-orm-common/src/SdOrmDataType.mjs +2 -0
  175. package/dist/sd-orm-common/src/commons.d.ts +400 -0
  176. package/dist/sd-orm-common/src/commons.js.map +1 -0
  177. package/dist/sd-orm-common/src/commons.mjs +8 -0
  178. package/dist/sd-orm-common/src/decorators.d.ts +29 -0
  179. package/dist/sd-orm-common/src/decorators.js.map +1 -0
  180. package/dist/sd-orm-common/src/decorators.mjs +89 -0
  181. package/dist/sd-orm-common/src/index.d.ts +17 -0
  182. package/dist/sd-orm-common/src/index.js.map +1 -0
  183. package/dist/sd-orm-common/src/index.mjs +18 -0
  184. package/dist/sd-orm-common/src/models/SystemMigration.d.ts +3 -0
  185. package/dist/sd-orm-common/src/models/SystemMigration.js.map +1 -0
  186. package/dist/sd-orm-common/src/models/SystemMigration.mjs +13 -0
  187. package/dist/sd-orm-common/src/utils/DbDefinitionUtil.d.ts +14 -0
  188. package/dist/sd-orm-common/src/utils/DbDefinitionUtil.js.map +1 -0
  189. package/dist/sd-orm-common/src/utils/DbDefinitionUtil.mjs +66 -0
  190. package/dist/sd-orm-common/src/utils/SdOrmUtil.d.ts +8 -0
  191. package/dist/sd-orm-common/src/utils/SdOrmUtil.js.map +1 -0
  192. package/dist/sd-orm-common/src/utils/SdOrmUtil.mjs +248 -0
  193. package/dist/sd-orm-node/src/DbConnectionFactory.d.ts +4 -0
  194. package/dist/sd-orm-node/src/DbConnectionFactory.js.map +1 -0
  195. package/dist/sd-orm-node/src/DbConnectionFactory.mjs +17 -0
  196. package/dist/sd-orm-node/src/NodeDbContextExecutor.d.ts +19 -0
  197. package/dist/sd-orm-node/src/NodeDbContextExecutor.js.map +1 -0
  198. package/dist/sd-orm-node/src/NodeDbContextExecutor.mjs +71 -0
  199. package/dist/sd-orm-node/src/SdOrm.d.ts +10 -0
  200. package/dist/sd-orm-node/src/SdOrm.js.map +1 -0
  201. package/dist/sd-orm-node/src/SdOrm.mjs +25 -0
  202. package/dist/sd-orm-node/src/index.d.ts +4 -0
  203. package/dist/sd-orm-node/src/index.js.map +1 -0
  204. package/dist/sd-orm-node/src/index.mjs +5 -0
  205. package/dist/sd-orm-node-mssql/src/MssqlDbConnection.d.ts +25 -0
  206. package/dist/sd-orm-node-mssql/src/MssqlDbConnection.js.map +1 -0
  207. package/dist/sd-orm-node-mssql/src/MssqlDbConnection.mjs +321 -0
  208. package/dist/sd-orm-node-mssql/src/index.d.ts +2 -0
  209. package/dist/sd-orm-node-mssql/src/index.js.map +1 -0
  210. package/dist/sd-orm-node-mssql/src/index.mjs +3 -0
  211. package/dist/sd-orm-node-mysql/src/MysqlDbConnection.d.ts +22 -0
  212. package/dist/sd-orm-node-mysql/src/MysqlDbConnection.js.map +1 -0
  213. package/dist/sd-orm-node-mysql/src/MysqlDbConnection.mjs +200 -0
  214. package/dist/sd-orm-node-mysql/src/index.d.ts +2 -0
  215. package/dist/sd-orm-node-mysql/src/index.js.map +1 -0
  216. package/dist/sd-orm-node-mysql/src/index.mjs +3 -0
  217. package/dist/sd-orm-node-sqlite/src/SqliteDbConnection.d.ts +22 -0
  218. package/dist/sd-orm-node-sqlite/src/SqliteDbConnection.js.map +1 -0
  219. package/dist/sd-orm-node-sqlite/src/SqliteDbConnection.mjs +172 -0
  220. package/dist/sd-orm-node-sqlite/src/index.d.ts +2 -0
  221. package/dist/sd-orm-node-sqlite/src/index.js.map +1 -0
  222. package/dist/sd-orm-node-sqlite/src/index.mjs +3 -0
  223. package/dist/sd-service-common/src/commons-orm.d.ts +4 -0
  224. package/dist/sd-service-common/src/commons-orm.js.map +1 -0
  225. package/dist/sd-service-common/src/commons-orm.mjs +2 -0
  226. package/dist/sd-service-common/src/commons-smtp.d.ts +29 -0
  227. package/dist/sd-service-common/src/commons-smtp.js.map +1 -0
  228. package/dist/sd-service-common/src/commons-smtp.mjs +2 -0
  229. package/dist/sd-service-common/src/commons.d.ts +57 -0
  230. package/dist/sd-service-common/src/commons.js.map +1 -0
  231. package/dist/sd-service-common/src/commons.mjs +3 -0
  232. package/dist/sd-service-common/src/index.d.ts +3 -0
  233. package/dist/sd-service-common/src/index.js.map +1 -0
  234. package/dist/sd-service-common/src/index.mjs +4 -0
  235. package/dist/sd-service-server/src/ApiServiceError.d.ts +12 -0
  236. package/dist/sd-service-server/src/ApiServiceError.js.map +1 -0
  237. package/dist/sd-service-server/src/ApiServiceError.mjs +15 -0
  238. package/dist/sd-service-server/src/SdServiceServer.d.ts +39 -0
  239. package/dist/sd-service-server/src/SdServiceServer.js.map +1 -0
  240. package/dist/sd-service-server/src/SdServiceServer.mjs +513 -0
  241. package/dist/sd-service-server/src/commons.d.ts +23 -0
  242. package/dist/sd-service-server/src/commons.js.map +1 -0
  243. package/dist/sd-service-server/src/commons.mjs +3 -0
  244. package/dist/sd-service-server/src/index.d.ts +8 -0
  245. package/dist/sd-service-server/src/index.js.map +1 -0
  246. package/dist/sd-service-server/src/index.mjs +9 -0
  247. package/dist/sd-service-server/src/services/SdAutoUpdateService.d.ts +4 -0
  248. package/dist/sd-service-server/src/services/SdAutoUpdateService.js.map +1 -0
  249. package/dist/sd-service-server/src/services/SdAutoUpdateService.mjs +20 -0
  250. package/dist/sd-service-server/src/services/SdCryptoService.d.ts +7 -0
  251. package/dist/sd-service-server/src/services/SdCryptoService.js.map +1 -0
  252. package/dist/sd-service-server/src/services/SdCryptoService.mjs +39 -0
  253. package/dist/sd-service-server/src/services/SdOrmService.d.ts +22 -0
  254. package/dist/sd-service-server/src/services/SdOrmService.js.map +1 -0
  255. package/dist/sd-service-server/src/services/SdOrmService.mjs +115 -0
  256. package/dist/sd-service-server/src/services/SdSmtpClientService.d.ts +6 -0
  257. package/dist/sd-service-server/src/services/SdSmtpClientService.js.map +1 -0
  258. package/dist/sd-service-server/src/services/SdSmtpClientService.mjs +44 -0
  259. package/dist/sd-service-server/src/utils/SdServiceServerConfigUtil.d.ts +4 -0
  260. package/dist/sd-service-server/src/utils/SdServiceServerConfigUtil.js.map +1 -0
  261. package/dist/sd-service-server/src/utils/SdServiceServerConfigUtil.mjs +36 -0
  262. package/dist/server-worker.d.ts +1 -0
  263. package/dist/server-worker.js.map +1 -0
  264. package/dist/server-worker.mjs +36 -0
  265. package/package.json +11 -4
  266. package/src/SdLinter.ts +41 -0
  267. package/src/SdTsIncrementalBuilder.ts +75 -0
  268. package/src/build-cluster.ts +69 -18
  269. package/src/builders/SdCliClientBuilder.ts +189 -0
  270. package/src/builders/SdCliJsLibLinter.ts +11 -23
  271. package/src/builders/SdCliServerBuilder.ts +191 -0
  272. package/src/builders/SdCliTsLibBuilder.ts +33 -202
  273. package/src/commons.ts +32 -2
  274. package/src/entry/SdCliProject.ts +133 -17
  275. package/src/sd-cli.ts +1 -0
  276. package/src/server-worker.ts +45 -0
  277. package/tsconfig.json +1 -10
  278. package/dist/build-cluster.js +0 -75
  279. package/dist/builders/SdCliTsLibBuilder.js +0 -205
  280. /package/dist/{commons.js → commons.mjs} +0 -0
  281. /package/dist/utils/{SdCliBuildResultUtil.js → SdCliBuildResultUtil.mjs} +0 -0
  282. /package/dist/utils/{SdCliConfigUtil.js → SdCliConfigUtil.mjs} +0 -0
@@ -0,0 +1,12 @@
1
+ import { PropertyGetSetDecoratorBase } from "./PropertyGetSetDecoratorBase";
2
+ /**
3
+ * 속성에 설정하여, 동일 클래스의 {@link INotifyPropertyChange.onPropertyChange} 호출
4
+ */
5
+ export function NotifyPropertyChange() {
6
+ return PropertyGetSetDecoratorBase({
7
+ afterSet: (target, propertyName, oldValue, newValue) => {
8
+ target.onPropertyChange(propertyName, oldValue, newValue);
9
+ }
10
+ });
11
+ }
12
+ //# sourceMappingURL=NotifyPropertyChange.js.map
@@ -0,0 +1,43 @@
1
+ import { TPropertyDecoratorReturn } from "./decorator-return-types";
2
+ /**
3
+ * 속성의 GET/SET 을 Interupt 하여 사용하는 Decorator를 위한 기본 함수
4
+ *
5
+ * @template O 클래스 타입
6
+ * @template K 클래스내 속성명
7
+ */
8
+ export declare function PropertyGetSetDecoratorBase<O extends object, K extends keyof O>(arg: IPropertyGetSetDecoratorBaseParam<O, K>): TPropertyDecoratorReturn<O, K>;
9
+ /**
10
+ * {@link PropertyGetSetDecoratorBase} 의 Parameter
11
+ *
12
+ * @template O 클래스 타입
13
+ * @template K 클래스내 속성명
14
+ *
15
+ */
16
+ export interface IPropertyGetSetDecoratorBaseParam<O extends object, K extends keyof O> {
17
+ /**
18
+ * 값이 설정 되기 전에 수행할 함수
19
+ *
20
+ * @param target 객체
21
+ * @param propertyName 속성명
22
+ * @param oldValue SET 이전값
23
+ * @param newValue SET 이후값
24
+ */
25
+ beforeSet?: (target: O, propertyName: K, oldValue: O[K], newValue: O[K]) => (O[K] | undefined);
26
+ /**
27
+ * 값이 설정 된 직후, 수행할 함수
28
+ *
29
+ * @param target 객체
30
+ * @param propertyName 속성명
31
+ * @param oldValue SET 이전값
32
+ * @param newValue SET 이후값
33
+ */
34
+ afterSet?: (target: O, propertyName: K, oldValue: O[K], newValue: O[K]) => void;
35
+ /**
36
+ * 누군가 GET 을 시도할때, GET 되기 전, 수행할 함수
37
+ *
38
+ * @param target 객체
39
+ * @param propertyName 속성명
40
+ * @param value GET 처리될 현재 값
41
+ */
42
+ get?: (target: O, propertyName: K, value: O[K]) => void;
43
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyGetSetDecoratorBase.js","sourceRoot":"","sources":["../../../../../sd-core-common/src/decorators/PropertyGetSetDecoratorBase.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAG,kBAAkB,CAAC;AAElC;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAsC,GAA4C;IAC3H,OAAO,UAAU,MAAS,EAAE,YAAe,EAAE,eAAoC;QAC/E,MAAM,cAAc,GAAG,eAAe,IAAI,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAChG,MAAM,UAAU,GAAG,cAAc,EAAE,GAAG,CAAC;QACvC,MAAM,UAAU,GAAG,cAAc,EAAE,GAAG,CAAC;QAEvC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,YAAsB,CAAC,CAAC;QAErF,MAAM,MAAM,GAAG;YACb,MAAM,KAAK,GAAG,UAAU,KAAK,SAAS;gBACpC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACzB,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,YAAsB,CAAC,CAAC;YAE9D,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,EAAE;gBACzB,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;aACpC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,UAAmB,KAAW;YAC3C,MAAM,SAAS,GAAG,UAAU,KAAK,SAAS;gBACxC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACzB,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,YAAsB,CAAC,CAAC;YAE9D,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE;gBAC/B,MAAM,eAAe,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;gBAChF,IAAI,eAAe,KAAK,SAAS,EAAE;oBACjC,SAAS,GAAG,eAAe,CAAC;iBAC7B;aACF;YAED,IAAI,UAAU,KAAK,SAAS,EAAE;gBAC5B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;aAClC;iBACI;gBACH,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,YAAsB,CAAC,CAAC;aACzE;YAED,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE;gBAC9B,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;aACxD;QACH,CAAC,CAAC;QAEF,IAAI,OAAO,MAAM,CAAC,YAAY,CAAC,EAAE;YAC/B,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE;gBAC1C,GAAG,EAAE,MAAM;gBACX,GAAG,EAAE,MAAM;gBACX,UAAU,EAAE,IAAI;gBAChB,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;SACJ;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,54 @@
1
+ const symbol = "sd-type-validate";
2
+ /**
3
+ * 속성의 GET/SET 을 Interupt 하여 사용하는 Decorator를 위한 기본 함수
4
+ *
5
+ * @template O 클래스 타입
6
+ * @template K 클래스내 속성명
7
+ */
8
+ export function PropertyGetSetDecoratorBase(arg) {
9
+ return function (target, propertyName, inputDescriptor) {
10
+ const prevDescriptor = inputDescriptor ?? Object.getOwnPropertyDescriptor(target, propertyName);
11
+ const prevGetter = prevDescriptor?.get;
12
+ const prevSetter = prevDescriptor?.set;
13
+ Reflect.defineMetadata(symbol, target[propertyName], target, propertyName);
14
+ const getter = function () {
15
+ const value = prevGetter !== undefined
16
+ ? prevGetter.bind(this)()
17
+ : Reflect.getMetadata(symbol, this, propertyName);
18
+ if (arg.get !== undefined) {
19
+ arg.get(this, propertyName, value);
20
+ }
21
+ return value;
22
+ };
23
+ const setter = function (value) {
24
+ const prevValue = prevGetter !== undefined
25
+ ? prevGetter.bind(this)()
26
+ : Reflect.getMetadata(symbol, this, propertyName);
27
+ let realValue = value;
28
+ if (arg.beforeSet !== undefined) {
29
+ const beforeSetResult = arg.beforeSet(this, propertyName, prevValue, realValue);
30
+ if (beforeSetResult !== undefined) {
31
+ realValue = beforeSetResult;
32
+ }
33
+ }
34
+ if (prevSetter !== undefined) {
35
+ prevSetter.bind(this)(realValue);
36
+ }
37
+ else {
38
+ Reflect.defineMetadata(symbol, realValue, this, propertyName);
39
+ }
40
+ if (arg.afterSet !== undefined) {
41
+ arg.afterSet(this, propertyName, prevValue, realValue);
42
+ }
43
+ };
44
+ if (delete target[propertyName]) {
45
+ Object.defineProperty(target, propertyName, {
46
+ get: getter,
47
+ set: setter,
48
+ enumerable: true,
49
+ configurable: true
50
+ });
51
+ }
52
+ };
53
+ }
54
+ //# sourceMappingURL=PropertyGetSetDecoratorBase.js.map
@@ -0,0 +1,16 @@
1
+ import { TValidateDef } from "../utils/ObjectUtil";
2
+ import { TPropertyDecoratorReturn } from "./decorator-return-types";
3
+ /**
4
+ * 속성값이 설정될 때, 기대되는 값인지 확인 하는 Decorator
5
+ *
6
+ * @param def Validation 설정
7
+ * @param replacer 체크하기전에 값을 변경하는 함수
8
+ */
9
+ export declare function PropertyValidate(def: TValidateDef<any>, replacer?: TPropertyValidateReplacer): TPropertyDecoratorReturn<any>;
10
+ /**
11
+ * 체크하기전에 값을 변경하는 함수
12
+ *
13
+ * @param value 입력값
14
+ * @returns 출력값
15
+ */
16
+ export type TPropertyValidateReplacer = (value: any) => any;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyValidate.js","sourceRoot":"","sources":["../../../../../sd-core-common/src/decorators/PropertyValidate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAgB,MAAM,qBAAqB,CAAC;AAG/D;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAsB,EAAE,QAAoC;IAC3F,OAAO,2BAA2B,CAAC;QACjC,SAAS,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE;YACxD,MAAM,iBAAiB,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACnF,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;YAC1D,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,SAAS,CAAC;oBACjG,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI;oBAClC,YAAY;oBACZ,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;iBAC5C,CAAC,EAAE,CAAC,CAAC;aACP;YAED,OAAO,iBAAiB,CAAC;QAC3B,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { PropertyGetSetDecoratorBase } from "./PropertyGetSetDecoratorBase";
2
+ import { ObjectUtil } from "../utils/ObjectUtil";
3
+ /**
4
+ * 속성값이 설정될 때, 기대되는 값인지 확인 하는 Decorator
5
+ *
6
+ * @param def Validation 설정
7
+ * @param replacer 체크하기전에 값을 변경하는 함수
8
+ */
9
+ export function PropertyValidate(def, replacer) {
10
+ return PropertyGetSetDecoratorBase({
11
+ beforeSet: (target, propertyName, prevValue, nextValue) => {
12
+ const replacedNextValue = replacer !== undefined ? replacer(nextValue) : nextValue;
13
+ const error = ObjectUtil.validate(replacedNextValue, def);
14
+ if (error !== undefined) {
15
+ throw new Error(`${error.message !== undefined ? error.message : "입력값이 잘못되었습니다"}: ${JSON.stringify({
16
+ component: target.constructor.name,
17
+ propertyName,
18
+ value: error.value,
19
+ errorKeys: Object.keys(error.invalidateDef)
20
+ })}`);
21
+ }
22
+ return replacedNextValue;
23
+ }
24
+ });
25
+ }
26
+ //# sourceMappingURL=PropertyValidate.js.map
@@ -0,0 +1,14 @@
1
+ import { Type } from "../types/Type";
2
+ /**
3
+ * 속성용 Decorator 함수의 Return 타입
4
+ *
5
+ * @template T 포함된 클래스 타입
6
+ * @template N 속성명 (string)
7
+ */
8
+ export type TPropertyDecoratorReturn<T, N = string> = (target: T, propertyName: N, inputDescriptor?: PropertyDescriptor) => void;
9
+ /**
10
+ * 클래스용 Decorator 함수의 Return 타입
11
+ *
12
+ * @template T 클래스 타입
13
+ */
14
+ export type TClassDecoratorReturn<T> = (classType: Type<T>) => void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorator-return-types.js","sourceRoot":"","sources":["../../../../../sd-core-common/src/decorators/decorator-return-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=decorator-return-types.js.map
@@ -0,0 +1,10 @@
1
+ import { SdError } from "./SdError";
2
+ /**
3
+ * 인수 오류
4
+ */
5
+ export declare class ArgumentError extends SdError {
6
+ /**
7
+ * @param argObj 잘못된 인수/값 들
8
+ */
9
+ constructor(argObj: Record<string, any>);
10
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArgumentError.js","sourceRoot":"","sources":["../../../../../sd-core-common/src/errors/ArgumentError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,OAAO;IACxC;;OAEG;IACH,YAAmB,MAA2B;QAC5C,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import { SdError } from "./SdError";
2
+ /**
3
+ * 인수 오류
4
+ */
5
+ export class ArgumentError extends SdError {
6
+ /**
7
+ * @param argObj 잘못된 인수/값 들
8
+ */
9
+ constructor(argObj) {
10
+ super("인수가 잘못되었습니다: " + JSON.stringify(argObj));
11
+ }
12
+ }
13
+ //# sourceMappingURL=ArgumentError.js.map
@@ -0,0 +1,10 @@
1
+ import { SdError } from "./SdError";
2
+ /**
3
+ * 절대 진입되지 않을것으로 예상되는 장소에 진입함 오류
4
+ */
5
+ export declare class NeverEntryError extends SdError {
6
+ /**
7
+ * @param message 도움 출력 메시지
8
+ */
9
+ constructor(message?: string);
10
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NeverEntryError.js","sourceRoot":"","sources":["../../../../../sd-core-common/src/errors/NeverEntryError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,OAAO;IAC1C;;OAEG;IACH,YAAmB,OAAgB;QACjC,KAAK,CAAC,gCAAgC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1F,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import { SdError } from "./SdError";
2
+ /**
3
+ * 절대 진입되지 않을것으로 예상되는 장소에 진입함 오류
4
+ */
5
+ export class NeverEntryError extends SdError {
6
+ /**
7
+ * @param message 도움 출력 메시지
8
+ */
9
+ constructor(message) {
10
+ super("절대 진입될 수 없는것으로 판단된 코드에 진입되었습니다" + (message !== undefined ? ": " + message : ""));
11
+ }
12
+ }
13
+ //# sourceMappingURL=NeverEntryError.js.map
@@ -0,0 +1,10 @@
1
+ import { SdError } from "./SdError";
2
+ /**
3
+ * 미구현 오류
4
+ */
5
+ export declare class NotImplementError extends SdError {
6
+ /**
7
+ * @param message 도움 출력 메시지
8
+ */
9
+ constructor(message?: string);
10
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotImplementError.js","sourceRoot":"","sources":["../../../../../sd-core-common/src/errors/NotImplementError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,OAAO;IAC5C;;OAEG;IACH,YAAmB,OAAgB;QACjC,KAAK,CAAC,aAAa,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import { SdError } from "./SdError";
2
+ /**
3
+ * 미구현 오류
4
+ */
5
+ export class NotImplementError extends SdError {
6
+ /**
7
+ * @param message 도움 출력 메시지
8
+ */
9
+ constructor(message) {
10
+ super("구현되어있지 않습니다" + (message !== undefined ? ": " + message : ""));
11
+ }
12
+ }
13
+ //# sourceMappingURL=NotImplementError.js.map
@@ -0,0 +1,23 @@
1
+ /**
2
+ * 오류의 Tree 구조 구성이 가능한 오류 클래스
3
+ */
4
+ export declare class SdError extends Error {
5
+ /**
6
+ * 내부오류
7
+ */
8
+ innerError?: Error;
9
+ /**
10
+ * @param innerError 내부오류
11
+ * @param message 현재 오류의 메시지
12
+ */
13
+ constructor(innerError?: Error, message?: string);
14
+ /**
15
+ * @param message 현재 오류의 메시지
16
+ */
17
+ constructor(message?: string);
18
+ /**
19
+ * @param innerErrorMessage 내부오류의 메시지
20
+ * @param message 현재 오류의 메시지
21
+ */
22
+ constructor(innerErrorMessage?: string, message?: string);
23
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SdError.js","sourceRoot":"","sources":["../../../../../sd-core-common/src/errors/SdError.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,OAAQ,SAAQ,KAAK;IAsBhC,YAAmB,IAAqB,EAAE,IAAa;QACrD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YACxD,KAAK,CACH,CAAC,IAAI,IAAI,EAAE,CAAC;kBACV,CACA,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE;oBAC9C,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE;wBACxC,CAAC,CAAC,sBAAsB,CAC7B,CACF,CAAC;SACH;aACI;YACH,KAAK,CAAC,IAAI,IAAI,sBAAsB,CAAC,CAAC;SACvC;QAED,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,IAAI,OAAO,KAAK,CAAC,iBAAiB,KAAK,WAAW,EAAE;YAClD,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;SAC3C;aACI;YACH,IAAI;gBACF,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC/B;YACD,OAAO,GAAG,EAAE;gBACV,IAAI,GAAG,YAAY,KAAK,EAAE;oBACxB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;iBACxB;qBACI;oBACH,MAAM,GAAG,CAAC;iBACX;aACF;SACF;QAED,qCAAqC;QACrC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;YAC9D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,KAAK,IAAI,kCAAkC,IAAI,CAAC,KAAK,EAAE,CAAC;SAC9D;IACH,CAAC;CACF"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * 오류의 Tree 구조 구성이 가능한 오류 클래스
3
+ */
4
+ export class SdError extends Error {
5
+ constructor(arg1, arg2) {
6
+ if (typeof arg1 === "object" || typeof arg2 === "string") {
7
+ super((arg2 ?? "")
8
+ + (typeof arg1 === "object" ? ` => ${arg1.message}`
9
+ : typeof arg1 === "string" ? ` => ${arg1}`
10
+ : "처리되지 않은 예외가 발생하였습니다."));
11
+ }
12
+ else {
13
+ super(arg1 ?? "처리되지 않은 예외가 발생하였습니다.");
14
+ }
15
+ Object.setPrototypeOf(this, new.target.prototype);
16
+ this.name = new.target.name;
17
+ if (typeof Error.captureStackTrace !== "undefined") {
18
+ Error.captureStackTrace(this, new.target);
19
+ }
20
+ else {
21
+ try {
22
+ throw new Error(this.message);
23
+ }
24
+ catch (err) {
25
+ if (err instanceof Error) {
26
+ this.stack = err.stack;
27
+ }
28
+ else {
29
+ throw err;
30
+ }
31
+ }
32
+ }
33
+ // noinspection SuspiciousTypeOfGuard
34
+ if (typeof arg1 === "object" && typeof arg1.stack === "string") {
35
+ this.innerError = arg1;
36
+ this.stack += `\n---- inner error stack ----\n${arg1.stack}`;
37
+ }
38
+ }
39
+ }
40
+ //# sourceMappingURL=SdError.js.map
@@ -0,0 +1,11 @@
1
+ import { SdError } from "./SdError";
2
+ /**
3
+ * 타임아웃 오류
4
+ */
5
+ export declare class TimeoutError extends SdError {
6
+ /**
7
+ * @param millisecond 얼마를 기다리고 타임아웃 되었는지?
8
+ * @param message 추가 출력 메시지
9
+ */
10
+ constructor(millisecond?: number, message?: string);
11
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeoutError.js","sourceRoot":"","sources":["../../../../../sd-core-common/src/errors/TimeoutError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,OAAO;IACvC;;;OAGG;IACH,YAAmB,WAAoB,EAAE,OAAgB;QACvD,KAAK,CACH,eAAe;cACb,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,WAAW,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;cACvD,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAChD,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ import { SdError } from "./SdError";
2
+ /**
3
+ * 타임아웃 오류
4
+ */
5
+ export class TimeoutError extends SdError {
6
+ /**
7
+ * @param millisecond 얼마를 기다리고 타임아웃 되었는지?
8
+ * @param message 추가 출력 메시지
9
+ */
10
+ constructor(millisecond, message) {
11
+ super("대기시간이 초과되었습니다"
12
+ + (millisecond !== undefined ? `(${millisecond}ms)` : "")
13
+ + (message !== undefined ? `: ${message}` : ""));
14
+ }
15
+ }
16
+ //# sourceMappingURL=TimeoutError.js.map
@@ -0,0 +1,147 @@
1
+ import { Type } from "../types/Type";
2
+ import { WrappedType } from "../types/WrappedType";
3
+ import { DateOnly } from "../types/DateOnly";
4
+ import { DateTime } from "../types/DateTime";
5
+ import { Time } from "../types/Time";
6
+ declare global {
7
+ interface Array<T> {
8
+ /**
9
+ * 필터에 맞는 하나의 값 찾기 (여러값이 있을 경우 오류 발생)
10
+ * @param predicate 필터
11
+ */
12
+ single(predicate?: (item: T, index: number) => boolean): T | undefined;
13
+ first(predicate?: (item: T, index: number) => boolean): T | undefined;
14
+ filterAsync(predicate: (item: T, index: number) => Promise<boolean>): Promise<T[]>;
15
+ last(predicate?: (item: T, index: number) => boolean): T | undefined;
16
+ filterExists(): NonNullable<T>[];
17
+ ofType<N extends T>(type: Type<WrappedType<N>>): N[];
18
+ mapAsync<R>(selector: (item: T, index: number) => Promise<R>): Promise<R[]>;
19
+ mapMany(): T;
20
+ mapMany<R>(selector: (item: T, index: number) => R[]): R[];
21
+ mapManyAsync<R>(selector: (item: T, index: number) => Promise<R[]>): Promise<R[]>;
22
+ parallelAsync<R>(fn: (item: T, index: number) => Promise<R>): Promise<R[]>;
23
+ groupBy<K>(keySelector: (item: T, index: number) => K): {
24
+ key: K;
25
+ values: T[];
26
+ }[];
27
+ groupBy<K, V>(keySelector: (item: T, index: number) => K, valueSelector: (item: T, index: number) => V): {
28
+ key: K;
29
+ values: V[];
30
+ }[];
31
+ toMap<K>(keySelector: (item: T, index: number) => K): Map<K, T>;
32
+ toMap<K, V>(keySelector: (item: T, index: number) => K, valueSelector: (item: T, index: number) => V): Map<K, V>;
33
+ toMapAsync<K>(keySelector: (item: T, index: number) => Promise<K>): Promise<Map<K, T>>;
34
+ toMapAsync<K, V>(keySelector: (item: T, index: number) => Promise<K> | K, valueSelector: (item: T, index: number) => Promise<V> | V): Promise<Map<K, V>>;
35
+ toArrayMap<K>(keySelector: (item: T, index: number) => K): Map<K, T[]>;
36
+ toArrayMap<K, V>(keySelector: (item: T, index: number) => K, valueSelector: (item: T, index: number) => V): Map<K, V[]>;
37
+ toMapValues<K, V>(keySelector: (item: T, index: number) => K, valueSelector: (items: T[]) => V): Map<K, V>;
38
+ toObject(keySelector: (item: T, index: number) => string): Record<string, T>;
39
+ toObject<V>(keySelector: (item: T, index: number) => string, valueSelector: (item: T, index: number) => V): Record<string, V>;
40
+ toTree<K extends keyof T, P extends keyof T>(keyProp: K, parentKey: P): ITreeArray<T>[];
41
+ distinct(matchAddress?: boolean): T[];
42
+ distinctThis(matchAddress?: boolean): T[];
43
+ orderBy(selector?: (item: T) => string | number | DateOnly | DateTime | Time | undefined): T[];
44
+ orderByThis(selector?: (item: T) => string | number | DateOnly | DateTime | Time | undefined): T[];
45
+ orderByDesc(selector?: (item: T) => string | number | DateOnly | DateTime | Time | undefined): T[];
46
+ orderByDescThis(selector?: (item: T) => string | number | DateOnly | DateTime | Time | undefined): T[];
47
+ diffs<P>(target: P[], options?: {
48
+ keys?: string[];
49
+ excludes?: string[];
50
+ }): TArrayDiffsResult<T, P>[];
51
+ oneWayDiffs<K extends keyof T>(orgItems: T[] | Map<T[K], T>, key: K, options?: {
52
+ includeSame?: boolean;
53
+ excludes?: string[];
54
+ }): TArrayDiffs2Result<T>[];
55
+ merge<P>(target: P[], options?: {
56
+ keys?: string[];
57
+ excludes?: string[];
58
+ }): (T | P | (T & P))[];
59
+ sum(selector?: (item: T, index: number) => number): number;
60
+ min(): T | undefined;
61
+ min<P extends number | string>(selector?: (item: T, index: number) => P): P | undefined;
62
+ max(): T | undefined;
63
+ max<P extends number | string>(selector?: (item: T, index: number) => P): P | undefined;
64
+ shuffle(): T[];
65
+ insert(index: number, ...items: T[]): this;
66
+ remove(item: T): this;
67
+ remove(selector: (item: T, index: number) => boolean): this;
68
+ clear(): this;
69
+ }
70
+ interface ReadonlyArray<T> {
71
+ single(predicate?: (item: T, index: number) => boolean): T | undefined;
72
+ first(predicate?: (item: T, index: number) => boolean): T | undefined;
73
+ filterAsync(predicate: (item: T, index: number) => Promise<boolean>): Promise<T[]>;
74
+ last(predicate?: (item: T, index: number) => boolean): T | undefined;
75
+ filterExists(): NonNullable<T>[];
76
+ ofType<N extends T>(type: Type<WrappedType<N>>): N[];
77
+ mapAsync<R>(selector: (item: T, index: number) => Promise<R>): Promise<R[]>;
78
+ mapMany(): T;
79
+ mapMany<R>(selector: (item: T, index: number) => R[]): R[];
80
+ mapManyAsync<R>(selector: (item: T, index: number) => Promise<R[]>): Promise<R[]>;
81
+ parallelAsync<R>(fn: (item: T, index: number) => Promise<R>): Promise<R[]>;
82
+ groupBy<K>(keySelector: (item: T, index: number) => K): {
83
+ key: K;
84
+ values: T[];
85
+ }[];
86
+ groupBy<K, V>(keySelector: (item: T, index: number) => K, valueSelector: (item: T, index: number) => V): {
87
+ key: K;
88
+ values: V[];
89
+ }[];
90
+ toMap<K>(keySelector: (item: T, index: number) => K): Map<K, T>;
91
+ toMap<K, V>(keySelector: (item: T, index: number) => K, valueSelector: (item: T, index: number) => V): Map<K, V>;
92
+ toMapAsync<K>(keySelector: (item: T, index: number) => Promise<K>): Promise<Map<K, T>>;
93
+ toMapAsync<K, V>(keySelector: (item: T, index: number) => Promise<K> | K, valueSelector: (item: T, index: number) => Promise<V> | V): Promise<Map<K, V>>;
94
+ toArrayMap<K, V>(keySelector: (item: T, index: number) => K, valueSelector: (item: T, index: number) => V): Map<K, V[]>;
95
+ toMapValues<K, V>(keySelector: (item: T, index: number) => K, valueSelector: (items: T[]) => V): Map<K, V>;
96
+ toObject(keySelector: (item: T, index: number) => string): Record<string, T>;
97
+ toObject<V>(keySelector: (item: T, index: number) => string, valueSelector: (item: T, index: number) => V): Record<string, V>;
98
+ toTree<K extends keyof T, P extends keyof T>(keyProp: K, parentKey: P): ITreeArray<T>[];
99
+ distinct(matchAddress?: boolean): T[];
100
+ orderBy(selector?: (item: T) => string | number | DateOnly | DateTime | Time | undefined): T[];
101
+ orderByDesc(selector?: (item: T) => string | number | DateOnly | DateTime | Time | undefined): T[];
102
+ diffs<P>(target: P[], options?: {
103
+ keys?: string[];
104
+ excludes?: string[];
105
+ }): TArrayDiffsResult<T, P>[];
106
+ oneWayDiffs<K extends keyof T>(orgItems: T[] | Map<T[K], T>, key: K, options?: {
107
+ includeSame?: boolean;
108
+ excludes?: string[];
109
+ }): TArrayDiffs2Result<T>[];
110
+ merge<P>(target: P[], options?: {
111
+ keys?: string[];
112
+ excludes?: string[];
113
+ }): (T | P | (T & P))[];
114
+ sum(selector?: (item: T, index: number) => number): number;
115
+ min(): T | undefined;
116
+ min<P extends number | string>(selector?: (item: T, index: number) => P): P | undefined;
117
+ max(): T | undefined;
118
+ max<P extends number | string>(selector?: (item: T, index: number) => P): P | undefined;
119
+ }
120
+ }
121
+ export type TArrayDiffsResult<T, P> = {
122
+ source: undefined;
123
+ target: P;
124
+ } | // INSERT
125
+ {
126
+ source: T;
127
+ target: undefined;
128
+ } | // DELETE
129
+ {
130
+ source: T;
131
+ target: P;
132
+ };
133
+ export type TArrayDiffs2Result<T> = {
134
+ type: "create";
135
+ item: T;
136
+ } | {
137
+ type: "update";
138
+ item: T;
139
+ orgItem: T;
140
+ } | {
141
+ type: "same";
142
+ item: T;
143
+ orgItem: T;
144
+ };
145
+ export type ITreeArray<T> = T & {
146
+ children: ITreeArray<T>[];
147
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArrayExtension.js","sourceRoot":"","sources":["../../../../../sd-core-common/src/extensions/ArrayExtension.ts"],"names":[],"mappings":"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"}