Skip to content

Commit 625ed30

Browse files
authored
[native_assets_cli] Replace extension types with classes (#2251)
This PR replaces all extension types with classes. This PR renames all classes that mostly belong to another class to start with the name of that class. I'm not entirely satisfied with how this looks, but I think it's a step in the right direction. The Dart docs can be inspected by `pkgs/native_assets_cli$ dart doc .`. Open question: * Should we _not_ export all those helper classes? That would prevent users using these types in their code. But this would be considered a leaked symbol. So this probably doesn't work. * Should we not generate dartdocs for those helper classes. They usually simply have an `add`, `addAll` or `operator []`. The interesting doc comments are on the accessors that return those classes. Context: * Work before splitting up the package: #999
1 parent 33999d8 commit 625ed30

File tree

11 files changed

+151
-98
lines changed

11 files changed

+151
-98
lines changed

pkgs/native_assets_cli/lib/code_assets.dart

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,17 @@ export 'src/code_assets/code_asset.dart'
1313
export 'src/code_assets/config.dart'
1414
show
1515
AndroidCodeConfig,
16-
CodeAssetBuildOutputBuilder,
17-
CodeAssetBuildOutputBuilderAdd,
18-
CodeAssetHookConfig,
19-
CodeAssetLinkInput,
20-
CodeAssetLinkOutputBuilder,
21-
CodeAssetLinkOutputBuilderAdd,
16+
BuildOutputAssetsBuilderCode,
17+
BuildOutputCodeAssetBuilder,
18+
BuildOutputCodeAssets,
2219
CodeConfig,
20+
HookConfigCodeConfig,
2321
IOSCodeConfig,
22+
LinkInputCodeAssets,
23+
LinkOutputAssetsBuilderCode,
24+
LinkOutputCodeAssetBuilder,
25+
LinkOutputCodeAssets,
2426
MacOSCodeConfig;
25-
export 'src/code_assets/config.dart'
26-
show CodeAssetBuildOutput, CodeAssetLinkOutput;
2727
export 'src/code_assets/extension.dart';
2828
export 'src/code_assets/ios_sdk.dart' show IOSSdk;
2929
export 'src/code_assets/link_mode.dart'

pkgs/native_assets_cli/lib/data_assets.dart

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ library;
77

88
export 'src/data_assets/config.dart'
99
show
10-
AddDataAssetsDirectory,
11-
DataAssetBuildOutputBuilder,
12-
DataAssetBuildOutputBuilderAdd,
13-
DataAssetHookConfig,
14-
DataAssetLinkInput,
15-
DataAssetLinkOutputBuilder,
16-
DataAssetLinkOutputBuilderAdd;
17-
export 'src/data_assets/config.dart'
18-
show DataAssetBuildInputBuilder, DataAssetBuildOutput, DataAssetLinkOutput;
10+
BuildOutputAssetsBuilderData,
11+
BuildOutputBuilderAddDataAssetsDirectories,
12+
BuildOutputDataAssets,
13+
BuildOutputDataAssetsBuilder,
14+
HookConfigDataConfig,
15+
LinkInputDataAssets,
16+
LinkOutputAssetsBuilderData,
17+
LinkOutputDataAssets,
18+
LinkOutputDataAssetsBuilder;
1919
export 'src/data_assets/data_asset.dart' show DataAsset, EncodedDataAsset;
2020
export 'src/data_assets/extension.dart';

pkgs/native_assets_cli/lib/native_assets_cli.dart

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,30 @@ export 'src/config.dart'
1515
AssetRouting,
1616
BuildConfig,
1717
BuildConfigBuilder,
18-
BuildConfigBuilderSetup,
1918
BuildInput,
19+
BuildInputAssets,
2020
BuildInputBuilder,
21+
BuildInputMetadata,
2122
BuildOutput,
23+
BuildOutputAssets,
24+
BuildOutputAssetsBuilder,
2225
BuildOutputBuilder,
23-
EncodedAssetBuildOutputBuilder,
24-
EncodedAssetLinkOutputBuilder,
26+
BuildOutputMetadataBuilder,
2527
HookConfig,
2628
HookConfigBuilder,
2729
HookInput,
2830
HookInputBuilder,
31+
HookInputUserDefines,
2932
HookOutput,
3033
HookOutputBuilder,
3134
LinkConfig,
3235
LinkConfigBuilder,
3336
LinkInput,
37+
LinkInputAssets,
3438
LinkInputBuilder,
3539
LinkOutput,
40+
LinkOutputAssets,
41+
LinkOutputAssetsBuilder,
3642
LinkOutputBuilder,
3743
PackageMetadata,
3844
ToAppBundle,

pkgs/native_assets_cli/lib/src/api/builder.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55
import 'package:logging/logging.dart';
66

77
import '../config.dart';
8+
import 'build.dart';
89
import 'linker.dart';
910

10-
/// A builder to be run inside `hook/build.dart`.
11+
/// A builder to be run in [build] in `hook/build.dart`.
1112
///
1213
/// [Builder]s should be used to build native code, download assets, and
1314
/// transform assets. A build hook is only rerun when its declared

pkgs/native_assets_cli/lib/src/api/linker.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ import 'package:logging/logging.dart';
66

77
import '../config.dart';
88
import 'builder.dart';
9+
import 'link.dart';
910

10-
/// A builder to be run inside `hook/link.dart`.
11+
/// A builder to be run in [link] in `hook/link.dart`.
1112
///
1213
/// [Linker]s should be used to shrink or omit assets based on tree-shaking
1314
/// information. [Linker]s have access to tree-shaking information in some build

pkgs/native_assets_cli/lib/src/code_assets/code_asset.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ extension CodeAssetType on CodeAsset {
129129
static const String type = NativeCodeAssetNewSyntax.typeValue;
130130
}
131131

132+
/// Methods on [EncodedAsset] for [CodeAsset]s.
132133
extension EncodedCodeAsset on EncodedAsset {
133134
bool get isCodeAsset => type == CodeAssetType.type;
134135
CodeAsset get asCodeAsset => CodeAsset.fromEncoded(this);

pkgs/native_assets_cli/lib/src/code_assets/config.dart

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import 'syntax.g.dart';
1414

1515
/// Extension to the [HookConfig] providing access to configuration specific
1616
/// to code assets (only available if code assets are supported).
17-
extension CodeAssetHookConfig on HookConfig {
17+
extension HookConfigCodeConfig on HookConfig {
1818
/// Code asset specific configuration.
1919
CodeConfig get code => CodeConfig._fromJson(json, path);
2020

@@ -24,7 +24,7 @@ extension CodeAssetHookConfig on HookConfig {
2424
/// Extension to the [LinkInput] providing access to configuration specific to
2525
/// code assets as well as code asset inputs to the linker (only available if
2626
/// code assets are supported).
27-
extension CodeAssetLinkInput on LinkInputAssets {
27+
extension LinkInputCodeAssets on LinkInputAssets {
2828
// Returns the code assets that were sent to this linker.
2929
//
3030
// NOTE: If the linker implementation depends on the contents of the files the
@@ -138,16 +138,17 @@ final class MacOSCodeConfig {
138138
}
139139

140140
/// Extension on [BuildOutputBuilder] to add [CodeAsset]s.
141-
extension CodeAssetBuildOutputBuilder on EncodedAssetBuildOutputBuilder {
141+
extension BuildOutputAssetsBuilderCode on BuildOutputAssetsBuilder {
142142
/// Provides access to emitting code assets.
143-
CodeAssetBuildOutputBuilderAdd get code =>
144-
CodeAssetBuildOutputBuilderAdd._(this);
143+
BuildOutputCodeAssetBuilder get code => BuildOutputCodeAssetBuilder._(this);
145144
}
146145

147146
/// Extension on [BuildOutputBuilder] to add [CodeAsset]s.
148-
extension type CodeAssetBuildOutputBuilderAdd._(
149-
EncodedAssetBuildOutputBuilder _output
150-
) {
147+
final class BuildOutputCodeAssetBuilder {
148+
final BuildOutputAssetsBuilder _output;
149+
150+
BuildOutputCodeAssetBuilder._(this._output);
151+
151152
/// Adds the given [asset] to the hook output with [routing].
152153
void add(CodeAsset asset, {AssetRouting routing = const ToAppBundle()}) =>
153154
_output.addEncodedAsset(asset.encode(), routing: routing);
@@ -164,16 +165,17 @@ extension type CodeAssetBuildOutputBuilderAdd._(
164165
}
165166

166167
/// Extension on [LinkOutputBuilder] to add [CodeAsset]s.
167-
extension CodeAssetLinkOutputBuilder on EncodedAssetLinkOutputBuilder {
168+
extension LinkOutputAssetsBuilderCode on LinkOutputAssetsBuilder {
168169
/// Provides access to emitting code assets.
169-
CodeAssetLinkOutputBuilderAdd get code =>
170-
CodeAssetLinkOutputBuilderAdd._(this);
170+
LinkOutputCodeAssetBuilder get code => LinkOutputCodeAssetBuilder._(this);
171171
}
172172

173173
/// Extension on [LinkOutputBuilder] to add [CodeAsset]s.
174-
extension type CodeAssetLinkOutputBuilderAdd._(
175-
EncodedAssetLinkOutputBuilder _output
176-
) {
174+
final class LinkOutputCodeAssetBuilder {
175+
final LinkOutputAssetsBuilder _output;
176+
177+
LinkOutputCodeAssetBuilder._(this._output);
178+
177179
/// Adds the given [asset] to the link hook output.
178180
void add(CodeAsset asset) => _output.addEncodedAsset(asset.encode());
179181

@@ -210,18 +212,19 @@ extension CodeAssetBuildInputBuilder on HookConfigBuilder {
210212
}
211213
}
212214

213-
/// Provides access to [CodeAsset]s from a build hook output.
214-
extension CodeAssetBuildOutput on BuildOutputAssets {
215-
/// The code assets emitted by the build hook.
215+
/// The [CodeAsset]s in [BuildOutputAssets.encodedAssets].
216+
// TODO: Add access to assetsForBuild or assetsForLinking.
217+
extension BuildOutputCodeAssets on BuildOutputAssets {
218+
/// The [CodeAsset]s in this [BuildOutputAssets.encodedAssets].
216219
List<CodeAsset> get code => encodedAssets
217220
.where((asset) => asset.isCodeAsset)
218221
.map(CodeAsset.fromEncoded)
219222
.toList();
220223
}
221224

222-
/// Provides access to [CodeAsset]s from a link hook output.
223-
extension CodeAssetLinkOutput on LinkOutputAssets {
224-
/// The code assets emitted by the link hook.
225+
/// The [CodeAsset]s in [LinkOutputAssets.encodedAssets].
226+
extension LinkOutputCodeAssets on LinkOutputAssets {
227+
/// The [CodeAsset]s in this [LinkOutputAssets.encodedAssets].
225228
List<CodeAsset> get code => encodedAssets
226229
.where((asset) => asset.isCodeAsset)
227230
.map(CodeAsset.fromEncoded)

0 commit comments

Comments
 (0)