diff --git a/NEXT_STEPS.md b/NEXT_STEPS.md index be8474f..e7294ef 100644 --- a/NEXT_STEPS.md +++ b/NEXT_STEPS.md @@ -16,6 +16,7 @@ Estado al cierre: - `arts/timr/engine-timers.ts` delega `TimerHandle` cancel/reschedule en `timer-handle.ts`. - `arts/stor/engine-storage.ts` delega IDs de adapter, bus keys y suscripciones cross-tab en `adapter-registry.ts`. - `arts/stor/engine-storage.ts` delega el registro de defaults conflictivos en `defaults-registry.ts`. + - `arts/sess/engine-session.ts` delega la clasificacion `none/anonymous/identified` en `session-identity.ts`. - Integracion total ampliada: `Auth.signOut()` valida anonimizacion, invalidacion de `Permissions` y evento `Cache.invalidate`. - Tanda focalizada verde: `npx vitest run src/arts/conn src/libs/cach src/arts/cach src/svrs/cach src/arts/auth src/svrs/auth src/libs/auth src/arts/aapp/test/ecosystem.integration.test.ts` -> 19 archivos, 82 tests. - `/test/ecosystem` revisado en navegador: carga sin errores de consola, `ar` cambia a `rtl`, Formats se actualiza por locale, Perm cambia con rol `viewer`, Cach re-scopea por locale y Conn loopback publica/recibe. diff --git a/src/arts/sess/engine-session.ts b/src/arts/sess/engine-session.ts index 31ba684..a48e16c 100644 --- a/src/arts/sess/engine-session.ts +++ b/src/arts/sess/engine-session.ts @@ -19,9 +19,6 @@ import { FIELD_CREDENTIAL, FIELD_DATA, FIELD_USER, - IDENTITY_ANONYMOUS, - IDENTITY_IDENTIFIED, - IDENTITY_NONE, REFRESH_STATUS_EXPIRED, REFRESH_STATUS_FAILED, REFRESH_STATUS_REFRESHED, @@ -52,6 +49,7 @@ import { hydrateSessionStorage, wireSessionStorageSync } from './session-sync.ts'; +import { computeSessionIdentity } from './session-identity.ts'; import { checkSessionInvariants, validateSessionCandidate } from './session-validation.ts'; import type { AdoptResultField, @@ -63,7 +61,6 @@ import type { Session, SessionActor, SessionChange, - SessionIdentityState, SessionListener } from './types.ts'; @@ -149,11 +146,6 @@ export function createEngineSession {}; listeners.add(listener); try { - const identity = computeIdentity(snapshot); + const identity = computeSessionIdentity(snapshot); listener({ event: EVENT_INITIAL_SESSION, current: snapshot, diff --git a/src/arts/sess/session-identity.ts b/src/arts/sess/session-identity.ts new file mode 100644 index 0000000..7615658 --- /dev/null +++ b/src/arts/sess/session-identity.ts @@ -0,0 +1,9 @@ +import { IDENTITY_ANONYMOUS, IDENTITY_IDENTIFIED, IDENTITY_NONE } from './consts.ts'; +import type { Session, SessionIdentityState } from './types.ts'; + +export function computeSessionIdentity( + session: Pick, 'user'> | null +): SessionIdentityState { + if (session === null) return IDENTITY_NONE; + return session.user === null ? IDENTITY_ANONYMOUS : IDENTITY_IDENTIFIED; +}