@venizia/ignis 0.3.0 → 0.3.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/dist/base/applications/base.js.map +1 -1
- package/dist/base/applications/boot-steps.js.map +1 -1
- package/dist/base/applications/common/index.js.map +1 -1
- package/dist/base/applications/common/types.js.map +1 -1
- package/dist/base/applications/index.js.map +1 -1
- package/dist/base/applications/server.js.map +1 -1
- package/dist/base/controllers/grpc/abstract.js.map +1 -1
- package/dist/base/controllers/grpc/adapter.js.map +1 -1
- package/dist/base/controllers/grpc/base.js.map +1 -1
- package/dist/base/controllers/grpc/common/index.js.map +1 -1
- package/dist/base/controllers/grpc/common/types.js.map +1 -1
- package/dist/base/controllers/grpc/index.js.map +1 -1
- package/dist/base/controllers/index.js.map +1 -1
- package/dist/base/index.js.map +1 -1
- package/dist/base/metadata/index.js.map +1 -1
- package/dist/base/metadata/request-context.js.map +1 -1
- package/dist/base/middlewares/app-error/app-error.middleware.js.map +1 -1
- package/dist/base/middlewares/app-error/index.js.map +1 -1
- package/dist/base/middlewares/index.js.map +1 -1
- package/dist/base/middlewares/request-spy/index.js.map +1 -1
- package/dist/base/middlewares/request-spy/request-spy.middleware.js.map +1 -1
- package/dist/common/constants.js.map +1 -1
- package/dist/common/environments.js.map +1 -1
- package/dist/common/index.js.map +1 -1
- package/dist/components/api-reference/common/constants.js.map +1 -1
- package/dist/components/api-reference/common/index.js.map +1 -1
- package/dist/components/api-reference/common/keys.js.map +1 -1
- package/dist/components/api-reference/common/types.js.map +1 -1
- package/dist/components/api-reference/component.js.map +1 -1
- package/dist/components/api-reference/index.js.map +1 -1
- package/dist/components/api-reference/ui/factory.js.map +1 -1
- package/dist/components/api-reference/ui/index.js.map +1 -1
- package/dist/components/api-reference/ui/scalar.js.map +1 -1
- package/dist/components/api-reference/ui/swagger.js.map +1 -1
- package/dist/components/auth/authenticate/component.js.map +1 -1
- package/dist/components/auth/authenticate/controllers/factory.js.map +1 -1
- package/dist/components/auth/authenticate/controllers/index.js.map +1 -1
- package/dist/components/auth/authenticate/controllers/jwks/controller.js.map +1 -1
- package/dist/components/auth/authenticate/controllers/jwks/definitions.js.map +1 -1
- package/dist/components/auth/authenticate/controllers/jwks/index.js.map +1 -1
- package/dist/components/auth/authenticate/controllers/service-certs/controller.js.map +1 -1
- package/dist/components/auth/authenticate/controllers/service-certs/definitions.js.map +1 -1
- package/dist/components/auth/authenticate/controllers/service-certs/index.js.map +1 -1
- package/dist/components/auth/authenticate/index.js.map +1 -1
- package/dist/components/auth/authenticate/services/basic/index.js.map +1 -1
- package/dist/components/auth/authenticate/services/basic/service.js.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/abstract.service.js.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/index.js.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/abstract.service.js.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/index.js.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.js.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.js.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jws.service.js.map +1 -1
- package/dist/components/auth/authenticate/services/index.js.map +1 -1
- package/dist/components/auth/authenticate/services/jose-loader.js.map +1 -1
- package/dist/components/auth/authenticate/services/service/index.js.map +1 -1
- package/dist/components/auth/authenticate/services/service/signer.service.js.map +1 -1
- package/dist/components/auth/authenticate/services/service/verifier.service.js.map +1 -1
- package/dist/components/auth/authenticate/strategies/basic.strategy.js.map +1 -1
- package/dist/components/auth/authenticate/strategies/index.js.map +1 -1
- package/dist/components/auth/authenticate/strategies/jwks/index.js.map +1 -1
- package/dist/components/auth/authenticate/strategies/jwks/issuer.js.map +1 -1
- package/dist/components/auth/authenticate/strategies/jwks/verifier.js.map +1 -1
- package/dist/components/auth/authenticate/strategies/jws.strategy.js.map +1 -1
- package/dist/components/auth/authenticate/strategies/service.strategy.js.map +1 -1
- package/dist/components/auth/authorize/adapters/base-filtered.js.map +1 -1
- package/dist/components/auth/authorize/adapters/common/index.js.map +1 -1
- package/dist/components/auth/authorize/adapters/common/types.js.map +1 -1
- package/dist/components/auth/authorize/adapters/connector.js.map +1 -1
- package/dist/components/auth/authorize/adapters/custom-grant-expander.js.map +1 -1
- package/dist/components/auth/authorize/adapters/index.js.map +1 -1
- package/dist/components/auth/authorize/adapters/scoped-casbin/adapter.js.map +1 -1
- package/dist/components/auth/authorize/adapters/scoped-casbin/common/constants.js.map +1 -1
- package/dist/components/auth/authorize/adapters/scoped-casbin/common/index.js.map +1 -1
- package/dist/components/auth/authorize/adapters/scoped-casbin/common/types.js.map +1 -1
- package/dist/components/auth/authorize/adapters/scoped-casbin/index.js.map +1 -1
- package/dist/components/auth/authorize/adapters/scoped-casbin/policy-edges.js.map +1 -1
- package/dist/components/auth/authorize/component.js.map +1 -1
- package/dist/components/auth/authorize/enforcers/casbin-module.js.map +1 -1
- package/dist/components/auth/authorize/enforcers/casbin.enforcer.js.map +1 -1
- package/dist/components/auth/authorize/enforcers/index.js.map +1 -1
- package/dist/components/auth/authorize/enforcers/models/index.js.map +1 -1
- package/dist/components/auth/authorize/enforcers/models/rbac-domain.model.js.map +1 -1
- package/dist/components/auth/authorize/enforcers/policy-line-codec.js.map +1 -1
- package/dist/components/auth/authorize/enforcers/user-policy-line-cache.js.map +1 -1
- package/dist/components/auth/authorize/index.js.map +1 -1
- package/dist/components/auth/authorize/role-managers/base.js.map +1 -1
- package/dist/components/auth/authorize/role-managers/domain-hierarchy.js.map +1 -1
- package/dist/components/auth/authorize/role-managers/index.js.map +1 -1
- package/dist/components/auth/authorize/role-managers/membership.js.map +1 -1
- package/dist/components/auth/authorize/role-managers/resource.js.map +1 -1
- package/dist/components/auth/index.js.map +1 -1
- package/dist/components/auth/models/entities/index.js.map +1 -1
- package/dist/components/auth/models/entities/permission.model.js.map +1 -1
- package/dist/components/auth/models/entities/policy-definition.model.js.map +1 -1
- package/dist/components/auth/models/entities/role.model.js.map +1 -1
- package/dist/components/auth/models/entities/user.model.js.map +1 -1
- package/dist/components/auth/models/index.js.map +1 -1
- package/dist/components/controller/grpc/common/index.js.map +1 -1
- package/dist/components/controller/grpc/common/types.js.map +1 -1
- package/dist/components/controller/grpc/grpc.component.js.map +1 -1
- package/dist/components/controller/grpc/index.js.map +1 -1
- package/dist/components/controller/index.js.map +1 -1
- package/dist/components/health-check/common/constants.js.map +1 -1
- package/dist/components/health-check/common/index.js.map +1 -1
- package/dist/components/health-check/common/keys.js.map +1 -1
- package/dist/components/health-check/common/rest-paths.js.map +1 -1
- package/dist/components/health-check/common/types.js.map +1 -1
- package/dist/components/health-check/component.js.map +1 -1
- package/dist/components/health-check/controller.js.map +1 -1
- package/dist/components/health-check/index.js.map +1 -1
- package/dist/components/health-check/reporter.js.map +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/mail/common/constants.js.map +1 -1
- package/dist/components/mail/common/errors.js.map +1 -1
- package/dist/components/mail/common/index.js.map +1 -1
- package/dist/components/mail/common/keys.js.map +1 -1
- package/dist/components/mail/common/types/index.js.map +1 -1
- package/dist/components/mail/common/types/message.js.map +1 -1
- package/dist/components/mail/common/types/options.js.map +1 -1
- package/dist/components/mail/common/types/queue.js.map +1 -1
- package/dist/components/mail/common/types/template.js.map +1 -1
- package/dist/components/mail/common/types/verification.js.map +1 -1
- package/dist/components/mail/component.js.map +1 -1
- package/dist/components/mail/helpers/executors/bull-mq-executor.helper.js.map +1 -1
- package/dist/components/mail/helpers/executors/direct-executor.helper.js.map +1 -1
- package/dist/components/mail/helpers/executors/index.js.map +1 -1
- package/dist/components/mail/helpers/executors/internal-queue-executor.helper.js.map +1 -1
- package/dist/components/mail/helpers/index.js.map +1 -1
- package/dist/components/mail/helpers/transporters/amazon-ses-transporter.helper.js.map +1 -1
- package/dist/components/mail/helpers/transporters/index.js.map +1 -1
- package/dist/components/mail/helpers/transporters/mailgun-transporter.helper.js.map +1 -1
- package/dist/components/mail/helpers/transporters/nodemail-transporter.helper.js.map +1 -1
- package/dist/components/mail/index.js.map +1 -1
- package/dist/components/mail/providers/index.js.map +1 -1
- package/dist/components/mail/providers/mail-queue-executor.provider.js.map +1 -1
- package/dist/components/mail/providers/mail-transporter.provider.js.map +1 -1
- package/dist/components/mail/services/generators/index.js.map +1 -1
- package/dist/components/mail/services/generators/numeric-code.js.map +1 -1
- package/dist/components/mail/services/generators/random-token.js.map +1 -1
- package/dist/components/mail/services/generators/verification-data.js.map +1 -1
- package/dist/components/mail/services/index.js.map +1 -1
- package/dist/components/mail/services/mail.service.js.map +1 -1
- package/dist/components/mail/services/template.service.js.map +1 -1
- package/dist/components/mail/utilities/address.utility.js.map +1 -1
- package/dist/components/mail/utilities/attachment.utility.js.map +1 -1
- package/dist/components/mail/utilities/body.utility.js.map +1 -1
- package/dist/components/mail/utilities/index.js.map +1 -1
- package/dist/components/mail/utilities/mime.utility.js.map +1 -1
- package/dist/components/mail/utilities/type.utility.js.map +1 -1
- package/dist/components/mail/utilities/verification.utility.js.map +1 -1
- package/dist/components/request-tracker/component.js.map +1 -1
- package/dist/components/request-tracker/index.js.map +1 -1
- package/dist/components/socket-io/common/index.js.map +1 -1
- package/dist/components/socket-io/common/keys.js.map +1 -1
- package/dist/components/socket-io/common/types.js.map +1 -1
- package/dist/components/socket-io/component.js.map +1 -1
- package/dist/components/socket-io/handlers/bun.handler.js.map +1 -1
- package/dist/components/socket-io/handlers/index.js.map +1 -1
- package/dist/components/socket-io/handlers/node.handler.js.map +1 -1
- package/dist/components/socket-io/index.js.map +1 -1
- package/dist/components/static-asset/common/commit-token.js.map +1 -1
- package/dist/components/static-asset/common/constants.js.map +1 -1
- package/dist/components/static-asset/common/errors.js.map +1 -1
- package/dist/components/static-asset/common/index.js.map +1 -1
- package/dist/components/static-asset/common/keys.js.map +1 -1
- package/dist/components/static-asset/common/types.js.map +1 -1
- package/dist/components/static-asset/component.js.map +1 -1
- package/dist/components/static-asset/controller/base.definition.js.map +1 -1
- package/dist/components/static-asset/controller/factory.js.map +1 -1
- package/dist/components/static-asset/controller/index.js.map +1 -1
- package/dist/components/static-asset/controller/key-scope.js.map +1 -1
- package/dist/components/static-asset/controller/meta-link.js.map +1 -1
- package/dist/components/static-asset/controller/route-options.js.map +1 -1
- package/dist/components/static-asset/index.js.map +1 -1
- package/dist/components/static-asset/ingest.js.map +1 -1
- package/dist/components/static-asset/models/base.model.js.map +1 -1
- package/dist/components/static-asset/models/index.js.map +1 -1
- package/dist/components/static-asset/repositories/base.repository.js.map +1 -1
- package/dist/components/static-asset/repositories/index.js.map +1 -1
- package/dist/components/websocket/common/index.js.map +1 -1
- package/dist/components/websocket/common/keys.js.map +1 -1
- package/dist/components/websocket/common/types.js.map +1 -1
- package/dist/components/websocket/component.js.map +1 -1
- package/dist/components/websocket/handlers/bun.handler.js.map +1 -1
- package/dist/components/websocket/handlers/index.js.map +1 -1
- package/dist/components/websocket/index.js.map +1 -1
- package/dist/connectors/index.js.map +1 -1
- package/dist/connectors/meilisearch/index.js.map +1 -1
- package/dist/connectors/postgres/drivers/node-postgres.js.map +1 -1
- package/dist/connectors/postgres/drivers/pglite.js.map +1 -1
- package/dist/connectors/postgres/drivers/postgres-js.js.map +1 -1
- package/dist/connectors/postgres/drivers/postgres-js.mjs.map +1 -1
- package/dist/connectors/postgres/index.js.map +1 -1
- package/dist/connectors/postgres/supabase/index.js.map +1 -1
- package/dist/connectors/relational/index.js.map +1 -1
- package/dist/connectors/search/controllers/index.js.map +1 -1
- package/dist/connectors/search/index.js.map +1 -1
- package/dist/connectors/sqlite/drivers/libsql.js.map +1 -1
- package/dist/connectors/sqlite/index.js.map +1 -1
- package/dist/connectors/typesense/controllers/index.js.map +1 -1
- package/dist/connectors/typesense/index.js.map +1 -1
- package/dist/helpers/base-helper.js.map +1 -1
- package/dist/helpers/index.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/utilities/drizzle-result.utility.js.map +1 -1
- package/dist/utilities/index.js.map +1 -1
- package/dist/utilities/network.utility.js.map +1 -1
- package/dist/vulcan-preset/preset.json +8 -4
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/components/socket-io/component.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/components/socket-io/component.ts"],"names":[],"mappings":"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","sourcesContent":["import { type BaseApplication, type TBunServerInstance } from '@/base/applications';\nimport { BaseComponent } from '@venizia/ignis-kernel';\nimport { inject } from '@/base/metadata';\nimport { CoreBindings } from '@venizia/ignis-kernel';\nimport { Binding } from '@venizia/ignis-kernel';\nimport { getError } from '@venizia/ignis-helpers/core';\nimport { HTTP, RuntimeModules, type ValueOrPromise } from '@venizia/ignis-helpers/common';\nimport { type AbstractRedisHelper, isRedisHelper } from '@venizia/ignis-helpers';\nimport {\n SocketIOServerHelper,\n type TSocketIOAuthenticateFn,\n type TSocketIOClientConnectedFn,\n type TSocketIOValidateRoomFn,\n} from '@venizia/ignis-helpers/socket-io';\nimport type { ServerOptions } from 'socket.io';\nimport {\n SocketIOBindingKeys,\n DEFAULT_SERVER_OPTIONS,\n type IResolvedBindings,\n type IServerOptions,\n} from './common';\nimport { createBunEngine, createBunFetchHandler } from './handlers';\nimport { createNodeSocketIOHelper } from './handlers';\n\nexport class SocketIOComponent extends BaseComponent {\n protected serverOptions: Partial<IServerOptions>;\n\n constructor(\n @inject({ key: CoreBindings.APPLICATION_INSTANCE }) private application: BaseApplication,\n ) {\n super({\n scope: SocketIOComponent.name,\n initDefault: { enable: true, container: application },\n bindings: {\n [SocketIOBindingKeys.SERVER_OPTIONS]: Binding.bind<Partial<ServerOptions>>({\n key: SocketIOBindingKeys.SERVER_OPTIONS,\n }).toValue(DEFAULT_SERVER_OPTIONS),\n\n [SocketIOBindingKeys.REDIS_CONNECTION]: Binding.bind<AbstractRedisHelper | null>({\n key: SocketIOBindingKeys.REDIS_CONNECTION,\n }).toValue(null),\n\n [SocketIOBindingKeys.AUTHENTICATE_HANDLER]: Binding.bind<TSocketIOAuthenticateFn | null>({\n key: SocketIOBindingKeys.AUTHENTICATE_HANDLER,\n }).toValue(null),\n\n [SocketIOBindingKeys.VALIDATE_ROOM_HANDLER]: Binding.bind<TSocketIOValidateRoomFn | null>({\n key: SocketIOBindingKeys.VALIDATE_ROOM_HANDLER,\n }).toValue(null),\n\n [SocketIOBindingKeys.CLIENT_CONNECTED_HANDLER]:\n Binding.bind<TSocketIOClientConnectedFn | null>({\n key: SocketIOBindingKeys.CLIENT_CONNECTED_HANDLER,\n }).toValue(null),\n },\n });\n }\n\n private resolveBindings(): IResolvedBindings {\n const extraServerOptions =\n this.application.get<Partial<ServerOptions>>({\n key: SocketIOBindingKeys.SERVER_OPTIONS,\n isOptional: true,\n }) ?? {};\n this.serverOptions = Object.assign({}, DEFAULT_SERVER_OPTIONS, extraServerOptions);\n\n const redisConnection = this.application.get<AbstractRedisHelper>({\n key: SocketIOBindingKeys.REDIS_CONNECTION,\n });\n if (!isRedisHelper(redisConnection)) {\n throw getError({\n message:\n '[SocketIOComponent][resolveBindings] Invalid instance of redisConnection | Please init connection with RedisSingleHelper (single), RedisClusterHelper (cluster), or RedisSentinelHelper (sentinel)!',\n });\n }\n\n const authenticateFn = this.application.get<TSocketIOAuthenticateFn>({\n key: SocketIOBindingKeys.AUTHENTICATE_HANDLER,\n });\n if (!authenticateFn) {\n throw getError({\n message: '[DANGER][SocketIOComponent] Invalid authenticateFn to setup io socket server!',\n });\n }\n\n const validateRoomFn =\n this.application.get<TSocketIOValidateRoomFn | null>({\n key: SocketIOBindingKeys.VALIDATE_ROOM_HANDLER,\n }) ?? undefined;\n\n const clientConnectedFn =\n this.application.get<TSocketIOClientConnectedFn | null>({\n key: SocketIOBindingKeys.CLIENT_CONNECTED_HANDLER,\n }) ?? undefined;\n\n return { redisConnection, authenticateFn, validateRoomFn, clientConnectedFn };\n }\n\n private registerBunHook(opts: IResolvedBindings) {\n const { redisConnection, authenticateFn, validateRoomFn, clientConnectedFn } = opts;\n const serverOptions = this.serverOptions;\n const logger = this.logger.for(this.registerBunHook.name);\n\n this.application.registerPostStartHook({\n identifier: 'socket-io-initialize',\n hook: async () => {\n const { engine, engineHandler } = await createBunEngine({ serverOptions });\n\n const socketIOHelper = new SocketIOServerHelper({\n runtime: RuntimeModules.BUN,\n identifier: serverOptions.identifier!,\n engine,\n serverOptions,\n redisConnection,\n authenticateFn,\n validateRoomFn,\n clientConnectedFn,\n });\n await socketIOHelper.configure();\n\n this.application\n .bind({ key: SocketIOBindingKeys.SOCKET_IO_INSTANCE })\n .toValue(socketIOHelper);\n\n const serverInstance = this.application.getServerInstance<TBunServerInstance>();\n const honoServer = this.application.getServer();\n const enginePath = serverOptions.path ?? '/socket.io/';\n\n serverInstance!.reload({\n fetch: createBunFetchHandler({ engine, enginePath, honoServer }),\n websocket: engineHandler.websocket,\n });\n\n logger.info('SocketIO initialized for Bun runtime');\n },\n });\n }\n\n private registerNodeHook(opts: IResolvedBindings) {\n const serverOptions = this.serverOptions;\n const logger = this.logger.for(this.registerNodeHook.name);\n\n this.application.registerPostStartHook({\n identifier: 'socket-io-initialize',\n hook: async () => {\n const httpServer = this.application.getServerInstance();\n if (!httpServer) {\n throw getError({\n message: '[SocketIOComponent] HTTP server not available for Node.js runtime!',\n });\n }\n\n const socketIOHelper = await createNodeSocketIOHelper({\n serverOptions,\n httpServer,\n resolvedBindings: opts,\n });\n\n this.application\n .bind({ key: SocketIOBindingKeys.SOCKET_IO_INSTANCE })\n .toValue(socketIOHelper);\n\n logger.info('SocketIO initialized for Node.js runtime');\n },\n });\n }\n\n override binding(): ValueOrPromise<void> {\n const logger = this.logger.for(this.binding.name);\n\n if (!this.application) {\n throw getError({\n statusCode: HTTP.ResultCodes.RS_5.InternalServerError,\n message: '[binding] Invalid application to bind SocketIOComponent',\n });\n }\n\n logger.info('Binding SocketIO for application...');\n\n const resolved = this.resolveBindings();\n logger.debug('Socket.IO Server Options: %j', this.serverOptions);\n\n const runtime = RuntimeModules.detect();\n\n switch (runtime) {\n case RuntimeModules.BUN: {\n this.registerBunHook(resolved);\n break;\n }\n case RuntimeModules.NODE: {\n this.registerNodeHook(resolved);\n break;\n }\n default: {\n throw getError({ message: `[SocketIOComponent] Unsupported runtime: ${runtime}` });\n }\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bun.handler.js","sourceRoot":"","sources":["../../../../src/components/socket-io/handlers/bun.handler.ts"],"names":[],"mappings":";;AAIA,0CAyBC;AAED,sDAgBC;AA3CM,KAAK,UAAU,eAAe,CAAC,IAErC;IACC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAEpE,iFAAiF;IACjF,MAAM,UAAU,GAAG,OAAO,aAAa,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3F,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,aAAa,CAAC,IAAI,IAAI,aAAa;QACzC,GAAG,CAAC,UAAU,IAAI;YAChB,IAAI,EAAE;gBACJ,MAAM,EAAE,UAAU,CAAC,MAA2D;gBAC9E,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,WAAW,EAAE,UAAU,CAAC,WAAW;gBACnC,cAAc,EAAE,UAAU,CAAC,cAAc;gBACzC,cAAc,EAAE,UAAU,CAAC,cAAc;gBACzC,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B;SACF,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAEvC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AACnC,CAAC;AAED,SAAgB,qBAAqB,CAAC,IAIrC;IACC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAEhD,OAAO,CAAC,GAAY,EAAE,MAA0B,EAAgC,EAAE;QAChF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE7B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAClF,CAAC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"bun.handler.js","sourceRoot":"","sources":["../../../../src/components/socket-io/handlers/bun.handler.ts"],"names":[],"mappings":";;AAIA,0CAyBC;AAED,sDAgBC;AA3CM,KAAK,UAAU,eAAe,CAAC,IAErC;IACC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAEpE,iFAAiF;IACjF,MAAM,UAAU,GAAG,OAAO,aAAa,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3F,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,aAAa,CAAC,IAAI,IAAI,aAAa;QACzC,GAAG,CAAC,UAAU,IAAI;YAChB,IAAI,EAAE;gBACJ,MAAM,EAAE,UAAU,CAAC,MAA2D;gBAC9E,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,WAAW,EAAE,UAAU,CAAC,WAAW;gBACnC,cAAc,EAAE,UAAU,CAAC,cAAc;gBACzC,cAAc,EAAE,UAAU,CAAC,cAAc;gBACzC,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B;SACF,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAEvC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AACnC,CAAC;AAED,SAAgB,qBAAqB,CAAC,IAIrC;IACC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAEhD,OAAO,CAAC,GAAY,EAAE,MAA0B,EAAgC,EAAE;QAChF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE7B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAClF,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import type { OpenAPIHono } from '@hono/zod-openapi';\nimport type { TBunServerInstance } from '@/base/applications';\nimport type { ServerOptions } from 'socket.io';\n\nexport async function createBunEngine(opts: {\n serverOptions: Partial<ServerOptions>;\n}): Promise<{ engine: any; engineHandler: any }> {\n const { serverOptions } = opts;\n const { Server: BunEngine } = await import('@socket.io/bun-engine');\n\n // Extract cors fields explicitly to bridge socket.io/bun-engine type differences\n const corsConfig = typeof serverOptions.cors === 'object' ? serverOptions.cors : undefined;\n const engine = new BunEngine({\n path: serverOptions.path ?? '/socket.io/',\n ...(corsConfig && {\n cors: {\n origin: corsConfig.origin as string | RegExp | (string | RegExp)[] | undefined,\n methods: corsConfig.methods,\n credentials: corsConfig.credentials,\n allowedHeaders: corsConfig.allowedHeaders,\n exposedHeaders: corsConfig.exposedHeaders,\n maxAge: corsConfig.maxAge,\n },\n }),\n });\n\n const engineHandler = engine.handler();\n\n return { engine, engineHandler };\n}\n\nexport function createBunFetchHandler(opts: {\n engine: any;\n enginePath: string;\n honoServer: OpenAPIHono;\n}): (req: Request, server: TBunServerInstance) => Response | Promise<Response> {\n const { engine, enginePath, honoServer } = opts;\n\n return (req: Request, server: TBunServerInstance): Response | Promise<Response> => {\n const url = new URL(req.url);\n\n if (!url.pathname.startsWith(enginePath)) {\n return honoServer.fetch(req, server);\n }\n\n return engine.handleRequest(req, server) ?? new Response(null, { status: 404 });\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/socket-io/handlers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,iDAA+B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/socket-io/handlers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,iDAA+B","sourcesContent":["export * from './bun.handler';\nexport * from './node.handler';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.handler.js","sourceRoot":"","sources":["../../../../src/components/socket-io/handlers/node.handler.ts"],"names":[],"mappings":";;AAKA,4DAqBC;AAzBD,0DAA+D;AAC/D,gEAAwE;AAGjE,KAAK,UAAU,wBAAwB,CAAC,IAI9C;IACC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAC7D,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,gBAAgB,CAAC;IAEhG,MAAM,cAAc,GAAG,IAAI,gCAAoB,CAAC;QAC9C,OAAO,EAAE,uBAAc,CAAC,IAAI;QAC5B,UAAU,EAAE,aAAa,CAAC,UAAW;QACrC,MAAM,EAAE,UAAU;QAClB,aAAa;QACb,eAAe;QACf,cAAc;QACd,cAAc;QACd,iBAAiB;KAClB,CAAC,CAAC;IACH,MAAM,cAAc,CAAC,SAAS,EAAE,CAAC;IAEjC,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"node.handler.js","sourceRoot":"","sources":["../../../../src/components/socket-io/handlers/node.handler.ts"],"names":[],"mappings":";;AAKA,4DAqBC;AAzBD,0DAA+D;AAC/D,gEAAwE;AAGjE,KAAK,UAAU,wBAAwB,CAAC,IAI9C;IACC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAC7D,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,gBAAgB,CAAC;IAEhG,MAAM,cAAc,GAAG,IAAI,gCAAoB,CAAC;QAC9C,OAAO,EAAE,uBAAc,CAAC,IAAI;QAC5B,UAAU,EAAE,aAAa,CAAC,UAAW;QACrC,MAAM,EAAE,UAAU;QAClB,aAAa;QACb,eAAe;QACf,cAAc;QACd,cAAc;QACd,iBAAiB;KAClB,CAAC,CAAC;IACH,MAAM,cAAc,CAAC,SAAS,EAAE,CAAC;IAEjC,OAAO,cAAc,CAAC;AACxB,CAAC","sourcesContent":["import type { TNodeServerInstance } from '@/base/applications';\nimport { RuntimeModules } from '@venizia/ignis-helpers/common';\nimport { SocketIOServerHelper } from '@venizia/ignis-helpers/socket-io';\nimport type { IResolvedBindings, IServerOptions } from '../common';\n\nexport async function createNodeSocketIOHelper(opts: {\n serverOptions: Partial<IServerOptions>;\n httpServer: TNodeServerInstance;\n resolvedBindings: IResolvedBindings;\n}): Promise<SocketIOServerHelper> {\n const { serverOptions, httpServer, resolvedBindings } = opts;\n const { redisConnection, authenticateFn, validateRoomFn, clientConnectedFn } = resolvedBindings;\n\n const socketIOHelper = new SocketIOServerHelper({\n runtime: RuntimeModules.NODE,\n identifier: serverOptions.identifier!,\n server: httpServer,\n serverOptions,\n redisConnection,\n authenticateFn,\n validateRoomFn,\n clientConnectedFn,\n });\n await socketIOHelper.configure();\n\n return socketIOHelper;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/socket-io/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,8CAA4B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/socket-io/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,8CAA4B","sourcesContent":["export * from './common/keys';\nexport * from './component';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit-token.js","sourceRoot":"","sources":["../../../../src/components/static-asset/common/commit-token.ts"],"names":[],"mappings":";;;AAAA,sDAAuD;AACvD,6CAA0D;AAC1D,qCAA6C;AAS7C,MAAM,MAAM,GAAG,CAAC,OAA4B,EAAU,EAAE,CACtD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAE7D,MAAM,IAAI,GAAG,CAAC,IAAyC,EAAU,EAAE,CACjE,IAAA,wBAAU,EAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAE7E,6FAA6F;AACtF,MAAM,gBAAgB,GAAG,CAAC,IAGhC,EAAU,EAAE;IACX,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC;AAChE,CAAC,CAAC;AANW,QAAA,gBAAgB,oBAM3B;AAEF;;;;;GAKG;AACI,MAAM,eAAe,GAAG,CAAC,IAI/B,EAAuB,EAAE;IACxB,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;IACpD,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE3C,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACxB,MAAM,IAAA,eAAQ,EAAC,0BAAiB,CAAC,oBAAoB,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAErC,kGAAkG;IAClG,IAAI,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,CAAC,IAAA,6BAAe,EAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAA,eAAQ,EAAC,0BAAiB,CAAC,oBAAoB,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,OAAO,GAAwB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACjG,IAAI,OAAO,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC;QAC7B,MAAM,IAAA,eAAQ,EAAC,0BAAiB,CAAC,oBAAoB,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AA1BW,QAAA,eAAe,mBA0B1B"}
|
|
1
|
+
{"version":3,"file":"commit-token.js","sourceRoot":"","sources":["../../../../src/components/static-asset/common/commit-token.ts"],"names":[],"mappings":";;;AAAA,sDAAuD;AACvD,6CAA0D;AAC1D,qCAA6C;AAS7C,MAAM,MAAM,GAAG,CAAC,OAA4B,EAAU,EAAE,CACtD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAE7D,MAAM,IAAI,GAAG,CAAC,IAAyC,EAAU,EAAE,CACjE,IAAA,wBAAU,EAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAE7E,6FAA6F;AACtF,MAAM,gBAAgB,GAAG,CAAC,IAGhC,EAAU,EAAE;IACX,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC;AAChE,CAAC,CAAC;AANW,QAAA,gBAAgB,oBAM3B;AAEF;;;;;GAKG;AACI,MAAM,eAAe,GAAG,CAAC,IAI/B,EAAuB,EAAE;IACxB,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;IACpD,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE3C,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACxB,MAAM,IAAA,eAAQ,EAAC,0BAAiB,CAAC,oBAAoB,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAErC,kGAAkG;IAClG,IAAI,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,CAAC,IAAA,6BAAe,EAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAA,eAAQ,EAAC,0BAAiB,CAAC,oBAAoB,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,OAAO,GAAwB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACjG,IAAI,OAAO,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC;QAC7B,MAAM,IAAA,eAAQ,EAAC,0BAAiB,CAAC,oBAAoB,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AA1BW,QAAA,eAAe,mBA0B1B","sourcesContent":["import { getError } from '@venizia/ignis-helpers/core';\nimport { createHmac, timingSafeEqual } from 'node:crypto';\nimport { StaticAssetErrors } from './errors';\n\n/** What a commit token binds. Business fields are deliberately absent - which order or tenant an upload belongs to is the application's, and a token the framework signs is the wrong place to put its authorization. */\nexport interface ICommitTokenPayload {\n bucket: string;\n key: string;\n expiresAt: number;\n}\n\nconst encode = (payload: ICommitTokenPayload): string =>\n Buffer.from(JSON.stringify(payload)).toString('base64url');\n\nconst sign = (opts: { body: string; secretKey: string }): string =>\n createHmac('sha256', opts.secretKey).update(opts.body).digest('base64url');\n\n/** Signs `{ bucket, key, expiresAt }` so the commit route can trust the key it is handed. */\nexport const buildCommitToken = (opts: {\n payload: ICommitTokenPayload;\n secretKey: string;\n}): string => {\n const body = encode(opts.payload);\n return `${body}.${sign({ body, secretKey: opts.secretKey })}`;\n};\n\n/**\n * Reads a commit token back, or throws.\n *\n * Verification happens BEFORE any storage call, which is what makes the commit route refuse to be a\n * name prober: a forged token fails without a round trip, so timing says nothing about what exists.\n */\nexport const readCommitToken = (opts: {\n token: string;\n secretKey: string;\n now?: number;\n}): ICommitTokenPayload => {\n const { token, secretKey, now = Date.now() } = opts;\n const [body, signature] = token.split('.');\n\n if (!body || !signature) {\n throw getError(StaticAssetErrors.INVALID_COMMIT_TOKEN);\n }\n\n const expected = Buffer.from(sign({ body, secretKey }));\n const given = Buffer.from(signature);\n\n // Length-checked first: `timingSafeEqual` throws on a length mismatch instead of answering false.\n if (expected.length !== given.length || !timingSafeEqual(expected, given)) {\n throw getError(StaticAssetErrors.INVALID_COMMIT_TOKEN);\n }\n\n const payload: ICommitTokenPayload = JSON.parse(Buffer.from(body, 'base64url').toString('utf8'));\n if (payload.expiresAt <= now) {\n throw getError(StaticAssetErrors.EXPIRED_COMMIT_TOKEN);\n }\n\n return payload;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/components/static-asset/common/constants.ts"],"names":[],"mappings":";;;AACA,0DAAqD;AAErD,uGAAuG;AAC1F,QAAA,iBAAiB,GAAG;IAC/B,aAAI,CAAC,OAAO,CAAC,gBAAgB;IAC7B,aAAI,CAAC,OAAO,CAAC,aAAa;IAC1B,aAAI,CAAC,OAAO,CAAC,IAAI;IACjB,aAAI,CAAC,OAAO,CAAC,aAAa;CAClB,CAAC;AAEX;;;;GAIG;AACU,QAAA,wBAAwB,GAAG,IAAI,GAAG,CAAS;IACtD,WAAW;IACX,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,cAAc;IACd,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,WAAW;IACX,iBAAiB;IACjB,YAAY;IACZ,UAAU;CACX,CAAC,CAAC;AAEH,MAAa,uBAAuB;aAClB,SAAI,GAAG,MAAM,CAAC;IAC9B,wGAAwG;aACxF,UAAK,GAAG,OAAO,CAAC;aAChB,WAAM,GAAG,QAAQ,CAAC;aAElB,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAE3E,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;;AAVH,0DAWC;AAID,+FAA+F;AAC/F,MAAa,uBAAuB;aAClB,YAAO,GAAG,SAAS,CAAC;aACpB,cAAS,GAAG,WAAW,CAAC;aAExB,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAErE,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;;AARH,0DASC;AAID,yHAAyH;AAC5G,QAAA,sBAAsB,GAAG,UAAU,CAAC;AAEjD,2LAA2L;AAC9K,QAAA,uBAAuB,GAAG,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/components/static-asset/common/constants.ts"],"names":[],"mappings":";;;AACA,0DAAqD;AAErD,uGAAuG;AAC1F,QAAA,iBAAiB,GAAG;IAC/B,aAAI,CAAC,OAAO,CAAC,gBAAgB;IAC7B,aAAI,CAAC,OAAO,CAAC,aAAa;IAC1B,aAAI,CAAC,OAAO,CAAC,IAAI;IACjB,aAAI,CAAC,OAAO,CAAC,aAAa;CAClB,CAAC;AAEX;;;;GAIG;AACU,QAAA,wBAAwB,GAAG,IAAI,GAAG,CAAS;IACtD,WAAW;IACX,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,cAAc;IACd,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,WAAW;IACX,iBAAiB;IACjB,YAAY;IACZ,UAAU;CACX,CAAC,CAAC;AAEH,MAAa,uBAAuB;aAClB,SAAI,GAAG,MAAM,CAAC;IAC9B,wGAAwG;aACxF,UAAK,GAAG,OAAO,CAAC;aAChB,WAAM,GAAG,QAAQ,CAAC;aAElB,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAE3E,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;;AAVH,0DAWC;AAID,+FAA+F;AAC/F,MAAa,uBAAuB;aAClB,YAAO,GAAG,SAAS,CAAC;aACpB,cAAS,GAAG,WAAW,CAAC;aAExB,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAErE,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;;AARH,0DASC;AAID,yHAAyH;AAC5G,QAAA,sBAAsB,GAAG,UAAU,CAAC;AAEjD,2LAA2L;AAC9K,QAAA,uBAAuB,GAAG,yBAAyB,CAAC","sourcesContent":["import type { TConstValue } from '@venizia/ignis-helpers/common';\nimport { HTTP } from '@venizia/ignis-helpers/common';\n\n/** `content-type` is absent on purpose: it is decided from the object name, never from the backend. */\nexport const WHITELIST_HEADERS = [\n HTTP.Headers.CONTENT_ENCODING,\n HTTP.Headers.CACHE_CONTROL,\n HTTP.Headers.ETAG,\n HTTP.Headers.LAST_MODIFIED,\n] as const;\n\n/**\n * Types the controller will let a browser render, keyed off the object name. Anything absent here is\n * served as an attachment, because a renderable upload on the API origin is stored XSS - and `nosniff`\n * cannot stop a type we declared ourselves. `image/svg+xml` is deliberately excluded: SVG carries script.\n */\nexport const RENDERABLE_CONTENT_TYPES = new Set<string>([\n 'image/png',\n 'image/jpeg',\n 'image/gif',\n 'image/webp',\n 'image/avif',\n 'image/bmp',\n 'image/x-icon',\n 'video/mp4',\n 'video/webm',\n 'audio/mpeg',\n 'audio/wav',\n 'audio/ogg',\n 'application/pdf',\n 'text/plain',\n 'text/csv',\n]);\n\nexport class StaticAssetStorageTypes {\n static readonly DISK = 'disk';\n /** @deprecated Use {@link StaticAssetStorageTypes.BUN_S3}, which reaches MinIO over the same S3 API. */\n static readonly MINIO = 'minio';\n static readonly BUN_S3 = 'bun-s3';\n\n static readonly SCHEME_SET = new Set([this.DISK, this.MINIO, this.BUN_S3]);\n\n static isValid(orgType: string): boolean {\n return this.SCHEME_SET.has(orgType);\n }\n}\n\nexport type TStaticAssetStorageType = TConstValue<typeof StaticAssetStorageTypes>;\n\n/** What `recreate-metalink` did: refreshed the rows of an object, or created its first one. */\nexport class MetaLinkRecreateActions {\n static readonly CREATED = 'created';\n static readonly REFRESHED = 'refreshed';\n\n static readonly SCHEME_SET = new Set([this.CREATED, this.REFRESHED]);\n\n static isValid(value: string): boolean {\n return this.SCHEME_SET.has(value);\n }\n}\n\nexport type TMetaLinkRecreateAction = TConstValue<typeof MetaLinkRecreateActions>;\n\n/** Where a signed policy may write. The final key is never inside it, so content cannot be replaced after the commit. */\nexport const DEFAULT_PENDING_PREFIX = 'pending/';\n\n/** Reported in the body, never thrown: the bytes are stored, only the row is not. A CODE, because a 200 bypasses the middleware that strips the driver's `detail`/`table`/`constraint`. */\nexport const META_LINK_CREATE_FAILED = 'META_LINK_CREATE_FAILED';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/components/static-asset/common/errors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/components/static-asset/common/errors.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TErrorDefinition, TRegisterErrors } from '@venizia/ignis-helpers/core';\nimport { ErrorScopes } from '@venizia/ignis-helpers/core';\nimport { HTTP } from '@venizia/ignis-helpers/common';\n\n/** Codes a client branches on for a rejected static-asset request. A throw site may override `message` to name the offending value. */\nexport const StaticAssetErrors = {\n UPLOAD_NOT_AUTHORIZED: {\n message: {\n text: 'Not allowed to request an upload policy',\n code: 'core.static_asset.upload_not_authorized',\n },\n statusCode: HTTP.ResultCodes.RS_4.Forbidden,\n category: ErrorScopes.VALIDATION,\n },\n /** Both upload paths - one condition, one code to branch on. */\n UPLOAD_TOO_LARGE: {\n message: {\n text: 'File is larger than the maximum allowed',\n code: 'core.static_asset.upload_too_large',\n },\n statusCode: HTTP.ResultCodes.RS_4.ContentTooLarge,\n category: ErrorScopes.VALIDATION,\n },\n /** Deliberately not 404 and deliberately not \"expired\": a caller learns only that the token is no good, never whether the key it names exists. */\n INVALID_COMMIT_TOKEN: {\n message: { text: 'Invalid commit token', code: 'core.static_asset.invalid_commit_token' },\n statusCode: HTTP.ResultCodes.RS_4.BadRequest,\n category: ErrorScopes.VALIDATION,\n },\n EXPIRED_COMMIT_TOKEN: {\n message: { text: 'Commit token has expired', code: 'core.static_asset.expired_commit_token' },\n statusCode: HTTP.ResultCodes.RS_4.BadRequest,\n category: ErrorScopes.VALIDATION,\n },\n /** Labels ride the body; one in the URL would otherwise leave the row unlabelled without a word. */\n LABELS_IN_QUERY: {\n message: {\n text: 'Upload labels belong in the request body, not the query',\n code: 'core.static_asset.labels_in_query',\n },\n statusCode: HTTP.ResultCodes.RS_4.BadRequest,\n category: ErrorScopes.VALIDATION,\n },\n BUCKET_NAME_INVALID: {\n message: { text: 'Invalid bucket name', code: 'core.static_asset.bucket_name_invalid' },\n statusCode: HTTP.ResultCodes.RS_4.BadRequest,\n category: ErrorScopes.VALIDATION,\n },\n OBJECT_NAME_INVALID: {\n message: {\n text: 'Invalid object name or path',\n code: 'core.static_asset.object_name_invalid',\n },\n statusCode: HTTP.ResultCodes.RS_4.BadRequest,\n category: ErrorScopes.VALIDATION,\n },\n /** The application's naming hook produced a key outside `controller.keyPrefix`; nothing is written. */\n OBJECT_KEY_OUT_OF_SCOPE: {\n message: {\n text: 'Object key is outside the key prefix of this controller',\n code: 'core.static_asset.object_key_out_of_scope',\n },\n statusCode: HTTP.ResultCodes.RS_4.BadRequest,\n category: ErrorScopes.VALIDATION,\n },\n FOLDER_PATH_INVALID: {\n message: { text: 'Invalid folder path', code: 'core.static_asset.folder_path_invalid' },\n statusCode: HTTP.ResultCodes.RS_4.BadRequest,\n category: ErrorScopes.VALIDATION,\n },\n FOLDER_SEGMENT_INVALID: {\n message: {\n text: 'Invalid folder path segment',\n code: 'core.static_asset.folder_segment_invalid',\n },\n statusCode: HTTP.ResultCodes.RS_4.BadRequest,\n category: ErrorScopes.VALIDATION,\n },\n FOLDER_DEPTH_EXCEEDED: {\n message: {\n text: 'Folder path exceeds the maximum depth',\n code: 'core.static_asset.folder_depth_exceeded',\n },\n statusCode: HTTP.ResultCodes.RS_4.BadRequest,\n category: ErrorScopes.VALIDATION,\n },\n FILE_EMPTY: {\n message: { text: 'Empty file content', code: 'core.static_asset.file_empty' },\n statusCode: HTTP.ResultCodes.RS_4.BadRequest,\n category: ErrorScopes.VALIDATION,\n },\n MAX_KEYS_INVALID: {\n message: {\n text: 'Invalid maxKeys - expected a positive integer',\n code: 'core.static_asset.max_keys_invalid',\n },\n statusCode: HTTP.ResultCodes.RS_4.BadRequest,\n category: ErrorScopes.VALIDATION,\n },\n} as const satisfies Record<string, TErrorDefinition>;\n\n/** Registers these codes with the shared key registry so a consumer gets autocomplete on `messageCode`. */\ndeclare module '@venizia/ignis-helpers' {\n interface IErrorKeyRegistry extends TRegisterErrors<typeof StaticAssetErrors> {}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/static-asset/common/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,8CAA4B;AAC5B,yCAAuB;AACvB,0CAAwB;AACxB,iDAA+B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/static-asset/common/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,8CAA4B;AAC5B,yCAAuB;AACvB,0CAAwB;AACxB,iDAA+B","sourcesContent":["export * from './errors';\nexport * from './constants';\nexport * from './keys';\nexport * from './types';\nexport * from './commit-token';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../../src/components/static-asset/common/keys.ts"],"names":[],"mappings":";;;AAAA,MAAa,+BAA+B;IAC1C,oPAAoP;aACpO,mCAA8B,GAAG,qCAAqC,CAAC;;AAFzF,0EAGC"}
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../../src/components/static-asset/common/keys.ts"],"names":[],"mappings":";;;AAAA,MAAa,+BAA+B;IAC1C,oPAAoP;aACpO,mCAA8B,GAAG,qCAAqC,CAAC;;AAFzF,0EAGC","sourcesContent":["export class StaticAssetComponentBindingKeys {\n /** The options an application registers through `configs.artifacts` land here, because an artifact index carries classes and no options. `application.component(StaticAssetComponent, { options })` passes them directly and wins over this key. */\n static readonly STATIC_ASSET_COMPONENT_OPTIONS = '@app/static-asset-component/options';\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/components/static-asset/common/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/components/static-asset/common/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { BaseRestController, IAuthRouteConfig, TRouteContext } from '@/base';\nimport type { IDuration } from '@venizia/ignis-helpers/common';\nimport type {\n BaseRelationalEntity,\n DefaultCRUDRepository,\n TTableObject,\n} from '@venizia/ignis-connectors/postgres';\nimport type {\n DiskHelper,\n IBucketRef,\n IFileStat,\n IObjectLocation,\n IObjectRef,\n IStorageHelper,\n IUploadResult,\n TUploadNaming,\n} from '@venizia/ignis-helpers';\nimport type { BunS3Helper } from '@venizia/ignis-helpers/bun-s3';\nimport type { AnyType, TValueOrAsyncResolver, ValueOrPromise } from '@venizia/ignis-helpers/common';\nimport type { MinioHelper } from '@venizia/ignis-helpers/minio';\nimport type { TMetaLinkCompatibleSchema, TMetaLinkSchema } from '../models';\nimport type { StaticAssetStorageTypes } from './constants';\n\nexport type TStaticAssetExtraOptions = {\n parseMultipartBody?: {\n storage?: 'memory' | 'disk';\n uploadDir?: string;\n };\n\n /** `folderPath` carries the upload query's target folder - dropping it flattens nested uploads. */\n normalizeNameFn?: (opts: { file: TUploadNaming }) => string;\n normalizeLinkFn?: (opts: IObjectLocation) => string;\n\n /** Maximum folder nesting depth allowed in object paths. Default: 2 */\n maxFolderDepth?: number;\n\n /** Largest file the UPLOAD route accepts. Absent means no ceiling. Checked against `content-length` before spooling, then per file after parsing. */\n maxBytes?: number;\n [key: string]: AnyType;\n};\n\n/** Decides the key one uploaded file is stored under. `defaultKey` is what IGNIS would have written. */\nexport type TObjectNameResolver = (opts: {\n bucket: IBucketRef;\n file: TUploadNaming;\n defaultKey: string;\n}) => string;\n\n/** Adds routes of the application's own to a generated asset controller. Runs after every built-in route, so a built-in route always wins a path collision. `basePath` is the mount path with exactly one leading slash. */\n/** Adds routes of the application's own. Registration order decides a path collision, so the same shape serves both the before and the after hook. */\nexport type TDefineExtraRoutes = (opts: {\n controller: BaseRestController;\n helper: IStorageHelper;\n basePath: string;\n}) => void;\n\n// Declared by hand rather than inferred: RouteHandler inference here is heavy.\nexport type TBucketParams = { bucketName: string };\nexport type TObjectParams = { bucketName: string; objectName: string };\nexport type TUploadQuery = {\n principalType?: string;\n principalId?: string;\n variant?: string;\n /** Display order within the principal. Caller-supplied: deriving it would be a non-atomic read of `max(sequence)` then a write of `max + 1`. */\n sequence?: number;\n folderPath?: string;\n};\nexport type TListQuery = { prefix?: string; recursive?: string; maxKeys?: string };\n\nexport type TDirectUploadOptions = {\n /** Who may ask for a policy. REQUIRED, not defaulted: this route hands out a write credential, and there is no safe default for that. */\n authorize: (opts: { context: TRouteContext }) => ValueOrPromise<boolean>;\n\n /** Signs the commit token. Keep it out of the repository and out of the client. */\n secretKey: string;\n\n /** The ceiling the policy carries as `content-length-range`. A signed PUT cannot express this at all, which is why this is a POST policy. */\n maxBytes: number;\n\n /** Where a policy may write. The final key is NEVER in a policy, so content cannot be replaced after the commit. Default: `pending/`. */\n pendingPrefix?: string;\n\n /** How long a policy and its commit token stay good. Default: the helper's POST default. */\n expiresIn?: IDuration;\n\n /** Runs BEFORE the copy to the final key, so a hook that throws leaves the object under the pending prefix for a lifecycle rule to collect, rather than stranding it at the final key. */\n onCommit?: (opts: {\n bucket: IBucketRef;\n pendingObject: IObjectRef;\n object: IObjectRef;\n }) => ValueOrPromise<void>;\n};\n\nexport type TUploadPolicyRequest = {\n files: Array<{ fileName: string; contentType?: string; size?: number }>;\n};\n\n/** The MetaLink table belongs to the application. `Schema` defaults to the table IGNIS ships, and widens to any table whose row carries the same fields. */\nexport type TMetaLinkConfig<Schema extends TMetaLinkCompatibleSchema = TMetaLinkSchema> = {\n model: TValueOrAsyncResolver<typeof BaseRelationalEntity<Schema>>;\n repository: TValueOrAsyncResolver<DefaultCRUDRepository<Schema>>;\n createMetaLink?: (opts: {\n uploadResult: IUploadResult;\n fileStat: IFileStat;\n /** The caller's labels. Named for where they used to travel - they arrive in the request BODY now, as form fields on an upload and beside the commit token on a direct one. */\n query: TUploadQuery;\n }) => ValueOrPromise<{ count: number; data: TTableObject<Schema> }>;\n};\n\n/** The part of a built-in route an application may change. */\nexport type TStaticAssetRouteConfig = Partial<\n Omit<IAuthRouteConfig, 'method' | 'request' | 'responses'>\n> & {\n /** Whether this route is registered. Defaults to true. */\n enabled?: boolean;\n};\n\nexport type TStaticAssetRoutes = {\n getBuckets?: TStaticAssetRouteConfig;\n getBucketByName?: TStaticAssetRouteConfig;\n createBucket?: TStaticAssetRouteConfig;\n deleteBucket?: TStaticAssetRouteConfig;\n\n upload?: TStaticAssetRouteConfig;\n listObjects?: TStaticAssetRouteConfig;\n deleteObject?: TStaticAssetRouteConfig;\n getObjectByName?: TStaticAssetRouteConfig;\n downloadObjectByName?: TStaticAssetRouteConfig;\n\n uploadPolicy?: TStaticAssetRouteConfig;\n uploadCommit?: TStaticAssetRouteConfig;\n\n recreateMetaLink?: TStaticAssetRouteConfig;\n};\n\nexport type TStaticAssetsComponentOptions<\n Schema extends TMetaLinkCompatibleSchema = TMetaLinkSchema,\n> = {\n [key: string]: {\n controller: {\n name: string;\n basePath: string;\n isStrict?: boolean;\n\n /** `true` serves a raw nested object path (`/objects/photos/2024/f.jpg`) - a URL shape change; a percent-encoded path keeps working either way. Default: `false`. */\n rawObjectPath?: boolean;\n\n /** The single bucket every object route uses. It leaves the URL (`/objects/{objectName}`) and the four bucket-management routes are not registered. The function form is read per request, so an environment variable can be read lazily. */\n bucket?: TValueOrAsyncResolver<string>;\n\n /**\n * The key scope this controller owns, e.g. `inventory/`. Every route refuses a key outside it\n * as a 404 without calling the storage, `listObjects` lists only inside it, and an upload key\n * must land inside it: the default name is placed there, a `resolveObjectName` or\n * `extra.normalizeNameFn` key outside it is refused. `maxFolderDepth` counts the folders below\n * it. Absent: every key in the bucket.\n */\n keyPrefix?: string;\n\n routes?: TStaticAssetRoutes;\n\n /** Direct upload: the browser posts the bytes to the storage and IGNIS only signs the permission. Absent leaves both routes unregistered. Requires `bucket` - a policy names one bucket, and a bucket in the URL is a bucket the caller chooses. */\n directUpload?: TDirectUploadOptions;\n };\n extra?: TStaticAssetExtraOptions;\n\n /** Decides the stored object name of each uploaded file; absent keeps the storage helper's own naming. */\n resolveObjectName?: TObjectNameResolver;\n\n /** Registers the application's own routes BEFORE every built-in one, so a literal path wins over the catch-all `rawObjectPath` produces. Hono matches in registration order. */\n defineRoutesBefore?: TDefineExtraRoutes;\n\n /** Registers the application's own routes on the generated controller, after every built-in one. */\n defineExtraRoutes?: TDefineExtraRoutes;\n } & (\n | { storage: typeof StaticAssetStorageTypes.BUN_S3; helper: BunS3Helper }\n | { storage: typeof StaticAssetStorageTypes.DISK; helper: DiskHelper }\n | { storage: typeof StaticAssetStorageTypes.MINIO; helper: MinioHelper }\n ) &\n (\n | { useMetaLink?: false | undefined }\n | { useMetaLink: true; metaLink: TMetaLinkConfig<Schema> }\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/components/static-asset/component.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,wDAAsD;AACtD,8CAAyC;AACzC,wDAAqD;AACrD,wDAAgD;AAEhD,qCAA+F;AAE/F,6CAAuE;AAEvE,kQAAkQ;AAClQ,IAAa,oBAAoB,4BAAjC,MAAa,oBAEX,SAAQ,4BAAoD;IAC5D,YAC8D,WAA4B;QAExF,KAAK,CAAC;YACJ,KAAK,EAAE,sBAAoB,CAAC,IAAI;YAChC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE;YACrD,QAAQ,EAAE;gBACR,CAAC,wCAA+B,CAAC,8BAA8B,CAAC,EAC9D,sBAAO,CAAC,IAAI,CAAgC;oBAC1C,GAAG,EAAE,wCAA+B,CAAC,8BAA8B;iBACpE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;aACjB;SACF,CAAC,CAAC;QAXyD,gBAAW,GAAX,WAAW,CAAiB;IAY1F,CAAC;IAEQ,OAAO;QACd,2FAA2F;QAC3F,8EAA8E;QAC9E,MAAM,gBAAgB,GACpB,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAwC;gBAC1D,GAAG,EAAE,wCAA+B,CAAC,8BAA8B;aACpE,CAAC,CAAC;QAEL,MAAM,uBAAuB,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACjE,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,uBAAuB,EAAE,CAAC;YACjD,MAAM,EACJ,OAAO,EACP,UAAU,EACV,MAAM,EACN,KAAK,EACL,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,GAClB,GAAG,GAAG,CAAC;YAER,IAAI,CAAC,WAAW,CAAC,UAAU,CACzB,mCAAsB,CAAC,qBAAqB,CAAC;gBAC3C,UAAU;gBACV,OAAO;gBACP,MAAM;gBACN,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBACpD,iBAAiB;gBACjB,kBAAkB;gBAClB,iBAAiB;gBACjB,OAAO,EAAE;oBACP,GAAG,KAAK;oBACR,eAAe,EACb,KAAK,EAAE,eAAe;wBACtB,2KAA2K;wBAC3K,CAAC,WAAW,CAAC,EAAE,CACb,IAAA,4BAAe,EAAC;4BACd,QAAQ,EAAE,UAAU,CAAC,QAAQ;4BAC7B,MAAM,EAAE,WAAW,CAAC,MAAM;4BAC1B,MAAM,EAAE,WAAW,CAAC,MAAM;4BAC1B,mBAAmB,EAAE,UAAU,CAAC,MAAM,KAAK,SAAS;4BACpD,aAAa,EAAE,UAAU,CAAC,aAAa;yBACxC,CAAC,CAAC;iBACR;aACF,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAC1B,iFAAiF,EACjF,GAAG,EACH,OAAO,EACP,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CACzB,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AA1EY,oDAAoB;+BAApB,oBAAoB;IAI5B,WAAA,IAAA,iBAAM,EAAC,EAAE,GAAG,EAAE,2BAAY,CAAC,oBAAoB,EAAE,CAAC,CAAA;;GAJ1C,oBAAoB,CA0EhC"}
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/components/static-asset/component.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,wDAAsD;AACtD,8CAAyC;AACzC,wDAAqD;AACrD,wDAAgD;AAEhD,qCAA+F;AAE/F,6CAAuE;AAEvE,kQAAkQ;AAClQ,IAAa,oBAAoB,4BAAjC,MAAa,oBAEX,SAAQ,4BAAoD;IAC5D,YAC8D,WAA4B;QAExF,KAAK,CAAC;YACJ,KAAK,EAAE,sBAAoB,CAAC,IAAI;YAChC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE;YACrD,QAAQ,EAAE;gBACR,CAAC,wCAA+B,CAAC,8BAA8B,CAAC,EAC9D,sBAAO,CAAC,IAAI,CAAgC;oBAC1C,GAAG,EAAE,wCAA+B,CAAC,8BAA8B;iBACpE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;aACjB;SACF,CAAC,CAAC;QAXyD,gBAAW,GAAX,WAAW,CAAiB;IAY1F,CAAC;IAEQ,OAAO;QACd,2FAA2F;QAC3F,8EAA8E;QAC9E,MAAM,gBAAgB,GACpB,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAwC;gBAC1D,GAAG,EAAE,wCAA+B,CAAC,8BAA8B;aACpE,CAAC,CAAC;QAEL,MAAM,uBAAuB,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACjE,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,uBAAuB,EAAE,CAAC;YACjD,MAAM,EACJ,OAAO,EACP,UAAU,EACV,MAAM,EACN,KAAK,EACL,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,GAClB,GAAG,GAAG,CAAC;YAER,IAAI,CAAC,WAAW,CAAC,UAAU,CACzB,mCAAsB,CAAC,qBAAqB,CAAC;gBAC3C,UAAU;gBACV,OAAO;gBACP,MAAM;gBACN,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBACpD,iBAAiB;gBACjB,kBAAkB;gBAClB,iBAAiB;gBACjB,OAAO,EAAE;oBACP,GAAG,KAAK;oBACR,eAAe,EACb,KAAK,EAAE,eAAe;wBACtB,2KAA2K;wBAC3K,CAAC,WAAW,CAAC,EAAE,CACb,IAAA,4BAAe,EAAC;4BACd,QAAQ,EAAE,UAAU,CAAC,QAAQ;4BAC7B,MAAM,EAAE,WAAW,CAAC,MAAM;4BAC1B,MAAM,EAAE,WAAW,CAAC,MAAM;4BAC1B,mBAAmB,EAAE,UAAU,CAAC,MAAM,KAAK,SAAS;4BACpD,aAAa,EAAE,UAAU,CAAC,aAAa;yBACxC,CAAC,CAAC;iBACR;aACF,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAC1B,iFAAiF,EACjF,GAAG,EACH,OAAO,EACP,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CACzB,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AA1EY,oDAAoB;+BAApB,oBAAoB;IAI5B,WAAA,IAAA,iBAAM,EAAC,EAAE,GAAG,EAAE,2BAAY,CAAC,oBAAoB,EAAE,CAAC,CAAA;;GAJ1C,oBAAoB,CA0EhC","sourcesContent":["import { type BaseApplication } from '@/base/applications';\nimport { BaseComponent } from '@venizia/ignis-kernel';\nimport { inject } from '@/base/metadata';\nimport { CoreBindings } from '@venizia/ignis-kernel';\nimport { Binding } from '@venizia/ignis-kernel';\nimport { type ValueOrPromise } from '@venizia/ignis-helpers/common';\nimport { StaticAssetComponentBindingKeys, type TStaticAssetsComponentOptions } from './common';\nimport type { TMetaLinkCompatibleSchema, TMetaLinkSchema } from './models';\nimport { AssetControllerFactory, buildObjectLink } from './controller';\n\n/** `Schema` is the MetaLink table the application binds. It has to live on the CLASS, not only on the options: `component(Ctor, { options })` infers the options from the class, so a class pinned to the shipped table can only carry options for that table. */\nexport class StaticAssetComponent<\n Schema extends TMetaLinkCompatibleSchema = TMetaLinkSchema,\n> extends BaseComponent<TStaticAssetsComponentOptions<Schema>> {\n constructor(\n @inject({ key: CoreBindings.APPLICATION_INSTANCE }) private application: BaseApplication,\n ) {\n super({\n scope: StaticAssetComponent.name,\n initDefault: { enable: true, container: application },\n bindings: {\n [StaticAssetComponentBindingKeys.STATIC_ASSET_COMPONENT_OPTIONS]:\n Binding.bind<TStaticAssetsComponentOptions>({\n key: StaticAssetComponentBindingKeys.STATIC_ASSET_COMPONENT_OPTIONS,\n }).toValue({}),\n },\n });\n }\n\n override binding(): ValueOrPromise<void> {\n // Direct options win. The key is the path for an application that registers this component\n // through `configs.artifacts`, where an index carries classes and no options.\n const componentOptions =\n this.options ??\n this.application.get<TStaticAssetsComponentOptions<Schema>>({\n key: StaticAssetComponentBindingKeys.STATIC_ASSET_COMPONENT_OPTIONS,\n });\n\n const componentOptionsEntries = Object.entries(componentOptions);\n for (const [key, opt] of componentOptionsEntries) {\n const {\n storage,\n controller,\n helper,\n extra,\n resolveObjectName,\n defineRoutesBefore,\n defineExtraRoutes,\n } = opt;\n\n this.application.controller(\n AssetControllerFactory.defineAssetController({\n controller,\n storage,\n helper,\n useMetaLink: opt.useMetaLink,\n metaLink: opt.useMetaLink ? opt.metaLink : undefined,\n resolveObjectName,\n defineRoutesBefore,\n defineExtraRoutes,\n options: {\n ...extra,\n normalizeLinkFn:\n extra?.normalizeLinkFn ??\n // The link follows the URL shape the controller serves: `{objectName}` is one Hono path segment unless `rawObjectPath` widens it, and a configured bucket leaves the path.\n (linkOptions =>\n buildObjectLink({\n basePath: controller.basePath,\n bucket: linkOptions.bucket,\n object: linkOptions.object,\n hasConfiguredBucket: controller.bucket !== undefined,\n rawObjectPath: controller.rawObjectPath,\n })),\n },\n }),\n );\n\n this.application.logger.info(\n `[binding] Asset storage is bound | Key: %s | Storage type: %s | UseMetaLink: %s`,\n key,\n storage,\n Boolean(opt.useMetaLink),\n );\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.definition.js","sourceRoot":"","sources":["../../../../src/components/static-asset/controller/base.definition.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base.definition.js","sourceRoot":"","sources":["../../../../src/components/static-asset/controller/base.definition.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IAuthRouteConfig } from '@/base';\nimport { errorResponses, jsonResponse } from '@venizia/ignis-kernel';\nimport { z } from '@hono/zod-openapi';\nimport { HTTP } from '@venizia/ignis-helpers/common';\nimport { MetaLinkRecreateActions } from '../common/constants';\n\ntype TRouteRequest = NonNullable<IAuthRouteConfig['request']>;\n\n/** The labels both upload paths take. They ride the BODY, not the URL - an identifier in a query string lands in every access log between the client and here. */\nconst uploadLabels = () => ({\n principalType: z.string().optional(),\n principalId: z.string().or(z.number()).optional(),\n variant: z.string().optional(),\n sequence: z.coerce.number().int().optional(),\n});\n\nconst MultipartBodySchema = z.object({\n files: z.union([z.instanceof(File), z.array(z.instanceof(File))]).openapi({\n type: 'array',\n items: {\n type: 'string',\n format: 'binary',\n },\n }),\n ...uploadLabels(),\n folderPath: z.string().optional().openapi({\n description: 'Target folder path for uploaded files (e.g., \"photos/2024\")',\n example: 'photos/2024',\n }),\n});\n\nconst bucketNameParam = () =>\n z.string().openapi({\n param: {\n name: 'bucketName',\n in: 'path',\n },\n example: 'images',\n });\n\nconst objectNameParam = () =>\n z.string().openapi({\n param: {\n name: 'objectName',\n in: 'path',\n description: 'Object name or path (e.g., \"photo.jpg\" or \"photos/2024/photo.jpg\")',\n },\n example: 'photos/2024/photo.jpg',\n });\n\nconst fileStreamResponses = (): IAuthRouteConfig['responses'] => ({\n [HTTP.ResultCodes.RS_2.Ok]: {\n description: 'File stream response',\n content: {\n 'application/octet-stream': {\n schema: {\n type: 'string',\n format: 'binary',\n },\n },\n },\n },\n ...errorResponses(),\n});\n\n/** The ten built-in asset routes. Only `path` and `request.params` differ between option combinations. */\nexport interface IAssetDefinitions {\n GET_BUCKETS: IAuthRouteConfig;\n GET_BUCKET_BY_NAME: IAuthRouteConfig;\n CREATE_BUCKET: IAuthRouteConfig;\n DELETE_BUCKET: IAuthRouteConfig;\n GET_OBJECT_BY_NAME: IAuthRouteConfig;\n DOWNLOAD_OBJECT_BY_NAME: IAuthRouteConfig;\n UPLOAD_POLICY: IAuthRouteConfig;\n UPLOAD_COMMIT: IAuthRouteConfig;\n UPLOAD: IAuthRouteConfig;\n DELETE_OBJECT: IAuthRouteConfig;\n LIST_OBJECTS: IAuthRouteConfig;\n RECREATE_METALINK: IAuthRouteConfig;\n}\n\n/**\n * Builds the route configs of one asset controller.\n * `hasConfiguredBucket` drops `/buckets/{bucketName}` and its param from every object route.\n * `rawObjectPath` appends the `{.+}` catch-all, the spelling `@hono/zod-openapi` translates.\n */\nexport const buildAssetDefinitions = (opts: {\n hasConfiguredBucket?: boolean;\n rawObjectPath?: boolean;\n}): IAssetDefinitions => {\n const { hasConfiguredBucket = false, rawObjectPath = false } = opts;\n\n const bucketPrefix = hasConfiguredBucket ? '' : '/buckets/{bucketName}';\n\n // `{objectName}` is ONE segment: a folder path travels percent-encoded (`photos%2F2024%2Ff.jpg`).\n // The catch-all also matches a RAW nested path; the encoded form keeps working either way.\n const objectSegment = rawObjectPath ? '{objectName}{.+}' : '{objectName}';\n\n // A configured bucket is never in the URL, so a route whose only param was `bucketName` carries none.\n const bucketRequest = (): Pick<TRouteRequest, 'params'> =>\n hasConfiguredBucket ? {} : { params: z.object({ bucketName: bucketNameParam() }) };\n\n const objectRequest = (): TRouteRequest => ({\n params: hasConfiguredBucket\n ? z.object({ objectName: objectNameParam() })\n : z.object({ bucketName: bucketNameParam(), objectName: objectNameParam() }),\n });\n\n return {\n GET_BUCKETS: {\n method: 'get',\n path: '/buckets',\n responses: jsonResponse({\n schema: z.array(\n z.object({\n name: z.string(),\n creationDate: z.iso.datetime(),\n }),\n ),\n }),\n },\n GET_BUCKET_BY_NAME: {\n method: 'get',\n path: bucketPrefix,\n request: {\n params: z.object({ bucketName: bucketNameParam() }),\n },\n responses: jsonResponse({\n schema: z\n .object({\n name: z.string(),\n creationDate: z.iso.datetime(),\n })\n .nullable(),\n }),\n },\n CREATE_BUCKET: {\n method: 'post',\n path: bucketPrefix,\n request: {\n params: z.object({ bucketName: bucketNameParam() }),\n },\n responses: jsonResponse({\n schema: z\n .object({\n name: z.string(),\n creationDate: z.iso.datetime(),\n })\n .nullable(),\n }),\n },\n DELETE_BUCKET: {\n method: 'delete',\n path: bucketPrefix,\n request: {\n params: z.object({ bucketName: bucketNameParam() }),\n },\n responses: jsonResponse({\n schema: z.object({\n isDeleted: z.boolean(),\n }),\n }),\n },\n GET_OBJECT_BY_NAME: {\n method: 'get',\n path: `${bucketPrefix}/objects/${objectSegment}`,\n request: objectRequest(),\n responses: fileStreamResponses(),\n },\n DOWNLOAD_OBJECT_BY_NAME: {\n method: 'get',\n path: `${bucketPrefix}/download/${objectSegment}`,\n request: objectRequest(),\n responses: fileStreamResponses(),\n },\n UPLOAD_POLICY: {\n method: 'post',\n path: `${bucketPrefix}/upload-policy`,\n request: {\n body: {\n content: {\n 'application/json': {\n schema: z.object({\n files: z.array(\n z.object({\n fileName: z.string().min(1),\n contentType: z.string().optional(),\n size: z.number().int().nonnegative().optional(),\n }),\n ),\n }),\n },\n },\n },\n },\n responses: jsonResponse({\n schema: z.array(\n z.object({\n postURL: z.string(),\n formData: z.record(z.string(), z.string()),\n objectName: z.string(),\n commitToken: z.string(),\n expiresAt: z.string(),\n }),\n ),\n description: 'One signed POST policy per file, plus the token its commit is claimed with',\n }),\n },\n UPLOAD_COMMIT: {\n method: 'post',\n path: `${bucketPrefix}/upload-commit`,\n request: {\n body: {\n content: {\n 'application/json': {\n // The labels sit beside the token, not inside it: the token is an HMAC over\n // { bucket, key, expiresAt } and deliberately carries no business fields.\n schema: z.object({ commitToken: z.string().min(1), ...uploadLabels() }),\n },\n },\n },\n },\n responses: jsonResponse({\n schema: z.object({\n bucket: z.object({ name: z.string() }),\n object: z.object({ key: z.string() }),\n link: z.string(),\n metaLink: z\n .union([z.object({ data: z.any() }), z.object({ error: z.string() })])\n .optional(),\n }),\n description: 'The object at its final key, copied out of the pending prefix',\n }),\n },\n UPLOAD: {\n method: 'post',\n path: `${bucketPrefix}/objects`,\n request: {\n ...bucketRequest(),\n body: {\n content: {\n 'multipart/form-data': {\n schema: MultipartBodySchema,\n },\n },\n },\n },\n responses: jsonResponse({\n schema: z.array(\n z.object({\n bucket: z.object({ name: z.string() }),\n object: z.object({\n key: z.string(),\n size: z.number(),\n contentType: z.string(),\n }),\n link: z.string(),\n metaLink: z\n .union([z.object({ data: z.any() }), z.object({ error: z.string() })])\n .optional(),\n }),\n ),\n }),\n },\n DELETE_OBJECT: {\n method: 'delete',\n path: `${bucketPrefix}/objects/${objectSegment}`,\n request: objectRequest(),\n responses: jsonResponse({\n schema: z.object({\n success: z.boolean(),\n }),\n }),\n },\n LIST_OBJECTS: {\n method: 'get',\n path: `${bucketPrefix}/objects`,\n request: {\n ...bucketRequest(),\n query: z.object({\n prefix: z\n .string()\n .optional()\n .openapi({\n param: {\n name: 'prefix',\n in: 'query',\n description: 'Filter objects by prefix',\n },\n example: 'folder/',\n }),\n recursive: z\n .string()\n .optional()\n .openapi({\n param: {\n name: 'recursive',\n in: 'query',\n description: 'Recursive listing',\n },\n example: 'true',\n }),\n maxKeys: z\n .string()\n .optional()\n .openapi({\n param: {\n name: 'maxKeys',\n in: 'query',\n description: 'Maximum number of objects to return',\n },\n example: '100',\n }),\n }),\n },\n responses: jsonResponse({\n schema: z.array(\n z.object({\n name: z.string().optional(),\n size: z.number().optional(),\n lastModified: z.iso.datetime().optional(),\n etag: z.string().optional(),\n prefix: z.string().optional(),\n }),\n ),\n }),\n },\n RECREATE_METALINK: {\n method: 'put',\n path: `${bucketPrefix}/meta-links/${objectSegment}`,\n request: objectRequest(),\n responses: jsonResponse({\n schema: z.object({\n success: z.boolean(),\n action: z\n .enum([MetaLinkRecreateActions.REFRESHED, MetaLinkRecreateActions.CREATED])\n .openapi({\n description: '`refreshed` when rows for the object existed, `created` when none did',\n example: 'refreshed',\n }),\n count: z.number().openapi({ description: 'Rows refreshed or created' }),\n metaLink: z.any().optional().openapi({ description: 'The first of `metaLinks`' }),\n metaLinks: z.array(z.any()),\n }),\n }),\n },\n };\n};\n\n/** The bucket-in-path shape, unchanged - every existing importer keeps working. */\nexport const StaticAssetDefinitions = buildAssetDefinitions({});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../src/components/static-asset/controller/factory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../src/components/static-asset/controller/factory.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseRestController, type TRouteContext } from '@/base/controllers';\nimport { controller as controllerDecorator } from '@/base/metadata';\nimport {\n BaseStorageHelper,\n createContentDispositionHeader,\n type IObjectLocation,\n type IObjectMetadata,\n type IObjectRef,\n isNotFoundError,\n type IStorageHelper,\n type IUploadFile,\n type IPostPolicy,\n type IUploadResult,\n parseMultipartBody,\n type TUploadNaming,\n} from '@venizia/ignis-helpers';\nimport { HTTP, resolveValueAsync, type ValueOrPromise } from '@venizia/ignis-helpers/common';\nimport type { AnyType, TValueOrAsyncResolver } from '@venizia/ignis-helpers/common';\nimport { BaseHelper, getError, UuidHelper } from '@venizia/ignis-helpers/core';\nimport { type Env } from 'hono';\nimport { readFileSync, rmSync } from 'node:fs';\nimport {\n RENDERABLE_CONTENT_TYPES,\n StaticAssetErrors,\n type TBucketParams,\n type TDefineExtraRoutes,\n type TListQuery,\n type TMetaLinkConfig,\n DEFAULT_PENDING_PREFIX,\n META_LINK_CREATE_FAILED,\n type TObjectParams,\n type TUploadPolicyRequest,\n type TObjectNameResolver,\n type TStaticAssetExtraOptions,\n type TStaticAssetsComponentOptions,\n type TStaticAssetStorageType,\n type TUploadQuery,\n WHITELIST_HEADERS,\n} from '../common';\nimport { buildCommitToken, MetaLinkRecreateActions, readCommitToken } from '../common';\nimport { buildAssetDefinitions } from './base.definition';\nimport {\n assertKeyInScope,\n isKeyInScope,\n normalizeKeyPrefix,\n resolveScopedListPrefix,\n} from './key-scope';\nimport { buildStoredUploadResult, createMetaLinkRow, refreshMetaLinkRows } from './meta-link';\nimport { appendDeclaredLengthGuard, readRouteOverride } from './route-options';\n\nexport interface IAssetControllerOptions {\n controller: TStaticAssetsComponentOptions[string]['controller'];\n storage: TStaticAssetStorageType;\n helper: IStorageHelper;\n useMetaLink?: boolean;\n /** The table is erased at this seam on purpose. The public option types carry the real `Schema` and check it; inside the controller every read and write is on MetaLink COLUMNS, and threading a table type nobody here constrains through 700 lines of handler buys nothing. */\n metaLink?: TMetaLinkConfig<AnyType>;\n options?: TStaticAssetExtraOptions;\n\n /** Decides the stored object name of each uploaded file. Absent leaves the storage helper's own naming untouched. */\n resolveObjectName?: TObjectNameResolver;\n\n /** Registers the application's own routes on the generated controller, after every built-in one. */\n /** Registers the application's own routes BEFORE every built-in one, so a literal path wins over the catch-all `rawObjectPath` produces. */\n defineRoutesBefore?: TDefineExtraRoutes;\n defineExtraRoutes?: TDefineExtraRoutes;\n}\n\n/** Hono ALREADY percent-decodes path params - a second decodeURIComponent throws on `report_100%.pdf` and turns `a%2Fb.png` into a DIFFERENT object; `isValidName`/`isValidPath` still run on this value, so traversal is still rejected. */\n/** The upload labels, read off the multipart form. Every value arrives as text, so `sequence` is the one that needs converting. */\n/** One list: the reader below and the stale-caller warning must agree. */\nconst UPLOAD_LABEL_NAMES = [\n 'principalType',\n 'principalId',\n 'variant',\n 'sequence',\n 'folderPath',\n] as const;\n\n/** Names any label a caller put in the query - where the upload routes refuse it. */\nexport const findLabelsInQuery = (opts: {\n query: Record<string, string>;\n names?: ReadonlyArray<(typeof UPLOAD_LABEL_NAMES)[number]>;\n}): string[] => (opts.names ?? UPLOAD_LABEL_NAMES).filter(name => opts.query[name] !== undefined);\n\n/** Refused before the body is read: a route that ignored them would store an unlabelled row. */\nconst refuseLabelsInQuery = (opts: {\n query: Record<string, string>;\n names?: ReadonlyArray<(typeof UPLOAD_LABEL_NAMES)[number]>;\n reason?: string;\n}): void => {\n const names = findLabelsInQuery(opts);\n if (names.length > 0) {\n throw getError({\n error: StaticAssetErrors.LABELS_IN_QUERY,\n message: `${opts.reason ?? 'Upload labels belong in the request body, not the query'} | names: ${names.join(', ')}`,\n });\n }\n};\n\n/** The commit body carries four of the five: the object key - and so `folderPath` - was fixed when the policy was issued. */\nconst COMMIT_LABEL_NAMES = UPLOAD_LABEL_NAMES.filter(name => name !== 'folderPath');\n\n// A multipart form hands strings; a JSON commit body may hand `sequence` as a number.\nconst readUploadLabels = (opts: {\n fields: Partial<Record<(typeof UPLOAD_LABEL_NAMES)[number], string | number>>;\n}): TUploadQuery => {\n const { fields } = opts;\n const read = (name: (typeof UPLOAD_LABEL_NAMES)[number]) => {\n const value = fields[name];\n return value === undefined || value === '' ? undefined : String(value);\n };\n\n const sequence = read('sequence');\n\n return {\n principalType: read('principalType'),\n principalId: read('principalId'),\n variant: read('variant'),\n sequence: sequence === undefined ? undefined : Number(sequence),\n folderPath: read('folderPath'),\n };\n};\n\nconst readObjectName: (rawObjectName: string) => string = rawObjectName => rawObjectName;\n\n/** Encodes an object path into a SINGLE url segment: `{objectName}` matches one segment only, so `/` must be percent-encoded too (Hono decodes it back before the handler reads the param). */\nconst encodeObjectPath: (objectPath: string) => string = objectPath => {\n return encodeURIComponent(objectPath);\n};\n\n/** The bucket one request works on: a configured value wins - called on every request, so an application may read an environment variable lazily - else the path param, which is only registered when there is no configured bucket. */\nconst resolveBucket = async (opts: {\n configured?: TValueOrAsyncResolver<string>;\n param?: string;\n}): Promise<string> => {\n const { configured, param } = opts;\n\n if (configured === undefined) {\n return param ?? '';\n }\n\n return resolveValueAsync({ value: configured });\n};\n\n/** The URL of one object, in the shape its controller serves: no `/buckets/<name>` with a configured bucket, and a raw path with `rawObjectPath`. */\nexport const buildObjectLink = (\n opts: IObjectLocation & {\n basePath: string;\n hasConfiguredBucket?: boolean;\n rawObjectPath?: boolean;\n },\n): string => {\n const { basePath, bucket, object } = opts;\n const { hasConfiguredBucket = false, rawObjectPath = false } = opts;\n\n const bucketSegment = hasConfiguredBucket ? '' : `/buckets/${bucket.name}`;\n const objectSegment = rawObjectPath ? object.key : encodeObjectPath(object.key);\n\n return `${basePath}${bucketSegment}/objects/${objectSegment}`;\n};\n\n/** Mirrors `BaseStorageHelper.normalizeObjectName`, which is protected: `resolveObjectName` is offered the very name the helper would otherwise have written. */\nconst defaultObjectName: (opts: { file: TUploadNaming }) => string = ({ file }) => {\n const { originalName, folderPath } = file;\n const normalizedFileName = originalName.toLowerCase().replace(/ /g, '_');\n\n if (!folderPath) {\n return normalizedFileName;\n }\n\n return `${folderPath.toLowerCase().replace(/ /g, '_')}/${normalizedFileName}`;\n};\n\n/**\n * The served type comes from the object NAME, never the backend or the uploader: a renderable type on\n * the API origin is stored XSS. Exported so a hand-written route makes the same decision - the\n * backend's own content-type is dropped by `WHITELIST_HEADERS`.\n */\nexport const resolveServedContentType = (opts: {\n helper: IStorageHelper;\n object: IObjectRef;\n}): { contentType: string; isRenderable: boolean } => {\n const { helper, object } = opts;\n const candidate = helper.getMimeType({ filename: object.key }).toLowerCase().split(';')[0].trim();\n\n if (!RENDERABLE_CONTENT_TYPES.has(candidate)) {\n return { contentType: HTTP.HeaderValues.APPLICATION_OCTET_STREAM, isRenderable: false };\n }\n\n return { contentType: candidate, isRenderable: true };\n};\n\n/**\n * Reads one `Range` header. Only a single byte range is honoured - multipart ranges need a multipart\n * body no browser asks for here. An unsatisfiable or malformed range returns `null`, and the caller\n * serves the whole object, which is what RFC 9110 allows.\n */\nconst readByteRange = (opts: {\n header: string | undefined;\n size: number;\n}): { start: number; end: number } | null => {\n const { header, size } = opts;\n\n if (!header || size <= 0) {\n return null;\n }\n\n const match = /^bytes=(\\d*)-(\\d*)$/.exec(header.trim());\n if (!match) {\n return null;\n }\n\n const [, rawStart, rawEnd] = match;\n\n // `bytes=-500` means the LAST 500 bytes, not \"from 0 to 500\".\n if (!rawStart) {\n const suffixLength = Number(rawEnd);\n if (!Number.isInteger(suffixLength) || suffixLength <= 0) {\n return null;\n }\n\n return { start: Math.max(size - suffixLength, 0), end: size - 1 };\n }\n\n const start = Number(rawStart);\n const end = rawEnd ? Number(rawEnd) : size - 1;\n\n if (!Number.isInteger(start) || !Number.isInteger(end) || start > end || start >= size) {\n return null;\n }\n\n return { start, end: Math.min(end, size - 1) };\n};\n\n/** Sets whitelisted metadata headers on the response context. `content-type` is not among them. */\nconst applyMetadataHeaders: (opts: {\n ctx: TRouteContext<Env>;\n metadata: IObjectMetadata;\n}) => void = ({ ctx, metadata }) => {\n Object.entries(metadata).forEach(([key, value]) => {\n if (!WHITELIST_HEADERS.includes(key.toLowerCase() as (typeof WHITELIST_HEADERS)[number])) {\n return;\n }\n ctx.header(key.toLowerCase(), String(value).replace(/[\\r\\n]/g, ''));\n });\n};\n\nexport class AssetControllerFactory extends BaseHelper {\n constructor() {\n super({ scope: AssetControllerFactory.name });\n }\n\n static defineAssetController(opts: IAssetControllerOptions) {\n const { controller, helper, options, useMetaLink, metaLink, storage } = opts;\n const { resolveObjectName, defineRoutesBefore, defineExtraRoutes } = opts;\n const { directUpload } = controller;\n const { name, basePath, routes, isStrict = true, bucket, rawObjectPath = false } = controller;\n const maxFolderDepth = options?.maxFolderDepth ?? BaseStorageHelper.DEFAULT_MAX_FOLDER_DEPTH;\n const maxBytes = options?.maxBytes;\n\n const hasConfiguredBucket = bucket !== undefined;\n\n // With the bucket in the URL, the bucket routes stay unscoped and the scope spans every bucket.\n if (controller.keyPrefix !== undefined && !hasConfiguredBucket) {\n throw getError({\n message: `[${name}] keyPrefix needs controller.bucket | a bucket in the URL is a bucket the caller chooses, and the bucket routes cannot be scoped`,\n });\n }\n\n const scope =\n controller.keyPrefix === undefined\n ? undefined\n : normalizeKeyPrefix({ keyPrefix: controller.keyPrefix, helper, scope: name });\n const keyPrefix = scope?.keyPrefix;\n // `maxFolderDepth` counts the caller's folders; the scope's own are configuration, not input.\n const objectKeyMaxDepth = maxFolderDepth + (scope?.depth ?? 0);\n // The component's own name under a scope: the original name must stay one segment, as without one.\n const isScopedDefaultNaming =\n keyPrefix !== undefined && !resolveObjectName && !options?.normalizeNameFn;\n const definitions = buildAssetDefinitions({ hasConfiguredBucket, rawObjectPath });\n\n // The mount path may be declared with or without a leading slash; a link must carry exactly one.\n const normalizedBasePath = basePath.startsWith('/') ? basePath : `/${basePath}`;\n\n /** Only when the URL shape deviates: with neither option the storage helper's own link is left untouched. */\n const shapedLinkFn =\n hasConfiguredBucket || rawObjectPath\n ? (linkOptions: IObjectLocation) =>\n buildObjectLink({\n basePath: normalizedBasePath,\n bucket: linkOptions.bucket,\n object: linkOptions.object,\n hasConfiguredBucket,\n rawObjectPath,\n })\n : undefined;\n const normalizeLinkFn = options?.normalizeLinkFn ?? shapedLinkFn;\n\n @controllerDecorator({ path: basePath })\n class GeneratedStaticAssetController extends BaseRestController {\n constructor() {\n super({\n scope: name,\n path: basePath,\n isStrict,\n });\n }\n\n /** Clears the multipart spool files written by `parseMultipartBody({ storage: 'disk' })`. */\n removeSpoolFiles(spoolOptions: { paths: string[] }): void {\n for (const filePath of spoolOptions.paths) {\n try {\n rmSync(filePath, { force: true });\n } catch (error) {\n this.logger\n .for('UPLOAD')\n .error('Failed to remove spool file | path: %s | Error: %s', filePath, error);\n }\n }\n }\n\n override binding(): ValueOrPromise<void> {\n // First, so a literal path can win over the built-in catch-all `rawObjectPath` registers.\n defineRoutesBefore?.({ controller: this, helper, basePath: normalizedBasePath });\n\n // A single-bucket application has no reason to expose bucket creation or deletion, so the\n // four bucket-management routes are not registered once `bucket` is configured.\n if (!hasConfiguredBucket) {\n const getBucketsRoute = readRouteOverride({ route: routes?.getBuckets });\n if (getBucketsRoute.isEnabled) {\n this.bindRoute({\n configs: { ...definitions.GET_BUCKETS, ...getBucketsRoute.override },\n }).to({\n handler: async ctx => {\n const buckets = await helper.getBuckets();\n return ctx.json(buckets, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n }\n\n const getBucketByNameRoute = readRouteOverride({ route: routes?.getBucketByName });\n if (getBucketByNameRoute.isEnabled) {\n this.bindRoute({\n configs: { ...definitions.GET_BUCKET_BY_NAME, ...getBucketByNameRoute.override },\n }).to({\n handler: async ctx => {\n const params = ctx.req.valid<TBucketParams>('param');\n const bucketName = await resolveBucket({\n configured: bucket,\n param: params.bucketName,\n });\n\n if (!helper.isValidBucketName({ bucket: { name: bucketName } })) {\n throw getError({ error: StaticAssetErrors.BUCKET_NAME_INVALID });\n }\n\n const found = await helper.getBucket({ bucket: { name: bucketName } });\n return ctx.json(found, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n }\n\n const createBucketRoute = readRouteOverride({ route: routes?.createBucket });\n if (createBucketRoute.isEnabled) {\n this.bindRoute({\n configs: { ...definitions.CREATE_BUCKET, ...createBucketRoute.override },\n }).to({\n handler: async ctx => {\n const params = ctx.req.valid<TBucketParams>('param');\n const bucketName = await resolveBucket({\n configured: bucket,\n param: params.bucketName,\n });\n\n if (!helper.isValidBucketName({ bucket: { name: bucketName } })) {\n throw getError({ error: StaticAssetErrors.BUCKET_NAME_INVALID });\n }\n\n const createdBucket = await helper.createBucket({ bucket: { name: bucketName } });\n return ctx.json(createdBucket, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n }\n\n const deleteBucketRoute = readRouteOverride({ route: routes?.deleteBucket });\n if (deleteBucketRoute.isEnabled) {\n this.bindRoute({\n configs: { ...definitions.DELETE_BUCKET, ...deleteBucketRoute.override },\n }).to({\n handler: async ctx => {\n const params = ctx.req.valid<TBucketParams>('param');\n const bucketName = await resolveBucket({\n configured: bucket,\n param: params.bucketName,\n });\n\n if (!helper.isValidBucketName({ bucket: { name: bucketName } })) {\n throw getError({ error: StaticAssetErrors.BUCKET_NAME_INVALID });\n }\n\n const isRemovedBucket = await helper.removeBucket({\n bucket: { name: bucketName },\n });\n return ctx.json({ isDeleted: isRemovedBucket }, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n }\n }\n\n const getObjectByNameRoute = readRouteOverride({ route: routes?.getObjectByName });\n if (getObjectByNameRoute.isEnabled) {\n this.bindRoute({\n configs: { ...definitions.GET_OBJECT_BY_NAME, ...getObjectByNameRoute.override },\n }).to({\n handler: async ctx => {\n const params = ctx.req.valid<TObjectParams>('param');\n const bucketName = await resolveBucket({\n configured: bucket,\n param: params.bucketName,\n });\n const objectName = readObjectName(params.objectName);\n\n if (!helper.isValidBucketName({ bucket: { name: bucketName } })) {\n throw getError({ error: StaticAssetErrors.BUCKET_NAME_INVALID });\n }\n\n if (\n !helper.isValidObjectKey({\n object: { key: objectName },\n maxDepth: objectKeyMaxDepth,\n })\n ) {\n throw getError({ error: StaticAssetErrors.OBJECT_NAME_INVALID });\n }\n\n // Before any storage call: a key outside the scope must not even be probed.\n assertKeyInScope({ key: objectName, keyPrefix });\n\n const fileStat = await helper.getStat({\n bucket: { name: bucketName },\n object: { key: objectName },\n });\n const { size, metadata } = fileStat;\n applyMetadataHeaders({ ctx, metadata });\n\n const served = resolveServedContentType({ helper, object: { key: objectName } });\n ctx.header(HTTP.Headers.CONTENT_TYPE, served.contentType);\n ctx.header('x-content-type-options', 'nosniff');\n // Sandboxed even when renderable, so an unforeseen renderable type cannot reach this origin.\n ctx.header(HTTP.Headers.CONTENT_SECURITY_POLICY, 'sandbox');\n // Advertised unconditionally: a player only offers seeking once it sees this.\n ctx.header('accept-ranges', 'bytes');\n\n // A type outside the allow-list downloads instead of rendering; that is the XSS boundary.\n if (!served.isRenderable) {\n const inlineName = objectName.split('/').pop() ?? objectName;\n ctx.header(\n HTTP.Headers.CONTENT_DISPOSITION,\n createContentDispositionHeader({ filename: inlineName, type: 'attachment' }),\n );\n }\n\n const range = readByteRange({ header: ctx.req.header('range'), size });\n\n if (range) {\n ctx.header(HTTP.Headers.CONTENT_LENGTH, String(range.end - range.start + 1));\n ctx.header(HTTP.Headers.CONTENT_RANGE, `bytes ${range.start}-${range.end}/${size}`);\n } else {\n ctx.header(HTTP.Headers.CONTENT_LENGTH, size.toString());\n }\n\n // The web stream is what a Response body wants, so no Node Readable sits in between.\n const stream = await helper.getObjectStream({\n bucket: { name: bucketName },\n object: { key: objectName },\n ...(range ? { range } : {}),\n });\n\n return new Response(stream, {\n headers: ctx.res.headers,\n status: range ? HTTP.ResultCodes.RS_2.PartialContent : HTTP.ResultCodes.RS_2.Ok,\n });\n },\n });\n }\n\n const downloadObjectByNameRoute = readRouteOverride({\n route: routes?.downloadObjectByName,\n });\n if (downloadObjectByNameRoute.isEnabled) {\n this.bindRoute({\n configs: {\n ...definitions.DOWNLOAD_OBJECT_BY_NAME,\n ...downloadObjectByNameRoute.override,\n },\n }).to({\n handler: async ctx => {\n const params = ctx.req.valid<TObjectParams>('param');\n const bucketName = await resolveBucket({\n configured: bucket,\n param: params.bucketName,\n });\n const objectName = readObjectName(params.objectName);\n\n if (!helper.isValidBucketName({ bucket: { name: bucketName } })) {\n throw getError({ error: StaticAssetErrors.BUCKET_NAME_INVALID });\n }\n\n if (\n !helper.isValidObjectKey({\n object: { key: objectName },\n maxDepth: objectKeyMaxDepth,\n })\n ) {\n throw getError({ error: StaticAssetErrors.OBJECT_NAME_INVALID });\n }\n\n // Before any storage call: a key outside the scope must not even be probed.\n assertKeyInScope({ key: objectName, keyPrefix });\n\n const fileStat = await helper.getStat({\n bucket: { name: bucketName },\n object: { key: objectName },\n });\n const { size, metadata } = fileStat;\n applyMetadataHeaders({ ctx, metadata });\n\n // Download always attaches, so the served type only has to be honest, never renderable.\n const served = resolveServedContentType({ helper, object: { key: objectName } });\n ctx.header(HTTP.Headers.CONTENT_TYPE, served.contentType);\n ctx.header(HTTP.Headers.CONTENT_LENGTH, size.toString());\n\n const fileName = objectName.split('/').pop() ?? objectName;\n ctx.header(\n HTTP.Headers.CONTENT_DISPOSITION,\n createContentDispositionHeader({ filename: fileName, type: 'attachment' }),\n );\n ctx.header('x-content-type-options', 'nosniff');\n ctx.header(HTTP.Headers.CONTENT_SECURITY_POLICY, 'sandbox');\n\n const stream = await helper.getObjectStream({\n bucket: { name: bucketName },\n object: { key: objectName },\n });\n return new Response(stream, {\n headers: ctx.res.headers,\n status: HTTP.ResultCodes.RS_2.Ok,\n });\n },\n });\n }\n\n const uploadRoute = readRouteOverride({ route: routes?.upload });\n if (uploadRoute.isEnabled) {\n const uploadMiddleware =\n maxBytes === undefined\n ? uploadRoute.override.middleware\n : appendDeclaredLengthGuard({\n middleware: uploadRoute.override.middleware,\n maxBytes,\n });\n\n this.bindRoute({\n configs: {\n ...definitions.UPLOAD,\n ...uploadRoute.override,\n middleware: uploadMiddleware,\n },\n }).to({\n handler: async ctx => {\n // A configured bucket drops `params` from this route entirely, so it is read only when it exists.\n const bucketParam = hasConfiguredBucket\n ? undefined\n : ctx.req.valid<TBucketParams>('param').bucketName;\n const bucketName = await resolveBucket({ configured: bucket, param: bucketParam });\n\n if (!helper.isValidBucketName({ bucket: { name: bucketName } })) {\n throw getError({ error: StaticAssetErrors.BUCKET_NAME_INVALID });\n }\n\n const validateFolderPath = (folderPath: string) => {\n const normalizedFolder = folderPath.replace(/^\\/+|\\/+$/g, '');\n if (!normalizedFolder) {\n throw getError({ error: StaticAssetErrors.FOLDER_PATH_INVALID });\n }\n // maxFolderDepth excludes the filename, so it is compared directly against segment count.\n const folderSegments = normalizedFolder.split('/');\n if (folderSegments.length > maxFolderDepth) {\n throw getError({\n error: StaticAssetErrors.FOLDER_DEPTH_EXCEEDED,\n message: `Folder path exceeds max depth of ${maxFolderDepth}`,\n });\n }\n const invalidSegmentIndex = folderSegments.findIndex(\n segment => !helper.isValidSegment({ segment }),\n );\n if (invalidSegmentIndex !== -1) {\n throw getError({\n error: StaticAssetErrors.FOLDER_SEGMENT_INVALID,\n message: `Invalid folder path segment: ${folderSegments[invalidSegmentIndex]}`,\n });\n }\n };\n\n refuseLabelsInQuery({ query: ctx.req.query() });\n\n const { files: filesArray, fields } = await parseMultipartBody({\n context: ctx,\n storage: options?.parseMultipartBody?.storage,\n uploadDir: options?.parseMultipartBody?.uploadDir,\n });\n\n // Labels travel with the payload, not the URL, so the folder check waits for the parse.\n const query = readUploadLabels({ fields });\n\n const folderPath = query.folderPath;\n if (folderPath) {\n validateFolderPath(folderPath);\n }\n\n const spoolPaths = filesArray\n .map(file => file.path)\n .filter((filePath): filePath is string => Boolean(filePath));\n\n let uploaded: IUploadResult[];\n try {\n // `storage: 'disk'` spools the payload to `uploadDir` and returns `path` instead of `buffer`; the storage helpers only ever write `buffer`, so it must be read back.\n const modifiedFiles: IUploadFile[] = filesArray.map(file => {\n const buffer = file.buffer ?? (file.path ? readFileSync(file.path) : undefined);\n\n if (!buffer?.length) {\n throw getError({\n error: StaticAssetErrors.FILE_EMPTY,\n message: `Empty file content | name: ${file.originalname}`,\n });\n }\n\n // Authoritative: `buffer.length`, not the client-declared `size`.\n if (maxBytes !== undefined && buffer.length > maxBytes) {\n throw getError({\n error: StaticAssetErrors.UPLOAD_TOO_LARGE,\n message: `File ${file.originalname} of ${buffer.length} bytes exceeds the maximum of ${maxBytes}`,\n });\n }\n\n return {\n originalName: file.originalname,\n mimetype: file.mimetype,\n buffer,\n size: file.size,\n encoding: file.encoding,\n folderPath: folderPath ?? undefined,\n };\n });\n\n // Built per request: the hook is offered the bucket, which only the route knows. With\n // neither hook nor scope, `normalizeNameFn` stays exactly as configured. Under a scope,\n // the component's own default is placed inside it; an application hook's key is\n // checked, never rewritten, because the application may record that key elsewhere.\n const normalizeNameFn =\n resolveObjectName || keyPrefix !== undefined\n ? (naming: { file: TUploadNaming }) => {\n if (\n isScopedDefaultNaming &&\n !helper.isValidSegment({ segment: naming.file.originalName })\n ) {\n throw getError({ message: '[upload] Invalid original file name' });\n }\n\n const defaultKey = options?.normalizeNameFn\n ? options.normalizeNameFn(naming)\n : `${keyPrefix ?? ''}${defaultObjectName(naming)}`;\n\n const key = resolveObjectName\n ? resolveObjectName({\n bucket: { name: bucketName },\n file: naming.file,\n defaultKey,\n })\n : defaultKey;\n\n if (!isKeyInScope({ key, keyPrefix })) {\n throw getError({\n error: StaticAssetErrors.OBJECT_KEY_OUT_OF_SCOPE,\n message: `Object key is outside the key prefix of this controller | key: ${key} | keyPrefix: ${keyPrefix}`,\n });\n }\n\n return key;\n }\n : options?.normalizeNameFn;\n\n uploaded = await helper.upload({\n bucket: { name: bucketName },\n files: modifiedFiles,\n normalizeNameFn,\n normalizeLinkFn,\n // Without this the helper re-validates against its own hard default of 2, so an app configured for a deeper tree spools the body and only then fails inside the helper.\n maxFolderDepth: objectKeyMaxDepth,\n });\n } finally {\n this.removeSpoolFiles({ paths: spoolPaths });\n }\n\n if (!useMetaLink || !metaLink) {\n return ctx.json(uploaded, HTTP.ResultCodes.RS_2.Ok);\n }\n\n const results: IUploadResult[] = [];\n for (const uploadResult of uploaded) {\n try {\n const fileStat = await helper.getStat({\n bucket: uploadResult.bucket,\n object: uploadResult.object,\n });\n\n const createdMetaLink = await createMetaLinkRow({\n metaLink,\n helper,\n storage,\n uploadResult,\n fileStat,\n query,\n });\n\n results.push({ ...uploadResult, metaLink: { data: createdMetaLink } });\n } catch (error) {\n this.logger\n .for('UPLOAD')\n .error(\n 'Failed to create MetaLink | objectName: %s | Error: %s',\n uploadResult.object.key,\n error,\n );\n results.push({\n ...uploadResult,\n // A CODE, never the driver text. This handler returns 200, so it bypasses the\n // error middleware and `database.handler` - the two places that strip\n // `detail`/`table`/`constraint` - and shipped raw constraint names to the client.\n // The real error is already logged in full immediately above.\n metaLink: { error: META_LINK_CREATE_FAILED },\n });\n }\n }\n return ctx.json(results, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n }\n\n const deleteObjectRoute = readRouteOverride({ route: routes?.deleteObject });\n if (deleteObjectRoute.isEnabled) {\n this.bindRoute({\n configs: { ...definitions.DELETE_OBJECT, ...deleteObjectRoute.override },\n }).to({\n handler: async ctx => {\n const params = ctx.req.valid<TObjectParams>('param');\n const bucketName = await resolveBucket({\n configured: bucket,\n param: params.bucketName,\n });\n const objectName = readObjectName(params.objectName);\n\n if (!helper.isValidBucketName({ bucket: { name: bucketName } })) {\n throw getError({ error: StaticAssetErrors.BUCKET_NAME_INVALID });\n }\n\n if (\n !helper.isValidObjectKey({\n object: { key: objectName },\n maxDepth: objectKeyMaxDepth,\n })\n ) {\n throw getError({ error: StaticAssetErrors.OBJECT_NAME_INVALID });\n }\n\n // Before any storage call: a key outside the scope must not even be probed.\n assertKeyInScope({ key: objectName, keyPrefix });\n\n // Deliberately idempotent: S3 answers 200 for a key that was never there, and consumers\n // already depend on it. `disk` throws instead, so the two are reconciled here, not below.\n try {\n await helper.removeObject({\n bucket: { name: bucketName },\n object: { key: objectName },\n });\n } catch (error) {\n if (!isNotFoundError({ error })) {\n throw error;\n }\n }\n\n if (!useMetaLink || !metaLink) {\n return ctx.json({ success: true }, HTTP.ResultCodes.RS_2.Ok);\n }\n\n const deleteRepository = await resolveValueAsync({ value: metaLink.repository });\n deleteRepository\n .deleteAll({\n where: {\n bucketName,\n objectName,\n },\n })\n .then(() => {\n this.logger\n .for('DELETE_OBJECT')\n .info('Successfully to delete MetaLink for %s/%s', bucketName, objectName);\n })\n .catch(error => {\n this.logger\n .for('DELETE_OBJECT')\n .error(\n 'Failed to delete MetaLink | bucket: %s | objectName: %s | Error: %s',\n bucketName,\n objectName,\n error,\n );\n });\n\n return ctx.json({ success: true }, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n }\n\n const listObjectsRoute = readRouteOverride({ route: routes?.listObjects });\n if (listObjectsRoute.isEnabled) {\n this.bindRoute({\n configs: { ...definitions.LIST_OBJECTS, ...listObjectsRoute.override },\n }).to({\n handler: async ctx => {\n // A configured bucket drops `params` from this route entirely, so it is read only when it exists.\n const bucketParam = hasConfiguredBucket\n ? undefined\n : ctx.req.valid<TBucketParams>('param').bucketName;\n const bucketName = await resolveBucket({ configured: bucket, param: bucketParam });\n const { prefix, recursive, maxKeys } = ctx.req.valid<TListQuery>('query');\n\n if (!helper.isValidBucketName({ bucket: { name: bucketName } })) {\n throw getError({ error: StaticAssetErrors.BUCKET_NAME_INVALID });\n }\n\n // A NaN or 0 maxKeys is silently treated as \"unlimited\" by the storage backends, so an unparsable value must be rejected instead of forwarded.\n let resolvedMaxKeys: number | undefined;\n if (maxKeys !== undefined) {\n resolvedMaxKeys = Number(maxKeys);\n\n if (!Number.isInteger(resolvedMaxKeys) || resolvedMaxKeys < 1) {\n throw getError({\n error: StaticAssetErrors.MAX_KEYS_INVALID,\n message: `Invalid maxKeys | Expected a positive integer | value: ${maxKeys}`,\n });\n }\n }\n\n const scoped = resolveScopedListPrefix({ prefix, keyPrefix });\n if (scoped.isOutOfScope) {\n return ctx.json([], HTTP.ResultCodes.RS_2.Ok);\n }\n\n const objects = await helper.listObjects({\n bucket: { name: bucketName },\n prefix: scoped.prefix,\n useRecursive: recursive === 'true',\n maxKeys: resolvedMaxKeys,\n });\n\n return ctx.json(objects, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n }\n\n if (directUpload) {\n if (!hasConfiguredBucket) {\n throw getError({\n message: `[${name}] directUpload needs controller.bucket | a policy names one bucket, and a bucket in the URL is a bucket the caller chooses`,\n });\n }\n\n const pendingPrefix = directUpload.pendingPrefix ?? DEFAULT_PENDING_PREFIX;\n // The scope rides inside the pending key, so the commit, which strips `pendingPrefix`, lands inside it.\n const policyKeyPrefix = `${pendingPrefix}${keyPrefix ?? ''}`;\n\n const uploadPolicyRoute = readRouteOverride({ route: routes?.uploadPolicy });\n if (uploadPolicyRoute.isEnabled) {\n this.bindRoute({\n configs: { ...definitions.UPLOAD_POLICY, ...uploadPolicyRoute.override },\n }).to({\n handler: async ctx => {\n if (!(await directUpload.authorize({ context: ctx }))) {\n throw getError({ error: StaticAssetErrors.UPLOAD_NOT_AUTHORIZED });\n }\n\n const { files } = ctx.req.valid<TUploadPolicyRequest>('json');\n const bucketName = await resolveBucket({ configured: bucket });\n\n const policies: Array<IPostPolicy & { objectName: string; commitToken: string }> =\n [];\n for (const file of files) {\n if (file.size !== undefined && file.size > directUpload.maxBytes) {\n throw getError({\n error: StaticAssetErrors.UPLOAD_TOO_LARGE,\n message: `File '${file.fileName}' is ${file.size} bytes, over the ${directUpload.maxBytes} the policy allows`,\n });\n }\n\n // Generated, never taken from the caller: a key the caller picks is a key the caller\n // can collide with, and the pending object is the one thing a policy authorizes.\n const objectName = `${policyKeyPrefix}${UuidHelper.getInstance().v4()}/${file.fileName}`;\n const policy = await helper.presignPost({\n bucket: { name: bucketName },\n keyPrefix: policyKeyPrefix,\n maxBytes: directUpload.maxBytes,\n contentType: file.contentType,\n expiresIn: directUpload.expiresIn,\n });\n\n policies.push({\n ...policy,\n objectName,\n commitToken: buildCommitToken({\n payload: {\n bucket: bucketName,\n key: objectName,\n expiresAt: new Date(policy.expiresAt).getTime(),\n },\n secretKey: directUpload.secretKey,\n }),\n });\n }\n\n return ctx.json(policies, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n }\n\n const uploadCommitRoute = readRouteOverride({ route: routes?.uploadCommit });\n if (uploadCommitRoute.isEnabled) {\n this.bindRoute({\n configs: { ...definitions.UPLOAD_COMMIT, ...uploadCommitRoute.override },\n }).to({\n handler: async ctx => {\n const commitQuery = ctx.req.query();\n refuseLabelsInQuery({ query: commitQuery, names: COMMIT_LABEL_NAMES });\n refuseLabelsInQuery({\n query: commitQuery,\n names: ['folderPath'],\n reason:\n 'folderPath was decided when the upload policy was issued; the commit route cannot move the object',\n });\n\n const { commitToken, ...labels } = ctx.req.valid<\n { commitToken: string } & TUploadQuery\n >('json');\n\n // Verified BEFORE any storage call. That is what keeps this route from being a name\n // prober: a forged token fails without a round trip, so timing says nothing.\n const payload = readCommitToken({\n token: commitToken,\n secretKey: directUpload.secretKey,\n });\n\n // Labels, not authorization - the token deliberately carries no business fields, so\n // they travel beside it rather than inside it.\n const query = readUploadLabels({ fields: labels });\n\n const bucketRef = { name: payload.bucket };\n const pendingObject = { key: payload.key };\n const object = { key: payload.key.slice(pendingPrefix.length) };\n\n // A token another controller signed with the same secret must not land outside this scope.\n assertKeyInScope({ key: object.key, keyPrefix });\n\n // Before the copy, so a hook that throws leaves the object under the pending prefix\n // for a lifecycle rule, rather than stranding it at the final key.\n await directUpload.onCommit?.({ bucket: bucketRef, pendingObject, object });\n\n await helper.copyObject({\n bucket: bucketRef,\n source: pendingObject,\n destination: object,\n });\n // The copy IS the commit; removing the temporary object is cleanup. A failure here\n // leaves one object for the lifecycle rule, and failing the request would tell the\n // caller their upload did not work when it did.\n await helper\n .removeObject({ bucket: bucketRef, object: pendingObject })\n .catch(error => {\n this.logger\n .for('UPLOAD_COMMIT')\n .warn(\n 'Committed, but the pending object remains | key: %s | error: %s',\n pendingObject.key,\n error,\n );\n });\n\n const link = buildObjectLink({\n basePath: normalizedBasePath,\n bucket: bucketRef,\n object,\n hasConfiguredBucket,\n rawObjectPath,\n });\n\n // The two paths have to agree: without this a client reading `metaLink` off the\n // response renders an empty state with no error - the failure nobody reports.\n let metaLinkResult: IUploadResult['metaLink'];\n if (useMetaLink && metaLink) {\n try {\n const fileStat = await helper.getStat({ bucket: bucketRef, object });\n const data = await createMetaLinkRow({\n metaLink,\n helper,\n storage,\n uploadResult: buildStoredUploadResult({\n helper,\n bucket: bucketRef,\n object,\n link,\n fileStat,\n }),\n fileStat,\n query,\n });\n\n metaLinkResult = { data };\n } catch (error) {\n // The object IS committed by now. A 500 would send the caller back with a token\n // whose source no longer exists, so this rides the body as a code, like UPLOAD.\n this.logger\n .for('UPLOAD_COMMIT')\n .error(\n 'Failed to create MetaLink | objectName: %s | Error: %s',\n object.key,\n error,\n );\n metaLinkResult = { error: META_LINK_CREATE_FAILED };\n }\n }\n\n return ctx.json(\n {\n bucket: bucketRef,\n object,\n link,\n ...(metaLinkResult === undefined ? {} : { metaLink: metaLinkResult }),\n },\n HTTP.ResultCodes.RS_2.Ok,\n );\n },\n });\n }\n }\n\n if (useMetaLink && metaLink) {\n const recreateMetaLinkRoute = readRouteOverride({ route: routes?.recreateMetaLink });\n if (recreateMetaLinkRoute.isEnabled) {\n this.bindRoute({\n configs: { ...definitions.RECREATE_METALINK, ...recreateMetaLinkRoute.override },\n }).to({\n handler: async ctx => {\n // This route takes no labels anywhere: one in the query would land an unlabelled row.\n refuseLabelsInQuery({\n query: ctx.req.query(),\n reason:\n 'This route recreates a MetaLink for an existing object and takes no labels',\n });\n\n const params = ctx.req.valid<TObjectParams>('param');\n const bucketName = await resolveBucket({\n configured: bucket,\n param: params.bucketName,\n });\n const objectName = readObjectName(params.objectName);\n\n if (!helper.isValidBucketName({ bucket: { name: bucketName } })) {\n throw getError({ error: StaticAssetErrors.BUCKET_NAME_INVALID });\n }\n\n if (\n !helper.isValidObjectKey({\n object: { key: objectName },\n maxDepth: objectKeyMaxDepth,\n })\n ) {\n throw getError({ error: StaticAssetErrors.OBJECT_NAME_INVALID });\n }\n\n // Before any storage call: a key outside the scope must not even be probed.\n assertKeyInScope({ key: objectName, keyPrefix });\n\n const bucketRef = { name: bucketName };\n const object = { key: objectName };\n const fileStat = await helper.getStat({ bucket: bucketRef, object });\n\n const link = options?.normalizeLinkFn\n ? options.normalizeLinkFn({ bucket: bucketRef, object })\n : buildObjectLink({\n basePath: normalizedBasePath,\n bucket: bucketRef,\n object,\n hasConfiguredBucket,\n rawObjectPath,\n });\n\n const refreshed = await refreshMetaLinkRows({\n metaLink,\n helper,\n bucket: bucketRef,\n object,\n link,\n fileStat,\n });\n\n if (refreshed.count > 0) {\n return ctx.json(\n {\n success: true,\n action: MetaLinkRecreateActions.REFRESHED,\n count: refreshed.count,\n metaLink: refreshed.data[0],\n metaLinks: refreshed.data,\n },\n HTTP.ResultCodes.RS_2.Ok,\n );\n }\n\n // Not atomic with the refresh above: two concurrent calls may both create, which the\n // table allows - rows per pair are deliberately not unique.\n const created = await createMetaLinkRow({\n metaLink,\n helper,\n storage,\n uploadResult: buildStoredUploadResult({\n helper,\n bucket: bucketRef,\n object,\n link,\n fileStat,\n }),\n fileStat,\n query: {},\n });\n\n return ctx.json(\n {\n success: true,\n action: MetaLinkRecreateActions.CREATED,\n count: 1,\n metaLink: created,\n metaLinks: [created],\n },\n HTTP.ResultCodes.RS_2.Ok,\n );\n },\n });\n }\n }\n\n // Last, so a built-in route always wins a path collision with an application's own.\n defineExtraRoutes?.({ controller: this, helper, basePath: normalizedBasePath });\n }\n }\n\n Object.defineProperty(GeneratedStaticAssetController, 'name', {\n value: name,\n configurable: true,\n });\n return GeneratedStaticAssetController;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/static-asset/controller/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/static-asset/controller/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B","sourcesContent":["export * from './factory';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-scope.js","sourceRoot":"","sources":["../../../../src/components/static-asset/controller/key-scope.ts"],"names":[],"mappings":";;;AAAA,0DAA4E;AAC5E,sDAAuD;AAEvD,iIAAiI;AAC1H,MAAM,kBAAkB,GAAG,CAAC,IAIlC,EAAwC,EAAE;IACzC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;QAC3F,MAAM,IAAA,eAAQ,EAAC;YACb,OAAO,EAAE,IAAI,KAAK,0EAA0E,SAAS,EAAE;SACxG,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC9D,CAAC,CAAC;AAhBW,QAAA,kBAAkB,sBAgB7B;AAEK,MAAM,YAAY,GAAG,CAAC,IAAyC,EAAW,EAAE,CACjF,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AADzD,QAAA,YAAY,gBAC6C;AAEtE,uHAAuH;AAChH,MAAM,gBAAgB,GAAG,CAAC,IAAyC,EAAQ,EAAE;IAClF,IAAI,IAAA,oBAAY,EAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IAED,MAAM,IAAA,eAAQ,EAAC;QACb,KAAK,EAAE,6BAAa,CAAC,gBAAgB;QACrC,OAAO,EAAE,2BAA2B,IAAI,CAAC,GAAG,EAAE;KAC/C,CAAC,CAAC;AACL,CAAC,CAAC;AATW,QAAA,gBAAgB,oBAS3B;AAEF,mGAAmG;AAC5F,MAAM,uBAAuB,GAAG,CAAC,IAGvC,EAA8C,EAAE;IAC/C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAEnC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;AACjE,CAAC,CAAC;AAfW,QAAA,uBAAuB,2BAelC"}
|
|
1
|
+
{"version":3,"file":"key-scope.js","sourceRoot":"","sources":["../../../../src/components/static-asset/controller/key-scope.ts"],"names":[],"mappings":";;;AAAA,0DAA4E;AAC5E,sDAAuD;AAEvD,iIAAiI;AAC1H,MAAM,kBAAkB,GAAG,CAAC,IAIlC,EAAwC,EAAE;IACzC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;QAC3F,MAAM,IAAA,eAAQ,EAAC;YACb,OAAO,EAAE,IAAI,KAAK,0EAA0E,SAAS,EAAE;SACxG,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC9D,CAAC,CAAC;AAhBW,QAAA,kBAAkB,sBAgB7B;AAEK,MAAM,YAAY,GAAG,CAAC,IAAyC,EAAW,EAAE,CACjF,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AADzD,QAAA,YAAY,gBAC6C;AAEtE,uHAAuH;AAChH,MAAM,gBAAgB,GAAG,CAAC,IAAyC,EAAQ,EAAE;IAClF,IAAI,IAAA,oBAAY,EAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IAED,MAAM,IAAA,eAAQ,EAAC;QACb,KAAK,EAAE,6BAAa,CAAC,gBAAgB;QACrC,OAAO,EAAE,2BAA2B,IAAI,CAAC,GAAG,EAAE;KAC/C,CAAC,CAAC;AACL,CAAC,CAAC;AATW,QAAA,gBAAgB,oBAS3B;AAEF,mGAAmG;AAC5F,MAAM,uBAAuB,GAAG,CAAC,IAGvC,EAA8C,EAAE;IAC/C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAEnC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;AACjE,CAAC,CAAC;AAfW,QAAA,uBAAuB,2BAelC","sourcesContent":["import { StorageErrors, type IStorageHelper } from '@venizia/ignis-helpers';\nimport { getError } from '@venizia/ignis-helpers/core';\n\n/** `tenant-a`, `/tenant-a` and `tenant-a/` all become `tenant-a/`: without the slash, `tenant-a` would also own `tenant-ab/`. */\nexport const normalizeKeyPrefix = (opts: {\n keyPrefix: string;\n helper: IStorageHelper;\n scope: string;\n}): { keyPrefix: string; depth: number } => {\n const { keyPrefix, helper, scope } = opts;\n const trimmed = keyPrefix.replace(/^\\/+|\\/+$/g, '');\n const segments = trimmed ? trimmed.split('/') : [];\n\n if (segments.length === 0 || segments.some(segment => !helper.isValidSegment({ segment }))) {\n throw getError({\n message: `[${scope}] controller.keyPrefix must be one or more valid key segments | value: ${keyPrefix}`,\n });\n }\n\n return { keyPrefix: `${trimmed}/`, depth: segments.length };\n};\n\nexport const isKeyInScope = (opts: { key: string; keyPrefix?: string }): boolean =>\n opts.keyPrefix === undefined || opts.key.startsWith(opts.keyPrefix);\n\n/** A key outside the scope answers as a missing object does, so a caller learns nothing about keys it does not own. */\nexport const assertKeyInScope = (opts: { key: string; keyPrefix?: string }): void => {\n if (isKeyInScope(opts)) {\n return;\n }\n\n throw getError({\n error: StorageErrors.OBJECT_NOT_FOUND,\n message: `Object not found | key: ${opts.key}`,\n });\n};\n\n/** A caller prefix wider than the scope is narrowed to it; one wholly outside it lists nothing. */\nexport const resolveScopedListPrefix = (opts: {\n prefix?: string;\n keyPrefix?: string;\n}): { prefix?: string; isOutOfScope: boolean } => {\n const { prefix, keyPrefix } = opts;\n\n if (keyPrefix === undefined) {\n return { prefix, isOutOfScope: false };\n }\n\n if (!prefix || keyPrefix.startsWith(prefix)) {\n return { prefix: keyPrefix, isOutOfScope: false };\n }\n\n return { prefix, isOutOfScope: !prefix.startsWith(keyPrefix) };\n};\n"]}
|