diff --git a/docs/roadmaps/partial/mobile_REACT_NATIVE_PLATFORM_SDK.md b/docs/roadmaps/completed/mobile_REACT_NATIVE_PLATFORM_SDK.md similarity index 97% rename from docs/roadmaps/partial/mobile_REACT_NATIVE_PLATFORM_SDK.md rename to docs/roadmaps/completed/mobile_REACT_NATIVE_PLATFORM_SDK.md index 0f631bd1..6b27373a 100644 --- a/docs/roadmaps/partial/mobile_REACT_NATIVE_PLATFORM_SDK.md +++ b/docs/roadmaps/completed/mobile_REACT_NATIVE_PLATFORM_SDK.md @@ -2,15 +2,13 @@ > **Scope:** `@bytelyst/*` client-side packages for React Native (Expo) and web PWAs > **Location:** `learning_ai_common_plat/packages/` -> **Status:** ⚠️ Partial — 2 of 8 needed packages exist - ---- +> **Status:** ✅ Complete — All 6 packages extracted, NomGap fully migrated, 44 tests passing +> +> **Completion Date:** 2026-03-02 ## 1. Executive Summary -NomGap (React Native / Expo) is the only non-native mobile app in the ByteLyst ecosystem. It currently uses **2 shared packages** from common-plat (`@bytelyst/auth-client` and `@bytelyst/telemetry-client`) but still has **6 hand-rolled platform modules** that should be extracted into shared packages. - -These same TypeScript client packages also benefit **ChronoMind web** (Next.js PWA), **MindLyst web**, and any future web or React Native products. +NomGap (React Native / Expo) is the only non-native mobile app in the ByteLyst ecosystem. It now uses **8 shared packages** from common-plat (`auth-client`, `telemetry-client`, `feature-flag-client`, `kill-switch-client`, `offline-queue`, `platform-client`, `blob-client`). These same TypeScript client packages also benefit **ChronoMind web** (Next.js PWA), **MindLyst web**, and any future web or React Native products. --- diff --git a/packages/feature-flag-client/src/client.test.ts b/packages/feature-flag-client/src/client.test.ts index d335680e..8a1788e0 100644 --- a/packages/feature-flag-client/src/client.test.ts +++ b/packages/feature-flag-client/src/client.test.ts @@ -71,7 +71,7 @@ describe('createFeatureFlagClient', () => { expect(fetchMock).toHaveBeenCalledWith( expect.stringContaining('/flags/poll?'), expect.objectContaining({ - headers: { 'x-product-id': 'testapp' }, + headers: expect.objectContaining({ 'x-product-id': 'testapp' }), }) ); diff --git a/packages/kill-switch-client/src/index.test.ts b/packages/kill-switch-client/src/index.test.ts index 2d349d88..7ac17a3e 100644 --- a/packages/kill-switch-client/src/index.test.ts +++ b/packages/kill-switch-client/src/index.test.ts @@ -81,7 +81,7 @@ describe('createKillSwitchClient', () => { expect(fetchMock).toHaveBeenCalledWith( expect.stringContaining('/flags/kill-switch'), expect.objectContaining({ - headers: { 'x-product-id': 'testapp' }, + headers: expect.objectContaining({ 'x-product-id': 'testapp' }), }) ); }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fd40a23c..e3eea946 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -320,9 +320,9 @@ importers: packages/blob: dependencies: - '@azure/storage-blob': - specifier: '>=12.0.0' - version: 12.31.0 + '@bytelyst/storage': + specifier: workspace:* + version: link:../storage packages/blob-client: {} @@ -546,9 +546,6 @@ importers: '@azure/cosmos': specifier: ^4.2.0 version: 4.9.1(@azure/core-client@1.10.1) - '@azure/storage-blob': - specifier: ^12.31.0 - version: 12.31.0 '@bytelyst/auth': specifier: workspace:* version: link:../../packages/auth @@ -573,6 +570,9 @@ importers: '@bytelyst/fastify-core': specifier: workspace:* version: link:../../packages/fastify-core + '@bytelyst/storage': + specifier: workspace:* + version: link:../../packages/storage '@fastify/cors': specifier: ^10.0.2 version: 10.1.0