@1sat/wallet-server 0.0.45 → 0.0.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/accounts/client.d.ts +31 -0
- package/dist/accounts/client.d.ts.map +1 -0
- package/dist/accounts/client.js +45 -0
- package/dist/accounts/client.js.map +1 -0
- package/dist/accounts/index.d.ts +8 -5
- package/dist/accounts/index.d.ts.map +1 -1
- package/dist/accounts/index.js +7 -4
- package/dist/accounts/index.js.map +1 -1
- package/dist/accounts/middleware.d.ts +2 -2
- package/dist/accounts/middleware.d.ts.map +1 -1
- package/dist/accounts/middleware.js +3 -3
- package/dist/accounts/middleware.js.map +1 -1
- package/dist/accounts/paymentRoute.d.ts +4 -1
- package/dist/accounts/paymentRoute.d.ts.map +1 -1
- package/dist/accounts/paymentRoute.js +8 -4
- package/dist/accounts/paymentRoute.js.map +1 -1
- package/dist/accounts/pricing.d.ts +1 -1
- package/dist/accounts/pricing.d.ts.map +1 -1
- package/dist/accounts/queries.d.ts +1 -1
- package/dist/accounts/queries.d.ts.map +1 -1
- package/dist/accounts/registrationRoutes.d.ts +29 -0
- package/dist/accounts/registrationRoutes.d.ts.map +1 -0
- package/dist/accounts/registrationRoutes.js +104 -0
- package/dist/accounts/registrationRoutes.js.map +1 -0
- package/dist/accounts/store.d.ts +70 -0
- package/dist/accounts/store.d.ts.map +1 -0
- package/dist/accounts/store.js +174 -0
- package/dist/accounts/store.js.map +1 -0
- package/dist/accounts/types.d.ts +17 -3
- package/dist/accounts/types.d.ts.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/createBearerServer.d.ts +7 -3
- package/dist/createBearerServer.d.ts.map +1 -1
- package/dist/createBearerServer.js +60 -9
- package/dist/createBearerServer.js.map +1 -1
- package/dist/createHostServer.d.ts +14 -9
- package/dist/createHostServer.d.ts.map +1 -1
- package/dist/createHostServer.js +24 -42
- package/dist/createHostServer.js.map +1 -1
- package/dist/createWalletRpcHandler.d.ts +1 -1
- package/dist/createWalletRpcHandler.d.ts.map +1 -1
- package/dist/createWalletRpcHandler.js +1 -1
- package/dist/createWalletRpcHandler.js.map +1 -1
- package/dist/createWalletServer.d.ts +8 -7
- package/dist/createWalletServer.d.ts.map +1 -1
- package/dist/createWalletServer.js +16 -28
- package/dist/createWalletServer.js.map +1 -1
- package/dist/dispatch.d.ts +1 -1
- package/dist/dispatch.d.ts.map +1 -1
- package/dist/index.d.ts +25 -27
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -16
- package/dist/index.js.map +1 -1
- package/dist/openapi/fragments.d.ts +1 -1
- package/dist/openapi/fragments.d.ts.map +1 -1
- package/dist/openapi/fragments.js +85 -72
- package/dist/openapi/fragments.js.map +1 -1
- package/dist/openapi/index.d.ts +2 -2
- package/dist/openapi/index.d.ts.map +1 -1
- package/dist/openapi/index.js +4 -5
- package/dist/openapi/index.js.map +1 -1
- package/dist/paymail/destination.d.ts +1 -1
- package/dist/paymail/destination.d.ts.map +1 -1
- package/dist/paymail/destination.js +1 -1
- package/dist/paymail/destination.js.map +1 -1
- package/dist/paymail/messagebox.d.ts +1 -1
- package/dist/paymail/messagebox.d.ts.map +1 -1
- package/dist/paymail/pending.d.ts +1 -1
- package/dist/paymail/pending.d.ts.map +1 -1
- package/dist/paymail/resolve.d.ts +1 -1
- package/dist/paymail/resolve.d.ts.map +1 -1
- package/dist/paymail/resolvers.d.ts +10 -0
- package/dist/paymail/resolvers.d.ts.map +1 -0
- package/dist/paymail/resolvers.js +22 -0
- package/dist/paymail/resolvers.js.map +1 -0
- package/dist/paymail/routes.d.ts +1 -1
- package/dist/paymail/routes.d.ts.map +1 -1
- package/dist/paymail/routes.js +139 -82
- package/dist/paymail/routes.js.map +1 -1
- package/dist/paymail/types.d.ts +18 -6
- package/dist/paymail/types.d.ts.map +1 -1
- package/dist/resolvers/bearer.d.ts +1 -1
- package/dist/resolvers/bearer.d.ts.map +1 -1
- package/dist/resolvers/index.d.ts +2 -2
- package/dist/resolvers/index.d.ts.map +1 -1
- package/dist/resolvers/index.js +1 -1
- package/dist/resolvers/index.js.map +1 -1
- package/dist/topUp.d.ts +1 -1
- package/dist/topUp.d.ts.map +1 -1
- package/package.json +7 -7
- package/dist/hosting/client.d.ts +0 -33
- package/dist/hosting/client.d.ts.map +0 -1
- package/dist/hosting/client.js +0 -45
- package/dist/hosting/client.js.map +0 -1
- package/dist/hosting/routes.d.ts +0 -27
- package/dist/hosting/routes.d.ts.map +0 -1
- package/dist/hosting/routes.js +0 -239
- package/dist/hosting/routes.js.map +0 -1
- package/dist/paymail/entitlement.d.ts +0 -15
- package/dist/paymail/entitlement.d.ts.map +0 -1
- package/dist/paymail/entitlement.js +0 -30
- package/dist/paymail/entitlement.js.map +0 -1
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host account registry — the one row the host keeps per identity.
|
|
3
|
+
*
|
|
4
|
+
* An account is created by registering a username. The username is the
|
|
5
|
+
* identity's handle on the host's user paymail domain (e.g. alice@1sat.app)
|
|
6
|
+
* and is permanent: one username per identity, one identity per username,
|
|
7
|
+
* no renames. Display name and avatar are editable presentation fields
|
|
8
|
+
* served by the paymail public-profile capability.
|
|
9
|
+
*
|
|
10
|
+
* Storage capacity is *not* recorded here — it stays derived from the host
|
|
11
|
+
* wallet's payment labels (see ./queries.ts).
|
|
12
|
+
*/
|
|
13
|
+
/** Lowercase label: 3-63 chars, alphanumeric ends, no leading/trailing hyphen. */
|
|
14
|
+
export const USERNAME_RE = /^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$/;
|
|
15
|
+
/** `txid_vout` origin of an image ordinal. */
|
|
16
|
+
export const AVATAR_ORIGIN_RE = /^[0-9a-f]{64}_\d+$/;
|
|
17
|
+
export const DISPLAY_NAME_MAX = 64;
|
|
18
|
+
export function normalizeUsername(input) {
|
|
19
|
+
if (typeof input !== 'string')
|
|
20
|
+
return null;
|
|
21
|
+
const name = input.trim().toLowerCase();
|
|
22
|
+
return USERNAME_RE.test(name) ? name : null;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Trim and bound a display name. Empty string clears the field (returns
|
|
26
|
+
* null); non-strings and over-long values are invalid (undefined).
|
|
27
|
+
*/
|
|
28
|
+
export function normalizeDisplayName(input) {
|
|
29
|
+
if (input === null)
|
|
30
|
+
return null;
|
|
31
|
+
if (typeof input !== 'string')
|
|
32
|
+
return undefined;
|
|
33
|
+
const name = input.trim();
|
|
34
|
+
if (name === '')
|
|
35
|
+
return null;
|
|
36
|
+
if (name.length > DISPLAY_NAME_MAX)
|
|
37
|
+
return undefined;
|
|
38
|
+
return name;
|
|
39
|
+
}
|
|
40
|
+
/** Same contract as normalizeDisplayName for an avatar origin. */
|
|
41
|
+
export function normalizeAvatarOrigin(input) {
|
|
42
|
+
if (input === null)
|
|
43
|
+
return null;
|
|
44
|
+
if (typeof input !== 'string')
|
|
45
|
+
return undefined;
|
|
46
|
+
const origin = input.trim().toLowerCase();
|
|
47
|
+
if (origin === '')
|
|
48
|
+
return null;
|
|
49
|
+
return AVATAR_ORIGIN_RE.test(origin) ? origin : undefined;
|
|
50
|
+
}
|
|
51
|
+
export class UsernameTakenError extends Error {
|
|
52
|
+
constructor(username) {
|
|
53
|
+
super(`username "${username}" is already registered`);
|
|
54
|
+
this.name = 'UsernameTakenError';
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export class AlreadyRegisteredError extends Error {
|
|
58
|
+
constructor(username) {
|
|
59
|
+
super(`identity is already registered as "${username}"`);
|
|
60
|
+
this.name = 'AlreadyRegisteredError';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export class NotRegisteredError extends Error {
|
|
64
|
+
constructor() {
|
|
65
|
+
super('identity has no registered account');
|
|
66
|
+
this.name = 'NotRegisteredError';
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function rowToAccount(row) {
|
|
70
|
+
return {
|
|
71
|
+
identityKey: row.identity_key,
|
|
72
|
+
username: row.username,
|
|
73
|
+
...(row.display_name && { displayName: row.display_name }),
|
|
74
|
+
...(row.avatar_origin && { avatarOrigin: row.avatar_origin }),
|
|
75
|
+
createdAt: new Date(row.created_at),
|
|
76
|
+
updatedAt: new Date(row.updated_at),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function profileColumns(profile) {
|
|
80
|
+
const cols = {};
|
|
81
|
+
if (profile.displayName !== undefined) {
|
|
82
|
+
cols.display_name = profile.displayName;
|
|
83
|
+
}
|
|
84
|
+
if (profile.avatarOrigin !== undefined) {
|
|
85
|
+
cols.avatar_origin = profile.avatarOrigin;
|
|
86
|
+
}
|
|
87
|
+
return cols;
|
|
88
|
+
}
|
|
89
|
+
export class KnexAccountStore {
|
|
90
|
+
db;
|
|
91
|
+
constructor(db) {
|
|
92
|
+
this.db = db;
|
|
93
|
+
}
|
|
94
|
+
async init() {
|
|
95
|
+
const has = await this.db.schema.hasTable('accounts');
|
|
96
|
+
if (!has) {
|
|
97
|
+
await this.db.schema.createTable('accounts', (t) => {
|
|
98
|
+
t.string('identity_key').primary();
|
|
99
|
+
t.string('username').notNullable().unique();
|
|
100
|
+
t.string('display_name').nullable();
|
|
101
|
+
t.string('avatar_origin').nullable();
|
|
102
|
+
t.string('created_at').notNullable();
|
|
103
|
+
t.string('updated_at').notNullable();
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
async getByIdentity(identityKey) {
|
|
108
|
+
const row = await this.db('accounts')
|
|
109
|
+
.where({ identity_key: identityKey })
|
|
110
|
+
.first();
|
|
111
|
+
return row ? rowToAccount(row) : null;
|
|
112
|
+
}
|
|
113
|
+
async getByUsername(username) {
|
|
114
|
+
const row = await this.db('accounts')
|
|
115
|
+
.where({ username: username.toLowerCase() })
|
|
116
|
+
.first();
|
|
117
|
+
return row ? rowToAccount(row) : null;
|
|
118
|
+
}
|
|
119
|
+
async register(identityKey, username, profile = {}) {
|
|
120
|
+
const name = username.toLowerCase();
|
|
121
|
+
const mine = await this.getByIdentity(identityKey);
|
|
122
|
+
if (mine) {
|
|
123
|
+
if (mine.username === name)
|
|
124
|
+
return mine;
|
|
125
|
+
throw new AlreadyRegisteredError(mine.username);
|
|
126
|
+
}
|
|
127
|
+
const held = await this.getByUsername(name);
|
|
128
|
+
if (held)
|
|
129
|
+
throw new UsernameTakenError(name);
|
|
130
|
+
const now = new Date().toISOString();
|
|
131
|
+
try {
|
|
132
|
+
await this.db('accounts').insert({
|
|
133
|
+
identity_key: identityKey,
|
|
134
|
+
username: name,
|
|
135
|
+
display_name: null,
|
|
136
|
+
avatar_origin: null,
|
|
137
|
+
...profileColumns(profile),
|
|
138
|
+
created_at: now,
|
|
139
|
+
updated_at: now,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
// Unique-constraint race between the checks above and the insert.
|
|
144
|
+
const mineNow = await this.getByIdentity(identityKey);
|
|
145
|
+
if (mineNow) {
|
|
146
|
+
if (mineNow.username === name)
|
|
147
|
+
return mineNow;
|
|
148
|
+
throw new AlreadyRegisteredError(mineNow.username);
|
|
149
|
+
}
|
|
150
|
+
if (await this.getByUsername(name))
|
|
151
|
+
throw new UsernameTakenError(name);
|
|
152
|
+
throw err;
|
|
153
|
+
}
|
|
154
|
+
const created = await this.getByIdentity(identityKey);
|
|
155
|
+
if (!created)
|
|
156
|
+
throw new Error('account insert did not persist');
|
|
157
|
+
return created;
|
|
158
|
+
}
|
|
159
|
+
async updateProfile(identityKey, profile) {
|
|
160
|
+
const cols = profileColumns(profile);
|
|
161
|
+
if (Object.keys(cols).length > 0) {
|
|
162
|
+
const updated = await this.db('accounts')
|
|
163
|
+
.where({ identity_key: identityKey })
|
|
164
|
+
.update({ ...cols, updated_at: new Date().toISOString() });
|
|
165
|
+
if (updated === 0)
|
|
166
|
+
throw new NotRegisteredError();
|
|
167
|
+
}
|
|
168
|
+
const account = await this.getByIdentity(identityKey);
|
|
169
|
+
if (!account)
|
|
170
|
+
throw new NotRegisteredError();
|
|
171
|
+
return account;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/accounts/store.ts"],"names":[],"mappings":"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"}
|
package/dist/accounts/types.d.ts
CHANGED
|
@@ -36,12 +36,26 @@ export interface NextPaymentDerivation {
|
|
|
36
36
|
derivationPrefix: string;
|
|
37
37
|
derivationSuffix: string;
|
|
38
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Registration facet of `GET /account/status`. `account` is present (and
|
|
41
|
+
* possibly null) only when the host runs an account registry.
|
|
42
|
+
*/
|
|
43
|
+
export interface RegistrationStatus {
|
|
44
|
+
registrationEnabled: boolean;
|
|
45
|
+
account?: {
|
|
46
|
+
username: string;
|
|
47
|
+
displayName?: string;
|
|
48
|
+
avatarOrigin?: string;
|
|
49
|
+
createdAt: string;
|
|
50
|
+
} | null;
|
|
51
|
+
}
|
|
39
52
|
/**
|
|
40
53
|
* Response shape of `GET /account/status`. When accounts metering is
|
|
41
54
|
* disabled the capacity / pricing fields are omitted; callers should branch
|
|
42
|
-
* on `accountsEnabled` to know which fields are present.
|
|
55
|
+
* on `accountsEnabled` to know which fields are present. The registration
|
|
56
|
+
* facet is always present.
|
|
43
57
|
*/
|
|
44
|
-
export type AccountStatusResponse = {
|
|
58
|
+
export type AccountStatusResponse = RegistrationStatus & ({
|
|
45
59
|
identityKey: IdentityKey;
|
|
46
60
|
serverIdentityKey: IdentityKey;
|
|
47
61
|
accountsEnabled: false;
|
|
@@ -64,5 +78,5 @@ export type AccountStatusResponse = {
|
|
|
64
78
|
durationBlocks: number;
|
|
65
79
|
};
|
|
66
80
|
nextPayment: NextPaymentDerivation;
|
|
67
|
-
};
|
|
81
|
+
});
|
|
68
82
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/accounts/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAEhC,MAAM,WAAW,cAAc;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAA;IACrB;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAA;IACnB,sFAAsF;IACtF,cAAc,EAAE,MAAM,CAAA;IACtB,sGAAsG;IACtG,gBAAgB,CAAC,EAAE,WAAW,EAAE,CAAA;CAChC;AAED;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,cAAc,CAAA;AAEzD;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACrC,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;CACxB;AAED
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/accounts/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAEhC,MAAM,WAAW,cAAc;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAA;IACrB;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAA;IACnB,sFAAsF;IACtF,cAAc,EAAE,MAAM,CAAA;IACtB,sGAAsG;IACtG,gBAAgB,CAAC,EAAE,WAAW,EAAE,CAAA;CAChC;AAED;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,cAAc,CAAA;AAEzD;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACrC,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAClC,mBAAmB,EAAE,OAAO,CAAA;IAC5B,OAAO,CAAC,EAAE;QACT,QAAQ,EAAE,MAAM,CAAA;QAChB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,SAAS,EAAE,MAAM,CAAA;KACjB,GAAG,IAAI,CAAA;CACR;AAED;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,GACrD,CACG;IACA,WAAW,EAAE,WAAW,CAAA;IACxB,iBAAiB,EAAE,WAAW,CAAA;IAC9B,eAAe,EAAE,KAAK,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACjB,GACD;IACA,WAAW,EAAE,WAAW,CAAA;IACxB,iBAAiB,EAAE,WAAW,CAAA;IAC9B,eAAe,EAAE,IAAI,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,OAAO,EAAE;QACR,iBAAiB,EAAE,MAAM,CAAA;QACzB,WAAW,EAAE,MAAM,CAAA;QACnB,cAAc,EAAE,MAAM,CAAA;KACtB,CAAA;IACD,WAAW,EAAE,qBAAqB,CAAA;CACjC,CACH,CAAA"}
|
package/dist/client.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { BaseClient } from '@1sat/client';
|
|
9
9
|
import type { WalletInterface } from '@bsv/sdk';
|
|
10
|
-
import type { AccountStatusResponse } from './accounts/types';
|
|
10
|
+
import type { AccountStatusResponse } from './accounts/types.js';
|
|
11
11
|
export interface WalletServerClientOptions {
|
|
12
12
|
timeout?: number;
|
|
13
13
|
fetch?: typeof fetch;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAEhE,MAAM,WAAW,yBAAyB;IACzC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;CACpB;AAED,qBAAa,kBAAmB,SAAQ,UAAU;gBAEhD,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,yBAA8B;IASxC,8EAA8E;IAC9E,aAAa,IAAI,OAAO,CAAC,qBAAqB,CAAC;CAG/C"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { WalletStorageProvider } from './types';
|
|
1
|
+
import type { WalletStorageProvider } from './types.js';
|
|
2
2
|
export interface BearerServerConfig {
|
|
3
3
|
storage: WalletStorageProvider;
|
|
4
4
|
token: string;
|
|
@@ -8,11 +8,15 @@ export interface BearerServerConfig {
|
|
|
8
8
|
adminIdentityKeys?: string[];
|
|
9
9
|
}
|
|
10
10
|
export interface BearerServerHandle {
|
|
11
|
-
port
|
|
11
|
+
/** Bound port once `ready` resolves; the configured port before that. */
|
|
12
|
+
readonly port: number;
|
|
13
|
+
/** Resolves with the bound port once the socket is listening. */
|
|
14
|
+
ready: Promise<number>;
|
|
12
15
|
stop(): Promise<void>;
|
|
13
16
|
}
|
|
14
17
|
/**
|
|
15
|
-
* Bearer-only RPC server
|
|
18
|
+
* Bearer-only RPC server on `node:http`, no Express, no BRC-100. Runs under
|
|
19
|
+
* Node or Bun.
|
|
16
20
|
*
|
|
17
21
|
* Intended for firewalled internal deployments where an upstream has already
|
|
18
22
|
* authenticated the caller (e.g. 1sat-stack's `/internal` consumer path).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createBearerServer.d.ts","sourceRoot":"","sources":["../src/createBearerServer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createBearerServer.d.ts","sourceRoot":"","sources":["../src/createBearerServer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEvD,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,qBAAqB,CAAA;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC5B;AAED,MAAM,WAAW,kBAAkB;IAClC,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,iEAAiE;IACjE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IACtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,kBAAkB,GACxB,kBAAkB,CAgDpB"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { createServer } from 'node:http';
|
|
2
|
+
import { createWalletRpcHandler } from './createWalletRpcHandler.js';
|
|
3
|
+
import { bearerResolver } from './resolvers/bearer.js';
|
|
3
4
|
/**
|
|
4
|
-
* Bearer-only RPC server
|
|
5
|
+
* Bearer-only RPC server on `node:http`, no Express, no BRC-100. Runs under
|
|
6
|
+
* Node or Bun.
|
|
5
7
|
*
|
|
6
8
|
* Intended for firewalled internal deployments where an upstream has already
|
|
7
9
|
* authenticated the caller (e.g. 1sat-stack's `/internal` consumer path).
|
|
@@ -15,16 +17,65 @@ export function createBearerServer(config) {
|
|
|
15
17
|
}),
|
|
16
18
|
adminIdentityKeys: config.adminIdentityKeys,
|
|
17
19
|
});
|
|
18
|
-
const server =
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
const server = createServer(async (req, res) => {
|
|
21
|
+
try {
|
|
22
|
+
const response = await handler(await toFetchRequest(req));
|
|
23
|
+
res.writeHead(response.status, Object.fromEntries(response.headers.entries()));
|
|
24
|
+
res.end(new Uint8Array(await response.arrayBuffer()));
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
res.writeHead(500, { 'content-type': 'application/json' });
|
|
28
|
+
res.end(JSON.stringify({
|
|
29
|
+
error: err instanceof Error ? err.message : 'internal error',
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
let boundPort = config.port;
|
|
34
|
+
const ready = new Promise((resolve, reject) => {
|
|
35
|
+
server.once('error', reject);
|
|
36
|
+
server.listen(config.port, config.hostname ?? '0.0.0.0', () => {
|
|
37
|
+
const address = server.address();
|
|
38
|
+
if (typeof address === 'object' && address)
|
|
39
|
+
boundPort = address.port;
|
|
40
|
+
resolve(boundPort);
|
|
41
|
+
});
|
|
22
42
|
});
|
|
23
43
|
return {
|
|
24
|
-
|
|
44
|
+
get port() {
|
|
45
|
+
return boundPort;
|
|
46
|
+
},
|
|
47
|
+
ready,
|
|
25
48
|
async stop() {
|
|
26
|
-
await
|
|
49
|
+
await new Promise((resolve, reject) => {
|
|
50
|
+
server.close((err) => (err ? reject(err) : resolve()));
|
|
51
|
+
});
|
|
27
52
|
},
|
|
28
53
|
};
|
|
29
54
|
}
|
|
55
|
+
async function toFetchRequest(req) {
|
|
56
|
+
const host = req.headers.host ?? 'localhost';
|
|
57
|
+
const url = new URL(req.url ?? '/', `http://${host}`);
|
|
58
|
+
const headers = new Headers();
|
|
59
|
+
for (const [k, v] of Object.entries(req.headers)) {
|
|
60
|
+
if (typeof v === 'string')
|
|
61
|
+
headers.set(k, v);
|
|
62
|
+
else if (Array.isArray(v))
|
|
63
|
+
headers.set(k, v.join(', '));
|
|
64
|
+
}
|
|
65
|
+
const method = req.method ?? 'GET';
|
|
66
|
+
if (method === 'GET' || method === 'HEAD') {
|
|
67
|
+
return new Request(url, { method, headers });
|
|
68
|
+
}
|
|
69
|
+
const chunks = [];
|
|
70
|
+
for await (const chunk of req)
|
|
71
|
+
chunks.push(chunk);
|
|
72
|
+
const total = chunks.reduce((n, c) => n + c.length, 0);
|
|
73
|
+
const body = new Uint8Array(total);
|
|
74
|
+
let offset = 0;
|
|
75
|
+
for (const c of chunks) {
|
|
76
|
+
body.set(c, offset);
|
|
77
|
+
offset += c.length;
|
|
78
|
+
}
|
|
79
|
+
return new Request(url, { method, headers, body });
|
|
80
|
+
}
|
|
30
81
|
//# sourceMappingURL=createBearerServer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createBearerServer.js","sourceRoot":"","sources":["../src/createBearerServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"createBearerServer.js","sourceRoot":"","sources":["../src/createBearerServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Unified host server: wallet storage RPC +
|
|
2
|
+
* Unified host server: wallet storage RPC + accounts + paymail + messagebox
|
|
3
3
|
* in one process with one host identity.
|
|
4
4
|
*
|
|
5
5
|
* Auth zoning:
|
|
6
|
-
* - public: paymail bsvalias,
|
|
7
|
-
* - BRC-100: storage RPC, /account/*,
|
|
6
|
+
* - public: paymail bsvalias, OpenAPI docs
|
|
7
|
+
* - BRC-100: storage RPC, /account/*, messagebox
|
|
8
8
|
*/
|
|
9
9
|
import { type MessageBoxContext } from '@bopen-io/messagebox-server';
|
|
10
10
|
import type { WalletInterface } from '@bsv/sdk';
|
|
11
11
|
import { type Express } from 'express';
|
|
12
|
-
import
|
|
13
|
-
import { type
|
|
14
|
-
import type { PaymailDeps } from './paymail/types';
|
|
12
|
+
import type { AccountStore } from './accounts/store.js';
|
|
13
|
+
import { type WalletServerAccounts, type WalletServerConfig } from './createWalletServer.js';
|
|
14
|
+
import type { PaymailDeps } from './paymail/types.js';
|
|
15
15
|
export interface HostServerMessageboxConfig {
|
|
16
16
|
/** Knex instance for message tables */
|
|
17
17
|
knex: MessageBoxContext['knex'];
|
|
@@ -27,9 +27,14 @@ export interface HostServerConfig {
|
|
|
27
27
|
host?: string;
|
|
28
28
|
};
|
|
29
29
|
accounts?: WalletServerAccounts;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Host account registry. Enables POST /account/register and
|
|
32
|
+
* PUT /account/profile, reports the account on GET /account/status, and
|
|
33
|
+
* gates messagebox delivery on the recipient holding an account. Pass the
|
|
34
|
+
* same store as `paymail.accountStore` so paymail resolution is gated the
|
|
35
|
+
* same way.
|
|
36
|
+
*/
|
|
37
|
+
accountStore?: AccountStore;
|
|
33
38
|
paymail?: PaymailDeps;
|
|
34
39
|
messagebox?: HostServerMessageboxConfig;
|
|
35
40
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createHostServer.d.ts","sourceRoot":"","sources":["../src/createHostServer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EACN,KAAK,iBAAiB,EAKtB,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAG/C,OAAgB,EAAE,KAAK,OAAO,EAAU,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"createHostServer.d.ts","sourceRoot":"","sources":["../src/createHostServer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EACN,KAAK,iBAAiB,EAKtB,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAG/C,OAAgB,EAAE,KAAK,OAAO,EAAU,MAAM,SAAS,CAAA;AAOvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EAIvB,MAAM,yBAAyB,CAAA;AAIhC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGrD,MAAM,WAAW,0BAA0B;IAC1C,uCAAuC;IACvC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAC/B,6DAA6D;IAC7D,UAAU,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAChC,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAA;IACtC,iBAAiB,EAAE,MAAM,CAAA;IACzB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACvC,QAAQ,CAAC,EAAE,oBAAoB,CAAA;IAC/B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,UAAU,CAAC,EAAE,0BAA0B,CAAA;IACvC;;;OAGG;IACH,YAAY,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACxD,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,gBAAgB;IAChC,GAAG,EAAE,OAAO,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACxB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACrB;AAED,wBAAsB,gBAAgB,CACrC,MAAM,EAAE,gBAAgB,GACtB,OAAO,CAAC,gBAAgB,CAAC,CAmK3B"}
|
package/dist/createHostServer.js
CHANGED
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Unified host server: wallet storage RPC +
|
|
2
|
+
* Unified host server: wallet storage RPC + accounts + paymail + messagebox
|
|
3
3
|
* in one process with one host identity.
|
|
4
4
|
*
|
|
5
5
|
* Auth zoning:
|
|
6
|
-
* - public: paymail bsvalias,
|
|
7
|
-
* - BRC-100: storage RPC, /account/*,
|
|
6
|
+
* - public: paymail bsvalias, OpenAPI docs
|
|
7
|
+
* - BRC-100: storage RPC, /account/*, messagebox
|
|
8
8
|
*/
|
|
9
9
|
import { createServer } from 'node:http';
|
|
10
10
|
import { attachMessageBoxWebSockets, createMessageBoxContext, registerMessageBoxPostAuthRoutes, registerMessageBoxPreAuthRoutes, } from '@bopen-io/messagebox-server';
|
|
11
11
|
import { createLogger } from 'evlog';
|
|
12
12
|
import { evlog } from 'evlog/express';
|
|
13
13
|
import express, { Router } from 'express';
|
|
14
|
-
import { accountsCapacityGate, mountPaymentRoute, } from './accounts';
|
|
15
|
-
import { corsMiddleware, dispatchHandler, mountStatusRoute, } from './createWalletServer';
|
|
16
|
-
import { mountTerminalErrorHandler } from './errorHandler';
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import { mountPaymailRoutes } from './paymail/routes';
|
|
21
|
-
import { buildAuthMiddleware } from './sessions/redisSessionManager';
|
|
14
|
+
import { accountsCapacityGate, mountPaymentRoute, mountRegistrationRoutes, } from './accounts/index.js';
|
|
15
|
+
import { corsMiddleware, dispatchHandler, mountStatusRoute, } from './createWalletServer.js';
|
|
16
|
+
import { mountTerminalErrorHandler } from './errorHandler.js';
|
|
17
|
+
import { mountOpenApiRoutes } from './openapi/index.js';
|
|
18
|
+
import { mountPaymailRoutes } from './paymail/routes.js';
|
|
19
|
+
import { buildAuthMiddleware } from './sessions/redisSessionManager.js';
|
|
22
20
|
export async function createHostServer(config) {
|
|
23
21
|
const app = express();
|
|
24
22
|
app.use(evlog());
|
|
@@ -26,7 +24,7 @@ export async function createHostServer(config) {
|
|
|
26
24
|
app.use(corsMiddleware);
|
|
27
25
|
const { wallet } = config;
|
|
28
26
|
// One authMiddleware instance for every authed surface (storage, account,
|
|
29
|
-
//
|
|
27
|
+
// messagebox), so a single /.well-known/auth handshake authenticates
|
|
30
28
|
// a client everywhere. With a session store, sessions are mirrored to
|
|
31
29
|
// Redis and hydrated on demand so any instance can validate any session.
|
|
32
30
|
const authMiddleware = buildAuthMiddleware(wallet, config.sessionStore);
|
|
@@ -34,26 +32,12 @@ export async function createHostServer(config) {
|
|
|
34
32
|
if (config.paymail) {
|
|
35
33
|
await mountPaymailRoutes(app, config.paymail);
|
|
36
34
|
}
|
|
37
|
-
if (config.hosting) {
|
|
38
|
-
app.get('/hosting/price', (_req, res) => {
|
|
39
|
-
const cfg = config.hosting.getConfig();
|
|
40
|
-
if (!cfg.enabled)
|
|
41
|
-
return res.status(404).json({ error: 'hosting disabled' });
|
|
42
|
-
return res.json({
|
|
43
|
-
priceSats: cfg.priceSats,
|
|
44
|
-
...(cfg.priceUsd !== undefined && { priceUsd: cfg.priceUsd }),
|
|
45
|
-
periodSeconds: cfg.periodSeconds,
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
35
|
mountOpenApiRoutes(app, {
|
|
50
36
|
serverIdentityKey: config.serverIdentityKey,
|
|
51
37
|
surfaces: {
|
|
52
38
|
storage: true,
|
|
53
39
|
accounts: config.accounts != null,
|
|
54
|
-
|
|
55
|
-
? () => config.hosting.getConfig().enabled
|
|
56
|
-
: undefined,
|
|
40
|
+
registration: config.accountStore != null,
|
|
57
41
|
paymail: config.paymail != null,
|
|
58
42
|
messagebox: config.messagebox != null,
|
|
59
43
|
},
|
|
@@ -90,14 +74,11 @@ export async function createHostServer(config) {
|
|
|
90
74
|
walletStorage: accountsDeps.walletStorage,
|
|
91
75
|
serverIdentityKey: accountsDeps.serverIdentityKey,
|
|
92
76
|
currentBlock: accountsDeps.currentBlock,
|
|
77
|
+
accountStore: config.accountStore,
|
|
93
78
|
});
|
|
94
79
|
}
|
|
95
|
-
if (config.
|
|
96
|
-
|
|
97
|
-
wallet,
|
|
98
|
-
getConfig: config.hosting.getConfig,
|
|
99
|
-
authMiddleware,
|
|
100
|
-
});
|
|
80
|
+
if (config.accountStore) {
|
|
81
|
+
mountRegistrationRoutes(app, '/', { store: config.accountStore });
|
|
101
82
|
}
|
|
102
83
|
// --- messagebox (own router; host owns the auth) --------------------------
|
|
103
84
|
if (config.messagebox) {
|
|
@@ -108,10 +89,11 @@ export async function createHostServer(config) {
|
|
|
108
89
|
});
|
|
109
90
|
const mbRouter = Router();
|
|
110
91
|
registerMessageBoxPreAuthRoutes(mbRouter);
|
|
111
|
-
//
|
|
112
|
-
//
|
|
113
|
-
//
|
|
114
|
-
|
|
92
|
+
// Account gate: recipients must hold an account on this host before it
|
|
93
|
+
// stores messages for them. Runs before auth — it only inspects the
|
|
94
|
+
// request body.
|
|
95
|
+
const accountStore = config.accountStore;
|
|
96
|
+
if (accountStore) {
|
|
115
97
|
mbRouter.post('/sendMessage', async (req, res, next) => {
|
|
116
98
|
try {
|
|
117
99
|
const message = req.body
|
|
@@ -121,12 +103,12 @@ export async function createHostServer(config) {
|
|
|
121
103
|
for (const recipient of recipients) {
|
|
122
104
|
if (typeof recipient !== 'string')
|
|
123
105
|
continue;
|
|
124
|
-
const
|
|
125
|
-
if (!
|
|
106
|
+
const account = await accountStore.getByIdentity(recipient);
|
|
107
|
+
if (!account) {
|
|
126
108
|
return res.status(403).json({
|
|
127
109
|
status: 'error',
|
|
128
|
-
code: '
|
|
129
|
-
description: 'Recipient
|
|
110
|
+
code: 'ERR_ACCOUNT_REQUIRED',
|
|
111
|
+
description: 'Recipient has no account on this host',
|
|
130
112
|
});
|
|
131
113
|
}
|
|
132
114
|
}
|
|
@@ -197,7 +179,7 @@ function listenWithLog(server, config, websockets) {
|
|
|
197
179
|
host: config.listen.host ?? '0.0.0.0',
|
|
198
180
|
port,
|
|
199
181
|
paymail: config.paymail != null,
|
|
200
|
-
|
|
182
|
+
registration: config.accountStore != null,
|
|
201
183
|
messagebox: config.messagebox != null,
|
|
202
184
|
websockets,
|
|
203
185
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createHostServer.js","sourceRoot":"","sources":["../src/createHostServer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAEN,0BAA0B,EAC1B,uBAAuB,EACvB,gCAAgC,EAChC,+BAA+B,GAC/B,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,OAAO,EAAE,EAAgB,MAAM,EAAE,MAAM,SAAS,CAAA;AACvD,OAAO,EAEN,oBAAoB,EACpB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"createHostServer.js","sourceRoot":"","sources":["../src/createHostServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { WalletRpcHandlerConfig } from './types';
|
|
1
|
+
import type { WalletRpcHandlerConfig } from './types.js';
|
|
2
2
|
export type WalletRpcHandler = (req: Request) => Promise<Response>;
|
|
3
3
|
export declare function createWalletRpcHandler(config: WalletRpcHandlerConfig): WalletRpcHandler;
|
|
4
4
|
//# sourceMappingURL=createWalletRpcHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWalletRpcHandler.d.ts","sourceRoot":"","sources":["../src/createWalletRpcHandler.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAGX,sBAAsB,EACtB,MAAM,
|
|
1
|
+
{"version":3,"file":"createWalletRpcHandler.d.ts","sourceRoot":"","sources":["../src/createWalletRpcHandler.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAGX,sBAAsB,EACtB,MAAM,YAAY,CAAA;AAEnB,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAElE,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,sBAAsB,GAC5B,gBAAgB,CAoDlB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BINARY_ENCODING, BINARY_ENCODING_HEADER, stringifyJsonRpc, } from '@bsv/wallet-toolbox/out/src/storage/remoting/BinaryJson.js';
|
|
2
|
-
import { dispatch } from './dispatch';
|
|
2
|
+
import { dispatch } from './dispatch.js';
|
|
3
3
|
export function createWalletRpcHandler(config) {
|
|
4
4
|
return async (req) => {
|
|
5
5
|
if (req.method !== 'POST') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWalletRpcHandler.js","sourceRoot":"","sources":["../src/createWalletRpcHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,sBAAsB,EACtB,gBAAgB,GAChB,MAAM,4DAA4D,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"createWalletRpcHandler.js","sourceRoot":"","sources":["../src/createWalletRpcHandler.ts"],"names":[],"mappings":"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"}
|