sonamu 0.4.13 → 0.5.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/.swcrc +15 -0
- package/dist/api/base-frame.d.ts +8 -0
- package/dist/api/base-frame.d.ts.map +1 -0
- package/dist/api/base-frame.js +2 -0
- package/dist/api/base-frame.js.map +1 -0
- package/dist/api/caster.d.ts +5 -0
- package/dist/api/caster.d.ts.map +1 -0
- package/dist/api/caster.js +2 -0
- package/dist/api/caster.js.map +1 -0
- package/dist/api/code-converters.d.ts +23 -0
- package/dist/api/code-converters.d.ts.map +1 -0
- package/dist/api/code-converters.js +2 -0
- package/dist/api/code-converters.js.map +1 -0
- package/dist/api/context.d.ts +16 -0
- package/dist/api/context.d.ts.map +1 -0
- package/dist/api/context.js +2 -0
- package/dist/api/context.js.map +1 -0
- package/dist/api/decorators.d.ts +50 -0
- package/dist/api/decorators.d.ts.map +1 -0
- package/dist/api/decorators.js +2 -0
- package/dist/api/decorators.js.map +1 -0
- package/dist/api/index.d.ts +8 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +2 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/sonamu.d.ts +83 -0
- package/dist/api/sonamu.d.ts.map +1 -0
- package/dist/api/sonamu.js +2 -0
- package/dist/api/sonamu.js.map +1 -0
- package/dist/api/sonamu.types.d.ts +30 -0
- package/dist/api/sonamu.types.d.ts.map +1 -0
- package/dist/api/sonamu.types.js +2 -0
- package/dist/api/sonamu.types.js.map +1 -0
- package/dist/bin/build-config.d.ts +5 -0
- package/dist/bin/build-config.d.ts.map +1 -0
- package/dist/bin/build-config.js +2 -0
- package/dist/bin/build-config.js.map +1 -0
- package/dist/bin/cli-wrapper.d.ts +2 -0
- package/dist/bin/cli-wrapper.d.ts.map +1 -0
- package/dist/bin/cli-wrapper.js +1 -38
- package/dist/bin/cli-wrapper.js.map +1 -1
- package/dist/bin/cli.d.ts +2 -2
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +1 -903
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/cli.mjs +2 -2
- package/dist/{chunk-DMJSNO2L.js → chunk-2WAC2GER.js} +44 -44
- package/dist/{chunk-DMJSNO2L.js.map → chunk-2WAC2GER.js.map} +1 -1
- package/dist/{chunk-NI37CY4T.mjs → chunk-C3IPIF6O.mjs} +2 -2
- package/dist/{chunk-DYFCACHD.js → chunk-EXHKSVTE.js} +7 -7
- package/dist/{chunk-QJFHDCBN.mjs → chunk-FCERKIIF.mjs} +2 -2
- package/dist/chunk-FCERKIIF.mjs.map +1 -0
- package/dist/{chunk-DDJ7T4MA.mjs → chunk-HGIBJYOU.mjs} +2 -2
- package/dist/{chunk-NIFOTHBW.mjs → chunk-JKSOJRQA.mjs} +2 -2
- package/dist/{chunk-CXAVBVKC.js → chunk-OTKKFP3Y.js} +100 -100
- package/dist/{chunk-J6S43O7G.js → chunk-UZ2IY5VE.js} +4 -4
- package/dist/database/_batch_update.d.ts +15 -0
- package/dist/database/_batch_update.d.ts.map +1 -0
- package/dist/database/_batch_update.js +2 -0
- package/dist/database/_batch_update.js.map +1 -0
- package/dist/database/base-model.d.ts +41 -0
- package/dist/database/base-model.d.ts.map +1 -0
- package/dist/database/base-model.js +2 -0
- package/dist/database/base-model.js.map +1 -0
- package/dist/database/code-generator.d.ts +13 -0
- package/dist/database/code-generator.d.ts.map +1 -0
- package/dist/database/code-generator.js +2 -0
- package/dist/database/code-generator.js.map +1 -0
- package/dist/database/db.d.ts +40 -0
- package/dist/database/db.d.ts.map +1 -0
- package/dist/database/db.js +2 -0
- package/dist/database/db.js.map +1 -0
- package/dist/database/drivers/knex/base-model.js +8 -8
- package/dist/database/drivers/knex/base-model.mjs +3 -3
- package/dist/database/drivers/kysely/base-model.js +9 -9
- package/dist/database/drivers/kysely/base-model.mjs +3 -3
- package/dist/database/knex-plugins/knex-on-duplicate-update.d.ts +2 -0
- package/dist/database/knex-plugins/knex-on-duplicate-update.d.ts.map +1 -0
- package/dist/database/knex-plugins/knex-on-duplicate-update.js +2 -0
- package/dist/database/knex-plugins/knex-on-duplicate-update.js.map +1 -0
- package/dist/database/puri-wrapper.d.ts +34 -0
- package/dist/database/puri-wrapper.d.ts.map +1 -0
- package/dist/database/puri-wrapper.js +2 -0
- package/dist/database/puri-wrapper.js.map +1 -0
- package/dist/database/puri.d.ts +83 -0
- package/dist/database/puri.d.ts.map +1 -0
- package/dist/database/puri.js +2 -0
- package/dist/database/puri.js.map +1 -0
- package/dist/database/puri.types.d.ts +60 -0
- package/dist/database/puri.types.d.ts.map +1 -0
- package/dist/database/puri.types.js +2 -0
- package/dist/database/puri.types.js.map +1 -0
- package/dist/database/transaction-context.d.ts +9 -0
- package/dist/database/transaction-context.d.ts.map +1 -0
- package/dist/database/transaction-context.js +2 -0
- package/dist/database/transaction-context.js.map +1 -0
- package/dist/database/types.d.ts +39 -0
- package/dist/database/types.d.ts.map +1 -0
- package/dist/database/types.js +2 -0
- package/dist/database/types.js.map +1 -0
- package/dist/database/upsert-builder.d.ts +34 -0
- package/dist/database/upsert-builder.d.ts.map +1 -0
- package/dist/database/upsert-builder.js +2 -0
- package/dist/database/upsert-builder.js.map +1 -0
- package/dist/entity/entity-manager.d.ts +32 -0
- package/dist/entity/entity-manager.d.ts.map +1 -0
- package/dist/entity/entity-manager.js +2 -0
- package/dist/entity/entity-manager.js.map +1 -0
- package/dist/entity/entity-utils.d.ts +61 -0
- package/dist/entity/entity-utils.d.ts.map +1 -0
- package/dist/entity/entity-utils.js +2 -0
- package/dist/entity/entity-utils.js.map +1 -0
- package/dist/entity/entity.d.ts +62 -0
- package/dist/entity/entity.d.ts.map +1 -0
- package/dist/entity/entity.js +2 -0
- package/dist/entity/entity.js.map +1 -0
- package/dist/entity/migrator.d.ts +135 -0
- package/dist/entity/migrator.d.ts.map +1 -0
- package/dist/entity/migrator.js +2 -0
- package/dist/entity/migrator.js.map +1 -0
- package/dist/exceptions/error-handler.d.ts +3 -0
- package/dist/exceptions/error-handler.d.ts.map +1 -0
- package/dist/exceptions/error-handler.js +2 -0
- package/dist/exceptions/error-handler.js.map +1 -0
- package/dist/exceptions/so-exceptions.d.ts +48 -0
- package/dist/exceptions/so-exceptions.d.ts.map +1 -0
- package/dist/exceptions/so-exceptions.js +2 -0
- package/dist/exceptions/so-exceptions.js.map +1 -0
- package/dist/file-storage/driver.d.ts +45 -0
- package/dist/file-storage/driver.d.ts.map +1 -0
- package/dist/file-storage/driver.js +2 -0
- package/dist/file-storage/driver.js.map +1 -0
- package/dist/file-storage/file-storage.d.ts +50 -0
- package/dist/file-storage/file-storage.d.ts.map +1 -0
- package/dist/file-storage/file-storage.js +2 -0
- package/dist/file-storage/file-storage.js.map +1 -0
- package/dist/index.d.ts +22 -813
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -433
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -3
- package/dist/migration/code-generation.d.ts +15 -0
- package/dist/migration/code-generation.d.ts.map +1 -0
- package/dist/migration/code-generation.js +2 -0
- package/dist/migration/code-generation.js.map +1 -0
- package/dist/migration/migration-set.d.ts +17 -0
- package/dist/migration/migration-set.d.ts.map +1 -0
- package/dist/migration/migration-set.js +2 -0
- package/dist/migration/migration-set.js.map +1 -0
- package/dist/migration/migrator.d.ts +130 -0
- package/dist/migration/migrator.d.ts.map +1 -0
- package/dist/migration/migrator.js +2 -0
- package/dist/migration/migrator.js.map +1 -0
- package/dist/migration/types.d.ts +52 -0
- package/dist/migration/types.d.ts.map +1 -0
- package/dist/migration/types.js +2 -0
- package/dist/migration/types.js.map +1 -0
- package/dist/smd/smd-manager.d.ts +28 -0
- package/dist/smd/smd-manager.d.ts.map +1 -0
- package/dist/smd/smd-manager.js +2 -0
- package/dist/smd/smd-manager.js.map +1 -0
- package/dist/smd/smd.d.ts +40 -0
- package/dist/smd/smd.d.ts.map +1 -0
- package/dist/smd/smd.js +2 -0
- package/dist/smd/smd.js.map +1 -0
- package/dist/syncer/index.d.ts +2 -0
- package/dist/syncer/index.d.ts.map +1 -0
- package/dist/syncer/index.js +2 -0
- package/dist/syncer/index.js.map +1 -0
- package/dist/syncer/syncer.d.ts +127 -0
- package/dist/syncer/syncer.d.ts.map +1 -0
- package/dist/syncer/syncer.js +2 -0
- package/dist/syncer/syncer.js.map +1 -0
- package/dist/templates/base-template.d.ts +13 -0
- package/dist/templates/base-template.d.ts.map +1 -0
- package/dist/templates/base-template.js +2 -0
- package/dist/templates/base-template.js.map +1 -0
- package/dist/templates/entity.template.d.ts +17 -0
- package/dist/templates/entity.template.d.ts.map +1 -0
- package/dist/templates/entity.template.js +2 -0
- package/dist/templates/entity.template.js.map +1 -0
- package/dist/templates/generated.template.d.ts +27 -0
- package/dist/templates/generated.template.d.ts.map +1 -0
- package/dist/templates/generated.template.js +2 -0
- package/dist/templates/generated.template.js.map +1 -0
- package/dist/templates/generated_http.template.d.ts +24 -0
- package/dist/templates/generated_http.template.d.ts.map +1 -0
- package/dist/templates/generated_http.template.js +2 -0
- package/dist/templates/generated_http.template.js.map +1 -0
- package/dist/templates/generated_sso.template.d.ts +20 -0
- package/dist/templates/generated_sso.template.d.ts.map +1 -0
- package/dist/templates/generated_sso.template.js +2 -0
- package/dist/templates/generated_sso.template.js.map +1 -0
- package/dist/templates/index.d.ts +2 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +2 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/init_types.template.d.ts +17 -0
- package/dist/templates/init_types.template.d.ts.map +1 -0
- package/dist/templates/init_types.template.js +2 -0
- package/dist/templates/init_types.template.js.map +1 -0
- package/dist/templates/model.template.d.ts +17 -0
- package/dist/templates/model.template.d.ts.map +1 -0
- package/dist/templates/model.template.js +2 -0
- package/dist/templates/model.template.js.map +1 -0
- package/dist/templates/model_test.template.d.ts +17 -0
- package/dist/templates/model_test.template.d.ts.map +1 -0
- package/dist/templates/model_test.template.js +2 -0
- package/dist/templates/model_test.template.js.map +1 -0
- package/dist/templates/service.template.d.ts +29 -0
- package/dist/templates/service.template.d.ts.map +1 -0
- package/dist/templates/service.template.js +2 -0
- package/dist/templates/service.template.js.map +1 -0
- package/dist/templates/view_enums_buttonset.template.d.ts +17 -0
- package/dist/templates/view_enums_buttonset.template.d.ts.map +1 -0
- package/dist/templates/view_enums_buttonset.template.js +2 -0
- package/dist/templates/view_enums_buttonset.template.js.map +1 -0
- package/dist/templates/view_enums_dropdown.template.d.ts +18 -0
- package/dist/templates/view_enums_dropdown.template.d.ts.map +1 -0
- package/dist/templates/view_enums_dropdown.template.js +2 -0
- package/dist/templates/view_enums_dropdown.template.js.map +1 -0
- package/dist/templates/view_enums_select.template.d.ts +17 -0
- package/dist/templates/view_enums_select.template.d.ts.map +1 -0
- package/dist/templates/view_enums_select.template.js +2 -0
- package/dist/templates/view_enums_select.template.js.map +1 -0
- package/dist/templates/view_form.template.d.ts +26 -0
- package/dist/templates/view_form.template.d.ts.map +1 -0
- package/dist/templates/view_form.template.js +2 -0
- package/dist/templates/view_form.template.js.map +1 -0
- package/dist/templates/view_id_all_select.template.d.ts +17 -0
- package/dist/templates/view_id_all_select.template.d.ts.map +1 -0
- package/dist/templates/view_id_all_select.template.js +2 -0
- package/dist/templates/view_id_all_select.template.js.map +1 -0
- package/dist/templates/view_id_async_select.template.d.ts +17 -0
- package/dist/templates/view_id_async_select.template.d.ts.map +1 -0
- package/dist/templates/view_id_async_select.template.js +2 -0
- package/dist/templates/view_id_async_select.template.js.map +1 -0
- package/dist/templates/view_list.template.d.ts +38 -0
- package/dist/templates/view_list.template.d.ts.map +1 -0
- package/dist/templates/view_list.template.js +2 -0
- package/dist/templates/view_list.template.js.map +1 -0
- package/dist/templates/view_list_columns.template.d.ts +17 -0
- package/dist/templates/view_list_columns.template.d.ts.map +1 -0
- package/dist/templates/view_list_columns.template.js +2 -0
- package/dist/templates/view_list_columns.template.js.map +1 -0
- package/dist/templates/view_search_input.template.d.ts +17 -0
- package/dist/templates/view_search_input.template.d.ts.map +1 -0
- package/dist/templates/view_search_input.template.js +2 -0
- package/dist/templates/view_search_input.template.js.map +1 -0
- package/dist/testing/_relation-graph.d.ts +7 -0
- package/dist/testing/_relation-graph.d.ts.map +1 -0
- package/dist/testing/_relation-graph.js +2 -0
- package/dist/testing/_relation-graph.js.map +1 -0
- package/dist/testing/fixture-manager.d.ts +35 -0
- package/dist/testing/fixture-manager.d.ts.map +1 -0
- package/dist/testing/fixture-manager.js +2 -0
- package/dist/testing/fixture-manager.js.map +1 -0
- package/dist/types/types.d.ts +609 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/types.js +2 -0
- package/dist/types/types.js.map +1 -0
- package/dist/typings/knex.d.js +2 -0
- package/dist/typings/knex.d.js.map +1 -0
- package/dist/utils/async-utils.d.ts +25 -0
- package/dist/utils/async-utils.d.ts.map +1 -0
- package/dist/utils/async-utils.js +2 -0
- package/dist/utils/async-utils.js.map +1 -0
- package/dist/utils/controller.d.ts +9 -0
- package/dist/utils/controller.d.ts.map +1 -0
- package/dist/utils/controller.js +2 -0
- package/dist/utils/controller.js.map +1 -0
- package/dist/utils/fs-utils.d.ts +9 -0
- package/dist/utils/fs-utils.d.ts.map +1 -0
- package/dist/utils/fs-utils.js +2 -0
- package/dist/utils/fs-utils.js.map +1 -0
- package/dist/utils/lodash-able.d.ts +2 -0
- package/dist/utils/lodash-able.d.ts.map +1 -0
- package/dist/utils/lodash-able.js +2 -0
- package/dist/utils/lodash-able.js.map +1 -0
- package/dist/utils/model.d.ts +17 -0
- package/dist/utils/model.d.ts.map +1 -0
- package/dist/utils/model.js +2 -0
- package/dist/utils/model.js.map +1 -0
- package/dist/utils/sql-parser.d.ts +4 -0
- package/dist/utils/sql-parser.d.ts.map +1 -0
- package/dist/utils/sql-parser.js +2 -0
- package/dist/utils/sql-parser.js.map +1 -0
- package/dist/utils/utils.d.ts +9 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +2 -0
- package/dist/utils/utils.js.map +1 -0
- package/dist/utils/zod-error.d.ts +8 -0
- package/dist/utils/zod-error.d.ts.map +1 -0
- package/dist/utils/zod-error.js +2 -0
- package/dist/utils/zod-error.js.map +1 -0
- package/nodemon.json +6 -0
- package/package.json +29 -44
- package/src/api/base-frame.ts +3 -4
- package/src/api/caster.ts +22 -23
- package/src/api/code-converters.ts +170 -134
- package/src/api/context.ts +13 -6
- package/src/api/decorators.ts +146 -20
- package/src/api/index.ts +2 -0
- package/src/api/sonamu.ts +374 -165
- package/src/bin/build-config.ts +5 -0
- package/src/bin/cli-wrapper.ts +29 -40
- package/src/bin/cli.ts +132 -190
- package/src/database/_batch_update.ts +10 -15
- package/src/database/base-model.ts +300 -216
- package/src/database/db.ts +191 -21
- package/src/database/{drivers/knex/plugins → knex-plugins}/knex-on-duplicate-update.ts +1 -1
- package/src/database/puri-wrapper.ts +129 -0
- package/src/database/puri.ts +808 -0
- package/src/database/puri.types.ts +222 -0
- package/src/database/transaction-context.ts +18 -0
- package/src/database/upsert-builder.ts +32 -35
- package/src/entity/entity-manager.ts +7 -15
- package/src/entity/entity.ts +9 -31
- package/src/entity/migrator-/354/235/264/354/202/254/352/260/224/354/226/264/354/232/224.md +1 -0
- package/src/file-storage/driver.ts +121 -0
- package/src/file-storage/file-storage.ts +100 -0
- package/src/index.ts +14 -11
- package/src/migration/code-generation.ts +777 -0
- package/src/migration/migration-set.ts +453 -0
- package/src/migration/migrator.ts +823 -0
- package/src/migration/types.ts +53 -0
- package/src/shared/web.shared.ts.txt +33 -2
- package/src/syncer/syncer.ts +294 -127
- package/src/templates/generated.template.ts +13 -1
- package/src/templates/generated_http.template.ts +15 -12
- package/src/templates/generated_sso.template.ts +50 -2
- package/src/templates/model.template.ts +138 -2
- package/src/templates/service.template.ts +0 -1
- package/src/templates/view_form.template.ts +11 -7
- package/src/templates/view_list.template.ts +12 -4
- package/src/testing/fixture-manager.ts +229 -174
- package/src/types/types.ts +102 -14
- package/src/utils/async-utils.ts +64 -0
- package/src/utils/fs-utils.ts +17 -0
- package/src/utils/model.ts +0 -2
- package/src/utils/utils.ts +14 -58
- package/src/utils/zod-error.ts +12 -176
- package/tsconfig.json +2 -0
- package/tsup.config.js +4 -2
- package/.pnp.cjs +0 -14363
- package/.pnp.loader.mjs +0 -2047
- package/.vscode/extensions.json +0 -6
- package/.vscode/settings.json +0 -9
- package/.yarnrc.yml +0 -5
- package/dist/chunk-QJFHDCBN.mjs.map +0 -1
- package/src/database/base-model.abstract.ts +0 -97
- package/src/database/db.abstract.ts +0 -75
- package/src/database/drivers/knex/base-model.ts +0 -55
- package/src/database/drivers/knex/client.ts +0 -209
- package/src/database/drivers/knex/db.ts +0 -232
- package/src/database/drivers/knex/generator.ts +0 -659
- package/src/database/drivers/kysely/base-model.ts +0 -89
- package/src/database/drivers/kysely/client.ts +0 -309
- package/src/database/drivers/kysely/db.ts +0 -238
- package/src/database/drivers/kysely/generator.ts +0 -714
- package/src/database/types.ts +0 -118
- package/src/entity/migrator.ts +0 -1400
- package/src/smd/smd-manager.ts +0 -139
- package/src/smd/smd.ts +0 -571
- package/src/templates/kysely_types.template.ts +0 -205
- /package/dist/{chunk-NI37CY4T.mjs.map → chunk-C3IPIF6O.mjs.map} +0 -0
- /package/dist/{chunk-DYFCACHD.js.map → chunk-EXHKSVTE.js.map} +0 -0
- /package/dist/{chunk-DDJ7T4MA.mjs.map → chunk-HGIBJYOU.mjs.map} +0 -0
- /package/dist/{chunk-NIFOTHBW.mjs.map → chunk-JKSOJRQA.mjs.map} +0 -0
- /package/dist/{chunk-CXAVBVKC.js.map → chunk-OTKKFP3Y.js.map} +0 -0
- /package/dist/{chunk-J6S43O7G.js.map → chunk-UZ2IY5VE.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/api/sonamu.ts"],"sourcesContent":["import path from \"path\";\nimport { readFile } from \"fs/promises\";\nimport { exists } from \"../utils/fs-utils\";\nimport { AsyncLocalStorage } from \"async_hooks\";\nimport chalk from \"chalk\";\nimport fastify from \"fastify\";\n\nimport { ZodError } from \"zod\";\nimport { getZodObjectFromApi } from \"./code-converters\";\nimport {\n BadRequestException,\n NotFoundException,\n} from \"../exceptions/so-exceptions\";\nimport { humanizeZodError } from \"../utils/zod-error\";\nimport { fastifyCaster } from \"./caster\";\nimport {\n ApiParamType,\n SonamuFastifyConfig,\n SonamuServerOptions,\n} from \"../types/types\";\nimport { isLocal, isTest } from \"../utils/controller\";\nimport { findApiRootPath } from \"../utils/utils\";\nimport { DB, SonamuDBConfig } from \"../database/db\";\nimport { attachOnDuplicateUpdate } from \"../database/knex-plugins/knex-on-duplicate-update\";\nimport type { ExtendedApi } from \"./decorators\";\nimport type { FastifyInstance, FastifyReply, FastifyRequest } from \"fastify\";\nimport type { IncomingMessage, Server, ServerResponse } from \"http\";\nimport type { Context, UploadContext } from \"./context\";\nimport type { Syncer } from \"../syncer/syncer\";\nimport type { FSWatcher } from \"chokidar\";\nimport { formatInTimeZone } from \"date-fns-tz\";\nimport type { Driver } from \"../file-storage/driver\";\n\nexport type SonamuConfig = {\n projectName?: string;\n api: {\n dir: string;\n };\n sync: {\n targets: string[];\n };\n route: {\n prefix: string;\n };\n timezone?: string;\n ui?: {\n port: number;\n };\n};\nexport type SonamuSecrets = {\n [key: string]: string;\n};\nclass SonamuClass {\n public isInitialized: boolean = false;\n public asyncLocalStorage: AsyncLocalStorage<{\n context: Context;\n }> = new AsyncLocalStorage();\n\n public uploadStorage: AsyncLocalStorage<{\n uploadContext: UploadContext;\n }> = new AsyncLocalStorage();\n\n public getContext(): Context {\n const store = this.asyncLocalStorage.getStore();\n if (store?.context) {\n return store.context;\n }\n throw new Error(\"Sonamu cannot find context\");\n }\n\n public getUploadContext(): UploadContext {\n const store = this.uploadStorage.getStore();\n if (store?.uploadContext) {\n return store.uploadContext;\n }\n throw new Error(\n \"Sonamu cannot find upload context. Did you use @upload decorator?\"\n );\n }\n\n private _apiRootPath: string | null = null;\n set apiRootPath(apiRootPath: string) {\n this._apiRootPath = apiRootPath;\n }\n get apiRootPath(): string {\n if (this._apiRootPath === null) {\n throw new Error(\"Sonamu has not been initialized\");\n }\n return this._apiRootPath!;\n }\n get appRootPath(): string {\n return this.apiRootPath.split(path.sep).slice(0, -1).join(path.sep);\n }\n\n private _dbConfig: SonamuDBConfig | null = null;\n set dbConfig(dbConfig: SonamuDBConfig) {\n this._dbConfig = dbConfig;\n }\n get dbConfig(): SonamuDBConfig {\n if (this._dbConfig === null) {\n throw new Error(\"Sonamu has not been initialized\");\n }\n return this._dbConfig!;\n }\n\n private _syncer: Syncer | null = null;\n set syncer(syncer: Syncer) {\n this._syncer = syncer;\n }\n get syncer(): Syncer {\n if (this._syncer === null) {\n throw new Error(\"Sonamu has not been initialized\");\n }\n return this._syncer!;\n }\n\n private _config: SonamuConfig | null = null;\n set config(config: SonamuConfig) {\n this._config = config;\n }\n get config(): SonamuConfig {\n if (this._config === null) {\n throw new Error(\"Sonamu has not been initialized\");\n }\n return this._config;\n }\n\n private _secrets: SonamuSecrets | null = null;\n set secrets(secrets: SonamuSecrets) {\n this._secrets = secrets;\n }\n get secrets(): SonamuSecrets | null {\n return this._secrets;\n }\n\n private _storage: Driver | null = null;\n set storage(storage: Driver) {\n this._storage = storage;\n }\n get storage(): Driver | null {\n return this._storage;\n }\n\n // HMR 처리\n public watcher: FSWatcher | null = null;\n private pendingFiles: string[] = [];\n private hmrStartTime: number = 0;\n\n public server: FastifyInstance | null = null;\n\n async initForTesting() {\n await this.init(true, false, undefined, true);\n }\n\n async init(\n doSilent: boolean = false,\n enableSync: boolean = true,\n apiRootPath?: string,\n forTesting: boolean = false\n ) {\n if (this.isInitialized) {\n return;\n }\n !doSilent &&\n console.time(\n chalk.cyan(`Sonamu.init${forTesting ? \" for testing\" : \"\"}`)\n );\n\n // API 루트 패스\n this.apiRootPath = apiRootPath ?? findApiRootPath();\n const configPath = path.join(this.apiRootPath, \"sonamu.config.json\");\n const secretsPath = path.join(this.apiRootPath, \"sonamu.secrets.json\");\n if (!(await exists(configPath))) {\n throw new Error(`Cannot find sonamu.config.json in ${configPath}`);\n }\n this.config = JSON.parse(\n (await readFile(configPath)).toString()\n ) as SonamuConfig;\n if (await exists(secretsPath)) {\n this.secrets = JSON.parse(\n (await readFile(secretsPath)).toString()\n ) as SonamuSecrets;\n }\n\n // DB 로드\n this.dbConfig = await DB.readKnexfile();\n !doSilent && console.log(chalk.green(\"DB Config Loaded!\"));\n attachOnDuplicateUpdate();\n\n // 테스팅인 경우 엔티티 로드 & 싱크 없이 중단\n if (forTesting) {\n this.isInitialized = true;\n return;\n }\n\n // Entity 로드\n const { EntityManager } = await import(\"../entity/entity-manager\");\n await EntityManager.autoload(doSilent);\n\n // Syncer\n const { Syncer } = await import(\"../syncer/syncer\");\n this.syncer = new Syncer();\n\n // Autoload: Models / Types / APIs\n await this.syncer.autoloadModels();\n await this.syncer.autoloadTypes();\n await this.syncer.autoloadApis();\n\n if (isLocal() && !isTest() && enableSync) {\n await this.syncer.sync();\n\n // FIXME: hmr 설정된 경우만 워처 시작\n this.startWatcher();\n\n this.syncer.syncUI();\n }\n\n this.isInitialized = true;\n !doSilent && console.timeEnd(chalk.cyan(\"Sonamu.init\"));\n }\n\n async createServer(\n options: SonamuServerOptions,\n initOptions?: {\n enableSync?: boolean;\n doSilent?: boolean;\n }\n ) {\n const server = fastify(options.fastify);\n this.server = server;\n\n // Storage 설정 저장\n if (options.storage) {\n this.storage = options.storage;\n }\n\n // 플러그인 등록\n if (options.plugins) {\n this.registerPlugins(server, options.plugins);\n }\n\n // API 라우팅 설정\n await this.withFastify(server, options.apiConfig, {\n enableSync: initOptions?.enableSync,\n doSilent: initOptions?.doSilent,\n });\n\n // 서버 시작\n await this.boot(server, options);\n\n return server;\n }\n\n async withFastify(\n server: FastifyInstance<Server, IncomingMessage, ServerResponse>,\n config: SonamuFastifyConfig,\n options?: {\n enableSync?: boolean;\n doSilent?: boolean;\n }\n ) {\n if (this.isInitialized === false) {\n await this.init(options?.doSilent, options?.enableSync);\n }\n\n this.server = server;\n\n // timezone 설정\n const timezone = this.config.timezone;\n if (timezone) {\n const DATE_FORMAT = \"yyyy-MM-dd'T'HH:mm:ssXXX\";\n // ISO 8601 날짜 형식 정규식 (예: 2024-01-15T09:30:00.000Z)\n const ISO_DATE_REGEX = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?Z$/;\n\n server.setReplySerializer((payload) => {\n return JSON.stringify(payload, (_key, value) => {\n if (typeof value === \"string\" && ISO_DATE_REGEX.test(value)) {\n return formatInTimeZone(new Date(value), timezone, DATE_FORMAT);\n }\n return value;\n });\n });\n !options?.doSilent &&\n console.log(chalk.green(`Timezone set to ${timezone}`));\n }\n\n // 전체 라우팅 리스트\n server.get(\n `${this.config.route.prefix}/routes`,\n async (_request, _reply): Promise<any> => {\n return this.syncer.apis;\n }\n );\n\n // Healthcheck API\n server.get(\n `${this.config.route.prefix}/healthcheck`,\n async (_request, _reply): Promise<string> => {\n return \"ok\";\n }\n );\n\n // API 라우팅 (로컬HMR 상태와 구분)\n if (isLocal()) {\n server.all(\"*\", (request, reply) => {\n const found = this.syncer.apis.find(\n (api) =>\n this.config.route.prefix + api.path === request.url.split(\"?\")[0] &&\n (api.options.httpMethod ?? \"GET\") === request.method.toUpperCase()\n );\n if (found) {\n return this.getApiHandler(found, config)(request, reply);\n }\n throw new NotFoundException(\"존재하지 않는 API 접근입니다.\");\n });\n } else {\n this.syncer.apis.map((api) => {\n // model\n if (this.syncer.models[api.modelName] === undefined) {\n throw new Error(`정의되지 않은 모델에 접근 ${api.modelName}`);\n }\n\n // route\n server.route({\n method: api.options.httpMethod!,\n url: this.config.route.prefix + api.path,\n handler: this.getApiHandler(api, config),\n }); // END server.route\n });\n }\n }\n\n getApiHandler(api: ExtendedApi, config: SonamuFastifyConfig) {\n return async (\n request: FastifyRequest,\n reply: FastifyReply\n ): Promise<unknown> => {\n (api.options.guards ?? []).every((guard) =>\n config.guardHandler(guard, request, api)\n );\n\n // 파라미터 정보로 zod 스키마 빌드\n const ReqType = getZodObjectFromApi(api, this.syncer.types);\n\n // request 파싱\n const which = api.options.httpMethod === \"GET\" ? \"query\" : \"body\";\n let reqBody: {\n [key: string]: unknown;\n };\n try {\n reqBody = fastifyCaster(ReqType).parse(request[which] ?? {});\n } catch (e) {\n if (e instanceof ZodError) {\n const messages = humanizeZodError(e)\n .map((issue) => issue.message)\n .join(\" \");\n throw new BadRequestException(messages, {\n zodError: e,\n });\n } else {\n throw e;\n }\n }\n\n // Content-Type\n reply.type(api.options.contentType ?? \"application/json\");\n\n // 캐시\n const { cacheKey, cacheTtl, cachedData } = await (async () => {\n if (config.cache) {\n try {\n const cacheKeyRes = config.cache.resolveKey(api.path, reqBody);\n if (cacheKeyRes.cache === false) {\n return { cacheKey: null, cachedData: null };\n }\n\n const cacheKey = cacheKeyRes.key;\n const cacheTtl = cacheKeyRes.ttl;\n const cachedData = await config.cache.get(cacheKey);\n return { cacheKey, cacheTtl, cachedData };\n } catch (e) {\n console.error(e);\n }\n return { cacheKey: null, cachedData: null };\n }\n return { cacheKey: null, cachedData: null };\n })();\n if (cachedData !== null) {\n return cachedData;\n }\n\n // 결과 (AsyncLocalStorage 적용)\n const context = config.contextProvider(\n {\n request,\n reply,\n headers: request.headers,\n },\n request,\n reply\n );\n const model = this.syncer.models[api.modelName];\n return this.asyncLocalStorage.run({ context }, async () => {\n const result = await (model as any)[api.methodName].apply(\n model,\n api.parameters.map((param) => {\n // Context 인젝션\n if (ApiParamType.isContext(param.type)) {\n return context;\n } else {\n return reqBody[param.name];\n }\n })\n );\n reply.type(api.options.contentType ?? \"application/json\");\n\n // 캐시 키 있는 경우 갱신 후 저장\n if (config.cache && cacheKey) {\n await config.cache.put(cacheKey, result, cacheTtl);\n }\n return result;\n });\n };\n }\n\n startWatcher(): void {\n const watchPath = path.join(this.apiRootPath, \"src\");\n const chokidar = require(\"chokidar\") as typeof import(\"chokidar\");\n this.watcher = chokidar.watch(watchPath, {\n ignored: (path, stats) =>\n (!!stats?.isFile() &&\n !path.endsWith(\".ts\") &&\n !path.endsWith(\".json\")) ||\n path.endsWith(\"src/index.ts\"),\n persistent: true,\n ignoreInitial: true,\n });\n this.watcher.on(\"all\", async (event: string, filePath: string) => {\n if (event !== \"change\" && event !== \"add\") {\n return;\n }\n\n await this.handleFileChange(event, filePath);\n });\n }\n\n private registerPlugins(\n server: FastifyInstance,\n plugins: SonamuServerOptions[\"plugins\"]\n ) {\n if (!plugins) {\n return;\n }\n\n const pluginsModules = {\n formbody: \"@fastify/formbody\",\n qs: \"fastify-qs\",\n cors: \"@fastify/cors\",\n multipart: \"@fastify/multipart\",\n } as const;\n\n const registerPlugin = <K extends keyof NonNullable<typeof plugins>>(\n key: K,\n pluginName: string\n ) => {\n const option = plugins[key];\n if (!option) return;\n\n if (option === true) {\n server.register(import(pluginName));\n } else {\n server.register(import(pluginName), option);\n }\n };\n\n Object.entries(pluginsModules).forEach(([key, pluginName]) => {\n registerPlugin(key as keyof typeof plugins, pluginName);\n });\n\n if (plugins.custom) {\n plugins.custom(server);\n }\n }\n\n private async boot(server: FastifyInstance, options: SonamuServerOptions) {\n const port = options.listen?.port ?? 3000;\n const host = options.listen?.host ?? \"localhost\";\n\n server.addHook(\"onClose\", async () => {\n await options.lifecycle?.onShutdown?.(server);\n await this.destroy();\n });\n\n const shutdown = async () => {\n try {\n await server.close();\n process.exit(0);\n } catch (err) {\n console.error(\"Error during shutdown:\", err);\n process.exit(1);\n }\n };\n\n process.on(\"SIGINT\", shutdown);\n process.on(\"SIGTERM\", shutdown);\n\n if (options.lifecycle?.onError) {\n server.setErrorHandler(options.lifecycle?.onError);\n }\n\n server\n .listen({ port, host })\n .then(async () => {\n await options.lifecycle?.onStart?.(server);\n })\n .catch(async (err) => {\n console.error(chalk.red(\"Failed to start server:\", err));\n await shutdown();\n });\n }\n\n private async handleFileChange(\n event: string,\n filePath: string\n ): Promise<void> {\n // 첫 번째 파일이면 HMR 시작 시간 기록\n if (this.pendingFiles.length === 0) {\n this.hmrStartTime = Date.now();\n }\n\n this.pendingFiles.push(filePath);\n\n const relativePath = filePath.replace(this.apiRootPath, \"api\");\n console.log(chalk.bold(`Detected(${event}): ${chalk.blue(relativePath)}`));\n\n await this.syncer.syncFromWatcher([filePath]);\n\n // 처리 완료된 파일을 대기 목록에서 제거\n this.pendingFiles = this.pendingFiles.slice(1);\n\n // 모든 파일 처리가 완료되면 최종 메시지 출력\n if (this.pendingFiles.length === 0) {\n await this.finishHMR();\n }\n }\n\n private async finishHMR(): Promise<void> {\n await this.syncer.saveChecksums(await this.syncer.getCurrentChecksums());\n\n const endTime = Date.now();\n const totalTime = endTime - this.hmrStartTime;\n const msg = `HMR Done! ${chalk.bold.white(`${totalTime}ms`)}`;\n const margin = Math.max(0, (process.stdout.columns - msg.length) / 2);\n\n console.log(\n chalk.black.bgGreen(\" \".repeat(margin) + msg + \" \".repeat(margin))\n );\n }\n\n async destroy(): Promise<void> {\n const { BaseModel } = require(\"../database/base-model\");\n await BaseModel.destroy();\n await this.watcher?.close();\n }\n}\nexport const Sonamu = new SonamuClass();\n"],"names":["Sonamu","SonamuClass","isInitialized","asyncLocalStorage","AsyncLocalStorage","uploadStorage","_apiRootPath","_dbConfig","_syncer","_config","_secrets","_storage","watcher","pendingFiles","hmrStartTime","server","getContext","store","getStore","context","Error","getUploadContext","uploadContext","apiRootPath","appRootPath","split","path","sep","slice","join","dbConfig","syncer","config","secrets","storage","initForTesting","init","undefined","doSilent","enableSync","forTesting","configPath","secretsPath","EntityManager","Syncer","console","time","chalk","cyan","findApiRootPath","exists","JSON","parse","readFile","toString","DB","readKnexfile","log","green","attachOnDuplicateUpdate","autoload","autoloadModels","autoloadTypes","autoloadApis","isLocal","isTest","sync","startWatcher","syncUI","timeEnd","createServer","options","initOptions","fastify","plugins","registerPlugins","withFastify","apiConfig","boot","timezone","DATE_FORMAT","ISO_DATE_REGEX","setReplySerializer","payload","stringify","_key","value","test","formatInTimeZone","Date","get","route","prefix","_request","_reply","apis","all","request","reply","found","find","api","url","httpMethod","method","toUpperCase","getApiHandler","NotFoundException","map","models","modelName","handler","ReqType","which","reqBody","messages","cacheKey","cacheTtl","cachedData","model","guards","every","guard","guardHandler","getZodObjectFromApi","types","fastifyCaster","e","ZodError","humanizeZodError","issue","message","BadRequestException","zodError","type","contentType","cacheKeyRes","cache","resolveKey","key","ttl","error","contextProvider","headers","run","result","methodName","apply","parameters","param","ApiParamType","isContext","name","put","watchPath","chokidar","require","watch","ignored","stats","isFile","endsWith","persistent","ignoreInitial","on","event","filePath","handleFileChange","pluginsModules","formbody","qs","cors","multipart","registerPlugin","pluginName","option","register","Object","entries","forEach","custom","port","host","shutdown","listen","addHook","lifecycle","onShutdown","destroy","err","close","process","exit","onError","setErrorHandler","then","onStart","catch","red","relativePath","length","now","push","replace","bold","blue","syncFromWatcher","finishHMR","endTime","totalTime","msg","margin","saveChecksums","getCurrentChecksums","white","Math","max","stdout","columns","black","bgGreen","repeat","BaseModel"],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { FastifyReply, FastifyRequest } from "fastify";
|
|
2
|
+
import type { Context } from "./context";
|
|
3
|
+
import type { ApiParamType, ApiParam } from "../types/types";
|
|
4
|
+
import type { ApiDecoratorOptions } from "./decorators";
|
|
5
|
+
export type SonamuFastifyConfig = {
|
|
6
|
+
contextProvider: (defaultContext: Pick<Context, "headers" | "reply">, request: FastifyRequest, reply: FastifyReply) => Context;
|
|
7
|
+
guardHandler: (guard: string, request: FastifyRequest, api: {
|
|
8
|
+
typeParameters: ApiParamType.TypeParam[];
|
|
9
|
+
parameters: ApiParam[];
|
|
10
|
+
returnType: ApiParamType;
|
|
11
|
+
modelName: string;
|
|
12
|
+
methodName: string;
|
|
13
|
+
path: string;
|
|
14
|
+
options: ApiDecoratorOptions;
|
|
15
|
+
}) => void;
|
|
16
|
+
cache?: {
|
|
17
|
+
get: (key: string) => Promise<unknown | null>;
|
|
18
|
+
put: (key: string, value: unknown, ttl?: number) => Promise<void>;
|
|
19
|
+
resolveKey: (path: string, reqBody: {
|
|
20
|
+
[key: string]: unknown;
|
|
21
|
+
}) => {
|
|
22
|
+
cache: false;
|
|
23
|
+
} | {
|
|
24
|
+
cache: true;
|
|
25
|
+
key: string;
|
|
26
|
+
ttl?: number;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=sonamu.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sonamu.types.d.ts","sourceRoot":"","sources":["../../src/api/sonamu.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,MAAM,mBAAmB,GAAG;IAChC,eAAe,EAAE,CACf,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,EAClD,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,KAChB,OAAO,CAAC;IACb,YAAY,EAAE,CACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE;QACH,cAAc,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC;QACzC,UAAU,EAAE,QAAQ,EAAE,CAAC;QACvB,UAAU,EAAE,YAAY,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,mBAAmB,CAAC;KAC9B,KACE,IAAI,CAAC;IACV,KAAK,CAAC,EAAE;QACN,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAC9C,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAClE,UAAU,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;YACP,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,KAEC;YACE,KAAK,EAAE,KAAK,CAAC;SACd,GACD;YACE,KAAK,EAAE,IAAI,CAAC;YACZ,GAAG,EAAE,MAAM,CAAC;YACZ,GAAG,CAAC,EAAE,MAAM,CAAC;SACd,CAAC;KACP,CAAC;CACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/api/sonamu.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-config.d.ts","sourceRoot":"","sources":["../../src/bin/build-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,iBAAiB,gKACiI,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"SWC_BUILD_COMMAND",{enumerable:true,get:function(){return SWC_BUILD_COMMAND}});var SWC_BUILD_COMMAND="swc src -d dist --strip-leading-paths --source-maps -C module.type=commonjs -C jsc.parser.syntax=typescript -C jsc.parser.decorators=true -C jsc.target=es5";
|
|
2
|
+
//# sourceMappingURL=build-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/bin/build-config.ts"],"sourcesContent":["/**\n * SWC 빌드 명령어\n */\nexport const SWC_BUILD_COMMAND =\n \"swc src -d dist --strip-leading-paths --source-maps -C module.type=commonjs -C jsc.parser.syntax=typescript -C jsc.parser.decorators=true -C jsc.target=es5\";\n"],"names":["SWC_BUILD_COMMAND"],"mappings":"oGAGaA,2DAAAA,qBAAN,IAAMA,kBACX"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-wrapper.d.ts","sourceRoot":"","sources":["../../src/bin/cli-wrapper.ts"],"names":[],"mappings":""}
|
package/dist/bin/cli-wrapper.js
CHANGED
|
@@ -1,40 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env ts-node
|
|
2
|
-
"use strict"; function
|
|
3
|
-
// src/bin/cli-wrapper.ts
|
|
4
|
-
var _child_process = require('child_process');
|
|
5
|
-
var _path = require('path');
|
|
6
|
-
var _fs = require('fs');
|
|
7
|
-
var cjsPath = _path.resolve.call(void 0, __dirname, "bin/cli.js");
|
|
8
|
-
var esmPath = _path.resolve.call(void 0, __dirname, "bin/cli.mjs");
|
|
9
|
-
var isESM = () => {
|
|
10
|
-
const packageJsonPath = _path.resolve.call(void 0, process.cwd(), "package.json");
|
|
11
|
-
const packageJson = JSON.parse(_fs.readFileSync.call(void 0, packageJsonPath, "utf-8"));
|
|
12
|
-
if (packageJson.type === "module") {
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
if (process.env.USE_ESM === "true") {
|
|
16
|
-
return true;
|
|
17
|
-
}
|
|
18
|
-
if (_fs.existsSync.call(void 0, packageJsonPath)) {
|
|
19
|
-
const packageJson2 = JSON.parse(_fs.readFileSync.call(void 0, packageJsonPath, "utf-8"));
|
|
20
|
-
return packageJson2.type === "module";
|
|
21
|
-
}
|
|
22
|
-
if (packageJson.main && _path.extname.call(void 0, packageJson.main) === ".mjs") {
|
|
23
|
-
return true;
|
|
24
|
-
}
|
|
25
|
-
return false;
|
|
26
|
-
};
|
|
27
|
-
var scriptPath = isESM() ? esmPath : cjsPath;
|
|
28
|
-
if (!_fs.existsSync.call(void 0, scriptPath)) {
|
|
29
|
-
console.error(`Error: Script not found at ${scriptPath}`);
|
|
30
|
-
process.exit(1);
|
|
31
|
-
}
|
|
32
|
-
var result = _child_process.spawnSync.call(void 0,
|
|
33
|
-
process.execPath,
|
|
34
|
-
[scriptPath, ...process.argv.slice(2)],
|
|
35
|
-
{
|
|
36
|
-
stdio: "inherit"
|
|
37
|
-
}
|
|
38
|
-
);
|
|
39
|
-
process.exit(_nullishCoalesce(result.status, () => ( 1)));
|
|
2
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _child_process=require("child_process");var _path=require("path");var _fs=require("fs");var _chalk=/*#__PURE__*/_interop_require_default(require("chalk"));var _buildconfig=require("./build-config");function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}var scriptPath=(0,_path.resolve)(__dirname,"cli.js");var args=process.argv.slice(2);function build(){try{(0,_child_process.execSync)(_buildconfig.SWC_BUILD_COMMAND,{cwd:process.cwd(),stdio:"inherit"})}catch(error){console.error(_chalk.default.red("Build failed."),error);process.exit(1)}}if(args[0]==="build"){console.log(_chalk.default.blue("Building the project..."));build();console.log(_chalk.default.green("Build completed successfully."));process.exit(0)}if(args[0]==="dev:serve"){build()}if(!(0,_fs.existsSync)(scriptPath)){console.error("Error: Script not found at ".concat(scriptPath));process.exit(1)}var result=(0,_child_process.spawnSync)(process.execPath,[scriptPath].concat(_to_consumable_array(args)),{stdio:"inherit"});var _result_status;process.exit((_result_status=result.status)!==null&&_result_status!==void 0?_result_status:1);
|
|
40
3
|
//# sourceMappingURL=cli-wrapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/bin/cli-wrapper.ts"],"
|
|
1
|
+
{"version":3,"sources":["../../src/bin/cli-wrapper.ts"],"sourcesContent":["#!/usr/bin/env ts-node\n\nimport { spawnSync, execSync } from \"child_process\";\nimport { resolve } from \"path\";\nimport { existsSync } from \"fs\";\nimport chalk from \"chalk\";\nimport { SWC_BUILD_COMMAND } from \"./build-config\";\n\nconst scriptPath = resolve(__dirname, \"cli.js\");\nconst args = process.argv.slice(2);\n\n// build 명령어는 dist 없이도 실행 가능하도록 cli.ts 외부에서 처리(Sonamu.init에서 dist 필요)\nfunction build() {\n try {\n execSync(SWC_BUILD_COMMAND, { cwd: process.cwd(), stdio: \"inherit\" });\n } catch (error) {\n console.error(chalk.red(\"Build failed.\"), error);\n process.exit(1);\n }\n}\n\nif (args[0] === \"build\") {\n console.log(chalk.blue(\"Building the project...\"));\n build();\n console.log(chalk.green(\"Build completed successfully.\"));\n process.exit(0);\n}\n\nif (args[0] === \"dev:serve\") {\n build();\n}\n\nif (!existsSync(scriptPath)) {\n console.error(`Error: Script not found at ${scriptPath}`);\n process.exit(1);\n}\n\nconst result = spawnSync(process.execPath, [scriptPath, ...args], {\n stdio: \"inherit\",\n});\n\nprocess.exit(result.status ?? 1);\n"],"names":["scriptPath","resolve","__dirname","args","process","argv","slice","build","execSync","SWC_BUILD_COMMAND","cwd","stdio","error","console","chalk","red","exit","log","blue","green","existsSync","result","spawnSync","execPath","status"],"mappings":";iGAEoC,mCACZ,wBACG,+DACT,mCACgB,6rCAElC,IAAMA,WAAaC,GAAAA,aAAO,EAACC,UAAW,UACtC,IAAMC,KAAOC,QAAQC,IAAI,CAACC,KAAK,CAAC,GAGhC,SAASC,QACP,GAAI,CACFC,GAAAA,uBAAQ,EAACC,8BAAiB,CAAE,CAAEC,IAAKN,QAAQM,GAAG,GAAIC,MAAO,SAAU,EACrE,CAAE,MAAOC,MAAO,CACdC,QAAQD,KAAK,CAACE,cAAK,CAACC,GAAG,CAAC,iBAAkBH,OAC1CR,QAAQY,IAAI,CAAC,EACf,CACF,CAEA,GAAIb,IAAI,CAAC,EAAE,GAAK,QAAS,CACvBU,QAAQI,GAAG,CAACH,cAAK,CAACI,IAAI,CAAC,4BACvBX,QACAM,QAAQI,GAAG,CAACH,cAAK,CAACK,KAAK,CAAC,kCACxBf,QAAQY,IAAI,CAAC,EACf,CAEA,GAAIb,IAAI,CAAC,EAAE,GAAK,YAAa,CAC3BI,OACF,CAEA,GAAI,CAACa,GAAAA,cAAU,EAACpB,YAAa,CAC3Ba,QAAQD,KAAK,CAAC,AAAC,8BAAwC,OAAXZ,aAC5CI,QAAQY,IAAI,CAAC,EACf,CAEA,IAAMK,OAASC,GAAAA,wBAAS,EAAClB,QAAQmB,QAAQ,CAAE,CAACvB,WAAoB,CAArB,OAAa,qBAAGG,OAAO,CAChEQ,MAAO,SACT,OAEaU,eAAbjB,QAAQY,IAAI,CAACK,CAAAA,eAAAA,OAAOG,MAAM,UAAbH,wBAAAA,eAAiB"}
|
package/dist/bin/cli.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":""}
|