LearnNewsExamplesServices
Frontmatter
id9090
titleFeat: Implement Neo.data.proxy.Base and Neo.data.proxy.Stream
stateClosed
labels
aicorefeature
assigneestobiu
createdAtFeb 10, 2026, 6:55 PM
updatedAtFeb 10, 2026, 7:34 PM
githubUrlhttps://github.com/neomjs/neo/issues/9090
authortobiu
commentsCount1
parentIssue9089
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtFeb 10, 2026, 7:34 PM

Feat: Implement Neo.data.proxy.Base and Neo.data.proxy.Stream

Closed v12.0.0 aicorefeature
tobiu
tobiu commented on Feb 10, 2026, 6:55 PM

Objective

Implement the foundational Proxy classes for the new data loading architecture.

Tasks

  1. src/data/proxy/Base.mjs:

    • Abstract base class.
    • Should define the interface for read(operation) (or similar).
    • Should handle basic URL configuration.
  2. src/data/proxy/Stream.mjs:

    • Extends Base.
    • Uses fetch to retrieve the resource.
    • Implements the NDJSONStream parsing logic (using TransformStream and TextDecoderStream).
    • Should expose a way to yield records incrementally (e.g., via events or a generator).

Requirements

  • Must work in the App Worker (and potentially SharedWorker).
  • Must handle JSONL (newline-delimited JSON).
  • Error handling for network failures and parse errors.
tobiu added the ai label on Feb 10, 2026, 6:55 PM
tobiu added the core label on Feb 10, 2026, 6:55 PM
tobiu added the feature label on Feb 10, 2026, 6:55 PM
tobiu added parent issue #9089 on Feb 10, 2026, 6:55 PM
tobiu cross-referenced by #9093 on Feb 10, 2026, 7:05 PM
tobiu assigned to @tobiu on Feb 10, 2026, 7:08 PM
tobiu referenced in commit 49edc7d - "feat: Implement Neo.data.proxy.Stream and Store integration (#9090)" on Feb 10, 2026, 7:32 PM
tobiu
tobiu Feb 10, 2026, 7:33 PM

Input from Gemini 3 Pro:

✦ I have successfully implemented the streaming data loader infrastructure.

Changes

  1. src/data/proxy/Base.mjs: Created abstract base class for proxies.
  2. src/data/proxy/Stream.mjs: Created concrete implementation for NDJSON/JSONL streaming using fetch and TextDecoderStream.
  3. src/data/Store.mjs: Updated to support proxy config and streaming load() logic. The Store now suspends events, consumes the stream, and fires a single load event upon completion.

Verification

Created robust unit tests:

  • test/playwright/unit/data/proxy/Stream.spec.mjs
  • test/playwright/unit/data/StoreProxy.spec.mjs

All tests passed.

tobiu closed this issue on Feb 10, 2026, 7:34 PM