madeonsol-x402 4.2.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/dist/index.d.ts +19 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -2
- package/dist/index.js.map +1 -1
- package/dist/terminal-policy.d.ts +56 -0
- package/dist/terminal-policy.d.ts.map +1 -0
- package/dist/terminal-policy.js +102 -0
- package/dist/terminal-policy.js.map +1 -0
- package/dist/terminal-watch.d.ts +135 -0
- package/dist/terminal-watch.d.ts.map +1 -0
- package/dist/terminal-watch.js +413 -0
- package/dist/terminal-watch.js.map +1 -0
- package/dist/terminal.d.ts +46 -0
- package/dist/terminal.d.ts.map +1 -0
- package/dist/terminal.js +52 -0
- package/dist/terminal.js.map +1 -0
- package/dist/types.d.ts +5 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
package/dist/terminal.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { createTerminalTokenView } from "./terminal-watch.js";
|
|
2
|
+
/**
|
|
3
|
+
* The existing stream's public `on` overloads use specific event signatures.
|
|
4
|
+
* Narrowly adapt those overloads to the small event-port used by the shared
|
|
5
|
+
* controller, without changing stream/client behavior.
|
|
6
|
+
*
|
|
7
|
+
* Exported for BROWSER terminals that must not hold an API key: pair it with
|
|
8
|
+
* `createTerminalTokenView({ stream: terminalStreamPort(stream), read })`, where
|
|
9
|
+
* `stream` gets its short-lived token from your backend (`getToken`) and `read`
|
|
10
|
+
* calls your backend, which calls the keyed intelligence endpoint.
|
|
11
|
+
*/
|
|
12
|
+
export function terminalStreamPort(stream) {
|
|
13
|
+
const listenerPort = stream;
|
|
14
|
+
return {
|
|
15
|
+
subscribe({ subId, channels, filters }) {
|
|
16
|
+
stream.subscribe({ subId, channels: channels, filters });
|
|
17
|
+
},
|
|
18
|
+
unsubscribe(subId) { stream.unsubscribe(subId); },
|
|
19
|
+
on(event, listener) { listenerPort.on(event, listener); },
|
|
20
|
+
off(event, listener) { listenerPort.off(event, listener); },
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/** Creates an active, terminal-scoped view; returns a handle with dispose(). */
|
|
24
|
+
export function createSolanaTerminalWatch(client, mint, options) {
|
|
25
|
+
if (!options || !options.stream)
|
|
26
|
+
throw new Error("shared_stream_required");
|
|
27
|
+
if (!options.subId || !/^[A-Za-z0-9_.-]{1,64}$/.test(options.subId) || options.subId === "default") {
|
|
28
|
+
throw new Error("unique_named_sub_id_required");
|
|
29
|
+
}
|
|
30
|
+
// A named subscribe REPLACES that subId's filters on the server. Never allow
|
|
31
|
+
// a different terminal widget to silently commandeer an existing watch.
|
|
32
|
+
if (options.stream.getSubscriptions().some(sub => sub.subId === options.subId)) {
|
|
33
|
+
throw new Error("named_sub_id_already_in_use");
|
|
34
|
+
}
|
|
35
|
+
const watch = createTerminalTokenView({
|
|
36
|
+
chain: "solana",
|
|
37
|
+
address: mint,
|
|
38
|
+
tier: options.tier,
|
|
39
|
+
include: options.include,
|
|
40
|
+
includeKolBroadcast: options.includeKolBroadcast,
|
|
41
|
+
subId: options.subId,
|
|
42
|
+
stream: terminalStreamPort(options.stream),
|
|
43
|
+
read: modules => client.tokenIntelligence(mint, { include: [...modules] }),
|
|
44
|
+
onChange: options.onChange,
|
|
45
|
+
onLive: options.onLive,
|
|
46
|
+
minModuleRefreshMs: options.minModuleRefreshMs,
|
|
47
|
+
debounceMs: options.debounceMs,
|
|
48
|
+
});
|
|
49
|
+
watch.start();
|
|
50
|
+
return watch;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=terminal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,uBAAuB,EACe,MAAM,qBAAqB,CAAC;AAsB3E;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAuB;IACxD,MAAM,YAAY,GAAG,MAGpB,CAAC;IACF,OAAO;QACL,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE;YACpC,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAA2B,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9E,CAAC;QACD,WAAW,CAAC,KAAK,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjD,EAAE,CAAC,KAAK,EAAE,QAAQ,IAAI,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QACzD,GAAG,CAAC,KAAK,EAAE,QAAQ,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,yBAAyB,CACvC,MAAqB,EACrB,IAAY,EACZ,OAAmC;IAEnC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC3E,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACnG,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACD,6EAA6E;IAC7E,wEAAwE;IACxE,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,GAAG,uBAAuB,CAAC;QACpC,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAoC;QACrD,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC;QAC1C,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAgC,EAAE,CAAC;QACzG,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC9C,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC,CAAC;IACH,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -3942,7 +3942,7 @@ export interface TokenLocksSummary {
|
|
|
3942
3942
|
active_cancelable_by_sender: number;
|
|
3943
3943
|
}
|
|
3944
3944
|
/** Panels a terminal can ask for. There is no default set: name every module you render. */
|
|
3945
|
-
export type TokenIntelligenceModuleId = "snapshot" | "risk" | "buyer_quality" | "holders" | "flow" | "kol" | "locks" | "top_traders";
|
|
3945
|
+
export type TokenIntelligenceModuleId = "snapshot" | "risk" | "buyer_quality" | "holders" | "holder_count" | "flow" | "kol" | "locks" | "top_traders";
|
|
3946
3946
|
/** Per-module outcome; a non-ready module never carries `data` (a failure is never a zero). */
|
|
3947
3947
|
export type TokenIntelligenceModuleStatus = "ready" | "partial_history" | "unverified" | "unavailable" | "timeout";
|
|
3948
3948
|
/** Query params for GET /tokens/{mint}/intelligence (and the RHC twin). */
|
|
@@ -3950,8 +3950,11 @@ export interface TokenIntelligenceParams {
|
|
|
3950
3950
|
/**
|
|
3951
3951
|
* Required. Modules as an array or a comma-separated string. Budget: at most
|
|
3952
3952
|
* 5 modules and total cost 8 (snapshot 2, risk 2, buyer_quality 2, holders 3,
|
|
3953
|
-
* flow 3, kol 1, locks 1, top_traders 2); over budget is HTTP 400
|
|
3953
|
+
* holder_count 1, flow 3, kol 1, locks 1, top_traders 2); over budget is HTTP 400
|
|
3954
3954
|
* `include_budget_exceeded` before any read. `holders` is opt-in only.
|
|
3955
|
+
* `holder_count` (Solana) is the last complete holder census, stored: `ready`
|
|
3956
|
+
* when fresh, `unverified` (`stale_measurement`) with the count and its
|
|
3957
|
+
* `as_of` when older, `unavailable` (`not_measured`) when unknown (never 0).
|
|
3955
3958
|
*/
|
|
3956
3959
|
include: readonly TokenIntelligenceModuleId[] | string;
|
|
3957
3960
|
}
|