@kravc/dos 2.0.0-alpha.2 → 2.0.0-alpha.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/.claude/settings.local.json +7 -0
- package/bin/spec.js +3 -0
- package/dist/Context/MockedContext.d.ts +8 -0
- package/dist/Context/MockedContext.d.ts.map +1 -0
- package/dist/Context/MockedContext.js +22 -0
- package/dist/Context/MockedContext.js.map +1 -0
- package/dist/Context/index.d.ts +2 -1
- package/dist/Context/index.d.ts.map +1 -1
- package/dist/Context/index.js +3 -1
- package/dist/Context/index.js.map +1 -1
- package/dist/Document/Document.d.ts +12 -7
- package/dist/Document/Document.d.ts.map +1 -1
- package/dist/Document/Document.js +23 -13
- package/dist/Document/Document.js.map +1 -1
- package/dist/Document/MemoryDocument.d.ts +5 -4
- package/dist/Document/MemoryDocument.d.ts.map +1 -1
- package/dist/Document/MemoryDocument.js +13 -7
- package/dist/Document/MemoryDocument.js.map +1 -1
- package/dist/Operation/Operation.d.ts +1 -1
- package/dist/Operation/Operation.d.ts.map +1 -1
- package/dist/Operation/Operation.js +2 -2
- package/dist/Operation/Operation.js.map +1 -1
- package/dist/Operation/errors/{UnprocessibleConditionError.d.ts → UnprocessableConditionError.d.ts} +6 -6
- package/dist/Operation/errors/{UnprocessibleConditionError.d.ts.map → UnprocessableConditionError.d.ts.map} +1 -1
- package/dist/Operation/errors/{UnprocessibleConditionError.js → UnprocessableConditionError.js} +8 -8
- package/dist/Operation/errors/{UnprocessibleConditionError.js.map → UnprocessableConditionError.js.map} +1 -1
- package/dist/Operation/errors/index.d.ts +2 -2
- package/dist/Operation/errors/index.js +3 -3
- package/dist/Operation/operations/Index.js +7 -7
- package/dist/Operation/operations/Index.js.map +1 -1
- package/dist/Operation/operations/List.d.ts.map +1 -1
- package/dist/Operation/operations/List.js +13 -2
- package/dist/Operation/operations/List.js.map +1 -1
- package/dist/Operation/security/userAuthorization.d.ts +2 -0
- package/dist/Operation/security/userAuthorization.d.ts.map +1 -1
- package/dist/Operation/security/userAuthorization.js.map +1 -1
- package/dist/Service/Service.d.ts +0 -1
- package/dist/Service/Service.d.ts.map +1 -1
- package/dist/Service/Service.js +13 -4
- package/dist/Service/Service.js.map +1 -1
- package/dist/Service/errors/OperationError.d.ts +2 -2
- package/dist/Service/errors/OperationError.d.ts.map +1 -1
- package/dist/Service/errors/OperationError.js.map +1 -1
- package/dist/Service/test/execute.d.ts +2 -2
- package/dist/Service/test/execute.d.ts.map +1 -1
- package/package.json +13 -9
- package/scripts/spec.ts +23 -0
- package/src/Context/MockedContext.ts +21 -0
- package/src/Context/__tests__/MockedContext.test.ts +14 -0
- package/src/Context/index.ts +2 -0
- package/src/Document/Document.ts +33 -19
- package/src/Document/MemoryDocument.ts +16 -8
- package/src/Operation/Operation.ts +7 -10
- package/src/Operation/errors/{UnprocessibleConditionError.ts → UnprocessableConditionError.ts} +7 -7
- package/src/Operation/errors/__tests__/UnprocessableConditionError.test.ts +20 -0
- package/src/Operation/errors/index.ts +2 -2
- package/src/Operation/operations/Index.ts +8 -8
- package/src/Operation/operations/List.ts +14 -2
- package/src/Operation/operations/__tests__/Create.test.ts +1 -1
- package/src/Operation/operations/__tests__/Delete.test.ts +1 -1
- package/src/Operation/operations/__tests__/Index.test.ts +4 -4
- package/src/Operation/operations/__tests__/List.test.ts +1 -1
- package/src/Operation/operations/__tests__/Read.test.ts +1 -1
- package/src/Operation/operations/__tests__/Update.test.ts +1 -1
- package/src/Operation/security/userAuthorization.ts +2 -0
- package/src/Service/Service.ts +18 -5
- package/src/Service/__tests__/Service.test.ts +1 -6
- package/src/Service/errors/OperationError.ts +2 -2
- package/src/Service/errors/OperationErrorAttributes.d.ts +1 -1
- package/src/Service/test/execute.ts +1 -1
- package/src/Operation/errors/__tests__/UnprocessibleConditionError.test.ts +0 -20
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.UnprocessableConditionError = exports.InvalidParametersError = exports.DocumentNotFoundError = exports.DocumentExistsError = exports.AccessDeniedError = exports.UnauthorizedError = exports.CommonError = void 0;
|
|
7
7
|
const CommonError_1 = __importDefault(require("./CommonError"));
|
|
8
8
|
exports.CommonError = CommonError_1.default;
|
|
9
9
|
const UnauthorizedError_1 = __importDefault(require("./UnauthorizedError"));
|
|
@@ -16,6 +16,6 @@ const DocumentNotFoundError_1 = __importDefault(require("./DocumentNotFoundError
|
|
|
16
16
|
exports.DocumentNotFoundError = DocumentNotFoundError_1.default;
|
|
17
17
|
const InvalidParametersError_1 = __importDefault(require("./InvalidParametersError"));
|
|
18
18
|
exports.InvalidParametersError = InvalidParametersError_1.default;
|
|
19
|
-
const
|
|
20
|
-
exports.
|
|
19
|
+
const UnprocessableConditionError_1 = __importDefault(require("./UnprocessableConditionError"));
|
|
20
|
+
exports.UnprocessableConditionError = UnprocessableConditionError_1.default;
|
|
21
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -10,7 +10,7 @@ const SORT_ORDER = {
|
|
|
10
10
|
DESC: 'desc',
|
|
11
11
|
};
|
|
12
12
|
const DEFAULT_LIMIT = 20;
|
|
13
|
-
const DEFAULT_LIMIT_MAX =
|
|
13
|
+
const DEFAULT_LIMIT_MAX = 100;
|
|
14
14
|
const DEFAULT_SORT_ORDER = SORT_ORDER.DESC;
|
|
15
15
|
/** Returns class for an index operation. */
|
|
16
16
|
const Index = (
|
|
@@ -38,11 +38,11 @@ ComponentClass, componentAction = 'index') => {
|
|
|
38
38
|
}
|
|
39
39
|
/** Returns default value for a limit parameter. */
|
|
40
40
|
static get defaultLimit() {
|
|
41
|
-
return DEFAULT_LIMIT;
|
|
41
|
+
return (0, lodash_1.get)(ComponentClass, 'indexDefaultLimit', DEFAULT_LIMIT);
|
|
42
42
|
}
|
|
43
43
|
/** Returns maximum number for a limit parameter. */
|
|
44
44
|
static get limitMax() {
|
|
45
|
-
return DEFAULT_LIMIT_MAX;
|
|
45
|
+
return (0, lodash_1.get)(ComponentClass, 'indexLimitMax', DEFAULT_LIMIT_MAX);
|
|
46
46
|
}
|
|
47
47
|
/** Returns default value for a sort parameter. */
|
|
48
48
|
static get defaultSort() {
|
|
@@ -87,12 +87,12 @@ ComponentClass, componentAction = 'index') => {
|
|
|
87
87
|
},
|
|
88
88
|
count: {
|
|
89
89
|
type: 'integer',
|
|
90
|
-
example:
|
|
90
|
+
example: 5,
|
|
91
91
|
description: `Number of ${documentTitle}`,
|
|
92
92
|
},
|
|
93
93
|
limit: {
|
|
94
94
|
type: 'integer',
|
|
95
|
-
example:
|
|
95
|
+
example: (0, lodash_1.get)(ComponentClass, 'indexDefaultLimit', DEFAULT_LIMIT),
|
|
96
96
|
description: `Limit number of ${documentTitle} to be returned`,
|
|
97
97
|
},
|
|
98
98
|
lastEvaluatedKey: {
|
|
@@ -104,11 +104,11 @@ ComponentClass, componentAction = 'index') => {
|
|
|
104
104
|
}
|
|
105
105
|
/** Executes components index action. */
|
|
106
106
|
async action(parameters) {
|
|
107
|
-
const { sort, limit,
|
|
107
|
+
const { sort, limit, indexName, exclusiveStartKey, ...query } = parameters;
|
|
108
108
|
const options = {
|
|
109
109
|
sort,
|
|
110
110
|
limit,
|
|
111
|
-
|
|
111
|
+
indexName,
|
|
112
112
|
exclusiveStartKey,
|
|
113
113
|
};
|
|
114
114
|
const { componentActionMethod } = this.constructor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Index.js","sourceRoot":"","sources":["../../../src/Operation/operations/Index.ts"],"names":[],"mappings":";;;;;AACA,
|
|
1
|
+
{"version":3,"file":"Index.js","sourceRoot":"","sources":["../../../src/Operation/operations/Index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../../src/Operation/operations/List.ts"],"names":[],"mappings":"AAEA,OAAO,SAA0B,MAAM,cAAc,CAAC;AAEtD,2CAA2C;AAC3C,QAAA,MAAM,IAAI,GAER,gBAAgB,GAAG,EACnB,kBAAiB,MAAmB,KACnC,OAAO,
|
|
1
|
+
{"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../../src/Operation/operations/List.ts"],"names":[],"mappings":"AAEA,OAAO,SAA0B,MAAM,cAAc,CAAC;AAEtD,2CAA2C;AAC3C,QAAA,MAAM,IAAI,GAER,gBAAgB,GAAG,EACnB,kBAAiB,MAAmB,KACnC,OAAO,SA8DT,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -30,12 +30,23 @@ ComponentClass, componentAction = 'indexAll') => {
|
|
|
30
30
|
static get componentAction() {
|
|
31
31
|
return componentAction;
|
|
32
32
|
}
|
|
33
|
+
/** Returns schema source for the operation output with pagination. */
|
|
34
|
+
static get output() {
|
|
35
|
+
return {
|
|
36
|
+
data: {
|
|
37
|
+
items: {
|
|
38
|
+
$ref: ComponentClass.schema.id
|
|
39
|
+
},
|
|
40
|
+
required: true,
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
33
44
|
/** Executes components list action. */
|
|
34
45
|
async action(parameters) {
|
|
35
|
-
const { sort,
|
|
46
|
+
const { sort, indexName, ...query } = parameters;
|
|
36
47
|
const options = {
|
|
37
48
|
sort,
|
|
38
|
-
|
|
49
|
+
indexName,
|
|
39
50
|
};
|
|
40
51
|
const { componentActionMethod } = this.constructor;
|
|
41
52
|
const result = await componentActionMethod(this.context, query, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.js","sourceRoot":"","sources":["../../../src/Operation/operations/List.ts"],"names":[],"mappings":";;;;;AACA,mCAAoC;AACpC,6DAAsD;AAEtD,2CAA2C;AAC3C,MAAM,IAAI,GAAG;AACX,8DAA8D;AAC9D,cAAmB,EACnB,kBAA0B,UAAU,EAClB,EAAE;IACpB,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,mDAAmD;YACjE,qBAAqB,CAAC,CAAC;IAC3B,CAAC;IAED,cAAc,GAAG,cAA6C,CAAC;IAE/D,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAE3D,2BAA2B;IAC3B,OAAO,KAAM,SAAQ,mBAAS;QAC5B,8CAA8C;QAC9C,MAAM,KAAK,OAAO;YAChB,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC3D,OAAO,IAAA,mBAAU,EAAC,GAAG,MAAM,IAAI,aAAa,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,sDAAsD;QACtD,MAAM,KAAK,SAAS;YAClB,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,4DAA4D;QAC5D,MAAM,KAAK,eAAe;YACxB,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,uCAAuC;QACvC,KAAK,CAAC,MAAM,CAAC,UAAmC;YAC9C,MAAM,EACJ,IAAI,EACJ,
|
|
1
|
+
{"version":3,"file":"List.js","sourceRoot":"","sources":["../../../src/Operation/operations/List.ts"],"names":[],"mappings":";;;;;AACA,mCAAoC;AACpC,6DAAsD;AAEtD,2CAA2C;AAC3C,MAAM,IAAI,GAAG;AACX,8DAA8D;AAC9D,cAAmB,EACnB,kBAA0B,UAAU,EAClB,EAAE;IACpB,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,mDAAmD;YACjE,qBAAqB,CAAC,CAAC;IAC3B,CAAC;IAED,cAAc,GAAG,cAA6C,CAAC;IAE/D,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAE3D,2BAA2B;IAC3B,OAAO,KAAM,SAAQ,mBAAS;QAC5B,8CAA8C;QAC9C,MAAM,KAAK,OAAO;YAChB,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC3D,OAAO,IAAA,mBAAU,EAAC,GAAG,MAAM,IAAI,aAAa,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,sDAAsD;QACtD,MAAM,KAAK,SAAS;YAClB,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,4DAA4D;QAC5D,MAAM,KAAK,eAAe;YACxB,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,sEAAsE;QACtE,MAAM,KAAK,MAAM;YACf,OAAO;gBACL,IAAI,EAAE;oBACJ,KAAK,EAAE;wBACL,IAAI,EAAE,cAAc,CAAC,MAAO,CAAC,EAAE;qBAChC;oBACD,QAAQ,EAAE,IAAI;iBACf;aACF,CAAC;QACJ,CAAC;QAED,uCAAuC;QACvC,KAAK,CAAC,MAAM,CAAC,UAAmC;YAC9C,MAAM,EACJ,IAAI,EACJ,SAAS,EACT,GAAG,KAAK,EACT,GAAG,UAAU,CAAC;YAEf,MAAM,OAAO,GAAG;gBACd,IAAI;gBACJ,SAAS;aACV,CAAC;YAEF,MAAM,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAC,WAA+B,CAAC;YAEvE,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAEzE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;YAE3B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAsB,CAAC;QAC/C,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,IAAI,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import Operation from '../Operation';
|
|
2
2
|
import { type Permissions } from './JwtAuthorization';
|
|
3
3
|
type Props = {
|
|
4
|
+
name?: string;
|
|
4
5
|
issuer: string;
|
|
5
6
|
publicKey: string;
|
|
7
|
+
description?: string;
|
|
6
8
|
permissions?: Permissions;
|
|
7
9
|
};
|
|
8
10
|
/** Returns helper to extend operation class with user authorization requirement. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userAuthorization.d.ts","sourceRoot":"","sources":["../../../src/Operation/security/userAuthorization.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAyB,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAExE,KAAK,KAAK,GAAG;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAA;AAED,oFAAoF;AACpF,QAAA,MAAM,iBAAiB,GAAI,OAAO,KAAK,MAG7B,gBAAgB,OAAO,SAAS,KAAG,OAAO,SA+BnD,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"userAuthorization.d.ts","sourceRoot":"","sources":["../../../src/Operation/security/userAuthorization.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAyB,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAExE,KAAK,KAAK,GAAG;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAA;AAED,oFAAoF;AACpF,QAAA,MAAM,iBAAiB,GAAI,OAAO,KAAK,MAG7B,gBAAgB,OAAO,SAAS,KAAG,OAAO,SA+BnD,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userAuthorization.js","sourceRoot":"","sources":["../../../src/Operation/security/userAuthorization.ts"],"names":[],"mappings":";;;;;AACA,0EAAwE;
|
|
1
|
+
{"version":3,"file":"userAuthorization.js","sourceRoot":"","sources":["../../../src/Operation/security/userAuthorization.ts"],"names":[],"mappings":";;;;;AACA,0EAAwE;AAUxE,oFAAoF;AACpF,MAAM,iBAAiB,GAAG,CAAC,KAAY,EAAE,EAAE;IACzC,MAAM,wBAAwB,GAAG,0BAAgB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAE3E,OAAO,CAAC,cAAgC,EAAoB,EAAE;IAC5D,gCAAgC;IAChC,KAAM,SAAQ,cAAc;QAC1B,+CAA+C;QAC/C,MAAM,KAAK,QAAQ;YACjB,OAAO,CAAE,wBAAwB,CAAE,CAAC;QACtC,CAAC;QAED,yDAAyD;QACzD,MAAM,KAAK,WAAW;YACpB,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC;YAEzC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;YAEjC,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;iBACxD,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;iBAChE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;YAErC,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC;YAE9D,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,0CAA0C,WAAW,GAAG,CAAC,CAAC;YAC5E,CAAC;YAED,OAAO,oBAAoB,CAAC;QAC9B,CAAC;KACF,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,iBAAiB,CAAC"}
|
|
@@ -6,7 +6,6 @@ import { Schema, Validator } from '@kravc/schema';
|
|
|
6
6
|
declare const createDefaultContext: (config: ContextConfig, request: Request, extraContext: ExtraContext) => Context;
|
|
7
7
|
type Module = {
|
|
8
8
|
id: string;
|
|
9
|
-
get isComponent(): boolean;
|
|
10
9
|
};
|
|
11
10
|
type Options = {
|
|
12
11
|
url?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Service.d.ts","sourceRoot":"","sources":["../../src/Service/Service.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,OAAO,EAAE,EAAE,KAAK,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1F,OAAO,EAAO,MAAM,EAAE,SAAS,EAA0C,MAAM,eAAe,CAAC;AAoB/F,6DAA6D;AAC7D,QAAA,MAAM,oBAAoB,GACxB,QAAQ,aAAa,EACrB,SAAS,OAAO,EAChB,cAAc,YAAY,YACmB,CAAC;AAEhD,KAAK,MAAM,GAAG;IACZ,EAAE,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"Service.d.ts","sourceRoot":"","sources":["../../src/Service/Service.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,OAAO,EAAE,EAAE,KAAK,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1F,OAAO,EAAO,MAAM,EAAE,SAAS,EAA0C,MAAM,eAAe,CAAC;AAoB/F,6DAA6D;AAC7D,QAAA,MAAM,oBAAoB,GACxB,QAAQ,aAAa,EACrB,SAAS,OAAO,EAChB,cAAc,YAAY,YACmB,CAAC;AAEhD,KAAK,MAAM,GAAG;IACZ,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,oBAAoB,CAAC;IAC5C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAaF,cAAc;AACd,cAAM,OAAO;IACX,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,eAAe,CAAe;IAEtC,gCAAgC;gBACpB,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,OAAY;IAuFpD,gCAAgC;IAChC,IAAI,OAAO,WAEV;IAED,iCAAiC;IACjC,IAAI,SAAS,cAEZ;IAED,qCAAqC;IACrC,IAAI,IAAI,2BAEP;IAED,+CAA+C;IAC/C,GAAG,CAAC,WAAW,EAAE,MAAM,GAE0C,OAAO,SAAS;IAGjF,kCAAkC;IAC5B,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,GAAE,YAAiB;;;;;;;;;;;;;;;;;IA2F/D,mEAAmE;IACnE,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB,EAAE,OAAO;IAyB9F,sDAAsD;IACtD,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAqBvE,6CAA6C;IAC7C,cAAc,CAAC,cAAc,EAAE,OAAO,SAAS;CAWhD;AAED,eAAe,OAAO,CAAC"}
|
package/dist/Service/Service.js
CHANGED
|
@@ -3,6 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const Component_1 = __importDefault(require("../Component"));
|
|
7
|
+
const Operation_1 = __importDefault(require("../Operation"));
|
|
6
8
|
const safe_stable_stringify_1 = __importDefault(require("safe-stable-stringify"));
|
|
7
9
|
const spec_1 = require("./spec");
|
|
8
10
|
const lodash_1 = require("lodash");
|
|
@@ -19,6 +21,11 @@ const DEFAULT_SERVICE_PATH = `${ROOT_PATH}/src`;
|
|
|
19
21
|
const DEFAULT_SKIP_OPERATIONS = [];
|
|
20
22
|
/** Creates operation context using default Context class. */
|
|
21
23
|
const createDefaultContext = (config, request, extraContext) => new Context_1.default(config, request, extraContext);
|
|
24
|
+
/** Returns true if TargetClass is a constructor whose prototype extends BaseClass. */
|
|
25
|
+
function isExtendedFrom(TargetClass, BaseClass) {
|
|
26
|
+
return (typeof TargetClass === 'function' &&
|
|
27
|
+
TargetClass.prototype instanceof BaseClass);
|
|
28
|
+
}
|
|
22
29
|
/** Service */
|
|
23
30
|
class Service {
|
|
24
31
|
_url;
|
|
@@ -35,10 +42,12 @@ class Service {
|
|
|
35
42
|
url = url + '/';
|
|
36
43
|
}
|
|
37
44
|
const { path = DEFAULT_SERVICE_PATH, context = {}, createContext = createDefaultContext, skipOperations = DEFAULT_SKIP_OPERATIONS, } = options;
|
|
38
|
-
|
|
39
|
-
.filter(
|
|
40
|
-
|
|
41
|
-
.filter(
|
|
45
|
+
const nonSchemas = modules
|
|
46
|
+
.filter(m => !(m instanceof schema_1.Schema));
|
|
47
|
+
let components = nonSchemas
|
|
48
|
+
.filter(m => isExtendedFrom(m, Component_1.default));
|
|
49
|
+
const operations = nonSchemas
|
|
50
|
+
.filter(m => isExtendedFrom(m, Operation_1.default))
|
|
42
51
|
.filter(({ id: operationId }) => !skipOperations.includes(operationId));
|
|
43
52
|
const referencedComponents = (0, lodash_1.compact)(operations.map(({ Component }) => Component));
|
|
44
53
|
components = (0, lodash_1.uniq)([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Service.js","sourceRoot":"","sources":["../../src/Service/Service.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"Service.js","sourceRoot":"","sources":["../../src/Service/Service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Component from '../../Component';
|
|
2
2
|
import { Context } from '../../Context';
|
|
3
|
-
import {
|
|
3
|
+
import { OperationErrorAttributes } from './OperationErrorAttributes';
|
|
4
4
|
import { type OriginalError } from './logOperationError';
|
|
5
5
|
/**
|
|
6
6
|
* Operation Error
|
|
@@ -20,7 +20,7 @@ import { type OriginalError } from './logOperationError';
|
|
|
20
20
|
* This class acts as the final error handler in the operation processing pipeline,
|
|
21
21
|
* transforming any thrown error into a standardized, schema-validated response format.
|
|
22
22
|
*/
|
|
23
|
-
declare class OperationError extends Component<
|
|
23
|
+
declare class OperationError extends Component<OperationErrorAttributes> {
|
|
24
24
|
/** Returns schema of the operation error. */
|
|
25
25
|
static get schema(): import("@kravc/schema").Schema;
|
|
26
26
|
/** Creates instance of an operation error. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OperationError.d.ts","sourceRoot":"","sources":["../../../src/Service/errors/OperationError.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"OperationError.d.ts","sourceRoot":"","sources":["../../../src/Service/errors/OperationError.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAA0B,EAAE,KAAK,aAAa,EAAwB,MAAM,qBAAqB,CAAC;AAOlG;;;;;;;;;;;;;;;;;GAiBG;AACH,cAAM,cAAe,SAAQ,SAAS,CAAC,wBAAwB,CAAC;IAC9D,6CAA6C;IAC7C,MAAM,KAAK,MAAM,mCAEhB;IAED,8CAA8C;gBAClC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa;CAkC/E;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OperationError.js","sourceRoot":"","sources":["../../../src/Service/errors/OperationError.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,gEAAwC;AAExC,0CAAyC;AAEzC,4EAAkG;AAElG,MAAM,WAAW,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,sBAAsB,CAAC;AACrE,MAAM,oBAAoB,GAAG,IAAA,iBAAQ,EAAC,WAAW,CAAC,CAAC;AAEnD,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,cAAe,SAAQ,
|
|
1
|
+
{"version":3,"file":"OperationError.js","sourceRoot":"","sources":["../../../src/Service/errors/OperationError.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,gEAAwC;AAExC,0CAAyC;AAEzC,4EAAkG;AAElG,MAAM,WAAW,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,sBAAsB,CAAC;AACrE,MAAM,oBAAoB,GAAG,IAAA,iBAAQ,EAAC,WAAW,CAAC,CAAC;AAEnD,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,cAAe,SAAQ,mBAAmC;IAC9D,6CAA6C;IAC7C,MAAM,KAAK,MAAM;QACf,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,8CAA8C;IAC9C,YAAY,OAAgB,EAAE,UAAkB,EAAE,aAA4B;QAC5E,MAAM,EACJ,IAAI,EACJ,OAAO,EACP,aAAa,EACb,gBAAgB,GACjB,GAAG,aAAa,CAAC;QAElB,MAAM,KAAK,GAAG;YACZ,IAAI;YACJ,OAAO;YACP,UAAU;SACQ,CAAC;QAErB,IAAI,gBAAgB,EAAE,CAAC;YACrB,KAAK,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAC5C,CAAC;QAED,MAAM,iBAAiB,GAAG,CAAC,aAAa,CAAC;QAEzC,IAAI,iBAAiB,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,GAAG,gBAAgB,CAAC;YAC9B,KAAK,CAAC,OAAO,GAAG,4BAA4B,CAAC;QAC/C,CAAC;QAED,MAAM,UAAU,GAAG,EAAE,KAAK,EAAE,CAAC;QAC7B,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAE3B,MAAM,cAAc,GAAG,UAAU,KAAK,mBAAmB,CAAC;QAE1D,IAAI,cAAc,EAAE,CAAC;YACnB,IAAA,2BAAiB,EAAC,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;CACF;AAED,kBAAe,cAAc,CAAC"}
|
|
@@ -6,7 +6,7 @@ type Parameters = {
|
|
|
6
6
|
[index: string]: unknown;
|
|
7
7
|
};
|
|
8
8
|
type SuccessResult = {
|
|
9
|
-
data: Record<string, unknown>;
|
|
9
|
+
data: Record<string, unknown>[] | Record<string, unknown>;
|
|
10
10
|
};
|
|
11
11
|
type ErrorResult = {
|
|
12
12
|
error: ErrorAttributes;
|
|
@@ -37,7 +37,7 @@ declare const execute: (service: Service, options?: Options) => {
|
|
|
37
37
|
statusCode: number;
|
|
38
38
|
multiValueHeaders: {};
|
|
39
39
|
}>;
|
|
40
|
-
request: (operationId: string, parameters?: Parameters, headers?: Headers) => Promise<Record<string, unknown> | undefined>;
|
|
40
|
+
request: (operationId: string, parameters?: Parameters, headers?: Headers) => Promise<Record<string, unknown> | Record<string, unknown>[] | undefined>;
|
|
41
41
|
expectError: (errorCode: string, operationId: string, parameters?: Parameters, headers?: Headers) => Promise<ErrorAttributes>;
|
|
42
42
|
};
|
|
43
43
|
export default execute;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/Service/test/execute.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAiB,MAAM,EAAE,MAAM,eAAe,CAAC;AAKjF,KAAK,UAAU,GAAG;IAChB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,CAAA;AAED,KAAK,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/Service/test/execute.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAiB,MAAM,EAAE,MAAM,eAAe,CAAC;AAKjF,KAAK,UAAU,GAAG;IAChB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,CAAA;AAED,KAAK,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAAE,CAAC;AACpF,KAAK,WAAW,GAAG;IAAE,KAAK,EAAE,eAAe,CAAC;CAAE,CAAC;AAC/C,KAAK,MAAM,GAAG,aAAa,GAAG,WAAW,CAAC;AAE1C,KAAK,OAAO,GAAG;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAC;AAEF,2EAA2E;AAC3E,QAAA,MAAM,OAAO,GAAI,SAAS,OAAO,EAAE,UAAS,OAAY;wBAIrB,MAAM,eAAc,UAAU,YAAgB,OAAO;;;;;;;;;;;;;;;;;;;;2BAsBlD,MAAM,eAAc,UAAU,YAAgB,OAAO;6BA6BnD,MAAM,eAAe,MAAM,eAAc,UAAU,YAAgB,OAAO;CAiCjH,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kravc/dos",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.20",
|
|
4
4
|
"description": "Convention-based, easy-to-use library for building API-driven serverless services.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Service",
|
|
@@ -13,6 +13,9 @@
|
|
|
13
13
|
],
|
|
14
14
|
"main": "dist/index.js",
|
|
15
15
|
"types": "dist/index.d.ts",
|
|
16
|
+
"bin": {
|
|
17
|
+
"spec": "bin/spec.js"
|
|
18
|
+
},
|
|
16
19
|
"repository": {
|
|
17
20
|
"type": "git",
|
|
18
21
|
"url": "git+ssh://git@github.com/alexkravets/dos.git"
|
|
@@ -21,6 +24,7 @@
|
|
|
21
24
|
"src": "src"
|
|
22
25
|
},
|
|
23
26
|
"scripts": {
|
|
27
|
+
"spec": "npx ts-node scripts/spec.ts ./example",
|
|
24
28
|
"start": "npx http example/index.ts",
|
|
25
29
|
"test": "eslint --fix src/ example/ && jest --coverage",
|
|
26
30
|
"prebuild": "rimraf dist",
|
|
@@ -29,10 +33,10 @@
|
|
|
29
33
|
"prepublishOnly": "npm run build",
|
|
30
34
|
"postbuild": "cp -r src/Service/errors/*.yaml dist/Service/errors 2>/dev/null || true"
|
|
31
35
|
},
|
|
32
|
-
"author": "
|
|
36
|
+
"author": "Oleksandr Kravets <a@kra.vc>",
|
|
33
37
|
"license": "ISC",
|
|
34
38
|
"dependencies": {
|
|
35
|
-
"@kravc/schema": "^2.8.0
|
|
39
|
+
"@kravc/schema": "^2.8.0",
|
|
36
40
|
"@types/jsonwebtoken": "^9.0.10",
|
|
37
41
|
"cookie": "^1.1.1",
|
|
38
42
|
"jsonwebtoken": "^9.0.3",
|
|
@@ -44,20 +48,20 @@
|
|
|
44
48
|
"z-schema": "^6.0.2"
|
|
45
49
|
},
|
|
46
50
|
"devDependencies": {
|
|
47
|
-
"@eslint/js": "^
|
|
51
|
+
"@eslint/js": "^10.0.1",
|
|
48
52
|
"@kravc/http": "^0.5.0",
|
|
49
53
|
"@types/jest": "^30.0.0",
|
|
50
54
|
"@types/lodash": "^4.17.23",
|
|
51
55
|
"@types/pluralize": "^0.0.33",
|
|
52
|
-
"eslint": "^
|
|
53
|
-
"eslint-plugin-jsdoc": "^62.
|
|
54
|
-
"globals": "^17.
|
|
56
|
+
"eslint": "^10.0.1",
|
|
57
|
+
"eslint-plugin-jsdoc": "^62.7.0",
|
|
58
|
+
"globals": "^17.3.0",
|
|
55
59
|
"jest": "^30.2.0",
|
|
56
60
|
"openapi-types": "^12.1.3",
|
|
57
|
-
"rimraf": "^6.1.
|
|
61
|
+
"rimraf": "^6.1.3",
|
|
58
62
|
"ts-jest": "^29.4.6",
|
|
59
63
|
"ts-node": "^10.9.2",
|
|
60
64
|
"typescript": "^5.9.3",
|
|
61
|
-
"typescript-eslint": "^8.
|
|
65
|
+
"typescript-eslint": "^8.56.0"
|
|
62
66
|
}
|
|
63
67
|
}
|
package/scripts/spec.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env ts-node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
import { resolve } from 'path';
|
|
5
|
+
import { statSync } from 'fs';
|
|
6
|
+
|
|
7
|
+
const [,, servicePath] = process.argv;
|
|
8
|
+
|
|
9
|
+
if (!servicePath) {
|
|
10
|
+
process.stderr.write('Usage: specs <path-to-service>\n');
|
|
11
|
+
process.exit(1);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
let fullPath = resolve(process.cwd(), servicePath);
|
|
15
|
+
|
|
16
|
+
if (statSync(fullPath).isDirectory()) {
|
|
17
|
+
fullPath = resolve(fullPath, 'index.ts');
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
21
|
+
const { service } = require(fullPath);
|
|
22
|
+
|
|
23
|
+
process.stdout.write(JSON.stringify(service.spec, null, 2));
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import Context from './Context';
|
|
2
|
+
import { OpenAPIV2 } from 'openapi-types';
|
|
3
|
+
import { type Validator } from '@kravc/schema';
|
|
4
|
+
|
|
5
|
+
/** Mocked context class for unit tests. */
|
|
6
|
+
class MockedContext extends Context {
|
|
7
|
+
/** Creates an instance of the mocked context. */
|
|
8
|
+
constructor(operationId: string) {
|
|
9
|
+
const spec = {
|
|
10
|
+
paths: {
|
|
11
|
+
[`/${operationId}`]: {
|
|
12
|
+
get: {}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
} as OpenAPIV2.Document;
|
|
16
|
+
|
|
17
|
+
super({ spec, validator: {} as Validator }, { operationId }, {});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export default MockedContext;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import MockedContext from '../MockedContext';
|
|
2
|
+
|
|
3
|
+
describe('MockedContext', () => {
|
|
4
|
+
describe('MockedContext.constructor(operationId)', () => {
|
|
5
|
+
it('creates an instance of mocked context', () => {
|
|
6
|
+
const operationId = 'TestOperation';
|
|
7
|
+
|
|
8
|
+
const context = new MockedContext(operationId);
|
|
9
|
+
context.set('attributes', 'value');
|
|
10
|
+
|
|
11
|
+
expect(context.get('attributes')).toEqual('value');
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
});
|
package/src/Context/index.ts
CHANGED
package/src/Document/Document.ts
CHANGED
|
@@ -5,23 +5,26 @@ import Context, { type QueryMap, type MutationMap } from '../Context';
|
|
|
5
5
|
import { get, set, omit, pick, cloneDeep, capitalize } from 'lodash';
|
|
6
6
|
|
|
7
7
|
const DEFAULT_INDEX_SORT = 'desc';
|
|
8
|
-
const DEFAULT_INDEX_LIMIT =
|
|
8
|
+
const DEFAULT_INDEX_LIMIT = 20;
|
|
9
|
+
const DEFAULT_INDEX_LIMIT_MAX = 100;
|
|
10
|
+
|
|
9
11
|
const DEFAULT_PARTITION_KEY = 'partition';
|
|
10
12
|
|
|
11
13
|
export type IndexOptions = {
|
|
12
14
|
sort?: 'asc' | 'desc';
|
|
13
15
|
limit?: number;
|
|
14
|
-
|
|
16
|
+
indexName?: string;
|
|
15
17
|
exclusiveStartKey?: string;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
export type IndexAllOptions = {
|
|
19
21
|
sort?: 'asc' | 'desc';
|
|
20
|
-
|
|
22
|
+
indexName?: string;
|
|
21
23
|
}
|
|
22
24
|
|
|
23
25
|
export type DefaultAttributes = {
|
|
24
26
|
id: string;
|
|
27
|
+
partition: string;
|
|
25
28
|
createdAt: string;
|
|
26
29
|
createdBy: string;
|
|
27
30
|
createdByUserName?: string;
|
|
@@ -34,6 +37,7 @@ type Constructor<T, D extends Document<T> = Document<T>> = {
|
|
|
34
37
|
new(context: Context, attributes: T): D;
|
|
35
38
|
|
|
36
39
|
_index(query: QueryMap, options: IndexOptions): Promise<{
|
|
40
|
+
limit: number;
|
|
37
41
|
count: number;
|
|
38
42
|
items: T[];
|
|
39
43
|
lastEvaluatedKey?: string;
|
|
@@ -44,13 +48,13 @@ type Constructor<T, D extends Document<T> = Document<T>> = {
|
|
|
44
48
|
items: T[];
|
|
45
49
|
}>;
|
|
46
50
|
|
|
47
|
-
_read(query: QueryMap
|
|
51
|
+
_read(query: QueryMap): Promise<T>;
|
|
48
52
|
|
|
49
|
-
_create(attributes: T, context
|
|
53
|
+
_create(attributes: T, context: Context): Promise<void>;
|
|
50
54
|
|
|
51
|
-
_update<T>(query: QueryMap, mutation: MutationMap, context
|
|
55
|
+
_update<T>(query: QueryMap, mutation: MutationMap, context: Context, previousAttributes: T): Promise<T>;
|
|
52
56
|
|
|
53
|
-
_delete(query: QueryMap, context
|
|
57
|
+
_delete(query: QueryMap, context: Context, previousAttributes: T): Promise<void>;
|
|
54
58
|
};
|
|
55
59
|
|
|
56
60
|
/** Abstract document class. */
|
|
@@ -84,6 +88,11 @@ class Document<Attributes> extends Component<Attributes> {
|
|
|
84
88
|
return DEFAULT_INDEX_LIMIT;
|
|
85
89
|
}
|
|
86
90
|
|
|
91
|
+
/** Defines limit maximum value for index action. */
|
|
92
|
+
static get indexLimitMax(): number {
|
|
93
|
+
return DEFAULT_INDEX_LIMIT_MAX;
|
|
94
|
+
}
|
|
95
|
+
|
|
87
96
|
/** Generates ID for new document unless it's defined in parameters. */
|
|
88
97
|
static createId(attributes: Record<string, unknown>): string {
|
|
89
98
|
const id = get(attributes, this.idKey) as string;
|
|
@@ -212,6 +221,7 @@ class Document<Attributes> extends Component<Attributes> {
|
|
|
212
221
|
query: QueryMap = {},
|
|
213
222
|
options: IndexOptions = {}
|
|
214
223
|
): Promise<{
|
|
224
|
+
limit: number;
|
|
215
225
|
count: number;
|
|
216
226
|
objects: D[];
|
|
217
227
|
lastEvaluatedKey?: string;
|
|
@@ -227,10 +237,15 @@ class Document<Attributes> extends Component<Attributes> {
|
|
|
227
237
|
options.sort = _this.indexDefaultSort;
|
|
228
238
|
}
|
|
229
239
|
|
|
230
|
-
const {
|
|
240
|
+
const { count, limit, items, lastEvaluatedKey } = await this._index(query, options);
|
|
231
241
|
const objects = items.map(attributes => new this(context, attributes));
|
|
232
242
|
|
|
233
|
-
return {
|
|
243
|
+
return {
|
|
244
|
+
limit,
|
|
245
|
+
count,
|
|
246
|
+
objects,
|
|
247
|
+
lastEvaluatedKey,
|
|
248
|
+
};
|
|
234
249
|
}
|
|
235
250
|
|
|
236
251
|
/** Returns all documents. */
|
|
@@ -261,12 +276,11 @@ class Document<Attributes> extends Component<Attributes> {
|
|
|
261
276
|
this: Constructor<T, D>,
|
|
262
277
|
context: Context,
|
|
263
278
|
query: QueryMap,
|
|
264
|
-
options?: unknown
|
|
265
279
|
): Promise<D> {
|
|
266
280
|
const _this = this as unknown as typeof Document;
|
|
267
281
|
_this._extendWithPartition(context, query);
|
|
268
282
|
|
|
269
|
-
const attributes = await this._read(query
|
|
283
|
+
const attributes = await this._read(query);
|
|
270
284
|
const object = new this(context, attributes);
|
|
271
285
|
|
|
272
286
|
return object;
|
|
@@ -308,7 +322,7 @@ class Document<Attributes> extends Component<Attributes> {
|
|
|
308
322
|
|
|
309
323
|
await _this.beforeCreate(context, query, attributes);
|
|
310
324
|
|
|
311
|
-
await this._create(attributes as T);
|
|
325
|
+
await this._create(attributes as T, context);
|
|
312
326
|
const object = new this(context, attributes as T);
|
|
313
327
|
|
|
314
328
|
await _this.afterCreate(context, query, mutation, object);
|
|
@@ -355,10 +369,10 @@ class Document<Attributes> extends Component<Attributes> {
|
|
|
355
369
|
/* NOTE: Ensure that document to be updated exists and save it in the
|
|
356
370
|
context so can be referenced in the after action helper. */
|
|
357
371
|
if (!previousAttributes) {
|
|
358
|
-
previousAttributes = await this._read(query
|
|
372
|
+
previousAttributes = await this._read(query);
|
|
359
373
|
}
|
|
360
374
|
|
|
361
|
-
const updatedAttributes = await this._update(query, mutation) as T;
|
|
375
|
+
const updatedAttributes = await this._update(query, mutation, context, previousAttributes) as T;
|
|
362
376
|
const object = new this(context, updatedAttributes);
|
|
363
377
|
|
|
364
378
|
object._previousAttributes = previousAttributes;
|
|
@@ -392,14 +406,14 @@ class Document<Attributes> extends Component<Attributes> {
|
|
|
392
406
|
|
|
393
407
|
await _this.beforeDelete(context, query);
|
|
394
408
|
|
|
395
|
-
const
|
|
396
|
-
const object = new this(context, attributes);
|
|
409
|
+
const previousAttributes = await this._read(query);
|
|
397
410
|
|
|
398
|
-
await this._delete(query, context);
|
|
411
|
+
await this._delete(query, context, previousAttributes);
|
|
399
412
|
|
|
400
|
-
|
|
413
|
+
const deletedObject = new this(context, previousAttributes);
|
|
414
|
+
await _this.afterDelete(context, query, deletedObject);
|
|
401
415
|
|
|
402
|
-
return
|
|
416
|
+
return deletedObject;
|
|
403
417
|
}
|
|
404
418
|
|
|
405
419
|
/** Before delete hook. */
|