@glubean/auth 0.1.6 → 0.1.8
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/api_key.d.ts +19 -5
- package/dist/api_key.d.ts.map +1 -1
- package/dist/api_key.js +18 -18
- package/dist/api_key.js.map +1 -1
- package/dist/basic.d.ts +14 -5
- package/dist/basic.d.ts.map +1 -1
- package/dist/basic.js +11 -15
- package/dist/basic.js.map +1 -1
- package/dist/bearer.d.ts +15 -3
- package/dist/bearer.d.ts.map +1 -1
- package/dist/bearer.js +11 -5
- package/dist/bearer.js.map +1 -1
- package/dist/oauth2.d.ts +10 -0
- package/dist/oauth2.d.ts.map +1 -1
- package/dist/oauth2.js +19 -17
- package/dist/oauth2.js.map +1 -1
- package/dist/request.d.ts +9 -0
- package/dist/request.d.ts.map +1 -0
- package/dist/request.js +21 -0
- package/dist/request.js.map +1 -0
- package/package.json +7 -2
package/dist/api_key.d.ts
CHANGED
|
@@ -1,11 +1,25 @@
|
|
|
1
1
|
import type { ConfigureHttpOptions } from "@glubean/sdk";
|
|
2
|
+
export interface ApiKeyOptions {
|
|
3
|
+
/** Base URL — literal or `{{VAR}}` reference */
|
|
4
|
+
prefixUrl: string;
|
|
5
|
+
/** Header name or query param name */
|
|
6
|
+
param: string;
|
|
7
|
+
/** API key value — literal or `{{SECRET}}` reference */
|
|
8
|
+
value: string;
|
|
9
|
+
/** Where to send the key: "header" (default) or "query" */
|
|
10
|
+
location?: "header" | "query";
|
|
11
|
+
}
|
|
2
12
|
/**
|
|
3
13
|
* API Key authentication — header or query param.
|
|
4
14
|
*
|
|
5
|
-
* @
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* // Header mode (default)
|
|
18
|
+
* apiKey({ prefixUrl: "{{BASE_URL}}", param: "X-API-Key", value: "{{API_KEY}}" })
|
|
19
|
+
*
|
|
20
|
+
* // Query param mode
|
|
21
|
+
* apiKey({ prefixUrl: "{{BASE_URL}}", param: "apiKey", value: "{{API_KEY}}", location: "query" })
|
|
22
|
+
* ```
|
|
9
23
|
*/
|
|
10
|
-
export declare function apiKey(
|
|
24
|
+
export declare function apiKey(opts: ApiKeyOptions): ConfigureHttpOptions;
|
|
11
25
|
//# sourceMappingURL=api_key.d.ts.map
|
package/dist/api_key.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api_key.d.ts","sourceRoot":"","sources":["../src/api_key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"api_key.d.ts","sourceRoot":"","sources":["../src/api_key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGzD,MAAM,WAAW,aAAa;IAC5B,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC/B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,oBAAoB,CA6BhE"}
|
package/dist/api_key.js
CHANGED
|
@@ -1,42 +1,42 @@
|
|
|
1
|
+
import { rebuildRequest } from "./request.js";
|
|
1
2
|
/**
|
|
2
3
|
* API Key authentication — header or query param.
|
|
3
4
|
*
|
|
4
|
-
* @
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* // Header mode (default)
|
|
8
|
+
* apiKey({ prefixUrl: "{{BASE_URL}}", param: "X-API-Key", value: "{{API_KEY}}" })
|
|
9
|
+
*
|
|
10
|
+
* // Query param mode
|
|
11
|
+
* apiKey({ prefixUrl: "{{BASE_URL}}", param: "apiKey", value: "{{API_KEY}}", location: "query" })
|
|
12
|
+
* ```
|
|
8
13
|
*/
|
|
9
|
-
export function apiKey(
|
|
14
|
+
export function apiKey(opts) {
|
|
15
|
+
const { prefixUrl, param, value, location = "header" } = opts;
|
|
10
16
|
if (location === "query") {
|
|
11
17
|
const MARKER = "X-Glubean-ApiKey-Query";
|
|
12
18
|
return {
|
|
13
|
-
prefixUrl
|
|
14
|
-
headers: { [MARKER]:
|
|
19
|
+
prefixUrl,
|
|
20
|
+
headers: { [MARKER]: value },
|
|
15
21
|
hooks: {
|
|
16
22
|
beforeRequest: [
|
|
17
|
-
(request) => {
|
|
23
|
+
async (request) => {
|
|
18
24
|
const keyValue = request.headers.get(MARKER);
|
|
19
25
|
if (!keyValue)
|
|
20
26
|
return request;
|
|
21
27
|
const url = new URL(request.url);
|
|
22
|
-
url.searchParams.set(
|
|
28
|
+
url.searchParams.set(param, keyValue);
|
|
23
29
|
const headers = new Headers(request.headers);
|
|
24
30
|
headers.delete(MARKER);
|
|
25
|
-
return
|
|
26
|
-
method: request.method,
|
|
27
|
-
headers,
|
|
28
|
-
body: request.body,
|
|
29
|
-
redirect: request.redirect,
|
|
30
|
-
signal: request.signal,
|
|
31
|
-
});
|
|
31
|
+
return rebuildRequest(request, headers, url);
|
|
32
32
|
},
|
|
33
33
|
],
|
|
34
34
|
},
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
37
|
return {
|
|
38
|
-
prefixUrl
|
|
39
|
-
headers: { [
|
|
38
|
+
prefixUrl,
|
|
39
|
+
headers: { [param]: value },
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
42
|
//# sourceMappingURL=api_key.js.map
|
package/dist/api_key.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api_key.js","sourceRoot":"","sources":["../src/api_key.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api_key.js","sourceRoot":"","sources":["../src/api_key.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAa9C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,MAAM,CAAC,IAAmB;IACxC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC;IAE9D,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,wBAAwB,CAAC;QACxC,OAAO;YACL,SAAS;YACT,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE;YAC5B,KAAK,EAAE;gBACL,aAAa,EAAE;oBACb,KAAK,EAAE,OAAgB,EAAoB,EAAE;wBAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;wBAC7C,IAAI,CAAC,QAAQ;4BAAE,OAAO,OAAO,CAAC;wBAE9B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;wBACjC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;wBACtC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBAC7C,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBACvB,OAAO,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;oBAC/C,CAAC;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS;QACT,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE;KAC5B,CAAC;AACJ,CAAC"}
|
package/dist/basic.d.ts
CHANGED
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
import type { ConfigureHttpOptions } from "@glubean/sdk";
|
|
2
|
+
export interface BasicAuthOptions {
|
|
3
|
+
/** Base URL — literal or `{{VAR}}` reference */
|
|
4
|
+
prefixUrl: string;
|
|
5
|
+
/** Username — literal or `{{SECRET}}` reference */
|
|
6
|
+
username: string;
|
|
7
|
+
/** Password — literal or `{{SECRET}}` reference */
|
|
8
|
+
password: string;
|
|
9
|
+
}
|
|
2
10
|
/**
|
|
3
11
|
* HTTP Basic authentication.
|
|
4
12
|
*
|
|
5
13
|
* Uses a beforeRequest hook to compute `Authorization: Basic base64(user:pass)`
|
|
6
|
-
* from resolved
|
|
14
|
+
* from resolved values.
|
|
7
15
|
*
|
|
8
|
-
* @
|
|
9
|
-
*
|
|
10
|
-
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* basicAuth({ prefixUrl: "{{BASE_URL}}", username: "{{USER}}", password: "{{PASS}}" })
|
|
19
|
+
* ```
|
|
11
20
|
*/
|
|
12
|
-
export declare function basicAuth(
|
|
21
|
+
export declare function basicAuth(opts: BasicAuthOptions): ConfigureHttpOptions;
|
|
13
22
|
//# sourceMappingURL=basic.d.ts.map
|
package/dist/basic.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../src/basic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../src/basic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGzD,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,oBAAoB,CAqBtE"}
|
package/dist/basic.js
CHANGED
|
@@ -1,23 +1,25 @@
|
|
|
1
|
+
import { rebuildRequest } from "./request.js";
|
|
1
2
|
const MARKER = "X-Glubean-Basic-Auth";
|
|
2
3
|
/**
|
|
3
4
|
* HTTP Basic authentication.
|
|
4
5
|
*
|
|
5
6
|
* Uses a beforeRequest hook to compute `Authorization: Basic base64(user:pass)`
|
|
6
|
-
* from resolved
|
|
7
|
+
* from resolved values.
|
|
7
8
|
*
|
|
8
|
-
* @
|
|
9
|
-
*
|
|
10
|
-
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* basicAuth({ prefixUrl: "{{BASE_URL}}", username: "{{USER}}", password: "{{PASS}}" })
|
|
12
|
+
* ```
|
|
11
13
|
*/
|
|
12
|
-
export function basicAuth(
|
|
14
|
+
export function basicAuth(opts) {
|
|
13
15
|
return {
|
|
14
|
-
prefixUrl:
|
|
16
|
+
prefixUrl: opts.prefixUrl,
|
|
15
17
|
headers: {
|
|
16
|
-
[MARKER]:
|
|
18
|
+
[MARKER]: `${opts.username}:${opts.password}`,
|
|
17
19
|
},
|
|
18
20
|
hooks: {
|
|
19
21
|
beforeRequest: [
|
|
20
|
-
(request) => {
|
|
22
|
+
async (request) => {
|
|
21
23
|
const credentials = request.headers.get(MARKER);
|
|
22
24
|
if (!credentials)
|
|
23
25
|
return request;
|
|
@@ -25,13 +27,7 @@ export function basicAuth(prefixUrlVar, usernameSecret, passwordSecret) {
|
|
|
25
27
|
const headers = new Headers(request.headers);
|
|
26
28
|
headers.delete(MARKER);
|
|
27
29
|
headers.set("Authorization", `Basic ${encoded}`);
|
|
28
|
-
return
|
|
29
|
-
method: request.method,
|
|
30
|
-
headers,
|
|
31
|
-
body: request.body,
|
|
32
|
-
redirect: request.redirect,
|
|
33
|
-
signal: request.signal,
|
|
34
|
-
});
|
|
30
|
+
return rebuildRequest(request, headers);
|
|
35
31
|
},
|
|
36
32
|
],
|
|
37
33
|
},
|
package/dist/basic.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basic.js","sourceRoot":"","sources":["../src/basic.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"basic.js","sourceRoot":"","sources":["../src/basic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAW9C,MAAM,MAAM,GAAG,sBAAsB,CAAC;AAEtC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CAAC,IAAsB;IAC9C,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE;YACP,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;SAC9C;QACD,KAAK,EAAE;YACL,aAAa,EAAE;gBACb,KAAK,EAAE,OAAgB,EAAoB,EAAE;oBAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAChD,IAAI,CAAC,WAAW;wBAAE,OAAO,OAAO,CAAC;oBAEjC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAC5D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC7C,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,OAAO,EAAE,CAAC,CAAC;oBACjD,OAAO,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC1C,CAAC;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
|
package/dist/bearer.d.ts
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
import type { ConfigureHttpOptions } from "@glubean/sdk";
|
|
2
|
+
export interface BearerOptions {
|
|
3
|
+
/** Base URL — literal or `{{VAR}}` reference */
|
|
4
|
+
prefixUrl: string;
|
|
5
|
+
/** Bearer token — literal or `{{SECRET}}` reference */
|
|
6
|
+
token: string;
|
|
7
|
+
}
|
|
2
8
|
/**
|
|
3
9
|
* Bearer token authentication.
|
|
4
10
|
*
|
|
5
|
-
* @
|
|
6
|
-
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* // Reference from .env.secrets
|
|
14
|
+
* bearer({ prefixUrl: "{{BASE_URL}}", token: "{{API_TOKEN}}" })
|
|
15
|
+
*
|
|
16
|
+
* // Hardcoded (quick prototyping)
|
|
17
|
+
* bearer({ prefixUrl: "https://api.example.com", token: "sk-xxx" })
|
|
18
|
+
* ```
|
|
7
19
|
*/
|
|
8
|
-
export declare function bearer(
|
|
20
|
+
export declare function bearer(opts: BearerOptions): ConfigureHttpOptions;
|
|
9
21
|
//# sourceMappingURL=bearer.d.ts.map
|
package/dist/bearer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bearer.d.ts","sourceRoot":"","sources":["../src/bearer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEzD
|
|
1
|
+
{"version":3,"file":"bearer.d.ts","sourceRoot":"","sources":["../src/bearer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,oBAAoB,CAOhE"}
|
package/dist/bearer.js
CHANGED
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Bearer token authentication.
|
|
3
3
|
*
|
|
4
|
-
* @
|
|
5
|
-
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* // Reference from .env.secrets
|
|
7
|
+
* bearer({ prefixUrl: "{{BASE_URL}}", token: "{{API_TOKEN}}" })
|
|
8
|
+
*
|
|
9
|
+
* // Hardcoded (quick prototyping)
|
|
10
|
+
* bearer({ prefixUrl: "https://api.example.com", token: "sk-xxx" })
|
|
11
|
+
* ```
|
|
6
12
|
*/
|
|
7
|
-
export function bearer(
|
|
13
|
+
export function bearer(opts) {
|
|
8
14
|
return {
|
|
9
|
-
prefixUrl:
|
|
15
|
+
prefixUrl: opts.prefixUrl,
|
|
10
16
|
headers: {
|
|
11
|
-
Authorization: `Bearer
|
|
17
|
+
Authorization: `Bearer ${opts.token}`,
|
|
12
18
|
},
|
|
13
19
|
};
|
|
14
20
|
}
|
package/dist/bearer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bearer.js","sourceRoot":"","sources":["../src/bearer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bearer.js","sourceRoot":"","sources":["../src/bearer.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,MAAM,CAAC,IAAmB;IACxC,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;SACtC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/oauth2.d.ts
CHANGED
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
import type { ConfigureHttpOptions } from "@glubean/sdk";
|
|
2
2
|
export interface OAuth2ClientCredentialsOptions {
|
|
3
|
+
/** Base URL — literal or `{{VAR}}` reference */
|
|
3
4
|
prefixUrl: string;
|
|
5
|
+
/** Token endpoint URL — literal or `{{VAR}}` reference */
|
|
4
6
|
tokenUrl: string;
|
|
7
|
+
/** Client ID — literal or `{{SECRET}}` reference */
|
|
5
8
|
clientId: string;
|
|
9
|
+
/** Client secret — literal or `{{SECRET}}` reference */
|
|
6
10
|
clientSecret: string;
|
|
11
|
+
/** OAuth2 scope (optional) */
|
|
7
12
|
scope?: string;
|
|
8
13
|
}
|
|
9
14
|
export interface OAuth2RefreshTokenOptions {
|
|
15
|
+
/** Base URL — literal or `{{VAR}}` reference */
|
|
10
16
|
prefixUrl: string;
|
|
17
|
+
/** Token endpoint URL — literal or `{{VAR}}` reference */
|
|
11
18
|
tokenUrl: string;
|
|
19
|
+
/** Refresh token — literal or `{{SECRET}}` reference */
|
|
12
20
|
refreshToken: string;
|
|
21
|
+
/** Client ID — literal or `{{SECRET}}` reference */
|
|
13
22
|
clientId: string;
|
|
23
|
+
/** Client secret — literal or `{{SECRET}}` reference (optional) */
|
|
14
24
|
clientSecret?: string;
|
|
15
25
|
}
|
|
16
26
|
declare function clientCredentials(opts: OAuth2ClientCredentialsOptions): ConfigureHttpOptions;
|
package/dist/oauth2.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth2.d.ts","sourceRoot":"","sources":["../src/oauth2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAsB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"oauth2.d.ts","sourceRoot":"","sources":["../src/oauth2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAsB,MAAM,cAAc,CAAC;AAK7E,MAAM,WAAW,8BAA8B;IAC7C,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAmBD,iBAAS,iBAAiB,CAAC,IAAI,EAAE,8BAA8B,GAAG,oBAAoB,CA+CrF;AAID,iBAAS,YAAY,CAAC,IAAI,EAAE,yBAAyB,GAAG,oBAAoB,CAiE3E;AAID,eAAO,MAAM,MAAM;;;CAAsC,CAAC"}
|
package/dist/oauth2.js
CHANGED
|
@@ -1,17 +1,9 @@
|
|
|
1
|
+
import { rebuildRequest } from "./request.js";
|
|
1
2
|
// ── Helpers ──────────────────────────────────────────────────────────────────
|
|
2
3
|
const TOKEN_URL_H = "X-Glubean-OAuth2-TokenUrl";
|
|
3
4
|
const CLIENT_ID_H = "X-Glubean-OAuth2-ClientId";
|
|
4
5
|
const CLIENT_SECRET_H = "X-Glubean-OAuth2-ClientSecret";
|
|
5
6
|
const REFRESH_TOKEN_H = "X-Glubean-OAuth2-RefreshToken";
|
|
6
|
-
function rebuildRequest(request, headers) {
|
|
7
|
-
return new Request(request.url, {
|
|
8
|
-
method: request.method,
|
|
9
|
-
headers,
|
|
10
|
-
body: request.body,
|
|
11
|
-
redirect: request.redirect,
|
|
12
|
-
signal: request.signal,
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
7
|
function cleanMarkers(request, ...names) {
|
|
16
8
|
const h = new Headers(request.headers);
|
|
17
9
|
for (const n of names)
|
|
@@ -23,9 +15,9 @@ function clientCredentials(opts) {
|
|
|
23
15
|
return {
|
|
24
16
|
prefixUrl: opts.prefixUrl,
|
|
25
17
|
headers: {
|
|
26
|
-
[TOKEN_URL_H]:
|
|
27
|
-
[CLIENT_ID_H]:
|
|
28
|
-
[CLIENT_SECRET_H]:
|
|
18
|
+
[TOKEN_URL_H]: opts.tokenUrl,
|
|
19
|
+
[CLIENT_ID_H]: opts.clientId,
|
|
20
|
+
[CLIENT_SECRET_H]: opts.clientSecret,
|
|
29
21
|
},
|
|
30
22
|
hooks: {
|
|
31
23
|
beforeRequest: [
|
|
@@ -65,12 +57,12 @@ function clientCredentials(opts) {
|
|
|
65
57
|
function refreshToken(opts) {
|
|
66
58
|
let accessToken = null;
|
|
67
59
|
const headers = {
|
|
68
|
-
[TOKEN_URL_H]:
|
|
69
|
-
[REFRESH_TOKEN_H]:
|
|
70
|
-
[CLIENT_ID_H]:
|
|
60
|
+
[TOKEN_URL_H]: opts.tokenUrl,
|
|
61
|
+
[REFRESH_TOKEN_H]: opts.refreshToken,
|
|
62
|
+
[CLIENT_ID_H]: opts.clientId,
|
|
71
63
|
};
|
|
72
64
|
if (opts.clientSecret)
|
|
73
|
-
headers[CLIENT_SECRET_H] =
|
|
65
|
+
headers[CLIENT_SECRET_H] = opts.clientSecret;
|
|
74
66
|
const allMarkers = [TOKEN_URL_H, REFRESH_TOKEN_H, CLIENT_ID_H, CLIENT_SECRET_H];
|
|
75
67
|
async function fetchToken(request) {
|
|
76
68
|
const body = new URLSearchParams({
|
|
@@ -111,7 +103,17 @@ function refreshToken(opts) {
|
|
|
111
103
|
accessToken = await fetchToken(request);
|
|
112
104
|
const h = cleanMarkers(request, ...allMarkers);
|
|
113
105
|
h.set("Authorization", `Bearer ${accessToken}`);
|
|
114
|
-
|
|
106
|
+
const bodyBuffer = request.body
|
|
107
|
+
? await request.clone().arrayBuffer()
|
|
108
|
+
: null;
|
|
109
|
+
return fetch(request.url, {
|
|
110
|
+
method: request.method,
|
|
111
|
+
headers: h,
|
|
112
|
+
body: bodyBuffer,
|
|
113
|
+
redirect: request.redirect,
|
|
114
|
+
signal: request.signal,
|
|
115
|
+
...(bodyBuffer ? { duplex: "half" } : {}),
|
|
116
|
+
});
|
|
115
117
|
},
|
|
116
118
|
],
|
|
117
119
|
},
|
package/dist/oauth2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth2.js","sourceRoot":"","sources":["../src/oauth2.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oauth2.js","sourceRoot":"","sources":["../src/oauth2.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rebuild a Request with modified URL/headers, safely handling body.
|
|
3
|
+
*
|
|
4
|
+
* Node.js 18+ requires `duplex: "half"` when body is present.
|
|
5
|
+
* ky has a known issue where `request.body` stream can be consumed,
|
|
6
|
+
* so we clone and read to ArrayBuffer first.
|
|
7
|
+
*/
|
|
8
|
+
export declare function rebuildRequest(request: Request, headers: Headers, url?: string | URL): Promise<Request>;
|
|
9
|
+
//# sourceMappingURL=request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,GACjB,OAAO,CAAC,OAAO,CAAC,CAalB"}
|
package/dist/request.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rebuild a Request with modified URL/headers, safely handling body.
|
|
3
|
+
*
|
|
4
|
+
* Node.js 18+ requires `duplex: "half"` when body is present.
|
|
5
|
+
* ky has a known issue where `request.body` stream can be consumed,
|
|
6
|
+
* so we clone and read to ArrayBuffer first.
|
|
7
|
+
*/
|
|
8
|
+
export async function rebuildRequest(request, headers, url) {
|
|
9
|
+
const bodyBuffer = request.body
|
|
10
|
+
? await request.clone().arrayBuffer()
|
|
11
|
+
: null;
|
|
12
|
+
return new Request(url ?? request.url, {
|
|
13
|
+
method: request.method,
|
|
14
|
+
headers,
|
|
15
|
+
body: bodyBuffer,
|
|
16
|
+
redirect: request.redirect,
|
|
17
|
+
signal: request.signal,
|
|
18
|
+
...(bodyBuffer ? { duplex: "half" } : {}),
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAgB,EAChB,OAAgB,EAChB,GAAkB;IAElB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI;QAC7B,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE;QACrC,CAAC,CAAC,IAAI,CAAC;IAET,OAAO,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;QACrC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO;QACP,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpC,CAAC,CAAC;AACpB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@glubean/auth",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -15,11 +15,16 @@
|
|
|
15
15
|
"access": "public"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@glubean/sdk": "0.1.
|
|
18
|
+
"@glubean/sdk": "0.1.18"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@types/node": "^22.0.0"
|
|
22
22
|
},
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "https://github.com/glubean/glubean.git",
|
|
26
|
+
"directory": "packages/auth"
|
|
27
|
+
},
|
|
23
28
|
"scripts": {
|
|
24
29
|
"build": "tsc -p tsconfig.build.json",
|
|
25
30
|
"test": "vitest run"
|