@decaf-ts/core 0.5.20 → 0.5.22
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/LICENSE.md +13 -16
- package/README.md +252 -604
- package/dist/core.cjs +335 -125
- package/dist/core.esm.cjs +338 -128
- package/lib/esm/identity/decorators.js +1 -1
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/model/types.d.ts +0 -9
- package/lib/esm/model/types.js +1 -1
- package/lib/esm/persistence/Adapter.d.ts +61 -51
- package/lib/esm/persistence/Adapter.js +120 -47
- package/lib/esm/persistence/Dispatch.d.ts +2 -13
- package/lib/esm/persistence/Dispatch.js +7 -15
- package/lib/esm/persistence/errors.d.ts +2 -2
- package/lib/esm/persistence/errors.js +4 -4
- package/lib/esm/persistence/types.d.ts +2 -0
- package/lib/esm/persistence/types.js +1 -1
- package/lib/esm/query/Condition.d.ts +8 -0
- package/lib/esm/query/Condition.js +9 -1
- package/lib/esm/query/Paginator.d.ts +2 -2
- package/lib/esm/query/Paginator.js +1 -1
- package/lib/esm/query/Statement.d.ts +4 -3
- package/lib/esm/query/Statement.js +4 -2
- package/lib/esm/query/errors.d.ts +3 -3
- package/lib/esm/query/errors.js +6 -6
- package/lib/esm/ram/RamAdapter.d.ts +8 -14
- package/lib/esm/ram/RamAdapter.js +44 -33
- package/lib/esm/ram/RamContext.d.ts +14 -6
- package/lib/esm/ram/RamContext.js +15 -7
- package/lib/esm/ram/constants.d.ts +1 -2
- package/lib/esm/ram/constants.js +2 -3
- package/lib/esm/ram/types.d.ts +3 -0
- package/lib/esm/ram/types.js +1 -1
- package/lib/esm/repository/Repository.d.ts +8 -7
- package/lib/esm/repository/Repository.js +8 -8
- package/lib/esm/repository/constants.d.ts +5 -4
- package/lib/esm/repository/constants.js +6 -5
- package/lib/esm/repository/decorators.d.ts +1 -1
- package/lib/esm/repository/decorators.js +12 -9
- package/lib/esm/repository/errors.d.ts +2 -2
- package/lib/esm/repository/errors.js +4 -4
- package/lib/esm/repository/injectables.d.ts +82 -11
- package/lib/esm/repository/injectables.js +137 -28
- package/lib/esm/repository/utils.d.ts +28 -6
- package/lib/esm/repository/utils.js +29 -7
- package/lib/esm/utils/errors.d.ts +5 -5
- package/lib/esm/utils/errors.js +9 -9
- package/lib/identity/decorators.cjs +1 -1
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/model/types.cjs +1 -1
- package/lib/model/types.d.ts +0 -9
- package/lib/persistence/Adapter.cjs +119 -46
- package/lib/persistence/Adapter.d.ts +61 -51
- package/lib/persistence/Dispatch.cjs +6 -14
- package/lib/persistence/Dispatch.d.ts +2 -13
- package/lib/persistence/errors.cjs +3 -3
- package/lib/persistence/errors.d.ts +2 -2
- package/lib/persistence/types.cjs +1 -1
- package/lib/persistence/types.d.ts +2 -0
- package/lib/query/Condition.cjs +9 -1
- package/lib/query/Condition.d.ts +8 -0
- package/lib/query/Paginator.cjs +1 -1
- package/lib/query/Paginator.d.ts +2 -2
- package/lib/query/Statement.cjs +4 -2
- package/lib/query/Statement.d.ts +4 -3
- package/lib/query/errors.cjs +5 -5
- package/lib/query/errors.d.ts +3 -3
- package/lib/ram/RamAdapter.cjs +43 -32
- package/lib/ram/RamAdapter.d.ts +8 -14
- package/lib/ram/RamContext.cjs +15 -7
- package/lib/ram/RamContext.d.ts +14 -6
- package/lib/ram/constants.cjs +2 -3
- package/lib/ram/constants.d.ts +1 -2
- package/lib/ram/types.cjs +1 -1
- package/lib/ram/types.d.ts +3 -0
- package/lib/repository/Repository.cjs +8 -8
- package/lib/repository/Repository.d.ts +8 -7
- package/lib/repository/constants.cjs +6 -5
- package/lib/repository/constants.d.ts +5 -4
- package/lib/repository/decorators.cjs +12 -9
- package/lib/repository/decorators.d.ts +1 -1
- package/lib/repository/errors.cjs +3 -3
- package/lib/repository/errors.d.ts +2 -2
- package/lib/repository/injectables.cjs +137 -28
- package/lib/repository/injectables.d.ts +82 -11
- package/lib/repository/utils.cjs +29 -7
- package/lib/repository/utils.d.ts +28 -6
- package/lib/utils/errors.cjs +8 -8
- package/lib/utils/errors.d.ts +5 -5
- package/package.json +3 -2
@@ -2,13 +2,35 @@ import { Constructor } from "@decaf-ts/decorator-validation";
|
|
2
2
|
import { Model } from "@decaf-ts/decorator-validation";
|
3
3
|
/**
|
4
4
|
* @description Generates a unique injectable name for a repository.
|
5
|
-
* @summary Creates a standardized
|
6
|
-
*
|
7
|
-
* @
|
8
|
-
* @param {
|
9
|
-
* @
|
10
|
-
* @
|
5
|
+
* @summary Creates a standardized injectable token for repositories using the adapter flavour and model table name.
|
6
|
+
* This helps the DI system register and resolve repository instances consistently across adapters.
|
7
|
+
* @template T The model type that extends Model.
|
8
|
+
* @param {Constructor<T> | T} model The model constructor or instance from which to derive the table name.
|
9
|
+
* @param {string} [flavour] Optional adapter flavour/alias. If omitted, it is read from model metadata.
|
10
|
+
* @return {string} A namespaced injectable token for the repository (e.g., "db:repo:ram:users").
|
11
|
+
* @throws {InternalError} If the flavour cannot be determined from arguments or metadata.
|
11
12
|
* @function generateInjectableNameForRepository
|
13
|
+
* @mermaid
|
14
|
+
* sequenceDiagram
|
15
|
+
* participant C as Caller
|
16
|
+
* participant U as generateInjectableNameForRepository
|
17
|
+
* participant R as Reflect Metadata
|
18
|
+
* participant A as Adapter
|
19
|
+
* participant S as String Formatter
|
20
|
+
* C->>U: call(model, flavour?)
|
21
|
+
* alt flavour provided
|
22
|
+
* U-->>U: use provided flavour
|
23
|
+
* else flavour not provided
|
24
|
+
* U->>A: Adapter.key(ADAPTER)
|
25
|
+
* U->>R: getMetadata(key, model|model.ctor)
|
26
|
+
* alt metadata present
|
27
|
+
* R-->>U: flavour
|
28
|
+
* else missing
|
29
|
+
* U-->>C: throw InternalError
|
30
|
+
* end
|
31
|
+
* end
|
32
|
+
* U->>S: sf(INJECTABLE, flavour, Repository.table(model))
|
33
|
+
* S-->>C: token string
|
12
34
|
* @memberOf module:core
|
13
35
|
*/
|
14
36
|
export declare function generateInjectableNameForRepository<T extends Model>(model: Constructor<T> | T, flavour?: string): string;
|
package/lib/utils/errors.cjs
CHANGED
@@ -16,9 +16,9 @@ const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
16
16
|
* }
|
17
17
|
* ```
|
18
18
|
*/
|
19
|
-
class AuthorizationError extends db_decorators_1.
|
20
|
-
constructor(msg) {
|
21
|
-
super(
|
19
|
+
class AuthorizationError extends db_decorators_1.BadRequestError {
|
20
|
+
constructor(msg, name = AuthorizationError.name, code = 401) {
|
21
|
+
super(msg, name, code);
|
22
22
|
}
|
23
23
|
}
|
24
24
|
exports.AuthorizationError = AuthorizationError;
|
@@ -37,9 +37,9 @@ exports.AuthorizationError = AuthorizationError;
|
|
37
37
|
* }
|
38
38
|
* ```
|
39
39
|
*/
|
40
|
-
class ForbiddenError extends
|
40
|
+
class ForbiddenError extends AuthorizationError {
|
41
41
|
constructor(msg) {
|
42
|
-
super(ForbiddenError.name,
|
42
|
+
super(msg, ForbiddenError.name, 403);
|
43
43
|
}
|
44
44
|
}
|
45
45
|
exports.ForbiddenError = ForbiddenError;
|
@@ -60,10 +60,10 @@ exports.ForbiddenError = ForbiddenError;
|
|
60
60
|
* }
|
61
61
|
* ```
|
62
62
|
*/
|
63
|
-
class ConnectionError extends db_decorators_1.
|
63
|
+
class ConnectionError extends db_decorators_1.InternalError {
|
64
64
|
constructor(msg) {
|
65
|
-
super(ConnectionError.name,
|
65
|
+
super(msg, ConnectionError.name, 503);
|
66
66
|
}
|
67
67
|
}
|
68
68
|
exports.ConnectionError = ConnectionError;
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyREFBeUU7QUFFekU7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsK0JBQWU7SUFDckQsWUFBWSxHQUFtQixFQUFFLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLEdBQUc7UUFDekUsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBSkQsZ0RBSUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQWEsY0FBZSxTQUFRLGtCQUFrQjtJQUNwRCxZQUFZLEdBQW1CO1FBQzdCLEtBQUssQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUFKRCx3Q0FJQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLDZCQUFhO0lBQ2hELFlBQVksR0FBbUI7UUFDN0IsS0FBSyxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDRjtBQUpELDBDQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFkUmVxdWVzdEVycm9yLCBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEVycm9yIHRocm93biB3aGVuIGEgdXNlciBpcyBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIGFuIGFjdGlvblxuICogQHN1bW1hcnkgVGhpcyBlcnJvciBpcyB0aHJvd24gd2hlbiBhIHVzZXIgYXR0ZW1wdHMgdG8gYWNjZXNzIGEgcmVzb3VyY2Ugb3IgcGVyZm9ybSBhbiBhY3Rpb24gd2l0aG91dCBwcm9wZXIgYXV0aGVudGljYXRpb25cbiAqIEBwYXJhbSB7c3RyaW5nfEVycm9yfSBtc2cgLSBUaGUgZXJyb3IgbWVzc2FnZSBvciBFcnJvciBvYmplY3RcbiAqIEBjbGFzcyBBdXRob3JpemF0aW9uRXJyb3JcbiAqIEBjYXRlZ29yeSBFcnJvcnNcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBFeGFtcGxlIG9mIHRocm93aW5nIGFuIEF1dGhvcml6YXRpb25FcnJvclxuICogaWYgKCF1c2VyLmlzQXV0aGVudGljYXRlZCgpKSB7XG4gKiAgIHRocm93IG5ldyBBdXRob3JpemF0aW9uRXJyb3IoJ1VzZXIgbm90IGF1dGhlbnRpY2F0ZWQnKTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgQXV0aG9yaXphdGlvbkVycm9yIGV4dGVuZHMgQmFkUmVxdWVzdEVycm9yIHtcbiAgY29uc3RydWN0b3IobXNnOiBzdHJpbmcgfCBFcnJvciwgbmFtZSA9IEF1dGhvcml6YXRpb25FcnJvci5uYW1lLCBjb2RlID0gNDAxKSB7XG4gICAgc3VwZXIobXNnLCBuYW1lLCBjb2RlKTtcbiAgfVxufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBFcnJvciB0aHJvd24gd2hlbiBhIHVzZXIgaXMgZm9yYmlkZGVuIGZyb20gYWNjZXNzaW5nIGEgcmVzb3VyY2VcbiAqIEBzdW1tYXJ5IFRoaXMgZXJyb3IgaXMgdGhyb3duIHdoZW4gYW4gYXV0aGVudGljYXRlZCB1c2VyIGF0dGVtcHRzIHRvIGFjY2VzcyBhIHJlc291cmNlIG9yIHBlcmZvcm0gYW4gYWN0aW9uIHRoZXkgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIGZvclxuICogQHBhcmFtIHtzdHJpbmd8RXJyb3J9IG1zZyAtIFRoZSBlcnJvciBtZXNzYWdlIG9yIEVycm9yIG9iamVjdFxuICogQHJldHVybiB7dm9pZH1cbiAqIEBjbGFzcyBGb3JiaWRkZW5FcnJvclxuICogQGNhdGVnb3J5IEVycm9yc1xuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEV4YW1wbGUgb2YgdGhyb3dpbmcgYSBGb3JiaWRkZW5FcnJvclxuICogaWYgKCF1c2VyLmhhc1Blcm1pc3Npb24oJ2FkbWluJykpIHtcbiAqICAgdGhyb3cgbmV3IEZvcmJpZGRlbkVycm9yKCdVc2VyIGRvZXMgbm90IGhhdmUgYWRtaW4gcGVybWlzc2lvbnMnKTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgRm9yYmlkZGVuRXJyb3IgZXh0ZW5kcyBBdXRob3JpemF0aW9uRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcihtc2c6IHN0cmluZyB8IEVycm9yKSB7XG4gICAgc3VwZXIobXNnLCBGb3JiaWRkZW5FcnJvci5uYW1lLCA0MDMpO1xuICB9XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEVycm9yIHRocm93biB3aGVuIGEgY29ubmVjdGlvbiB0byBhIHNlcnZpY2UgZmFpbHNcbiAqIEBzdW1tYXJ5IFRoaXMgZXJyb3IgaXMgdGhyb3duIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGZhaWxzIHRvIGVzdGFibGlzaCBhIGNvbm5lY3Rpb24gdG8gYSByZXF1aXJlZCBzZXJ2aWNlIG9yIHJlc291cmNlXG4gKiBAcGFyYW0ge3N0cmluZ3xFcnJvcn0gbXNnIC0gVGhlIGVycm9yIG1lc3NhZ2Ugb3IgRXJyb3Igb2JqZWN0XG4gKiBAcmV0dXJuIHt2b2lkfVxuICogQGNsYXNzIENvbm5lY3Rpb25FcnJvclxuICogQGNhdGVnb3J5IEVycm9yc1xuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEV4YW1wbGUgb2YgdGhyb3dpbmcgYSBDb25uZWN0aW9uRXJyb3JcbiAqIHRyeSB7XG4gKiAgIGF3YWl0IGRhdGFiYXNlLmNvbm5lY3QoKTtcbiAqIH0gY2F0Y2ggKGVycm9yKSB7XG4gKiAgIHRocm93IG5ldyBDb25uZWN0aW9uRXJyb3IoJ0ZhaWxlZCB0byBjb25uZWN0IHRvIGRhdGFiYXNlJyk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIENvbm5lY3Rpb25FcnJvciBleHRlbmRzIEludGVybmFsRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcihtc2c6IHN0cmluZyB8IEVycm9yKSB7XG4gICAgc3VwZXIobXNnLCBDb25uZWN0aW9uRXJyb3IubmFtZSwgNTAzKTtcbiAgfVxufVxuIl19
|
package/lib/utils/errors.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { BadRequestError, InternalError } from "@decaf-ts/db-decorators";
|
2
2
|
/**
|
3
3
|
* @description Error thrown when a user is not authorized to perform an action
|
4
4
|
* @summary This error is thrown when a user attempts to access a resource or perform an action without proper authentication
|
@@ -13,8 +13,8 @@ import { BaseError } from "@decaf-ts/db-decorators";
|
|
13
13
|
* }
|
14
14
|
* ```
|
15
15
|
*/
|
16
|
-
export declare class AuthorizationError extends
|
17
|
-
constructor(msg: string | Error);
|
16
|
+
export declare class AuthorizationError extends BadRequestError {
|
17
|
+
constructor(msg: string | Error, name?: string, code?: number);
|
18
18
|
}
|
19
19
|
/**
|
20
20
|
* @description Error thrown when a user is forbidden from accessing a resource
|
@@ -31,7 +31,7 @@ export declare class AuthorizationError extends BaseError {
|
|
31
31
|
* }
|
32
32
|
* ```
|
33
33
|
*/
|
34
|
-
export declare class ForbiddenError extends
|
34
|
+
export declare class ForbiddenError extends AuthorizationError {
|
35
35
|
constructor(msg: string | Error);
|
36
36
|
}
|
37
37
|
/**
|
@@ -51,6 +51,6 @@ export declare class ForbiddenError extends BaseError {
|
|
51
51
|
* }
|
52
52
|
* ```
|
53
53
|
*/
|
54
|
-
export declare class ConnectionError extends
|
54
|
+
export declare class ConnectionError extends InternalError {
|
55
55
|
constructor(msg: string | Error);
|
56
56
|
}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@decaf-ts/core",
|
3
|
-
"version": "0.5.
|
3
|
+
"version": "0.5.22",
|
4
4
|
"description": "Core persistence module for the decaf framework",
|
5
5
|
"type": "module",
|
6
6
|
"exports": {
|
@@ -32,6 +32,7 @@
|
|
32
32
|
"coverage": "rimraf ./workdocs/reports/data/*.json && npm run test:all -- --coverage --config=./workdocs/reports/jest.coverage.config.ts",
|
33
33
|
"lint": "eslint .",
|
34
34
|
"lint-fix": "eslint --fix .",
|
35
|
+
"prepare-pr": "npm run lint-fix && npm run build:prod && npm run coverage && npm run docs",
|
35
36
|
"prepare-release": "npm run lint-fix && npm run build:prod && npm run coverage && npm run docs",
|
36
37
|
"release": "./bin/tag-release.sh",
|
37
38
|
"clean-publish": "npx clean-publish",
|
@@ -71,7 +72,7 @@
|
|
71
72
|
"ts"
|
72
73
|
],
|
73
74
|
"author": "Tiago Venceslau",
|
74
|
-
"license": "
|
75
|
+
"license": "AGPL-3.0-or-later",
|
75
76
|
"bugs": {
|
76
77
|
"url": "https://github.com/decaf-ts/core/issues"
|
77
78
|
},
|