@tokenbuddy/tb-admin 1.0.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/bin/tb-admin.js +3 -0
- package/dist/src/bootstrap-registry.d.ts +25 -0
- package/dist/src/bootstrap-registry.d.ts.map +1 -0
- package/dist/src/bootstrap-registry.js +40 -0
- package/dist/src/bootstrap-registry.js.map +1 -0
- package/dist/src/cli.d.ts +4 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +712 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/client.d.ts +11 -0
- package/dist/src/client.d.ts.map +1 -0
- package/dist/src/client.js +47 -0
- package/dist/src/client.js.map +1 -0
- package/dist/src/config.d.ts +41 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +123 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +8 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/server-cmd.d.ts +32 -0
- package/dist/src/server-cmd.d.ts.map +1 -0
- package/dist/src/server-cmd.js +103 -0
- package/dist/src/server-cmd.js.map +1 -0
- package/package.json +23 -0
- package/src/bootstrap-registry.ts +68 -0
- package/src/cli.ts +780 -0
- package/src/client.ts +54 -0
- package/src/config.ts +159 -0
- package/src/index.ts +8 -0
- package/src/server-cmd.ts +132 -0
- package/tests/admin.test.ts +109 -0
- package/tsconfig.json +8 -0
package/bin/tb-admin.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface SellerRegistryEntry {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
profile?: string;
|
|
5
|
+
app?: string;
|
|
6
|
+
url: string;
|
|
7
|
+
status?: string;
|
|
8
|
+
region?: string;
|
|
9
|
+
modelsCount?: number;
|
|
10
|
+
sampleModels?: string[];
|
|
11
|
+
supportedProtocols: string[];
|
|
12
|
+
paymentMethods: string[];
|
|
13
|
+
recommendedFor?: string[];
|
|
14
|
+
}
|
|
15
|
+
export interface SellerRegistryDocument {
|
|
16
|
+
version: number;
|
|
17
|
+
updatedAt?: string;
|
|
18
|
+
purpose?: string;
|
|
19
|
+
defaultSeller?: string;
|
|
20
|
+
notes?: string[];
|
|
21
|
+
sellers: SellerRegistryEntry[];
|
|
22
|
+
}
|
|
23
|
+
export declare function validateRegistryDocument(doc: SellerRegistryDocument): void;
|
|
24
|
+
export declare function loadRegistryFile(filePath: string): SellerRegistryDocument;
|
|
25
|
+
//# sourceMappingURL=bootstrap-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap-registry.d.ts","sourceRoot":"","sources":["../../src/bootstrap-registry.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,sBAAsB,GAAG,IAAI,CAkC1E;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,CAKzE"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
export function validateRegistryDocument(doc) {
|
|
3
|
+
if (!doc.version || doc.version < 1) {
|
|
4
|
+
throw new Error("seller registry version must be >= 1");
|
|
5
|
+
}
|
|
6
|
+
if (!doc.sellers || !Array.isArray(doc.sellers) || doc.sellers.length === 0) {
|
|
7
|
+
throw new Error("seller registry must contain at least one seller");
|
|
8
|
+
}
|
|
9
|
+
const ids = new Set();
|
|
10
|
+
for (const seller of doc.sellers) {
|
|
11
|
+
const id = (seller.id || "").trim();
|
|
12
|
+
if (!id) {
|
|
13
|
+
throw new Error("seller id is required");
|
|
14
|
+
}
|
|
15
|
+
if (ids.has(id)) {
|
|
16
|
+
throw new Error(`duplicate seller id \`${id}\``);
|
|
17
|
+
}
|
|
18
|
+
ids.add(id);
|
|
19
|
+
if (!seller.url || !seller.url.startsWith("https://")) {
|
|
20
|
+
throw new Error(`seller \`${id}\` url must be https`);
|
|
21
|
+
}
|
|
22
|
+
if (!seller.supportedProtocols || seller.supportedProtocols.length === 0) {
|
|
23
|
+
throw new Error(`seller \`${id}\` must include supportedProtocols`);
|
|
24
|
+
}
|
|
25
|
+
if (!seller.paymentMethods || seller.paymentMethods.length === 0) {
|
|
26
|
+
throw new Error(`seller \`${id}\` must include paymentMethods`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const defaultSeller = (doc.defaultSeller || "").trim();
|
|
30
|
+
if (defaultSeller && !ids.has(defaultSeller)) {
|
|
31
|
+
throw new Error(`defaultSeller \`${defaultSeller}\` does not match any seller id`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function loadRegistryFile(filePath) {
|
|
35
|
+
const content = fs.readFileSync(filePath, "utf8");
|
|
36
|
+
const doc = JSON.parse(content);
|
|
37
|
+
validateRegistryDocument(doc);
|
|
38
|
+
return doc;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=bootstrap-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap-registry.js","sourceRoot":"","sources":["../../src/bootstrap-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AA0BzB,MAAM,UAAU,wBAAwB,CAAC,GAA2B;IAClE,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEZ,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,YAAY,EAAE,oCAAoC,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,YAAY,EAAE,gCAAgC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,IAAI,aAAa,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,mBAAmB,aAAa,iCAAiC,CAAC,CAAC;IACrF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA2B,CAAC;IAC1D,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAC9B,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA+I5C,wBAAgB,aAAa,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CA2nBnE"}
|