@nocobase/server 0.5.0-alpha.32 → 0.5.0-alpha.36

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.
@@ -81,14 +81,14 @@ class Application extends koa_1.default {
81
81
  constructor(options) {
82
82
  super();
83
83
  this.plugins = new Map();
84
- this.db = helper_1.createDatabase(options);
85
- this.resourcer = helper_1.createResourcer(options);
86
- this.cli = helper_1.createCli(this, options);
87
- this.i18n = helper_1.createI18n(options);
88
- helper_1.registerMiddlewares(this, options);
84
+ this.db = (0, helper_1.createDatabase)(options);
85
+ this.resourcer = (0, helper_1.createResourcer)(options);
86
+ this.cli = (0, helper_1.createCli)(this, options);
87
+ this.i18n = (0, helper_1.createI18n)(options);
88
+ (0, helper_1.registerMiddlewares)(this, options);
89
89
 
90
90
  if (options.registerActions !== false) {
91
- actions_1.registerActions(this);
91
+ (0, actions_1.registerActions)(this);
92
92
  }
93
93
  }
94
94
 
@@ -1 +1 @@
1
- {"version":3,"sources":["application.ts"],"names":[],"mappings":"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","file":"application.js","sourcesContent":["import Koa from 'koa';\nimport { Command, CommandOptions } from 'commander';\nimport Database, { DatabaseOptions, TableOptions } from '@nocobase/database';\nimport Resourcer, { ResourceOptions } from '@nocobase/resourcer';\nimport { PluginType, Plugin, PluginOptions } from './plugin';\nimport { registerActions } from '@nocobase/actions';\nimport {\n createCli,\n createI18n,\n createDatabase,\n createResourcer,\n registerMiddlewares,\n} from './helper';\nimport { i18n, InitOptions } from 'i18next';\n\nexport interface ResourcerOptions {\n prefix?: string;\n}\n\nexport interface ApplicationOptions {\n database?: DatabaseOptions;\n resourcer?: ResourcerOptions;\n bodyParser?: any;\n cors?: any;\n dataWrapping?: boolean;\n registerActions?: boolean;\n i18n?: i18n | InitOptions;\n}\n\ninterface DefaultState {\n currentUser?: any;\n [key: string]: any;\n}\n\ninterface DefaultContext {\n db: Database;\n resourcer: Resourcer;\n [key: string]: any;\n}\n\ninterface MiddlewareOptions {\n name?: string;\n resourceName?: string;\n resourceNames?: string[];\n insertBefore?: string;\n insertAfter?: string;\n}\n\ninterface ActionsOptions {\n resourceName?: string;\n resourceNames?: string[];\n}\n\nexport class Application<\n StateT = DefaultState,\n ContextT = DefaultContext\n> extends Koa {\n public readonly db: Database;\n\n public readonly resourcer: Resourcer;\n\n public readonly cli: Command;\n\n public readonly i18n: i18n;\n\n protected plugins = new Map<string, Plugin>();\n\n constructor(options: ApplicationOptions) {\n super();\n\n this.db = createDatabase(options);\n this.resourcer = createResourcer(options);\n this.cli = createCli(this, options);\n this.i18n = createI18n(options);\n\n registerMiddlewares(this, options);\n if (options.registerActions !== false) {\n registerActions(this);\n }\n }\n\n use<NewStateT = {}, NewContextT = {}>(\n middleware: Koa.Middleware<StateT & NewStateT, ContextT & NewContextT>,\n options?: MiddlewareOptions,\n ) {\n // @ts-ignore\n return super.use(middleware);\n }\n\n collection(options: TableOptions) {\n return this.db.table(options);\n }\n\n resource(options: ResourceOptions) {\n return this.resourcer.define(options);\n }\n\n actions(handlers: any, options?: ActionsOptions) {\n return this.resourcer.registerActions(handlers);\n }\n\n command(nameAndArgs: string, opts?: CommandOptions) {\n return this.cli.command(nameAndArgs, opts);\n }\n\n findCommand(name: string): Command {\n return (this.cli as any)._findCommand(name);\n }\n\n plugin(options?: PluginType | PluginOptions, ext?: PluginOptions): Plugin {\n if (typeof options === 'string') {\n return this.plugin(require(options).default, ext);\n }\n let instance: Plugin;\n if (typeof options === 'function') {\n try {\n // @ts-ignore\n instance = new options({\n name: options.name,\n ...ext,\n app: this,\n });\n if (!(instance instanceof Plugin)) {\n throw new Error('plugin must be instanceof Plugin');\n }\n } catch (err) {\n // console.log(err);\n instance = new Plugin({\n name: options.name,\n ...ext,\n // @ts-ignore\n load: options,\n app: this,\n });\n }\n } else if (typeof options === 'object') {\n const plugin = options.plugin || Plugin;\n instance = new plugin({\n name: options.plugin ? plugin.name : undefined,\n ...options,\n ...ext,\n app: this,\n });\n }\n const name = instance.getName();\n if (this.plugins.has(name)) {\n throw new Error(`plugin name [${name}] is repeated`);\n }\n this.plugins.set(name, instance);\n return instance;\n }\n\n async load() {\n await this.emitAsync('plugins.beforeLoad');\n for (const [name, plugin] of this.plugins) {\n await this.emitAsync(`plugins.${name}.beforeLoad`);\n await plugin.load();\n await this.emitAsync(`plugins.${name}.afterLoad`);\n }\n await this.emitAsync('plugins.afterLoad');\n }\n\n async emitAsync(event: string | symbol, ...args: any[]): Promise<boolean> {\n // @ts-ignore\n const events = this._events;\n let callbacks = events[event];\n if (!callbacks) {\n return false;\n }\n // helper function to reuse as much code as possible\n const run = (cb) => {\n switch (args.length) {\n // fast cases\n case 0:\n cb = cb.call(this);\n break;\n case 1:\n cb = cb.call(this, args[0]);\n break;\n case 2:\n cb = cb.call(this, args[0], args[1]);\n break;\n case 3:\n cb = cb.call(this, args[0], args[1], args[2]);\n break;\n // slower\n default:\n cb = cb.apply(this, args);\n }\n\n if (cb && (cb instanceof Promise || typeof cb.then === 'function')) {\n return cb;\n }\n\n return Promise.resolve(true);\n };\n\n if (typeof callbacks === 'function') {\n await run(callbacks);\n } else if (typeof callbacks === 'object') {\n callbacks = callbacks.slice().filter(Boolean);\n await callbacks.reduce((prev, next) => {\n return prev.then((res) => {\n return run(next).then((result) =>\n Promise.resolve(res.concat(result)),\n );\n });\n }, Promise.resolve([]));\n }\n\n return true;\n }\n\n async parse(argv = process.argv) {\n await this.load();\n return this.cli.parseAsync(argv);\n }\n\n async destroy() {\n await this.db.close();\n }\n}\n\nexport default Application;\n"]}
1
+ {"version":3,"sources":["application.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,8CAAsB;AAItB,qCAA6D;AAC7D,+CAAoD;AACpD,qCAMkB;AAyClB,MAAa,WAGX,SAAQ,aAAG;IAWX,YAAY,OAA2B;QACrC,KAAK,EAAE,CAAC;QAHA,YAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QAK5C,IAAI,CAAC,EAAE,GAAG,IAAA,uBAAc,EAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,IAAA,wBAAe,EAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,GAAG,IAAA,kBAAS,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,IAAA,mBAAU,EAAC,OAAO,CAAC,CAAC;QAEhC,IAAA,4BAAmB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,OAAO,CAAC,eAAe,KAAK,KAAK,EAAE;YACrC,IAAA,yBAAe,EAAC,IAAI,CAAC,CAAC;SACvB;IACH,CAAC;IAED,GAAG,CACD,UAAsE,EACtE,OAA2B;QAG3B,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IAED,UAAU,CAAC,OAAqB;QAC9B,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,QAAQ,CAAC,OAAwB;QAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,CAAC,QAAa,EAAE,OAAwB;QAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,CAAC,WAAmB,EAAE,IAAqB;QAChD,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,OAAQ,IAAI,CAAC,GAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,OAAoC,EAAE,GAAmB;QAC9D,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;SACnD;QACD,IAAI,QAAgB,CAAC;QACrB,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;YACjC,IAAI;gBAEF,QAAQ,GAAG,IAAI,OAAO,+BACpB,IAAI,EAAE,OAAO,CAAC,IAAI,IACf,GAAG,KACN,GAAG,EAAE,IAAI,IACT,CAAC;gBACH,IAAI,CAAC,CAAC,QAAQ,YAAY,eAAM,CAAC,EAAE;oBACjC,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;iBACrD;aACF;YAAC,OAAO,GAAG,EAAE;gBAEZ,QAAQ,GAAG,IAAI,eAAM,+BACnB,IAAI,EAAE,OAAO,CAAC,IAAI,IACf,GAAG,KAEN,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,IAAI,IACT,CAAC;aACJ;SACF;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YACtC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,eAAM,CAAC;YACxC,QAAQ,GAAG,IAAI,MAAM,6CACnB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,IAC3C,OAAO,GACP,GAAG,KACN,GAAG,EAAE,IAAI,IACT,CAAC;SACJ;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,eAAe,CAAC,CAAC;SACtD;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACjC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEK,IAAI;;YACR,MAAM,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;YAC3C,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;gBACzC,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,aAAa,CAAC,CAAC;gBACnD,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,YAAY,CAAC,CAAC;aACnD;YACD,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC5C,CAAC;KAAA;IAEK,SAAS,CAAC,KAAsB,EAAE,GAAG,IAAW;;YAEpD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAC5B,IAAI,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE;gBACd,OAAO,KAAK,CAAC;aACd;YAED,MAAM,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE;gBACjB,QAAQ,IAAI,CAAC,MAAM,EAAE;oBAEnB,KAAK,CAAC;wBACJ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACnB,MAAM;oBACR,KAAK,CAAC;wBACJ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC5B,MAAM;oBACR,KAAK,CAAC;wBACJ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;wBACrC,MAAM;oBACR,KAAK,CAAC;wBACJ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC9C,MAAM;oBAER;wBACE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;iBAC7B;gBAED,IAAI,EAAE,IAAI,CAAC,EAAE,YAAY,OAAO,IAAI,OAAO,EAAE,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE;oBAClE,OAAO,EAAE,CAAC;iBACX;gBAED,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC,CAAC;YAEF,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;gBACnC,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC;aACtB;iBAAM,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;gBACxC,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC9C,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;oBACpC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;wBACvB,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAC/B,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CACpC,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACL,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;aACzB;YAED,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAEK,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;;YAC7B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;KAAA;IAEK,OAAO;;YACX,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;KAAA;CACF;AAxKD,kCAwKC;AAED,kBAAe,WAAW,CAAC","file":"application.js","sourcesContent":["import Koa from 'koa';\nimport { Command, CommandOptions } from 'commander';\nimport Database, { DatabaseOptions, TableOptions } from '@nocobase/database';\nimport Resourcer, { ResourceOptions } from '@nocobase/resourcer';\nimport { PluginType, Plugin, PluginOptions } from './plugin';\nimport { registerActions } from '@nocobase/actions';\nimport {\n createCli,\n createI18n,\n createDatabase,\n createResourcer,\n registerMiddlewares,\n} from './helper';\nimport { i18n, InitOptions } from 'i18next';\n\nexport interface ResourcerOptions {\n prefix?: string;\n}\n\nexport interface ApplicationOptions {\n database?: DatabaseOptions;\n resourcer?: ResourcerOptions;\n bodyParser?: any;\n cors?: any;\n dataWrapping?: boolean;\n registerActions?: boolean;\n i18n?: i18n | InitOptions;\n}\n\ninterface DefaultState {\n currentUser?: any;\n [key: string]: any;\n}\n\ninterface DefaultContext {\n db: Database;\n resourcer: Resourcer;\n [key: string]: any;\n}\n\ninterface MiddlewareOptions {\n name?: string;\n resourceName?: string;\n resourceNames?: string[];\n insertBefore?: string;\n insertAfter?: string;\n}\n\ninterface ActionsOptions {\n resourceName?: string;\n resourceNames?: string[];\n}\n\nexport class Application<\n StateT = DefaultState,\n ContextT = DefaultContext\n> extends Koa {\n public readonly db: Database;\n\n public readonly resourcer: Resourcer;\n\n public readonly cli: Command;\n\n public readonly i18n: i18n;\n\n protected plugins = new Map<string, Plugin>();\n\n constructor(options: ApplicationOptions) {\n super();\n\n this.db = createDatabase(options);\n this.resourcer = createResourcer(options);\n this.cli = createCli(this, options);\n this.i18n = createI18n(options);\n\n registerMiddlewares(this, options);\n if (options.registerActions !== false) {\n registerActions(this);\n }\n }\n\n use<NewStateT = {}, NewContextT = {}>(\n middleware: Koa.Middleware<StateT & NewStateT, ContextT & NewContextT>,\n options?: MiddlewareOptions,\n ) {\n // @ts-ignore\n return super.use(middleware);\n }\n\n collection(options: TableOptions) {\n return this.db.table(options);\n }\n\n resource(options: ResourceOptions) {\n return this.resourcer.define(options);\n }\n\n actions(handlers: any, options?: ActionsOptions) {\n return this.resourcer.registerActions(handlers);\n }\n\n command(nameAndArgs: string, opts?: CommandOptions) {\n return this.cli.command(nameAndArgs, opts);\n }\n\n findCommand(name: string): Command {\n return (this.cli as any)._findCommand(name);\n }\n\n plugin(options?: PluginType | PluginOptions, ext?: PluginOptions): Plugin {\n if (typeof options === 'string') {\n return this.plugin(require(options).default, ext);\n }\n let instance: Plugin;\n if (typeof options === 'function') {\n try {\n // @ts-ignore\n instance = new options({\n name: options.name,\n ...ext,\n app: this,\n });\n if (!(instance instanceof Plugin)) {\n throw new Error('plugin must be instanceof Plugin');\n }\n } catch (err) {\n // console.log(err);\n instance = new Plugin({\n name: options.name,\n ...ext,\n // @ts-ignore\n load: options,\n app: this,\n });\n }\n } else if (typeof options === 'object') {\n const plugin = options.plugin || Plugin;\n instance = new plugin({\n name: options.plugin ? plugin.name : undefined,\n ...options,\n ...ext,\n app: this,\n });\n }\n const name = instance.getName();\n if (this.plugins.has(name)) {\n throw new Error(`plugin name [${name}] is repeated`);\n }\n this.plugins.set(name, instance);\n return instance;\n }\n\n async load() {\n await this.emitAsync('plugins.beforeLoad');\n for (const [name, plugin] of this.plugins) {\n await this.emitAsync(`plugins.${name}.beforeLoad`);\n await plugin.load();\n await this.emitAsync(`plugins.${name}.afterLoad`);\n }\n await this.emitAsync('plugins.afterLoad');\n }\n\n async emitAsync(event: string | symbol, ...args: any[]): Promise<boolean> {\n // @ts-ignore\n const events = this._events;\n let callbacks = events[event];\n if (!callbacks) {\n return false;\n }\n // helper function to reuse as much code as possible\n const run = (cb) => {\n switch (args.length) {\n // fast cases\n case 0:\n cb = cb.call(this);\n break;\n case 1:\n cb = cb.call(this, args[0]);\n break;\n case 2:\n cb = cb.call(this, args[0], args[1]);\n break;\n case 3:\n cb = cb.call(this, args[0], args[1], args[2]);\n break;\n // slower\n default:\n cb = cb.apply(this, args);\n }\n\n if (cb && (cb instanceof Promise || typeof cb.then === 'function')) {\n return cb;\n }\n\n return Promise.resolve(true);\n };\n\n if (typeof callbacks === 'function') {\n await run(callbacks);\n } else if (typeof callbacks === 'object') {\n callbacks = callbacks.slice().filter(Boolean);\n await callbacks.reduce((prev, next) => {\n return prev.then((res) => {\n return run(next).then((result) =>\n Promise.resolve(res.concat(result)),\n );\n });\n }, Promise.resolve([]));\n }\n\n return true;\n }\n\n async parse(argv = process.argv) {\n await this.load();\n return this.cli.parseAsync(argv);\n }\n\n async destroy() {\n await this.db.close();\n }\n}\n\nexport default Application;\n"]}
package/lib/helper.js CHANGED
@@ -169,10 +169,10 @@ exports.createCli = createCli;
169
169
 
170
170
  function registerMiddlewares(app, options) {
171
171
  if (options.bodyParser !== false) {
172
- app.use(koa_bodyparser_1.default(Object.assign({}, options.bodyParser)));
172
+ app.use((0, koa_bodyparser_1.default)(Object.assign({}, options.bodyParser)));
173
173
  }
174
174
 
175
- app.use(cors_1.default(Object.assign({
175
+ app.use((0, cors_1.default)(Object.assign({
176
176
  exposeHeaders: ['content-disposition']
177
177
  }, options.cors)));
178
178
  app.use((ctx, next) => __awaiter(this, void 0, void 0, function* () {
@@ -193,10 +193,10 @@ function registerMiddlewares(app, options) {
193
193
  }));
194
194
 
195
195
  if (options.dataWrapping !== false) {
196
- app.use(data_wrapping_1.dataWrapping());
196
+ app.use((0, data_wrapping_1.dataWrapping)());
197
197
  }
198
198
 
199
- app.use(table2resource_1.table2resource());
199
+ app.use((0, table2resource_1.table2resource)());
200
200
  app.use(app.resourcer.restApiMiddleware());
201
201
  }
202
202
 
package/lib/helper.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["helper.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,oEAAwC;AACxC,qDAA6B;AAC7B,kEAA0C;AAC1C,oEAA4C;AAC5C,yCAAoC;AAEpC,+DAA2D;AAC3D,iEAA8D;AAC9D,sDAA8B;AAE9B,SAAgB,cAAc,CAAC,OAA2B;IACxD,IAAI,OAAO,CAAC,QAAQ,YAAY,kBAAQ,EAAE;QACxC,OAAO,OAAO,CAAC,QAAQ,CAAC;KACzB;SAAM;QACL,OAAO,IAAI,kBAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KACvC;AACH,CAAC;AAND,wCAMC;AAED,SAAgB,eAAe,CAAC,OAA2B;IACzD,OAAO,IAAI,mBAAS,mBAAM,OAAO,CAAC,SAAS,EAAG,CAAC;AACjD,CAAC;AAFD,0CAEC;AAED,SAAgB,UAAU,CAAC,OAA2B;IACpD,MAAM,QAAQ,GAAG,iBAAO,CAAC,cAAc,EAAE,CAAC;IAC1C,QAAQ,CAAC,IAAI,iBACX,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,EAAE,IACV,OAAO,CAAC,IAAI,EACf,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC;AARD,gCAQC;AAED,SAAgB,SAAS,CAAC,GAAgB,EAAE,OAA2B;IACrE,MAAM,GAAG,GAAG,IAAI,mBAAO,EAAE,CAAC;IAE1B,GAAG;SACA,OAAO,CAAC,SAAS,CAAC;SAClB,MAAM,CAAC,aAAa,CAAC;SACrB,MAAM,CAAC,CAAO,GAAG,IAAI,EAAE,EAAE;;QACxB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,KAAK,SAAG,GAAG,CAAC,IAAI,EAAE,0CAAE,KAAK,CAAC;QAChC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CACf,KAAK;YACH,CAAC,CAAC;gBACE,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE;oBACL,IAAI,EAAE,IAAI;iBACX;aACF;YACH,CAAC,CAAC,EAAE,CACP,CAAC;QACF,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC,CAAA,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACf,MAAM,CAAC,aAAa,CAAC;SACrB,MAAM,CAAC,CAAO,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE;QAC9B,IAAI,EAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAA,EAAE;YAChB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,aAAa,EAAE,CAAC;YAC1E,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;gBAClC,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;gBAC5E,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,IAAI,OAAO,GAAG,4BAA4B,CAAA;gBAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,IAAE,EAAE,CAAC,EAAE;oBACnD,OAAO,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;iBAChE;gBACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACrB,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO;aACR;SACF;QACD,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC;YAChB,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QACH,MAAM,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;QAC9C,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC,CAAA,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,OAAO,CAAC;SAChB,MAAM,CAAC,mBAAmB,CAAC;SAC3B,MAAM,CAAC,CAAO,GAAG,IAAI,EAAE,EAAE;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,MAAM,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACnC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC;IACxD,CAAC,CAAA,CAAC,CAAC;IACL,OAAO,GAAG,CAAC;AACb,CAAC;AA3DD,8BA2DC;AAED,SAAgB,mBAAmB,CACjC,GAAgB,EAChB,OAA2B;IAE3B,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE;QAChC,GAAG,CAAC,GAAG,CACL,wBAAU,mBACL,OAAO,CAAC,UAAU,EACrB,CACH,CAAC;KACH;IAED,GAAG,CAAC,GAAG,CACL,cAAI,iBACF,aAAa,EAAE,CAAC,qBAAqB,CAAC,IACnC,OAAO,CAAC,IAAI,EACf,CACH,CAAC;IAEF,GAAG,CAAC,GAAG,CAA+B,CAAO,GAAG,EAAE,IAAI,EAAE,EAAE;QACxD,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;QAChB,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAA;QAC7D,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAChB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAgB,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,CAAC;QACjF,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,EAAE;YACtB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;SAC1B;QACD,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAA,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK,EAAE;QAClC,GAAG,CAAC,GAAG,CAAC,4BAAY,EAAE,CAAC,CAAC;KACzB;IAED,GAAG,CAAC,GAAG,CAAC,+BAAc,EAAE,CAAC,CAAC;IAC1B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAC7C,CAAC;AAtCD,kDAsCC","file":"helper.js","sourcesContent":["import { DefaultContext, DefaultState } from 'koa';\nimport bodyParser from 'koa-bodyparser';\nimport cors from '@koa/cors';\nimport Database from '@nocobase/database';\nimport Resourcer from '@nocobase/resourcer';\nimport { Command } from 'commander';\nimport Application, { ApplicationOptions } from './application';\nimport { dataWrapping } from './middlewares/data-wrapping';\nimport { table2resource } from './middlewares/table2resource';\nimport i18next from 'i18next';\n\nexport function createDatabase(options: ApplicationOptions) {\n if (options.database instanceof Database) {\n return options.database;\n } else {\n return new Database(options.database);\n }\n}\n\nexport function createResourcer(options: ApplicationOptions) {\n return new Resourcer({ ...options.resourcer });\n}\n\nexport function createI18n(options: ApplicationOptions) {\n const instance = i18next.createInstance();\n instance.init({\n lng: 'en-US',\n resources: {},\n ...options.i18n,\n });\n return instance;\n}\n\nexport function createCli(app: Application, options: ApplicationOptions) {\n const cli = new Command();\n\n cli\n .command('db:sync')\n .option('-f, --force')\n .action(async (...args) => {\n console.log('db sync...');\n const cli = args.pop();\n const force = cli.opts()?.force;\n await app.db.sync(\n force\n ? {\n force: true,\n alter: {\n drop: true,\n },\n }\n : {},\n );\n await app.destroy();\n });\n\n cli\n .command('init')\n .option('-f, --force')\n .action(async (opts, ...args) => {\n if (!opts?.force) {\n const tables = await app.db.sequelize.getQueryInterface().showAllTables();\n if (tables.includes('collections')) {\n console.log('NocoBase is already installed. To reinstall, please execute:');\n console.log();\n let command = 'yarn nocobase init --force'\n for (const [key, value] of Object.entries(opts||{})) {\n command += value === true ? ` --${key}` : ` --${key}=${value}`;\n }\n console.log(command);\n console.log();\n return;\n }\n }\n await app.db.sync({\n force: true,\n });\n await app.emitAsync('db.init', opts, ...args);\n await app.destroy();\n });\n\n cli\n .command('start')\n .option('-p, --port [port]')\n .action(async (...args) => {\n const cli = args.pop();\n const opts = cli.opts();\n await app.emitAsync('beforeStart');\n app.listen(opts.port || 3000);\n console.log(`http://localhost:${opts.port || 3000}/`);\n });\n return cli;\n}\n\nexport function registerMiddlewares(\n app: Application,\n options: ApplicationOptions,\n) {\n if (options.bodyParser !== false) {\n app.use(\n bodyParser({\n ...options.bodyParser,\n }),\n );\n }\n\n app.use(\n cors({\n exposeHeaders: ['content-disposition'],\n ...options.cors,\n }),\n );\n\n app.use<DefaultState, DefaultContext>(async (ctx, next) => {\n ctx.db = app.db;\n ctx.resourcer = app.resourcer;\n const i18n = app.i18n.cloneInstance({ initImmediate: false })\n ctx.i18n = i18n;\n ctx.t = i18n.t.bind(i18n);\n const lng = ctx.request.query.locale as string || ctx.acceptsLanguages().shift();\n if (lng !== '*' && lng) {\n i18n.changeLanguage(lng);\n }\n await next();\n });\n\n if (options.dataWrapping !== false) {\n app.use(dataWrapping());\n }\n\n app.use(table2resource());\n app.use(app.resourcer.restApiMiddleware());\n}\n"]}
1
+ {"version":3,"sources":["helper.ts"],"names":[],"mappings":"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","file":"helper.js","sourcesContent":["import { DefaultContext, DefaultState } from 'koa';\nimport bodyParser from 'koa-bodyparser';\nimport cors from '@koa/cors';\nimport Database from '@nocobase/database';\nimport Resourcer from '@nocobase/resourcer';\nimport { Command } from 'commander';\nimport Application, { ApplicationOptions } from './application';\nimport { dataWrapping } from './middlewares/data-wrapping';\nimport { table2resource } from './middlewares/table2resource';\nimport i18next from 'i18next';\n\nexport function createDatabase(options: ApplicationOptions) {\n if (options.database instanceof Database) {\n return options.database;\n } else {\n return new Database(options.database);\n }\n}\n\nexport function createResourcer(options: ApplicationOptions) {\n return new Resourcer({ ...options.resourcer });\n}\n\nexport function createI18n(options: ApplicationOptions) {\n const instance = i18next.createInstance();\n instance.init({\n lng: 'en-US',\n resources: {},\n ...options.i18n,\n });\n return instance;\n}\n\nexport function createCli(app: Application, options: ApplicationOptions) {\n const cli = new Command();\n\n cli\n .command('db:sync')\n .option('-f, --force')\n .action(async (...args) => {\n console.log('db sync...');\n const cli = args.pop();\n const force = cli.opts()?.force;\n await app.db.sync(\n force\n ? {\n force: true,\n alter: {\n drop: true,\n },\n }\n : {},\n );\n await app.destroy();\n });\n\n cli\n .command('init')\n .option('-f, --force')\n .action(async (opts, ...args) => {\n if (!opts?.force) {\n const tables = await app.db.sequelize.getQueryInterface().showAllTables();\n if (tables.includes('collections')) {\n console.log('NocoBase is already installed. To reinstall, please execute:');\n console.log();\n let command = 'yarn nocobase init --force'\n for (const [key, value] of Object.entries(opts||{})) {\n command += value === true ? ` --${key}` : ` --${key}=${value}`;\n }\n console.log(command);\n console.log();\n return;\n }\n }\n await app.db.sync({\n force: true,\n });\n await app.emitAsync('db.init', opts, ...args);\n await app.destroy();\n });\n\n cli\n .command('start')\n .option('-p, --port [port]')\n .action(async (...args) => {\n const cli = args.pop();\n const opts = cli.opts();\n await app.emitAsync('beforeStart');\n app.listen(opts.port || 3000);\n console.log(`http://localhost:${opts.port || 3000}/`);\n });\n return cli;\n}\n\nexport function registerMiddlewares(\n app: Application,\n options: ApplicationOptions,\n) {\n if (options.bodyParser !== false) {\n app.use(\n bodyParser({\n ...options.bodyParser,\n }),\n );\n }\n\n app.use(\n cors({\n exposeHeaders: ['content-disposition'],\n ...options.cors,\n }),\n );\n\n app.use<DefaultState, DefaultContext>(async (ctx, next) => {\n ctx.db = app.db;\n ctx.resourcer = app.resourcer;\n const i18n = app.i18n.cloneInstance({ initImmediate: false })\n ctx.i18n = i18n;\n ctx.t = i18n.t.bind(i18n);\n const lng = ctx.request.query.locale as string || ctx.acceptsLanguages().shift();\n if (lng !== '*' && lng) {\n i18n.changeLanguage(lng);\n }\n await next();\n });\n\n if (options.dataWrapping !== false) {\n app.use(dataWrapping());\n }\n\n app.use(table2resource());\n app.use(app.resourcer.restApiMiddleware());\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["middlewares/data-wrapping.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA,SAAgB,YAAY;IAC1B,OAAO,SAAe,YAAY,CAAC,GAAY,EAAE,IAAU;;;YACzD,MAAM,IAAI,EAAE,CAAC;YACb,IAAI,GAAG,CAAC,mBAAmB,EAAE;gBAC3B,OAAO;aACR;YACD,IAAI,QAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,0CAAE,MAAM,CAAA,EAAE;gBACxB,OAAO;aACR;YACD,IAAI,GAAG,CAAC,IAAI,YAAY,MAAM,EAAE;gBAC9B,OAAO;aACR;YACD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;gBACb,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;aACf;YACD,MAAM,KAAoB,GAAG,CAAC,IAAI,EAA5B,EAAE,IAAI,OAAsB,EAAjB,IAAI,cAAf,QAAiB,CAAW,CAAC;YACnC,IAAI,IAAI,EAAE;gBACR,GAAG,CAAC,IAAI,GAAG;oBACT,IAAI,EAAE,IAAI;oBACV,IAAI;iBACL,CAAC;aACH;iBAAM;gBACL,GAAG,CAAC,IAAI,GAAG;oBACT,IAAI,EAAE,GAAG,CAAC,IAAI;iBACf,CAAC;aACH;;KACF,CAAA;AACH,CAAC;AA3BD,oCA2BC;AAED,kBAAe,YAAY,CAAC","file":"data-wrapping.js","sourcesContent":["import { Context, Next } from '@nocobase/actions';\n\nexport function dataWrapping() {\n return async function dataWrapping(ctx: Context, next: Next) {\n await next();\n if (ctx.withoutDataWrapping) {\n return;\n }\n if (!ctx?.action?.params) {\n return;\n }\n if (ctx.body instanceof Buffer) {\n return;\n }\n if (!ctx.body) {\n ctx.body = {};\n }\n const { rows, ...meta } = ctx.body;\n if (rows) {\n ctx.body = {\n data: rows,\n meta,\n };\n } else {\n ctx.body = {\n data: ctx.body,\n };\n }\n }\n}\n\nexport default dataWrapping;\n"]}
1
+ {"version":3,"sources":["middlewares/data-wrapping.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA,SAAgB,YAAY;IAC1B,OAAO,SAAe,YAAY,CAAC,GAAY,EAAE,IAAU;;;YACzD,MAAM,IAAI,EAAE,CAAC;YACb,IAAI,GAAG,CAAC,mBAAmB,EAAE;gBAC3B,OAAO;aACR;YACD,IAAI,CAAC,CAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,0CAAE,MAAM,CAAA,EAAE;gBACxB,OAAO;aACR;YACD,IAAI,GAAG,CAAC,IAAI,YAAY,MAAM,EAAE;gBAC9B,OAAO;aACR;YACD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;gBACb,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;aACf;YACD,MAAM,KAAoB,GAAG,CAAC,IAAI,EAA5B,EAAE,IAAI,OAAsB,EAAjB,IAAI,cAAf,QAAiB,CAAW,CAAC;YACnC,IAAI,IAAI,EAAE;gBACR,GAAG,CAAC,IAAI,GAAG;oBACT,IAAI,EAAE,IAAI;oBACV,IAAI;iBACL,CAAC;aACH;iBAAM;gBACL,GAAG,CAAC,IAAI,GAAG;oBACT,IAAI,EAAE,GAAG,CAAC,IAAI;iBACf,CAAC;aACH;;KACF,CAAA;AACH,CAAC;AA3BD,oCA2BC;AAED,kBAAe,YAAY,CAAC","file":"data-wrapping.js","sourcesContent":["import { Context, Next } from '@nocobase/actions';\n\nexport function dataWrapping() {\n return async function dataWrapping(ctx: Context, next: Next) {\n await next();\n if (ctx.withoutDataWrapping) {\n return;\n }\n if (!ctx?.action?.params) {\n return;\n }\n if (ctx.body instanceof Buffer) {\n return;\n }\n if (!ctx.body) {\n ctx.body = {};\n }\n const { rows, ...meta } = ctx.body;\n if (rows) {\n ctx.body = {\n data: rows,\n meta,\n };\n } else {\n ctx.body = {\n data: ctx.body,\n };\n }\n }\n}\n\nexport default dataWrapping;\n"]}
@@ -70,7 +70,7 @@ function table2resource() {
70
70
  return __awaiter(this, void 0, void 0, function* () {
71
71
  const resourcer = ctx.resourcer;
72
72
  const database = ctx.db;
73
- let params = resourcer_1.parseRequest({
73
+ let params = (0, resourcer_1.parseRequest)({
74
74
  path: ctx.request.path,
75
75
  method: ctx.request.method
76
76
  }, {
@@ -82,7 +82,7 @@ function table2resource() {
82
82
  return next();
83
83
  }
84
84
 
85
- const resourceName = resourcer_1.getNameByParams(params);
85
+ const resourceName = (0, resourcer_1.getNameByParams)(params);
86
86
 
87
87
  if (resourcer.isDefined(resourceName)) {
88
88
  return next();
@@ -1 +1 @@
1
- {"version":3,"sources":["middlewares/table2resource.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAK6B;AAC7B,iDAA+E;AAE/E,SAAgB,cAAc;IAC5B,OAAO,SAAe,cAAc,CAClC,GAAqB,EACrB,IAAwB;;YAExB,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;YAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,MAAM,GAAG,wBAAY,CACvB;gBACE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;gBACtB,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM;aAC3B,EACD;gBACE,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM;gBAChC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS;aACvC,CACF,CAAC;YACF,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO,IAAI,EAAE,CAAC;aACf;YACD,MAAM,YAAY,GAAG,2BAAe,CAAC,MAAM,CAAC,CAAC;YAE7C,IAAI,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;gBACrC,OAAO,IAAI,EAAE,CAAC;aACf;YACD,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAEvD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;gBAClC,OAAO,IAAI,EAAE,CAAC;aACf;YACD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAI5B,CAAC;YACX,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE;gBACvB,IAAI,YAAY,GAAiB,QAAQ,CAAC;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,IAAI,KAAK,EAAE;oBACT,IAAI,KAAK,YAAY,iBAAM,EAAE;wBAC3B,YAAY,GAAG,QAAQ,CAAC;qBACzB;yBAAM,IAAI,KAAK,YAAY,kBAAO,EAAE;wBACnC,YAAY,GAAG,SAAS,CAAC;qBAC1B;yBAAM,IAAI,KAAK,YAAY,oBAAS,EAAE;wBACrC,YAAY,GAAG,WAAW,CAAC;qBAC5B;yBAAM,IAAI,KAAK,YAAY,wBAAa,EAAE;wBACzC,YAAY,GAAG,eAAe,CAAC;qBAChC;oBACD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE;wBACzB,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;qBACvC;iBACF;qBAAM;oBACL,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;iBAC7C;gBACD,SAAS,CAAC,MAAM,CAAC;oBACf,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,YAAY;oBAClB,OAAO;iBACR,CAAC,CAAC;aACJ;YACD,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;KAAA,CAAC;AACJ,CAAC;AA/DD,wCA+DC;AAED,kBAAe,cAAc,CAAC","file":"table2resource.js","sourcesContent":["import {\n getNameByParams,\n parseRequest,\n ResourcerContext,\n ResourceType,\n} from '@nocobase/resourcer';\nimport { BELONGSTO, BELONGSTOMANY, HASMANY, HASONE } from '@nocobase/database';\n\nexport function table2resource() {\n return async function table2resource(\n ctx: ResourcerContext,\n next: () => Promise<any>,\n ) {\n const resourcer = ctx.resourcer;\n const database = ctx.db;\n let params = parseRequest(\n {\n path: ctx.request.path,\n method: ctx.request.method,\n },\n {\n prefix: resourcer.options.prefix,\n accessors: resourcer.options.accessors,\n },\n );\n if (!params) {\n return next();\n }\n const resourceName = getNameByParams(params);\n // 如果资源名称未被定义\n if (resourcer.isDefined(resourceName)) {\n return next();\n }\n const [tableName, fieldName] = resourceName.split('.');\n // 如果经过加载后是已经定义的表\n if (!database.isDefined(tableName)) {\n return next();\n }\n const table = database.getTable(tableName);\n const field = table.getField(fieldName) as\n | BELONGSTO\n | HASMANY\n | BELONGSTOMANY\n | HASONE;\n if (!fieldName || field) {\n let resourceType: ResourceType = 'single';\n let actions = {};\n if (field) {\n if (field instanceof HASONE) {\n resourceType = 'hasOne';\n } else if (field instanceof HASMANY) {\n resourceType = 'hasMany';\n } else if (field instanceof BELONGSTO) {\n resourceType = 'belongsTo';\n } else if (field instanceof BELONGSTOMANY) {\n resourceType = 'belongsToMany';\n }\n if (field.options.actions) {\n actions = field.options.actions || {};\n }\n } else {\n actions = table.getOptions('actions') || {};\n }\n resourcer.define({\n type: resourceType,\n name: resourceName,\n actions,\n });\n }\n return next();\n };\n}\n\nexport default table2resource;\n"]}
1
+ {"version":3,"sources":["middlewares/table2resource.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAK6B;AAC7B,iDAA+E;AAE/E,SAAgB,cAAc;IAC5B,OAAO,SAAe,cAAc,CAClC,GAAqB,EACrB,IAAwB;;YAExB,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;YAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,MAAM,GAAG,IAAA,wBAAY,EACvB;gBACE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;gBACtB,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM;aAC3B,EACD;gBACE,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM;gBAChC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS;aACvC,CACF,CAAC;YACF,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO,IAAI,EAAE,CAAC;aACf;YACD,MAAM,YAAY,GAAG,IAAA,2BAAe,EAAC,MAAM,CAAC,CAAC;YAE7C,IAAI,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;gBACrC,OAAO,IAAI,EAAE,CAAC;aACf;YACD,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAEvD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;gBAClC,OAAO,IAAI,EAAE,CAAC;aACf;YACD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAI5B,CAAC;YACX,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE;gBACvB,IAAI,YAAY,GAAiB,QAAQ,CAAC;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,IAAI,KAAK,EAAE;oBACT,IAAI,KAAK,YAAY,iBAAM,EAAE;wBAC3B,YAAY,GAAG,QAAQ,CAAC;qBACzB;yBAAM,IAAI,KAAK,YAAY,kBAAO,EAAE;wBACnC,YAAY,GAAG,SAAS,CAAC;qBAC1B;yBAAM,IAAI,KAAK,YAAY,oBAAS,EAAE;wBACrC,YAAY,GAAG,WAAW,CAAC;qBAC5B;yBAAM,IAAI,KAAK,YAAY,wBAAa,EAAE;wBACzC,YAAY,GAAG,eAAe,CAAC;qBAChC;oBACD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE;wBACzB,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;qBACvC;iBACF;qBAAM;oBACL,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;iBAC7C;gBACD,SAAS,CAAC,MAAM,CAAC;oBACf,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,YAAY;oBAClB,OAAO;iBACR,CAAC,CAAC;aACJ;YACD,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;KAAA,CAAC;AACJ,CAAC;AA/DD,wCA+DC;AAED,kBAAe,cAAc,CAAC","file":"table2resource.js","sourcesContent":["import {\n getNameByParams,\n parseRequest,\n ResourcerContext,\n ResourceType,\n} from '@nocobase/resourcer';\nimport { BELONGSTO, BELONGSTOMANY, HASMANY, HASONE } from '@nocobase/database';\n\nexport function table2resource() {\n return async function table2resource(\n ctx: ResourcerContext,\n next: () => Promise<any>,\n ) {\n const resourcer = ctx.resourcer;\n const database = ctx.db;\n let params = parseRequest(\n {\n path: ctx.request.path,\n method: ctx.request.method,\n },\n {\n prefix: resourcer.options.prefix,\n accessors: resourcer.options.accessors,\n },\n );\n if (!params) {\n return next();\n }\n const resourceName = getNameByParams(params);\n // 如果资源名称未被定义\n if (resourcer.isDefined(resourceName)) {\n return next();\n }\n const [tableName, fieldName] = resourceName.split('.');\n // 如果经过加载后是已经定义的表\n if (!database.isDefined(tableName)) {\n return next();\n }\n const table = database.getTable(tableName);\n const field = table.getField(fieldName) as\n | BELONGSTO\n | HASMANY\n | BELONGSTOMANY\n | HASONE;\n if (!fieldName || field) {\n let resourceType: ResourceType = 'single';\n let actions = {};\n if (field) {\n if (field instanceof HASONE) {\n resourceType = 'hasOne';\n } else if (field instanceof HASMANY) {\n resourceType = 'hasMany';\n } else if (field instanceof BELONGSTO) {\n resourceType = 'belongsTo';\n } else if (field instanceof BELONGSTOMANY) {\n resourceType = 'belongsToMany';\n }\n if (field.options.actions) {\n actions = field.options.actions || {};\n }\n } else {\n actions = table.getOptions('actions') || {};\n }\n resourcer.define({\n type: resourceType,\n name: resourceName,\n actions,\n });\n }\n return next();\n };\n}\n\nexport default table2resource;\n"]}
package/lib/plugin.js CHANGED
@@ -69,7 +69,7 @@ class Plugin {
69
69
  }
70
70
 
71
71
  getName() {
72
- return this.options.name || database_1.uid();
72
+ return this.options.name || (0, database_1.uid)();
73
73
  }
74
74
 
75
75
  activate() {
package/lib/plugin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iDAAyC;AAEzC,oDAAuB;AAuBvB,MAAa,MAAM;IAKjB,YAAY,OAA+C;QAJ3D,YAAO,GAAkB,EAAE,CAAC;QAE5B,cAAS,GAAY,EAAE,CAAC;QAGtB,IAAI,CAAC,GAAG,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,gBAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,cAAG,EAAE,CAAC;IACpC,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC/B,CAAC;KAAA;IAEK,OAAO;;YACX,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;KAAA;IAEK,IAAI,CAAC,IAAY;;YACrB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACzB,OAAO;aACR;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,QAAQ,EAAE,CAAC;QACnB,CAAC;KAAA;IAEK,IAAI;;YACR,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;KAAA;CACF;AAlCD,wBAkCC","file":"plugin.js","sourcesContent":["import { uid } from '@nocobase/database';\nimport { Application } from './application';\nimport _ from 'lodash';\n\nexport interface IPlugin {\n install?: (this: Plugin) => void;\n load?: (this: Plugin) => void;\n}\n\nexport interface PluginOptions {\n name?: string;\n activate?: boolean;\n displayName?: string;\n description?: string;\n version?: string;\n install?: (this: Plugin) => void;\n load?: (this: Plugin) => void;\n plugin?: typeof Plugin;\n [key: string]: any;\n}\n\nexport type PluginFn = (this: Plugin) => void;\n\nexport type PluginType = string | PluginFn | typeof Plugin;\n\nexport class Plugin implements IPlugin {\n options: PluginOptions = {};\n app: Application;\n callbacks: IPlugin = {};\n\n constructor(options?: PluginOptions & { app?: Application }) {\n this.app = options?.app;\n this.options = options;\n this.callbacks = _.pick(options, ['load', 'activate']);\n }\n\n getName() {\n return this.options.name || uid();\n }\n\n async activate() {\n this.options.activate = true;\n }\n\n async install() {\n await this.call('install');\n }\n\n async call(name: string) {\n if (!this.callbacks[name]) {\n return;\n }\n const callback = this.callbacks[name].bind(this);\n await callback();\n }\n\n async load() {\n await this.call('load');\n }\n}\n"]}
1
+ {"version":3,"sources":["plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iDAAyC;AAEzC,oDAAuB;AAuBvB,MAAa,MAAM;IAKjB,YAAY,OAA+C;QAJ3D,YAAO,GAAkB,EAAE,CAAC;QAE5B,cAAS,GAAY,EAAE,CAAC;QAGtB,IAAI,CAAC,GAAG,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,gBAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAA,cAAG,GAAE,CAAC;IACpC,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC/B,CAAC;KAAA;IAEK,OAAO;;YACX,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;KAAA;IAEK,IAAI,CAAC,IAAY;;YACrB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACzB,OAAO;aACR;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,QAAQ,EAAE,CAAC;QACnB,CAAC;KAAA;IAEK,IAAI;;YACR,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;KAAA;CACF;AAlCD,wBAkCC","file":"plugin.js","sourcesContent":["import { uid } from '@nocobase/database';\nimport { Application } from './application';\nimport _ from 'lodash';\n\nexport interface IPlugin {\n install?: (this: Plugin) => void;\n load?: (this: Plugin) => void;\n}\n\nexport interface PluginOptions {\n name?: string;\n activate?: boolean;\n displayName?: string;\n description?: string;\n version?: string;\n install?: (this: Plugin) => void;\n load?: (this: Plugin) => void;\n plugin?: typeof Plugin;\n [key: string]: any;\n}\n\nexport type PluginFn = (this: Plugin) => void;\n\nexport type PluginType = string | PluginFn | typeof Plugin;\n\nexport class Plugin implements IPlugin {\n options: PluginOptions = {};\n app: Application;\n callbacks: IPlugin = {};\n\n constructor(options?: PluginOptions & { app?: Application }) {\n this.app = options?.app;\n this.options = options;\n this.callbacks = _.pick(options, ['load', 'activate']);\n }\n\n getName() {\n return this.options.name || uid();\n }\n\n async activate() {\n this.options.activate = true;\n }\n\n async install() {\n await this.call('install');\n }\n\n async call(name: string) {\n if (!this.callbacks[name]) {\n return;\n }\n const callback = this.callbacks[name].bind(this);\n await callback();\n }\n\n async load() {\n await this.call('load');\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nocobase/server",
3
- "version": "0.5.0-alpha.32",
3
+ "version": "0.5.0-alpha.36",
4
4
  "main": "lib/index.js",
5
5
  "types": "./lib/index.d.ts",
6
6
  "license": "MIT",
@@ -8,9 +8,9 @@
8
8
  "dependencies": {
9
9
  "@koa/cors": "^3.1.0",
10
10
  "@koa/router": "^9.4.0",
11
- "@nocobase/actions": "^0.5.0-alpha.32",
12
- "@nocobase/database": "^0.5.0-alpha.32",
13
- "@nocobase/resourcer": "^0.5.0-alpha.32",
11
+ "@nocobase/actions": "^0.5.0-alpha.36",
12
+ "@nocobase/database": "^0.5.0-alpha.36",
13
+ "@nocobase/resourcer": "^0.5.0-alpha.36",
14
14
  "commander": "^8.1.0",
15
15
  "dotenv": "^8.2.0",
16
16
  "i18next": "^21.3.2",
@@ -18,5 +18,5 @@
18
18
  "koa-bodyparser": "^4.3.0",
19
19
  "koa-static": "^5.0.0"
20
20
  },
21
- "gitHead": "7be6327458cb376e7281cff42a43a282105b65f8"
21
+ "gitHead": "9998cd903bf87bf9a5d8a7616055f0cd1a007a72"
22
22
  }