{"version":3,"file":"preset.mjs","names":[],"sources":["../src/preset/class.ts","../src/preset/method.ts","../src/preset/parameter.ts","../src/preset/swagger.ts","../src/preset/module.ts","../src/preset/index.ts"],"sourcesContent":["import {\n    type ControllerHandler,\n    controller,\n    setControllerPaths,\n} from '@trapi/core';\n\nconst dControllerHandler = controller({\n    match: { name: 'DController', on: 'class' },\n    apply: (ctx, draft) => {\n        setControllerPaths(draft, ctx.argument(0));\n    },\n});\n\nexport function buildClassHandlers(): ControllerHandler[] {\n    return [dControllerHandler];\n}\n","import {\n    type MethodDraft,\n    type MethodHandler,\n    method,\n    setMethodPath,\n} from '@trapi/core';\n\nfunction setVerbAndPath(verb: MethodDraft['verb']): MethodHandler['apply'] {\n    return (ctx, draft) => {\n        draft.verb = verb;\n        setMethodPath(draft, ctx.argument(0));\n    };\n}\n\n// `@DAll` has no direct OpenAPI verb — map it to `get` (closest analogue).\nconst dAllHandler = method({ match: { name: 'DAll', on: 'method' }, apply: setVerbAndPath('get') });\nconst dDeleteHandler = method({ match: { name: 'DDelete', on: 'method' }, apply: setVerbAndPath('delete') });\nconst dGetHandler = method({ match: { name: 'DGet', on: 'method' }, apply: setVerbAndPath('get') });\nconst dHeadHandler = method({ match: { name: 'DHead', on: 'method' }, apply: setVerbAndPath('head') });\nconst dOptionsHandler = method({ match: { name: 'DOptions', on: 'method' }, apply: setVerbAndPath('options') });\nconst dPatchHandler = method({ match: { name: 'DPatch', on: 'method' }, apply: setVerbAndPath('patch') });\nconst dPostHandler = method({ match: { name: 'DPost', on: 'method' }, apply: setVerbAndPath('post') });\nconst dPutHandler = method({ match: { name: 'DPut', on: 'method' }, apply: setVerbAndPath('put') });\n\nexport function buildMethodHandlers(): MethodHandler[] {\n    return [\n        dAllHandler,\n        dDeleteHandler,\n        dGetHandler,\n        dHeadHandler,\n        dOptionsHandler,\n        dPatchHandler,\n        dPostHandler,\n        dPutHandler,\n    ];\n}\n","import {\n    ParamKind,\n    type ParameterHandler,\n    parameter,\n    readString,\n} from '@trapi/core';\n\nconst dContextHandler = parameter({\n    match: { name: 'DContext', on: 'parameter' },\n    apply: (_ctx, draft) => { draft.in = ParamKind.Context; },\n});\n\nconst dRequestHandler = parameter({\n    match: { name: 'DRequest', on: 'parameter' },\n    apply: (_ctx, draft) => { draft.in = ParamKind.Context; },\n});\n\nconst dResponseHandler = parameter({\n    match: { name: 'DResponse', on: 'parameter' },\n    apply: (_ctx, draft) => { draft.in = ParamKind.Context; },\n});\n\nconst dNextHandler = parameter({\n    match: { name: 'DNext', on: 'parameter' },\n    apply: (_ctx, draft) => { draft.in = ParamKind.Context; },\n});\n\n// `@DQuery()` (no arg) binds the entire query object → `Query`.\n// `@DQuery('foo')` binds a single property → `QueryProp`.\nconst dQueryHandler = parameter({\n    match: { name: 'DQuery', on: 'parameter' },\n    apply: (ctx, draft) => {\n        const name = readString(ctx.argument(0));\n        if (name !== undefined) {\n            draft.in = ParamKind.QueryProp;\n            draft.name = name;\n        } else {\n            draft.in = ParamKind.Query;\n        }\n    },\n});\n\n// `@DBody()` → entire body; `@DBody('foo')` → single property.\nconst dBodyHandler = parameter({\n    match: { name: 'DBody', on: 'parameter' },\n    apply: (ctx, draft) => {\n        const name = readString(ctx.argument(0));\n        if (name !== undefined) {\n            draft.in = ParamKind.BodyProp;\n            draft.name = name;\n        } else {\n            draft.in = ParamKind.Body;\n        }\n    },\n});\n\nconst dHeaderHandler = parameter({\n    match: { name: 'DHeader', on: 'parameter' },\n    apply: (ctx, draft) => {\n        draft.in = ParamKind.Header;\n        const name = readString(ctx.argument(0));\n        if (name) draft.name = name;\n    },\n});\n\n// `@DHeaders()` binds the whole headers object → not representable as a single\n// OpenAPI parameter, so it's modelled as `Header` with no specific name.\nconst dHeadersHandler = parameter({\n    match: { name: 'DHeaders', on: 'parameter' },\n    apply: (_ctx, draft) => { draft.in = ParamKind.Header; },\n});\n\nconst dCookieHandler = parameter({\n    match: { name: 'DCookie', on: 'parameter' },\n    apply: (ctx, draft) => {\n        draft.in = ParamKind.Cookie;\n        const name = readString(ctx.argument(0));\n        if (name) draft.name = name;\n    },\n});\n\nconst dCookiesHandler = parameter({\n    match: { name: 'DCookies', on: 'parameter' },\n    apply: (_ctx, draft) => { draft.in = ParamKind.Cookie; },\n});\n\nconst dPathHandler = parameter({\n    match: { name: 'DPath', on: 'parameter' },\n    apply: (ctx, draft) => {\n        draft.in = ParamKind.Path;\n        const name = readString(ctx.argument(0));\n        if (name) draft.name = name;\n    },\n});\n\nconst dPathsHandler = parameter({\n    match: { name: 'DPaths', on: 'parameter' },\n    apply: (_ctx, draft) => { draft.in = ParamKind.Path; },\n});\n\nexport function buildParameterHandlers(): ParameterHandler[] {\n    return [\n        dContextHandler,\n        dRequestHandler,\n        dResponseHandler,\n        dNextHandler,\n        dQueryHandler,\n        dBodyHandler,\n        dHeaderHandler,\n        dHeadersHandler,\n        dCookieHandler,\n        dCookiesHandler,\n        dPathHandler,\n        dPathsHandler,\n    ];\n}\n","import {\n    type ControllerDraft,\n    type ControllerHandler,\n    type HandlerContext,\n    MarkerName,\n    type MethodDraft,\n    type MethodHandler,\n    append,\n    controller,\n    method,\n    readNumber,\n    readString,\n} from '@trapi/core';\n\nconst appendTags = append('tags').positionalAll();\nconst appendConsumes = append('consumes').positionalAll();\n\nfunction applyDescription(ctx: HandlerContext, draft: ControllerDraft | MethodDraft): void {\n    const statusArg = ctx.argument(0);\n    const status = readString(statusArg) ?? String(readNumber(statusArg) ?? '200');\n    const description = readString(ctx.argument(1)) ?? 'Ok';\n    const payload = ctx.argument(2);\n    const examples = payload && payload.kind !== 'unresolvable' ?\n        [{ value: payload.raw }] :\n        [];\n    const typeArg = ctx.typeArgument(0);\n    draft.responses.push({\n        name: status,\n        status,\n        description,\n        examples,\n        schema: typeArg ? typeArg.resolve() : undefined,\n    });\n}\n\nfunction applySecurity(ctx: HandlerContext, draft: ControllerDraft | MethodDraft): void {\n    const scopesArg = ctx.argument(0);\n    const nameArg = ctx.argument(1);\n    const name = readString(nameArg) ?? 'default';\n    const scopes: string[] = [];\n    if (scopesArg?.kind === 'array' && Array.isArray(scopesArg.raw)) {\n        for (const item of scopesArg.raw) {\n            if (typeof item === 'string') scopes.push(item);\n        }\n    } else if (scopesArg?.kind === 'literal' && typeof scopesArg.raw === 'string') {\n        scopes.push(scopesArg.raw);\n    }\n    draft.security ??= [];\n    draft.security.push({ [name]: scopes });\n}\n\n// -----------------------------------------------------------------------------\n// Class-level swagger handlers\n// -----------------------------------------------------------------------------\n\nconst classConsumesHandler = controller({\n    match: { name: 'DConsumes', on: 'class' },\n    apply: appendConsumes,\n});\n\nconst classDeprecatedHandler = controller({\n    match: { name: 'DDeprecated', on: 'class' },\n    apply: (_ctx, draft) => { draft.deprecated = true; },\n    marker: MarkerName.Deprecated,\n});\n\nconst classDescriptionHandler = controller({\n    match: { name: 'DDescription', on: 'class' },\n    apply: (ctx, draft) => applyDescription(ctx, draft),\n});\n\nconst classHiddenHandler = controller({\n    match: { name: 'DHidden', on: 'class' },\n    apply: (_ctx, draft) => { draft.hidden = true; },\n    marker: MarkerName.Hidden,\n});\n\nconst classSecurityHandler = controller({\n    match: { name: 'DSecurity', on: 'class' },\n    apply: (ctx, draft) => applySecurity(ctx, draft),\n});\n\nconst classTagsHandler = controller({\n    match: { name: 'DTags', on: 'class' },\n    apply: appendTags,\n});\n\n// -----------------------------------------------------------------------------\n// Method-level swagger handlers\n// -----------------------------------------------------------------------------\n\nconst methodConsumesHandler = method({\n    match: { name: 'DConsumes', on: 'method' },\n    apply: appendConsumes,\n});\n\nconst methodDeprecatedHandler = method({\n    match: { name: 'DDeprecated', on: 'method' },\n    apply: (_ctx, draft) => { draft.deprecated = true; },\n    marker: MarkerName.Deprecated,\n});\n\nconst methodDescriptionHandler = method({\n    match: { name: 'DDescription', on: 'method' },\n    apply: (ctx, draft) => applyDescription(ctx, draft),\n});\n\nconst methodExampleHandler = method({\n    match: { name: 'DExample', on: 'method' },\n    apply: (ctx, draft) => {\n        const payload = ctx.argument(0);\n        if (!payload || payload.kind === 'unresolvable') {\n            return;\n        }\n        draft.defaultResponseExamples.push({ value: payload.raw });\n    },\n});\n\nconst methodHiddenHandler = method({\n    match: { name: 'DHidden', on: 'method' },\n    apply: (_ctx, draft) => { draft.hidden = true; },\n    marker: MarkerName.Hidden,\n});\n\nconst methodSecurityHandler = method({\n    match: { name: 'DSecurity', on: 'method' },\n    apply: (ctx, draft) => applySecurity(ctx, draft),\n});\n\nconst methodTagsHandler = method({\n    match: { name: 'DTags', on: 'method' },\n    apply: appendTags,\n});\n\nexport function buildSwaggerControllerHandlers(): ControllerHandler[] {\n    return [\n        classConsumesHandler,\n        classDeprecatedHandler,\n        classDescriptionHandler,\n        classHiddenHandler,\n        classSecurityHandler,\n        classTagsHandler,\n    ];\n}\n\nexport function buildSwaggerMethodHandlers(): MethodHandler[] {\n    return [\n        methodConsumesHandler,\n        methodDeprecatedHandler,\n        methodDescriptionHandler,\n        methodExampleHandler,\n        methodHiddenHandler,\n        methodSecurityHandler,\n        methodTagsHandler,\n    ];\n}\n","import type { Preset } from '@trapi/core';\nimport { buildClassHandlers } from './class';\nimport { buildMethodHandlers } from './method';\nimport { buildParameterHandlers } from './parameter';\nimport { buildSwaggerControllerHandlers, buildSwaggerMethodHandlers } from './swagger';\n\nexport function buildPreset(): Preset {\n    return {\n        name: '@routup/decorators',\n        controllers: [\n            ...buildClassHandlers(),\n            ...buildSwaggerControllerHandlers(),\n        ],\n        methods: [\n            ...buildMethodHandlers(),\n            ...buildSwaggerMethodHandlers(),\n        ],\n        parameters: buildParameterHandlers(),\n    };\n}\n","import { buildPreset } from './module';\n\nexport * from './module';\n\nconst preset = buildPreset();\n\nexport default preset;\n"],"mappings":"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"}