@inner-dj/server 0.1.2 → 0.1.3
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/assets/css/styles.css +1 -1
- package/assets/js/totp.js +1 -1
- package/lib/src/browser/totp.js +3 -16
- package/lib/src/browser/totp.js.map +1 -1
- package/lib/src/config.d.ts +2 -3
- package/lib/src/config.js +3 -4
- package/lib/src/config.js.map +1 -1
- package/lib/src/web.d.ts +3 -12
- package/lib/src/web.js +12 -102
- package/lib/src/web.js.map +1 -1
- package/package.json +4 -4
- package/assets/images/avif/favicon/apple-touch-icon.avif +0 -0
- package/assets/images/avif/favicon/favicon-96x96.avif +0 -0
- package/assets/images/avif/favicon/web-app-manifest-192x192.avif +0 -0
- package/assets/images/avif/favicon/web-app-manifest-512x512.avif +0 -0
- package/assets/images/webp/favicon/apple-touch-icon.webp +0 -0
- package/assets/images/webp/favicon/favicon-96x96.webp +0 -0
- package/assets/images/webp/favicon/web-app-manifest-192x192.webp +0 -0
- package/assets/images/webp/favicon/web-app-manifest-512x512.webp +0 -0
- package/assets/js/controls.js +0 -1
- package/assets/js/index.global.js +0 -1
- package/assets/js/qr.js +0 -1
- package/lib/src/browser/controls.d.ts +0 -1
- package/lib/src/browser/controls.js +0 -86
- package/lib/src/browser/controls.js.map +0 -1
- package/lib/src/browser/index.global.js +0 -10
- package/lib/src/browser/qr.js +0 -1636
- package/lib/src/cwd-checker.d.ts +0 -1
- package/lib/src/cwd-checker.js +0 -7
- package/lib/src/cwd-checker.js.map +0 -1
- package/lib/src/receivers/ireceiver.d.ts +0 -17
- package/lib/src/receivers/ireceiver.js +0 -18
- package/lib/src/receivers/ireceiver.js.map +0 -1
- package/lib/src/receivers/smtp-receiver.d.ts +0 -10
- package/lib/src/receivers/smtp-receiver.js +0 -38
- package/lib/src/receivers/smtp-receiver.js.map +0 -1
package/assets/js/totp.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
document.addEventListener("DOMContentLoaded",function(){let
|
|
1
|
+
document.addEventListener("DOMContentLoaded",function(){let a=document.getElementById("qr-container"),r=document.getElementById("token");function c(e){for(;e?.firstChild;)e.removeChild(e.lastChild)}fetch("/admin/token",{method:"GET"}).then(async e=>{let d=(await e.json())?.token;if(d&&"string"==typeof d){let t=window.otplib,n=window.QrCreator,o="";async function i(){var e=await t.generate({secret:d});o!==e&&(o=e,c(r),r?.appendChild(document.createTextNode(e)),e=window.location.origin+"/#"+encodeURIComponent(`{"code":"${e}"}`),c(a),n.render({text:e,radius:0,ecLevel:"L",fill:"#000000",background:"#ffffff",size:256},a))}i(),setInterval(i,5e3)}else setTimeout(()=>location.reload(),3e3)})});
|
package/lib/src/browser/totp.js
CHANGED
|
@@ -10,7 +10,7 @@ document.addEventListener("DOMContentLoaded", function () {
|
|
|
10
10
|
method: 'GET'
|
|
11
11
|
}).then(async (res) => {
|
|
12
12
|
const token = (await res.json())?.token;
|
|
13
|
-
if (typeof token !== 'string') {
|
|
13
|
+
if (!token || typeof token !== 'string') {
|
|
14
14
|
setTimeout(() => location.reload(), 3000);
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
@@ -38,21 +38,8 @@ document.addEventListener("DOMContentLoaded", function () {
|
|
|
38
38
|
size: 256
|
|
39
39
|
}, qrContainer);
|
|
40
40
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
setInterval(genOtp, 5000);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
QR.render({
|
|
47
|
-
text: `${window.location.origin}/`,
|
|
48
|
-
radius: 0,
|
|
49
|
-
ecLevel: 'L',
|
|
50
|
-
fill: '#000000',
|
|
51
|
-
background: '#ffffff',
|
|
52
|
-
size: 256
|
|
53
|
-
}, qrContainer);
|
|
54
|
-
document.querySelector('.if-totp').style.display = 'none';
|
|
55
|
-
}
|
|
41
|
+
genOtp();
|
|
42
|
+
setInterval(genOtp, 5000);
|
|
56
43
|
});
|
|
57
44
|
});
|
|
58
45
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"totp.js","sourceRoot":"","sources":["../../../src/browser/totp.ts"],"names":[],"mappings":"AAAA,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE;IAC1C,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAEnD,SAAS,YAAY,CAAC,EAAsB;QACxC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC;YACpB,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,SAAU,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,EAAE;QAClB,MAAM,EAAE,KAAK;KAChB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAClB,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAwB,CAAA,EAAE,KAAK,CAAC;QAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"totp.js","sourceRoot":"","sources":["../../../src/browser/totp.ts"],"names":[],"mappings":"AAAA,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE;IAC1C,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAEnD,SAAS,YAAY,CAAC,EAAsB;QACxC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC;YACpB,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,SAAU,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,EAAE;QAClB,MAAM,EAAE,KAAK;KAChB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAClB,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAwB,CAAA,EAAE,KAAK,CAAC;QAC7D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACtC,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;YAC1C,OAAO;QACX,CAAC;QACD,MAAM,MAAM,GAA6B,MAAc,CAAC,MAAM,CAAC;QAC/D,MAAM,EAAE,GAA2C,MAAc,CAAC,SAAS,CAAC;QAC5E,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,KAAK,UAAU,MAAM;YACjB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;gBAC9B,MAAM,EAAE,KAAK;aAChB,CAAC,CAAC;YACH,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;gBAClB,OAAO;YACX,CAAC;YACD,OAAO,GAAG,GAAG,CAAC;YACd,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,kBAAkB,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC;YACxF,YAAY,CAAC,WAAW,CAAC,CAAC;YAC1B,EAAE,CAAC,MAAM,CAAC;gBACN,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,GAAG;gBACZ,IAAI,EAAE,SAAS;gBACf,UAAU,EAAE,SAAS;gBACrB,IAAI,EAAE,GAAG;aACZ,EAAE,WAAY,CAAC,CAAC;QACrB,CAAC;QAED,MAAM,EAAE,CAAC;QACT,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/lib/src/config.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type DBConfig } from './session-store.js';
|
|
2
|
-
import { type
|
|
2
|
+
import { type InnerDJDiscordBotConfig } from '@inner-dj/discord-receiver';
|
|
3
3
|
import { type TwilioReceiverConfig } from '@inner-dj/twilio-receiver';
|
|
4
4
|
export interface ServerConfig {
|
|
5
5
|
port: number;
|
|
@@ -12,8 +12,7 @@ export interface ServerConfig {
|
|
|
12
12
|
cookieTTL: number;
|
|
13
13
|
jwtSecret: string;
|
|
14
14
|
db: DBConfig;
|
|
15
|
-
discord:
|
|
15
|
+
discord: InnerDJDiscordBotConfig;
|
|
16
16
|
twilio: TwilioReceiverConfig;
|
|
17
|
-
cookies: string | undefined;
|
|
18
17
|
}
|
|
19
18
|
export declare function getConfig(cfgPath?: string): Promise<ServerConfig>;
|
package/lib/src/config.js
CHANGED
|
@@ -38,15 +38,14 @@ export async function getConfig(cfgPath) {
|
|
|
38
38
|
trustProxy: joinIfArray(process.env['TRUSTPROXY'] ?? cfg.trustProxy),
|
|
39
39
|
secure: getBoolean('SECURE', cfg, 'secure', true),
|
|
40
40
|
public: pub,
|
|
41
|
-
sessionSecret: process.env['SESSIONSECRET'] ?? cfg.sessionSecret ?? throwNewError('sessionSecret is required'),
|
|
42
|
-
userOtp: pub ? '' :
|
|
43
|
-
adminOtp: process.env['ADMINOTP'] ?? cfg.adminOtp ?? generateTotpSecret('adminOtp'),
|
|
41
|
+
sessionSecret: pub ? '' : process.env['SESSIONSECRET'] ?? cfg.sessionSecret ?? throwNewError('sessionSecret is required if server is not public'),
|
|
42
|
+
userOtp: pub ? '' : process.env['USEROTP'] ?? cfg.userOtp ?? generateTotpSecret('userOtp'),
|
|
43
|
+
adminOtp: pub ? '' : process.env['ADMINOTP'] ?? cfg.adminOtp ?? generateTotpSecret('adminOtp'),
|
|
44
44
|
cookieTTL: notStupidParseInt(process.env['COOKIETTL'] ?? cfg.cookieTTL ?? 1000 * 60 * 60 * 24 * 30),
|
|
45
45
|
jwtSecret: process.env['JWTSECRET'] ?? cfg.jwtSecret ?? throwNewError('jwtSecret is required'),
|
|
46
46
|
db: SessionStore.getConfig(path.dirname(p), cfg.db),
|
|
47
47
|
discord: InnerDJDiscordBot.getConfig(cfg.discord),
|
|
48
48
|
twilio: TwilioReceiver.getConfig(cfg.twilio),
|
|
49
|
-
cookies: process.env['COOKIES'] ?? cfg.cookies,
|
|
50
49
|
};
|
|
51
50
|
}
|
|
52
51
|
//# sourceMappingURL=config.js.map
|
package/lib/src/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,aAAa,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAiB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,aAAa,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAiB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAgC,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC7F,OAAO,EAA6B,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAiBtF,SAAS,WAAW,CAAC,CAAwC;IACzD,IAAI,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,CAAC,CAAC;AACb,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAe;IACtC,IAAI,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,EAAE,EAAE,CAAC;QACR,OAAO,CAAC,IAAI,CAAC,kBAAkB,OAAO,KAAK,EAAE,EAAE,EAAE,yBAAyB,CAAC,CAAC;QAC5E,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACrC,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,OAAO,MAAM,iEAAiE,CAAC,CAAC;IACpH,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAgB;IAC5C,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAW,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC3F,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACvD,OAAO;QACH,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;QAChE,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC;QACpE,MAAM,EAAE,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC;QACjD,MAAM,EAAE,GAAG;QACX,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,aAAa,IAAI,aAAa,CAAC,mDAAmD,CAAC;QACjJ,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC;QAC1F,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,QAAQ,IAAI,kBAAkB,CAAC,UAAU,CAAC;QAC9F,SAAS,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,SAAS,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACnG,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,SAAS,IAAI,aAAa,CAAC,uBAAuB,CAAC;QAC9F,EAAE,EAAE,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QACnD,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;QACjD,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;KAC/C,CAAA;AACL,CAAC"}
|
package/lib/src/web.d.ts
CHANGED
|
@@ -1,28 +1,19 @@
|
|
|
1
|
-
import EventEmitter from 'events';
|
|
2
|
-
import express from 'express';
|
|
3
1
|
import { ServerConfig } from './config.js';
|
|
4
|
-
import
|
|
5
|
-
import type
|
|
2
|
+
import express from 'express';
|
|
3
|
+
import { type Payload, type ClientInterface, Method } from '@inner-dj/common';
|
|
6
4
|
declare module 'express-session' {
|
|
7
5
|
interface SessionData {
|
|
8
6
|
admin?: boolean;
|
|
9
7
|
}
|
|
10
8
|
}
|
|
11
|
-
export
|
|
12
|
-
clientId: string | null;
|
|
13
|
-
nowPlaying: string | null;
|
|
14
|
-
}
|
|
15
|
-
export declare class Web extends EventEmitter implements ClientInterface {
|
|
9
|
+
export declare class Web implements ClientInterface {
|
|
16
10
|
private config;
|
|
17
11
|
private _webserver;
|
|
18
12
|
private _clients;
|
|
19
13
|
private _app;
|
|
20
14
|
private _guides;
|
|
21
|
-
private _downloader;
|
|
22
15
|
constructor(config: ServerConfig);
|
|
23
16
|
initialize: () => Promise<void>;
|
|
24
|
-
emitClientStateChange: () => void;
|
|
25
|
-
createClientStateData: () => SimpleClientInfo[];
|
|
26
17
|
registerRoute: (method: Method, route: string, handler: (req: express.Request, res: express.Response, next?: express.NextFunction) => any) => void;
|
|
27
18
|
registerGuide: (html: string) => number;
|
|
28
19
|
sendPayload: (payload: Payload) => Promise<boolean>;
|
package/lib/src/web.js
CHANGED
|
@@ -1,47 +1,33 @@
|
|
|
1
1
|
import crypto from 'crypto';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import os from 'os';
|
|
4
|
-
import EventEmitter from 'events';
|
|
5
|
-
import fsp from 'fs/promises';
|
|
6
2
|
import jwt from 'jsonwebtoken';
|
|
7
3
|
import express from 'express';
|
|
8
4
|
import expressWs from 'express-ws';
|
|
9
5
|
import session from 'express-session';
|
|
10
6
|
import getYouTubeID from 'get-youtube-id-ng';
|
|
11
|
-
import contentDisposition from 'content-disposition';
|
|
12
7
|
import { verify } from "otplib";
|
|
13
|
-
import {
|
|
14
|
-
import { getFilesNoError, encodePayload, ytdlp, ytdlpDefaults } from '@inner-dj/common';
|
|
8
|
+
import { encodePayload } from '@inner-dj/common';
|
|
15
9
|
import { SessionStore } from './session-store.js';
|
|
16
|
-
|
|
17
|
-
export class Web extends EventEmitter {
|
|
10
|
+
export class Web {
|
|
18
11
|
config;
|
|
19
12
|
_webserver = null;
|
|
20
13
|
_clients = {};
|
|
21
14
|
_app = null;
|
|
22
15
|
_guides = [];
|
|
23
|
-
_downloader;
|
|
24
16
|
constructor(config) {
|
|
25
|
-
super();
|
|
26
17
|
this.config = config;
|
|
27
|
-
this._downloader = new ytdlp({
|
|
28
|
-
...ytdlpDefaults,
|
|
29
|
-
optput: path.join(os.tmpdir(), ytdlpDefaults.optput),
|
|
30
|
-
cookies: config.cookies,
|
|
31
|
-
});
|
|
32
18
|
}
|
|
33
19
|
initialize = async () => {
|
|
34
20
|
const config = this.config;
|
|
35
|
-
const app = this._app =
|
|
21
|
+
const app = this._app = express();
|
|
22
|
+
const wsApp = expressWs(app).app;
|
|
36
23
|
app.set('trust proxy', config.trustProxy);
|
|
37
24
|
app.set('view engine', 'ejs');
|
|
38
25
|
app.set('view options', { outputFunctionName: 'echo' });
|
|
39
|
-
app.set('views', path.join(expectedCWD, 'views'));
|
|
40
26
|
app.use((_, res, next) => {
|
|
41
27
|
res.set('X-Robots-Tag', 'noindex, nofollow');
|
|
42
28
|
next && next();
|
|
43
29
|
});
|
|
44
|
-
app.use('/assets', express.static(
|
|
30
|
+
app.use('/assets', express.static('assets', { maxAge: '30 days' }));
|
|
45
31
|
app.use((_req, res, next) => {
|
|
46
32
|
crypto.randomBytes(32, (err, randomBytes) => {
|
|
47
33
|
if (err) {
|
|
@@ -57,31 +43,7 @@ export class Web extends EventEmitter {
|
|
|
57
43
|
app.get('/healthcheck', (_req, res) => {
|
|
58
44
|
res.send('healthy');
|
|
59
45
|
});
|
|
60
|
-
|
|
61
|
-
const body = req.body?.toString();
|
|
62
|
-
const payload = body && jwt.verify(body, config.jwtSecret);
|
|
63
|
-
if (!payload || typeof (payload) === 'string' || payload.type !== 'download') {
|
|
64
|
-
res.status(401).send();
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
const vidurl = `https://www.youtube.com/watch?v=${payload.body}`;
|
|
68
|
-
console.info(`downloading ${vidurl} for ${req.ip}`);
|
|
69
|
-
await this._downloader.exec(vidurl);
|
|
70
|
-
const files = await getFilesNoError(os.tmpdir());
|
|
71
|
-
const file = files.find(f => f.split('.')[0] === payload.body);
|
|
72
|
-
if (!file) {
|
|
73
|
-
res.status(500).send();
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
res.set('Content-Disposition', contentDisposition.create(file))
|
|
77
|
-
.sendFile(path.join(os.tmpdir(), file), (err) => {
|
|
78
|
-
if (err) {
|
|
79
|
-
console.error(err);
|
|
80
|
-
}
|
|
81
|
-
return fsp.unlink(path.join(os.tmpdir(), file));
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
app.ws('/sock', (ws, req) => {
|
|
46
|
+
wsApp.ws('/sock', async (ws, req) => {
|
|
85
47
|
const clientInfo = {
|
|
86
48
|
ws,
|
|
87
49
|
clientId: null,
|
|
@@ -101,23 +63,20 @@ export class Web extends EventEmitter {
|
|
|
101
63
|
if (this._clients[key] === clientInfo) {
|
|
102
64
|
delete this._clients[key];
|
|
103
65
|
}
|
|
104
|
-
this.emitClientStateChange();
|
|
105
66
|
});
|
|
106
67
|
const ack = {
|
|
107
68
|
type: 'ack'
|
|
108
69
|
};
|
|
109
70
|
ws.send(encodePayload(ack, config.jwtSecret));
|
|
110
|
-
this.emitClientStateChange();
|
|
111
71
|
return;
|
|
112
72
|
}
|
|
113
|
-
else if (clientInfo.clientId && decoded && payload?.type === 'nowPlaying') {
|
|
73
|
+
else if (clientInfo.clientId && decoded && payload?.type === 'nowPlaying' && payload.body) {
|
|
114
74
|
console.log(`client ${clientInfo.clientId} playing ${clientInfo.nowPlaying = payload.body}`);
|
|
115
|
-
this.emitClientStateChange();
|
|
116
75
|
return;
|
|
117
76
|
}
|
|
118
77
|
ws.close();
|
|
119
78
|
});
|
|
120
|
-
console.debug(`Got
|
|
79
|
+
console.debug(`Got websocket connection from ${req.ip}`);
|
|
121
80
|
const timeout = setTimeout(() => {
|
|
122
81
|
console.debug(`Client@${req.ip} took too long to identify itself. Closing.`);
|
|
123
82
|
ws.close();
|
|
@@ -224,7 +183,7 @@ export class Web extends EventEmitter {
|
|
|
224
183
|
});
|
|
225
184
|
const requireAdmin = (req, res, next) => {
|
|
226
185
|
if (req.session.admin !== true) {
|
|
227
|
-
res.redirect('
|
|
186
|
+
res.redirect('/');
|
|
228
187
|
return;
|
|
229
188
|
}
|
|
230
189
|
next();
|
|
@@ -279,65 +238,16 @@ export class Web extends EventEmitter {
|
|
|
279
238
|
}
|
|
280
239
|
});
|
|
281
240
|
});
|
|
241
|
+
app.get('/admin/controls', sessionMiddleware, requireAdmin, (_req, res) => {
|
|
242
|
+
res.send('controls');
|
|
243
|
+
});
|
|
282
244
|
app.get('/admin/token', sessionMiddleware, requireAdmin, (_req, res) => {
|
|
283
245
|
res.send({
|
|
284
246
|
token: config.userOtp
|
|
285
247
|
});
|
|
286
248
|
});
|
|
287
|
-
app.get('/admin/controls', sessionMiddleware, requireAdmin, (_req, res) => {
|
|
288
|
-
res.render('controls', {
|
|
289
|
-
guides: this._guides.join('\n'),
|
|
290
|
-
page: {
|
|
291
|
-
title: 'Admin Controls',
|
|
292
|
-
titlesuffix: 'Inner DJ',
|
|
293
|
-
description: 'Skip songs'
|
|
294
|
-
}
|
|
295
|
-
});
|
|
296
|
-
});
|
|
297
|
-
// not going to enforce authentication for simplicity
|
|
298
|
-
// socket for realtime data, not for actually controlling clients
|
|
299
|
-
app.ws('/admin/controls', (ws, req) => {
|
|
300
|
-
console.debug(`Got control websocket connection from ${req.ip}`);
|
|
301
|
-
const eventListener = (payload) => {
|
|
302
|
-
if (payload) {
|
|
303
|
-
ws.send(payload);
|
|
304
|
-
}
|
|
305
|
-
};
|
|
306
|
-
this.on('change', eventListener);
|
|
307
|
-
ws.on('close', () => {
|
|
308
|
-
this.removeListener('change', eventListener);
|
|
309
|
-
});
|
|
310
|
-
eventListener(JSON.stringify(this.createClientStateData()));
|
|
311
|
-
});
|
|
312
|
-
app.post('/admin/controls/skip', sessionMiddleware, requireAdmin, (req, res) => {
|
|
313
|
-
const clientId = req.query['clientId'];
|
|
314
|
-
if (typeof clientId !== 'string' || !(clientId in this._clients)) {
|
|
315
|
-
res.status(400).send();
|
|
316
|
-
return;
|
|
317
|
-
}
|
|
318
|
-
this._clients[clientId]?.ws.send(encodePayload({
|
|
319
|
-
type: 'skip'
|
|
320
|
-
}, this.config.jwtSecret));
|
|
321
|
-
res.send();
|
|
322
|
-
});
|
|
323
249
|
this._webserver = app.listen(config.port, () => console.log(`running on port ${config.port}`));
|
|
324
250
|
};
|
|
325
|
-
emitClientStateChange = () => {
|
|
326
|
-
this.emit('change', JSON.stringify(this.createClientStateData()));
|
|
327
|
-
};
|
|
328
|
-
createClientStateData = () => {
|
|
329
|
-
const payload = [];
|
|
330
|
-
for (let id in this._clients) {
|
|
331
|
-
const info = this._clients[id];
|
|
332
|
-
if (info && info.clientId) {
|
|
333
|
-
payload.push({
|
|
334
|
-
clientId: info.clientId,
|
|
335
|
-
nowPlaying: info.nowPlaying
|
|
336
|
-
});
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
return payload;
|
|
340
|
-
};
|
|
341
251
|
registerRoute = (method, route, handler) => {
|
|
342
252
|
console.debug(`Registered route to ${route} via ${method.toUpperCase()} requests`);
|
|
343
253
|
this._app?.[method](route, handler);
|
package/lib/src/web.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inner-dj/server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "server component of inner-dj",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
"otplib": "^13.4.0",
|
|
41
41
|
"qr-creator": "^1.0.0",
|
|
42
42
|
"yaml": "^2.9.0",
|
|
43
|
-
"@inner-dj/
|
|
44
|
-
"@inner-dj/
|
|
45
|
-
"@inner-dj/
|
|
43
|
+
"@inner-dj/common": "0.1.3",
|
|
44
|
+
"@inner-dj/twilio-receiver": "0.1.3",
|
|
45
|
+
"@inner-dj/discord-receiver": "0.1.3"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@sindresorhus/tsconfig": "8.1.0",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/assets/js/controls.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
document.addEventListener("DOMContentLoaded",function(){let i=document.getElementById("controlContainer"),l={},d="-";function a(e){var t=e?.split(".")[0],n=11===t?.length,e=document.createTextNode(e||d);return n?((n=document.createElement("a")).href="https://www.youtube.com/watch?v="+t,n.appendChild(e),n):e}let t=()=>{var e=new WebSocket("/admin/controls");e.onerror=e=>{console.log(e)},e.onclose=()=>{setTimeout(t,3e3)},e.onmessage=e=>{var e=JSON.parse(e.data),t=e.map(e=>e.clientId);for(let e in l)t.indexOf(e)<0&&(l[e].forEach(e=>i?.removeChild(e)),delete l[e]);e.forEach(e=>{if(e.clientId in l){for(var t=l[e.clientId],n=t[1];n?.firstChild;)n.removeChild(n.lastChild);t[1].appendChild(a(e.nowPlaying))}else d=e,i&&d.clientId&&((t=document.createElement("div")).appendChild(document.createTextNode(d.clientId)),i.appendChild(t),(e=document.createElement("div")).classList.add("break-all"),e.appendChild(a(d.nowPlaying)),i.appendChild(e),(o=document.createElement("button")).classList.add("button","is-info"),o.appendChild(document.createTextNode("⏩️ Skip")),i.appendChild(o),l[d.clientId]=[t,e,o],o.addEventListener("click",e=>{fetch("/admin/controls/skip?clientId="+encodeURIComponent(d.clientId),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})}).catch(e=>{console.log(e)})}));var d,o})}};t()});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var otplib=(()=>{var U=Object.defineProperty,H=Object.getOwnPropertyDescriptor,L=Object.getOwnPropertyNames,P=Object.prototype.hasOwnProperty,X={},e=(((e,t)=>{for(var r in t)U(e,r,{get:t[r],enumerable:!0})})(X,{HOTP:()=>De,NobleCryptoPlugin:()=>At,OTP:()=>Ot,ScureBase32Plugin:()=>tt,TOTP:()=>Xe,createGuardrails:()=>E,generate:()=>_t,generateSecret:()=>function(e){var{crypto:e=St,base32:t=rt,length:r=20}=e||{};return n({crypto:e,base32:t,length:r})},generateSync:()=>Mt,generateURI:()=>kt,stringToBytes:()=>Ae,verify:()=>Bt,verifySync:()=>Nt,wrapResult:()=>function(t){return(...e)=>{try{return _e(t(...e))}catch(e){return Me(e)}}},wrapResultAsync:()=>function(t){return async(...e)=>{try{return _e(await t(...e))}catch(e){return Me(e)}}}}),class extends Error{constructor(e,t){super(e,t),this.name="OTPError"}}),t=class extends e{constructor(e){super(e),this.name="SecretError"}},G=class extends t{constructor(e,t){super(`Secret must be at least ${e} bytes (${8*e} bits), got ${t} bytes`),this.name="SecretTooShortError"}},$=class extends t{constructor(e,t){super(`Secret must not exceed ${e} bytes, got ${t} bytes`),this.name="SecretTooLongError"}},t=class extends e{constructor(e){super(e),this.name="CounterError"}},F=class extends t{constructor(){super("Counter must be non-negative"),this.name="CounterNegativeError"}},j=class extends t{constructor(){super("Counter exceeds maximum safe integer value"),this.name="CounterOverflowError"}},Y=class extends t{constructor(){super("Counter must be a finite integer"),this.name="CounterNotIntegerError"}},t=class extends e{constructor(e){super(e),this.name="TimeError"}},W=class extends t{constructor(){super("Time must be non-negative"),this.name="TimeNegativeError"}},q=class extends t{constructor(){super("Time must be a finite number"),this.name="TimeNotFiniteError"}},t=class extends e{constructor(e){super(e),this.name="PeriodError"}},V=class extends t{constructor(e){super(`Period must be at least ${e} second(s)`),this.name="PeriodTooSmallError"}},z=class extends t{constructor(e){super(`Period must not exceed ${e} seconds`),this.name="PeriodTooLargeError"}},t=class extends e{constructor(e){super(e),this.name="TokenError"}},J=class extends t{constructor(e,t){super(`Token must be ${e} digits, got `+t),this.name="TokenLengthError"}},K=class extends t{constructor(){super("Token must contain only digits"),this.name="TokenFormatError"}},t=class extends e{constructor(e,t){super(e,t),this.name="CryptoError"}},s=class extends t{constructor(e,t){super("HMAC computation failed: "+e,t),this.name="HMACError"}},Q=class extends t{constructor(e,t){super("Random byte generation failed: "+e,t),this.name="RandomBytesError"}},Z=class extends e{constructor(e){super(e),this.name="CounterToleranceError"}},ee=class extends Z{constructor(e,t){super(`Counter tolerance validation failed: total checks (${t}) exceeds MAX_WINDOW (${e})`),this.name="CounterToleranceTooLargeError"}},te=class extends Z{constructor(){super("Counter tolerance cannot contain negative values"),this.name="CounterToleranceNegativeError"}},re=class extends e{constructor(e){super(e),this.name="EpochToleranceError"}},oe=class extends re{constructor(){super("Epoch tolerance cannot contain negative values"),this.name="EpochToleranceNegativeError"}},se=class extends re{constructor(e,t){super(`Epoch tolerance must not exceed ${e} seconds, got ${t}. Large tolerances can cause performance issues.`),this.name="EpochToleranceTooLargeError"}},t=class extends e{constructor(e){super(e),this.name="PluginError"}},ne=class extends t{constructor(){super("Crypto plugin is required."),this.name="CryptoPluginMissingError"}},ie=class extends t{constructor(){super("Base32 plugin is required."),this.name="Base32PluginMissingError"}},o=class extends e{constructor(e){super(e),this.name="ConfigurationError"}},ae=class extends o{constructor(){super("Secret is required. Use generateSecret() to create one, or provide via { secret: 'YOUR_BASE32_SECRET' }"),this.name="SecretMissingError"}},ce=class extends o{constructor(){super("Label is required for URI generation. Example: { label: 'user@example.com' }"),this.name="LabelMissingError"}},ue=class extends o{constructor(){super("Issuer is required for URI generation. Example: { issuer: 'MyApp' }"),this.name="IssuerMissingError"}},he=class extends o{constructor(){super("Class API requires secret to be a Base32 string, not Uint8Array. Use generateSecret() or provide a Base32-encoded string."),this.name="SecretTypeError"}},t=class extends e{constructor(e){super(e),this.name="AfterTimeStepError"}},de=class extends t{constructor(){super("afterTimeStep must be >= 0"),this.name="AfterTimeStepNegativeError"}},le=class extends t{constructor(){super("Invalid afterTimeStep: non-integer value"),this.name="AfterTimeStepNotIntegerError"}},fe=class extends t{constructor(){super("Invalid afterTimeStep: cannot be greater than current time step plus window"),this.name="AfterTimeStepRangeExceededError"}},pe=new TextEncoder,ge=(new TextDecoder,20),be=30,e=Number.MAX_SAFE_INTEGER,ye=Symbol("otplib.guardrails.override");function r(e,t,r){if("number"!=typeof t||!Number.isSafeInteger(t))throw new o(`Guardrail '${e}' must be a safe integer`);if(t<r)throw new o(`Guardrail '${e}' must be >= `+r)}var w=Object.freeze({MIN_SECRET_BYTES:16,MAX_SECRET_BYTES:64,MIN_PERIOD:1,MAX_PERIOD:3600,MAX_COUNTER:e,MAX_WINDOW:99,[ye]:!1});function E(e){if(!e)return w;void 0!==e.MIN_SECRET_BYTES&&r("MIN_SECRET_BYTES",e.MIN_SECRET_BYTES,1),void 0!==e.MAX_SECRET_BYTES&&r("MAX_SECRET_BYTES",e.MAX_SECRET_BYTES,1),void 0!==e.MIN_PERIOD&&r("MIN_PERIOD",e.MIN_PERIOD,1),void 0!==e.MAX_PERIOD&&r("MAX_PERIOD",e.MAX_PERIOD,1),void 0!==e.MAX_COUNTER&&r("MAX_COUNTER",e.MAX_COUNTER,0),void 0!==e.MAX_WINDOW&&r("MAX_WINDOW",e.MAX_WINDOW,1);e={...w,...e};if(e.MAX_SECRET_BYTES<e.MIN_SECRET_BYTES)throw new o("Guardrail 'MIN_SECRET_BYTES' must be <= 'MAX_SECRET_BYTES'");if(e.MAX_PERIOD<e.MIN_PERIOD)throw new o("Guardrail 'MIN_PERIOD' must be <= 'MAX_PERIOD'");return Object.freeze({...e,[ye]:!0})}function x(e,t=w){if(e.length<t.MIN_SECRET_BYTES)throw new G(t.MIN_SECRET_BYTES,e.length);if(t.MAX_SECRET_BYTES<e.length)throw new $(t.MAX_SECRET_BYTES,e.length)}function me(e,t=w){if("number"==typeof e){if(!Number.isFinite(e)||!Number.isInteger(e))throw new Y;if(!Number.isSafeInteger(e))throw new j}e="bigint"==typeof e?e:BigInt(e);if(e<0n)throw new F;if(e>BigInt(t.MAX_COUNTER))throw new j}function we(e){if(!Number.isFinite(e))throw new q;if(e<0)throw new W}function Ee(e,t=w){if(!Number.isInteger(e)||e<t.MIN_PERIOD)throw new V(t.MIN_PERIOD);if(e>t.MAX_PERIOD)throw new z(t.MAX_PERIOD)}function xe(e,t){if(e.length!==t)throw new J(t,e.length);if(!/^\d+$/.test(e))throw new K}function ve(e){var t=15&e[e.length-1];return(127&e[t])<<24|e[1+t]<<16|e[2+t]<<8|e[3+t]}function Te(e,t){return(e%10**t).toString().padStart(t,"0")}function Ae(e){return"string"==typeof e?pe.encode(e):e}function v(e,t){return"string"==typeof e?(i(t),t.decode(e)):e}function n(e){var{crypto:e,base32:t,length:r=ge}=e,e=(T(e),i(t),e.randomBytes(r));return t.encode(e,{padding:!1})}function Se(e=0){return Array.isArray(e)?e:[0,e]}function T(e){if(!e)throw new ne}function i(e){if(!e)throw new ie}function A(e){if(!e)throw new ae}function Ie(e){if(!e)throw new ce}function Ce(e){if(!e)throw new ue}function ke(e){if("string"!=typeof e)throw new he}function _e(e){return{ok:!0,value:e}}function Me(e){return{ok:!1,error:e}}var Be=class{constructor(e){this.crypto=e}get plugin(){return this.crypto}async hmac(t,e,r){try{var o=this.crypto.hmac(t,e,r);return o instanceof Promise?await o:o}catch(e){t=e instanceof Error?e.message:String(e);throw new s(t,{cause:e})}}hmacSync(t,e,r){try{var o=this.crypto.hmac(t,e,r);if(o instanceof Promise)throw new s("Crypto plugin does not support synchronous HMAC operations");return o}catch(e){if(e instanceof s)throw e;t=e instanceof Error?e.message:String(e);throw new s(t,{cause:e})}}randomBytes(t){try{return this.crypto.randomBytes(t)}catch(e){t=e instanceof Error?e.message:String(e);throw new Q(t,{cause:e})}}};function Ne(e){var{type:e,label:t,params:r}=e,t=`otpauth://${e}/${t.split(":").map(e=>encodeURIComponent(e)).join(":")}?`,o=[];return r.secret&&o.push("secret="+encodeURIComponent(r.secret)),r.issuer&&o.push("issuer="+encodeURIComponent(r.issuer)),r.algorithm&&"sha1"!==r.algorithm&&o.push("algorithm="+r.algorithm.toUpperCase()),r.digits&&6!==r.digits&&o.push("digits="+r.digits),"hotp"===e&&void 0!==r.counter&&o.push("counter="+r.counter),"totp"===e&&void 0!==r.period&&30!==r.period&&o.push("period="+r.period),t+=o.join("&")}function Oe(e){var{issuer:e,label:t,secret:r,algorithm:o="sha1",digits:s=6,period:n=30}=e;return Ne({type:"totp",label:e?e+":"+t:t,params:{secret:r,issuer:e,algorithm:o,digits:s,period:n}})}function Re(e){var{issuer:e,label:t,secret:r,counter:o=0,algorithm:s="sha1",digits:n=6}=e;return Ne({type:"hotp",label:e?e+":"+t:t,params:{secret:r,issuer:e,algorithm:s,digits:n,counter:o}})}var De=class{options;guardrails;constructor(e={}){this.options=e,this.guardrails=E(e.guardrails)}generateSecret(){var{crypto:e,base32:t}=this.options;return T(e),i(t),n({crypto:e,base32:t})}async generate(e,t){var r={...this.options,...t},{secret:o,crypto:s,base32:n,algorithm:i="sha1",digits:a=6}=r,t=(A(o),T(s),t?.guardrails??this.guardrails);return u({secret:o,counter:e,algorithm:i,digits:a,crypto:s,base32:n,guardrails:t,hooks:r.hooks})}async verify(e,t){var r={...this.options,...t},{secret:o,crypto:s,base32:n,algorithm:i="sha1",digits:a=6,counterTolerance:c=0}=r,t=(A(o),T(s),t?.guardrails??this.guardrails);return Pe({secret:o,token:e.token,counter:e.counter,algorithm:i,digits:a,counterTolerance:c,crypto:s,base32:n,guardrails:t,hooks:r.hooks})}toURI(e=0){var{issuer:t,label:r,secret:o,algorithm:s="sha1",digits:n=6}=this.options;return A(o),Ie(r),Ce(t),ke(o),Re({issuer:t,label:r,secret:o,algorithm:s,digits:n,counter:e})}};function Ue(e){var{secret:e,counter:t,algorithm:r="sha1",digits:o=6,crypto:s,base32:n,guardrails:i,hooks:a}=e,e=(A(e),T(s),v(e,n)),n=(x(e,i),me(t,i),new Be(s));return i="bigint"==typeof(i=t)?i:BigInt(i),s=new ArrayBuffer(8),new DataView(s).setBigUint64(0,i,!1),{ctx:n,algorithm:r,digits:o,secretBytes:e,counterBytes:new Uint8Array(s),hooks:a}}async function u(e){var{ctx:e,algorithm:t,digits:r,secretBytes:o,counterBytes:s,hooks:n}=Ue(e),e=await e.hmac(t,o,s),t=n?.truncateDigest?n.truncateDigest(e):ve(e);return n?.encodeToken?n.encodeToken(t,r):Te(t,r)}function He(e){var{ctx:e,algorithm:t,digits:r,secretBytes:o,counterBytes:s,hooks:n}=Ue(e),e=e.hmacSync(t,o,s),t=n?.truncateDigest?n.truncateDigest(e):ve(e);return n?.encodeToken?n.encodeToken(t,r):Te(t,r)}function Le(e){let{secret:t,counter:r,token:o,algorithm:s="sha1",digits:n=6,crypto:i,base32:a,counterTolerance:c=0,guardrails:u=E(),hooks:h}=e,d=(A(t),T(i),v(t,a));x(d,u),me(r,u),h?.validateToken?h.validateToken(o,n):xe(o,n);var[e,l=w]=[c,u],[e,f]=Se(e);if(!Number.isSafeInteger(e)||!Number.isSafeInteger(f))throw new Z("Counter tolerance values must be safe integers");if(e<0||f<0)throw new te;if((e=e+f+1)>l.MAX_WINDOW)throw new ee(l.MAX_WINDOW,e);var f="bigint"==typeof r?Number(r):r,[l,e]=Se(c);return{token:o,counterNum:f,past:l,future:e,totalChecks:l+e+1,crypto:i,getGenerateOptions:e=>({secret:d,counter:e,algorithm:s,digits:n,crypto:i,guardrails:u,hooks:h})}}async function Pe(e){var{token:t,counterNum:r,past:o,totalChecks:s,crypto:n,getGenerateOptions:i}=Le(e);for(let e=Math.max(0,o-r);e<s;e++){var a=e-o,c=await u(i(r+a));if(n.constantTimeEqual(c,t))return{valid:!0,delta:0|a}}return{valid:!1}}var Xe=class{options;guardrails;constructor(e={}){this.options=e,this.guardrails=E(e.guardrails)}generateSecret(){var{crypto:e,base32:t}=this.options;return T(e),i(t),n({crypto:e,base32:t})}async generate(e){var t={...this.options,...e},{secret:r,crypto:o,base32:s,algorithm:n="sha1",digits:i=6,period:a=30,epoch:c,t0:u=0}=t,e=(A(r),T(o),e?.guardrails??this.guardrails);return $e({secret:r,algorithm:n,digits:i,period:a,epoch:c??Math.floor(Date.now()/1e3),t0:u,crypto:o,base32:s,guardrails:e,hooks:t.hooks})}async verify(e,t){var r={...this.options,...t},{secret:o,crypto:s,base32:n,algorithm:i="sha1",digits:a=6,period:c=30,epoch:u,t0:h=0,epochTolerance:d=0,afterTimeStep:l}=r,t=(A(o),T(s),t?.guardrails??this.guardrails);return We({secret:o,token:e,algorithm:i,digits:a,period:c,epoch:u??Math.floor(Date.now()/1e3),t0:h,epochTolerance:d,afterTimeStep:l,crypto:s,base32:n,guardrails:t,hooks:r.hooks})}toURI(e){var{issuer:t,label:r,secret:o,algorithm:s="sha1",digits:n=6,period:i=30}=this.options,r=e?.label??r,t=e?.issuer??t,e=e?.secret??o;return A(e),Ie(r),Ce(t),ke(e),Oe({issuer:t,label:r,secret:e,algorithm:s,digits:n,period:i})}};function Ge(e){var{secret:e,epoch:t=Math.floor(Date.now()/1e3),t0:r=0,period:o=30,algorithm:s="sha1",digits:n=6,crypto:i,base32:a,guardrails:c=E(),hooks:u}=e,e=(A(e),T(i),v(e,a)),a=(x(e,c),we(t),Ee(o,c),Math.floor((t-r)/o));return{secret:e,counter:a,algorithm:s,digits:n,crypto:i,guardrails:c,hooks:u}}async function $e(e){return u(Ge(e))}function Fe(e){return He(Ge(e))}function je(e,t){return void 0!==t&&e<=t}function Ye(e){let{secret:t,token:r,epoch:o=Math.floor(Date.now()/1e3),t0:s=0,period:n=30,algorithm:i="sha1",digits:a=6,crypto:c,base32:u,epochTolerance:h=0,afterTimeStep:d,guardrails:l=E(),hooks:f}=e,p=(A(t),T(c),v(t,u));x(p,l),we(o),Ee(n,l),f?.validateToken?f.validateToken(r,a):xe(r,a);var[e,g=be,b=w]=[h,n,l],[e,y]=Array.isArray(e)?e:[e,e];if(!Number.isSafeInteger(e)||!Number.isSafeInteger(y))throw new re("Epoch tolerance values must be safe integers");if(e<0||y<0)throw new oe;if((b=(b.MAX_WINDOW-1)*g)<(g=e+y))throw new se(b,g);var e=Math.floor((o-s)/n),[b,g]=([y=0]=[h],Array.isArray(y)?y:[y,y]),y=Math.max(0,Math.floor((o-b-s)/n)),b=Math.floor((o+g-s)/n),g=d,m=b;if(void 0!==g){if(g<0)throw new de;if(!Number.isSafeInteger(g))throw new le;if(m<g)throw new fe}return{token:r,crypto:c,minCounter:y,maxCounter:b,currentCounter:e,t0:s,period:n,afterTimeStep:d,getGenerateOptions:e=>({secret:p,epoch:e*n+s,t0:s,period:n,algorithm:i,digits:a,crypto:c,guardrails:l,hooks:f})}}async function We(t){var{token:r,crypto:o,minCounter:t,maxCounter:s,currentCounter:n,t0:i,period:a,afterTimeStep:c,getGenerateOptions:u}=Ye(t);for(let e=t;e<=s;e++)if(!je(e,c)){var h=await $e(u(e));if(o.constantTimeEqual(h,r))return{valid:!0,delta:e-n,epoch:e*a+i,timeStep:e}}return{valid:!1}}function qe(e,t){return Array.isArray(t)&&(0===t.length||(e?t.every(e=>"string"==typeof e):t.every(e=>Number.isSafeInteger(e))))}function a(e,t){if("string"!=typeof t)throw new Error(e+": string expected")}function Ve(e){if(!Number.isSafeInteger(e))throw new Error("invalid integer: "+e)}function ze(e){if(!Array.isArray(e))throw new Error("array expected")}function c(e,t){if(!qe(!0,t))throw new Error(e+": array of strings expected")}var Je=(e,t)=>0===t?e:Je(t,e%t),h=(e,t)=>e+(t-Je(e,t)),Ke=(()=>{var t=[];for(let e=0;e<40;e++)t.push(2**e);return t})();function Qe(e,t,r,o){if(ze(e),t<=0||32<t)throw new Error("convertRadix2: wrong from="+t);if(r<=0||32<r)throw new Error("convertRadix2: wrong to="+r);if(32<h(t,r))throw new Error(`convertRadix2: carry overflow from=${t} to=${r} carryBits=`+h(t,r));let s=0,n=0,i=Ke[t],a=Ke[r]-1,c=[];for(var u of e){if(Ve(u),u>=i)throw new Error(`convertRadix2: invalid data word=${u} from=`+t);if(s=s<<t|u,32<n+t)throw new Error(`convertRadix2: carry overflow pos=${n} from=`+t);for(n+=t;n>=r;n-=r)c.push((s>>n-r&a)>>>0);u=Ke[n];if(void 0===u)throw new Error("invalid carry");s&=u-1}if(s=s<<r-n&a,!o&&n>=t)throw new Error("Excess padding");if(!o&&0<s)throw new Error("Non-zero padding: "+s);return o&&0<n&&c.push(s>>>0),c}t=[((r,o=!1)=>{if(Ve(r),r<=0||32<r)throw new Error("radix2: bits should be in (0..32]");if(32<h(8,r)||32<h(r,8))throw new Error("radix2: carry overflow");return{encode:e=>{var t;if((t=e)instanceof Uint8Array||ArrayBuffer.isView(t)&&"Uint8Array"===t.constructor.name)return Qe(Array.from(e),8,r,!o);throw new Error("radix2.encode input should be Uint8Array")},decode:e=>{var t="radix2.decode";if(qe(!1,e))return Uint8Array.from(Qe(e,r,8,o));throw new Error(t+": array of numbers expected")}}})(5),(r=>{let t="string"==typeof r?r.split(""):r,o=t.length,s=(c("alphabet",t),new Map(t.map((e,t)=>[e,t])));return{encode:e=>(ze(e),e.map(e=>{if(!Number.isSafeInteger(e)||e<0||e>=o)throw new Error(`alphabet.encode: digit index outside alphabet "${e}". Allowed: `+r);return t[e]})),decode:e=>(ze(e),e.map(e=>{a("alphabet.decode",e);var t=s.get(e);if(void 0===t)throw new Error(`Unknown letter: "${e}". Allowed: `+r);return t}))}})("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),(l="=",Ve(d=5),a("padding",l),{encode(e){for(c("padding.encode",e);e.length*d%8;)e.push(l);return e},decode(e){c("padding.decode",e);let t=e.length;if(t*d%8)throw new Error("padding: invalid, string should have whole number of bytes");for(;0<t&&e[t-1]===l;t--)if((t-1)*d%8==0)throw new Error("padding: invalid, string has too much padding");return e.slice(0,t)}}),(a("join",Ze=""),{encode:e=>(c("join.decode",e),e.join(Ze)),decode:e=>(a("join.decode",e),e.split(Ze))})],e=e=>e,y=(t,r)=>e=>t(r(e));var Ze,d,l,et={encode:t.map(e=>e.encode).reduceRight(y,e),decode:t.map(e=>e.decode).reduce(y,e)},tt=class{name="scure";encode(e,t={}){var{padding:t=!1}=t,e=et.encode(e);return t?e:e.replace(/=+$/,"")}decode(e){try{var t=e.toUpperCase(),r=t.padEnd(8*Math.ceil(t.length/8),"=");return et.decode(r)}catch(e){throw e instanceof Error?new Error("Invalid Base32 string: "+e.message):new Error("Invalid Base32 string")}}},rt=Object.freeze(new tt);function ot(e,t=""){if(!Number.isSafeInteger(e)||e<0)throw new Error((t&&`"${t}" `)+"expected integer >= 0, got "+e)}function f(e,t,r=""){var o=(o=e)instanceof Uint8Array||ArrayBuffer.isView(o)&&"Uint8Array"===o.constructor.name,s=e?.length,n=void 0!==t;if(!o||n&&s!==t)throw new Error((r&&`"${r}" `)+"expected Uint8Array"+(n?" of length "+t:"")+", got "+(o?"length="+s:"type="+typeof e))}function p(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function g(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function st(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function b(e,t){return e<<32-t|e>>>t}function nt(e,t){return e<<t|e>>>32-t>>>0}function it(r,e={}){var t=(e,t)=>r(t).update(e).digest(),o=r(void 0);return t.outputLen=o.outputLen,t.blockLen=o.blockLen,t.create=e=>r(e),Object.assign(t,e),Object.freeze(t)}var t=e=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,e])}),at=class{oHash;iHash;blockLen;outputLen;finished=!1;destroyed=!1;constructor(e,t){var r=e;if("function"!=typeof r||"function"!=typeof r.create)throw new Error("Hash must wrapped by utils.createHasher");if(ot(r.outputLen),ot(r.blockLen),f(t,void 0,"key"),this.iHash=e.create(),"function"!=typeof this.iHash.update)throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;var r=this.blockLen,o=new Uint8Array(r);o.set(t.length>r?e.create().update(t).digest():t);for(let e=0;e<o.length;e++)o[e]^=54;this.iHash.update(o),this.oHash=e.create();for(let e=0;e<o.length;e++)o[e]^=106;this.oHash.update(o),g(o)}update(e){return p(this),this.iHash.update(e),this}digestInto(e){p(this),f(e,this.outputLen,"output"),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){var e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){var{oHash:t,iHash:r,finished:o,destroyed:s,blockLen:n,outputLen:i}=this;return(e||=Object.create(Object.getPrototypeOf(this),{})).finished=o,e.destroyed=s,e.blockLen=n,e.outputLen=i,e.oHash=t._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},ct=(e,t,r)=>new at(e,t).update(r).digest();function ut(e,t,r){return e&t^~e&r}function ht(e,t,r){return e&t^e&r^t&r}ct.create=(e,t)=>new at(e,t);var y=class{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,t,r,o){this.blockLen=e,this.outputLen=t,this.padOffset=r,this.isLE=o,this.buffer=new Uint8Array(e),this.view=st(this.buffer)}update(t){p(this),f(t);var{view:r,buffer:o,blockLen:s}=this,n=t.length;for(let e=0;e<n;){var i=Math.min(s-this.pos,n-e);if(i===s)for(var a=st(t);s<=n-e;e+=s)this.process(a,e);else o.set(t.subarray(e,e+i),this.pos),this.pos+=i,e+=i,this.pos===s&&(this.process(r,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(e){p(this);var t=e,r=this;if(f(t,void 0,"digestInto() output"),r=r.outputLen,t.length<r)throw new Error('"digestInto() output" expected to be of length >='+r);this.finished=!0;let{buffer:o,view:s,blockLen:n,isLE:i}=this,a=this.pos;o[a++]=128,g(this.buffer.subarray(a)),this.padOffset>n-a&&(this.process(s,0),a=0);for(let e=a;e<n;e++)o[e]=0;s.setBigUint64(n-8,BigInt(8*this.length),i),this.process(s,0);var c=st(e),t=this.outputLen;if(t%4)throw new Error("_sha2: outputLen must be aligned to 32bit");var u=t/4,h=this.get();if(u>h.length)throw new Error("_sha2: outputLen bigger than state");for(let e=0;e<u;e++)c.setUint32(4*e,h[e],i)}digest(){var{buffer:e,outputLen:t}=this,e=(this.digestInto(e),e.slice(0,t));return this.destroy(),e}_cloneInto(e){(e||=new this.constructor).set(...this.get());var{blockLen:t,buffer:r,length:o,finished:s,destroyed:n,pos:i}=this;return e.destroyed=n,e.finished=s,e.length=o,e.pos=i,o%t&&e.buffer.set(r),e}clone(){return this._cloneInto()}},m=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),S=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),I=Uint32Array.from([1732584193,4023233417,2562383102,271733878,3285377520]),C=new Uint32Array(80),dt=class extends y{A=0|I[0];B=0|I[1];C=0|I[2];D=0|I[3];E=0|I[4];constructor(){super(64,20,8,!1)}get(){var{A:e,B:t,C:r,D:o,E:s}=this;return[e,t,r,o,s]}set(e,t,r,o,s){this.A=0|e,this.B=0|t,this.C=0|r,this.D=0|o,this.E=0|s}process(t,r){for(let e=0;e<16;e++,r+=4)C[e]=t.getUint32(r,!1);for(let e=16;e<80;e++)C[e]=nt(C[e-3]^C[e-8]^C[e-14]^C[e-16],1);let{A:o,B:s,C:n,D:i,E:a}=this;for(let r=0;r<80;r++){let e,t;t=r<20?(e=ut(s,n,i),1518500249):r<40?(e=s^n^i,1859775393):r<60?(e=ht(s,n,i),2400959708):(e=s^n^i,3395469782);var c=nt(o,5)+e+a+t+C[r]|0;a=i,i=n,n=nt(s,30),s=o,o=c}o=o+this.A|0,s=s+this.B|0,n=n+this.C|0,i=i+this.D|0,a=a+this.E|0,this.set(o,s,n,i,a)}roundClean(){g(C)}destroy(){this.set(0,0,0,0,0),g(this.buffer)}},lt=it(()=>new dt),k=BigInt(4294967295),ft=BigInt(32);var pt=(e,t,r)=>e<<32-r|t>>>r,M=(e,t,r)=>e>>>r|t<<32-r,B=(e,t,r)=>e<<32-r|t>>>r,gt=(e,t,r)=>e<<64-r|t>>>r-32,bt=(e,t,r)=>e>>>r-32|t<<64-r;function N(e,t,r,o){t=(t>>>0)+(o>>>0);return{h:e+r+(t/2**32|0)|0,l:0|t}}var yt=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),_=new Uint32Array(64),e=class extends y{constructor(e){super(64,e,8,!1)}get(){var{A:e,B:t,C:r,D:o,E:s,F:n,G:i,H:a}=this;return[e,t,r,o,s,n,i,a]}set(e,t,r,o,s,n,i,a){this.A=0|e,this.B=0|t,this.C=0|r,this.D=0|o,this.E=0|s,this.F=0|n,this.G=0|i,this.H=0|a}process(t,r){for(let e=0;e<16;e++,r+=4)_[e]=t.getUint32(r,!1);for(let e=16;e<64;e++){var o=_[e-15],s=_[e-2],o=b(o,7)^b(o,18)^o>>>3,s=b(s,17)^b(s,19)^s>>>10;_[e]=s+_[e-7]+o+_[e-16]|0}let{A:n,B:i,C:a,D:c,E:u,F:h,G:d,H:l}=this;for(let e=0;e<64;e++){var f=b(u,6)^b(u,11)^b(u,25),f=l+f+ut(u,h,d)+yt[e]+_[e]|0,p=(b(n,2)^b(n,13)^b(n,22))+ht(n,i,a)|0;l=d,d=h,h=u,u=c+f|0,c=a,a=i,i=n,n=f+p|0}n=n+this.A|0,i=i+this.B|0,a=a+this.C|0,c=c+this.D|0,u=u+this.E|0,h=h+this.F|0,d=d+this.G|0,l=l+this.H|0,this.set(n,i,a,c,u,h,d,l)}roundClean(){g(_)}destroy(){this.set(0,0,0,0,0,0,0,0),g(this.buffer)}},mt=class extends e{A=0|m[0];B=0|m[1];C=0|m[2];D=0|m[3];E=0|m[4];F=0|m[5];G=0|m[6];H=0|m[7];constructor(){super(32)}},e=((t,r=!1)=>{var o=t.length,s=new Uint32Array(o),n=new Uint32Array(o);for(let e=0;e<o;e++){[a,i=!1]=[t[e],r];var{h:i,l:a}=i?{h:Number(a&k),l:Number(a>>ft&k)}:{h:0|Number(a>>ft&k),l:0|Number(a&k)};[s[e],n[e]]=[i,a]}return[s,n]})(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(e=>BigInt(e))),wt=e[0],Et=e[1],O=new Uint32Array(80),R=new Uint32Array(80),e=class extends y{constructor(e){super(128,e,16,!1)}get(){var{Ah:e,Al:t,Bh:r,Bl:o,Ch:s,Cl:n,Dh:i,Dl:a,Eh:c,El:u,Fh:h,Fl:d,Gh:l,Gl:f,Hh:p,Hl:g}=this;return[e,t,r,o,s,n,i,a,c,u,h,d,l,f,p,g]}set(e,t,r,o,s,n,i,a,c,u,h,d,l,f,p,g){this.Ah=0|e,this.Al=0|t,this.Bh=0|r,this.Bl=0|o,this.Ch=0|s,this.Cl=0|n,this.Dh=0|i,this.Dl=0|a,this.Eh=0|c,this.El=0|u,this.Fh=0|h,this.Fl=0|d,this.Gh=0|l,this.Gl=0|f,this.Hh=0|p,this.Hl=0|g}process(t,r){for(let e=0;e<16;e++,r+=4)O[e]=t.getUint32(r),R[e]=t.getUint32(r+=4);for(let e=16;e<80;e++){var o=0|O[e-15],s=0|R[e-15],n=M(o,s,1)^M(o,s,8)^o>>>7,o=B(o,s,1)^B(o,s,8)^pt(o,s,7),s=0|O[e-2],i=0|R[e-2],a=M(s,i,19)^gt(s,i,61)^s>>>6,o=(o>>>0)+((B(s,i,19)^bt(s,i,61)^pt(s,i,6))>>>0)+(R[e-7]>>>0)+(R[e-16]>>>0);s=O[e-7],i=O[e-16],O[e]=0|(n+a+s+i+(o/2**32|0)|0),R[e]=0|o}let{Ah:c,Al:u,Bh:h,Bl:d,Ch:l,Cl:f,Dh:p,Dl:g,Eh:b,El:y,Fh:m,Fl:w,Gh:E,Gl:x,Hh:v,Hl:T}=this;for(let e=0;e<80;e++){var A=M(b,y,14)^M(b,y,18)^gt(b,y,41),S=B(b,y,14)^B(b,y,18)^bt(b,y,41),I=b&m^~b&E,C=y&w^~y&x,S=(T>>>0)+(S>>>0)+(C>>>0)+(Et[e]>>>0)+(R[e]>>>0),C=(C=v,k=wt[e],_=O[e],C+A+I+k+_+(S/2**32|0)|0),A=0|S,I=M(c,u,28)^gt(c,u,34)^gt(c,u,39),k=B(c,u,28)^bt(c,u,34)^bt(c,u,39),_=c&h^c&l^h&l,S=u&d^u&f^d&f,A=(v=0|E,T=0|x,E=0|m,x=0|w,m=0|b,w=0|y,{h:b,l:y}=N(0|p,0|g,0|C,0|A),p=0|l,g=0|f,l=0|h,f=0|d,h=0|c,d=0|u,(A>>>0)+(k>>>0)+(S>>>0));c=C+I+_+(A/2**32|0)|0,u=0|A}({h:c,l:u}=N(0|this.Ah,0|this.Al,0|c,0|u)),{h,l:d}=N(0|this.Bh,0|this.Bl,0|h,0|d),{h:l,l:f}=N(0|this.Ch,0|this.Cl,0|l,0|f),{h:p,l:g}=N(0|this.Dh,0|this.Dl,0|p,0|g),{h:b,l:y}=N(0|this.Eh,0|this.El,0|b,0|y),{h:m,l:w}=N(0|this.Fh,0|this.Fl,0|m,0|w),{h:E,l:x}=N(0|this.Gh,0|this.Gl,0|E,0|x),{h:v,l:T}=N(0|this.Hh,0|this.Hl,0|v,0|T),this.set(c,u,h,d,l,f,p,g,b,y,m,w,E,x,v,T)}roundClean(){g(O,R)}destroy(){g(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},xt=class extends e{Ah=0|S[0];Al=0|S[1];Bh=0|S[2];Bl=0|S[3];Ch=0|S[4];Cl=0|S[5];Dh=0|S[6];Dl=0|S[7];Eh=0|S[8];El=0|S[9];Fh=0|S[10];Fl=0|S[11];Gh=0|S[12];Gl=0|S[13];Hh=0|S[14];Hl=0|S[15];constructor(){super(64)}},vt=it(()=>new mt,t(1)),Tt=it(()=>new xt,t(3)),At=class{name="noble";hmac(e,t,r){return ct("sha1"===e?lt:"sha256"===e?vt:Tt,t,r)}randomBytes(e){var[e=32]=[e],t="object"==typeof globalThis?globalThis.crypto:null;if("function"!=typeof t?.getRandomValues)throw new Error("crypto.getRandomValues must be defined");return t.getRandomValues(new Uint8Array(e))}constantTimeEqual(e,r){{var o=Ae(e),s=Ae(r);if(o.length!==s.length)return!1;let t=0;for(let e=0;e<o.length;e++)t|=o[e]^s[e];return 0===t}}},St=Object.freeze(new At);function It(e){return{secret:e.secret,strategy:e.strategy??"totp",crypto:e.crypto??St,base32:e.base32??rt,algorithm:e.algorithm??"sha1",digits:e.digits??6,period:e.period??30,epoch:e.epoch??Math.floor(Date.now()/1e3),t0:e.t0??0,counter:e.counter,guardrails:e.guardrails??E(),hooks:e.hooks}}function Ct(e){return{...It(e),token:e.token,epochTolerance:e.epochTolerance??0,counterTolerance:e.counterTolerance??0,afterTimeStep:e.afterTimeStep}}function D(e,t,r){if("totp"===e)return r.totp();if("hotp"!==e)throw new o(`Unknown OTP strategy: ${e}. Valid strategies are 'totp' or 'hotp'.`);if(void 0===t)throw new o("Counter is required for HOTP strategy. Example: { strategy: 'hotp', counter: 0 }");return r.hotp(t)}function kt(e){let{strategy:t="totp",issuer:r,label:o,secret:s,algorithm:n="sha1",digits:i=6,period:a=30,counter:c}=e;return D(t,c,{totp:()=>Oe({issuer:r,label:o,secret:s,algorithm:n,digits:i,period:a}),hotp:e=>Re({issuer:r,label:o,secret:s,algorithm:n,digits:i,counter:e})})}async function _t(e){let t=It(e),{secret:r,crypto:o,base32:s,algorithm:n,digits:i,hooks:a}=t,c={secret:r,crypto:o,base32:s,algorithm:n,digits:i,hooks:a};return D(t.strategy,t.counter,{totp:()=>$e({...c,period:t.period,epoch:t.epoch,t0:t.t0,guardrails:t.guardrails}),hotp:e=>u({...c,counter:e,guardrails:t.guardrails})})}function Mt(e){let t=It(e),{secret:r,crypto:o,base32:s,algorithm:n,digits:i}=t,a={secret:r,crypto:o,base32:s,algorithm:n,digits:i};return D(t.strategy,t.counter,{totp:()=>Fe({...a,period:t.period,epoch:t.epoch,t0:t.t0,guardrails:t.guardrails}),hotp:e=>He({...a,counter:e,guardrails:t.guardrails})})}async function Bt(e){let t=Ct(e),{secret:r,token:o,crypto:s,base32:n,algorithm:i,digits:a,hooks:c}=t,u={secret:r,token:o,crypto:s,base32:n,algorithm:i,digits:a,hooks:c};return D(t.strategy,t.counter,{totp:()=>We({...u,period:t.period,epoch:t.epoch,t0:t.t0,epochTolerance:t.epochTolerance,afterTimeStep:t.afterTimeStep,guardrails:t.guardrails}),hotp:e=>Pe({...u,counter:e,counterTolerance:t.counterTolerance,guardrails:t.guardrails})})}function Nt(e){let d=Ct(e),{secret:t,token:r,crypto:o,base32:s,algorithm:n,digits:i,hooks:a}=d,l={secret:t,token:r,crypto:o,base32:s,algorithm:n,digits:i,hooks:a};return D(d.strategy,d.counter,{totp:()=>{var{token:t,crypto:r,minCounter:o,maxCounter:s,currentCounter:n,t0:i,period:a,afterTimeStep:c,getGenerateOptions:u}=Ye(o={...l,period:d.period,epoch:d.epoch,t0:d.t0,epochTolerance:d.epochTolerance,afterTimeStep:d.afterTimeStep,guardrails:d.guardrails});for(let e=o;e<=s;e++)if(!je(e,c)){var h=Fe(u(e));if(r.constantTimeEqual(h,t))return{valid:!0,delta:e-n,epoch:e*a+i,timeStep:e}}return{valid:!1}},hotp:e=>{var{token:t,counterNum:r,past:o,totalChecks:s,crypto:n,getGenerateOptions:i}=Le({...l,counter:e,counterTolerance:d.counterTolerance,guardrails:d.guardrails});for(let e=Math.max(0,o-r);e<s;e++){var a=e-o,c=He(i(r+a));if(n.constantTimeEqual(c,t))return{valid:!0,delta:0|a}}return{valid:!1}}})}var Ot=class{strategy;crypto;base32;guardrails;constructor(e={}){var{strategy:e="totp",crypto:t=St,base32:r=rt,guardrails:o}=e;this.strategy=e,this.crypto=t,this.base32=r,this.guardrails=E(o)}getStrategy(){return this.strategy}generateSecret(e=20){return n({crypto:this.crypto,base32:this.base32,length:e})}async generate(e){return _t({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}generateSync(e){return Mt({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}async verify(e){return Bt({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}verifySync(e){return Nt({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}generateURI(e){return kt({...e,strategy:this.strategy})}};return y=X,((t,r,o,s)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let e of L(r))P.call(t,e)||e===o||U(t,e,{get:()=>r[e],enumerable:!(s=H(r,e))||s.enumerable});return t})(U({},"__esModule",{value:!0}),y)})();
|
package/assets/js/qr.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
let chCodes={newline:10,reset:27};function assertNumber(e){if(!Number.isSafeInteger(e))throw new Error("integer expected: "+e)}function validateVersion(e){if(!Number.isSafeInteger(e)||e<1||40<e)throw new Error(`Invalid version=${e}. Expected number [1..40]`)}function bin(e,t){return e.toString(2).padStart(t,"0")}function mod(e,t){e%=t;return 0<=e?e:t+e}function fillArr(e,t){return new Array(e).fill(t)}function popcnt(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24}function interleaveBytes(t){let r=0,e=0;for(var i of t)r=Math.max(r,i.length),e+=i.length;var n=new Uint8Array(e);let o=0;for(let e=0;e<r;e++)for(var a of t)e<a.length&&(n[o++]=a[e]);return n}function best(){let r,i=1/0;return{add(e,t){e>=i||(r=t,i=e)},get:()=>r,score:()=>i}}function alphabet(r){return Object.freeze({has:e=>r.includes(e),decode:e=>{if(!Array.isArray(e)||e.length&&"string"!=typeof e[0])throw new Error("alphabet.decode input should be array of strings");return e.map(e=>{if("string"!=typeof e)throw new Error("alphabet.decode: not string element="+e);var t=r.indexOf(e);if(-1===t)throw new Error(`Unknown letter: "${e}". Allowed: `+r);return t})},encode:e=>{if(!Array.isArray(e)||e.length&&"number"!=typeof e[0])throw new Error("alphabet.encode input should be an array of numbers");return e.map(e=>{if(assertNumber(e),e<0||e>=r.length)throw new Error(`Digit index outside alphabet: ${e} (alphabet: ${r.length})`);return r[e]})}})}function transpose32(r){if(32!==r.length)throw new Error("expects 32 element matrix");var t=[1431655765,858993459,252645135,16711935,65535];for(let e=0;e<5;e++){var i=t[e]>>>0,n=1<<e,o=n<<1;for(let t=0;t<32;t+=o)for(let e=0;e<n;e++){var a=t+e,l=a+n,h=r[a]>>>0,s=r[l]>>>0,d=(h>>>n^s)&i;r[a]=(h^d<<n)>>>0,r[l]=(s^d)>>>0}}}let bitMask=e=>1<<(31&e)>>>0,rangeMask=(e,t)=>0===t?0:32===t?4294967295:(1<<t)-1<<e>>>0;class Bitmap{static size(e,t){if("number"==typeof e&&(e={height:e,width:e}),!Number.isSafeInteger(e.height)&&e.height!==1/0)throw new Error(`Bitmap: invalid height=${e.height} (${typeof e.height})`);if(Number.isSafeInteger(e.width)||e.width===1/0)return e=void 0!==t?{width:Math.min(e.width,t.width),height:Math.min(e.height,t.height)}:e;throw new Error(`Bitmap: invalid width=${e.width} (${typeof e.width})`)}static fromString(e){var e=(e=e.replace(/^\n+/g,"").replace(/\n+$/g,"")).split(String.fromCharCode(chCodes.newline)),t=e.length;let r;var i,n=[];for(i of e){var o=i.split("").map(e=>{if("X"===e)return!0;if(" "===e)return!1;if("?"!==e)throw new Error("Bitmap.fromString: unknown symbol="+e)});if(void 0!==r&&o.length!==r)throw new Error(`Bitmap.fromString different row sizes: width=${r} cur=`+o.length);r=o.length,n.push(o)}return void 0===r&&(r=0),new Bitmap({height:t,width:r},n)}defined;value;tailMask;words;fullWords;height;width;constructor(e,r){var{height:i,width:n}=Bitmap.size(e);if(!Number.isSafeInteger(i)||i<=0)throw new Error(`Bitmap: invalid height=${i}, expected positive safe integer dimension`);if(!Number.isSafeInteger(n)||n<=0)throw new Error(`Bitmap: invalid width=${n}, expected positive safe integer dimension`);if(this.height=i,this.width=n,this.tailMask=rangeMask(0,31&n||32),this.words=0|Math.ceil(n/32),this.fullWords=0|Math.floor(n/32),this.value=new Uint32Array(this.words*i),this.defined=new Uint32Array(this.value.length),r){if(r.length!==i)throw new Error(`Bitmap: data height mismatch: exp=${i} got=`+r.length);for(let t=0;t<i;t++){var o=r[t];if(!o||o.length!==n)throw new Error(`Bitmap: data width mismatch at y=${t}: exp=${n} got=`+o?.length);for(let e=0;e<n;e++)this.set(e,t,o[e])}}}point(e){return this.get(e.x,e.y)}isInside(e){return 0<=e.x&&e.x<this.width&&0<=e.y&&e.y<this.height}size(e){var t;return e?({x:e,y:t}=this.xy(e),{height:this.height-t,width:this.width-e}):{height:this.height,width:this.width}}xy(e){if("number"==typeof e&&(e={x:e,y:e}),!Number.isSafeInteger(e.x))throw new Error("Bitmap: invalid x="+e.x);if(Number.isSafeInteger(e.y))return e.x=mod(e.x,this.width),e.y=mod(e.y,this.height),e;throw new Error("Bitmap: invalid y="+e.y)}wordIndex(e,t){return t*this.words+(e>>>5)}bitIndex(e,t){return{word:this.wordIndex(e,t),bit:31&e}}isDefined(e,t){t=this.wordIndex(e,t),e=bitMask(e);return 0!=(this.defined[t]&e)}get(e,t){t=this.wordIndex(e,t),e=bitMask(e);return 0!=(this.value[t]&e)}maskWord(e,t,r){var{defined:i,value:n}=this;i[e]|=t,n[e]=n[e]&~t|-r&t}set(e,t,r){void 0!==r&&this.maskWord(this.wordIndex(e,t),bitMask(e),r)}fillRectConst(e,t,r,i,n){if(!(r<=0||i<=0)&&void 0!==n){var{value:o,defined:a,words:l}=this,h=e>>>5,s=e+r-1>>>5,d=31&e,f=e+r-1&31;for(let e=0;e<i;e++){var u=(t+e)*l;if(h==s){var g=rangeMask(d,f-d+1);this.maskWord(u+h,g,n)}else{this.maskWord(u+h,rangeMask(d,32-d),n);for(let e=1+h;e<s;e++)a[u+e]=4294967295,o[u+e]=n?4294967295:0;this.maskWord(u+s,rangeMask(0,1+f),n)}}}}rectWords(r,e,i,n,o){for(let t=0;t<n;t++){var a=e+t;for(let e=0;e<i;){var l=r+e,{bit:h,word:s}=this.bitIndex(l,a),h=Math.min(32-h,i-e);o(s,l,e,t,h),e+=h}}}rect(e,t,f){var{x:e,y:r}=this.xy(e),{height:t,width:i}=Bitmap.size(t,this.size({x:e,y:r}));if("function"!=typeof f)this.fillRectConst(e,r,i,t,f);else{let{defined:s,value:d}=this;this.rectWords(e,r,i,t,(e,t,r,i,n)=>{let o=0,a=d[e];for(let e=0;e<n;e++){var l=bitMask(t+e),h=f({x:r+e,y:i},0!=(a&l));void 0!==h&&(o|=l,a=a&~l|-h&l)}s[e]|=o,d[e]=a})}return this}rectRead(e,t,l){var{x:e,y:r}=this.xy(e),{height:t,width:i}=Bitmap.size(t,this.size({x:e,y:r}));let h=this.value;return this.rectWords(e,r,i,t,(e,t,r,i,n)=>{var o=h[e];for(let e=0;e<n;e++){var a=bitMask(t+e);l({x:r+e,y:i},0!=(o&a))}}),this}hLine(e,t,r){return this.rect(e,{width:t,height:1},r)}vLine(e,t,r){return this.rect(e,{width:1,height:t},r)}border(e=2,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error("Bitmap.border: invalid size="+e);var r=this.height+2*e,i=this.width+2*e,r=new Bitmap({height:r,width:i});return r.rect(0,1/0,t),r.embed({x:e,y:e},this),r}embed(e,r){var{x:i,y:n}=this.xy(e),{height:o,width:a}=Bitmap.size(r.size(),this.size({x:i,y:n}));if(!(a<=0||o<=0)){var{value:l,defined:h}=this,{words:s,value:d}=r;for(let t=0;t<o;t++){var f=t*s;for(let e=0;e<a;){var u=i+e,{word:u,bit:g}=this.bitIndex(u,n+t),{word:w,bit:c}=r.bitIndex(e,t),v=Math.min(32-g,a-e),m=d[w],w=c&&w+1<f+s?d[w+1]:0,w=c?(m>>>c|w<<32-c)>>>0:m,c=rangeMask(g,v),m=(w&rangeMask(0,v))<<g>>>0;h[u]|=c,l[u]=l[u]&~c|m,e+=v}}}return this}rectSlice(e,t=this.size()){let{x:r,y:i}=this.xy(e);var{height:e,width:t}=Bitmap.size(t,this.size({x:r,y:i}));let n=new Bitmap({height:e,width:t});return this.rectRead({x:r,y:i},{height:e,width:t},(e,t)=>{this.isDefined(r+e.x,i+e.y)&&n.set(e.x,e.y,t)}),n}transpose(){var{height:e,width:i,value:n,defined:o,words:a}=this,l=new Bitmap({height:i,width:e}),{words:h,value:s,defined:d,tailMask:f}=l,u=new Uint32Array(32),g=new Uint32Array(32);for(let r=0;r<e;r+=32)for(let t=0;t<a;t++){var w=Math.min(32,e-r);for(let e=0;e<w;e++){var c=this.wordIndex(32*t,r+e);u[e]=n[c],g[e]=o[c]}u.fill(0,w),g.fill(0,w),transpose32(u),transpose32(g);for(let e=0;e<32;e++){var v=32*t+e;if(i<=v)break;var v=l.wordIndex(r,v),m=r>>>5==h-1?f:4294967295;s[v]=u[e]&m,d[v]=g[e]&m}}return l}negate(){var t=this.defined.length;for(let e=0;e<t;e++)this.value[e]=~this.value[e],this.defined[e]=4294967295;return this}scale(r){if(!Number.isSafeInteger(r)||1024<r)throw new Error("invalid scale factor: "+r);var{height:e,width:t}=this;return new Bitmap({height:r*e,width:r*t}).rect({x:0,y:0},1/0,({x:e,y:t})=>this.get(e/r|0,t/r|0))}clone(){var e=new Bitmap(this.size());return e.defined.set(this.defined),e.value.set(this.value),e}assertDrawn(){var{height:t,width:e,defined:r,tailMask:i,fullWords:n,words:o}=this;if(t&&e)for(let e=0;e<t;e++){var a=e*o;for(let e=0;e<n;e++)if(4294967295!==r[a+e])throw new Error("Invalid color type=undefined");if(o!==n&&(r[a+n]&i)!==i)throw new Error("Invalid color type=undefined")}}countPatternInRow(e,i,...n){if(!Number.isSafeInteger(i)||i<=0||32<=i)throw new Error("wrong patternLen");var o=(1<<i)-1,{height:t,width:a,value:l,words:h}=this;if(!Number.isSafeInteger(e)||e<0||t<=e)return 0;let s=0;var d=this.wordIndex(0,e);for(let t=0,r=0;t<h;t++){var f=l[d+t],u=t===h-1&&31&a||32;for(let e=0;e<u;e++)if(r=(r<<1|f>>>e&1)&o,!(32*t+e+1<i))for(var g of n)if(r===g){s++;break}}return s}getRuns(e,i){var{height:t,width:n,value:o,words:a}=this;if(0!==n&&!(!Number.isSafeInteger(e)||e<0||t<=e)){let t=0,r;var l=this.wordIndex(0,e);for(let e=0;e<a;e++){var h=o[l+e],s=e===a-1&&31&n||32;for(let e=0;e<s;e++){var d=0!=(h&1<<e);d===r?t++:(void 0!==r&&i(t,r),r=d,t=1)}}void 0!==r&&i(t,r)}}popcnt(){var{height:t,width:e,words:r,fullWords:i,tailMask:n}=this;if(!t||!e)return 0;let o=0;for(let e=0;e<t;e++){var a=e*r;for(let e=0;e<i;e++)o+=popcnt(this.value[a+e]);r!==i&&(o+=popcnt(this.value[a+i]&n))}return o}countBoxes2x2(e){var{height:t,width:r,words:i}=this;if(r<2||!Number.isSafeInteger(e)||e<0||t<=e+1)return 0;var n=this.wordIndex(0,e),o=this.wordIndex(0,e+1),a=0==(31&r)?2147483647:rangeMask(0,r-1&31);let l=0;for(let t=0;t<i;t++){var h=this.value[n+t],s=this.value[o+t];let e=(~(h^s)>>>0&~(h^(h>>>1|(1&(t+1<i?this.value[n+t+1]>>>0:0))<<31)>>>0)>>>0&~(s^(s>>>1|(1&(t+1<i?this.value[o+t+1]>>>0:0))<<31)>>>0)>>>0)>>>0;t===i-1&&(e&=a),l+=popcnt(e)}return l}toString(){var e=String.fromCharCode(chCodes.newline);let i="";for(let r=0;r<this.height;r++){let t="";for(let e=0;e<this.width;e++){var n=this.get(e,r);t+=this.isDefined(e,r)?n?"X":" ":"?"}i+=t+(r+1===this.height?"":e)}return i}toRaw(){var e=Array.from({length:this.height},()=>new Array(this.width));for(let t=0;t<this.height;t++){var r=e[t];for(let e=0;e<this.width;e++)r[e]=this.get(e,t)}return e}toASCII(){var{height:r,width:i}=this;let n="";for(let t=0;t<r;t+=2){for(let e=0;e<i;e++){var o=this.get(e,t),a=t+1>=r||this.get(e,t+1);o||a?!o&&a?n+="▀":o&&!a?n+="▄":o&&a&&(n+=" "):n+="█"}n+=String.fromCharCode(chCodes.newline)}return n}toTerm(){var e=String.fromCharCode(chCodes.reset),t=e+"[0m",r=e+"[1;47m "+t,i=e+"[40m "+t,n=String.fromCharCode(chCodes.newline);let o="";for(let t=0;t<this.height;t++){for(let e=0;e<this.width;e++){var a=this.get(e,t);o+=a?i:r}o+=n}return o}toSVG(e=!0){let o=`<svg viewBox="0 0 ${this.width} ${this.height}" xmlns="http://www.w3.org/2000/svg">`,a="",l;return this.rectRead(0,1/0,(t,r)=>{if(r){var{x:r,y:i}=t;if(e){let e=`M${r} `+i;l&&(n=`m${r-l.x} `+(i-l.y)).length<=e.length&&(e=n);var n=r<10?"H"+r:"h-1";a+=e+`h1v1${n}Z`,l=t}else o+=`<rect x="${r}" y="${i}" width="1" height="1" />`}}),e&&(o+=`<path d="${a}"/>`),o+="</svg>"}toGIF(){var e=e=>[255&e,e>>>8&255],e=[...e(this.width),...e(this.height)];let r=[];this.rectRead(0,1/0,(e,t)=>r.push(+(!0===t)));var t=[71,73,70,56,55,97,...e,246,0,0,255,255,255,...fillArr(381,0),44,0,0,0,0,...e,0,7],i=Math.floor(r.length/126);for(let e=0;e<i;e++)t.push(127,128,...r.slice(126*e,126*(e+1)).map(e=>+e));return t.push(r.length%126+1,128,...r.slice(126*i).map(e=>+e)),t.push(1,129,0,59),new Uint8Array(t)}toImage(r=!1){var{height:e,width:i}=this.size(),n=new Uint8Array(e*i*(r?3:4));let o=0;for(let t=0;t<e;t++)for(let e=0;e<i;e++){var a=this.get(e,t)?0:255;n[o++]=a,n[o++]=a,n[o++]=a,r||(n[o++]=255)}return{height:e,width:i,data:n}}}let ECMode=Object.freeze(["low","medium","quartile","high"]),Encoding=Object.freeze(["numeric","alphanumeric","byte","kanji","eci"]),BYTES=[26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706],WORDS_PER_BLOCK={low:[7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],medium:[10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],quartile:[13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],high:[17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]},ECC_BLOCKS={low:[1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],medium:[1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],quartile:[1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],high:[1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]},info=Object.freeze({size:Object.freeze({encode:e=>21+4*(e-1),decode:e=>(e-17)/4}),sizeType:e=>Math.floor((e+7)/17),alignmentPatterns(e){if(1===e)return[];var t=info.size.encode(e)-6-1,e=t-6,r=Math.ceil(e/28);let i=Math.floor(e/r);i%2?i+=1:r<=e%r*2&&(i+=2);var n=[6];for(let e=1;e<r;e++)n.push(t-(r-e)*i);return n.push(t),n},ECCode:Object.freeze({low:1,medium:0,quartile:3,high:2}),formatMask:21522,formatBits(e,t){e=info.ECCode[e]<<3|t;let r=e;for(let e=0;e<10;e++)r=r<<1^1335*(r>>9);return(e<<10|r)^info.formatMask},versionBits(e){let t=e;for(let e=0;e<12;e++)t=t<<1^7973*(t>>11);return e<<12|t},alphabet:Object.freeze({numeric:alphabet("0123456789"),alphanumerc:alphabet("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:")}),lengthBits(e,t){return{numeric:[10,12,14],alphanumeric:[9,11,13],byte:[8,16,16],kanji:[8,10,12],eci:[0,0,0]}[t][info.sizeType(e)]},modeBits:Object.freeze({numeric:"0001",alphanumeric:"0010",byte:"0100",kanji:"1000",eci:"0111"}),capacity(e,t){var r=BYTES[e-1],i=WORDS_PER_BLOCK[t][e-1],t=ECC_BLOCKS[t][e-1],e=Math.floor(r/t)-i,n=t-r%t;return{words:i,numBlocks:t,shortBlocks:n,blockLen:e,capacity:8*(r-i*t),total:(i+e)*t+t-n}}}),PATTERNS=Object.freeze([(e,t)=>(e+t)%2==0,(e,t)=>t%2==0,(e,t)=>e%3==0,(e,t)=>(e+t)%3==0,(e,t)=>(Math.floor(t/2)+Math.floor(e/3))%2==0,(e,t)=>e*t%2+e*t%3==0,(e,t)=>(e*t%2+e*t%3)%2==0,(e,t)=>((e+t)%2+e*t%3)%2==0]),GF={tables:(()=>{var r=fillArr(256,0),i=fillArr(256,0);for(let e=0,t=1;e<256;e++)i[r[e]=t]=e,256&(t<<=1)&&(t^=285);return{exp:r,log:i}})(),exp:e=>GF.tables.exp[e],log(e){if(0===e)throw new Error("GF.log: invalid arg="+e);return GF.tables.log[e]%255},mul(e,t){return 0===e||0===t?0:GF.tables.exp[(GF.tables.log[e]+GF.tables.log[t])%255]},add:(e,t)=>e^t,pow:(e,t)=>GF.tables.exp[GF.tables.log[e]*t%255],inv(e){if(0===e)throw new Error("GF.inverse: invalid arg="+e);return GF.tables.exp[255-GF.tables.log[e]]},polynomial(e){if(0==e.length)throw new Error("GF.polymomial: invalid length");if(0!==e[0])return e;let t=0;for(;t<e.length-1&&0==e[t];t++);return e.slice(t)},monomial(e,t){if(e<0)throw new Error("GF.monomial: invalid degree="+e);return 0==t?[0]:((e=fillArr(e+1,0))[0]=t,GF.polynomial(e))},degree:e=>e.length-1,coefficient:(e,t)=>e[GF.degree(e)-t],mulPoly(r,i){if(0===r[0]||0===i[0])return[0];var n=fillArr(r.length+i.length-1,0);for(let t=0;t<r.length;t++)for(let e=0;e<i.length;e++)n[t+e]=GF.add(n[t+e],GF.mul(r[t],i[e]));return GF.polynomial(n)},mulPolyScalar(t,r){if(0==r)return[0];if(1==r)return t;var i=fillArr(t.length,0);for(let e=0;e<t.length;e++)i[e]=GF.mul(t[e],r);return GF.polynomial(i)},mulPolyMonomial(t,e,r){if(e<0)throw new Error("GF.mulPolyMonomial: invalid degree");if(0==r)return[0];var i=fillArr(t.length+e,0);for(let e=0;e<t.length;e++)i[e]=GF.mul(t[e],r);return GF.polynomial(i)},addPoly(e,t){if(0===e[0])return t;if(0===t[0])return e;let r=e,i=t;r.length>i.length&&([r,i]=[i,r]);var n=fillArr(i.length,0),o=i.length-r.length,a=i.slice(0,o);for(let e=0;e<a.length;e++)n[e]=a[e];for(let e=o;e<i.length;e++)n[e]=GF.add(r[e-o],i[e]);return GF.polynomial(n)},remainderPoly(e,r){var i=Array.from(e);for(let t=0;t<e.length-r.length+1;t++){var n=i[t];if(0!==n)for(let e=1;e<r.length;e++)0!==r[e]&&(i[t+e]=GF.add(i[t+e],GF.mul(r[e],n)))}return i.slice(e.length-r.length+1,i.length)},divisorPoly(t){let r=[1];for(let e=0;e<t;e++)r=GF.mulPoly(r,[1,GF.pow(2,e)]);return r},evalPoly(t,r){if(0==r)return GF.coefficient(t,0);let i=t[0];for(let e=1;e<t.length;e++)i=GF.add(GF.mul(r,i),t[e]);return i},euclidian(e,t,r){GF.degree(e)<GF.degree(t)&&([e,t]=[t,e]);let i=e,n=t,o=[0],a=[1];for(;2*GF.degree(n)>=r;){var l=i,h=o;if(i=n,o=a,0===i[0])throw new Error("rLast[0] === 0");n=l;let e=[0];for(var s=GF.inv(i[0]);GF.degree(n)>=GF.degree(i)&&0!==n[0];){var d=GF.degree(n)-GF.degree(i),f=GF.mul(n[0],s);e=GF.addPoly(e,GF.monomial(d,f)),n=GF.addPoly(n,GF.mulPolyMonomial(i,d,f))}if(e=GF.mulPoly(e,o),a=GF.addPoly(e,h),GF.degree(n)>=GF.degree(i))throw new Error(`Division failed r: ${n}, rLast: `+i)}e=GF.coefficient(a,0);if(0==e)throw new Error("sigmaTilde(0) was zero");t=GF.inv(e);return[GF.mulPolyScalar(a,t),GF.mulPolyScalar(n,t)]}};function RS(f){return{encode(e){var t=GF.divisorPoly(f),e=Array.from(e);return e.push(...t.slice(0,-1).fill(0)),Uint8Array.from(GF.remainderPoly(e,t))},decode(e){var i=e.slice(),t=GF.polynomial(Array.from(e));let r=fillArr(f,0),n=!1;for(let e=0;e<f;e++){var o=GF.evalPoly(t,GF.exp(e));0!==(r[r.length-1-e]=o)&&(n=!0)}if(n){r=GF.polynomial(r);var e=GF.monomial(f,1),[a,l]=GF.euclidian(e,r,f),h=fillArr(GF.degree(a),0);let t=0;for(let e=1;e<256&&t<h.length;e++)0===GF.evalPoly(a,e)&&(h[t++]=GF.inv(e));if(t!==h.length)throw new Error("RS.decode: invalid errors number");for(let r=0;r<h.length;r++){var s=i.length-1-GF.log(h[r]);if(s<0)throw new Error("RS.decode: invalid error location");var d=GF.inv(h[r]);let t=1;for(let e=0;e<h.length;e++)r!==e&&(t=GF.mul(t,GF.add(1,GF.mul(h[e],d))));i[s]=GF.add(i[s],GF.mul(GF.evalPoly(l,d),GF.inv(t)))}}return i}}}function interleave(e,t){let{words:l,shortBlocks:h,numBlocks:s,blockLen:d,total:f}=info.capacity(e,t),u=RS(l);return{encode(t){var r=[],i=[];for(let e=0;e<s;e++){var n=e<h,n=d+(n?0:1);r.push(t.subarray(0,n)),i.push(u.encode(t.subarray(0,n))),t=t.subarray(n)}var e=interleaveBytes(r),o=interleaveBytes(i),a=new Uint8Array(e.length+o.length);return a.set(e),a.set(o,e.length),a},decode(r){if(r.length!==f)throw new Error(`interleave.decode: len(data)=${r.length}, total=`+f);var i=[];for(let e=0;e<s;e++){var t=e<h;i.push(new Uint8Array(l+d+(t?0:1)))}let n=0;for(let t=0;t<d;t++)for(let e=0;e<s;e++)i[e][t]=r[n++];for(let e=h;e<s;e++)i[e][d]=r[n++];for(let t=d;t<d+l;t++)for(let e=0;e<s;e++){var o=e<h;i[e][t+(o?0:1)]=r[n++]}var e,a=[];for(e of i)a.push(...Array.from(u.decode(e)).slice(0,-l));return Uint8Array.from(a)}}}function drawTemplate(e,r,i,n=!1){var o=info.size.encode(e);let a=new Bitmap(o+2);var t,l=new Bitmap(3).rect(0,3,!0).border(1,!1).border(1,!0).border(1,!1),h=(a=(a=a.embed(0,l).embed({x:-l.width,y:0},l).embed({x:0,y:-l.height},l)).rectSlice(1,o),new Bitmap(1).rect(0,1,!0).border(1,!1).border(1,!0)),s=info.alignmentPatterns(e);for(t of s)for(var d of s)a.isDefined(d,t)||a.embed({x:d-2,y:t-2},h);a=a.hLine({x:0,y:6},1/0,({x:e})=>a.isDefined(e,6)?void 0:e%2==0).vLine({x:6,y:0},1/0,({y:e})=>a.isDefined(6,e)?void 0:e%2==0);{let t=info.formatBits(r,i);var f=e=>!n&&1==(t>>e&1);for(let e=0;e<6;e++)a.set(8,e,f(e));for(let e=6;e<8;e++)a.set(8,e+1,f(e));for(let e=8;e<15;e++)a.set(8,o-15+e,f(e));for(let e=0;e<8;e++)a.set(o-e-1,8,f(e));for(let e=8;e<9;e++)a.set(15-e-1+1,8,f(e));for(let e=9;e<15;e++)a.set(15-e-1,8,f(e));a.set(8,o-8,!n)}if(7<=e){var u=info.versionBits(e);for(let e=0;e<18;e+=1){var g=!n&&1==(u>>e&1),w=Math.floor(e/3),c=e%3+o-8-3;a.set(c,w,g),a.set(w,c,g)}}return a}function zigzag(e,t,r){var i=e,n=i.height,o=PATTERNS[t];let a=-1,l=n-1;for(let t=n-1;0<t;t-=2){for(6==t&&(t=5);;l+=a){for(let e=0;e<2;e+=1){var h=t-e;i.isDefined(h,l)||r(h,l,o(h,l))}if(l+a<0||l+a>=n)break}a=-a}}function detectType(e){let t="numeric";for(var r of e)if(!info.alphabet.numeric.has(r)&&(t="alphanumeric",!info.alphabet.alphanumerc.has(r)))return"byte";return t}function utf8ToBytes(e){if("string"!=typeof e)throw new Error("utf8ToBytes expected string, got "+typeof e);return new Uint8Array((new TextEncoder).encode(e))}function encode(e,t,r,i,n=utf8ToBytes){let o="",a=r.length;if("numeric"===i){var l=info.alphabet.numeric.decode(r.split("")),h=l.length;for(let e=0;e<h-2;e+=3)o+=bin(100*l[e]+10*l[e+1]+l[e+2],10);h%3==1?o+=bin(l[h-1],4):h%3==2&&(o+=bin(10*l[h-2]+l[h-1],7))}else if("alphanumeric"===i){var s=info.alphabet.alphanumerc.decode(r.split("")),d=s.length;for(let e=0;e<d-1;e+=2)o+=bin(45*s[e]+s[e+1],11);d%2==1&&(o+=bin(s[d-1],6))}else{if("byte"!==i)throw new Error("encode: unsupported type");n=n(r);a=n.length,o=Array.from(n).map(e=>bin(e,8)).join("")}var f=info.capacity(e,t).capacity,r=bin(a,info.lengthBits(e,i));let u=info.modeBits[i]+r+o;if(u.length>f)throw new Error("Capacity overflow");(u+="0".repeat(Math.min(4,Math.max(0,f-u.length)))).length%8&&(u+="0".repeat(8-u.length%8));var g="1110110000010001";for(let e=0;u.length!==f;e++)u+=g[e%g.length];n=Uint8Array.from(u.match(/(.{8})/g).map(e=>Number("0b"+e)));return interleave(e,t).encode(n)}function drawQR(e,t,n,r,i=!1){let o=drawTemplate(e,t,r,i),a=0,l=8*n.length;if(zigzag(o,r,(e,t,r)=>{let i=!1;a<l&&(i=0!=(n[a>>>3]>>(7-a&7)&1),a++),o.set(e,t,i!==r)}),a!==l)throw new Error("QR: bytes left after draw");return o}let mkPattern=e=>{e=e.map(e=>e?"1":"0").join("");return{len:e.length,n:Number("0b"+e)}},finderPattern=[!0,!1,!0,!0,!0,!1,!0],lightPattern=[!1,!1,!1,!1],P1=(()=>mkPattern([...finderPattern,...lightPattern]))(),P2=(()=>mkPattern([...lightPattern,...finderPattern]))();function penalty(e){var t=e,{width:r,height:i}=t,n=t.transpose();let o=0;for(let e=0;e<i;e++)t.getRuns(e,e=>{5<=e&&(o+=e-5+3)});for(let e=0;e<r;e++)n.getRuns(e,e=>{5<=e&&(o+=e-5+3)});let a=0;for(let e=0;e<i-1;e++)a+=3*t.countBoxes2x2(e);let l=0;for(let e=0;e<i;e++)l+=40*t.countPatternInRow(e,P1.len,P1.n,P2.n);for(let e=0;e<r;e++)l+=40*n.countPatternInRow(e,P1.len,P1.n,P2.n);var e=i*r,h=t.popcnt(),h=Math.ceil(Math.max(0,Math.abs(100*h-50*e)-5*e)/(5*e));return o+a+l+10*h}function drawQRBest(t,r,i,e){if(void 0===e){var n=best();for(let e=0;e<PATTERNS.length;e++)n.add(penalty(drawQR(t,r,i,e,!0)),e);e=n.get()}if(void 0===e)throw new Error("Cannot find mask");return drawQR(t,r,i,e)}function validateECC(e){if(!ECMode.includes(e))throw new Error(`Invalid error correction mode=${e}. Expected: `+ECMode)}function validateEncoding(e){if(!Encoding.includes(e))throw new Error(`Encoding: invalid mode=${e}. Expected: `+Encoding);if("kanji"===e||"eci"===e)throw new Error(`Encoding: ${e} is not supported (yet?).`)}function validateMask(e){if(![0,1,2,3,4,5,6,7].includes(e)||!PATTERNS[e])throw new Error(`Invalid mask=${e}. Expected number [0..7]`)}function encodeQR(t,e="raw",r={}){var i=r,n=void 0!==i.ecc?i.ecc:"medium",o=(validateECC(n),void 0!==i.encoding?i.encoding:detectType(t));validateEncoding(o),void 0!==i.mask&&validateMask(i.mask);let a=i.version,l,h=new Error("Unknown error");if(void 0!==a)validateVersion(a),l=encode(a,n,t,o,i.textEncoder);else for(let e=1;e<=40;e++)try{l=encode(e,n,t,o,i.textEncoder),a=e;break}catch(e){h=e}if(!a||!l)throw h;let s=drawQRBest(a,n,l,i.mask);s.assertDrawn();r=void 0===i.border?2:i.border;if(!Number.isSafeInteger(r)||r<=0)throw new Error("invalid border="+r);if(s=s.border(r,!1),void 0!==i.scale&&(s=s.scale(i.scale)),"raw"===e)return s.toRaw();if("ascii"===e)return s.toASCII();if("svg"===e)return s.toSVG(i.optimize);if("gif"===e)return s.toGIF();if("term"===e)return s.toTerm();throw new Error("Unknown output: "+e)}export default encodeQR;let utils=Object.freeze({best:best,bin:bin,popcnt:popcnt,drawTemplate:drawTemplate,fillArr:fillArr,info:info,interleave:interleave,validateVersion:validateVersion,zigzag:zigzag}),_tests=Object.freeze({Bitmap:Bitmap,info:info,detectType:detectType,encode:encode,drawQR:drawQR,penalty:penalty,PATTERNS:PATTERNS});export{Bitmap,ECMode,Encoding,utf8ToBytes,encodeQR,utils,_tests};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|