Skip to content

Commit 2a4778b

Browse files
committed
Update package:web in sqlite3_web
1 parent e1552ce commit 2a4778b

File tree

7 files changed

+59
-13
lines changed

7 files changed

+59
-13
lines changed

sqlite3_web/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.1.3
2+
3+
- Support latest version of `package:web`.
4+
15
## 0.1.2-wip
26

37
- Fix preferred databases not being sorted correctly.

sqlite3_web/lib/src/client.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ final class DatabaseClient implements WebSqlite {
169169

170170
if (globalContext.has('Worker')) {
171171
final dedicated = Worker(
172-
workerUri.toString(),
172+
workerUri.toString().toJS,
173173
WorkerOptions(name: 'sqlite3_worker'),
174174
);
175175

@@ -184,7 +184,7 @@ final class DatabaseClient implements WebSqlite {
184184
}
185185

186186
if (globalContext.has('SharedWorker')) {
187-
final shared = SharedWorker(workerUri.toString());
187+
final shared = SharedWorker(workerUri.toString().toJS);
188188
shared.port.start();
189189

190190
final (endpoint, channel) = await createChannel();

sqlite3_web/lib/src/worker.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ final class DatabaseState {
282282
switch (mode) {
283283
case FileSystemImplementation.opfsLocks:
284284
final options = WasmVfs.createOptions(root: pathForOpfs(name));
285-
final worker = Worker(Uri.base.toString());
285+
final worker = Worker(Uri.base.toString().toJS);
286286

287287
StartFileSystemServer(options: options).sendToWorker(worker);
288288

@@ -474,7 +474,7 @@ final class WorkerRunner {
474474
}
475475

476476
Worker useOrSpawnInnerWorker() {
477-
return _innerWorker ??= Worker(Uri.base.toString());
477+
return _innerWorker ??= Worker(Uri.base.toString().toJS);
478478
}
479479
}
480480

sqlite3_web/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ environment:
1010
dependencies:
1111
sqlite3: ^2.4.3
1212
stream_channel: ^2.1.2
13-
web: ^0.5.0
13+
web: ^1.0.0
1414

1515
dev_dependencies:
1616
lints: ^2.1.0

sqlite3_web/test/integration_test.dart

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,25 @@ enum Browser {
1414
(StorageMode.opfs, AccessMode.throughSharedWorker)
1515
},
1616
missingFeatures: {MissingBrowserFeature.dedicatedWorkersInSharedWorkers},
17+
defaultImplementation: (
18+
StorageMode.opfs,
19+
AccessMode.throughDedicatedWorker
20+
),
1721
),
18-
firefox(driverUriString: 'http://localhost:4444/');
22+
firefox(
23+
driverUriString: 'http://localhost:4444/',
24+
defaultImplementation: (StorageMode.opfs, AccessMode.throughSharedWorker),
25+
);
1926

2027
final bool isChromium;
2128
final String driverUriString;
2229
final Set<(StorageMode, AccessMode)> unsupportedImplementations;
2330
final Set<MissingBrowserFeature> missingFeatures;
31+
final (StorageMode, AccessMode) defaultImplementation;
2432

2533
const Browser({
2634
required this.driverUriString,
35+
required this.defaultImplementation,
2736
this.isChromium = false,
2837
this.unsupportedImplementations = const {},
2938
this.missingFeatures = const {},
@@ -81,6 +90,17 @@ void main() {
8190
final rawDriver = await createDriver(
8291
spec: browser.isChromium ? WebDriverSpec.JsonWire : WebDriverSpec.W3c,
8392
uri: browser.driverUri,
93+
desired: {
94+
'goog:chromeOptions': {
95+
'args': [
96+
'--headless=new',
97+
'--disable-search-engine-choice-screen',
98+
],
99+
},
100+
'moz:firefoxOptions': {
101+
'args': ['-headless']
102+
},
103+
},
84104
);
85105

86106
driver = TestWebDriver(server, rawDriver);
@@ -107,6 +127,11 @@ void main() {
107127
expect(result.impls, browser.availableImplementations);
108128
});
109129

130+
test('picks recommended option', () async {
131+
final (storage, access) = await driver.openDatabase();
132+
expect((storage, access), browser.defaultImplementation);
133+
});
134+
110135
for (final (storage, access) in browser.availableImplementations) {
111136
test('$storage through $access', () async {
112137
await driver.openDatabase((storage, access));

sqlite3_web/tool/server.dart

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,13 +136,28 @@ class TestWebDriver {
136136
);
137137
}
138138

139-
Future<void> openDatabase([(StorageMode, AccessMode)? implementation]) async {
139+
Future<(StorageMode, AccessMode)> openDatabase(
140+
[(StorageMode, AccessMode)? implementation]) async {
140141
final desc = switch (implementation) {
141142
null => null,
142143
(var storage, var access) => '${storage.name}:${access.name}'
143144
};
144145

145-
await driver.executeAsync('open(arguments[0], arguments[1])', [desc]);
146+
final res = await driver
147+
.executeAsync('open(arguments[0], arguments[1])', [desc]) as String?;
148+
149+
if (res == null) {
150+
return implementation!;
151+
} else {
152+
// If we're using connectToRecommended, this returns the storage/access
153+
// mode actually chosen.
154+
final split = res.split(':');
155+
156+
return (
157+
StorageMode.values.byName(split[0]),
158+
AccessMode.values.byName(split[1])
159+
);
160+
}
146161
}
147162

148163
Future<void> closeDatabase() async {

sqlite3_web/web/main.dart

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import 'package:sqlite3_web/sqlite3_web.dart';
88

99
final sqlite3WasmUri = Uri.parse('sqlite3.wasm');
1010
final workerUri = Uri.parse('worker.dart.js');
11-
const databasName = 'database';
11+
const databaseName = 'database';
1212

1313
WebSqlite? webSqlite;
1414

@@ -28,7 +28,7 @@ void main() {
2828
document.getElementById('selfcheck')?.onClick.listen((event) async {
2929
print('starting');
3030
final sqlite = initializeSqlite();
31-
final database = await sqlite.connectToRecommended(databasName);
31+
final database = await sqlite.connectToRecommended(databaseName);
3232

3333
print('selected storage: ${database.storage} through ${database.access}');
3434
print('missing features: ${database.features.missingFeatures}');
@@ -87,23 +87,25 @@ Future<JSAny?> _waitForUpdate(String? _) async {
8787
Future<JSAny?> _open(String? implementationName) async {
8888
final sqlite = initializeSqlite();
8989
Database db;
90+
var returnValue = implementationName;
9091

9192
if (implementationName != null) {
9293
final split = implementationName.split(':');
9394

94-
db = await sqlite.connect(databasName, StorageMode.values.byName(split[0]),
95+
db = await sqlite.connect(databaseName, StorageMode.values.byName(split[0]),
9596
AccessMode.values.byName(split[1]));
9697
} else {
97-
final result = await sqlite.connectToRecommended(databasName);
98+
final result = await sqlite.connectToRecommended(databaseName);
9899
db = result.database;
100+
returnValue = '${result.storage.name}:${result.access.name}';
99101
}
100102

101103
// Make sure it works!
102104
await db.select('SELECT database_host()');
103105

104106
updates = StreamQueue(db.updates);
105107
database = db;
106-
return null;
108+
return returnValue?.toJS;
107109
}
108110

109111
Future<JSAny?> _exec(String? sql) async {

0 commit comments

Comments
 (0)