@decaf-ts/for-http 0.3.11 → 0.3.13
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/README.md +1 -1
- package/dist/for-http.cjs +1 -1
- package/dist/for-http.cjs.map +1 -1
- package/dist/for-http.js +1 -1
- package/dist/for-http.js.map +1 -1
- package/lib/HttpPaginator.cjs +5 -56
- package/lib/HttpPaginator.d.ts +5 -6
- package/lib/HttpPaginator.js.map +1 -1
- package/lib/HttpStatement.cjs +7 -97
- package/lib/HttpStatement.d.ts +8 -6
- package/lib/HttpStatement.js.map +1 -1
- package/lib/ResponseParser.cjs +37 -0
- package/lib/ResponseParser.d.ts +14 -0
- package/lib/ResponseParser.js.map +1 -0
- package/lib/RestRepository.cjs +38 -10
- package/lib/RestRepository.d.ts +14 -3
- package/lib/RestRepository.js.map +1 -1
- package/lib/RestService.cjs +5 -2
- package/lib/RestService.d.ts +11 -2
- package/lib/RestService.js.map +1 -1
- package/lib/adapter.cjs +26 -14
- package/lib/adapter.d.ts +15 -15
- package/lib/adapter.js.map +1 -1
- package/lib/axios/axios.cjs +6 -6
- package/lib/axios/axios.d.ts +6 -6
- package/lib/axios/axios.js.map +1 -1
- package/lib/esm/HttpPaginator.d.ts +5 -6
- package/lib/esm/HttpPaginator.js +6 -57
- package/lib/esm/HttpPaginator.js.map +1 -1
- package/lib/esm/HttpStatement.d.ts +8 -6
- package/lib/esm/HttpStatement.js +8 -98
- package/lib/esm/HttpStatement.js.map +1 -1
- package/lib/esm/ResponseParser.d.ts +14 -0
- package/lib/esm/ResponseParser.js +32 -0
- package/lib/esm/ResponseParser.js.map +1 -0
- package/lib/esm/RestRepository.d.ts +14 -3
- package/lib/esm/RestRepository.js +38 -10
- package/lib/esm/RestRepository.js.map +1 -1
- package/lib/esm/RestService.d.ts +11 -2
- package/lib/esm/RestService.js +5 -2
- package/lib/esm/RestService.js.map +1 -1
- package/lib/esm/adapter.d.ts +15 -15
- package/lib/esm/adapter.js +27 -15
- package/lib/esm/adapter.js.map +1 -1
- package/lib/esm/axios/axios.d.ts +6 -6
- package/lib/esm/axios/axios.js +7 -7
- package/lib/esm/axios/axios.js.map +1 -1
- package/lib/esm/index.d.ts +5 -1
- package/lib/esm/index.js +7 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/types.d.ts +4 -9
- package/lib/index.cjs +8 -2
- package/lib/index.d.ts +5 -1
- package/lib/index.js.map +1 -1
- package/lib/types.d.ts +4 -9
- package/package.json +1 -1
package/lib/RestRepository.cjs
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.RestRepository = void 0;
|
|
4
4
|
const core_1 = require("@decaf-ts/core");
|
|
5
5
|
const decorator_validation_1 = require("@decaf-ts/decorator-validation");
|
|
6
|
+
const core_2 = require("@decaf-ts/core");
|
|
6
7
|
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
7
8
|
/**
|
|
8
9
|
* @description Repository for REST API interactions
|
|
@@ -36,42 +37,69 @@ const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
|
36
37
|
class RestRepository extends core_1.Repository {
|
|
37
38
|
constructor(adapter, clazz) {
|
|
38
39
|
super(adapter, clazz);
|
|
40
|
+
this._overrides = Object.assign({}, super["_overrides"], {
|
|
41
|
+
allowRawStatements: false,
|
|
42
|
+
forcePrepareSimpleQueries: true,
|
|
43
|
+
forcePrepareComplexQueries: true,
|
|
44
|
+
});
|
|
39
45
|
}
|
|
40
46
|
url(tableName, pathParams, queryParams) {
|
|
41
47
|
return this.adapter.url(tableName, pathParams, queryParams);
|
|
42
48
|
}
|
|
49
|
+
async createAll(models, ...args) {
|
|
50
|
+
return this.adapter.parseResponse(db_decorators_1.BulkCrudOperationKeys.CREATE_ALL, await super.createAll(models, ...args));
|
|
51
|
+
}
|
|
52
|
+
async readAll(keys, ...args) {
|
|
53
|
+
return this.adapter.parseResponse(db_decorators_1.BulkCrudOperationKeys.READ_ALL, await super.readAll(keys, ...args));
|
|
54
|
+
}
|
|
55
|
+
async updateAll(models, ...args) {
|
|
56
|
+
return this.adapter.parseResponse(db_decorators_1.BulkCrudOperationKeys.UPDATE_ALL, await super.updateAll(models, ...args));
|
|
57
|
+
}
|
|
58
|
+
async deleteAll(keys, ...args) {
|
|
59
|
+
return this.adapter.parseResponse(db_decorators_1.BulkCrudOperationKeys.DELETE_ALL, await super.deleteAll(keys, ...args));
|
|
60
|
+
}
|
|
43
61
|
async paginateBy(key, order, size, ...args) {
|
|
44
|
-
const contextArgs = await
|
|
62
|
+
const contextArgs = await core_1.Context.args(core_2.PreparedStatementKeys.PAGE_BY, this.class, args, this.adapter, this._overrides || {});
|
|
45
63
|
const { log, ctxArgs } = this.logCtx(contextArgs.args, this.paginateBy);
|
|
46
64
|
log.verbose(`paginating ${decorator_validation_1.Model.tableName(this.class)} with page size ${size}`);
|
|
47
|
-
return
|
|
65
|
+
return this.select()
|
|
66
|
+
.orderBy([key, order])
|
|
67
|
+
.paginate(size, ...ctxArgs);
|
|
48
68
|
}
|
|
49
69
|
async listBy(key, order, ...args) {
|
|
50
|
-
const contextArgs = await
|
|
70
|
+
const contextArgs = await core_1.Context.args("list", this.class, args, this.adapter, this._overrides || {});
|
|
51
71
|
const { log, ctxArgs } = this.logCtx(contextArgs.args, this.listBy);
|
|
52
72
|
log.verbose(`listing ${decorator_validation_1.Model.tableName(this.class)} by ${key} ${order}`);
|
|
53
|
-
return (await this.statement(this.listBy.name, key, order, ...ctxArgs));
|
|
73
|
+
return (await this.statement(this.listBy.name, key, { direction: order }, ...ctxArgs));
|
|
74
|
+
}
|
|
75
|
+
async findBy(key, value, ...args) {
|
|
76
|
+
const contextArgs = await core_1.Context.args(core_2.PreparedStatementKeys.FIND_BY, this.class, args, this.adapter, this._overrides || {});
|
|
77
|
+
const { log, ctxArgs } = this.logCtx(contextArgs.args, this.findBy);
|
|
78
|
+
log.verbose(`finding all ${decorator_validation_1.Model.tableName(this.class)} with ${key} ${value}`);
|
|
79
|
+
return (await this.statement(this.findBy.name, key, value, {}, ...ctxArgs));
|
|
54
80
|
}
|
|
55
81
|
async findOneBy(key, value, ...args) {
|
|
56
|
-
const contextArgs = await
|
|
82
|
+
const contextArgs = await core_1.Context.args(core_2.PreparedStatementKeys.FIND_ONE_BY, this.class, args, this.adapter, this._overrides || {});
|
|
57
83
|
const { log, ctxArgs } = this.logCtx(contextArgs.args, this.findOneBy);
|
|
58
|
-
log.verbose(`finding ${decorator_validation_1.Model.tableName(this.class)} with ${key} ${value}`);
|
|
59
|
-
return (await this.statement(this.findOneBy.name, key, value, ...ctxArgs));
|
|
84
|
+
log.verbose(`finding One ${decorator_validation_1.Model.tableName(this.class)} with ${key} ${value}`);
|
|
85
|
+
return (await this.statement(this.findOneBy.name, key, value, {}, ...ctxArgs));
|
|
60
86
|
}
|
|
61
87
|
async statement(name, ...args) {
|
|
62
|
-
const contextArgs = await
|
|
88
|
+
const contextArgs = await core_1.Context.args(core_1.PersistenceKeys.STATEMENT, this.class, args, this.adapter, this._overrides || {});
|
|
63
89
|
const { log, ctxArgs, ctx } = this.logCtx(contextArgs.args, this.statement);
|
|
90
|
+
const params = args.pop();
|
|
64
91
|
const query = {
|
|
65
92
|
class: this.class,
|
|
66
93
|
args: args,
|
|
67
94
|
method: name,
|
|
95
|
+
params: params,
|
|
68
96
|
};
|
|
69
97
|
const req = this.adapter.toRequest(query, ctx);
|
|
70
98
|
log.verbose(`Executing prepared statement ${name}`);
|
|
71
|
-
return this.request(req, ...ctxArgs);
|
|
99
|
+
return this.adapter.parseResponse(name, await this.request(req, ...ctxArgs));
|
|
72
100
|
}
|
|
73
101
|
async request(details, ...args) {
|
|
74
|
-
const contextArgs = await
|
|
102
|
+
const contextArgs = await core_1.Context.args("request", this.class, args, this.adapter, this._overrides || {});
|
|
75
103
|
const { ctxArgs } = this.logCtx(contextArgs.args, this.request);
|
|
76
104
|
return this.adapter.request(details, ...ctxArgs);
|
|
77
105
|
}
|
package/lib/RestRepository.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { ContextOf, MaybeContextualArg, OrderDirection,
|
|
1
|
+
import { ContextOf, MaybeContextualArg, OrderDirection, Repository } from "@decaf-ts/core";
|
|
2
2
|
import { Model } from "@decaf-ts/decorator-validation";
|
|
3
3
|
import { Constructor } from "@decaf-ts/decoration";
|
|
4
4
|
import { HttpAdapter } from "./adapter";
|
|
5
|
+
import { PrimaryKeyType } from "@decaf-ts/db-decorators";
|
|
5
6
|
/**
|
|
6
7
|
* @description Repository for REST API interactions
|
|
7
8
|
* @summary A specialized repository implementation for interacting with REST APIs.
|
|
@@ -32,13 +33,23 @@ import { HttpAdapter } from "./adapter";
|
|
|
32
33
|
* @see {@link RestService}
|
|
33
34
|
*/
|
|
34
35
|
export declare class RestRepository<M extends Model, A extends HttpAdapter<any, any, any, any, any>, Q = A extends HttpAdapter<any, any, any, infer Q, any> ? Q : never> extends Repository<M, A> {
|
|
36
|
+
protected _overrides: Partial<import("@decaf-ts/core").FlagsOf<ContextOf<A>>> & Partial<import("@decaf-ts/db-decorators").FlagsOf<ContextOf<A>>> & {
|
|
37
|
+
allowRawStatements: boolean;
|
|
38
|
+
forcePrepareSimpleQueries: boolean;
|
|
39
|
+
forcePrepareComplexQueries: boolean;
|
|
40
|
+
};
|
|
35
41
|
constructor(adapter: A, clazz?: Constructor<M>);
|
|
36
42
|
url<M extends Model>(tableName: string | Constructor<M>): string;
|
|
37
43
|
url<M extends Model>(tableName: string | Constructor<M>, pathParams: string[]): string;
|
|
38
44
|
url<M extends Model>(tableName: string | Constructor<M>, queryParams: Record<string, string | number> | undefined): string;
|
|
39
|
-
|
|
45
|
+
createAll(models: M[], ...args: MaybeContextualArg<ContextOf<A>>): Promise<M[]>;
|
|
46
|
+
readAll(keys: PrimaryKeyType[], ...args: MaybeContextualArg<ContextOf<A>>): Promise<M[]>;
|
|
47
|
+
updateAll(models: M[], ...args: MaybeContextualArg<ContextOf<A>>): Promise<M[]>;
|
|
48
|
+
deleteAll(keys: PrimaryKeyType[], ...args: MaybeContextualArg<ContextOf<A>>): Promise<M[]>;
|
|
49
|
+
paginateBy(key: keyof M, order: OrderDirection, size: number, ...args: MaybeContextualArg<ContextOf<A>>): Promise<import("@decaf-ts/core").Paginator<M, M[], any>>;
|
|
40
50
|
listBy(key: keyof M, order: OrderDirection, ...args: MaybeContextualArg<ContextOf<A>>): Promise<any>;
|
|
41
|
-
|
|
51
|
+
findBy(key: keyof M, value: any, ...args: MaybeContextualArg<ContextOf<A>>): Promise<M[]>;
|
|
52
|
+
findOneBy(key: keyof M, value: any, ...args: MaybeContextualArg<ContextOf<A>>): Promise<M>;
|
|
42
53
|
statement(name: string, ...args: MaybeContextualArg<ContextOf<A>>): Promise<any>;
|
|
43
54
|
request<R>(details: Q, ...args: MaybeContextualArg<ContextOf<A>>): Promise<R>;
|
|
44
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RestRepository.js","sourceRoot":"","sources":["../src/RestRepository.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"RestRepository.js","sourceRoot":"","sources":["../src/RestRepository.ts"],"names":[],"mappings":"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"}
|
package/lib/RestService.cjs
CHANGED
|
@@ -61,10 +61,13 @@ class RestService extends RestRepository_1.RestRepository {
|
|
|
61
61
|
*/
|
|
62
62
|
constructor(adapter, clazz) {
|
|
63
63
|
super(adapter, clazz);
|
|
64
|
-
this._overrides = {
|
|
64
|
+
this._overrides = Object.assign({}, super["_overrides"], {
|
|
65
65
|
ignoreValidation: true,
|
|
66
66
|
ignoreHandlers: true,
|
|
67
|
-
|
|
67
|
+
allowRawStatements: false,
|
|
68
|
+
forcePrepareSimpleQueries: true,
|
|
69
|
+
forcePrepareComplexQueries: true,
|
|
70
|
+
});
|
|
68
71
|
}
|
|
69
72
|
toString() {
|
|
70
73
|
return `${decorator_validation_1.Model.tableName(this.class)} REST service`;
|
package/lib/RestService.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Model } from "@decaf-ts/decorator-validation";
|
|
2
2
|
import { Constructor } from "@decaf-ts/decoration";
|
|
3
|
-
import { FlagsOf } from "@decaf-ts/core";
|
|
4
3
|
import { HttpAdapter } from "./adapter";
|
|
5
4
|
import { RestRepository } from "./RestRepository";
|
|
6
5
|
/**
|
|
@@ -52,7 +51,17 @@ import { RestRepository } from "./RestRepository";
|
|
|
52
51
|
* Service-->>Client: revert(record)
|
|
53
52
|
*/
|
|
54
53
|
export declare class RestService<M extends Model, A extends HttpAdapter<any, any, any, any, any>, Q = A extends HttpAdapter<any, any, any, infer Q, any> ? Q : never> extends RestRepository<M, A, Q> {
|
|
55
|
-
protected _overrides: Partial<FlagsOf<A
|
|
54
|
+
protected _overrides: Partial<import("@decaf-ts/core").FlagsOf<import("@decaf-ts/core").ContextOf<A>>> & Partial<import("@decaf-ts/db-decorators").FlagsOf<import("@decaf-ts/core").ContextOf<A>>> & {
|
|
55
|
+
allowRawStatements: boolean;
|
|
56
|
+
forcePrepareSimpleQueries: boolean;
|
|
57
|
+
forcePrepareComplexQueries: boolean;
|
|
58
|
+
} & {
|
|
59
|
+
ignoreValidation: boolean;
|
|
60
|
+
ignoreHandlers: boolean;
|
|
61
|
+
allowRawStatements: boolean;
|
|
62
|
+
forcePrepareSimpleQueries: boolean;
|
|
63
|
+
forcePrepareComplexQueries: boolean;
|
|
64
|
+
};
|
|
56
65
|
/**
|
|
57
66
|
* @description Initializes a new RestService instance
|
|
58
67
|
* @summary Creates a new service instance with the specified adapter and optional model class.
|
package/lib/RestService.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RestService.js","sourceRoot":"","sources":["../src/RestService.ts"],"names":[],"mappings":";;;AAAA,yEAAuD;
|
|
1
|
+
{"version":3,"file":"RestService.js","sourceRoot":"","sources":["../src/RestService.ts"],"names":[],"mappings":";;;AAAA,yEAAuD;AAGvD,yDAAkD;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAa,WAIX,SAAQ,+BAAuB;IAS/B;;;;;;OAMG;IACH,YAAY,OAAU,EAAE,KAAsB;QAC5C,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAhBL,eAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE;YACrE,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,IAAI;YACpB,kBAAkB,EAAE,KAAK;YACzB,yBAAyB,EAAE,IAAI;YAC/B,0BAA0B,EAAE,IAAI;SACjC,CAAC,CAAC;IAWH,CAAC;IAEQ,QAAQ;QACf,OAAO,GAAG,4BAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;IACvD,CAAC;CACF;AA3BD,kCA2BC"}
|
package/lib/adapter.cjs
CHANGED
|
@@ -9,6 +9,8 @@ const RestService_1 = require("./RestService.cjs");
|
|
|
9
9
|
const core_2 = require("@decaf-ts/core");
|
|
10
10
|
const logging_1 = require("@decaf-ts/logging");
|
|
11
11
|
const HttpStatement_1 = require("./HttpStatement.cjs");
|
|
12
|
+
const HttpPaginator_1 = require("./HttpPaginator.cjs");
|
|
13
|
+
const ResponseParser_1 = require("./ResponseParser.cjs");
|
|
12
14
|
/**
|
|
13
15
|
* @description Abstract HTTP adapter for REST API interactions
|
|
14
16
|
* @summary Provides a base implementation for HTTP adapters with methods for CRUD operations,
|
|
@@ -43,22 +45,24 @@ const HttpStatement_1 = require("./HttpStatement.cjs");
|
|
|
43
45
|
*/
|
|
44
46
|
class HttpAdapter extends core_1.Adapter {
|
|
45
47
|
constructor(config, flavour, alias) {
|
|
46
|
-
super(
|
|
48
|
+
super(Object.assign({}, config, {
|
|
49
|
+
responseParser: config.responseParser || new ResponseParser_1.ResponseParser(),
|
|
50
|
+
}), flavour, alias);
|
|
47
51
|
}
|
|
48
52
|
/**
|
|
49
53
|
* @description Generates operation flags with HTTP headers
|
|
50
|
-
* @summary Extends the base flags method to
|
|
51
|
-
* This method adds an empty headers object to the flags returned by the parent class.
|
|
52
|
-
* @template F - The Repository Flags type
|
|
54
|
+
* @summary Extends the base flags method to ensure HTTP headers exist on the flags payload.
|
|
53
55
|
* @template M - The model type
|
|
54
|
-
* @param {OperationKeys
|
|
55
|
-
* @param {Constructor
|
|
56
|
-
* @param {Partial<
|
|
57
|
-
* @
|
|
56
|
+
* @param {OperationKeys|string} operation - The type of operation being performed
|
|
57
|
+
* @param {Constructor | Constructor[]} model - The target model constructor(s)
|
|
58
|
+
* @param {Partial<FlagsOf<C>>} overrides - Optional flag overrides
|
|
59
|
+
* @param {...any[]} args - Additional arguments forwarded to the base implementation
|
|
60
|
+
* @return {Promise<FlagsOf<C>>} The flags object with headers
|
|
58
61
|
*/
|
|
59
|
-
async flags(operation, model, overrides) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
+
async flags(operation, model, overrides, ...args) {
|
|
63
|
+
const flags = await super.flags(operation, model, overrides, ...args);
|
|
64
|
+
return Object.assign({}, flags, {
|
|
65
|
+
headers: flags.headers ?? {},
|
|
62
66
|
});
|
|
63
67
|
}
|
|
64
68
|
/**
|
|
@@ -165,6 +169,11 @@ class HttpAdapter extends core_1.Adapter {
|
|
|
165
169
|
return [idStr];
|
|
166
170
|
return idStr.split(composed.separator);
|
|
167
171
|
}
|
|
172
|
+
parseResponse(method, res) {
|
|
173
|
+
if (!this.config.responseParser)
|
|
174
|
+
throw new db_decorators_1.InternalError(`No response parser configured`);
|
|
175
|
+
return this.config.responseParser.parse(method, res);
|
|
176
|
+
}
|
|
168
177
|
/**
|
|
169
178
|
* @description Executes a raw query
|
|
170
179
|
* @summary Method for executing raw queries directly with the HTTP client.
|
|
@@ -205,8 +214,11 @@ class HttpAdapter extends core_1.Adapter {
|
|
|
205
214
|
* @return {Statement<Q, M, any>} A statement object for building queries
|
|
206
215
|
* @throws {UnsupportedError} Always throws as this method is not supported by default
|
|
207
216
|
*/
|
|
208
|
-
Statement() {
|
|
209
|
-
return new HttpStatement_1.HttpStatement(this);
|
|
217
|
+
Statement(overrides) {
|
|
218
|
+
return new HttpStatement_1.HttpStatement(this, overrides);
|
|
219
|
+
}
|
|
220
|
+
Paginator(query, size, clazz) {
|
|
221
|
+
return new HttpPaginator_1.HttpPaginator(this, query, size, clazz);
|
|
210
222
|
}
|
|
211
223
|
/**
|
|
212
224
|
* @description Parses a condition into a query
|
|
@@ -263,7 +275,7 @@ class HttpAdapter extends core_1.Adapter {
|
|
|
263
275
|
descriptor.value = new Proxy(descriptor.value, {
|
|
264
276
|
async apply(target, thisArg, args) {
|
|
265
277
|
const repo = thisArg;
|
|
266
|
-
const contextArgs = await
|
|
278
|
+
const contextArgs = await core_1.Context.args(propertyKey, repo.class, args, repo["adapter"], repo["_overrides"] || {});
|
|
267
279
|
const { log, ctxArgs } = repo["logCtx"](contextArgs.args, target);
|
|
268
280
|
log.verbose(`Running prepared statement ${target.name}`);
|
|
269
281
|
log.debug(`With args: ${JSON.stringify(args, null, 2)}`);
|
package/lib/adapter.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Adapter, Condition, ContextualArgs, MaybeContextualArg, PreparedModel, Repository, Sequence, SequenceOptions } from "@decaf-ts/core";
|
|
2
|
-
import { BaseError,
|
|
3
|
-
import { HttpConfig, HttpFlags
|
|
1
|
+
import { Adapter, Condition, Paginator, Context, ContextualArgs, FlagsOf, MaybeContextualArg, PreparedModel, Repository, Sequence, SequenceOptions, PreparedStatement } from "@decaf-ts/core";
|
|
2
|
+
import { BaseError, OperationKeys, PrimaryKeyType } from "@decaf-ts/db-decorators";
|
|
3
|
+
import { HttpConfig, HttpFlags } from "./types";
|
|
4
4
|
import { Model } from "@decaf-ts/decorator-validation";
|
|
5
5
|
import { Constructor } from "@decaf-ts/decoration";
|
|
6
6
|
import { Statement } from "@decaf-ts/core";
|
|
7
|
+
import type { AdapterFlags } from "@decaf-ts/core";
|
|
7
8
|
/**
|
|
8
9
|
* @description Abstract HTTP adapter for REST API interactions
|
|
9
10
|
* @summary Provides a base implementation for HTTP adapters with methods for CRUD operations,
|
|
@@ -36,22 +37,19 @@ import { Statement } from "@decaf-ts/core";
|
|
|
36
37
|
* }
|
|
37
38
|
* ```
|
|
38
39
|
*/
|
|
39
|
-
export declare abstract class HttpAdapter<CONF extends HttpConfig, CON, REQ, Q extends
|
|
40
|
+
export declare abstract class HttpAdapter<CONF extends HttpConfig, CON, REQ, Q extends PreparedStatement<any> = PreparedStatement<any>, C extends Context<HttpFlags> = Context<HttpFlags>> extends Adapter<CONF, CON, Q, C> {
|
|
40
41
|
protected constructor(config: CONF, flavour: string, alias?: string);
|
|
41
42
|
/**
|
|
42
43
|
* @description Generates operation flags with HTTP headers
|
|
43
|
-
* @summary Extends the base flags method to
|
|
44
|
-
* This method adds an empty headers object to the flags returned by the parent class.
|
|
45
|
-
* @template F - The Repository Flags type
|
|
44
|
+
* @summary Extends the base flags method to ensure HTTP headers exist on the flags payload.
|
|
46
45
|
* @template M - The model type
|
|
47
|
-
* @param {OperationKeys
|
|
48
|
-
* @param {Constructor
|
|
49
|
-
* @param {Partial<
|
|
50
|
-
* @
|
|
46
|
+
* @param {OperationKeys|string} operation - The type of operation being performed
|
|
47
|
+
* @param {Constructor | Constructor[]} model - The target model constructor(s)
|
|
48
|
+
* @param {Partial<FlagsOf<C>>} overrides - Optional flag overrides
|
|
49
|
+
* @param {...any[]} args - Additional arguments forwarded to the base implementation
|
|
50
|
+
* @return {Promise<FlagsOf<C>>} The flags object with headers
|
|
51
51
|
*/
|
|
52
|
-
flags<M extends Model>(operation: OperationKeys
|
|
53
|
-
headers: {};
|
|
54
|
-
}>;
|
|
52
|
+
protected flags<M extends Model>(operation: OperationKeys | string, model: Constructor<M> | Constructor<M>[], overrides: Partial<FlagsOf<C>>, ...args: any[]): Promise<FlagsOf<C>>;
|
|
55
53
|
/**
|
|
56
54
|
* @description Returns the repository constructor for this adapter
|
|
57
55
|
* @summary Provides the RestService class as the repository implementation for this HTTP adapter.
|
|
@@ -125,6 +123,7 @@ export declare abstract class HttpAdapter<CONF extends HttpConfig, CON, REQ, Q e
|
|
|
125
123
|
*/
|
|
126
124
|
abstract request<V>(details: REQ, ...args: MaybeContextualArg<C>): Promise<V>;
|
|
127
125
|
protected extractIdArgs<M extends Model>(model: Constructor<M> | string, id: PrimaryKeyType): string[];
|
|
126
|
+
parseResponse(method: OperationKeys | string, res: any): any;
|
|
128
127
|
/**
|
|
129
128
|
* @description Creates a new resource
|
|
130
129
|
* @summary Abstract method that must be implemented by subclasses to create a new resource
|
|
@@ -200,7 +199,8 @@ export declare abstract class HttpAdapter<CONF extends HttpConfig, CON, REQ, Q e
|
|
|
200
199
|
* @return {Statement<Q, M, any>} A statement object for building queries
|
|
201
200
|
* @throws {UnsupportedError} Always throws as this method is not supported by default
|
|
202
201
|
*/
|
|
203
|
-
Statement<M extends Model>(): Statement<M, Adapter<CONF, CON, Q, C>, any>;
|
|
202
|
+
Statement<M extends Model>(overrides?: Partial<AdapterFlags>): Statement<M, Adapter<CONF, CON, Q, C>, any>;
|
|
203
|
+
Paginator<M extends Model>(query: Q, size: number, clazz: Constructor<M>): Paginator<M, M, Q>;
|
|
204
204
|
/**
|
|
205
205
|
* @description Parses a condition into a query
|
|
206
206
|
* @summary Method for parsing a condition object into a query format understood by the HTTP client.
|
package/lib/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
package/lib/axios/axios.cjs
CHANGED
|
@@ -65,7 +65,7 @@ class AxiosHttpAdapter extends adapter_1.HttpAdapter {
|
|
|
65
65
|
toRequest(ctxOrQuery, ctx) {
|
|
66
66
|
let query;
|
|
67
67
|
let context;
|
|
68
|
-
if (ctxOrQuery instanceof
|
|
68
|
+
if (ctxOrQuery instanceof core_1.Context) {
|
|
69
69
|
context = ctxOrQuery;
|
|
70
70
|
query = undefined; // In this overload, ctx is actually the query
|
|
71
71
|
}
|
|
@@ -85,7 +85,7 @@ class AxiosHttpAdapter extends adapter_1.HttpAdapter {
|
|
|
85
85
|
}
|
|
86
86
|
if (query) {
|
|
87
87
|
req.method = "GET";
|
|
88
|
-
req.url = this.url(query.class, [core_1.PersistenceKeys.STATEMENT, query.method, ...query.args], query.params);
|
|
88
|
+
req.url = this.url(query.class, [core_1.PersistenceKeys.STATEMENT, query.method, ...(query.args || [])], query.params);
|
|
89
89
|
}
|
|
90
90
|
return req;
|
|
91
91
|
}
|
|
@@ -124,7 +124,7 @@ class AxiosHttpAdapter extends adapter_1.HttpAdapter {
|
|
|
124
124
|
const url = this.url(tableName);
|
|
125
125
|
const cfg = this.toRequest(ctx);
|
|
126
126
|
log.debug(`POSTing to ${url} with ${JSON.stringify(model)} and cfg ${JSON.stringify(cfg)}`);
|
|
127
|
-
return this.client.post(url, model, cfg);
|
|
127
|
+
return this.parseResponse(db_decorators_1.OperationKeys.CREATE, await this.client.post(url, model, cfg));
|
|
128
128
|
}
|
|
129
129
|
catch (e) {
|
|
130
130
|
throw this.parseError(e);
|
|
@@ -144,7 +144,7 @@ class AxiosHttpAdapter extends adapter_1.HttpAdapter {
|
|
|
144
144
|
const url = this.url(tableName, this.extractIdArgs(tableName, id));
|
|
145
145
|
const cfg = this.toRequest(ctx);
|
|
146
146
|
log.debug(`GETing from ${url} and cfg ${JSON.stringify(cfg)}`);
|
|
147
|
-
return this.client.get(url);
|
|
147
|
+
return this.parseResponse(db_decorators_1.OperationKeys.READ, await this.client.get(url));
|
|
148
148
|
}
|
|
149
149
|
catch (e) {
|
|
150
150
|
throw this.parseError(e);
|
|
@@ -165,7 +165,7 @@ class AxiosHttpAdapter extends adapter_1.HttpAdapter {
|
|
|
165
165
|
const url = this.url(tableName, this.extractIdArgs(tableName, id));
|
|
166
166
|
const cfg = this.toRequest(ctx);
|
|
167
167
|
log.debug(`PUTing to ${url} with ${JSON.stringify(model)} and cfg ${JSON.stringify(cfg)}`);
|
|
168
|
-
return this.client.put(url, model);
|
|
168
|
+
return this.parseResponse(db_decorators_1.OperationKeys.UPDATE, await this.client.put(url, model));
|
|
169
169
|
}
|
|
170
170
|
catch (e) {
|
|
171
171
|
throw this.parseError(e);
|
|
@@ -185,7 +185,7 @@ class AxiosHttpAdapter extends adapter_1.HttpAdapter {
|
|
|
185
185
|
const url = this.url(tableName, this.extractIdArgs(tableName, id));
|
|
186
186
|
const cfg = this.toRequest(ctx);
|
|
187
187
|
log.debug(`DELETEing from ${url} and cfg ${JSON.stringify(cfg)}`);
|
|
188
|
-
return this.client.delete(url);
|
|
188
|
+
return this.parseResponse(db_decorators_1.OperationKeys.DELETE, await this.client.delete(url));
|
|
189
189
|
}
|
|
190
190
|
catch (e) {
|
|
191
191
|
throw this.parseError(e);
|
package/lib/axios/axios.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { HttpAdapter } from "../adapter";
|
|
2
2
|
import { Axios, AxiosRequestConfig } from "axios";
|
|
3
|
-
import { HttpConfig
|
|
3
|
+
import { HttpConfig } from "../types";
|
|
4
4
|
import { AxiosFlags } from "./types";
|
|
5
|
-
import { BaseError,
|
|
6
|
-
import { ContextualArgs, MaybeContextualArg } from "@decaf-ts/core";
|
|
5
|
+
import { BaseError, PrimaryKeyType } from "@decaf-ts/db-decorators";
|
|
6
|
+
import { Context, ContextualArgs, MaybeContextualArg, PreparedStatement } from "@decaf-ts/core";
|
|
7
7
|
import { Model } from "@decaf-ts/decorator-validation";
|
|
8
8
|
import { Constructor } from "@decaf-ts/decoration";
|
|
9
9
|
/**
|
|
@@ -53,12 +53,12 @@ import { Constructor } from "@decaf-ts/decoration";
|
|
|
53
53
|
* Axios-->>AxiosHttpAdapter: Response Data
|
|
54
54
|
* AxiosHttpAdapter-->>Client: Resource Data
|
|
55
55
|
*/
|
|
56
|
-
export declare class AxiosHttpAdapter extends HttpAdapter<HttpConfig, Axios, AxiosRequestConfig,
|
|
56
|
+
export declare class AxiosHttpAdapter extends HttpAdapter<HttpConfig, Axios, AxiosRequestConfig, PreparedStatement<any>, Context<AxiosFlags>> {
|
|
57
57
|
constructor(config: HttpConfig, alias?: string);
|
|
58
58
|
protected getClient(): Axios;
|
|
59
|
-
toRequest(query:
|
|
59
|
+
toRequest(query: PreparedStatement<any>): AxiosRequestConfig;
|
|
60
60
|
toRequest(ctx: Context<AxiosFlags>): AxiosRequestConfig;
|
|
61
|
-
toRequest(query:
|
|
61
|
+
toRequest(query: PreparedStatement<any>, ctx: Context<AxiosFlags>): AxiosRequestConfig;
|
|
62
62
|
/**
|
|
63
63
|
* @description Sends an HTTP request using Axios
|
|
64
64
|
* @summary Implementation of the abstract request method from HttpAdapter.
|
package/lib/axios/axios.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axios.js","sourceRoot":"","sources":["../../src/axios/axios.ts"],"names":[],"mappings":";;;AAAA,8CAAyC;AACzC,iCAAkD;AAGlD,
|
|
1
|
+
{"version":3,"file":"axios.js","sourceRoot":"","sources":["../../src/axios/axios.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { Paginator } from "@decaf-ts/core";
|
|
1
|
+
import { MaybeContextualArg, Paginator, PreparedStatement } from "@decaf-ts/core";
|
|
2
2
|
import { Model } from "@decaf-ts/decorator-validation";
|
|
3
|
-
import { HttpQuery } from "./types";
|
|
4
3
|
import { Constructor } from "@decaf-ts/decoration";
|
|
5
4
|
import { HttpAdapter } from "./adapter";
|
|
6
|
-
export declare class HttpPaginator<M extends Model, A extends HttpAdapter<any, any, any,
|
|
7
|
-
constructor(adapter: A, query:
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
export declare class HttpPaginator<M extends Model, Q extends PreparedStatement<M>, A extends HttpAdapter<any, any, any, Q, any>> extends Paginator<M, M, Q> {
|
|
6
|
+
constructor(adapter: A, query: Q, size: number, clazz: Constructor<M>);
|
|
7
|
+
protected prepare(rawStatement: Q): Q;
|
|
8
|
+
page(page?: number, ...args: MaybeContextualArg<any>): Promise<M[]>;
|
|
10
9
|
}
|
package/lib/esm/HttpPaginator.js
CHANGED
|
@@ -1,65 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Context, OperationKeys } from "@decaf-ts/db-decorators";
|
|
3
|
-
import { toCamelCase, toPascalCase } from "@decaf-ts/logging";
|
|
1
|
+
import { Paginator, UnsupportedError, } from "@decaf-ts/core";
|
|
4
2
|
export class HttpPaginator extends Paginator {
|
|
5
3
|
constructor(adapter, query, size, clazz) {
|
|
6
4
|
super(adapter, query, size, clazz);
|
|
7
5
|
}
|
|
8
|
-
|
|
9
|
-
const contextArgs = await Context.args(OperationKeys.READ, this.clazz, args, this.adapter);
|
|
10
|
-
let statement = Object.assign({}, this.statement, {
|
|
11
|
-
args: [...this.statement.args],
|
|
12
|
-
params: { ...this.statement.params },
|
|
13
|
-
});
|
|
14
|
-
if (!this.statement.method.includes("pageBy"))
|
|
15
|
-
statement = this.prepare(statement);
|
|
16
|
-
statement.args.push(page);
|
|
17
|
-
page = this.validatePage(page);
|
|
18
|
-
const results = await this.adapter.raw(statement, ...contextArgs.args);
|
|
19
|
-
this._currentPage = page;
|
|
20
|
-
return results;
|
|
21
|
-
}
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
22
7
|
prepare(rawStatement) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
.filter(Boolean)
|
|
28
|
-
.filter((s) => ![
|
|
29
|
-
QueryClause.FIND_BY,
|
|
30
|
-
QueryClause.SELECT,
|
|
31
|
-
QueryClause.ORDER_BY,
|
|
32
|
-
QueryClause.GROUP_BY,
|
|
33
|
-
toPascalCase(OrderDirection.ASC),
|
|
34
|
-
toPascalCase(OrderDirection.DSC),
|
|
35
|
-
].find((c) => s.includes(c)));
|
|
36
|
-
const fullOrderBy = rawStatement.method.split(QueryClause.ORDER_BY);
|
|
37
|
-
let orderBy;
|
|
38
|
-
if (fullOrderBy.length) {
|
|
39
|
-
orderBy = fullOrderBy[1]
|
|
40
|
-
.split(new RegExp(`${[toPascalCase(OrderDirection.ASC), toPascalCase(OrderDirection.DSC), QueryClause.GROUP_BY + ".*", QueryClause.THEN_BY].join("|")}`, "i"))
|
|
41
|
-
.map((s) => s.trim())
|
|
42
|
-
.filter(Boolean);
|
|
43
|
-
orderBy = [
|
|
44
|
-
orderBy[0],
|
|
45
|
-
fullOrderBy[1].includes(toPascalCase(OrderDirection.ASC))
|
|
46
|
-
? OrderDirection.ASC
|
|
47
|
-
: OrderDirection.DSC,
|
|
48
|
-
];
|
|
49
|
-
}
|
|
50
|
-
if (attrs.length === 1 && attrs[0] === orderBy[0]) {
|
|
51
|
-
const attr = attrs[0];
|
|
52
|
-
return Object.assign({}, rawStatement, {
|
|
53
|
-
method: "pageBy",
|
|
54
|
-
args: [toCamelCase(attr), orderBy[1], this.size],
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
return Object.assign({}, rawStatement, {
|
|
59
|
-
method: rawStatement.method.replace(QueryClause.FIND_BY, "pageBy"),
|
|
60
|
-
args: [...rawStatement.args, this.size],
|
|
61
|
-
});
|
|
62
|
-
}
|
|
8
|
+
throw new UnsupportedError(`Raw query access must be implemented by a subclass. only prepared statements are natively available`);
|
|
9
|
+
}
|
|
10
|
+
page(page = 1, ...args) {
|
|
11
|
+
return super.page(page, ...args); // this will fail for non-prepared statements
|
|
63
12
|
}
|
|
64
13
|
}
|
|
65
14
|
//# sourceMappingURL=HttpPaginator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpPaginator.js","sourceRoot":"","sources":["../../src/HttpPaginator.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"HttpPaginator.js","sourceRoot":"","sources":["../../src/HttpPaginator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EAET,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAKxB,MAAM,OAAO,aAIX,SAAQ,SAAkB;IAC1B,YAAY,OAAU,EAAE,KAAQ,EAAE,IAAY,EAAE,KAAqB;QACnE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,6DAA6D;IACnD,OAAO,CAAC,YAAe;QAC/B,MAAM,IAAI,gBAAgB,CACxB,qGAAqG,CACtG,CAAC;IACJ,CAAC;IAEQ,IAAI,CACX,OAAe,CAAC,EAChB,GAAG,IAA6B;QAEhC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,6CAA6C;IACjF,CAAC;CACF"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { Condition,
|
|
1
|
+
import { Condition, Statement } from "@decaf-ts/core";
|
|
2
2
|
import { Model } from "@decaf-ts/decorator-validation";
|
|
3
3
|
import { HttpAdapter } from "./adapter";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
protected
|
|
4
|
+
import type { AdapterFlags } from "@decaf-ts/core";
|
|
5
|
+
type HttpAdapterQuery<T extends HttpAdapter<any, any, any, any, any>> = T extends HttpAdapter<any, any, any, infer Q, any> ? Q : never;
|
|
6
|
+
export declare class HttpStatement<M extends Model, A extends HttpAdapter<any, any, any, any, any>, R> extends Statement<M, A, R, HttpAdapterQuery<A>> {
|
|
7
|
+
constructor(adapter: A, overrides?: Partial<AdapterFlags>);
|
|
8
|
+
protected build(): HttpAdapterQuery<A>;
|
|
9
|
+
protected parseCondition(condition: Condition<M>, ...args: any[]): HttpAdapterQuery<A>;
|
|
9
10
|
}
|
|
11
|
+
export {};
|