@basmilius/http-client 1.0.0

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.
Files changed (58) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +41 -0
  3. package/dist/adapter/HttpAdapter.d.ts +5 -0
  4. package/dist/adapter/index.d.ts +1 -0
  5. package/dist/basmilius.httpClient.js +1098 -0
  6. package/dist/basmilius.httpClient.js.map +7 -0
  7. package/dist/decorator/adapter.d.ts +2 -0
  8. package/dist/decorator/debounce.d.ts +1 -0
  9. package/dist/decorator/dto/arrayProxy.d.ts +18 -0
  10. package/dist/decorator/dto/classProxy.d.ts +11 -0
  11. package/dist/decorator/dto/clone.d.ts +5 -0
  12. package/dist/decorator/dto/constant.d.ts +6 -0
  13. package/dist/decorator/dto/fill.d.ts +5 -0
  14. package/dist/decorator/dto/helper/areEqual.d.ts +5 -0
  15. package/dist/decorator/dto/helper/assertDto.d.ts +5 -0
  16. package/dist/decorator/dto/helper/circularProtect.d.ts +1 -0
  17. package/dist/decorator/dto/helper/cloneDto.d.ts +4 -0
  18. package/dist/decorator/dto/helper/executeIfDtoDirtyAndMarkClean.d.ts +5 -0
  19. package/dist/decorator/dto/helper/index.d.ts +17 -0
  20. package/dist/decorator/dto/helper/instance.d.ts +2 -0
  21. package/dist/decorator/dto/helper/isDto.d.ts +5 -0
  22. package/dist/decorator/dto/helper/isDtoClean.d.ts +4 -0
  23. package/dist/decorator/dto/helper/isDtoDirty.d.ts +4 -0
  24. package/dist/decorator/dto/helper/markDtoClean.d.ts +5 -0
  25. package/dist/decorator/dto/helper/markDtoDirty.d.ts +5 -0
  26. package/dist/decorator/dto/helper/relateDtoTo.d.ts +5 -0
  27. package/dist/decorator/dto/helper/relateValueTo.d.ts +5 -0
  28. package/dist/decorator/dto/helper/trackDto.d.ts +5 -0
  29. package/dist/decorator/dto/helper/triggerDto.d.ts +6 -0
  30. package/dist/decorator/dto/helper/unrelateDtoFrom.d.ts +5 -0
  31. package/dist/decorator/dto/helper/unrelateValueFrom.d.ts +5 -0
  32. package/dist/decorator/dto/index.d.ts +11 -0
  33. package/dist/decorator/dto/instance.d.ts +31 -0
  34. package/dist/decorator/dto/instanceProxy.d.ts +24 -0
  35. package/dist/decorator/dto/refProxy.d.ts +33 -0
  36. package/dist/decorator/dto/symbols.d.ts +11 -0
  37. package/dist/decorator/dto/toJSON.d.ts +5 -0
  38. package/dist/decorator/index.d.ts +4 -0
  39. package/dist/dto/BlobResponse.d.ts +6 -0
  40. package/dist/dto/Paginated.d.ts +9 -0
  41. package/dist/dto/index.d.ts +2 -0
  42. package/dist/enum/HttpMethod.d.ts +9 -0
  43. package/dist/enum/HttpStatusCode.d.ts +63 -0
  44. package/dist/enum/index.d.ts +2 -0
  45. package/dist/http/BaseResponse.d.ts +12 -0
  46. package/dist/http/BaseService.d.ts +4 -0
  47. package/dist/http/HttpClient.d.ts +15 -0
  48. package/dist/http/IResponseErrors.d.ts +3 -0
  49. package/dist/http/QueryString.d.ts +15 -0
  50. package/dist/http/RequestBuilder.d.ts +28 -0
  51. package/dist/http/RequestError.d.ts +9 -0
  52. package/dist/http/helpers.d.ts +3 -0
  53. package/dist/http/index.d.ts +8 -0
  54. package/dist/index.d.ts +5 -0
  55. package/dist/util/datetime.d.ts +2 -0
  56. package/dist/util/index.d.ts +2 -0
  57. package/dist/util/reflection.d.ts +6 -0
  58. package/package.json +41 -0
