raiton 0.0.2 → 1.0.0-alpha.2
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/CHANGELOG.md +32 -0
- package/README.md +98 -1
- package/build/bin/index.mjs +6816 -47
- package/build/raiton-1.0.0-alpha.2.tgz +0 -0
- package/package.json +22 -35
- package/source/bin/bootstrapper.ts +15 -0
- package/source/bin/cli-tools.ts +73 -0
- package/source/bin/cli.ts +12 -0
- package/source/bin/index.ts +6 -0
- package/source/commands/artifact.command.ts +28 -0
- package/source/commands/build.command.ts +31 -0
- package/source/commands/develop.command.ts +47 -0
- package/source/commands/grafts.command.ts +27 -0
- package/source/commands/start.command.ts +28 -0
- package/source/core/application.ts +115 -0
- package/source/core/artifacts/artifact.ts +109 -0
- package/source/core/artifacts/artifacts.ts +10 -0
- package/source/core/artifacts/index.ts +1 -0
- package/source/core/artifacts/runner.ts +3 -0
- package/source/core/builder.ts +138 -0
- package/source/core/bytes.util.ts +17 -0
- package/source/core/command.ts +24 -0
- package/source/core/commands.ts +44 -0
- package/source/core/config/config.ts +51 -0
- package/source/core/config/define.ts +13 -0
- package/source/core/config/index.ts +2 -0
- package/source/core/context.ts +33 -0
- package/source/core/controller/builder.ts +38 -0
- package/source/core/controller/compiler.ts +22 -0
- package/source/core/controller/index.ts +3 -0
- package/source/core/controller/metadata.ts +13 -0
- package/source/core/directories.ts +30 -0
- package/source/core/helpers/index.ts +1 -0
- package/source/core/helpers/raiton.ts +3 -0
- package/source/core/hmr.ts +106 -0
- package/source/core/hooks.ts +28 -0
- package/source/core/index.ts +13 -0
- package/source/core/injection/index.ts +1 -0
- package/source/core/injection/injection.ts +157 -0
- package/source/core/middleware/compose.ts +40 -0
- package/source/core/middleware/index.ts +2 -0
- package/source/core/middleware/pipeline.ts +27 -0
- package/source/core/plugins/index.ts +2 -0
- package/source/core/plugins/plugin.ts +8 -0
- package/source/core/plugins/scope.ts +46 -0
- package/source/core/process.util.ts +12 -0
- package/source/core/raiton.ts +21 -0
- package/source/core/router/handler.ts +59 -0
- package/source/core/router/index.ts +4 -0
- package/source/core/router/matcher.ts +51 -0
- package/source/core/router/route.ts +63 -0
- package/source/core/router/router.ts +31 -0
- package/source/core/server.ts +26 -0
- package/source/core/thread.ts +87 -0
- package/source/env.d.ts +3 -0
- package/source/requirements.ts +27 -0
- package/source/sdk/artifacts.ts +55 -0
- package/source/sdk/constants/decorators.constant.ts +7 -0
- package/source/sdk/constants/index.ts +2 -0
- package/source/sdk/constants/microservices.constant.ts +4 -0
- package/source/sdk/controllers.ts +4 -0
- package/source/sdk/data-transfer-object.ts +7 -0
- package/source/sdk/decorators/access-guard.decorator.ts +9 -0
- package/source/sdk/decorators/controllable.decorator.ts +20 -0
- package/source/sdk/decorators/index.ts +5 -0
- package/source/sdk/decorators/injection.decorator.ts +46 -0
- package/source/sdk/decorators/middleware.decorator.ts +15 -0
- package/source/sdk/decorators/parametrable.ts +24 -0
- package/source/sdk/decorators/payload.decorator.ts +77 -0
- package/source/sdk/decorators/routable.decorator.ts +48 -0
- package/source/sdk/encryption.ts +155 -0
- package/source/sdk/enums/encrypted.enum.ts +13 -0
- package/source/sdk/enums/event.message.enum.ts +4 -0
- package/{build/sdk/enums/http-parameters.enum.d.ts → source/sdk/enums/http-parameters.enum.ts} +3 -5
- package/source/sdk/enums/http.enum.ts +10 -0
- package/source/sdk/enums/index.ts +6 -0
- package/{build/sdk/enums/runtime.enum.d.ts → source/sdk/enums/runtime.enum.ts} +2 -4
- package/{build/sdk/enums/timestamp.enum.d.ts → source/sdk/enums/timestamp.enum.ts} +2 -4
- package/source/sdk/env.ts +40 -0
- package/source/sdk/index.ts +6 -0
- package/source/sdk/json.ts +55 -0
- package/source/sdk/plugins/body-parser.plugin.ts +119 -0
- package/source/sdk/plugins/index.ts +2 -0
- package/source/sdk/plugins/security/body-limit.ts +19 -0
- package/source/sdk/plugins/security/cors.ts +44 -0
- package/source/sdk/plugins/security/headers.ts +14 -0
- package/source/sdk/plugins/security/index.ts +13 -0
- package/source/sdk/plugins/security/method-guard.ts +14 -0
- package/source/sdk/plugins/security/rate-limit.ts +42 -0
- package/source/sdk/repositories.ts +14 -0
- package/source/sdk/request.ts +3 -0
- package/source/sdk/responses.ts +45 -0
- package/source/sdk/runtime/bun/server.ts +72 -0
- package/source/sdk/runtime/deno/server.ts +53 -0
- package/source/sdk/runtime/index.ts +47 -0
- package/source/sdk/runtime/node/server.ts +60 -0
- package/source/sdk/runtime/web/server.ts +57 -0
- package/{build/sdk/schemes.d.ts → source/sdk/schemes.ts} +91 -33
- package/source/sdk/services.ts +9 -0
- package/{build/sdk/throwable.d.ts → source/sdk/throwable.ts} +35 -12
- package/source/sdk/utilities/alias-path.util.ts +49 -0
- package/source/sdk/utilities/artifacts.util.ts +62 -0
- package/source/sdk/utilities/callable.util.ts +27 -0
- package/source/sdk/utilities/controller.util.ts +8 -0
- package/source/sdk/utilities/index.ts +7 -0
- package/source/sdk/utilities/json.util.ts +21 -0
- package/source/sdk/utilities/path.util.ts +19 -0
- package/source/sdk/utilities/url.ts +5 -0
- package/source/sdk/utilities/utilities.util.ts +25 -0
- package/source/types/access-guards.ts +4 -0
- package/{build/types/application.d.ts → source/types/application.ts} +23 -7
- package/source/types/artifact.ts +40 -0
- package/source/types/builder.ts +48 -0
- package/source/types/config.ts +7 -0
- package/source/types/controller.ts +34 -0
- package/source/types/contruct.ts +3 -0
- package/source/types/core.ts +28 -0
- package/source/types/data-transfer-object.ts +4 -0
- package/{build/types/directory.d.ts → source/types/directory.ts} +4 -4
- package/source/types/encryption.ts +17 -0
- package/source/types/generic.ts +3 -0
- package/{build/types/hmr.d.ts → source/types/hmr.ts} +19 -5
- package/source/types/http-responses.ts +8 -0
- package/source/types/index.ts +26 -0
- package/source/types/injection.ts +13 -0
- package/source/types/middleware.ts +18 -0
- package/source/types/parseable.ts +7 -0
- package/source/types/plugin.ts +10 -0
- package/source/types/raiton.ts +9 -0
- package/source/types/responses.ts +10 -0
- package/source/types/router.ts +11 -0
- package/source/types/runtime.ts +53 -0
- package/{build/types/scheme.d.ts → source/types/scheme.ts} +33 -8
- package/source/types/server.ts +12 -0
- package/source/types/thread.ts +31 -0
- package/source/types/utilities.ts +4 -0
- package/source/types/values.ts +3 -0
- package/.releaserc.json +0 -45
- package/build/bin/bootstrapper.d.ts +0 -5
- package/build/bin/bootstrapper.mjs +0 -46
- package/build/bin/cli.d.ts +0 -5
- package/build/bin/cli.mjs +0 -6
- package/build/bin/index.d.ts +0 -1
- package/build/chunk-3PWMRP6G.mjs +0 -16
- package/build/chunk-52JR26TI.mjs +0 -29
- package/build/chunk-5LNOA4SK.mjs +0 -16
- package/build/chunk-AUGL35CF.mjs +0 -24
- package/build/chunk-BVILWYAP.mjs +0 -14
- package/build/chunk-BYYJRCB4.mjs +0 -10
- package/build/chunk-FFRJ4AUA.mjs +0 -16
- package/build/chunk-GPJSLV3Q.mjs +0 -50
- package/build/chunk-HVFHDVAH.mjs +0 -20
- package/build/chunk-IOCHNQMF.mjs +0 -13
- package/build/chunk-JATYBWHL.mjs +0 -36
- package/build/chunk-JWNBO7XV.mjs +0 -53
- package/build/chunk-K4IQQ2KF.mjs +0 -55
- package/build/chunk-K4KLOLSO.mjs +0 -645
- package/build/chunk-M2RZZJQR.mjs +0 -27
- package/build/chunk-MLFGBJDV.mjs +0 -12
- package/build/chunk-NB62GSFI.mjs +0 -27
- package/build/chunk-O7R3NJQN.mjs +0 -19
- package/build/chunk-P3IRIFPT.mjs +0 -53
- package/build/chunk-QFSXFOEN.mjs +0 -56
- package/build/chunk-QHCQ4AUA.mjs +0 -14
- package/build/chunk-QI7OFSXB.mjs +0 -37
- package/build/chunk-RVH2YBNU.mjs +0 -111
- package/build/chunk-RXG7754R.mjs +0 -25
- package/build/chunk-S3ONGVNZ.mjs +0 -11
- package/build/chunk-SRR4467I.mjs +0 -29
- package/build/chunk-T6L55AUG.mjs +0 -32
- package/build/chunk-TOJFTPAY.mjs +0 -83
- package/build/chunk-UAPCBU3J.mjs +0 -12
- package/build/chunk-UCHBN3DV.mjs +0 -52
- package/build/chunk-UWM46HLZ.mjs +0 -18
- package/build/chunk-UZFCGVHP.mjs +0 -8
- package/build/chunk-VQINCGLQ.mjs +0 -59
- package/build/chunk-VRL4S7UF.mjs +0 -74
- package/build/chunk-WAWFDMOH.mjs +0 -72
- package/build/chunk-X3JFRRRQ.mjs +0 -45
- package/build/chunk-XFBLELHI.mjs +0 -34
- package/build/chunk-XIGE72LC.mjs +0 -34
- package/build/chunk-XW7EPAD7.mjs +0 -0
- package/build/chunk-YGIZFKLJ.mjs +0 -20
- package/build/chunk-YRVIAORI.mjs +0 -8
- package/build/chunk-YXU5W2CB.mjs +0 -12
- package/build/commands/artifact.command.d.ts +0 -14
- package/build/commands/artifact.command.mjs +0 -59
- package/build/commands/build.command.d.ts +0 -14
- package/build/commands/build.command.mjs +0 -65
- package/build/commands/develop.command.d.ts +0 -13
- package/build/commands/develop.command.mjs +0 -75
- package/build/commands/grafts.command.d.ts +0 -12
- package/build/commands/grafts.command.mjs +0 -58
- package/build/commands/start.command.d.ts +0 -12
- package/build/commands/start.command.mjs +0 -64
- package/build/core/application.d.ts +0 -27
- package/build/core/application.mjs +0 -124
- package/build/core/artifact.d.ts +0 -19
- package/build/core/artifact.mjs +0 -133
- package/build/core/builder.d.ts +0 -35
- package/build/core/builder.mjs +0 -45
- package/build/core/bytes.util.d.ts +0 -6
- package/build/core/bytes.util.mjs +0 -8
- package/build/core/command.d.ts +0 -15
- package/build/core/command.mjs +0 -6
- package/build/core/commands.d.ts +0 -13
- package/build/core/commands.mjs +0 -7
- package/build/core/config.d.ts +0 -10
- package/build/core/config.mjs +0 -7
- package/build/core/context.d.ts +0 -15
- package/build/core/context.mjs +0 -6
- package/build/core/controller/builder.d.ts +0 -10
- package/build/core/controller/builder.mjs +0 -45
- package/build/core/controller/compiler.d.ts +0 -6
- package/build/core/controller/compiler.mjs +0 -45
- package/build/core/controller/index.d.ts +0 -13
- package/build/core/controller/index.mjs +0 -50
- package/build/core/controller/metadata.d.ts +0 -10
- package/build/core/controller/metadata.mjs +0 -6
- package/build/core/directories.d.ts +0 -11
- package/build/core/directories.mjs +0 -8
- package/build/core/hmr.d.ts +0 -22
- package/build/core/hmr.mjs +0 -6
- package/build/core/hooks.d.ts +0 -12
- package/build/core/hooks.mjs +0 -6
- package/build/core/index.d.ts +0 -41
- package/build/core/index.mjs +0 -100
- package/build/core/middleware/compose.d.ts +0 -8
- package/build/core/middleware/compose.mjs +0 -6
- package/build/core/middleware/index.d.ts +0 -6
- package/build/core/middleware/index.mjs +0 -11
- package/build/core/middleware/pipeline.d.ts +0 -14
- package/build/core/middleware/pipeline.mjs +0 -7
- package/build/core/plugins/index.d.ts +0 -14
- package/build/core/plugins/index.mjs +0 -48
- package/build/core/plugins/plugin.d.ts +0 -17
- package/build/core/plugins/plugin.mjs +0 -6
- package/build/core/plugins/scope.d.ts +0 -24
- package/build/core/plugins/scope.mjs +0 -45
- package/build/core/process.util.d.ts +0 -3
- package/build/core/process.util.mjs +0 -6
- package/build/core/raiton.d.ts +0 -20
- package/build/core/raiton.mjs +0 -6
- package/build/core/router/handler.d.ts +0 -10
- package/build/core/router/handler.mjs +0 -45
- package/build/core/router/index.d.ts +0 -12
- package/build/core/router/index.mjs +0 -54
- package/build/core/router/matcher.d.ts +0 -21
- package/build/core/router/matcher.mjs +0 -6
- package/build/core/router/route.d.ts +0 -20
- package/build/core/router/route.mjs +0 -6
- package/build/core/router/router.d.ts +0 -16
- package/build/core/router/router.mjs +0 -8
- package/build/core/thread.d.ts +0 -30
- package/build/core/thread.mjs +0 -45
- package/build/env.d.d.ts +0 -2
- package/build/env.d.mjs +0 -0
- package/build/raiton-0.0.2.tgz +0 -0
- package/build/requirements.d.ts +0 -2
- package/build/requirements.mjs +0 -19
- package/build/sdk/artifacts.d.ts +0 -13
- package/build/sdk/artifacts.mjs +0 -45
- package/build/sdk/constants/decorators.constant.d.ts +0 -11
- package/build/sdk/constants/decorators.constant.mjs +0 -6
- package/build/sdk/constants/index.d.ts +0 -2
- package/build/sdk/constants/index.mjs +0 -11
- package/build/sdk/constants/microservices.constant.d.ts +0 -5
- package/build/sdk/constants/microservices.constant.mjs +0 -6
- package/build/sdk/controllers.d.ts +0 -4
- package/build/sdk/controllers.mjs +0 -6
- package/build/sdk/data-transfer-object.d.ts +0 -7
- package/build/sdk/data-transfer-object.mjs +0 -7
- package/build/sdk/decorators/access-guard.decorator.d.ts +0 -2
- package/build/sdk/decorators/access-guard.decorator.mjs +0 -0
- package/build/sdk/decorators/controllable.d.ts +0 -3
- package/build/sdk/decorators/controllable.mjs +0 -45
- package/build/sdk/decorators/controllers.decorator.d.ts +0 -2
- package/build/sdk/decorators/controllers.decorator.mjs +0 -0
- package/build/sdk/decorators/grafts.decorator.d.ts +0 -2
- package/build/sdk/decorators/grafts.decorator.mjs +0 -0
- package/build/sdk/decorators/index.d.ts +0 -3
- package/build/sdk/decorators/index.mjs +0 -75
- package/build/sdk/decorators/parameters.decorator.d.ts +0 -2
- package/build/sdk/decorators/parameters.decorator.mjs +0 -0
- package/build/sdk/decorators/parametrable.d.ts +0 -9
- package/build/sdk/decorators/parametrable.mjs +0 -57
- package/build/sdk/decorators/payload.decorator.d.ts +0 -2
- package/build/sdk/decorators/payload.decorator.mjs +0 -0
- package/build/sdk/decorators/routable.d.ts +0 -10
- package/build/sdk/decorators/routable.mjs +0 -59
- package/build/sdk/dependency-container.d.ts +0 -19
- package/build/sdk/dependency-container.mjs +0 -46
- package/build/sdk/encryption.d.ts +0 -27
- package/build/sdk/encryption.mjs +0 -141
- package/build/sdk/enums/encrypted.enum.d.ts +0 -15
- package/build/sdk/enums/encrypted.enum.mjs +0 -6
- package/build/sdk/enums/event.message.enum.d.ts +0 -6
- package/build/sdk/enums/event.message.enum.mjs +0 -6
- package/build/sdk/enums/http-parameters.enum.mjs +0 -6
- package/build/sdk/enums/http.enum.d.ts +0 -12
- package/build/sdk/enums/http.enum.mjs +0 -6
- package/build/sdk/enums/index.d.ts +0 -6
- package/build/sdk/enums/index.mjs +0 -27
- package/build/sdk/enums/runtime.enum.mjs +0 -6
- package/build/sdk/enums/timestamp.enum.mjs +0 -6
- package/build/sdk/env.d.ts +0 -6
- package/build/sdk/env.mjs +0 -74
- package/build/sdk/fastify.d.ts +0 -11
- package/build/sdk/fastify.mjs +0 -9
- package/build/sdk/grafts.d.ts +0 -15
- package/build/sdk/grafts.mjs +0 -71
- package/build/sdk/index.d.ts +0 -34
- package/build/sdk/index.mjs +0 -126
- package/build/sdk/json.d.ts +0 -17
- package/build/sdk/json.mjs +0 -87
- package/build/sdk/plugins/body-parser.plugin.d.ts +0 -17
- package/build/sdk/plugins/body-parser.plugin.mjs +0 -7
- package/build/sdk/plugins/index.d.ts +0 -17
- package/build/sdk/plugins/index.mjs +0 -48
- package/build/sdk/plugins/security/body-limit.d.ts +0 -17
- package/build/sdk/plugins/security/body-limit.mjs +0 -45
- package/build/sdk/plugins/security/cors.d.ts +0 -22
- package/build/sdk/plugins/security/cors.mjs +0 -45
- package/build/sdk/plugins/security/headers.d.ts +0 -17
- package/build/sdk/plugins/security/headers.mjs +0 -45
- package/build/sdk/plugins/security/index.d.ts +0 -25
- package/build/sdk/plugins/security/index.mjs +0 -45
- package/build/sdk/plugins/security/method-guard.d.ts +0 -17
- package/build/sdk/plugins/security/method-guard.mjs +0 -45
- package/build/sdk/plugins/security/rate-limit.d.ts +0 -21
- package/build/sdk/plugins/security/rate-limit.mjs +0 -45
- package/build/sdk/repositories.d.ts +0 -7
- package/build/sdk/repositories.mjs +0 -17
- package/build/sdk/request.d.ts +0 -4
- package/build/sdk/request.mjs +0 -6
- package/build/sdk/responses.d.ts +0 -8
- package/build/sdk/responses.mjs +0 -20
- package/build/sdk/routes.d.ts +0 -7
- package/build/sdk/routes.mjs +0 -61
- package/build/sdk/runtime/bun/server.d.ts +0 -6
- package/build/sdk/runtime/bun/server.mjs +0 -6
- package/build/sdk/runtime/deno/server.d.ts +0 -6
- package/build/sdk/runtime/deno/server.mjs +0 -6
- package/build/sdk/runtime/index.d.ts +0 -15
- package/build/sdk/runtime/index.mjs +0 -11
- package/build/sdk/runtime/node/reply.d.ts +0 -2
- package/build/sdk/runtime/node/reply.mjs +0 -0
- package/build/sdk/runtime/node/request.d.ts +0 -2
- package/build/sdk/runtime/node/request.mjs +0 -0
- package/build/sdk/runtime/node/server.d.ts +0 -6
- package/build/sdk/runtime/node/server.mjs +0 -6
- package/build/sdk/runtime/web/server.d.ts +0 -6
- package/build/sdk/runtime/web/server.mjs +0 -6
- package/build/sdk/schemes.mjs +0 -129
- package/build/sdk/services.d.ts +0 -8
- package/build/sdk/services.mjs +0 -10
- package/build/sdk/throwable.mjs +0 -14
- package/build/sdk/utilities/alias-path.util.d.ts +0 -9
- package/build/sdk/utilities/alias-path.util.mjs +0 -6
- package/build/sdk/utilities/artifacts.util.d.ts +0 -3
- package/build/sdk/utilities/artifacts.util.mjs +0 -45
- package/build/sdk/utilities/callable.util.d.ts +0 -3
- package/build/sdk/utilities/callable.util.mjs +0 -6
- package/build/sdk/utilities/controller.util.d.ts +0 -3
- package/build/sdk/utilities/controller.util.mjs +0 -6
- package/build/sdk/utilities/index.d.ts +0 -7
- package/build/sdk/utilities/index.mjs +0 -62
- package/build/sdk/utilities/json.util.d.ts +0 -3
- package/build/sdk/utilities/json.util.mjs +0 -6
- package/build/sdk/utilities/parameters-arguments.util.d.ts +0 -2
- package/build/sdk/utilities/parameters-arguments.util.mjs +0 -0
- package/build/sdk/utilities/url.d.ts +0 -3
- package/build/sdk/utilities/url.mjs +0 -7
- package/build/sdk/utilities/utilities.util.d.ts +0 -6
- package/build/sdk/utilities/utilities.util.mjs +0 -8
- package/build/types/access-guards.d.ts +0 -6
- package/build/types/access-guards.mjs +0 -0
- package/build/types/application.mjs +0 -0
- package/build/types/artifact.d.ts +0 -21
- package/build/types/artifact.mjs +0 -0
- package/build/types/builder.d.ts +0 -32
- package/build/types/builder.mjs +0 -0
- package/build/types/config.d.ts +0 -6
- package/build/types/config.mjs +0 -0
- package/build/types/controller.d.ts +0 -25
- package/build/types/controller.mjs +0 -0
- package/build/types/contruct.d.ts +0 -3
- package/build/types/contruct.mjs +0 -0
- package/build/types/core.d.ts +0 -15
- package/build/types/core.mjs +0 -0
- package/build/types/data-transfer-object.d.ts +0 -5
- package/build/types/data-transfer-object.mjs +0 -0
- package/build/types/dependency-container.d.ts +0 -20
- package/build/types/dependency-container.mjs +0 -0
- package/build/types/directory.mjs +0 -0
- package/build/types/encryption.d.ts +0 -16
- package/build/types/encryption.mjs +0 -0
- package/build/types/generic.d.ts +0 -4
- package/build/types/generic.mjs +0 -0
- package/build/types/hmr.mjs +0 -0
- package/build/types/http-responses.d.ts +0 -10
- package/build/types/http-responses.mjs +0 -0
- package/build/types/index.d.ts +0 -45
- package/build/types/index.mjs +0 -0
- package/build/types/middleware.d.ts +0 -12
- package/build/types/middleware.mjs +0 -0
- package/build/types/parameters.d.ts +0 -19
- package/build/types/parameters.mjs +0 -0
- package/build/types/parseable.d.ts +0 -5
- package/build/types/parseable.mjs +0 -0
- package/build/types/payload.d.ts +0 -6
- package/build/types/payload.mjs +0 -0
- package/build/types/plugin.d.ts +0 -20
- package/build/types/plugin.mjs +0 -0
- package/build/types/raiton.d.ts +0 -12
- package/build/types/raiton.mjs +0 -0
- package/build/types/repositories.d.ts +0 -8
- package/build/types/repositories.mjs +0 -0
- package/build/types/router.d.ts +0 -14
- package/build/types/router.mjs +0 -0
- package/build/types/runtime.d.ts +0 -37
- package/build/types/runtime.mjs +0 -0
- package/build/types/scheme.mjs +0 -0
- package/build/types/server.d.ts +0 -57
- package/build/types/server.mjs +0 -0
- package/build/types/services.d.ts +0 -8
- package/build/types/services.mjs +0 -0
- package/build/types/thread.d.ts +0 -24
- package/build/types/thread.mjs +0 -0
- package/build/types/utilities.d.ts +0 -6
- package/build/types/utilities.mjs +0 -0
- package/build/types/values.d.ts +0 -4
- package/build/types/values.mjs +0 -0
- /package/{build/chunk-4OWCGDUD.mjs → source/sdk/runtime/node/reply.ts} +0 -0
- /package/{build/chunk-DIWD7ZCJ.mjs → source/sdk/runtime/node/request.ts} +0 -0
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "raiton",
|
|
3
|
-
"version": "0.0.2",
|
|
3
|
+
"version": "1.0.0-alpha.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Protorians Raiton Development Kit",
|
|
7
|
+
"main": "./source/core/index.ts",
|
|
8
|
+
"module": "./source/core/index.ts",
|
|
9
|
+
"types": "./source/core/index.d.ts",
|
|
7
10
|
"bin": {
|
|
8
|
-
"raiton": "
|
|
11
|
+
"raiton": "source/bin/index.ts"
|
|
9
12
|
},
|
|
10
13
|
"keywords": [
|
|
11
14
|
"protorians",
|
|
@@ -14,6 +17,8 @@
|
|
|
14
17
|
"kit",
|
|
15
18
|
"typescript",
|
|
16
19
|
"node",
|
|
20
|
+
"bun",
|
|
21
|
+
"deno",
|
|
17
22
|
"backend"
|
|
18
23
|
],
|
|
19
24
|
"author": "Y. Yannick GOBOU",
|
|
@@ -23,36 +28,22 @@
|
|
|
23
28
|
"url": "git+https://github.com/protorians/raiton.git"
|
|
24
29
|
},
|
|
25
30
|
"exports": {
|
|
26
|
-
"./core
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
"
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
},
|
|
34
|
-
"./commands/*": {
|
|
35
|
-
"types": "./build/commands/*.d.ts",
|
|
36
|
-
"import": "./build/commands/*.mjs"
|
|
37
|
-
},
|
|
38
|
-
"./sdk/*": {
|
|
39
|
-
"types": "./build/sdk/*.d.ts",
|
|
40
|
-
"import": "./build/sdk/*.mjs"
|
|
41
|
-
},
|
|
42
|
-
"./sdk": {
|
|
43
|
-
"types": "./build/sdk/index.d.ts",
|
|
44
|
-
"import": "./build/sdk/index.mjs"
|
|
45
|
-
},
|
|
46
|
-
"./types/*": {
|
|
47
|
-
"types": "./build/types/index.d.ts",
|
|
48
|
-
"import": "./build/types/index.mjs"
|
|
49
|
-
}
|
|
31
|
+
".": "./source/core/index.ts",
|
|
32
|
+
"./core/*": "./source/core/*.ts",
|
|
33
|
+
"./commands/*": "./source/commands/*.ts",
|
|
34
|
+
"./sdk": "./source/sdk/index.ts",
|
|
35
|
+
"./sdk/*": "./source/sdk/*.ts",
|
|
36
|
+
"./types": "./source/types/index.ts",
|
|
37
|
+
"./types/*": "./source/types/*.ts"
|
|
50
38
|
},
|
|
51
39
|
"scripts": {
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
40
|
+
"commit": "bun semantic-release",
|
|
41
|
+
"commit:test": "bun semantic-release --dry-run",
|
|
42
|
+
"dev": "bun run --hot source/bin/index.ts",
|
|
43
|
+
"start": "bun run build/bin/index.mjs",
|
|
44
|
+
"build": "bun build source/bin/index.ts --target=node --format=esm --outfile=build/bin/index.mjs",
|
|
45
|
+
"postinstall": "chmod +x source/bin/index.ts",
|
|
46
|
+
"prepublishOnly": "npm run build"
|
|
56
47
|
},
|
|
57
48
|
"dependencies": {
|
|
58
49
|
"@protorians/core": "^0.6.13",
|
|
@@ -65,9 +56,6 @@
|
|
|
65
56
|
"bcrypt": "^6.0.0",
|
|
66
57
|
"commander": "^14.0.2",
|
|
67
58
|
"dotenv": "^17.2.3",
|
|
68
|
-
"esbuild": "^0.27.1",
|
|
69
|
-
"fastify": "^5.6.2",
|
|
70
|
-
"fastify-plugin": "^5.1.0",
|
|
71
59
|
"reflect-metadata": "^0.2.2"
|
|
72
60
|
},
|
|
73
61
|
"devDependencies": {
|
|
@@ -82,7 +70,6 @@
|
|
|
82
70
|
"conventional-changelog-conventionalcommits": "^9.1.0",
|
|
83
71
|
"cz-conventional-changelog": "^3.3.0",
|
|
84
72
|
"semantic-release": "^25.0.2",
|
|
85
|
-
"tsup": "^8.3.0",
|
|
86
73
|
"typescript": "^5.9.3"
|
|
87
74
|
},
|
|
88
75
|
"config": {
|
|
@@ -92,7 +79,7 @@
|
|
|
92
79
|
},
|
|
93
80
|
"compilerOptions": {
|
|
94
81
|
"types": [
|
|
95
|
-
"
|
|
82
|
+
"bun"
|
|
96
83
|
]
|
|
97
84
|
},
|
|
98
85
|
"publishConfig": {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {Command} from 'commander';
|
|
2
|
+
import {RaitonCommands, RaitonConfig} from "@/core";
|
|
3
|
+
import {getPackageRoot} from "@/sdk";
|
|
4
|
+
import {CliTools} from "@/bin/cli-tools";
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
export default async function bootstrapper(cli: Command) {
|
|
8
|
+
const appdir = getPackageRoot(import.meta.url);
|
|
9
|
+
const workdir = `${CliTools.cwd || './'}`;
|
|
10
|
+
const capabilities = new RaitonCommands(cli, appdir, workdir)
|
|
11
|
+
|
|
12
|
+
await RaitonConfig.sync(workdir);
|
|
13
|
+
await capabilities.harvest();
|
|
14
|
+
return cli.parse(process.argv)
|
|
15
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import {spawn} from 'node:child_process';
|
|
2
|
+
|
|
3
|
+
const isBunUsed = typeof (globalThis as any).Bun !== "undefined";
|
|
4
|
+
const isDenoUsed = typeof (globalThis as any).Deno !== "undefined";
|
|
5
|
+
|
|
6
|
+
declare const Bun: any;
|
|
7
|
+
declare const Deno: any;
|
|
8
|
+
|
|
9
|
+
export class CliTools {
|
|
10
|
+
static get cwd() {
|
|
11
|
+
return `${isDenoUsed ? (globalThis as any).Deno.cwd() : process.cwd()}`;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
static set cwd(value: string) {
|
|
15
|
+
if (isDenoUsed) {
|
|
16
|
+
(globalThis as any).Deno.chdir(value);
|
|
17
|
+
} else {
|
|
18
|
+
process.chdir(value);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
static get argv() {
|
|
23
|
+
if (isBunUsed) return (globalThis as any).Bun.argv;
|
|
24
|
+
if (isDenoUsed) return (globalThis as any).Deno.args;
|
|
25
|
+
return process.argv;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
static get process() {
|
|
29
|
+
if (isBunUsed) return (globalThis as any).Bun;
|
|
30
|
+
if (isDenoUsed) return (globalThis as any).Deno;
|
|
31
|
+
return process;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
static spawn(command: string | string[], args: string[] = [], options?: Record<string, any>) {
|
|
35
|
+
if (isBunUsed) {
|
|
36
|
+
const cmdArray = [
|
|
37
|
+
...(typeof command == 'string' ? [command] : (Array.isArray(command) ? command : [])),
|
|
38
|
+
...args
|
|
39
|
+
];
|
|
40
|
+
if (typeof command === 'string' && command.endsWith('.ts')) {
|
|
41
|
+
cmdArray.unshift('bun');
|
|
42
|
+
}
|
|
43
|
+
return Bun.spawn(cmdArray, options);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (isDenoUsed) {
|
|
47
|
+
const cmd = typeof command == 'string' ? command : command[0];
|
|
48
|
+
const cmdArgs = typeof command == 'string' ? args : [...command.slice(1), ...args];
|
|
49
|
+
|
|
50
|
+
if (cmd.endsWith('.ts')) {
|
|
51
|
+
return new Deno.Command('deno', {
|
|
52
|
+
args: ['run', '-A', cmd, ...cmdArgs],
|
|
53
|
+
...options
|
|
54
|
+
}).spawn();
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
return new Deno.Command(cmd, {
|
|
59
|
+
args: cmdArgs,
|
|
60
|
+
...options
|
|
61
|
+
}).spawn();
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const cmd = typeof command == 'string' ? command : command[0];
|
|
65
|
+
const cmdArgs = typeof command == 'string' ? args : [...command.slice(1), ...args];
|
|
66
|
+
|
|
67
|
+
if (cmd.endsWith('.ts')) {
|
|
68
|
+
return spawn('node', ['--loader', 'ts-node/register', cmd, ...cmdArgs], options);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return spawn(cmd, cmdArgs, options);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {Command} from "commander";
|
|
2
|
+
import {version} from '../../package.json';
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
const CLI = new Command();
|
|
6
|
+
|
|
7
|
+
CLI
|
|
8
|
+
.name('raiton')
|
|
9
|
+
.description('Protorians Raiton development kit for backend microservice')
|
|
10
|
+
.version(version);
|
|
11
|
+
|
|
12
|
+
export default CLI;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import {RaitonCommand, RaitonBuilder} from "@/core";
|
|
2
|
+
import {Logger} from "@protorians/logger";
|
|
3
|
+
import type {BuildCommandOptions} from "@/types";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
export default class ArtifactCommand extends RaitonCommand {
|
|
7
|
+
public readonly name: string = 'artifact';
|
|
8
|
+
public readonly description: string = 'Manage artifacts';
|
|
9
|
+
|
|
10
|
+
public register(): void {
|
|
11
|
+
this.cli
|
|
12
|
+
.command(this.name)
|
|
13
|
+
.alias("art")
|
|
14
|
+
.description(this.description)
|
|
15
|
+
.option("--dump, -d", "Dump the application artifacts configured")
|
|
16
|
+
.option("--create, -c", "Create an artifact")
|
|
17
|
+
.option("--remove, -r", "Remove an artifact")
|
|
18
|
+
.option("--clear", "Clear all artifacts")
|
|
19
|
+
.action(this.run.bind(this));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
protected async run(options: BuildCommandOptions): Promise<void> {
|
|
23
|
+
|
|
24
|
+
Logger.notice("Artifact management is not yet implemented");
|
|
25
|
+
Logger.debug('Options:', options, '')
|
|
26
|
+
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import {RaitonCommand, RaitonBuilder} from "@/core";
|
|
2
|
+
import {LBadge, Logger} from "@protorians/logger";
|
|
3
|
+
import type {BuildCommandOptions} from "@/types";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
export default class BuildCommand extends RaitonCommand {
|
|
7
|
+
public readonly name: string = 'build';
|
|
8
|
+
public readonly description: string = 'Build the application';
|
|
9
|
+
|
|
10
|
+
public register(): void {
|
|
11
|
+
this.cli
|
|
12
|
+
.command(this.name)
|
|
13
|
+
.alias("b")
|
|
14
|
+
.description("Build the application")
|
|
15
|
+
.option("--develop, -d", "Build in development mode")
|
|
16
|
+
.option("--bootstrap, -b", "Bootstrap the application")
|
|
17
|
+
.action(this.run.bind(this));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
protected async run(options: BuildCommandOptions): Promise<void> {
|
|
21
|
+
if (options.develop) Logger.warn(LBadge.log("Dev Mode"),);
|
|
22
|
+
|
|
23
|
+
const builder = new RaitonBuilder(this.workdir, {
|
|
24
|
+
development: options.develop
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
await builder.prepare()
|
|
28
|
+
await builder.boot()
|
|
29
|
+
// await builder.start(async () => (options.develop || options.bootstrap) ? await builder.boot() : void (0))
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import {Raiton, RaitonCommand} from "@/core";
|
|
2
|
+
import {ChildProcess} from 'node:child_process';
|
|
3
|
+
import {Logger} from "@protorians/logger";
|
|
4
|
+
import {EventMessageEnum} from "@/sdk";
|
|
5
|
+
import {CliTools} from "@/bin/cli-tools";
|
|
6
|
+
import path from "node:path";
|
|
7
|
+
|
|
8
|
+
export default class DevelopCommand extends RaitonCommand {
|
|
9
|
+
public readonly name: string = 'develop';
|
|
10
|
+
public readonly description: string = 'Run the application in development mode';
|
|
11
|
+
|
|
12
|
+
private child: Bun.Subprocess<"ignore", "pipe", "inherit"> | ChildProcess | null = null;
|
|
13
|
+
|
|
14
|
+
public register(): void {
|
|
15
|
+
this.cli
|
|
16
|
+
.command(this.name)
|
|
17
|
+
.alias("dev")
|
|
18
|
+
.description("Start the application in development mode")
|
|
19
|
+
.action(this.run.bind(this));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
protected async restart(): Promise<void> {
|
|
23
|
+
Logger.info('Reloading...');
|
|
24
|
+
console.clear();
|
|
25
|
+
this.child?.kill('SIGTERM');
|
|
26
|
+
|
|
27
|
+
if (this.child && 'on' in this.child)
|
|
28
|
+
this.child?.on('exit', () => this.run());
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
protected async run(): Promise<void> {
|
|
32
|
+
// Logger.info('Workdir', this.workdir);
|
|
33
|
+
|
|
34
|
+
const entryPoint = path.join(this.appdir, 'bin/index.ts');
|
|
35
|
+
this.child = CliTools.spawn(entryPoint, ['build', '-d'], {
|
|
36
|
+
stdio: ['inherit', 'inherit', 'inherit', 'ipc'],
|
|
37
|
+
cwd: this.workdir
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
if (this.child && 'on' in this.child)
|
|
41
|
+
this.child.on('message', (msg) => {
|
|
42
|
+
if (msg === EventMessageEnum.RESTART) this.restart()
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
Logger.log('PID', this.child.pid)
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {RaitonCommand} from "@/core";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
export default class GraftsCommand extends RaitonCommand {
|
|
5
|
+
|
|
6
|
+
public readonly name: string = 'grafts';
|
|
7
|
+
public readonly description: string = 'Generates typings grafts';
|
|
8
|
+
public readonly version: string = '0.0.1';
|
|
9
|
+
|
|
10
|
+
public register(): void {
|
|
11
|
+
this.cli
|
|
12
|
+
.command(this.name)
|
|
13
|
+
.description("Generates typings grafts")
|
|
14
|
+
.action(this.generates.bind(this))
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
protected async generates(): Promise<void> {
|
|
18
|
+
console.log("Running grafts generator command");
|
|
19
|
+
// generateArtifacts(
|
|
20
|
+
// "graft",
|
|
21
|
+
// "IGlobalGrafts",
|
|
22
|
+
// /@Graftable\(\s*(?:([A-Za-z0-9_.]+)\s*,\s*)?(?:(["'`])(.*?)\2)?\s*\)/,
|
|
23
|
+
// true,
|
|
24
|
+
// )
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import {RaitonCommand} from "@/core";
|
|
2
|
+
import {ChildProcess} from 'node:child_process';
|
|
3
|
+
import {Raiton} from "@/core/raiton";
|
|
4
|
+
import {CliTools} from "@/bin/cli-tools";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
|
|
7
|
+
export default class StartCommand extends RaitonCommand {
|
|
8
|
+
public readonly name: string = 'start';
|
|
9
|
+
public readonly description: string = 'Run the application in production mode';
|
|
10
|
+
|
|
11
|
+
private child: Bun.Subprocess<"ignore", "pipe", "inherit"> | ChildProcess | null = null;
|
|
12
|
+
|
|
13
|
+
public register(): void {
|
|
14
|
+
this.cli
|
|
15
|
+
.command(this.name)
|
|
16
|
+
.alias("run")
|
|
17
|
+
.description("Start the application in production mode")
|
|
18
|
+
.action(this.run.bind(this));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
protected async run(): Promise<void> {
|
|
22
|
+
const entryPoint = path.join(this.appdir, 'bin/index.ts');
|
|
23
|
+
this.child = CliTools.spawn(entryPoint, ['build', '--bootstrap'], {
|
|
24
|
+
stdio: 'inherit',
|
|
25
|
+
cwd: this.workdir
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import {PluginScope} from '@/core/plugins/scope'
|
|
2
|
+
import {RequestContext} from './context'
|
|
3
|
+
import {ApplicationConfig, ApplicationInterface} from "@/types/application";
|
|
4
|
+
import {HttpMethod} from "@/sdk";
|
|
5
|
+
import {RouteHandler} from "@/types";
|
|
6
|
+
import {Logger} from "@protorians/logger";
|
|
7
|
+
|
|
8
|
+
export class Application implements ApplicationInterface {
|
|
9
|
+
private root: PluginScope
|
|
10
|
+
|
|
11
|
+
constructor(
|
|
12
|
+
readonly config: ApplicationConfig
|
|
13
|
+
) {
|
|
14
|
+
this.root = new PluginScope()
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public get hostname(): string {
|
|
18
|
+
return `${
|
|
19
|
+
this.config.protocole || 'http'
|
|
20
|
+
}://${
|
|
21
|
+
this.config.hostname || 'localhost'
|
|
22
|
+
}${
|
|
23
|
+
this.config.port ? `:${this.config.port}` : ''
|
|
24
|
+
}${
|
|
25
|
+
this.config.pathname || '/'
|
|
26
|
+
}`
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// public setOption<K extends keyof ApplicationConfig>(key: K, value: ApplicationConfig[K]): this {
|
|
30
|
+
// this.config[key] = value;
|
|
31
|
+
// return this;
|
|
32
|
+
// }
|
|
33
|
+
//
|
|
34
|
+
// public setOptions(options: ApplicationConfig): this {
|
|
35
|
+
// Object.assign(this.config, options);
|
|
36
|
+
// return this;
|
|
37
|
+
// }
|
|
38
|
+
|
|
39
|
+
register(plugin: any): this {
|
|
40
|
+
this.root.register(plugin)
|
|
41
|
+
return this
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
use(mw: any): this {
|
|
45
|
+
this.root.use(mw)
|
|
46
|
+
return this
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
route(method: HttpMethod, path: string, handler: RouteHandler, version?: string): this {
|
|
50
|
+
this.root.route(method, path, handler, version)
|
|
51
|
+
return this
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
get(path: string, handler: RouteHandler, version?: string): this {
|
|
55
|
+
return this.route(HttpMethod.GET, path, handler, version)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
post(path: string, handler: RouteHandler, version?: string): this {
|
|
59
|
+
return this.route(HttpMethod.POST, path, handler, version)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
patch(path: string, handler: RouteHandler, version?: string): this {
|
|
63
|
+
return this.route(HttpMethod.PATCH, path, handler, version)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
put(path: string, handler: RouteHandler, version?: string): this {
|
|
67
|
+
return this.route(HttpMethod.PUT, path, handler, version)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
delete(path: string, handler: RouteHandler, version?: string): this {
|
|
71
|
+
return this.route(HttpMethod.DELETE, path, handler, version)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
options(path: string, handler: RouteHandler, version?: string): this {
|
|
75
|
+
return this.route(HttpMethod.OPTIONS, path, handler, version)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
head(path: string, handler: RouteHandler, version?: string): this {
|
|
79
|
+
return this.route(HttpMethod.HEAD, path, handler, version)
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
trace(path: string, handler: RouteHandler, version?: string): this {
|
|
83
|
+
return this.route(HttpMethod.TRACE, path, handler, version)
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
async handle(req: any, reply: any): Promise<any> {
|
|
87
|
+
const ctx = new RequestContext(req, reply)
|
|
88
|
+
|
|
89
|
+
await this.root.hooks.run('onRequest', ctx)
|
|
90
|
+
|
|
91
|
+
const route = this.root.router.match(
|
|
92
|
+
req.method,
|
|
93
|
+
new URL(req.url, this.hostname).pathname
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
if (!route) {
|
|
97
|
+
reply.status(404)
|
|
98
|
+
return reply.send({error: false, statusCode: 404})
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const pipeline = this.root.middleware.clone()
|
|
102
|
+
pipeline.use(async ({context}) => {
|
|
103
|
+
(context as any).params = route.parameters;
|
|
104
|
+
|
|
105
|
+
const responses = await route.handler(context)
|
|
106
|
+
|
|
107
|
+
// Logger.debug('Responses', responses)
|
|
108
|
+
// request.reply.header('Content-Type', 'application/json')
|
|
109
|
+
context.reply.send(responses)
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
await pipeline.run(ctx)
|
|
113
|
+
await this.root.hooks.run('onResponse', ctx)
|
|
114
|
+
}
|
|
115
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import type {ArtifactEntry, ArtifactInterface, ArtifactOptions} from "@/types/artifact";
|
|
2
|
+
import {RaitonDirectories} from "@/core/directories";
|
|
3
|
+
import {Raiton} from "@/core/raiton";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import fs from "node:fs";
|
|
6
|
+
import {LBadge, Logger} from "@protorians/logger";
|
|
7
|
+
import {ArtifactFactory} from "@/sdk/artifacts";
|
|
8
|
+
import {Throwable} from "@/sdk/throwable";
|
|
9
|
+
|
|
10
|
+
export class Artifact implements ArtifactInterface {
|
|
11
|
+
public readonly directory: string;
|
|
12
|
+
public readonly file: string;
|
|
13
|
+
public readonly workdir: string;
|
|
14
|
+
|
|
15
|
+
protected _files: string[] = [];
|
|
16
|
+
|
|
17
|
+
constructor(
|
|
18
|
+
public readonly options: ArtifactOptions,
|
|
19
|
+
) {
|
|
20
|
+
this.options.verbose = typeof options.verbose === "undefined" ? false : options.verbose;
|
|
21
|
+
|
|
22
|
+
if (!Raiton.thread.builder?.source)
|
|
23
|
+
throw new Throwable("Artifact need project source");
|
|
24
|
+
|
|
25
|
+
this.directory = RaitonDirectories.artifacts(Raiton.thread.builder?.workdir)
|
|
26
|
+
this.workdir = Raiton.thread.builder.source;
|
|
27
|
+
this.file = path.join(this.directory, `${this.options.artifact}.d.ts`);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
get files(): string[] {
|
|
31
|
+
return this._files;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
get extensions(): string[] {
|
|
35
|
+
return [
|
|
36
|
+
`${this.options.artifact}.ts`,
|
|
37
|
+
`${this.options.artifact}.js`,
|
|
38
|
+
`${this.options.artifact}.mjs`,
|
|
39
|
+
`${this.options.artifact}.cjs`,
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Finds all files with end 'artifact.EXT'
|
|
45
|
+
*/
|
|
46
|
+
scan(): string[] {
|
|
47
|
+
this._files = [];
|
|
48
|
+
|
|
49
|
+
fs.readdirSync(this.workdir, {recursive: true})
|
|
50
|
+
.forEach(f => {
|
|
51
|
+
this._files = [
|
|
52
|
+
...this._files,
|
|
53
|
+
...this.extensions.filter(ext => f.toString().endsWith(ext))
|
|
54
|
+
];
|
|
55
|
+
})
|
|
56
|
+
;
|
|
57
|
+
|
|
58
|
+
return this._files;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
generate(): boolean {
|
|
62
|
+
try {
|
|
63
|
+
let mappings = "";
|
|
64
|
+
|
|
65
|
+
for (const file of this._files) {
|
|
66
|
+
const filename = path.join(this.workdir, file);
|
|
67
|
+
const content = fs.readFileSync(filename, "utf-8");
|
|
68
|
+
const match = content.match(this.options.decorator?.syntax);
|
|
69
|
+
|
|
70
|
+
if (!match) continue;
|
|
71
|
+
|
|
72
|
+
let name = match[3] || match[1] || "";
|
|
73
|
+
if (!name) {
|
|
74
|
+
const classMatch = content.match(/export\s+default\s+class\s+([A-Za-z0-9_]+)/);
|
|
75
|
+
name = classMatch?.[1] || path.parse(filename).name;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
mappings += ` ${name}: InstanceType<typeof import("@/${file}").default>;\n`;
|
|
79
|
+
|
|
80
|
+
if (this.options.verbose) Logger.info(LBadge.debug(name), `artifact detected`);
|
|
81
|
+
|
|
82
|
+
ArtifactFactory.add(
|
|
83
|
+
this.options.artifact, {
|
|
84
|
+
file,
|
|
85
|
+
dir: this.workdir,
|
|
86
|
+
relative: file,
|
|
87
|
+
absolute: filename
|
|
88
|
+
}
|
|
89
|
+
)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const content = `// AUTO-GENERATED FILE — DO NOT EDIT MANUALLY
|
|
93
|
+
declare global {
|
|
94
|
+
interface ${this.options.provider} {
|
|
95
|
+
${mappings} }
|
|
96
|
+
}
|
|
97
|
+
export {};`;
|
|
98
|
+
fs.writeFileSync(this.file, content, "utf-8");
|
|
99
|
+
if (!ArtifactFactory.save(this.options.artifact))
|
|
100
|
+
throw new Throwable(`Failed to save artifacts for ${this.options.artifact}`);
|
|
101
|
+
|
|
102
|
+
return true;
|
|
103
|
+
} catch (e: any) {
|
|
104
|
+
Logger.error(`Failed to resolve artifacts for ${this.options.artifact}`, e.message ?? e);
|
|
105
|
+
}
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./artifact";
|