New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@plumier/generic-controller

Package Overview
Dependencies
Maintainers
1
Versions
204
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@plumier/generic-controller - npm Package Compare versions

Comparing version 1.0.3 to 1.0.4-canary.1

12

lib/factory.d.ts

@@ -1,2 +0,2 @@

import { Class, ControllerGeneric, GenericControllers, KeyOf, NestedControllerGeneric } from "@plumier/core";
import { Class, ControllerGeneric, GenericControllers, KeyOf } from "@plumier/core";
import { ControllerBuilder, GenericControllerConfiguration } from "./configuration";

@@ -10,5 +10,11 @@ declare type EntityWithRelation<T = any, R = any> = [Class<T>, KeyOf<T>, Class<R>?];

}
declare function createGenericControllerType(entity: Class, builder: ControllerBuilder, controller: Class<ControllerGeneric>, nameConversion: (x: string) => string): import("@plumier/reflect").Class<any>;
declare function createNestedGenericControllerType(type: EntityWithRelation, builder: ControllerBuilder, controller: Class<NestedControllerGeneric>, nameConversion: (x: string) => string): import("@plumier/reflect").Class<any>;
interface ControllerFactoryOption {
builder: ControllerBuilder;
controller: Class<ControllerGeneric>;
nameConversion: (x: string) => string;
skipTag: boolean;
}
declare function createGenericControllerType(entity: Class, opt: ControllerFactoryOption): import("@plumier/reflect").Class<any>;
declare function createNestedGenericControllerType(type: EntityWithRelation, opt: ControllerFactoryOption): import("@plumier/reflect").Class<any>;
declare function createGenericController<T>(type: Class | EntityWithRelation<T>, option: CreateGenericControllerOption): import("@plumier/reflect").Class<any>;
export { createGenericController, CreateGenericControllerOption, EntityWithRelation, createGenericControllerType, createNestedGenericControllerType };

@@ -28,10 +28,10 @@ "use strict";

}
function createGenericControllerType(entity, builder, controller, nameConversion) {
function createGenericControllerType(entity, opt) {
var _a;
const config = builder.toObject();
const config = opt.builder.toObject();
// get type of ID column on entity
const idType = getIdType(entity);
// create controller type dynamically
const Controller = reflect_1.generic.create({ extends: controller, name: controller.name }, entity, idType);
let path = (_a = config.path) !== null && _a !== void 0 ? _a : `${nameConversion(entity.name)}/:id`;
const Controller = reflect_1.generic.create({ extends: opt.controller, name: opt.controller.name }, entity, idType);
let path = (_a = config.path) !== null && _a !== void 0 ? _a : `${opt.nameConversion(entity.name)}/:id`;
const map = validatePath(path, entity);

@@ -41,3 +41,2 @@ Reflect.decorate([

configuration_1.ignoreActions(config),
configuration_1.decorateTagByClass(entity, nameConversion),
...configuration_1.createRouteDecorators(path, map),

@@ -48,15 +47,20 @@ ...configuration_1.authorizeActions(config),

], Controller);
if (!opt.skipTag) {
Reflect.decorate([
configuration_1.decorateTagByClass(entity, opt.nameConversion),
], Controller);
}
return Controller;
}
exports.createGenericControllerType = createGenericControllerType;
function createNestedGenericControllerType(type, builder, controller, nameConversion) {
function createNestedGenericControllerType(type, opt) {
var _a;
const info = core_1.entityHelper.getRelationInfo(type);
const config = builder.toObject();
const config = opt.builder.toObject();
const parentIdType = getIdType(info.parent);
const idType = getIdType(info.child);
const Controller = reflect_1.generic.create({ extends: controller, name: controller.name }, info.parent, info.child, parentIdType, idType);
const Controller = reflect_1.generic.create({ extends: opt.controller, name: opt.controller.name }, info.parent, info.child, parentIdType, idType);
// add root decorator
const childPath = info.type === "OneToMany" ? info.parentProperty : nameConversion(info.child.name).toLowerCase();
let path = (_a = config.path) !== null && _a !== void 0 ? _a : `${nameConversion(info.parent.name)}/:pid/${childPath}/:id`;
const childPath = info.type === "OneToMany" ? info.parentProperty : opt.nameConversion(info.child.name).toLowerCase();
let path = (_a = config.path) !== null && _a !== void 0 ? _a : `${opt.nameConversion(info.parent.name)}/:pid/${childPath}/:id`;
const map = validatePath(path, info.parent, true);

@@ -69,3 +73,2 @@ Reflect.decorate([

core_1.entityProvider(info.child, "id", { applyTo: ["get", "modify", "replace", "delete"] }),
configuration_1.decorateTagByRelation(info, nameConversion),
...configuration_1.createRouteDecorators(path, map),

@@ -76,2 +79,7 @@ ...configuration_1.authorizeActions(config),

], Controller);
if (!opt.skipTag) {
Reflect.decorate([
configuration_1.decorateTagByRelation(info, opt.nameConversion)
], Controller);
}
return Controller;

@@ -88,7 +96,8 @@ }

option.config(builder);
const opt = { builder, nameConversion: option.nameConversion };
if (Array.isArray(type)) {
return createNestedGenericControllerType(type, builder, option.controllers[1], option.nameConversion);
return createNestedGenericControllerType(type, Object.assign(Object.assign({}, opt), { controller: option.controllers[1], skipTag: true }));
}
return createGenericControllerType(type, builder, option.controllers[0], option.nameConversion);
return createGenericControllerType(type, Object.assign(Object.assign({}, opt), { controller: option.controllers[0], skipTag: true }));
}
exports.createGenericController = createGenericController;

@@ -25,4 +25,9 @@ "use strict";

for (const decorator of decorators) {
const config = getControllerBuilderFromConfig(decorator.config);
const ctl = factory_1.createGenericControllerType(type, config, genericControllers[0], nameConversion);
const builder = getControllerBuilderFromConfig(decorator.config);
const ctl = factory_1.createGenericControllerType(type, {
builder,
controller: genericControllers[0],
nameConversion,
skipTag: false
});
controllers.push(ctl);

@@ -39,3 +44,9 @@ }

for (const decorator of decorators) {
const ctl = factory_1.createNestedGenericControllerType([decorator.target, prop.name], getControllerBuilderFromConfig(decorator.config), genericControllers[1], nameConversion);
const builder = getControllerBuilderFromConfig(decorator.config);
const ctl = factory_1.createNestedGenericControllerType([decorator.target, prop.name], {
builder,
controller: genericControllers[1],
nameConversion,
skipTag: false
});
controllers.push(ctl);

@@ -42,0 +53,0 @@ }

{
"name": "@plumier/generic-controller",
"version": "1.0.3",
"version": "1.0.4-canary.1+dc54af9",
"description": "Plumier generic controller implementation",

@@ -23,4 +23,4 @@ "main": "lib/index.js",

"dependencies": {
"@plumier/core": "^1.0.3",
"@plumier/query-parser": "^1.0.3"
"@plumier/core": "1.0.4-canary.1+dc54af9",
"@plumier/query-parser": "1.0.4-canary.1+dc54af9"
},

@@ -40,3 +40,3 @@ "devDependencies": {

},
"gitHead": "31e9b4a51607ec43050585daf1bde362842334dd"
"gitHead": "dc54af982b53f0a1a6119b3ca34928a73b773eac"
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc