Skip to content
This repository was archived by the owner on Sep 2, 2023. It is now read-only.
This repository was archived by the owner on Sep 2, 2023. It is now read-only.

Terminology: Loader Phases #204

Closed
Closed
@jkrems

Description

@jkrems

I'm not sure if this is a better fit for terminology or for a more implementation-focussed discussion. But I would suggest a separation of concerns when talking about module loading. The outcome would hopefully be a clear description of what happens when and what phases are responsible for which concerns.

One possible variant of this can be found here: https://github.com/jkrems/loader#module-loading

For ease of discussion, inlining the content below:

Module Loading

Module loading is split into three phases:

  1. Module resolution
  2. Resource fetching
  3. Module init

Module Resolution (resolve)

Given a specifier: string and referrerURL: string,
provide a url: string or a set of potential urls: string[] of a resource:

const resolve: (specifier: string, referrerURL: string) => string | string[];

Resource Fetching (fetch)

Given a resource url: string,
fetch the resource content and associated meta data.

type Resource = {
  bytes?: Buffer,
  contentType: string,
  contentTypeParameters?: string,
};

const fetch: (url: string) => Resource;

Module Init (init)

Given a resource: Resource and a target: Module module handle,
initialize the target.
Most implementations will check the resource.contentType
to select the appropriate behavior.

const init: (target: Module, resource: Resource, Module) => void;

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions