Merge pull request #3 from dart-backend/feature/v8

Feature/v8
This commit is contained in:
Thomas Hii 2023-05-16 00:05:41 +08:00 committed by GitHub
commit 4e320b1e44
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
49 changed files with 258 additions and 92 deletions

1
.idea/.name Normal file
View file

@ -0,0 +1 @@
belatuk_common_utilities

19
.idea/modules.xml Normal file
View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/packages/body_parser/melos_belatuk_body_parser.iml" filepath="$PROJECT_DIR$/packages/body_parser/melos_belatuk_body_parser.iml" />
<module fileurl="file://$PROJECT_DIR$/packages/code_buffer/melos_belatuk_code_buffer.iml" filepath="$PROJECT_DIR$/packages/code_buffer/melos_belatuk_code_buffer.iml" />
<module fileurl="file://$PROJECT_DIR$/packages/combinator/melos_belatuk_combinator.iml" filepath="$PROJECT_DIR$/packages/combinator/melos_belatuk_combinator.iml" />
<module fileurl="file://$PROJECT_DIR$/packages/html_builder/melos_belatuk_html_builder.iml" filepath="$PROJECT_DIR$/packages/html_builder/melos_belatuk_html_builder.iml" />
<module fileurl="file://$PROJECT_DIR$/packages/json_serializer/melos_belatuk_json_serializer.iml" filepath="$PROJECT_DIR$/packages/json_serializer/melos_belatuk_json_serializer.iml" />
<module fileurl="file://$PROJECT_DIR$/packages/merge_map/melos_belatuk_merge_map.iml" filepath="$PROJECT_DIR$/packages/merge_map/melos_belatuk_merge_map.iml" />
<module fileurl="file://$PROJECT_DIR$/packages/pretty_logging/melos_belatuk_pretty_logging.iml" filepath="$PROJECT_DIR$/packages/pretty_logging/melos_belatuk_pretty_logging.iml" />
<module fileurl="file://$PROJECT_DIR$/packages/pub_sub/melos_belatuk_pub_sub.iml" filepath="$PROJECT_DIR$/packages/pub_sub/melos_belatuk_pub_sub.iml" />
<module fileurl="file://$PROJECT_DIR$/packages/range_header/melos_belatuk_range_header.iml" filepath="$PROJECT_DIR$/packages/range_header/melos_belatuk_range_header.iml" />
<module fileurl="file://$PROJECT_DIR$/packages/symbol_table/melos_belatuk_symbol_table.iml" filepath="$PROJECT_DIR$/packages/symbol_table/melos_belatuk_symbol_table.iml" />
<module fileurl="file://$PROJECT_DIR$/packages/user_agent/melos_user_agent_analyzer.iml" filepath="$PROJECT_DIR$/packages/user_agent/melos_user_agent_analyzer.iml" />
<module fileurl="file://$PROJECT_DIR$/melos_belatuk_common_utilities.iml" filepath="$PROJECT_DIR$/melos_belatuk_common_utilities.iml" />
</modules>
</component>
</project>

View file

@ -0,0 +1,11 @@
<!-- Generated by Melos -->
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Melos -&gt; Bootstrap Workspace" type="ShConfigurationType">
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
<option name="SCRIPT_PATH" value="$USER_HOME$/.pub-cache/bin/melos" />
<option name="SCRIPT_OPTIONS" value="bootstrap" />
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="false" />
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<method v="2" />
</configuration>
</component>

View file

@ -0,0 +1,11 @@
<!-- Generated by Melos -->
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Melos -&gt; Clean Workspace" type="ShConfigurationType">
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
<option name="SCRIPT_PATH" value="$USER_HOME$/.pub-cache/bin/melos" />
<option name="SCRIPT_OPTIONS" value="clean" />
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="false" />
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<method v="2" />
</configuration>
</component>

4
melos.yaml Normal file
View file

