integreat 0.8.1 → 0.8.3
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/dist/authenticators/options.js +1 -1
- package/dist/authenticators/options.js.map +1 -1
- package/dist/authenticators/token.js +1 -1
- package/dist/authenticators/token.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/service/Auth.js +22 -13
- package/dist/service/Auth.js.map +1 -1
- package/dist/service/Endpoint.d.ts +21 -0
- package/dist/service/Endpoint.js +72 -0
- package/dist/service/Endpoint.js.map +1 -0
- package/dist/service/Service.d.ts +33 -0
- package/dist/service/Service.js +298 -0
- package/dist/service/Service.js.map +1 -0
- package/dist/service/index.js +1 -1
- package/dist/service/index.js.map +1 -1
- package/dist/service/types.d.ts +5 -3
- package/dist/service/utils/compare.d.ts +3 -0
- package/dist/service/utils/compare.js +22 -0
- package/dist/service/utils/compare.js.map +1 -0
- package/dist/service/utils/match.d.ts +3 -0
- package/dist/service/utils/match.js +29 -0
- package/dist/service/utils/match.js.map +1 -0
- package/dist/service/utils/options.d.ts +17 -0
- package/dist/service/utils/options.js +41 -0
- package/dist/service/utils/options.js.map +1 -0
- package/package.json +2 -2
|
@@ -3,7 +3,7 @@ const optionsAuth = {
|
|
|
3
3
|
async authenticate(options, _action) {
|
|
4
4
|
return { status: 'granted', ...options };
|
|
5
5
|
},
|
|
6
|
-
isAuthenticated(authentication, _action) {
|
|
6
|
+
isAuthenticated(authentication, _options, _action) {
|
|
7
7
|
return !!(authentication && authentication.status === 'granted');
|
|
8
8
|
},
|
|
9
9
|
authentication: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/authenticators/options.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAMzC,MAAM,WAAW,GAAkB;IAQjC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO;QACjC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAA;IAC1C,CAAC;IAOD,eAAe,CAAC,cAAc,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/authenticators/options.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAMzC,MAAM,WAAW,GAAkB;IAQjC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO;QACjC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAA;IAC1C,CAAC;IAOD,eAAe,CAAC,cAAc,EAAE,QAAQ,EAAE,OAAO;QAC/C,OAAO,CAAC,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,SAAS,CAAC,CAAA;IAClE,CAAC;IAED,cAAc,EAAE;QAOd,QAAQ,CAAC,cAAqC;YAC5C,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE;gBAC5B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,GAAG,cAAc,CAAA;gBAC7C,IAAI,MAAM,KAAK,SAAS,EAAE;oBACxB,OAAO,OAAO,CAAA;iBACf;aACF;YACD,OAAO,EAAE,CAAA;QACX,CAAC;QAOD,aAAa,CACX,cAAqC;YAErC,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE;gBAC5B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,GAAG,cAAc,CAAA;gBAC7C,IAAI,MAAM,KAAK,SAAS,EAAE;oBACxB,OAAO,OAAO,CAAA;iBACf;aACF;YACD,OAAO,EAAE,CAAA;QACX,CAAC;KACF;CACF,CAAA;AAED,eAAe,WAAW,CAAA"}
|
|
@@ -15,7 +15,7 @@ const tokenAuth = {
|
|
|
15
15
|
? { status: 'granted', token, type, encode }
|
|
16
16
|
: { status: 'refused' };
|
|
17
17
|
},
|
|
18
|
-
isAuthenticated(authentication, _action) {
|
|
18
|
+
isAuthenticated(authentication, _options, _action) {
|
|
19
19
|
return !!(authentication &&
|
|
20
20
|
authentication.status === 'granted' &&
|
|
21
21
|
authentication.token);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/authenticators/token.ts"],"names":[],"mappings":"AAiBA,MAAM,eAAe,GAAG,CAAC,cAA0C,EAAE,EAAE;IACrE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,cAAc,IAAI,EAAE,CAAA;IAC5D,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE;QAClC,OAAO,EAAE,CAAA;KACV;IACD,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK;QAC7D,IAAI;KACL,CAAA;AACH,CAAC,CAAA;AAKD,MAAM,SAAS,GAAkB;IAO/B,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO;QACjC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;QAC5D,OAAO,KAAK;YACV,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;YAC5C,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;IAC3B,CAAC;IAOD,eAAe,CAAC,cAAc,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/authenticators/token.ts"],"names":[],"mappings":"AAiBA,MAAM,eAAe,GAAG,CAAC,cAA0C,EAAE,EAAE;IACrE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,cAAc,IAAI,EAAE,CAAA;IAC5D,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE;QAClC,OAAO,EAAE,CAAA;KACV;IACD,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK;QAC7D,IAAI;KACL,CAAA;AACH,CAAC,CAAA;AAKD,MAAM,SAAS,GAAkB;IAO/B,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO;QACjC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;QAC5D,OAAO,KAAK;YACV,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;YAC5C,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;IAC3B,CAAC;IAOD,eAAe,CAAC,cAAc,EAAE,QAAQ,EAAE,OAAO;QAC/C,OAAO,CAAC,CAAC,CACP,cAAc;YACd,cAAc,CAAC,MAAM,KAAK,SAAS;YACnC,cAAc,CAAC,KAAK,CACrB,CAAA;IACH,CAAC;IAED,cAAc,EAAE;QAOd,QAAQ,CAAC,cAA0C;YACjD,OAAO,eAAe,CAAC,cAAc,CAAC,CAAA;QACxC,CAAC;QAQD,aAAa,CAAC,cAA0C;YACtD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC,cAAc,CAAC,CAAA;YACvD,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC1E,CAAC;KACF;CACF,CAAA;AAED,eAAe,SAAS,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@ export * as middleware from './middleware/index.js';
|
|
|
8
8
|
export * as adapters from './adapters/index.js';
|
|
9
9
|
export { createAction } from './utils/action.js';
|
|
10
10
|
export default {
|
|
11
|
-
version: '0.8.
|
|
11
|
+
version: '0.8.3',
|
|
12
12
|
create,
|
|
13
13
|
mergeDefinitions,
|
|
14
14
|
mergeResources,
|
package/dist/service/Auth.js
CHANGED
|
@@ -1,27 +1,32 @@
|
|
|
1
1
|
import { isObject } from '../utils/is.js';
|
|
2
2
|
const MAX_RETRIES = 1;
|
|
3
3
|
const shouldRetry = (authentication, retryCount) => authentication?.status === 'timeout' && retryCount < MAX_RETRIES;
|
|
4
|
+
const getKey = (authenticator, options, action) => typeof authenticator.extractAuthKey === 'function'
|
|
5
|
+
? authenticator.extractAuthKey(options, action) || ''
|
|
6
|
+
: '';
|
|
4
7
|
export default class Auth {
|
|
5
8
|
id;
|
|
6
9
|
#authenticator;
|
|
7
10
|
#options;
|
|
8
|
-
#
|
|
11
|
+
#authentications = new Map();
|
|
9
12
|
constructor(id, authenticator, options) {
|
|
10
13
|
this.id = id;
|
|
11
14
|
this.#authenticator = authenticator;
|
|
12
15
|
this.#options = options || {};
|
|
13
|
-
this.#authentication = null;
|
|
14
16
|
}
|
|
15
17
|
async authenticate(action) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
const key = getKey(this.#authenticator, this.#options, action);
|
|
19
|
+
let authentication = this.#authentications.get(key);
|
|
20
|
+
if (authentication?.status === 'granted' &&
|
|
21
|
+
this.#authenticator.isAuthenticated(authentication, this.#options, action)) {
|
|
18
22
|
return true;
|
|
19
23
|
}
|
|
20
24
|
let attempt = 0;
|
|
21
25
|
do {
|
|
22
|
-
|
|
23
|
-
} while (shouldRetry(
|
|
24
|
-
|
|
26
|
+
authentication = await this.#authenticator.authenticate(this.#options, action);
|
|
27
|
+
} while (shouldRetry(authentication, attempt++));
|
|
28
|
+
this.#authentications.set(key, authentication);
|
|
29
|
+
return authentication?.status === 'granted';
|
|
25
30
|
}
|
|
26
31
|
async authenticateAndGetAuthObject(action, method) {
|
|
27
32
|
const fn = this.#authenticator.authentication[method];
|
|
@@ -37,7 +42,7 @@ export default class Auth {
|
|
|
37
42
|
return null;
|
|
38
43
|
}
|
|
39
44
|
getAuthObject(transporter) {
|
|
40
|
-
const auth = this.#
|
|
45
|
+
const auth = this.#authentications.get('');
|
|
41
46
|
if (!auth || auth.status !== 'granted') {
|
|
42
47
|
return null;
|
|
43
48
|
}
|
|
@@ -48,21 +53,25 @@ export default class Auth {
|
|
|
48
53
|
return typeof fn === 'function' ? fn(auth) : null;
|
|
49
54
|
}
|
|
50
55
|
getStatusObject() {
|
|
51
|
-
const auth = this.#
|
|
56
|
+
const auth = this.#authentications.get('');
|
|
52
57
|
if (!auth) {
|
|
53
|
-
return {
|
|
58
|
+
return {
|
|
59
|
+
status: 'noaccess',
|
|
60
|
+
error: `Trying to use auth '${this.id}' before authentication has been run`,
|
|
61
|
+
};
|
|
54
62
|
}
|
|
55
63
|
if (auth.status === 'granted') {
|
|
56
64
|
return { status: 'ok' };
|
|
57
65
|
}
|
|
58
66
|
const status = auth.status === 'refused' ? 'noaccess' : 'autherror';
|
|
59
67
|
const error = auth.status === 'refused'
|
|
60
|
-
? `Authentication attempt for '${this.id}' was refused.`
|
|
61
|
-
: `Could not authenticate '${this.id}'. [${auth.status}]`;
|
|
68
|
+
? `Authentication attempt for auth '${this.id}' was refused.`
|
|
69
|
+
: `Could not authenticate auth '${this.id}'. [${auth.status}]`;
|
|
62
70
|
return { status, error: [error, auth.error].filter(Boolean).join(' ') };
|
|
63
71
|
}
|
|
64
72
|
applyToAction(action, transporter) {
|
|
65
|
-
const
|
|
73
|
+
const key = getKey(this.#authenticator, this.#options, action);
|
|
74
|
+
const auth = this.#authentications.get(key);
|
|
66
75
|
if (auth?.status === 'granted') {
|
|
67
76
|
return {
|
|
68
77
|
...action,
|
package/dist/service/Auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Auth.js","sourceRoot":"","sources":["../../src/service/Auth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,MAAM,WAAW,GAAG,CAAC,CAAA;AAErB,MAAM,WAAW,GAAG,CAClB,cAAqC,EACrC,UAAkB,EAClB,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,SAAS,IAAI,UAAU,GAAG,WAAW,CAAA;AAOrE,MAAM,CAAC,OAAO,OAAO,IAAI;IACd,EAAE,CAAQ;IACnB,cAAc,CAAe;IAC7B,QAAQ,CAAa;IACrB,
|
|
1
|
+
{"version":3,"file":"Auth.js","sourceRoot":"","sources":["../../src/service/Auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { TransformDefinition } from 'map-transform/types.js';
|
|
2
|
+
import type { Action, Adapter } from '../types.js';
|
|
3
|
+
import type { MapOptions, EndpointDef, ServiceOptions, MatchObject, PreparedOptions } from './types.js';
|
|
4
|
+
export interface PrepareOptions {
|
|
5
|
+
(options: ServiceOptions, serviceId: string): ServiceOptions;
|
|
6
|
+
}
|
|
7
|
+
export default class Endpoint {
|
|
8
|
+
#private;
|
|
9
|
+
id?: string;
|
|
10
|
+
match?: MatchObject;
|
|
11
|
+
options: PreparedOptions;
|
|
12
|
+
mutation?: TransformDefinition;
|
|
13
|
+
adapters?: (string | Adapter)[];
|
|
14
|
+
allowRawRequest?: boolean;
|
|
15
|
+
allowRawResponse?: boolean;
|
|
16
|
+
constructor(endpointDef: EndpointDef, serviceId: string, options: PreparedOptions, mapOptions: MapOptions, serviceMutation?: TransformDefinition, adapters?: Adapter[]);
|
|
17
|
+
mutate(action: Action, isRev: boolean): Promise<Action<import("../types.js").Payload<unknown>, unknown>>;
|
|
18
|
+
isMatch(action: Action, isIncoming?: boolean): boolean;
|
|
19
|
+
static sortAndPrepare(endpointDefs: EndpointDef[]): EndpointDef[];
|
|
20
|
+
static findMatchingEndpoint(endpoints: Endpoint[], action: Action, isIncoming?: boolean): Endpoint | undefined;
|
|
21
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import mapTransform from 'map-transform';
|
|
2
|
+
import pPipe from 'p-pipe';
|
|
3
|
+
import compareEndpoints from './utils/compare.js';
|
|
4
|
+
import isMatch from './utils/match.js';
|
|
5
|
+
import { populateActionAfterMutation } from '../utils/mutationHelpers.js';
|
|
6
|
+
import { ensureArray } from '../utils/array.js';
|
|
7
|
+
import { isNotNullOrUndefined, isObject } from '../utils/is.js';
|
|
8
|
+
const prepareMatch = ({ scope, ...match }) => scope === 'all' || !scope ? match : { scope, ...match };
|
|
9
|
+
const prepareEndpoint = ({ match, ...endpoint }) => ({
|
|
10
|
+
match: prepareMatch(match || {}),
|
|
11
|
+
...endpoint,
|
|
12
|
+
});
|
|
13
|
+
async function mutateAction(action, isRev, mutator, normalize = async (action) => action, serialize = async (action) => action) {
|
|
14
|
+
const normalizedAction = isRev ? action : await normalize(action);
|
|
15
|
+
const mutatedAction = mutator
|
|
16
|
+
? populateActionAfterMutation(action, mutator(normalizedAction, { rev: isRev }))
|
|
17
|
+
: normalizedAction;
|
|
18
|
+
return isRev ? await serialize(mutatedAction) : mutatedAction;
|
|
19
|
+
}
|
|
20
|
+
const flattenIfOneOrNone = (arr) => arr.length <= 1 ? arr[0] : arr;
|
|
21
|
+
const setModifyFlag = (def) => isObject(def) ? { ...def, $modify: true } : def;
|
|
22
|
+
const prepareAdapter = (serviceId, options = {}, doSerialize = false) => function prepareAdapter(adapter) {
|
|
23
|
+
const adapterId = adapter.id;
|
|
24
|
+
const preparedOptions = typeof adapterId === 'string'
|
|
25
|
+
? adapter.prepareOptions(options[adapterId] || {}, serviceId)
|
|
26
|
+
: {};
|
|
27
|
+
return doSerialize
|
|
28
|
+
? async (action) => await adapter.serialize(action, preparedOptions)
|
|
29
|
+
: async (action) => await adapter.normalize(action, preparedOptions);
|
|
30
|
+
};
|
|
31
|
+
const pipeAdapters = (adapters) => adapters.length > 0 ? pPipe(...adapters) : undefined;
|
|
32
|
+
export default class Endpoint {
|
|
33
|
+
id;
|
|
34
|
+
match;
|
|
35
|
+
options;
|
|
36
|
+
mutation;
|
|
37
|
+
adapters;
|
|
38
|
+
allowRawRequest;
|
|
39
|
+
allowRawResponse;
|
|
40
|
+
#mutator;
|
|
41
|
+
#normalize;
|
|
42
|
+
#serialize;
|
|
43
|
+
#checkIfMatch;
|
|
44
|
+
constructor(endpointDef, serviceId, options, mapOptions, serviceMutation, adapters = []) {
|
|
45
|
+
this.id = endpointDef.id;
|
|
46
|
+
this.allowRawRequest = endpointDef.allowRawRequest ?? false;
|
|
47
|
+
this.allowRawResponse = endpointDef.allowRawResponse ?? false;
|
|
48
|
+
this.match = endpointDef.match;
|
|
49
|
+
this.#checkIfMatch = isMatch(endpointDef);
|
|
50
|
+
this.options = options;
|
|
51
|
+
const mutation = flattenIfOneOrNone([...ensureArray(serviceMutation), ...ensureArray(endpointDef.mutation)]
|
|
52
|
+
.map(setModifyFlag)
|
|
53
|
+
.filter(isNotNullOrUndefined));
|
|
54
|
+
this.#mutator = mutation ? mapTransform(mutation, mapOptions) : null;
|
|
55
|
+
this.#normalize = pipeAdapters(adapters.map(prepareAdapter(serviceId, options.adapters, false)));
|
|
56
|
+
adapters.reverse();
|
|
57
|
+
this.#serialize = pipeAdapters(adapters.map(prepareAdapter(serviceId, options.adapters, true)));
|
|
58
|
+
}
|
|
59
|
+
mutate(action, isRev) {
|
|
60
|
+
return mutateAction(action, isRev, this.#mutator, this.#normalize, this.#serialize);
|
|
61
|
+
}
|
|
62
|
+
isMatch(action, isIncoming) {
|
|
63
|
+
return this.#checkIfMatch(action, isIncoming);
|
|
64
|
+
}
|
|
65
|
+
static sortAndPrepare(endpointDefs) {
|
|
66
|
+
return endpointDefs.map(prepareEndpoint).sort(compareEndpoints);
|
|
67
|
+
}
|
|
68
|
+
static findMatchingEndpoint(endpoints, action, isIncoming = false) {
|
|
69
|
+
return endpoints.find((endpoint) => endpoint.isMatch(action, isIncoming));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=Endpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Endpoint.js","sourceRoot":"","sources":["../../src/service/Endpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import Endpoint from './Endpoint.js';
|
|
2
|
+
import Auth from './Auth.js';
|
|
3
|
+
import type { DataMapperEntry } from 'map-transform/types.js';
|
|
4
|
+
import type { Schema } from '../schema/index.js';
|
|
5
|
+
import type { Action, Response, Dispatch, Middleware, Transporter, Adapter } from '../types.js';
|
|
6
|
+
import type { ServiceDef, MapOptions, Authenticator } from './types.js';
|
|
7
|
+
interface Resources {
|
|
8
|
+
transporters?: Record<string, Transporter>;
|
|
9
|
+
adapters?: Record<string, Adapter>;
|
|
10
|
+
authenticators?: Record<string, Authenticator>;
|
|
11
|
+
auths?: Record<string, Auth>;
|
|
12
|
+
schemas: Record<string, Schema>;
|
|
13
|
+
castFns?: Record<string, DataMapperEntry>;
|
|
14
|
+
mapOptions?: MapOptions;
|
|
15
|
+
middleware?: Middleware[];
|
|
16
|
+
emit?: (eventType: string, ...args: unknown[]) => void;
|
|
17
|
+
}
|
|
18
|
+
export default class Service {
|
|
19
|
+
#private;
|
|
20
|
+
id: string;
|
|
21
|
+
meta?: string;
|
|
22
|
+
constructor({ id: serviceId, transporter: transporterId, adapters: adapterDefs, auth, meta, options, mutation, endpoints: endpointDefs, }: ServiceDef, { transporters, adapters, authenticators, auths, schemas, castFns, mapOptions, middleware, emit, }: Resources);
|
|
23
|
+
endpointFromAction(action: Action, isIncoming?: boolean): Endpoint | undefined;
|
|
24
|
+
authorizeAction(action: Action): Action;
|
|
25
|
+
mutateRequest(action: Action, endpoint: Endpoint): Promise<Action>;
|
|
26
|
+
mutateIncomingRequest(action: Action, endpoint: Endpoint): Promise<Action>;
|
|
27
|
+
mutateResponse(action: Action, endpoint: Endpoint): Promise<Response>;
|
|
28
|
+
mutateIncomingResponse(action: Action, endpoint: Endpoint): Promise<Response>;
|
|
29
|
+
send(action: Action): Promise<Response>;
|
|
30
|
+
listen(dispatch: Dispatch): Promise<Response>;
|
|
31
|
+
close(): Promise<Response>;
|
|
32
|
+
}
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
import debugLib from 'debug';
|
|
2
|
+
import pProgress from 'p-progress';
|
|
3
|
+
import Endpoint from './Endpoint.js';
|
|
4
|
+
import { setErrorOnAction, createErrorResponse, setOrigin, setOriginOnAction, } from '../utils/action.js';
|
|
5
|
+
import { prepareOptions, mergeOptions } from './utils/options.js';
|
|
6
|
+
import Connection from './Connection.js';
|
|
7
|
+
import { lookupById } from '../utils/indexUtils.js';
|
|
8
|
+
import { isObject, isNotNullOrUndefined } from '../utils/is.js';
|
|
9
|
+
import * as authorizeData from './authorize/data.js';
|
|
10
|
+
import authorizeAction from './authorize/action.js';
|
|
11
|
+
import { compose } from '../dispatch.js';
|
|
12
|
+
import { setUpAuth } from '../create.js';
|
|
13
|
+
const debug = debugLib('great');
|
|
14
|
+
const setServiceIdAsSourceServiceOnAction = (serviceId) => (next) => async (action) => next({
|
|
15
|
+
...action,
|
|
16
|
+
payload: {
|
|
17
|
+
...action.payload,
|
|
18
|
+
sourceService: action.payload.sourceService || serviceId,
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
const isIdent = (ident) => isObject(ident);
|
|
22
|
+
async function authorizeIncoming(action, serviceId, auth) {
|
|
23
|
+
if (auth) {
|
|
24
|
+
if (typeof auth === 'boolean') {
|
|
25
|
+
return action;
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
const ident = await auth.authenticateAndGetAuthObject(action, 'asObject');
|
|
29
|
+
if (isIdent(ident)) {
|
|
30
|
+
return { ...action, meta: { ...action.meta, ident } };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
return setErrorOnAction(action, err, `service:${serviceId}`, 'autherror');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return { ...action, meta: { ...action.meta, ident: undefined } };
|
|
38
|
+
}
|
|
39
|
+
const dispatchIncoming = (dispatch, setProgress, serviceId) => async function (action) {
|
|
40
|
+
if (typeof action.response?.status === 'string') {
|
|
41
|
+
return action.response;
|
|
42
|
+
}
|
|
43
|
+
const p = dispatch(action);
|
|
44
|
+
p.onProgress(setProgress);
|
|
45
|
+
return setOrigin(await p, `service:${serviceId}`);
|
|
46
|
+
};
|
|
47
|
+
const dispatchIncomingWithMiddleware = (dispatch, middleware, serviceId, auth) => (action) => pProgress(async (setProgress) => {
|
|
48
|
+
if (action) {
|
|
49
|
+
const response = await middleware(dispatchIncoming(dispatch, setProgress, serviceId))(await authorizeIncoming(action, serviceId, auth));
|
|
50
|
+
return (setOrigin(response, `middleware:service:${serviceId}`) || {
|
|
51
|
+
status: 'error',
|
|
52
|
+
origin: `service:${serviceId}`,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
return {
|
|
57
|
+
status: 'noaction',
|
|
58
|
+
error: 'No action was dispatched',
|
|
59
|
+
origin: `service:${serviceId}`,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
const sendToTransporter = (transporter, connection, serviceId) => async function send(action) {
|
|
64
|
+
try {
|
|
65
|
+
if (await connection.connect(action.meta?.auth)) {
|
|
66
|
+
return setOrigin(await transporter.send(action, connection.object), `service:${serviceId}`, true);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
return createErrorResponse(`Could not connect to service '${serviceId}'. [${connection.status}] ${connection.error || ''}`.trim(), `service:${serviceId}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
return createErrorResponse(`Error retrieving from service '${serviceId}': ${error.message}`, `service:${serviceId}`);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
const isAuthDef = (def) => isObject(def) &&
|
|
77
|
+
typeof def.id === 'string' &&
|
|
78
|
+
typeof def.authenticator === 'string';
|
|
79
|
+
function retrieveAuthorization(authenticators, auths, auth) {
|
|
80
|
+
if (isObject(auth) && !!auth.outgoing) {
|
|
81
|
+
auth = auth.outgoing;
|
|
82
|
+
}
|
|
83
|
+
if (typeof auth === 'string') {
|
|
84
|
+
return lookupById(auth, auths);
|
|
85
|
+
}
|
|
86
|
+
else if (isAuthDef(auth)) {
|
|
87
|
+
return setUpAuth(authenticators)(auth);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function resolveIncomingAuth(authenticators, auths, auth) {
|
|
94
|
+
if (isObject(auth) && auth.incoming) {
|
|
95
|
+
return auth.incoming === true
|
|
96
|
+
? true
|
|
97
|
+
: retrieveAuthorization(authenticators, auths, auth.incoming);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
return auth === true ? true : undefined;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const getCastFn = (castFns, type) => typeof type === 'string'
|
|
104
|
+
? castFns[type]
|
|
105
|
+
: undefined;
|
|
106
|
+
const castPayload = (action, endpoint, castFn) => ({
|
|
107
|
+
...action,
|
|
108
|
+
payload: !endpoint.allowRawRequest && castFn
|
|
109
|
+
? {
|
|
110
|
+
...action.payload,
|
|
111
|
+
data: castFn(action.payload.data),
|
|
112
|
+
}
|
|
113
|
+
: action.payload,
|
|
114
|
+
meta: { ...action.meta, options: endpoint.options.transporter || {} },
|
|
115
|
+
});
|
|
116
|
+
const castResponse = (action, endpoint, castFn) => !endpoint.allowRawResponse && castFn
|
|
117
|
+
? {
|
|
118
|
+
...action,
|
|
119
|
+
response: {
|
|
120
|
+
...action.response,
|
|
121
|
+
data: castFn(action.response?.data),
|
|
122
|
+
},
|
|
123
|
+
}
|
|
124
|
+
: action;
|
|
125
|
+
const lookupAdapters = (defs = [], adapters) => defs
|
|
126
|
+
.map((adapterId) => lookupById(adapterId, adapters))
|
|
127
|
+
.filter(isNotNullOrUndefined);
|
|
128
|
+
export default class Service {
|
|
129
|
+
id;
|
|
130
|
+
meta;
|
|
131
|
+
#schemas;
|
|
132
|
+
#options;
|
|
133
|
+
#endpoints;
|
|
134
|
+
#transporter;
|
|
135
|
+
#castFns;
|
|
136
|
+
#authorization;
|
|
137
|
+
#incomingAuth;
|
|
138
|
+
#requireAuth;
|
|
139
|
+
#connection;
|
|
140
|
+
#authorizeDataFromService;
|
|
141
|
+
#authorizeDataToService;
|
|
142
|
+
#middleware;
|
|
143
|
+
constructor({ id: serviceId, transporter: transporterId, adapters: adapterDefs = [], auth, meta, options = {}, mutation, endpoints: endpointDefs = [], }, { transporters, adapters = {}, authenticators = {}, auths, schemas, castFns = {}, mapOptions = {}, middleware = [], emit = () => undefined, }) {
|
|
144
|
+
if (typeof serviceId !== 'string' || serviceId === '') {
|
|
145
|
+
throw new TypeError(`Can't create service without an id.`);
|
|
146
|
+
}
|
|
147
|
+
this.id = serviceId;
|
|
148
|
+
this.meta = meta;
|
|
149
|
+
this.#schemas = schemas;
|
|
150
|
+
this.#castFns = castFns;
|
|
151
|
+
this.#transporter = lookupById(transporterId, transporters);
|
|
152
|
+
this.#authorization = retrieveAuthorization(authenticators, auths, auth);
|
|
153
|
+
this.#incomingAuth = resolveIncomingAuth(authenticators, auths, auth);
|
|
154
|
+
this.#requireAuth = !!auth;
|
|
155
|
+
this.#authorizeDataFromService = authorizeData.fromService(schemas);
|
|
156
|
+
this.#authorizeDataToService = authorizeData.toService(schemas);
|
|
157
|
+
const serviceAdapters = lookupAdapters(adapterDefs, adapters);
|
|
158
|
+
const serviceOptions = prepareOptions(options);
|
|
159
|
+
this.#options = serviceOptions.transporter;
|
|
160
|
+
this.#endpoints = Endpoint.sortAndPrepare(endpointDefs).map((endpoint) => new Endpoint(endpoint, serviceId, endpoint.options
|
|
161
|
+
? mergeOptions(serviceOptions, prepareOptions(endpoint.options))
|
|
162
|
+
: serviceOptions, mapOptions, mutation, [...serviceAdapters, ...lookupAdapters(endpoint.adapters, adapters)]));
|
|
163
|
+
this.#middleware =
|
|
164
|
+
middleware.length > 0 ? compose(...middleware) : (fn) => fn;
|
|
165
|
+
this.#connection = this.#transporter
|
|
166
|
+
? new Connection(this.#transporter, serviceOptions.transporter, emit)
|
|
167
|
+
: null;
|
|
168
|
+
}
|
|
169
|
+
endpointFromAction(action, isIncoming = false) {
|
|
170
|
+
return Endpoint.findMatchingEndpoint(this.#endpoints, action, isIncoming);
|
|
171
|
+
}
|
|
172
|
+
authorizeAction(action) {
|
|
173
|
+
return authorizeAction(this.#schemas, this.#requireAuth)(action);
|
|
174
|
+
}
|
|
175
|
+
async mutateRequest(action, endpoint) {
|
|
176
|
+
const castFn = getCastFn(this.#castFns, action.payload.type);
|
|
177
|
+
const casted = castPayload(action, endpoint, castFn);
|
|
178
|
+
const authorized = this.#authorizeDataToService(casted, endpoint.allowRawRequest);
|
|
179
|
+
let mutated;
|
|
180
|
+
try {
|
|
181
|
+
mutated = await endpoint.mutate(authorized, true);
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
return setErrorOnAction(action, `Error while mutating request: ${error instanceof Error ? error.message : String(error)}`, 'mutate:request');
|
|
185
|
+
}
|
|
186
|
+
return setOriginOnAction(mutated, 'mutate:request', false);
|
|
187
|
+
}
|
|
188
|
+
async mutateIncomingRequest(action, endpoint) {
|
|
189
|
+
let mutated;
|
|
190
|
+
try {
|
|
191
|
+
mutated = await endpoint.mutate(action, false);
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
return setErrorOnAction(action, `Error while mutating incoming request: ${error instanceof Error ? error.message : String(error)}`, 'mutate:request:incoming');
|
|
195
|
+
}
|
|
196
|
+
const castFn = getCastFn(this.#castFns, action.payload.type);
|
|
197
|
+
const casted = castPayload(mutated, endpoint, castFn);
|
|
198
|
+
const withOrigin = setOriginOnAction(casted, 'mutate:request:incoming');
|
|
199
|
+
return this.#authorizeDataToService(withOrigin, endpoint.allowRawRequest);
|
|
200
|
+
}
|
|
201
|
+
async mutateResponse(action, endpoint) {
|
|
202
|
+
let mutated;
|
|
203
|
+
try {
|
|
204
|
+
mutated = await endpoint.mutate(action, false);
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
return {
|
|
208
|
+
...action.response,
|
|
209
|
+
...createErrorResponse(`Error while mutating response: ${error instanceof Error ? error.message : String(error)}`, 'mutate:response'),
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
const castFn = getCastFn(this.#castFns, action.payload.type);
|
|
213
|
+
const casted = castResponse(mutated, endpoint, castFn);
|
|
214
|
+
const withOrigin = setOriginOnAction(casted, 'mutate:response', false);
|
|
215
|
+
const { response } = this.#authorizeDataFromService(withOrigin, endpoint.allowRawResponse);
|
|
216
|
+
return response || { status: undefined };
|
|
217
|
+
}
|
|
218
|
+
async mutateIncomingResponse(action, endpoint) {
|
|
219
|
+
const castFn = getCastFn(this.#castFns, action.payload.type);
|
|
220
|
+
const casted = castResponse(action, endpoint, castFn);
|
|
221
|
+
const authorized = this.#authorizeDataFromService(casted, endpoint.allowRawResponse);
|
|
222
|
+
let mutated;
|
|
223
|
+
try {
|
|
224
|
+
mutated = await endpoint.mutate(authorized, true);
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
return {
|
|
228
|
+
...action.response,
|
|
229
|
+
...createErrorResponse(`Error while mutating response: ${error instanceof Error ? error.message : String(error)}`, 'mutate:response:incoming'),
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
const { response } = setOriginOnAction(mutated, 'mutate:response:incoming', false);
|
|
233
|
+
return response || { status: undefined };
|
|
234
|
+
}
|
|
235
|
+
async send(action) {
|
|
236
|
+
if (action.response?.status) {
|
|
237
|
+
return action.response;
|
|
238
|
+
}
|
|
239
|
+
if (!this.#transporter || !this.#connection) {
|
|
240
|
+
return createErrorResponse(`Service '${this.id}' has no transporter`, `internal:service:${this.id}`);
|
|
241
|
+
}
|
|
242
|
+
if (!action.meta?.authorized) {
|
|
243
|
+
return createErrorResponse('Not authorized', `internal:service:${this.id}`, 'autherror');
|
|
244
|
+
}
|
|
245
|
+
if (this.#authorization) {
|
|
246
|
+
await this.#authorization.authenticate(action);
|
|
247
|
+
action = this.#authorization.applyToAction(action, this.#transporter);
|
|
248
|
+
if (action.response?.status) {
|
|
249
|
+
return setOrigin(action.response, `service:${this.id}`, true);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
return setOrigin(await this.#middleware(sendToTransporter(this.#transporter, this.#connection, this.id))(action), `middleware:service:${this.id}`);
|
|
253
|
+
}
|
|
254
|
+
async listen(dispatch) {
|
|
255
|
+
debug('Set up service listening ...');
|
|
256
|
+
if (!this.#transporter) {
|
|
257
|
+
debug(`Service '${this.id}' has no transporter`);
|
|
258
|
+
return createErrorResponse(`Service '${this.id}' has no transporter`, `internal:service:${this.id}`);
|
|
259
|
+
}
|
|
260
|
+
if (!this.#connection) {
|
|
261
|
+
debug(`Service '${this.id}' has no open connection`);
|
|
262
|
+
return createErrorResponse(`Service '${this.id}' has no open connection`, `service:${this.id}`);
|
|
263
|
+
}
|
|
264
|
+
if (typeof this.#transporter.listen !== 'function') {
|
|
265
|
+
debug('Transporter has no listen method');
|
|
266
|
+
return createErrorResponse('Transporter has no listen method', `service:${this.id}`, 'noaction');
|
|
267
|
+
}
|
|
268
|
+
if (typeof this.#transporter.shouldListen === 'function' &&
|
|
269
|
+
!this.#transporter.shouldListen(this.#options)) {
|
|
270
|
+
debug('Transporter is not configured to listen');
|
|
271
|
+
return createErrorResponse('Transporter is not configured to listen', `service:${this.id}`, 'noaction');
|
|
272
|
+
}
|
|
273
|
+
if (this.#authorization &&
|
|
274
|
+
!(await this.#authorization.authenticate(null))) {
|
|
275
|
+
debug('Could not authenticate');
|
|
276
|
+
return setOrigin(this.#authorization.getStatusObject(), `service:${this.id}`, true);
|
|
277
|
+
}
|
|
278
|
+
if (!(await this.#connection.connect(this.#authorization?.getAuthObject(this.#transporter)))) {
|
|
279
|
+
debug(`Could not listen to '${this.id}' service. Failed to connect`);
|
|
280
|
+
return createErrorResponse(`Could not listen to '${this.id}' service. Failed to connect`, `service:${this.id}`);
|
|
281
|
+
}
|
|
282
|
+
const incomingMiddleware = compose(this.#middleware, setServiceIdAsSourceServiceOnAction(this.id));
|
|
283
|
+
debug('Calling transporter listen() ...');
|
|
284
|
+
return this.#transporter.listen(dispatchIncomingWithMiddleware(dispatch, incomingMiddleware, this.id, this.#incomingAuth), this.#connection.object);
|
|
285
|
+
}
|
|
286
|
+
async close() {
|
|
287
|
+
debug(`Close service '${this.id}'`);
|
|
288
|
+
if (!this.#transporter || !this.#connection) {
|
|
289
|
+
debug('No transporter to disconnect');
|
|
290
|
+
return createErrorResponse('No transporter to disconnect', `internal:service:${this.id}`, 'noaction');
|
|
291
|
+
}
|
|
292
|
+
await this.#transporter.disconnect(this.#connection.object);
|
|
293
|
+
this.#connection = null;
|
|
294
|
+
debug(`Closed`);
|
|
295
|
+
return { status: 'ok' };
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=Service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Service.js","sourceRoot":"","sources":["../../src/service/Service.ts"],"names":[],"mappings":"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"}
|
package/dist/service/index.js
CHANGED
|
@@ -230,7 +230,7 @@ export default ({ transporters, adapters = {}, authenticators = {}, auths, schem
|
|
|
230
230
|
debug(`Could not listen to '${serviceId}' service. Failed to connect`);
|
|
231
231
|
return createErrorResponse(`Could not listen to '${serviceId}' service. Failed to connect`);
|
|
232
232
|
}
|
|
233
|
-
const incomingMiddleware = compose(
|
|
233
|
+
const incomingMiddleware = compose(setServiceIdAsSourceServiceOnAction(serviceId), runThroughMiddleware);
|
|
234
234
|
debug('Calling transporter listen() ...');
|
|
235
235
|
return transporter.listen(dispatchIncomingWithMiddleware(dispatch, incomingMiddleware, incomingAuth), connection.object);
|
|
236
236
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/service/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,OAAO,CAAA;AAC5B,OAAO,SAA+B,MAAM,YAAY,CAAA;AACxD,OAAO,qBAAqB,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,UAAU,MAAM,iBAAiB,CAAA;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,SAAS,MAAM,uBAAuB,CAAA;AAC7C,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAA;AACpD,OAAO,eAAe,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAsBxC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;AAc/B,MAAM,mCAAmC,GACvC,CAAC,SAAiB,EAAc,EAAE,CAClC,CAAC,IAAI,EAAE,EAAE,CACT,KAAK,EAAE,MAAc,EAAE,EAAE,CACvB,IAAI,CAAC;IACH,GAAG,MAAM;IACT,OAAO,EAAE;QACP,GAAG,MAAM,CAAC,OAAO;QACjB,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa,IAAI,SAAS;KACzD;CACF,CAAC,CAAA;AAEN,MAAM,OAAO,GAAG,CAAC,KAAc,EAAkB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAEnE,KAAK,UAAU,iBAAiB,CAAC,MAAc,EAAE,IAAqB;IACpE,IAAI,IAAI,EAAE;QACR,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/service/index.ts"],"names":[],"mappings":"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"}
|
package/dist/service/types.d.ts
CHANGED
|
@@ -21,10 +21,12 @@ export type AuthOptions = Record<string, unknown>;
|
|
|
21
21
|
export interface Authentication extends Record<string, unknown> {
|
|
22
22
|
status: string;
|
|
23
23
|
error?: string;
|
|
24
|
+
authKey?: string;
|
|
24
25
|
}
|
|
25
|
-
export interface Authenticator<T extends Authentication = Authentication> {
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
export interface Authenticator<T extends Authentication = Authentication, U extends AuthOptions = AuthOptions> {
|
|
27
|
+
extractAuthKey?: (options: U | null, action: Action | null) => string;
|
|
28
|
+
authenticate: (options: U | null, action: Action | null) => Promise<T>;
|
|
29
|
+
isAuthenticated: (authentication: T | null, options: U | null, action: Action | null) => boolean;
|
|
28
30
|
authentication: {
|
|
29
31
|
[asFunction: string]: (authentication: T | null) => Record<string, unknown>;
|
|
30
32
|
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const has = (prop) => Number(prop !== undefined);
|
|
2
|
+
const hasArray = (prop) => Number(Array.isArray(prop) && prop.length);
|
|
3
|
+
const hasParams = ({ params }, required) => Number(!!params &&
|
|
4
|
+
Object.values(params).filter((isRequired) => isRequired === required)
|
|
5
|
+
.length);
|
|
6
|
+
const hasFilters = ({ filters }) => Number(!!filters && Object.keys(filters).length);
|
|
7
|
+
export default (a, b) => {
|
|
8
|
+
const matchA = a.match || {};
|
|
9
|
+
const matchB = b.match || {};
|
|
10
|
+
return (has(matchB.incoming) - has(matchA.incoming) ||
|
|
11
|
+
has(matchB.type) - has(matchA.type) ||
|
|
12
|
+
hasArray(matchA.type) - hasArray(matchB.type) ||
|
|
13
|
+
hasParams(matchB, true) - hasParams(matchA, true) ||
|
|
14
|
+
hasParams(matchB, false) - hasParams(matchA, false) ||
|
|
15
|
+
hasFilters(matchB) - hasFilters(matchA) ||
|
|
16
|
+
has(matchB.scope) - has(matchA.scope) ||
|
|
17
|
+
hasArray(matchA.scope) - hasArray(matchB.scope) ||
|
|
18
|
+
has(matchB.action) - has(matchA.action) ||
|
|
19
|
+
hasArray(matchA.action) - hasArray(matchB.action) ||
|
|
20
|
+
has(a.id) - has(b.id));
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=compare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../src/service/utils/compare.ts"],"names":[],"mappings":"AAEA,MAAM,GAAG,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;AACzD,MAAM,QAAQ,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAA;AAC9E,MAAM,SAAS,GAAG,CAAC,EAAE,MAAM,EAAe,EAAE,QAAiB,EAAE,EAAE,CAC/D,MAAM,CACJ,CAAC,CAAC,MAAM;IACN,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,KAAK,QAAQ,CAAC;SAClE,MAAM,CACZ,CAAA;AACH,MAAM,UAAU,GAAG,CAAC,EAAE,OAAO,EAAe,EAAE,EAAE,CAC9C,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;AAElD,eAAe,CAAC,CAAc,EAAE,CAAc,EAAU,EAAE;IACxD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAA;IAC5B,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAA;IAE5B,OAAO,CACL,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC3C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QACnC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7C,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC;QACjD,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC;QACnD,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;QACvC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QACrC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/C,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QACvC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACjD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CACtB,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import validateFilters from '../../utils/validateFilters.js';
|
|
2
|
+
import { arrayIncludes } from '../../utils/array.js';
|
|
3
|
+
const matchValue = (match, value) => arrayIncludes(match, value);
|
|
4
|
+
const hasParam = (params, key) => params && params[key] !== undefined;
|
|
5
|
+
const matchId = (endpoint, { payload: { endpoint: endpointId } = {} }) => !endpointId || endpoint.id === endpointId;
|
|
6
|
+
const matchType = ({ match = {} }, { payload }) => !match.type || matchValue(match.type, payload.type);
|
|
7
|
+
const matchScope = ({ match = {} }, { payload }) => !match.scope ||
|
|
8
|
+
matchValue(match.scope, payload.id
|
|
9
|
+
? Array.isArray(payload.id)
|
|
10
|
+
? 'members'
|
|
11
|
+
: 'member'
|
|
12
|
+
: 'collection');
|
|
13
|
+
const matchAction = ({ match = {} }, { type }) => !match.action || matchValue(match.action, type);
|
|
14
|
+
const matchParams = ({ match: { params } = {} }, { payload }) => typeof params !== 'object' ||
|
|
15
|
+
params === null ||
|
|
16
|
+
Object.entries(params).every(([key, isRequired]) => !isRequired || hasParam(payload, key));
|
|
17
|
+
const matchIncoming = ({ match: { incoming: incomingEndpoint } = {} }, isIncoming) => incomingEndpoint === undefined || incomingEndpoint === isIncoming;
|
|
18
|
+
export default function isMatch(endpoint) {
|
|
19
|
+
const match = endpoint.match || {};
|
|
20
|
+
const matchFilters = match.filters ? validateFilters(match.filters) : () => [];
|
|
21
|
+
return (action, isIncoming = false) => matchId(endpoint, action) &&
|
|
22
|
+
matchType(endpoint, action) &&
|
|
23
|
+
matchScope(endpoint, action) &&
|
|
24
|
+
matchAction(endpoint, action) &&
|
|
25
|
+
matchParams(endpoint, action) &&
|
|
26
|
+
matchIncoming(endpoint, isIncoming) &&
|
|
27
|
+
matchFilters(action).length === 0;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=match.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"match.js","sourceRoot":"","sources":["../../../src/service/utils/match.ts"],"names":[],"mappings":"AAEA,OAAO,eAAe,MAAM,gCAAgC,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,MAAM,UAAU,GAAG,CAAC,KAAyB,EAAE,KAAyB,EAAE,EAAE,CAC1E,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAE7B,MAAM,QAAQ,GAAG,CAAC,MAA0B,EAAE,GAAW,EAAE,EAAE,CAC3D,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAA;AAErC,MAAM,OAAO,GAAG,CACd,QAAqB,EACrB,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,EAAU,EAClD,EAAE,CAAC,CAAC,UAAU,IAAI,QAAQ,CAAC,EAAE,KAAK,UAAU,CAAA;AAE9C,MAAM,SAAS,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAe,EAAE,EAAE,OAAO,EAAU,EAAE,EAAE,CACrE,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;AAErD,MAAM,UAAU,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAe,EAAE,EAAE,OAAO,EAAU,EAAE,EAAE,CACtE,CAAC,KAAK,CAAC,KAAK;IACZ,UAAU,CACR,KAAK,CAAC,KAAK,EACX,OAAO,CAAC,EAAE;QACR,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,QAAQ;QACZ,CAAC,CAAC,YAAY,CACjB,CAAA;AAEH,MAAM,WAAW,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAe,EAAE,EAAE,IAAI,EAAU,EAAE,EAAE,CACpE,CAAC,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAEjD,MAAM,WAAW,GAAG,CAClB,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAe,EACvC,EAAE,OAAO,EAAU,EACnB,EAAE,CACF,OAAO,MAAM,KAAK,QAAQ;IAC1B,MAAM,KAAK,IAAI;IACf,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAC1B,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,IAAI,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAC7D,CAAA;AAEH,MAAM,aAAa,GAAG,CACpB,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,EAAE,EAAe,EAC3D,UAAmB,EACnB,EAAE,CAAC,gBAAgB,KAAK,SAAS,IAAI,gBAAgB,KAAK,UAAU,CAAA;AAQtE,MAAM,CAAC,OAAO,UAAU,OAAO,CAC7B,QAAqB;IAErB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAA;IAClC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAA;IAE9E,OAAO,CAAC,MAAM,EAAE,UAAU,GAAG,KAAK,EAAE,EAAE,CACpC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;QACzB,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC3B,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC5B,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC7B,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC7B,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC;QACnC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAA;AACrC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ServiceOptions, PreparedOptions } from '../types.js';
|
|
2
|
+
export declare function prepareOptions({ transporter: { incoming, ...transporter }, incoming: incomingBase, adapters, ...topLevel }: ServiceOptions): PreparedOptions;
|
|
3
|
+
export declare function mergeOptions(a: PreparedOptions, b: PreparedOptions): {
|
|
4
|
+
transporter: {
|
|
5
|
+
[x: string]: unknown;
|
|
6
|
+
};
|
|
7
|
+
adapters?: undefined;
|
|
8
|
+
} | {
|
|
9
|
+
transporter: {
|
|
10
|
+
[x: string]: unknown;
|
|
11
|
+
};
|
|
12
|
+
adapters: {
|
|
13
|
+
[k: string]: {
|
|
14
|
+
[x: string]: unknown;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import deepClone from '../../utils/deepClone.js';
|
|
2
|
+
export function prepareOptions({ transporter: { incoming, ...transporter } = {}, incoming: incomingBase, adapters, ...topLevel }) {
|
|
3
|
+
const transporterOptions = {
|
|
4
|
+
...topLevel,
|
|
5
|
+
...transporter,
|
|
6
|
+
...(incoming || incomingBase
|
|
7
|
+
? { incoming: { ...incomingBase, ...incoming } }
|
|
8
|
+
: {}),
|
|
9
|
+
};
|
|
10
|
+
return adapters
|
|
11
|
+
? { transporter: transporterOptions, adapters }
|
|
12
|
+
: { transporter: transporterOptions };
|
|
13
|
+
}
|
|
14
|
+
const removeIncoming = ({ incoming, ...options }) => options;
|
|
15
|
+
export function mergeOptions(a, b) {
|
|
16
|
+
const transporterOptions = deepClone({
|
|
17
|
+
...removeIncoming(a.transporter),
|
|
18
|
+
...removeIncoming(b.transporter),
|
|
19
|
+
});
|
|
20
|
+
if (a.transporter.incoming || b.transporter.incoming) {
|
|
21
|
+
transporterOptions.incoming = deepClone({
|
|
22
|
+
...a.transporter.incoming,
|
|
23
|
+
...b.transporter.incoming,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
const adaptersA = a.adapters || {};
|
|
27
|
+
const adaptersB = b.adapters || {};
|
|
28
|
+
const adapterIds = [
|
|
29
|
+
...Object.keys(adaptersA),
|
|
30
|
+
...Object.keys(adaptersB),
|
|
31
|
+
].filter((id, index, ids) => !ids.slice(0, index).includes(id));
|
|
32
|
+
if (adapterIds.length === 0) {
|
|
33
|
+
return { transporter: transporterOptions };
|
|
34
|
+
}
|
|
35
|
+
const adapterOptions = Object.fromEntries(adapterIds.map((id) => [
|
|
36
|
+
id,
|
|
37
|
+
deepClone({ ...adaptersA[id], ...adaptersB[id] }),
|
|
38
|
+
]));
|
|
39
|
+
return { transporter: transporterOptions, adapters: adapterOptions };
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/service/utils/options.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,0BAA0B,CAAA;AAOhD,MAAM,UAAU,cAAc,CAAC,EAC7B,WAAW,EAAE,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,GAAG,EAAE,EAC9C,QAAQ,EAAE,YAAY,EACtB,QAAQ,EACR,GAAG,QAAQ,EACI;IAEf,MAAM,kBAAkB,GAAG;QACzB,GAAG,QAAQ;QACX,GAAG,WAAW;QACd,GAAG,CAAC,QAAQ,IAAI,YAAY;YAC1B,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,YAAY,EAAE,GAAG,QAAQ,EAAE,EAAE;YAChD,CAAC,CAAC,EAAE,CAAC;KACR,CAAA;IAED,OAAO,QAAQ;QACb,CAAC,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAAE;QAC/C,CAAC,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAA;AACzC,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAsB,EAAE,EAAE,CAAC,OAAO,CAAA;AAEhF,MAAM,UAAU,YAAY,CAAC,CAAkB,EAAE,CAAkB;IACjE,MAAM,kBAAkB,GAAG,SAAS,CAAC;QACnC,GAAG,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,GAAG,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC;KACjC,CAAC,CAAA;IACF,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE;QACpD,kBAAkB,CAAC,QAAQ,GAAG,SAAS,CAAC;YACtC,GAAG,CAAC,CAAC,WAAW,CAAC,QAAQ;YACzB,GAAG,CAAC,CAAC,WAAW,CAAC,QAAQ;SAC1B,CAAC,CAAA;KACH;IAED,MAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAA;IAClC,MAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAA;IAClC,MAAM,UAAU,GAAG;QACjB,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACzB,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;KAC1B,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;IAE/D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAA;KAC3C;IAED,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CACvC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;QACrB,EAAE;QACF,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;KAClD,CAAC,CACH,CAAA;IAED,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAA;AACtE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "integreat",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.3",
|
|
4
4
|
"description": "Node.js integration layer",
|
|
5
5
|
"author": "Kjell-Morten Bratsberg Thorsen <kjellmorten@integreat.io> (https://integreat.io/)",
|
|
6
6
|
"license": "ISC",
|
|
@@ -59,6 +59,6 @@
|
|
|
59
59
|
"integreat-adapter-json": "^0.6.0",
|
|
60
60
|
"integreat-transporter-http": "0.1.0",
|
|
61
61
|
"nock": "^13.3.1",
|
|
62
|
-
"sinon": "^15.
|
|
62
|
+
"sinon": "^15.2.0"
|
|
63
63
|
}
|
|
64
64
|
}
|