@1sat/wallet-server 0.0.29 → 0.0.32
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/createHostServer.d.ts +44 -0
- package/dist/createHostServer.d.ts.map +1 -0
- package/dist/createHostServer.js +205 -0
- package/dist/createHostServer.js.map +1 -0
- package/dist/createWalletServer.d.ts +15 -1
- package/dist/createWalletServer.d.ts.map +1 -1
- package/dist/createWalletServer.js +29 -6
- package/dist/createWalletServer.js.map +1 -1
- package/dist/hosting/client.d.ts +33 -0
- package/dist/hosting/client.d.ts.map +1 -0
- package/dist/hosting/client.js +45 -0
- package/dist/hosting/client.js.map +1 -0
- package/dist/hosting/routes.d.ts +27 -0
- package/dist/hosting/routes.d.ts.map +1 -0
- package/dist/hosting/routes.js +239 -0
- package/dist/hosting/routes.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/openapi/fragments.d.ts +20 -0
- package/dist/openapi/fragments.d.ts.map +1 -0
- package/dist/openapi/fragments.js +399 -0
- package/dist/openapi/fragments.js.map +1 -0
- package/dist/openapi/index.d.ts +25 -0
- package/dist/openapi/index.d.ts.map +1 -0
- package/dist/openapi/index.js +82 -0
- package/dist/openapi/index.js.map +1 -0
- package/dist/paymail/destination.d.ts +14 -0
- package/dist/paymail/destination.d.ts.map +1 -0
- package/dist/paymail/destination.js +48 -0
- package/dist/paymail/destination.js.map +1 -0
- package/dist/paymail/entitlement.d.ts +15 -0
- package/dist/paymail/entitlement.d.ts.map +1 -0
- package/dist/paymail/entitlement.js +30 -0
- package/dist/paymail/entitlement.js.map +1 -0
- package/dist/paymail/messagebox.d.ts +25 -0
- package/dist/paymail/messagebox.d.ts.map +1 -0
- package/dist/paymail/messagebox.js +55 -0
- package/dist/paymail/messagebox.js.map +1 -0
- package/dist/paymail/pending.d.ts +19 -0
- package/dist/paymail/pending.d.ts.map +1 -0
- package/dist/paymail/pending.js +90 -0
- package/dist/paymail/pending.js.map +1 -0
- package/dist/paymail/resolve.d.ts +12 -0
- package/dist/paymail/resolve.d.ts.map +1 -0
- package/dist/paymail/resolve.js +72 -0
- package/dist/paymail/resolve.js.map +1 -0
- package/dist/paymail/routes.d.ts +8 -0
- package/dist/paymail/routes.d.ts.map +1 -0
- package/dist/paymail/routes.js +152 -0
- package/dist/paymail/routes.js.map +1 -0
- package/dist/paymail/types.d.ts +48 -0
- package/dist/paymail/types.d.ts.map +1 -0
- package/dist/paymail/types.js +2 -0
- package/dist/paymail/types.js.map +1 -0
- package/package.json +61 -57
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified host server: wallet storage RPC + hosting + paymail + messagebox
|
|
3
|
+
* in one process with one host identity.
|
|
4
|
+
*
|
|
5
|
+
* Auth zoning:
|
|
6
|
+
* - public: paymail bsvalias, GET /hosting/price
|
|
7
|
+
* - BRC-100: storage RPC, /account/*, /hosting/status|subscribe, messagebox
|
|
8
|
+
*/
|
|
9
|
+
import { type MessageBoxContext } from '@bopen-io/messagebox-server';
|
|
10
|
+
import type { WalletInterface } from '@bsv/sdk';
|
|
11
|
+
import { type Express } from 'express';
|
|
12
|
+
import { type WalletServerAccounts, type WalletServerConfig } from './createWalletServer';
|
|
13
|
+
import { type HostingConfigProvider } from './hosting/routes';
|
|
14
|
+
import type { PaymailDeps } from './paymail/types';
|
|
15
|
+
export interface HostServerMessageboxConfig {
|
|
16
|
+
/** Knex instance for message tables */
|
|
17
|
+
knex: MessageBoxContext['knex'];
|
|
18
|
+
/** Enable authenticated WebSocket delivery. Default true. */
|
|
19
|
+
websockets?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface HostServerConfig {
|
|
22
|
+
wallet: WalletInterface;
|
|
23
|
+
storage: WalletServerConfig['storage'];
|
|
24
|
+
serverIdentityKey: string;
|
|
25
|
+
listen: {
|
|
26
|
+
port: number;
|
|
27
|
+
host?: string;
|
|
28
|
+
};
|
|
29
|
+
accounts?: WalletServerAccounts;
|
|
30
|
+
hosting?: {
|
|
31
|
+
getConfig: HostingConfigProvider;
|
|
32
|
+
};
|
|
33
|
+
paymail?: PaymailDeps;
|
|
34
|
+
messagebox?: HostServerMessageboxConfig;
|
|
35
|
+
bodyLimit?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface HostServerHandle {
|
|
38
|
+
app: Express;
|
|
39
|
+
port: number;
|
|
40
|
+
start(): Promise<number>;
|
|
41
|
+
stop(): Promise<void>;
|
|
42
|
+
}
|
|
43
|
+
export declare function createHostServer(config: HostServerConfig): Promise<HostServerHandle>;
|
|
44
|
+
//# sourceMappingURL=createHostServer.d.ts.map
|
|
@@ -0,0 +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;AAEpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAG/C,OAAgB,EAAE,KAAK,OAAO,EAAU,MAAM,SAAS,CAAA;AAMvD,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EAIvB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACN,KAAK,qBAAqB,EAE1B,MAAM,kBAAkB,CAAA;AAIzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,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,OAAO,CAAC,EAAE;QAAE,SAAS,EAAE,qBAAqB,CAAA;KAAE,CAAA;IAC9C,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,UAAU,CAAC,EAAE,0BAA0B,CAAA;IACvC,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,CAiL3B"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified host server: wallet storage RPC + hosting + paymail + messagebox
|
|
3
|
+
* in one process with one host identity.
|
|
4
|
+
*
|
|
5
|
+
* Auth zoning:
|
|
6
|
+
* - public: paymail bsvalias, GET /hosting/price
|
|
7
|
+
* - BRC-100: storage RPC, /account/*, /hosting/status|subscribe, messagebox
|
|
8
|
+
*/
|
|
9
|
+
import { createServer } from 'node:http';
|
|
10
|
+
import { attachMessageBoxWebSockets, createMessageBoxContext, registerMessageBoxPostAuthRoutes, registerMessageBoxPreAuthRoutes, } from '@bopen-io/messagebox-server';
|
|
11
|
+
import { createAuthMiddleware } from '@bsv/auth-express-middleware';
|
|
12
|
+
import { createLogger } from 'evlog';
|
|
13
|
+
import { evlog } from 'evlog/express';
|
|
14
|
+
import express, { Router } from 'express';
|
|
15
|
+
import { accountsCapacityGate, mountPaymentRoute, } from './accounts';
|
|
16
|
+
import { corsMiddleware, dispatchHandler, mountStatusRoute, } from './createWalletServer';
|
|
17
|
+
import { mountHostingRoutes, } from './hosting/routes';
|
|
18
|
+
import { mountOpenApiRoutes } from './openapi';
|
|
19
|
+
import { checkHostingEntitlement } from './paymail/entitlement';
|
|
20
|
+
import { mountPaymailRoutes } from './paymail/routes';
|
|
21
|
+
export async function createHostServer(config) {
|
|
22
|
+
const app = express();
|
|
23
|
+
app.use(evlog());
|
|
24
|
+
app.use(express.json({ limit: config.bodyLimit ?? '30mb' }));
|
|
25
|
+
app.use(corsMiddleware);
|
|
26
|
+
const { wallet } = config;
|
|
27
|
+
// One authMiddleware instance for every authed surface (storage, account,
|
|
28
|
+
// hosting, messagebox), so a single /.well-known/auth handshake authenticates
|
|
29
|
+
// a client everywhere.
|
|
30
|
+
const authMiddleware = createAuthMiddleware({ wallet });
|
|
31
|
+
// --- public surface -------------------------------------------------------
|
|
32
|
+
if (config.paymail) {
|
|
33
|
+
await mountPaymailRoutes(app, config.paymail);
|
|
34
|
+
}
|
|
35
|
+
if (config.hosting) {
|
|
36
|
+
app.get('/hosting/price', (_req, res) => {
|
|
37
|
+
const cfg = config.hosting.getConfig();
|
|
38
|
+
if (!cfg.enabled)
|
|
39
|
+
return res.status(404).json({ error: 'hosting disabled' });
|
|
40
|
+
return res.json({
|
|
41
|
+
priceSats: cfg.priceSats,
|
|
42
|
+
...(cfg.priceUsd !== undefined && { priceUsd: cfg.priceUsd }),
|
|
43
|
+
periodSeconds: cfg.periodSeconds,
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
mountOpenApiRoutes(app, {
|
|
48
|
+
serverIdentityKey: config.serverIdentityKey,
|
|
49
|
+
surfaces: {
|
|
50
|
+
storage: true,
|
|
51
|
+
accounts: config.accounts != null,
|
|
52
|
+
hosting: config.hosting
|
|
53
|
+
? () => config.hosting.getConfig().enabled
|
|
54
|
+
: undefined,
|
|
55
|
+
paymail: config.paymail != null,
|
|
56
|
+
messagebox: config.messagebox != null,
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
// --- auth surface ----------------------------------------------------------
|
|
60
|
+
const accountsDeps = config.accounts
|
|
61
|
+
? {
|
|
62
|
+
getConfig: config.accounts.getConfig,
|
|
63
|
+
walletStorage: config.storage,
|
|
64
|
+
wallet,
|
|
65
|
+
serverIdentityKey: config.serverIdentityKey,
|
|
66
|
+
currentBlock: config.accounts.currentBlock,
|
|
67
|
+
}
|
|
68
|
+
: undefined;
|
|
69
|
+
// Wallet storage JSON-RPC: auth + optional capacity gate + dispatch
|
|
70
|
+
const postHandlers = [];
|
|
71
|
+
if (accountsDeps) {
|
|
72
|
+
postHandlers.push(accountsCapacityGate(accountsDeps));
|
|
73
|
+
}
|
|
74
|
+
postHandlers.push(dispatchHandler(config));
|
|
75
|
+
app.post('/', authMiddleware, ...postHandlers);
|
|
76
|
+
// BRC-104 handshake endpoint. The middleware keys on
|
|
77
|
+
// `req.path === '/.well-known/auth'`, so mount it route-level — an
|
|
78
|
+
// `app.use('/.well-known/auth', …)` would strip the path and break the
|
|
79
|
+
// check. Same authMiddleware instance as POST / → shared peer session.
|
|
80
|
+
app.post('/.well-known/auth', authMiddleware);
|
|
81
|
+
// Account routes need auth; scope it to /account/*
|
|
82
|
+
app.use('/account', authMiddleware);
|
|
83
|
+
mountStatusRoute(app, '/', config, config.serverIdentityKey, wallet);
|
|
84
|
+
if (accountsDeps) {
|
|
85
|
+
mountPaymentRoute(app, '/', {
|
|
86
|
+
getConfig: accountsDeps.getConfig,
|
|
87
|
+
wallet: accountsDeps.wallet,
|
|
88
|
+
walletStorage: accountsDeps.walletStorage,
|
|
89
|
+
serverIdentityKey: accountsDeps.serverIdentityKey,
|
|
90
|
+
currentBlock: accountsDeps.currentBlock,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
if (config.hosting) {
|
|
94
|
+
mountHostingRoutes(app, '/', {
|
|
95
|
+
wallet,
|
|
96
|
+
getConfig: config.hosting.getConfig,
|
|
97
|
+
authMiddleware,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
// --- messagebox (own router; host owns the auth) --------------------------
|
|
101
|
+
if (config.messagebox) {
|
|
102
|
+
const ctx = createMessageBoxContext({
|
|
103
|
+
wallet,
|
|
104
|
+
knex: config.messagebox.knex,
|
|
105
|
+
enableWebSockets: config.messagebox.websockets ?? true,
|
|
106
|
+
});
|
|
107
|
+
const mbRouter = Router();
|
|
108
|
+
registerMessageBoxPreAuthRoutes(mbRouter);
|
|
109
|
+
// Host pack gate: when hosting is enabled, recipients must hold an active
|
|
110
|
+
// receipt before this server stores messages for them. Runs before auth —
|
|
111
|
+
// it only inspects the request body.
|
|
112
|
+
if (config.hosting?.getConfig().enabled) {
|
|
113
|
+
mbRouter.post('/sendMessage', async (req, res, next) => {
|
|
114
|
+
try {
|
|
115
|
+
const message = req.body
|
|
116
|
+
?.message;
|
|
117
|
+
const raw = message?.recipients ?? message?.recipient;
|
|
118
|
+
const recipients = Array.isArray(raw) ? raw : raw != null ? [raw] : [];
|
|
119
|
+
for (const recipient of recipients) {
|
|
120
|
+
if (typeof recipient !== 'string')
|
|
121
|
+
continue;
|
|
122
|
+
const ent = await checkHostingEntitlement(wallet, recipient);
|
|
123
|
+
if (!ent.active) {
|
|
124
|
+
return res.status(403).json({
|
|
125
|
+
status: 'error',
|
|
126
|
+
code: 'ERR_HOSTING_REQUIRED',
|
|
127
|
+
description: 'Recipient does not have an active hosting subscription',
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
next();
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
next(err);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
// Host owns auth: the same authMiddleware as the wallet-storage RPC, so a
|
|
139
|
+
// client authenticated at /.well-known/auth is recognized here without a
|
|
140
|
+
// second handshake.
|
|
141
|
+
mbRouter.use(authMiddleware);
|
|
142
|
+
registerMessageBoxPostAuthRoutes(mbRouter, ctx);
|
|
143
|
+
// Canonical mount. The root mount is a deprecated alias kept for
|
|
144
|
+
// clients that predate the /messagebox prefix (yours-wallet); remove it
|
|
145
|
+
// once they've migrated.
|
|
146
|
+
app.use('/messagebox', mbRouter);
|
|
147
|
+
app.use(mbRouter);
|
|
148
|
+
const server = createServer(app);
|
|
149
|
+
const io = attachMessageBoxWebSockets(server, ctx);
|
|
150
|
+
return {
|
|
151
|
+
app,
|
|
152
|
+
port: config.listen.port,
|
|
153
|
+
start() {
|
|
154
|
+
return listenWithLog(server, config, io != null);
|
|
155
|
+
},
|
|
156
|
+
async stop() {
|
|
157
|
+
await new Promise((resolve, reject) => {
|
|
158
|
+
server.close((err) => (err ? reject(err) : resolve()));
|
|
159
|
+
});
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
const server = createServer(app);
|
|
164
|
+
return {
|
|
165
|
+
app,
|
|
166
|
+
port: config.listen.port,
|
|
167
|
+
start() {
|
|
168
|
+
return listenWithLog(server, config, false);
|
|
169
|
+
},
|
|
170
|
+
async stop() {
|
|
171
|
+
await new Promise((resolve, reject) => {
|
|
172
|
+
server.close((err) => (err ? reject(err) : resolve()));
|
|
173
|
+
});
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
function listenWithLog(server, config, websockets) {
|
|
178
|
+
return new Promise((resolve, reject) => {
|
|
179
|
+
server.on('error', (err) => {
|
|
180
|
+
const log = createLogger({ context: 'host-server' });
|
|
181
|
+
log.set({ event: 'server_start_failed' });
|
|
182
|
+
log.error(err);
|
|
183
|
+
reject(err);
|
|
184
|
+
});
|
|
185
|
+
server.listen(config.listen.port, config.listen.host ?? '0.0.0.0', () => {
|
|
186
|
+
const address = server.address();
|
|
187
|
+
const port = typeof address === 'object' && address
|
|
188
|
+
? address.port
|
|
189
|
+
: config.listen.port;
|
|
190
|
+
const log = createLogger({ context: 'host-server' });
|
|
191
|
+
log.set({
|
|
192
|
+
event: 'server_listening',
|
|
193
|
+
host: config.listen.host ?? '0.0.0.0',
|
|
194
|
+
port,
|
|
195
|
+
paymail: config.paymail != null,
|
|
196
|
+
hosting: config.hosting != null,
|
|
197
|
+
messagebox: config.messagebox != null,
|
|
198
|
+
websockets,
|
|
199
|
+
});
|
|
200
|
+
log.emit();
|
|
201
|
+
resolve(port);
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=createHostServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createHostServer.js","sourceRoot":"","sources":["../src/createHostServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { WalletInterface } from '@bsv/sdk';
|
|
2
|
-
import { type Express } from 'express';
|
|
2
|
+
import express, { type Express, type NextFunction, type Request as ExpressRequest, type Response as ExpressResponse } from 'express';
|
|
3
3
|
import type { AccountsConfigProvider } from './accounts/types';
|
|
4
4
|
import type { MakeWalletLogger, WalletStorageProvider } from './types';
|
|
5
|
+
import { type HostingConfigProvider } from './hosting/routes';
|
|
5
6
|
export interface WalletServerAccounts {
|
|
6
7
|
getConfig: AccountsConfigProvider;
|
|
7
8
|
currentBlock: () => Promise<number>;
|
|
@@ -31,6 +32,10 @@ export interface WalletServerConfig {
|
|
|
31
32
|
makeLogger?: MakeWalletLogger;
|
|
32
33
|
bodyLimit?: string;
|
|
33
34
|
accounts?: WalletServerAccounts;
|
|
35
|
+
/** Hosted paymail subscription (price/status/subscribe). */
|
|
36
|
+
hosting?: {
|
|
37
|
+
getConfig: HostingConfigProvider;
|
|
38
|
+
};
|
|
34
39
|
}
|
|
35
40
|
export interface WalletServerHandle {
|
|
36
41
|
app: Express;
|
|
@@ -38,4 +43,13 @@ export interface WalletServerHandle {
|
|
|
38
43
|
stop(): Promise<void>;
|
|
39
44
|
}
|
|
40
45
|
export declare function createWalletServer(config: WalletServerConfig): WalletServerHandle;
|
|
46
|
+
export declare function dispatchHandler(config: WalletServerConfig): (req: AuthenticatedRequest, res: ExpressResponse) => Promise<express.Response<any, Record<string, any>> | undefined>;
|
|
47
|
+
export declare function mountStatusRoute(app: Express, basePath: string, config: WalletServerConfig, serverIdentityKey: string, serverWallet: WalletInterface): void;
|
|
48
|
+
interface AuthenticatedRequest extends ExpressRequest {
|
|
49
|
+
auth?: {
|
|
50
|
+
identityKey: string;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export declare function corsMiddleware(req: ExpressRequest, res: ExpressResponse, next: NextFunction): void;
|
|
54
|
+
export {};
|
|
41
55
|
//# sourceMappingURL=createWalletServer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWalletServer.d.ts","sourceRoot":"","sources":["../src/createWalletServer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAG/C,
|
|
1
|
+
{"version":3,"file":"createWalletServer.d.ts","sourceRoot":"","sources":["../src/createWalletServer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAG/C,OAAO,OAAO,EAAE,EACf,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,OAAO,IAAI,cAAc,EAC9B,KAAK,QAAQ,IAAI,eAAe,EAChC,MAAM,SAAS,CAAA;AAQhB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAI9D,OAAO,KAAK,EACX,gBAAgB,EAEhB,qBAAqB,EACrB,MAAM,SAAS,CAAA;AAChB,OAAO,EACN,KAAK,qBAAqB,EAE1B,MAAM,kBAAkB,CAAA;AAEzB,MAAM,WAAW,oBAAoB;IACpC,SAAS,EAAE,sBAAsB,CAAA;IACjC,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,kBAAkB;IAClC;;;;;;OAMG;IACH,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,qBAAqB,CAAA;IAC9B;kCAC8B;IAC9B,iBAAiB,EAAE,MAAM,CAAA;IACzB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACvC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,oBAAoB,CAAA;IAC/B,4DAA4D;IAC5D,OAAO,CAAC,EAAE;QAAE,SAAS,EAAE,qBAAqB,CAAA;KAAE,CAAA;CAC9C;AAED,MAAM,WAAW,kBAAkB;IAClC,GAAG,EAAE,OAAO,CAAA;IACZ,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACxB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACrB;AAED,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,kBAAkB,GACxB,kBAAkB,CAsIpB;AA8BD,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,IAC3C,KAAK,oBAAoB,EAAE,KAAK,eAAe,qEAsD7D;AAED,wBAAgB,gBAAgB,CAC/B,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,kBAAkB,EAC1B,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,eAAe,GAC3B,IAAI,CA8EN;AAmCD,UAAU,oBAAqB,SAAQ,cAAc;IACpD,IAAI,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;CAC9B;AAED,wBAAgB,cAAc,CAC7B,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,YAAY,GAChB,IAAI,CAUN"}
|
|
@@ -6,6 +6,7 @@ import { accountsCapacityGate, latestActivePaymentForPayer, mountPaymentRoute, n
|
|
|
6
6
|
import { createWalletRpcHandler } from './createWalletRpcHandler';
|
|
7
7
|
import { dispatch } from './dispatch';
|
|
8
8
|
import { bearerResolver } from './resolvers/bearer';
|
|
9
|
+
import { mountHostingRoutes, } from './hosting/routes';
|
|
9
10
|
export function createWalletServer(config) {
|
|
10
11
|
const publicPath = config.publicPath === undefined ? '/' : config.publicPath;
|
|
11
12
|
const internalPath = config.internalPath === undefined ? '/internal' : config.internalPath;
|
|
@@ -30,7 +31,23 @@ export function createWalletServer(config) {
|
|
|
30
31
|
}
|
|
31
32
|
: undefined;
|
|
32
33
|
if (publicPath) {
|
|
33
|
-
|
|
34
|
+
const authMiddleware = createAuthMiddleware({ wallet });
|
|
35
|
+
// Public hosting price before blanket auth on publicPath.
|
|
36
|
+
if (config.hosting) {
|
|
37
|
+
const root = publicPath === '/' ? '' : publicPath.replace(/\/$/, '');
|
|
38
|
+
app.get(`${root}/hosting/price`, (_req, res) => {
|
|
39
|
+
const cfg = config.hosting.getConfig();
|
|
40
|
+
if (!cfg.enabled) {
|
|
41
|
+
return res.status(404).json({ error: 'hosting disabled' });
|
|
42
|
+
}
|
|
43
|
+
return res.json({
|
|
44
|
+
priceSats: cfg.priceSats,
|
|
45
|
+
...(cfg.priceUsd !== undefined && { priceUsd: cfg.priceUsd }),
|
|
46
|
+
periodSeconds: cfg.periodSeconds,
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
mountPublicRoute(app, publicPath, config, wallet, accountsDeps, authMiddleware);
|
|
34
51
|
mountStatusRoute(app, publicPath, config, serverIdentityKey, wallet);
|
|
35
52
|
if (accountsDeps) {
|
|
36
53
|
mountPaymentRoute(app, publicPath, {
|
|
@@ -41,6 +58,13 @@ export function createWalletServer(config) {
|
|
|
41
58
|
currentBlock: accountsDeps.currentBlock,
|
|
42
59
|
});
|
|
43
60
|
}
|
|
61
|
+
if (config.hosting) {
|
|
62
|
+
mountHostingRoutes(app, publicPath, {
|
|
63
|
+
wallet,
|
|
64
|
+
getConfig: config.hosting.getConfig,
|
|
65
|
+
authMiddleware,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
44
68
|
}
|
|
45
69
|
if (internalPath) {
|
|
46
70
|
mountInternalRoute(app, internalPath, config);
|
|
@@ -99,8 +123,7 @@ export function createWalletServer(config) {
|
|
|
99
123
|
},
|
|
100
124
|
};
|
|
101
125
|
}
|
|
102
|
-
function mountPublicRoute(app, path, config, wallet, accountsDeps) {
|
|
103
|
-
const authMiddleware = createAuthMiddleware({ wallet });
|
|
126
|
+
function mountPublicRoute(app, path, config, wallet, accountsDeps, authMiddleware) {
|
|
104
127
|
app.use(path, authMiddleware);
|
|
105
128
|
// JSON-RPC endpoint. The capacity gate sits between auth and dispatch:
|
|
106
129
|
// over-capacity billable calls return 507 unless they carry a valid
|
|
@@ -112,7 +135,7 @@ function mountPublicRoute(app, path, config, wallet, accountsDeps) {
|
|
|
112
135
|
postHandlers.push(dispatchHandler(config));
|
|
113
136
|
app.post(path, ...postHandlers);
|
|
114
137
|
}
|
|
115
|
-
function dispatchHandler(config) {
|
|
138
|
+
export function dispatchHandler(config) {
|
|
116
139
|
return async (req, res) => {
|
|
117
140
|
const log = useLogger();
|
|
118
141
|
log.set({ context: 'wallet-server', route: 'rpc' });
|
|
@@ -157,7 +180,7 @@ function dispatchHandler(config) {
|
|
|
157
180
|
res.status(200).json(response);
|
|
158
181
|
};
|
|
159
182
|
}
|
|
160
|
-
function mountStatusRoute(app, basePath, config, serverIdentityKey, serverWallet) {
|
|
183
|
+
export function mountStatusRoute(app, basePath, config, serverIdentityKey, serverWallet) {
|
|
161
184
|
const statusPath = joinPath(basePath, 'account/status');
|
|
162
185
|
app.get(statusPath, async (req, res) => {
|
|
163
186
|
const log = useLogger();
|
|
@@ -243,7 +266,7 @@ function mountInternalRoute(app, path, config) {
|
|
|
243
266
|
res.send(buf);
|
|
244
267
|
});
|
|
245
268
|
}
|
|
246
|
-
function corsMiddleware(req, res, next) {
|
|
269
|
+
export function corsMiddleware(req, res, next) {
|
|
247
270
|
res.header('Access-Control-Allow-Origin', '*');
|
|
248
271
|
res.header('Access-Control-Allow-Headers', '*');
|
|
249
272
|
res.header('Access-Control-Allow-Methods', '*');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWalletServer.js","sourceRoot":"","sources":["../src/createWalletServer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createWalletServer.js","sourceRoot":"","sources":["../src/createWalletServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser/CLI client for host-pack routes on wallet serve.
|
|
3
|
+
*/
|
|
4
|
+
import type { WalletInterface } from '@bsv/sdk';
|
|
5
|
+
export interface HostingPrice {
|
|
6
|
+
priceSats: number;
|
|
7
|
+
priceUsd?: number;
|
|
8
|
+
periodSeconds: number;
|
|
9
|
+
}
|
|
10
|
+
export interface HostingStatus {
|
|
11
|
+
enabled: boolean;
|
|
12
|
+
identityKey: string;
|
|
13
|
+
active: boolean;
|
|
14
|
+
expiresAt?: number;
|
|
15
|
+
priceSats?: number;
|
|
16
|
+
priceUsd?: number;
|
|
17
|
+
periodSeconds?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface HostingSubscribeResult {
|
|
20
|
+
status: string;
|
|
21
|
+
identityKey: string;
|
|
22
|
+
expiresAt: number;
|
|
23
|
+
txid: string;
|
|
24
|
+
}
|
|
25
|
+
export declare class HostingClient {
|
|
26
|
+
private baseUrl;
|
|
27
|
+
private wallet?;
|
|
28
|
+
constructor(baseUrl: string, wallet?: WalletInterface | undefined);
|
|
29
|
+
getPrice(): Promise<HostingPrice>;
|
|
30
|
+
getStatus(): Promise<HostingStatus>;
|
|
31
|
+
subscribe(): Promise<HostingSubscribeResult>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/hosting/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAG/C,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,sBAAsB;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;CACZ;AAED,qBAAa,aAAa;IAExB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM,CAAC;gBADP,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,eAAe,YAAA;IAK3B,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC;IAMjC,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC;IAQnC,SAAS,IAAI,OAAO,CAAC,sBAAsB,CAAC;CAelD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser/CLI client for host-pack routes on wallet serve.
|
|
3
|
+
*/
|
|
4
|
+
import { AuthFetch } from '@bsv/sdk';
|
|
5
|
+
export class HostingClient {
|
|
6
|
+
baseUrl;
|
|
7
|
+
wallet;
|
|
8
|
+
constructor(baseUrl, wallet) {
|
|
9
|
+
this.baseUrl = baseUrl;
|
|
10
|
+
this.wallet = wallet;
|
|
11
|
+
this.baseUrl = baseUrl.replace(/\/$/, '');
|
|
12
|
+
}
|
|
13
|
+
async getPrice() {
|
|
14
|
+
const res = await fetch(`${this.baseUrl}/hosting/price`);
|
|
15
|
+
if (!res.ok)
|
|
16
|
+
throw new Error(`hosting/price ${res.status}`);
|
|
17
|
+
return res.json();
|
|
18
|
+
}
|
|
19
|
+
async getStatus() {
|
|
20
|
+
if (!this.wallet)
|
|
21
|
+
throw new Error('wallet required for status');
|
|
22
|
+
const auth = new AuthFetch(this.wallet);
|
|
23
|
+
const res = await auth.fetch(`${this.baseUrl}/hosting/status`);
|
|
24
|
+
if (!res.ok)
|
|
25
|
+
throw new Error(`hosting/status ${res.status}`);
|
|
26
|
+
return res.json();
|
|
27
|
+
}
|
|
28
|
+
async subscribe() {
|
|
29
|
+
if (!this.wallet)
|
|
30
|
+
throw new Error('wallet required for subscribe');
|
|
31
|
+
const auth = new AuthFetch(this.wallet);
|
|
32
|
+
// AuthFetch retries 402 with payment when wallet can pay.
|
|
33
|
+
const res = await auth.fetch(`${this.baseUrl}/hosting/subscribe`, {
|
|
34
|
+
method: 'POST',
|
|
35
|
+
headers: { 'Content-Type': 'application/json' },
|
|
36
|
+
body: '{}',
|
|
37
|
+
});
|
|
38
|
+
if (!res.ok) {
|
|
39
|
+
const text = await res.text();
|
|
40
|
+
throw new Error(`hosting/subscribe ${res.status}: ${text}`);
|
|
41
|
+
}
|
|
42
|
+
return res.json();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/hosting/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAyBpC,MAAM,OAAO,aAAa;IAEhB;IACA;IAFT,YACS,OAAe,EACf,MAAwB;QADxB,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAkB;QAEhC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,QAAQ;QACb,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,gBAAgB,CAAC,CAAA;QACxD,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;QAC3D,OAAO,GAAG,CAAC,IAAI,EAA2B,CAAA;IAC3C,CAAC;IAED,KAAK,CAAC,SAAS;QACd,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;QAC/D,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,iBAAiB,CAAC,CAAA;QAC9D,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;QAC5D,OAAO,GAAG,CAAC,IAAI,EAA4B,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,SAAS;QACd,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;QAClE,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,0DAA0D;QAC1D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,oBAAoB,EAAE;YACjE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI;SACV,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;YAC7B,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAA;QAC5D,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,EAAqC,CAAA;IACrD,CAAC;CACD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hosting subscription routes on the wallet server.
|
|
3
|
+
*
|
|
4
|
+
* GET /hosting/price — public (mounted before global auth when possible)
|
|
5
|
+
* GET /hosting/status — BRC-100 auth
|
|
6
|
+
* POST /hosting/subscribe — BRC-100 auth + 402 → spend prior receipt(s), mint one new
|
|
7
|
+
*
|
|
8
|
+
* Receipt: 1-sat to host, basket HOSTING_BASKET, wallet-local tags only
|
|
9
|
+
* (payer:{id}, exp:{unix}). No customer identity on-chain.
|
|
10
|
+
* At most one live receipt set per identity: renew spends all prior.
|
|
11
|
+
*/
|
|
12
|
+
import { type WalletInterface } from '@bsv/sdk';
|
|
13
|
+
import type { Express, NextFunction, Request, Response } from 'express';
|
|
14
|
+
export interface HostingConfig {
|
|
15
|
+
enabled: boolean;
|
|
16
|
+
priceSats: number;
|
|
17
|
+
/** Operator's USD target price, surfaced verbatim on the pricing API. */
|
|
18
|
+
priceUsd?: number;
|
|
19
|
+
periodSeconds: number;
|
|
20
|
+
}
|
|
21
|
+
export type HostingConfigProvider = () => HostingConfig;
|
|
22
|
+
export declare function mountHostingRoutes(app: Express, basePath: string, deps: {
|
|
23
|
+
wallet: WalletInterface;
|
|
24
|
+
getConfig: HostingConfigProvider;
|
|
25
|
+
authMiddleware: (req: Request, res: Response, next: NextFunction) => unknown;
|
|
26
|
+
}): void;
|
|
27
|
+
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/hosting/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,OAAO,EAQN,KAAK,eAAe,EAGpB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGvE,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,MAAM,qBAAqB,GAAG,MAAM,aAAa,CAAA;AAIvD,wBAAgB,kBAAkB,CACjC,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;IACL,MAAM,EAAE,eAAe,CAAA;IACvB,SAAS,EAAE,qBAAqB,CAAA;IAChC,cAAc,EAAE,CACf,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,KACd,OAAO,CAAA;CACZ,GACC,IAAI,CA+EN"}
|