aeria-sdk 0.0.192 → 0.0.193

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,11 +1,10 @@
1
1
  export { Result, } from '@aeriajs/types';
2
2
  export { throwIfError, } from '@aeriajs/common';
3
3
  export * from './auth.js';
4
- export * from './topLevel.js';
4
+ export * from './instance.js';
5
5
  export * from './constants.js';
6
6
  export * from './http.js';
7
7
  export * from './runtime.js';
8
8
  export * from './storage.js';
9
- export * from './topLevel.js';
10
9
  export * from './types.js';
11
10
  export * from './utils.js';
package/dist/index.js CHANGED
@@ -20,11 +20,10 @@ Object.defineProperty(exports, "Result", { enumerable: true, get: function () {
20
20
  var common_1 = require("@aeriajs/common");
21
21
  Object.defineProperty(exports, "throwIfError", { enumerable: true, get: function () { return common_1.throwIfError; } });
22
22
  __exportStar(require("./auth.js"), exports);
23
- __exportStar(require("./topLevel.js"), exports);
23
+ __exportStar(require("./instance.js"), exports);
24
24
  __exportStar(require("./constants.js"), exports);
25
25
  __exportStar(require("./http.js"), exports);
26
26
  __exportStar(require("./runtime.js"), exports);
27
27
  __exportStar(require("./storage.js"), exports);
28
- __exportStar(require("./topLevel.js"), exports);
29
28
  __exportStar(require("./types.js"), exports);
30
29
  __exportStar(require("./utils.js"), exports);
package/dist/index.mjs CHANGED
@@ -6,11 +6,10 @@ export {
6
6
  throwIfError
7
7
  } from "@aeriajs/common";
8
8
  export * from "./auth.mjs";
9
- export * from "./topLevel.mjs";
9
+ export * from "./instance.mjs";
10
10
  export * from "./constants.mjs";
11
11
  export * from "./http.mjs";
12
12
  export * from "./runtime.mjs";
13
13
  export * from "./storage.mjs";
14
- export * from "./topLevel.mjs";
15
14
  export * from "./types.mjs";
16
15
  export * from "./utils.mjs";
@@ -0,0 +1,31 @@
1
+ import type { RequestTransformer, ResponseTransformer } from '@aeriajs/common';
2
+ import type { ContractWithRoles, RequestMethod, InferEndpointFunction, InferEndpointFromContract } from '@aeriajs/types';
3
+ import type { InstanceConfig } from './types.js';
4
+ export type ApiPrototype = {
5
+ [node: string]: ApiPrototype;
6
+ } | Record<RequestMethod, (payload: unknown) => Promise<unknown>>;
7
+ export type TopLevelObject = ApiPrototype & {
8
+ describe: {
9
+ POST: (...args: unknown[]) => Promise<string>;
10
+ };
11
+ };
12
+ export type ApiSchema = {
13
+ [route: string]: {
14
+ [method: RequestMethod]: ContractWithRoles;
15
+ };
16
+ };
17
+ export type MakeEndpoint<TRoute extends string, TRouteMethod extends RequestMethod, TRouteResponse = unknown, TRoutePayload = null> = TRoute extends `/${infer RouteTail}` ? MakeEndpoint<RouteTail, TRouteMethod, TRouteResponse, TRoutePayload> : TRoute extends `${infer Route}/${infer RouteTail}` ? Record<Route, MakeEndpoint<RouteTail, TRouteMethod, TRouteResponse, TRoutePayload>> : TRoute extends `(${string}` ? Record<string, Record<TRouteMethod, InferEndpointFunction<TRouteResponse, TRoutePayload>>> : Record<TRoute, Record<TRouteMethod, InferEndpointFunction<TRouteResponse, TRoutePayload>>>;
18
+ export type InstanceContext = {
19
+ interceptors: {
20
+ request?: RequestTransformer;
21
+ response?: ResponseTransformer;
22
+ };
23
+ };
24
+ export declare const interceptors: InstanceContext['interceptors'];
25
+ export declare const call: <TApiSchema extends ApiSchema>() => <TRoute extends keyof TApiSchema, TRouteMethod extends keyof TApiSchema[TRoute]>(method: TRouteMethod & string, route: TRoute & string, config: InstanceConfig, context?: InstanceContext, bearerToken?: string) => InferEndpointFromContract<TApiSchema[TRoute][TRouteMethod]>;
26
+ export declare const createInstance: <TApiPrototype extends ApiPrototype>(config: InstanceConfig, instanceContext?: {
27
+ interceptors: {
28
+ request?: RequestTransformer;
29
+ response?: ResponseTransformer;
30
+ };
31
+ }) => ((bearerToken?: string) => TApiPrototype) & ApiPrototype;
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createInstance = exports.call = exports.interceptors = void 0;
4
+ const http_js_1 = require("./http.js");
5
+ const utils_js_1 = require("./utils.js");
6
+ exports.interceptors = {};
7
+ const proxify = (config, _target, instanceContext, bearerToken, segment) => {
8
+ return new Proxy(_target, {
9
+ get: (target, key) => {
10
+ if (typeof key === 'symbol') {
11
+ return target[key];
12
+ }
13
+ const uri = segment
14
+ ? segment
15
+ : key;
16
+ const newUri = segment
17
+ ? `${segment}/${key}`
18
+ : key;
19
+ const fn = (0, exports.call)()(key, uri, config, instanceContext);
20
+ return proxify(config, fn, instanceContext, bearerToken, newUri);
21
+ },
22
+ });
23
+ };
24
+ const call = () => (method, route, config, context = {
25
+ interceptors: exports.interceptors,
26
+ }, bearerToken) => {
27
+ const { request: requestTransformer = exports.interceptors.request, response: responseTransformer = exports.interceptors.response, } = context.interceptors;
28
+ const fn = async (payload) => {
29
+ const requestConfig = {
30
+ requestTransformer,
31
+ responseTransformer,
32
+ params: {
33
+ method,
34
+ headers: {},
35
+ },
36
+ };
37
+ if (method !== 'GET' && method !== 'HEAD') {
38
+ if (payload) {
39
+ requestConfig.params.headers = {
40
+ 'content-type': 'application/json',
41
+ };
42
+ }
43
+ }
44
+ if (bearerToken) {
45
+ requestConfig.params.headers.authorization = `Bearer ${bearerToken}`;
46
+ }
47
+ const { data } = await (0, http_js_1.request)(config, `${(0, utils_js_1.publicUrl)(config)}/${route}`, payload, requestConfig);
48
+ return data;
49
+ };
50
+ return fn;
51
+ };
52
+ exports.call = call;
53
+ const createInstance = (config, instanceContext = {
54
+ interceptors: exports.interceptors,
55
+ }) => {
56
+ const fn = (bearerToken) => {
57
+ return proxify(config, {}, instanceContext, bearerToken);
58
+ };
59
+ return proxify(config, fn, instanceContext);
60
+ };
61
+ exports.createInstance = createInstance;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ import { request } from "./http.mjs";
3
+ import { publicUrl } from "./utils.mjs";
4
+ export const interceptors = {};
5
+ const proxify = (config, _target, instanceContext, bearerToken, segment) => {
6
+ return new Proxy(_target, {
7
+ get: (target, key) => {
8
+ if (typeof key === "symbol") {
9
+ return target[key];
10
+ }
11
+ const uri = segment ? segment : key;
12
+ const newUri = segment ? `${segment}/${key}` : key;
13
+ const fn = call()(key, uri, config, instanceContext);
14
+ return proxify(config, fn, instanceContext, bearerToken, newUri);
15
+ }
16
+ });
17
+ };
18
+ export const call = () => (method, route, config, context = {
19
+ interceptors
20
+ }, bearerToken) => {
21
+ const {
22
+ request: requestTransformer = interceptors.request,
23
+ response: responseTransformer = interceptors.response
24
+ } = context.interceptors;
25
+ const fn = async (payload) => {
26
+ const requestConfig = {
27
+ requestTransformer,
28
+ responseTransformer,
29
+ params: {
30
+ method,
31
+ headers: {}
32
+ }
33
+ };
34
+ if (method !== "GET" && method !== "HEAD") {
35
+ if (payload) {
36
+ requestConfig.params.headers = {
37
+ "content-type": "application/json"
38
+ };
39
+ }
40
+ }
41
+ if (bearerToken) {
42
+ requestConfig.params.headers.authorization = `Bearer ${bearerToken}`;
43
+ }
44
+ const { data } = await request(config, `${publicUrl(config)}/${route}`, payload, requestConfig);
45
+ return data;
46
+ };
47
+ return fn;
48
+ };
49
+ export const createInstance = (config, instanceContext = {
50
+ interceptors
51
+ }) => {
52
+ const fn = (bearerToken) => {
53
+ return proxify(config, {}, instanceContext, bearerToken);
54
+ };
55
+ return proxify(config, fn, instanceContext);
56
+ };
package/dist/mirror.js CHANGED
@@ -5,7 +5,7 @@ const common_1 = require("@aeriajs/common");
5
5
  const path = require("node:path");
6
6
  const promises_1 = require("node:fs/promises");
7
7
  const module_1 = require("module");
8
- const topLevel_js_1 = require("./topLevel.js");
8
+ const instance_js_1 = require("./instance.js");
9
9
  const utils_js_1 = require("./utils.js");
10
10
  const DTS_FILENAME = 'aeria-sdk.d.ts';
11
11
  const mirrorDts = (mirrorObj, config) => {
@@ -15,7 +15,6 @@ const mirrorDts = (mirrorObj, config) => {
15
15
  InferProperties,
16
16
  SchemaWithId,
17
17
  PackReferences,
18
- MakeEndpoint,
19
18
  RequestMethod,
20
19
  CollectionFunctionsSDK
21
20
 
@@ -23,7 +22,7 @@ const mirrorDts = (mirrorObj, config) => {
23
22
 
24
23
  declare type MirrorDescriptions = ${JSON.stringify(descriptions, null, 2)}\n
25
24
 
26
- declare type MirrorRouter = ${JSON.stringify(router, null, 2)}\n
25
+ declare type MirrorApiSchema = ${JSON.stringify(router, null, 2)}\n
27
26
 
28
27
  ${config.integrated
29
28
  ? ''
@@ -35,28 +34,28 @@ ${config.integrated
35
34
  }
36
35
  }\n`}
37
36
  declare module 'aeria-sdk' {
38
- import { TopLevelObject } from 'aeria-sdk'
37
+ import { TopLevelObject, MakeEndpoint } from 'aeria-sdk'
39
38
 
40
39
  type UnionToIntersection<T> = (T extends unknown ? ((x: T) => 0) : never) extends ((x: infer R) => 0)
41
40
  ? R
42
41
  : never
43
42
 
44
- type InferEndpoint<Route extends keyof MirrorRouter> = {
45
- [Method in keyof MirrorRouter[Route]]: Method extends RequestMethod
46
- ? MirrorRouter[Route][Method] extends infer Contract
43
+ type InferEndpoints<TApiSchema extends ApiSchema, TRoute extends keyof TApiSchema> = {
44
+ [Method in keyof TApiSchema[TRoute]]: Method extends RequestMethod
45
+ ? TApiSchema[TRoute][Method] extends infer Contract
47
46
  ? Contract extends
48
47
  | { response: infer RouteResponse }
49
48
  | { payload: infer RoutePayload }
50
49
  | { query: infer RoutePayload }
51
50
  ? MakeEndpoint<
52
- Route,
51
+ TRoute,
53
52
  Method,
54
53
  InferProperties<RouteResponse>,
55
54
  RoutePayload extends {}
56
55
  ? PackReferences<InferProperty<RoutePayload>>
57
56
  : undefined
58
57
  >
59
- : MakeEndpoint<Route, Method>
58
+ : MakeEndpoint<TRoute, Method>
60
59
  : never
61
60
  : never
62
61
  } extends infer Methods
@@ -64,7 +63,7 @@ declare module 'aeria-sdk' {
64
63
  : never
65
64
 
66
65
  export type Api = {
67
- [Route in keyof MirrorRouter]: Route extends \`/\${infer Coll}/\${infer Fn}\`
66
+ [Route in keyof MirrorApiSchema]: Route extends \`/\${infer Coll}/\${infer Fn}\`
68
67
  ? Coll extends keyof Collections
69
68
  ? Fn extends keyof CollectionFunctionsSDK
70
69
  ? Record<Coll, Record<
@@ -72,9 +71,9 @@ declare module 'aeria-sdk' {
72
71
  POST: CollectionFunctionsSDK<MirrorDescriptions[Coll]>[Fn]
73
72
  }
74
73
  >>
75
- : InferEndpoint<Route>
76
- : InferEndpoint<Route>
77
- : InferEndpoint<Route>
74
+ : InferEndpoints<Route>
75
+ : InferEndpoints<Route>
76
+ : InferEndpoints<Route>
78
77
  } extends infer Api
79
78
  ? UnionToIntersection<Api[keyof Api]>
80
79
  : never
@@ -85,6 +84,11 @@ declare module 'aeria-sdk' {
85
84
 
86
85
  const topLevelAeria: TopLevelAeria
87
86
 
87
+ export {
88
+ MirrorDescriptions,
89
+ MirrorApiSchema,
90
+ }
91
+
88
92
  export const url: string
89
93
  export const aeria: TopLevelAeria
90
94
  export default topLevelAeria
@@ -92,7 +96,7 @@ declare module 'aeria-sdk' {
92
96
  \n`;
93
97
  };
94
98
  const runtimeCjs = (config) => `const config = ${JSON.stringify(config)}
95
- const aeria = require('./topLevel.js').createInstance(config)
99
+ const aeria = require('./instance.js').createInstance(config)
96
100
  exports.config = config
97
101
  exports.url = '${(0, utils_js_1.publicUrl)(config)}'
98
102
  exports.aeria = aeria
@@ -101,7 +105,7 @@ exports.upload = require('./upload.js').uploader(config)
101
105
  exports.default = aeria
102
106
  \n`;
103
107
  exports.runtimeCjs = runtimeCjs;
104
- const runtimeEsm = (config) => `import { createInstance } from './topLevel.mjs'
108
+ const runtimeEsm = (config) => `import { createInstance } from './instance.mjs'
105
109
  import { getStorage } from './storage.mjs'
106
110
  import { uploader } from './upload.mjs'
107
111
  export const config = ${JSON.stringify(config)}
@@ -143,7 +147,7 @@ const writeMirrorFiles = async (mirror, config) => {
143
147
  };
144
148
  exports.writeMirrorFiles = writeMirrorFiles;
145
149
  const mirrorRemotely = async (config) => {
146
- const aeria = (0, topLevel_js_1.createInstance)(config);
150
+ const aeria = (0, instance_js_1.createInstance)(config);
147
151
  const mirror = (0, common_1.deserialize)(await aeria().describe.POST({
148
152
  router: true,
149
153
  }));
package/dist/mirror.mjs CHANGED
@@ -3,7 +3,7 @@ import { deserialize } from "@aeriajs/common";
3
3
  import * as path from "node:path";
4
4
  import { writeFile } from "node:fs/promises";
5
5
  import { createRequire } from "module";
6
- import { createInstance } from "./topLevel.mjs";
6
+ import { createInstance } from "./instance.mjs";
7
7
  import { publicUrl } from "./utils.mjs";
8
8
  const DTS_FILENAME = "aeria-sdk.d.ts";
9
9
  const mirrorDts = (mirrorObj, config) => {
@@ -16,7 +16,6 @@ const mirrorDts = (mirrorObj, config) => {
16
16
  InferProperties,
17
17
  SchemaWithId,
18
18
  PackReferences,
19
- MakeEndpoint,
20
19
  RequestMethod,
21
20
  CollectionFunctionsSDK
22
21
 
@@ -25,7 +24,7 @@ const mirrorDts = (mirrorObj, config) => {
25
24
  declare type MirrorDescriptions = ${JSON.stringify(descriptions, null, 2)}
26
25
 
27
26
 
28
- declare type MirrorRouter = ${JSON.stringify(router, null, 2)}
27
+ declare type MirrorApiSchema = ${JSON.stringify(router, null, 2)}
29
28
 
30
29
 
31
30
  ${config.integrated ? "" : `declare global {
@@ -37,28 +36,28 @@ ${config.integrated ? "" : `declare global {
37
36
  }
38
37
  `}
39
38
  declare module 'aeria-sdk' {
40
- import { TopLevelObject } from 'aeria-sdk'
39
+ import { TopLevelObject, MakeEndpoint } from 'aeria-sdk'
41
40
 
42
41
  type UnionToIntersection<T> = (T extends unknown ? ((x: T) => 0) : never) extends ((x: infer R) => 0)
43
42
  ? R
44
43
  : never
45
44
 
46
- type InferEndpoint<Route extends keyof MirrorRouter> = {
47
- [Method in keyof MirrorRouter[Route]]: Method extends RequestMethod
48
- ? MirrorRouter[Route][Method] extends infer Contract
45
+ type InferEndpoints<TApiSchema extends ApiSchema, TRoute extends keyof TApiSchema> = {
46
+ [Method in keyof TApiSchema[TRoute]]: Method extends RequestMethod
47
+ ? TApiSchema[TRoute][Method] extends infer Contract
49
48
  ? Contract extends
50
49
  | { response: infer RouteResponse }
51
50
  | { payload: infer RoutePayload }
52
51
  | { query: infer RoutePayload }
53
52
  ? MakeEndpoint<
54
- Route,
53
+ TRoute,
55
54
  Method,
56
55
  InferProperties<RouteResponse>,
57
56
  RoutePayload extends {}
58
57
  ? PackReferences<InferProperty<RoutePayload>>
59
58
  : undefined
60
59
  >
61
- : MakeEndpoint<Route, Method>
60
+ : MakeEndpoint<TRoute, Method>
62
61
  : never
63
62
  : never
64
63
  } extends infer Methods
@@ -66,7 +65,7 @@ declare module 'aeria-sdk' {
66
65
  : never
67
66
 
68
67
  export type Api = {
69
- [Route in keyof MirrorRouter]: Route extends \`/\${infer Coll}/\${infer Fn}\`
68
+ [Route in keyof MirrorApiSchema]: Route extends \`/\${infer Coll}/\${infer Fn}\`
70
69
  ? Coll extends keyof Collections
71
70
  ? Fn extends keyof CollectionFunctionsSDK
72
71
  ? Record<Coll, Record<
@@ -74,9 +73,9 @@ declare module 'aeria-sdk' {
74
73
  POST: CollectionFunctionsSDK<MirrorDescriptions[Coll]>[Fn]
75
74
  }
76
75
  >>
77
- : InferEndpoint<Route>
78
- : InferEndpoint<Route>
79
- : InferEndpoint<Route>
76
+ : InferEndpoints<Route>
77
+ : InferEndpoints<Route>
78
+ : InferEndpoints<Route>
80
79
  } extends infer Api
81
80
  ? UnionToIntersection<Api[keyof Api]>
82
81
  : never
@@ -87,6 +86,11 @@ declare module 'aeria-sdk' {
87
86
 
88
87
  const topLevelAeria: TopLevelAeria
89
88
 
89
+ export {
90
+ MirrorDescriptions,
91
+ MirrorApiSchema,
92
+ }
93
+
90
94
  export const url: string
91
95
  export const aeria: TopLevelAeria
92
96
  export default topLevelAeria
@@ -95,7 +99,7 @@ declare module 'aeria-sdk' {
95
99
  `;
96
100
  };
97
101
  export const runtimeCjs = (config) => `const config = ${JSON.stringify(config)}
98
- const aeria = require('./topLevel.mjs').createInstance(config)
102
+ const aeria = require('./instance.mjs').createInstance(config)
99
103
  exports.config = config
100
104
  exports.url = '${publicUrl(config)}'
101
105
  exports.aeria = aeria
@@ -104,7 +108,7 @@ exports.upload = require('./upload.mjs').uploader(config)
104
108
  exports.default = aeria
105
109
 
106
110
  `;
107
- export const runtimeEsm = (config) => `import { createInstance } from './topLevel.mjs'
111
+ export const runtimeEsm = (config) => `import { createInstance } from './instance.mjs'
108
112
  import { getStorage } from './storage.mjs'
109
113
  import { uploader } from './upload.mjs'
110
114
  export const config = ${JSON.stringify(config)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aeria-sdk",
3
- "version": "0.0.192",
3
+ "version": "0.0.193",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -52,8 +52,8 @@
52
52
  "@aeriajs/types": "link:../types"
53
53
  },
54
54
  "peerDependencies": {
55
- "@aeriajs/common": "^0.0.149",
56
- "@aeriajs/types": "^0.0.127"
55
+ "@aeriajs/common": "^0.0.150",
56
+ "@aeriajs/types": "^0.0.128"
57
57
  },
58
58
  "scripts": {
59
59
  "test": "echo skipping",
@@ -1,24 +0,0 @@
1
- import type { RequestTransformer, ResponseTransformer } from '@aeriajs/common';
2
- import type { RequestMethod } from '@aeriajs/types';
3
- import type { InstanceConfig } from './types.js';
4
- export type ApiPrototype = {
5
- [node: string]: ApiPrototype;
6
- } | Record<RequestMethod, (payload: unknown) => Promise<unknown>>;
7
- export type TopLevelObject = ApiPrototype & {
8
- describe: {
9
- POST: (...args: unknown[]) => Promise<string>;
10
- };
11
- };
12
- export type InstanceContext = {
13
- interceptors: {
14
- request?: RequestTransformer;
15
- response?: ResponseTransformer;
16
- };
17
- };
18
- export declare const interceptors: InstanceContext['interceptors'];
19
- export declare const createInstance: <TApiPrototype extends ApiPrototype>(config: InstanceConfig, instanceContext?: {
20
- interceptors: {
21
- request?: RequestTransformer;
22
- response?: ResponseTransformer;
23
- };
24
- }) => ((bearerToken?: string) => TApiPrototype) & ApiPrototype;
package/dist/topLevel.js DELETED
@@ -1,52 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createInstance = exports.interceptors = void 0;
4
- const http_js_1 = require("./http.js");
5
- const utils_js_1 = require("./utils.js");
6
- exports.interceptors = {};
7
- const proxify = (config, _target, instanceContext, bearerToken, parent) => {
8
- const { request: requestTransformer = exports.interceptors.request, response: responseTransformer = exports.interceptors.response, } = instanceContext.interceptors;
9
- return new Proxy(_target, {
10
- get: (target, key) => {
11
- if (typeof key === 'symbol') {
12
- return target[key];
13
- }
14
- const fn = async (payload) => {
15
- const method = key;
16
- const requestConfig = {
17
- requestTransformer,
18
- responseTransformer,
19
- params: {
20
- method,
21
- headers: {},
22
- },
23
- };
24
- if (method !== 'GET' && method !== 'HEAD') {
25
- if (payload) {
26
- requestConfig.params.headers = {
27
- 'content-type': 'application/json',
28
- };
29
- }
30
- }
31
- if (bearerToken) {
32
- requestConfig.params.headers.authorization = `Bearer ${bearerToken}`;
33
- }
34
- const response = await (0, http_js_1.request)(config, `${(0, utils_js_1.publicUrl)(config)}/${parent}`, payload, requestConfig);
35
- return response.data;
36
- };
37
- const path = parent
38
- ? `${parent}/${key}`
39
- : key;
40
- return proxify(config, fn, instanceContext, bearerToken, path);
41
- },
42
- });
43
- };
44
- const createInstance = (config, instanceContext = {
45
- interceptors: exports.interceptors,
46
- }) => {
47
- const fn = (bearerToken) => {
48
- return proxify(config, {}, instanceContext, bearerToken);
49
- };
50
- return proxify(config, fn, instanceContext);
51
- };
52
- exports.createInstance = createInstance;
package/dist/topLevel.mjs DELETED
@@ -1,55 +0,0 @@
1
- "use strict";
2
- import { request } from "./http.mjs";
3
- import { publicUrl } from "./utils.mjs";
4
- export const interceptors = {};
5
- const proxify = (config, _target, instanceContext, bearerToken, parent) => {
6
- const {
7
- request: requestTransformer = interceptors.request,
8
- response: responseTransformer = interceptors.response
9
- } = instanceContext.interceptors;
10
- return new Proxy(_target, {
11
- get: (target, key) => {
12
- if (typeof key === "symbol") {
13
- return target[key];
14
- }
15
- const fn = async (payload) => {
16
- const method = key;
17
- const requestConfig = {
18
- requestTransformer,
19
- responseTransformer,
20
- params: {
21
- method,
22
- headers: {}
23
- }
24
- };
25
- if (method !== "GET" && method !== "HEAD") {
26
- if (payload) {
27
- requestConfig.params.headers = {
28
- "content-type": "application/json"
29
- };
30
- }
31
- }
32
- if (bearerToken) {
33
- requestConfig.params.headers.authorization = `Bearer ${bearerToken}`;
34
- }
35
- const response = await request(
36
- config,
37
- `${publicUrl(config)}/${parent}`,
38
- payload,
39
- requestConfig
40
- );
41
- return response.data;
42
- };
43
- const path = parent ? `${parent}/${key}` : key;
44
- return proxify(config, fn, instanceContext, bearerToken, path);
45
- }
46
- });
47
- };
48
- export const createInstance = (config, instanceContext = {
49
- interceptors
50
- }) => {
51
- const fn = (bearerToken) => {
52
- return proxify(config, {}, instanceContext, bearerToken);
53
- };
54
- return proxify(config, fn, instanceContext);
55
- };