registerResourceModule function

void registerResourceModule(
  1. String resourceName,
  2. ResourceFactory factory
)

Make a resource family reachable as client.resourceByName(resourceName).

Implementation

void registerResourceModule(String resourceName, ResourceFactory factory) {
  if (resourceName.startsWith('_') ||
      !_identifier.hasMatch(resourceName) ||
      _reservedWords.contains(resourceName)) {
    throw SdkUsageError(
        "cannot register resource '$resourceName': a resource name must be a "
        'Dart identifier that is not a reserved word and does not start with an '
        'underscore, or no lookup could ever reach it - pick another name');
  }
  if (_clientMemberNames.contains(resourceName)) {
    throw SdkUsageError(
        "cannot register resource '$resourceName': ExsitedClient already "
        'has a member of that name, and it would win every lookup - pick '
        'another name');
  }
  final registered = _resourceModules[resourceName];
  if (registered != null && registered != factory) {
    // Re-registering the same factory is a no-op; a different one is refused.
    throw SdkUsageError(
        "cannot register resource '$resourceName': it is already registered "
        'against a different factory, and clients built before the change would '
        'keep the old one - pick another name');
  }
  _resourceModules[resourceName] = factory;
}