sonamu 0.5.7 → 0.6.0
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/dist/api/base-frame.js +12 -2
- package/dist/api/caster.js +66 -2
- package/dist/api/code-converters.js +489 -2
- package/dist/api/config.d.ts +76 -0
- package/dist/api/config.d.ts.map +1 -0
- package/dist/api/config.js +32 -0
- package/dist/api/context.d.ts +1 -0
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +3 -2
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +142 -2
- package/dist/api/index.js +9 -2
- package/dist/api/sonamu.d.ts +8 -22
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +482 -2
- package/dist/bin/build-config.d.ts +2 -1
- package/dist/bin/build-config.d.ts.map +1 -1
- package/dist/bin/build-config.js +12 -2
- package/dist/bin/cli-wrapper.js +71 -2
- package/dist/bin/cli.js +418 -2
- package/dist/bin/hot-hook-register.d.ts +11 -0
- package/dist/bin/hot-hook-register.d.ts.map +1 -0
- package/dist/bin/hot-hook-register.js +21 -0
- package/dist/database/_batch_update.js +78 -2
- package/dist/database/base-model.js +247 -2
- package/dist/database/code-generator.js +53 -2
- package/dist/database/db.d.ts +2 -16
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +132 -2
- package/dist/database/knex-plugins/knex-on-duplicate-update.js +39 -2
- package/dist/database/puri-wrapper.js +109 -2
- package/dist/database/puri.d.ts +23 -16
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +539 -2
- package/dist/database/puri.types.d.ts +8 -3
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/puri.types.js +3 -2
- package/dist/database/transaction-context.js +14 -2
- package/dist/database/upsert-builder.js +215 -2
- package/dist/entity/entity-manager.d.ts +3 -1
- package/dist/entity/entity-manager.d.ts.map +1 -1
- package/dist/entity/entity-manager.js +114 -2
- package/dist/entity/entity-utils.js +210 -2
- package/dist/entity/entity.d.ts.map +1 -1
- package/dist/entity/entity.js +651 -2
- package/dist/exceptions/error-handler.js +29 -2
- package/dist/exceptions/so-exceptions.js +85 -2
- package/dist/file-storage/driver.js +79 -2
- package/dist/file-storage/file-storage.js +75 -2
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -2
- package/dist/migration/code-generation.js +558 -2
- package/dist/migration/migration-set.js +364 -2
- package/dist/migration/migrator.d.ts +0 -9
- package/dist/migration/migrator.d.ts.map +1 -1
- package/dist/migration/migrator.js +510 -2
- package/dist/migration/types.js +3 -2
- package/dist/naite/naite.d.ts +12 -0
- package/dist/naite/naite.d.ts.map +1 -0
- package/dist/naite/naite.js +72 -0
- package/dist/stream/index.js +3 -2
- package/dist/stream/sse.js +38 -2
- package/dist/syncer/api-parser.d.ts +20 -0
- package/dist/syncer/api-parser.d.ts.map +1 -0
- package/dist/syncer/api-parser.js +229 -0
- package/dist/syncer/checksum.d.ts +21 -0
- package/dist/syncer/checksum.d.ts.map +1 -0
- package/dist/syncer/checksum.js +98 -0
- package/dist/syncer/code-generator.d.ts +20 -0
- package/dist/syncer/code-generator.d.ts.map +1 -0
- package/dist/syncer/code-generator.js +141 -0
- package/dist/syncer/entity-operations.d.ts +17 -0
- package/dist/syncer/entity-operations.d.ts.map +1 -0
- package/dist/syncer/entity-operations.js +58 -0
- package/dist/syncer/file-patterns.d.ts +29 -0
- package/dist/syncer/file-patterns.d.ts.map +1 -0
- package/dist/syncer/file-patterns.js +38 -0
- package/dist/syncer/index.d.ts +6 -0
- package/dist/syncer/index.d.ts.map +1 -1
- package/dist/syncer/index.js +9 -2
- package/dist/syncer/module-loader.d.ts +35 -0
- package/dist/syncer/module-loader.d.ts.map +1 -0
- package/dist/syncer/module-loader.js +82 -0
- package/dist/syncer/syncer.d.ts +93 -108
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +375 -2
- package/dist/template/entity-converter.d.ts +14 -0
- package/dist/template/entity-converter.d.ts.map +1 -0
- package/dist/template/entity-converter.js +101 -0
- package/dist/template/helpers.d.ts +23 -0
- package/dist/template/helpers.d.ts.map +1 -0
- package/dist/template/helpers.js +64 -0
- package/dist/{templates → template/implementations}/entity.template.d.ts +3 -3
- package/dist/template/implementations/entity.template.d.ts.map +1 -0
- package/dist/template/implementations/entity.template.js +87 -0
- package/dist/{templates → template/implementations}/generated.template.d.ts +3 -3
- package/dist/template/implementations/generated.template.d.ts.map +1 -0
- package/dist/template/implementations/generated.template.js +232 -0
- package/dist/{templates → template/implementations}/generated_http.template.d.ts +3 -3
- package/dist/template/implementations/generated_http.template.d.ts.map +1 -0
- package/dist/template/implementations/generated_http.template.js +131 -0
- package/dist/{templates → template/implementations}/generated_sso.template.d.ts +3 -3
- package/dist/template/implementations/generated_sso.template.d.ts.map +1 -0
- package/dist/template/implementations/generated_sso.template.js +105 -0
- package/dist/{templates → template/implementations}/init_types.template.d.ts +3 -3
- package/dist/template/implementations/init_types.template.d.ts.map +1 -0
- package/dist/template/implementations/init_types.template.js +38 -0
- package/dist/template/implementations/model.template.d.ts +17 -0
- package/dist/template/implementations/model.template.d.ts.map +1 -0
- package/dist/template/implementations/model.template.js +171 -0
- package/dist/{templates → template/implementations}/model_test.template.d.ts +3 -3
- package/dist/template/implementations/model_test.template.d.ts.map +1 -0
- package/dist/template/implementations/model_test.template.js +35 -0
- package/dist/{templates → template/implementations}/service.template.d.ts +6 -6
- package/dist/template/implementations/service.template.d.ts.map +1 -0
- package/dist/template/implementations/service.template.js +193 -0
- package/dist/{templates → template/implementations}/view_enums_buttonset.template.d.ts +3 -3
- package/dist/template/implementations/view_enums_buttonset.template.d.ts.map +1 -0
- package/dist/template/implementations/view_enums_buttonset.template.js +31 -0
- package/dist/{templates → template/implementations}/view_enums_dropdown.template.d.ts +3 -4
- package/dist/template/implementations/view_enums_dropdown.template.d.ts.map +1 -0
- package/dist/template/implementations/view_enums_dropdown.template.js +50 -0
- package/dist/{templates → template/implementations}/view_enums_select.template.d.ts +3 -3
- package/dist/template/implementations/view_enums_select.template.d.ts.map +1 -0
- package/dist/template/implementations/view_enums_select.template.js +55 -0
- package/dist/{templates → template/implementations}/view_form.template.d.ts +5 -5
- package/dist/template/implementations/view_form.template.d.ts.map +1 -0
- package/dist/template/implementations/view_form.template.js +337 -0
- package/dist/{templates → template/implementations}/view_id_all_select.template.d.ts +3 -3
- package/dist/template/implementations/view_id_all_select.template.d.ts.map +1 -0
- package/dist/template/implementations/view_id_all_select.template.js +31 -0
- package/dist/{templates → template/implementations}/view_id_async_select.template.d.ts +3 -3
- package/dist/template/implementations/view_id_async_select.template.d.ts.map +1 -0
- package/dist/template/implementations/view_id_async_select.template.js +105 -0
- package/dist/{templates → template/implementations}/view_list.template.d.ts +5 -13
- package/dist/template/implementations/view_list.template.d.ts.map +1 -0
- package/dist/template/implementations/view_list.template.js +465 -0
- package/dist/{templates → template/implementations}/view_list_columns.template.d.ts +3 -3
- package/dist/template/implementations/view_list_columns.template.d.ts.map +1 -0
- package/dist/template/implementations/view_list_columns.template.js +49 -0
- package/dist/{templates → template/implementations}/view_search_input.template.d.ts +3 -3
- package/dist/template/implementations/view_search_input.template.d.ts.map +1 -0
- package/dist/template/implementations/view_search_input.template.js +64 -0
- package/dist/template/index.d.ts +5 -0
- package/dist/template/index.d.ts.map +1 -0
- package/dist/template/index.js +6 -0
- package/dist/template/template.d.ts +39 -0
- package/dist/template/template.d.ts.map +1 -0
- package/dist/template/template.js +47 -0
- package/dist/template/zod-converter.d.ts +18 -0
- package/dist/template/zod-converter.d.ts.map +1 -0
- package/dist/template/zod-converter.js +166 -0
- package/dist/testing/_relation-graph.js +80 -2
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +521 -2
- package/dist/types/types.d.ts +39 -40
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +289 -2
- package/dist/typings/knex.d.js +3 -2
- package/dist/utils/async-utils.d.ts +7 -0
- package/dist/utils/async-utils.d.ts.map +1 -1
- package/dist/utils/async-utils.js +57 -2
- package/dist/utils/console-util.d.ts +2 -0
- package/dist/utils/console-util.d.ts.map +1 -0
- package/dist/utils/console-util.js +6 -0
- package/dist/utils/controller.js +26 -2
- package/dist/utils/esm-utils.d.ts +45 -0
- package/dist/utils/esm-utils.d.ts.map +1 -0
- package/dist/utils/esm-utils.js +56 -0
- package/dist/utils/fs-utils.js +17 -2
- package/dist/utils/lodash-able.js +6 -2
- package/dist/utils/model.js +22 -2
- package/dist/utils/path-utils.d.ts +89 -0
- package/dist/utils/path-utils.d.ts.map +1 -0
- package/dist/utils/path-utils.js +60 -0
- package/dist/utils/process-utils.d.ts +13 -0
- package/dist/utils/process-utils.d.ts.map +1 -0
- package/dist/utils/process-utils.js +36 -0
- package/dist/utils/sql-parser.js +35 -2
- package/dist/utils/utils.d.ts +4 -7
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +33 -2
- package/dist/utils/zod-error.d.ts.map +1 -1
- package/dist/utils/zod-error.js +19 -2
- package/package.json +21 -8
- package/src/api/code-converters.ts +2 -2
- package/src/api/config.ts +142 -0
- package/src/api/context.ts +1 -0
- package/src/api/decorators.ts +1 -0
- package/src/api/sonamu.ts +81 -67
- package/src/bin/build-config.ts +2 -1
- package/src/bin/cli-wrapper.ts +10 -3
- package/src/bin/cli.ts +108 -56
- package/src/bin/hot-hook-register.ts +22 -0
- package/src/database/base-model.ts +1 -1
- package/src/database/code-generator.ts +1 -1
- package/src/database/db.ts +10 -52
- package/src/database/puri.ts +78 -53
- package/src/database/puri.types.ts +18 -5
- package/src/database/upsert-builder.ts +1 -1
- package/src/entity/entity-manager.ts +19 -15
- package/src/entity/entity.ts +4 -3
- package/src/index.ts +2 -0
- package/src/migration/code-generation.ts +1 -1
- package/src/migration/migration-set.ts +1 -1
- package/src/migration/migrator.ts +23 -152
- package/src/naite/naite.ts +70 -0
- package/src/syncer/api-parser.ts +299 -0
- package/src/syncer/checksum.ts +152 -0
- package/src/syncer/code-generator.ts +202 -0
- package/src/syncer/entity-operations.ts +68 -0
- package/src/syncer/file-patterns.ts +56 -0
- package/src/syncer/index.ts +6 -0
- package/src/syncer/module-loader.ts +125 -0
- package/src/syncer/syncer.ts +363 -1420
- package/src/template/entity-converter.ts +123 -0
- package/src/template/helpers.ts +84 -0
- package/src/{templates → template/implementations}/entity.template.ts +4 -4
- package/src/{templates → template/implementations}/generated.template.ts +9 -9
- package/src/{templates → template/implementations}/generated_http.template.ts +9 -6
- package/src/{templates → template/implementations}/generated_sso.template.ts +7 -7
- package/src/{templates → template/implementations}/init_types.template.ts +4 -4
- package/src/{templates → template/implementations}/model.template.ts +9 -9
- package/src/{templates → template/implementations}/model_test.template.ts +5 -5
- package/src/{templates → template/implementations}/service.template.ts +19 -11
- package/src/{templates → template/implementations}/view_enums_buttonset.template.ts +3 -3
- package/src/{templates → template/implementations}/view_enums_dropdown.template.ts +5 -21
- package/src/{templates → template/implementations}/view_enums_select.template.ts +4 -4
- package/src/{templates → template/implementations}/view_form.template.ts +11 -13
- package/src/{templates → template/implementations}/view_id_all_select.template.ts +3 -3
- package/src/{templates → template/implementations}/view_id_async_select.template.ts +3 -3
- package/src/{templates → template/implementations}/view_list.template.ts +13 -64
- package/src/{templates → template/implementations}/view_list_columns.template.ts +3 -3
- package/src/{templates → template/implementations}/view_search_input.template.ts +3 -3
- package/src/template/index.ts +4 -0
- package/src/template/template.ts +86 -0
- package/src/template/zod-converter.ts +219 -0
- package/src/testing/fixture-manager.ts +8 -1
- package/src/types/types.ts +38 -61
- package/src/utils/async-utils.ts +17 -0
- package/src/utils/console-util.ts +4 -0
- package/src/utils/esm-utils.ts +69 -0
- package/src/utils/path-utils.ts +102 -0
- package/src/utils/process-utils.ts +46 -0
- package/src/utils/sql-parser.ts +1 -1
- package/src/utils/utils.ts +14 -40
- package/src/utils/zod-error.ts +0 -1
- package/dist/api/base-frame.js.map +0 -1
- package/dist/api/caster.js.map +0 -1
- package/dist/api/code-converters.js.map +0 -1
- package/dist/api/context.js.map +0 -1
- package/dist/api/decorators.js.map +0 -1
- package/dist/api/index.js.map +0 -1
- package/dist/api/sonamu.js.map +0 -1
- package/dist/bin/build-config.js.map +0 -1
- package/dist/bin/cli-wrapper.js.map +0 -1
- package/dist/bin/cli.js.map +0 -1
- package/dist/database/_batch_update.js.map +0 -1
- package/dist/database/base-model.js.map +0 -1
- package/dist/database/code-generator.js.map +0 -1
- package/dist/database/db.js.map +0 -1
- package/dist/database/knex-plugins/knex-on-duplicate-update.js.map +0 -1
- package/dist/database/puri-wrapper.js.map +0 -1
- package/dist/database/puri.js.map +0 -1
- package/dist/database/puri.types.js.map +0 -1
- package/dist/database/transaction-context.js.map +0 -1
- package/dist/database/upsert-builder.js.map +0 -1
- package/dist/entity/entity-manager.js.map +0 -1
- package/dist/entity/entity-utils.js.map +0 -1
- package/dist/entity/entity.js.map +0 -1
- package/dist/exceptions/error-handler.js.map +0 -1
- package/dist/exceptions/so-exceptions.js.map +0 -1
- package/dist/file-storage/driver.js.map +0 -1
- package/dist/file-storage/file-storage.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/migration/code-generation.js.map +0 -1
- package/dist/migration/migration-set.js.map +0 -1
- package/dist/migration/migrator.js.map +0 -1
- package/dist/migration/types.js.map +0 -1
- package/dist/stream/index.js.map +0 -1
- package/dist/stream/sse.js.map +0 -1
- package/dist/syncer/index.js.map +0 -1
- package/dist/syncer/syncer.js.map +0 -1
- package/dist/templates/base-template.d.ts +0 -13
- package/dist/templates/base-template.d.ts.map +0 -1
- package/dist/templates/base-template.js +0 -2
- package/dist/templates/base-template.js.map +0 -1
- package/dist/templates/entity.template.d.ts.map +0 -1
- package/dist/templates/entity.template.js +0 -2
- package/dist/templates/entity.template.js.map +0 -1
- package/dist/templates/generated.template.d.ts.map +0 -1
- package/dist/templates/generated.template.js +0 -2
- package/dist/templates/generated.template.js.map +0 -1
- package/dist/templates/generated_http.template.d.ts.map +0 -1
- package/dist/templates/generated_http.template.js +0 -2
- package/dist/templates/generated_http.template.js.map +0 -1
- package/dist/templates/generated_sso.template.d.ts.map +0 -1
- package/dist/templates/generated_sso.template.js +0 -2
- package/dist/templates/generated_sso.template.js.map +0 -1
- package/dist/templates/index.d.ts +0 -2
- package/dist/templates/index.d.ts.map +0 -1
- package/dist/templates/index.js +0 -2
- package/dist/templates/index.js.map +0 -1
- package/dist/templates/init_types.template.d.ts.map +0 -1
- package/dist/templates/init_types.template.js +0 -2
- package/dist/templates/init_types.template.js.map +0 -1
- package/dist/templates/model.template.d.ts +0 -17
- package/dist/templates/model.template.d.ts.map +0 -1
- package/dist/templates/model.template.js +0 -2
- package/dist/templates/model.template.js.map +0 -1
- package/dist/templates/model_test.template.d.ts.map +0 -1
- package/dist/templates/model_test.template.js +0 -2
- package/dist/templates/model_test.template.js.map +0 -1
- package/dist/templates/service.template.d.ts.map +0 -1
- package/dist/templates/service.template.js +0 -2
- package/dist/templates/service.template.js.map +0 -1
- package/dist/templates/view_enums_buttonset.template.d.ts.map +0 -1
- package/dist/templates/view_enums_buttonset.template.js +0 -2
- package/dist/templates/view_enums_buttonset.template.js.map +0 -1
- package/dist/templates/view_enums_dropdown.template.d.ts.map +0 -1
- package/dist/templates/view_enums_dropdown.template.js +0 -2
- package/dist/templates/view_enums_dropdown.template.js.map +0 -1
- package/dist/templates/view_enums_select.template.d.ts.map +0 -1
- package/dist/templates/view_enums_select.template.js +0 -2
- package/dist/templates/view_enums_select.template.js.map +0 -1
- package/dist/templates/view_form.template.d.ts.map +0 -1
- package/dist/templates/view_form.template.js +0 -2
- package/dist/templates/view_form.template.js.map +0 -1
- package/dist/templates/view_id_all_select.template.d.ts.map +0 -1
- package/dist/templates/view_id_all_select.template.js +0 -2
- package/dist/templates/view_id_all_select.template.js.map +0 -1
- package/dist/templates/view_id_async_select.template.d.ts.map +0 -1
- package/dist/templates/view_id_async_select.template.js +0 -2
- package/dist/templates/view_id_async_select.template.js.map +0 -1
- package/dist/templates/view_list.template.d.ts.map +0 -1
- package/dist/templates/view_list.template.js +0 -2
- package/dist/templates/view_list.template.js.map +0 -1
- package/dist/templates/view_list_columns.template.d.ts.map +0 -1
- package/dist/templates/view_list_columns.template.js +0 -2
- package/dist/templates/view_list_columns.template.js.map +0 -1
- package/dist/templates/view_search_input.template.d.ts.map +0 -1
- package/dist/templates/view_search_input.template.js +0 -2
- package/dist/templates/view_search_input.template.js.map +0 -1
- package/dist/testing/_relation-graph.js.map +0 -1
- package/dist/testing/fixture-manager.js.map +0 -1
- package/dist/types/types.js.map +0 -1
- package/dist/typings/knex.d.js.map +0 -1
- package/dist/utils/async-utils.js.map +0 -1
- package/dist/utils/controller.js.map +0 -1
- package/dist/utils/fs-utils.js.map +0 -1
- package/dist/utils/lodash-able.js.map +0 -1
- package/dist/utils/model.js.map +0 -1
- package/dist/utils/sql-parser.js.map +0 -1
- package/dist/utils/utils.js.map +0 -1
- package/dist/utils/zod-error.js.map +0 -1
- package/src/templates/base-template.ts +0 -19
- package/src/templates/index.ts +0 -1
|
@@ -1,2 +1,57 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { glob } from "node:fs/promises";
|
|
2
|
+
import path from "path";
|
|
3
|
+
/**
|
|
4
|
+
* 비동기 조건으로 배열을 필터링합니다
|
|
5
|
+
* @example
|
|
6
|
+
* const filtered = await filterAsync([1, 2, 3], async (x) => x > 1);
|
|
7
|
+
*/ export async function filterAsync(arr, predicate) {
|
|
8
|
+
const results = await Promise.all(arr.map((item, index)=>predicate(item, index, arr).then((keep)=>({
|
|
9
|
+
item,
|
|
10
|
+
keep
|
|
11
|
+
}))));
|
|
12
|
+
return results.filter((r)=>r.keep).map((r)=>r.item);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 비동기 조건이 모든 요소에 대해 참인지 확인합니다
|
|
16
|
+
* @example
|
|
17
|
+
* const allValid = await everyAsync([1, 2, 3], async (x) => x > 0);
|
|
18
|
+
*/ export async function everyAsync(arr, predicate) {
|
|
19
|
+
for(let i = 0; i < arr.length; i++){
|
|
20
|
+
if (!await predicate(arr[i], i, arr)) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 비동기 변환 함수를 배열의 각 요소에 적용합니다
|
|
28
|
+
* @example
|
|
29
|
+
* const doubled = await mapAsync([1, 2, 3], async (x) => x * 2);
|
|
30
|
+
*/ export async function mapAsync(arr, mapper) {
|
|
31
|
+
return Promise.all(arr.map((item, index)=>mapper(item, index, arr)));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 비동기 리듀서로 배열을 축약합니다
|
|
35
|
+
* @example
|
|
36
|
+
* const sum = await reduceAsync([1, 2, 3], async (acc, x) => acc + x, 0);
|
|
37
|
+
*/ export async function reduceAsync(arr, reducer, initialValue) {
|
|
38
|
+
let accumulator = initialValue;
|
|
39
|
+
for(let i = 0; i < arr.length; i++){
|
|
40
|
+
accumulator = await reducer(accumulator, arr[i], i, arr);
|
|
41
|
+
}
|
|
42
|
+
return accumulator;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 비동기 glob 함수입니다.
|
|
46
|
+
* AsyncIterableIterator로 날아오는 glob의 반환을 받아 끝까지 돌아서 배열로 반환합니다.
|
|
47
|
+
* @param pathPattern
|
|
48
|
+
* @returns
|
|
49
|
+
*/ export async function globAsync(pathPattern) {
|
|
50
|
+
const files = [];
|
|
51
|
+
for await (const file of glob(path.resolve(pathPattern))){
|
|
52
|
+
files.push(file);
|
|
53
|
+
}
|
|
54
|
+
return files;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hc3luYy11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnbG9iIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG4vKipcbiAqIOu5hOuPmeq4sCDsobDqsbTsnLzroZwg67Cw7Je07J2EIO2VhO2EsOunge2VqeuLiOuLpFxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGZpbHRlcmVkID0gYXdhaXQgZmlsdGVyQXN5bmMoWzEsIDIsIDNdLCBhc3luYyAoeCkgPT4geCA+IDEpO1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmlsdGVyQXN5bmM8VD4oXG4gIGFycjogVFtdLFxuICBwcmVkaWNhdGU6IChpdGVtOiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogVFtdKSA9PiBQcm9taXNlPGJvb2xlYW4+XG4pOiBQcm9taXNlPFRbXT4ge1xuICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgYXJyLm1hcCgoaXRlbSwgaW5kZXgpID0+XG4gICAgICBwcmVkaWNhdGUoaXRlbSwgaW5kZXgsIGFycikudGhlbigoa2VlcCkgPT4gKHsgaXRlbSwga2VlcCB9KSlcbiAgICApXG4gICk7XG4gIHJldHVybiByZXN1bHRzLmZpbHRlcigocikgPT4gci5rZWVwKS5tYXAoKHIpID0+IHIuaXRlbSk7XG59XG5cbi8qKlxuICog67mE64+Z6riwIOyhsOqxtOydtCDrqqjrk6Ag7JqU7IaM7JeQIOuMgO2VtCDssLjsnbjsp4Ag7ZmV7J247ZWp64uI64ukXG4gKiBAZXhhbXBsZVxuICogY29uc3QgYWxsVmFsaWQgPSBhd2FpdCBldmVyeUFzeW5jKFsxLCAyLCAzXSwgYXN5bmMgKHgpID0+IHggPiAwKTtcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV2ZXJ5QXN5bmM8VD4oXG4gIGFycjogVFtdLFxuICBwcmVkaWNhdGU6IChpdGVtOiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogVFtdKSA9PiBQcm9taXNlPGJvb2xlYW4+XG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoIShhd2FpdCBwcmVkaWNhdGUoYXJyW2ldLCBpLCBhcnIpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiDruYTrj5nquLAg67OA7ZmYIO2VqOyImOulvCDrsLDsl7TsnZgg6rCBIOyalOyGjOyXkCDsoIHsmqntlanri4jri6RcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBkb3VibGVkID0gYXdhaXQgbWFwQXN5bmMoWzEsIDIsIDNdLCBhc3luYyAoeCkgPT4geCAqIDIpO1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFwQXN5bmM8VCwgVT4oXG4gIGFycjogVFtdLFxuICBtYXBwZXI6IChpdGVtOiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogVFtdKSA9PiBQcm9taXNlPFU+XG4pOiBQcm9taXNlPFVbXT4ge1xuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgYXJyLm1hcCgoaXRlbSwgaW5kZXgpID0+IG1hcHBlcihpdGVtLCBpbmRleCwgYXJyKSlcbiAgKTtcbn1cblxuLyoqXG4gKiDruYTrj5nquLAg66as65OA7ISc66GcIOuwsOyXtOydhCDstpXslb3tlanri4jri6RcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBzdW0gPSBhd2FpdCByZWR1Y2VBc3luYyhbMSwgMiwgM10sIGFzeW5jIChhY2MsIHgpID0+IGFjYyArIHgsIDApO1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVkdWNlQXN5bmM8VCwgVT4oXG4gIGFycjogVFtdLFxuICByZWR1Y2VyOiAoYWNjdW11bGF0b3I6IFUsIGN1cnJlbnRWYWx1ZTogVCwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFRbXSkgPT4gUHJvbWlzZTxVPixcbiAgaW5pdGlhbFZhbHVlOiBVXG4pOiBQcm9taXNlPFU+IHtcbiAgbGV0IGFjY3VtdWxhdG9yID0gaW5pdGlhbFZhbHVlO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGFjY3VtdWxhdG9yID0gYXdhaXQgcmVkdWNlcihhY2N1bXVsYXRvciwgYXJyW2ldLCBpLCBhcnIpO1xuICB9XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxuLyoqXG4gKiDruYTrj5nquLAgZ2xvYiDtlajsiJjsnoXri4jri6QuXG4gKiBBc3luY0l0ZXJhYmxlSXRlcmF0b3LroZwg64Kg7JWE7Jik64qUIGdsb2LsnZgg67CY7ZmY7J2EIOuwm+yVhCDrgZ3quYzsp4Ag64+M7JWE7IScIOuwsOyXtOuhnCDrsJjtmZjtlanri4jri6QuXG4gKiBAcGFyYW0gcGF0aFBhdHRlcm4gXG4gKiBAcmV0dXJucyBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdsb2JBc3luYyhwYXRoUGF0dGVybjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICBjb25zdCBmaWxlczogc3RyaW5nW10gPSBbXTtcbiAgZm9yIGF3YWl0IChjb25zdCBmaWxlIG9mIGdsb2IocGF0aC5yZXNvbHZlKHBhdGhQYXR0ZXJuKSkpIHtcbiAgICBmaWxlcy5wdXNoKGZpbGUpO1xuICB9XG4gIHJldHVybiBmaWxlcztcbn1cbiJdLCJuYW1lcyI6WyJnbG9iIiwicGF0aCIsImZpbHRlckFzeW5jIiwiYXJyIiwicHJlZGljYXRlIiwicmVzdWx0cyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJ0aGVuIiwia2VlcCIsImZpbHRlciIsInIiLCJldmVyeUFzeW5jIiwiaSIsImxlbmd0aCIsIm1hcEFzeW5jIiwibWFwcGVyIiwicmVkdWNlQXN5bmMiLCJyZWR1Y2VyIiwiaW5pdGlhbFZhbHVlIiwiYWNjdW11bGF0b3IiLCJnbG9iQXN5bmMiLCJwYXRoUGF0dGVybiIsImZpbGVzIiwiZmlsZSIsInJlc29sdmUiLCJwdXNoIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxJQUFJLFFBQVEsbUJBQWM7QUFDbkMsT0FBT0MsVUFBVSxPQUFPO0FBRXhCOzs7O0NBSUMsR0FDRCxPQUFPLGVBQWVDLFlBQ3BCQyxHQUFRLEVBQ1JDLFNBQW1FO0lBRW5FLE1BQU1DLFVBQVUsTUFBTUMsUUFBUUMsR0FBRyxDQUMvQkosSUFBSUssR0FBRyxDQUFDLENBQUNDLE1BQU1DLFFBQ2JOLFVBQVVLLE1BQU1DLE9BQU9QLEtBQUtRLElBQUksQ0FBQyxDQUFDQyxPQUFVLENBQUE7Z0JBQUVIO2dCQUFNRztZQUFLLENBQUE7SUFHN0QsT0FBT1AsUUFBUVEsTUFBTSxDQUFDLENBQUNDLElBQU1BLEVBQUVGLElBQUksRUFBRUosR0FBRyxDQUFDLENBQUNNLElBQU1BLEVBQUVMLElBQUk7QUFDeEQ7QUFFQTs7OztDQUlDLEdBQ0QsT0FBTyxlQUFlTSxXQUNwQlosR0FBUSxFQUNSQyxTQUFtRTtJQUVuRSxJQUFLLElBQUlZLElBQUksR0FBR0EsSUFBSWIsSUFBSWMsTUFBTSxFQUFFRCxJQUFLO1FBQ25DLElBQUksQ0FBRSxNQUFNWixVQUFVRCxHQUFHLENBQUNhLEVBQUUsRUFBRUEsR0FBR2IsTUFBTztZQUN0QyxPQUFPO1FBQ1Q7SUFDRjtJQUNBLE9BQU87QUFDVDtBQUVBOzs7O0NBSUMsR0FDRCxPQUFPLGVBQWVlLFNBQ3BCZixHQUFRLEVBQ1JnQixNQUEwRDtJQUUxRCxPQUFPYixRQUFRQyxHQUFHLENBQ2hCSixJQUFJSyxHQUFHLENBQUMsQ0FBQ0MsTUFBTUMsUUFBVVMsT0FBT1YsTUFBTUMsT0FBT1A7QUFFakQ7QUFFQTs7OztDQUlDLEdBQ0QsT0FBTyxlQUFlaUIsWUFDcEJqQixHQUFRLEVBQ1JrQixPQUFtRixFQUNuRkMsWUFBZTtJQUVmLElBQUlDLGNBQWNEO0lBQ2xCLElBQUssSUFBSU4sSUFBSSxHQUFHQSxJQUFJYixJQUFJYyxNQUFNLEVBQUVELElBQUs7UUFDbkNPLGNBQWMsTUFBTUYsUUFBUUUsYUFBYXBCLEdBQUcsQ0FBQ2EsRUFBRSxFQUFFQSxHQUFHYjtJQUN0RDtJQUNBLE9BQU9vQjtBQUNUO0FBRUE7Ozs7O0NBS0MsR0FDRCxPQUFPLGVBQWVDLFVBQVVDLFdBQW1CO0lBQ2pELE1BQU1DLFFBQWtCLEVBQUU7SUFDMUIsV0FBVyxNQUFNQyxRQUFRM0IsS0FBS0MsS0FBSzJCLE9BQU8sQ0FBQ0gsY0FBZTtRQUN4REMsTUFBTUcsSUFBSSxDQUFDRjtJQUNiO0lBQ0EsT0FBT0Q7QUFDVCJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console-util.d.ts","sourceRoot":"","sources":["../../src/utils/console-util.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG/C"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export function centerText(text) {
|
|
2
|
+
const margin = (process.stdout.columns - text.length) / 2;
|
|
3
|
+
return " ".repeat(margin) + text + " ".repeat(margin);
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jb25zb2xlLXV0aWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGNlbnRlclRleHQodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWFyZ2luID0gKHByb2Nlc3Muc3Rkb3V0LmNvbHVtbnMgLSB0ZXh0Lmxlbmd0aCkgLyAyO1xuICByZXR1cm4gXCIgXCIucmVwZWF0KG1hcmdpbikgKyB0ZXh0ICsgXCIgXCIucmVwZWF0KG1hcmdpbik7XG59Il0sIm5hbWVzIjpbImNlbnRlclRleHQiLCJ0ZXh0IiwibWFyZ2luIiwicHJvY2VzcyIsInN0ZG91dCIsImNvbHVtbnMiLCJsZW5ndGgiLCJyZXBlYXQiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sU0FBU0EsV0FBV0MsSUFBWTtJQUNyQyxNQUFNQyxTQUFTLEFBQUNDLENBQUFBLFFBQVFDLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHSixLQUFLSyxNQUFNLEFBQUQsSUFBSztJQUN4RCxPQUFPLElBQUlDLE1BQU0sQ0FBQ0wsVUFBVUQsT0FBTyxJQUFJTSxNQUFNLENBQUNMO0FBQ2hEIn0=
|
package/dist/utils/controller.js
CHANGED
|
@@ -1,2 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export function isLocal() {
|
|
2
|
+
return process.env.LR === undefined || process.env.LR === "local";
|
|
3
|
+
}
|
|
4
|
+
export function isRemote() {
|
|
5
|
+
return process.env.LR === "remote";
|
|
6
|
+
}
|
|
7
|
+
export function isInDocker() {
|
|
8
|
+
return process.env.LR !== undefined;
|
|
9
|
+
}
|
|
10
|
+
export function isDaemonServer() {
|
|
11
|
+
return process.env.NODE_TYPE === "daemon";
|
|
12
|
+
}
|
|
13
|
+
export function isDevelopment() {
|
|
14
|
+
return isRemote() && process.env.NODE_ENV === "development";
|
|
15
|
+
}
|
|
16
|
+
export function isStaging() {
|
|
17
|
+
return isRemote() && process.env.NODE_ENV === "staging";
|
|
18
|
+
}
|
|
19
|
+
export function isProduction() {
|
|
20
|
+
return isRemote() && process.env.NODE_ENV === "production";
|
|
21
|
+
}
|
|
22
|
+
export function isTest() {
|
|
23
|
+
return isLocal() && process.env.NODE_ENV === "test";
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jb250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpc0xvY2FsKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gcHJvY2Vzcy5lbnYuTFIgPT09IHVuZGVmaW5lZCB8fCBwcm9jZXNzLmVudi5MUiA9PT0gXCJsb2NhbFwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVtb3RlKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gcHJvY2Vzcy5lbnYuTFIgPT09IFwicmVtb3RlXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNJbkRvY2tlcigpOiBib29sZWFuIHtcbiAgcmV0dXJuIHByb2Nlc3MuZW52LkxSICE9PSB1bmRlZmluZWQ7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNEYWVtb25TZXJ2ZXIoKTogYm9vbGVhbiB7XG4gIHJldHVybiBwcm9jZXNzLmVudi5OT0RFX1RZUEUgPT09IFwiZGFlbW9uXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNEZXZlbG9wbWVudCgpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzUmVtb3RlKCkgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YWdpbmcoKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1JlbW90ZSgpICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInN0YWdpbmdcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb2R1Y3Rpb24oKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1JlbW90ZSgpICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1Rlc3QoKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc0xvY2FsKCkgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwidGVzdFwiO1xufVxuIl0sIm5hbWVzIjpbImlzTG9jYWwiLCJwcm9jZXNzIiwiZW52IiwiTFIiLCJ1bmRlZmluZWQiLCJpc1JlbW90ZSIsImlzSW5Eb2NrZXIiLCJpc0RhZW1vblNlcnZlciIsIk5PREVfVFlQRSIsImlzRGV2ZWxvcG1lbnQiLCJOT0RFX0VOViIsImlzU3RhZ2luZyIsImlzUHJvZHVjdGlvbiIsImlzVGVzdCJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTQTtJQUNkLE9BQU9DLFFBQVFDLEdBQUcsQ0FBQ0MsRUFBRSxLQUFLQyxhQUFhSCxRQUFRQyxHQUFHLENBQUNDLEVBQUUsS0FBSztBQUM1RDtBQUNBLE9BQU8sU0FBU0U7SUFDZCxPQUFPSixRQUFRQyxHQUFHLENBQUNDLEVBQUUsS0FBSztBQUM1QjtBQUNBLE9BQU8sU0FBU0c7SUFDZCxPQUFPTCxRQUFRQyxHQUFHLENBQUNDLEVBQUUsS0FBS0M7QUFDNUI7QUFDQSxPQUFPLFNBQVNHO0lBQ2QsT0FBT04sUUFBUUMsR0FBRyxDQUFDTSxTQUFTLEtBQUs7QUFDbkM7QUFDQSxPQUFPLFNBQVNDO0lBQ2QsT0FBT0osY0FBY0osUUFBUUMsR0FBRyxDQUFDUSxRQUFRLEtBQUs7QUFDaEQ7QUFDQSxPQUFPLFNBQVNDO0lBQ2QsT0FBT04sY0FBY0osUUFBUUMsR0FBRyxDQUFDUSxRQUFRLEtBQUs7QUFDaEQ7QUFDQSxPQUFPLFNBQVNFO0lBQ2QsT0FBT1AsY0FBY0osUUFBUUMsR0FBRyxDQUFDUSxRQUFRLEtBQUs7QUFDaEQ7QUFDQSxPQUFPLFNBQVNHO0lBQ2QsT0FBT2IsYUFBYUMsUUFBUUMsR0FBRyxDQUFDUSxRQUFRLEtBQUs7QUFDL0MifQ==
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* import.meta.url로부터 __filename 생성
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* const __filename = getFilename(import.meta.url);
|
|
6
|
+
*/
|
|
7
|
+
export declare function getFilename(metaUrl: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* import.meta.url로부터 __dirname 생성
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* const __dirname = getDirname(import.meta.url);
|
|
13
|
+
*/
|
|
14
|
+
export declare function getDirname(metaUrl: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* 절대 경로를 file:// URL로 변환 (동적 임포트용)
|
|
17
|
+
*
|
|
18
|
+
* @param absolutePath - 절대 파일 경로
|
|
19
|
+
* @returns file:// URL 문자열
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* const url = createImportUrl('/path/to/file.js');
|
|
23
|
+
* await import(url);
|
|
24
|
+
*/
|
|
25
|
+
export declare function createImportUrl(absolutePath: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* HMR 환경 감지
|
|
28
|
+
*
|
|
29
|
+
* @returns hot reload 환경인지 여부
|
|
30
|
+
*/
|
|
31
|
+
export declare function isHotReloadServer(): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* 캐시를 무시하고 새로 임포트(cache busting)하는데, 이때 가져온 모듈의 exported members들을 배열로 가져옵니다.
|
|
34
|
+
*
|
|
35
|
+
* 가령 모듈에서 `export const user = { id: number; name: string; }` 이렇게 정의했다면,
|
|
36
|
+
* 이 함수는 `[{ name: "user", value: { id: number; name: string; } }]` 이렇게 반환합니다.
|
|
37
|
+
*
|
|
38
|
+
* @param filePath
|
|
39
|
+
* @returns { name: string; value: ExportedMemberT }[]
|
|
40
|
+
*/
|
|
41
|
+
export declare function importMembers<ExportedMemberT>(filePath: string): Promise<{
|
|
42
|
+
name: string;
|
|
43
|
+
value: ExportedMemberT;
|
|
44
|
+
}[]>;
|
|
45
|
+
//# sourceMappingURL=esm-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esm-utils.d.ts","sourceRoot":"","sources":["../../src/utils/esm-utils.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,GACnB,MAAM,CAGR;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,eAAe,EACjD,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,EAAE,CAAC,CAQrD"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { fileURLToPath, pathToFileURL } from "url";
|
|
2
|
+
import { dirname } from "path";
|
|
3
|
+
/**
|
|
4
|
+
* import.meta.url로부터 __filename 생성
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* const __filename = getFilename(import.meta.url);
|
|
8
|
+
*/ export function getFilename(metaUrl) {
|
|
9
|
+
return fileURLToPath(metaUrl);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* import.meta.url로부터 __dirname 생성
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* const __dirname = getDirname(import.meta.url);
|
|
16
|
+
*/ export function getDirname(metaUrl) {
|
|
17
|
+
return dirname(fileURLToPath(metaUrl));
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 절대 경로를 file:// URL로 변환 (동적 임포트용)
|
|
21
|
+
*
|
|
22
|
+
* @param absolutePath - 절대 파일 경로
|
|
23
|
+
* @returns file:// URL 문자열
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* const url = createImportUrl('/path/to/file.js');
|
|
27
|
+
* await import(url);
|
|
28
|
+
*/ export function createImportUrl(absolutePath) {
|
|
29
|
+
const fileUrl = pathToFileURL(absolutePath).href;
|
|
30
|
+
return fileUrl;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* HMR 환경 감지
|
|
34
|
+
*
|
|
35
|
+
* @returns hot reload 환경인지 여부
|
|
36
|
+
*/ export function isHotReloadServer() {
|
|
37
|
+
return process.env.HOT === 'yes';
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 캐시를 무시하고 새로 임포트(cache busting)하는데, 이때 가져온 모듈의 exported members들을 배열로 가져옵니다.
|
|
41
|
+
*
|
|
42
|
+
* 가령 모듈에서 `export const user = { id: number; name: string; }` 이렇게 정의했다면,
|
|
43
|
+
* 이 함수는 `[{ name: "user", value: { id: number; name: string; } }]` 이렇게 반환합니다.
|
|
44
|
+
*
|
|
45
|
+
* @param filePath
|
|
46
|
+
* @returns { name: string; value: ExportedMemberT }[]
|
|
47
|
+
*/ export async function importMembers(filePath) {
|
|
48
|
+
const imported = await import(createImportUrl(filePath));
|
|
49
|
+
const allExportedMembers = Object.entries(imported).map(([name, value])=>({
|
|
50
|
+
name,
|
|
51
|
+
value
|
|
52
|
+
}));
|
|
53
|
+
return allExportedMembers;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9lc20tdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCwgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ3VybCc7XG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSAncGF0aCc7XG5cbi8qKlxuICogaW1wb3J0Lm1ldGEudXJs66Gc67aA7YSwIF9fZmlsZW5hbWUg7IOd7ISxXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IF9fZmlsZW5hbWUgPSBnZXRGaWxlbmFtZShpbXBvcnQubWV0YS51cmwpO1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZW5hbWUobWV0YVVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZpbGVVUkxUb1BhdGgobWV0YVVybCk7XG59XG5cbi8qKlxuICogaW1wb3J0Lm1ldGEudXJs66Gc67aA7YSwIF9fZGlybmFtZSDsg53shLFcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgX19kaXJuYW1lID0gZ2V0RGlybmFtZShpbXBvcnQubWV0YS51cmwpO1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlybmFtZShtZXRhVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gZGlybmFtZShmaWxlVVJMVG9QYXRoKG1ldGFVcmwpKTtcbn1cblxuLyoqXG4gKiDsoIjrjIAg6rK966Gc66W8IGZpbGU6Ly8gVVJM66GcIOuzgO2ZmCAo64+Z7KCBIOyehO2PrO2KuOyaqSlcbiAqXG4gKiBAcGFyYW0gYWJzb2x1dGVQYXRoIC0g7KCI64yAIO2MjOydvCDqsr3roZxcbiAqIEByZXR1cm5zIGZpbGU6Ly8gVVJMIOusuOyekOyXtFxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCB1cmwgPSBjcmVhdGVJbXBvcnRVcmwoJy9wYXRoL3RvL2ZpbGUuanMnKTtcbiAqIGF3YWl0IGltcG9ydCh1cmwpO1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSW1wb3J0VXJsKFxuICBhYnNvbHV0ZVBhdGg6IHN0cmluZ1xuKTogc3RyaW5nIHtcbiAgY29uc3QgZmlsZVVybCA9IHBhdGhUb0ZpbGVVUkwoYWJzb2x1dGVQYXRoKS5ocmVmO1xuICByZXR1cm4gZmlsZVVybDtcbn1cblxuLyoqXG4gKiBITVIg7ZmY6rK9IOqwkOyngFxuICpcbiAqIEByZXR1cm5zIGhvdCByZWxvYWQg7ZmY6rK97J247KeAIOyXrOu2gFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNIb3RSZWxvYWRTZXJ2ZXIoKTogYm9vbGVhbiB7XG4gIHJldHVybiBwcm9jZXNzLmVudi5IT1QgPT09ICd5ZXMnO1xufVxuXG4vKipcbiAqIOy6kOyLnOulvCDrrLTsi5ztlZjqs6Ag7IOI66GcIOyehO2PrO2KuChjYWNoZSBidXN0aW5nKe2VmOuKlOuNsCwg7J2065WMIOqwgOyguOyYqCDrqqjrk4jsnZggZXhwb3J0ZWQgbWVtYmVyc+uTpOydhCDrsLDsl7TroZwg6rCA7KC47Ji164uI64ukLlxuICpcbiAqIOqwgOuguSDrqqjrk4jsl5DshJwgYGV4cG9ydCBjb25zdCB1c2VyID0geyBpZDogbnVtYmVyOyBuYW1lOiBzdHJpbmc7IH1gIOydtOugh+qyjCDsoJXsnZjtlojri6TrqbQsXG4gKiDsnbQg7ZWo7IiY64qUIGBbeyBuYW1lOiBcInVzZXJcIiwgdmFsdWU6IHsgaWQ6IG51bWJlcjsgbmFtZTogc3RyaW5nOyB9IH1dYCDsnbTroIfqsowg67CY7ZmY7ZWp64uI64ukLlxuICpcbiAqIEBwYXJhbSBmaWxlUGF0aFxuICogQHJldHVybnMgeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBFeHBvcnRlZE1lbWJlclQgfVtdXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbXBvcnRNZW1iZXJzPEV4cG9ydGVkTWVtYmVyVD4oXG4gIGZpbGVQYXRoOiBzdHJpbmdcbik6IFByb21pc2U8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBFeHBvcnRlZE1lbWJlclQgfVtdPiB7XG4gIGNvbnN0IGltcG9ydGVkID0gYXdhaXQgaW1wb3J0KGNyZWF0ZUltcG9ydFVybChmaWxlUGF0aCkpO1xuXG4gIGNvbnN0IGFsbEV4cG9ydGVkTWVtYmVycyA9IE9iamVjdC5lbnRyaWVzPEV4cG9ydGVkTWVtYmVyVD4oaW1wb3J0ZWQpLm1hcChcbiAgICAoW25hbWUsIHZhbHVlXSkgPT4gKHsgbmFtZSwgdmFsdWUgfSlcbiAgKTtcblxuICByZXR1cm4gYWxsRXhwb3J0ZWRNZW1iZXJzO1xufVxuIl0sIm5hbWVzIjpbImZpbGVVUkxUb1BhdGgiLCJwYXRoVG9GaWxlVVJMIiwiZGlybmFtZSIsImdldEZpbGVuYW1lIiwibWV0YVVybCIsImdldERpcm5hbWUiLCJjcmVhdGVJbXBvcnRVcmwiLCJhYnNvbHV0ZVBhdGgiLCJmaWxlVXJsIiwiaHJlZiIsImlzSG90UmVsb2FkU2VydmVyIiwicHJvY2VzcyIsImVudiIsIkhPVCIsImltcG9ydE1lbWJlcnMiLCJmaWxlUGF0aCIsImltcG9ydGVkIiwiYWxsRXhwb3J0ZWRNZW1iZXJzIiwiT2JqZWN0IiwiZW50cmllcyIsIm1hcCIsIm5hbWUiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsYUFBYSxFQUFFQyxhQUFhLFFBQVEsTUFBTTtBQUNuRCxTQUFTQyxPQUFPLFFBQVEsT0FBTztBQUUvQjs7Ozs7Q0FLQyxHQUNELE9BQU8sU0FBU0MsWUFBWUMsT0FBZTtJQUN6QyxPQUFPSixjQUFjSTtBQUN2QjtBQUVBOzs7OztDQUtDLEdBQ0QsT0FBTyxTQUFTQyxXQUFXRCxPQUFlO0lBQ3hDLE9BQU9GLFFBQVFGLGNBQWNJO0FBQy9CO0FBRUE7Ozs7Ozs7OztDQVNDLEdBQ0QsT0FBTyxTQUFTRSxnQkFDZEMsWUFBb0I7SUFFcEIsTUFBTUMsVUFBVVAsY0FBY00sY0FBY0UsSUFBSTtJQUNoRCxPQUFPRDtBQUNUO0FBRUE7Ozs7Q0FJQyxHQUNELE9BQU8sU0FBU0U7SUFDZCxPQUFPQyxRQUFRQyxHQUFHLENBQUNDLEdBQUcsS0FBSztBQUM3QjtBQUVBOzs7Ozs7OztDQVFDLEdBQ0QsT0FBTyxlQUFlQyxjQUNwQkMsUUFBZ0I7SUFFaEIsTUFBTUMsV0FBVyxNQUFNLE1BQU0sQ0FBQ1YsZ0JBQWdCUztJQUU5QyxNQUFNRSxxQkFBcUJDLE9BQU9DLE9BQU8sQ0FBa0JILFVBQVVJLEdBQUcsQ0FDdEUsQ0FBQyxDQUFDQyxNQUFNQyxNQUFNLEdBQU0sQ0FBQTtZQUFFRDtZQUFNQztRQUFNLENBQUE7SUFHcEMsT0FBT0w7QUFDVCJ9
|
package/dist/utils/fs-utils.js
CHANGED
|
@@ -1,2 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { constants } from "fs";
|
|
2
|
+
import { access } from "node:fs/promises";
|
|
3
|
+
/**
|
|
4
|
+
* fs/promises에는 exists가 없어요. 대신 access가 있습니다.
|
|
5
|
+
* 근데 얘는 인터페이스가 쓰기 불편해요. 그래서 감싸주었습니다.
|
|
6
|
+
* @param path
|
|
7
|
+
* @returns
|
|
8
|
+
*/ export async function exists(path) {
|
|
9
|
+
try {
|
|
10
|
+
await access(path, constants.F_OK);
|
|
11
|
+
return true;
|
|
12
|
+
} catch {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9mcy11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXRoTGlrZSwgY29uc3RhbnRzIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBhY2Nlc3MgfSBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcblxuLyoqXG4gKiBmcy9wcm9taXNlc+yXkOuKlCBleGlzdHPqsIAg7JeG7Ja07JqULiDrjIDsi6AgYWNjZXNz6rCAIOyeiOyKteuLiOuLpC5cbiAqIOq3vOuNsCDslpjripQg7J247YSw7Y6Y7J207Iqk6rCAIOyTsOq4sCDrtojtjrjtlbTsmpQuIOq3uOuemOyEnCDqsJDsi7jso7zsl4jsirXri4jri6QuXG4gKiBAcGFyYW0gcGF0aFxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4aXN0cyhwYXRoOiBQYXRoTGlrZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICB0cnkge1xuICAgIGF3YWl0IGFjY2VzcyhwYXRoLCBjb25zdGFudHMuRl9PSyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbImNvbnN0YW50cyIsImFjY2VzcyIsImV4aXN0cyIsInBhdGgiLCJGX09LIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFtQkEsU0FBUyxRQUFRLEtBQUs7QUFDekMsU0FBU0MsTUFBTSxRQUFRLG1CQUFjO0FBRXJDOzs7OztDQUtDLEdBQ0QsT0FBTyxlQUFlQyxPQUFPQyxJQUFjO0lBQ3pDLElBQUk7UUFDRixNQUFNRixPQUFPRSxNQUFNSCxVQUFVSSxJQUFJO1FBQ2pDLE9BQU87SUFDVCxFQUFFLE9BQU07UUFDTixPQUFPO0lBQ1Q7QUFDRiJ9
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export function wrapIf(source, predicate) {
|
|
2
|
+
const [ok, wrapped] = predicate(source);
|
|
3
|
+
return ok ? wrapped : source;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9sb2Rhc2gtYWJsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gd3JhcElmKFxuICBzb3VyY2U6IHN0cmluZyxcbiAgcHJlZGljYXRlOiAoc3RyOiBzdHJpbmcpID0+IFtib29sZWFuLCBzdHJpbmddXG4pOiBzdHJpbmcge1xuICBjb25zdCBbb2ssIHdyYXBwZWRdID0gcHJlZGljYXRlKHNvdXJjZSk7XG4gIHJldHVybiBvayA/IHdyYXBwZWQgOiBzb3VyY2U7XG59XG4iXSwibmFtZXMiOlsid3JhcElmIiwic291cmNlIiwicHJlZGljYXRlIiwib2siLCJ3cmFwcGVkIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVNBLE9BQ2RDLE1BQWMsRUFDZEMsU0FBNkM7SUFFN0MsTUFBTSxDQUFDQyxJQUFJQyxRQUFRLEdBQUdGLFVBQVVEO0lBQ2hDLE9BQU9FLEtBQUtDLFVBQVVIO0FBQ3hCIn0=
|
package/dist/utils/model.js
CHANGED
|
@@ -1,2 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export function asArray(param) {
|
|
2
|
+
if (Array.isArray(param)) {
|
|
3
|
+
return param;
|
|
4
|
+
} else {
|
|
5
|
+
return [
|
|
6
|
+
param
|
|
7
|
+
];
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export function objToMap(obj) {
|
|
11
|
+
const keys = Object.keys(obj);
|
|
12
|
+
if (keys.every((key)=>parseInt(key).toString() === key)) {
|
|
13
|
+
return new Map(keys.map((key)=>[
|
|
14
|
+
parseInt(key),
|
|
15
|
+
obj[key]
|
|
16
|
+
]));
|
|
17
|
+
} else {
|
|
18
|
+
return new Map(Object.entries(obj));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBMaXN0UmVzdWx0PFQ+ID0ge1xuICByb3dzOiBUW107XG4gIHRvdGFsPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgQXJyYXlPcjxUPiA9IFQgfCBUW107XG5cbmV4cG9ydCBmdW5jdGlvbiBhc0FycmF5PFQ+KHBhcmFtOiBUIHwgVFtdKTogVFtdIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocGFyYW0pKSB7XG4gICAgcmV0dXJuIHBhcmFtO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBbcGFyYW0gYXMgVF0gYXMgVFtdO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYmpUb01hcDxUPihvYmo6IHsgW2s6IHN0cmluZ106IFQgfSkge1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgaWYgKGtleXMuZXZlcnkoKGtleSkgPT4gcGFyc2VJbnQoa2V5KS50b1N0cmluZygpID09PSBrZXkpKSB7XG4gICAgcmV0dXJuIG5ldyBNYXA8bnVtYmVyLCBUPihrZXlzLm1hcCgoa2V5KSA9PiBbcGFyc2VJbnQoa2V5KSwgb2JqW2tleV1dKSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBUPihPYmplY3QuZW50cmllcyhvYmopKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VMaXN0UGFyYW1zIHtcbiAgaWQ/OiBudW1iZXIgfCBudW1iZXJbXTtcbiAgbnVtPzogbnVtYmVyO1xuICBwYWdlPzogbnVtYmVyO1xuICBrZXl3b3JkPzogc3RyaW5nO1xuICBxdWVyeU1vZGU/OiBcImxpc3RcIiB8IFwiY291bnRcIiB8IFwiYm90aFwiO1xufVxuIl0sIm5hbWVzIjpbImFzQXJyYXkiLCJwYXJhbSIsIkFycmF5IiwiaXNBcnJheSIsIm9ialRvTWFwIiwib2JqIiwia2V5cyIsIk9iamVjdCIsImV2ZXJ5Iiwia2V5IiwicGFyc2VJbnQiLCJ0b1N0cmluZyIsIk1hcCIsIm1hcCIsImVudHJpZXMiXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sU0FBU0EsUUFBV0MsS0FBYztJQUN2QyxJQUFJQyxNQUFNQyxPQUFPLENBQUNGLFFBQVE7UUFDeEIsT0FBT0E7SUFDVCxPQUFPO1FBQ0wsT0FBTztZQUFDQTtTQUFXO0lBQ3JCO0FBQ0Y7QUFFQSxPQUFPLFNBQVNHLFNBQVlDLEdBQXVCO0lBQ2pELE1BQU1DLE9BQU9DLE9BQU9ELElBQUksQ0FBQ0Q7SUFDekIsSUFBSUMsS0FBS0UsS0FBSyxDQUFDLENBQUNDLE1BQVFDLFNBQVNELEtBQUtFLFFBQVEsT0FBT0YsTUFBTTtRQUN6RCxPQUFPLElBQUlHLElBQWVOLEtBQUtPLEdBQUcsQ0FBQyxDQUFDSixNQUFRO2dCQUFDQyxTQUFTRDtnQkFBTUosR0FBRyxDQUFDSSxJQUFJO2FBQUM7SUFDdkUsT0FBTztRQUNMLE9BQU8sSUFBSUcsSUFBZUwsT0FBT08sT0FBTyxDQUFDVDtJQUMzQztBQUNGIn0=
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API 패키지 내부 상대 경로 (src/ 또는 dist/로 시작)
|
|
3
|
+
*
|
|
4
|
+
* **사용 위치**: API 패키지 내부 파일 참조
|
|
5
|
+
* **예시**:
|
|
6
|
+
* - `"src/application/user/user.model.ts"`
|
|
7
|
+
* - `"dist/application/user/user.model.js"`
|
|
8
|
+
*
|
|
9
|
+
* **기준점**: `Sonamu.apiRootPath` (일반적으로 프로젝트의 `/api` 디렉토리)
|
|
10
|
+
*/
|
|
11
|
+
export type ApiRelativePath = `${"src" | "dist"}/${string}` | 'sonamu.config.ts';
|
|
12
|
+
/**
|
|
13
|
+
* 앱 루트 기준 상대 경로 (api/, web/ 등 타겟 디렉토리로 시작)
|
|
14
|
+
*
|
|
15
|
+
* **사용 위치**: 다른 타겟(api, web 등)의 파일 참조
|
|
16
|
+
* **예시**:
|
|
17
|
+
* - `"api/src/application/user/user.model.ts"`
|
|
18
|
+
* - `"web/src/pages/admin/users/index.tsx"`
|
|
19
|
+
* - `"app/dist/index.js"`
|
|
20
|
+
*
|
|
21
|
+
* **기준점**: `Sonamu.appRootPath` (일반적으로 모노레포 루트)
|
|
22
|
+
*/
|
|
23
|
+
export type AppRelativePath = `${string}/${"src" | "dist"}/${string}`;
|
|
24
|
+
/**
|
|
25
|
+
* 시스템 절대 경로 (루트 / 부터 시작)
|
|
26
|
+
*
|
|
27
|
+
* **사용 위치**: 파일시스템 직접 접근, glob 패턴
|
|
28
|
+
* **예시**: `"/Users/potados/Projects/sonamu/api/src/application/user/user.model.ts"`
|
|
29
|
+
*
|
|
30
|
+
* **중요**:
|
|
31
|
+
* - import 시에는 로더가 알아서 src/dist 변환해주므로 어느 경로든 가능
|
|
32
|
+
* - fs 직접 접근 시에는 실제 존재하는 경로를 사용해야 함
|
|
33
|
+
* - Dev: src/*.ts 경로 사용
|
|
34
|
+
* - Prod: dist/*.js 경로 사용
|
|
35
|
+
*/
|
|
36
|
+
export type AbsolutePath = `/${string}`;
|
|
37
|
+
/**
|
|
38
|
+
* 어떤 경로가 들어오든, 현재 실행 환경에 맞는 경로로 바꿔줍니다.
|
|
39
|
+
*
|
|
40
|
+
* "src/application/user/user.model.ts"가 들어왔을 때 개발 모드라면?
|
|
41
|
+
* -> "src/application/user/user.model.ts"
|
|
42
|
+
* "src/application/user/user.model.ts"가 들어왔을 때 배포 모드라면?
|
|
43
|
+
* -> "dist/application/user/user.model.js"
|
|
44
|
+
* "dist/application/user/user.model.js"가 들어왔을 때 개발 모드라면?
|
|
45
|
+
* -> "src/application/user/user.model.ts"
|
|
46
|
+
* "dist/application/user/user.model.js"가 들어왔을 때 배포 모드라면?
|
|
47
|
+
* -> "dist/application/user/user.model.js"
|
|
48
|
+
*
|
|
49
|
+
* "/src/application/user/user.model.ts"가 들어왔을 때 개발 모드라면?
|
|
50
|
+
* -> "/src/application/user/user.model.ts"
|
|
51
|
+
* "/src/application/user/user.model.ts"가 들어왔을 때 배포 모드라면?
|
|
52
|
+
* -> "/dist/application/user/user.model.js"
|
|
53
|
+
* "/dist/application/user/user.model.js"가 들어왔을 때 개발 모드라면?
|
|
54
|
+
* -> "/dist/application/user/user.model.js"
|
|
55
|
+
* "/dist/application/user/user.model.js"가 들어왔을 때 배포 모드라면?
|
|
56
|
+
* -> "/dist/application/user/user.model.js"
|
|
57
|
+
*
|
|
58
|
+
* "/Users/potados/Projects/sonamu/api/src/application/user/user.model.ts"가 들어왔을 때 개발 모드라면?
|
|
59
|
+
* -> "/Users/potados/Projects/sonamu/api/src/application/user/user.model.ts"
|
|
60
|
+
* "/Users/potados/Projects/sonamu/api/src/application/user/user.model.ts"가 들어왔을 때 배포 모드라면?
|
|
61
|
+
* -> "/Users/potados/Projects/sonamu/api/dist/application/user/user.model.js"
|
|
62
|
+
* "/Users/potados/Projects/sonamu/api/dist/application/user/user.model.js"가 들어왔을 때 개발 모드라면?
|
|
63
|
+
* -> "/Users/potados/Projects/sonamu/api/src/application/user/user.model.ts"
|
|
64
|
+
* "/Users/potados/Projects/sonamu/api/dist/application/user/user.model.js"가 들어왔을 때 배포 모드라면?
|
|
65
|
+
* -> "/Users/potados/Projects/sonamu/api/dist/application/user/user.model.js"
|
|
66
|
+
*
|
|
67
|
+
* "src/application/user/user.model.ts?hot=1234567890"가 들어왔을 때 개발 모드라면?
|
|
68
|
+
* -> "src/application/user/user.model.ts?hot=1234567890"
|
|
69
|
+
* "src/application/user/user.model.ts?hot=1234567890"가 들어왔을 때 배포 모드라면?
|
|
70
|
+
* -> "dist/application/user/user.model.js?hot=1234567890"
|
|
71
|
+
* "dist/application/user/user.model.js?hot=1234567890"가 들어왔을 때 개발 모드라면?
|
|
72
|
+
* -> "src/application/user/user.model.ts?hot=1234567890"
|
|
73
|
+
* "dist/application/user/user.model.js?hot=1234567890"가 들어왔을 때 배포 모드라면?
|
|
74
|
+
* -> "dist/application/user/user.model.js?hot=1234567890"
|
|
75
|
+
*
|
|
76
|
+
* "/Users/potados/Projects/sonamu/api/src/application/user/user.model.ts?hot=1234567890"가 들어왔을 때 개발 모드라면?
|
|
77
|
+
* -> "/Users/potados/Projects/sonamu/api/src/application/user/user.model.ts?hot=1234567890"
|
|
78
|
+
* "/Users/potados/Projects/sonamu/api/src/application/user/user.model.ts?hot=1234567890"가 들어왔을 때 배포 모드라면?
|
|
79
|
+
* -> "/Users/potados/Projects/sonamu/api/dist/application/user/user.model.js?hot=1234567890"
|
|
80
|
+
* "/Users/potados/Projects/sonamu/api/dist/application/user/user.model.js?hot=1234567890"가 들어왔을 때 개발 모드라면?
|
|
81
|
+
* -> "/Users/potados/Projects/sonamu/api/src/application/user/user.model.ts?hot=1234567890"
|
|
82
|
+
* "/Users/potados/Projects/sonamu/api/dist/application/user/user.model.js?hot=1234567890"가 들어왔을 때 배포 모드라면?
|
|
83
|
+
* -> "/Users/potados/Projects/sonamu/api/dist/application/user/user.model.js?hot=1234567890"
|
|
84
|
+
*
|
|
85
|
+
* @param anyPath
|
|
86
|
+
* @returns
|
|
87
|
+
*/
|
|
88
|
+
export declare function runtimePath(anyPath: string, isDev?: boolean): string;
|
|
89
|
+
//# sourceMappingURL=path-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-utils.d.ts","sourceRoot":"","sources":["../../src/utils/path-utils.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,MAAM,MAAM,eAAe,GAAG,GAAG,KAAK,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,kBAAkB,CAAC;AAEjF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,eAAe,GAAG,GAAG,MAAM,IAAI,KAAK,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;AAEtE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,YAAY,GAAG,IAAI,MAAM,EAAE,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,OAA6B,GACnC,MAAM,CAMR"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { isHotReloadServer } from "./esm-utils.js";
|
|
2
|
+
/**
|
|
3
|
+
* 어떤 경로가 들어오든, 현재 실행 환경에 맞는 경로로 바꿔줍니다.
|
|
4
|
+
*
|
|
5
|
+
* "src/application/user/user.model.ts"가 들어왔을 때 개발 모드라면?
|
|
6
|
+
* -> "src/application/user/user.model.ts"
|
|
7
|
+
* "src/application/user/user.model.ts"가 들어왔을 때 배포 모드라면?
|
|
8
|
+
* -> "dist/application/user/user.model.js"
|
|
9
|
+
* "dist/application/user/user.model.js"가 들어왔을 때 개발 모드라면?
|
|
10
|
+
* -> "src/application/user/user.model.ts"
|
|
11
|
+
* "dist/application/user/user.model.js"가 들어왔을 때 배포 모드라면?
|
|
12
|
+
* -> "dist/application/user/user.model.js"
|
|
13
|
+
*
|
|
14
|
+
* "/src/application/user/user.model.ts"가 들어왔을 때 개발 모드라면?
|
|
15
|
+
* -> "/src/application/user/user.model.ts"
|
|
16
|
+
* "/src/application/user/user.model.ts"가 들어왔을 때 배포 모드라면?
|
|
17
|
+
* -> "/dist/application/user/user.model.js"
|
|
18
|
+
* "/dist/application/user/user.model.js"가 들어왔을 때 개발 모드라면?
|
|
19
|
+
* -> "/dist/application/user/user.model.js"
|
|
20
|
+
* "/dist/application/user/user.model.js"가 들어왔을 때 배포 모드라면?
|
|
21
|
+
* -> "/dist/application/user/user.model.js"
|
|
22
|
+
*
|
|
23
|
+
* "/Users/potados/Projects/sonamu/api/src/application/user/user.model.ts"가 들어왔을 때 개발 모드라면?
|
|
24
|
+
* -> "/Users/potados/Projects/sonamu/api/src/application/user/user.model.ts"
|
|
25
|
+
* "/Users/potados/Projects/sonamu/api/src/application/user/user.model.ts"가 들어왔을 때 배포 모드라면?
|
|
26
|
+
* -> "/Users/potados/Projects/sonamu/api/dist/application/user/user.model.js"
|
|
27
|
+
* "/Users/potados/Projects/sonamu/api/dist/application/user/user.model.js"가 들어왔을 때 개발 모드라면?
|
|
28
|
+
* -> "/Users/potados/Projects/sonamu/api/src/application/user/user.model.ts"
|
|
29
|
+
* "/Users/potados/Projects/sonamu/api/dist/application/user/user.model.js"가 들어왔을 때 배포 모드라면?
|
|
30
|
+
* -> "/Users/potados/Projects/sonamu/api/dist/application/user/user.model.js"
|
|
31
|
+
*
|
|
32
|
+
* "src/application/user/user.model.ts?hot=1234567890"가 들어왔을 때 개발 모드라면?
|
|
33
|
+
* -> "src/application/user/user.model.ts?hot=1234567890"
|
|
34
|
+
* "src/application/user/user.model.ts?hot=1234567890"가 들어왔을 때 배포 모드라면?
|
|
35
|
+
* -> "dist/application/user/user.model.js?hot=1234567890"
|
|
36
|
+
* "dist/application/user/user.model.js?hot=1234567890"가 들어왔을 때 개발 모드라면?
|
|
37
|
+
* -> "src/application/user/user.model.ts?hot=1234567890"
|
|
38
|
+
* "dist/application/user/user.model.js?hot=1234567890"가 들어왔을 때 배포 모드라면?
|
|
39
|
+
* -> "dist/application/user/user.model.js?hot=1234567890"
|
|
40
|
+
*
|
|
41
|
+
* "/Users/potados/Projects/sonamu/api/src/application/user/user.model.ts?hot=1234567890"가 들어왔을 때 개발 모드라면?
|
|
42
|
+
* -> "/Users/potados/Projects/sonamu/api/src/application/user/user.model.ts?hot=1234567890"
|
|
43
|
+
* "/Users/potados/Projects/sonamu/api/src/application/user/user.model.ts?hot=1234567890"가 들어왔을 때 배포 모드라면?
|
|
44
|
+
* -> "/Users/potados/Projects/sonamu/api/dist/application/user/user.model.js?hot=1234567890"
|
|
45
|
+
* "/Users/potados/Projects/sonamu/api/dist/application/user/user.model.js?hot=1234567890"가 들어왔을 때 개발 모드라면?
|
|
46
|
+
* -> "/Users/potados/Projects/sonamu/api/src/application/user/user.model.ts?hot=1234567890"
|
|
47
|
+
* "/Users/potados/Projects/sonamu/api/dist/application/user/user.model.js?hot=1234567890"가 들어왔을 때 배포 모드라면?
|
|
48
|
+
* -> "/Users/potados/Projects/sonamu/api/dist/application/user/user.model.js?hot=1234567890"
|
|
49
|
+
*
|
|
50
|
+
* @param anyPath
|
|
51
|
+
* @returns
|
|
52
|
+
*/ export function runtimePath(anyPath, isDev = isHotReloadServer()) {
|
|
53
|
+
if (isDev) {
|
|
54
|
+
return anyPath.replace(/dist\//, "src/").replace(/\.js/, ".ts");
|
|
55
|
+
} else {
|
|
56
|
+
return anyPath.replace(/src\//, "dist/").replace(/\.ts/, ".js");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9wYXRoLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzSG90UmVsb2FkU2VydmVyIH0gZnJvbSBcIi4vZXNtLXV0aWxzLmpzXCI7XG5cbi8qKlxuICogQVBJIO2MqO2CpOyngCDrgrTrtoAg7IOB64yAIOqyveuhnCAoc3JjLyDrmJDripQgZGlzdC/roZwg7Iuc7J6RKVxuICpcbiAqICoq7IKs7JqpIOychOy5mCoqOiBBUEkg7Yyo7YKk7KeAIOuCtOu2gCDtjIzsnbwg7LC47KGwXG4gKiAqKuyYiOyLnCoqOlxuICogLSBgXCJzcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzXCJgXG4gKiAtIGBcImRpc3QvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLmpzXCJgXG4gKlxuICogKirquLDspIDsoJAqKjogYFNvbmFtdS5hcGlSb290UGF0aGAgKOydvOuwmOyggeycvOuhnCDtlITroZzsoJ3tirjsnZggYC9hcGlgIOuUlOugie2GoOumrClcbiAqL1xuZXhwb3J0IHR5cGUgQXBpUmVsYXRpdmVQYXRoID0gYCR7XCJzcmNcIiB8IFwiZGlzdFwifS8ke3N0cmluZ31gIHwgJ3NvbmFtdS5jb25maWcudHMnO1xuXG4vKipcbiAqIOyVsSDro6jtirgg6riw7KSAIOyDgeuMgCDqsr3roZwgKGFwaS8sIHdlYi8g65OxIO2DgOqynyDrlJTroInthqDrpqzroZwg7Iuc7J6RKVxuICpcbiAqICoq7IKs7JqpIOychOy5mCoqOiDri6Trpbgg7YOA6rKfKGFwaSwgd2ViIOuTsSnsnZgg7YyM7J28IOywuOyhsFxuICogKirsmIjsi5wqKjpcbiAqIC0gYFwiYXBpL3NyYy9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwudHNcImBcbiAqIC0gYFwid2ViL3NyYy9wYWdlcy9hZG1pbi91c2Vycy9pbmRleC50c3hcImBcbiAqIC0gYFwiYXBwL2Rpc3QvaW5kZXguanNcImBcbiAqXG4gKiAqKuq4sOykgOygkCoqOiBgU29uYW11LmFwcFJvb3RQYXRoYCAo7J2867CY7KCB7Jy866GcIOuqqOuFuOugiO2PrCDro6jtirgpXG4gKi9cbmV4cG9ydCB0eXBlIEFwcFJlbGF0aXZlUGF0aCA9IGAke3N0cmluZ30vJHtcInNyY1wiIHwgXCJkaXN0XCJ9LyR7c3RyaW5nfWA7XG5cbi8qKlxuICog7Iuc7Iqk7YWcIOygiOuMgCDqsr3roZwgKOujqO2KuCAvIOu2gO2EsCDsi5zsnpEpXG4gKlxuICogKirsgqzsmqkg7JyE7LmYKio6IO2MjOydvOyLnOyKpO2FnCDsp4HsoJEg7KCR6re8LCBnbG9iIO2MqO2EtFxuICogKirsmIjsi5wqKjogYFwiL1VzZXJzL3BvdGFkb3MvUHJvamVjdHMvc29uYW11L2FwaS9zcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzXCJgXG4gKlxuICogKirspJHsmpQqKjpcbiAqIC0gaW1wb3J0IOyLnOyXkOuKlCDroZzrjZTqsIAg7JWM7JWE7IScIHNyYy9kaXN0IOuzgO2ZmO2VtOyjvOuvgOuhnCDslrTripAg6rK966Gc65OgIOqwgOuKpVxuICogLSBmcyDsp4HsoJEg7KCR6re8IOyLnOyXkOuKlCDsi6TsoJwg7KG07J6s7ZWY64qUIOqyveuhnOulvCDsgqzsmqntlbTslbwg7ZWoXG4gKiAgIC0gRGV2OiBzcmMvKi50cyDqsr3roZwg7IKs7JqpXG4gKiAgIC0gUHJvZDogZGlzdC8qLmpzIOqyveuhnCDsgqzsmqlcbiAqL1xuZXhwb3J0IHR5cGUgQWJzb2x1dGVQYXRoID0gYC8ke3N0cmluZ31gO1xuXG4vKipcbiAqIOyWtOuWpCDqsr3roZzqsIAg65Ok7Ja07Jik65OgLCDtmITsnqwg7Iuk7ZaJIO2ZmOqyveyXkCDrp57ripQg6rK966Gc66GcIOuwlOq/lOykjeuLiOuLpC5cbiAqXG4gKiBcInNyYy9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwudHNcIuqwgCDrk6TslrTsmZTsnYQg65WMIOqwnOuwnCDrqqjrk5zrnbzrqbQ/XG4gKiAtPiBcInNyYy9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwudHNcIlxuICogXCJzcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzXCLqsIAg65Ok7Ja07JmU7J2EIOuVjCDrsLDtj6wg66qo65Oc652866m0P1xuICogLT4gXCJkaXN0L2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC5qc1wiXG4gKiBcImRpc3QvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLmpzXCLqsIAg65Ok7Ja07JmU7J2EIOuVjCDqsJzrsJwg66qo65Oc652866m0P1xuICogLT4gXCJzcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzXCJcbiAqIFwiZGlzdC9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwuanNcIuqwgCDrk6TslrTsmZTsnYQg65WMIOuwsO2PrCDrqqjrk5zrnbzrqbQ/XG4gKiAtPiBcImRpc3QvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLmpzXCJcbiAqXG4gKiBcIi9zcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzXCLqsIAg65Ok7Ja07JmU7J2EIOuVjCDqsJzrsJwg66qo65Oc652866m0P1xuICogLT4gXCIvc3JjL2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC50c1wiXG4gKiBcIi9zcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzXCLqsIAg65Ok7Ja07JmU7J2EIOuVjCDrsLDtj6wg66qo65Oc652866m0P1xuICogLT4gXCIvZGlzdC9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwuanNcIlxuICogXCIvZGlzdC9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwuanNcIuqwgCDrk6TslrTsmZTsnYQg65WMIOqwnOuwnCDrqqjrk5zrnbzrqbQ/XG4gKiAtPiBcIi9kaXN0L2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC5qc1wiXG4gKiBcIi9kaXN0L2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC5qc1wi6rCAIOuTpOyWtOyZlOydhCDrlYwg67Cw7Y+sIOuqqOuTnOudvOuptD9cbiAqIC0+IFwiL2Rpc3QvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLmpzXCJcbiAqXG4gKiBcIi9Vc2Vycy9wb3RhZG9zL1Byb2plY3RzL3NvbmFtdS9hcGkvc3JjL2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC50c1wi6rCAIOuTpOyWtOyZlOydhCDrlYwg6rCc67CcIOuqqOuTnOudvOuptD9cbiAqIC0+IFwiL1VzZXJzL3BvdGFkb3MvUHJvamVjdHMvc29uYW11L2FwaS9zcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzXCJcbiAqIFwiL1VzZXJzL3BvdGFkb3MvUHJvamVjdHMvc29uYW11L2FwaS9zcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzXCLqsIAg65Ok7Ja07JmU7J2EIOuVjCDrsLDtj6wg66qo65Oc652866m0P1xuICogLT4gXCIvVXNlcnMvcG90YWRvcy9Qcm9qZWN0cy9zb25hbXUvYXBpL2Rpc3QvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLmpzXCJcbiAqIFwiL1VzZXJzL3BvdGFkb3MvUHJvamVjdHMvc29uYW11L2FwaS9kaXN0L2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC5qc1wi6rCAIOuTpOyWtOyZlOydhCDrlYwg6rCc67CcIOuqqOuTnOudvOuptD9cbiAqIC0+IFwiL1VzZXJzL3BvdGFkb3MvUHJvamVjdHMvc29uYW11L2FwaS9zcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzXCJcbiAqIFwiL1VzZXJzL3BvdGFkb3MvUHJvamVjdHMvc29uYW11L2FwaS9kaXN0L2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC5qc1wi6rCAIOuTpOyWtOyZlOydhCDrlYwg67Cw7Y+sIOuqqOuTnOudvOuptD9cbiAqIC0+IFwiL1VzZXJzL3BvdGFkb3MvUHJvamVjdHMvc29uYW11L2FwaS9kaXN0L2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC5qc1wiXG4gKlxuICogXCJzcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzP2hvdD0xMjM0NTY3ODkwXCLqsIAg65Ok7Ja07JmU7J2EIOuVjCDqsJzrsJwg66qo65Oc652866m0P1xuICogLT4gXCJzcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzP2hvdD0xMjM0NTY3ODkwXCJcbiAqIFwic3JjL2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC50cz9ob3Q9MTIzNDU2Nzg5MFwi6rCAIOuTpOyWtOyZlOydhCDrlYwg67Cw7Y+sIOuqqOuTnOudvOuptD9cbiAqIC0+IFwiZGlzdC9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwuanM/aG90PTEyMzQ1Njc4OTBcIlxuICogXCJkaXN0L2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC5qcz9ob3Q9MTIzNDU2Nzg5MFwi6rCAIOuTpOyWtOyZlOydhCDrlYwg6rCc67CcIOuqqOuTnOudvOuptD9cbiAqIC0+IFwic3JjL2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC50cz9ob3Q9MTIzNDU2Nzg5MFwiXG4gKiBcImRpc3QvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLmpzP2hvdD0xMjM0NTY3ODkwXCLqsIAg65Ok7Ja07JmU7J2EIOuVjCDrsLDtj6wg66qo65Oc652866m0P1xuICogLT4gXCJkaXN0L2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC5qcz9ob3Q9MTIzNDU2Nzg5MFwiXG4gKlxuICogXCIvVXNlcnMvcG90YWRvcy9Qcm9qZWN0cy9zb25hbXUvYXBpL3NyYy9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwudHM/aG90PTEyMzQ1Njc4OTBcIuqwgCDrk6TslrTsmZTsnYQg65WMIOqwnOuwnCDrqqjrk5zrnbzrqbQ/XG4gKiAtPiBcIi9Vc2Vycy9wb3RhZG9zL1Byb2plY3RzL3NvbmFtdS9hcGkvc3JjL2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC50cz9ob3Q9MTIzNDU2Nzg5MFwiXG4gKiBcIi9Vc2Vycy9wb3RhZG9zL1Byb2plY3RzL3NvbmFtdS9hcGkvc3JjL2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC50cz9ob3Q9MTIzNDU2Nzg5MFwi6rCAIOuTpOyWtOyZlOydhCDrlYwg67Cw7Y+sIOuqqOuTnOudvOuptD9cbiAqIC0+IFwiL1VzZXJzL3BvdGFkb3MvUHJvamVjdHMvc29uYW11L2FwaS9kaXN0L2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC5qcz9ob3Q9MTIzNDU2Nzg5MFwiXG4gKiBcIi9Vc2Vycy9wb3RhZG9zL1Byb2plY3RzL3NvbmFtdS9hcGkvZGlzdC9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwuanM/aG90PTEyMzQ1Njc4OTBcIuqwgCDrk6TslrTsmZTsnYQg65WMIOqwnOuwnCDrqqjrk5zrnbzrqbQ/XG4gKiAtPiBcIi9Vc2Vycy9wb3RhZG9zL1Byb2plY3RzL3NvbmFtdS9hcGkvc3JjL2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC50cz9ob3Q9MTIzNDU2Nzg5MFwiXG4gKiBcIi9Vc2Vycy9wb3RhZG9zL1Byb2plY3RzL3NvbmFtdS9hcGkvZGlzdC9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwuanM/aG90PTEyMzQ1Njc4OTBcIuqwgCDrk6TslrTsmZTsnYQg65WMIOuwsO2PrCDrqqjrk5zrnbzrqbQ/XG4gKiAtPiBcIi9Vc2Vycy9wb3RhZG9zL1Byb2plY3RzL3NvbmFtdS9hcGkvZGlzdC9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwuanM/aG90PTEyMzQ1Njc4OTBcIlxuICpcbiAqIEBwYXJhbSBhbnlQYXRoXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcnVudGltZVBhdGgoXG4gIGFueVBhdGg6IHN0cmluZyxcbiAgaXNEZXY6IGJvb2xlYW4gPSBpc0hvdFJlbG9hZFNlcnZlcigpXG4pOiBzdHJpbmcge1xuICBpZiAoaXNEZXYpIHtcbiAgICByZXR1cm4gYW55UGF0aC5yZXBsYWNlKC9kaXN0XFwvLywgXCJzcmMvXCIpLnJlcGxhY2UoL1xcLmpzLywgXCIudHNcIik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGFueVBhdGgucmVwbGFjZSgvc3JjXFwvLywgXCJkaXN0L1wiKS5yZXBsYWNlKC9cXC50cy8sIFwiLmpzXCIpO1xuICB9XG59XG4iXSwibmFtZXMiOlsiaXNIb3RSZWxvYWRTZXJ2ZXIiLCJydW50aW1lUGF0aCIsImFueVBhdGgiLCJpc0RldiIsInJlcGxhY2UiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGlCQUFpQixRQUFRLGlCQUFpQjtBQXlDbkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBa0RDLEdBQ0QsT0FBTyxTQUFTQyxZQUNkQyxPQUFlLEVBQ2ZDLFFBQWlCSCxtQkFBbUI7SUFFcEMsSUFBSUcsT0FBTztRQUNULE9BQU9ELFFBQVFFLE9BQU8sQ0FBQyxVQUFVLFFBQVFBLE9BQU8sQ0FBQyxRQUFRO0lBQzNELE9BQU87UUFDTCxPQUFPRixRQUFRRSxPQUFPLENBQUMsU0FBUyxTQUFTQSxPQUFPLENBQUMsUUFBUTtJQUMzRDtBQUNGIn0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 주어진 작업을 실행합니다.
|
|
3
|
+
* 주어진 프로세스 이벤트(=시그널)가 발생하였을 때에도 최대 한계(delayBeforeShutdown) 동안 작업을 기다린 후 종료합니다.
|
|
4
|
+
* @param {() => Promise<void>} job - 실행할 작업
|
|
5
|
+
* @param {event: NodeJS.Signals; delayBeforeShutdown: number} options - 옵션
|
|
6
|
+
* @param {NodeJS.Signals} options.event - 프로세스 이벤트
|
|
7
|
+
* @param {number} options.delayBeforeShutdown - 최대 한계 시간
|
|
8
|
+
*/
|
|
9
|
+
export declare function runWithGracefulShutdown(job: () => Promise<void>, { whenThisHappens: event, waitForUpTo: delayBeforeShutdown, }?: {
|
|
10
|
+
whenThisHappens: NodeJS.Signals;
|
|
11
|
+
waitForUpTo: number;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=process-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-utils.d.ts","sourceRoot":"","sources":["../../src/utils/process-utils.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACxB,EACE,eAAe,EAAE,KAAK,EACtB,WAAW,EAAE,mBAAmB,GACjC,GAAE;IAAE,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAGxD,GACA,OAAO,CAAC,IAAI,CAAC,CAyBf"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { setTimeout as setTimeoutPromises } from "node:timers/promises";
|
|
3
|
+
/**
|
|
4
|
+
* 주어진 작업을 실행합니다.
|
|
5
|
+
* 주어진 프로세스 이벤트(=시그널)가 발생하였을 때에도 최대 한계(delayBeforeShutdown) 동안 작업을 기다린 후 종료합니다.
|
|
6
|
+
* @param {() => Promise<void>} job - 실행할 작업
|
|
7
|
+
* @param {event: NodeJS.Signals; delayBeforeShutdown: number} options - 옵션
|
|
8
|
+
* @param {NodeJS.Signals} options.event - 프로세스 이벤트
|
|
9
|
+
* @param {number} options.delayBeforeShutdown - 최대 한계 시간
|
|
10
|
+
*/ export async function runWithGracefulShutdown(job, { whenThisHappens: event, waitForUpTo: delayBeforeShutdown } = {
|
|
11
|
+
whenThisHappens: "SIGUSR2",
|
|
12
|
+
waitForUpTo: 20000
|
|
13
|
+
}) {
|
|
14
|
+
let isRunning = true;
|
|
15
|
+
const abortController = new AbortController();
|
|
16
|
+
const onEvent = async ()=>{
|
|
17
|
+
if (!isRunning) {
|
|
18
|
+
process.exit(0);
|
|
19
|
+
}
|
|
20
|
+
console.log(chalk.magentaBright(`wait for syncing done....`));
|
|
21
|
+
try {
|
|
22
|
+
await setTimeoutPromises(delayBeforeShutdown, "waiting-sync", {
|
|
23
|
+
signal: abortController.signal
|
|
24
|
+
});
|
|
25
|
+
} catch {}
|
|
26
|
+
console.log(chalk.magentaBright(`Syncing DONE!`));
|
|
27
|
+
process.exit(0);
|
|
28
|
+
};
|
|
29
|
+
process.on(event, onEvent);
|
|
30
|
+
await job();
|
|
31
|
+
isRunning = false;
|
|
32
|
+
abortController.abort();
|
|
33
|
+
process.off(event, onEvent);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9wcm9jZXNzLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IHNldFRpbWVvdXQgYXMgc2V0VGltZW91dFByb21pc2VzIH0gZnJvbSBcInRpbWVycy9wcm9taXNlc1wiO1xuXG4vKipcbiAqIOyjvOyWtOynhCDsnpHsl4XsnYQg7Iuk7ZaJ7ZWp64uI64ukLlxuICog7KO87Ja07KeEIO2UhOuhnOyEuOyKpCDsnbTrsqTtirgoPeyLnOq3uOuEkCnqsIAg67Cc7IOd7ZWY7JiA7J2EIOuVjOyXkOuPhCDstZzrjIAg7ZWc6rOEKGRlbGF5QmVmb3JlU2h1dGRvd24pIOuPmeyViCDsnpHsl4XsnYQg6riw64uk66awIO2bhCDsooXro4ztlanri4jri6QuXG4gKiBAcGFyYW0geygpID0+IFByb21pc2U8dm9pZD59IGpvYiAtIOyLpO2Wie2VoCDsnpHsl4VcbiAqIEBwYXJhbSB7ZXZlbnQ6IE5vZGVKUy5TaWduYWxzOyBkZWxheUJlZm9yZVNodXRkb3duOiBudW1iZXJ9IG9wdGlvbnMgLSDsmLXshZhcbiAqIEBwYXJhbSB7Tm9kZUpTLlNpZ25hbHN9IG9wdGlvbnMuZXZlbnQgLSDtlITroZzshLjsiqQg7J2067Kk7Yq4XG4gKiBAcGFyYW0ge251bWJlcn0gb3B0aW9ucy5kZWxheUJlZm9yZVNodXRkb3duIC0g7LWc64yAIO2VnOqzhCDsi5zqsIRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldpdGhHcmFjZWZ1bFNodXRkb3duKFxuICBqb2I6ICgpID0+IFByb21pc2U8dm9pZD4sXG4gIHtcbiAgICB3aGVuVGhpc0hhcHBlbnM6IGV2ZW50LFxuICAgIHdhaXRGb3JVcFRvOiBkZWxheUJlZm9yZVNodXRkb3duLFxuICB9OiB7IHdoZW5UaGlzSGFwcGVuczogTm9kZUpTLlNpZ25hbHM7IHdhaXRGb3JVcFRvOiBudW1iZXIgfSA9IHtcbiAgICB3aGVuVGhpc0hhcHBlbnM6IFwiU0lHVVNSMlwiLFxuICAgIHdhaXRGb3JVcFRvOiAyMDAwMCxcbiAgfVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGxldCBpc1J1bm5pbmcgPSB0cnVlIGFzIGJvb2xlYW47XG5cbiAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICBjb25zdCBvbkV2ZW50ID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghaXNSdW5uaW5nKSB7XG4gICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKGNoYWxrLm1hZ2VudGFCcmlnaHQoYHdhaXQgZm9yIHN5bmNpbmcgZG9uZS4uLi5gKSk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgc2V0VGltZW91dFByb21pc2VzKGRlbGF5QmVmb3JlU2h1dGRvd24sIFwid2FpdGluZy1zeW5jXCIsIHtcbiAgICAgICAgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCB7fVxuICAgIGNvbnNvbGUubG9nKGNoYWxrLm1hZ2VudGFCcmlnaHQoYFN5bmNpbmcgRE9ORSFgKSk7XG4gICAgcHJvY2Vzcy5leGl0KDApO1xuICB9O1xuICBwcm9jZXNzLm9uKGV2ZW50LCBvbkV2ZW50KTtcblxuICBhd2FpdCBqb2IoKTtcblxuICBpc1J1bm5pbmcgPSBmYWxzZTtcbiAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gIHByb2Nlc3Mub2ZmKGV2ZW50LCBvbkV2ZW50KTtcbn1cbiJdLCJuYW1lcyI6WyJjaGFsayIsInNldFRpbWVvdXQiLCJzZXRUaW1lb3V0UHJvbWlzZXMiLCJydW5XaXRoR3JhY2VmdWxTaHV0ZG93biIsImpvYiIsIndoZW5UaGlzSGFwcGVucyIsImV2ZW50Iiwid2FpdEZvclVwVG8iLCJkZWxheUJlZm9yZVNodXRkb3duIiwiaXNSdW5uaW5nIiwiYWJvcnRDb250cm9sbGVyIiwiQWJvcnRDb250cm9sbGVyIiwib25FdmVudCIsInByb2Nlc3MiLCJleGl0IiwiY29uc29sZSIsImxvZyIsIm1hZ2VudGFCcmlnaHQiLCJzaWduYWwiLCJvbiIsImFib3J0Iiwib2ZmIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxXQUFXLFFBQVE7QUFDMUIsU0FBU0MsY0FBY0Msa0JBQWtCLFFBQVEsdUJBQWtCO0FBRW5FOzs7Ozs7O0NBT0MsR0FDRCxPQUFPLGVBQWVDLHdCQUNwQkMsR0FBd0IsRUFDeEIsRUFDRUMsaUJBQWlCQyxLQUFLLEVBQ3RCQyxhQUFhQyxtQkFBbUIsRUFDeUIsR0FBRztJQUM1REgsaUJBQWlCO0lBQ2pCRSxhQUFhO0FBQ2YsQ0FBQztJQUVELElBQUlFLFlBQVk7SUFFaEIsTUFBTUMsa0JBQWtCLElBQUlDO0lBQzVCLE1BQU1DLFVBQVU7UUFDZCxJQUFJLENBQUNILFdBQVc7WUFDZEksUUFBUUMsSUFBSSxDQUFDO1FBQ2Y7UUFDQUMsUUFBUUMsR0FBRyxDQUFDaEIsTUFBTWlCLGFBQWEsQ0FBQyxDQUFDLHlCQUF5QixDQUFDO1FBRTNELElBQUk7WUFDRixNQUFNZixtQkFBbUJNLHFCQUFxQixnQkFBZ0I7Z0JBQzVEVSxRQUFRUixnQkFBZ0JRLE1BQU07WUFDaEM7UUFDRixFQUFFLE9BQU0sQ0FBQztRQUNUSCxRQUFRQyxHQUFHLENBQUNoQixNQUFNaUIsYUFBYSxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQy9DSixRQUFRQyxJQUFJLENBQUM7SUFDZjtJQUNBRCxRQUFRTSxFQUFFLENBQUNiLE9BQU9NO0lBRWxCLE1BQU1SO0lBRU5LLFlBQVk7SUFDWkMsZ0JBQWdCVSxLQUFLO0lBQ3JCUCxRQUFRUSxHQUFHLENBQUNmLE9BQU9NO0FBQ3JCIn0=
|
package/dist/utils/sql-parser.js
CHANGED
|
@@ -1,2 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import * as _ from "lodash-es";
|
|
2
|
+
export function getTableName(expr) {
|
|
3
|
+
if ("table" in expr && expr.table !== null) {
|
|
4
|
+
return typeof expr.table === "string" ? expr.table : expr.table.value;
|
|
5
|
+
}
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
// where 조건에 사용된 테이블명을 추출
|
|
9
|
+
export function getTableNamesFromWhere(ast) {
|
|
10
|
+
const extractTableNames = (where)=>{
|
|
11
|
+
if (where === null || !(where.type === "binary_expr" && "left" in where)) {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
const extractTableName = (expr)=>{
|
|
15
|
+
if (expr.type === "column_ref") {
|
|
16
|
+
const table = getTableName(expr);
|
|
17
|
+
return table ? [
|
|
18
|
+
table
|
|
19
|
+
] : [];
|
|
20
|
+
} else if (expr.type === "binary_expr" && "left" in expr) {
|
|
21
|
+
return extractTableNames(expr);
|
|
22
|
+
}
|
|
23
|
+
return [];
|
|
24
|
+
};
|
|
25
|
+
return [
|
|
26
|
+
...extractTableName(where.left),
|
|
27
|
+
...extractTableName(where.right)
|
|
28
|
+
];
|
|
29
|
+
};
|
|
30
|
+
return _.uniq((Array.isArray(ast) ? ast : [
|
|
31
|
+
ast
|
|
32
|
+
]).flatMap((a)=>a.type === "select" || a.type === "update" || a.type === "delete" ? extractTableNames(a.where) : []));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zcWwtcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgQVNULCBDb2x1bW5SZWYsIEV4cHIsIEV4cHJlc3Npb25WYWx1ZSwgU2VsZWN0IH0gZnJvbSBcIm5vZGUtc3FsLXBhcnNlclwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFibGVOYW1lKGV4cHI6IENvbHVtblJlZikge1xuICBpZiAoXCJ0YWJsZVwiIGluIGV4cHIgJiYgZXhwci50YWJsZSAhPT0gbnVsbCkge1xuICAgIHJldHVybiB0eXBlb2YgZXhwci50YWJsZSA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBleHByLnRhYmxlXG4gICAgICA6IChleHByLnRhYmxlIGFzIHsgdHlwZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0pLnZhbHVlO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vLyB3aGVyZSDsobDqsbTsl5Ag7IKs7Jqp65CcIO2FjOydtOu4lOuqheydhCDstpTstpxcbmV4cG9ydCBmdW5jdGlvbiBnZXRUYWJsZU5hbWVzRnJvbVdoZXJlKGFzdDogQVNUIHwgQVNUW10pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGV4dHJhY3RUYWJsZU5hbWVzID0gKHdoZXJlOiBTZWxlY3RbXCJ3aGVyZVwiXSk6IHN0cmluZ1tdID0+IHtcbiAgICBpZiAod2hlcmUgPT09IG51bGwgfHwgISh3aGVyZS50eXBlID09PSBcImJpbmFyeV9leHByXCIgJiYgXCJsZWZ0XCIgaW4gd2hlcmUpKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgZXh0cmFjdFRhYmxlTmFtZSA9IChleHByOiBFeHByIHwgRXhwcmVzc2lvblZhbHVlKTogc3RyaW5nW10gPT4ge1xuICAgICAgaWYgKGV4cHIudHlwZSA9PT0gXCJjb2x1bW5fcmVmXCIpIHtcbiAgICAgICAgY29uc3QgdGFibGUgPSBnZXRUYWJsZU5hbWUoZXhwciBhcyBDb2x1bW5SZWYpO1xuICAgICAgICByZXR1cm4gdGFibGUgPyBbdGFibGVdIDogW107XG4gICAgICB9IGVsc2UgaWYgKGV4cHIudHlwZSA9PT0gXCJiaW5hcnlfZXhwclwiICYmIFwibGVmdFwiIGluIGV4cHIpIHtcbiAgICAgICAgcmV0dXJuIGV4dHJhY3RUYWJsZU5hbWVzKGV4cHIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtdO1xuICAgIH07XG5cbiAgICByZXR1cm4gWy4uLmV4dHJhY3RUYWJsZU5hbWUod2hlcmUubGVmdCksIC4uLmV4dHJhY3RUYWJsZU5hbWUod2hlcmUucmlnaHQpXTtcbiAgfTtcblxuICByZXR1cm4gXy51bmlxKFxuICAgIChBcnJheS5pc0FycmF5KGFzdCkgPyBhc3QgOiBbYXN0XSkuZmxhdE1hcCgoYSkgPT5cbiAgICAgIGEudHlwZSA9PT0gXCJzZWxlY3RcIiB8fCBhLnR5cGUgPT09IFwidXBkYXRlXCIgfHwgYS50eXBlID09PSBcImRlbGV0ZVwiXG4gICAgICAgID8gZXh0cmFjdFRhYmxlTmFtZXMoYS53aGVyZSlcbiAgICAgICAgOiBbXVxuICAgIClcbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJfIiwiZ2V0VGFibGVOYW1lIiwiZXhwciIsInRhYmxlIiwidmFsdWUiLCJnZXRUYWJsZU5hbWVzRnJvbVdoZXJlIiwiYXN0IiwiZXh0cmFjdFRhYmxlTmFtZXMiLCJ3aGVyZSIsInR5cGUiLCJleHRyYWN0VGFibGVOYW1lIiwibGVmdCIsInJpZ2h0IiwidW5pcSIsIkFycmF5IiwiaXNBcnJheSIsImZsYXRNYXAiLCJhIl0sIm1hcHBpbmdzIjoiQUFBQSxZQUFZQSxPQUFPLFlBQVk7QUFHL0IsT0FBTyxTQUFTQyxhQUFhQyxJQUFlO0lBQzFDLElBQUksV0FBV0EsUUFBUUEsS0FBS0MsS0FBSyxLQUFLLE1BQU07UUFDMUMsT0FBTyxPQUFPRCxLQUFLQyxLQUFLLEtBQUssV0FDekJELEtBQUtDLEtBQUssR0FDVixBQUFDRCxLQUFLQyxLQUFLLENBQXFDQyxLQUFLO0lBQzNEO0lBQ0EsT0FBTztBQUNUO0FBRUEseUJBQXlCO0FBQ3pCLE9BQU8sU0FBU0MsdUJBQXVCQyxHQUFnQjtJQUNyRCxNQUFNQyxvQkFBb0IsQ0FBQ0M7UUFDekIsSUFBSUEsVUFBVSxRQUFRLENBQUVBLENBQUFBLE1BQU1DLElBQUksS0FBSyxpQkFBaUIsVUFBVUQsS0FBSSxHQUFJO1lBQ3hFLE9BQU8sRUFBRTtRQUNYO1FBRUEsTUFBTUUsbUJBQW1CLENBQUNSO1lBQ3hCLElBQUlBLEtBQUtPLElBQUksS0FBSyxjQUFjO2dCQUM5QixNQUFNTixRQUFRRixhQUFhQztnQkFDM0IsT0FBT0MsUUFBUTtvQkFBQ0E7aUJBQU0sR0FBRyxFQUFFO1lBQzdCLE9BQU8sSUFBSUQsS0FBS08sSUFBSSxLQUFLLGlCQUFpQixVQUFVUCxNQUFNO2dCQUN4RCxPQUFPSyxrQkFBa0JMO1lBQzNCO1lBQ0EsT0FBTyxFQUFFO1FBQ1g7UUFFQSxPQUFPO2VBQUlRLGlCQUFpQkYsTUFBTUcsSUFBSTtlQUFNRCxpQkFBaUJGLE1BQU1JLEtBQUs7U0FBRTtJQUM1RTtJQUVBLE9BQU9aLEVBQUVhLElBQUksQ0FDWCxBQUFDQyxDQUFBQSxNQUFNQyxPQUFPLENBQUNULE9BQU9BLE1BQU07UUFBQ0E7S0FBSSxBQUFELEVBQUdVLE9BQU8sQ0FBQyxDQUFDQyxJQUMxQ0EsRUFBRVIsSUFBSSxLQUFLLFlBQVlRLEVBQUVSLElBQUksS0FBSyxZQUFZUSxFQUFFUixJQUFJLEtBQUssV0FDckRGLGtCQUFrQlUsRUFBRVQsS0FBSyxJQUN6QixFQUFFO0FBR1oifQ==
|
package/dist/utils/utils.d.ts
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function
|
|
3
|
-
|
|
4
|
-
imported: any;
|
|
5
|
-
}[]>;
|
|
6
|
-
export declare function findAppRootPath(): Promise<string>;
|
|
7
|
-
export declare function findApiRootPath(): string;
|
|
1
|
+
import { AbsolutePath } from "./path-utils";
|
|
2
|
+
export declare function findAppRootPath(): Promise<AbsolutePath>;
|
|
3
|
+
export declare function findApiRootPath(): AbsolutePath;
|
|
8
4
|
export declare function nonNullable<T>(value: T): value is NonNullable<T>;
|
|
5
|
+
export declare function exhaustive(_param: never): void;
|
|
9
6
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,wBAAsB,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAM7D;AAED,wBAAgB,eAAe,IAAI,YAAY,CAmB9C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAEhE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,KAAK,QAEvC"}
|