Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test-dbs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
package: [sembast_cache_manager, objectbox, drift]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how is sembast tested now?
Directly in the core package?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, in same test package as mem_cache_manager_test

package: [objectbox, drift]
defaults:
run:
working-directory: ./packages/${{ matrix.package }}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import 'dart:io';
import 'package:ndk/data_layer/repositories/cache_manager/sembast_cache_manager.dart';
import 'package:ndk/domain_layer/entities/nip_05.dart';
import 'package:ndk/ndk.dart';
import 'package:sembast/sembast_io.dart';
import 'package:sembast_cache_manager/sembast_cache_manager.dart';

Future<void> main() async {
print('🚀 SembastCacheManager Example\n');
Expand Down
3 changes: 2 additions & 1 deletion packages/ndk/lib/ndk.dart
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ export 'domain_layer/entities/signer_request_rejected_exception.dart';
/// cache
export 'domain_layer/repositories/cache_manager.dart';
export 'data_layer/repositories/cache_manager/mem_cache_manager.dart';
// export 'data_layer/repositories/cache_manager/db_cache_manager.dart';
export 'data_layer/repositories/cache_manager/sembast_cache_manager.dart'
if (dart.library.io) 'data_layer/repositories/cache_manager/sembast_cache_manager.dart';
Comment on lines +69 to +70
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check for dart:io and sembast_io imports in the sembast cache manager
fd -t f "sembast_cache_manager.dart" packages/ndk --exec head -50 {}

echo "---"
echo "Searching for dart:io imports:"
rg -n "dart:io|sembast_io" packages/ndk/lib/data_layer/repositories/cache_manager/

Repository: relaystr/ndk

Length of output: 2676


Conditional export with identical paths will break web builds.

The file sembast_cache_manager.dart imports dart:io and package:sembast/sembast_io.dart, which are unavailable on web. The current conditional export uses the same path for both conditions, so when dart.library.io is false (web builds), it still attempts to export sembast_cache_manager.dart, causing compilation failure.

Fix: Create a stub implementation for web or remove the unconditional default:

-export 'data_layer/repositories/cache_manager/sembast_cache_manager.dart'
-    if (dart.library.io) 'data_layer/repositories/cache_manager/sembast_cache_manager.dart';
+export 'data_layer/repositories/cache_manager/sembast_cache_manager_stub.dart'
+    if (dart.library.io) 'data_layer/repositories/cache_manager/sembast_cache_manager.dart';

Then create sembast_cache_manager_stub.dart with placeholder implementations that throw UnsupportedError if called on web.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/ndk/lib/ndk.dart` around lines 69 - 70, The conditional export in
ndk.dart currently points to the same file for both branches, causing web builds
to pull in dart:io; update the export to provide a web-safe stub: change the
export to use 'data_layer/repositories/cache_manager/sembast_cache_manager.dart'
when dart.library.io is true and to a new
'data_layer/repositories/cache_manager/sembast_cache_manager_stub.dart' when
false, and create that stub file implementing the same public API
(classes/functions) from sembast_cache_manager.dart but with bodies that throw
UnsupportedError (or no-op) on web so compilation succeeds; ensure public
symbols (e.g., the cache manager class and any factory functions) match names in
the original file.


/**
* common usecases
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import 'dart:io';
import 'package:ndk/data_layer/repositories/cache_manager/sembast_cache_manager.dart';
import 'package:ndk/entities.dart';

import 'package:ndk_cache_manager_test_suite/ndk_cache_manager_test_suite.dart';
import 'package:test/test.dart';
import 'package:sembast_cache_manager/sembast_cache_manager.dart';

void main() {
group('SembastCacheManager Tests', () {
Expand Down
2 changes: 1 addition & 1 deletion packages/sample-app/lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:amberflutter/amberflutter.dart';
import 'package:ndk/data_layer/repositories/cache_manager/sembast_cache_manager.dart';
import 'package:ndk_drift/ndk_drift.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
Expand All @@ -19,7 +20,6 @@ import 'package:ndk_demo/widgets_demo_page.dart';
import 'package:ndk_demo/pending_requests_page.dart';
import 'package:path_provider/path_provider.dart';
import 'package:protocol_handler/protocol_handler.dart';
import 'package:sembast_cache_manager/sembast_cache_manager.dart';

bool amberAvailable = false;

Expand Down
11 changes: 2 additions & 9 deletions packages/sample-app/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -633,14 +633,14 @@ packages:
path: "../drift"
relative: true
source: path
version: "0.0.2-dev.6"
version: "0.1.0-dev.2"
ndk_flutter:
dependency: "direct main"
description:
path: "../ndk_flutter"
relative: true
source: path
version: "0.0.2-dev.8"
version: "0.1.0-dev.2"
nested:
dependency: transitive
description:
Expand Down Expand Up @@ -992,13 +992,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "3.8.6"
sembast_cache_manager:
dependency: "direct main"
description:
path: "../sembast_cache_manager"
relative: true
source: path
version: "1.0.8-dev.4"
sky_engine:
dependency: transitive
description: flutter
Expand Down
3 changes: 0 additions & 3 deletions packages/sample-app/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ dependencies:
ndk_amber: 0.4.0
ndk_flutter: ^0.0.2-dev.2
ndk_drift: ^0.0.2-dev.0+1
sembast_cache_manager: ^1.0.8-dev.0

cupertino_icons: ^1.0.8
go_router: ^14.6.2
Expand Down Expand Up @@ -74,8 +73,6 @@ dependency_overrides:
path: ../nip07_event_signer
ndk_drift:
path: ../drift
sembast_cache_manager:
path: ../sembast_cache_manager
# The "flutter_lints" package below contains a set of recommended lints to
# encourage good coding practices. The lint set provided by the package is
# activated in the `analysis_options.yaml` file located at the root of your
Expand Down
7 changes: 0 additions & 7 deletions packages/sembast_cache_manager/.gitignore

This file was deleted.

279 changes: 0 additions & 279 deletions packages/sembast_cache_manager/CHANGELOG.md

This file was deleted.

Loading
Loading