@simplysm/sd-cli 10.0.4 → 10.0.22
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.
- package/.eslintrc.cjs +1 -1
- package/dist/SdLinter.d.ts +5 -0
- package/dist/SdLinter.js.map +1 -0
- package/dist/SdLinter.mjs +37 -0
- package/dist/SdTsIncrementalBuilder.d.ts +16 -0
- package/dist/SdTsIncrementalBuilder.js.map +1 -0
- package/dist/SdTsIncrementalBuilder.mjs +54 -0
- package/dist/build-cluster.js.map +1 -1
- package/dist/build-cluster.mjs +124 -0
- package/dist/builders/SdCliClientBuilder.d.ts +13 -0
- package/dist/builders/SdCliClientBuilder.js.map +1 -0
- package/dist/builders/SdCliClientBuilder.mjs +167 -0
- package/dist/builders/SdCliJsLibLinter.d.ts +3 -7
- package/dist/builders/SdCliJsLibLinter.js.map +1 -1
- package/dist/builders/{SdCliJsLibLinter.js → SdCliJsLibLinter.mjs} +8 -17
- package/dist/builders/SdCliServerBuilder.d.ts +14 -0
- package/dist/builders/SdCliServerBuilder.js.map +1 -0
- package/dist/builders/SdCliServerBuilder.mjs +171 -0
- package/dist/builders/SdCliTsLibBuilder.d.ts +3 -10
- package/dist/builders/SdCliTsLibBuilder.js.map +1 -1
- package/dist/builders/SdCliTsLibBuilder.mjs +75 -0
- package/dist/commons.d.ts +28 -2
- package/dist/entry/SdCliLocalUpdate.d.ts +7 -0
- package/dist/entry/SdCliLocalUpdate.js.map +1 -0
- package/dist/entry/SdCliLocalUpdate.mjs +55 -0
- package/dist/entry/SdCliProject.d.ts +1 -0
- package/dist/entry/SdCliProject.js.map +1 -1
- package/dist/entry/{SdCliProject.js → SdCliProject.mjs} +94 -10
- package/dist/sd-cli.js.map +1 -1
- package/dist/{sd-cli.js → sd-cli.mjs} +16 -0
- package/dist/sd-core-common/src/decorators/NotifyPropertyChange.d.ts +20 -0
- package/dist/sd-core-common/src/decorators/NotifyPropertyChange.js.map +1 -0
- package/dist/sd-core-common/src/decorators/NotifyPropertyChange.mjs +12 -0
- package/dist/sd-core-common/src/decorators/PropertyGetSetDecoratorBase.d.ts +43 -0
- package/dist/sd-core-common/src/decorators/PropertyGetSetDecoratorBase.js.map +1 -0
- package/dist/sd-core-common/src/decorators/PropertyGetSetDecoratorBase.mjs +54 -0
- package/dist/sd-core-common/src/decorators/PropertyValidate.d.ts +16 -0
- package/dist/sd-core-common/src/decorators/PropertyValidate.js.map +1 -0
- package/dist/sd-core-common/src/decorators/PropertyValidate.mjs +26 -0
- package/dist/sd-core-common/src/decorators/decorator-return-types.d.ts +14 -0
- package/dist/sd-core-common/src/decorators/decorator-return-types.js.map +1 -0
- package/dist/sd-core-common/src/decorators/decorator-return-types.mjs +2 -0
- package/dist/sd-core-common/src/errors/ArgumentError.d.ts +10 -0
- package/dist/sd-core-common/src/errors/ArgumentError.js.map +1 -0
- package/dist/sd-core-common/src/errors/ArgumentError.mjs +13 -0
- package/dist/sd-core-common/src/errors/NeverEntryError.d.ts +10 -0
- package/dist/sd-core-common/src/errors/NeverEntryError.js.map +1 -0
- package/dist/sd-core-common/src/errors/NeverEntryError.mjs +13 -0
- package/dist/sd-core-common/src/errors/NotImplementError.d.ts +10 -0
- package/dist/sd-core-common/src/errors/NotImplementError.js.map +1 -0
- package/dist/sd-core-common/src/errors/NotImplementError.mjs +13 -0
- package/dist/sd-core-common/src/errors/SdError.d.ts +23 -0
- package/dist/sd-core-common/src/errors/SdError.js.map +1 -0
- package/dist/sd-core-common/src/errors/SdError.mjs +40 -0
- package/dist/sd-core-common/src/errors/TimeoutError.d.ts +11 -0
- package/dist/sd-core-common/src/errors/TimeoutError.js.map +1 -0
- package/dist/sd-core-common/src/errors/TimeoutError.mjs +16 -0
- package/dist/sd-core-common/src/extensions/ArrayExtension.d.ts +147 -0
- package/dist/sd-core-common/src/extensions/ArrayExtension.js.map +1 -0
- package/dist/sd-core-common/src/extensions/ArrayExtension.mjs +448 -0
- package/dist/sd-core-common/src/extensions/MapExtension.d.ts +4 -0
- package/dist/sd-core-common/src/extensions/MapExtension.js.map +1 -0
- package/dist/sd-core-common/src/extensions/MapExtension.mjs +15 -0
- package/dist/sd-core-common/src/extensions/SetExtension.d.ts +3 -0
- package/dist/sd-core-common/src/extensions/SetExtension.js.map +1 -0
- package/dist/sd-core-common/src/extensions/SetExtension.mjs +10 -0
- package/dist/sd-core-common/src/index.d.ts +32 -0
- package/dist/sd-core-common/src/index.js.map +1 -0
- package/dist/sd-core-common/src/index.mjs +33 -0
- package/dist/sd-core-common/src/types/DateOnly.d.ts +135 -0
- package/dist/sd-core-common/src/types/DateOnly.js.map +1 -0
- package/dist/sd-core-common/src/types/DateOnly.mjs +220 -0
- package/dist/sd-core-common/src/types/DateTime.d.ts +42 -0
- package/dist/sd-core-common/src/types/DateTime.js.map +1 -0
- package/dist/sd-core-common/src/types/DateTime.mjs +156 -0
- package/dist/sd-core-common/src/types/DeepPartial.d.ts +3 -0
- package/dist/sd-core-common/src/types/DeepPartial.js.map +1 -0
- package/dist/sd-core-common/src/types/DeepPartial.mjs +2 -0
- package/dist/sd-core-common/src/types/ObjectSet.d.ts +4 -0
- package/dist/sd-core-common/src/types/ObjectSet.js.map +1 -0
- package/dist/sd-core-common/src/types/ObjectSet.mjs +18 -0
- package/dist/sd-core-common/src/types/Time.d.ts +27 -0
- package/dist/sd-core-common/src/types/Time.js.map +1 -0
- package/dist/sd-core-common/src/types/Time.mjs +108 -0
- package/dist/sd-core-common/src/types/Type.d.ts +7 -0
- package/dist/sd-core-common/src/types/Type.js.map +1 -0
- package/dist/sd-core-common/src/types/Type.mjs +2 -0
- package/dist/sd-core-common/src/types/UnwrappedType.d.ts +1 -0
- package/dist/sd-core-common/src/types/UnwrappedType.js.map +1 -0
- package/dist/sd-core-common/src/types/UnwrappedType.mjs +2 -0
- package/dist/sd-core-common/src/types/Uuid.d.ts +8 -0
- package/dist/sd-core-common/src/types/Uuid.js.map +1 -0
- package/dist/sd-core-common/src/types/Uuid.mjs +26 -0
- package/dist/sd-core-common/src/types/WrappedType.d.ts +1 -0
- package/dist/sd-core-common/src/types/WrappedType.js.map +1 -0
- package/dist/sd-core-common/src/types/WrappedType.mjs +2 -0
- package/dist/sd-core-common/src/utils/DateTimeFormatUtil.d.ts +12 -0
- package/dist/sd-core-common/src/utils/DateTimeFormatUtil.js.map +1 -0
- package/dist/sd-core-common/src/utils/DateTimeFormatUtil.mjs +67 -0
- package/dist/sd-core-common/src/utils/FunctionQueue.d.ts +8 -0
- package/dist/sd-core-common/src/utils/FunctionQueue.js.map +1 -0
- package/dist/sd-core-common/src/utils/FunctionQueue.mjs +46 -0
- package/dist/sd-core-common/src/utils/FunctionUtil.d.ts +6 -0
- package/dist/sd-core-common/src/utils/FunctionUtil.js.map +1 -0
- package/dist/sd-core-common/src/utils/FunctionUtil.mjs +31 -0
- package/dist/sd-core-common/src/utils/JsonConvert.d.ts +8 -0
- package/dist/sd-core-common/src/utils/JsonConvert.js.map +1 -0
- package/dist/sd-core-common/src/utils/JsonConvert.mjs +78 -0
- package/dist/sd-core-common/src/utils/MathUtil.d.ts +3 -0
- package/dist/sd-core-common/src/utils/MathUtil.js.map +1 -0
- package/dist/sd-core-common/src/utils/MathUtil.mjs +6 -0
- package/dist/sd-core-common/src/utils/NumberUtil.d.ts +6 -0
- package/dist/sd-core-common/src/utils/NumberUtil.js.map +1 -0
- package/dist/sd-core-common/src/utils/NumberUtil.mjs +32 -0
- package/dist/sd-core-common/src/utils/ObjectUtil.d.ts +80 -0
- package/dist/sd-core-common/src/utils/ObjectUtil.js.map +1 -0
- package/dist/sd-core-common/src/utils/ObjectUtil.mjs +452 -0
- package/dist/sd-core-common/src/utils/SdSyncEventEmitter.d.ts +6 -0
- package/dist/sd-core-common/src/utils/SdSyncEventEmitter.js.map +1 -0
- package/dist/sd-core-common/src/utils/SdSyncEventEmitter.mjs +27 -0
- package/dist/sd-core-common/src/utils/StringUtil.d.ts +8 -0
- package/dist/sd-core-common/src/utils/StringUtil.js.map +1 -0
- package/dist/sd-core-common/src/utils/StringUtil.mjs +77 -0
- package/dist/sd-core-common/src/utils/Wait.d.ts +4 -0
- package/dist/sd-core-common/src/utils/Wait.js.map +1 -0
- package/dist/sd-core-common/src/utils/Wait.mjs +23 -0
- package/dist/sd-core-node/src/index.d.ts +6 -0
- package/dist/sd-core-node/src/index.js.map +1 -0
- package/dist/sd-core-node/src/index.mjs +7 -0
- package/dist/sd-core-node/src/utils/FsUtil.d.ts +44 -0
- package/dist/sd-core-node/src/utils/FsUtil.js.map +1 -0
- package/dist/sd-core-node/src/utils/FsUtil.mjs +493 -0
- package/dist/sd-core-node/src/utils/Logger.d.ts +91 -0
- package/dist/sd-core-node/src/utils/Logger.js.map +1 -0
- package/dist/sd-core-node/src/utils/Logger.mjs +185 -0
- package/dist/sd-core-node/src/utils/PathUtil.d.ts +6 -0
- package/dist/sd-core-node/src/utils/PathUtil.js.map +1 -0
- package/dist/sd-core-node/src/utils/PathUtil.mjs +24 -0
- package/dist/sd-core-node/src/utils/SdFsWatcher.d.ts +15 -0
- package/dist/sd-core-node/src/utils/SdFsWatcher.js.map +1 -0
- package/dist/sd-core-node/src/utils/SdFsWatcher.mjs +43 -0
- package/dist/sd-core-node/src/utils/SdProcess.d.ts +5 -0
- package/dist/sd-core-node/src/utils/SdProcess.js.map +1 -0
- package/dist/sd-core-node/src/utils/SdProcess.mjs +36 -0
- package/dist/sd-orm-common/src/CaseQueryHelper.d.ts +12 -0
- package/dist/sd-orm-common/src/CaseQueryHelper.js.map +1 -0
- package/dist/sd-orm-common/src/CaseQueryHelper.mjs +19 -0
- package/dist/sd-orm-common/src/CaseWhenQueryHelper.d.ts +12 -0
- package/dist/sd-orm-common/src/CaseWhenQueryHelper.js.map +1 -0
- package/dist/sd-orm-common/src/CaseWhenQueryHelper.mjs +20 -0
- package/dist/sd-orm-common/src/DbContext.d.ts +81 -0
- package/dist/sd-orm-common/src/DbContext.js.map +1 -0
- package/dist/sd-orm-common/src/DbContext.mjs +635 -0
- package/dist/sd-orm-common/src/IDbConnection.d.ts +15 -0
- package/dist/sd-orm-common/src/IDbConnection.js.map +1 -0
- package/dist/sd-orm-common/src/IDbConnection.mjs +2 -0
- package/dist/sd-orm-common/src/IDbContextExecutor.d.ts +17 -0
- package/dist/sd-orm-common/src/IDbContextExecutor.js.map +1 -0
- package/dist/sd-orm-common/src/IDbContextExecutor.mjs +2 -0
- package/dist/sd-orm-common/src/IDbMigration.d.ts +4 -0
- package/dist/sd-orm-common/src/IDbMigration.js.map +1 -0
- package/dist/sd-orm-common/src/IDbMigration.mjs +2 -0
- package/dist/sd-orm-common/src/QueryBuilder.d.ts +48 -0
- package/dist/sd-orm-common/src/QueryBuilder.js.map +1 -0
- package/dist/sd-orm-common/src/QueryBuilder.mjs +1022 -0
- package/dist/sd-orm-common/src/QueryHelper.d.ts +75 -0
- package/dist/sd-orm-common/src/QueryHelper.js.map +1 -0
- package/dist/sd-orm-common/src/QueryHelper.mjs +627 -0
- package/dist/sd-orm-common/src/QueryUnit.d.ts +10 -0
- package/dist/sd-orm-common/src/QueryUnit.js.map +1 -0
- package/dist/sd-orm-common/src/QueryUnit.mjs +16 -0
- package/dist/sd-orm-common/src/Queryable.d.ts +105 -0
- package/dist/sd-orm-common/src/Queryable.js.map +1 -0
- package/dist/sd-orm-common/src/Queryable.mjs +1375 -0
- package/dist/sd-orm-common/src/SdOrmDataType.d.ts +21 -0
- package/dist/sd-orm-common/src/SdOrmDataType.js.map +1 -0
- package/dist/sd-orm-common/src/SdOrmDataType.mjs +2 -0
- package/dist/sd-orm-common/src/commons.d.ts +400 -0
- package/dist/sd-orm-common/src/commons.js.map +1 -0
- package/dist/sd-orm-common/src/commons.mjs +8 -0
- package/dist/sd-orm-common/src/decorators.d.ts +29 -0
- package/dist/sd-orm-common/src/decorators.js.map +1 -0
- package/dist/sd-orm-common/src/decorators.mjs +89 -0
- package/dist/sd-orm-common/src/index.d.ts +17 -0
- package/dist/sd-orm-common/src/index.js.map +1 -0
- package/dist/sd-orm-common/src/index.mjs +18 -0
- package/dist/sd-orm-common/src/models/SystemMigration.d.ts +3 -0
- package/dist/sd-orm-common/src/models/SystemMigration.js.map +1 -0
- package/dist/sd-orm-common/src/models/SystemMigration.mjs +13 -0
- package/dist/sd-orm-common/src/utils/DbDefinitionUtil.d.ts +14 -0
- package/dist/sd-orm-common/src/utils/DbDefinitionUtil.js.map +1 -0
- package/dist/sd-orm-common/src/utils/DbDefinitionUtil.mjs +66 -0
- package/dist/sd-orm-common/src/utils/SdOrmUtil.d.ts +8 -0
- package/dist/sd-orm-common/src/utils/SdOrmUtil.js.map +1 -0
- package/dist/sd-orm-common/src/utils/SdOrmUtil.mjs +248 -0
- package/dist/sd-orm-node/src/DbConnectionFactory.d.ts +4 -0
- package/dist/sd-orm-node/src/DbConnectionFactory.js.map +1 -0
- package/dist/sd-orm-node/src/DbConnectionFactory.mjs +17 -0
- package/dist/sd-orm-node/src/NodeDbContextExecutor.d.ts +19 -0
- package/dist/sd-orm-node/src/NodeDbContextExecutor.js.map +1 -0
- package/dist/sd-orm-node/src/NodeDbContextExecutor.mjs +71 -0
- package/dist/sd-orm-node/src/SdOrm.d.ts +10 -0
- package/dist/sd-orm-node/src/SdOrm.js.map +1 -0
- package/dist/sd-orm-node/src/SdOrm.mjs +25 -0
- package/dist/sd-orm-node/src/index.d.ts +4 -0
- package/dist/sd-orm-node/src/index.js.map +1 -0
- package/dist/sd-orm-node/src/index.mjs +5 -0
- package/dist/sd-orm-node-mssql/src/MssqlDbConnection.d.ts +25 -0
- package/dist/sd-orm-node-mssql/src/MssqlDbConnection.js.map +1 -0
- package/dist/sd-orm-node-mssql/src/MssqlDbConnection.mjs +321 -0
- package/dist/sd-orm-node-mssql/src/index.d.ts +2 -0
- package/dist/sd-orm-node-mssql/src/index.js.map +1 -0
- package/dist/sd-orm-node-mssql/src/index.mjs +3 -0
- package/dist/sd-orm-node-mysql/src/MysqlDbConnection.d.ts +22 -0
- package/dist/sd-orm-node-mysql/src/MysqlDbConnection.js.map +1 -0
- package/dist/sd-orm-node-mysql/src/MysqlDbConnection.mjs +200 -0
- package/dist/sd-orm-node-mysql/src/index.d.ts +2 -0
- package/dist/sd-orm-node-mysql/src/index.js.map +1 -0
- package/dist/sd-orm-node-mysql/src/index.mjs +3 -0
- package/dist/sd-orm-node-sqlite/src/SqliteDbConnection.d.ts +22 -0
- package/dist/sd-orm-node-sqlite/src/SqliteDbConnection.js.map +1 -0
- package/dist/sd-orm-node-sqlite/src/SqliteDbConnection.mjs +172 -0
- package/dist/sd-orm-node-sqlite/src/index.d.ts +2 -0
- package/dist/sd-orm-node-sqlite/src/index.js.map +1 -0
- package/dist/sd-orm-node-sqlite/src/index.mjs +3 -0
- package/dist/sd-service-common/src/commons-orm.d.ts +4 -0
- package/dist/sd-service-common/src/commons-orm.js.map +1 -0
- package/dist/sd-service-common/src/commons-orm.mjs +2 -0
- package/dist/sd-service-common/src/commons-smtp.d.ts +29 -0
- package/dist/sd-service-common/src/commons-smtp.js.map +1 -0
- package/dist/sd-service-common/src/commons-smtp.mjs +2 -0
- package/dist/sd-service-common/src/commons.d.ts +57 -0
- package/dist/sd-service-common/src/commons.js.map +1 -0
- package/dist/sd-service-common/src/commons.mjs +3 -0
- package/dist/sd-service-common/src/index.d.ts +3 -0
- package/dist/sd-service-common/src/index.js.map +1 -0
- package/dist/sd-service-common/src/index.mjs +4 -0
- package/dist/sd-service-server/src/ApiServiceError.d.ts +12 -0
- package/dist/sd-service-server/src/ApiServiceError.js.map +1 -0
- package/dist/sd-service-server/src/ApiServiceError.mjs +15 -0
- package/dist/sd-service-server/src/SdServiceServer.d.ts +39 -0
- package/dist/sd-service-server/src/SdServiceServer.js.map +1 -0
- package/dist/sd-service-server/src/SdServiceServer.mjs +513 -0
- package/dist/sd-service-server/src/commons.d.ts +23 -0
- package/dist/sd-service-server/src/commons.js.map +1 -0
- package/dist/sd-service-server/src/commons.mjs +3 -0
- package/dist/sd-service-server/src/index.d.ts +8 -0
- package/dist/sd-service-server/src/index.js.map +1 -0
- package/dist/sd-service-server/src/index.mjs +9 -0
- package/dist/sd-service-server/src/services/SdAutoUpdateService.d.ts +4 -0
- package/dist/sd-service-server/src/services/SdAutoUpdateService.js.map +1 -0
- package/dist/sd-service-server/src/services/SdAutoUpdateService.mjs +20 -0
- package/dist/sd-service-server/src/services/SdCryptoService.d.ts +7 -0
- package/dist/sd-service-server/src/services/SdCryptoService.js.map +1 -0
- package/dist/sd-service-server/src/services/SdCryptoService.mjs +39 -0
- package/dist/sd-service-server/src/services/SdOrmService.d.ts +22 -0
- package/dist/sd-service-server/src/services/SdOrmService.js.map +1 -0
- package/dist/sd-service-server/src/services/SdOrmService.mjs +115 -0
- package/dist/sd-service-server/src/services/SdSmtpClientService.d.ts +6 -0
- package/dist/sd-service-server/src/services/SdSmtpClientService.js.map +1 -0
- package/dist/sd-service-server/src/services/SdSmtpClientService.mjs +44 -0
- package/dist/sd-service-server/src/utils/SdServiceServerConfigUtil.d.ts +4 -0
- package/dist/sd-service-server/src/utils/SdServiceServerConfigUtil.js.map +1 -0
- package/dist/sd-service-server/src/utils/SdServiceServerConfigUtil.mjs +36 -0
- package/dist/server-worker.d.ts +1 -0
- package/dist/server-worker.js.map +1 -0
- package/dist/server-worker.mjs +36 -0
- package/package.json +12 -5
- package/src/SdLinter.ts +41 -0
- package/src/SdTsIncrementalBuilder.ts +75 -0
- package/src/build-cluster.ts +69 -18
- package/src/builders/SdCliClientBuilder.ts +189 -0
- package/src/builders/SdCliJsLibLinter.ts +11 -23
- package/src/builders/SdCliServerBuilder.ts +191 -0
- package/src/builders/SdCliTsLibBuilder.ts +33 -202
- package/src/commons.ts +33 -2
- package/src/entry/SdCliLocalUpdate.ts +70 -0
- package/src/entry/SdCliProject.ts +133 -17
- package/src/sd-cli.ts +20 -0
- package/src/server-worker.ts +45 -0
- package/tsconfig.json +1 -10
- package/dist/build-cluster.js +0 -75
- package/dist/builders/SdCliTsLibBuilder.js +0 -205
- /package/dist/{commons.js → commons.mjs} +0 -0
- /package/dist/utils/{SdCliBuildResultUtil.js → SdCliBuildResultUtil.mjs} +0 -0
- /package/dist/utils/{SdCliConfigUtil.js → SdCliConfigUtil.mjs} +0 -0
|
@@ -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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"}
|
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
import { NeverEntryError } from "../errors/NeverEntryError";
|
|
2
|
+
import { ObjectUtil } from "../utils/ObjectUtil";
|
|
3
|
+
import { DateOnly } from "../types/DateOnly";
|
|
4
|
+
import { DateTime } from "../types/DateTime";
|
|
5
|
+
import { Time } from "../types/Time";
|
|
6
|
+
((prototype) => {
|
|
7
|
+
prototype.single = function (predicate) {
|
|
8
|
+
const arr = predicate !== undefined ? this.filter(predicate) : this;
|
|
9
|
+
if (arr.length > 1) {
|
|
10
|
+
throw new Error(`복수의 결과물이 있습니다. (${arr.length}개)`);
|
|
11
|
+
}
|
|
12
|
+
return arr[0];
|
|
13
|
+
};
|
|
14
|
+
prototype.first = function (predicate) {
|
|
15
|
+
return predicate !== undefined ? this.find(predicate) : this[0];
|
|
16
|
+
};
|
|
17
|
+
prototype.filterAsync = async function (predicate) {
|
|
18
|
+
const arr = [];
|
|
19
|
+
for (let i = 0; i < this.length; i++) {
|
|
20
|
+
if (await predicate(this[i], i)) {
|
|
21
|
+
arr.push(this[i]);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return arr;
|
|
25
|
+
};
|
|
26
|
+
prototype.last = function (predicate) {
|
|
27
|
+
if (predicate !== undefined) {
|
|
28
|
+
for (let i = this.length - 1; i >= 0; i--) {
|
|
29
|
+
if (predicate(this[i], i)) {
|
|
30
|
+
return this[i];
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
return this[this.length - 1];
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
prototype.filterExists = function () {
|
|
40
|
+
return this.filter((item) => item !== undefined);
|
|
41
|
+
};
|
|
42
|
+
prototype.ofType = function (type) {
|
|
43
|
+
return this.filter((item) => item instanceof type || item?.constructor === type);
|
|
44
|
+
};
|
|
45
|
+
prototype.mapAsync = async function (selector) {
|
|
46
|
+
const result = [];
|
|
47
|
+
for (let i = 0; i < this.length; i++) {
|
|
48
|
+
result.push(await selector(this[i], i));
|
|
49
|
+
}
|
|
50
|
+
return result;
|
|
51
|
+
};
|
|
52
|
+
prototype.mapMany = function (selector) {
|
|
53
|
+
const arr = selector ? this.map(selector) : this;
|
|
54
|
+
return arr.length > 0 ? arr.reduce((p, n) => (p ?? []).concat(n ?? [])) : arr;
|
|
55
|
+
};
|
|
56
|
+
prototype.mapManyAsync = async function (selector) {
|
|
57
|
+
const arr = selector !== undefined ? await this.mapAsync(selector) : this;
|
|
58
|
+
return arr.mapMany();
|
|
59
|
+
};
|
|
60
|
+
prototype.parallelAsync = async function (fn) {
|
|
61
|
+
return await Promise.all(this.map(async (item, index) => await fn(item, index)));
|
|
62
|
+
};
|
|
63
|
+
prototype.groupBy = function (keySelector, valueSelector) {
|
|
64
|
+
const result = [];
|
|
65
|
+
for (let i = 0; i < this.length; i++) {
|
|
66
|
+
const keyObj = keySelector(this[i], i);
|
|
67
|
+
const valueObj = valueSelector !== undefined ? valueSelector(this[i], i) : this[i];
|
|
68
|
+
const existsRecord = result.single((item) => ObjectUtil.equal(item.key, keyObj));
|
|
69
|
+
if (existsRecord !== undefined) {
|
|
70
|
+
existsRecord.values.push(valueObj);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
result.push({ key: keyObj, values: [valueObj] });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return result;
|
|
77
|
+
};
|
|
78
|
+
prototype.toMap = function (keySelector, valueSelector) {
|
|
79
|
+
const result = new Map();
|
|
80
|
+
for (let i = 0; i < this.length; i++) {
|
|
81
|
+
const item = this[i];
|
|
82
|
+
const keyObj = keySelector(item, i);
|
|
83
|
+
const valueObj = valueSelector !== undefined ? valueSelector(item, i) : item;
|
|
84
|
+
if (result.has(keyObj)) {
|
|
85
|
+
throw new Error(`키가 중복되었습니다. (중복된키: ${JSON.stringify(keyObj)})`);
|
|
86
|
+
}
|
|
87
|
+
result.set(keyObj, valueObj);
|
|
88
|
+
}
|
|
89
|
+
return result;
|
|
90
|
+
};
|
|
91
|
+
prototype.toMapAsync = async function (keySelector, valueSelector) {
|
|
92
|
+
const result = new Map();
|
|
93
|
+
for (let i = 0; i < this.length; i++) {
|
|
94
|
+
const item = this[i];
|
|
95
|
+
const keyObj = await keySelector(item, i);
|
|
96
|
+
const valueObj = valueSelector !== undefined ? await valueSelector(item, i) : item;
|
|
97
|
+
if (result.has(keyObj)) {
|
|
98
|
+
throw new Error(`키가 중복되었습니다. (중복된키: ${JSON.stringify(keyObj)})`);
|
|
99
|
+
}
|
|
100
|
+
result.set(keyObj, valueObj);
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
103
|
+
};
|
|
104
|
+
prototype.toArrayMap = function (keySelector, valueSelector) {
|
|
105
|
+
const result = new Map();
|
|
106
|
+
for (let i = 0; i < this.length; i++) {
|
|
107
|
+
const item = this[i];
|
|
108
|
+
const keyObj = keySelector(item, i);
|
|
109
|
+
const valueObj = valueSelector !== undefined ? valueSelector(item, i) : item;
|
|
110
|
+
const arr = result.getOrCreate(keyObj, []);
|
|
111
|
+
arr.push(valueObj);
|
|
112
|
+
}
|
|
113
|
+
return result;
|
|
114
|
+
};
|
|
115
|
+
prototype.toMapValues = function (keySelector, valueSelector) {
|
|
116
|
+
const itemsMap = new Map();
|
|
117
|
+
for (let i = 0; i < this.length; i++) {
|
|
118
|
+
const item = this[i];
|
|
119
|
+
const keyObj = keySelector(item, i);
|
|
120
|
+
const arr = itemsMap.getOrCreate(keyObj, []);
|
|
121
|
+
arr.push(item);
|
|
122
|
+
}
|
|
123
|
+
const result = new Map();
|
|
124
|
+
for (const key of itemsMap.keys()) {
|
|
125
|
+
result.set(key, valueSelector(itemsMap.get(key)));
|
|
126
|
+
}
|
|
127
|
+
return result;
|
|
128
|
+
};
|
|
129
|
+
prototype.toObject = function (keySelector, valueSelector) {
|
|
130
|
+
const result = {};
|
|
131
|
+
for (let i = 0; i < this.length; i++) {
|
|
132
|
+
const item = this[i];
|
|
133
|
+
const key = keySelector(item, i);
|
|
134
|
+
const valueObj = valueSelector !== undefined ? valueSelector(item, i) : item;
|
|
135
|
+
if (result[key] !== undefined) {
|
|
136
|
+
throw new Error(`키가 중복되었습니다. (중복된키: ${key})`);
|
|
137
|
+
}
|
|
138
|
+
result[key] = valueObj;
|
|
139
|
+
}
|
|
140
|
+
return result;
|
|
141
|
+
};
|
|
142
|
+
prototype.toTree = function (key, parentKey) {
|
|
143
|
+
const fn = (items) => {
|
|
144
|
+
return items.map((item) => ({
|
|
145
|
+
...ObjectUtil.clone(item),
|
|
146
|
+
// @ts-expect-error
|
|
147
|
+
children: fn(this.filter((item1) => item1[parentKey] === item[key]))
|
|
148
|
+
}));
|
|
149
|
+
};
|
|
150
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
151
|
+
const rootItems = this.filter((item1) => item1[parentKey] == null);
|
|
152
|
+
return fn(rootItems);
|
|
153
|
+
};
|
|
154
|
+
prototype.distinct = function (matchAddress) {
|
|
155
|
+
const result = [];
|
|
156
|
+
for (const item of this) {
|
|
157
|
+
if (!result.some((item1) => (matchAddress === true ? item1 === item : ObjectUtil.equal(item1, item)))) {
|
|
158
|
+
result.push(item);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return result;
|
|
162
|
+
};
|
|
163
|
+
prototype.distinctThis = function (matchAddress) {
|
|
164
|
+
const distinctArray = this.distinct(matchAddress);
|
|
165
|
+
this.clear().push(...distinctArray);
|
|
166
|
+
return this;
|
|
167
|
+
};
|
|
168
|
+
prototype.orderBy = function (selector) {
|
|
169
|
+
return this.concat().sort((p, n) => {
|
|
170
|
+
const pn = selector !== undefined ? selector(n) : n;
|
|
171
|
+
const pp = selector !== undefined ? selector(p) : p;
|
|
172
|
+
const cpn = pn instanceof DateOnly ? pn.tick
|
|
173
|
+
: pn instanceof DateTime ? pn.tick
|
|
174
|
+
: pn instanceof Time ? pn.tick
|
|
175
|
+
: pn;
|
|
176
|
+
const cpp = pp instanceof DateOnly ? pp.tick
|
|
177
|
+
: pp instanceof DateTime ? pp.tick
|
|
178
|
+
: pp instanceof Time ? pp.tick
|
|
179
|
+
: pp;
|
|
180
|
+
if (cpn === cpp) {
|
|
181
|
+
return 0;
|
|
182
|
+
}
|
|
183
|
+
else if (typeof cpn === "string" && typeof cpp === "string") {
|
|
184
|
+
return cpp.localeCompare(cpn);
|
|
185
|
+
}
|
|
186
|
+
else if (typeof cpn === "number" && typeof cpp === "number") {
|
|
187
|
+
return (cpn > cpp ? -1 : cpn < cpp ? 1 : 0);
|
|
188
|
+
}
|
|
189
|
+
else if (typeof cpn === "boolean" && typeof cpp === "boolean") {
|
|
190
|
+
return cpn === cpp ? 0 : cpn ? -1 : 1;
|
|
191
|
+
}
|
|
192
|
+
else if (typeof cpp === "undefined") {
|
|
193
|
+
return -1;
|
|
194
|
+
}
|
|
195
|
+
else if (typeof cpn === "undefined") {
|
|
196
|
+
return 1;
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
throw new Error("orderBy를 사용할 수 없는 타입입니다.");
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
};
|
|
203
|
+
prototype.orderByThis = function (selector) {
|
|
204
|
+
return this.sort((p, n) => {
|
|
205
|
+
const pn = selector !== undefined ? selector(n) : n;
|
|
206
|
+
const pp = selector !== undefined ? selector(p) : p;
|
|
207
|
+
const cpn = pn instanceof DateOnly ? pn.tick
|
|
208
|
+
: pn instanceof DateTime ? pn.tick
|
|
209
|
+
: pn instanceof Time ? pn.tick
|
|
210
|
+
: pn;
|
|
211
|
+
const cpp = pp instanceof DateOnly ? pp.tick
|
|
212
|
+
: pp instanceof DateTime ? pp.tick
|
|
213
|
+
: pp instanceof Time ? pp.tick
|
|
214
|
+
: pp;
|
|
215
|
+
if (cpn === cpp) {
|
|
216
|
+
return 0;
|
|
217
|
+
}
|
|
218
|
+
else if (typeof cpn === "string" && typeof cpp === "string") {
|
|
219
|
+
return cpp.localeCompare(cpn);
|
|
220
|
+
}
|
|
221
|
+
else if (typeof cpn === "number" && typeof cpp === "number") {
|
|
222
|
+
return (cpn > cpp ? -1 : cpn < cpp ? 1 : 0);
|
|
223
|
+
}
|
|
224
|
+
else if (typeof cpn === "boolean" && typeof cpp === "boolean") {
|
|
225
|
+
return cpn === cpp ? 0 : cpn ? -1 : 1;
|
|
226
|
+
}
|
|
227
|
+
else if (typeof cpp === "undefined") {
|
|
228
|
+
return -1;
|
|
229
|
+
}
|
|
230
|
+
else if (typeof cpn === "undefined") {
|
|
231
|
+
return 1;
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
throw new Error("orderBy를 사용할 수 없는 타입입니다.");
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
};
|
|
238
|
+
prototype.orderByDesc = function (selector) {
|
|
239
|
+
return this.concat().sort((p, n) => {
|
|
240
|
+
const pn = selector !== undefined ? selector(n) : n;
|
|
241
|
+
const pp = selector !== undefined ? selector(p) : p;
|
|
242
|
+
const cpn = pn instanceof DateOnly ? pn.tick
|
|
243
|
+
: pn instanceof DateTime ? pn.tick
|
|
244
|
+
: pn instanceof Time ? pn.tick
|
|
245
|
+
: pn;
|
|
246
|
+
const cpp = pp instanceof DateOnly ? pp.tick
|
|
247
|
+
: pp instanceof DateTime ? pp.tick
|
|
248
|
+
: pp instanceof Time ? pp.tick
|
|
249
|
+
: pp;
|
|
250
|
+
if (cpn === cpp) {
|
|
251
|
+
return 0;
|
|
252
|
+
}
|
|
253
|
+
else if (typeof cpn === "string" && typeof cpp === "string") {
|
|
254
|
+
return cpn.localeCompare(cpp);
|
|
255
|
+
}
|
|
256
|
+
else if (typeof cpn === "number" && typeof cpp === "number") {
|
|
257
|
+
return (cpn < cpp ? -1 : cpn > cpp ? 1 : 0);
|
|
258
|
+
}
|
|
259
|
+
else if (typeof cpn === "boolean" && typeof cpp === "boolean") {
|
|
260
|
+
return cpn === cpp ? 0 : cpn ? 1 : -1;
|
|
261
|
+
}
|
|
262
|
+
else if (typeof cpp === "undefined") {
|
|
263
|
+
return 1;
|
|
264
|
+
}
|
|
265
|
+
else if (typeof cpn === "undefined") {
|
|
266
|
+
return -1;
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
throw new Error("orderBy를 사용할 수 없는 타입입니다.");
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
};
|
|
273
|
+
prototype.orderByDescThis = function (selector) {
|
|
274
|
+
return this.sort((p, n) => {
|
|
275
|
+
const pn = selector !== undefined ? selector(n) : n;
|
|
276
|
+
const pp = selector !== undefined ? selector(p) : p;
|
|
277
|
+
const cpn = pn instanceof DateOnly ? pn.tick
|
|
278
|
+
: pn instanceof DateTime ? pn.tick
|
|
279
|
+
: pn instanceof Time ? pn.tick
|
|
280
|
+
: pn;
|
|
281
|
+
const cpp = pp instanceof DateOnly ? pp.tick
|
|
282
|
+
: pp instanceof DateTime ? pp.tick
|
|
283
|
+
: pp instanceof Time ? pp.tick
|
|
284
|
+
: pp;
|
|
285
|
+
if (cpn === cpp) {
|
|
286
|
+
return 0;
|
|
287
|
+
}
|
|
288
|
+
else if (typeof cpn === "string" && typeof cpp === "string") {
|
|
289
|
+
return cpn.localeCompare(cpp);
|
|
290
|
+
}
|
|
291
|
+
else if (typeof cpn === "number" && typeof cpp === "number") {
|
|
292
|
+
return (cpn < cpp ? -1 : cpn > cpp ? 1 : 0);
|
|
293
|
+
}
|
|
294
|
+
else if (typeof cpn === "boolean" && typeof cpp === "boolean") {
|
|
295
|
+
return cpn === cpp ? 0 : cpn ? 1 : -1;
|
|
296
|
+
}
|
|
297
|
+
else if (typeof cpp === "undefined") {
|
|
298
|
+
return 1;
|
|
299
|
+
}
|
|
300
|
+
else if (typeof cpn === "undefined") {
|
|
301
|
+
return -1;
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
throw new Error("orderBy를 사용할 수 없는 타입입니다.");
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
};
|
|
308
|
+
prototype.diffs = function (target, options) {
|
|
309
|
+
const result = [];
|
|
310
|
+
const uncheckedTarget = [].concat(target); // source 비교시, 수정으로 판단되거나 변경사항이 없는것으로 판단된 target 은 제외시킴
|
|
311
|
+
for (const sourceItem of this) {
|
|
312
|
+
//target 에 동일한 항목이 없을 때
|
|
313
|
+
const sameTarget = uncheckedTarget.single((targetItem) => (ObjectUtil.equal(targetItem, sourceItem, options?.excludes !== undefined ? { excludes: options.excludes } : undefined)));
|
|
314
|
+
if (sameTarget === undefined) {
|
|
315
|
+
//키 설정시
|
|
316
|
+
if (options?.keys !== undefined) {
|
|
317
|
+
//target 에 동일한 항목은 아니지만, key 가 같은게 있는 경우: source => target 수정된 항목
|
|
318
|
+
const sameKeyTargetItem = uncheckedTarget.single((targetItem) => ObjectUtil.equal(targetItem, sourceItem, { includes: options.keys }));
|
|
319
|
+
if (sameKeyTargetItem !== undefined) {
|
|
320
|
+
result.push({ source: sourceItem, target: sameKeyTargetItem });
|
|
321
|
+
uncheckedTarget.remove(sameKeyTargetItem);
|
|
322
|
+
continue;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
//기타: source 에서 삭제된 항목
|
|
326
|
+
result.push({ source: sourceItem, target: undefined });
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
uncheckedTarget.remove(sameTarget);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
for (const uncheckedTargetItem of uncheckedTarget) {
|
|
333
|
+
//target 에 추가된 항목
|
|
334
|
+
result.push({ source: undefined, target: uncheckedTargetItem });
|
|
335
|
+
}
|
|
336
|
+
return result;
|
|
337
|
+
};
|
|
338
|
+
prototype.oneWayDiffs = function (orgItems, key, options) {
|
|
339
|
+
const orgItemMap = orgItems instanceof Map ? orgItems : orgItems.toMap((orgItem) => orgItem[key]);
|
|
340
|
+
const includeSame = options?.includeSame ?? false;
|
|
341
|
+
const diffs = [];
|
|
342
|
+
for (const item of this) {
|
|
343
|
+
if (item[key] === undefined) {
|
|
344
|
+
diffs.push({ type: "create", item });
|
|
345
|
+
continue;
|
|
346
|
+
}
|
|
347
|
+
const orgItem = orgItemMap.get(item[key]);
|
|
348
|
+
if (!orgItem) {
|
|
349
|
+
diffs.push({ type: "create", item });
|
|
350
|
+
continue;
|
|
351
|
+
}
|
|
352
|
+
if (ObjectUtil.equal(orgItem, item, { excludes: options?.excludes })) {
|
|
353
|
+
if (includeSame) {
|
|
354
|
+
diffs.push({ type: "same", item, orgItem });
|
|
355
|
+
}
|
|
356
|
+
continue;
|
|
357
|
+
}
|
|
358
|
+
diffs.push({ type: "update", item, orgItem });
|
|
359
|
+
}
|
|
360
|
+
return diffs;
|
|
361
|
+
};
|
|
362
|
+
prototype.merge = function (target, options) {
|
|
363
|
+
const diffs = this.diffs(target, options);
|
|
364
|
+
const result = ObjectUtil.clone(this);
|
|
365
|
+
for (const diff of diffs) {
|
|
366
|
+
// 변경시
|
|
367
|
+
if (diff.source !== undefined && diff.target !== undefined) {
|
|
368
|
+
const resultSourceItem = result.single((item) => ObjectUtil.equal(item, diff.source));
|
|
369
|
+
if (resultSourceItem === undefined) {
|
|
370
|
+
throw new NeverEntryError();
|
|
371
|
+
}
|
|
372
|
+
result[result.indexOf(resultSourceItem)] = ObjectUtil.merge(diff.source, diff.target);
|
|
373
|
+
}
|
|
374
|
+
// 추가시
|
|
375
|
+
else if (diff.target !== undefined) {
|
|
376
|
+
result.push(diff.target);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
return result;
|
|
380
|
+
};
|
|
381
|
+
prototype.sum = function (selector) {
|
|
382
|
+
let result = 0;
|
|
383
|
+
for (let i = 0; i < this.length; i++) {
|
|
384
|
+
const item = selector !== undefined ? selector(this[i], i) : this[i];
|
|
385
|
+
if (typeof item !== "number") {
|
|
386
|
+
throw new Error("sum 은 number 에 대해서만 사용할 수 있습니다.");
|
|
387
|
+
}
|
|
388
|
+
result += item;
|
|
389
|
+
}
|
|
390
|
+
return result;
|
|
391
|
+
};
|
|
392
|
+
prototype.min = function (selector) {
|
|
393
|
+
let result;
|
|
394
|
+
for (let i = 0; i < this.length; i++) {
|
|
395
|
+
const item = selector !== undefined ? selector(this[i], i) : this[i];
|
|
396
|
+
if (typeof item !== "number" && typeof item !== "string") {
|
|
397
|
+
throw new Error("min 은 number/string 에 대해서만 사용할 수 있습니다.");
|
|
398
|
+
}
|
|
399
|
+
if (result === undefined || result > item) {
|
|
400
|
+
result = item;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
return result;
|
|
404
|
+
};
|
|
405
|
+
prototype.max = function (selector) {
|
|
406
|
+
let result;
|
|
407
|
+
for (let i = 0; i < this.length; i++) {
|
|
408
|
+
const item = selector !== undefined ? selector(this[i], i) : this[i];
|
|
409
|
+
if (typeof item !== "number" && typeof item !== "string") {
|
|
410
|
+
throw new Error("max 은 number/string 에 대해서만 사용할 수 있습니다.");
|
|
411
|
+
}
|
|
412
|
+
if (result === undefined || result < item) {
|
|
413
|
+
result = item;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
return result;
|
|
417
|
+
};
|
|
418
|
+
prototype.shuffle = function () {
|
|
419
|
+
if (this.length <= 1) {
|
|
420
|
+
return ObjectUtil.clone(this);
|
|
421
|
+
}
|
|
422
|
+
let result = this;
|
|
423
|
+
while (true) {
|
|
424
|
+
result = result.orderBy(() => Math.random());
|
|
425
|
+
if (!ObjectUtil.equal(result, this)) {
|
|
426
|
+
break;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
return result;
|
|
430
|
+
};
|
|
431
|
+
prototype.insert = function (index, ...items) {
|
|
432
|
+
this.splice(index, 0, ...items);
|
|
433
|
+
return this;
|
|
434
|
+
};
|
|
435
|
+
prototype.remove = function (itemOrSelector) {
|
|
436
|
+
const removeItems = typeof itemOrSelector === "function" ? this.filter(itemOrSelector.bind(this)) : [itemOrSelector];
|
|
437
|
+
for (const removeItem of removeItems) {
|
|
438
|
+
while (this.includes(removeItem)) {
|
|
439
|
+
this.splice(this.indexOf(removeItem), 1);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
return this;
|
|
443
|
+
};
|
|
444
|
+
prototype.clear = function () {
|
|
445
|
+
return this.remove(() => true);
|
|
446
|
+
};
|
|
447
|
+
})(Array.prototype);
|
|
448
|
+
//# sourceMappingURL=ArrayExtension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MapExtension.js","sourceRoot":"","sources":["../../../../../sd-core-common/src/extensions/MapExtension.ts"],"names":[],"mappings":";AAMA,CAAC,CAAC,SAAS,EAAE,EAAE;IACb,SAAS,CAAC,WAAW,GAAG,UAAiC,GAAM,EAAE,QAAuB;QACtF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAClB,IAAI,QAAQ,YAAY,QAAQ,EAAE;gBAChC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;aAC3B;iBACI;gBACH,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;aACzB;SACF;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;IACxB,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
((prototype) => {
|
|
3
|
+
prototype.getOrCreate = function (key, newValue) {
|
|
4
|
+
if (!this.has(key)) {
|
|
5
|
+
if (newValue instanceof Function) {
|
|
6
|
+
this.set(key, newValue());
|
|
7
|
+
}
|
|
8
|
+
else {
|
|
9
|
+
this.set(key, newValue);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
return this.get(key);
|
|
13
|
+
};
|
|
14
|
+
})(Map.prototype);
|
|
15
|
+
//# sourceMappingURL=MapExtension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SetExtension.js","sourceRoot":"","sources":["../../../../../sd-core-common/src/extensions/SetExtension.ts"],"names":[],"mappings":";AAIA,CAAC,CAAC,SAAS,EAAE,EAAE;IACb,SAAS,CAAC,IAAI,GAAG,UAA2B,GAAG,MAAW;QACxD,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;YACxB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACf;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC"}
|