@simulacrum/auth0-simulator 0.10.0 → 0.10.2
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/README.md +1 -1
- package/bin/start.js +9 -2
- package/dist/auth/constants.js +5 -2
- package/dist/auth/constants.js.map +1 -1
- package/dist/auth/date.d.ts.map +1 -1
- package/dist/auth/date.js +9 -3
- package/dist/auth/date.js.map +1 -1
- package/dist/auth/jwt.d.ts.map +1 -1
- package/dist/auth/jwt.js +11 -6
- package/dist/auth/jwt.js.map +1 -1
- package/dist/auth/refresh-token.d.ts +1 -1
- package/dist/auth/refresh-token.d.ts.map +1 -1
- package/dist/auth/refresh-token.js +12 -8
- package/dist/auth/refresh-token.js.map +1 -1
- package/dist/config/get-config.d.ts +1 -1
- package/dist/config/get-config.d.ts.map +1 -1
- package/dist/config/get-config.js +13 -13
- package/dist/config/get-config.js.map +1 -1
- package/dist/handlers/auth0-handlers.d.ts +2 -2
- package/dist/handlers/auth0-handlers.d.ts.map +1 -1
- package/dist/handlers/auth0-handlers.js +68 -57
- package/dist/handlers/auth0-handlers.js.map +1 -1
- package/dist/handlers/index.d.ts +2 -2
- package/dist/handlers/index.d.ts.map +1 -1
- package/dist/handlers/index.js +24 -17
- package/dist/handlers/index.js.map +1 -1
- package/dist/handlers/login-redirect.d.ts +1 -1
- package/dist/handlers/login-redirect.d.ts.map +1 -1
- package/dist/handlers/login-redirect.js +7 -3
- package/dist/handlers/login-redirect.js.map +1 -1
- package/dist/handlers/oauth-handlers.d.ts +4 -4
- package/dist/handlers/oauth-handlers.d.ts.map +1 -1
- package/dist/handlers/oauth-handlers.js +51 -42
- package/dist/handlers/oauth-handlers.js.map +1 -1
- package/dist/handlers/openid-handlers.d.ts.map +1 -1
- package/dist/handlers/openid-handlers.js +9 -5
- package/dist/handlers/openid-handlers.js.map +1 -1
- package/dist/handlers/url.d.ts.map +1 -1
- package/dist/handlers/url.js +5 -1
- package/dist/handlers/url.js.map +1 -1
- package/dist/handlers/utils.d.ts +3 -3
- package/dist/handlers/utils.d.ts.map +1 -1
- package/dist/handlers/utils.js +12 -7
- package/dist/handlers/utils.js.map +1 -1
- package/dist/handlers/web-message.js +12 -8
- package/dist/handlers/web-message.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -12
- package/dist/index.js.map +1 -1
- package/dist/middleware/create-cors.js +9 -2
- package/dist/middleware/create-cors.js.map +1 -1
- package/dist/middleware/error-handling.js +4 -1
- package/dist/middleware/error-handling.js.map +1 -1
- package/dist/middleware/no-cache.js +5 -1
- package/dist/middleware/no-cache.js.map +1 -1
- package/dist/middleware/session.js +10 -3
- package/dist/middleware/session.js.map +1 -1
- package/dist/rules/extensionless-file-name.d.ts.map +1 -1
- package/dist/rules/extensionless-file-name.js +5 -1
- package/dist/rules/extensionless-file-name.js.map +1 -1
- package/dist/rules/parse-rules-files.js +18 -12
- package/dist/rules/parse-rules-files.js.map +1 -1
- package/dist/rules/rules-runner.d.ts +1 -1
- package/dist/rules/rules-runner.d.ts.map +1 -1
- package/dist/rules/rules-runner.js +60 -45
- package/dist/rules/rules-runner.js.map +1 -1
- package/dist/rules/types.js +2 -1
- package/dist/store/entities.d.ts.map +1 -1
- package/dist/store/entities.js +22 -17
- package/dist/store/entities.js.map +1 -1
- package/dist/store/index.d.ts +1 -1
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +16 -20
- package/dist/store/index.js.map +1 -1
- package/dist/types.js +21 -18
- package/dist/types.js.map +1 -1
- package/dist/views/login.d.ts +1 -1
- package/dist/views/login.d.ts.map +1 -1
- package/dist/views/login.js +7 -3
- package/dist/views/login.js.map +1 -1
- package/dist/views/username-password.d.ts +1 -1
- package/dist/views/username-password.d.ts.map +1 -1
- package/dist/views/username-password.js +7 -3
- package/dist/views/username-password.js.map +1 -1
- package/dist/views/web-message.d.ts +1 -1
- package/dist/views/web-message.d.ts.map +1 -1
- package/dist/views/web-message.js +10 -3
- package/dist/views/web-message.js.map +1 -1
- package/package.json +5 -3
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createLoginRedirectHandler = void 0;
|
|
4
|
+
const querystring_1 = require("querystring");
|
|
5
|
+
const createLoginRedirectHandler = (options) => function loginRedirect(req, res) {
|
|
3
6
|
let { client_id, audience, redirect_uri, scope, state, nonce, response_mode, code_challenge, code_challenge_method, auth0Client, response_type, } = req.query;
|
|
4
|
-
res.status(302).redirect(`/login?${stringify({
|
|
7
|
+
res.status(302).redirect(`/login?${(0, querystring_1.stringify)({
|
|
5
8
|
state,
|
|
6
9
|
redirect_uri,
|
|
7
10
|
client: client_id || options.clientID,
|
|
@@ -16,4 +19,5 @@ export const createLoginRedirectHandler = (options) => function loginRedirect(re
|
|
|
16
19
|
audience: audience || options.audience,
|
|
17
20
|
})}`);
|
|
18
21
|
};
|
|
22
|
+
exports.createLoginRedirectHandler = createLoginRedirectHandler;
|
|
19
23
|
//# sourceMappingURL=login-redirect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login-redirect.js","sourceRoot":"","sources":["../../src/handlers/login-redirect.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"login-redirect.js","sourceRoot":"","sources":["../../src/handlers/login-redirect.ts"],"names":[],"mappings":";;;AAEA,6CAAwC;AAEjC,MAAM,0BAA0B,GAAG,CACxC,OAA2B,EACX,EAAE,CAClB,SAAS,aAAa,CAAC,GAAY,EAAE,GAAa;IAChD,IAAI,EACF,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,KAAK,EACL,KAAK,EACL,KAAK,EACL,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,aAAa,GACd,GAAG,GAAG,CAAC,KAAoB,CAAC;IAE7B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CACtB,UAAU,IAAA,uBAAS,EAAC;QAClB,KAAK;QACL,YAAY;QACZ,MAAM,EAAE,SAAS,IAAI,OAAO,CAAC,QAAQ;QACrC,QAAQ,EAAE,QAAQ;QAClB,KAAK;QACL,aAAa;QACb,aAAa;QACb,KAAK;QACL,cAAc;QACd,qBAAqB;QACrB,WAAW;QACX,QAAQ,EAAE,QAAQ,IAAI,OAAO,CAAC,QAAQ;KACvC,CAAC,EAAE,CACL,CAAC;AACJ,CAAC,CAAC;AAlCS,QAAA,0BAA0B,8BAkCnC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Request } from "express";
|
|
2
|
-
import type { RuleUser } from "../rules/types";
|
|
3
|
-
import type { ScopeConfig, AccessTokenPayload, IdTokenData } from "../types";
|
|
4
|
-
import { ExtendedSimulationStore } from "../store";
|
|
5
|
-
import { Auth0User } from "../store/entities";
|
|
2
|
+
import type { RuleUser } from "../rules/types.ts";
|
|
3
|
+
import type { ScopeConfig, AccessTokenPayload, IdTokenData } from "../types.ts";
|
|
4
|
+
import { ExtendedSimulationStore } from "../store/index.ts";
|
|
5
|
+
import { Auth0User } from "../store/entities.ts";
|
|
6
6
|
export declare const createTokens: ({ body, iss, clientID, audience, rulesDirectory, scope: scopeConfig, simulationStore, }: {
|
|
7
7
|
body: Request["body"];
|
|
8
8
|
iss: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-handlers.d.ts","sourceRoot":"","sources":["../../src/handlers/oauth-handlers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAe,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"oauth-handlers.d.ts","sourceRoot":"","sources":["../../src/handlers/oauth-handlers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAe,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAElB,WAAW,EAEZ,MAAM,aAAa,CAAC;AAKrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,eAAO,MAAM,YAAY,GAAU,yFAQhC;IACD,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,KAAK,EAAE,WAAW,CAAC;IACnB,eAAe,EAAE,uBAAuB,CAAC;CAC1C;;;;;;;;EAyEA,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,uCAMxB;IACD,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;;;CA6BA,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,uCAKhC;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,KAAG,OAAO,CAAC,kBAAkB,CAO5B,CAAC"}
|
|
@@ -1,27 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.getBaseAccessToken = exports.getIdToken = exports.createTokens = void 0;
|
|
13
|
+
const assert_ts_1 = require("assert-ts");
|
|
14
|
+
const base64_url_1 = require("base64-url");
|
|
15
|
+
const date_ts_1 = require("../auth/date.js");
|
|
16
|
+
const jwt_ts_1 = require("../auth/jwt.js");
|
|
17
|
+
const rules_runner_ts_1 = require("../rules/rules-runner.js");
|
|
18
|
+
const utils_ts_1 = require("./utils.js");
|
|
19
|
+
const refresh_token_ts_1 = require("../auth/refresh-token.js");
|
|
20
|
+
const createTokens = (_a) => __awaiter(void 0, [_a], void 0, function* ({ body, iss, clientID, audience, rulesDirectory, scope: scopeConfig, simulationStore, }) {
|
|
9
21
|
let { grant_type } = body;
|
|
10
|
-
let scope = deriveScope({ scopeConfig, clientID, audience });
|
|
11
|
-
let accessToken = getBaseAccessToken({ iss, grant_type, scope, audience });
|
|
22
|
+
let scope = (0, utils_ts_1.deriveScope)({ scopeConfig, clientID, audience });
|
|
23
|
+
let accessToken = (0, exports.getBaseAccessToken)({ iss, grant_type, scope, audience });
|
|
12
24
|
let user;
|
|
13
25
|
let nonce;
|
|
14
26
|
if (grant_type === "client_credentials") {
|
|
15
|
-
return { access_token: createJsonWebToken(accessToken) };
|
|
27
|
+
return { access_token: (0, jwt_ts_1.createJsonWebToken)(accessToken) };
|
|
16
28
|
}
|
|
17
29
|
// TODO: check refresh_token expiry date
|
|
18
30
|
else if (grant_type === "refresh_token") {
|
|
19
31
|
let { refresh_token: refreshTokenValue } = body;
|
|
20
|
-
let refreshToken = JSON.parse(decode(refreshTokenValue));
|
|
21
|
-
let findUser = createPersonQuery(simulationStore);
|
|
32
|
+
let refreshToken = JSON.parse((0, base64_url_1.decode)(refreshTokenValue));
|
|
33
|
+
let findUser = (0, utils_ts_1.createPersonQuery)(simulationStore);
|
|
22
34
|
user = findUser((person) => person.id === refreshToken.user.id);
|
|
23
35
|
nonce = refreshToken.nonce;
|
|
24
|
-
assert(!!nonce, `400::No nonce in request`);
|
|
36
|
+
(0, assert_ts_1.assert)(!!nonce, `400::No nonce in request`);
|
|
25
37
|
}
|
|
26
38
|
else {
|
|
27
39
|
let result = verifyUserExistsInStore({
|
|
@@ -32,8 +44,8 @@ export const createTokens = async ({ body, iss, clientID, audience, rulesDirecto
|
|
|
32
44
|
user = result.user;
|
|
33
45
|
nonce = result.nonce;
|
|
34
46
|
}
|
|
35
|
-
assert(!!user, "500::No user found");
|
|
36
|
-
let { idTokenData, userData } = getIdToken({
|
|
47
|
+
(0, assert_ts_1.assert)(!!user, "500::No user found");
|
|
48
|
+
let { idTokenData, userData } = (0, exports.getIdToken)({
|
|
37
49
|
body,
|
|
38
50
|
iss,
|
|
39
51
|
user,
|
|
@@ -45,20 +57,14 @@ export const createTokens = async ({ body, iss, clientID, audience, rulesDirecto
|
|
|
45
57
|
accessToken: { scope, sub: idTokenData.sub },
|
|
46
58
|
idToken: idTokenData,
|
|
47
59
|
};
|
|
48
|
-
let rulesRunner = createRulesRunner(rulesDirectory);
|
|
60
|
+
let rulesRunner = (0, rules_runner_ts_1.createRulesRunner)(rulesDirectory);
|
|
49
61
|
// the rules mutate the values
|
|
50
|
-
|
|
62
|
+
yield rulesRunner(userData, context);
|
|
51
63
|
return {
|
|
52
|
-
access_token: createJsonWebToken({
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
id_token: createJsonWebToken({
|
|
57
|
-
...userData,
|
|
58
|
-
...context.idToken,
|
|
59
|
-
}),
|
|
60
|
-
refresh_token: issueRefreshToken(scope, grant_type)
|
|
61
|
-
? createRefreshToken({
|
|
64
|
+
access_token: (0, jwt_ts_1.createJsonWebToken)(Object.assign(Object.assign(Object.assign({}, accessToken), context.accessToken), (scope.split(" ").includes("email") ? { email: user.email } : {}))),
|
|
65
|
+
id_token: (0, jwt_ts_1.createJsonWebToken)(Object.assign(Object.assign({}, userData), context.idToken)),
|
|
66
|
+
refresh_token: (0, refresh_token_ts_1.issueRefreshToken)(scope, grant_type)
|
|
67
|
+
? (0, refresh_token_ts_1.createRefreshToken)({
|
|
62
68
|
exp: idTokenData.exp,
|
|
63
69
|
rotations: 0,
|
|
64
70
|
scope,
|
|
@@ -67,8 +73,9 @@ export const createTokens = async ({ body, iss, clientID, audience, rulesDirecto
|
|
|
67
73
|
})
|
|
68
74
|
: undefined,
|
|
69
75
|
};
|
|
70
|
-
};
|
|
71
|
-
|
|
76
|
+
});
|
|
77
|
+
exports.createTokens = createTokens;
|
|
78
|
+
const getIdToken = ({ body, iss, user, clientID, nonce, }) => {
|
|
72
79
|
var _a, _b, _c, _d;
|
|
73
80
|
let userData = {
|
|
74
81
|
name: (_a = body === null || body === void 0 ? void 0 : body.name) !== null && _a !== void 0 ? _a : user.name,
|
|
@@ -79,13 +86,13 @@ export const getIdToken = ({ body, iss, user, clientID, nonce, }) => {
|
|
|
79
86
|
picture: (_d = body === null || body === void 0 ? void 0 : body.picture) !== null && _d !== void 0 ? _d : user.picture,
|
|
80
87
|
identities: body === null || body === void 0 ? void 0 : body.identities,
|
|
81
88
|
};
|
|
82
|
-
assert(!!user.email, "500::User in store requires an email");
|
|
89
|
+
(0, assert_ts_1.assert)(!!user.email, "500::User in store requires an email");
|
|
83
90
|
let idTokenData = {
|
|
84
91
|
alg: "RS256",
|
|
85
92
|
typ: "JWT",
|
|
86
93
|
iss,
|
|
87
|
-
exp: expiresAt(),
|
|
88
|
-
iat: epochTime(),
|
|
94
|
+
exp: (0, date_ts_1.expiresAt)(),
|
|
95
|
+
iat: (0, date_ts_1.epochTime)(),
|
|
89
96
|
email: user.email,
|
|
90
97
|
aud: clientID,
|
|
91
98
|
sub: user.id,
|
|
@@ -95,17 +102,19 @@ export const getIdToken = ({ body, iss, user, clientID, nonce, }) => {
|
|
|
95
102
|
}
|
|
96
103
|
return { userData, idTokenData };
|
|
97
104
|
};
|
|
98
|
-
|
|
105
|
+
exports.getIdToken = getIdToken;
|
|
106
|
+
const getBaseAccessToken = ({ iss, grant_type, scope, audience, }) => ({
|
|
99
107
|
iss,
|
|
100
|
-
exp: expiresAt(),
|
|
101
|
-
iat: epochTime(),
|
|
108
|
+
exp: (0, date_ts_1.expiresAt)(),
|
|
109
|
+
iat: (0, date_ts_1.epochTime)(),
|
|
102
110
|
aud: audience,
|
|
103
111
|
gty: grant_type,
|
|
104
112
|
scope,
|
|
105
113
|
});
|
|
114
|
+
exports.getBaseAccessToken = getBaseAccessToken;
|
|
106
115
|
const verifyUserExistsInStore = ({ simulationStore, body, grant_type, }) => {
|
|
107
116
|
let { code } = body;
|
|
108
|
-
let personQuery = createPersonQuery(simulationStore);
|
|
117
|
+
let personQuery = (0, utils_ts_1.createPersonQuery)(simulationStore);
|
|
109
118
|
let nonce;
|
|
110
119
|
let username;
|
|
111
120
|
let password;
|
|
@@ -116,12 +125,12 @@ const verifyUserExistsInStore = ({ simulationStore, body, grant_type, }) => {
|
|
|
116
125
|
else {
|
|
117
126
|
// specifically grant_type === 'authorization_code'
|
|
118
127
|
// but naively using it to handle other cases at the moment
|
|
119
|
-
assert(typeof code !== "undefined", "400::no code in /oauth/token");
|
|
120
|
-
[nonce, username] =
|
|
128
|
+
(0, assert_ts_1.assert)(typeof code !== "undefined", "400::no code in /oauth/token");
|
|
129
|
+
[nonce, username] = (0, base64_url_1.decode)(code).split(":");
|
|
121
130
|
}
|
|
122
|
-
assert(!!username, `400::no nonce in store for ${code}`);
|
|
131
|
+
(0, assert_ts_1.assert)(!!username, `400::no nonce in store for ${code}`);
|
|
123
132
|
let user = personQuery((person) => {
|
|
124
|
-
assert(!!person.email, `500::no email defined on person scenario`);
|
|
133
|
+
(0, assert_ts_1.assert)(!!person.email, `500::no email defined on person scenario`);
|
|
125
134
|
let valid = person.email.toLowerCase() === username.toLowerCase();
|
|
126
135
|
if (typeof password === "undefined") {
|
|
127
136
|
return valid;
|
|
@@ -130,7 +139,7 @@ const verifyUserExistsInStore = ({ simulationStore, body, grant_type, }) => {
|
|
|
130
139
|
return valid && password === person.password;
|
|
131
140
|
}
|
|
132
141
|
});
|
|
133
|
-
assert(!!user, "401::Unauthorized");
|
|
142
|
+
(0, assert_ts_1.assert)(!!user, "401::Unauthorized");
|
|
134
143
|
return { user, nonce };
|
|
135
144
|
};
|
|
136
145
|
//# sourceMappingURL=oauth-handlers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-handlers.js","sourceRoot":"","sources":["../../src/handlers/oauth-handlers.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"oauth-handlers.js","sourceRoot":"","sources":["../../src/handlers/oauth-handlers.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAmC;AACnC,2CAA4D;AAC5D,6CAAuD;AACvD,2CAAoD;AACpD,8DAA6D;AAC7D,yCAA4D;AAW5D,+DAGkC;AAI3B,MAAM,YAAY,GAAG,KAgBzB,EAAE,4CAhB8B,EACjC,IAAI,EACJ,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,KAAK,EAAE,WAAW,EAClB,eAAe,GAShB;IACC,IAAI,EAAE,UAAU,EAAE,GAA8B,IAAI,CAAC;IACrD,IAAI,KAAK,GAAG,IAAA,sBAAW,EAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE7D,IAAI,WAAW,GAAG,IAAA,0BAAkB,EAAC,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3E,IAAI,IAA2B,CAAC;IAChC,IAAI,KAAyB,CAAC;IAE9B,IAAI,UAAU,KAAK,oBAAoB,EAAE,CAAC;QACxC,OAAO,EAAE,YAAY,EAAE,IAAA,2BAAkB,EAAC,WAAW,CAAC,EAAE,CAAC;IAC3D,CAAC;IACD,wCAAwC;SACnC,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;QACxC,IAAI,EAAE,aAAa,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;QAChD,IAAI,YAAY,GAAiB,IAAI,CAAC,KAAK,CAAC,IAAA,mBAAM,EAAC,iBAAiB,CAAC,CAAC,CAAC;QAEvE,IAAI,QAAQ,GAAG,IAAA,4BAAiB,EAAC,eAAe,CAAC,CAAC;QAElD,IAAI,GAAG,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEhE,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QAC3B,IAAA,kBAAM,EAAC,CAAC,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;IAC9C,CAAC;SAAM,CAAC;QACN,IAAI,MAAM,GAAG,uBAAuB,CAAC;YACnC,eAAe;YACf,IAAI;YACJ,UAAU;SACX,CAAC,CAAC;QAEH,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACnB,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACvB,CAAC;IAED,IAAA,kBAAM,EAAC,CAAC,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IAErC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAA,kBAAU,EAAC;QACzC,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,QAAQ;QACR,KAAK;KACN,CAAC,CAAC;IAEH,IAAI,OAAO,GAA0D;QACnE,QAAQ;QACR,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE;QAC5C,OAAO,EAAE,WAAW;KACrB,CAAC;IAEF,IAAI,WAAW,GAAG,IAAA,mCAAiB,EAAC,cAAc,CAAC,CAAC;IACpD,8BAA8B;IAC9B,MAAM,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAErC,OAAO;QACL,YAAY,EAAE,IAAA,2BAAkB,gDAC3B,WAAW,GACX,OAAO,CAAC,WAAW,GACnB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACpE;QACF,QAAQ,EAAE,IAAA,2BAAkB,kCACvB,QAAQ,GACR,OAAO,CAAC,OAAO,EAClB;QACF,aAAa,EAAE,IAAA,oCAAiB,EAAC,KAAK,EAAE,UAAU,CAAC;YACjD,CAAC,CAAC,IAAA,qCAAkB,EAAC;gBACjB,GAAG,EAAE,WAAW,CAAC,GAAG;gBACpB,SAAS,EAAE,CAAC;gBACZ,KAAK;gBACL,IAAI;gBACJ,KAAK;aACN,CAAC;YACJ,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC,CAAA,CAAC;AAzFW,QAAA,YAAY,gBAyFvB;AAEK,MAAM,UAAU,GAAG,CAAC,EACzB,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,QAAQ,EACR,KAAK,GAON,EAAE,EAAE;;IACH,IAAI,QAAQ,GAAa;QACvB,IAAI,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,mCAAI,IAAI,CAAC,IAAI;QAC7B,KAAK,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,mCAAI,IAAI,CAAC,KAAK;QAChC,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,mCAAI,IAAI,CAAC,EAAE;QAC5B,QAAQ,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ;QACxB,OAAO,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,mCAAI,IAAI,CAAC,OAAO;QACtC,UAAU,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU;KAC7B,CAAC;IAEF,IAAA,kBAAM,EAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC;IAE7D,IAAI,WAAW,GAAgB;QAC7B,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE,KAAK;QACV,GAAG;QACH,GAAG,EAAE,IAAA,mBAAS,GAAE;QAChB,GAAG,EAAE,IAAA,mBAAS,GAAE;QAChB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,EAAE,QAAQ;QACb,GAAG,EAAE,IAAI,CAAC,EAAE;KACb,CAAC;IAEF,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;QACjC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AACnC,CAAC,CAAC;AAzCW,QAAA,UAAU,cAyCrB;AAEK,MAAM,kBAAkB,GAAG,CAAC,EACjC,GAAG,EACH,UAAU,EACV,KAAK,EACL,QAAQ,GAMT,EAA+B,EAAE,CAAC,CAAC;IAClC,GAAG;IACH,GAAG,EAAE,IAAA,mBAAS,GAAE;IAChB,GAAG,EAAE,IAAA,mBAAS,GAAE;IAChB,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,UAAU;IACf,KAAK;CACN,CAAC,CAAC;AAjBU,QAAA,kBAAkB,sBAiB5B;AAEH,MAAM,uBAAuB,GAAG,CAAC,EAC/B,eAAe,EACf,IAAI,EACJ,UAAU,GAKX,EAAE,EAAE;IACH,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACpB,IAAI,WAAW,GAAG,IAAA,4BAAiB,EAAC,eAAe,CAAC,CAAC;IACrD,IAAI,KAAyB,CAAC;IAC9B,IAAI,QAAgB,CAAC;IACrB,IAAI,QAA4B,CAAC;IAEjC,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;QAC9B,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,mDAAmD;QACnD,2DAA2D;QAC3D,IAAA,kBAAM,EAAC,OAAO,IAAI,KAAK,WAAW,EAAE,8BAA8B,CAAC,CAAC;QACpE,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,mBAAY,EAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC;IAED,IAAA,kBAAM,EAAC,CAAC,CAAC,QAAQ,EAAE,8BAA8B,IAAI,EAAE,CAAC,CAAC;IAEzD,IAAI,IAAI,GAA0B,WAAW,CAAC,CAAC,MAAM,EAAE,EAAE;QACvD,IAAA,kBAAM,EAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,0CAA0C,CAAC,CAAC;QAEnE,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC;QAElE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,IAAI,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAA,kBAAM,EAAC,CAAC,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IAEpC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openid-handlers.d.ts","sourceRoot":"","sources":["../../src/handlers/openid-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIvD,KAAK,MAAM,GAAG,YAAY,GAAG,uBAAuB,CAAC;AAErD,MAAM,MAAM,YAAY,GAAG,GAAG,cAAc,GAAG,MAAM,EAAE,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"openid-handlers.d.ts","sourceRoot":"","sources":["../../src/handlers/openid-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIvD,KAAK,MAAM,GAAG,YAAY,GAAG,uBAAuB,CAAC;AAErD,MAAM,MAAM,YAAY,GAAG,GAAG,cAAc,GAAG,MAAM,EAAE,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,oBAAoB,GAC/B,YAAY,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,KACvC,MAAM,CAAC,YAAY,EAAE,cAAc,CAkBrC,CAAC"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createOpenIdHandlers = void 0;
|
|
4
|
+
const constants_ts_1 = require("../auth/constants.js");
|
|
5
|
+
const url_ts_1 = require("./url.js");
|
|
6
|
+
const createOpenIdHandlers = (serviceURL) => {
|
|
4
7
|
return {
|
|
5
8
|
["/.well-known/jwks.json"]: function (_, res) {
|
|
6
|
-
res.json(JWKS);
|
|
9
|
+
res.json(constants_ts_1.JWKS);
|
|
7
10
|
},
|
|
8
11
|
["/.well-known/openid-configuration"]: function (req, res) {
|
|
9
|
-
let url = removeTrailingSlash(serviceURL(req));
|
|
12
|
+
let url = (0, url_ts_1.removeTrailingSlash)(serviceURL(req));
|
|
10
13
|
res.json({
|
|
11
14
|
issuer: `${url}/`,
|
|
12
15
|
authorization_endpoint: [url, "authorize"].join("/"),
|
|
@@ -17,4 +20,5 @@ export const createOpenIdHandlers = (serviceURL) => {
|
|
|
17
20
|
},
|
|
18
21
|
};
|
|
19
22
|
};
|
|
23
|
+
exports.createOpenIdHandlers = createOpenIdHandlers;
|
|
20
24
|
//# sourceMappingURL=openid-handlers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openid-handlers.js","sourceRoot":"","sources":["../../src/handlers/openid-handlers.ts"],"names":[],"mappings":"AACA,
|
|
1
|
+
{"version":3,"file":"openid-handlers.js","sourceRoot":"","sources":["../../src/handlers/openid-handlers.ts"],"names":[],"mappings":";;;AACA,uDAA4C;AAC5C,qCAA+C;AAcxC,MAAM,oBAAoB,GAAG,CAClC,UAAwC,EACF,EAAE;IACxC,OAAO;QACL,CAAC,wBAAwB,CAAC,EAAE,UAAU,CAAC,EAAE,GAAG;YAC1C,GAAG,CAAC,IAAI,CAAC,mBAAI,CAAC,CAAC;QACjB,CAAC;QAED,CAAC,mCAAmC,CAAC,EAAE,UAAU,GAAG,EAAE,GAAG;YACvD,IAAI,GAAG,GAAG,IAAA,4BAAmB,EAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YAE/C,GAAG,CAAC,IAAI,CAAC;gBACP,MAAM,EAAE,GAAG,GAAG,GAAG;gBACjB,sBAAsB,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBACpD,cAAc,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBACjD,iBAAiB,EAAE,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC9C,QAAQ,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;aACtD,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AApBW,QAAA,oBAAoB,wBAoB/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/handlers/url.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/handlers/url.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,GAAI,KAAK,MAAM,KAAG,MAC1B,CAAC"}
|
package/dist/handlers/url.js
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.removeTrailingSlash = void 0;
|
|
4
|
+
const removeTrailingSlash = (url) => url.replace(/\/$/, "");
|
|
5
|
+
exports.removeTrailingSlash = removeTrailingSlash;
|
|
2
6
|
//# sourceMappingURL=url.js.map
|
package/dist/handlers/url.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/handlers/url.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/handlers/url.ts"],"names":[],"mappings":";;;AAAO,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAU,EAAE,CACzD,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AADZ,QAAA,mBAAmB,uBACP"}
|
package/dist/handlers/utils.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { ScopeConfig } from "../types";
|
|
2
|
-
import type { ExtendedSimulationStore } from "../store";
|
|
3
|
-
import type { Auth0User } from "../store/entities";
|
|
1
|
+
import type { ScopeConfig } from "../types.ts";
|
|
2
|
+
import type { ExtendedSimulationStore } from "../store/index.ts";
|
|
3
|
+
import type { Auth0User } from "../store/entities.ts";
|
|
4
4
|
type Predicate<T> = (this: void, value: T, index: number, obj: T[]) => boolean;
|
|
5
5
|
export declare const createPersonQuery: (store: ExtendedSimulationStore) => (predicate: Predicate<Auth0User>) => {
|
|
6
6
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/handlers/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/handlers/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC;AAE/E,eAAO,MAAM,iBAAiB,GAC3B,OAAO,uBAAuB,MAAM,WAAW,SAAS,CAAC,SAAS,CAAC;;;;;;aAGnE,CAAC;AAEJ,eAAO,MAAM,WAAW,GAAI,sCAIzB;IACD,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,WAuCA,CAAC"}
|
package/dist/handlers/utils.js
CHANGED
|
@@ -1,24 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deriveScope = exports.createPersonQuery = void 0;
|
|
4
|
+
const assert_ts_1 = require("assert-ts");
|
|
5
|
+
const createPersonQuery = (store) => (predicate) => {
|
|
3
6
|
const users = store.schema.users.selectTableAsList(store.store.getState());
|
|
4
7
|
return users.find(predicate);
|
|
5
8
|
};
|
|
6
|
-
|
|
9
|
+
exports.createPersonQuery = createPersonQuery;
|
|
10
|
+
const deriveScope = ({ scopeConfig, clientID, audience, }) => {
|
|
7
11
|
if (typeof scopeConfig === "string")
|
|
8
12
|
return scopeConfig;
|
|
9
13
|
let defaultScope = scopeConfig.find((application) => application.clientID === "default");
|
|
10
|
-
assert(!!clientID, `500::Did not have a clientID to derive the scope`);
|
|
14
|
+
(0, assert_ts_1.assert)(!!clientID, `500::Did not have a clientID to derive the scope`);
|
|
11
15
|
let application = scopeConfig.find((application) => application.clientID === clientID &&
|
|
12
16
|
(application.audience ? application.audience === audience : true));
|
|
13
17
|
if (!application) {
|
|
14
18
|
let ignoreAudience = scopeConfig.find((application) => application.clientID === clientID);
|
|
15
|
-
assert(ignoreAudience === undefined, `500::Found application matching clientID, ${ignoreAudience === null || ignoreAudience === void 0 ? void 0 : ignoreAudience.clientID}, but incorrect audience, configured: ${ignoreAudience === null || ignoreAudience === void 0 ? void 0 : ignoreAudience.audience} :: passed: ${audience}`);
|
|
19
|
+
(0, assert_ts_1.assert)(ignoreAudience === undefined, `500::Found application matching clientID, ${ignoreAudience === null || ignoreAudience === void 0 ? void 0 : ignoreAudience.clientID}, but incorrect audience, configured: ${ignoreAudience === null || ignoreAudience === void 0 ? void 0 : ignoreAudience.audience} :: passed: ${audience}`);
|
|
16
20
|
}
|
|
17
21
|
if (!application && defaultScope) {
|
|
18
22
|
application = defaultScope;
|
|
19
23
|
}
|
|
20
|
-
assert(!!application, `500::Could not find application with clientID: ${clientID}`);
|
|
21
|
-
assert(!!application.scope, `500::${application.clientID} is expected to have a scope`);
|
|
24
|
+
(0, assert_ts_1.assert)(!!application, `500::Could not find application with clientID: ${clientID}`);
|
|
25
|
+
(0, assert_ts_1.assert)(!!application.scope, `500::${application.clientID} is expected to have a scope`);
|
|
22
26
|
return application.scope;
|
|
23
27
|
};
|
|
28
|
+
exports.deriveScope = deriveScope;
|
|
24
29
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/handlers/utils.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/handlers/utils.ts"],"names":[],"mappings":";;;AAAA,yCAAmC;AAO5B,MAAM,iBAAiB,GAC5B,CAAC,KAA8B,EAAE,EAAE,CAAC,CAAC,SAA+B,EAAE,EAAE;IACtE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3E,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/B,CAAC,CAAC;AAJS,QAAA,iBAAiB,qBAI1B;AAEG,MAAM,WAAW,GAAG,CAAC,EAC1B,WAAW,EACX,QAAQ,EACR,QAAQ,GAKT,EAAE,EAAE;IACH,IAAI,OAAO,WAAW,KAAK,QAAQ;QAAE,OAAO,WAAW,CAAC;IACxD,IAAI,YAAY,GAAG,WAAW,CAAC,IAAI,CACjC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,KAAK,SAAS,CACpD,CAAC;IAEF,IAAA,kBAAM,EAAC,CAAC,CAAC,QAAQ,EAAE,kDAAkD,CAAC,CAAC;IAEvE,IAAI,WAAW,GAAG,WAAW,CAAC,IAAI,CAChC,CAAC,WAAW,EAAE,EAAE,CACd,WAAW,CAAC,QAAQ,KAAK,QAAQ;QACjC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CACpE,CAAC;IAEF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,IAAI,cAAc,GAAG,WAAW,CAAC,IAAI,CACnC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,KAAK,QAAQ,CACnD,CAAC;QACF,IAAA,kBAAM,EACJ,cAAc,KAAK,SAAS,EAC5B,6CAA6C,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,QAAQ,yCAAyC,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,QAAQ,eAAe,QAAQ,EAAE,CAChK,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,WAAW,IAAI,YAAY,EAAE,CAAC;QACjC,WAAW,GAAG,YAAY,CAAC;IAC7B,CAAC;IAED,IAAA,kBAAM,EACJ,CAAC,CAAC,WAAW,EACb,kDAAkD,QAAQ,EAAE,CAC7D,CAAC;IAEF,IAAA,kBAAM,EACJ,CAAC,CAAC,WAAW,CAAC,KAAK,EACnB,QAAQ,WAAW,CAAC,QAAQ,8BAA8B,CAC3D,CAAC;IAEF,OAAO,WAAW,CAAC,KAAK,CAAC;AAC3B,CAAC,CAAC;AA/CW,QAAA,WAAW,eA+CtB"}
|
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createWebMessageHandler = void 0;
|
|
4
|
+
const assert_ts_1 = require("assert-ts");
|
|
5
|
+
const base64_url_1 = require("base64-url");
|
|
6
|
+
const web_message_ts_1 = require("../views/web-message.js");
|
|
7
|
+
const createWebMessageHandler = () => function (req, res) {
|
|
8
|
+
(0, assert_ts_1.assert)(!!(req === null || req === void 0 ? void 0 : req.session), "no session");
|
|
6
9
|
let username = req.session.username;
|
|
7
|
-
assert(!!username, `no username in authorise`);
|
|
10
|
+
(0, assert_ts_1.assert)(!!username, `no username in authorise`);
|
|
8
11
|
let { redirect_uri, state, nonce } = req.query;
|
|
9
12
|
res.set("Content-Type", "text/html");
|
|
10
|
-
let message = webMessage({
|
|
11
|
-
code: encode(`${nonce}:${username}`),
|
|
13
|
+
let message = (0, web_message_ts_1.webMessage)({
|
|
14
|
+
code: (0, base64_url_1.encode)(`${nonce}:${username}`),
|
|
12
15
|
state,
|
|
13
16
|
redirect_uri,
|
|
14
17
|
nonce,
|
|
15
18
|
});
|
|
16
19
|
res.status(200).send(Buffer.from(message));
|
|
17
20
|
};
|
|
21
|
+
exports.createWebMessageHandler = createWebMessageHandler;
|
|
18
22
|
//# sourceMappingURL=web-message.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-message.js","sourceRoot":"","sources":["../../src/handlers/web-message.ts"],"names":[],"mappings":"AACA,
|
|
1
|
+
{"version":3,"file":"web-message.js","sourceRoot":"","sources":["../../src/handlers/web-message.ts"],"names":[],"mappings":";;;AACA,yCAAmC;AACnC,2CAAoC;AAEpC,4DAAqD;AAE9C,MAAM,uBAAuB,GAAG,GAAmB,EAAE,CAC1D,UAAU,GAAG,EAAE,GAAG;IAChB,IAAA,kBAAM,EAAC,CAAC,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAA,EAAE,YAAY,CAAC,CAAC;IAErC,IAAI,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;IAEpC,IAAA,kBAAM,EAAC,CAAC,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC;IAE/C,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAoB,CAAC;IAE9D,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAErC,IAAI,OAAO,GAAG,IAAA,2BAAU,EAAC;QACvB,IAAI,EAAE,IAAA,mBAAM,EAAC,GAAG,KAAK,IAAI,QAAQ,EAAE,CAAC;QACpC,KAAK;QACL,YAAY;QACZ,KAAK;KACN,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC;AApBS,QAAA,uBAAuB,2BAoBhC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createFoundationSimulationServer, type SimulationHandlers, type FoundationSimulator } from "@simulacrum/foundation-simulator";
|
|
2
|
-
import { ExtendedSimulationStore } from "./store/index";
|
|
3
|
-
import { type Auth0InitialStore } from "./store/entities";
|
|
4
|
-
import { Auth0Configuration } from "./types";
|
|
2
|
+
import { ExtendedSimulationStore } from "./store/index.ts";
|
|
3
|
+
import { type Auth0InitialStore } from "./store/entities.ts";
|
|
4
|
+
import { Auth0Configuration } from "./types.ts";
|
|
5
5
|
export type Auth0Simulator = ({ initialState, extend, options, }?: {
|
|
6
6
|
initialState?: Auth0InitialStore;
|
|
7
7
|
extend?: {
|
|
@@ -13,5 +13,5 @@ export type Auth0Simulator = ({ initialState, extend, options, }?: {
|
|
|
13
13
|
}) => ReturnType<FoundationSimulator<ExtendedSimulationStore>>;
|
|
14
14
|
type SimulationInput = Parameters<typeof createFoundationSimulationServer>[0];
|
|
15
15
|
export declare const simulation: Auth0Simulator;
|
|
16
|
-
export { auth0UserSchema, defaultUser } from "./store/entities";
|
|
16
|
+
export { auth0UserSchema, defaultUser } from "./store/entities.ts";
|
|
17
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACzB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAe,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACzB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAe,MAAM,kBAAkB,CAAC;AAExE,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,cAAc,GAAG,CAAC,EAC5B,YAAY,EACZ,MAAM,EACN,OAAO,GACR,CAAC,EAAE;IACF,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,MAAM,CAAC,EAAE;QACP,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;QAC7C,eAAe,CAAC,EAAE,CAChB,eAAe,EAAE,uBAAuB,KACrC,kBAAkB,CAAC;QACxB,YAAY,CAAC,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC;KAChD,CAAC;IACF,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACvC,KAAK,UAAU,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,CAAC,CAAC;AAE/D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,eAAO,MAAM,UAAU,EAAE,cAWxB,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,20 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultUser = exports.auth0UserSchema = exports.simulation = void 0;
|
|
4
|
+
const foundation_simulator_1 = require("@simulacrum/foundation-simulator");
|
|
5
|
+
const index_ts_1 = require("./store/index.js");
|
|
6
|
+
const index_ts_2 = require("./handlers/index.js");
|
|
7
|
+
const entities_ts_1 = require("./store/entities.js");
|
|
8
|
+
const get_config_ts_1 = require("./config/get-config.js");
|
|
9
|
+
const simulation = (args = {}) => {
|
|
7
10
|
var _a;
|
|
8
|
-
const config = getConfig(args.options);
|
|
11
|
+
const config = (0, get_config_ts_1.getConfig)(args.options);
|
|
9
12
|
const parsedInitialState = !(args === null || args === void 0 ? void 0 : args.initialState)
|
|
10
13
|
? undefined
|
|
11
|
-
: auth0InitialStoreSchema.parse(args === null || args === void 0 ? void 0 : args.initialState);
|
|
12
|
-
return createFoundationSimulationServer({
|
|
14
|
+
: entities_ts_1.auth0InitialStoreSchema.parse(args === null || args === void 0 ? void 0 : args.initialState);
|
|
15
|
+
return (0, foundation_simulator_1.createFoundationSimulationServer)({
|
|
13
16
|
port: 4400, // default port
|
|
14
17
|
protocol: "https",
|
|
15
|
-
extendStore: extendStore(parsedInitialState, (_a = args === null || args === void 0 ? void 0 : args.extend) === null || _a === void 0 ? void 0 : _a.extendStore),
|
|
16
|
-
extendRouter: extendRouter(config),
|
|
18
|
+
extendStore: (0, index_ts_1.extendStore)(parsedInitialState, (_a = args === null || args === void 0 ? void 0 : args.extend) === null || _a === void 0 ? void 0 : _a.extendStore),
|
|
19
|
+
extendRouter: (0, index_ts_2.extendRouter)(config),
|
|
17
20
|
})();
|
|
18
21
|
};
|
|
19
|
-
|
|
22
|
+
exports.simulation = simulation;
|
|
23
|
+
var entities_ts_2 = require("./store/entities.js");
|
|
24
|
+
Object.defineProperty(exports, "auth0UserSchema", { enumerable: true, get: function () { return entities_ts_2.auth0UserSchema; } });
|
|
25
|
+
Object.defineProperty(exports, "defaultUser", { enumerable: true, get: function () { return entities_ts_2.defaultUser; } });
|
|
20
26
|
//# 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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2EAI0C;AAC1C,+CAAwE;AACxE,kDAAmD;AACnD,qDAG6B;AAC7B,0DAAmD;AAoB5C,MAAM,UAAU,GAAmB,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE;;IACtD,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,kBAAkB,GAAG,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,CAAA;QAC5C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,qCAAuB,CAAC,KAAK,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,CAAC,CAAC;IACtD,OAAO,IAAA,uDAAgC,EAAC;QACtC,IAAI,EAAE,IAAI,EAAE,eAAe;QAC3B,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,IAAA,sBAAW,EAAC,kBAAkB,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,0CAAE,WAAW,CAAC;QACvE,YAAY,EAAE,IAAA,uBAAY,EAAC,MAAM,CAAC;KACnC,CAAC,EAAE,CAAC;AACP,CAAC,CAAC;AAXW,QAAA,UAAU,cAWrB;AAEF,mDAAmE;AAA1D,8GAAA,eAAe,OAAA;AAAE,0GAAA,WAAW,OAAA"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createCors = void 0;
|
|
7
|
+
const cors_1 = __importDefault(require("cors"));
|
|
8
|
+
const createCors = () => (0, cors_1.default)({
|
|
3
9
|
origin: (origin, cb) => {
|
|
4
10
|
if (typeof origin === "string") {
|
|
5
11
|
return cb(null, [origin]);
|
|
@@ -8,4 +14,5 @@ export const createCors = () => cors({
|
|
|
8
14
|
},
|
|
9
15
|
credentials: true,
|
|
10
16
|
});
|
|
17
|
+
exports.createCors = createCors;
|
|
11
18
|
//# sourceMappingURL=create-cors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-cors.js","sourceRoot":"","sources":["../../src/middleware/create-cors.ts"],"names":[],"mappings":"AACA,
|
|
1
|
+
{"version":3,"file":"create-cors.js","sourceRoot":"","sources":["../../src/middleware/create-cors.ts"],"names":[],"mappings":";;;;;;AACA,gDAAwB;AAEjB,MAAM,UAAU,GAAG,GAAmB,EAAE,CAC7C,IAAA,cAAI,EAAC;IACH,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;QACrB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5B,CAAC;QAED,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,WAAW,EAAE,IAAI;CAClB,CAAC,CAAC;AAVQ,QAAA,UAAU,cAUlB"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultErrorHandler = defaultErrorHandler;
|
|
4
|
+
function defaultErrorHandler(error, _req, res, next) {
|
|
2
5
|
var _a;
|
|
3
6
|
if (res.headersSent) {
|
|
4
7
|
return next(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-handling.js","sourceRoot":"","sources":["../../src/middleware/error-handling.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"error-handling.js","sourceRoot":"","sources":["../../src/middleware/error-handling.ts"],"names":[],"mappings":";;AAEA,kDAiCC;AAjCD,SAAgB,mBAAmB,CACjC,KAAY,EACZ,IAAa,EACb,GAAa,EACb,IAAkB;;IAElB,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,IAAI,eAAe,GAAG,2BAA2B,CAAC;IAElD,IAAI,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChD,IAAI,SAAS,GAAG,GAAG,CAAC;QACpB,IAAI,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC;QAElC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,IAAI,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAC/D,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,KAAK,EAAE;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.noCache = void 0;
|
|
4
|
+
const noCache = () => (_, res, next) => {
|
|
2
5
|
res.set("Pragma", "no-cache");
|
|
3
6
|
res.set("Cache-Control", "no-cache, no-store");
|
|
4
7
|
next();
|
|
5
8
|
};
|
|
9
|
+
exports.noCache = noCache;
|
|
6
10
|
//# sourceMappingURL=no-cache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-cache.js","sourceRoot":"","sources":["../../src/middleware/no-cache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"no-cache.js","sourceRoot":"","sources":["../../src/middleware/no-cache.ts"],"names":[],"mappings":";;;AAEO,MAAM,OAAO,GAAyB,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAClE,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC9B,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;IAC/C,IAAI,EAAE,CAAC;AACT,CAAC,CAAC;AAJW,QAAA,OAAO,WAIlB"}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createSession = void 0;
|
|
7
|
+
const cookie_session_1 = __importDefault(require("cookie-session"));
|
|
2
8
|
const twentyFourHours = 24 * 60 * 60 * 1000;
|
|
3
|
-
|
|
4
|
-
return
|
|
9
|
+
const createSession = () => {
|
|
10
|
+
return (0, cookie_session_1.default)({
|
|
5
11
|
name: "session",
|
|
6
12
|
keys: ["shhh"],
|
|
7
13
|
secure: true,
|
|
@@ -10,4 +16,5 @@ export const createSession = () => {
|
|
|
10
16
|
sameSite: "none",
|
|
11
17
|
});
|
|
12
18
|
};
|
|
19
|
+
exports.createSession = createSession;
|
|
13
20
|
//# sourceMappingURL=session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/middleware/session.ts"],"names":[],"mappings":"AACA,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/middleware/session.ts"],"names":[],"mappings":";;;;;;AACA,oEAA2C;AAC3C,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAErC,MAAM,aAAa,GAAG,GAAmB,EAAE;IAChD,OAAO,IAAA,wBAAa,EAAC;QACnB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,eAAe;QACvB,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;AACL,CAAC,CAAC;AATW,QAAA,aAAa,iBASxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensionless-file-name.d.ts","sourceRoot":"","sources":["../../src/rules/extensionless-file-name.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"extensionless-file-name.d.ts","sourceRoot":"","sources":["../../src/rules/extensionless-file-name.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,GAAI,UAAU,MAAM,KAAG,MAGT,CAAC"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extensionlessFileName = void 0;
|
|
4
|
+
const extensionlessFileName = (fileName) => fileName.indexOf(".") === -1
|
|
2
5
|
? fileName
|
|
3
6
|
: fileName.split(".").slice(0, -1).join(".");
|
|
7
|
+
exports.extensionlessFileName = extensionlessFileName;
|
|
4
8
|
//# sourceMappingURL=extensionless-file-name.js.map
|