UNPKG

@httpc/kit

Version:

httpc toolbox for building function-based API with minimal code and end-to-end type safety

46 lines (45 loc) 1.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.authenticated = exports.noCall = exports.call = exports.decoratorMetadata = exports.decoratorMiddleware = void 0; const auth_1 = require("../auth"); function assertReflectMetadata() { if (typeof Reflect.defineMetadata === "undefined") { throw new Error("Missing 'reflect-metadata' dependency"); } } function metadataSet(key, value) { return (target, property) => { assertReflectMetadata(); return property ? Reflect.defineMetadata(key, value, target, property) : Reflect.defineMetadata(key, value, target); }; } function metadataPush(key, item) { return (target, property) => { assertReflectMetadata(); const metadata = (property ? Reflect.getMetadata(key, target, property) : Reflect.getMetadata(key, target)) || []; metadata.push(item); return property ? Reflect.defineMetadata(key, metadata, target, property) : Reflect.defineMetadata(key, metadata, target); }; } function decoratorMiddleware(factory) { return (...args) => metadataPush("CALL_MIDDLEWARE", factory(...args)); } exports.decoratorMiddleware = decoratorMiddleware; function decoratorMetadata(key, value) { return (...args) => { if (typeof key === "function") { ({ key, value } = key(...args)); } return metadataSet(key, value); }; } exports.decoratorMetadata = decoratorMetadata; exports.call = decoratorMetadata((access = "write") => ({ key: "CALL_ACCESS", value: access })); exports.noCall = decoratorMetadata("CALL_ACCESS", false); exports.authenticated = decoratorMiddleware(auth_1.Authenticated);