@decaf-ts/for-http 0.3.0 → 0.3.2

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.
@@ -1,5 +1,5 @@
1
- import { Adapter, PersistenceKeys, UnsupportedError, } from "@decaf-ts/core";
2
- import { InternalError } from "@decaf-ts/db-decorators";
1
+ import { Adapter, AuthorizationError, ConnectionError, ForbiddenError, MigrationError, ObserverError, PagingError, PersistenceKeys, QueryError, UnsupportedError, } from "@decaf-ts/core";
2
+ import { BadRequestError, ConflictError, InternalError, NotFoundError, SerializationError, } from "@decaf-ts/db-decorators";
3
3
  import { Model } from "@decaf-ts/decorator-validation";
4
4
  import { RestService } from "./RestService.js";
5
5
  /**
@@ -58,8 +58,8 @@ export class HttpAdapter extends Adapter {
58
58
  * @description Returns the repository constructor for this adapter
59
59
  * @summary Provides the RestService class as the repository implementation for this HTTP adapter.
60
60
  * This method is used to create repository instances that work with this adapter type.
61
- * @template M - The model type
62
- * @return {Constructor<Repository<M, Q, HttpAdapter<Y, Q, F, C>, F, C>>} The repository constructor
61
+ * @template R - Repository subtype working with this adapter
62
+ * @return {Constructor<R>} The repository constructor
63
63
  */