@@ -0,0 +1,15 @@
1
+ import type { BaseResponse, RequestBuilder } from '../http';
2
+ export declare class HttpClient {
3
+ #private;
4
+ get authToken(): string | null;
5
+ set authToken(value: string | null);
6
+ get baseUrl(): string;
7
+ get timezone(): string | null;
8
+ set timezone(value: string | null);
9
+ constructor(authToken: string | null, baseUrl: string);
10
+ onException(err: unknown, caller: unknown): void;
11
+ onRequest(request: RequestBuilder): RequestBuilder;
12
+ onResponse(response: BaseResponse<unknown>): void;
13
+ static get instance(): HttpClient;
14
+ static register(client: HttpClient): void;
15
+ }
@@ -0,0 +1,3 @@
1
+ export interface IResponseErrors {
2
+ readonly [key: string]: string[];
3
+ }
@@ -0,0 +1,15 @@
1
+ export declare class QueryString {
2
+ #private;
3
+ constructor();
4
+ build(): string;
5
+ append(name: string, value: QueryStringValue): QueryString;
6
+ appendArray(name: string, values: QueryStringValue[] | null): QueryString;
7
+ delete(name: string): QueryString;
8
+ get(name: string): string | null;
9
+ getAll(name: string): string[];
10
+ has(name: string): boolean;
11
+ set(name: string, value: QueryStringValue): QueryString;
12
+ static builder(): QueryString;
13
+ }
14
+ type QueryStringValue = boolean | number | string | null;
15
+ export {};
@@ -0,0 +1,28 @@
1
+ import { BlobResponse, Paginated } from '../dto';
2
+ import { HttpMethod, HttpStatusCode } from '../enum';
3
+ import { BaseResponse, HttpClient, QueryString } from '.';
4
+ export declare class RequestBuilder {
5
+ #private;
6
+ get client(): HttpClient;
7
+ get options(): RequestInit;
8
+ get path(): string;
9
+ set path(value: string);
10
+ get query(): QueryString | null;
11
+ set query(value: QueryString | null);
12
+ constructor(path: string, client?: HttpClient);
13
+ bearerToken(token?: string): RequestBuilder;
14
+ body(body: BodyInit | FormData | object | null, contentType?: string | null): RequestBuilder;
15
+ asOrganization(value: string): RequestBuilder;
16
+ header(name: string, value: string): RequestBuilder;
17
+ method(method: HttpMethod): RequestBuilder;
18
+ queryString(queryString: QueryString): RequestBuilder;
19
+ fetch<TResult>(): Promise<TResult>;
20
+ fetchBlob(): Promise<BlobResponse>;
21
+ runAdapter<TResult extends {}>(adapterMethod: (item: object) => TResult): Promise<BaseResponse<TResult>>;
22
+ runArrayAdapter<TResult extends {}>(adapterMethod: (item: object) => TResult): Promise<BaseResponse<TResult[]>>;
23
+ runEmpty(): Promise<BaseResponse<never>>;
24
+ runPaginatedAdapter<TResult extends {}>(adapterMethod: (item: object) => TResult): Promise<BaseResponse<Paginated<TResult>>>;
25
+ runData<TResult>(): Promise<BaseResponse<TResult>>;
26
+ runDataKey<TResult extends object, TKey extends keyof TResult = keyof TResult>(key: TKey): Promise<BaseResponse<TResult[TKey]>>;
27
+ runStatusCode(): Promise<HttpStatusCode>;
28
+ }
@@ -0,0 +1,9 @@
1
+ import type { IResponseErrors } from '../http';
2
+ import { HttpStatusCode } from '../enum';
3
+ export declare class RequestError {
4
+ #private;
5
+ get errors(): IResponseErrors;
6
+ get message(): string;
7
+ get statusCode(): HttpStatusCode;
8
+ constructor(message: string, errors: IResponseErrors, statusCode: HttpStatusCode);
9
+ }
@@ -0,0 +1,3 @@
1
+ import { RequestError } from '../http';
2
+ export declare function isRequestError(obj: unknown): obj is RequestError;
3
+ export declare function isUnsanctionedRequest(statusCode: unknown): boolean;
@@ -0,0 +1,8 @@
1
+ export type { IResponseErrors } from './IResponseErrors';
2
+ export { BaseResponse } from './BaseResponse';
3
+ export { BaseService } from './BaseService';
4
+ export { HttpClient } from './HttpClient';
5
+ export { QueryString } from './QueryString';
6
+ export { RequestBuilder } from './RequestBuilder';
7
+ export { RequestError } from './RequestError';
8
+ export { isRequestError, isUnsanctionedRequest } from './helpers';
@@ -0,0 +1,5 @@
1
+ export * from './adapter';
2
+ export * from './decorator';
3
+ export * from './dto';
4
+ export * from './enum';
5
+ export * from './http';
@@ -0,0 +1,2 @@
1
+ import { DateTime } from 'luxon';
2
+ export declare function formatFileDateTime(dateTime?: DateTime): string;
@@ -0,0 +1,2 @@
1
+ export * from './datetime';
2
+ export * from './reflection';
@@ -0,0 +1,6 @@
1
+ export type Constructor<T = {}> = new (...args: any[]) => T;
2
+ export type Descriptors = Record<string | symbol, TypedPropertyDescriptor<unknown> | PropertyDescriptor>;
3
+ export declare function getPrototypeChain(obj: Function): Descriptors;
4
+ export declare function setMutableObjectValue(obj: object, key: symbol | string, value: unknown): void;
5
+ export declare function setObjectMethod(obj: Function, key: string, fn: Function): void;
6
+ export declare function setObjectValue(obj: object, key: symbol | string, value: unknown): void;
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@basmilius/http-client",
3
+ "description": "Http client for Vue projects.",
4
+ "version": "1.0.0",
5
+ "engines": {
6
+ "node": ">=20"
7
+ },
8
+ "files": [
9
+ "dist/*"
10
+ ],
11
+ "type": "module",
12
+ "main": "./dist/basmilius.httpClient.js",
13
+ "module": "./dist/basmilius.httpClient.js",
14
+ "types": "./dist/index.d.ts",
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/index.d.ts",
18
+ "default": "./dist/basmilius.httpClient.js"
19
+ }
20
+ },
21
+ "devDependencies": {
22
+ "@types/luxon": "^3.4.2",
23
+ "concurrently": "^8.2.2",
24
+ "esbuild": "^0.23.1",
25
+ "luxon": "^3.5.0",
26
+ "tsc-alias": "^1.8.10",
27
+ "typescript": "^5.5.4",
28
+ "vue": "^3.4.38"
29
+ },
30
+ "peerDependencies": {
31
+ "luxon": "^3.5.0",
32
+ "vue": "^3.4.38"
33
+ },
34
+ "scripts": {
35
+ "build": "pnpm esbuild && pnpm gentypes",
36
+ "dev": "pnpm esbuild && concurrently -k -c magenta,cyan,green -n code,types,alias 'pnpm esbuild:watch' 'tsc -w' 'tsc-alias -w'",
37
+ "esbuild": "esbuild src/index.ts --bundle --sourcemap --target=esnext --external:luxon --external:vue --platform=neutral --format=esm --outfile=dist/basmilius.httpClient.js",
38
+ "esbuild:watch": "pnpm esbuild --watch",
39
+ "gentypes": "tsc && tsc-alias"
40
+ }
41
+ }