@decaf-ts/for-http 0.2.1 → 0.2.3

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,24 +1,90 @@
1
1
  import { Adapter, UnsupportedError, } from "@decaf-ts/core";
2
- import { RestService } from "./RestService";
2
+ import { RestService } from "./RestService.js";
3
+ /**
4
+ * @description Abstract HTTP adapter for REST API interactions
5
+ * @summary Provides a base implementation for HTTP adapters with methods for CRUD operations,
6
+ * URL construction, and error handling. This class extends the core Adapter class and
7
+ * implements the necessary methods for HTTP communication. Concrete implementations
8
+ * must provide specific HTTP client functionality.
9
+ * @template Y - The native HTTP client type
10
+ * @template Q - The query type used by the adapter
11
+ * @template F - The HTTP flags type, extending HttpFlags
12
+ * @template C - The context type, extending Context<F>
13
+ * @param {Y} native - The native HTTP client instance
14
+ * @param {HttpConfig} config - Configuration for the HTTP adapter
15
+ * @param {string} flavour - The adapter flavor identifier
16
+ * @param {string} [alias] - Optional alias for the adapter
17
+ * @example
18
+ * ```typescript
19
+ * // Example implementation with Axios
20
+ * class AxiosAdapter extends HttpAdapter<AxiosInstance, AxiosRequestConfig> {
21
+ * constructor(config: HttpConfig) {
22
+ * super(axios.create(), config, 'axios');
23
+ * }
24
+ *
25
+ * async request<V>(details: AxiosRequestConfig): Promise<V> {
26
+ * const response = await this.native.request(details);
27
+ * return response.data;
28
+ * }
29
+ *
30
+ * // Implement other abstract methods...
31
+ * }
32
+ * ```
33
+ * @class
34
+ */
3
35
  export class HttpAdapter extends Adapter {
4
36
  constructor(native, config, flavour, alias) {
5
37
  super(native, flavour, alias);
6
38
  this.config = config;
7
39
  }
40
+ /**
41
+ * @description Generates operation flags with HTTP headers
42
+ * @summary Extends the base flags method to include HTTP-specific headers for operations.
43
+ * This method adds an empty headers object to the flags returned by the parent class.
44
+ * @template F - The Repository Flags type
45
+ * @template M - The model type
46
+ * @param {OperationKeys.CREATE|OperationKeys.READ|OperationKeys.UPDATE|OperationKeys.DELETE} operation - The operation type
47
+ * @param {Constructor<M>} model - The model constructor
48
+ * @param {Partial<F>} overrides - Optional flag overrides
49
+ * @return {F} The flags object with headers
50
+ */
8
51
  flags(operation, model, overrides) {
9
52
  return Object.assign(super.flags(operation, model, overrides), {
10
53
  headers: {},
11
54
  });
12
55
  }
56
+ /**
57
+ * @description Returns the repository constructor for this adapter
58
+ * @summary Provides the RestService class as the repository implementation for this HTTP adapter.
59
+ * This method is used to create repository instances that work with this adapter type.
60
+ * @template M - The model type
61
+ * @return {Constructor<Repository<M, Q, HttpAdapter<Y, Q, F, C>>>} The repository constructor
62
+ */
13
63
  repository() {
14
64
  return RestService;
15
65
  }
66
+ /**
67
+ * @description Constructs a URL for API requests
68
+ * @summary Builds a complete URL for API requests using the configured protocol and host,
69
+ * the specified table name, and optional query parameters. The method handles URL encoding.
70
+ * @param {string} tableName - The name of the table or endpoint
71
+ * @param {Record<string, string | number>} [queryParams] - Optional query parameters
72
+ * @return {string} The encoded URL string
73
+ */
16
74
  url(tableName, queryParams) {
17
75
  const url = new URL(`${this.config.protocol}://${this.config.host}/${tableName}`);
18
76
  if (queryParams)
19
77
  Object.entries(queryParams).forEach(([key, value]) => url.searchParams.append(key, value.toString()));
20
78
  return encodeURI(url.toString());
21
79
  }
80
+ /**
81
+ * @description Parses and converts errors to BaseError type
82
+ * @summary Processes errors that occur during HTTP operations and converts them to
83
+ * the appropriate BaseError type. Currently returns the error as-is, but can be
84
+ * extended to handle specific error messages differently.
85
+ * @param {Error} err - The error to parse
86
+ * @return {BaseError} The parsed error as a BaseError
87
+ */
22
88
  parseError(err) {
23
89
  const { message } = err;
24
90
  switch (message) {
@@ -26,24 +92,71 @@ export class HttpAdapter extends Adapter {
26
92
  return err;
27
93
  }
28
94
  }
95
+ /**
96
+ * @description Initializes the HTTP adapter
97
+ * @summary Placeholder method for adapter initialization. This method is currently
98
+ * a no-op but can be overridden by subclasses to perform initialization tasks.
99
+ * @param {...any[]} args - Initialization arguments
100
+ * @return {Promise<void>} A promise that resolves when initialization is complete
101
+ */
29
102
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
30
103
  async initialize(...args) {
31
104
  // do nothing
32
105
  }
106
+ /**
107
+ * @description Executes a raw query
108
+ * @summary Method for executing raw queries directly with the HTTP client.
109
+ * This method is not supported by default in HTTP adapters and throws an UnsupportedError.
110
+ * Subclasses can override this method to provide implementation.
111
+ * @template R - The result type
112
+ * @param {Q} rawInput - The raw query input
113
+ * @param {boolean} process - Whether to process the result
114
+ * @param {...any[]} args - Additional arguments
115
+ * @return {Promise<R>} A promise that resolves with the query result
116
+ * @throws {UnsupportedError} Always throws as this method is not supported by default
117
+ */
33
118
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
34
119
  raw(rawInput, process, ...args) {
35
120
  throw new UnsupportedError("Api is not natively available for HttpAdapters. If required, please extends this class");
36
121
  }
122
+ /**
123
+ * @description Creates a sequence
124
+ * @summary Method for creating a sequence for generating unique identifiers.
125
+ * This method is not supported by default in HTTP adapters and throws an UnsupportedError.
126
+ * Subclasses can override this method to provide implementation.
127
+ * @param {SequenceOptions} options - Options for creating the sequence
128
+ * @return {Promise<Sequence>} A promise that resolves with the created sequence
129
+ * @throws {UnsupportedError} Always throws as this method is not supported by default
130
+ */
37
131
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
38
132
  Sequence(options) {
39
133
  throw new UnsupportedError("Api is not natively available for HttpAdapters. If required, please extends this class");
40
134
  }
135
+ /**
136
+ * @description Creates a statement for querying
137
+ * @summary Method for creating a statement for building and executing queries.
138
+ * This method is not supported by default in HTTP adapters and throws an UnsupportedError.
139
+ * Subclasses can override this method to provide implementation.
140
+ * @template M - The model type
141
+ * @template ! - The raw query type
142
+ * @return {Statement<Q, M, any>} A statement object for building queries
143
+ * @throws {UnsupportedError} Always throws as this method is not supported by default
144
+ */
41
145
  Statement() {
42
146
  throw new UnsupportedError("Api is not natively available for HttpAdapters. If required, please extends this class");
43
147
  }
148
+ /**
149
+ * @description Parses a condition into a query
150
+ * @summary Method for parsing a condition object into a query format understood by the HTTP client.
151
+ * This method is not supported by default in HTTP adapters and throws an UnsupportedError.
152
+ * Subclasses can override this method to provide implementation.
153
+ * @param {Condition<any>} condition - The condition to parse
154
+ * @return {Q} The parsed query
155
+ * @throws {UnsupportedError} Always throws as this method is not supported by default
156
+ */
44
157
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
45
158
  parseCondition(condition) {
46
159
  throw new UnsupportedError("Api is not natively available for HttpAdapters. If required, please extends this class");
47
160
  }
48
161
  }
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxPQUFPLEVBS1AsZ0JBQWdCLEdBQ2pCLE1BQU0sZ0JBQWdCLENBQUM7QUFJeEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc1QyxNQUFNLE9BQWdCLFdBS3BCLFNBQVEsT0FBbUI7SUFDM0IsWUFDRSxNQUFTLEVBQ0MsTUFBa0IsRUFDNUIsT0FBZSxFQUNmLEtBQWM7UUFFZCxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUpwQixXQUFNLEdBQU4sTUFBTSxDQUFZO0lBSzlCLENBQUM7SUFFUSxLQUFLLENBQ1osU0FJd0IsRUFDeEIsS0FBcUIsRUFDckIsU0FBcUI7UUFFckIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUksU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsRUFBRTtZQUNoRSxPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUSxVQUFVO1FBR2pCLE9BQU8sV0FFTixDQUFDO0lBQ0osQ0FBQztJQUVTLEdBQUcsQ0FDWCxTQUFpQixFQUNqQixXQUE2QztRQUU3QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FDakIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxTQUFTLEVBQUUsQ0FDN0QsQ0FBQztRQUNGLElBQUksV0FBVztZQUNiLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUNuRCxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQy9DLENBQUM7UUFFSixPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVU7UUFDbkIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUN4QixRQUFRLE9BQU8sRUFBRSxDQUFDO1lBQ2hCO2dCQUNFLE9BQU8sR0FBZ0IsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVELDZEQUE2RDtJQUM3RCxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBVztRQUM3QixhQUFhO0lBQ2YsQ0FBQztJQThCRCw2REFBNkQ7SUFDN0QsR0FBRyxDQUFJLFFBQVcsRUFBRSxPQUFnQixFQUFFLEdBQUcsSUFBVztRQUNsRCxNQUFNLElBQUksZ0JBQWdCLENBQ3hCLHdGQUF3RixDQUN6RixDQUFDO0lBQ0osQ0FBQztJQUVELDZEQUE2RDtJQUM3RCxRQUFRLENBQUMsT0FBd0I7UUFDL0IsTUFBTSxJQUFJLGdCQUFnQixDQUN4Qix3RkFBd0YsQ0FDekYsQ0FBQztJQUNKLENBQUM7SUFFUSxTQUFTO1FBQ2hCLE1BQU0sSUFBSSxnQkFBZ0IsQ0FDeEIsd0ZBQXdGLENBQ3pGLENBQUM7SUFDSixDQUFDO0lBRUQsNkRBQTZEO0lBQzdELGNBQWMsQ0FBQyxTQUF5QjtRQUN0QyxNQUFNLElBQUksZ0JBQWdCLENBQ3hCLHdGQUF3RixDQUN6RixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWRhcHRlcixcbiAgQ29uZGl0aW9uLFxuICBSZXBvc2l0b3J5LFxuICBTZXF1ZW5jZSxcbiAgU2VxdWVuY2VPcHRpb25zLFxuICBVbnN1cHBvcnRlZEVycm9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEJhc2VFcnJvciwgQ29udGV4dCwgT3BlcmF0aW9uS2V5cyB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgSHR0cENvbmZpZywgSHR0cEZsYWdzIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yLCBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSBcIi4vUmVzdFNlcnZpY2VcIjtcbmltcG9ydCB7IFN0YXRlbWVudCB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSHR0cEFkYXB0ZXI8XG4gIFksXG4gIFEsXG4gIEYgZXh0ZW5kcyBIdHRwRmxhZ3MgPSBIdHRwRmxhZ3MsXG4gIEMgZXh0ZW5kcyBDb250ZXh0PEY+ID0gQ29udGV4dDxGPixcbj4gZXh0ZW5kcyBBZGFwdGVyPFksIFEsIEYsIEM+IHtcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIG5hdGl2ZTogWSxcbiAgICBwcm90ZWN0ZWQgY29uZmlnOiBIdHRwQ29uZmlnLFxuICAgIGZsYXZvdXI6IHN0cmluZyxcbiAgICBhbGlhcz86IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihuYXRpdmUsIGZsYXZvdXIsIGFsaWFzKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGZsYWdzPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgb3BlcmF0aW9uOlxuICAgICAgfCBPcGVyYXRpb25LZXlzLkNSRUFURVxuICAgICAgfCBPcGVyYXRpb25LZXlzLlJFQURcbiAgICAgIHwgT3BlcmF0aW9uS2V5cy5VUERBVEVcbiAgICAgIHwgT3BlcmF0aW9uS2V5cy5ERUxFVEUsXG4gICAgbW9kZWw6IENvbnN0cnVjdG9yPE0+LFxuICAgIG92ZXJyaWRlczogUGFydGlhbDxGPlxuICApIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihzdXBlci5mbGFnczxNPihvcGVyYXRpb24sIG1vZGVsLCBvdmVycmlkZXMpLCB7XG4gICAgICBoZWFkZXJzOiB7fSxcbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIHJlcG9zaXRvcnk8TSBleHRlbmRzIE1vZGVsPigpOiBDb25zdHJ1Y3RvcjxcbiAgICBSZXBvc2l0b3J5PE0sIFEsIEh0dHBBZGFwdGVyPFksIFEsIEYsIEM+PlxuICA+IHtcbiAgICByZXR1cm4gUmVzdFNlcnZpY2UgYXMgdW5rbm93biBhcyBDb25zdHJ1Y3RvcjxcbiAgICAgIFJlcG9zaXRvcnk8TSwgUSwgSHR0cEFkYXB0ZXI8WSwgUSwgRiwgQz4+XG4gICAgPjtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cmwoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgcXVlcnlQYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+XG4gICkge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoXG4gICAgICBgJHt0aGlzLmNvbmZpZy5wcm90b2NvbH06Ly8ke3RoaXMuY29uZmlnLmhvc3R9LyR7dGFibGVOYW1lfWBcbiAgICApO1xuICAgIGlmIChxdWVyeVBhcmFtcylcbiAgICAgIE9iamVjdC5lbnRyaWVzKHF1ZXJ5UGFyYW1zKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+XG4gICAgICAgIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKGtleSwgdmFsdWUudG9TdHJpbmcoKSlcbiAgICAgICk7XG5cbiAgICByZXR1cm4gZW5jb2RlVVJJKHVybC50b1N0cmluZygpKTtcbiAgfVxuXG4gIHBhcnNlRXJyb3IoZXJyOiBFcnJvcik6IEJhc2VFcnJvciB7XG4gICAgY29uc3QgeyBtZXNzYWdlIH0gPSBlcnI7XG4gICAgc3dpdGNoIChtZXNzYWdlKSB7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZXJyIGFzIEJhc2VFcnJvcjtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIGFzeW5jIGluaXRpYWxpemUoLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBkbyBub3RoaW5nXG4gIH1cblxuICBhYnN0cmFjdCByZXF1ZXN0PFY+KGRldGFpbHM6IFEpOiBQcm9taXNlPFY+O1xuXG4gIGFic3RyYWN0IG92ZXJyaWRlIGNyZWF0ZShcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj47XG5cbiAgYWJzdHJhY3Qgb3ZlcnJpZGUgcmVhZChcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj47XG5cbiAgYWJzdHJhY3Qgb3ZlcnJpZGUgdXBkYXRlKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PjtcblxuICBhYnN0cmFjdCBvdmVycmlkZSBkZWxldGUoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcmF3PFI+KHJhd0lucHV0OiBRLCBwcm9jZXNzOiBib29sZWFuLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8Uj4ge1xuICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKFxuICAgICAgXCJBcGkgaXMgbm90IG5hdGl2ZWx5IGF2YWlsYWJsZSBmb3IgSHR0cEFkYXB0ZXJzLiBJZiByZXF1aXJlZCwgcGxlYXNlIGV4dGVuZHMgdGhpcyBjbGFzc1wiXG4gICAgKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgU2VxdWVuY2Uob3B0aW9uczogU2VxdWVuY2VPcHRpb25zKTogUHJvbWlzZTxTZXF1ZW5jZT4ge1xuICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKFxuICAgICAgXCJBcGkgaXMgbm90IG5hdGl2ZWx5IGF2YWlsYWJsZSBmb3IgSHR0cEFkYXB0ZXJzLiBJZiByZXF1aXJlZCwgcGxlYXNlIGV4dGVuZHMgdGhpcyBjbGFzc1wiXG4gICAgKTtcbiAgfVxuXG4gIG92ZXJyaWRlIFN0YXRlbWVudDxNIGV4dGVuZHMgTW9kZWw+KCk6IFN0YXRlbWVudDxRLCBNLCBhbnk+IHtcbiAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihcbiAgICAgIFwiQXBpIGlzIG5vdCBuYXRpdmVseSBhdmFpbGFibGUgZm9yIEh0dHBBZGFwdGVycy4gSWYgcmVxdWlyZWQsIHBsZWFzZSBleHRlbmRzIHRoaXMgY2xhc3NcIlxuICAgICk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHBhcnNlQ29uZGl0aW9uKGNvbmRpdGlvbjogQ29uZGl0aW9uPGFueT4pOiBRIHtcbiAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihcbiAgICAgIFwiQXBpIGlzIG5vdCBuYXRpdmVseSBhdmFpbGFibGUgZm9yIEh0dHBBZGFwdGVycy4gSWYgcmVxdWlyZWQsIHBsZWFzZSBleHRlbmRzIHRoaXMgY2xhc3NcIlxuICAgICk7XG4gIH1cbn1cbiJdfQ==
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxPQUFPLEVBS1AsZ0JBQWdCLEdBQ2pCLE1BQU0sZ0JBQWdCLENBQUM7QUFJeEIsT0FBTyxFQUFFLFdBQVcsRUFBRSx5QkFBc0I7QUFHNUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQkc7QUFDSCxNQUFNLE9BQWdCLFdBS3BCLFNBQVEsT0FBbUI7SUFDM0IsWUFDRSxNQUFTLEVBQ0MsTUFBa0IsRUFDNUIsT0FBZSxFQUNmLEtBQWM7UUFFZCxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUpwQixXQUFNLEdBQU4sTUFBTSxDQUFZO0lBSzlCLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ00sS0FBSyxDQUNaLFNBSXdCLEVBQ3hCLEtBQXFCLEVBQ3JCLFNBQXFCO1FBRXJCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFJLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQUU7WUFDaEUsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ00sVUFBVTtRQUdqQixPQUFPLFdBRU4sQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ08sR0FBRyxDQUNYLFNBQWlCLEVBQ2pCLFdBQTZDO1FBRTdDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUNqQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFNBQVMsRUFBRSxDQUM3RCxDQUFDO1FBQ0YsSUFBSSxXQUFXO1lBQ2IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQ25ELEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FDL0MsQ0FBQztRQUVKLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsVUFBVSxDQUFDLEdBQVU7UUFDbkIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUN4QixRQUFRLE9BQU8sRUFBRSxDQUFDO1lBQ2hCO2dCQUNFLE9BQU8sR0FBZ0IsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILDZEQUE2RDtJQUM3RCxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBVztRQUM3QixhQUFhO0lBQ2YsQ0FBQztJQTRFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILDZEQUE2RDtJQUM3RCxHQUFHLENBQUksUUFBVyxFQUFFLE9BQWdCLEVBQUUsR0FBRyxJQUFXO1FBQ2xELE1BQU0sSUFBSSxnQkFBZ0IsQ0FDeEIsd0ZBQXdGLENBQ3pGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCw2REFBNkQ7SUFDN0QsUUFBUSxDQUFDLE9BQXdCO1FBQy9CLE1BQU0sSUFBSSxnQkFBZ0IsQ0FDeEIsd0ZBQXdGLENBQ3pGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ00sU0FBUztRQUNoQixNQUFNLElBQUksZ0JBQWdCLENBQ3hCLHdGQUF3RixDQUN6RixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsNkRBQTZEO0lBQzdELGNBQWMsQ0FBQyxTQUF5QjtRQUN0QyxNQUFNLElBQUksZ0JBQWdCLENBQ3hCLHdGQUF3RixDQUN6RixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWRhcHRlcixcbiAgQ29uZGl0aW9uLFxuICBSZXBvc2l0b3J5LFxuICBTZXF1ZW5jZSxcbiAgU2VxdWVuY2VPcHRpb25zLFxuICBVbnN1cHBvcnRlZEVycm9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEJhc2VFcnJvciwgQ29udGV4dCwgT3BlcmF0aW9uS2V5cyB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgSHR0cENvbmZpZywgSHR0cEZsYWdzIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yLCBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSBcIi4vUmVzdFNlcnZpY2VcIjtcbmltcG9ydCB7IFN0YXRlbWVudCB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBYnN0cmFjdCBIVFRQIGFkYXB0ZXIgZm9yIFJFU1QgQVBJIGludGVyYWN0aW9uc1xuICogQHN1bW1hcnkgUHJvdmlkZXMgYSBiYXNlIGltcGxlbWVudGF0aW9uIGZvciBIVFRQIGFkYXB0ZXJzIHdpdGggbWV0aG9kcyBmb3IgQ1JVRCBvcGVyYXRpb25zLFxuICogVVJMIGNvbnN0cnVjdGlvbiwgYW5kIGVycm9yIGhhbmRsaW5nLiBUaGlzIGNsYXNzIGV4dGVuZHMgdGhlIGNvcmUgQWRhcHRlciBjbGFzcyBhbmRcbiAqIGltcGxlbWVudHMgdGhlIG5lY2Vzc2FyeSBtZXRob2RzIGZvciBIVFRQIGNvbW11bmljYXRpb24uIENvbmNyZXRlIGltcGxlbWVudGF0aW9uc1xuICogbXVzdCBwcm92aWRlIHNwZWNpZmljIEhUVFAgY2xpZW50IGZ1bmN0aW9uYWxpdHkuXG4gKiBAdGVtcGxhdGUgWSAtIFRoZSBuYXRpdmUgSFRUUCBjbGllbnQgdHlwZVxuICogQHRlbXBsYXRlIFEgLSBUaGUgcXVlcnkgdHlwZSB1c2VkIGJ5IHRoZSBhZGFwdGVyXG4gKiBAdGVtcGxhdGUgRiAtIFRoZSBIVFRQIGZsYWdzIHR5cGUsIGV4dGVuZGluZyBIdHRwRmxhZ3NcbiAqIEB0ZW1wbGF0ZSBDIC0gVGhlIGNvbnRleHQgdHlwZSwgZXh0ZW5kaW5nIENvbnRleHQ8Rj5cbiAqIEBwYXJhbSB7WX0gbmF0aXZlIC0gVGhlIG5hdGl2ZSBIVFRQIGNsaWVudCBpbnN0YW5jZVxuICogQHBhcmFtIHtIdHRwQ29uZmlnfSBjb25maWcgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgSFRUUCBhZGFwdGVyXG4gKiBAcGFyYW0ge3N0cmluZ30gZmxhdm91ciAtIFRoZSBhZGFwdGVyIGZsYXZvciBpZGVudGlmaWVyXG4gKiBAcGFyYW0ge3N0cmluZ30gW2FsaWFzXSAtIE9wdGlvbmFsIGFsaWFzIGZvciB0aGUgYWRhcHRlclxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEV4YW1wbGUgaW1wbGVtZW50YXRpb24gd2l0aCBBeGlvc1xuICogY2xhc3MgQXhpb3NBZGFwdGVyIGV4dGVuZHMgSHR0cEFkYXB0ZXI8QXhpb3NJbnN0YW5jZSwgQXhpb3NSZXF1ZXN0Q29uZmlnPiB7XG4gKiAgIGNvbnN0cnVjdG9yKGNvbmZpZzogSHR0cENvbmZpZykge1xuICogICAgIHN1cGVyKGF4aW9zLmNyZWF0ZSgpLCBjb25maWcsICdheGlvcycpO1xuICogICB9XG4gKlxuICogICBhc3luYyByZXF1ZXN0PFY+KGRldGFpbHM6IEF4aW9zUmVxdWVzdENvbmZpZyk6IFByb21pc2U8Vj4ge1xuICogICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5uYXRpdmUucmVxdWVzdChkZXRhaWxzKTtcbiAqICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAqICAgfVxuICpcbiAqICAgLy8gSW1wbGVtZW50IG90aGVyIGFic3RyYWN0IG1ldGhvZHMuLi5cbiAqIH1cbiAqIGBgYFxuICogQGNsYXNzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBIdHRwQWRhcHRlcjxcbiAgWSxcbiAgUSxcbiAgRiBleHRlbmRzIEh0dHBGbGFncyA9IEh0dHBGbGFncyxcbiAgQyBleHRlbmRzIENvbnRleHQ8Rj4gPSBDb250ZXh0PEY+LFxuPiBleHRlbmRzIEFkYXB0ZXI8WSwgUSwgRiwgQz4ge1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgbmF0aXZlOiBZLFxuICAgIHByb3RlY3RlZCBjb25maWc6IEh0dHBDb25maWcsXG4gICAgZmxhdm91cjogc3RyaW5nLFxuICAgIGFsaWFzPzogc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKG5hdGl2ZSwgZmxhdm91ciwgYWxpYXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBHZW5lcmF0ZXMgb3BlcmF0aW9uIGZsYWdzIHdpdGggSFRUUCBoZWFkZXJzXG4gICAqIEBzdW1tYXJ5IEV4dGVuZHMgdGhlIGJhc2UgZmxhZ3MgbWV0aG9kIHRvIGluY2x1ZGUgSFRUUC1zcGVjaWZpYyBoZWFkZXJzIGZvciBvcGVyYXRpb25zLlxuICAgKiBUaGlzIG1ldGhvZCBhZGRzIGFuIGVtcHR5IGhlYWRlcnMgb2JqZWN0IHRvIHRoZSBmbGFncyByZXR1cm5lZCBieSB0aGUgcGFyZW50IGNsYXNzLlxuICAgKiBAdGVtcGxhdGUgRiAtIFRoZSBSZXBvc2l0b3J5IEZsYWdzIHR5cGVcbiAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZVxuICAgKiBAcGFyYW0ge09wZXJhdGlvbktleXMuQ1JFQVRFfE9wZXJhdGlvbktleXMuUkVBRHxPcGVyYXRpb25LZXlzLlVQREFURXxPcGVyYXRpb25LZXlzLkRFTEVURX0gb3BlcmF0aW9uIC0gVGhlIG9wZXJhdGlvbiB0eXBlXG4gICAqIEBwYXJhbSB7Q29uc3RydWN0b3I8TT59IG1vZGVsIC0gVGhlIG1vZGVsIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7UGFydGlhbDxGPn0gb3ZlcnJpZGVzIC0gT3B0aW9uYWwgZmxhZyBvdmVycmlkZXNcbiAgICogQHJldHVybiB7Rn0gVGhlIGZsYWdzIG9iamVjdCB3aXRoIGhlYWRlcnNcbiAgICovXG4gIG92ZXJyaWRlIGZsYWdzPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgb3BlcmF0aW9uOlxuICAgICAgfCBPcGVyYXRpb25LZXlzLkNSRUFURVxuICAgICAgfCBPcGVyYXRpb25LZXlzLlJFQURcbiAgICAgIHwgT3BlcmF0aW9uS2V5cy5VUERBVEVcbiAgICAgIHwgT3BlcmF0aW9uS2V5cy5ERUxFVEUsXG4gICAgbW9kZWw6IENvbnN0cnVjdG9yPE0+LFxuICAgIG92ZXJyaWRlczogUGFydGlhbDxGPlxuICApIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihzdXBlci5mbGFnczxNPihvcGVyYXRpb24sIG1vZGVsLCBvdmVycmlkZXMpLCB7XG4gICAgICBoZWFkZXJzOiB7fSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0dXJucyB0aGUgcmVwb3NpdG9yeSBjb25zdHJ1Y3RvciBmb3IgdGhpcyBhZGFwdGVyXG4gICAqIEBzdW1tYXJ5IFByb3ZpZGVzIHRoZSBSZXN0U2VydmljZSBjbGFzcyBhcyB0aGUgcmVwb3NpdG9yeSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcyBIVFRQIGFkYXB0ZXIuXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gY3JlYXRlIHJlcG9zaXRvcnkgaW5zdGFuY2VzIHRoYXQgd29yayB3aXRoIHRoaXMgYWRhcHRlciB0eXBlLlxuICAgKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlXG4gICAqIEByZXR1cm4ge0NvbnN0cnVjdG9yPFJlcG9zaXRvcnk8TSwgUSwgSHR0cEFkYXB0ZXI8WSwgUSwgRiwgQz4+Pn0gVGhlIHJlcG9zaXRvcnkgY29uc3RydWN0b3JcbiAgICovXG4gIG92ZXJyaWRlIHJlcG9zaXRvcnk8TSBleHRlbmRzIE1vZGVsPigpOiBDb25zdHJ1Y3RvcjxcbiAgICBSZXBvc2l0b3J5PE0sIFEsIEh0dHBBZGFwdGVyPFksIFEsIEYsIEM+PlxuICA+IHtcbiAgICByZXR1cm4gUmVzdFNlcnZpY2UgYXMgdW5rbm93biBhcyBDb25zdHJ1Y3RvcjxcbiAgICAgIFJlcG9zaXRvcnk8TSwgUSwgSHR0cEFkYXB0ZXI8WSwgUSwgRiwgQz4+XG4gICAgPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uc3RydWN0cyBhIFVSTCBmb3IgQVBJIHJlcXVlc3RzXG4gICAqIEBzdW1tYXJ5IEJ1aWxkcyBhIGNvbXBsZXRlIFVSTCBmb3IgQVBJIHJlcXVlc3RzIHVzaW5nIHRoZSBjb25maWd1cmVkIHByb3RvY29sIGFuZCBob3N0LFxuICAgKiB0aGUgc3BlY2lmaWVkIHRhYmxlIG5hbWUsIGFuZCBvcHRpb25hbCBxdWVyeSBwYXJhbWV0ZXJzLiBUaGUgbWV0aG9kIGhhbmRsZXMgVVJMIGVuY29kaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRhYmxlIG9yIGVuZHBvaW50XG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPn0gW3F1ZXJ5UGFyYW1zXSAtIE9wdGlvbmFsIHF1ZXJ5IHBhcmFtZXRlcnNcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgZW5jb2RlZCBVUkwgc3RyaW5nXG4gICAqL1xuICBwcm90ZWN0ZWQgdXJsKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIHF1ZXJ5UGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPlxuICApIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKFxuICAgICAgYCR7dGhpcy5jb25maWcucHJvdG9jb2x9Oi8vJHt0aGlzLmNvbmZpZy5ob3N0fS8ke3RhYmxlTmFtZX1gXG4gICAgKTtcbiAgICBpZiAocXVlcnlQYXJhbXMpXG4gICAgICBPYmplY3QuZW50cmllcyhxdWVyeVBhcmFtcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PlxuICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChrZXksIHZhbHVlLnRvU3RyaW5nKCkpXG4gICAgICApO1xuXG4gICAgcmV0dXJuIGVuY29kZVVSSSh1cmwudG9TdHJpbmcoKSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBhcnNlcyBhbmQgY29udmVydHMgZXJyb3JzIHRvIEJhc2VFcnJvciB0eXBlXG4gICAqIEBzdW1tYXJ5IFByb2Nlc3NlcyBlcnJvcnMgdGhhdCBvY2N1ciBkdXJpbmcgSFRUUCBvcGVyYXRpb25zIGFuZCBjb252ZXJ0cyB0aGVtIHRvXG4gICAqIHRoZSBhcHByb3ByaWF0ZSBCYXNlRXJyb3IgdHlwZS4gQ3VycmVudGx5IHJldHVybnMgdGhlIGVycm9yIGFzLWlzLCBidXQgY2FuIGJlXG4gICAqIGV4dGVuZGVkIHRvIGhhbmRsZSBzcGVjaWZpYyBlcnJvciBtZXNzYWdlcyBkaWZmZXJlbnRseS5cbiAgICogQHBhcmFtIHtFcnJvcn0gZXJyIC0gVGhlIGVycm9yIHRvIHBhcnNlXG4gICAqIEByZXR1cm4ge0Jhc2VFcnJvcn0gVGhlIHBhcnNlZCBlcnJvciBhcyBhIEJhc2VFcnJvclxuICAgKi9cbiAgcGFyc2VFcnJvcihlcnI6IEVycm9yKTogQmFzZUVycm9yIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UgfSA9IGVycjtcbiAgICBzd2l0Y2ggKG1lc3NhZ2UpIHtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBlcnIgYXMgQmFzZUVycm9yO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZXMgdGhlIEhUVFAgYWRhcHRlclxuICAgKiBAc3VtbWFyeSBQbGFjZWhvbGRlciBtZXRob2QgZm9yIGFkYXB0ZXIgaW5pdGlhbGl6YXRpb24uIFRoaXMgbWV0aG9kIGlzIGN1cnJlbnRseVxuICAgKiBhIG5vLW9wIGJ1dCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIHRvIHBlcmZvcm0gaW5pdGlhbGl6YXRpb24gdGFza3MuXG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBJbml0aWFsaXphdGlvbiBhcmd1bWVudHNcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBpbml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZVxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBhc3luYyBpbml0aWFsaXplKC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gZG8gbm90aGluZ1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTZW5kcyBhbiBIVFRQIHJlcXVlc3RcbiAgICogQHN1bW1hcnkgQWJzdHJhY3QgbWV0aG9kIHRoYXQgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzIHRvIHNlbmQgSFRUUCByZXF1ZXN0c1xuICAgKiB1c2luZyB0aGUgbmF0aXZlIEhUVFAgY2xpZW50LiBUaGlzIGlzIHRoZSBjb3JlIG1ldGhvZCBmb3IgbWFraW5nIEFQSSBjYWxscy5cbiAgICogQHRlbXBsYXRlIFYgLSBUaGUgcmVzcG9uc2UgdmFsdWUgdHlwZVxuICAgKiBAcGFyYW0ge1F9IGRldGFpbHMgLSBUaGUgcmVxdWVzdCBkZXRhaWxzIHNwZWNpZmljIHRvIHRoZSBIVFRQIGNsaWVudFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFY+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSByZXNwb25zZSBkYXRhXG4gICAqL1xuICBhYnN0cmFjdCByZXF1ZXN0PFY+KGRldGFpbHM6IFEpOiBQcm9taXNlPFY+O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyByZXNvdXJjZVxuICAgKiBAc3VtbWFyeSBBYnN0cmFjdCBtZXRob2QgdGhhdCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMgdG8gY3JlYXRlIGEgbmV3IHJlc291cmNlXG4gICAqIHZpYSBIVFRQLiBUaGlzIHR5cGljYWxseSBjb3JyZXNwb25kcyB0byBhIFBPU1QgcmVxdWVzdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBvciBlbmRwb2ludFxuICAgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGlkIC0gVGhlIGlkZW50aWZpZXIgZm9yIHRoZSByZXNvdXJjZVxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IG1vZGVsIC0gVGhlIGRhdGEgbW9kZWwgdG8gY3JlYXRlXG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBjcmVhdGVkIHJlc291cmNlXG4gICAqL1xuICBhYnN0cmFjdCBvdmVycmlkZSBjcmVhdGUoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlcixcbiAgICBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIGEgcmVzb3VyY2UgYnkgSURcbiAgICogQHN1bW1hcnkgQWJzdHJhY3QgbWV0aG9kIHRoYXQgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzIHRvIHJldHJpZXZlIGEgcmVzb3VyY2VcbiAgICogdmlhIEhUVFAuIFRoaXMgdHlwaWNhbGx5IGNvcnJlc3BvbmRzIHRvIGEgR0VUIHJlcXVlc3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgb3IgZW5kcG9pbnRcbiAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfGJpZ2ludH0gaWQgLSBUaGUgaWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlXG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSByZXRyaWV2ZWQgcmVzb3VyY2VcbiAgICovXG4gIGFic3RyYWN0IG92ZXJyaWRlIHJlYWQoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlcyBhbiBleGlzdGluZyByZXNvdXJjZVxuICAgKiBAc3VtbWFyeSBBYnN0cmFjdCBtZXRob2QgdGhhdCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMgdG8gdXBkYXRlIGEgcmVzb3VyY2VcbiAgICogdmlhIEhUVFAuIFRoaXMgdHlwaWNhbGx5IGNvcnJlc3BvbmRzIHRvIGEgUFVUIG9yIFBBVENIIHJlcXVlc3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgb3IgZW5kcG9pbnRcbiAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBpZCAtIFRoZSBpZGVudGlmaWVyIGZvciB0aGUgcmVzb3VyY2VcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBtb2RlbCAtIFRoZSB1cGRhdGVkIGRhdGEgbW9kZWxcbiAgICogQHBhcmFtIHsuLi5hbnlbXX0gYXJncyAtIEFkZGl0aW9uYWwgYXJndW1lbnRzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHVwZGF0ZWQgcmVzb3VyY2VcbiAgICovXG4gIGFic3RyYWN0IG92ZXJyaWRlIHVwZGF0ZShcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGVzIGEgcmVzb3VyY2UgYnkgSURcbiAgICogQHN1bW1hcnkgQWJzdHJhY3QgbWV0aG9kIHRoYXQgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzIHRvIGRlbGV0ZSBhIHJlc291cmNlXG4gICAqIHZpYSBIVFRQLiBUaGlzIHR5cGljYWxseSBjb3JyZXNwb25kcyB0byBhIERFTEVURSByZXF1ZXN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRhYmxlIG9yIGVuZHBvaW50XG4gICAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcnxiaWdpbnR9IGlkIC0gVGhlIGlkZW50aWZpZXIgZm9yIHRoZSByZXNvdXJjZSB0byBkZWxldGVcbiAgICogQHBhcmFtIHsuLi5hbnlbXX0gYXJncyAtIEFkZGl0aW9uYWwgYXJndW1lbnRzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGRlbGV0aW9uIHJlc3VsdFxuICAgKi9cbiAgYWJzdHJhY3Qgb3ZlcnJpZGUgZGVsZXRlKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEV4ZWN1dGVzIGEgcmF3IHF1ZXJ5XG4gICAqIEBzdW1tYXJ5IE1ldGhvZCBmb3IgZXhlY3V0aW5nIHJhdyBxdWVyaWVzIGRpcmVjdGx5IHdpdGggdGhlIEhUVFAgY2xpZW50LlxuICAgKiBUaGlzIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IGRlZmF1bHQgaW4gSFRUUCBhZGFwdGVycyBhbmQgdGhyb3dzIGFuIFVuc3VwcG9ydGVkRXJyb3IuXG4gICAqIFN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIHByb3ZpZGUgaW1wbGVtZW50YXRpb24uXG4gICAqIEB0ZW1wbGF0ZSBSIC0gVGhlIHJlc3VsdCB0eXBlXG4gICAqIEBwYXJhbSB7UX0gcmF3SW5wdXQgLSBUaGUgcmF3IHF1ZXJ5IGlucHV0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvY2VzcyAtIFdoZXRoZXIgdG8gcHJvY2VzcyB0aGUgcmVzdWx0XG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPFI+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBxdWVyeSByZXN1bHRcbiAgICogQHRocm93cyB7VW5zdXBwb3J0ZWRFcnJvcn0gQWx3YXlzIHRocm93cyBhcyB0aGlzIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IGRlZmF1bHRcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcmF3PFI+KHJhd0lucHV0OiBRLCBwcm9jZXNzOiBib29sZWFuLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8Uj4ge1xuICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKFxuICAgICAgXCJBcGkgaXMgbm90IG5hdGl2ZWx5IGF2YWlsYWJsZSBmb3IgSHR0cEFkYXB0ZXJzLiBJZiByZXF1aXJlZCwgcGxlYXNlIGV4dGVuZHMgdGhpcyBjbGFzc1wiXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIHNlcXVlbmNlXG4gICAqIEBzdW1tYXJ5IE1ldGhvZCBmb3IgY3JlYXRpbmcgYSBzZXF1ZW5jZSBmb3IgZ2VuZXJhdGluZyB1bmlxdWUgaWRlbnRpZmllcnMuXG4gICAqIFRoaXMgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQgYnkgZGVmYXVsdCBpbiBIVFRQIGFkYXB0ZXJzIGFuZCB0aHJvd3MgYW4gVW5zdXBwb3J0ZWRFcnJvci5cbiAgICogU3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gcHJvdmlkZSBpbXBsZW1lbnRhdGlvbi5cbiAgICogQHBhcmFtIHtTZXF1ZW5jZU9wdGlvbnN9IG9wdGlvbnMgLSBPcHRpb25zIGZvciBjcmVhdGluZyB0aGUgc2VxdWVuY2VcbiAgICogQHJldHVybiB7UHJvbWlzZTxTZXF1ZW5jZT59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGNyZWF0ZWQgc2VxdWVuY2VcbiAgICogQHRocm93cyB7VW5zdXBwb3J0ZWRFcnJvcn0gQWx3YXlzIHRocm93cyBhcyB0aGlzIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IGRlZmF1bHRcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgU2VxdWVuY2Uob3B0aW9uczogU2VxdWVuY2VPcHRpb25zKTogUHJvbWlzZTxTZXF1ZW5jZT4ge1xuICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKFxuICAgICAgXCJBcGkgaXMgbm90IG5hdGl2ZWx5IGF2YWlsYWJsZSBmb3IgSHR0cEFkYXB0ZXJzLiBJZiByZXF1aXJlZCwgcGxlYXNlIGV4dGVuZHMgdGhpcyBjbGFzc1wiXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIHN0YXRlbWVudCBmb3IgcXVlcnlpbmdcbiAgICogQHN1bW1hcnkgTWV0aG9kIGZvciBjcmVhdGluZyBhIHN0YXRlbWVudCBmb3IgYnVpbGRpbmcgYW5kIGV4ZWN1dGluZyBxdWVyaWVzLlxuICAgKiBUaGlzIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IGRlZmF1bHQgaW4gSFRUUCBhZGFwdGVycyBhbmQgdGhyb3dzIGFuIFVuc3VwcG9ydGVkRXJyb3IuXG4gICAqIFN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIHByb3ZpZGUgaW1wbGVtZW50YXRpb24uXG4gICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGVcbiAgICogQHRlbXBsYXRlICEgLSBUaGUgcmF3IHF1ZXJ5IHR5cGVcbiAgICogQHJldHVybiB7U3RhdGVtZW50PFEsIE0sIGFueT59IEEgc3RhdGVtZW50IG9iamVjdCBmb3IgYnVpbGRpbmcgcXVlcmllc1xuICAgKiBAdGhyb3dzIHtVbnN1cHBvcnRlZEVycm9yfSBBbHdheXMgdGhyb3dzIGFzIHRoaXMgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQgYnkgZGVmYXVsdFxuICAgKi9cbiAgb3ZlcnJpZGUgU3RhdGVtZW50PE0gZXh0ZW5kcyBNb2RlbD4oKTogU3RhdGVtZW50PFEsIE0sIGFueT4ge1xuICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKFxuICAgICAgXCJBcGkgaXMgbm90IG5hdGl2ZWx5IGF2YWlsYWJsZSBmb3IgSHR0cEFkYXB0ZXJzLiBJZiByZXF1aXJlZCwgcGxlYXNlIGV4dGVuZHMgdGhpcyBjbGFzc1wiXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGFyc2VzIGEgY29uZGl0aW9uIGludG8gYSBxdWVyeVxuICAgKiBAc3VtbWFyeSBNZXRob2QgZm9yIHBhcnNpbmcgYSBjb25kaXRpb24gb2JqZWN0IGludG8gYSBxdWVyeSBmb3JtYXQgdW5kZXJzdG9vZCBieSB0aGUgSFRUUCBjbGllbnQuXG4gICAqIFRoaXMgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQgYnkgZGVmYXVsdCBpbiBIVFRQIGFkYXB0ZXJzIGFuZCB0aHJvd3MgYW4gVW5zdXBwb3J0ZWRFcnJvci5cbiAgICogU3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gcHJvdmlkZSBpbXBsZW1lbnRhdGlvbi5cbiAgICogQHBhcmFtIHtDb25kaXRpb248YW55Pn0gY29uZGl0aW9uIC0gVGhlIGNvbmRpdGlvbiB0byBwYXJzZVxuICAgKiBAcmV0dXJuIHtRfSBUaGUgcGFyc2VkIHF1ZXJ5XG4gICAqIEB0aHJvd3Mge1Vuc3VwcG9ydGVkRXJyb3J9IEFsd2F5cyB0aHJvd3MgYXMgdGhpcyBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCBieSBkZWZhdWx0XG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHBhcnNlQ29uZGl0aW9uKGNvbmRpdGlvbjogQ29uZGl0aW9uPGFueT4pOiBRIHtcbiAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihcbiAgICAgIFwiQXBpIGlzIG5vdCBuYXRpdmVseSBhdmFpbGFibGUgZm9yIEh0dHBBZGFwdGVycy4gSWYgcmVxdWlyZWQsIHBsZWFzZSBleHRlbmRzIHRoaXMgY2xhc3NcIlxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -3,12 +3,106 @@ import { Axios, AxiosRequestConfig } from "axios";
3
3
  import { HttpConfig } from "../types";
4
4
  import { AxiosFlags } from "./types";
5
5
  import { Context } from "@decaf-ts/db-decorators";
6
+ /**
7
+ * @description Axios implementation of the HTTP adapter
8
+ * @summary Concrete implementation of HttpAdapter using Axios as the HTTP client.
9
+ * This adapter provides CRUD operations for RESTful APIs using Axios for HTTP requests.
10
+ * @template Axios - The Axios client type
11
+ * @template AxiosRequestConfig - The Axios request configuration type
12
+ * @template AxiosFlags - The flags type extending HttpFlags
13
+ * @template Context<AxiosFlags> - The context type for this adapter
14
+ * @param {Axios} native - The Axios instance
15
+ * @param {HttpConfig} config - Configuration for the HTTP adapter
16
+ * @param {string} [alias] - Optional alias for the adapter
17
+ * @class
18
+ * @example
19
+ * ```typescript
20
+ * import axios from 'axios';
21
+ * import { AxiosHttpAdapter } from '@decaf-ts/for-http';
22
+ *
23
+ * const config = { protocol: 'https', host: 'api.example.com' };
24
+ * const adapter = new AxiosHttpAdapter(axios.create(), config);
25
+ *
26
+ * // Use the adapter with a repository
27
+ * const userRepo = adapter.getRepository(User);
28
+ * const user = await userRepo.findById('123');
29
+ * ```
30
+ * @mermaid
31
+ * sequenceDiagram
32
+ * participant Client
33
+ * participant AxiosHttpAdapter
34
+ * participant Axios
35
+ * participant API
36
+ *
37
+ * Client->>AxiosHttpAdapter: create(table, id, data)
38
+ * AxiosHttpAdapter->>AxiosHttpAdapter: url(table)
39
+ * AxiosHttpAdapter->>Axios: post(url, data)
40
+ * Axios->>API: HTTP POST Request
41
+ * API-->>Axios: Response
42
+ * Axios-->>AxiosHttpAdapter: Response Data
43
+ * AxiosHttpAdapter-->>Client: Created Resource
44
+ *
45
+ * Client->>AxiosHttpAdapter: read(table, id)
46
+ * AxiosHttpAdapter->>AxiosHttpAdapter: url(table, {id})
47
+ * AxiosHttpAdapter->>Axios: get(url)
48
+ * Axios->>API: HTTP GET Request
49
+ * API-->>Axios: Response
50
+ * Axios-->>AxiosHttpAdapter: Response Data
51
+ * AxiosHttpAdapter-->>Client: Resource Data
52
+ */
6
53
  export declare class AxiosHttpAdapter extends HttpAdapter<Axios, AxiosRequestConfig, AxiosFlags, Context<AxiosFlags>> {
7
54
  constructor(native: Axios, config: HttpConfig, alias?: string);
55
+ /**
56
+ * @description Sends an HTTP request using Axios
57
+ * @summary Implementation of the abstract request method from HttpAdapter.
58
+ * This method uses the Axios instance to send HTTP requests with the provided configuration.
59
+ * @template V - The response value type
60
+ * @param {AxiosRequestConfig} details - The Axios request configuration
61
+ * @return {Promise<V>} A promise that resolves with the response data
62
+ */
8
63
  request<V>(details: AxiosRequestConfig): Promise<V>;
64
+ /**
65
+ * @description Creates a new resource via HTTP POST
66
+ * @summary Implementation of the abstract create method from HttpAdapter.
67
+ * This method sends a POST request to the specified endpoint with the model data.
68
+ * @param {string} tableName - The name of the table or endpoint
69
+ * @param {string|number} id - The identifier for the resource (not used in URL for POST)
70
+ * @param {Record<string, any>} model - The data model to create
71
+ * @return {Promise<Record<string, any>>} A promise that resolves with the created resource
72
+ */
9
73
  create(tableName: string, id: string | number, model: Record<string, any>): Promise<Record<string, any>>;
74
+ /**
75
+ * @description Retrieves a resource by ID via HTTP GET
76
+ * @summary Implementation of the abstract read method from HttpAdapter.
77
+ * This method sends a GET request to the specified endpoint with the ID as a query parameter.
78
+ * @param {string} tableName - The name of the table or endpoint
79
+ * @param {string|number|bigint} id - The identifier for the resource to retrieve
80
+ * @return {Promise<Record<string, any>>} A promise that resolves with the retrieved resource
81
+ */
10
82
  read(tableName: string, id: string | number | bigint): Promise<Record<string, any>>;
83
+ /**
84
+ * @description Updates an existing resource via HTTP PUT
85
+ * @summary Implementation of the abstract update method from HttpAdapter.
86
+ * This method sends a PUT request to the specified endpoint with the updated model data.
87
+ * @param {string} tableName - The name of the table or endpoint
88
+ * @param {string|number} id - The identifier for the resource (not used in URL for PUT)
89
+ * @param {Record<string, any>} model - The updated data model
90
+ * @return {Promise<Record<string, any>>} A promise that resolves with the updated resource
91
+ */
11
92
  update(tableName: string, id: string | number, model: Record<string, any>): Promise<Record<string, any>>;
93
+ /**
94
+ * @description Deletes a resource by ID via HTTP DELETE
95
+ * @summary Implementation of the abstract delete method from HttpAdapter.
96
+ * This method sends a DELETE request to the specified endpoint with the ID as a query parameter.
97
+ * @param {string} tableName - The name of the table or endpoint
98
+ * @param {string|number|bigint} id - The identifier for the resource to delete
99
+ * @return {Promise<Record<string, any>>} A promise that resolves with the deletion result
100
+ */
12
101
  delete(tableName: string, id: string | number | bigint): Promise<Record<string, any>>;
102
+ /**
103
+ * @description Static decoration method for the AxiosHttpAdapter class
104
+ * @summary Placeholder method for class decoration functionality.
105
+ * This method is currently empty but can be used for decorator-based configuration.
106
+ */
13
107
  static decoration(): void;
14
108
  }
@@ -1,12 +1,76 @@
1
- import { HttpAdapter } from "../adapter";
2
- import { AxiosFlavour } from "./constants";
1
+ import { HttpAdapter } from "./../adapter.js";
2
+ import { AxiosFlavour } from "./constants.js";
3
+ /**
4
+ * @description Axios implementation of the HTTP adapter
5
+ * @summary Concrete implementation of HttpAdapter using Axios as the HTTP client.
6
+ * This adapter provides CRUD operations for RESTful APIs using Axios for HTTP requests.
7
+ * @template Axios - The Axios client type
8
+ * @template AxiosRequestConfig - The Axios request configuration type
9
+ * @template AxiosFlags - The flags type extending HttpFlags
10
+ * @template Context<AxiosFlags> - The context type for this adapter
11
+ * @param {Axios} native - The Axios instance
12
+ * @param {HttpConfig} config - Configuration for the HTTP adapter
13
+ * @param {string} [alias] - Optional alias for the adapter
14
+ * @class
15
+ * @example
16
+ * ```typescript
17
+ * import axios from 'axios';
18
+ * import { AxiosHttpAdapter } from '@decaf-ts/for-http';
19
+ *
20
+ * const config = { protocol: 'https', host: 'api.example.com' };
21
+ * const adapter = new AxiosHttpAdapter(axios.create(), config);
22
+ *
23
+ * // Use the adapter with a repository
24
+ * const userRepo = adapter.getRepository(User);
25
+ * const user = await userRepo.findById('123');
26
+ * ```
27
+ * @mermaid
28
+ * sequenceDiagram
29
+ * participant Client
30
+ * participant AxiosHttpAdapter
31
+ * participant Axios
32
+ * participant API
33
+ *
34
+ * Client->>AxiosHttpAdapter: create(table, id, data)
35
+ * AxiosHttpAdapter->>AxiosHttpAdapter: url(table)
36
+ * AxiosHttpAdapter->>Axios: post(url, data)
37
+ * Axios->>API: HTTP POST Request
38
+ * API-->>Axios: Response
39
+ * Axios-->>AxiosHttpAdapter: Response Data
40
+ * AxiosHttpAdapter-->>Client: Created Resource
41
+ *
42
+ * Client->>AxiosHttpAdapter: read(table, id)
43
+ * AxiosHttpAdapter->>AxiosHttpAdapter: url(table, {id})
44
+ * AxiosHttpAdapter->>Axios: get(url)
45
+ * Axios->>API: HTTP GET Request
46
+ * API-->>Axios: Response
47
+ * Axios-->>AxiosHttpAdapter: Response Data
48
+ * AxiosHttpAdapter-->>Client: Resource Data
49
+ */
3
50
  export class AxiosHttpAdapter extends HttpAdapter {
4
51
  constructor(native, config, alias) {
5
52
  super(native, config, AxiosFlavour, alias);
6
53
  }
54
+ /**
55
+ * @description Sends an HTTP request using Axios
56
+ * @summary Implementation of the abstract request method from HttpAdapter.
57
+ * This method uses the Axios instance to send HTTP requests with the provided configuration.
58
+ * @template V - The response value type
59
+ * @param {AxiosRequestConfig} details - The Axios request configuration
60
+ * @return {Promise<V>} A promise that resolves with the response data
61
+ */
7
62
  async request(details) {
8
63
  return this.native.request(details);
9
64
  }
65
+ /**
66
+ * @description Creates a new resource via HTTP POST
67
+ * @summary Implementation of the abstract create method from HttpAdapter.
68
+ * This method sends a POST request to the specified endpoint with the model data.
69
+ * @param {string} tableName - The name of the table or endpoint
70
+ * @param {string|number} id - The identifier for the resource (not used in URL for POST)
71
+ * @param {Record<string, any>} model - The data model to create
72
+ * @return {Promise<Record<string, any>>} A promise that resolves with the created resource
73
+ */
10
74
  async create(tableName, id, model) {
11
75
  try {
12
76
  const url = this.url(tableName);
@@ -16,6 +80,14 @@ export class AxiosHttpAdapter extends HttpAdapter {
16
80
  throw this.parseError(e);
17
81
  }
18
82
  }
83
+ /**
84
+ * @description Retrieves a resource by ID via HTTP GET
85
+ * @summary Implementation of the abstract read method from HttpAdapter.
86
+ * This method sends a GET request to the specified endpoint with the ID as a query parameter.
87
+ * @param {string} tableName - The name of the table or endpoint
88
+ * @param {string|number|bigint} id - The identifier for the resource to retrieve
89
+ * @return {Promise<Record<string, any>>} A promise that resolves with the retrieved resource
90
+ */
19
91
  async read(tableName, id) {
20
92
  try {
21
93
  const url = this.url(tableName, { id: id });
@@ -25,6 +97,15 @@ export class AxiosHttpAdapter extends HttpAdapter {
25
97
  throw this.parseError(e);
26
98
  }
27
99
  }
100
+ /**
101
+ * @description Updates an existing resource via HTTP PUT
102
+ * @summary Implementation of the abstract update method from HttpAdapter.
103
+ * This method sends a PUT request to the specified endpoint with the updated model data.
104
+ * @param {string} tableName - The name of the table or endpoint
105
+ * @param {string|number} id - The identifier for the resource (not used in URL for PUT)
106
+ * @param {Record<string, any>} model - The updated data model
107
+ * @return {Promise<Record<string, any>>} A promise that resolves with the updated resource
108
+ */
28
109
  async update(tableName, id, model) {
29
110
  try {
30
111
  const url = this.url(tableName);
@@ -34,6 +115,14 @@ export class AxiosHttpAdapter extends HttpAdapter {
34
115
  throw this.parseError(e);
35
116
  }
36
117
  }
118
+ /**
119
+ * @description Deletes a resource by ID via HTTP DELETE
120
+ * @summary Implementation of the abstract delete method from HttpAdapter.
121
+ * This method sends a DELETE request to the specified endpoint with the ID as a query parameter.
122
+ * @param {string} tableName - The name of the table or endpoint
123
+ * @param {string|number|bigint} id - The identifier for the resource to delete
124
+ * @return {Promise<Record<string, any>>} A promise that resolves with the deletion result
125
+ */
37
126
  async delete(tableName, id) {
38
127
  try {
39
128
  const url = this.url(tableName, { id: id });
@@ -43,6 +132,11 @@ export class AxiosHttpAdapter extends HttpAdapter {
43
132
  throw this.parseError(e);
44
133
  }
45
134
  }
135
+ /**
136
+ * @description Static decoration method for the AxiosHttpAdapter class
137
+ * @summary Placeholder method for class decoration functionality.
138
+ * This method is currently empty but can be used for decorator-based configuration.
139
+ */
46
140
  static decoration() { }
47
141
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpb3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXhpb3MvYXhpb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUt6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNDLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxXQUtyQztJQUNDLFlBQVksTUFBYSxFQUFFLE1BQWtCLEVBQUUsS0FBYztRQUMzRCxLQUFLLENBQUMsTUFBYSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVRLEtBQUssQ0FBQyxPQUFPLENBQUksT0FBMkI7UUFDbkQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FDVixTQUFpQixFQUNqQixFQUFtQixFQUNuQixLQUEwQjtRQUUxQixJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUNELEtBQUssQ0FBQyxJQUFJLENBQ1IsU0FBaUIsRUFDakIsRUFBNEI7UUFFNUIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBcUIsRUFBRSxDQUFDLENBQUM7WUFDL0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUNWLFNBQWlCLEVBQ2pCLEVBQW1CLEVBQ25CLEtBQTBCO1FBRTFCLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDaEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FDVixTQUFpQixFQUNqQixFQUE0QjtRQUU1QixJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFxQixFQUFFLENBQUMsQ0FBQztZQUMvRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLEtBQUksQ0FBQztDQUN2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBBZGFwdGVyIH0gZnJvbSBcIi4uL2FkYXB0ZXJcIjtcbmltcG9ydCB7IEF4aW9zLCBBeGlvc1JlcXVlc3RDb25maWcgfSBmcm9tIFwiYXhpb3NcIjtcbmltcG9ydCB7IEh0dHBDb25maWcgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IEF4aW9zRmxhZ3MgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQXhpb3NGbGF2b3VyIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjbGFzcyBBeGlvc0h0dHBBZGFwdGVyIGV4dGVuZHMgSHR0cEFkYXB0ZXI8XG4gIEF4aW9zLFxuICBBeGlvc1JlcXVlc3RDb25maWcsXG4gIEF4aW9zRmxhZ3MsXG4gIENvbnRleHQ8QXhpb3NGbGFncz5cbj4ge1xuICBjb25zdHJ1Y3RvcihuYXRpdmU6IEF4aW9zLCBjb25maWc6IEh0dHBDb25maWcsIGFsaWFzPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobmF0aXZlIGFzIGFueSwgY29uZmlnLCBBeGlvc0ZsYXZvdXIsIGFsaWFzKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIHJlcXVlc3Q8Vj4oZGV0YWlsczogQXhpb3NSZXF1ZXN0Q29uZmlnKTogUHJvbWlzZTxWPiB7XG4gICAgcmV0dXJuIHRoaXMubmF0aXZlLnJlcXVlc3QoZGV0YWlscyk7XG4gIH1cblxuICBhc3luYyBjcmVhdGUoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlcixcbiAgICBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PlxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gdGhpcy51cmwodGFibGVOYW1lKTtcbiAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5wb3N0KHVybCwgbW9kZWwpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgfVxuICBhc3luYyByZWFkKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnRcbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMudXJsKHRhYmxlTmFtZSwgeyBpZDogaWQgYXMgc3RyaW5nIHwgbnVtYmVyIH0pO1xuICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldCh1cmwpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZShcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cmwgPSB0aGlzLnVybCh0YWJsZU5hbWUpO1xuICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLnB1dCh1cmwsIG1vZGVsKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkZWxldGUoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludFxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gdGhpcy51cmwodGFibGVOYW1lLCB7IGlkOiBpZCBhcyBzdHJpbmcgfCBudW1iZXIgfSk7XG4gICAgICByZXR1cm4gdGhpcy5uYXRpdmUuZGVsZXRlKHVybCk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGRlY29yYXRpb24oKSB7fVxufVxuIl19
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpb3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXhpb3MvYXhpb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSx3QkFBbUI7QUFLekMsT0FBTyxFQUFFLFlBQVksRUFBRSx1QkFBb0I7QUFFM0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Q0c7QUFDSCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsV0FLckM7SUFDQyxZQUFZLE1BQWEsRUFBRSxNQUFrQixFQUFFLEtBQWM7UUFDM0QsS0FBSyxDQUFDLE1BQWEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ00sS0FBSyxDQUFDLE9BQU8sQ0FBSSxPQUEyQjtRQUNuRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQ1YsU0FBaUIsRUFDakIsRUFBbUIsRUFDbkIsS0FBMEI7UUFFMUIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNoQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFDRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FDUixTQUFpQixFQUNqQixFQUE0QjtRQUU1QixJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFxQixFQUFFLENBQUMsQ0FBQztZQUMvRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FDVixTQUFpQixFQUNqQixFQUFtQixFQUNuQixLQUEwQjtRQUUxQixJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUNWLFNBQWlCLEVBQ2pCLEVBQTRCO1FBRTVCLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQXFCLEVBQUUsQ0FBQyxDQUFDO1lBQy9ELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxVQUFVLEtBQUksQ0FBQztDQUN2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBBZGFwdGVyIH0gZnJvbSBcIi4uL2FkYXB0ZXJcIjtcbmltcG9ydCB7IEF4aW9zLCBBeGlvc1JlcXVlc3RDb25maWcgfSBmcm9tIFwiYXhpb3NcIjtcbmltcG9ydCB7IEh0dHBDb25maWcgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IEF4aW9zRmxhZ3MgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQXhpb3NGbGF2b3VyIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEF4aW9zIGltcGxlbWVudGF0aW9uIG9mIHRoZSBIVFRQIGFkYXB0ZXJcbiAqIEBzdW1tYXJ5IENvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIEh0dHBBZGFwdGVyIHVzaW5nIEF4aW9zIGFzIHRoZSBIVFRQIGNsaWVudC5cbiAqIFRoaXMgYWRhcHRlciBwcm92aWRlcyBDUlVEIG9wZXJhdGlvbnMgZm9yIFJFU1RmdWwgQVBJcyB1c2luZyBBeGlvcyBmb3IgSFRUUCByZXF1ZXN0cy5cbiAqIEB0ZW1wbGF0ZSBBeGlvcyAtIFRoZSBBeGlvcyBjbGllbnQgdHlwZVxuICogQHRlbXBsYXRlIEF4aW9zUmVxdWVzdENvbmZpZyAtIFRoZSBBeGlvcyByZXF1ZXN0IGNvbmZpZ3VyYXRpb24gdHlwZVxuICogQHRlbXBsYXRlIEF4aW9zRmxhZ3MgLSBUaGUgZmxhZ3MgdHlwZSBleHRlbmRpbmcgSHR0cEZsYWdzXG4gKiBAdGVtcGxhdGUgQ29udGV4dDxBeGlvc0ZsYWdzPiAtIFRoZSBjb250ZXh0IHR5cGUgZm9yIHRoaXMgYWRhcHRlclxuICogQHBhcmFtIHtBeGlvc30gbmF0aXZlIC0gVGhlIEF4aW9zIGluc3RhbmNlXG4gKiBAcGFyYW0ge0h0dHBDb25maWd9IGNvbmZpZyAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBIVFRQIGFkYXB0ZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYWxpYXNdIC0gT3B0aW9uYWwgYWxpYXMgZm9yIHRoZSBhZGFwdGVyXG4gKiBAY2xhc3NcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuICogaW1wb3J0IHsgQXhpb3NIdHRwQWRhcHRlciB9IGZyb20gJ0BkZWNhZi10cy9mb3ItaHR0cCc7XG4gKiBcbiAqIGNvbnN0IGNvbmZpZyA9IHsgcHJvdG9jb2w6ICdodHRwcycsIGhvc3Q6ICdhcGkuZXhhbXBsZS5jb20nIH07XG4gKiBjb25zdCBhZGFwdGVyID0gbmV3IEF4aW9zSHR0cEFkYXB0ZXIoYXhpb3MuY3JlYXRlKCksIGNvbmZpZyk7XG4gKiBcbiAqIC8vIFVzZSB0aGUgYWRhcHRlciB3aXRoIGEgcmVwb3NpdG9yeVxuICogY29uc3QgdXNlclJlcG8gPSBhZGFwdGVyLmdldFJlcG9zaXRvcnkoVXNlcik7XG4gKiBjb25zdCB1c2VyID0gYXdhaXQgdXNlclJlcG8uZmluZEJ5SWQoJzEyMycpO1xuICogYGBgXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENsaWVudFxuICogICBwYXJ0aWNpcGFudCBBeGlvc0h0dHBBZGFwdGVyXG4gKiAgIHBhcnRpY2lwYW50IEF4aW9zXG4gKiAgIHBhcnRpY2lwYW50IEFQSVxuICogICBcbiAqICAgQ2xpZW50LT4+QXhpb3NIdHRwQWRhcHRlcjogY3JlYXRlKHRhYmxlLCBpZCwgZGF0YSlcbiAqICAgQXhpb3NIdHRwQWRhcHRlci0+PkF4aW9zSHR0cEFkYXB0ZXI6IHVybCh0YWJsZSlcbiAqICAgQXhpb3NIdHRwQWRhcHRlci0+PkF4aW9zOiBwb3N0KHVybCwgZGF0YSlcbiAqICAgQXhpb3MtPj5BUEk6IEhUVFAgUE9TVCBSZXF1ZXN0XG4gKiAgIEFQSS0tPj5BeGlvczogUmVzcG9uc2VcbiAqICAgQXhpb3MtLT4+QXhpb3NIdHRwQWRhcHRlcjogUmVzcG9uc2UgRGF0YVxuICogICBBeGlvc0h0dHBBZGFwdGVyLS0+PkNsaWVudDogQ3JlYXRlZCBSZXNvdXJjZVxuICogICBcbiAqICAgQ2xpZW50LT4+QXhpb3NIdHRwQWRhcHRlcjogcmVhZCh0YWJsZSwgaWQpXG4gKiAgIEF4aW9zSHR0cEFkYXB0ZXItPj5BeGlvc0h0dHBBZGFwdGVyOiB1cmwodGFibGUsIHtpZH0pXG4gKiAgIEF4aW9zSHR0cEFkYXB0ZXItPj5BeGlvczogZ2V0KHVybClcbiAqICAgQXhpb3MtPj5BUEk6IEhUVFAgR0VUIFJlcXVlc3RcbiAqICAgQVBJLS0+PkF4aW9zOiBSZXNwb25zZVxuICogICBBeGlvcy0tPj5BeGlvc0h0dHBBZGFwdGVyOiBSZXNwb25zZSBEYXRhXG4gKiAgIEF4aW9zSHR0cEFkYXB0ZXItLT4+Q2xpZW50OiBSZXNvdXJjZSBEYXRhXG4gKi9cbmV4cG9ydCBjbGFzcyBBeGlvc0h0dHBBZGFwdGVyIGV4dGVuZHMgSHR0cEFkYXB0ZXI8XG4gIEF4aW9zLFxuICBBeGlvc1JlcXVlc3RDb25maWcsXG4gIEF4aW9zRmxhZ3MsXG4gIENvbnRleHQ8QXhpb3NGbGFncz5cbj4ge1xuICBjb25zdHJ1Y3RvcihuYXRpdmU6IEF4aW9zLCBjb25maWc6IEh0dHBDb25maWcsIGFsaWFzPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobmF0aXZlIGFzIGFueSwgY29uZmlnLCBBeGlvc0ZsYXZvdXIsIGFsaWFzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU2VuZHMgYW4gSFRUUCByZXF1ZXN0IHVzaW5nIEF4aW9zXG4gICAqIEBzdW1tYXJ5IEltcGxlbWVudGF0aW9uIG9mIHRoZSBhYnN0cmFjdCByZXF1ZXN0IG1ldGhvZCBmcm9tIEh0dHBBZGFwdGVyLlxuICAgKiBUaGlzIG1ldGhvZCB1c2VzIHRoZSBBeGlvcyBpbnN0YW5jZSB0byBzZW5kIEhUVFAgcmVxdWVzdHMgd2l0aCB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbi5cbiAgICogQHRlbXBsYXRlIFYgLSBUaGUgcmVzcG9uc2UgdmFsdWUgdHlwZVxuICAgKiBAcGFyYW0ge0F4aW9zUmVxdWVzdENvbmZpZ30gZGV0YWlscyAtIFRoZSBBeGlvcyByZXF1ZXN0IGNvbmZpZ3VyYXRpb25cbiAgICogQHJldHVybiB7UHJvbWlzZTxWPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgcmVzcG9uc2UgZGF0YVxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgcmVxdWVzdDxWPihkZXRhaWxzOiBBeGlvc1JlcXVlc3RDb25maWcpOiBQcm9taXNlPFY+IHtcbiAgICByZXR1cm4gdGhpcy5uYXRpdmUucmVxdWVzdChkZXRhaWxzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyByZXNvdXJjZSB2aWEgSFRUUCBQT1NUXG4gICAqIEBzdW1tYXJ5IEltcGxlbWVudGF0aW9uIG9mIHRoZSBhYnN0cmFjdCBjcmVhdGUgbWV0aG9kIGZyb20gSHR0cEFkYXB0ZXIuXG4gICAqIFRoaXMgbWV0aG9kIHNlbmRzIGEgUE9TVCByZXF1ZXN0IHRvIHRoZSBzcGVjaWZpZWQgZW5kcG9pbnQgd2l0aCB0aGUgbW9kZWwgZGF0YS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBvciBlbmRwb2ludFxuICAgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGlkIC0gVGhlIGlkZW50aWZpZXIgZm9yIHRoZSByZXNvdXJjZSAobm90IHVzZWQgaW4gVVJMIGZvciBQT1NUKVxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IG1vZGVsIC0gVGhlIGRhdGEgbW9kZWwgdG8gY3JlYXRlXG4gICAqIEByZXR1cm4ge1Byb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGNyZWF0ZWQgcmVzb3VyY2VcbiAgICovXG4gIGFzeW5jIGNyZWF0ZShcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cmwgPSB0aGlzLnVybCh0YWJsZU5hbWUpO1xuICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLnBvc3QodXJsLCBtb2RlbCk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIGEgcmVzb3VyY2UgYnkgSUQgdmlhIEhUVFAgR0VUXG4gICAqIEBzdW1tYXJ5IEltcGxlbWVudGF0aW9uIG9mIHRoZSBhYnN0cmFjdCByZWFkIG1ldGhvZCBmcm9tIEh0dHBBZGFwdGVyLlxuICAgKiBUaGlzIG1ldGhvZCBzZW5kcyBhIEdFVCByZXF1ZXN0IHRvIHRoZSBzcGVjaWZpZWQgZW5kcG9pbnQgd2l0aCB0aGUgSUQgYXMgYSBxdWVyeSBwYXJhbWV0ZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgb3IgZW5kcG9pbnRcbiAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfGJpZ2ludH0gaWQgLSBUaGUgaWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlIHRvIHJldHJpZXZlXG4gICAqIEByZXR1cm4ge1Byb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJldHJpZXZlZCByZXNvdXJjZVxuICAgKi9cbiAgYXN5bmMgcmVhZChcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50XG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cmwgPSB0aGlzLnVybCh0YWJsZU5hbWUsIHsgaWQ6IGlkIGFzIHN0cmluZyB8IG51bWJlciB9KTtcbiAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5nZXQodXJsKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZXMgYW4gZXhpc3RpbmcgcmVzb3VyY2UgdmlhIEhUVFAgUFVUXG4gICAqIEBzdW1tYXJ5IEltcGxlbWVudGF0aW9uIG9mIHRoZSBhYnN0cmFjdCB1cGRhdGUgbWV0aG9kIGZyb20gSHR0cEFkYXB0ZXIuXG4gICAqIFRoaXMgbWV0aG9kIHNlbmRzIGEgUFVUIHJlcXVlc3QgdG8gdGhlIHNwZWNpZmllZCBlbmRwb2ludCB3aXRoIHRoZSB1cGRhdGVkIG1vZGVsIGRhdGEuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgb3IgZW5kcG9pbnRcbiAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBpZCAtIFRoZSBpZGVudGlmaWVyIGZvciB0aGUgcmVzb3VyY2UgKG5vdCB1c2VkIGluIFVSTCBmb3IgUFVUKVxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IG1vZGVsIC0gVGhlIHVwZGF0ZWQgZGF0YSBtb2RlbFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB1cGRhdGVkIHJlc291cmNlXG4gICAqL1xuICBhc3luYyB1cGRhdGUoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlcixcbiAgICBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PlxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gdGhpcy51cmwodGFibGVOYW1lKTtcbiAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5wdXQodXJsLCBtb2RlbCk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGVzIGEgcmVzb3VyY2UgYnkgSUQgdmlhIEhUVFAgREVMRVRFXG4gICAqIEBzdW1tYXJ5IEltcGxlbWVudGF0aW9uIG9mIHRoZSBhYnN0cmFjdCBkZWxldGUgbWV0aG9kIGZyb20gSHR0cEFkYXB0ZXIuXG4gICAqIFRoaXMgbWV0aG9kIHNlbmRzIGEgREVMRVRFIHJlcXVlc3QgdG8gdGhlIHNwZWNpZmllZCBlbmRwb2ludCB3aXRoIHRoZSBJRCBhcyBhIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBvciBlbmRwb2ludFxuICAgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ8YmlnaW50fSBpZCAtIFRoZSBpZGVudGlmaWVyIGZvciB0aGUgcmVzb3VyY2UgdG8gZGVsZXRlXG4gICAqIEByZXR1cm4ge1Byb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGRlbGV0aW9uIHJlc3VsdFxuICAgKi9cbiAgYXN5bmMgZGVsZXRlKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnRcbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMudXJsKHRhYmxlTmFtZSwgeyBpZDogaWQgYXMgc3RyaW5nIHwgbnVtYmVyIH0pO1xuICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmRlbGV0ZSh1cmwpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU3RhdGljIGRlY29yYXRpb24gbWV0aG9kIGZvciB0aGUgQXhpb3NIdHRwQWRhcHRlciBjbGFzc1xuICAgKiBAc3VtbWFyeSBQbGFjZWhvbGRlciBtZXRob2QgZm9yIGNsYXNzIGRlY29yYXRpb24gZnVuY3Rpb25hbGl0eS5cbiAgICogVGhpcyBtZXRob2QgaXMgY3VycmVudGx5IGVtcHR5IGJ1dCBjYW4gYmUgdXNlZCBmb3IgZGVjb3JhdG9yLWJhc2VkIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBzdGF0aWMgZGVjb3JhdGlvbigpIHt9XG59XG4iXX0=
@@ -1 +1,7 @@
1
+ /**
2
+ * @description Axios adapter flavor identifier
3
+ * @summary Constant string identifier used to identify the Axios implementation of the HTTP adapter
4
+ * @const {string} AxiosFlavour
5
+ * @memberOf module:for-http.axios
6
+ */
1
7
  export declare const AxiosFlavour = "axios";
@@ -1,2 +1,8 @@
1
+ /**
2
+ * @description Axios adapter flavor identifier
3
+ * @summary Constant string identifier used to identify the Axios implementation of the HTTP adapter
4
+ * @const {string} AxiosFlavour
5
+ * @memberOf module:for-http.axios
6
+ */
1
7
  export const AxiosFlavour = "axios";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F4aW9zL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEF4aW9zRmxhdm91ciA9IFwiYXhpb3NcIjtcbiJdfQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F4aW9zL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBBeGlvcyBhZGFwdGVyIGZsYXZvciBpZGVudGlmaWVyXG4gKiBAc3VtbWFyeSBDb25zdGFudCBzdHJpbmcgaWRlbnRpZmllciB1c2VkIHRvIGlkZW50aWZ5IHRoZSBBeGlvcyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSFRUUCBhZGFwdGVyXG4gKiBAY29uc3Qge3N0cmluZ30gQXhpb3NGbGF2b3VyXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1odHRwLmF4aW9zXG4gKi9cbmV4cG9ydCBjb25zdCBBeGlvc0ZsYXZvdXIgPSBcImF4aW9zXCI7XG4iXX0=
@@ -1,6 +1,15 @@
1
- import { AxiosHttpAdapter } from "./axios";
1
+ import { AxiosHttpAdapter } from "./axios.js";
2
+ /**
3
+ * @description HTTP client module for REST API interactions
4
+ * @summary This module provides classes and utilities for interacting with REST APIs.
5
+ * It exposes repository and service classes for making HTTP requests, along with
6
+ * type definitions and adapters for different HTTP clients. The module includes
7
+ * {@link RestRepository} and {@link RestService} for API interactions.
8
+ * @namespace axios
9
+ * @memberOf module:for-http
10
+ */
2
11
  AxiosHttpAdapter.decoration();
3
- export * from "./axios";
4
- export * from "./constants";
5
- export * from "./types";
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXhpb3MvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTNDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDO0FBRTlCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXhpb3NIdHRwQWRhcHRlciB9IGZyb20gXCIuL2F4aW9zXCI7XG5cbkF4aW9zSHR0cEFkYXB0ZXIuZGVjb3JhdGlvbigpO1xuXG5leHBvcnQgKiBmcm9tIFwiLi9heGlvc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuIl19
12
+ export * from "./axios.js";
13
+ export * from "./constants.js";
14
+ export * from "./types.js";
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXhpb3MvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG1CQUFnQjtBQUUzQzs7Ozs7Ozs7R0FRRztBQUVILGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDO0FBRTlCLDJCQUF3QjtBQUN4QiwrQkFBNEI7QUFDNUIsMkJBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXhpb3NIdHRwQWRhcHRlciB9IGZyb20gXCIuL2F4aW9zXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEhUVFAgY2xpZW50IG1vZHVsZSBmb3IgUkVTVCBBUEkgaW50ZXJhY3Rpb25zXG4gKiBAc3VtbWFyeSBUaGlzIG1vZHVsZSBwcm92aWRlcyBjbGFzc2VzIGFuZCB1dGlsaXRpZXMgZm9yIGludGVyYWN0aW5nIHdpdGggUkVTVCBBUElzLlxuICogSXQgZXhwb3NlcyByZXBvc2l0b3J5IGFuZCBzZXJ2aWNlIGNsYXNzZXMgZm9yIG1ha2luZyBIVFRQIHJlcXVlc3RzLCBhbG9uZyB3aXRoXG4gKiB0eXBlIGRlZmluaXRpb25zIGFuZCBhZGFwdGVycyBmb3IgZGlmZmVyZW50IEhUVFAgY2xpZW50cy4gVGhlIG1vZHVsZSBpbmNsdWRlc1xuICoge0BsaW5rIFJlc3RSZXBvc2l0b3J5fSBhbmQge0BsaW5rIFJlc3RTZXJ2aWNlfSBmb3IgQVBJIGludGVyYWN0aW9ucy5cbiAqIEBuYW1lc3BhY2UgYXhpb3NcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWh0dHBcbiAqL1xuXG5BeGlvc0h0dHBBZGFwdGVyLmRlY29yYXRpb24oKTtcblxuZXhwb3J0ICogZnJvbSBcIi4vYXhpb3NcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbiJdfQ==
@@ -1,2 +1,8 @@
1
1
  import { HttpFlags } from "../types";
2
+ /**
3
+ * @description Axios-specific HTTP flags type
4
+ * @summary Type alias for HttpFlags used specifically with the Axios adapter implementation
5
+ * @typedef {HttpFlags} AxiosFlags
6
+ * @memberOf module:for-http.axios
7
+ */
2
8
  export type AxiosFlags = HttpFlags;
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXhpb3MvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBGbGFncyB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgdHlwZSBBeGlvc0ZsYWdzID0gSHR0cEZsYWdzO1xuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXhpb3MvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBGbGFncyB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBeGlvcy1zcGVjaWZpYyBIVFRQIGZsYWdzIHR5cGVcbiAqIEBzdW1tYXJ5IFR5cGUgYWxpYXMgZm9yIEh0dHBGbGFncyB1c2VkIHNwZWNpZmljYWxseSB3aXRoIHRoZSBBeGlvcyBhZGFwdGVyIGltcGxlbWVudGF0aW9uXG4gKiBAdHlwZWRlZiB7SHR0cEZsYWdzfSBBeGlvc0ZsYWdzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1odHRwLmF4aW9zXG4gKi9cbmV4cG9ydCB0eXBlIEF4aW9zRmxhZ3MgPSBIdHRwRmxhZ3M7XG4iXX0=
@@ -1,5 +1,18 @@
1
+ /**
2
+ * @description HTTP client module for REST API interactions
3
+ * @summary This module provides classes and utilities for interacting with REST APIs.
4
+ * It exposes repository and service classes for making HTTP requests, along with
5
+ * type definitions and adapters for different HTTP clients. The module includes
6
+ * {@link RestRepository} and {@link RestService} for API interactions.
7
+ * @module for-http
8
+ */
1
9
  export * from "./adapter";
2
10
  export * from "./RestRepository";
3
11
  export * from "./RestService";
4
12
  export * from "./types";
5
- export declare const VERSION = "0.2.1";
13
+ /**
14
+ * @description Current version of the for-http module
15
+ * @summary Version identifier for the module
16
+ * @const VERSION
17
+ */
18
+ export declare const VERSION = "0.2.3";
package/lib/esm/index.js CHANGED
@@ -1,6 +1,19 @@
1
- export * from "./adapter";
2
- export * from "./RestRepository";
3
- export * from "./RestService";
4
- export * from "./types";
5
- export const VERSION = "0.2.1";
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLFNBQVMsQ0FBQztBQUV4QixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vYWRhcHRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vUmVzdFJlcG9zaXRvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1Jlc3RTZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiIyNWRVJTSU9OIyNcIjtcbiJdfQ==
1
+ /**
2
+ * @description HTTP client module for REST API interactions
3
+ * @summary This module provides classes and utilities for interacting with REST APIs.
4
+ * It exposes repository and service classes for making HTTP requests, along with
5
+ * type definitions and adapters for different HTTP clients. The module includes
6
+ * {@link RestRepository} and {@link RestService} for API interactions.
7
+ * @module for-http
8
+ */
9
+ export * from "./adapter.js";
10
+ export * from "./RestRepository.js";
11
+ export * from "./RestService.js";
12
+ export * from "./types.js";
13
+ /**
14
+ * @description Current version of the for-http module
15
+ * @summary Version identifier for the module
16
+ * @const VERSION
17
+ */
18
+ export const VERSION = "0.2.3";
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUNILDZCQUEwQjtBQUMxQixvQ0FBaUM7QUFDakMsaUNBQThCO0FBQzlCLDJCQUF3QjtBQUV4Qjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlc2NyaXB0aW9uIEhUVFAgY2xpZW50IG1vZHVsZSBmb3IgUkVTVCBBUEkgaW50ZXJhY3Rpb25zXG4gKiBAc3VtbWFyeSBUaGlzIG1vZHVsZSBwcm92aWRlcyBjbGFzc2VzIGFuZCB1dGlsaXRpZXMgZm9yIGludGVyYWN0aW5nIHdpdGggUkVTVCBBUElzLlxuICogSXQgZXhwb3NlcyByZXBvc2l0b3J5IGFuZCBzZXJ2aWNlIGNsYXNzZXMgZm9yIG1ha2luZyBIVFRQIHJlcXVlc3RzLCBhbG9uZyB3aXRoXG4gKiB0eXBlIGRlZmluaXRpb25zIGFuZCBhZGFwdGVycyBmb3IgZGlmZmVyZW50IEhUVFAgY2xpZW50cy4gVGhlIG1vZHVsZSBpbmNsdWRlc1xuICoge0BsaW5rIFJlc3RSZXBvc2l0b3J5fSBhbmQge0BsaW5rIFJlc3RTZXJ2aWNlfSBmb3IgQVBJIGludGVyYWN0aW9ucy5cbiAqIEBtb2R1bGUgZm9yLWh0dHBcbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vYWRhcHRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vUmVzdFJlcG9zaXRvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1Jlc3RTZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDdXJyZW50IHZlcnNpb24gb2YgdGhlIGZvci1odHRwIG1vZHVsZVxuICogQHN1bW1hcnkgVmVyc2lvbiBpZGVudGlmaWVyIGZvciB0aGUgbW9kdWxlXG4gKiBAY29uc3QgVkVSU0lPTlxuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiIyNWRVJTSU9OIyNcIjtcbiJdfQ==
@@ -1,8 +1,23 @@
1
1
  import { RepositoryFlags } from "@decaf-ts/db-decorators";
2
+ /**
3
+ * @description HTTP configuration type
4
+ * @summary Configuration type for HTTP connections specifying protocol and host
5
+ * @typedef {Object} HttpConfig
6
+ * @property {('http'|'https')} protocol - The HTTP protocol to use
7
+ * @property {string} host - The host address
8
+ * @memberOf module:for-http
9
+ */
2
10
  export type HttpConfig = {
3
11
  protocol: "http" | "https";
4
12
  host: string;
5
13
  };
14
+ /**
15
+ * @description HTTP flags interface
16
+ * @summary Interface extending RepositoryFlags with HTTP-specific options
17
+ * @interface HttpFlags
18
+ * @property {Record<string, string>} [headers] - Optional HTTP headers to include with requests
19
+ * @memberOf module:for-http
20
+ */
6
21
  export interface HttpFlags extends RepositoryFlags {
7
22
  headers?: Record<string, string>;
8
23
  }
package/lib/esm/types.js CHANGED
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcG9zaXRvcnlGbGFncyB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG5leHBvcnQgdHlwZSBIdHRwQ29uZmlnID0ge1xuICBwcm90b2NvbDogXCJodHRwXCIgfCBcImh0dHBzXCI7XG4gIGhvc3Q6IHN0cmluZztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cEZsYWdzIGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzIHtcbiAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcG9zaXRvcnlGbGFncyB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBIVFRQIGNvbmZpZ3VyYXRpb24gdHlwZVxuICogQHN1bW1hcnkgQ29uZmlndXJhdGlvbiB0eXBlIGZvciBIVFRQIGNvbm5lY3Rpb25zIHNwZWNpZnlpbmcgcHJvdG9jb2wgYW5kIGhvc3RcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEh0dHBDb25maWdcbiAqIEBwcm9wZXJ0eSB7KCdodHRwJ3wnaHR0cHMnKX0gcHJvdG9jb2wgLSBUaGUgSFRUUCBwcm90b2NvbCB0byB1c2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBob3N0IC0gVGhlIGhvc3QgYWRkcmVzc1xuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItaHR0cFxuICovXG5leHBvcnQgdHlwZSBIdHRwQ29uZmlnID0ge1xuICBwcm90b2NvbDogXCJodHRwXCIgfCBcImh0dHBzXCI7XG4gIGhvc3Q6IHN0cmluZztcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEhUVFAgZmxhZ3MgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBJbnRlcmZhY2UgZXh0ZW5kaW5nIFJlcG9zaXRvcnlGbGFncyB3aXRoIEhUVFAtc3BlY2lmaWMgb3B0aW9uc1xuICogQGludGVyZmFjZSBIdHRwRmxhZ3NcbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn0gW2hlYWRlcnNdIC0gT3B0aW9uYWwgSFRUUCBoZWFkZXJzIHRvIGluY2x1ZGUgd2l0aCByZXF1ZXN0c1xuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItaHR0cFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBGbGFncyBleHRlbmRzIFJlcG9zaXRvcnlGbGFncyB7XG4gIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuIl19