@feathersjs/feathers 5.0.0-pre.1 → 5.0.0-pre.15

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.
Files changed (46) hide show
  1. package/CHANGELOG.md +182 -0
  2. package/LICENSE +1 -1
  3. package/lib/application.d.ts +19 -8
  4. package/lib/application.js +80 -78
  5. package/lib/application.js.map +1 -1
  6. package/lib/declarations.d.ts +207 -106
  7. package/lib/dependencies.d.ts +4 -0
  8. package/lib/dependencies.js +18 -0
  9. package/lib/dependencies.js.map +1 -0
  10. package/lib/events.d.ts +4 -4
  11. package/lib/events.js +16 -69
  12. package/lib/events.js.map +1 -1
  13. package/lib/hooks/index.d.ts +13 -2
  14. package/lib/hooks/index.js +84 -146
  15. package/lib/hooks/index.js.map +1 -1
  16. package/lib/hooks/regular.d.ts +12 -0
  17. package/lib/hooks/regular.js +169 -0
  18. package/lib/hooks/regular.js.map +1 -0
  19. package/lib/index.d.ts +9 -4
  20. package/lib/index.js +9 -12
  21. package/lib/index.js.map +1 -1
  22. package/lib/service.d.ts +21 -0
  23. package/lib/service.js +68 -0
  24. package/lib/service.js.map +1 -0
  25. package/lib/version.d.ts +1 -1
  26. package/lib/version.js +1 -1
  27. package/lib/version.js.map +1 -1
  28. package/package.json +12 -13
  29. package/readme.md +1 -77
  30. package/src/application.ts +115 -105
  31. package/src/declarations.ts +274 -121
  32. package/src/dependencies.ts +5 -0
  33. package/src/events.ts +18 -75
  34. package/src/hooks/index.ts +95 -150
  35. package/src/hooks/regular.ts +207 -0
  36. package/src/index.ts +10 -17
  37. package/src/service.ts +91 -0
  38. package/src/version.ts +1 -1
  39. package/lib/hooks/base.d.ts +0 -3
  40. package/lib/hooks/base.js +0 -29
  41. package/lib/hooks/base.js.map +0 -1
  42. package/lib/hooks/commons.d.ts +0 -20
  43. package/lib/hooks/commons.js +0 -298
  44. package/lib/hooks/commons.js.map +0 -1
  45. package/src/hooks/base.ts +0 -32
  46. package/src/hooks/commons.ts +0 -336
