@solomon-tech/events-eitri 0.0.0-stage → 0.1.1
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 +67 -2
- package/dist/attribution/deep-link.d.ts +24 -0
- package/dist/attribution/deep-link.d.ts.map +1 -0
- package/dist/attribution/deep-link.js +139 -0
- package/dist/attribution/deep-link.js.map +1 -0
- package/dist/attribution/touchpoint.d.ts +14 -0
- package/dist/attribution/touchpoint.d.ts.map +1 -0
- package/dist/attribution/touchpoint.js +28 -0
- package/dist/attribution/touchpoint.js.map +1 -0
- package/dist/attribution/utm.d.ts +19 -0
- package/dist/attribution/utm.d.ts.map +1 -0
- package/dist/attribution/utm.js +47 -0
- package/dist/attribution/utm.js.map +1 -0
- package/dist/core/client.d.ts +34 -0
- package/dist/core/client.d.ts.map +1 -0
- package/dist/core/client.js +332 -0
- package/dist/core/client.js.map +1 -0
- package/dist/core/events.d.ts +54 -0
- package/dist/core/events.d.ts.map +1 -0
- package/dist/core/events.js +2 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/types.d.ts +29 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/device/info.d.ts +17 -0
- package/dist/device/info.d.ts.map +1 -0
- package/dist/device/info.js +69 -0
- package/dist/device/info.js.map +1 -0
- package/dist/device/install-referrer.d.ts +3 -0
- package/dist/device/install-referrer.d.ts.map +1 -0
- package/dist/device/install-referrer.js +4 -0
- package/dist/device/install-referrer.js.map +1 -0
- package/dist/events/builder.d.ts +17 -0
- package/dist/events/builder.d.ts.map +1 -0
- package/dist/events/builder.js +17 -0
- package/dist/events/builder.js.map +1 -0
- package/dist/events/touchpoint-builder.d.ts +18 -0
- package/dist/events/touchpoint-builder.d.ts.map +1 -0
- package/dist/events/touchpoint-builder.js +27 -0
- package/dist/events/touchpoint-builder.js.map +1 -0
- package/dist/host.d.ts +22 -0
- package/dist/host.d.ts.map +1 -0
- package/dist/host.js +33 -0
- package/dist/host.js.map +1 -0
- package/dist/identity/durable-id.d.ts +8 -0
- package/dist/identity/durable-id.d.ts.map +1 -0
- package/dist/identity/durable-id.js +25 -0
- package/dist/identity/durable-id.js.map +1 -0
- package/dist/identity/legacy.d.ts +4 -0
- package/dist/identity/legacy.d.ts.map +1 -0
- package/dist/identity/legacy.js +10 -0
- package/dist/identity/legacy.js.map +1 -0
- package/dist/identity/session.d.ts +3 -0
- package/dist/identity/session.d.ts.map +1 -0
- package/dist/identity/session.js +15 -0
- package/dist/identity/session.js.map +1 -0
- package/dist/identity/stable-id.d.ts +11 -0
- package/dist/identity/stable-id.d.ts.map +1 -0
- package/dist/identity/stable-id.js +23 -0
- package/dist/identity/stable-id.js.map +1 -0
- package/dist/identity/user.d.ts +3 -0
- package/dist/identity/user.d.ts.map +1 -0
- package/dist/identity/user.js +11 -0
- package/dist/identity/user.js.map +1 -0
- package/dist/identity/uuid.d.ts +3 -0
- package/dist/identity/uuid.d.ts.map +1 -0
- package/dist/identity/uuid.js +18 -0
- package/dist/identity/uuid.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/network/endpoints.d.ts +3 -0
- package/dist/network/endpoints.d.ts.map +1 -0
- package/dist/network/endpoints.js +3 -0
- package/dist/network/endpoints.js.map +1 -0
- package/dist/network/publisher.d.ts +3 -0
- package/dist/network/publisher.d.ts.map +1 -0
- package/dist/network/publisher.js +51 -0
- package/dist/network/publisher.js.map +1 -0
- package/dist/storage/adapter.d.ts +6 -0
- package/dist/storage/adapter.d.ts.map +1 -0
- package/dist/storage/adapter.js +2 -0
- package/dist/storage/adapter.js.map +1 -0
- package/dist/storage/eitri-storage.d.ts +10 -0
- package/dist/storage/eitri-storage.d.ts.map +1 -0
- package/dist/storage/eitri-storage.js +17 -0
- package/dist/storage/eitri-storage.js.map +1 -0
- package/dist/storage/timed-value.d.ts +5 -0
- package/dist/storage/timed-value.d.ts.map +1 -0
- package/dist/storage/timed-value.js +39 -0
- package/dist/storage/timed-value.js.map +1 -0
- package/dist/wiring.d.ts +3 -0
- package/dist/wiring.d.ts.map +1 -0
- package/dist/wiring.js +21 -0
- package/dist/wiring.js.map +1 -0
- package/package.json +42 -4
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { getOrCreateLegacyId } from '../identity/legacy';
|
|
2
|
+
import { getAllUtms } from '../attribution/utm';
|
|
3
|
+
import { updateUtmsTrack } from '../attribution/touchpoint';
|
|
4
|
+
export async function buildTouchpointEvent(params) {
|
|
5
|
+
var _a, _b;
|
|
6
|
+
const [uniqueId, utms] = await Promise.all([
|
|
7
|
+
getOrCreateLegacyId(params.storage),
|
|
8
|
+
getAllUtms(params.storage),
|
|
9
|
+
]);
|
|
10
|
+
const cartToken = ((_a = params.customAliases) === null || _a === void 0 ? void 0 : _a.user_id) || '';
|
|
11
|
+
const eventData = {
|
|
12
|
+
utm_source: utms.utm_source,
|
|
13
|
+
utm_medium: utms.utm_medium,
|
|
14
|
+
utm_campaign: utms.utm_campaign,
|
|
15
|
+
utm_term: uniqueId, // CRITICAL: utm_term in touchpoint = uniqueId, NOT the URL param
|
|
16
|
+
utm_content: utms.utm_content,
|
|
17
|
+
sol_source: utms.sol_source,
|
|
18
|
+
sol_medium: utms.sol_medium,
|
|
19
|
+
sol_campaign: utms.sol_campaign,
|
|
20
|
+
sol_content: utms.sol_content,
|
|
21
|
+
};
|
|
22
|
+
const utmsTrack = await updateUtmsTrack(params.storage, eventData);
|
|
23
|
+
return Object.assign(Object.assign({ id: uniqueId, referrer: '', path: params.currentScreen, utm_source: utms.utm_source, utm_medium: utms.utm_medium, utm_campaign: utms.utm_campaign, utm_term: uniqueId, utm_content: utms.utm_content, sol_source: utms.sol_source, sol_medium: utms.sol_medium, sol_campaign: utms.sol_campaign, sol_content: utms.sol_content, fbp: '', fbc: utms.fbclid ? `fb.1.${Date.now()}.${utms.fbclid}` : '', ga_id: '', fbclid: utms.fbclid, click_id: utms.click_id, locale: params.deviceInfo.locale, timezone: params.deviceInfo.timezone, osVersion: params.deviceInfo.osVersion, screenWidth: params.deviceInfo.screenWidth, screenHeight: params.deviceInfo.screenHeight, density: params.deviceInfo.density, cpuCores: params.deviceInfo.cpuCores, queryParams: params.queryString, debug: '', old_id: utms.utm_term, shopify_id: params.companyId, current_domain: params.appIdentifier || '', cart_token: cartToken, email: (_b = params.customAliases) === null || _b === void 0 ? void 0 : _b.email, utmsTrack: utmsTrack,
|
|
24
|
+
// Mobile-specific extra fields
|
|
25
|
+
device_id: params.deviceInfo.device_id, device_model: params.deviceInfo.device_model, app_version: params.deviceInfo.app_version, platform: params.deviceInfo.platform, connection_type: params.deviceInfo.connection_type, id_source: params.idSource || '' }, (params.origin ? { origin: params.origin } : {})), (params.installReferrer ? { install_referrer: params.installReferrer } : {}));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=touchpoint-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"touchpoint-builder.js","sourceRoot":"","sources":["../../src/events/touchpoint-builder.ts"],"names":[],"mappings":"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"}
|
package/dist/host.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { SolomonSDK } from './core/client';
|
|
2
|
+
/**
|
|
3
|
+
* Superfície que o host (Eitri) chama. A Eitri resolve o deeplink e o
|
|
4
|
+
* lifecycle de instalação e invoca estes métodos passando os dados crus.
|
|
5
|
+
*/
|
|
6
|
+
export interface SolomonEitriHost {
|
|
7
|
+
setSessionAttributes(attributes: Record<string, any> | null | undefined): Promise<void>;
|
|
8
|
+
setInstallState(state: {
|
|
9
|
+
isInstall?: boolean;
|
|
10
|
+
isReinstall?: boolean;
|
|
11
|
+
} | null | undefined): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Expõe a instância do SDK num ponto global conhecido para que o host (Eitri)
|
|
15
|
+
* consiga chamar setSessionAttributes / setInstallState sem a referência ser
|
|
16
|
+
* plumbada pelo eitri-app. Chame no boot do eitri-app, logo após instanciar
|
|
17
|
+
* o SolomonSDK. Retorna o bridge, que também pode ser passado à mão.
|
|
18
|
+
*/
|
|
19
|
+
export declare function registerSolomonHost(sdk: SolomonSDK): SolomonEitriHost;
|
|
20
|
+
/** Recupera o bridge registrado (se houver). */
|
|
21
|
+
export declare function getSolomonHost(): SolomonEitriHost | undefined;
|
|
22
|
+
//# sourceMappingURL=host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,eAAe,CAAC,KAAK,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1G;AAID;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,GAAG,gBAAgB,CAYrE;AAED,gDAAgD;AAChD,wBAAgB,cAAc,IAAI,gBAAgB,GAAG,SAAS,CAO7D"}
|
package/dist/host.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
const GLOBAL_KEY = '__SOLOMON_EITRI__';
|
|
2
|
+
/**
|
|
3
|
+
* Expõe a instância do SDK num ponto global conhecido para que o host (Eitri)
|
|
4
|
+
* consiga chamar setSessionAttributes / setInstallState sem a referência ser
|
|
5
|
+
* plumbada pelo eitri-app. Chame no boot do eitri-app, logo após instanciar
|
|
6
|
+
* o SolomonSDK. Retorna o bridge, que também pode ser passado à mão.
|
|
7
|
+
*/
|
|
8
|
+
export function registerSolomonHost(sdk) {
|
|
9
|
+
const bridge = {
|
|
10
|
+
setSessionAttributes: (attributes) => sdk.setSessionAttributes(attributes),
|
|
11
|
+
setInstallState: (state) => sdk.setInstallState(state),
|
|
12
|
+
};
|
|
13
|
+
try {
|
|
14
|
+
const g = globalThis;
|
|
15
|
+
if (g)
|
|
16
|
+
g[GLOBAL_KEY] = bridge;
|
|
17
|
+
}
|
|
18
|
+
catch (_a) {
|
|
19
|
+
// ambiente sem global gravável — segue só com o retorno
|
|
20
|
+
}
|
|
21
|
+
return bridge;
|
|
22
|
+
}
|
|
23
|
+
/** Recupera o bridge registrado (se houver). */
|
|
24
|
+
export function getSolomonHost() {
|
|
25
|
+
try {
|
|
26
|
+
const g = globalThis;
|
|
27
|
+
return g ? g[GLOBAL_KEY] : undefined;
|
|
28
|
+
}
|
|
29
|
+
catch (_a) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=host.js.map
|
package/dist/host.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAe;IACjD,MAAM,MAAM,GAAqB;QAC/B,oBAAoB,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC,oBAAoB,CAAC,UAAU,CAAC;QAC1E,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC;KACvD,CAAC;IACF,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,UAAiB,CAAC;QAC5B,IAAI,CAAC;YAAE,CAAC,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;IAChC,CAAC;IAAC,WAAM,CAAC;QACP,wDAAwD;IAC1D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,UAAiB,CAAC;QAC5B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvC,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type DurableSource = 'shared_storage';
|
|
2
|
+
export interface DurableIdRead {
|
|
3
|
+
id: string;
|
|
4
|
+
source: DurableSource;
|
|
5
|
+
}
|
|
6
|
+
export declare function readDurableId(): Promise<DurableIdRead | null>;
|
|
7
|
+
export declare function writeDurableId(id: string): Promise<DurableSource | null>;
|
|
8
|
+
//# sourceMappingURL=durable-id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"durable-id.d.ts","sourceRoot":"","sources":["../../src/identity/durable-id.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,aAAa,CAAC;CACvB;AAKD,wBAAsB,aAAa,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAUnE;AAED,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAO9E"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import Eitri from 'eitri-bifrost';
|
|
2
|
+
const UNIQUE_ID_KEY = '@solomon/unique_id';
|
|
3
|
+
const SHARED = { shared: true };
|
|
4
|
+
export async function readDurableId() {
|
|
5
|
+
try {
|
|
6
|
+
const id = await Eitri.storage.getItem(UNIQUE_ID_KEY, SHARED);
|
|
7
|
+
if (id && id.length) {
|
|
8
|
+
return { id, source: 'shared_storage' };
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
catch (_a) {
|
|
12
|
+
// shared storage indisponível (sem AppGroup) — sem durável
|
|
13
|
+
}
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
export async function writeDurableId(id) {
|
|
17
|
+
try {
|
|
18
|
+
await Eitri.storage.setItem(UNIQUE_ID_KEY, id, SHARED);
|
|
19
|
+
return 'shared_storage';
|
|
20
|
+
}
|
|
21
|
+
catch (_a) {
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=durable-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"durable-id.js","sourceRoot":"","sources":["../../src/identity/durable-id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,eAAe,CAAC;AASlC,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAC3C,MAAM,MAAM,GAAqB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC9D,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC;IAAC,WAAM,CAAC;QACP,2DAA2D;IAC7D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EAAU;IAC7C,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QACvD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAAC,WAAM,CAAC;IACT,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy.d.ts","sourceRoot":"","sources":["../../src/identity/legacy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKpD,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAGlF;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAEjF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { getOrCreateStableId } from './stable-id';
|
|
2
|
+
const UNIQUE_ID_KEY = '@solomon/unique_id';
|
|
3
|
+
export async function getOrCreateLegacyId(storage) {
|
|
4
|
+
const stable = await getOrCreateStableId(storage);
|
|
5
|
+
return stable.id;
|
|
6
|
+
}
|
|
7
|
+
export async function getLegacyId(storage) {
|
|
8
|
+
return storage.getItem(UNIQUE_ID_KEY);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=legacy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy.js","sourceRoot":"","sources":["../../src/identity/legacy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAuB;IAC/D,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAuB;IACvD,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/identity/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAOpD,wBAAsB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAU3E"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { setTimedValue, getTimedValue } from '../storage/timed-value';
|
|
2
|
+
import { generateUUIDv4 } from './uuid';
|
|
3
|
+
const SESSION_KEY = '@solomon/session_id';
|
|
4
|
+
const SESSION_TTL_MS = 30 * 60 * 1000; // 30 minutes
|
|
5
|
+
export async function getSessionId(storage) {
|
|
6
|
+
const existing = await getTimedValue(storage, SESSION_KEY);
|
|
7
|
+
if (existing) {
|
|
8
|
+
await setTimedValue(storage, SESSION_KEY, existing, SESSION_TTL_MS);
|
|
9
|
+
return existing;
|
|
10
|
+
}
|
|
11
|
+
const newSessionId = generateUUIDv4();
|
|
12
|
+
await setTimedValue(storage, SESSION_KEY, newSessionId, SESSION_TTL_MS);
|
|
13
|
+
return newSessionId;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/identity/session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAC1C,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAEpD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAuB;IACxD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC3D,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QACpE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,YAAY,GAAG,cAAc,EAAE,CAAC;IACtC,MAAM,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;IACxE,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { StorageAdapter } from '../storage/adapter';
|
|
2
|
+
import { DurableSource } from './durable-id';
|
|
3
|
+
export type IdSource = DurableSource | 'async_storage';
|
|
4
|
+
export type IdLifecycle = 'existing' | 'install' | 'reinstall';
|
|
5
|
+
export interface StableId {
|
|
6
|
+
id: string;
|
|
7
|
+
id_source: IdSource;
|
|
8
|
+
lifecycle: IdLifecycle;
|
|
9
|
+
}
|
|
10
|
+
export declare function getOrCreateStableId(storage: StorageAdapter): Promise<StableId>;
|
|
11
|
+
//# sourceMappingURL=stable-id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stable-id.d.ts","sourceRoot":"","sources":["../../src/identity/stable-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAiC,aAAa,EAAE,MAAM,cAAc,CAAC;AAI5E,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,eAAe,CAAC;AACvD,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAE/D,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,QAAQ,CAAC;IACpB,SAAS,EAAE,WAAW,CAAC;CACxB;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAoBpF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { generateLegacyId } from './uuid';
|
|
2
|
+
import { readDurableId, writeDurableId } from './durable-id';
|
|
3
|
+
const UNIQUE_ID_KEY = '@solomon/unique_id';
|
|
4
|
+
export async function getOrCreateStableId(storage) {
|
|
5
|
+
const local = await storage.getItem(UNIQUE_ID_KEY);
|
|
6
|
+
if (local) {
|
|
7
|
+
return { id: local, id_source: 'async_storage', lifecycle: 'existing' };
|
|
8
|
+
}
|
|
9
|
+
const durable = await readDurableId();
|
|
10
|
+
if (durable && durable.id) {
|
|
11
|
+
await storage.setItem(UNIQUE_ID_KEY, durable.id);
|
|
12
|
+
return { id: durable.id, id_source: durable.source, lifecycle: 'reinstall' };
|
|
13
|
+
}
|
|
14
|
+
const newId = generateLegacyId();
|
|
15
|
+
await storage.setItem(UNIQUE_ID_KEY, newId);
|
|
16
|
+
const durableSource = await writeDurableId(newId);
|
|
17
|
+
return {
|
|
18
|
+
id: newId,
|
|
19
|
+
id_source: durableSource !== null && durableSource !== void 0 ? durableSource : 'async_storage',
|
|
20
|
+
lifecycle: 'install',
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=stable-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stable-id.js","sourceRoot":"","sources":["../../src/identity/stable-id.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAE5E,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAW3C,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAuB;IAC/D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACnD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;IAC1E,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;IACtC,IAAI,OAAO,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;QAC1B,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;IAC/E,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;IAClD,OAAO;QACL,EAAE,EAAE,KAAK;QACT,SAAS,EAAE,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,eAAe;QAC3C,SAAS,EAAE,SAAS;KACrB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/identity/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKpD,wBAAsB,SAAS,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAOxE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { generateUUIDv4 } from './uuid';
|
|
2
|
+
const USER_KEY = '@solomon/user_id';
|
|
3
|
+
export async function getUserId(storage) {
|
|
4
|
+
const existing = await storage.getItem(USER_KEY);
|
|
5
|
+
if (existing)
|
|
6
|
+
return existing;
|
|
7
|
+
const newUserId = generateUUIDv4();
|
|
8
|
+
await storage.setItem(USER_KEY, newUserId);
|
|
9
|
+
return newUserId;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=user.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/identity/user.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,QAAQ,GAAG,kBAAkB,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAuB;IACrD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,SAAS,GAAG,cAAc,EAAE,CAAC;IACnC,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC3C,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../../src/identity/uuid.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,IAAI,MAAM,CAcvC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function generateUUIDv4() {
|
|
2
|
+
if (typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function') {
|
|
3
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
|
|
4
|
+
const r = (crypto.getRandomValues(new Uint8Array(1))[0] & 15) >> 0;
|
|
5
|
+
const v = c === 'x' ? r : (r & 0x3) | 0x8;
|
|
6
|
+
return v.toString(16);
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
|
|
10
|
+
const r = (Math.random() * 16) | 0;
|
|
11
|
+
const v = c === 'x' ? r : (r & 0x3) | 0x8;
|
|
12
|
+
return v.toString(16);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
export function generateLegacyId() {
|
|
16
|
+
return Math.random().toString(36).substr(2, 9) + '_' + Date.now();
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=uuid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid.js","sourceRoot":"","sources":["../../src/identity/uuid.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;QAClF,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACnE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACnE,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;YAC1C,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACnE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAC1C,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACpE,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { SolomonSDK } from './core/client';
|
|
2
|
+
export { SolomonSDK as default } from './core/client';
|
|
3
|
+
export { EitriStorageAdapter } from './storage/eitri-storage';
|
|
4
|
+
export { wireSolomonDeepLinks } from './wiring';
|
|
5
|
+
export { registerSolomonHost, getSolomonHost } from './host';
|
|
6
|
+
export type { SolomonEitriHost } from './host';
|
|
7
|
+
export type { SDKConfig, CustomAliases, Product } from './core/types';
|
|
8
|
+
export type { SolomonEvent, SolomonPayload, ViewContentPayload, AddToCartPayload, InitiateCheckoutPayload, AddShippingInfoPayload, AddCustomerInfoPayload, AddPaymentInfoPayload, CheckoutCompletedPayload, } from './core/events';
|
|
9
|
+
export type { StorageAdapter } from './storage/adapter';
|
|
10
|
+
export type { DeepLinkParams } from './attribution/deep-link';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7D,YAAY,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE/C,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACtE,YAAY,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Public API
|
|
2
|
+
export { SolomonSDK } from './core/client';
|
|
3
|
+
export { SolomonSDK as default } from './core/client';
|
|
4
|
+
export { EitriStorageAdapter } from './storage/eitri-storage';
|
|
5
|
+
export { wireSolomonDeepLinks } from './wiring';
|
|
6
|
+
export { registerSolomonHost, getSolomonHost } from './host';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../../src/network/endpoints.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,0DAA0D,CAAC;AACzF,eAAO,MAAM,oBAAoB,uCAAuC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../../src/network/endpoints.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,uDAAuD,CAAC;AACzF,MAAM,CAAC,MAAM,oBAAoB,GAAG,oCAAoC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../src/network/publisher.ts"],"names":[],"mappings":"AAqDA,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3F;AAED,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9F"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import Eitri from 'eitri-bifrost';
|
|
2
|
+
import { SOLOMON_EVENT_URL, TOUCHPOINT_EVENT_URL } from './endpoints';
|
|
3
|
+
const MAX_RETRIES = 3;
|
|
4
|
+
const BASE_DELAY_MS = 1000;
|
|
5
|
+
function isOkStatus(resp) {
|
|
6
|
+
var _a;
|
|
7
|
+
const status = (_a = resp === null || resp === void 0 ? void 0 : resp.status) !== null && _a !== void 0 ? _a : resp === null || resp === void 0 ? void 0 : resp.statusCode;
|
|
8
|
+
// Bifrost http pode não expor status; se resolveu sem throw, assume sucesso.
|
|
9
|
+
if (typeof status !== 'number')
|
|
10
|
+
return true;
|
|
11
|
+
return status >= 200 && status < 300;
|
|
12
|
+
}
|
|
13
|
+
async function postWithRetry(url, body, debug, retries = MAX_RETRIES) {
|
|
14
|
+
var _a;
|
|
15
|
+
for (let attempt = 0; attempt < retries; attempt++) {
|
|
16
|
+
try {
|
|
17
|
+
// Eitri.http é nativo e só aceita HTTPS (nossos endpoints são https).
|
|
18
|
+
const resp = await Eitri.http.post(url, body, {
|
|
19
|
+
headers: { 'content-type': 'application/json' },
|
|
20
|
+
});
|
|
21
|
+
if (isOkStatus(resp)) {
|
|
22
|
+
if (debug) {
|
|
23
|
+
console.debug('[Solomon] Evento enviado com sucesso');
|
|
24
|
+
}
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (debug) {
|
|
28
|
+
console.error(`[Solomon] HTTP ${(_a = resp === null || resp === void 0 ? void 0 : resp.status) !== null && _a !== void 0 ? _a : resp === null || resp === void 0 ? void 0 : resp.statusCode}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
if (debug) {
|
|
33
|
+
console.error(`[Solomon] Network error (attempt ${attempt + 1}/${retries}):`, error);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Wait before retrying (exponential backoff: 1s, 3s, 9s)
|
|
37
|
+
if (attempt < retries - 1) {
|
|
38
|
+
const delay = BASE_DELAY_MS * Math.pow(3, attempt);
|
|
39
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// All retries failed — log but don't throw (fire-and-forget)
|
|
43
|
+
console.error('[Solomon] Failed to send event after', retries, 'attempts');
|
|
44
|
+
}
|
|
45
|
+
export async function publishSolomonEvent(event, debug = false) {
|
|
46
|
+
return postWithRetry(SOLOMON_EVENT_URL, event, debug);
|
|
47
|
+
}
|
|
48
|
+
export async function publishTouchpointEvent(event, debug = false) {
|
|
49
|
+
return postWithRetry(TOUCHPOINT_EVENT_URL, event, debug);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=publisher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../src/network/publisher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,eAAe,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEtE,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,aAAa,GAAG,IAAI,CAAC;AAE3B,SAAS,UAAU,CAAC,IAAS;;IAC3B,MAAM,MAAM,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,mCAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,CAAC;IAChD,6EAA6E;IAC7E,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,GAAW,EACX,IAAS,EACT,KAAc,EACd,UAAkB,WAAW;;IAE7B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;QACnD,IAAI,CAAC;YACH,sEAAsE;YACtE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE;gBAC5C,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CAAC,CAAC;YAEH,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBACxD,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,kBAAkB,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,mCAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,EAAE,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,oCAAoC,OAAO,GAAG,CAAC,IAAI,OAAO,IAAI,EAAE,KAAK,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;QAED,yDAAyD;QACzD,IAAI,OAAO,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACnD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAU,EAAE,QAAiB,KAAK;IAC1E,OAAO,aAAa,CAAC,iBAAiB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAAU,EAAE,QAAiB,KAAK;IAC7E,OAAO,aAAa,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/storage/adapter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/storage/adapter.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { StorageOptions } from 'eitri-bifrost';
|
|
2
|
+
import { StorageAdapter } from './adapter';
|
|
3
|
+
export declare class EitriStorageAdapter implements StorageAdapter {
|
|
4
|
+
private options?;
|
|
5
|
+
constructor(options?: StorageOptions | undefined);
|
|
6
|
+
getItem(key: string): Promise<string | null>;
|
|
7
|
+
setItem(key: string, value: string): Promise<void>;
|
|
8
|
+
removeItem(key: string): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=eitri-storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eitri-storage.d.ts","sourceRoot":"","sources":["../../src/storage/eitri-storage.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3C,qBAAa,mBAAoB,YAAW,cAAc;IAC5C,OAAO,CAAC,OAAO,CAAC;gBAAR,OAAO,CAAC,EAAE,cAAc,YAAA;IAEtC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAK5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG7C"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import Eitri from 'eitri-bifrost';
|
|
2
|
+
export class EitriStorageAdapter {
|
|
3
|
+
constructor(options) {
|
|
4
|
+
this.options = options;
|
|
5
|
+
}
|
|
6
|
+
async getItem(key) {
|
|
7
|
+
const value = await Eitri.storage.getItem(key, this.options);
|
|
8
|
+
return value && value.length ? value : null;
|
|
9
|
+
}
|
|
10
|
+
async setItem(key, value) {
|
|
11
|
+
await Eitri.storage.setItem(key, value, this.options);
|
|
12
|
+
}
|
|
13
|
+
async removeItem(key) {
|
|
14
|
+
await Eitri.storage.removeItem(key, this.options);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=eitri-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eitri-storage.js","sourceRoot":"","sources":["../../src/storage/eitri-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAyB,MAAM,eAAe,CAAC;AAItD,MAAM,OAAO,mBAAmB;IAC9B,YAAoB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAEhD,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,KAAa;QACtC,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;CACF"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { StorageAdapter } from './adapter';
|
|
2
|
+
export declare function setTimedValue(storage: StorageAdapter, key: string, value: string, ttlMs: number): Promise<void>;
|
|
3
|
+
export declare function getTimedValue(storage: StorageAdapter, key: string): Promise<string | null>;
|
|
4
|
+
export declare function refreshTimedValue(storage: StorageAdapter, key: string, ttlMs: number): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=timed-value.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timed-value.d.ts","sourceRoot":"","sources":["../../src/storage/timed-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAO3C,wBAAsB,aAAa,CACjC,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAexB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAYf"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export async function setTimedValue(storage, key, value, ttlMs) {
|
|
2
|
+
const data = {
|
|
3
|
+
value,
|
|
4
|
+
expiresAt: Date.now() + ttlMs,
|
|
5
|
+
};
|
|
6
|
+
await storage.setItem(key, JSON.stringify(data));
|
|
7
|
+
}
|
|
8
|
+
export async function getTimedValue(storage, key) {
|
|
9
|
+
const raw = await storage.getItem(key);
|
|
10
|
+
if (!raw)
|
|
11
|
+
return null;
|
|
12
|
+
try {
|
|
13
|
+
const data = JSON.parse(raw);
|
|
14
|
+
if (Date.now() >= data.expiresAt) {
|
|
15
|
+
await storage.removeItem(key);
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
return data.value;
|
|
19
|
+
}
|
|
20
|
+
catch (_a) {
|
|
21
|
+
await storage.removeItem(key);
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export async function refreshTimedValue(storage, key, ttlMs) {
|
|
26
|
+
const raw = await storage.getItem(key);
|
|
27
|
+
if (!raw)
|
|
28
|
+
return;
|
|
29
|
+
try {
|
|
30
|
+
const data = JSON.parse(raw);
|
|
31
|
+
data.expiresAt = Date.now() + ttlMs;
|
|
32
|
+
await storage.setItem(key, JSON.stringify(data));
|
|
33
|
+
}
|
|
34
|
+
catch (_a) {
|
|
35
|
+
// Corrupted data, remove it
|
|
36
|
+
await storage.removeItem(key);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=timed-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timed-value.js","sourceRoot":"","sources":["../../src/storage/timed-value.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAuB,EACvB,GAAW,EACX,KAAa,EACb,KAAa;IAEb,MAAM,IAAI,GAAe;QACvB,KAAK;QACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;KAC9B,CAAC;IACF,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAuB,EACvB,GAAW;IAEX,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,IAAI,CAAC;QACH,MAAM,IAAI,GAAe,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAAC,WAAM,CAAC;QACP,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAuB,EACvB,GAAW,EACX,KAAa;IAEb,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO;IAEjB,IAAI,CAAC;QACH,MAAM,IAAI,GAAe,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACpC,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAAC,WAAM,CAAC;QACP,4BAA4B;QAC5B,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
|
package/dist/wiring.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wiring.d.ts","sourceRoot":"","sources":["../src/wiring.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBzE"}
|
package/dist/wiring.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import Eitri from 'eitri-bifrost';
|
|
2
|
+
export async function wireSolomonDeepLinks(sdk) {
|
|
3
|
+
try {
|
|
4
|
+
const info = await Eitri.getInitializationInfos();
|
|
5
|
+
await sdk.applyInitParams(info);
|
|
6
|
+
}
|
|
7
|
+
catch (_a) {
|
|
8
|
+
// sem init infos — segue
|
|
9
|
+
}
|
|
10
|
+
try {
|
|
11
|
+
await Eitri.navigation.addOnResumeListener(() => {
|
|
12
|
+
Eitri.getInitializationInfos()
|
|
13
|
+
.then((info) => sdk.applyInitParams(info))
|
|
14
|
+
.catch(() => { });
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
catch (_b) {
|
|
18
|
+
// navigation indisponível — só cold start
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=wiring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wiring.js","sourceRoot":"","sources":["../src/wiring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,eAAe,CAAC;AAGlC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,GAAe;IACxD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,sBAAsB,EAAE,CAAC;QAClD,MAAM,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAAC,WAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC,GAAG,EAAE;YAC9C,KAAK,CAAC,sBAAsB,EAAE;iBAC3B,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;iBACzC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,WAAM,CAAC;QACP,0CAA0C;IAC5C,CAAC;AACH,CAAC"}
|