@schemavaults/auth-server-sdk 0.17.15 → 0.17.20
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/MaximumBrowserCookieSize.d.ts +1 -1
- package/dist/MaximumBrowserCookieSize.js +1 -1
- package/dist/MaximumBrowserCookieSize.js.map +1 -1
- package/dist/NextjsAppDirectoryPlugin/NextjsAppDirectoryPlugin.d.ts +5 -0
- package/dist/NextjsAppDirectoryPlugin/NextjsAppDirectoryPlugin.js +8 -0
- package/dist/NextjsAppDirectoryPlugin/NextjsAppDirectoryPlugin.js.map +1 -0
- package/dist/NextjsAppDirectoryPlugin/codegen.d.ts +4 -0
- package/dist/NextjsAppDirectoryPlugin/codegen.js +80 -0
- package/dist/NextjsAppDirectoryPlugin/codegen.js.map +1 -0
- package/dist/NextjsAppDirectoryPlugin/index.d.ts +2 -0
- package/dist/NextjsAppDirectoryPlugin/index.js +2 -0
- package/dist/NextjsAppDirectoryPlugin/index.js.map +1 -0
- package/dist/NextjsAppDirectoryPlugin/resolve-app-directory.d.ts +1 -0
- package/dist/NextjsAppDirectoryPlugin/resolve-app-directory.js +29 -0
- package/dist/NextjsAppDirectoryPlugin/resolve-app-directory.js.map +1 -0
- package/dist/NextjsAppDirectoryPlugin/resolve-codegen-templates-directory.d.ts +1 -0
- package/dist/NextjsAppDirectoryPlugin/resolve-codegen-templates-directory.js +6 -0
- package/dist/NextjsAppDirectoryPlugin/resolve-codegen-templates-directory.js.map +1 -0
- package/dist/codegen-templates/auth/auth-provider.tsx +48 -0
- package/dist/codegen-templates/auth/authorize/page.tsx +54 -0
- package/dist/codegen-templates/auth/login/page.tsx +27 -0
- package/dist/codegen-templates/auth/logout/page.tsx +11 -0
- package/dist/codegen-templates/auth/register/page.tsx +29 -0
- package/dist/get-app-environment.d.ts +2 -0
- package/dist/get-app-environment.js +2 -0
- package/dist/get-app-environment.js.map +1 -0
- package/dist/get-schemavaults-client-application-id.d.ts +10 -0
- package/dist/get-schemavaults-client-application-id.js +21 -0
- package/dist/get-schemavaults-client-application-id.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +14 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MaximumBrowserCookieSize.js","sourceRoot":"","sources":["../src/MaximumBrowserCookieSize.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"MaximumBrowserCookieSize.js","sourceRoot":"","sources":["../src/MaximumBrowserCookieSize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,CAAC;AACpC,eAAe,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export class NextjsAppDirectoryPlugin {
|
|
2
|
+
static async codegen(opts) {
|
|
3
|
+
const gen = await import("./codegen").then((m) => m.default);
|
|
4
|
+
return await gen(opts);
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export default NextjsAppDirectoryPlugin;
|
|
8
|
+
//# sourceMappingURL=NextjsAppDirectoryPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NextjsAppDirectoryPlugin.js","sourceRoot":"","sources":["../../src/NextjsAppDirectoryPlugin/NextjsAppDirectoryPlugin.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,wBAAwB;IAC5B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAwC;QAClE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;CACF;AAED,eAAe,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
2
|
+
import { dirname } from "path";
|
|
3
|
+
import resolveAppDirectory from "./resolve-app-directory";
|
|
4
|
+
import { join } from "path";
|
|
5
|
+
import resolveCodegenTemplatesDirectory from "./resolve-codegen-templates-directory";
|
|
6
|
+
const pagesToCreate = [
|
|
7
|
+
{
|
|
8
|
+
app_dir_path: "/auth/login",
|
|
9
|
+
codegen_template_path: "auth/login/page.tsx",
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
app_dir_path: "/auth/register",
|
|
13
|
+
codegen_template_path: "auth/register/page.tsx",
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
app_dir_path: "/auth/logout",
|
|
17
|
+
codegen_template_path: "auth/logout/page.tsx",
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
app_dir_path: "/auth/authorize",
|
|
21
|
+
codegen_template_path: "auth/authorize/page.tsx",
|
|
22
|
+
},
|
|
23
|
+
];
|
|
24
|
+
function createClientPages(appDirectory, templatesDir) {
|
|
25
|
+
for (const page of pagesToCreate) {
|
|
26
|
+
const destPath = join(appDirectory, page.app_dir_path, "page.tsx");
|
|
27
|
+
if (existsSync(destPath)) {
|
|
28
|
+
console.log(` - skipping '${page.app_dir_path}/page.tsx' (already exists)`);
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
const destDir = dirname(destPath);
|
|
32
|
+
if (!existsSync(destDir)) {
|
|
33
|
+
mkdirSync(destDir, { recursive: true });
|
|
34
|
+
}
|
|
35
|
+
const templatePath = join(templatesDir, page.codegen_template_path);
|
|
36
|
+
const templateContent = readFileSync(templatePath, {
|
|
37
|
+
encoding: "utf-8",
|
|
38
|
+
});
|
|
39
|
+
writeFileSync(destPath, templateContent, { encoding: "utf-8" });
|
|
40
|
+
console.log(` - created '${page.app_dir_path}/page.tsx'`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function createClientAuthProvider(appDirectory, templatesDir) {
|
|
44
|
+
const srcTemplatePath = join(templatesDir, "auth", "auth-provider.tsx");
|
|
45
|
+
const destPath = join(appDirectory, "auth", "auth-provider.tsx");
|
|
46
|
+
if (existsSync(destPath)) {
|
|
47
|
+
console.log(` - skipping 'auth/auth-provider.tsx' (already exists)`);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const destDir = dirname(destPath);
|
|
51
|
+
if (!existsSync(destDir)) {
|
|
52
|
+
mkdirSync(destDir, { recursive: true });
|
|
53
|
+
}
|
|
54
|
+
const templateContent = readFileSync(srcTemplatePath, {
|
|
55
|
+
encoding: "utf-8",
|
|
56
|
+
});
|
|
57
|
+
writeFileSync(destPath, templateContent, { encoding: "utf-8" });
|
|
58
|
+
console.log(` - created 'auth/auth-provider.tsx'`);
|
|
59
|
+
}
|
|
60
|
+
export default async function codegen(opts) {
|
|
61
|
+
console.log(`[@schemavaults/auth-server-sdk/NextjsAppDirectoryPlugin] Running codegen:`);
|
|
62
|
+
const appDirectory = resolveAppDirectory();
|
|
63
|
+
console.log(` - resolved /app directory at '${appDirectory}'`);
|
|
64
|
+
const authDirectory = join(appDirectory, "auth");
|
|
65
|
+
if (!existsSync(authDirectory)) {
|
|
66
|
+
mkdirSync(authDirectory);
|
|
67
|
+
console.log(` - created /auth directory at '${authDirectory}'`);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
console.log(` - /auth directory already exists at '${authDirectory}'`);
|
|
71
|
+
}
|
|
72
|
+
const templatesDir = typeof opts?.codegenTemplatesDirectory === "string"
|
|
73
|
+
? opts.codegenTemplatesDirectory
|
|
74
|
+
: resolveCodegenTemplatesDirectory();
|
|
75
|
+
console.log(` - resolved codegen templates directory at '${templatesDir}'`);
|
|
76
|
+
createClientPages(appDirectory, templatesDir);
|
|
77
|
+
createClientAuthProvider(appDirectory, templatesDir);
|
|
78
|
+
console.log(`[@schemavaults/auth-server-sdk/NextjsAppDirectoryPlugin] Codegen complete.`);
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=codegen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/NextjsAppDirectoryPlugin/codegen.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/NextjsAppDirectoryPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,wBAAwB,IAAI,OAAO,GACpC,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function resolveAppDirectory(): string;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { join } from "path";
|
|
2
|
+
import { existsSync } from "fs";
|
|
3
|
+
import { cwd } from "process";
|
|
4
|
+
function resolveProjectRoot() {
|
|
5
|
+
const current = cwd();
|
|
6
|
+
if (existsSync(join(current, "package.json")) &&
|
|
7
|
+
(existsSync(join(current, "next.config.js")) ||
|
|
8
|
+
existsSync(join(current, "next.config.ts")) ||
|
|
9
|
+
existsSync(join(current, "next.config.mjs")) ||
|
|
10
|
+
existsSync(join(current, "next.config.cjs")))) {
|
|
11
|
+
return current;
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
throw new Error("Failed to resolve package root!");
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export default function resolveAppDirectory() {
|
|
18
|
+
const projectRoot = resolveProjectRoot();
|
|
19
|
+
if (existsSync(join(projectRoot, "src", "app"))) {
|
|
20
|
+
return join(projectRoot, "src", "app");
|
|
21
|
+
}
|
|
22
|
+
else if (existsSync(join(projectRoot, "app"))) {
|
|
23
|
+
return join(projectRoot, "app");
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
throw new Error("Failed to resolve Next.js app/ directory!");
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=resolve-app-directory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-app-directory.js","sourceRoot":"","sources":["../../src/NextjsAppDirectoryPlugin/resolve-app-directory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE9B,SAAS,kBAAkB;IACzB,MAAM,OAAO,GAAW,GAAG,EAAE,CAAC;IAC9B,IACE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACzC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YAC1C,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YAC3C,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;YAC5C,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC/C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,mBAAmB;IACzC,MAAM,WAAW,GAAW,kBAAkB,EAAE,CAAC;IACjD,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;SAAM,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function resolveCodegenTemplatesDirectory(): string;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { dirname, join } from "path";
|
|
2
|
+
export default function resolveCodegenTemplatesDirectory() {
|
|
3
|
+
// Templates are copied into the dist/codegen-templates directory during build
|
|
4
|
+
return join(dirname(__dirname), "codegen-templates");
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=resolve-codegen-templates-directory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-codegen-templates-directory.js","sourceRoot":"","sources":["../../src/NextjsAppDirectoryPlugin/resolve-codegen-templates-directory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,CAAC,OAAO,UAAU,gCAAgC;IACtD,8EAA8E;IAC9E,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,mBAAmB,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
AuthProvider,
|
|
5
|
+
type SchemaVaultsAppEnvironment,
|
|
6
|
+
type AppId,
|
|
7
|
+
} from "@schemavaults/auth-react-provider";
|
|
8
|
+
import { usePathname, useRouter } from "next/navigation";
|
|
9
|
+
import type { PropsWithChildren } from "react";
|
|
10
|
+
|
|
11
|
+
export interface IAppAuthProviderProps extends PropsWithChildren {
|
|
12
|
+
environment: SchemaVaultsAppEnvironment;
|
|
13
|
+
app_id: AppId;
|
|
14
|
+
default_audiences: readonly string[];
|
|
15
|
+
debug?: boolean;
|
|
16
|
+
authed_on_unauthed_redirect_uri: string;
|
|
17
|
+
unauthed_on_authed_redirect_uri: string;
|
|
18
|
+
authorize_uri: string;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export default function AppAuthProvider({
|
|
22
|
+
environment,
|
|
23
|
+
app_id,
|
|
24
|
+
...props
|
|
25
|
+
}: IAppAuthProviderProps) {
|
|
26
|
+
const router = useRouter();
|
|
27
|
+
const path: string = usePathname();
|
|
28
|
+
const debug: boolean =
|
|
29
|
+
typeof props.debug === "boolean"
|
|
30
|
+
? props.debug
|
|
31
|
+
: environment !== "production";
|
|
32
|
+
|
|
33
|
+
return (
|
|
34
|
+
<AuthProvider
|
|
35
|
+
app_id={app_id}
|
|
36
|
+
authed_on_unauthed_redirect_uri={props.authed_on_unauthed_redirect_uri}
|
|
37
|
+
unauthed_on_authed_redirect_uri={props.unauthed_on_authed_redirect_uri}
|
|
38
|
+
authorize_uri={props.authorize_uri}
|
|
39
|
+
router={router}
|
|
40
|
+
path={path}
|
|
41
|
+
default_audiences={props.default_audiences}
|
|
42
|
+
debug={debug}
|
|
43
|
+
environment={environment}
|
|
44
|
+
>
|
|
45
|
+
{props.children}
|
|
46
|
+
</AuthProvider>
|
|
47
|
+
);
|
|
48
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import type { ReactElement } from "react";
|
|
4
|
+
import { useRouter, useSearchParams } from "next/navigation";
|
|
5
|
+
import { LoadingPage, useToast } from "@schemavaults/ui";
|
|
6
|
+
import {
|
|
7
|
+
type ISchemaVaultsAuthClient,
|
|
8
|
+
type SchemaVaultsAppEnvironment,
|
|
9
|
+
useAppEnvironment,
|
|
10
|
+
useAuth,
|
|
11
|
+
useTradeAuthorizationCodeForTokensEffect,
|
|
12
|
+
} from "@schemavaults/auth-react-provider";
|
|
13
|
+
|
|
14
|
+
interface ExchangeAuthCodeForTokensManagerComponentProps {
|
|
15
|
+
auth: ISchemaVaultsAuthClient;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function ExchangeAuthCodeForTokensManagerComponent({
|
|
19
|
+
auth,
|
|
20
|
+
}: ExchangeAuthCodeForTokensManagerComponentProps): ReactElement {
|
|
21
|
+
const router = useRouter();
|
|
22
|
+
const searchParams = useSearchParams();
|
|
23
|
+
const { toast } = useToast();
|
|
24
|
+
const environment: SchemaVaultsAppEnvironment = useAppEnvironment();
|
|
25
|
+
useTradeAuthorizationCodeForTokensEffect({
|
|
26
|
+
router,
|
|
27
|
+
searchParams,
|
|
28
|
+
auth,
|
|
29
|
+
toast,
|
|
30
|
+
debug: environment !== "production",
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
return (
|
|
34
|
+
<>
|
|
35
|
+
<LoadingPage message="Trading authorization code & proof code for tokens..." />
|
|
36
|
+
</>
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export default function AuthorizePage(): ReactElement {
|
|
41
|
+
const auth = useAuth();
|
|
42
|
+
|
|
43
|
+
if (!auth || !auth.ready || !auth.client || !auth.client.current) {
|
|
44
|
+
return (
|
|
45
|
+
<>
|
|
46
|
+
<LoadingPage message="Loading auth client..." />
|
|
47
|
+
</>
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const authClient: ISchemaVaultsAuthClient = auth.client.current;
|
|
52
|
+
|
|
53
|
+
return <ExchangeAuthCodeForTokensManagerComponent auth={authClient} />;
|
|
54
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { LoadingPage, useToast } from "@schemavaults/ui";
|
|
4
|
+
import { useStartLoginOauthPKCEFlow } from "@schemavaults/auth-react-provider";
|
|
5
|
+
import { type ReactElement } from "react";
|
|
6
|
+
|
|
7
|
+
export default function LoginPage(): ReactElement {
|
|
8
|
+
const { toast } = useToast();
|
|
9
|
+
|
|
10
|
+
function onError(e: unknown): void {
|
|
11
|
+
toast({
|
|
12
|
+
variant: "destructive",
|
|
13
|
+
title: "Error starting login flow",
|
|
14
|
+
description:
|
|
15
|
+
e instanceof Error ? e.message : "An unknown error has occurred!",
|
|
16
|
+
});
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
useStartLoginOauthPKCEFlow({ onError });
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<>
|
|
24
|
+
<LoadingPage message="Commencing login flow..." />
|
|
25
|
+
</>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useLogoutEffect } from "@schemavaults/auth-react-provider";
|
|
4
|
+
import { LoadingPage } from "@schemavaults/ui";
|
|
5
|
+
import type { ReactElement } from "react";
|
|
6
|
+
|
|
7
|
+
export default function LogoutPage(): ReactElement {
|
|
8
|
+
useLogoutEffect();
|
|
9
|
+
|
|
10
|
+
return <LoadingPage message="Logging you out..." />;
|
|
11
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { LoadingPage } from "@schemavaults/ui";
|
|
4
|
+
import { useStartRegisterOauthPKCEFlow } from "@schemavaults/auth-react-provider";
|
|
5
|
+
import { useToast } from "@schemavaults/ui";
|
|
6
|
+
import type { ReactElement } from "react";
|
|
7
|
+
|
|
8
|
+
export default function RegisterPage(): ReactElement {
|
|
9
|
+
const { toast } = useToast();
|
|
10
|
+
|
|
11
|
+
function onError(e: unknown): void {
|
|
12
|
+
toast({
|
|
13
|
+
variant: "destructive",
|
|
14
|
+
title: "Error starting register flow!",
|
|
15
|
+
description:
|
|
16
|
+
e instanceof Error ? e.message : "An unknown error has occurred!",
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
useStartRegisterOauthPKCEFlow({
|
|
21
|
+
onError,
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
return (
|
|
25
|
+
<>
|
|
26
|
+
<LoadingPage message="Commencing register flow..." />
|
|
27
|
+
</>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-app-environment.js","sourceRoot":"","sources":["../src/get-app-environment.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,IAAI,OAAO,GAC7B,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type ApiServerId } from "@schemavaults/app-definitions";
|
|
2
|
+
export { type ApiServerId } from "@schemavaults/app-definitions";
|
|
3
|
+
/**
|
|
4
|
+
* @description Loads the client app ID. This is usually defined on the client-side, but this is useful in the auth-server-sdk
|
|
5
|
+
* for cases where one app is both the client & server (e.g. Next.js)
|
|
6
|
+
* @returns Parsed value of process.env.SCHEMAVAULTS_CLIENT_APP_ID
|
|
7
|
+
*/
|
|
8
|
+
declare function getSchemavaultsClientApplicationId(): ApiServerId;
|
|
9
|
+
export { getSchemavaultsClientApplicationId };
|
|
10
|
+
export default getSchemavaultsClientApplicationId;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { appIdSchema } from "@schemavaults/app-definitions";
|
|
2
|
+
/**
|
|
3
|
+
* @description Loads the client app ID. This is usually defined on the client-side, but this is useful in the auth-server-sdk
|
|
4
|
+
* for cases where one app is both the client & server (e.g. Next.js)
|
|
5
|
+
* @returns Parsed value of process.env.SCHEMAVAULTS_CLIENT_APP_ID
|
|
6
|
+
*/
|
|
7
|
+
function getSchemavaultsClientApplicationId() {
|
|
8
|
+
const appIdEnvVar = process.env.SCHEMAVAULTS_CLIENT_APP_ID;
|
|
9
|
+
if (appIdEnvVar && typeof appIdEnvVar === "string") {
|
|
10
|
+
if (!appIdSchema.safeParse(appIdEnvVar).success) {
|
|
11
|
+
throw new TypeError("Invalid API server ID to use from 'SCHEMAVAULTS_CLIENT_APP_ID' environment variable!");
|
|
12
|
+
}
|
|
13
|
+
return appIdEnvVar;
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
throw new TypeError("Environment variable 'SCHEMAVAULTS_CLIENT_APP_ID' is not set!");
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export { getSchemavaultsClientApplicationId };
|
|
20
|
+
export default getSchemavaultsClientApplicationId;
|
|
21
|
+
//# sourceMappingURL=get-schemavaults-client-application-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-schemavaults-client-application-id.js","sourceRoot":"","sources":["../src/get-schemavaults-client-application-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAG9E;;;;GAIG;AACH,SAAS,kCAAkC;IACzC,MAAM,WAAW,GACf,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;IACzC,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACnD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;YAChD,MAAM,IAAI,SAAS,CACjB,sFAAsF,CACvF,CAAC;QACJ,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,SAAS,CACjB,+DAA+D,CAChE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,OAAO,EAAE,kCAAkC,EAAE,CAAC;AAC9C,eAAe,kCAAkC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,7 +14,11 @@ import MaximumBrowserCookieSize from "./MaximumBrowserCookieSize";
|
|
|
14
14
|
export { MaximumBrowserCookieSize };
|
|
15
15
|
export { getSchemavaultsApiServerId } from "./get-schemavaults-api-server-id";
|
|
16
16
|
export type { ApiServerId } from "@schemavaults/app-definitions";
|
|
17
|
+
export { getSchemavaultsClientApplicationId } from "./get-schemavaults-client-application-id";
|
|
18
|
+
export type { AppId } from "@schemavaults/app-definitions";
|
|
17
19
|
export { RefreshTokenCookieName, RefreshTokenExpiryCookieName, } from "./RefreshTokenCookieNames";
|
|
18
20
|
export { default as getStringByteSize } from "./getStringByteSize";
|
|
19
21
|
export { redirectToLogin } from "./redirect-to-login";
|
|
20
22
|
export type * from "./redirect-with-error";
|
|
23
|
+
export { getAppEnvironment } from "./get-app-environment";
|
|
24
|
+
export type { SchemaVaultsAppEnvironment } from "./get-app-environment";
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,9 @@ export { ERROR_MESSAGE_CATALOG, isValidErrorId, } from "./auth-server-error-mess
|
|
|
7
7
|
import MaximumBrowserCookieSize from "./MaximumBrowserCookieSize";
|
|
8
8
|
export { MaximumBrowserCookieSize };
|
|
9
9
|
export { getSchemavaultsApiServerId } from "./get-schemavaults-api-server-id";
|
|
10
|
+
export { getSchemavaultsClientApplicationId } from "./get-schemavaults-client-application-id";
|
|
10
11
|
export { RefreshTokenCookieName, RefreshTokenExpiryCookieName, } from "./RefreshTokenCookieNames";
|
|
11
12
|
export { default as getStringByteSize } from "./getStringByteSize";
|
|
12
13
|
export { redirectToLogin } from "./redirect-to-login";
|
|
14
|
+
export { getAppEnvironment } from "./get-app-environment";
|
|
13
15
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAG7B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,yBAAyB,CAAC;AAGxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EACL,qBAAqB,EACrB,cAAc,GACf,MAAM,qCAAqC,CAAC;AAG7C,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,CAAC;AAEpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAG9E,OAAO,EACL,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAG7B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,yBAAyB,CAAC;AAGxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EACL,qBAAqB,EACrB,cAAc,GACf,MAAM,qCAAqC,CAAC;AAG7C,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,CAAC;AAEpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAG9E,OAAO,EAAE,kCAAkC,EAAE,MAAM,0CAA0C,CAAC;AAG9F,OAAO,EACL,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@schemavaults/auth-server-sdk",
|
|
3
3
|
"description": "TypeScript SDK for building authenticated endpoints/middlewares for the Auth Server and Resource Servers",
|
|
4
|
-
"version": "0.17.
|
|
4
|
+
"version": "0.17.20",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"private": false,
|
|
7
7
|
"repository": {
|
|
@@ -16,11 +16,12 @@
|
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"zod": "3.23.8",
|
|
18
18
|
"@schemavaults/jwt": "0.6.21",
|
|
19
|
-
"@schemavaults/auth-common": "0.8.
|
|
19
|
+
"@schemavaults/auth-common": "0.8.2",
|
|
20
20
|
"@schemavaults/app-definitions": "0.6.12"
|
|
21
21
|
},
|
|
22
22
|
"scripts": {
|
|
23
|
-
"build": "tsc --project tsconfig.json && tsc-alias --project tsconfig.json",
|
|
23
|
+
"build": "tsc --project tsconfig.json && tsc-alias --project tsconfig.json && bun run copy-codegen-templates",
|
|
24
|
+
"copy-codegen-templates": "/bin/bash ./copy-codegen-templates.sh",
|
|
24
25
|
"test": "NODE_ENV=test bun test",
|
|
25
26
|
"cleanup:compiled-tests-output": "find ./dist -type f \\( -name \"*.test.js\" -o -name \"*.test.js.map\" -o -name \"*.test.d.ts\" \\) -delete",
|
|
26
27
|
"cleanup": "bun run cleanup:compiled-tests-output",
|
|
@@ -120,6 +121,16 @@
|
|
|
120
121
|
"types": "./dist/redirect-to-login.d.ts",
|
|
121
122
|
"import": "./dist/redirect-to-login.js",
|
|
122
123
|
"require": "./dist/redirect-to-login.js"
|
|
124
|
+
},
|
|
125
|
+
"./NextjsAppDirectoryPlugin": {
|
|
126
|
+
"types": "./dist/NextjsAppDirectoryPlugin/index.d.ts",
|
|
127
|
+
"import": "./dist/NextjsAppDirectoryPlugin/index.js",
|
|
128
|
+
"require": "./dist/NextjsAppDirectoryPlugin/index.js"
|
|
129
|
+
},
|
|
130
|
+
"./NextjsAppDirectoryPlugin/*": {
|
|
131
|
+
"types": "./dist/NextjsAppDirectoryPlugin/*",
|
|
132
|
+
"import": "./dist/NextjsAppDirectoryPlugin/*",
|
|
133
|
+
"require": "./dist/NextjsAppDirectoryPlugin/*"
|
|
123
134
|
}
|
|
124
135
|
}
|
|
125
136
|
}
|