@betterportal/auth-default 0.0.1 → 10.0.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.
- package/lib/plugins/service-betterportal-auth-default/.bp-generated/registry.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/.bp-generated/registry.js +77 -31
- package/lib/plugins/service-betterportal-auth-default/.bp-generated/registry.js.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/GET.d.ts +3 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/GET.d.ts.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/GET.js +3 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/GET.js.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/POST.d.ts +3 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/POST.d.ts.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/POST.js +3 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/POST.js.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_theme.bootstrap1/{index.d.ts → GET.d.ts} +2 -2
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_theme.bootstrap1/GET.d.ts.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_theme.bootstrap1/{index.js → GET.js} +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_theme.bootstrap1/GET.js.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_theme.bootstrap1/{_nav.profile.d.ts → _nav.profile.GET.d.ts} +2 -2
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_theme.bootstrap1/_nav.profile.GET.d.ts.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_theme.bootstrap1/{_nav.profile.js → _nav.profile.GET.js} +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_theme.bootstrap1/_nav.profile.GET.js.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/index.d.ts +1 -88
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/index.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/index.js +1 -185
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/index.js.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/route.impl.d.ts +89 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/route.impl.d.ts.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/route.impl.js +186 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/route.impl.js.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/GET.d.ts +3 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/GET.d.ts.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/GET.js +3 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/GET.js.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/POST.d.ts +3 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/POST.d.ts.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/POST.js +3 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/POST.js.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/_theme.bootstrap1/{index.d.ts → GET.d.ts} +2 -2
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/_theme.bootstrap1/GET.d.ts.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/_theme.bootstrap1/{index.js → GET.js} +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/_theme.bootstrap1/GET.js.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/index.d.ts +1 -24
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/index.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/index.js +1 -37
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/index.js.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/route.impl.d.ts +25 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/route.impl.d.ts.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/route.impl.js +38 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/route.impl.js.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/refresh/POST.d.ts +3 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/refresh/POST.d.ts.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/refresh/POST.js +3 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/refresh/POST.js.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/refresh/index.d.ts +1 -30
- package/lib/plugins/service-betterportal-auth-default/bp-routes/refresh/index.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/refresh/index.js +1 -91
- package/lib/plugins/service-betterportal-auth-default/bp-routes/refresh/index.js.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/refresh/route.impl.d.ts +31 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/refresh/route.impl.d.ts.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/refresh/route.impl.js +92 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/refresh/route.impl.js.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/GET.d.ts +3 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/GET.d.ts.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/GET.js +3 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/GET.js.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/POST.d.ts +3 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/POST.d.ts.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/POST.js +3 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/POST.js.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/_theme.bootstrap1/{index.400.js → 400.d.ts} +2 -2
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/_theme.bootstrap1/400.d.ts.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/_theme.bootstrap1/{index.400.d.ts → 400.js} +2 -2
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/_theme.bootstrap1/400.js.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/_theme.bootstrap1/{index.d.ts → GET.d.ts} +2 -2
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/_theme.bootstrap1/GET.d.ts.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/_theme.bootstrap1/{index.js → GET.js} +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/_theme.bootstrap1/GET.js.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/index.d.ts +1 -63
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/index.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/index.js +1 -105
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/index.js.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/route.impl.d.ts +64 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/route.impl.d.ts.map +1 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/route.impl.js +106 -0
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/route.impl.js.map +1 -0
- package/lib/schemas/service-betterportal-auth-default.json +1 -1
- package/lib/schemas/service-betterportal-auth-default.plugin.json +1 -1
- package/package.json +10 -11
- package/bsb-tests.json +0 -14
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_theme.bootstrap1/_nav.profile.d.ts.map +0 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_theme.bootstrap1/_nav.profile.js.map +0 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_theme.bootstrap1/index.d.ts.map +0 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_theme.bootstrap1/index.js.map +0 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/_theme.bootstrap1/index.d.ts.map +0 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/logout/_theme.bootstrap1/index.js.map +0 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/_theme.bootstrap1/index.400.d.ts.map +0 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/_theme.bootstrap1/index.400.js.map +0 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/_theme.bootstrap1/index.d.ts.map +0 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/_theme.bootstrap1/index.js.map +0 -1
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import * as av from "anyvali";
|
|
2
|
+
import { createHandler } from "@betterportal/framework";
|
|
3
|
+
export const QuerySchema = av.object({
|
|
4
|
+
next: av.optional(av.string()).describe("The view path to pass through to login after first-admin registration.")
|
|
5
|
+
}, { unknownKeys: "strip" });
|
|
6
|
+
export const HeadersSchema = av.object({}, { unknownKeys: "strip" });
|
|
7
|
+
export const RequestSchema = av.object({
|
|
8
|
+
username: av.string().minLength(1).describe("Username for the first admin account."),
|
|
9
|
+
password: av.string().minLength(8).describe("Password for the first admin account."),
|
|
10
|
+
email: av.optional(av.string()).describe("Email address for the first admin account."),
|
|
11
|
+
name: av.optional(av.string()).describe("Display name for the first admin account.")
|
|
12
|
+
}, { unknownKeys: "strip" });
|
|
13
|
+
export const ResponseSchema = av.object({
|
|
14
|
+
status: av.enum_(["ok", "error"]).describe("Registration request outcome."),
|
|
15
|
+
message: av.optional(av.string()).describe("Human-readable status or error message for the renderer."),
|
|
16
|
+
user: av.optional(av.object({
|
|
17
|
+
id: av.string().describe("Stable UUIDv7 user id."),
|
|
18
|
+
username: av.string().describe("Created account username."),
|
|
19
|
+
isFirstAdmin: av.bool().describe("True when this account is the deployment's first admin.")
|
|
20
|
+
}, { unknownKeys: "strip" }).describe("Created first-admin user summary.")),
|
|
21
|
+
// GET state for the theme renderer: registrations are closed once any user
|
|
22
|
+
// exists; loginUrl (self-origin, absolute) is where the renderer sends the
|
|
23
|
+
// browser in that case - and after a successful first-admin creation.
|
|
24
|
+
registrationOpen: av.optional(av.bool()).describe("True while the auth service has zero users; once false, the renderer should send the browser to login."),
|
|
25
|
+
loginUrl: av.optional(av.string()).describe("Absolute self-origin URL of this auth service's login view, used when registration is closed and after successful first-admin creation.")
|
|
26
|
+
}, { unknownKeys: "strip" });
|
|
27
|
+
export const title = "Register First Admin";
|
|
28
|
+
export const description = "Open registration for the very first user. Once any user exists, this endpoint requires admin auth.";
|
|
29
|
+
export const role = "auth.register";
|
|
30
|
+
export const dependencies = ["login.index"];
|
|
31
|
+
export const chrome = { fullScreen: true };
|
|
32
|
+
export const auth = {
|
|
33
|
+
required: false,
|
|
34
|
+
permissions: []
|
|
35
|
+
};
|
|
36
|
+
export const cacheHints = {
|
|
37
|
+
ttlSeconds: 0,
|
|
38
|
+
varyBy: []
|
|
39
|
+
};
|
|
40
|
+
/** Self-origin absolute URL for a path, derived from the request Host header. */
|
|
41
|
+
function runtimeFrom(ctx) {
|
|
42
|
+
const runtime = ctx.plugin?.runtime;
|
|
43
|
+
if (!runtime)
|
|
44
|
+
throw new Error("Auth runtime not available on handler context");
|
|
45
|
+
return runtime;
|
|
46
|
+
}
|
|
47
|
+
function selfUrl(ctx, path, next) {
|
|
48
|
+
const host = ctx.headers.host;
|
|
49
|
+
if (!host)
|
|
50
|
+
return undefined;
|
|
51
|
+
const proto = ctx.headers["x-forwarded-proto"] ?? "http";
|
|
52
|
+
return `${proto}://${host}${path}${next ? `?next=${encodeURIComponent(next)}` : ""}`;
|
|
53
|
+
}
|
|
54
|
+
export const handleGet = createHandler({ response: ResponseSchema, query: QuerySchema }, (ctx) => {
|
|
55
|
+
const runtime = runtimeFrom(ctx);
|
|
56
|
+
const next = ctx.query.next;
|
|
57
|
+
return {
|
|
58
|
+
status: "ok",
|
|
59
|
+
registrationOpen: runtime.userStore.hasNoUsers(),
|
|
60
|
+
loginUrl: selfUrl(ctx, "/login", next)
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
export const handlePost = createHandler({ response: ResponseSchema, request: RequestSchema, query: QuerySchema }, async (ctx) => {
|
|
64
|
+
const runtime = runtimeFrom(ctx);
|
|
65
|
+
const tenantId = ctx.tenant.id;
|
|
66
|
+
const appId = ctx.app.id;
|
|
67
|
+
if (!runtime.userStore.hasNoUsers()) {
|
|
68
|
+
// Registration is closed once any user exists. Respond 404 so the route
|
|
69
|
+
// appears not to exist (no user-enumeration surface).
|
|
70
|
+
ctx.setStatus?.(404);
|
|
71
|
+
return {
|
|
72
|
+
status: "error",
|
|
73
|
+
message: ""
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
const body = ctx.request;
|
|
77
|
+
try {
|
|
78
|
+
const created = await runtime.userStore.createUser({
|
|
79
|
+
username: body.username,
|
|
80
|
+
password: body.password,
|
|
81
|
+
email: body.email,
|
|
82
|
+
name: body.name,
|
|
83
|
+
tenantId,
|
|
84
|
+
appRoles: { [appId]: ["admin"] }
|
|
85
|
+
});
|
|
86
|
+
return {
|
|
87
|
+
status: "ok",
|
|
88
|
+
message: "First admin created.",
|
|
89
|
+
user: {
|
|
90
|
+
id: created.id,
|
|
91
|
+
username: created.username,
|
|
92
|
+
isFirstAdmin: true
|
|
93
|
+
},
|
|
94
|
+
// For the themed success view: where to send the browser to sign in.
|
|
95
|
+
loginUrl: selfUrl(ctx, "/login", ctx.query.next)
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
ctx.setStatus?.(400);
|
|
100
|
+
return {
|
|
101
|
+
status: "error",
|
|
102
|
+
message: err.message
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
//# sourceMappingURL=route.impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.impl.js","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-auth-default/bp-routes/register/route.impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "service-betterportal-auth-default",
|
|
3
3
|
"name": "service-betterportal-auth-default",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "10.0.1",
|
|
5
5
|
"description": "Default BetterPortal v10 auth service: JWKS, login/logout/refresh, bcrypt user store",
|
|
6
6
|
"category": "service",
|
|
7
7
|
"tags": [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@betterportal/auth-default",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "10.0.1",
|
|
4
4
|
"description": "BetterPortal v10 default auth service for Node.js",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "src/index.ts",
|
|
@@ -24,24 +24,23 @@
|
|
|
24
24
|
"license": "(AGPL-3.0-only OR Commercial)",
|
|
25
25
|
"type": "module",
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@
|
|
28
|
-
"@types/
|
|
29
|
-
"@types/node": "^24.12.2",
|
|
27
|
+
"@types/bcrypt": "^6.0.0",
|
|
28
|
+
"@types/node": "^26.0.0",
|
|
30
29
|
"tsx": "^4.21.0",
|
|
31
|
-
"typescript": "^
|
|
30
|
+
"typescript": "^6.0.3"
|
|
32
31
|
},
|
|
33
32
|
"dependencies": {
|
|
34
|
-
"@betterportal/framework": "
|
|
35
|
-
"@
|
|
33
|
+
"@betterportal/framework": "10.0.1",
|
|
34
|
+
"@bsb/base": "^9.5.8",
|
|
35
|
+
"@betterportal/plugin-bsb": "10.0.1",
|
|
36
36
|
"anyvali": "^1.0.6",
|
|
37
|
-
"bcrypt": "^
|
|
38
|
-
"jsx-htmx": "4.0.0-
|
|
37
|
+
"bcrypt": "^6.0.0",
|
|
38
|
+
"jsx-htmx": "4.0.0-beta4"
|
|
39
39
|
},
|
|
40
40
|
"files": [
|
|
41
41
|
"lib/**/*",
|
|
42
42
|
"README.md",
|
|
43
|
-
"bsb-plugin.json"
|
|
44
|
-
"bsb-tests.json"
|
|
43
|
+
"bsb-plugin.json"
|
|
45
44
|
],
|
|
46
45
|
"bsb": {
|
|
47
46
|
"hooks": {
|
package/bsb-tests.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_nav.profile.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/login/_theme.bootstrap1/_nav.profile.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAgB,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,CA4BzD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_nav.profile.js","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/login/_theme.bootstrap1/_nav.profile.tsx"],"names":[],"mappings":";AAIA,MAAM,UAAU,MAAM,CAAC,IAAkB;IACvC,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACxC,OAAO,CACL,YAAG,KAAK,EAAC,wBAAwB,EAAC,IAAI,EAAC,QAAQ,wBAE3C,CACL,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC;IACzF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,WAAW,CAAC;IAEpE,OAAO,CACL,eAAK,KAAK,EAAC,UAAU,aACnB,iBAAQ,KAAK,EAAC,sCAAsC,EAAC,IAAI,EAAC,QAAQ,oBAAgB,UAAU,mBAAe,OAAO,YAC/G,WAAW,GACL,EACT,cAAI,KAAK,EAAC,iCAAiC,aACzC,uBAAI,aAAI,KAAK,EAAC,iBAAiB,YAAE,MAAM,GAAM,GAAK,EAClD,uBAAI,aAAI,KAAK,EAAC,kBAAkB,GAAG,GAAK,EACxC,uBACI,YAAG,KAAK,EAAC,eAAe,EAAC,IAAI,EAAC,sBAAsB,uBAEhD,GACH,IACF,IACD,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/login/_theme.bootstrap1/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAgDhD,wBAAgB,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,CAgHzD"}
|
package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_theme.bootstrap1/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/login/_theme.bootstrap1/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/logout/_theme.bootstrap1/index.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAgB,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,cAAc,CAU1D"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/logout/_theme.bootstrap1/index.tsx"],"names":[],"mappings":";AAIA,MAAM,UAAU,MAAM,CAAC,KAAmB;IACxC,6EAA6E;IAC7E,uEAAuE;IACvE,OAAO,CACL,cAAK,KAAK,EAAC,oCAAoC,YAC7C,cAAK,KAAK,EAAC,gBAAgB,EAAC,IAAI,EAAC,QAAQ,YACvC,eAAM,KAAK,EAAC,iBAAiB,+BAAsB,GAC/C,GACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.400.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/register/_theme.bootstrap1/index.400.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.400.js","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/register/_theme.bootstrap1/index.400.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/register/_theme.bootstrap1/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA6FhD,wBAAgB,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,CAwCzD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/register/_theme.bootstrap1/index.tsx"],"names":[],"mappings":"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"}
|