sonamu 0.5.6 → 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 +1 -0
- 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 +5 -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.d.ts +22 -10
- package/dist/database/puri-wrapper.d.ts.map +1 -1
- package/dist/database/puri-wrapper.js +109 -2
- package/dist/database/puri.d.ts +105 -73
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +539 -2
- package/dist/database/puri.types.d.ts +33 -42
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/puri.types.js +3 -2
- package/dist/database/transaction-context.d.ts +3 -3
- package/dist/database/transaction-context.d.ts.map +1 -1
- 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 -9
- 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 +15 -5
- package/src/api/sonamu.ts +102 -87
- 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 +53 -60
- package/src/database/puri-wrapper.ts +104 -26
- package/src/database/puri.ts +477 -580
- package/src/database/puri.types.ts +111 -201
- package/src/database/transaction-context.ts +4 -4
- 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 +29 -12
- 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 +39 -62
- 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,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { isSoException } from "./so-exceptions.js";
|
|
2
|
+
export function setupErrorHandler(server) {
|
|
3
|
+
server.setErrorHandler((error, request, reply)=>{
|
|
4
|
+
error.statusCode ??= 400;
|
|
5
|
+
if (isSoException(error) && error.payload && Array.isArray(error.payload)) {
|
|
6
|
+
const issues = error.payload;
|
|
7
|
+
const [issue] = issues;
|
|
8
|
+
const message = `${issue.message} (${issue.path.join("/")})`;
|
|
9
|
+
request.log.error(`${error.statusCode} ${message}`);
|
|
10
|
+
reply.status(error.statusCode <= 501 ? error.statusCode : 501).send({
|
|
11
|
+
name: error.name,
|
|
12
|
+
code: error.code,
|
|
13
|
+
message: message,
|
|
14
|
+
validationErrors: error.validation,
|
|
15
|
+
issues
|
|
16
|
+
});
|
|
17
|
+
} else {
|
|
18
|
+
request.log.error(`${error.statusCode} ${error.message}`);
|
|
19
|
+
reply.status(error.statusCode <= 501 ? error.statusCode : 501).send({
|
|
20
|
+
name: error.name,
|
|
21
|
+
code: error.code,
|
|
22
|
+
message: error.message,
|
|
23
|
+
validationErrors: error.validation
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leGNlcHRpb25zL2Vycm9yLWhhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFzdGlmeUluc3RhbmNlIH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCB7IFpvZElzc3VlIH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgaXNTb0V4Y2VwdGlvbiB9IGZyb20gXCIuL3NvLWV4Y2VwdGlvbnNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldHVwRXJyb3JIYW5kbGVyKHNlcnZlcjogRmFzdGlmeUluc3RhbmNlKSB7XG4gIHNlcnZlci5zZXRFcnJvckhhbmRsZXIoKGVycm9yLCByZXF1ZXN0LCByZXBseSkgPT4ge1xuICAgIGVycm9yLnN0YXR1c0NvZGUgPz89IDQwMDtcblxuICAgIGlmIChpc1NvRXhjZXB0aW9uKGVycm9yKSAmJiBlcnJvci5wYXlsb2FkICYmIEFycmF5LmlzQXJyYXkoZXJyb3IucGF5bG9hZCkpIHtcbiAgICAgIGNvbnN0IGlzc3VlcyA9IGVycm9yLnBheWxvYWQgYXMgWm9kSXNzdWVbXTtcbiAgICAgIGNvbnN0IFtpc3N1ZV0gPSBpc3N1ZXM7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYCR7aXNzdWUubWVzc2FnZX0gKCR7aXNzdWUucGF0aC5qb2luKFwiL1wiKX0pYDtcblxuICAgICAgcmVxdWVzdC5sb2cuZXJyb3IoYCR7ZXJyb3Iuc3RhdHVzQ29kZX0gJHttZXNzYWdlfWApO1xuICAgICAgcmVwbHkuc3RhdHVzKGVycm9yLnN0YXR1c0NvZGUgPD0gNTAxID8gZXJyb3Iuc3RhdHVzQ29kZSA6IDUwMSkuc2VuZCh7XG4gICAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICAgIGNvZGU6IGVycm9yLmNvZGUsXG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgIHZhbGlkYXRpb25FcnJvcnM6IGVycm9yLnZhbGlkYXRpb24sXG4gICAgICAgIGlzc3VlcyxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0LmxvZy5lcnJvcihgJHtlcnJvci5zdGF0dXNDb2RlfSAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgICByZXBseS5zdGF0dXMoZXJyb3Iuc3RhdHVzQ29kZSA8PSA1MDEgPyBlcnJvci5zdGF0dXNDb2RlIDogNTAxKS5zZW5kKHtcbiAgICAgICAgbmFtZTogZXJyb3IubmFtZSxcbiAgICAgICAgY29kZTogZXJyb3IuY29kZSxcbiAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgdmFsaWRhdGlvbkVycm9yczogZXJyb3IudmFsaWRhdGlvbixcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG59XG4iXSwibmFtZXMiOlsiaXNTb0V4Y2VwdGlvbiIsInNldHVwRXJyb3JIYW5kbGVyIiwic2VydmVyIiwic2V0RXJyb3JIYW5kbGVyIiwiZXJyb3IiLCJyZXF1ZXN0IiwicmVwbHkiLCJzdGF0dXNDb2RlIiwicGF5bG9hZCIsIkFycmF5IiwiaXNBcnJheSIsImlzc3VlcyIsImlzc3VlIiwibWVzc2FnZSIsInBhdGgiLCJqb2luIiwibG9nIiwic3RhdHVzIiwic2VuZCIsIm5hbWUiLCJjb2RlIiwidmFsaWRhdGlvbkVycm9ycyIsInZhbGlkYXRpb24iXSwibWFwcGluZ3MiOiJBQUVBLFNBQVNBLGFBQWEsUUFBUSxxQkFBa0I7QUFFaEQsT0FBTyxTQUFTQyxrQkFBa0JDLE1BQXVCO0lBQ3ZEQSxPQUFPQyxlQUFlLENBQUMsQ0FBQ0MsT0FBT0MsU0FBU0M7UUFDdENGLE1BQU1HLFVBQVUsS0FBSztRQUVyQixJQUFJUCxjQUFjSSxVQUFVQSxNQUFNSSxPQUFPLElBQUlDLE1BQU1DLE9BQU8sQ0FBQ04sTUFBTUksT0FBTyxHQUFHO1lBQ3pFLE1BQU1HLFNBQVNQLE1BQU1JLE9BQU87WUFDNUIsTUFBTSxDQUFDSSxNQUFNLEdBQUdEO1lBQ2hCLE1BQU1FLFVBQVUsR0FBR0QsTUFBTUMsT0FBTyxDQUFDLEVBQUUsRUFBRUQsTUFBTUUsSUFBSSxDQUFDQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFNURWLFFBQVFXLEdBQUcsQ0FBQ1osS0FBSyxDQUFDLEdBQUdBLE1BQU1HLFVBQVUsQ0FBQyxDQUFDLEVBQUVNLFNBQVM7WUFDbERQLE1BQU1XLE1BQU0sQ0FBQ2IsTUFBTUcsVUFBVSxJQUFJLE1BQU1ILE1BQU1HLFVBQVUsR0FBRyxLQUFLVyxJQUFJLENBQUM7Z0JBQ2xFQyxNQUFNZixNQUFNZSxJQUFJO2dCQUNoQkMsTUFBTWhCLE1BQU1nQixJQUFJO2dCQUNoQlAsU0FBU0E7Z0JBQ1RRLGtCQUFrQmpCLE1BQU1rQixVQUFVO2dCQUNsQ1g7WUFDRjtRQUNGLE9BQU87WUFDTE4sUUFBUVcsR0FBRyxDQUFDWixLQUFLLENBQUMsR0FBR0EsTUFBTUcsVUFBVSxDQUFDLENBQUMsRUFBRUgsTUFBTVMsT0FBTyxFQUFFO1lBQ3hEUCxNQUFNVyxNQUFNLENBQUNiLE1BQU1HLFVBQVUsSUFBSSxNQUFNSCxNQUFNRyxVQUFVLEdBQUcsS0FBS1csSUFBSSxDQUFDO2dCQUNsRUMsTUFBTWYsTUFBTWUsSUFBSTtnQkFDaEJDLE1BQU1oQixNQUFNZ0IsSUFBSTtnQkFDaEJQLFNBQVNULE1BQU1TLE9BQU87Z0JBQ3RCUSxrQkFBa0JqQixNQUFNa0IsVUFBVTtZQUNwQztRQUNGO0lBQ0Y7QUFDRiJ9
|
|
@@ -1,2 +1,85 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export class SoException extends Error {
|
|
2
|
+
statusCode;
|
|
3
|
+
message;
|
|
4
|
+
payload;
|
|
5
|
+
constructor(statusCode, message, payload){
|
|
6
|
+
super(message), this.statusCode = statusCode, this.message = message, this.payload = payload;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function isSoException(err) {
|
|
10
|
+
return err.statusCode !== undefined;
|
|
11
|
+
}
|
|
12
|
+
/*
|
|
13
|
+
잘못된 매개변수 등 요청사항에 문제가 있는 경우
|
|
14
|
+
*/ export class BadRequestException extends SoException {
|
|
15
|
+
message;
|
|
16
|
+
payload;
|
|
17
|
+
constructor(message = "Bad Request", payload){
|
|
18
|
+
super(400, message, payload), this.message = message, this.payload = payload;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/*
|
|
22
|
+
로그인이 반드시 필요한 케이스에 로그아웃 상태인 경우 / 접근 권한이 없는 요청시
|
|
23
|
+
*/ export class UnauthorizedException extends SoException {
|
|
24
|
+
message;
|
|
25
|
+
payload;
|
|
26
|
+
constructor(message = "Unauthorized", payload){
|
|
27
|
+
super(401, message, payload), this.message = message, this.payload = payload;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/*
|
|
31
|
+
존재하지 않는 레코드에 접근시
|
|
32
|
+
*/ export class NotFoundException extends SoException {
|
|
33
|
+
message;
|
|
34
|
+
payload;
|
|
35
|
+
constructor(message = "Not Found", payload){
|
|
36
|
+
super(404, message, payload), this.message = message, this.payload = payload;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/*
|
|
40
|
+
현재 상태에서 처리가 불가능한 케이스
|
|
41
|
+
*/ export class ServiceUnavailableException extends SoException {
|
|
42
|
+
message;
|
|
43
|
+
payload;
|
|
44
|
+
constructor(message = "Service Unavailable", payload){
|
|
45
|
+
super(503, message, payload), this.message = message, this.payload = payload;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/*
|
|
49
|
+
내부 처리 로직 (외부 API 콜 포함) 오류 발생시
|
|
50
|
+
*/ export class InternalServerErrorException extends SoException {
|
|
51
|
+
message;
|
|
52
|
+
payload;
|
|
53
|
+
constructor(message = "Internal Server Error", payload){
|
|
54
|
+
super(500, message, payload), this.message = message, this.payload = payload;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/*
|
|
58
|
+
이미 처리함
|
|
59
|
+
*/ export class AlreadyProcessedException extends SoException {
|
|
60
|
+
message;
|
|
61
|
+
payload;
|
|
62
|
+
constructor(message = "Already Processed", payload){
|
|
63
|
+
super(541, message, payload), this.message = message, this.payload = payload;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/*
|
|
67
|
+
중복 허용하지 않는 케이스에 중복 요청
|
|
68
|
+
*/ export class DuplicateRowException extends SoException {
|
|
69
|
+
message;
|
|
70
|
+
payload;
|
|
71
|
+
constructor(message = "Duplicate Row", payload){
|
|
72
|
+
super(542, message, payload), this.message = message, this.payload = payload;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/*
|
|
76
|
+
뭔가를 하려고 했으나 대상이 없음
|
|
77
|
+
*/ export class TargetNotFoundException extends SoException {
|
|
78
|
+
message;
|
|
79
|
+
payload;
|
|
80
|
+
constructor(message = "Target Not Found", payload){
|
|
81
|
+
super(520, message, payload), this.message = message, this.payload = payload;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leGNlcHRpb25zL3NvLWV4Y2VwdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNvRXhjZXB0aW9uIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzQ29kZTogbnVtYmVyLFxuICAgIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmcsXG4gICAgcHVibGljIHBheWxvYWQ/OiB1bmtub3duXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NvRXhjZXB0aW9uKGVycjogYW55KTogZXJyIGlzIFNvRXhjZXB0aW9uIHtcbiAgcmV0dXJuIGVyci5zdGF0dXNDb2RlICE9PSB1bmRlZmluZWQ7XG59XG5cbi8qXG5cdOyemOuqu+uQnCDrp6TqsJzrs4DsiJgg65OxIOyalOyyreyCrO2VreyXkCDrrLjsoJzqsIAg7J6I64qUIOqyveyasFxuKi9cbmV4cG9ydCBjbGFzcyBCYWRSZXF1ZXN0RXhjZXB0aW9uIGV4dGVuZHMgU29FeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbWVzc2FnZSA9IFwiQmFkIFJlcXVlc3RcIixcbiAgICBwdWJsaWMgcGF5bG9hZD86IHVua25vd25cbiAgKSB7XG4gICAgc3VwZXIoNDAwLCBtZXNzYWdlLCBwYXlsb2FkKTtcbiAgfVxufVxuXG4vKlxuXHTroZzqt7jsnbjsnbQg67CY65Oc7IucIO2VhOyalO2VnCDsvIDsnbTsiqTsl5Ag66Gc6re47JWE7JuDIOyDge2DnOyduCDqsr3smrAgLyDsoJHqt7wg6raM7ZWc7J20IOyXhuuKlCDsmpTssq3si5xcbiovXG5leHBvcnQgY2xhc3MgVW5hdXRob3JpemVkRXhjZXB0aW9uIGV4dGVuZHMgU29FeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbWVzc2FnZSA9IFwiVW5hdXRob3JpemVkXCIsXG4gICAgcHVibGljIHBheWxvYWQ/OiB1bmtub3duXG4gICkge1xuICAgIHN1cGVyKDQwMSwgbWVzc2FnZSwgcGF5bG9hZCk7XG4gIH1cbn1cblxuLypcblx07KG07J6s7ZWY7KeAIOyViuuKlCDroIjsvZTrk5zsl5Ag7KCR6re87IucXG4qL1xuZXhwb3J0IGNsYXNzIE5vdEZvdW5kRXhjZXB0aW9uIGV4dGVuZHMgU29FeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbWVzc2FnZSA9IFwiTm90IEZvdW5kXCIsXG4gICAgcHVibGljIHBheWxvYWQ/OiB1bmtub3duXG4gICkge1xuICAgIHN1cGVyKDQwNCwgbWVzc2FnZSwgcGF5bG9hZCk7XG4gIH1cbn1cblxuLypcblx07ZiE7J6sIOyDge2DnOyXkOyEnCDsspjrpqzqsIAg67aI6rCA64ql7ZWcIOy8gOydtOyKpFxuKi9cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlVW5hdmFpbGFibGVFeGNlcHRpb24gZXh0ZW5kcyBTb0V4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBtZXNzYWdlID0gXCJTZXJ2aWNlIFVuYXZhaWxhYmxlXCIsXG4gICAgcHVibGljIHBheWxvYWQ/OiB1bmtub3duXG4gICkge1xuICAgIHN1cGVyKDUwMywgbWVzc2FnZSwgcGF5bG9hZCk7XG4gIH1cbn1cblxuLypcblx064K067aAIOyymOumrCDroZzsp4EgKOyZuOu2gCBBUEkg7L2cIO2PrO2VqCkg7Jik66WYIOuwnOyDneyLnFxuKi9cbmV4cG9ydCBjbGFzcyBJbnRlcm5hbFNlcnZlckVycm9yRXhjZXB0aW9uIGV4dGVuZHMgU29FeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbWVzc2FnZSA9IFwiSW50ZXJuYWwgU2VydmVyIEVycm9yXCIsXG4gICAgcHVibGljIHBheWxvYWQ/OiB1bmtub3duXG4gICkge1xuICAgIHN1cGVyKDUwMCwgbWVzc2FnZSwgcGF5bG9hZCk7XG4gIH1cbn1cblxuLypcblx07J2066+4IOyymOumrO2VqFxuKi9cbmV4cG9ydCBjbGFzcyBBbHJlYWR5UHJvY2Vzc2VkRXhjZXB0aW9uIGV4dGVuZHMgU29FeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbWVzc2FnZSA9IFwiQWxyZWFkeSBQcm9jZXNzZWRcIixcbiAgICBwdWJsaWMgcGF5bG9hZD86IHVua25vd25cbiAgKSB7XG4gICAgc3VwZXIoNTQxLCBtZXNzYWdlLCBwYXlsb2FkKTtcbiAgfVxufVxuXG4vKlxuXHTspJHrs7Ug7ZeI7Jqp7ZWY7KeAIOyViuuKlCDsvIDsnbTsiqTsl5Ag7KSR67O1IOyalOyyrVxuKi9cbmV4cG9ydCBjbGFzcyBEdXBsaWNhdGVSb3dFeGNlcHRpb24gZXh0ZW5kcyBTb0V4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBtZXNzYWdlID0gXCJEdXBsaWNhdGUgUm93XCIsXG4gICAgcHVibGljIHBheWxvYWQ/OiB1bmtub3duXG4gICkge1xuICAgIHN1cGVyKDU0MiwgbWVzc2FnZSwgcGF5bG9hZCk7XG4gIH1cbn1cblxuLypcblx0662U6rCA66W8IO2VmOugpOqzoCDtlojsnLzrgpgg64yA7IOB7J20IOyXhuydjFxuKi9cbmV4cG9ydCBjbGFzcyBUYXJnZXROb3RGb3VuZEV4Y2VwdGlvbiBleHRlbmRzIFNvRXhjZXB0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG1lc3NhZ2UgPSBcIlRhcmdldCBOb3QgRm91bmRcIixcbiAgICBwdWJsaWMgcGF5bG9hZD86IHVua25vd25cbiAgKSB7XG4gICAgc3VwZXIoNTIwLCBtZXNzYWdlLCBwYXlsb2FkKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlNvRXhjZXB0aW9uIiwiRXJyb3IiLCJzdGF0dXNDb2RlIiwibWVzc2FnZSIsInBheWxvYWQiLCJpc1NvRXhjZXB0aW9uIiwiZXJyIiwidW5kZWZpbmVkIiwiQmFkUmVxdWVzdEV4Y2VwdGlvbiIsIlVuYXV0aG9yaXplZEV4Y2VwdGlvbiIsIk5vdEZvdW5kRXhjZXB0aW9uIiwiU2VydmljZVVuYXZhaWxhYmxlRXhjZXB0aW9uIiwiSW50ZXJuYWxTZXJ2ZXJFcnJvckV4Y2VwdGlvbiIsIkFscmVhZHlQcm9jZXNzZWRFeGNlcHRpb24iLCJEdXBsaWNhdGVSb3dFeGNlcHRpb24iLCJUYXJnZXROb3RGb3VuZEV4Y2VwdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFlQSxvQkFBb0JDOzs7O0lBQ3hDLFlBQ0UsQUFBZ0JDLFVBQWtCLEVBQ2xDLEFBQU9DLE9BQWUsRUFDdEIsQUFBT0MsT0FBaUIsQ0FDeEI7UUFDQSxLQUFLLENBQUNELGVBSlVELGFBQUFBLGlCQUNUQyxVQUFBQSxjQUNBQyxVQUFBQTtJQUdUO0FBQ0Y7QUFFQSxPQUFPLFNBQVNDLGNBQWNDLEdBQVE7SUFDcEMsT0FBT0EsSUFBSUosVUFBVSxLQUFLSztBQUM1QjtBQUVBOztBQUVBLEdBQ0EsT0FBTyxNQUFNQyw0QkFBNEJSOzs7SUFDdkMsWUFDRSxBQUFPRyxVQUFVLGFBQWEsRUFDOUIsQUFBT0MsT0FBaUIsQ0FDeEI7UUFDQSxLQUFLLENBQUMsS0FBS0QsU0FBU0MsZUFIYkQsVUFBQUEsY0FDQUMsVUFBQUE7SUFHVDtBQUNGO0FBRUE7O0FBRUEsR0FDQSxPQUFPLE1BQU1LLDhCQUE4QlQ7OztJQUN6QyxZQUNFLEFBQU9HLFVBQVUsY0FBYyxFQUMvQixBQUFPQyxPQUFpQixDQUN4QjtRQUNBLEtBQUssQ0FBQyxLQUFLRCxTQUFTQyxlQUhiRCxVQUFBQSxjQUNBQyxVQUFBQTtJQUdUO0FBQ0Y7QUFFQTs7QUFFQSxHQUNBLE9BQU8sTUFBTU0sMEJBQTBCVjs7O0lBQ3JDLFlBQ0UsQUFBT0csVUFBVSxXQUFXLEVBQzVCLEFBQU9DLE9BQWlCLENBQ3hCO1FBQ0EsS0FBSyxDQUFDLEtBQUtELFNBQVNDLGVBSGJELFVBQUFBLGNBQ0FDLFVBQUFBO0lBR1Q7QUFDRjtBQUVBOztBQUVBLEdBQ0EsT0FBTyxNQUFNTyxvQ0FBb0NYOzs7SUFDL0MsWUFDRSxBQUFPRyxVQUFVLHFCQUFxQixFQUN0QyxBQUFPQyxPQUFpQixDQUN4QjtRQUNBLEtBQUssQ0FBQyxLQUFLRCxTQUFTQyxlQUhiRCxVQUFBQSxjQUNBQyxVQUFBQTtJQUdUO0FBQ0Y7QUFFQTs7QUFFQSxHQUNBLE9BQU8sTUFBTVEscUNBQXFDWjs7O0lBQ2hELFlBQ0UsQUFBT0csVUFBVSx1QkFBdUIsRUFDeEMsQUFBT0MsT0FBaUIsQ0FDeEI7UUFDQSxLQUFLLENBQUMsS0FBS0QsU0FBU0MsZUFIYkQsVUFBQUEsY0FDQUMsVUFBQUE7SUFHVDtBQUNGO0FBRUE7O0FBRUEsR0FDQSxPQUFPLE1BQU1TLGtDQUFrQ2I7OztJQUM3QyxZQUNFLEFBQU9HLFVBQVUsbUJBQW1CLEVBQ3BDLEFBQU9DLE9BQWlCLENBQ3hCO1FBQ0EsS0FBSyxDQUFDLEtBQUtELFNBQVNDLGVBSGJELFVBQUFBLGNBQ0FDLFVBQUFBO0lBR1Q7QUFDRjtBQUVBOztBQUVBLEdBQ0EsT0FBTyxNQUFNVSw4QkFBOEJkOzs7SUFDekMsWUFDRSxBQUFPRyxVQUFVLGVBQWUsRUFDaEMsQUFBT0MsT0FBaUIsQ0FDeEI7UUFDQSxLQUFLLENBQUMsS0FBS0QsU0FBU0MsZUFIYkQsVUFBQUEsY0FDQUMsVUFBQUE7SUFHVDtBQUNGO0FBRUE7O0FBRUEsR0FDQSxPQUFPLE1BQU1XLGdDQUFnQ2Y7OztJQUMzQyxZQUNFLEFBQU9HLFVBQVUsa0JBQWtCLEVBQ25DLEFBQU9DLE9BQWlCLENBQ3hCO1FBQ0EsS0FBSyxDQUFDLEtBQUtELFNBQVNDLGVBSGJELFVBQUFBLGNBQ0FDLFVBQUFBO0lBR1Q7QUFDRiJ9
|
|
@@ -1,2 +1,79 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { DeleteObjectCommand, GetObjectCommand, PutObjectCommand, S3Client } from "@aws-sdk/client-s3";
|
|
2
|
+
import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
|
|
3
|
+
import fs from "node:fs/promises";
|
|
4
|
+
import path from "path";
|
|
5
|
+
/**
|
|
6
|
+
* 로컬 파일시스템
|
|
7
|
+
*/ export class FSDriver {
|
|
8
|
+
config;
|
|
9
|
+
constructor(config){
|
|
10
|
+
this.config = config;
|
|
11
|
+
}
|
|
12
|
+
async put(key, contents) {
|
|
13
|
+
const filePath = path.join(this.config.location, key);
|
|
14
|
+
const dir = path.dirname(filePath);
|
|
15
|
+
await fs.mkdir(dir, {
|
|
16
|
+
recursive: true
|
|
17
|
+
});
|
|
18
|
+
await fs.writeFile(filePath, contents);
|
|
19
|
+
}
|
|
20
|
+
async del(key) {
|
|
21
|
+
await fs.rm(path.join(this.config.location, key));
|
|
22
|
+
}
|
|
23
|
+
getUrl(key) {
|
|
24
|
+
return `${this.config.urlPrefix}/${key}`;
|
|
25
|
+
}
|
|
26
|
+
// 로컬 파일시스템은 signed URL을 지원하지 않으므로 일반 URL 반환
|
|
27
|
+
async getSignedUrl(key, _expiresIn) {
|
|
28
|
+
return this.getUrl(key);
|
|
29
|
+
}
|
|
30
|
+
destroy() {
|
|
31
|
+
// 아무것도 하지 않음
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export class S3Driver {
|
|
35
|
+
config;
|
|
36
|
+
s3;
|
|
37
|
+
constructor(config){
|
|
38
|
+
this.config = config;
|
|
39
|
+
this.s3 = new S3Client(config);
|
|
40
|
+
}
|
|
41
|
+
async put(key, contents, options) {
|
|
42
|
+
await this.s3.send(new PutObjectCommand({
|
|
43
|
+
Bucket: this.config.bucket,
|
|
44
|
+
Key: key,
|
|
45
|
+
Body: contents,
|
|
46
|
+
ContentType: options?.contentType,
|
|
47
|
+
ACL: this.getAcl(options?.visibility)
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
async del(key) {
|
|
51
|
+
await this.s3.send(new DeleteObjectCommand({
|
|
52
|
+
Bucket: this.config.bucket,
|
|
53
|
+
Key: key
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
getUrl(key) {
|
|
57
|
+
return `https://${this.config.bucket}.s3.${this.config.region}.amazonaws.com/${key}`;
|
|
58
|
+
}
|
|
59
|
+
async getSignedUrl(key, expiresIn) {
|
|
60
|
+
const command = new GetObjectCommand({
|
|
61
|
+
Bucket: this.config.bucket,
|
|
62
|
+
Key: key
|
|
63
|
+
});
|
|
64
|
+
return getSignedUrl(this.s3, command, {
|
|
65
|
+
expiresIn: expiresIn ?? 60 * 60 * 24 * 7
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
getAcl(visibility) {
|
|
69
|
+
if (visibility === "public") {
|
|
70
|
+
return "public-read";
|
|
71
|
+
}
|
|
72
|
+
return visibility;
|
|
73
|
+
}
|
|
74
|
+
destroy() {
|
|
75
|
+
this.s3.destroy();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWxlLXN0b3JhZ2UvZHJpdmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERlbGV0ZU9iamVjdENvbW1hbmQsXG4gIEdldE9iamVjdENvbW1hbmQsXG4gIFB1dE9iamVjdENvbW1hbmQsXG4gIFMzQ2xpZW50LFxuICBTM0NsaWVudENvbmZpZyxcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zM1wiO1xuaW1wb3J0IHsgZ2V0U2lnbmVkVXJsIH0gZnJvbSBcIkBhd3Mtc2RrL3MzLXJlcXVlc3QtcHJlc2lnbmVyXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG4vKipcbiAqIO2MjOydvCDsoIDsnqXshozsnZgg6rO17Ya1IOyduO2EsO2OmOydtOyKpFxuICovXG5leHBvcnQgaW50ZXJmYWNlIERyaXZlciB7XG4gIHB1dChcbiAgICBrZXk6IHN0cmluZyxcbiAgICBjb250ZW50czogQnVmZmVyLFxuICAgIG9wdGlvbnM/OiB7IGNvbnRlbnRUeXBlPzogc3RyaW5nOyB2aXNpYmlsaXR5PzogXCJwdWJsaWNcIiB8IFwicHJpdmF0ZVwiIH1cbiAgKTogUHJvbWlzZTx2b2lkPjtcblxuICBkZWwoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIGdldFVybChrZXk6IHN0cmluZyk6IHN0cmluZztcblxuICBnZXRTaWduZWRVcmwoa2V5OiBzdHJpbmcsIGV4cGlyZXNJbj86IG51bWJlcik6IFByb21pc2U8c3RyaW5nPjtcblxuICBkZXN0cm95KCk6IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIEZTRHJpdmVyQ29uZmlnID0ge1xuICBsb2NhdGlvbjogc3RyaW5nO1xuICB1cmxQcmVmaXg6IHN0cmluZztcbn07XG5cbi8qKlxuICog66Gc7LusIO2MjOydvOyLnOyKpO2FnFxuICovXG5leHBvcnQgY2xhc3MgRlNEcml2ZXIgaW1wbGVtZW50cyBEcml2ZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZzogRlNEcml2ZXJDb25maWcpIHt9XG5cbiAgYXN5bmMgcHV0KGtleTogc3RyaW5nLCBjb250ZW50czogQnVmZmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5jb25maWcubG9jYXRpb24sIGtleSk7XG4gICAgY29uc3QgZGlyID0gcGF0aC5kaXJuYW1lKGZpbGVQYXRoKTtcblxuICAgIGF3YWl0IGZzLm1rZGlyKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgICBhd2FpdCBmcy53cml0ZUZpbGUoZmlsZVBhdGgsIGNvbnRlbnRzKTtcbiAgfVxuXG4gIGFzeW5jIGRlbChrZXk6IHN0cmluZykge1xuICAgIGF3YWl0IGZzLnJtKHBhdGguam9pbih0aGlzLmNvbmZpZy5sb2NhdGlvbiwga2V5KSk7XG4gIH1cblxuICBnZXRVcmwoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmNvbmZpZy51cmxQcmVmaXh9LyR7a2V5fWA7XG4gIH1cblxuICAvLyDroZzsu6wg7YyM7J287Iuc7Iqk7YWc7J2AIHNpZ25lZCBVUkzsnYQg7KeA7JuQ7ZWY7KeAIOyViuycvOuvgOuhnCDsnbzrsJggVVJMIOuwmO2ZmFxuICBhc3luYyBnZXRTaWduZWRVcmwoa2V5OiBzdHJpbmcsIF9leHBpcmVzSW4/OiBudW1iZXIpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmdldFVybChrZXkpO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICAvLyDslYTrrLTqsoPrj4Qg7ZWY7KeAIOyViuydjFxuICB9XG59XG5cbmV4cG9ydCB0eXBlIFMzRHJpdmVyQ29uZmlnID0gUzNDbGllbnRDb25maWcgJiB7XG4gIGJ1Y2tldDogc3RyaW5nO1xufTtcblxuZXhwb3J0IGNsYXNzIFMzRHJpdmVyIGltcGxlbWVudHMgRHJpdmVyIHtcbiAgczM6IFMzQ2xpZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnOiBTM0RyaXZlckNvbmZpZykge1xuICAgIHRoaXMuczMgPSBuZXcgUzNDbGllbnQoY29uZmlnKTtcbiAgfVxuXG4gIGFzeW5jIHB1dChcbiAgICBrZXk6IHN0cmluZyxcbiAgICBjb250ZW50czogQnVmZmVyLFxuICAgIG9wdGlvbnM/OiB7IGNvbnRlbnRUeXBlPzogc3RyaW5nOyB2aXNpYmlsaXR5PzogXCJwdWJsaWNcIiB8IFwicHJpdmF0ZVwiIH1cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zMy5zZW5kKFxuICAgICAgbmV3IFB1dE9iamVjdENvbW1hbmQoe1xuICAgICAgICBCdWNrZXQ6IHRoaXMuY29uZmlnLmJ1Y2tldCxcbiAgICAgICAgS2V5OiBrZXksXG4gICAgICAgIEJvZHk6IGNvbnRlbnRzLFxuICAgICAgICBDb250ZW50VHlwZTogb3B0aW9ucz8uY29udGVudFR5cGUsXG4gICAgICAgIEFDTDogdGhpcy5nZXRBY2wob3B0aW9ucz8udmlzaWJpbGl0eSksXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBhc3luYyBkZWwoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnMzLnNlbmQoXG4gICAgICBuZXcgRGVsZXRlT2JqZWN0Q29tbWFuZCh7XG4gICAgICAgIEJ1Y2tldDogdGhpcy5jb25maWcuYnVja2V0LFxuICAgICAgICBLZXk6IGtleSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldFVybChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBodHRwczovLyR7dGhpcy5jb25maWcuYnVja2V0fS5zMy4ke3RoaXMuY29uZmlnLnJlZ2lvbn0uYW1hem9uYXdzLmNvbS8ke2tleX1gO1xuICB9XG5cbiAgYXN5bmMgZ2V0U2lnbmVkVXJsKGtleTogc3RyaW5nLCBleHBpcmVzSW4/OiBudW1iZXIpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgR2V0T2JqZWN0Q29tbWFuZCh7XG4gICAgICBCdWNrZXQ6IHRoaXMuY29uZmlnLmJ1Y2tldCxcbiAgICAgIEtleToga2V5LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdldFNpZ25lZFVybCh0aGlzLnMzLCBjb21tYW5kLCB7XG4gICAgICBleHBpcmVzSW46IGV4cGlyZXNJbiA/PyA2MCAqIDYwICogMjQgKiA3LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBY2wodmlzaWJpbGl0eT86IFwicHVibGljXCIgfCBcInByaXZhdGVcIikge1xuICAgIGlmICh2aXNpYmlsaXR5ID09PSBcInB1YmxpY1wiKSB7XG4gICAgICByZXR1cm4gXCJwdWJsaWMtcmVhZFwiO1xuICAgIH1cblxuICAgIHJldHVybiB2aXNpYmlsaXR5O1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLnMzLmRlc3Ryb3koKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkRlbGV0ZU9iamVjdENvbW1hbmQiLCJHZXRPYmplY3RDb21tYW5kIiwiUHV0T2JqZWN0Q29tbWFuZCIsIlMzQ2xpZW50IiwiZ2V0U2lnbmVkVXJsIiwiZnMiLCJwYXRoIiwiRlNEcml2ZXIiLCJjb25maWciLCJwdXQiLCJrZXkiLCJjb250ZW50cyIsImZpbGVQYXRoIiwiam9pbiIsImxvY2F0aW9uIiwiZGlyIiwiZGlybmFtZSIsIm1rZGlyIiwicmVjdXJzaXZlIiwid3JpdGVGaWxlIiwiZGVsIiwicm0iLCJnZXRVcmwiLCJ1cmxQcmVmaXgiLCJfZXhwaXJlc0luIiwiZGVzdHJveSIsIlMzRHJpdmVyIiwiczMiLCJvcHRpb25zIiwic2VuZCIsIkJ1Y2tldCIsImJ1Y2tldCIsIktleSIsIkJvZHkiLCJDb250ZW50VHlwZSIsImNvbnRlbnRUeXBlIiwiQUNMIiwiZ2V0QWNsIiwidmlzaWJpbGl0eSIsInJlZ2lvbiIsImV4cGlyZXNJbiIsImNvbW1hbmQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQ0VBLG1CQUFtQixFQUNuQkMsZ0JB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
|
|
@@ -1,2 +1,75 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import mime from "mime-types";
|
|
2
|
+
import { createHash } from "crypto";
|
|
3
|
+
/**
|
|
4
|
+
* @fastify/multipart의 MultipartFile 래퍼
|
|
5
|
+
*/ export class FileStorage {
|
|
6
|
+
_file;
|
|
7
|
+
_buffer;
|
|
8
|
+
_driver;
|
|
9
|
+
constructor(file, driver){
|
|
10
|
+
this._file = file;
|
|
11
|
+
this._driver = driver;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 사용자 컴퓨터의 원본 파일명
|
|
15
|
+
*/ get clientName() {
|
|
16
|
+
return this._file.filename;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 파일명 (clientName의 별칭)
|
|
20
|
+
*/ get filename() {
|
|
21
|
+
return this._file.filename;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* HTML input 필드명
|
|
25
|
+
*/ get fieldName() {
|
|
26
|
+
return this._file.fieldname;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 파일 크기 (바이트)
|
|
30
|
+
*/ get size() {
|
|
31
|
+
return this._file.file.bytesRead;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 파일 확장자 (점 제외)
|
|
35
|
+
*/ get extname() {
|
|
36
|
+
return mime.extension(this._file.mimetype);
|
|
37
|
+
}
|
|
38
|
+
get mimetype() {
|
|
39
|
+
return this._file.mimetype;
|
|
40
|
+
}
|
|
41
|
+
get encoding() {
|
|
42
|
+
return this._file.encoding;
|
|
43
|
+
}
|
|
44
|
+
async toBuffer() {
|
|
45
|
+
if (!this._buffer) {
|
|
46
|
+
this._buffer = await this._file.toBuffer();
|
|
47
|
+
}
|
|
48
|
+
return this._buffer;
|
|
49
|
+
}
|
|
50
|
+
async md5() {
|
|
51
|
+
const buffer = await this.toBuffer();
|
|
52
|
+
return createHash("md5").update(buffer).digest("hex");
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 파일을 저장소에 저장
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const { file } = Sonamu.getUploadContext();
|
|
60
|
+
* const url = await file.saveToDisk('uploads/avatar.png');
|
|
61
|
+
* ```
|
|
62
|
+
*/ async saveToDisk(key, options) {
|
|
63
|
+
const buffer = await this.toBuffer();
|
|
64
|
+
await this._driver.put(key, buffer, {
|
|
65
|
+
contentType: options?.contentType ?? this.mimetype,
|
|
66
|
+
visibility: options?.visibility
|
|
67
|
+
});
|
|
68
|
+
return this._driver.getSignedUrl(key);
|
|
69
|
+
}
|
|
70
|
+
get raw() {
|
|
71
|
+
return this._file;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWxlLXN0b3JhZ2UvZmlsZS1zdG9yYWdlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTXVsdGlwYXJ0RmlsZSB9IGZyb20gXCJAZmFzdGlmeS9tdWx0aXBhcnRcIjtcbmltcG9ydCBtaW1lIGZyb20gXCJtaW1lLXR5cGVzXCI7XG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSBcImNyeXB0b1wiO1xuaW1wb3J0IHR5cGUgeyBEcml2ZXIgfSBmcm9tIFwiLi9kcml2ZXJcIjtcblxuLyoqXG4gKiBAZmFzdGlmeS9tdWx0aXBhcnTsnZggTXVsdGlwYXJ0RmlsZSDrnpjtjbxcbiAqL1xuZXhwb3J0IGNsYXNzIEZpbGVTdG9yYWdlIHtcbiAgcHJpdmF0ZSBfZmlsZTogTXVsdGlwYXJ0RmlsZTtcbiAgcHJpdmF0ZSBfYnVmZmVyPzogQnVmZmVyO1xuICBwcml2YXRlIF9kcml2ZXI6IERyaXZlcjtcblxuICBjb25zdHJ1Y3RvcihmaWxlOiBNdWx0aXBhcnRGaWxlLCBkcml2ZXI6IERyaXZlcikge1xuICAgIHRoaXMuX2ZpbGUgPSBmaWxlO1xuICAgIHRoaXMuX2RyaXZlciA9IGRyaXZlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiDsgqzsmqnsnpAg7Lu07ZOo7YSw7J2YIOybkOuzuCDtjIzsnbzrqoVcbiAgICovXG4gIGdldCBjbGllbnROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGUuZmlsZW5hbWU7XG4gIH1cblxuICAvKipcbiAgICog7YyM7J2866qFIChjbGllbnROYW1l7J2YIOuzhOy5rSlcbiAgICovXG4gIGdldCBmaWxlbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9maWxlLmZpbGVuYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEhUTUwgaW5wdXQg7ZWE65Oc66qFXG4gICAqL1xuICBnZXQgZmllbGROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGUuZmllbGRuYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIO2MjOydvCDtgazquLAgKOuwlOydtO2KuClcbiAgICovXG4gIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGUuZmlsZS5ieXRlc1JlYWQ7XG4gIH1cblxuICAvKipcbiAgICog7YyM7J28IO2ZleyepeyekCAo7KCQIOygnOyZuClcbiAgICovXG4gIGdldCBleHRuYW1lKCk6IHN0cmluZyB8IGZhbHNlIHtcbiAgICByZXR1cm4gbWltZS5leHRlbnNpb24odGhpcy5fZmlsZS5taW1ldHlwZSk7XG4gIH1cblxuICBnZXQgbWltZXR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZS5taW1ldHlwZTtcbiAgfVxuXG4gIGdldCBlbmNvZGluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9maWxlLmVuY29kaW5nO1xuICB9XG5cbiAgYXN5bmMgdG9CdWZmZXIoKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICBpZiAoIXRoaXMuX2J1ZmZlcikge1xuICAgICAgdGhpcy5fYnVmZmVyID0gYXdhaXQgdGhpcy5fZmlsZS50b0J1ZmZlcigpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fYnVmZmVyO1xuICB9XG5cbiAgYXN5bmMgbWQ1KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgdGhpcy50b0J1ZmZlcigpO1xuICAgIHJldHVybiBjcmVhdGVIYXNoKFwibWQ1XCIpLnVwZGF0ZShidWZmZXIpLmRpZ2VzdChcImhleFwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDtjIzsnbzsnYQg7KCA7J6l7IaM7JeQIOyggOyepVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHsgZmlsZSB9ID0gU29uYW11LmdldFVwbG9hZENvbnRleHQoKTtcbiAgICogY29uc3QgdXJsID0gYXdhaXQgZmlsZS5zYXZlVG9EaXNrKCd1cGxvYWRzL2F2YXRhci5wbmcnKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBzYXZlVG9EaXNrKFxuICAgIGtleTogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiB7IGNvbnRlbnRUeXBlPzogc3RyaW5nOyB2aXNpYmlsaXR5PzogXCJwdWJsaWNcIiB8IFwicHJpdmF0ZVwiIH1cbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBidWZmZXIgPSBhd2FpdCB0aGlzLnRvQnVmZmVyKCk7XG5cbiAgICBhd2FpdCB0aGlzLl9kcml2ZXIucHV0KGtleSwgYnVmZmVyLCB7XG4gICAgICBjb250ZW50VHlwZTogb3B0aW9ucz8uY29udGVudFR5cGUgPz8gdGhpcy5taW1ldHlwZSxcbiAgICAgIHZpc2liaWxpdHk6IG9wdGlvbnM/LnZpc2liaWxpdHksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5fZHJpdmVyLmdldFNpZ25lZFVybChrZXkpO1xuICB9XG5cbiAgZ2V0IHJhdygpOiBNdWx0aXBhcnRGaWxlIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIm1pbWUiLCJjcmVhdGVIYXNoIiwiRmlsZVN0b3JhZ2UiLCJfZmlsZSIsIl9idWZmZXIiLCJfZHJpdmVyIiwiZmlsZSIsImRyaXZlciIsImNsaWVudE5hbWUiLCJmaWxlbmFtZSIsImZpZWxkTmFtZSIsImZpZWxkbmFtZSIsInNpemUiLCJieXRlc1JlYWQiLCJleHRuYW1lIiwiZXh0ZW5zaW9uIiwibWltZXR5cGUiLCJlbmNvZGluZyIsInRvQnVmZmVyIiwibWQ1IiwiYnVmZmVyIiwidXBkYXRlIiwiZGlnZXN0Iiwic2F2ZVRvRGlzayIsImtleSIsIm9wdGlvbnMiLCJwdXQiLCJjb250ZW50VHlwZSIsInZpc2liaWxpdHkiLCJnZXRTaWduZWRVcmwiLCJyYXciXSwibWFwcGluZ3MiOiJBQUNBLE9BQU9BLFVBQVUsYUFBYTtBQUM5QixTQUFTQyxVQUFVLFFBQVEsU0FBUztBQUdwQzs7Q0FFQyxHQUNELE9BQU8sTUFBTUM7SUFDSEMsTUFBcUI7SUFDckJDLFFBQWlCO0lBQ2pCQyxRQUFnQjtJQUV4QixZQUFZQyxJQUFtQixFQUFFQyxNQUFjLENBQUU7UUFDL0MsSUFBSSxDQUFDSixLQUFLLEdBQUdHO1FBQ2IsSUFBSSxDQUFDRCxPQUFPLEdBQUdFO0lBQ2pCO0lBRUE7O0dBRUMsR0FDRCxJQUFJQyxhQUFxQjtRQUN2QixPQUFPLElBQUksQ0FBQ0wsS0FBSyxDQUFDTSxRQUFRO0lBQzVCO0lBRUE7O0dBRUMsR0FDRCxJQUFJQSxXQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQ04sS0FBSyxDQUFDTSxRQUFRO0lBQzVCO0lBRUE7O0dBRUMsR0FDRCxJQUFJQyxZQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQ1AsS0FBSyxDQUFDUSxTQUFTO0lBQzdCO0lBRUE7O0dBRUMsR0FDRCxJQUFJQyxPQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDVCxLQUFLLENBQUNHLElBQUksQ0FBQ08sU0FBUztJQUNsQztJQUVBOztHQUVDLEdBQ0QsSUFBSUMsVUFBMEI7UUFDNUIsT0FBT2QsS0FBS2UsU0FBUyxDQUFDLElBQUksQ0FBQ1osS0FBSyxDQUFDYSxRQUFRO0lBQzNDO0lBRUEsSUFBSUEsV0FBbUI7UUFDckIsT0FBTyxJQUFJLENBQUNiLEtBQUssQ0FBQ2EsUUFBUTtJQUM1QjtJQUVBLElBQUlDLFdBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDZCxLQUFLLENBQUNjLFFBQVE7SUFDNUI7SUFFQSxNQUFNQyxXQUE0QjtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDZCxPQUFPLEVBQUU7WUFDakIsSUFBSSxDQUFDQSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUNELEtBQUssQ0FBQ2UsUUFBUTtRQUMxQztRQUNBLE9BQU8sSUFBSSxDQUFDZCxPQUFPO0lBQ3JCO0lBRUEsTUFBTWUsTUFBdUI7UUFDM0IsTUFBTUMsU0FBUyxNQUFNLElBQUksQ0FBQ0YsUUFBUTtRQUNsQyxPQUFPakIsV0FBVyxPQUFPb0IsTUFBTSxDQUFDRCxRQUFRRSxNQUFNLENBQUM7SUFDakQ7SUFFQTs7Ozs7Ozs7R0FRQyxHQUNELE1BQU1DLFdBQ0pDLEdBQVcsRUFDWEMsT0FBcUUsRUFDcEQ7UUFDakIsTUFBTUwsU0FBUyxNQUFNLElBQUksQ0FBQ0YsUUFBUTtRQUVsQyxNQUFNLElBQUksQ0FBQ2IsT0FBTyxDQUFDcUIsR0FBRyxDQUFDRixLQUFLSixRQUFRO1lBQ2xDTyxhQUFhRixTQUFTRSxlQUFlLElBQUksQ0FBQ1gsUUFBUTtZQUNsRFksWUFBWUgsU0FBU0c7UUFDdkI7UUFFQSxPQUFPLElBQUksQ0FBQ3ZCLE9BQU8sQ0FBQ3dCLFlBQVksQ0FBQ0w7SUFDbkM7SUFFQSxJQUFJTSxNQUFxQjtRQUN2QixPQUFPLElBQUksQ0FBQzNCLEtBQUs7SUFDbkI7QUFDRiJ9
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export type * from "./api/context";
|
|
2
|
+
export * from "./api/config";
|
|
2
3
|
export * from "./api/decorators";
|
|
3
4
|
export * from "./api/sonamu";
|
|
4
5
|
export * from "./database/base-model";
|
|
@@ -21,4 +22,5 @@ export * from "./entity/entity";
|
|
|
21
22
|
export * from "./migration/migrator";
|
|
22
23
|
export * from "./migration/types";
|
|
23
24
|
export * from "./file-storage/driver";
|
|
25
|
+
export * from "./naite/naite";
|
|
24
26
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,eAAe,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,eAAe,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export * from "./api/config.js";
|
|
2
|
+
export * from "./api/decorators.js";
|
|
3
|
+
export * from "./api/sonamu.js";
|
|
4
|
+
export * from "./database/base-model.js";
|
|
5
|
+
export * from "./api/base-frame.js";
|
|
6
|
+
export * from "./database/db.js";
|
|
7
|
+
export * from "./database/upsert-builder.js";
|
|
8
|
+
export * from "./database/puri.js";
|
|
9
|
+
export * from "./database/puri-wrapper.js";
|
|
10
|
+
export * from "./database/puri.types.js";
|
|
11
|
+
export * from "./exceptions/error-handler.js";
|
|
12
|
+
export * from "./exceptions/so-exceptions.js";
|
|
13
|
+
export * from "./stream/sse.js";
|
|
14
|
+
export * from "./types/types.js";
|
|
15
|
+
export * from "./utils/controller.js";
|
|
16
|
+
export * from "./utils/model.js";
|
|
17
|
+
export * from "./utils/utils.js";
|
|
18
|
+
export * from "./testing/fixture-manager.js";
|
|
19
|
+
export * from "./entity/entity-manager.js";
|
|
20
|
+
export * from "./entity/entity.js";
|
|
21
|
+
export * from "./migration/migrator.js";
|
|
22
|
+
export * from "./migration/types.js";
|
|
23
|
+
export * from "./file-storage/driver.js";
|
|
24
|
+
export * from "./naite/naite.js"; // export * from "./api/code-converters";
|
|
25
|
+
// export * from "./entity/entity-utils";
|
|
26
|
+
// export * from "./syncer/syncer";
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSAqIGZyb20gXCIuL2FwaS9jb250ZXh0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hcGkvY29uZmlnXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hcGkvZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXBpL3NvbmFtdVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGF0YWJhc2UvYmFzZS1tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXBpL2Jhc2UtZnJhbWVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlL2RiXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kYXRhYmFzZS91cHNlcnQtYnVpbGRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGF0YWJhc2UvcHVyaVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGF0YWJhc2UvcHVyaS13cmFwcGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kYXRhYmFzZS9wdXJpLnR5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9leGNlcHRpb25zL2Vycm9yLWhhbmRsZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V4Y2VwdGlvbnMvc28tZXhjZXB0aW9uc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RyZWFtL3NzZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMvdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzL2NvbnRyb2xsZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzL21vZGVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlscy91dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVzdGluZy9maXh0dXJlLW1hbmFnZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZW50aXR5L2VudGl0eVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWlncmF0aW9uL21pZ3JhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9taWdyYXRpb24vdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ZpbGUtc3RvcmFnZS9kcml2ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL25haXRlL25haXRlXCI7XG5cbi8vIGV4cG9ydCAqIGZyb20gXCIuL2FwaS9jb2RlLWNvbnZlcnRlcnNcIjtcbi8vIGV4cG9ydCAqIGZyb20gXCIuL2VudGl0eS9lbnRpdHktdXRpbHNcIjtcbi8vIGV4cG9ydCAqIGZyb20gXCIuL3N5bmNlci9zeW5jZXJcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxjQUFjLGtCQUFlO0FBQzdCLGNBQWMsc0JBQW1CO0FBQ2pDLGNBQWMsa0JBQWU7QUFDN0IsY0FBYywyQkFBd0I7QUFDdEMsY0FBYyxzQkFBbUI7QUFDakMsY0FBYyxtQkFBZ0I7QUFDOUIsY0FBYywrQkFBNEI7QUFDMUMsY0FBYyxxQkFBa0I7QUFDaEMsY0FBYyw2QkFBMEI7QUFDeEMsY0FBYywyQkFBd0I7QUFDdEMsY0FBYyxnQ0FBNkI7QUFDM0MsY0FBYyxnQ0FBNkI7QUFDM0MsY0FBYyxrQkFBZTtBQUM3QixjQUFjLG1CQUFnQjtBQUM5QixjQUFjLHdCQUFxQjtBQUNuQyxjQUFjLG1CQUFnQjtBQUM5QixjQUFjLG1CQUFnQjtBQUM5QixjQUFjLCtCQUE0QjtBQUMxQyxjQUFjLDZCQUEwQjtBQUN4QyxjQUFjLHFCQUFrQjtBQUNoQyxjQUFjLDBCQUF1QjtBQUNyQyxjQUFjLHVCQUFvQjtBQUNsQyxjQUFjLDJCQUF3QjtBQUN0QyxjQUFjLG1CQUFnQixDQUU5Qix5Q0FBeUM7Q0FDekMseUNBQXlDO0NBQ3pDLG1DQUFtQyJ9
|