encodeModule method

({List<Module> importStubs, Module module}) encodeModule(
  1. String source, {
  2. required String moduleName,
  3. Map<String, String> uriToModuleOverrides = const {},
})

Encode Dart source into a single ball Module, accumulating used base-function names for later use by buildStdModules.

Unlike encode, this does not reset _usedBaseFunctions, so you can call it for every file in a package and then call buildStdModules once to obtain consolidated std modules for the whole package.

moduleName is the ball module name to assign (e.g. 'lib.src.utils').

uriToModuleOverrides maps raw import URI strings to ball module names, allowing relative and same-package imports to resolve correctly across files. For example:

{'src/models.dart': 'lib.src.models', '../utils.dart': 'lib.utils'}

Returns the encoded Module plus any external-import stub modules that were not covered by uriToModuleOverrides.

Implementation

({Module module, List<Module> importStubs}) encodeModule(
  String source, {
  required String moduleName,
  Map<String, String> uriToModuleOverrides = const {},
}) {
  final result = parseString(
    content: source,
    throwIfDiagnostics: false,
    featureSet: FeatureSet.latestLanguageVersion(),
  );
  return encodeModuleFromUnit(
    result.unit,
    moduleName: moduleName,
    uriToModuleOverrides: uriToModuleOverrides,
  );
}