docs: def modname_source_to_target(self, spec, modname, source):
          """
          Create a target file name from the input module name and its
          source file name.  The result should be a path relative to the
          build_dir, and this is derived directly from the modname with NO
          implicit convers of path separators (i.e. '/' or any other) into
          a system or OS specific form (e.g. '\\').  The rationale for
          this choice is that there exists Node.js/JavaScript tools that
          handle this internally and/or these paths and values are
          directly exposed on the web and thus these separators must be
          preserved.
  
          If the specific implementation requires this to be done,
          implementations may override by wrapping the result of this
          using os.path.normpath.  For the generation of transpile write
          targets, this will be done in _generate_transpile_target.
  
          Default is to append the module name with the filename_suffix
          assigned to this instance (setup by setup_filename_suffix), iff
          the provided source also end with this filename suffix.
  
          However, certain tools have issues dealing with loader plugin
          syntaxes showing up on the filesystem (and certain filesystems
          definitely do not like some of the characters), so the usage of
          the loaderplugin registry assigned to the spec may be used for
          lookup if available.
  
          Called by generator method `_gen_modname_source_target_modpath`.
          """
  
          loaderplugin_registry = spec.get(CALMJS_LOADERPLUGIN_REGISTRY)
          if '!' in modname and loaderplugin_registry:
              handler = loaderplugin_registry.get(modname)
              if handler:
                  return handler.modname_source_to_target(
                      self, spec, modname, source)
  
          if (source.endswith(self.filename_suffix) and
                  not modname.endswith(self.filename_suffix)):
              return modname + self.filename_suffix
          else:
              # assume that modname IS the filename
              return modname