@kwirthmagnify/kwirth-common-back 0.5.49 → 0.5.51

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.
@@ -50,6 +50,42 @@ export interface IProviderSubscriptionHelp {
50
50
  * IConfigFieldDef, el mismo que usan senders, webhooks, idps y logins.
51
51
  */
52
52
  export type IProviderFieldDef = IConfigFieldDef;
53
+ /**
54
+ * Lo que un provider sabe contar de si mismo.
55
+ *
56
+ * Existe para que kwirth pueda decir si algo esta siendo consumido o esta emitiendo para nadie, que
57
+ * es de las pocas preguntas que NADIE puede responder desde fuera: cada provider guarda sus
58
+ * suscriptores en su propia estructura y hasta ahora no habia forma de preguntarselo.
59
+ *
60
+ * ⚠️ Solo el NUMERO, no quienes son: 'IProviderSubscriber' es una interfaz de un solo metodo y no
61
+ * lleva identidad, asi que un provider no tiene con que identificarlos. Dibujar el grafo de quien
62
+ * consume a quien pedira ampliar ese contrato, y es una decision aparte.
63
+ */
64
+ export interface IProviderStats {
65
+ /** Cuantos suscriptores tiene AHORA. Cero significa que esta emitiendo para nadie. */
66
+ subscribers: number;
67
+ /**
68
+ * ENTREGAS hechas desde que el provider arranco: una por cada vez que se llama a
69
+ * processProviderEvent, no una por evento producido. OPCIONAL: quien no lo lleve se muestra como
70
+ * "no informa", igual que el resto.
71
+ *
72
+ * Se cuentan entregas y no eventos a proposito. Un provider que produce mil eventos y los filtra
73
+ * todos no esta moviendo nada, y el numero util para quien opera es el trabajo que SE HACE. Ademas
74
+ * el sitio donde incrementar es inequivoco —justo donde ya se llama al suscriptor—, y eso hace que
75
+ * cablearlo en dieciseis providers no dependa de interpretar el codigo de cada uno.
76
+ *
77
+ * Es un ACUMULADO, no una tasa: quien lo lea resta dos lecturas y divide por el tiempo. El provider
78
+ * no debe saber nada de ventanas ni de medias — eso obligaria a guardar historia en el camino
79
+ * caliente, que es justo lo que no puede pasar.
80
+ *
81
+ * ⚠️ El incremento va JUNTO a la llamada al suscriptor, y es un entero. Nada
82
+ * de timestamps por evento, nada de arrays que crezcan, nada de objetos nuevos: lo que duele en
83
+ * Node no es el contador, es la basura que genera.
84
+ */
85
+ events?: number;
86
+ /** Errores al entregar, con el mismo criterio: acumulado y barato. */
87
+ errors?: number;
88
+ }
53
89
  /**
54
90
  * Interface that all provider plugins must implement.
55
91
  * Use 'any' for clusterInfo to avoid pulling in kubernetes/docker dependencies.
@@ -89,6 +125,16 @@ export interface IProvider extends IExtension {
89
125
  * mismo array desde el back.js, que el core lee al instalar sin instanciar nada.
90
126
  */
91
127
  getConfigSchema?(): IProviderFieldDef[];
128
+ /**
129
+ * Que sabe el provider de si mismo ahora mismo. OPCIONAL, como el resto de este bloque: quien no
130
+ * lo implemente se muestra como "no informa", que es distinto de cero — un cero seria una
131
+ * afirmacion que nadie puede sostener.
132
+ *
133
+ * ⚠️ Tiene que ser BARATO: devuelve lo que ya tienes, no lo calcules. Se llama cuando alguien
134
+ * abre una pantalla de estado, pero un provider no sabe con que frecuencia, y recorrer
135
+ * estructuras aqui convierte una consulta en trabajo para todos.
136
+ */
137
+ getStats?(): IProviderStats;
92
138
  startProvider(): Promise<void>;
93
139
  stopProvider(): Promise<void>;
94
140
  router: any;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kwirthmagnify/kwirth-common-back",
3
- "version": "0.5.49",
3
+ "version": "0.5.51",
4
4
  "description": "Backend interfaces for building Kwirth provider and channel plugins",
5
5
  "scripts": {
6
6
  "build": "tsc",