@feathersjs/schema 5.0.0-pre.36 → 5.0.0-pre.38
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 +17 -0
- package/lib/hooks/resolve.d.ts +3 -3
- package/lib/hooks/resolve.js +31 -42
- package/lib/hooks/resolve.js.map +1 -1
- package/lib/hooks/validate.js +3 -3
- package/lib/hooks/validate.js.map +1 -1
- package/lib/json-schema.d.ts +10 -0
- package/lib/json-schema.js +8 -5
- package/lib/json-schema.js.map +1 -1
- package/package.json +10 -10
- package/src/hooks/resolve.ts +35 -43
- package/src/hooks/validate.ts +4 -4
- package/src/json-schema.ts +8 -5
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [5.0.0-pre.38](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.37...v5.0.0-pre.38) (2023-02-17)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **schema:** validateQuery - move next function outside of try-catch ([#3053](https://github.com/feathersjs/feathers/issues/3053)) ([37fe5c4](https://github.com/feathersjs/feathers/commit/37fe5c4a4d813867f6d02098b7c77d08786248c7))
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **schema:** Add schema helper for handling Object ids ([#3058](https://github.com/feathersjs/feathers/issues/3058)) ([1393bed](https://github.com/feathersjs/feathers/commit/1393bed81a9ee814de6aab0e537af83e667591a2))
|
|
15
|
+
|
|
16
|
+
# [5.0.0-pre.37](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.36...v5.0.0-pre.37) (2023-02-09)
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
- **schema:** Do not change the hook context in resolvers ([#3048](https://github.com/feathersjs/feathers/issues/3048)) ([bfd8c04](https://github.com/feathersjs/feathers/commit/bfd8c04c15279063a0d4b70771715c656dda5f7c))
|
|
21
|
+
- **schema:** Ensure that resolveResult and resolveExternal are run as around hooks ([#3032](https://github.com/feathersjs/feathers/issues/3032)) ([71942f4](https://github.com/feathersjs/feathers/commit/71942f418e3afe167aef4f98b1a97356dae7625c))
|
|
22
|
+
|
|
6
23
|
# [5.0.0-pre.36](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.35...v5.0.0-pre.36) (2023-01-29)
|
|
7
24
|
|
|
8
25
|
### Bug Fixes
|
package/lib/hooks/resolve.d.ts
CHANGED
|
@@ -3,13 +3,13 @@ import { Resolver } from '../resolver';
|
|
|
3
3
|
export type ResolverSetting<H extends HookContext> = Resolver<any, H> | Resolver<any, H>[];
|
|
4
4
|
export declare const resolveQuery: <H extends HookContext<import("@feathersjs/feathers").Application<any, any>, any>>(...resolvers: Resolver<any, H>[]) => (context: H, next?: NextFunction) => Promise<any>;
|
|
5
5
|
export declare const resolveData: <H extends HookContext<import("@feathersjs/feathers").Application<any, any>, any>>(...resolvers: Resolver<any, H>[]) => (context: H, next?: NextFunction) => Promise<any>;
|
|
6
|
-
export declare const resolveResult: <H extends HookContext<import("@feathersjs/feathers").Application<any, any>, any>>(...resolvers: Resolver<any, H>[]) => (context: H, next
|
|
6
|
+
export declare const resolveResult: <H extends HookContext<import("@feathersjs/feathers").Application<any, any>, any>>(...resolvers: Resolver<any, H>[]) => (context: H, next: NextFunction) => Promise<void>;
|
|
7
7
|
export declare const DISPATCH: unique symbol;
|
|
8
8
|
export declare const getDispatchValue: (value: any) => any;
|
|
9
9
|
export declare const getDispatch: (value: any) => any;
|
|
10
10
|
export declare const setDispatch: (current: any, dispatch: any) => any;
|
|
11
|
-
export declare const
|
|
12
|
-
export declare const
|
|
11
|
+
export declare const resolveExternal: <H extends HookContext<import("@feathersjs/feathers").Application<any, any>, any>>(...resolvers: Resolver<any, H>[]) => (context: H, next: NextFunction) => Promise<void>;
|
|
12
|
+
export declare const resolveDispatch: <H extends HookContext<import("@feathersjs/feathers").Application<any, any>, any>>(...resolvers: Resolver<any, H>[]) => (context: H, next: NextFunction) => Promise<void>;
|
|
13
13
|
type ResolveAllSettings<H extends HookContext> = {
|
|
14
14
|
data?: {
|
|
15
15
|
create: Resolver<any, H>;
|
package/lib/hooks/resolve.js
CHANGED
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveAll = exports.
|
|
3
|
+
exports.resolveAll = exports.resolveDispatch = exports.resolveExternal = exports.setDispatch = exports.getDispatch = exports.getDispatchValue = exports.DISPATCH = exports.resolveResult = exports.resolveData = exports.resolveQuery = void 0;
|
|
4
4
|
const hooks_1 = require("@feathersjs/hooks");
|
|
5
|
-
const getContext = (context) => {
|
|
6
|
-
return Object.freeze({
|
|
7
|
-
...context,
|
|
8
|
-
params: Object.freeze({
|
|
9
|
-
...context.params,
|
|
10
|
-
query: Object.freeze({})
|
|
11
|
-
})
|
|
12
|
-
});
|
|
13
|
-
};
|
|
14
5
|
const getResult = (context) => {
|
|
15
6
|
const isPaginated = context.method === 'find' && context.result.data;
|
|
16
7
|
const data = isPaginated ? context.result.data : context.result;
|
|
@@ -27,9 +18,8 @@ const runResolvers = async (resolvers, data, ctx, status) => {
|
|
|
27
18
|
};
|
|
28
19
|
const resolveQuery = (...resolvers) => async (context, next) => {
|
|
29
20
|
var _a;
|
|
30
|
-
const ctx = getContext(context);
|
|
31
21
|
const data = ((_a = context === null || context === void 0 ? void 0 : context.params) === null || _a === void 0 ? void 0 : _a.query) || {};
|
|
32
|
-
const query = await runResolvers(resolvers, data,
|
|
22
|
+
const query = await runResolvers(resolvers, data, context);
|
|
33
23
|
context.params = {
|
|
34
24
|
...context.params,
|
|
35
25
|
query
|
|
@@ -41,16 +31,15 @@ const resolveQuery = (...resolvers) => async (context, next) => {
|
|
|
41
31
|
exports.resolveQuery = resolveQuery;
|
|
42
32
|
const resolveData = (...resolvers) => async (context, next) => {
|
|
43
33
|
if (context.data !== undefined) {
|
|
44
|
-
const ctx = getContext(context);
|
|
45
34
|
const data = context.data;
|
|
46
35
|
const status = {
|
|
47
36
|
originalContext: context
|
|
48
37
|
};
|
|
49
38
|
if (Array.isArray(data)) {
|
|
50
|
-
context.data = await Promise.all(data.map((current) => runResolvers(resolvers, current,
|
|
39
|
+
context.data = await Promise.all(data.map((current) => runResolvers(resolvers, current, context, status)));
|
|
51
40
|
}
|
|
52
41
|
else {
|
|
53
|
-
context.data = await runResolvers(resolvers, data,
|
|
42
|
+
context.data = await runResolvers(resolvers, data, context, status);
|
|
54
43
|
}
|
|
55
44
|
}
|
|
56
45
|
if (typeof next === 'function') {
|
|
@@ -62,30 +51,30 @@ const resolveResult = (...resolvers) => {
|
|
|
62
51
|
const virtualProperties = new Set(resolvers.reduce((acc, current) => acc.concat(current.virtualNames), []));
|
|
63
52
|
return async (context, next) => {
|
|
64
53
|
var _a;
|
|
65
|
-
if (typeof next
|
|
66
|
-
|
|
67
|
-
const $select = Array.isArray(select) ? select.filter((name) => !virtualProperties.has(name)) : select;
|
|
68
|
-
const resolve = {
|
|
69
|
-
originalContext: context,
|
|
70
|
-
...context.params.resolve,
|
|
71
|
-
properties: $resolve || select
|
|
72
|
-
};
|
|
73
|
-
context.params = {
|
|
74
|
-
...context.params,
|
|
75
|
-
resolve,
|
|
76
|
-
query: {
|
|
77
|
-
...query,
|
|
78
|
-
...($select ? { $select } : {})
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
await next();
|
|
54
|
+
if (typeof next !== 'function') {
|
|
55
|
+
throw new Error('The resolveResult hook must be used as an around hook');
|
|
82
56
|
}
|
|
83
|
-
const
|
|
57
|
+
const { $resolve, $select: select, ...query } = ((_a = context.params) === null || _a === void 0 ? void 0 : _a.query) || {};
|
|
58
|
+
const $select = Array.isArray(select) ? select.filter((name) => !virtualProperties.has(name)) : select;
|
|
59
|
+
const resolve = {
|
|
60
|
+
originalContext: context,
|
|
61
|
+
...context.params.resolve,
|
|
62
|
+
properties: $resolve || select
|
|
63
|
+
};
|
|
64
|
+
context.params = {
|
|
65
|
+
...context.params,
|
|
66
|
+
resolve,
|
|
67
|
+
query: {
|
|
68
|
+
...query,
|
|
69
|
+
...($select ? { $select } : {})
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
await next();
|
|
84
73
|
const status = context.params.resolve;
|
|
85
74
|
const { isPaginated, data } = getResult(context);
|
|
86
75
|
const result = Array.isArray(data)
|
|
87
|
-
? await Promise.all(data.map(async (current) => runResolvers(resolvers, current,
|
|
88
|
-
: await runResolvers(resolvers, data,
|
|
76
|
+
? await Promise.all(data.map(async (current) => runResolvers(resolvers, current, context, status)))
|
|
77
|
+
: await runResolvers(resolvers, data, context, status);
|
|
89
78
|
if (isPaginated) {
|
|
90
79
|
context.result.data = result;
|
|
91
80
|
}
|
|
@@ -119,11 +108,11 @@ const setDispatch = (current, dispatch) => {
|
|
|
119
108
|
return dispatch;
|
|
120
109
|
};
|
|
121
110
|
exports.setDispatch = setDispatch;
|
|
122
|
-
const
|
|
123
|
-
if (typeof next
|
|
124
|
-
|
|
111
|
+
const resolveExternal = (...resolvers) => async (context, next) => {
|
|
112
|
+
if (typeof next !== 'function') {
|
|
113
|
+
throw new Error('The resolveExternal hook must be used as an around hook');
|
|
125
114
|
}
|
|
126
|
-
|
|
115
|
+
await next();
|
|
127
116
|
const existingDispatch = (0, exports.getDispatch)(context.result);
|
|
128
117
|
if (existingDispatch !== null) {
|
|
129
118
|
context.dispatch = existingDispatch;
|
|
@@ -132,7 +121,7 @@ const resolveDispatch = (...resolvers) => async (context, next) => {
|
|
|
132
121
|
const status = context.params.resolve;
|
|
133
122
|
const { isPaginated, data } = getResult(context);
|
|
134
123
|
const resolveAndGetDispatch = async (current) => {
|
|
135
|
-
const resolved = await runResolvers(resolvers, current,
|
|
124
|
+
const resolved = await runResolvers(resolvers, current, context, status);
|
|
136
125
|
const currentDispatch = Object.keys(resolved).reduce((res, key) => {
|
|
137
126
|
res[key] = (0, exports.getDispatchValue)(resolved[key]);
|
|
138
127
|
return res;
|
|
@@ -151,8 +140,8 @@ const resolveDispatch = (...resolvers) => async (context, next) => {
|
|
|
151
140
|
context.dispatch = (0, exports.setDispatch)(context.result, dispatch);
|
|
152
141
|
}
|
|
153
142
|
};
|
|
154
|
-
exports.
|
|
155
|
-
exports.
|
|
143
|
+
exports.resolveExternal = resolveExternal;
|
|
144
|
+
exports.resolveDispatch = exports.resolveExternal;
|
|
156
145
|
const dataMethods = ['create', 'update', 'patch'];
|
|
157
146
|
/**
|
|
158
147
|
* Resolve all resolvers at once.
|
package/lib/hooks/resolve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/hooks/resolve.ts"],"names":[],"mappings":";;;AACA,6CAA2C;AAG3C,MAAM,
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/hooks/resolve.ts"],"names":[],"mappings":"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"}
|
package/lib/hooks/validate.js
CHANGED
|
@@ -15,13 +15,13 @@ const validateQuery = (schema) => {
|
|
|
15
15
|
...context.params,
|
|
16
16
|
query
|
|
17
17
|
};
|
|
18
|
-
if (typeof next === 'function') {
|
|
19
|
-
return next();
|
|
20
|
-
}
|
|
21
18
|
}
|
|
22
19
|
catch (error) {
|
|
23
20
|
throw error.ajv ? new errors_1.BadRequest(error.message, error.errors) : error;
|
|
24
21
|
}
|
|
22
|
+
if (typeof next === 'function') {
|
|
23
|
+
return next();
|
|
24
|
+
}
|
|
25
25
|
};
|
|
26
26
|
};
|
|
27
27
|
exports.validateQuery = validateQuery;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/hooks/validate.ts"],"names":[],"mappings":";;;AACA,+CAA+C;AAC/C,iEAAuD;AAIhD,MAAM,aAAa,GAAG,CAAwB,MAA+B,EAAE,EAAE;IACtF,MAAM,SAAS,GAAc,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAEjG,OAAO,KAAK,EAAE,OAAU,EAAE,IAAmB,EAAE,EAAE;;QAC/C,MAAM,IAAI,GAAG,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,KAAK,KAAI,EAAE,CAAA;QAEzC,IAAI;YACF,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;YAEnC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,2BAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YAExD,OAAO,CAAC,MAAM,GAAG;gBACf,GAAG,OAAO,CAAC,MAAM;gBACjB,KAAK;aACN,CAAA;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/hooks/validate.ts"],"names":[],"mappings":";;;AACA,+CAA+C;AAC/C,iEAAuD;AAIhD,MAAM,aAAa,GAAG,CAAwB,MAA+B,EAAE,EAAE;IACtF,MAAM,SAAS,GAAc,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAEjG,OAAO,KAAK,EAAE,OAAU,EAAE,IAAmB,EAAE,EAAE;;QAC/C,MAAM,IAAI,GAAG,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,KAAK,KAAI,EAAE,CAAA;QAEzC,IAAI;YACF,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;YAEnC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,2BAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YAExD,OAAO,CAAC,MAAM,GAAG;gBACf,GAAG,OAAO,CAAC,MAAM;gBACjB,KAAK;aACN,CAAA;SACF;QAAC,OAAO,KAAU,EAAE;YACnB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,mBAAU,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;SACtE;QAED,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;YAC9B,OAAO,IAAI,EAAE,CAAA;SACd;IACH,CAAC,CAAA;AACH,CAAC,CAAA;AAvBY,QAAA,aAAa,iBAuBzB;AAEM,MAAM,YAAY,GAAG,CAAwB,MAAkD,EAAE,EAAE;IACxG,OAAO,KAAK,EAAE,OAAU,EAAE,IAAmB,EAAE,EAAE;QAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;QACzB,MAAM,SAAS,GACb,OAAQ,MAAsB,CAAC,QAAQ,KAAK,UAAU;YACpD,CAAC,CAAE,MAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;YAC/C,CAAC,CAAC,OAAO,MAAM,KAAK,UAAU;gBAC9B,CAAC,CAAC,MAAM;gBACR,CAAC,CAAE,MAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAErC,IAAI,SAAS,EAAE;YACb,IAAI;gBACF,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACvB,OAAO,CAAC,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;iBAC5E;qBAAM;oBACL,OAAO,CAAC,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;iBACrC;gBAED,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,2BAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;aAChE;YAAC,OAAO,KAAU,EAAE;gBACnB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,mBAAU,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;aACtE;SACF;QAED,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;YAC9B,OAAO,IAAI,EAAE,CAAA;SACd;IACH,CAAC,CAAA;AACH,CAAC,CAAA;AA5BY,QAAA,YAAY,gBA4BxB"}
|
package/lib/json-schema.d.ts
CHANGED
|
@@ -157,3 +157,13 @@ export declare const querySyntax: <T extends {
|
|
|
157
157
|
};
|
|
158
158
|
};
|
|
159
159
|
} & { [K_2 in keyof T]: PropertyQuery<T[K_2], X[K_2]>; };
|
|
160
|
+
export declare const ObjectIdSchema: () => {
|
|
161
|
+
readonly anyOf: readonly [{
|
|
162
|
+
readonly type: "string";
|
|
163
|
+
readonly objectid: true;
|
|
164
|
+
}, {
|
|
165
|
+
readonly type: "object";
|
|
166
|
+
readonly properties: {};
|
|
167
|
+
readonly additionalProperties: false;
|
|
168
|
+
}];
|
|
169
|
+
};
|
package/lib/json-schema.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.querySyntax = exports.queryProperties = exports.queryProperty = exports.getDataValidator = exports.getValidator = void 0;
|
|
3
|
+
exports.ObjectIdSchema = exports.querySyntax = exports.queryProperties = exports.queryProperty = exports.getDataValidator = exports.getValidator = void 0;
|
|
4
4
|
const commons_1 = require("@feathersjs/commons");
|
|
5
5
|
/**
|
|
6
6
|
* Returns a compiled validation function for a schema and AJV validator instance.
|
|
@@ -86,10 +86,6 @@ exports.queryProperty = queryProperty;
|
|
|
86
86
|
const queryProperties = (definitions, extensions = {}) => Object.keys(definitions).reduce((res, key) => {
|
|
87
87
|
const result = res;
|
|
88
88
|
const definition = definitions[key];
|
|
89
|
-
const { $ref } = definition;
|
|
90
|
-
if ($ref) {
|
|
91
|
-
throw new Error(`Can not create query syntax schema for reference property '${key}'`);
|
|
92
|
-
}
|
|
93
89
|
result[key] = (0, exports.queryProperty)(definition, extensions[key]);
|
|
94
90
|
return result;
|
|
95
91
|
}, {});
|
|
@@ -158,4 +154,11 @@ const querySyntax = (definition, extensions = {}) => {
|
|
|
158
154
|
};
|
|
159
155
|
};
|
|
160
156
|
exports.querySyntax = querySyntax;
|
|
157
|
+
const ObjectIdSchema = () => ({
|
|
158
|
+
anyOf: [
|
|
159
|
+
{ type: 'string', objectid: true },
|
|
160
|
+
{ type: 'object', properties: {}, additionalProperties: false }
|
|
161
|
+
]
|
|
162
|
+
});
|
|
163
|
+
exports.ObjectIdSchema = ObjectIdSchema;
|
|
161
164
|
//# sourceMappingURL=json-schema.js.map
|
package/lib/json-schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-schema.js","sourceRoot":"","sources":["../src/json-schema.ts"],"names":[],"mappings":";;;AAAA,iDAAuC;AAgBvC;;;;;;GAMG;AACI,MAAM,YAAY,GAAG,CAAiB,MAA4B,EAAE,SAAc,EAAmB,EAAE,CAC5G,SAAS,CAAC,OAAO,CAAC;IAChB,MAAM,EAAE,IAAI;IACZ,GAAI,MAAc;CACnB,CAA2B,CAAA;AAJjB,QAAA,YAAY,gBAIK;AAE9B;;;;;;;;;GASG;AACI,MAAM,gBAAgB,GAAG,CAC9B,GAAyC,EACzC,SAAc,EACI,EAAE;IACpB,MAAM,MAAM,GAAG,CAAE,GAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAkB,CAAA;IAE7E,OAAO;QACL,MAAM,EAAE,IAAA,oBAAY,EAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;QAC9C,MAAM,EAAE,IAAA,oBAAY,EAClB,MAAM,CAAC,MAAM,IAAI;YACf,GAAI,MAAM,CAAC,MAAc;YACzB,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ;SAClC,EACD,SAAS,CACV;QACD,KAAK,EAAE,IAAA,oBAAY,EACjB,MAAM,CAAC,KAAK,IAAI;YACd,GAAI,MAAM,CAAC,MAAc;YACzB,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO;YAChC,QAAQ,EAAE,EAAE;SACb,EACD,SAAS,CACV;KACF,CAAA;AACH,CAAC,CAAA;AAxBY,QAAA,gBAAgB,oBAwB5B;AA2BD;;;;;;GAMG;AACI,MAAM,aAAa,GAAG,CAC3B,GAAM,EACN,aAAgB,EAAO,EACvB,EAAE;IACF,MAAM,UAAU,GAAG,WAAC,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IACzC,OAAO;QACL,KAAK,EAAE;YACL,UAAU;YACV;gBACE,IAAI,EAAE,QAAQ;gBACd,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE;oBACV,GAAG,EAAE,UAAU;oBACf,IAAI,EAAE,UAAU;oBAChB,GAAG,EAAE,UAAU;oBACf,IAAI,EAAE,UAAU;oBAChB,GAAG,EAAE,UAAU;oBACf,GAAG,EAAE;wBACH,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,UAAU;qBAClB;oBACD,IAAI,EAAE;wBACJ,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,UAAU;qBAClB;oBACD,GAAG,UAAU;iBACd;aACF;SACF;KACO,CAAA;AACZ,CAAC,CAAA;AA9BY,QAAA,aAAa,iBA8BzB;AAED;;;;;;GAMG;AACI,MAAM,eAAe,GAAG,CAI7B,WAAc,EACd,aAAgB,EAAO,EACvB,EAAE,CACF,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC3C,MAAM,MAAM,GAAG,GAAU,CAAA;IACzB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"json-schema.js","sourceRoot":"","sources":["../src/json-schema.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@feathersjs/schema",
|
|
3
3
|
"description": "A common data schema definition format",
|
|
4
|
-
"version": "5.0.0-pre.
|
|
4
|
+
"version": "5.0.0-pre.38",
|
|
5
5
|
"homepage": "https://feathersjs.com",
|
|
6
6
|
"main": "lib/",
|
|
7
7
|
"types": "lib/",
|
|
@@ -54,24 +54,24 @@
|
|
|
54
54
|
"access": "public"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@feathersjs/adapter-commons": "^5.0.0-pre.
|
|
58
|
-
"@feathersjs/commons": "^5.0.0-pre.
|
|
59
|
-
"@feathersjs/errors": "^5.0.0-pre.
|
|
60
|
-
"@feathersjs/feathers": "^5.0.0-pre.
|
|
61
|
-
"@feathersjs/hooks": "^0.
|
|
57
|
+
"@feathersjs/adapter-commons": "^5.0.0-pre.38",
|
|
58
|
+
"@feathersjs/commons": "^5.0.0-pre.38",
|
|
59
|
+
"@feathersjs/errors": "^5.0.0-pre.38",
|
|
60
|
+
"@feathersjs/feathers": "^5.0.0-pre.38",
|
|
61
|
+
"@feathersjs/hooks": "^0.8.1",
|
|
62
62
|
"@types/json-schema": "^7.0.11",
|
|
63
63
|
"ajv": "^8.12.0",
|
|
64
64
|
"ajv-formats": "^2.1.1",
|
|
65
65
|
"json-schema-to-ts": "^2.6.2"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@feathersjs/memory": "^5.0.0-pre.
|
|
68
|
+
"@feathersjs/memory": "^5.0.0-pre.38",
|
|
69
69
|
"@types/mocha": "^10.0.1",
|
|
70
|
-
"@types/node": "^18.
|
|
70
|
+
"@types/node": "^18.13.0",
|
|
71
71
|
"ajv-formats": "^2.1.1",
|
|
72
72
|
"mocha": "^10.2.0",
|
|
73
73
|
"shx": "^0.3.4",
|
|
74
|
-
"typescript": "^4.9.
|
|
74
|
+
"typescript": "^4.9.5"
|
|
75
75
|
},
|
|
76
|
-
"gitHead": "
|
|
76
|
+
"gitHead": "7fc86307438ae8cf3f71ce3b677be8bcc55768c1"
|
|
77
77
|
}
|
package/src/hooks/resolve.ts
CHANGED
|
@@ -2,16 +2,6 @@ import { HookContext, NextFunction } from '@feathersjs/feathers'
|
|
|
2
2
|
import { compose } from '@feathersjs/hooks'
|
|
3
3
|
import { Resolver, ResolverStatus } from '../resolver'
|
|
4
4
|
|
|
5
|
-
const getContext = <H extends HookContext>(context: H) => {
|
|
6
|
-
return Object.freeze({
|
|
7
|
-
...context,
|
|
8
|
-
params: Object.freeze({
|
|
9
|
-
...context.params,
|
|
10
|
-
query: Object.freeze({})
|
|
11
|
-
})
|
|
12
|
-
})
|
|
13
|
-
}
|
|
14
|
-
|
|
15
5
|
const getResult = <H extends HookContext>(context: H) => {
|
|
16
6
|
const isPaginated = context.method === 'find' && context.result.data
|
|
17
7
|
const data = isPaginated ? context.result.data : context.result
|
|
@@ -41,9 +31,8 @@ export type ResolverSetting<H extends HookContext> = Resolver<any, H> | Resolver
|
|
|
41
31
|
export const resolveQuery =
|
|
42
32
|
<H extends HookContext>(...resolvers: Resolver<any, H>[]) =>
|
|
43
33
|
async (context: H, next?: NextFunction) => {
|
|
44
|
-
const ctx = getContext(context)
|
|
45
34
|
const data = context?.params?.query || {}
|
|
46
|
-
const query = await runResolvers(resolvers, data,
|
|
35
|
+
const query = await runResolvers(resolvers, data, context)
|
|
47
36
|
|
|
48
37
|
context.params = {
|
|
49
38
|
...context.params,
|
|
@@ -59,7 +48,6 @@ export const resolveData =
|
|
|
59
48
|
<H extends HookContext>(...resolvers: Resolver<any, H>[]) =>
|
|
60
49
|
async (context: H, next?: NextFunction) => {
|
|
61
50
|
if (context.data !== undefined) {
|
|
62
|
-
const ctx = getContext(context)
|
|
63
51
|
const data = context.data
|
|
64
52
|
|
|
65
53
|
const status = {
|
|
@@ -67,9 +55,11 @@ export const resolveData =
|
|
|
67
55
|
}
|
|
68
56
|
|
|
69
57
|
if (Array.isArray(data)) {
|
|
70
|
-
context.data = await Promise.all(
|
|
58
|
+
context.data = await Promise.all(
|
|
59
|
+
data.map((current) => runResolvers(resolvers, current, context, status))
|
|
60
|
+
)
|
|
71
61
|
} else {
|
|
72
|
-
context.data = await runResolvers(resolvers, data,
|
|
62
|
+
context.data = await runResolvers(resolvers, data, context, status)
|
|
73
63
|
}
|
|
74
64
|
}
|
|
75
65
|
|
|
@@ -81,35 +71,36 @@ export const resolveData =
|
|
|
81
71
|
export const resolveResult = <H extends HookContext>(...resolvers: Resolver<any, H>[]) => {
|
|
82
72
|
const virtualProperties = new Set(resolvers.reduce((acc, current) => acc.concat(current.virtualNames), []))
|
|
83
73
|
|
|
84
|
-
return async (context: H, next
|
|
85
|
-
if (typeof next
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const resolve = {
|
|
89
|
-
originalContext: context,
|
|
90
|
-
...context.params.resolve,
|
|
91
|
-
properties: $resolve || select
|
|
92
|
-
}
|
|
74
|
+
return async (context: H, next: NextFunction) => {
|
|
75
|
+
if (typeof next !== 'function') {
|
|
76
|
+
throw new Error('The resolveResult hook must be used as an around hook')
|
|
77
|
+
}
|
|
93
78
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}
|
|
79
|
+
const { $resolve, $select: select, ...query } = context.params?.query || {}
|
|
80
|
+
const $select = Array.isArray(select) ? select.filter((name) => !virtualProperties.has(name)) : select
|
|
81
|
+
const resolve = {
|
|
82
|
+
originalContext: context,
|
|
83
|
+
...context.params.resolve,
|
|
84
|
+
properties: $resolve || select
|
|
85
|
+
}
|
|
102
86
|
|
|
103
|
-
|
|
87
|
+
context.params = {
|
|
88
|
+
...context.params,
|
|
89
|
+
resolve,
|
|
90
|
+
query: {
|
|
91
|
+
...query,
|
|
92
|
+
...($select ? { $select } : {})
|
|
93
|
+
}
|
|
104
94
|
}
|
|
105
95
|
|
|
106
|
-
|
|
96
|
+
await next()
|
|
97
|
+
|
|
107
98
|
const status = context.params.resolve
|
|
108
99
|
const { isPaginated, data } = getResult(context)
|
|
109
100
|
|
|
110
101
|
const result = Array.isArray(data)
|
|
111
|
-
? await Promise.all(data.map(async (current) => runResolvers(resolvers, current,
|
|
112
|
-
: await runResolvers(resolvers, data,
|
|
102
|
+
? await Promise.all(data.map(async (current) => runResolvers(resolvers, current, context, status)))
|
|
103
|
+
: await runResolvers(resolvers, data, context, status)
|
|
113
104
|
|
|
114
105
|
if (isPaginated) {
|
|
115
106
|
context.result.data = result
|
|
@@ -148,14 +139,15 @@ export const setDispatch = (current: any, dispatch: any) => {
|
|
|
148
139
|
return dispatch
|
|
149
140
|
}
|
|
150
141
|
|
|
151
|
-
export const
|
|
142
|
+
export const resolveExternal =
|
|
152
143
|
<H extends HookContext>(...resolvers: Resolver<any, H>[]) =>
|
|
153
|
-
async (context: H, next
|
|
154
|
-
if (typeof next
|
|
155
|
-
|
|
144
|
+
async (context: H, next: NextFunction) => {
|
|
145
|
+
if (typeof next !== 'function') {
|
|
146
|
+
throw new Error('The resolveExternal hook must be used as an around hook')
|
|
156
147
|
}
|
|
157
148
|
|
|
158
|
-
|
|
149
|
+
await next()
|
|
150
|
+
|
|
159
151
|
const existingDispatch = getDispatch(context.result)
|
|
160
152
|
|
|
161
153
|
if (existingDispatch !== null) {
|
|
@@ -164,7 +156,7 @@ export const resolveDispatch =
|
|
|
164
156
|
const status = context.params.resolve
|
|
165
157
|
const { isPaginated, data } = getResult(context)
|
|
166
158
|
const resolveAndGetDispatch = async (current: any) => {
|
|
167
|
-
const resolved = await runResolvers(resolvers, current,
|
|
159
|
+
const resolved = await runResolvers(resolvers, current, context, status)
|
|
168
160
|
const currentDispatch = Object.keys(resolved).reduce((res, key) => {
|
|
169
161
|
res[key] = getDispatchValue(resolved[key])
|
|
170
162
|
|
|
@@ -188,7 +180,7 @@ export const resolveDispatch =
|
|
|
188
180
|
}
|
|
189
181
|
}
|
|
190
182
|
|
|
191
|
-
export const
|
|
183
|
+
export const resolveDispatch = resolveExternal
|
|
192
184
|
|
|
193
185
|
type ResolveAllSettings<H extends HookContext> = {
|
|
194
186
|
data?: {
|
package/src/hooks/validate.ts
CHANGED
|
@@ -19,13 +19,13 @@ export const validateQuery = <H extends HookContext>(schema: Schema<any> | Valid
|
|
|
19
19
|
...context.params,
|
|
20
20
|
query
|
|
21
21
|
}
|
|
22
|
-
|
|
23
|
-
if (typeof next === 'function') {
|
|
24
|
-
return next()
|
|
25
|
-
}
|
|
26
22
|
} catch (error: any) {
|
|
27
23
|
throw error.ajv ? new BadRequest(error.message, error.errors) : error
|
|
28
24
|
}
|
|
25
|
+
|
|
26
|
+
if (typeof next === 'function') {
|
|
27
|
+
return next()
|
|
28
|
+
}
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
|
package/src/json-schema.ts
CHANGED
|
@@ -144,11 +144,6 @@ export const queryProperties = <
|
|
|
144
144
|
Object.keys(definitions).reduce((res, key) => {
|
|
145
145
|
const result = res as any
|
|
146
146
|
const definition = definitions[key]
|
|
147
|
-
const { $ref } = definition as any
|
|
148
|
-
|
|
149
|
-
if ($ref) {
|
|
150
|
-
throw new Error(`Can not create query syntax schema for reference property '${key}'`)
|
|
151
|
-
}
|
|
152
147
|
|
|
153
148
|
result[key] = queryProperty(definition as JSONSchemaDefinition, extensions[key as keyof T])
|
|
154
149
|
|
|
@@ -227,3 +222,11 @@ export const querySyntax = <
|
|
|
227
222
|
...props
|
|
228
223
|
} as const
|
|
229
224
|
}
|
|
225
|
+
|
|
226
|
+
export const ObjectIdSchema = () =>
|
|
227
|
+
({
|
|
228
|
+
anyOf: [
|
|
229
|
+
{ type: 'string', objectid: true },
|
|
230
|
+
{ type: 'object', properties: {}, additionalProperties: false }
|
|
231
|
+
]
|
|
232
|
+
} as const)
|