Skip to content

Commit

Permalink
Merge pull request #269 from schultek/refactor/web
Browse files Browse the repository at this point in the history
improvement: use package:web
  • Loading branch information
Kilian Schulte authored Oct 3, 2024
2 parents ff72bcc + 78ff6f4 commit 955300f
Show file tree
Hide file tree
Showing 48 changed files with 612 additions and 291 deletions.
2 changes: 1 addition & 1 deletion apps/dart_quotes/lib/data/firebase.imports.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,5 @@ export '../generated/imports/_web.dart' if (dart.library.io) '../generated/impor
DefaultFirebaseOptions,
DefaultFirebaseOptionsOrStubbed;

export '../generated/imports/_vm.dart' if (dart.library.html) '../generated/imports/_stubs.dart'
export '../generated/imports/_vm.dart' if (dart.library.js_interop) '../generated/imports/_stubs.dart'
show FirebaseAdminApp, Credential, FirebaseAdminAppOrStubbed, CredentialOrStubbed, Firestore, FirestoreOrStubbed;
4 changes: 2 additions & 2 deletions apps/dart_quotes/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -518,10 +518,10 @@ packages:
dependency: transitive
description:
name: js
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf
url: "https://pub.dev"
source: hosted
version: "0.6.7"
version: "0.7.1"
json_annotation:
dependency: transitive
description:
Expand Down
20 changes: 10 additions & 10 deletions apps/dart_quotes_server/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -170,10 +170,10 @@ packages:
dependency: transitive
description:
name: cached_network_image
sha256: "4a5d8d2c728b0f3d0245f69f921d7be90cae4c2fd5288f773088672c0893f819"
sha256: "7c1183e361e5c8b0a0f21a28401eecdbde252441106a9816400dd4c2b2424916"
url: "https://pub.dev"
source: hosted
version: "3.4.0"
version: "3.4.1"
cached_network_image_platform_interface:
dependency: transitive
description:
Expand All @@ -186,10 +186,10 @@ packages:
dependency: transitive
description:
name: cached_network_image_web
sha256: "6322dde7a5ad92202e64df659241104a43db20ed594c41ca18de1014598d7996"
sha256: "980842f4e8e2535b8dbd3d5ca0b1f0ba66bf61d14cc3a17a9b4788a3685ba062"
url: "https://pub.dev"
source: hosted
version: "1.3.0"
version: "1.3.1"
characters:
dependency: transitive
description:
Expand Down Expand Up @@ -321,10 +321,10 @@ packages:
dependency: transitive
description:
name: file_picker
sha256: "825aec673606875c33cd8d3c4083f1a3c3999015a84178b317b7ef396b7384f3"
sha256: "167bb619cdddaa10ef2907609feb8a79c16dfa479d3afaf960f8e223f754bf12"
url: "https://pub.dev"
source: hosted
version: "8.0.7"
version: "8.1.2"
file_selector_linux:
dependency: transitive
description:
Expand Down Expand Up @@ -671,10 +671,10 @@ packages:
dependency: transitive
description:
name: js
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf
url: "https://pub.dev"
source: hosted
version: "0.6.7"
version: "0.7.1"
json_annotation:
dependency: transitive
description:
Expand Down Expand Up @@ -1300,10 +1300,10 @@ packages:
dependency: transitive
description:
name: web
sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062
url: "https://pub.dev"
source: hosted
version: "0.5.1"
version: "1.0.0"
web_socket:
dependency: transitive
description:
Expand Down
4 changes: 2 additions & 2 deletions apps/fluttercon/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -385,10 +385,10 @@ packages:
dependency: transitive
description:
name: js
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf
url: "https://pub.dev"
source: hosted
version: "0.6.7"
version: "0.7.1"
json_annotation:
dependency: transitive
description:
Expand Down
2 changes: 1 addition & 1 deletion examples/flutter_embedding/lib/components/app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'package:jaspr/jaspr.dart';
import 'package:jaspr_riverpod/jaspr_riverpod.dart';

import 'effects_controls.dart';
import 'flutter_app_container.dart' if (dart.library.html) 'flutter_app_container_web.dart';
import 'flutter_app_container.dart' if (dart.library.js_interop) 'flutter_app_container_web.dart';
import 'interop_controls.dart';

@client
Expand Down
6 changes: 3 additions & 3 deletions examples/flutter_embedding/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -401,13 +401,13 @@ packages:
source: path
version: "4.0.10"
js:
dependency: "direct main"
dependency: transitive
description:
name: js
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf
url: "https://pub.dev"
source: hosted
version: "0.6.7"
version: "0.7.1"
json_annotation:
dependency: transitive
description:
Expand Down
1 change: 0 additions & 1 deletion examples/flutter_embedding/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ dependencies:
jaspr: ^0.15.1
jaspr_flutter_embed: ^0.3.4
jaspr_riverpod: ^0.3.14
js: ^0.6.7
riverpod: ^2.4.0

dev_dependencies:
Expand Down
2 changes: 1 addition & 1 deletion examples/flutter_plugin_interop/lib/components/app.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:jaspr/jaspr.dart';

import 'counter.server.dart' if (dart.library.html) 'counter.web.dart';
import 'counter.server.dart' if (dart.library.js_interop) 'counter.web.dart';

