@feathersjs/feathers 5.0.0-pre.2 → 5.0.0-pre.20
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.
- package/CHANGELOG.md +198 -0
- package/LICENSE +1 -1
- package/{readme.md → README.md} +2 -5
- package/lib/application.d.ts +15 -14
- package/lib/application.js +55 -37
- package/lib/application.js.map +1 -1
- package/lib/declarations.d.ts +116 -61
- package/lib/dependencies.d.ts +4 -0
- package/lib/dependencies.js +22 -0
- package/lib/dependencies.js.map +1 -0
- package/lib/events.d.ts +2 -2
- package/lib/events.js +3 -3
- package/lib/events.js.map +1 -1
- package/lib/hooks/index.d.ts +5 -6
- package/lib/hooks/index.js +30 -18
- package/lib/hooks/index.js.map +1 -1
- package/lib/hooks/regular.d.ts +12 -0
- package/lib/hooks/regular.js +169 -0
- package/lib/hooks/regular.js.map +1 -0
- package/lib/index.d.ts +4 -1
- package/lib/index.js +8 -2
- package/lib/index.js.map +1 -1
- package/lib/service.d.ts +1 -0
- package/lib/service.js +20 -5
- package/lib/service.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +13 -14
- package/src/application.ts +67 -48
- package/src/declarations.ts +128 -69
- package/src/dependencies.ts +5 -0
- package/src/events.ts +3 -5
- package/src/hooks/index.ts +33 -16
- package/src/hooks/regular.ts +207 -0
- package/src/index.ts +4 -3
- package/src/service.ts +15 -3
- package/src/version.ts +1 -1
- package/lib/hooks/legacy.d.ts +0 -7
- package/lib/hooks/legacy.js +0 -114
- package/lib/hooks/legacy.js.map +0 -1
- package/src/hooks/legacy.ts +0 -138
|
@@ -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
|
@@ -2,7 +2,10 @@ import version from './version';
|
|
|
2
2
|
import { Feathers } from './application';
|
|
3
3
|
import { Application } from './declarations';
|
|
4
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
|
+
}
|
|
5
8
|
export { version, Feathers };
|
|
9
|
+
export * from './hooks/index';
|
|
6
10
|
export * from './declarations';
|
|
7
11
|
export * from './service';
|
|
8
|
-
export * from './hooks';
|
package/lib/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -14,6 +18,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
18
|
};
|
|
15
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
20
|
exports.Feathers = exports.version = exports.feathers = void 0;
|
|
21
|
+
const dependencies_1 = require("./dependencies");
|
|
17
22
|
const version_1 = __importDefault(require("./version"));
|
|
18
23
|
exports.version = version_1.default;
|
|
19
24
|
const application_1 = require("./application");
|
|
@@ -22,9 +27,10 @@ function feathers() {
|
|
|
22
27
|
return new application_1.Feathers();
|
|
23
28
|
}
|
|
24
29
|
exports.feathers = feathers;
|
|
30
|
+
feathers.setDebug = dependencies_1.setDebug;
|
|
31
|
+
__exportStar(require("./hooks/index"), exports);
|
|
25
32
|
__exportStar(require("./declarations"), exports);
|
|
26
33
|
__exportStar(require("./service"), exports);
|
|
27
|
-
__exportStar(require("./hooks"), exports);
|
|
28
34
|
if (typeof module !== 'undefined') {
|
|
29
35
|
module.exports = Object.assign(feathers, module.exports);
|
|
30
36
|
}
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
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"}
|
package/lib/service.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export declare const defaultEventMap: {
|
|
|
15
15
|
patch: string;
|
|
16
16
|
remove: string;
|
|
17
17
|
};
|
|
18
|
+
export declare const protectedMethods: string[];
|
|
18
19
|
export declare function getHookMethods(service: any, options: ServiceOptions): string[];
|
|
19
20
|
export declare function getServiceOptions(service: any, options?: ServiceOptions): ServiceOptions;
|
|
20
21
|
export declare function wrapService(location: string, service: any, options: ServiceOptions): any;
|
package/lib/service.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.wrapService = exports.getServiceOptions = exports.getHookMethods = exports.defaultEventMap = exports.defaultServiceMethods = exports.defaultServiceArguments = exports.SERVICE = void 0;
|
|
4
|
-
const
|
|
5
|
-
exports.SERVICE =
|
|
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
6
|
exports.defaultServiceArguments = {
|
|
7
7
|
find: ['params'],
|
|
8
8
|
get: ['id', 'params'],
|
|
@@ -18,6 +18,18 @@ exports.defaultEventMap = {
|
|
|
18
18
|
patch: 'patched',
|
|
19
19
|
remove: 'removed'
|
|
20
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
|
+
'teardown',
|
|
31
|
+
'publish'
|
|
32
|
+
]);
|
|
21
33
|
function getHookMethods(service, options) {
|
|
22
34
|
const { methods } = options;
|
|
23
35
|
return exports.defaultServiceMethods.filter(m => typeof service[m] === 'function' && !methods.includes(m)).concat(methods);
|
|
@@ -30,9 +42,12 @@ function getServiceOptions(service, options = {}) {
|
|
|
30
42
|
}
|
|
31
43
|
const { methods = exports.defaultServiceMethods.filter(method => typeof service[method] === 'function'), events = service.events || [] } = options;
|
|
32
44
|
const { serviceEvents = Object.values(exports.defaultEventMap).concat(events) } = options;
|
|
33
|
-
return
|
|
45
|
+
return {
|
|
46
|
+
...options,
|
|
47
|
+
events,
|
|
34
48
|
methods,
|
|
35
|
-
serviceEvents
|
|
49
|
+
serviceEvents
|
|
50
|
+
};
|
|
36
51
|
}
|
|
37
52
|
exports.getServiceOptions = getServiceOptions;
|
|
38
53
|
function wrapService(location, service, options) {
|
package/lib/service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":";;;AAAA,
|
|
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
|
+
declare const _default: "5.0.0-pre.20";
|
|
2
2
|
export default _default;
|
package/lib/version.js
CHANGED
package/lib/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;AAAA,kBAAe,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;AAAA,kBAAe,cAAc,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@feathersjs/feathers",
|
|
3
3
|
"description": "A framework for real-time applications and REST API with JavaScript and TypeScript",
|
|
4
|
-
"version": "5.0.0-pre.
|
|
4
|
+
"version": "5.0.0-pre.20",
|
|
5
5
|
"homepage": "http://feathersjs.com",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
|
-
"url": "git://github.com/feathersjs/feathers.git"
|
|
8
|
+
"url": "git://github.com/feathersjs/feathers.git",
|
|
9
|
+
"directory": "packages/feathers"
|
|
9
10
|
},
|
|
10
11
|
"keywords": [
|
|
11
12
|
"feathers",
|
|
@@ -47,8 +48,7 @@
|
|
|
47
48
|
"version": "npm run write-version",
|
|
48
49
|
"publish": "npm run reset-version",
|
|
49
50
|
"compile": "shx rm -rf lib/ && tsc",
|
|
50
|
-
"test": "
|
|
51
|
-
"mocha": "mocha --config ../../.mocharc.json --recursive test/"
|
|
51
|
+
"test": "mocha --config ../../.mocharc.json --recursive test/"
|
|
52
52
|
},
|
|
53
53
|
"engines": {
|
|
54
54
|
"node": ">= 12"
|
|
@@ -57,18 +57,17 @@
|
|
|
57
57
|
"access": "public"
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@feathersjs/commons": "^5.0.0-pre.
|
|
61
|
-
"@feathersjs/hooks": "^0.
|
|
62
|
-
"debug": "^4.3.1",
|
|
60
|
+
"@feathersjs/commons": "^5.0.0-pre.20",
|
|
61
|
+
"@feathersjs/hooks": "^0.7.4",
|
|
63
62
|
"events": "^3.3.0"
|
|
64
63
|
},
|
|
65
64
|
"devDependencies": {
|
|
66
|
-
"@types/mocha": "^
|
|
67
|
-
"@types/node": "^
|
|
68
|
-
"mocha": "^
|
|
69
|
-
"shx": "^0.3.
|
|
70
|
-
"ts-node": "^
|
|
71
|
-
"typescript": "^4.
|
|
65
|
+
"@types/mocha": "^9.1.1",
|
|
66
|
+
"@types/node": "^17.0.31",
|
|
67
|
+
"mocha": "^10.0.0",
|
|
68
|
+
"shx": "^0.3.4",
|
|
69
|
+
"ts-node": "^10.7.0",
|
|
70
|
+
"typescript": "^4.6.4"
|
|
72
71
|
},
|
|
73
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "54de749a0b392c7da726c668002b50cafaca530c"
|
|
74
73
|
}
|
package/src/application.ts
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import Debug from 'debug';
|
|
2
|
-
import { EventEmitter } from 'events';
|
|
3
|
-
import { stripSlashes } from '@feathersjs/commons';
|
|
4
|
-
import { HOOKS } from '@feathersjs/hooks';
|
|
5
|
-
|
|
6
1
|
import version from './version';
|
|
2
|
+
import {
|
|
3
|
+
EventEmitter, stripSlashes, createDebug, HOOKS, hooks, middleware
|
|
4
|
+
} from './dependencies';
|
|
7
5
|
import { eventHook, eventMixin } from './events';
|
|
8
|
-
import { hookMixin } from './hooks';
|
|
9
|
-
import { wrapService, getServiceOptions } from './service';
|
|
6
|
+
import { hookMixin } from './hooks/index';
|
|
7
|
+
import { wrapService, getServiceOptions, protectedMethods } from './service';
|
|
10
8
|
import {
|
|
11
9
|
FeathersApplication,
|
|
12
10
|
ServiceMixin,
|
|
@@ -14,37 +12,44 @@ import {
|
|
|
14
12
|
ServiceOptions,
|
|
15
13
|
ServiceInterface,
|
|
16
14
|
Application,
|
|
17
|
-
HookOptions,
|
|
18
15
|
FeathersService,
|
|
19
16
|
HookMap,
|
|
20
|
-
|
|
17
|
+
ApplicationHookOptions
|
|
21
18
|
} from './declarations';
|
|
22
|
-
import {
|
|
19
|
+
import { enableRegularHooks } from './hooks/regular';
|
|
23
20
|
|
|
24
|
-
const debug =
|
|
21
|
+
const debug = createDebug('@feathersjs/feathers');
|
|
25
22
|
|
|
26
|
-
export class Feathers<
|
|
27
|
-
services:
|
|
28
|
-
settings:
|
|
29
|
-
mixins: ServiceMixin<Application<
|
|
23
|
+
export class Feathers<Services, Settings> extends EventEmitter implements FeathersApplication<Services, Settings> {
|
|
24
|
+
services: Services = ({} as Services);
|
|
25
|
+
settings: Settings = ({} as Settings);
|
|
26
|
+
mixins: ServiceMixin<Application<Services, Settings>>[] = [ hookMixin, eventMixin ];
|
|
30
27
|
version: string = version;
|
|
31
28
|
_isSetup = false;
|
|
32
|
-
appHooks: HookMap<Application<
|
|
29
|
+
appHooks: HookMap<Application<Services, Settings>, any> = {
|
|
33
30
|
[HOOKS]: [ (eventHook as any) ]
|
|
34
31
|
};
|
|
35
32
|
|
|
36
|
-
private
|
|
33
|
+
private regularHooks: (this: any, allHooks: any) => any;
|
|
37
34
|
|
|
38
35
|
constructor () {
|
|
39
36
|
super();
|
|
40
|
-
this.
|
|
37
|
+
this.regularHooks = enableRegularHooks(this);
|
|
38
|
+
hooks(this, {
|
|
39
|
+
setup: middleware().params('server').props({
|
|
40
|
+
app: this
|
|
41
|
+
}),
|
|
42
|
+
teardown: middleware().params('server').props({
|
|
43
|
+
app: this
|
|
44
|
+
})
|
|
45
|
+
});
|
|
41
46
|
}
|
|
42
47
|
|
|
43
|
-
get<L extends keyof
|
|
48
|
+
get<L extends keyof Settings & string> (name: L): Settings[L] {
|
|
44
49
|
return this.settings[name];
|
|
45
50
|
}
|
|
46
51
|
|
|
47
|
-
set<L extends keyof
|
|
52
|
+
set<L extends keyof Settings & string> (name: L, value: Settings[L]) {
|
|
48
53
|
this.settings[name] = value;
|
|
49
54
|
return this;
|
|
50
55
|
}
|
|
@@ -55,13 +60,13 @@ export class Feathers<ServiceTypes, AppSettings> extends EventEmitter implements
|
|
|
55
60
|
return this;
|
|
56
61
|
}
|
|
57
62
|
|
|
58
|
-
defaultService (location: string): ServiceInterface
|
|
63
|
+
defaultService (location: string): ServiceInterface {
|
|
59
64
|
throw new Error(`Can not find service '${location}'`);
|
|
60
65
|
}
|
|
61
66
|
|
|
62
|
-
service<L extends keyof
|
|
67
|
+
service<L extends keyof Services & string> (
|
|
63
68
|
location: L
|
|
64
|
-
): FeathersService<this, keyof any extends keyof
|
|
69
|
+
): FeathersService<this, keyof any extends keyof Services ? Service : Services[L]> {
|
|
65
70
|
const path = (stripSlashes(location) || '/') as L;
|
|
66
71
|
const current = this.services[path];
|
|
67
72
|
|
|
@@ -73,9 +78,9 @@ export class Feathers<ServiceTypes, AppSettings> extends EventEmitter implements
|
|
|
73
78
|
return current as any;
|
|
74
79
|
}
|
|
75
80
|
|
|
76
|
-
use<L extends keyof
|
|
81
|
+
use<L extends keyof Services & string> (
|
|
77
82
|
path: L,
|
|
78
|
-
service: keyof any extends keyof
|
|
83
|
+
service: keyof any extends keyof Services ? ServiceInterface | Application : Services[L],
|
|
79
84
|
options?: ServiceOptions
|
|
80
85
|
): this {
|
|
81
86
|
if (typeof path !== 'string') {
|
|
@@ -95,35 +100,41 @@ export class Feathers<ServiceTypes, AppSettings> extends EventEmitter implements
|
|
|
95
100
|
}
|
|
96
101
|
|
|
97
102
|
const protoService = wrapService(location, service, options);
|
|
98
|
-
const serviceOptions = getServiceOptions(
|
|
103
|
+
const serviceOptions = getServiceOptions(protoService);
|
|
104
|
+
|
|
105
|
+
for (const name of protectedMethods) {
|
|
106
|
+
if (serviceOptions.methods.includes(name)) {
|
|
107
|
+
throw new Error(`'${name}' on service '${location}' is not allowed as a custom method name`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
99
110
|
|
|
100
111
|
debug(`Registering new service at \`${location}\``);
|
|
101
112
|
|
|
102
113
|
// Add all the mixins
|
|
103
114
|
this.mixins.forEach(fn => fn.call(this, protoService, location, serviceOptions));
|
|
104
115
|
|
|
116
|
+
this.services[location] = protoService;
|
|
117
|
+
|
|
105
118
|
// If we ran setup already, set this service up explicitly, this will not `await`
|
|
106
119
|
if (this._isSetup && typeof protoService.setup === 'function') {
|
|
107
120
|
debug(`Setting up service for \`${location}\``);
|
|
108
121
|
protoService.setup(this, location);
|
|
109
122
|
}
|
|
110
123
|
|
|
111
|
-
this.services[location] = protoService;
|
|
112
|
-
|
|
113
124
|
return this;
|
|
114
125
|
}
|
|
115
126
|
|
|
116
|
-
hooks (hookMap:
|
|
117
|
-
const
|
|
127
|
+
hooks (hookMap: ApplicationHookOptions<this>) {
|
|
128
|
+
const untypedMap = hookMap as any;
|
|
118
129
|
|
|
119
|
-
if (
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
|
|
130
|
+
if (untypedMap.before || untypedMap.after || untypedMap.error) {
|
|
131
|
+
this.regularHooks(untypedMap);
|
|
132
|
+
} else if (untypedMap.setup || untypedMap.teardown) {
|
|
133
|
+
hooks(this, untypedMap);
|
|
134
|
+
} else if (Array.isArray(hookMap)) {
|
|
124
135
|
this.appHooks[HOOKS].push(...hookMap as any);
|
|
125
136
|
} else {
|
|
126
|
-
const methodHookMap = hookMap as HookMap<Application<
|
|
137
|
+
const methodHookMap = hookMap as HookMap<Application<Services, Settings>, any>;
|
|
127
138
|
|
|
128
139
|
Object.keys(methodHookMap).forEach(key => {
|
|
129
140
|
const methodHooks = this.appHooks[key] || [];
|
|
@@ -136,24 +147,32 @@ export class Feathers<ServiceTypes, AppSettings> extends EventEmitter implements
|
|
|
136
147
|
}
|
|
137
148
|
|
|
138
149
|
setup () {
|
|
139
|
-
|
|
150
|
+
this._isSetup = true;
|
|
140
151
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
promise = promise.then(() => {
|
|
152
|
+
return Object.keys(this.services).reduce((current, path) => current
|
|
153
|
+
.then(() => {
|
|
144
154
|
const service: any = this.service(path as any);
|
|
145
|
-
|
|
155
|
+
|
|
146
156
|
if (typeof service.setup === 'function') {
|
|
147
157
|
debug(`Setting up service for \`${path}\``);
|
|
148
|
-
|
|
158
|
+
|
|
149
159
|
return service.setup(this, path);
|
|
150
160
|
}
|
|
151
|
-
});
|
|
152
|
-
|
|
161
|
+
}), Promise.resolve()).then(() => this);
|
|
162
|
+
}
|
|
153
163
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
164
|
+
teardown () {
|
|
165
|
+
this._isSetup = false;
|
|
166
|
+
|
|
167
|
+
return Object.keys(this.services).reduce((current, path) => current
|
|
168
|
+
.then(() => {
|
|
169
|
+
const service: any = this.service(path as any);
|
|
170
|
+
|
|
171
|
+
if (typeof service.teardown === 'function') {
|
|
172
|
+
debug(`Tearing down service for \`${path}\``);
|
|
173
|
+
|
|
174
|
+
return service.teardown(this, path);
|
|
175
|
+
}
|
|
176
|
+
}), Promise.resolve()).then(() => this)
|
|
158
177
|
}
|
|
159
178
|
}
|