@relkit/better-auth 0.7.4 → 0.7.7
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 +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/openapi-projection.d.ts +16 -0
- package/dist/openapi-projection.d.ts.map +1 -0
- package/dist/openapi-projection.js +123 -0
- package/dist/openapi-projection.js.map +1 -0
- package/dist/openapi.d.ts +33 -0
- package/dist/openapi.d.ts.map +1 -0
- package/dist/openapi.js +46 -0
- package/dist/openapi.js.map +1 -0
- package/package.json +6 -6
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { BetterAuthServiceDescriptor, BetterAuthServiceOptions } from "./au
|
|
|
3
3
|
import { BETTER_AUTH_HANDLER } from "./symbols.js";
|
|
4
4
|
export { activateBetterAuthService };
|
|
5
5
|
export { BETTER_AUTH_HANDLER };
|
|
6
|
+
export { generateBetterAuthOpenApi } from "./openapi.js";
|
|
6
7
|
export { AuthFailure } from "./auth.errors.js";
|
|
7
8
|
export { AuthFactory, authFactoryLiveLayer } from "./auth.factory.js";
|
|
8
9
|
export { AuthService, authServiceLayer, authLiveLayer } from "./auth.service.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAkB,MAAM,iBAAiB,CAAC;AAE5E,OAAO,KAAK,EAGV,2BAA2B,EAC3B,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAuB,MAAM,cAAc,CAAC;AAExE,OAAO,EAAE,yBAAyB,EAAE,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACjF,YAAY,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,YAAY,EACV,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,CAAC,OAAO,SAAS,wBAAwB,EACpF,OAAO,EAAE,OAAO,GACf,2BAA2B,CAAC,OAAO,CAAC,CA6BtC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAkB,MAAM,iBAAiB,CAAC;AAE5E,OAAO,KAAK,EAGV,2BAA2B,EAC3B,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAuB,MAAM,cAAc,CAAC;AAExE,OAAO,EAAE,yBAAyB,EAAE,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACjF,YAAY,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,YAAY,EACV,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,CAAC,OAAO,SAAS,wBAAwB,EACpF,OAAO,EAAE,OAAO,GACf,2BAA2B,CAAC,OAAO,CAAC,CA6BtC"}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ import { AuthService } from "./auth.service.js";
|
|
|
7
7
|
import { BETTER_AUTH_HANDLER, BETTER_AUTH_RUNTIME } from "./symbols.js";
|
|
8
8
|
export { activateBetterAuthService };
|
|
9
9
|
export { BETTER_AUTH_HANDLER };
|
|
10
|
+
export { generateBetterAuthOpenApi } from "./openapi.js";
|
|
10
11
|
export { AuthFailure } from "./auth.errors.js";
|
|
11
12
|
export { AuthFactory, authFactoryLiveLayer } from "./auth.factory.js";
|
|
12
13
|
export { AuthService, authServiceLayer, authLiveLayer } from "./auth.service.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4GAA4G;AAC5G,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EAAE,yBAAyB,EAAE,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAajF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAgB;IAEhB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAC3E,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;IACvE,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;QACpC,MAAM,IAAI,SAAS,CAAC,iEAAiE,CAAC,CAAC;IACzF,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;QACpC,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAC;IAC5E,MAAM,OAAO,GAA+B,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAC/E,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,OAAgB,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;QACjC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,QAAQ,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACrF,OAAO,cAAc,CACnB,KAAK,EACL,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAC5D,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,EAC1B,cAAc,CACf,CAAC;IACJ,CAAC,CAA0D,CAAC;IAC5D,MAAM,UAAU,GAAG;QACjB,GAAG,oBAAoB,CAAC,SAAS,EAAE,qBAAqB,EAAE,CAAC;QAC3D,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAsB,EAAE,CAAC;QAC3D,OAAO;KACR,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,mBAAmB,EAAE;QAClD,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;KACnE,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,mBAAmB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAyC,CAAC;AAC3E,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4GAA4G;AAC5G,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EAAE,yBAAyB,EAAE,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAajF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAgB;IAEhB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAC3E,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;IACvE,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;QACpC,MAAM,IAAI,SAAS,CAAC,iEAAiE,CAAC,CAAC;IACzF,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;QACpC,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAC;IAC5E,MAAM,OAAO,GAA+B,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAC/E,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,OAAgB,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;QACjC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,QAAQ,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACrF,OAAO,cAAc,CACnB,KAAK,EACL,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAC5D,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,EAC1B,cAAc,CACf,CAAC;IACJ,CAAC,CAA0D,CAAC;IAC5D,MAAM,UAAU,GAAG;QACjB,GAAG,oBAAoB,CAAC,SAAS,EAAE,qBAAqB,EAAE,CAAC;QAC3D,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAsB,EAAE,CAAC;QAC3D,OAAO;KACR,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,mBAAmB,EAAE;QAClD,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;KACnE,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,mBAAmB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAyC,CAAC;AAC3E,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates native schema JSON, prefixes mounted paths and component identities,
|
|
3
|
+
* and removes token requirements from browser-session documentation. This pure
|
|
4
|
+
* projection is called by AuthOpenApi; malformed metadata throws at that adapter.
|
|
5
|
+
*/
|
|
6
|
+
import { type JsonValue } from "@relkit/contracts";
|
|
7
|
+
/**
|
|
8
|
+
* Detaches and projects one native OpenAPI document without changing SDK metadata.
|
|
9
|
+
* @typeParam Input - Foreign JSON result narrowed before projection.
|
|
10
|
+
* @param document - Native generator output, validated as JSON before property access.
|
|
11
|
+
* @param basePath - Configured mount; defaults to the SDK's `/api/auth` path.
|
|
12
|
+
* @returns Mounted paths, renamed components and the Authentication tag.
|
|
13
|
+
* @throws TypeError When the metadata is not JSON or lacks paths.
|
|
14
|
+
*/
|
|
15
|
+
export declare function projectAuthOpenApi<Input>(document: Input, basePath?: string): JsonValue;
|
|
16
|
+
//# sourceMappingURL=openapi-projection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi-projection.d.ts","sourceRoot":"","sources":["../src/openapi-projection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEpE;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,SAAc,GAAG,SAAS,CAoB5F"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates native schema JSON, prefixes mounted paths and component identities,
|
|
3
|
+
* and removes token requirements from browser-session documentation. This pure
|
|
4
|
+
* projection is called by AuthOpenApi; malformed metadata throws at that adapter.
|
|
5
|
+
*/
|
|
6
|
+
import { assertJsonValue } from "@relkit/contracts";
|
|
7
|
+
/**
|
|
8
|
+
* Detaches and projects one native OpenAPI document without changing SDK metadata.
|
|
9
|
+
* @typeParam Input - Foreign JSON result narrowed before projection.
|
|
10
|
+
* @param document - Native generator output, validated as JSON before property access.
|
|
11
|
+
* @param basePath - Configured mount; defaults to the SDK's `/api/auth` path.
|
|
12
|
+
* @returns Mounted paths, renamed components and the Authentication tag.
|
|
13
|
+
* @throws TypeError When the metadata is not JSON or lacks paths.
|
|
14
|
+
*/
|
|
15
|
+
export function projectAuthOpenApi(document, basePath = "/api/auth") {
|
|
16
|
+
assertJsonValue(document);
|
|
17
|
+
if (!isRecord(document) || !isRecord(document.paths))
|
|
18
|
+
throw new TypeError("Better Auth generated an invalid OpenAPI document");
|
|
19
|
+
const names = new Map();
|
|
20
|
+
const components = renameComponents(document.components, names);
|
|
21
|
+
const paths = Object.fromEntries(Object.entries(document.paths).map(([path, item]) => [
|
|
22
|
+
`${basePath.replace(/\/$/, "")}${path}`,
|
|
23
|
+
projectPath(item, path),
|
|
24
|
+
]));
|
|
25
|
+
return rewriteReferences({
|
|
26
|
+
paths,
|
|
27
|
+
components,
|
|
28
|
+
tags: [{ name: "Authentication", description: "Better Auth core and plugin endpoints." }],
|
|
29
|
+
}, names);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Renames component keys and records their JSON pointer substitutions.
|
|
33
|
+
* @param components - Optional native component categories.
|
|
34
|
+
* @param names - Map populated before any references are rewritten.
|
|
35
|
+
* @returns Component categories excluding the SDK's token security scheme.
|
|
36
|
+
*/
|
|
37
|
+
function renameComponents(components, names) {
|
|
38
|
+
if (!isRecord(components))
|
|
39
|
+
return {};
|
|
40
|
+
return Object.fromEntries(Object.entries(components)
|
|
41
|
+
.filter(([category]) => category !== "securitySchemes")
|
|
42
|
+
.map(([category, entries]) => [
|
|
43
|
+
category,
|
|
44
|
+
!isRecord(entries)
|
|
45
|
+
? entries
|
|
46
|
+
: Object.fromEntries(Object.entries(entries).map(([name, schema]) => {
|
|
47
|
+
const key = `BetterAuth${name}`;
|
|
48
|
+
names.set(`#/components/${category}/${name}`, `#/components/${category}/${key}`);
|
|
49
|
+
return [key, schema];
|
|
50
|
+
})),
|
|
51
|
+
]));
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Retains path metadata while explicitly overriding inherited token security.
|
|
55
|
+
* @param item - Native path item, including any non-operation metadata.
|
|
56
|
+
* @param path - Original endpoint path used for a stable fallback operation ID.
|
|
57
|
+
* @returns Operations grouped under Authentication with browser-session policy.
|
|
58
|
+
*/
|
|
59
|
+
function projectPath(item, path) {
|
|
60
|
+
if (!isRecord(item))
|
|
61
|
+
return item;
|
|
62
|
+
const methods = new Set(["get", "put", "post", "delete", "options", "head", "patch", "trace"]);
|
|
63
|
+
return Object.fromEntries(Object.entries(item).map(([method, operation]) => {
|
|
64
|
+
if (!methods.has(method) || !isRecord(operation))
|
|
65
|
+
return [method, operation];
|
|
66
|
+
return [
|
|
67
|
+
method,
|
|
68
|
+
{
|
|
69
|
+
...operation,
|
|
70
|
+
// An absent field inherits application-level security, even for signup.
|
|
71
|
+
security: [],
|
|
72
|
+
operationId: `betterAuth.${String(operation.operationId ?? `${method}.${path}`)}`,
|
|
73
|
+
tags: [
|
|
74
|
+
"Authentication",
|
|
75
|
+
...(Array.isArray(operation.tags)
|
|
76
|
+
? operation.tags.filter((tag) => tag !== "Default" && tag !== "Authentication")
|
|
77
|
+
: []),
|
|
78
|
+
],
|
|
79
|
+
},
|
|
80
|
+
];
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Rewrites references while retaining identical strings in descriptions/examples.
|
|
85
|
+
* @param value - Detached document subtree.
|
|
86
|
+
* @param names - Complete component pointer substitutions.
|
|
87
|
+
* @returns Recursively copied JSON with only reference values replaced.
|
|
88
|
+
*/
|
|
89
|
+
function rewriteReferences(value, names) {
|
|
90
|
+
if (Array.isArray(value))
|
|
91
|
+
return value.map((entry) => rewriteReferences(entry, names));
|
|
92
|
+
if (!isRecord(value))
|
|
93
|
+
return value;
|
|
94
|
+
return Object.fromEntries(Object.entries(value).map(([key, entry]) => {
|
|
95
|
+
if (key === "$ref" && typeof entry === "string")
|
|
96
|
+
return [key, names.get(entry) ?? entry];
|
|
97
|
+
if (key === "discriminator" && isRecord(entry))
|
|
98
|
+
return [key, rewriteDiscriminator(entry, names)];
|
|
99
|
+
return [key, rewriteReferences(entry, names)];
|
|
100
|
+
}));
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Projects schema discriminator mappings, whose values are references without a $ref key.
|
|
104
|
+
* @param discriminator - Native discriminator metadata.
|
|
105
|
+
* @param names - Complete component pointer substitutions.
|
|
106
|
+
* @returns Detached discriminator with namespaced mapping targets.
|
|
107
|
+
*/
|
|
108
|
+
function rewriteDiscriminator(discriminator, names) {
|
|
109
|
+
if (!isRecord(discriminator.mapping))
|
|
110
|
+
return discriminator;
|
|
111
|
+
return {
|
|
112
|
+
...discriminator,
|
|
113
|
+
mapping: Object.fromEntries(Object.entries(discriminator.mapping).map(([tag, target]) => [
|
|
114
|
+
tag,
|
|
115
|
+
typeof target === "string" ? (names.get(target) ?? target) : target,
|
|
116
|
+
])),
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/** Recognizes JSON objects before reading their properties. */
|
|
120
|
+
function isRecord(value) {
|
|
121
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=openapi-projection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi-projection.js","sourceRoot":"","sources":["../src/openapi-projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { JsonValue } from "@relkit/contracts";
|
|
2
|
+
import type { Auth } from "better-auth";
|
|
3
|
+
import { Context, Effect } from "effect";
|
|
4
|
+
import { AuthFailure } from "./auth.errors.js";
|
|
5
|
+
declare const AuthOpenApi_base: Context.ServiceClass<AuthOpenApi, "relkit/AuthOpenApi", {
|
|
6
|
+
/**
|
|
7
|
+
* Generates native metadata at execution without installing public plugin routes.
|
|
8
|
+
* @returns Mounted JSON metadata, or AuthFailure retaining its original SDK/projection cause.
|
|
9
|
+
*/
|
|
10
|
+
readonly generate: () => Effect.Effect<JsonValue, AuthFailure>;
|
|
11
|
+
}> & {
|
|
12
|
+
readonly make: (auth: Pick<Auth, "$context">) => Effect.Effect<{
|
|
13
|
+
/**
|
|
14
|
+
* Generates native metadata at execution without installing public plugin routes.
|
|
15
|
+
* @returns Mounted JSON metadata, or AuthFailure retaining its original SDK/projection cause.
|
|
16
|
+
*/
|
|
17
|
+
readonly generate: () => Effect.Effect<JsonValue, AuthFailure>;
|
|
18
|
+
}, never, never>;
|
|
19
|
+
};
|
|
20
|
+
/** Native metadata projection with no request identity or database ownership. */
|
|
21
|
+
export declare class AuthOpenApi extends AuthOpenApi_base {
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Projects native core and plugin endpoints for RELKIT's shared API reference.
|
|
25
|
+
* @param auth - Activated native auth instance; schema generation performs no database calls.
|
|
26
|
+
* @param instrumentation - Owning application's logger, tracer and metric context.
|
|
27
|
+
* @returns JSON-safe schema with mounted paths and isolated component names.
|
|
28
|
+
* @remarks Does not install the plugin's public schema or reference endpoints.
|
|
29
|
+
* @example const schema = await generateBetterAuthOpenApi(auth);
|
|
30
|
+
*/
|
|
31
|
+
export declare function generateBetterAuthOpenApi(auth: Pick<Auth, "$context">, instrumentation?: Context.Context<never>): Promise<JsonValue>;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=openapi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAS,OAAO,EAAE,MAAM,EAAe,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;;IAO3C;;;OAGG;uBACgB,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;;;QAJ9D;;;WAGG;2BACgB,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;;;AARlE,iFAAiF;AACjF,qBAAa,WAAY,SAAQ,gBAoC/B;CAAG;AAEL;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAC5B,eAAe,GAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAmB,GACxD,OAAO,CAAC,SAAS,CAAC,CASpB"}
|
package/dist/openapi.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates native authentication documentation through a typed, observable
|
|
3
|
+
* service. The activated SDK supplies endpoint metadata; projection does not
|
|
4
|
+
* acquire a database or install the plugin's public schema/reference routes.
|
|
5
|
+
* The exported Promise function is the server compatibility boundary.
|
|
6
|
+
*/
|
|
7
|
+
import { nativeCall, observeSpecializedOperation, squashDrizzleCause, } from "@relkit/drizzle/internal";
|
|
8
|
+
import { Cause, Context, Effect, Exit, Layer } from "effect";
|
|
9
|
+
import { AuthFailure } from "./auth.errors.js";
|
|
10
|
+
import { projectAuthOpenApi } from "./openapi-projection.js";
|
|
11
|
+
/** Native metadata projection with no request identity or database ownership. */
|
|
12
|
+
export class AuthOpenApi extends Context.Service()("relkit/AuthOpenApi", {
|
|
13
|
+
/**
|
|
14
|
+
* Captures an already activated SDK without generating documentation eagerly.
|
|
15
|
+
* @param auth - SDK context containing core/plugin endpoint metadata.
|
|
16
|
+
* @returns Service implementation; generation has no remaining requirements.
|
|
17
|
+
*/
|
|
18
|
+
make: (auth) => Effect.succeed({
|
|
19
|
+
generate: Effect.fn("AuthOpenApi.generate")(() => observeSpecializedOperation("auth.openapi", nativeCall("auth.openapi", async () => {
|
|
20
|
+
const { openAPI } = await import("better-auth/plugins");
|
|
21
|
+
const context = await auth.$context;
|
|
22
|
+
const response = await openAPI().endpoints.generateOpenAPISchema({
|
|
23
|
+
context,
|
|
24
|
+
asResponse: true,
|
|
25
|
+
});
|
|
26
|
+
return projectAuthOpenApi(await response.json(), context.options.basePath);
|
|
27
|
+
}).pipe(Effect.mapError((failure) => new AuthFailure({ operation: "auth.openapi", cause: failure.cause }))))),
|
|
28
|
+
}),
|
|
29
|
+
}) {
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Projects native core and plugin endpoints for RELKIT's shared API reference.
|
|
33
|
+
* @param auth - Activated native auth instance; schema generation performs no database calls.
|
|
34
|
+
* @param instrumentation - Owning application's logger, tracer and metric context.
|
|
35
|
+
* @returns JSON-safe schema with mounted paths and isolated component names.
|
|
36
|
+
* @remarks Does not install the plugin's public schema or reference endpoints.
|
|
37
|
+
* @example const schema = await generateBetterAuthOpenApi(auth);
|
|
38
|
+
*/
|
|
39
|
+
export async function generateBetterAuthOpenApi(auth, instrumentation = Context.empty()) {
|
|
40
|
+
const layer = Layer.effect(AuthOpenApi, AuthOpenApi.make(auth));
|
|
41
|
+
const exit = await Effect.runPromiseExitWith(instrumentation)(AuthOpenApi.use((service) => service.generate()).pipe(Effect.provide(layer)));
|
|
42
|
+
if (Exit.isSuccess(exit))
|
|
43
|
+
return exit.value;
|
|
44
|
+
throw squashDrizzleCause(Cause.map(exit.cause, (failure) => (failure instanceof AuthFailure ? failure.cause : failure)));
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=openapi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,UAAU,EACV,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,iFAAiF;AACjF,MAAM,OAAO,WAAY,SAAQ,OAAO,CAAC,OAAO,EAS7C,CAAC,oBAAoB,EAAE;IACxB;;;;OAIG;IACH,IAAI,EAAE,CAAC,IAA4B,EAAE,EAAE,CACrC,MAAM,CAAC,OAAO,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,GAAG,EAAE,CAC/C,2BAA2B,CACzB,cAAc,EACd,UAAU,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;YACpC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC;YACpC,MAAM,QAAQ,GAAG,MAAM,OAAO,EAAE,CAAC,SAAS,CAAC,qBAAqB,CAAC;gBAC/D,OAAO;gBACP,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;YACH,OAAO,kBAAkB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CACb,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAClF,CACF,CACF,CACF;KACF,CAAC;CACL,CAAC;CAAG;AAEL;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,IAA4B,EAC5B,kBAA0C,OAAO,CAAC,KAAK,EAAE;IAEzD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAC3D,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAC7E,CAAC;IACF,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IAC5C,MAAM,kBAAkB,CACtB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,YAAY,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAC/F,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@relkit/better-auth",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.7",
|
|
4
4
|
"description": "Better Auth integration for RELKIT routes.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -33,11 +33,11 @@
|
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@relkit/client": "0.7.
|
|
37
|
-
"@relkit/contracts": "0.7.
|
|
38
|
-
"@relkit/drizzle": "0.7.
|
|
39
|
-
"@relkit/invocation": "0.7.
|
|
40
|
-
"@relkit/routes": "0.7.
|
|
36
|
+
"@relkit/client": "0.7.7",
|
|
37
|
+
"@relkit/contracts": "0.7.7",
|
|
38
|
+
"@relkit/drizzle": "0.7.7",
|
|
39
|
+
"@relkit/invocation": "0.7.7",
|
|
40
|
+
"@relkit/routes": "0.7.7",
|
|
41
41
|
"better-auth": "1.7.1",
|
|
42
42
|
"effect": "4.0.1"
|
|
43
43
|
},
|