@dfns/sdk 0.1.0-alpha.1

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 (161) hide show
  1. package/baseAuthApi.d.ts +53 -0
  2. package/baseAuthApi.js +39 -0
  3. package/codegen/ApiKeys/ApiKeysClient.d.ts +10 -0
  4. package/codegen/ApiKeys/ApiKeysClient.js +56 -0
  5. package/codegen/ApiKeys/DelegatedApiKeysClient.d.ts +13 -0
  6. package/codegen/ApiKeys/DelegatedApiKeysClient.js +88 -0
  7. package/codegen/ApiKeys/index.d.ts +3 -0
  8. package/codegen/ApiKeys/index.js +19 -0
  9. package/codegen/ApiKeys/types.d.ts +16 -0
  10. package/codegen/ApiKeys/types.js +2 -0
  11. package/codegen/Assets/AssetsClient.d.ts +14 -0
  12. package/codegen/Assets/AssetsClient.js +105 -0
  13. package/codegen/Assets/DelegatedAssetsClient.d.ts +18 -0
  14. package/codegen/Assets/DelegatedAssetsClient.js +152 -0
  15. package/codegen/Assets/index.d.ts +3 -0
  16. package/codegen/Assets/index.js +19 -0
  17. package/codegen/Assets/types.d.ts +39 -0
  18. package/codegen/Assets/types.js +2 -0
  19. package/codegen/Auth/AuthClient.d.ts +62 -0
  20. package/codegen/Auth/AuthClient.js +667 -0
  21. package/codegen/Auth/DelegatedAuthClient.d.ts +98 -0
  22. package/codegen/Auth/DelegatedAuthClient.js +1223 -0
  23. package/codegen/Auth/index.d.ts +3 -0
  24. package/codegen/Auth/index.js +19 -0
  25. package/codegen/Auth/types.d.ts +243 -0
  26. package/codegen/Auth/types.js +2 -0
  27. package/codegen/Callbacks/CallbacksClient.d.ts +12 -0
  28. package/codegen/Callbacks/CallbacksClient.js +78 -0
  29. package/codegen/Callbacks/DelegatedCallbacksClient.d.ts +15 -0
  30. package/codegen/Callbacks/DelegatedCallbacksClient.js +110 -0
  31. package/codegen/Callbacks/index.d.ts +3 -0
  32. package/codegen/Callbacks/index.js +19 -0
  33. package/codegen/Callbacks/types.d.ts +23 -0
  34. package/codegen/Callbacks/types.js +2 -0
  35. package/codegen/Permissions/DelegatedPermissionsClient.d.ts +28 -0
  36. package/codegen/Permissions/DelegatedPermissionsClient.js +297 -0
  37. package/codegen/Permissions/PermissionsClient.d.ts +19 -0
  38. package/codegen/Permissions/PermissionsClient.js +169 -0
  39. package/codegen/Permissions/index.d.ts +3 -0
  40. package/codegen/Permissions/index.js +19 -0
  41. package/codegen/Permissions/types.d.ts +71 -0
  42. package/codegen/Permissions/types.js +2 -0
  43. package/codegen/PolicyExecution/DelegatedPolicyExecutionClient.d.ts +11 -0
  44. package/codegen/PolicyExecution/DelegatedPolicyExecutionClient.js +62 -0
  45. package/codegen/PolicyExecution/PolicyExecutionClient.d.ts +9 -0
  46. package/codegen/PolicyExecution/PolicyExecutionClient.js +46 -0
  47. package/codegen/PolicyExecution/index.d.ts +3 -0
  48. package/codegen/PolicyExecution/index.js +19 -0
  49. package/codegen/PolicyExecution/types.d.ts +16 -0
  50. package/codegen/PolicyExecution/types.js +2 -0
  51. package/codegen/PolicyManagement/DelegatedPolicyManagementClient.d.ts +31 -0
  52. package/codegen/PolicyManagement/DelegatedPolicyManagementClient.js +324 -0
  53. package/codegen/PolicyManagement/PolicyManagementClient.d.ts +21 -0
  54. package/codegen/PolicyManagement/PolicyManagementClient.js +185 -0
  55. package/codegen/PolicyManagement/index.d.ts +3 -0
  56. package/codegen/PolicyManagement/index.js +19 -0
  57. package/codegen/PolicyManagement/types.d.ts +91 -0
  58. package/codegen/PolicyManagement/types.js +2 -0
  59. package/codegen/PublicKeys/DelegatedPublicKeysClient.d.ts +21 -0
  60. package/codegen/PublicKeys/DelegatedPublicKeysClient.js +191 -0
  61. package/codegen/PublicKeys/PublicKeysClient.d.ts +16 -0
  62. package/codegen/PublicKeys/PublicKeysClient.js +130 -0
  63. package/codegen/PublicKeys/index.d.ts +3 -0
  64. package/codegen/PublicKeys/index.js +19 -0
  65. package/codegen/PublicKeys/types.d.ts +51 -0
  66. package/codegen/PublicKeys/types.js +2 -0
  67. package/codegen/Wallets/DelegatedWalletsClient.d.ts +26 -0
  68. package/codegen/Wallets/DelegatedWalletsClient.js +249 -0
  69. package/codegen/Wallets/WalletsClient.d.ts +21 -0
  70. package/codegen/Wallets/WalletsClient.js +188 -0
  71. package/codegen/Wallets/index.d.ts +3 -0
  72. package/codegen/Wallets/index.js +19 -0
  73. package/codegen/Wallets/types.d.ts +87 -0
  74. package/codegen/Wallets/types.js +2 -0
  75. package/codegen/datamodel/ApiKeys/errors.d.ts +6 -0
  76. package/codegen/datamodel/ApiKeys/errors.js +15 -0
  77. package/codegen/datamodel/ApiKeys/index.d.ts +3 -0
  78. package/codegen/datamodel/ApiKeys/index.js +19 -0
  79. package/codegen/datamodel/ApiKeys/responses.d.ts +25 -0
  80. package/codegen/datamodel/ApiKeys/responses.js +2 -0
  81. package/codegen/datamodel/ApiKeys/types.d.ts +32 -0
  82. package/codegen/datamodel/ApiKeys/types.js +11 -0
  83. package/codegen/datamodel/Assets/errors.d.ts +11 -0
  84. package/codegen/datamodel/Assets/errors.js +17 -0
  85. package/codegen/datamodel/Assets/index.d.ts +3 -0
  86. package/codegen/datamodel/Assets/index.js +19 -0
  87. package/codegen/datamodel/Assets/responses.d.ts +45 -0
  88. package/codegen/datamodel/Assets/responses.js +2 -0
  89. package/codegen/datamodel/Assets/types.d.ts +225 -0
  90. package/codegen/datamodel/Assets/types.js +75 -0
  91. package/codegen/datamodel/Auth/index.d.ts +2 -0
  92. package/codegen/datamodel/Auth/index.js +18 -0
  93. package/codegen/datamodel/Auth/responses.d.ts +348 -0
  94. package/codegen/datamodel/Auth/responses.js +2 -0
  95. package/codegen/datamodel/Auth/types.d.ts +610 -0
  96. package/codegen/datamodel/Auth/types.js +127 -0
  97. package/codegen/datamodel/Callbacks/index.d.ts +2 -0
  98. package/codegen/datamodel/Callbacks/index.js +18 -0
  99. package/codegen/datamodel/Callbacks/responses.d.ts +36 -0
  100. package/codegen/datamodel/Callbacks/responses.js +2 -0
  101. package/codegen/datamodel/Callbacks/types.d.ts +43 -0
  102. package/codegen/datamodel/Callbacks/types.js +39 -0
  103. package/codegen/datamodel/Foundations/errors.d.ts +121 -0
  104. package/codegen/datamodel/Foundations/errors.js +169 -0
  105. package/codegen/datamodel/Foundations/index.d.ts +2 -0
  106. package/codegen/datamodel/Foundations/index.js +18 -0
  107. package/codegen/datamodel/Foundations/types.d.ts +9754 -0
  108. package/codegen/datamodel/Foundations/types.js +57741 -0
  109. package/codegen/datamodel/Permissions/index.d.ts +2 -0
  110. package/codegen/datamodel/Permissions/index.js +18 -0
  111. package/codegen/datamodel/Permissions/responses.d.ts +75 -0
  112. package/codegen/datamodel/Permissions/responses.js +2 -0
  113. package/codegen/datamodel/Permissions/types.d.ts +106 -0
  114. package/codegen/datamodel/Permissions/types.js +65 -0
  115. package/codegen/datamodel/PolicyExecution/errors.d.ts +11 -0
  116. package/codegen/datamodel/PolicyExecution/errors.js +17 -0
  117. package/codegen/datamodel/PolicyExecution/index.d.ts +3 -0
  118. package/codegen/datamodel/PolicyExecution/index.js +19 -0
  119. package/codegen/datamodel/PolicyExecution/responses.d.ts +17 -0
  120. package/codegen/datamodel/PolicyExecution/responses.js +2 -0
  121. package/codegen/datamodel/PolicyExecution/types.d.ts +45 -0
  122. package/codegen/datamodel/PolicyExecution/types.js +15 -0
  123. package/codegen/datamodel/PolicyManagement/index.d.ts +2 -0
  124. package/codegen/datamodel/PolicyManagement/index.js +18 -0
  125. package/codegen/datamodel/PolicyManagement/responses.d.ts +83 -0
  126. package/codegen/datamodel/PolicyManagement/responses.js +2 -0
  127. package/codegen/datamodel/PolicyManagement/types.d.ts +252 -0
  128. package/codegen/datamodel/PolicyManagement/types.js +81 -0
  129. package/codegen/datamodel/PublicKeys/index.d.ts +2 -0
  130. package/codegen/datamodel/PublicKeys/index.js +18 -0
  131. package/codegen/datamodel/PublicKeys/responses.d.ts +56 -0
  132. package/codegen/datamodel/PublicKeys/responses.js +2 -0
  133. package/codegen/datamodel/PublicKeys/types.d.ts +222 -0
  134. package/codegen/datamodel/PublicKeys/types.js +59 -0
  135. package/codegen/datamodel/Wallets/index.d.ts +2 -0
  136. package/codegen/datamodel/Wallets/index.js +18 -0
  137. package/codegen/datamodel/Wallets/responses.d.ts +77 -0
  138. package/codegen/datamodel/Wallets/responses.js +2 -0
  139. package/codegen/datamodel/Wallets/types.d.ts +261 -0
  140. package/codegen/datamodel/Wallets/types.js +89 -0
  141. package/dfnsApiClient.d.ts +27 -0
  142. package/dfnsApiClient.js +45 -0
  143. package/dfnsAuthenticator.d.ts +11 -0
  144. package/dfnsAuthenticator.js +18 -0
  145. package/dfnsDelegatedApiClient.d.ts +24 -0
  146. package/dfnsDelegatedApiClient.js +41 -0
  147. package/dfnsError.d.ts +5 -0
  148. package/dfnsError.js +11 -0
  149. package/index.d.ts +3 -0
  150. package/index.js +19 -0
  151. package/package.json +11 -0
  152. package/signer.d.ts +47 -0
  153. package/signer.js +2 -0
  154. package/utils/base64.d.ts +3 -0
  155. package/utils/base64.js +20 -0
  156. package/utils/fetch.d.ts +12 -0
  157. package/utils/fetch.js +89 -0
  158. package/utils/nonce.d.ts +1 -0
  159. package/utils/nonce.js +12 -0
  160. package/utils/url.d.ts +4 -0
  161. package/utils/url.js +15 -0
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DfnsDelegatedApiClient = void 0;
4
+ const ApiKeys_1 = require("./codegen/ApiKeys");
5
+ const Assets_1 = require("./codegen/Assets");
6
+ const Callbacks_1 = require("./codegen/Callbacks");
7
+ const Permissions_1 = require("./codegen/Permissions");
8
+ const PolicyExecution_1 = require("./codegen/PolicyExecution");
9
+ const PolicyManagement_1 = require("./codegen/PolicyManagement");
10
+ const PublicKeys_1 = require("./codegen/PublicKeys");
11
+ const Wallets_1 = require("./codegen/Wallets");
12
+ class DfnsDelegatedApiClient {
13
+ constructor(apiOptions) {
14
+ this.apiOptions = apiOptions;
15
+ }
16
+ get apiKeys() {
17
+ return new ApiKeys_1.DelegatedApiKeysClient(this.apiOptions);
18
+ }
19
+ get assets() {
20
+ return new Assets_1.DelegatedAssetsClient(this.apiOptions);
21
+ }
22
+ get callbacks() {
23
+ return new Callbacks_1.DelegatedCallbacksClient(this.apiOptions);
24
+ }
25
+ get permissions() {
26
+ return new Permissions_1.DelegatedPermissionsClient(this.apiOptions);
27
+ }
28
+ get policyExecution() {
29
+ return new PolicyExecution_1.DelegatedPolicyExecutionClient(this.apiOptions);
30
+ }
31
+ get policyManagement() {
32
+ return new PolicyManagement_1.DelegatedPolicyManagementClient(this.apiOptions);
33
+ }
34
+ get publicKeys() {
35
+ return new PublicKeys_1.DelegatedPublicKeysClient(this.apiOptions);
36
+ }
37
+ get wallets() {
38
+ return new Wallets_1.DelegatedWalletsClient(this.apiOptions);
39
+ }
40
+ }
41
+ exports.DfnsDelegatedApiClient = DfnsDelegatedApiClient;
package/dfnsError.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export declare class DfnsError extends Error {
2
+ httpStatus: number;
3
+ context?: unknown;
4
+ constructor(httpStatus: number, message: string, context?: unknown);
5
+ }
package/dfnsError.js ADDED
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DfnsError = void 0;
4
+ class DfnsError extends Error {
5
+ constructor(httpStatus, message, context) {
6
+ super(message);
7
+ this.httpStatus = httpStatus;
8
+ this.context = context;
9
+ }
10
+ }
11
+ exports.DfnsError = DfnsError;
package/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './dfnsApiClient';
2
+ export * from './dfnsAuthenticator';
3
+ export * from './dfnsError';
package/index.js ADDED
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./dfnsApiClient"), exports);
18
+ __exportStar(require("./dfnsAuthenticator"), exports);
19
+ __exportStar(require("./dfnsError"), exports);
package/package.json ADDED
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "@dfns/sdk",
3
+ "version": "0.1.0-alpha.1",
4
+ "dependencies": {
5
+ "buffer": "^6.0.3",
6
+ "cross-fetch": "^3.1.6",
7
+ "uuid": "9.0.0"
8
+ },
9
+ "main": "./index.js",
10
+ "types": "./index.d.ts"
11
+ }
package/signer.d.ts ADDED
@@ -0,0 +1,47 @@
1
+ export type CredentialTransport = 'usb' | 'nfc' | 'ble' | 'internal';
2
+ export type AllowCredential = {
3
+ type: 'public-key';
4
+ id: string;
5
+ transports: CredentialTransport[];
6
+ };
7
+ export type KeyAssertion = {
8
+ credId: string;
9
+ clientData: string;
10
+ signature: string;
11
+ };
12
+ export type Fido2Assertion = {
13
+ credId: string;
14
+ clientData: string;
15
+ authenticatorData: string;
16
+ signature: string;
17
+ userHandle?: string;
18
+ };
19
+ export type FirstFactorAssertion = {
20
+ kind: 'Key';
21
+ credentialAssertion: KeyAssertion;
22
+ } | {
23
+ kind: 'Fido2';
24
+ credentialAssertion: Fido2Assertion;
25
+ } | {
26
+ kind: 'Password';
27
+ password: string;
28
+ };
29
+ export type SecondFactorAssertion = {
30
+ kind: 'Key';
31
+ credentialAssertion: KeyAssertion;
32
+ } | {
33
+ kind: 'Fido2';
34
+ credentialAssertion: Fido2Assertion;
35
+ } | {
36
+ kind: 'Totp';
37
+ otpCode: string;
38
+ };
39
+ export interface Signer {
40
+ sign(challenge: string, allowCredentials: {
41
+ key: AllowCredential[];
42
+ webauthn: AllowCredential[];
43
+ }): Promise<{
44
+ firstFactor: FirstFactorAssertion;
45
+ secondFactor?: SecondFactorAssertion;
46
+ }>;
47
+ }
package/signer.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ import { Buffer } from 'buffer';
2
+ export declare const toBase64Url: (buffer: string | Buffer) => string;
3
+ export declare const fromBase64Url: (encoded: string) => Buffer;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fromBase64Url = exports.toBase64Url = void 0;
4
+ const buffer_1 = require("buffer");
5
+ const toBase64Url = (buffer) => {
6
+ if (typeof buffer === 'string') {
7
+ buffer = buffer_1.Buffer.from(buffer);
8
+ }
9
+ return buffer.toString('base64').replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_');
10
+ };
11
+ exports.toBase64Url = toBase64Url;
12
+ const fromBase64Url = (encoded) => {
13
+ const padLength = 4 - (encoded.length % 4);
14
+ if (padLength < 4) {
15
+ encoded += '='.repeat(padLength);
16
+ }
17
+ encoded = encoded.replace(/\-/g, '+').replace(/_/g, '/');
18
+ return buffer_1.Buffer.from(encoded, 'base64');
19
+ };
20
+ exports.fromBase64Url = fromBase64Url;
@@ -0,0 +1,12 @@
1
+ import { DfnsBaseApiOptions } from '../baseAuthApi';
2
+ import { DfnsApiClientOptions } from '../dfnsApiClient';
3
+ export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';
4
+ export type FetchOptions<T> = {
5
+ method: HttpMethod;
6
+ headers?: Record<string, string>;
7
+ body?: string | unknown;
8
+ apiOptions: T;
9
+ };
10
+ export type Fetch<T> = (resource: string | URL, options: FetchOptions<T>) => Promise<Response>;
11
+ export declare const simpleFetch: Fetch<DfnsBaseApiOptions>;
12
+ export declare const userActionFetch: Fetch<DfnsApiClientOptions>;
package/utils/fetch.js ADDED
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.userActionFetch = exports.simpleFetch = void 0;
4
+ const cross_fetch_1 = require("cross-fetch");
5
+ const dfnsError_1 = require("../dfnsError");
6
+ const baseAuthApi_1 = require("../baseAuthApi");
7
+ const nonce_1 = require("./nonce");
8
+ const fullUrl = (fetch) => {
9
+ return async (resource, options) => {
10
+ const { baseUrl } = options.apiOptions;
11
+ resource = new URL(resource, baseUrl);
12
+ return fetch(resource, options);
13
+ };
14
+ };
15
+ const jsonSerializer = (fetch) => {
16
+ return async (resource, options) => {
17
+ var _a;
18
+ if (options.body) {
19
+ options.body = JSON.stringify(options.body);
20
+ options.headers = {
21
+ 'content-type': 'application/json',
22
+ ...((_a = options.headers) !== null && _a !== void 0 ? _a : {}),
23
+ };
24
+ }
25
+ return fetch(resource, options);
26
+ };
27
+ };
28
+ const errorHandler = (fetch) => {
29
+ return async (resource, options) => {
30
+ const response = await fetch(resource, options);
31
+ if (response.ok) {
32
+ return response;
33
+ }
34
+ else {
35
+ const body = await response.json();
36
+ throw new dfnsError_1.DfnsError(response.status, body.message, body);
37
+ }
38
+ };
39
+ };
40
+ const dfnsAuth = (fetch) => {
41
+ return async (resource, options) => {
42
+ var _a;
43
+ const { appId, appSecret, accessToken } = options.apiOptions;
44
+ const authorization = accessToken
45
+ ? {
46
+ authorization: `Bearer ${accessToken}`,
47
+ }
48
+ : {};
49
+ const dfnsAppSecret = appSecret
50
+ ? {
51
+ 'x-dfns-appsecret': appSecret,
52
+ }
53
+ : {};
54
+ options.headers = {
55
+ 'x-dfns-appid': appId,
56
+ 'x-dfns-nonce': (0, nonce_1.generateNonce)(),
57
+ ...dfnsAppSecret,
58
+ ...authorization,
59
+ ...((_a = options.headers) !== null && _a !== void 0 ? _a : {}),
60
+ };
61
+ return fetch(resource, options);
62
+ };
63
+ };
64
+ const userAction = (fetch) => {
65
+ return async (resource, options) => {
66
+ var _a, _b;
67
+ if (options.method !== 'GET') {
68
+ const { challenge, challengeIdentifier, allowCredentials } = await baseAuthApi_1.BaseAuthApi.createUserActionChallenge({
69
+ userActionPayload: (_a = options.body) !== null && _a !== void 0 ? _a : '',
70
+ userActionHttpMethod: options.method,
71
+ userActionHttpPath: resource.pathname,
72
+ userActionServerKind: 'Api',
73
+ }, options.apiOptions);
74
+ const { signer } = options.apiOptions;
75
+ const assertions = await signer.sign(challenge, allowCredentials);
76
+ const { userAction } = await baseAuthApi_1.BaseAuthApi.signUserActionChallenge({
77
+ challengeIdentifier,
78
+ ...assertions,
79
+ }, options.apiOptions);
80
+ options.headers = {
81
+ 'x-dfns-useraction': userAction,
82
+ ...((_b = options.headers) !== null && _b !== void 0 ? _b : {}),
83
+ };
84
+ }
85
+ return fetch(resource, options);
86
+ };
87
+ };
88
+ exports.simpleFetch = fullUrl(jsonSerializer(dfnsAuth(errorHandler(cross_fetch_1.fetch))));
89
+ exports.userActionFetch = fullUrl(jsonSerializer(dfnsAuth(userAction(errorHandler(cross_fetch_1.fetch)))));
@@ -0,0 +1 @@
1
+ export declare const generateNonce: () => string;
package/utils/nonce.js ADDED
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateNonce = void 0;
4
+ const uuid_1 = require("uuid");
5
+ const base64_1 = require("./base64");
6
+ const generateNonce = () => {
7
+ return (0, base64_1.toBase64Url)(JSON.stringify({
8
+ uuid: (0, uuid_1.v4)(),
9
+ date: new Date().toISOString(),
10
+ }));
11
+ };
12
+ exports.generateNonce = generateNonce;
package/utils/url.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export declare const buildPathAndQuery: (pattern: string, params: {
2
+ path: Record<string, string>;
3
+ query: Record<string, string | number | boolean | undefined>;
4
+ }) => string;
package/utils/url.js ADDED
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildPathAndQuery = void 0;
4
+ const buildPathAndQuery = (pattern, params) => {
5
+ let path = pattern;
6
+ for (const key in params.path) {
7
+ path = path.replace(new RegExp(`:${key}`, 'g'), encodeURIComponent(params.path[key]));
8
+ }
9
+ const query = Object.entries(params.query)
10
+ .filter(([_, value]) => !!value)
11
+ .map(([key, value]) => `${key}=${encodeURIComponent(value.toString())}`)
12
+ .join('&');
13
+ return query === '' ? path : `${path}?${query}`;
14
+ };
15
+ exports.buildPathAndQuery = buildPathAndQuery;