@dbx-tools/tunnel 0.6.97 → 0.6.98
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/src/login-page.js +20 -7
- package/package.json +8 -8
- package/src/login-page.ts +19 -6
package/lib/src/login-page.js
CHANGED
|
@@ -117,6 +117,13 @@ export function loginPageHtml(options) {
|
|
|
117
117
|
return { ok: res.ok, status: res.status, data: data };
|
|
118
118
|
}
|
|
119
119
|
|
|
120
|
+
function errorText(data, fallback) {
|
|
121
|
+
// better-auth error shape: { message } or { error: { message } }.
|
|
122
|
+
if (data && data.error && data.error.message) return data.error.message;
|
|
123
|
+
if (data && data.message) return data.message;
|
|
124
|
+
return fallback;
|
|
125
|
+
}
|
|
126
|
+
|
|
120
127
|
emailForm.addEventListener("submit", async function (e) {
|
|
121
128
|
e.preventDefault();
|
|
122
129
|
email = emailInput.value.trim();
|
|
@@ -125,14 +132,15 @@ export function loginPageHtml(options) {
|
|
|
125
132
|
submit.disabled = true;
|
|
126
133
|
say("Sending…");
|
|
127
134
|
try {
|
|
128
|
-
|
|
129
|
-
|
|
135
|
+
// better-auth emailOTP native endpoint.
|
|
136
|
+
var r = await post("/email-otp/send-verification-otp", { email: email, type: "sign-in" });
|
|
137
|
+
if (r.ok) {
|
|
130
138
|
emailForm.classList.add("hidden");
|
|
131
139
|
codeForm.classList.remove("hidden");
|
|
132
140
|
codeInput.focus();
|
|
133
141
|
say("We emailed a code to " + email + ".");
|
|
134
142
|
} else {
|
|
135
|
-
say(r.data
|
|
143
|
+
say(errorText(r.data, "Could not send a code. Check the address and try again."), true);
|
|
136
144
|
}
|
|
137
145
|
} catch (_e) {
|
|
138
146
|
say("Network error. Try again.", true);
|
|
@@ -149,14 +157,19 @@ export function loginPageHtml(options) {
|
|
|
149
157
|
submit.disabled = true;
|
|
150
158
|
say("Verifying…");
|
|
151
159
|
try {
|
|
152
|
-
|
|
153
|
-
|
|
160
|
+
// better-auth sign-in with the OTP; sets the session cookie on success.
|
|
161
|
+
var r = await post("/sign-in/email-otp", {
|
|
162
|
+
email: email,
|
|
163
|
+
otp: code,
|
|
164
|
+
name: email.split("@")[0],
|
|
165
|
+
});
|
|
166
|
+
if (r.ok) {
|
|
154
167
|
say("Signed in. Loading…");
|
|
155
168
|
// The session cookie is set; reload so the now-authenticated request
|
|
156
169
|
// reaches the app.
|
|
157
170
|
window.location.reload();
|
|
158
171
|
} else {
|
|
159
|
-
say(r.data
|
|
172
|
+
say(errorText(r.data, "That code was not accepted. Try again."), true);
|
|
160
173
|
submit.disabled = false;
|
|
161
174
|
}
|
|
162
175
|
} catch (_e) {
|
|
@@ -187,4 +200,4 @@ const HTML_ESCAPES = {
|
|
|
187
200
|
function escapeHtml(value) {
|
|
188
201
|
return value.replace(/[&<>"']/g, (ch) => HTML_ESCAPES[ch] ?? ch);
|
|
189
202
|
}
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tcGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2dpbi1wYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQU94QyxxRkFBcUY7QUFDckYsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUF5QjtJQUNyRCxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLDZFQUE2RTtJQUM3RSwwREFBMEQ7SUFDMUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQyxPQUFPOzs7OzttQkFLVSxLQUFLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBNkNILEtBQUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkFxQlQsTUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1FBb0ZmLENBQUM7QUFDVCxDQUFDO0FBRUQsTUFBTSxZQUFZLEdBQTJCO0lBQzNDLEdBQUcsRUFBRSxPQUFPO0lBQ1osR0FBRyxFQUFFLE1BQU07SUFDWCxHQUFHLEVBQUUsTUFBTTtJQUNYLEdBQUcsRUFBRSxRQUFRO0lBQ2IsR0FBRyxFQUFFLE9BQU87Q0FDYixDQUFDO0FBRUYsU0FBUyxVQUFVLENBQUMsS0FBYTtJQUMvQixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDbkUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBzZWxmLWNvbnRhaW5lZCBIVE1MIGxvZ2luIHBhZ2UgdGhlIHR1bm5lbCBzZXJ2ZXMgaW4gZnJvbnQgb2YgYW4gYXBwIHRoYXRcbiAqIGRvZXMgbm90IGVtYmVkIHRoZSBgPEF1dGhHYXRlPmAgUmVhY3QgY29tcG9uZW50IChlLmcuIGEgV2ViU29ja2V0IGFwcCBmcm9udGVkXG4gKiBieSB0aGUgQ0xJIHByb3h5KS5cbiAqXG4gKiBJdCBzcGVha3MgdGhlIHNhbWUgY29tcGF0aWJpbGl0eSBlbmRwb2ludHMgdW5kZXIge0BsaW5rIEFVVEhfUFJFRklYfSB0aGF0IHRoZVxuICogUmVhY3QgY2xpZW50IHVzZXMg4oCUIGBQT1NUIC9yZXF1ZXN0YCB0byBlbWFpbCBhIGNvZGUsIGBQT1NUIC92ZXJpZnlgIHRvXG4gKiBleGNoYW5nZSBpdCBmb3IgdGhlIGBkYngtdG9vbHMtYXV0aGAgc2Vzc2lvbiBjb29raWUg4oCUIHdpdGggcGxhaW4gYGZldGNoYCwgbm9cbiAqIGJ1aWxkIHN0ZXAgYW5kIG5vIGRlcGVuZGVuY3kuIFBhc3NrZXlzIGFyZSBpbnRlbnRpb25hbGx5IG9taXR0ZWQ6IHRoZSBXZWJBdXRoblxuICogY2VyZW1vbnkgbmVlZHMgdGhlIGJldHRlci1hdXRoIGNsaWVudCBsaWJyYXJ5LCBzbyBwYXNza2V5IGVucm9sbG1lbnQgaGFwcGVuc1xuICogaW5zaWRlIHRoZSBhcHAgYWZ0ZXIgdGhpcyBlbWFpbC1PVFAgc2lnbi1pbi4gT24gc3VjY2VzcyB0aGUgcGFnZSByZWxvYWRzLCBhbmRcbiAqIHRoZSBub3ctYXV0aGVudGljYXRlZCByZXF1ZXN0IHJlYWNoZXMgdGhlIGFwcC5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgQVVUSF9QUkVGSVggfSBmcm9tIFwiLi9nYXRlLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9naW5QYWdlT3B0aW9ucyB7XG4gIC8qKiBQcm9kdWN0L2JyYW5kIG5hbWUgc2hvd24gaW4gdGhlIGhlYWRpbmcuICovXG4gIGJyYW5kTmFtZTogc3RyaW5nO1xufVxuXG4vKiogVGhlIGxvZ2luIHBhZ2UgSFRNTCBmb3IgYSBgdGV4dC9odG1sYCByZXF1ZXN0IHRvIGEgZ2F0ZWQgcGF0aCB3aXRoIG5vIHNlc3Npb24uICovXG5leHBvcnQgZnVuY3Rpb24gbG9naW5QYWdlSHRtbChvcHRpb25zOiBMb2dpblBhZ2VPcHRpb25zKTogc3RyaW5nIHtcbiAgY29uc3QgYnJhbmQgPSBlc2NhcGVIdG1sKG9wdGlvbnMuYnJhbmROYW1lKTtcbiAgLy8gQVVUSF9QUkVGSVggaXMgYSBmaXhlZCBjb25zdGFudCwgbm90IHVzZXIgaW5wdXQsIGJ1dCBKU09OLWVuY29kZSBpdCBzbyB0aGVcbiAgLy8gaW5saW5lZCBzY3JpcHQgaXMgYWx3YXlzIHZhbGlkIHJlZ2FyZGxlc3Mgb2YgaXRzIHZhbHVlLlxuICBjb25zdCBwcmVmaXggPSBKU09OLnN0cmluZ2lmeShBVVRIX1BSRUZJWCk7XG4gIHJldHVybiBgPCFkb2N0eXBlIGh0bWw+XG48aHRtbCBsYW5nPVwiZW5cIj5cbjxoZWFkPlxuPG1ldGEgY2hhcnNldD1cInV0Zi04XCI+XG48bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTFcIj5cbjx0aXRsZT5TaWduIGluIOKAlCAke2JyYW5kfTwvdGl0bGU+XG48c3R5bGU+XG4gIDpyb290IHtcbiAgICBjb2xvci1zY2hlbWU6IGxpZ2h0IGRhcms7XG4gICAgLS1iZzogI2ZmZmZmZjsgLS1mZzogIzFiMWIxZjsgLS1tdXRlZDogIzZiNzI4MDsgLS1ib3JkZXI6ICNkOWRjZTE7XG4gICAgLS1hY2NlbnQ6ICMxYTczZTg7IC0tYWNjZW50LWZnOiAjZmZmZmZmOyAtLWVycm9yOiAjYzUyMjFmOyAtLWZpZWxkOiAjZmZmZmZmO1xuICB9XG4gIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgICA6cm9vdCB7XG4gICAgICAtLWJnOiAjMTYxODFkOyAtLWZnOiAjZThlNmRmOyAtLW11dGVkOiAjOWFhMGFhOyAtLWJvcmRlcjogIzJjMmYzNjtcbiAgICAgIC0tYWNjZW50OiAjNGM4ZGZmOyAtLWFjY2VudC1mZzogIzBiMGYxOTsgLS1lcnJvcjogI2ZmNmI2MDsgLS1maWVsZDogIzFlMjEyODtcbiAgICB9XG4gIH1cbiAgKiB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cbiAgYm9keSB7XG4gICAgbWFyZ2luOiAwOyBtaW4taGVpZ2h0OiAxMDB2aDsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYmFja2dyb3VuZDogdmFyKC0tYmcpOyBjb2xvcjogdmFyKC0tZmcpO1xuICAgIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIFwiU2Vnb2UgVUlcIiwgc2Fucy1zZXJpZjsgcGFkZGluZzogMjRweDtcbiAgfVxuICAuY2FyZCB7XG4gICAgd2lkdGg6IDEwMCU7IG1heC13aWR0aDogMzYwcHg7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogMTRweDsgcGFkZGluZzogMjhweDsgYmFja2dyb3VuZDogdmFyKC0tYmcpO1xuICB9XG4gIGgxIHsgZm9udC1zaXplOiAxOHB4OyBtYXJnaW46IDAgMCA0cHg7IH1cbiAgcC5zdWIgeyBtYXJnaW46IDAgMCAyMHB4OyBjb2xvcjogdmFyKC0tbXV0ZWQpOyBmb250LXNpemU6IDEzcHg7IH1cbiAgbGFiZWwgeyBkaXNwbGF5OiBibG9jazsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogdmFyKC0tbXV0ZWQpOyBtYXJnaW46IDAgMCA2cHg7IH1cbiAgaW5wdXQge1xuICAgIHdpZHRoOiAxMDAlOyBwYWRkaW5nOiAxMHB4IDEycHg7IGZvbnQtc2l6ZTogMTVweDsgYm9yZGVyLXJhZGl1czogOXB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJhY2tncm91bmQ6IHZhcigtLWZpZWxkKTsgY29sb3I6IHZhcigtLWZnKTtcbiAgfVxuICBpbnB1dDpmb2N1cyB7IG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1hY2NlbnQpOyBvdXRsaW5lLW9mZnNldDogLTFweDsgfVxuICBidXR0b24ge1xuICAgIHdpZHRoOiAxMDAlOyBtYXJnaW4tdG9wOiAxNnB4OyBwYWRkaW5nOiAxMHB4IDEycHg7IGZvbnQtc2l6ZTogMTVweDtcbiAgICBmb250LXdlaWdodDogNjAwOyBib3JkZXI6IDA7IGJvcmRlci1yYWRpdXM6IDlweDsgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50KTtcbiAgICBjb2xvcjogdmFyKC0tYWNjZW50LWZnKTsgY3Vyc29yOiBwb2ludGVyO1xuICB9XG4gIGJ1dHRvbjpkaXNhYmxlZCB7IG9wYWNpdHk6IDAuNjsgY3Vyc29yOiBkZWZhdWx0OyB9XG4gIC5tc2cgeyBtYXJnaW4tdG9wOiAxNHB4OyBmb250LXNpemU6IDEzcHg7IG1pbi1oZWlnaHQ6IDE4cHg7IH1cbiAgLm1zZy5lcnJvciB7IGNvbG9yOiB2YXIoLS1lcnJvcik7IH1cbiAgLmhpZGRlbiB7IGRpc3BsYXk6IG5vbmU7IH1cbiAgLmJhY2sgeyBiYWNrZ3JvdW5kOiBub25lOyBjb2xvcjogdmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDogNDAwOyBtYXJnaW4tdG9wOiA4cHg7IH1cbjwvc3R5bGU+XG48L2hlYWQ+XG48Ym9keT5cbiAgPG1haW4gY2xhc3M9XCJjYXJkXCI+XG4gICAgPGgxPlNpZ24gaW4gdG8gJHticmFuZH08L2gxPlxuICAgIDxwIGNsYXNzPVwic3ViXCI+RW50ZXIgeW91ciBlbWFpbCB0byByZWNlaXZlIGEgb25lLXRpbWUgY29kZS48L3A+XG5cbiAgICA8Zm9ybSBpZD1cImVtYWlsLWZvcm1cIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJlbWFpbFwiPkVtYWlsPC9sYWJlbD5cbiAgICAgIDxpbnB1dCBpZD1cImVtYWlsXCIgbmFtZT1cImVtYWlsXCIgdHlwZT1cImVtYWlsXCIgYXV0b2NvbXBsZXRlPVwiZW1haWxcIiByZXF1aXJlZCBhdXRvZm9jdXM+XG4gICAgICA8YnV0dG9uIGlkPVwiZW1haWwtc3VibWl0XCIgdHlwZT1cInN1Ym1pdFwiPlNlbmQgY29kZTwvYnV0dG9uPlxuICAgIDwvZm9ybT5cblxuICAgIDxmb3JtIGlkPVwiY29kZS1mb3JtXCIgY2xhc3M9XCJoaWRkZW5cIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJjb2RlXCI+VmVyaWZpY2F0aW9uIGNvZGU8L2xhYmVsPlxuICAgICAgPGlucHV0IGlkPVwiY29kZVwiIG5hbWU9XCJjb2RlXCIgaW5wdXRtb2RlPVwibnVtZXJpY1wiIGF1dG9jb21wbGV0ZT1cIm9uZS10aW1lLWNvZGVcIiByZXF1aXJlZD5cbiAgICAgIDxidXR0b24gaWQ9XCJjb2RlLXN1Ym1pdFwiIHR5cGU9XCJzdWJtaXRcIj5WZXJpZnk8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gaWQ9XCJiYWNrXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYmFja1wiPlVzZSBhIGRpZmZlcmVudCBlbWFpbDwvYnV0dG9uPlxuICAgIDwvZm9ybT5cblxuICAgIDxkaXYgaWQ9XCJtc2dcIiBjbGFzcz1cIm1zZ1wiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj48L2Rpdj5cbiAgPC9tYWluPlxuXG48c2NyaXB0PlxuKGZ1bmN0aW9uICgpIHtcbiAgdmFyIFBSRUZJWCA9ICR7cHJlZml4fTtcbiAgdmFyIGVtYWlsRm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZW1haWwtZm9ybVwiKTtcbiAgdmFyIGNvZGVGb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb2RlLWZvcm1cIik7XG4gIHZhciBlbWFpbElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJlbWFpbFwiKTtcbiAgdmFyIGNvZGVJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29kZVwiKTtcbiAgdmFyIGJhY2sgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImJhY2tcIik7XG4gIHZhciBtc2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm1zZ1wiKTtcbiAgdmFyIGVtYWlsID0gXCJcIjtcblxuICBmdW5jdGlvbiBzYXkodGV4dCwgaXNFcnJvcikge1xuICAgIG1zZy50ZXh0Q29udGVudCA9IHRleHQgfHwgXCJcIjtcbiAgICBtc2cuY2xhc3NOYW1lID0gXCJtc2dcIiArIChpc0Vycm9yID8gXCIgZXJyb3JcIiA6IFwiXCIpO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcG9zdChwYXRoLCBib2R5KSB7XG4gICAgdmFyIHJlcyA9IGF3YWl0IGZldGNoKFBSRUZJWCArIHBhdGgsIHtcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICBjcmVkZW50aWFsczogXCJpbmNsdWRlXCIsXG4gICAgICBoZWFkZXJzOiB7IFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShib2R5KSxcbiAgICB9KTtcbiAgICB2YXIgZGF0YSA9IHt9O1xuICAgIHRyeSB7IGRhdGEgPSBhd2FpdCByZXMuanNvbigpOyB9IGNhdGNoIChfZSkgeyAvKiBub24tSlNPTiAqLyB9XG4gICAgcmV0dXJuIHsgb2s6IHJlcy5vaywgc3RhdHVzOiByZXMuc3RhdHVzLCBkYXRhOiBkYXRhIH07XG4gIH1cblxuICBlbWFpbEZvcm0uYWRkRXZlbnRMaXN0ZW5lcihcInN1Ym1pdFwiLCBhc3luYyBmdW5jdGlvbiAoZSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlbWFpbCA9IGVtYWlsSW5wdXQudmFsdWUudHJpbSgpO1xuICAgIGlmICghZW1haWwpIHJldHVybjtcbiAgICB2YXIgc3VibWl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJlbWFpbC1zdWJtaXRcIik7XG4gICAgc3VibWl0LmRpc2FibGVkID0gdHJ1ZTtcbiAgICBzYXkoXCJTZW5kaW5n4oCmXCIpO1xuICAgIHRyeSB7XG4gICAgICB2YXIgciA9IGF3YWl0IHBvc3QoXCIvcmVxdWVzdFwiLCB7IGVtYWlsOiBlbWFpbCB9KTtcbiAgICAgIGlmIChyLm9rICYmIHIuZGF0YS5vaykge1xuICAgICAgICBlbWFpbEZvcm0uY2xhc3NMaXN0LmFkZChcImhpZGRlblwiKTtcbiAgICAgICAgY29kZUZvcm0uY2xhc3NMaXN0LnJlbW92ZShcImhpZGRlblwiKTtcbiAgICAgICAgY29kZUlucHV0LmZvY3VzKCk7XG4gICAgICAgIHNheShcIldlIGVtYWlsZWQgYSBjb2RlIHRvIFwiICsgZW1haWwgKyBcIi5cIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzYXkoci5kYXRhLmVycm9yIHx8IFwiQ291bGQgbm90IHNlbmQgYSBjb2RlLiBDaGVjayB0aGUgYWRkcmVzcyBhbmQgdHJ5IGFnYWluLlwiLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChfZSkge1xuICAgICAgc2F5KFwiTmV0d29yayBlcnJvci4gVHJ5IGFnYWluLlwiLCB0cnVlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc3VibWl0LmRpc2FibGVkID0gZmFsc2U7XG4gICAgfVxuICB9KTtcblxuICBjb2RlRm9ybS5hZGRFdmVudExpc3RlbmVyKFwic3VibWl0XCIsIGFzeW5jIGZ1bmN0aW9uIChlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHZhciBjb2RlID0gY29kZUlucHV0LnZhbHVlLnRyaW0oKTtcbiAgICBpZiAoIWNvZGUpIHJldHVybjtcbiAgICB2YXIgc3VibWl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb2RlLXN1Ym1pdFwiKTtcbiAgICBzdWJtaXQuZGlzYWJsZWQgPSB0cnVlO1xuICAgIHNheShcIlZlcmlmeWluZ+KAplwiKTtcbiAgICB0cnkge1xuICAgICAgdmFyIHIgPSBhd2FpdCBwb3N0KFwiL3ZlcmlmeVwiLCB7IGVtYWlsOiBlbWFpbCwgY29kZTogY29kZSB9KTtcbiAgICAgIGlmIChyLm9rICYmIHIuZGF0YS5vaykge1xuICAgICAgICBzYXkoXCJTaWduZWQgaW4uIExvYWRpbmfigKZcIik7XG4gICAgICAgIC8vIFRoZSBzZXNzaW9uIGNvb2tpZSBpcyBzZXQ7IHJlbG9hZCBzbyB0aGUgbm93LWF1dGhlbnRpY2F0ZWQgcmVxdWVzdFxuICAgICAgICAvLyByZWFjaGVzIHRoZSBhcHAuXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNheShyLmRhdGEuZXJyb3IgfHwgXCJUaGF0IGNvZGUgd2FzIG5vdCBhY2NlcHRlZC4gVHJ5IGFnYWluLlwiLCB0cnVlKTtcbiAgICAgICAgc3VibWl0LmRpc2FibGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoX2UpIHtcbiAgICAgIHNheShcIk5ldHdvcmsgZXJyb3IuIFRyeSBhZ2Fpbi5cIiwgdHJ1ZSk7XG4gICAgICBzdWJtaXQuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICB9XG4gIH0pO1xuXG4gIGJhY2suYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICBjb2RlRm9ybS5jbGFzc0xpc3QuYWRkKFwiaGlkZGVuXCIpO1xuICAgIGVtYWlsRm9ybS5jbGFzc0xpc3QucmVtb3ZlKFwiaGlkZGVuXCIpO1xuICAgIGNvZGVJbnB1dC52YWx1ZSA9IFwiXCI7XG4gICAgc2F5KFwiXCIpO1xuICAgIGVtYWlsSW5wdXQuZm9jdXMoKTtcbiAgfSk7XG59KSgpO1xuPC9zY3JpcHQ+XG48L2JvZHk+XG48L2h0bWw+YDtcbn1cblxuY29uc3QgSFRNTF9FU0NBUEVTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBcIiZcIjogXCImYW1wO1wiLFxuICBcIjxcIjogXCImbHQ7XCIsXG4gIFwiPlwiOiBcIiZndDtcIixcbiAgJ1wiJzogXCImcXVvdDtcIixcbiAgXCInXCI6IFwiJiMzOTtcIixcbn07XG5cbmZ1bmN0aW9uIGVzY2FwZUh0bWwodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9bJjw+XCInXS9nLCAoY2gpID0+IEhUTUxfRVNDQVBFU1tjaF0gPz8gY2gpO1xufVxuIl19
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tcGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2dpbi1wYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQU94QyxxRkFBcUY7QUFDckYsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUF5QjtJQUNyRCxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLDZFQUE2RTtJQUM3RSwwREFBMEQ7SUFDMUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQyxPQUFPOzs7OzttQkFLVSxLQUFLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBNkNILEtBQUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkFxQlQsTUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQWlHZixDQUFDO0FBQ1QsQ0FBQztBQUVELE1BQU0sWUFBWSxHQUEyQjtJQUMzQyxHQUFHLEVBQUUsT0FBTztJQUNaLEdBQUcsRUFBRSxNQUFNO0lBQ1gsR0FBRyxFQUFFLE1BQU07SUFDWCxHQUFHLEVBQUUsUUFBUTtJQUNiLEdBQUcsRUFBRSxPQUFPO0NBQ2IsQ0FBQztBQUVGLFNBQVMsVUFBVSxDQUFDLEtBQWE7SUFDL0IsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ25FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgc2VsZi1jb250YWluZWQgSFRNTCBsb2dpbiBwYWdlIHRoZSB0dW5uZWwgc2VydmVzIGluIGZyb250IG9mIGFuIGFwcCB0aGF0XG4gKiBkb2VzIG5vdCBlbWJlZCB0aGUgYDxBdXRoR2F0ZT5gIFJlYWN0IGNvbXBvbmVudCAoZS5nLiBhIFdlYlNvY2tldCBhcHAgZnJvbnRlZFxuICogYnkgdGhlIENMSSBwcm94eSkuXG4gKlxuICogSXQgc3BlYWtzIHRoZSBzYW1lIGNvbXBhdGliaWxpdHkgZW5kcG9pbnRzIHVuZGVyIHtAbGluayBBVVRIX1BSRUZJWH0gdGhhdCB0aGVcbiAqIFJlYWN0IGNsaWVudCB1c2VzIOKAlCBgUE9TVCAvcmVxdWVzdGAgdG8gZW1haWwgYSBjb2RlLCBgUE9TVCAvdmVyaWZ5YCB0b1xuICogZXhjaGFuZ2UgaXQgZm9yIHRoZSBgZGJ4LXRvb2xzLWF1dGhgIHNlc3Npb24gY29va2llIOKAlCB3aXRoIHBsYWluIGBmZXRjaGAsIG5vXG4gKiBidWlsZCBzdGVwIGFuZCBubyBkZXBlbmRlbmN5LiBQYXNza2V5cyBhcmUgaW50ZW50aW9uYWxseSBvbWl0dGVkOiB0aGUgV2ViQXV0aG5cbiAqIGNlcmVtb255IG5lZWRzIHRoZSBiZXR0ZXItYXV0aCBjbGllbnQgbGlicmFyeSwgc28gcGFzc2tleSBlbnJvbGxtZW50IGhhcHBlbnNcbiAqIGluc2lkZSB0aGUgYXBwIGFmdGVyIHRoaXMgZW1haWwtT1RQIHNpZ24taW4uIE9uIHN1Y2Nlc3MgdGhlIHBhZ2UgcmVsb2FkcywgYW5kXG4gKiB0aGUgbm93LWF1dGhlbnRpY2F0ZWQgcmVxdWVzdCByZWFjaGVzIHRoZSBhcHAuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IEFVVEhfUFJFRklYIH0gZnJvbSBcIi4vZ2F0ZS50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2luUGFnZU9wdGlvbnMge1xuICAvKiogUHJvZHVjdC9icmFuZCBuYW1lIHNob3duIGluIHRoZSBoZWFkaW5nLiAqL1xuICBicmFuZE5hbWU6IHN0cmluZztcbn1cblxuLyoqIFRoZSBsb2dpbiBwYWdlIEhUTUwgZm9yIGEgYHRleHQvaHRtbGAgcmVxdWVzdCB0byBhIGdhdGVkIHBhdGggd2l0aCBubyBzZXNzaW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvZ2luUGFnZUh0bWwob3B0aW9uczogTG9naW5QYWdlT3B0aW9ucyk6IHN0cmluZyB7XG4gIGNvbnN0IGJyYW5kID0gZXNjYXBlSHRtbChvcHRpb25zLmJyYW5kTmFtZSk7XG4gIC8vIEFVVEhfUFJFRklYIGlzIGEgZml4ZWQgY29uc3RhbnQsIG5vdCB1c2VyIGlucHV0LCBidXQgSlNPTi1lbmNvZGUgaXQgc28gdGhlXG4gIC8vIGlubGluZWQgc2NyaXB0IGlzIGFsd2F5cyB2YWxpZCByZWdhcmRsZXNzIG9mIGl0cyB2YWx1ZS5cbiAgY29uc3QgcHJlZml4ID0gSlNPTi5zdHJpbmdpZnkoQVVUSF9QUkVGSVgpO1xuICByZXR1cm4gYDwhZG9jdHlwZSBodG1sPlxuPGh0bWwgbGFuZz1cImVuXCI+XG48aGVhZD5cbjxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiPlxuPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xXCI+XG48dGl0bGU+U2lnbiBpbiDigJQgJHticmFuZH08L3RpdGxlPlxuPHN0eWxlPlxuICA6cm9vdCB7XG4gICAgY29sb3Itc2NoZW1lOiBsaWdodCBkYXJrO1xuICAgIC0tYmc6ICNmZmZmZmY7IC0tZmc6ICMxYjFiMWY7IC0tbXV0ZWQ6ICM2YjcyODA7IC0tYm9yZGVyOiAjZDlkY2UxO1xuICAgIC0tYWNjZW50OiAjMWE3M2U4OyAtLWFjY2VudC1mZzogI2ZmZmZmZjsgLS1lcnJvcjogI2M1MjIxZjsgLS1maWVsZDogI2ZmZmZmZjtcbiAgfVxuICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gICAgOnJvb3Qge1xuICAgICAgLS1iZzogIzE2MTgxZDsgLS1mZzogI2U4ZTZkZjsgLS1tdXRlZDogIzlhYTBhYTsgLS1ib3JkZXI6ICMyYzJmMzY7XG4gICAgICAtLWFjY2VudDogIzRjOGRmZjsgLS1hY2NlbnQtZmc6ICMwYjBmMTk7IC0tZXJyb3I6ICNmZjZiNjA7IC0tZmllbGQ6ICMxZTIxMjg7XG4gICAgfVxuICB9XG4gICogeyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG4gIGJvZHkge1xuICAgIG1hcmdpbjogMDsgbWluLWhlaWdodDogMTAwdmg7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGJhY2tncm91bmQ6IHZhcigtLWJnKTsgY29sb3I6IHZhcigtLWZnKTtcbiAgICBmb250LWZhbWlseTogc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBcIlNlZ29lIFVJXCIsIHNhbnMtc2VyaWY7IHBhZGRpbmc6IDI0cHg7XG4gIH1cbiAgLmNhcmQge1xuICAgIHdpZHRoOiAxMDAlOyBtYXgtd2lkdGg6IDM2MHB4OyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7IHBhZGRpbmc6IDI4cHg7IGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgfVxuICBoMSB7IGZvbnQtc2l6ZTogMThweDsgbWFyZ2luOiAwIDAgNHB4OyB9XG4gIHAuc3ViIHsgbWFyZ2luOiAwIDAgMjBweDsgY29sb3I6IHZhcigtLW11dGVkKTsgZm9udC1zaXplOiAxM3B4OyB9XG4gIGxhYmVsIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IHZhcigtLW11dGVkKTsgbWFyZ2luOiAwIDAgNnB4OyB9XG4gIGlucHV0IHtcbiAgICB3aWR0aDogMTAwJTsgcGFkZGluZzogMTBweCAxMnB4OyBmb250LXNpemU6IDE1cHg7IGJvcmRlci1yYWRpdXM6IDlweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBiYWNrZ3JvdW5kOiB2YXIoLS1maWVsZCk7IGNvbG9yOiB2YXIoLS1mZyk7XG4gIH1cbiAgaW5wdXQ6Zm9jdXMgeyBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tYWNjZW50KTsgb3V0bGluZS1vZmZzZXQ6IC0xcHg7IH1cbiAgYnV0dG9uIHtcbiAgICB3aWR0aDogMTAwJTsgbWFyZ2luLXRvcDogMTZweDsgcGFkZGluZzogMTBweCAxMnB4OyBmb250LXNpemU6IDE1cHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDsgYm9yZGVyOiAwOyBib3JkZXItcmFkaXVzOiA5cHg7IGJhY2tncm91bmQ6IHZhcigtLWFjY2VudCk7XG4gICAgY29sb3I6IHZhcigtLWFjY2VudC1mZyk7IGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICBidXR0b246ZGlzYWJsZWQgeyBvcGFjaXR5OiAwLjY7IGN1cnNvcjogZGVmYXVsdDsgfVxuICAubXNnIHsgbWFyZ2luLXRvcDogMTRweDsgZm9udC1zaXplOiAxM3B4OyBtaW4taGVpZ2h0OiAxOHB4OyB9XG4gIC5tc2cuZXJyb3IgeyBjb2xvcjogdmFyKC0tZXJyb3IpOyB9XG4gIC5oaWRkZW4geyBkaXNwbGF5OiBub25lOyB9XG4gIC5iYWNrIHsgYmFja2dyb3VuZDogbm9uZTsgY29sb3I6IHZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6IDQwMDsgbWFyZ2luLXRvcDogOHB4OyB9XG48L3N0eWxlPlxuPC9oZWFkPlxuPGJvZHk+XG4gIDxtYWluIGNsYXNzPVwiY2FyZFwiPlxuICAgIDxoMT5TaWduIGluIHRvICR7YnJhbmR9PC9oMT5cbiAgICA8cCBjbGFzcz1cInN1YlwiPkVudGVyIHlvdXIgZW1haWwgdG8gcmVjZWl2ZSBhIG9uZS10aW1lIGNvZGUuPC9wPlxuXG4gICAgPGZvcm0gaWQ9XCJlbWFpbC1mb3JtXCI+XG4gICAgICA8bGFiZWwgZm9yPVwiZW1haWxcIj5FbWFpbDwvbGFiZWw+XG4gICAgICA8aW5wdXQgaWQ9XCJlbWFpbFwiIG5hbWU9XCJlbWFpbFwiIHR5cGU9XCJlbWFpbFwiIGF1dG9jb21wbGV0ZT1cImVtYWlsXCIgcmVxdWlyZWQgYXV0b2ZvY3VzPlxuICAgICAgPGJ1dHRvbiBpZD1cImVtYWlsLXN1Ym1pdFwiIHR5cGU9XCJzdWJtaXRcIj5TZW5kIGNvZGU8L2J1dHRvbj5cbiAgICA8L2Zvcm0+XG5cbiAgICA8Zm9ybSBpZD1cImNvZGUtZm9ybVwiIGNsYXNzPVwiaGlkZGVuXCI+XG4gICAgICA8bGFiZWwgZm9yPVwiY29kZVwiPlZlcmlmaWNhdGlvbiBjb2RlPC9sYWJlbD5cbiAgICAgIDxpbnB1dCBpZD1cImNvZGVcIiBuYW1lPVwiY29kZVwiIGlucHV0bW9kZT1cIm51bWVyaWNcIiBhdXRvY29tcGxldGU9XCJvbmUtdGltZS1jb2RlXCIgcmVxdWlyZWQ+XG4gICAgICA8YnV0dG9uIGlkPVwiY29kZS1zdWJtaXRcIiB0eXBlPVwic3VibWl0XCI+VmVyaWZ5PC9idXR0b24+XG4gICAgICA8YnV0dG9uIGlkPVwiYmFja1wiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJhY2tcIj5Vc2UgYSBkaWZmZXJlbnQgZW1haWw8L2J1dHRvbj5cbiAgICA8L2Zvcm0+XG5cbiAgICA8ZGl2IGlkPVwibXNnXCIgY2xhc3M9XCJtc2dcIiByb2xlPVwic3RhdHVzXCIgYXJpYS1saXZlPVwicG9saXRlXCI+PC9kaXY+XG4gIDwvbWFpbj5cblxuPHNjcmlwdD5cbihmdW5jdGlvbiAoKSB7XG4gIHZhciBQUkVGSVggPSAke3ByZWZpeH07XG4gIHZhciBlbWFpbEZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImVtYWlsLWZvcm1cIik7XG4gIHZhciBjb2RlRm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29kZS1mb3JtXCIpO1xuICB2YXIgZW1haWxJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZW1haWxcIik7XG4gIHZhciBjb2RlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvZGVcIik7XG4gIHZhciBiYWNrID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJiYWNrXCIpO1xuICB2YXIgbXNnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtc2dcIik7XG4gIHZhciBlbWFpbCA9IFwiXCI7XG5cbiAgZnVuY3Rpb24gc2F5KHRleHQsIGlzRXJyb3IpIHtcbiAgICBtc2cudGV4dENvbnRlbnQgPSB0ZXh0IHx8IFwiXCI7XG4gICAgbXNnLmNsYXNzTmFtZSA9IFwibXNnXCIgKyAoaXNFcnJvciA/IFwiIGVycm9yXCIgOiBcIlwiKTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHBvc3QocGF0aCwgYm9keSkge1xuICAgIHZhciByZXMgPSBhd2FpdCBmZXRjaChQUkVGSVggKyBwYXRoLCB7XG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgY3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiLFxuICAgICAgaGVhZGVyczogeyBcImNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSksXG4gICAgfSk7XG4gICAgdmFyIGRhdGEgPSB7fTtcbiAgICB0cnkgeyBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTsgfSBjYXRjaCAoX2UpIHsgLyogbm9uLUpTT04gKi8gfVxuICAgIHJldHVybiB7IG9rOiByZXMub2ssIHN0YXR1czogcmVzLnN0YXR1cywgZGF0YTogZGF0YSB9O1xuICB9XG5cbiAgZnVuY3Rpb24gZXJyb3JUZXh0KGRhdGEsIGZhbGxiYWNrKSB7XG4gICAgLy8gYmV0dGVyLWF1dGggZXJyb3Igc2hhcGU6IHsgbWVzc2FnZSB9IG9yIHsgZXJyb3I6IHsgbWVzc2FnZSB9IH0uXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5lcnJvciAmJiBkYXRhLmVycm9yLm1lc3NhZ2UpIHJldHVybiBkYXRhLmVycm9yLm1lc3NhZ2U7XG4gICAgaWYgKGRhdGEgJiYgZGF0YS5tZXNzYWdlKSByZXR1cm4gZGF0YS5tZXNzYWdlO1xuICAgIHJldHVybiBmYWxsYmFjaztcbiAgfVxuXG4gIGVtYWlsRm9ybS5hZGRFdmVudExpc3RlbmVyKFwic3VibWl0XCIsIGFzeW5jIGZ1bmN0aW9uIChlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGVtYWlsID0gZW1haWxJbnB1dC52YWx1ZS50cmltKCk7XG4gICAgaWYgKCFlbWFpbCkgcmV0dXJuO1xuICAgIHZhciBzdWJtaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImVtYWlsLXN1Ym1pdFwiKTtcbiAgICBzdWJtaXQuZGlzYWJsZWQgPSB0cnVlO1xuICAgIHNheShcIlNlbmRpbmfigKZcIik7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGJldHRlci1hdXRoIGVtYWlsT1RQIG5hdGl2ZSBlbmRwb2ludC5cbiAgICAgIHZhciByID0gYXdhaXQgcG9zdChcIi9lbWFpbC1vdHAvc2VuZC12ZXJpZmljYXRpb24tb3RwXCIsIHsgZW1haWw6IGVtYWlsLCB0eXBlOiBcInNpZ24taW5cIiB9KTtcbiAgICAgIGlmIChyLm9rKSB7XG4gICAgICAgIGVtYWlsRm9ybS5jbGFzc0xpc3QuYWRkKFwiaGlkZGVuXCIpO1xuICAgICAgICBjb2RlRm9ybS5jbGFzc0xpc3QucmVtb3ZlKFwiaGlkZGVuXCIpO1xuICAgICAgICBjb2RlSW5wdXQuZm9jdXMoKTtcbiAgICAgICAgc2F5KFwiV2UgZW1haWxlZCBhIGNvZGUgdG8gXCIgKyBlbWFpbCArIFwiLlwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNheShlcnJvclRleHQoci5kYXRhLCBcIkNvdWxkIG5vdCBzZW5kIGEgY29kZS4gQ2hlY2sgdGhlIGFkZHJlc3MgYW5kIHRyeSBhZ2Fpbi5cIiksIHRydWUpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKF9lKSB7XG4gICAgICBzYXkoXCJOZXR3b3JrIGVycm9yLiBUcnkgYWdhaW4uXCIsIHRydWUpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBzdWJtaXQuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvZGVGb3JtLmFkZEV2ZW50TGlzdGVuZXIoXCJzdWJtaXRcIiwgYXN5bmMgZnVuY3Rpb24gKGUpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgdmFyIGNvZGUgPSBjb2RlSW5wdXQudmFsdWUudHJpbSgpO1xuICAgIGlmICghY29kZSkgcmV0dXJuO1xuICAgIHZhciBzdWJtaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvZGUtc3VibWl0XCIpO1xuICAgIHN1Ym1pdC5kaXNhYmxlZCA9IHRydWU7XG4gICAgc2F5KFwiVmVyaWZ5aW5n4oCmXCIpO1xuICAgIHRyeSB7XG4gICAgICAvLyBiZXR0ZXItYXV0aCBzaWduLWluIHdpdGggdGhlIE9UUDsgc2V0cyB0aGUgc2Vzc2lvbiBjb29raWUgb24gc3VjY2Vzcy5cbiAgICAgIHZhciByID0gYXdhaXQgcG9zdChcIi9zaWduLWluL2VtYWlsLW90cFwiLCB7XG4gICAgICAgIGVtYWlsOiBlbWFpbCxcbiAgICAgICAgb3RwOiBjb2RlLFxuICAgICAgICBuYW1lOiBlbWFpbC5zcGxpdChcIkBcIilbMF0sXG4gICAgICB9KTtcbiAgICAgIGlmIChyLm9rKSB7XG4gICAgICAgIHNheShcIlNpZ25lZCBpbi4gTG9hZGluZ+KAplwiKTtcbiAgICAgICAgLy8gVGhlIHNlc3Npb24gY29va2llIGlzIHNldDsgcmVsb2FkIHNvIHRoZSBub3ctYXV0aGVudGljYXRlZCByZXF1ZXN0XG4gICAgICAgIC8vIHJlYWNoZXMgdGhlIGFwcC5cbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2F5KGVycm9yVGV4dChyLmRhdGEsIFwiVGhhdCBjb2RlIHdhcyBub3QgYWNjZXB0ZWQuIFRyeSBhZ2Fpbi5cIiksIHRydWUpO1xuICAgICAgICBzdWJtaXQuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChfZSkge1xuICAgICAgc2F5KFwiTmV0d29yayBlcnJvci4gVHJ5IGFnYWluLlwiLCB0cnVlKTtcbiAgICAgIHN1Ym1pdC5kaXNhYmxlZCA9IGZhbHNlO1xuICAgIH1cbiAgfSk7XG5cbiAgYmFjay5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xuICAgIGNvZGVGb3JtLmNsYXNzTGlzdC5hZGQoXCJoaWRkZW5cIik7XG4gICAgZW1haWxGb3JtLmNsYXNzTGlzdC5yZW1vdmUoXCJoaWRkZW5cIik7XG4gICAgY29kZUlucHV0LnZhbHVlID0gXCJcIjtcbiAgICBzYXkoXCJcIik7XG4gICAgZW1haWxJbnB1dC5mb2N1cygpO1xuICB9KTtcbn0pKCk7XG48L3NjcmlwdD5cbjwvYm9keT5cbjwvaHRtbD5gO1xufVxuXG5jb25zdCBIVE1MX0VTQ0FQRVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIFwiJlwiOiBcIiZhbXA7XCIsXG4gIFwiPFwiOiBcIiZsdDtcIixcbiAgXCI+XCI6IFwiJmd0O1wiLFxuICAnXCInOiBcIiZxdW90O1wiLFxuICBcIidcIjogXCImIzM5O1wiLFxufTtcblxuZnVuY3Rpb24gZXNjYXBlSHRtbCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1smPD5cIiddL2csIChjaCkgPT4gSFRNTF9FU0NBUEVTW2NoXSA/PyBjaCk7XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -18,21 +18,21 @@
|
|
|
18
18
|
"projen": "projen"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"@dbx-tools/email": "0.6.
|
|
21
|
+
"@dbx-tools/email": "0.6.98",
|
|
22
22
|
"@types/bun": "^1.3.14",
|
|
23
23
|
"@types/node": "^24.6.0",
|
|
24
24
|
"typescript": "^5.9.3"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
|
-
"@dbx-tools/email": "0.6.
|
|
27
|
+
"@dbx-tools/email": "0.6.98"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@databricks/appkit": "^0.43.0",
|
|
31
|
-
"@dbx-tools/appkit": "0.6.
|
|
32
|
-
"@dbx-tools/auth": "0.6.
|
|
33
|
-
"@dbx-tools/core": "0.6.
|
|
34
|
-
"@dbx-tools/shared-auth": "0.6.
|
|
35
|
-
"@dbx-tools/shared-core": "0.6.
|
|
31
|
+
"@dbx-tools/appkit": "0.6.98",
|
|
32
|
+
"@dbx-tools/auth": "0.6.98",
|
|
33
|
+
"@dbx-tools/core": "0.6.98",
|
|
34
|
+
"@dbx-tools/shared-auth": "0.6.98",
|
|
35
|
+
"@dbx-tools/shared-core": "0.6.98"
|
|
36
36
|
},
|
|
37
37
|
"main": "./lib/index.js",
|
|
38
38
|
"license": "UNLICENSED",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"./package.json": "./package.json"
|
|
49
49
|
}
|
|
50
50
|
},
|
|
51
|
-
"version": "0.6.
|
|
51
|
+
"version": "0.6.98",
|
|
52
52
|
"types": "./lib/index.d.ts",
|
|
53
53
|
"type": "module",
|
|
54
54
|
"exports": {
|
package/src/login-page.ts
CHANGED
|
@@ -124,6 +124,13 @@ export function loginPageHtml(options: LoginPageOptions): string {
|
|
|
124
124
|
return { ok: res.ok, status: res.status, data: data };
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
+
function errorText(data, fallback) {
|
|
128
|
+
// better-auth error shape: { message } or { error: { message } }.
|
|
129
|
+
if (data && data.error && data.error.message) return data.error.message;
|
|
130
|
+
if (data && data.message) return data.message;
|
|
131
|
+
return fallback;
|
|
132
|
+
}
|
|
133
|
+
|
|
127
134
|
emailForm.addEventListener("submit", async function (e) {
|
|
128
135
|
e.preventDefault();
|
|
129
136
|
email = emailInput.value.trim();
|
|
@@ -132,14 +139,15 @@ export function loginPageHtml(options: LoginPageOptions): string {
|
|
|
132
139
|
submit.disabled = true;
|
|
133
140
|
say("Sending…");
|
|
134
141
|
try {
|
|
135
|
-
|
|
136
|
-
|
|
142
|
+
// better-auth emailOTP native endpoint.
|
|
143
|
+
var r = await post("/email-otp/send-verification-otp", { email: email, type: "sign-in" });
|
|
144
|
+
if (r.ok) {
|
|
137
145
|
emailForm.classList.add("hidden");
|
|
138
146
|
codeForm.classList.remove("hidden");
|
|
139
147
|
codeInput.focus();
|
|
140
148
|
say("We emailed a code to " + email + ".");
|
|
141
149
|
} else {
|
|
142
|
-
say(r.data
|
|
150
|
+
say(errorText(r.data, "Could not send a code. Check the address and try again."), true);
|
|
143
151
|
}
|
|
144
152
|
} catch (_e) {
|
|
145
153
|
say("Network error. Try again.", true);
|
|
@@ -156,14 +164,19 @@ export function loginPageHtml(options: LoginPageOptions): string {
|
|
|
156
164
|
submit.disabled = true;
|
|
157
165
|
say("Verifying…");
|
|
158
166
|
try {
|
|
159
|
-
|
|
160
|
-
|
|
167
|
+
// better-auth sign-in with the OTP; sets the session cookie on success.
|
|
168
|
+
var r = await post("/sign-in/email-otp", {
|
|
169
|
+
email: email,
|
|
170
|
+
otp: code,
|
|
171
|
+
name: email.split("@")[0],
|
|
172
|
+
});
|
|
173
|
+
if (r.ok) {
|
|
161
174
|
say("Signed in. Loading…");
|
|
162
175
|
// The session cookie is set; reload so the now-authenticated request
|
|
163
176
|
// reaches the app.
|
|
164
177
|
window.location.reload();
|
|
165
178
|
} else {
|
|
166
|
-
say(r.data
|
|
179
|
+
say(errorText(r.data, "That code was not accepted. Try again."), true);
|
|
167
180
|
submit.disabled = false;
|
|
168
181
|
}
|
|
169
182
|
} catch (_e) {
|