@ultdai/pulse 0.3.1 → 0.4.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 +2 -5
- package/dist/index.d.ts +0 -5
- package/dist/index.js +0 -7
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -26,10 +26,7 @@ export default {
|
|
|
26
26
|
source: 'my-server',
|
|
27
27
|
})
|
|
28
28
|
|
|
29
|
-
// Inicializace načte aktuální povolené typy a jejich pravidla. Další
|
|
30
|
-
// volání používají platnou cache; po expiraci se katalog obnoví.
|
|
31
29
|
context.waitUntil((async () => {
|
|
32
|
-
await client.initialize('') // výběr organizace je rezervovaný pro budoucí katalog
|
|
33
30
|
await client.emit({
|
|
34
31
|
organizationId: env.ULTD_ORGANIZATION_ID,
|
|
35
32
|
occurredAtMs: Date.now(),
|
|
@@ -51,10 +48,10 @@ Ukázkový PulseType výše je jen zástupný název. Skutečný název, verzi,
|
|
|
51
48
|
|
|
52
49
|
`apiToken` patří do serverového secretu, nikdy do klientského JavaScriptu. Konstruktor bez neprázdného `apiToken` skončí chybou ještě před síťovým voláním. Unlimited ověřuje klíč znovu na `GET /v1/sdk-config` i `POST /v1/pulses`; neplatný klíč nemůže zapsat puls.
|
|
53
50
|
|
|
54
|
-
`
|
|
51
|
+
Konstruktor uloží nastavení bez síťového volání. První `emit()` načte povolené PulseTypes, jejich schémata a pravidla měření z autorizovaného ULTD API nebo z dosud platné sdílené cache, a teprve potom puls lokálně validuje. Neznámý typ nebo nevalidní `pulse.payload` SDK odmítne před POSTem. Vypnutý nebo nevzorkovaný puls neodešle. Další volání používají platnou konfiguraci; po expiraci se obnoví. Pokud obnova selže, puls se neodešle. Cloudflare cache je volitelná; bez ní SDK používá paměť instance.
|
|
55
52
|
|
|
56
53
|
Pro opakované pulsy může konfigurace definovat lifecycle s úvodním a průběžným PulseTypem. SDK při prvním volání odešle úvodní puls, uloží rozhodnutí o dalším měření a dodržuje interval z konfigurace. `CloudflareSessionDecisionCache(caches.default)` lze předat jako `sessionCache`, aby se toto rozhodnutí sdílelo mezi instancemi Workeru; bez něj se používá paměť instance. Cache je pouze optimalizace a její ztráta nezakládá novou logickou entitu.
|
|
57
54
|
|
|
58
55
|
SDK obsahuje obecné kontrakty přibalené při buildu z monorepa. Aplikace instaluje jen `@ultdai/pulse` a jeho běžnou závislost `zod`; `@ultdai/contracts` se samostatně nevydává. SDK neobsahuje zákaznické PulseTypes. Samotné zveřejnění SDK neposkytuje oprávnění k API.
|
|
59
56
|
|
|
60
|
-
Dnešní POC má na backendu jeden technický API klíč a jeden katalog definic.
|
|
57
|
+
Dnešní POC má na backendu jeden technický API klíč a jeden katalog definic. Budoucí výběr katalogu podle organizace bude vycházet z identity API klíče na serveru; volající nebude předávat další token ani měnit veřejné rozhraní SDK.
|
package/dist/index.d.ts
CHANGED
|
@@ -49,11 +49,6 @@ export declare class UnlimitedClient {
|
|
|
49
49
|
private install;
|
|
50
50
|
private refresh;
|
|
51
51
|
private configuration;
|
|
52
|
-
/** Load the authorized, versioned PulseType catalog before producing pulses.
|
|
53
|
-
* The organization token is reserved for future catalog scoping and currently
|
|
54
|
-
* has no effect, including when it is an empty string. API authentication
|
|
55
|
-
* continues to use the apiToken supplied in the constructor. */
|
|
56
|
-
initialize(_organizationToken: string): Promise<void>;
|
|
57
52
|
private decisionKey;
|
|
58
53
|
private getDecision;
|
|
59
54
|
private putDecision;
|
package/dist/index.js
CHANGED
|
@@ -818,13 +818,6 @@ var UnlimitedClient = class {
|
|
|
818
818
|
});
|
|
819
819
|
return this.refreshing;
|
|
820
820
|
}
|
|
821
|
-
/** Load the authorized, versioned PulseType catalog before producing pulses.
|
|
822
|
-
* The organization token is reserved for future catalog scoping and currently
|
|
823
|
-
* has no effect, including when it is an empty string. API authentication
|
|
824
|
-
* continues to use the apiToken supplied in the constructor. */
|
|
825
|
-
async initialize(_organizationToken) {
|
|
826
|
-
await this.configuration();
|
|
827
|
-
}
|
|
828
821
|
async decisionKey(groupId, organizationId, sessionId) {
|
|
829
822
|
const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(
|
|
830
823
|
`${await this.cacheKey}\0${groupId}\0${organizationId}\0${sessionId}`
|