@ -0,0 +1,4 @@
name: belatuk_common_utilities
packages:
- packages/*

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$" isTestSource="false" />
</content>
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Dart SDK" level="project" />
<orderEntry type="library" name="Dart Packages" level="project" />
</component>
</module>

View file

@ -1,5 +1,14 @@
# Change Log # Change Log
## 5.0.0
* Require Dart >= 3.0
## 5.0.0-beta.1
* Require Dart >= 3.0
* Updated `belatuk_http_server` to 4.0.0
## 4.0.1 ## 4.0.1
* Updated `belatuk_http_server` to 3.0.0 * Updated `belatuk_http_server` to 3.0.0

View file

@ -30,7 +30,7 @@ A benefit of this is that primitive types are automatically deserialized correct
To install Body Parser for your Dart project, simply add body_parser to your pub dependencies. To install Body Parser for your Dart project, simply add body_parser to your pub dependencies.
dependencies: dependencies:
belatuk_body_parser: ^4.0.0 belatuk_body_parser: ^5.0.0
### Usage ### Usage

View file

@ -1,14 +1,14 @@
name: belatuk_body_parser name: belatuk_body_parser
version: 4.0.1 version: 5.0.0
description: Parse request bodies and query strings in Dart. Supports JSON, URL-encoded, and multi-part bodies. description: Parse request bodies and query strings in Dart. Supports JSON, URL-encoded, and multi-part bodies.
homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/body_parser homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/body_parser
environment: environment:
sdk: '>=2.17.0 <3.0.0' sdk: '>=3.0.0 <4.0.0'
dependencies: dependencies:
http_parser: ^4.0.0 http_parser: ^4.0.0
belatuk_http_server: ^3.0.0 belatuk_http_server: ^4.0.0
mime: ^1.0.0 mime: ^1.0.0
dev_dependencies: dev_dependencies:
http: ^0.13.0 http: ^0.13.0
test: ^1.17.8 test: ^1.24.0
lints: ^2.0.0 lints: ^2.0.0

View file

@ -1,5 +1,13 @@
# Change Log # Change Log
## 5.0.0
* Require Dart >= 3.0
## 5.0.0-beta.1
* Require Dart >= 3.0
## 4.0.0 ## 4.0.0
* Require Dart >= 2.17 * Require Dart >= 2.17

View file

@ -14,7 +14,7 @@ In your `pubspec.yaml`:
```yaml ```yaml
dependencies: dependencies:
belatuk_code_buffer: ^4.0.0 belatuk_code_buffer: ^5.0.0
``` ```
## Usage ## Usage

View file

@ -1,12 +1,12 @@
name: belatuk_code_buffer name: belatuk_code_buffer
version: 4.0.0 version: 5.0.0
description: An advanced StringBuffer geared toward generating code, and source maps. description: An advanced StringBuffer geared toward generating code, and source maps.
homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/code_buffer homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/code_buffer
environment: environment:
sdk: '>=2.17.0 <3.0.0' sdk: '>=3.0.0 <4.0.0'
dependencies: dependencies:
charcode: ^1.2.0 charcode: ^1.2.0
source_span: ^1.8.1 source_span: ^1.8.1
dev_dependencies: dev_dependencies:
test: ^1.17.3 test: ^1.24.0
lints: ^2.0.0 lints: ^2.0.0

View file

@ -1,5 +1,14 @@
# Change Log # Change Log
## 5.0.0
* Require Dart >= 3.0
## 5.0.0-beta.1
* Require Dart >= 3.0
* Updated `belatuk_code_buffer` to 5.0.0
## 4.0.0 ## 4.0.0
* Require Dart >= 2.17 * Require Dart >= 2.17

View file

@ -1,15 +1,15 @@
name: belatuk_combinator name: belatuk_combinator
version: 4.0.0 version: 5.0.0
description: Packrat parser combinators that support static typing, generics, file spans, memoization, and more. description: Packrat parser combinators that support static typing, generics, file spans, memoization, and more.
homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/combinator homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/combinator
environment: environment:
sdk: '>=2.17.0 <3.0.0' sdk: '>=3.0.0 <4.0.0'
dependencies: dependencies:
belatuk_code_buffer: ^4.0.0 belatuk_code_buffer: ^5.0.0
matcher: ^0.12.10 matcher: ^0.12.10
source_span: ^1.8.1 source_span: ^1.8.1
string_scanner: ^1.1.0 string_scanner: ^1.1.0
tuple: ^2.0.0 tuple: ^2.0.0
dev_dependencies: dev_dependencies:
test: ^1.17.4 test: ^1.24.0
lints: ^2.0.0 lints: ^2.0.0

View file

@ -0,0 +1,4 @@
# melos_managed_dependency_overrides: belatuk_code_buffer
#dependency_overrides:
# belatuk_code_buffer:
# path: ../code_buffer

View file

@ -1,5 +1,13 @@
# Change Log # Change Log
## 5.0.0
* Require Dart >= 3.0
## 5.0.0-beta.1
* Require Dart >= 3.0
## 4.0.0 ## 4.0.0
* Require Dart >= 2.17 * Require Dart >= 2.17

View file

@ -10,7 +10,7 @@ This package builds HTML AST's and renders them to HTML. It can be used as an in
## Requirements ## Requirements
* Dart SDK: 2.17.x or later * Dart SDK: 3.0.x or later
## Installation ## Installation
@ -18,7 +18,7 @@ In your `pubspec.yaml`:
```yaml ```yaml
dependencies: dependencies:
belatuk_html_builder: ^4.0.0 belatuk_html_builder: ^5.0.0
``` ```
## Usage ## Usage

View file

@ -12,9 +12,9 @@ Node Function(Node) rebuild(NodeBuilder Function(NodeBuilder) transform,
/// ///
/// Use this alongside [rebuild]. /// Use this alongside [rebuild].
Node Function(Node) rebuildRecursive(Node Function(Node) f) { Node Function(Node) rebuildRecursive(Node Function(Node) f) {
Node _build(Node node) { Node build(Node node) {
return NodeBuilder.from(f(node)).mapChildren(_build).build(); return NodeBuilder.from(f(node)).mapChildren(build).build();
} }
return _build; return build;
} }

View file

@ -1,12 +1,12 @@
name: belatuk_html_builder name: belatuk_html_builder
version: 4.0.0 version: 5.0.0
description: Build HTML AST's and render them to HTML. This can be used as an internal DSL, i.e. for a templating engine. description: Build HTML AST's and render them to HTML. This can be used as an internal DSL, i.e. for a templating engine.
homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/html_builder homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/html_builder
environment: environment:
sdk: '>=2.17.0 <3.0.0' sdk: '>=3.0.0 <4.0.0'
dependencies: dependencies:
collection: ^1.15.0 collection: ^1.17.0
dev_dependencies: dev_dependencies:
html: ^0.15.0 html: ^0.15.0
test: ^1.17.4 test: ^1.24.0
lints: ^2.0.0 lints: ^2.0.0

View file

@ -1,6 +1,5 @@
import 'package:html/parser.dart' as html5; import 'package:html/parser.dart' as html5;
import 'package:belatuk_html_builder/elements.dart'; import 'package:belatuk_html_builder/elements.dart';
import 'package:belatuk_html_builder/belatuk_html_builder.dart';
import 'package:test/test.dart'; import 'package:test/test.dart';
void main() { void main() {

View file

@ -1,5 +1,13 @@
# Change Log # Change Log
## 7.0.0
* Require Dart >= 3.0
## 7.0.0-beta.1
* Require Dart >= 3.0
## 6.0.1 ## 6.0.1
* Updated README * Updated README

View file

@ -12,7 +12,7 @@ The ***new and improved*** definitive solution for JSON in Dart. It supports syn
## Installation ## Installation
dependencies: dependencies:
belatuk_json_serializer: ^6.0.0 belatuk_json_serializer: ^7.0.0
## Usage ## Usage

View file

@ -1,12 +1,12 @@
name: belatuk_json_serializer name: belatuk_json_serializer
version: 6.0.1 version: 7.0.0
description: Easy JSON to Object serialization and deserialization in Dart. description: Easy JSON to Object serialization and deserialization in Dart.
homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/json_serializer homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/json_serializer
environment: environment:
sdk: '>=2.17.0 <3.0.0' sdk: '>=3.0.0 <4.0.0'
dependencies: dependencies:
logging: ^1.0.1 logging: ^1.0.1
dev_dependencies: dev_dependencies:
stack_trace: ^1.10.0 stack_trace: ^1.10.0
test: ^1.17.4 test: ^1.24.0
lints: ^2.0.0 lints: ^2.0.0

View file

@ -105,11 +105,11 @@ testDeserializationWithSchemaValidation() async {
god.deserialize(babelRcJson, outputType: BabelRc) as BabelRc; god.deserialize(babelRcJson, outputType: BabelRc) as BabelRc;
print(deserialized.presets.runtimeType); print(deserialized.presets.runtimeType);
expect(deserialized.presets is List, equals(true)); //expect(deserialized.presets is List, equals(true));
expect(deserialized.presets.length, equals(2)); expect(deserialized.presets.length, equals(2));
expect(deserialized.presets[0], equals('es2015')); expect(deserialized.presets[0], equals('es2015'));
expect(deserialized.presets[1], equals('stage-0')); expect(deserialized.presets[1], equals('stage-0'));
expect(deserialized.plugins is List, equals(true)); //expect(deserialized.plugins is List, equals(true));
expect(deserialized.plugins.length, equals(1)); expect(deserialized.plugins.length, equals(1));
expect(deserialized.plugins[0], equals('add-module-exports')); expect(deserialized.plugins[0], equals('add-module-exports'));
} }

View file

@ -11,14 +11,14 @@ void printRecord(LogRecord rec) {
class SampleNestedClass { class SampleNestedClass {
String? bar; String? bar;
SampleNestedClass([String? this.bar]); SampleNestedClass([this.bar]);
} }
class SampleClass { class SampleClass {
String? hello; String? hello;
List<SampleNestedClass> nested = []; List<SampleNestedClass> nested = [];
SampleClass([String? this.hello]); SampleClass([this.hello]);
} }
@WithSchemaUrl( @WithSchemaUrl(
@ -27,25 +27,23 @@ class BabelRc {
List<String> presets; List<String> presets;
List<String> plugins; List<String> plugins;
BabelRc( BabelRc({this.presets = const [], this.plugins = const []});
{List<String> this.presets: const [],
List<String> this.plugins: const []});
} }
@WithSchema(const { @WithSchema({
r"$schema": "http://json-schema.org/draft-04/schema#", r"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Validated Sample Class", "title": "Validated Sample Class",
"description": "Sample schema for validation via JSON God", "description": "Sample schema for validation via JSON God",
"type": "object", "type": "object",
"hello": const {"description": "A friendly greeting.", "type": "string"}, "hello": {"description": "A friendly greeting.", "type": "string"},
"nested": const { "nested": {
"description": "A list of NestedSampleClass items within this instance.", "description": "A list of NestedSampleClass items within this instance.",
"type": "array", "type": "array",
"items": const { "items": {
"type": "object", "type": "object",
"bar": const {"description": "Filler text", "type": "string"} "bar": {"description": "Filler text", "type": "string"}
} }
}, },
"required": const ["hello", "nested"] "required": ["hello", "nested"]
}) })
class ValidatedSampleClass {} class ValidatedSampleClass {}

View file

@ -8,7 +8,7 @@ main() {
test('fromJson', () { test('fromJson', () {
var foo = god.deserialize('{"bar":"baz"}', outputType: Foo) as Foo; var foo = god.deserialize('{"bar":"baz"}', outputType: Foo) as Foo;
expect(foo is Foo, true); //expect(foo is Foo, true);
expect(foo.text, equals('baz')); expect(foo.text, equals('baz'));
}); });

View file

@ -1,5 +1,13 @@
# Change Log # Change Log
## 5.0.0
* Require Dart >= 3.0
## 5.0.0-beta.1
* Require Dart >= 3.0
## 4.0.0 ## 4.0.0
* Require Dart >= 2.17 * Require Dart >= 2.17

View file

@ -1,9 +1,9 @@
name: belatuk_merge_map name: belatuk_merge_map
version: 4.0.0 version: 5.0.0
description: Combine multiple Maps into one. Equivalent to Object.assign in JS. description: Combine multiple Maps into one. Equivalent to Object.assign in JS.
homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/merge_map homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/merge_map
environment: environment:
sdk: '>=2.17.0 <3.0.0' sdk: '>=3.0.0 <4.0.0'
dev_dependencies: dev_dependencies:
test: ^1.17.4 test: ^1.24.0
lints: ^2.0.0 lints: ^2.0.0

View file

@ -3,8 +3,7 @@ Primary Authors
* __[Thomas Hii](dukefirehawk.apps@gmail.com)__ * __[Thomas Hii](dukefirehawk.apps@gmail.com)__
Thomas is the current maintainer of the code base. He has refactored and migrated the Thomas is the current maintainer of the code base. He has refactored and migrated the code base to support NNBD.
code base to support NNBD.
* __[Tobe O](thosakwe@gmail.com)__ * __[Tobe O](thosakwe@gmail.com)__

View file

@ -1,5 +1,13 @@
# Change Log # Change Log
## 6.0.0
* Require Dart >= 3.0
## 6.0.0-beta.1
* Require Dart >= 3.0
## 5.0.0 ## 5.0.0
* Require Dart >= 2.17 * Require Dart >= 2.17

View file

@ -15,7 +15,7 @@ In your `pubspec.yaml`:
```yaml ```yaml
dependencies: dependencies:
belatuk_pretty_logging: ^5.0.0 belatuk_pretty_logging: ^6.0.0
``` ```
## Usage ## Usage

View file

@ -1,11 +1,12 @@
name: belatuk_pretty_logging name: belatuk_pretty_logging
version: 5.0.0 version: 6.0.0
description: Standalone helper for colorful logging output, using pkg:io AnsiCode. description: Standalone helper for colorful logging output, using pkg:io AnsiCode.
homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/pretty_logging homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/pretty_logging
environment: environment:
sdk: '>=2.17.0 <3.0.0' sdk: '>=3.0.0 <4.0.0'
dependencies: dependencies:
io: ^1.0.0 io: ^1.0.0
logging: ^1.0.1 logging: ^1.0.1
dev_dependencies: dev_dependencies:
test: ^1.24.0
lints: ^2.0.0 lints: ^2.0.0

View file

@ -0,0 +1,8 @@
import 'package:test/test.dart';
void main() {
test('test', () {
var message = "Testing";
expect(message, equals('Testing'));
});
}

View file

@ -1,5 +1,13 @@
# Change Log # Change Log
## 6.0.0
* Require Dart >= 3.0
## 6.0.0-beta.1
* Require Dart >= 3.0
## 5.0.0 ## 5.0.0
* Require Dart >= 2.17 * Require Dart >= 2.17

View file

@ -14,10 +14,10 @@ Add `belatuk_pub_sub` as a dependency in your `pubspec.yaml` file:
```yaml ```yaml
dependencies: dependencies:
belatuk_pub_sub: ^5.0.0 belatuk_pub_sub: ^6.0.0
``` ```
Then, be sure to run `pub get` in your terminal. Then, be sure to run `dart pub get` in your terminal.
## Usage ## Usage

View file

@ -1,14 +1,14 @@
name: belatuk_pub_sub name: belatuk_pub_sub
version: 5.0.0 version: 6.0.0
description: Keep application instances in sync with a simple pub/sub API. description: Keep application instances in sync with a simple pub/sub API.
homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/pub_sub homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/pub_sub
environment: environment:
sdk: '>=2.17.0 <3.0.0' sdk: '>=3.0.0 <4.0.0'
dependencies: dependencies:
json_rpc_2: ^3.0.0 json_rpc_2: ^3.0.0
stream_channel: ^2.1.0 stream_channel: ^2.1.0
uuid: ^3.0.4 uuid: ^3.0.4
collection: ^1.15.0 collection: ^1.17.0
dev_dependencies: dev_dependencies:
lints: ^2.0.0 lints: ^2.0.0
test: ^1.17.4 test: ^1.24.0

View file

@ -1,5 +1,13 @@
# Change Log # Change Log
## 6.0.0
* Require Dart >= 3.0
## 6.0.0-beta.1
* Require Dart >= 3.0
## 5.0.0 ## 5.0.0
* Require Dart >= 2.17 * Require Dart >= 2.17

View file

@ -14,7 +14,7 @@ In your `pubspec.yaml`:
```yaml ```yaml
dependencies: dependencies:
belatuk_range_header: ^5.0.0 belatuk_range_header: ^6.0.0
``` ```
## Usage ## Usage

View file

@ -15,7 +15,9 @@ void handleRequest(HttpRequest request) async {
// Get info // Get info
header.items; header.items;
header.rangeUnit; header.rangeUnit;
header.items.forEach((item) => item.toContentRange(400)); for (var item in header.items) {
item.toContentRange(400);
}
// Serve the file // Serve the file
var transformer = var transformer =

View file

@ -1,7 +1,9 @@
import 'dart:async'; import 'dart:async';
import 'dart:collection'; import 'dart:collection';
import 'dart:convert'; import 'dart:convert';
import 'dart:io' show BytesBuilder; //import 'dart:io' hide BytesBuilder;
import 'dart:typed_data';
import 'dart:math'; import 'dart:math';
import 'package:async/async.dart'; import 'package:async/async.dart';
import 'package:charcode/ascii.dart'; import 'package:charcode/ascii.dart';

View file

@ -1,8 +1,8 @@
class RangeHeaderParseException extends FormatException { class RangeHeaderParseException extends FormatException {
@override //@override
final String message; //final String message;
RangeHeaderParseException(this.message); RangeHeaderParseException(super.message);
@override @override
String toString() => 'Range header parse exception: $message'; String toString() => 'Range header parse exception: $message';

View file

@ -9,7 +9,7 @@ import 'range_header_item.dart';
final RegExp _rgxInt = RegExp(r'[0-9]+'); final RegExp _rgxInt = RegExp(r'[0-9]+');
final RegExp _rgxWs = RegExp(r'[ \n\r\t]'); final RegExp _rgxWs = RegExp(r'[ \n\r\t]');
enum TokenType { RANGE_UNIT, COMMA, INT, DASH, EQUALS } enum TokenType { rangeUnit, comma, int, dash, equals }
class Token { class Token {
final TokenType type; final TokenType type;
@ -27,19 +27,19 @@ List<Token> scan(String text, List<String> allowedRangeUnits) {
scanner.scan(_rgxWs); scanner.scan(_rgxWs);
if (scanner.scanChar($comma)) { if (scanner.scanChar($comma)) {
tokens.add(Token(TokenType.COMMA, scanner.lastSpan)); tokens.add(Token(TokenType.comma, scanner.lastSpan));
} else if (scanner.scanChar($dash)) { } else if (scanner.scanChar($dash)) {
tokens.add(Token(TokenType.DASH, scanner.lastSpan)); tokens.add(Token(TokenType.dash, scanner.lastSpan));
} else if (scanner.scan(_rgxInt)) { } else if (scanner.scan(_rgxInt)) {
tokens.add(Token(TokenType.INT, scanner.lastSpan)); tokens.add(Token(TokenType.int, scanner.lastSpan));
} else if (scanner.scanChar($equal)) { } else if (scanner.scanChar($equal)) {
tokens.add(Token(TokenType.EQUALS, scanner.lastSpan)); tokens.add(Token(TokenType.equals, scanner.lastSpan));
} else { } else {
var matched = false; var matched = false;
for (var unit in allowedRangeUnits) { for (var unit in allowedRangeUnits) {
if (scanner.scan(unit)) { if (scanner.scan(unit)) {
tokens.add(Token(TokenType.RANGE_UNIT, scanner.lastSpan)); tokens.add(Token(TokenType.rangeUnit, scanner.lastSpan));
matched = true; matched = true;
break; break;
} }
@ -98,9 +98,9 @@ class Parser {
} }
RangeHeader? parseRangeHeader() { RangeHeader? parseRangeHeader() {
if (next(TokenType.RANGE_UNIT)) { if (next(TokenType.rangeUnit)) {
var unit = current!.span!.text; var unit = current!.span!.text;
next(TokenType.EQUALS); // Consume =, if any. next(TokenType.equals); // Consume =, if any.
var items = <RangeHeaderItem>[]; var items = <RangeHeaderItem>[];
var item = parseHeaderItem(); var item = parseHeaderItem();
@ -108,7 +108,7 @@ class Parser {
while (item != null) { while (item != null) {
items.add(item); items.add(item);
// Parse comma // Parse comma
if (next(TokenType.COMMA)) { if (next(TokenType.comma)) {
item = parseHeaderItem(); item = parseHeaderItem();
} else { } else {
item = null; item = null;
@ -126,11 +126,11 @@ class Parser {
} }
RangeHeaderItem? parseHeaderItem() { RangeHeaderItem? parseHeaderItem() {
if (next(TokenType.INT)) { if (next(TokenType.int)) {
// i.e 500-544, or 600- // i.e 500-544, or 600-
var start = int.parse(current!.span!.text); var start = int.parse(current!.span!.text);
if (next(TokenType.DASH)) { if (next(TokenType.dash)) {
if (next(TokenType.INT)) { if (next(TokenType.int)) {
return RangeHeaderItem(start, int.parse(current!.span!.text)); return RangeHeaderItem(start, int.parse(current!.span!.text));
} else { } else {
return RangeHeaderItem(start); return RangeHeaderItem(start);
@ -138,9 +138,9 @@ class Parser {
} else { } else {
throw _expected('"-"'); throw _expected('"-"');
} }
} else if (next(TokenType.DASH)) { } else if (next(TokenType.dash)) {
// i.e. -599 // i.e. -599
if (next(TokenType.INT)) { if (next(TokenType.int)) {
return RangeHeaderItem(-1, int.parse(current!.span!.text)); return RangeHeaderItem(-1, int.parse(current!.span!.text));
} else { } else {
throw _expected('integer'); throw _expected('integer');

View file

@ -1,18 +1,18 @@
name: belatuk_range_header name: belatuk_range_header
version: 5.0.0 version: 6.0.0
description: Range header parser for Dart. Beyond parsing, a stream transformer is included. description: Range header parser for Dart. Beyond parsing, a stream transformer is included.
homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/range_header homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/range_header
environment: environment:
sdk: '>=2.17.0 <3.0.0' sdk: '>=3.0.0 <4.0.0'
dependencies: dependencies:
async: ^2.6.0 async: ^2.11.0
charcode: ^1.2.0 charcode: ^1.3.0
quiver: ^3.0.1 quiver: ^3.2.0
source_span: ^1.8.1 source_span: ^1.10.0
string_scanner: ^1.1.0 string_scanner: ^1.2.0
dev_dependencies: dev_dependencies:
file: ^6.1.0 file: ^6.1.0
http_parser: ^4.0.0 http_parser: ^4.0.0
logging: ^1.0.1 logging: ^1.0.1
test: ^1.17.8 test: ^1.24.0
lints: ^2.0.0 lints: ^2.0.0

View file

@ -1,5 +1,13 @@
# Change Log # Change Log
## 5.0.0
* Require Dart >= 3.0
## 5.0.0-beta.1
* Require Dart >= 3.0
## 4.0.0 ## 4.0.0
* Require Dart >= 2.17 * Require Dart >= 2.17

View file

@ -12,8 +12,7 @@ and utilize basic memoization to speed up repeated lookups.
## Variables ## Variables
To represent a symbol, use `Variable`. I opted for the name To represent a symbol, use `Variable`. I opted for the name `Variable` to avoid conflict with the Dart primitive `Symbol`.
`Variable` to avoid conflict with the Dart primitive `Symbol`.
```dart ```dart
var foo = Variable<String>('foo'); var foo = Variable<String>('foo');

View file

@ -1,11 +1,11 @@
name: belatuk_symbol_table name: belatuk_symbol_table
version: 4.0.0 version: 5.0.0
description: A generic symbol table implementation in Dart, with support for scopes and constants. description: A generic symbol table implementation in Dart, with support for scopes and constants.
homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/symbol_table homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/symbol_table
environment: environment:
sdk: '>=2.17.0 <3.0.0' sdk: '>=3.0.0 <4.0.0'
dependencies: dependencies:
collection: ^1.15.0 collection: ^1.17.0
dev_dependencies: dev_dependencies:
test: ^1.17.4 test: ^1.24.0
lints: ^2.0.0 lints: ^2.0.0

View file

@ -1,5 +1,13 @@
# Change Log # Change Log
## 5.0.0
* Require Dart >= 3.0
## 5.0.0-beta.1
* Require Dart >= 3.0
## 4.0.0 ## 4.0.0
* Require Dart >= 2.17 * Require Dart >= 2.17

View file

@ -1,9 +1,9 @@
name: user_agent_analyzer name: user_agent_analyzer
version: 4.0.0 version: 5.0.0
description: A library to identify the type of devices and web browsers based on User-Agent string. description: A library to identify the type of devices and web browsers based on User-Agent string.
homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/user_agent homepage: https://github.com/dart-backend/belatuk-common-utilities/tree/main/packages/user_agent
environment: environment:
sdk: '>=2.17.0 <3.0.0' sdk: '>=3.0.0 <4.0.0'
dev_dependencies: dev_dependencies:
test: ^1.17.8 test: ^1.24.0
lints: ^2.0.0 lints: ^2.0.0

6
pubspec.yaml Normal file
View file

@ -0,0 +1,6 @@
name: belatuk_common_utilities_workspace
environment:
sdk: '>=2.18.0 <4.0.0'
dev_dependencies:
melos: ^3.0.0