| Index: sdk/lib/_internal/pub_generated/lib/src/dart.dart
|
| diff --git a/sdk/lib/_internal/pub_generated/lib/src/dart.dart b/sdk/lib/_internal/pub_generated/lib/src/dart.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..41e12bfe246511ca0ace800c92e5d070ee46f41d
|
| --- /dev/null
|
| +++ b/sdk/lib/_internal/pub_generated/lib/src/dart.dart
|
| @@ -0,0 +1,107 @@
|
| +library pub.dart;
|
| +import 'dart:async';
|
| +import 'dart:isolate';
|
| +import 'package:analyzer/analyzer.dart';
|
| +import 'package:path/path.dart' as path;
|
| +import 'package:stack_trace/stack_trace.dart';
|
| +import 'file:///Users/rnystrom/dev/dart/dart/sdk/lib/_internal/compiler/compiler.dart' as compiler;
|
| +import 'file:///Users/rnystrom/dev/dart/dart/sdk/lib/_internal/compiler/implementation/filenames.dart' show appendSlash;
|
| +import '../../asset/dart/serialize.dart';
|
| +import 'io.dart';
|
| +import 'utils.dart';
|
| +abstract class CompilerProvider {
|
| + Uri get libraryRoot;
|
| + Future provideInput(Uri uri);
|
| + void handleDiagnostic(Uri uri, int begin, int end, String message,
|
| + compiler.Diagnostic kind);
|
| + EventSink<String> provideOutput(String name, String extension);
|
| +}
|
| +Future compile(String entrypoint, CompilerProvider provider,
|
| + {Iterable<String> commandLineOptions, bool checked: false, bool csp: false,
|
| + bool minify: true, bool verbose: false, Map<String, String> environment,
|
| + String packageRoot, bool analyzeAll: false, bool suppressWarnings: false,
|
| + bool suppressHints: false, bool suppressPackageWarnings: true, bool terse:
|
| + false, bool includeSourceMapUrls: false, bool toDart: false}) {
|
| + return syncFuture(() {
|
| + var options = <String>['--categories=Client,Server'];
|
| + if (checked) options.add('--enable-checked-mode');
|
| + if (csp) options.add('--csp');
|
| + if (minify) options.add('--minify');
|
| + if (verbose) options.add('--verbose');
|
| + if (analyzeAll) options.add('--analyze-all');
|
| + if (suppressWarnings) options.add('--suppress-warnings');
|
| + if (suppressHints) options.add('--suppress-hints');
|
| + if (!suppressPackageWarnings) options.add('--show-package-warnings');
|
| + if (terse) options.add('--terse');
|
| + if (toDart) options.add('--output-type=dart');
|
| + var sourceUrl = path.toUri(entrypoint);
|
| + options.add("--out=$sourceUrl.js");
|
| + if (includeSourceMapUrls) {
|
| + options.add("--source-map=$sourceUrl.js.map");
|
| + }
|
| + if (environment == null) environment = {};
|
| + if (commandLineOptions != null) options.addAll(commandLineOptions);
|
| + if (packageRoot == null) {
|
| + packageRoot = path.join(path.dirname(entrypoint), 'packages');
|
| + }
|
| + return Chain.track(
|
| + compiler.compile(
|
| + path.toUri(entrypoint),
|
| + provider.libraryRoot,
|
| + path.toUri(appendSlash(packageRoot)),
|
| + provider.provideInput,
|
| + provider.handleDiagnostic,
|
| + options,
|
| + provider.provideOutput,
|
| + environment));
|
| + });
|
| +}
|
| +bool isEntrypoint(CompilationUnit dart) {
|
| + return dart.declarations.any((node) {
|
| + return node is FunctionDeclaration &&
|
| + node.name.name == "main" &&
|
| + node.functionExpression.parameters.parameters.length <= 2;
|
| + });
|
| +}
|
| +List<UriBasedDirective> parseImportsAndExports(String contents, {String name}) {
|
| + var collector = new _DirectiveCollector();
|
| + parseDirectives(contents, name: name).accept(collector);
|
| + return collector.directives;
|
| +}
|
| +class _DirectiveCollector extends GeneralizingAstVisitor {
|
| + final directives = <UriBasedDirective>[];
|
| + visitUriBasedDirective(UriBasedDirective node) => directives.add(node);
|
| +}
|
| +Future runInIsolate(String code, message) {
|
| + return withTempDir((dir) {
|
| + var dartPath = path.join(dir, 'runInIsolate.dart');
|
| + writeTextFile(dartPath, code, dontLogContents: true);
|
| + var port = new ReceivePort();
|
| + return Chain.track(Isolate.spawn(_isolateBuffer, {
|
| + 'replyTo': port.sendPort,
|
| + 'uri': path.toUri(dartPath).toString(),
|
| + 'message': message
|
| + })).then((_) => port.first).then((response) {
|
| + if (response['type'] == 'success') return null;
|
| + assert(response['type'] == 'error');
|
| + return new Future.error(
|
| + new CrossIsolateException.deserialize(response['error']),
|
| + new Chain.current());
|
| + });
|
| + });
|
| +}
|
| +void _isolateBuffer(message) {
|
| + var replyTo = message['replyTo'];
|
| + Chain.track(
|
| + Isolate.spawnUri(
|
| + Uri.parse(message['uri']),
|
| + [],
|
| + message['message'])).then((_) => replyTo.send({
|
| + 'type': 'success'
|
| + })).catchError((e, stack) {
|
| + replyTo.send({
|
| + 'type': 'error',
|
| + 'error': CrossIsolateException.serialize(e, stack)
|
| + });
|
| + });
|
| +}
|
|
|