// A simple [StatelessComponent] with a [build] method
@client
Expand Down
4 changes: 2 additions & 2 deletions experiments/mobx_hooks/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -320,10 +320,10 @@ packages:
dependency: transitive
description:
name: js
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf
url: "https://pub.dev"
source: hosted
version: "0.6.7"
version: "0.7.1"
json_annotation:
dependency: transitive
description:
Expand Down
4 changes: 2 additions & 2 deletions experiments/preload_images/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -312,10 +312,10 @@ packages:
dependency: transitive
description:
name: js
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf
url: "https://pub.dev"
source: hosted
version: "0.6.7"
version: "0.7.1"
json_annotation:
dependency: transitive
description:
Expand Down
4 changes: 2 additions & 2 deletions experiments/scoped_styles/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -313,10 +313,10 @@ packages:
dependency: transitive
description:
name: js
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf
url: "https://pub.dev"
source: hosted
version: "0.6.7"
version: "0.7.1"
json_annotation:
dependency: transitive
description:
Expand Down
4 changes: 3 additions & 1 deletion packages/jaspr/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
## Unreleased patch
## Unreleased breaking

- **BREAKING** Migrate all packages to `package:web`, replacing `dart:html`.

- Add `InheritedModel<T>` similar to Flutters [InheritedModel](https://api.flutter.dev/flutter/widgets/InheritedModel-class.html)
- Fixed server issue during tests where the web directory would never resolve.
Expand Down
2 changes: 1 addition & 1 deletion packages/jaspr/lib/jaspr.dart
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,5 @@ export 'src/foundation/sync.dart';
export 'src/foundation/synchronous_future.dart';
export 'src/framework/framework.dart';
export 'src/stub/run_app_stub.dart'
if (dart.library.html) 'src/browser/run_app.dart'
if (dart.library.js_interop) 'src/browser/run_app.dart'
if (dart.library.io) 'src/server/run_app.dart' show runApp;
5 changes: 3 additions & 2 deletions packages/jaspr/lib/src/browser/browser_binding.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'dart:async';
import 'dart:html';

import 'package:web/web.dart';

import '../foundation/basic_types.dart';
import '../foundation/binding.dart';
Expand All @@ -12,7 +13,7 @@ class BrowserAppBinding extends AppBinding with ComponentsBinding {
bool get isClient => true;

late final String _baseOrigin = () {
var base = document.querySelector('head>base') as BaseElement?;
var base = document.querySelector('head>base') as HTMLBaseElement?;
return base?.href ?? window.location.origin;
}();

Expand Down
33 changes: 18 additions & 15 deletions packages/jaspr/lib/src/browser/clients.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'dart:async';
import 'dart:convert';
import 'dart:html';

import 'package:web/web.dart' as web;

import '../foundation/marker_utils.dart';
import '../framework/framework.dart';
Expand All @@ -16,7 +17,7 @@ void registerClientsSync(Map<String, ClientBuilder> clients) {
void registerClients(Map<String, ClientLoader> clients) {
final Map<String, ClientBuilder> builders = {};
_applyClients((name) {
var client = (builders[name] ?? clients[name]!()) as FutureOr<ClientBuilder>;
final client = (builders[name] ?? clients[name]!()) as FutureOr<ClientBuilder>;
if (client is ClientBuilder) {
return builders[name] = client;
} else {
Expand All @@ -37,36 +38,38 @@ final _compStartRegex = RegExp('^$clientMarkerPrefixRegex(\\S+)(?:\\s+data=(.*))
final _compEndRegex = RegExp('^/$clientMarkerPrefixRegex(\\S+)\$');

void _applyClients(FutureOr<ClientBuilder> Function(String) fn) {
var iterator = NodeIterator(document, NodeFilter.SHOW_COMMENT);
var iterator = web.document.createNodeIterator(web.document, 128 /* NodeFilter.SHOW_COMMENT */);

List<(String, String?, Node)> nodes = [];
List<(String, String?, web.Node)> nodes = [];

Comment? currNode;
while ((currNode = iterator.nextNode() as Comment?) != null) {
var value = currNode!.nodeValue ?? '';
web.Comment? currNode;
while ((currNode = iterator.nextNode() as web.Comment?) != null) {
final value = currNode!.nodeValue ?? '';
var match = _compStartRegex.firstMatch(value);
if (match != null) {
var name = match.group(1)!;
var data = match.group(2);
final name = match.group(1)!;
final data = match.group(2);

nodes.add((name, data, currNode));
}

match = _compEndRegex.firstMatch(value);
if (match != null) {
var name = match.group(1)!;
final name = match.group(1)!;

if (nodes.last.$1 == name) {
var comp = nodes.removeLast();
var start = comp.$3;
final comp = nodes.removeLast();
final start = comp.$3;
assert(start.parentNode == currNode.parentNode);

var between = (start, currNode);
final between = (start, currNode);

// Remove the data string.
start.text = '$clientMarkerPrefix${comp.$1}';

Map<String, dynamic> params = comp.$2 != null ? jsonDecode(unescapeMarkerText(comp.$2!)) : {};
final params = comp.$2 != null //
? jsonDecode(unescapeMarkerText(comp.$2!)) as Map<String, dynamic>
: <String, dynamic>{};
unawaited(_runBuilder(name, fn(name), params, between));
}
}
Expand All @@ -77,7 +80,7 @@ Future<void> _runBuilder(
String name,
FutureOr<ClientBuilder> builder,
Map<String, dynamic> params,
(Node, Node) between,
(web.Node, web.Node) between,
) async {
if (builder is Future<ClientBuilder>) {
builder = await builder;
Expand Down
Loading

0 comments on commit 955300f

Please sign in to comment.