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

@nocobase/resourcer

Package Overview
Dependencies
Maintainers
1
Versions
569
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@nocobase/resourcer - npm Package Compare versions

Comparing version 0.13.0-alpha.4 to 0.13.0-alpha.5

196

lib/action.js

@@ -1,65 +0,57 @@

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var action_exports = {};
__export(action_exports, {
Action: () => Action,
default: () => action_default
});
exports.default = exports.Action = void 0;
function _utils() {
const data = require("@nocobase/utils");
_utils = function _utils() {
return data;
};
return data;
}
function _koaCompose() {
const data = _interopRequireDefault(require("koa-compose"));
_koaCompose = function _koaCompose() {
return data;
};
return data;
}
function _lodash() {
const data = _interopRequireDefault(require("lodash"));
_lodash = function _lodash() {
return data;
};
return data;
}
var _middleware = _interopRequireDefault(require("./middleware"));
const _excluded = ["middleware", "middlewares", "handler"];
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
class Action {
module.exports = __toCommonJS(action_exports);
var import_utils = require("@nocobase/utils");
var import_koa_compose = __toESM(require("koa-compose"));
var import_lodash = __toESM(require("lodash"));
var import_middleware = __toESM(require("./middleware"));
const _Action = class _Action {
handler;
resource;
name;
options;
context = {};
params = {};
actionName;
resourceName;
resourceOf;
middlewares = [];
constructor(options) {
this.handler = void 0;
this.resource = void 0;
this.name = void 0;
this.options = void 0;
this.context = {};
this.params = {};
this.actionName = void 0;
this.resourceName = void 0;
this.resourceOf = void 0;
this.middlewares = [];
options = (0, _utils().requireModule)(options);
if (typeof options === 'function') {
options = {
handler: options
};
options = (0, import_utils.requireModule)(options);
if (typeof options === "function") {
options = { handler: options };
}
const _options = options,
middleware = _options.middleware,
_options$middlewares = _options.middlewares,
middlewares = _options$middlewares === void 0 ? [] : _options$middlewares,
handler = _options.handler,
params = _objectWithoutProperties(_options, _excluded);
this.middlewares = _middleware.default.toInstanceArray(middleware || middlewares);
const { middleware, middlewares = [], handler, ...params } = options;
this.middlewares = import_middleware.default.toInstanceArray(middleware || middlewares);
this.handler = handler;

@@ -78,6 +70,6 @@ this.options = options;

clone() {
const options = _lodash().default.cloneDeep(this.options);
const options = import_lodash.default.cloneDeep(this.options);
delete options.middleware;
delete options.middlewares;
const action = new Action(options);
const action = new _Action(options);
action.setName(this.name);

@@ -98,11 +90,12 @@ action.setResource(this.resource);

}
(0, _utils().assign)(this.params, params, _objectSpread({
filter: 'andMerge',
fields: 'intersect',
appends: 'union',
except: 'union',
whitelist: 'intersect',
blacklist: 'intersect',
sort: 'overwrite'
}, strategies));
(0, import_utils.assign)(this.params, params, {
filter: "andMerge",
fields: "intersect",
appends: "union",
except: "union",
whitelist: "intersect",
blacklist: "intersect",
sort: "overwrite",
...strategies
});
}

@@ -127,8 +120,8 @@ setResource(resource) {

getMiddlewareHandlers() {
return this.middlewares.filter(middleware => middleware.canAccess(this.name)).map(middleware => middleware.getHandler());
return this.middlewares.filter((middleware) => middleware.canAccess(this.name)).map((middleware) => middleware.getHandler());
}
getHandler() {
const handler = (0, _utils().requireModule)(this.handler || this.resource.resourcer.getRegisteredHandler(this.name));
if (typeof handler !== 'function') {
throw new Error('Handler must be a function!');
const handler = (0, import_utils.requireModule)(this.handler || this.resource.resourcer.getRegisteredHandler(this.name));
if (typeof handler !== "function") {
throw new Error("Handler must be a function!");
}

@@ -138,28 +131,35 @@ return handler;

getHandlers() {
const handlers = [...this.resource.resourcer.getMiddlewares(), ...this.getMiddlewareHandlers(), this.getHandler()].filter(Boolean);
const handlers = [
...this.resource.resourcer.getMiddlewares(),
...this.getMiddlewareHandlers(),
this.getHandler()
].filter(Boolean);
return handlers;
}
execute(context, next) {
var _this = this;
return _asyncToGenerator(function* () {
return yield (0, _koaCompose().default)(_this.getHandlers())(context, next);
})();
async execute(context, next) {
return await (0, import_koa_compose.default)(this.getHandlers())(context, next);
}
static toInstanceMap(actions, resource) {
return new Map(Object.entries(actions).map(([key, options]) => {
let action;
if (options instanceof Action) {
action = options;
} else {
action = new Action(options);
}
action.setName(key);
action.setResource(resource);
resource && action.middlewares.unshift(...resource.middlewares);
return [key, action];
}));
return new Map(
Object.entries(actions).map(([key, options]) => {
let action;
if (options instanceof _Action) {
action = options;
} else {
action = new _Action(options);
}
action.setName(key);
action.setResource(resource);
resource && action.middlewares.unshift(...resource.middlewares);
return [key, action];
})
);
}
}
exports.Action = Action;
var _default = Action;
exports.default = _default;
};
__name(_Action, "Action");
let Action = _Action;
var action_default = Action;
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
Action
});

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

import Resourcer from './resourcer';
export * from './utils';

@@ -7,2 +6,1 @@ export * from './middleware';

export * from './resourcer';
export default Resourcer;

@@ -1,71 +0,29 @@

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var src_exports = {};
module.exports = __toCommonJS(src_exports);
__reExport(src_exports, require("./utils"), module.exports);
__reExport(src_exports, require("./middleware"), module.exports);
__reExport(src_exports, require("./action"), module.exports);
__reExport(src_exports, require("./resource"), module.exports);
__reExport(src_exports, require("./resourcer"), module.exports);
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
...require("./utils"),
...require("./middleware"),
...require("./action"),
...require("./resource"),
...require("./resourcer")
});
var _exportNames = {};
exports.default = void 0;
var _resourcer = _interopRequireWildcard(require("./resourcer"));
Object.keys(_resourcer).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
if (key in exports && exports[key] === _resourcer[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _resourcer[key];
}
});
});
var _utils = require("./utils");
Object.keys(_utils).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
if (key in exports && exports[key] === _utils[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _utils[key];
}
});
});
var _middleware = require("./middleware");
Object.keys(_middleware).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
if (key in exports && exports[key] === _middleware[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _middleware[key];
}
});
});
var _action = require("./action");
Object.keys(_action).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
if (key in exports && exports[key] === _action[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _action[key];
}
});
});
var _resource = require("./resource");
Object.keys(_resource).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
if (key in exports && exports[key] === _resource[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _resource[key];
}
});
});
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
var _default = _resourcer.default;
exports.default = _default;