64
64
  repository() {
65
65
  return RestService;
@@ -71,10 +71,11 @@ export class HttpAdapter extends Adapter {
71
71
  * @template M - The model type
72
72
  * @param {M} model - The model instance to prepare
73
73
  * @param pk - The primary key property name
74
+ * @param args
74
75
  * @return The prepared data
75
76
  */
76
- prepare(model, pk) {
77
- const log = this.log.for(this.prepare);
77
+ prepare(model, ...args) {
78
+ const { log } = this.logCtx(args, this.prepare);
78
79
  const result = Object.assign({}, model);
79
80
  if (model[PersistenceKeys.METADATA]) {
80
81
  log.silly(`Passing along persistence metadata for ${model[PersistenceKeys.METADATA]}`);
@@ -87,7 +88,7 @@ export class HttpAdapter extends Adapter {
87
88
  }
88
89
  return {
89
90
  record: model,
90
- id: model[pk],
91
+ id: model[Model.pk(model.constructor)],
91
92
  };
92
93
  }
93
94
  /**
@@ -101,8 +102,8 @@ export class HttpAdapter extends Adapter {
101
102
  * @param {string|number|bigint} id - The primary key value
102
103
  * @return {M} The reconstructed model instance
103
104
  */
104
- revert(obj, clazz, pk, id) {
105
- const log = this.log.for(this.revert);
105
+ revert(obj, clazz, id, ...args) {
106
+ const { log } = this.logCtx(args, this.revert);
106
107
  const ob = {};
107
108
  const m = (typeof clazz === "string" ? Model.build(ob, clazz) : new clazz(ob));
108
109
  log.silly(`Rebuilding model ${m.constructor.name} id ${id}`);
@@ -122,6 +123,9 @@ export class HttpAdapter extends Adapter {
122
123
  }
123
124
  return result;
124
125
  }
126
+ toTableName(t) {
127
+ return typeof t === "string" ? t : Model.tableName(t);
128
+ }
125
129
  /**
126
130
  * @description Constructs a URL for API requests
127
131
  * @summary Builds a complete URL for API requests using the configured protocol and host,
@@ -131,6 +135,7 @@ export class HttpAdapter extends Adapter {
131
135
  * @return {string} The encoded URL string
132
136
  */
133
137
  url(tableName, queryParams) {
138
+ tableName = this.toTableName(tableName);
134
139
  const url = new URL(`${this.config.protocol}://${this.config.host}/${tableName}`);
135
140
  if (queryParams)
136
141
  Object.entries(queryParams).forEach(([key, value]) => url.searchParams.append(key, value.toString()));
@@ -150,7 +155,7 @@ export class HttpAdapter extends Adapter {
150
155
  * @throws {UnsupportedError} Always throws as this method is not supported by default
151
156
  */
152
157
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
153
- raw(rawInput, process, ...args) {
158
+ raw(rawInput, ...args) {
154
159
  return Promise.reject(new UnsupportedError("Api is not natively available for HttpAdapters. If required, please extends this class"));
155
160
  }
156
161
  /**
@@ -192,5 +197,35 @@ export class HttpAdapter extends Adapter {
192
197
  parseCondition(condition) {
193
198
  throw new UnsupportedError("Api is not natively available for HttpAdapters. If required, please extends this class");
194
199
  }
200
+ static parseError(err,
201
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
202
+ ...args) {
203
+ const msg = typeof err === "string" ? err : err.message;
204
+ if (msg.includes(NotFoundError.name))
205
+ return new NotFoundError(err);
206
+ if (msg.includes(ConflictError.name))
207
+ return new ConflictError(err);
208
+ if (msg.includes(BadRequestError.name))
209
+ return new BadRequestError(err);
210
+ if (msg.includes(QueryError.name))
211
+ return new QueryError(err);
212
+ if (msg.includes(PagingError.name))
213
+ return new PagingError(err);
214
+ if (msg.includes(UnsupportedError.name))
215
+ return new UnsupportedError(err);
216
+ if (msg.includes(MigrationError.name))
217
+ return new MigrationError(err);
218
+ if (msg.includes(ObserverError.name))
219
+ return new ObserverError(err);
220
+ if (msg.includes(AuthorizationError.name))
221
+ return new AuthorizationError(err);
222
+ if (msg.includes(ForbiddenError.name))
223
+ return new ForbiddenError(err);
224
+ if (msg.includes(ConnectionError.name))
225
+ return new ConnectionError(err);
226
+ if (msg.includes(SerializationError.name))
227
+ return new SerializationError(err);
228
+ return new InternalError(err);
229
+ }
195
230
  }
196
231
  //# sourceMappingURL=adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,10 @@ import { HttpAdapter } from "../adapter";
2
2
  import { Axios, AxiosRequestConfig } from "axios";
3
3
  import { HttpConfig } from "../types";
4
4
  import { AxiosFlags } from "./types";
5
- import { BaseError, Context } from "@decaf-ts/db-decorators";
5
+ import { BaseError, Context, PrimaryKeyType } from "@decaf-ts/db-decorators";
6
+ import { ContextualArgs } from "@decaf-ts/core";
7
+ import { Model } from "@decaf-ts/decorator-validation";
8
+ import { Constructor } from "@decaf-ts/decoration";
6
9
  /**
7
10
  * @description Axios implementation of the HTTP adapter
8
11
  * @summary Concrete implementation of HttpAdapter using Axios as the HTTP client.
@@ -50,7 +53,7 @@ import { BaseError, Context } from "@decaf-ts/db-decorators";
50
53
  * Axios-->>AxiosHttpAdapter: Response Data
51
54
  * AxiosHttpAdapter-->>Client: Resource Data
52
55
  */
53
- export declare class AxiosHttpAdapter extends HttpAdapter<HttpConfig, Axios, AxiosRequestConfig, AxiosFlags, Context<AxiosFlags>> {
56
+ export declare class AxiosHttpAdapter extends HttpAdapter<HttpConfig, Axios, AxiosRequestConfig, Context<AxiosFlags>> {
54
57
  constructor(config: HttpConfig, alias?: string);
55
58
  protected getClient(): Axios;
56
59
  /**
@@ -71,7 +74,7 @@ export declare class AxiosHttpAdapter extends HttpAdapter<HttpConfig, Axios, Axi
71
74
  * @param {Record<string, any>} model - The data model to create
72
75
  * @return {Promise<Record<string, any>>} A promise that resolves with the created resource
73
76
  */
74
- create(tableName: string, id: string | number, model: Record<string, any>): Promise<Record<string, any>>;
77
+ create<M extends Model>(tableName: Constructor<M> | string, id: PrimaryKeyType, model: Record<string, any>, ..._args: ContextualArgs<Context<AxiosFlags>>): Promise<Record<string, any>>;
75
78
  /**
76
79
  * @description Retrieves a resource by ID via HTTP GET
77
80
  * @summary Implementation of the abstract read method from HttpAdapter.
@@ -80,7 +83,7 @@ export declare class AxiosHttpAdapter extends HttpAdapter<HttpConfig, Axios, Axi
80
83
  * @param {string|number|bigint} id - The identifier for the resource to retrieve
81
84
  * @return {Promise<Record<string, any>>} A promise that resolves with the retrieved resource
82
85
  */
83
- read(tableName: string, id: string | number | bigint): Promise<Record<string, any>>;
86
+ read<M extends Model>(tableName: Constructor<M> | string, id: PrimaryKeyType, ...args: ContextualArgs<Context<AxiosFlags>>): Promise<Record<string, any>>;
84
87
  /**
85
88
  * @description Updates an existing resource via HTTP PUT
86
89
  * @summary Implementation of the abstract update method from HttpAdapter.
@@ -90,7 +93,7 @@ export declare class AxiosHttpAdapter extends HttpAdapter<HttpConfig, Axios, Axi
90
93
  * @param {Record<string, any>} model - The updated data model
91
94
  * @return {Promise<Record<string, any>>} A promise that resolves with the updated resource
92
95
  */
93
- update(tableName: string, id: string | number, model: Record<string, any>): Promise<Record<string, any>>;
96
+ update<M extends Model>(tableName: Constructor<M> | string, id: string | number, model: Record<string, any>, ..._args: ContextualArgs<Context<AxiosFlags>>): Promise<Record<string, any>>;
94
97
  /**
95
98
  * @description Deletes a resource by ID via HTTP DELETE
96
99
  * @summary Implementation of the abstract delete method from HttpAdapter.
@@ -99,6 +102,6 @@ export declare class AxiosHttpAdapter extends HttpAdapter<HttpConfig, Axios, Axi
99
102
  * @param {string|number|bigint} id - The identifier for the resource to delete
100
103
  * @return {Promise<Record<string, any>>} A promise that resolves with the deletion result
101
104
  */
102
- delete(tableName: string, id: string | number | bigint): Promise<Record<string, any>>;
103
- parseError(err: Error): BaseError;
105
+ delete<M extends Model>(tableName: Constructor<M> | string, id: PrimaryKeyType, ..._args: ContextualArgs<Context<AxiosFlags>>): Promise<Record<string, any>>;
106
+ parseError<E extends BaseError>(err: Error, ...args: any[]): E;
104
107
  }
@@ -1,8 +1,6 @@
1
1
  import { HttpAdapter } from "./../adapter.js";
2
2
  import { Axios } from "axios";
3
- import { ConflictError, InternalError, NotFoundError, } from "@decaf-ts/db-decorators";
4
3
  import { AxiosFlavour } from "./constants.js";
5
- import { AuthorizationError, UnsupportedError } from "@decaf-ts/core";
6
4
  /**
7
5
  * @description Axios implementation of the HTTP adapter
8
6
  * @summary Concrete implementation of HttpAdapter using Axios as the HTTP client.
@@ -79,7 +77,9 @@ export class AxiosHttpAdapter extends HttpAdapter {
79
77
  * @param {Record<string, any>} model - The data model to create
80
78
  * @return {Promise<Record<string, any>>} A promise that resolves with the created resource
81
79
  */
82
- async create(tableName, id, model) {
80
+ async create(tableName, id, model,
81
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
82
+ ..._args) {
83
83
  try {
84
84
  const url = this.url(tableName);
85
85
  return this.client.post(url, model);
@@ -96,9 +96,13 @@ export class AxiosHttpAdapter extends HttpAdapter {
96
96
  * @param {string|number|bigint} id - The identifier for the resource to retrieve
97
97
  * @return {Promise<Record<string, any>>} A promise that resolves with the retrieved resource
98
98
  */
99
- async read(tableName, id) {
99
+ async read(tableName, id,
100
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
101
+ ...args) {
100
102
  try {
101
- const url = this.url(tableName, { id: id });
103
+ const url = this.url(tableName, {
104
+ id: id,
105
+ });
102
106
  return this.client.get(url);
103
107
  }
104
108
  catch (e) {
@@ -114,7 +118,9 @@ export class AxiosHttpAdapter extends HttpAdapter {
114
118
  * @param {Record<string, any>} model - The updated data model
115
119
  * @return {Promise<Record<string, any>>} A promise that resolves with the updated resource
116
120
  */
117
- async update(tableName, id, model) {
121
+ async update(tableName, id, model,
122
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
123
+ ..._args) {
118
124
  try {
119
125
  const url = this.url(tableName);
120
126
  return this.client.put(url, model);
@@ -131,28 +137,21 @@ export class AxiosHttpAdapter extends HttpAdapter {
131
137
  * @param {string|number|bigint} id - The identifier for the resource to delete
132
138
  * @return {Promise<Record<string, any>>} A promise that resolves with the deletion result
133
139
  */
134
- async delete(tableName, id) {
140
+ async delete(tableName, id,
141
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
142
+ ..._args) {
135
143
  try {
136
- const url = this.url(tableName, { id: id });
144
+ const url = this.url(tableName, {
145
+ id: id,
146
+ });
137
147
  return this.client.delete(url);
138
148
  }
139
149
  catch (e) {
140
150
  throw this.parseError(e);
141
151
  }
142
152
  }
143
- parseError(err) {
144
- const errs = [
145
- InternalError,
146
- AuthorizationError,
147
- ConflictError,
148
- NotFoundError,
149
- UnsupportedError,
150
- ];
151
- for (const error of errs) {
152
- if (err.message.includes(error.name))
153
- return new error(err.message);
154
- }
155
- return new InternalError(err.message);
153
+ parseError(err, ...args) {
154
+ return HttpAdapter.parseError(err, ...args);
156
155
  }
157
156
  }
158
157
  //# sourceMappingURL=axios.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"axios.js","sourceRoot":"","sources":["../../../src/axios/axios.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"axios.js","sourceRoot":"","sources":["../../../src/axios/axios.ts"],"names":[],"mappings":"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"}
@@ -17,4 +17,4 @@ export * from "./types";
17
17
  * @summary Version identifier for the module
18
18
  * @const VERSION
19
19
  */
20
- export declare const VERSION = "0.2.13";
20
+ export declare const VERSION = "0.3.1";
package/lib/esm/index.js CHANGED
@@ -17,5 +17,5 @@ export * from "./types.js";
17
17
  * @summary Version identifier for the module
18
18
  * @const VERSION
19
19
  */
20
- export const VERSION = "0.2.13";
20
+ export const VERSION = "0.3.1";
21
21
  //# sourceMappingURL=index.js.map
package/lib/index.cjs CHANGED
@@ -34,5 +34,5 @@ __exportStar(require("./types.cjs"), exports);
34
34
  * @summary Version identifier for the module
35
35
  * @const VERSION
36
36
  */
37
- exports.VERSION = "0.2.13";
37
+ exports.VERSION = "0.3.1";
38
38
  //# sourceMappingURL=index.js.map
package/lib/index.d.ts CHANGED
@@ -17,4 +17,4 @@ export * from "./types";
17
17
  * @summary Version identifier for the module
18
18
  * @const VERSION
19
19
  */
20
- export declare const VERSION = "0.2.13";
20
+ export declare const VERSION = "0.3.1";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decaf-ts/for-http",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "http wrappers for decaf-ts",
5
5
  "type": "module",
6
6
  "exports": {