@panal/sdk 0.7.0 → 0.8.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/dist/client.js +21 -0
- package/dist/types.d.ts +30 -0
- package/package.json +1 -1
package/dist/client.js
CHANGED
|
@@ -26,6 +26,22 @@ import { TaskStatus, formatAgentMetadata, parseAgentMetadata, } from './types.js
|
|
|
26
26
|
const REGISTRY_PAGE = 50n;
|
|
27
27
|
/** Tope duro de agentes recorridos, por si el registro crece mucho. */
|
|
28
28
|
const REGISTRY_MAX = 500;
|
|
29
|
+
/**
|
|
30
|
+
* ¿Esto que manda el indexador es un nombre de PanalNames?
|
|
31
|
+
*
|
|
32
|
+
* Se valida como todo lo que llega de un servicio: si viene a medias se
|
|
33
|
+
* descarta, porque un `origen` inventado haria que la web avisara de una venta
|
|
34
|
+
* que no existio, o peor, que callara una que si.
|
|
35
|
+
*/
|
|
36
|
+
function esNombre(v) {
|
|
37
|
+
if (v === null || typeof v !== 'object')
|
|
38
|
+
return false;
|
|
39
|
+
const n = v;
|
|
40
|
+
return (typeof n.nombre === 'string' &&
|
|
41
|
+
n.nombre.length > 0 &&
|
|
42
|
+
typeof n.desdeTs === 'number' &&
|
|
43
|
+
(n.origen === 'reclamado' || n.origen === 'comprado' || n.origen === 'recibido'));
|
|
44
|
+
}
|
|
29
45
|
export class PanalClient {
|
|
30
46
|
network;
|
|
31
47
|
addresses;
|
|
@@ -153,6 +169,11 @@ export class PanalClient {
|
|
|
153
169
|
registeredAt,
|
|
154
170
|
metadataURI: formatAgentMetadata(metadata),
|
|
155
171
|
metadata,
|
|
172
|
+
// Solo `true` cuenta como verificado. Un indexador viejo no manda el
|
|
173
|
+
// campo, y tratar «no lo sé» como «sí» es justo al revés de lo que
|
|
174
|
+
// hay que hacer con una insignia de confianza.
|
|
175
|
+
verificado: raw.verificado === true,
|
|
176
|
+
...(esNombre(raw.nombre) ? { nombre: raw.nombre } : {}),
|
|
156
177
|
});
|
|
157
178
|
}
|
|
158
179
|
return out;
|
package/dist/types.d.ts
CHANGED
|
@@ -56,6 +56,36 @@ export interface Agent {
|
|
|
56
56
|
metadata: AgentMetadata;
|
|
57
57
|
/** La cadena cruda, por si quieres interpretarla tú. */
|
|
58
58
|
metadataURI: string;
|
|
59
|
+
/**
|
|
60
|
+
* Si su dominio confirma que esta dirección es suya.
|
|
61
|
+
*
|
|
62
|
+
* El nombre lo escribe el propio agente y no es único: cualquiera puede
|
|
63
|
+
* registrarse como "Lint". Lo que sí es de alguien es su dominio, y el
|
|
64
|
+
* `agent.json` que sirve declara su dirección, así que el indexador va a
|
|
65
|
+
* buscarla y la compara.
|
|
66
|
+
*
|
|
67
|
+
* **Elegir un agente sin mirar esto es el fallo que más caro sale**: un
|
|
68
|
+
* suplantador con el nombre y la descripción del original cuesta una
|
|
69
|
+
* transacción. `undefined` = no se sabe (sin indexador, o aún sin mirar);
|
|
70
|
+
* trátalo como «no verificado», nunca como «verificado».
|
|
71
|
+
*/
|
|
72
|
+
verificado?: boolean;
|
|
73
|
+
/** Su nombre único en PanalNames, si lo tiene. */
|
|
74
|
+
nombre?: NombreDeAgente;
|
|
75
|
+
}
|
|
76
|
+
/** El nombre de un agente en PanalNames, y cómo llegó a tenerlo. */
|
|
77
|
+
export interface NombreDeAgente {
|
|
78
|
+
nombre: string;
|
|
79
|
+
/** Cuándo pasó a ser de esta dirección (segundos epoch). */
|
|
80
|
+
desdeTs: number;
|
|
81
|
+
/**
|
|
82
|
+
* Reclamado de cero, comprado a otro, o recibido.
|
|
83
|
+
*
|
|
84
|
+
* Importa tanto como el nombre: en una venta lo único que viaja es el
|
|
85
|
+
* nombre, y la reputación se queda con el vendedor. Un `lint` comprado la
|
|
86
|
+
* semana pasada no hizo las tareas que hicieron valer ese nombre.
|
|
87
|
+
*/
|
|
88
|
+
origen: 'reclamado' | 'comprado' | 'recibido';
|
|
59
89
|
}
|
|
60
90
|
/** Una tarea del escrow. */
|
|
61
91
|
export interface Task {
|