@@ -1,33 +0,45 @@

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var middleware_exports = {};
__export(middleware_exports, {
Middleware: () => Middleware,
branch: () => branch,
default: () => middleware_default
});
exports.Middleware = void 0;
exports.branch = branch;
exports.default = void 0;
function _koaCompose() {
const data = _interopRequireDefault(require("koa-compose"));
_koaCompose = function _koaCompose() {
return data;
};
return data;
}
function _utils() {
const data = require("@nocobase/utils");
_utils = function _utils() {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class Middleware {
module.exports = __toCommonJS(middleware_exports);
var import_koa_compose = __toESM(require("koa-compose"));
var import_utils = require("@nocobase/utils");
const _Middleware = class _Middleware {
options;
middlewares = [];
constructor(options) {
this.options = void 0;
this.middlewares = [];
options = (0, _utils().requireModule)(options);
if (typeof options === 'function') {
this.options = {
handler: options
};
options = (0, import_utils.requireModule)(options);
if (typeof options === "function") {
this.options = { handler: options };
} else {

@@ -38,7 +50,7 @@ this.options = options;

getHandler() {
const handler = (0, _utils().requireModule)(this.options.handler);
if (typeof handler !== 'function') {
throw new Error('Handler must be a function!');
const handler = (0, import_utils.requireModule)(this.options.handler);
if (typeof handler !== "function") {
throw new Error("Handler must be a function!");
}
return (ctx, next) => (0, _koaCompose().default)([handler, ...this.middlewares])(ctx, next);
return (ctx, next) => (0, import_koa_compose.default)([handler, ...this.middlewares])(ctx, next);
}

@@ -52,7 +64,3 @@ use(middleware) {

canAccess(name) {
const _this$options = this.options,
_this$options$only = _this$options.only,
only = _this$options$only === void 0 ? [] : _this$options$only,
_this$options$except = _this$options.except,
except = _this$options$except === void 0 ? [] : _this$options$except;
const { only = [], except = [] } = this.options;
if (only.length > 0) {

@@ -73,20 +81,18 @@ return only.includes(name);

}
return middlewares.map(middleware => {
if (middleware instanceof Middleware) {
return middlewares.map((middleware) => {
if (middleware instanceof _Middleware) {
return middleware;
}
if (typeof middleware === 'object') {
return new Middleware(middleware);
if (typeof middleware === "object") {
return new _Middleware(middleware);
}
if (typeof middleware === 'function') {
return new Middleware({
handler: middleware
});
if (typeof middleware === "function") {
return new _Middleware({ handler: middleware });
}
});
}
}
exports.Middleware = Middleware;
var _default = Middleware;
exports.default = _default;
};
__name(_Middleware, "Middleware");
let Middleware = _Middleware;
var middleware_default = Middleware;
function branch(map = {}, reducer, options = {}) {

@@ -104,2 +110,8 @@ return (ctx, next) => {

};
}
}
__name(branch, "branch");
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
Middleware,
branch
});
import Action, { ActionName, ActionType } from './action';
import Middleware, { MiddlewareType } from './middleware';
import Resourcer from './resourcer';
import { Resourcer } from './resourcer';
export type ResourceType = 'single' | 'hasOne' | 'hasMany' | 'belongsTo' | 'belongsToMany';

@@ -5,0 +5,0 @@ export interface ResourceOptions {

@@ -1,58 +0,54 @@

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var resource_exports = {};
__export(resource_exports, {
Resource: () => Resource,
default: () => resource_default
});
exports.default = exports.Resource = void 0;
function _lodash() {
const data = _interopRequireDefault(require("lodash"));
_lodash = function _lodash() {
return data;
};
return data;
}
var _action = _interopRequireDefault(require("./action"));
var _middleware = _interopRequireDefault(require("./middleware"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
class Resource {
module.exports = __toCommonJS(resource_exports);
var import_lodash = __toESM(require("lodash"));
var import_action = __toESM(require("./action"));
var import_middleware = __toESM(require("./middleware"));
const _Resource = class _Resource {
resourcer;
middlewares;
actions = /* @__PURE__ */ new Map();
options;
except;
constructor(options, resourcer) {
this.resourcer = void 0;
this.middlewares = void 0;
this.actions = new Map();
this.options = void 0;
this.except = void 0;
const middleware = options.middleware,
middlewares = options.middlewares,
_options$actions = options.actions,
actions = _options$actions === void 0 ? {} : _options$actions,
_options$only = options.only,
only = _options$only === void 0 ? [] : _options$only,
_options$except = options.except,
except = _options$except === void 0 ? [] : _options$except;
const { middleware, middlewares, actions = {}, only = [], except = [] } = options;
this.options = options;
this.resourcer = resourcer;
this.middlewares = _middleware.default.toInstanceArray(middleware || middlewares);
this.middlewares = import_middleware.default.toInstanceArray(middleware || middlewares);
let excludes = [];
var _iterator = _createForOfIteratorHelper(resourcer.getRegisteredHandlers()),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
const _step$value = _slicedToArray(_step.value, 2),
name = _step$value[0],
handler = _step$value[1];
if (!actions[name]) {
actions[name] = handler;
}
for (const [name, handler] of resourcer.getRegisteredHandlers()) {
if (!actions[name]) {
actions[name] = handler;
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}

@@ -62,6 +58,6 @@ if (except.length > 0) {

} else if (only.length > 0) {
excludes = Object.keys(actions).filter(name => !only.includes(name));
excludes = Object.keys(actions).filter((name) => !only.includes(name));
}
this.except = excludes;
this.actions = _action.default.toInstanceMap(_lodash().default.omit(actions, excludes), this);
this.actions = import_action.default.toInstanceMap(import_lodash.default.omit(actions, excludes), this);
}

@@ -83,5 +79,9 @@ getName() {

}
}
exports.Resource = Resource;
var _default = Resource;
exports.default = _default;
};
__name(_Resource, "Resource");
let Resource = _Resource;
var resource_default = Resource;
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
Resource
});

@@ -1,71 +0,55 @@

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var resourcer_exports = {};
__export(resourcer_exports, {
Resourcer: () => Resourcer,
default: () => resourcer_default
});
exports.default = exports.Resourcer = void 0;
function _utils() {
const data = require("@nocobase/utils");
_utils = function _utils() {
return data;
};
return data;
}
function _glob() {
const data = _interopRequireDefault(require("glob"));
_glob = function _glob() {
return data;
};
return data;
}
function _koaCompose() {
const data = _interopRequireDefault(require("koa-compose"));
_koaCompose = function _koaCompose() {
return data;
};
return data;
}
function _lodash() {
const data = _interopRequireDefault(require("lodash"));
_lodash = function _lodash() {
return data;
};
return data;
}
function _pathToRegexp() {
const data = require("path-to-regexp");
_pathToRegexp = function _pathToRegexp() {
return data;
};
return data;
}
var _resource = _interopRequireDefault(require("./resource"));
var _utils2 = require("./utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
class Resourcer {
module.exports = __toCommonJS(resourcer_exports);
var import_utils = require("@nocobase/utils");
var import_glob = __toESM(require("glob"));
var import_koa_compose = __toESM(require("koa-compose"));
var import_lodash = __toESM(require("lodash"));
var import_path_to_regexp = require("path-to-regexp");
var import_resource = __toESM(require("./resource"));
var import_utils2 = require("./utils");
const _Resourcer = class _Resourcer {
resources = /* @__PURE__ */ new Map();
/**
* 全局定义的 action handlers
*/
handlers = /* @__PURE__ */ new Map();
actionHandlers = /* @__PURE__ */ new Map();
middlewareHandlers = /* @__PURE__ */ new Map();
middlewares;
options;
constructor(options = {}) {
this.resources = new Map();
/**
* 全局定义的 action handlers
*/
this.handlers = new Map();
this.actionHandlers = new Map();
this.middlewareHandlers = new Map();
this.middlewares = void 0;
this.options = void 0;
this.options = options;
this.middlewares = new (_utils().Toposort)();
this.middlewares = new import_utils.Toposort();
}

@@ -82,13 +66,11 @@ /**

import(options) {
const _options$extensions = options.extensions,
extensions = _options$extensions === void 0 ? ['js', 'ts', 'json'] : _options$extensions,
directory = options.directory;
const patten = `${directory}/*.{${extensions.join(',')}}`;
const files = _glob().default.sync(patten, {
ignore: ['**/*.d.ts']
const { extensions = ["js", "ts", "json"], directory } = options;
const patten = `${directory}/*.{${extensions.join(",")}}`;
const files = import_glob.default.sync(patten, {
ignore: ["**/*.d.ts"]
});
const resources = new Map();
files.forEach(file => {
const options = (0, _utils().requireModule)(file);
const table = this.define(typeof options === 'function' ? options(this) : options);
const resources = /* @__PURE__ */ new Map();
files.forEach((file) => {
const options2 = (0, import_utils.requireModule)(file);
const table = this.define(typeof options2 === "function" ? options2(this) : options2);
resources.set(table.getName(), table);

@@ -105,4 +87,4 @@ });

define(options) {
const name = options.name;
const resource = new _resource.default(options, this);
const { name } = options;
const resource = new import_resource.default(options, this);
this.resources.set(name, resource);

@@ -129,6 +111,3 @@ return resource;

registerActionHandlers(handlers) {
for (var _i = 0, _Object$entries = Object.entries(handlers); _i < _Object$entries.length; _i++) {
const _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
name = _Object$entries$_i[0],
handler = _Object$entries$_i[1];
for (const [name, handler] of Object.entries(handlers)) {
this.registerActionHandler(name, handler);

@@ -153,3 +132,2 @@ }

getAction(name, action) {
// 支持注册局部 action
if (this.actionHandlers.has(`${name}:${action}`)) {

@@ -166,60 +144,61 @@ return this.getResource(name).getAction(`${name}:${action}`);

}
restApiMiddleware({
prefix,
accessors
} = {}) {
var _this = this;
return /*#__PURE__*/function () {
var _ref = _asyncToGenerator(function* (ctx, next) {
ctx.resourcer = _this;
let params = (0, _utils2.parseRequest)({
restApiMiddleware({ prefix, accessors } = {}) {
return async (ctx, next) => {
ctx.resourcer = this;
let params = (0, import_utils2.parseRequest)(
{
path: ctx.request.path,
method: ctx.request.method
}, {
prefix: _this.options.prefix || prefix,
accessors: _this.options.accessors || accessors
});
if (!params) {
return next();
},
{
prefix: this.options.prefix || prefix,
accessors: this.options.accessors || accessors
}
try {
const resource = _this.getResource((0, _utils2.getNameByParams)(params));
// 为关系资源时,暂时需要再执行一遍 parseRequest
if (resource.options.type && resource.options.type !== 'single') {
params = (0, _utils2.parseRequest)({
);
if (!params) {
return next();
}
try {
const resource = this.getResource((0, import_utils2.getNameByParams)(params));
if (resource.options.type && resource.options.type !== "single") {
params = (0, import_utils2.parseRequest)(
{
path: ctx.request.path,
method: ctx.request.method,
type: resource.options.type
}, {
prefix: _this.options.prefix || prefix,
accessors: _this.options.accessors || accessors
});
if (!params) {
return next();
},
{
prefix: this.options.prefix || prefix,
accessors: this.options.accessors || accessors
}
);
if (!params) {
return next();
}
// action 需要 clone 之后再赋给 ctx
ctx.action = _this.getAction((0, _utils2.getNameByParams)(params), params.actionName).clone();
ctx.action.setContext(ctx);
ctx.action.actionName = params.actionName;
ctx.action.resourceOf = params.associatedIndex;
ctx.action.resourceName = params.associatedName ? `${params.associatedName}.${params.resourceName}` : params.resourceName;
ctx.action.params.filterByTk = params.resourceIndex;
const query = (0, _utils2.parseQuery)(ctx.request.querystring);
if ((0, _pathToRegexp().pathToRegexp)('/resourcer/{:associatedName.}?:resourceName{\\::actionName}').test(ctx.request.path)) {
ctx.action.mergeParams(_objectSpread(_objectSpread(_objectSpread({}, query), params), ctx.request.body));
} else {
ctx.action.mergeParams(_objectSpread(_objectSpread(_objectSpread({}, query), params), _lodash().default.isEmpty(ctx.request.body) ? {} : {
values: ctx.request.body
}));
}
return (0, _koaCompose().default)(ctx.action.getHandlers())(ctx, next);
} catch (error) {
return next();
}
});
return function (_x2, _x3) {
return _ref.apply(this, arguments);
};
}();
ctx.action = this.getAction((0, import_utils2.getNameByParams)(params), params.actionName).clone();
ctx.action.setContext(ctx);
ctx.action.actionName = params.actionName;
ctx.action.resourceOf = params.associatedIndex;
ctx.action.resourceName = params.associatedName ? `${params.associatedName}.${params.resourceName}` : params.resourceName;
ctx.action.params.filterByTk = params.resourceIndex;
const query = (0, import_utils2.parseQuery)(ctx.request.querystring);
if ((0, import_path_to_regexp.pathToRegexp)("/resourcer/{:associatedName.}?:resourceName{\\::actionName}").test(ctx.request.path)) {
ctx.action.mergeParams({
...query,
...params,
...ctx.request.body
});
} else {
ctx.action.mergeParams({
...query,
...params,
...import_lodash.default.isEmpty(ctx.request.body) ? {} : { values: ctx.request.body }
});
}
return (0, import_koa_compose.default)(ctx.action.getHandlers())(ctx, next);
} catch (error) {
return next();
}
};
}

@@ -236,15 +215,15 @@ middleware(options = {}) {

*/
execute(options, context = {}, next) {
var _this2 = this;
return _asyncToGenerator(function* () {
const resource = options.resource,
action = options.action;
context.resourcer = _this2;
context.action = _this2.getAction(resource, action);
return yield context.action.execute(context, next);
})();
async execute(options, context = {}, next) {
const { resource, action } = options;
context.resourcer = this;
context.action = this.getAction(resource, action);
return await context.action.execute(context, next);
}
}
exports.Resourcer = Resourcer;
var _default = Resourcer;
exports.default = _default;
};
__name(_Resourcer, "Resourcer");
let Resourcer = _Resourcer;
var resourcer_default = Resourcer;
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
Resourcer
});

@@ -1,78 +0,76 @@

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var utils_exports = {};
__export(utils_exports, {
getNameByParams: () => getNameByParams,
mergeFields: () => mergeFields,
parseFields: () => parseFields,
parseQuery: () => parseQuery,
parseRequest: () => parseRequest
});
exports.getNameByParams = getNameByParams;
exports.mergeFields = mergeFields;
exports.parseFields = parseFields;
exports.parseQuery = parseQuery;
exports.parseRequest = parseRequest;
function _lodash() {
const data = _interopRequireDefault(require("lodash"));
_lodash = function _lodash() {
return data;
};
return data;
}
function _pathToRegexp() {
const data = require("path-to-regexp");
_pathToRegexp = function _pathToRegexp() {
return data;
};
return data;
}
function _qs() {
const data = _interopRequireDefault(require("qs"));
_qs = function _qs() {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } // @ts-ignore
module.exports = __toCommonJS(utils_exports);
var import_lodash = __toESM(require("lodash"));
var import_path_to_regexp = require("path-to-regexp");
var import_qs = __toESM(require("qs"));
function getNameByParams(params) {
const resourceName = params.resourceName,
associatedName = params.associatedName;
const { resourceName, associatedName } = params;
return associatedName ? `${associatedName}.${resourceName}` : resourceName;
}
__name(getNameByParams, "getNameByParams");
function parseRequest(request, options = {}) {
const accessors = _objectSpread({
const accessors = {
// 常规 actions
list: 'list',
create: 'create',
get: 'get',
update: 'update',
delete: 'destroy',
list: "list",
create: "create",
get: "get",
update: "update",
delete: "destroy",
// associate 操作
add: 'add',
set: 'set',
remove: 'remove'
}, options.accessors || {});
add: "add",
set: "set",
remove: "remove",
...options.accessors || {}
};
const keys = [];
const regexp = (0, _pathToRegexp().pathToRegexp)('/resourcer/{:associatedName.}?:resourceName{\\::actionName}', keys);
const regexp = (0, import_path_to_regexp.pathToRegexp)("/resourcer/{:associatedName.}?:resourceName{\\::actionName}", keys);
const matches = regexp.exec(request.path);
if (matches) {
const params = {};
const params2 = {};
keys.forEach((obj, index) => {
if (matches[index + 1] === undefined) {
if (matches[index + 1] === void 0) {
return;
}
params[obj.name] = matches[index + 1];
params2[obj.name] = matches[index + 1];
});
return params;
return params2;
}
const defaults = {
single: {
'/:resourceName': {
"/:resourceName": {
get: accessors.list,

@@ -82,3 +80,3 @@ post: accessors.create,

},
'/:resourceName/:resourceIndex': {
"/:resourceName/:resourceIndex": {
get: accessors.get,

@@ -89,3 +87,3 @@ put: accessors.update,

},
'/:associatedName/:associatedIndex/:resourceName': {
"/:associatedName/:associatedIndex/:resourceName": {
get: accessors.list,

@@ -95,3 +93,3 @@ post: accessors.create,

},
'/:associatedName/:associatedIndex/:resourceName/:resourceIndex': {
"/:associatedName/:associatedIndex/:resourceName/:resourceIndex": {
get: accessors.get,

@@ -105,3 +103,3 @@ post: accessors.create,

hasOne: {
'/:associatedName/:associatedIndex/:resourceName': {
"/:associatedName/:associatedIndex/:resourceName": {
get: accessors.get,

@@ -115,3 +113,3 @@ post: accessors.update,

hasMany: {
'/:associatedName/:associatedIndex/:resourceName': {
"/:associatedName/:associatedIndex/:resourceName": {
get: accessors.list,

@@ -121,3 +119,3 @@ post: accessors.create,

},
'/:associatedName/:associatedIndex/:resourceName/:resourceIndex': {
"/:associatedName/:associatedIndex/:resourceName/:resourceIndex": {
get: accessors.get,

@@ -131,7 +129,7 @@ post: accessors.create,

belongsTo: {
'/:associatedName/:associatedIndex/:resourceName': {
"/:associatedName/:associatedIndex/:resourceName": {
get: accessors.get,
delete: accessors.remove
},
'/:associatedName/:associatedIndex/:resourceName/:resourceIndex': {
"/:associatedName/:associatedIndex/:resourceName/:resourceIndex": {
post: accessors.set

@@ -141,11 +139,13 @@ }

belongsToMany: {
'/:associatedName/:associatedIndex/:resourceName': {
"/:associatedName/:associatedIndex/:resourceName": {
get: accessors.list,
post: accessors.set
},
'/:associatedName/:associatedIndex/:resourceName/:resourceIndex': {
"/:associatedName/:associatedIndex/:resourceName/:resourceIndex": {
get: accessors.get,
post: accessors.add,
put: accessors.update,
// Many to Many 的 update 是针对 through
patch: accessors.update,
// Many to Many 的 update 是针对 through
delete: accessors.remove

@@ -155,3 +155,3 @@ }

set: {
'/:associatedName/:associatedIndex/:resourceName': {
"/:associatedName/:associatedIndex/:resourceName": {
get: accessors.list,

@@ -164,22 +164,21 @@ post: accessors.add,

const params = {};
let prefix = (options.prefix || '').trim().replace(/\/$/, '');
if (prefix && !prefix.startsWith('/')) {
let prefix = (options.prefix || "").trim().replace(/\/$/, "");
if (prefix && !prefix.startsWith("/")) {
prefix = `/${prefix}`;
}
const _request$type = request.type,
type = _request$type === void 0 ? 'single' : _request$type;
const { type = "single" } = request;
for (const path in defaults[type]) {
const keys = [];
const regexp = (0, _pathToRegexp().pathToRegexp)(`${prefix}${path}`, keys, {});
const matches = regexp.exec(request.path);
if (!matches) {
const keys2 = [];
const regexp2 = (0, import_path_to_regexp.pathToRegexp)(`${prefix}${path}`, keys2, {});
const matches2 = regexp2.exec(request.path);
if (!matches2) {
continue;
}
keys.forEach((obj, index) => {
if (matches[index + 1] === undefined) {
keys2.forEach((obj, index) => {
if (matches2[index + 1] === void 0) {
return;
}
params[obj.name] = matches[index + 1];
params[obj.name] = matches2[index + 1];
});
params.actionName = _lodash().default.get(defaults, [type, path, request.method.toLowerCase()]);
params.actionName = import_lodash.default.get(defaults, [type, path, request.method.toLowerCase()]);
}

@@ -190,6 +189,3 @@ if (Object.keys(params).length === 0) {

if (params.resourceName) {
const _params$resourceName$ = params.resourceName.split(':'),
_params$resourceName$2 = _slicedToArray(_params$resourceName$, 2),
resourceName = _params$resourceName$2[0],
actionName = _params$resourceName$2[1];
const [resourceName, actionName] = params.resourceName.split(":");
if (actionName) {

@@ -202,5 +198,5 @@ params.resourceName = resourceName;

}
__name(parseRequest, "parseRequest");
function parseQuery(input) {
// 自带 query 处理的不太给力,需要用 qs 转一下
const query = _qs().default.parse(input, {
const query = import_qs.default.parse(input, {
// 原始 query string 中如果一个键连等号“=”都没有可以被认为是 null 类型

@@ -211,4 +207,3 @@ strictNullHandling: true

});
// filter 支持 json string
if (typeof query.filter === 'string') {
if (typeof query.filter === "string") {
query.filter = JSON.parse(query.filter);

@@ -218,2 +213,3 @@ }

}
__name(parseQuery, "parseQuery");
function parseFields(fields) {

@@ -223,4 +219,4 @@ if (!fields) {

}
if (typeof fields === 'string') {
fields = fields.split(',').map(field => field.trim());
if (typeof fields === "string") {
fields = fields.split(",").map((field) => field.trim());
}

@@ -230,8 +226,8 @@ if (Array.isArray(fields)) {

const output = {};
fields.forEach(item => {
if (typeof item === 'string') {
fields.forEach((item) => {
if (typeof item === "string") {
onlyFields.push(item);
} else if (typeof item === 'object') {
} else if (typeof item === "object") {
if (item.only) {
onlyFields.push(...item.only.toString().split(','));
onlyFields.push(...item.only.toString().split(","));
}

@@ -246,13 +242,14 @@ Object.assign(output, parseFields(item));

}
if (fields.only && typeof fields.only === 'string') {
fields.only = fields.only.split(',').map(field => field.trim());
if (fields.only && typeof fields.only === "string") {
fields.only = fields.only.split(",").map((field) => field.trim());
}
if (fields.except && typeof fields.except === 'string') {
fields.except = fields.except.split(',').map(field => field.trim());
if (fields.except && typeof fields.except === "string") {
fields.except = fields.except.split(",").map((field) => field.trim());
}
if (fields.appends && typeof fields.appends === 'string') {
fields.appends = fields.appends.split(',').map(field => field.trim());
if (fields.appends && typeof fields.appends === "string") {
fields.appends = fields.appends.split(",").map((field) => field.trim());
}
return fields;
}
__name(parseFields, "parseFields");
function mergeFields(defaults, inputs) {

@@ -263,31 +260,20 @@ let fields = {};

if (inputs.only) {
// 前端提供 only,后端提供 only
if (defaults.only) {
fields.only = defaults.only.filter(field => inputs.only.includes(field));
}
// 前端提供 only,后端提供 except,输出 only 排除 except
else if (defaults.except) {
fields.only = inputs.only.filter(field => !defaults.except.includes(field));
}
// 前端提供 only,后端没有提供 only 或 except
else {
fields.only = defaults.only.filter((field) => inputs.only.includes(field));
} else if (defaults.except) {
fields.only = inputs.only.filter((field) => !defaults.except.includes(field));
} else {
fields.only = inputs.only;
}
} else if (inputs.except) {
// 前端提供 except,后端提供 only,只输出 only 里排除 except 的字段
if (defaults.only) {
fields.only = defaults.only.filter(field => !inputs.except.includes(field));
fields.only = defaults.only.filter((field) => !inputs.except.includes(field));
} else {
fields.except = import_lodash.default.uniq([...inputs.except, ...defaults.except || []]);
}
// 前端提供 except,后端提供 except 或不提供,合并 except
else {
fields.except = _lodash().default.uniq([...inputs.except, ...(defaults.except || [])]);
}
}
// 前端没提供 only 或 except
else {
} else {
fields = defaults;
}
// 如果前端提供了 appends
if (!_lodash().default.isEmpty(inputs.appends)) {
fields.appends = _lodash().default.uniq([...inputs.appends, ...(defaults.appends || [])]);
if (!import_lodash.default.isEmpty(inputs.appends)) {
fields.appends = import_lodash.default.uniq([...inputs.appends, ...defaults.appends || []]);
}

@@ -298,2 +284,11 @@ if (!fields.appends) {

return fields;
}
}
__name(mergeFields, "mergeFields");
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
getNameByParams,
mergeFields,
parseFields,
parseQuery,
parseRequest
});
{
"name": "@nocobase/resourcer",
"version": "0.13.0-alpha.4",
"version": "0.13.0-alpha.5",
"description": "",

@@ -9,3 +9,3 @@ "main": "./lib/index.js",

"dependencies": {
"@nocobase/utils": "0.13.0-alpha.4",
"@nocobase/utils": "0.13.0-alpha.5",
"deepmerge": "^4.2.2",

@@ -22,3 +22,3 @@ "koa-compose": "^4.1.0",

},
"gitHead": "29594e9dbb2455e2f3f6bea95340c4ed75789b61"
"gitHead": "9eabe607b4a20c356fdb2fd95e40fa476986dcb0"
}
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