@@ -1,158 +1,96 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
2
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.activateHooks = void 0;
23
- const hookCommons = __importStar(require("./commons"));
24
- const hooks_1 = require("@feathersjs/hooks");
25
- const base_1 = require("./base");
26
- const baseHooks = [base_1.assignArguments, base_1.validate];
27
- const { getHooks, enableHooks, ACTIVATE_HOOKS, finallyWrapper, errorWrapper, wrap } = hookCommons;
28
- function getMiddlewareOptions(app, service, method) {
29
- const params = service.methods[method];
30
- const defaults = params.find(v => v === 'params') ? { params: {} } : null;
31
- return {
32
- params,
33
- defaults,
34
- props: {
35
- app,
36
- service,
37
- type: 'before',
38
- get path() {
39
- if (!service || !app || !app.services) {
40
- return null;
41
- }
42
- return Object.keys(app.services)
43
- .find(path => app.services[path] === service);
44
- }
45
- }
46
- };
47
- }
48
- function getCollector(app, service, method) {
49
- return function () {
50
- const previous = this._parent && this._parent.getMiddleware();
51
- let result;
52
- if (previous && this._middleware) {
53
- result = previous.concat(this._middleware);
54
- }
55
- else {
56
- result = previous || this._middleware || [];
57
- }
58
- const hooks = {
59
- async: getHooks(app, service, 'async', method),
60
- before: getHooks(app, service, 'before', method),
61
- after: getHooks(app, service, 'after', method, true),
62
- error: getHooks(app, service, 'error', method, true),
63
- finally: getHooks(app, service, 'finally', method, true)
64
- };
65
- return [
66
- ...finallyWrapper(hooks.finally),
67
- ...errorWrapper(hooks.error),
68
- ...baseHooks,
69
- ...result,
70
- ...wrap(hooks)
71
- ];
72
- };
73
- }
74
- function withHooks(app, service, methods) {
75
- const hookMap = methods.reduce((accu, method) => {
76
- if (typeof service[method] !== 'function') {
77
- return accu;
78
- }
79
- const hookManager = hooks_1.middleware([], getMiddlewareOptions(app, service, method));
80
- hookManager.getMiddleware = getCollector(app, service, method);
81
- accu[method] = hookManager;
82
- return accu;
83
- }, {});
84
- hooks_1.hooks(service, hookMap);
3
+ exports.hookMixin = exports.FeathersHookManager = exports.createContext = exports.fromErrorHooks = exports.fromErrorHook = exports.fromAfterHooks = exports.fromAfterHook = exports.fromBeforeHooks = exports.fromBeforeHook = void 0;
4
+ const dependencies_1 = require("../dependencies");
5
+ const service_1 = require("../service");
6
+ const regular_1 = require("./regular");
7
+ var regular_2 = require("./regular");
8
+ Object.defineProperty(exports, "fromBeforeHook", { enumerable: true, get: function () { return regular_2.fromBeforeHook; } });
9
+ Object.defineProperty(exports, "fromBeforeHooks", { enumerable: true, get: function () { return regular_2.fromBeforeHooks; } });
10
+ Object.defineProperty(exports, "fromAfterHook", { enumerable: true, get: function () { return regular_2.fromAfterHook; } });
11
+ Object.defineProperty(exports, "fromAfterHooks", { enumerable: true, get: function () { return regular_2.fromAfterHooks; } });
12
+ Object.defineProperty(exports, "fromErrorHook", { enumerable: true, get: function () { return regular_2.fromErrorHook; } });
13
+ Object.defineProperty(exports, "fromErrorHooks", { enumerable: true, get: function () { return regular_2.fromErrorHooks; } });
14
+ function createContext(service, method, data = {}) {
15
+ const createContext = service[method].createContext;
16
+ if (typeof createContext !== 'function') {
17
+ throw new Error(`Can not create context for method ${method}`);
18
+ }
19
+ return createContext(data);
85
20
  }
86
- function mixinMethod() {
87
- const service = this;
88
- const args = Array.from(arguments);
89
- const returnHook = args[args.length - 1] === true || args[args.length - 1] instanceof hooks_1.HookContext
90
- ? args.pop() : false;
91
- const hookContext = returnHook instanceof hooks_1.HookContext ? returnHook : this._super.createContext();
92
- return this._super.call(service, ...args, hookContext)
93
- .then(() => returnHook ? hookContext : hookContext.result)
94
- // Handle errors
95
- .catch(() => {
96
- if (typeof hookContext.error !== 'undefined' && typeof hookContext.result === 'undefined') {
97
- return Promise.reject(returnHook ? hookContext : hookContext.error);
98
- }
99
- else {
100
- return returnHook ? hookContext : hookContext.result;
101
- }
102
- });
21
+ exports.createContext = createContext;
22
+ class FeathersHookManager extends dependencies_1.HookManager {
23
+ constructor(app, method) {
24
+ super();
25
+ this.app = app;
26
+ this.method = method;
27
+ this._middleware = [];
28
+ }
29
+ collectMiddleware(self, args) {
30
+ const app = this.app;
31
+ const appHooks = app.appHooks[dependencies_1.HOOKS].concat(app.appHooks[this.method] || []);
32
+ const regularAppHooks = (0, regular_1.collectRegularHooks)(this.app, this.method);
33
+ const middleware = super.collectMiddleware(self, args);
34
+ const regularHooks = (0, regular_1.collectRegularHooks)(self, this.method);
35
+ return [...appHooks, ...regularAppHooks, ...middleware, ...regularHooks];
36
+ }
37
+ initializeContext(self, args, context) {
38
+ const ctx = super.initializeContext(self, args, context);
39
+ ctx.params = ctx.params || {};
40
+ return ctx;
41
+ }
42
+ middleware(mw) {
43
+ this._middleware.push(...mw);
44
+ return this;
45
+ }
103
46
  }
104
- // A service mixin that adds `service.hooks()` method and functionality
105
- const hookMixin = exports.hookMixin = function hookMixin(service) {
47
+ exports.FeathersHookManager = FeathersHookManager;
48
+ function hookMixin(service, path, options) {
106
49
  if (typeof service.hooks === 'function') {
107
- return;
50
+ return service;
108
51
  }
109
- service.methods = Object.getOwnPropertyNames(service)
110
- .filter(key => typeof service[key] === 'function' && service[key][ACTIVATE_HOOKS])
111
- .reduce((result, methodName) => {
112
- result[methodName] = service[methodName][ACTIVATE_HOOKS];
113
- return result;
114
- }, service.methods || {});
115
- Object.assign(service.methods, {
116
- find: ['params'],
117
- get: ['id', 'params'],
118
- create: ['data', 'params'],
119
- update: ['id', 'data', 'params'],
120
- patch: ['id', 'data', 'params'],
121
- remove: ['id', 'params']
122
- });
123
52
  const app = this;
124
- const methodNames = Object.keys(service.methods);
125
- withHooks(app, service, methodNames);
126
- // Usefull only for the `returnHook` backwards compatibility with `true`
127
- const mixin = methodNames.reduce((mixin, method) => {
128
- if (typeof service[method] !== 'function') {
129
- return mixin;
130
- }
131
- mixin[method] = mixinMethod;
132
- return mixin;
53
+ const hookMethods = (0, service_1.getHookMethods)(service, options);
54
+ const serviceMethodHooks = hookMethods.reduce((res, method) => {
55
+ const params = service_1.defaultServiceArguments[method] || ['data', 'params'];
56
+ res[method] = new FeathersHookManager(app, method)
57
+ .params(...params)
58
+ .props({
59
+ app,
60
+ path,
61
+ method,
62
+ service,
63
+ event: null,
64
+ type: null,
65
+ get statusCode() {
66
+ var _a;
67
+ return (_a = this.http) === null || _a === void 0 ? void 0 : _a.statusCode;
68
+ },
69
+ set statusCode(value) {
70
+ (this.http || (this.http = {})).statusCode = value;
71
+ }
72
+ });
73
+ return res;
133
74
  }, {});
134
- // Add .hooks method and properties to the service
135
- enableHooks(service, methodNames, app.hookTypes);
136
- service.mixin(mixin);
137
- };
138
- function default_1() {
139
- return function (app) {
140
- // We store a reference of all supported hook types on the app
141
- // in case someone needs it
142
- Object.assign(app, {
143
- hookTypes: ['async', 'before', 'after', 'error', 'finally']
75
+ const handleRegularHooks = (0, regular_1.enableRegularHooks)(service, hookMethods);
76
+ (0, dependencies_1.hooks)(service, serviceMethodHooks);
77
+ service.hooks = function (hookOptions) {
78
+ if (hookOptions.before || hookOptions.after || hookOptions.error) {
79
+ return handleRegularHooks.call(this, hookOptions);
80
+ }
81
+ if (Array.isArray(hookOptions)) {
82
+ return (0, dependencies_1.hooks)(this, hookOptions);
83
+ }
84
+ Object.keys(hookOptions).forEach(method => {
85
+ const manager = (0, dependencies_1.getManager)(this[method]);
86
+ if (!(manager instanceof FeathersHookManager)) {
87
+ throw new Error(`Method ${method} is not a Feathers hooks enabled service method`);
88
+ }
89
+ manager.middleware(hookOptions[method]);
144
90
  });
145
- // Add functionality for hooks to be registered as app.hooks
146
- enableHooks(app, app.methods, app.hookTypes);
147
- app.mixins.push(hookMixin);
148
- };
149
- }
150
- exports.default = default_1;
151
- function activateHooks(args) {
152
- return (fn) => {
153
- Object.defineProperty(fn, ACTIVATE_HOOKS, { value: args });
154
- return fn;
91
+ return this;
155
92
  };
93
+ return service;
156
94
  }
157
- exports.activateHooks = activateHooks;
95
+ exports.hookMixin = hookMixin;
158
96
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { HookFunction, RegularHookFunction, RegularHookMap } from '../declarations';
2
+ export declare function fromBeforeHook<A, S>(hook: RegularHookFunction<A, S>): HookFunction<A, S>;
3
+ export declare function fromAfterHook<A, S>(hook: RegularHookFunction<A, S>): HookFunction<A, S>;
4
+ export declare function fromErrorHook<A, S>(hook: RegularHookFunction<A, S>): HookFunction<A, S>;
5
+ export declare function fromBeforeHooks<A, S>(hooks: RegularHookFunction<A, S>[]): HookFunction<unknown, unknown>;
6
+ export declare function fromAfterHooks<A, S>(hooks: RegularHookFunction<A, S>[]): HookFunction<unknown, unknown>;
7
+ export declare function fromErrorHooks<A, S>(hooks: RegularHookFunction<A, S>[]): HookFunction<unknown, unknown>;
8
+ export declare function collectRegularHooks(target: any, method: string): any;
9
+ export declare function convertHookData(input: any): {
10
+ [method: string]: RegularHookFunction<import("../declarations").Application<any, any>, import("../declarations").Service<any, Partial<any>>>[];
11
+ };
12
+ export declare function enableRegularHooks(object: any, methods?: string[]): (this: any, input: RegularHookMap<any, any>) => any;
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.enableRegularHooks = exports.convertHookData = exports.collectRegularHooks = exports.fromErrorHooks = exports.fromAfterHooks = exports.fromBeforeHooks = exports.fromErrorHook = exports.fromAfterHook = exports.fromBeforeHook = void 0;
4
+ const service_1 = require("../service");
5
+ const runHook = (hook, context, type) => {
6
+ if (type)
7
+ context.type = type;
8
+ return Promise.resolve(hook.call(context.self, context))
9
+ .then((res) => {
10
+ if (type)
11
+ context.type = null;
12
+ if (res && res !== context) {
13
+ Object.assign(context, res);
14
+ }
15
+ });
16
+ };
17
+ function fromBeforeHook(hook) {
18
+ return (context, next) => {
19
+ return runHook(hook, context, 'before').then(next);
20
+ };
21
+ }
22
+ exports.fromBeforeHook = fromBeforeHook;
23
+ function fromAfterHook(hook) {
24
+ return (context, next) => {
25
+ return next().then(() => runHook(hook, context, 'after'));
26
+ };
27
+ }
28
+ exports.fromAfterHook = fromAfterHook;
29
+ function fromErrorHook(hook) {
30
+ return (context, next) => {
31
+ return next().catch((error) => {
32
+ if (context.error !== error || context.result !== undefined) {
33
+ context.original = { ...context };
34
+ context.error = error;
35
+ delete context.result;
36
+ }
37
+ return runHook(hook, context, 'error').then(() => {
38
+ if (context.result === undefined && context.error !== undefined) {
39
+ throw context.error;
40
+ }
41
+ });
42
+ });
43
+ };
44
+ }
45
+ exports.fromErrorHook = fromErrorHook;
46
+ const RunHooks = (hooks) => (context) => {
47
+ return hooks.reduce((promise, hook) => {
48
+ return promise.then(() => runHook(hook, context));
49
+ }, Promise.resolve(undefined));
50
+ };
51
+ function fromBeforeHooks(hooks) {
52
+ return fromBeforeHook(RunHooks(hooks));
53
+ }
54
+ exports.fromBeforeHooks = fromBeforeHooks;
55
+ function fromAfterHooks(hooks) {
56
+ return fromAfterHook(RunHooks(hooks));
57
+ }
58
+ exports.fromAfterHooks = fromAfterHooks;
59
+ function fromErrorHooks(hooks) {
60
+ return fromErrorHook(RunHooks(hooks));
61
+ }
62
+ exports.fromErrorHooks = fromErrorHooks;
63
+ function collectRegularHooks(target, method) {
64
+ return target.__hooks.hooks[method] || [];
65
+ }
66
+ exports.collectRegularHooks = collectRegularHooks;
67
+ // Converts different hook registration formats into the
68
+ // same internal format
69
+ function convertHookData(input) {
70
+ const result = {};
71
+ if (Array.isArray(input)) {
72
+ result.all = input;
73
+ }
74
+ else if (typeof input !== 'object') {
75
+ result.all = [input];
76
+ }
77
+ else {
78
+ for (const key of Object.keys(input)) {
79
+ const value = input[key];
80
+ result[key] = Array.isArray(value) ? value : [value];
81
+ }
82
+ }
83
+ return result;
84
+ }
85
+ exports.convertHookData = convertHookData;
86
+ const types = ['before', 'after', 'error'];
87
+ const isType = (value) => types.includes(value);
88
+ const wrappers = {
89
+ before: fromBeforeHooks,
90
+ after: fromAfterHooks,
91
+ error: fromErrorHooks
92
+ };
93
+ const createStore = (methods) => {
94
+ const store = {
95
+ before: {},
96
+ after: {},
97
+ error: {},
98
+ hooks: {}
99
+ };
100
+ for (const method of methods) {
101
+ store.hooks[method] = [];
102
+ }
103
+ return store;
104
+ };
105
+ const setStore = (object, store) => {
106
+ Object.defineProperty(object, '__hooks', {
107
+ configurable: true,
108
+ value: store,
109
+ writable: true
110
+ });
111
+ };
112
+ const getStore = (object) => object.__hooks;
113
+ const createMap = (input, methods) => {
114
+ const map = {};
115
+ Object.keys(input).forEach((type) => {
116
+ if (!isType(type)) {
117
+ throw new Error(`'${type}' is not a valid hook type`);
118
+ }
119
+ const data = convertHookData(input[type]);
120
+ Object.keys(data).forEach((method) => {
121
+ if (method !== 'all' && !methods.includes(method)) {
122
+ throw new Error(`'${method}' is not a valid hook method`);
123
+ }
124
+ });
125
+ map[type] = data;
126
+ });
127
+ return map;
128
+ };
129
+ const createAdapter = (type) => {
130
+ const hooks = [];
131
+ const hook = wrappers[type](hooks);
132
+ const adapter = Object.assign(hook, { hooks });
133
+ return adapter;
134
+ };
135
+ const updateStore = (store, map) => {
136
+ Object.keys(store.hooks).forEach((method) => {
137
+ let adapted = false;
138
+ Object.keys(map).forEach((key) => {
139
+ var _a;
140
+ const type = key;
141
+ const allHooks = map[type].all || [];
142
+ const methodHooks = map[type][method] || [];
143
+ if (allHooks.length || methodHooks.length) {
144
+ const adapter = (_a = store[type])[method] || (_a[method] = (adapted = true, createAdapter(type)));
145
+ adapter.hooks.push(...allHooks, ...methodHooks);
146
+ }
147
+ });
148
+ if (adapted) {
149
+ store.hooks[method] = [
150
+ store.error[method],
151
+ store.before[method],
152
+ store.after[method]
153
+ ].filter(hook => hook);
154
+ }
155
+ });
156
+ };
157
+ // Add `.hooks` functionality to an object
158
+ function enableRegularHooks(object, methods = service_1.defaultServiceMethods) {
159
+ const store = createStore(methods);
160
+ setStore(object, store);
161
+ return function regularHooks(input) {
162
+ const store = getStore(this);
163
+ const map = createMap(input, methods);
164
+ updateStore(store, map);
165
+ return this;
166
+ };
167
+ }
168
+ exports.enableRegularHooks = enableRegularHooks;
169
+ //# sourceMappingURL=regular.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regular.js","sourceRoot":"","sources":["../../src/hooks/regular.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -1,6 +1,11 @@
1
1
  import version from './version';
2
- import { Application as ApplicationType } from './declarations';
3
- export default function feathers<ServiceTypes = {}>(): ApplicationType<ServiceTypes>;
4
- export { version };
5
- export * from './declarations';
2
+ import { Feathers } from './application';
3
+ import { Application } from './declarations';
4
+ export declare function feathers<T = any, S = any>(): Application<T, S>;
5
+ export declare namespace feathers {
6
+ var setDebug: typeof import("@feathersjs/commons/lib/debug").setDebug;
7
+ }
8
+ export { version, Feathers };
6
9
  export * from './hooks/index';
10
+ export * from './declarations';
11
+ export * from './service';
package/lib/index.js CHANGED
@@ -13,23 +13,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  return (mod && mod.__esModule) ? mod : { "default": mod };
14
14
  };
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.version = void 0;
17
- // @ts-ignore
18
- const uberproto_1 = __importDefault(require("uberproto"));
19
- const application_1 = __importDefault(require("./application"));
16
+ exports.Feathers = exports.version = exports.feathers = void 0;
17
+ const dependencies_1 = require("./dependencies");
20
18
  const version_1 = __importDefault(require("./version"));
21
19
  exports.version = version_1.default;
22
- const baseObject = Object.create(null);
20
+ const application_1 = require("./application");
21
+ Object.defineProperty(exports, "Feathers", { enumerable: true, get: function () { return application_1.Feathers; } });
23
22
  function feathers() {
24
- const app = Object.create(baseObject);
25
- // Mix in the base application
26
- uberproto_1.default.mixin(application_1.default, app);
27
- app.init();
28
- return app;
23
+ return new application_1.Feathers();
29
24
  }
30
- exports.default = feathers;
31
- __exportStar(require("./declarations"), exports);
25
+ exports.feathers = feathers;
26
+ feathers.setDebug = dependencies_1.setDebug;
32
27
  __exportStar(require("./hooks/index"), exports);
28
+ __exportStar(require("./declarations"), exports);
29
+ __exportStar(require("./service"), exports);
33
30
  if (typeof module !== 'undefined') {
34
31
  module.exports = Object.assign(feathers, module.exports);
35
32
  }
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,aAAa;AACb,0DAA8B;AAC9B,gEAAwC;AACxC,wDAAgC;AAgBvB,kBAhBF,iBAAO,CAgBE;AAbhB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAEvC,SAAwB,QAAQ;IAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAEtC,8BAA8B;IAC9B,mBAAK,CAAC,KAAK,CAAC,qBAAW,EAAE,GAAG,CAAC,CAAC;IAE9B,GAAG,CAAC,IAAI,EAAE,CAAC;IAEX,OAAO,GAAG,CAAC;AACb,CAAC;AATD,2BASC;AAGD,iDAA+B;AAC/B,gDAA8B;AAE9B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACjC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;CAC1D"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA0C;AAC1C,wDAAgC;AAUvB,kBAVF,iBAAO,CAUE;AAThB,+CAAyC;AASvB,yFATT,sBAAQ,OASS;AAN1B,SAAgB,QAAQ;IACtB,OAAO,IAAI,sBAAQ,EAA6B,CAAC;AACnD,CAAC;AAFD,4BAEC;AAED,QAAQ,CAAC,QAAQ,GAAG,uBAAQ,CAAC;AAG7B,gDAA8B;AAC9B,iDAA+B;AAC/B,4CAA0B;AAE1B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACjC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;CAC1D"}
@@ -0,0 +1,21 @@
1
+ import { ServiceOptions } from './declarations';
2
+ export declare const SERVICE: string | symbol;
3
+ export declare const defaultServiceArguments: {
4
+ find: string[];
5
+ get: string[];
6
+ create: string[];
7
+ update: string[];
8
+ patch: string[];
9
+ remove: string[];
10
+ };
11
+ export declare const defaultServiceMethods: string[];
12
+ export declare const defaultEventMap: {
13
+ create: string;
14
+ update: string;
15
+ patch: string;
16
+ remove: string;
17
+ };
18
+ export declare const protectedMethods: string[];
19
+ export declare function getHookMethods(service: any, options: ServiceOptions): string[];
20
+ export declare function getServiceOptions(service: any, options?: ServiceOptions): ServiceOptions;
21
+ export declare function wrapService(location: string, service: any, options: ServiceOptions): any;
package/lib/service.js ADDED
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.wrapService = exports.getServiceOptions = exports.getHookMethods = exports.protectedMethods = exports.defaultEventMap = exports.defaultServiceMethods = exports.defaultServiceArguments = exports.SERVICE = void 0;
4
+ const dependencies_1 = require("./dependencies");
5
+ exports.SERVICE = (0, dependencies_1.createSymbol)('@feathersjs/service');
6
+ exports.defaultServiceArguments = {
7
+ find: ['params'],
8
+ get: ['id', 'params'],
9
+ create: ['data', 'params'],
10
+ update: ['id', 'data', 'params'],
11
+ patch: ['id', 'data', 'params'],
12
+ remove: ['id', 'params']
13
+ };
14
+ exports.defaultServiceMethods = Object.keys(exports.defaultServiceArguments);
15
+ exports.defaultEventMap = {
16
+ create: 'created',
17
+ update: 'updated',
18
+ patch: 'patched',
19
+ remove: 'removed'
20
+ };
21
+ exports.protectedMethods = Object.keys(Object.prototype)
22
+ .concat(Object.keys(dependencies_1.EventEmitter.prototype))
23
+ .concat([
24
+ 'all',
25
+ 'before',
26
+ 'after',
27
+ 'error',
28
+ 'hooks',
29
+ 'setup',
30
+ 'publish'
31
+ ]);
32
+ function getHookMethods(service, options) {
33
+ const { methods } = options;
34
+ return exports.defaultServiceMethods.filter(m => typeof service[m] === 'function' && !methods.includes(m)).concat(methods);
35
+ }
36
+ exports.getHookMethods = getHookMethods;
37
+ function getServiceOptions(service, options = {}) {
38
+ const existingOptions = service[exports.SERVICE];
39
+ if (existingOptions) {
40
+ return existingOptions;
41
+ }
42
+ const { methods = exports.defaultServiceMethods.filter(method => typeof service[method] === 'function'), events = service.events || [] } = options;
43
+ const { serviceEvents = Object.values(exports.defaultEventMap).concat(events) } = options;
44
+ return {
45
+ ...options,
46
+ events,
47
+ methods,
48
+ serviceEvents
49
+ };
50
+ }
51
+ exports.getServiceOptions = getServiceOptions;
52
+ function wrapService(location, service, options) {
53
+ // Do nothing if this is already an initialized
54
+ if (service[exports.SERVICE]) {
55
+ return service;
56
+ }
57
+ const protoService = Object.create(service);
58
+ const serviceOptions = getServiceOptions(service, options);
59
+ if (Object.keys(serviceOptions.methods).length === 0 && typeof service.setup !== 'function') {
60
+ throw new Error(`Invalid service object passed for path \`${location}\``);
61
+ }
62
+ Object.defineProperty(protoService, exports.SERVICE, {
63
+ value: serviceOptions
64
+ });
65
+ return protoService;
66
+ }
67
+ exports.wrapService = wrapService;
68
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
package/lib/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: "5.0.0-pre.1";
1
+ declare const _default: "5.0.0-pre.15";
2
2
  export default _default;
package/lib/version.js CHANGED
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = '5.0.0-pre.1';
3
+ exports.default = '5.0.0-pre.15';
4
4
  //# sourceMappingURL=version.js.map