Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[v20.x backport] esm: use import attributes instead of import assertions #50183

Closed
wants to merge 6 commits into from

Commits on Oct 14, 2023

  1. module, esm: jsdoc for modules files

    PR-URL: nodejs#49523
    Reviewed-By: James M Snell <[email protected]>
    Reviewed-By: Yagiz Nizipli <[email protected]>
    GeoffreyBooth authored and aduh95 committed Oct 14, 2023
    Configuration menu
    Copy the full SHA
    39f107f View commit details
    Browse the repository at this point in the history
  2. esm: fix cache collision on JSON files using file: URL

    PR-URL: nodejs#49887
    Fixes: nodejs#49724
    Reviewed-By: Geoffrey Booth <[email protected]>
    Reviewed-By: LiviaMedeiros <[email protected]>
    Reviewed-By: Jacob Smith <[email protected]>
    Reviewed-By: Chemi Atlow <[email protected]>
    aduh95 committed Oct 14, 2023
    Configuration menu
    Copy the full SHA
    9577a00 View commit details
    Browse the repository at this point in the history

Commits on Oct 24, 2023

  1. deps: V8: cherry-pick a0fd3209dda8

    Original commit message:
    
        [import-attributes] Implement import attributes, with `assert` fallback
    
        In the past six months, the old import assertions proposal has been
        renamed to "import attributes" with the follwing major changes:
        1. the keyword is now `with` instead of `assert`
        2. unknown assertions cause an error rather than being ignored
    
        To preserve backward compatibility with existing applications that use
        `assert`, implementations _can_ keep it around as a fallback for both
        the static and dynamic forms.
    
        Additionally, the proposal has some minor changes that came up during
        the stage 3 reviews:
        3. dynamic import first reads all the attributes, and then verifies
           that they are all strings
        4. there is no need for a `[no LineTerminator here]` restriction before
           the `with` keyword
        5. static import syntax allows any `LiteralPropertyName` as attribute
           keys, to align with every other syntax using key-value pairs
    
        The new syntax is enabled by a new `--harmony-import-attributes` flag,
        disabled by default. However, the new behavioral changes also apply to
        the old syntax that is under the `--harmony-import-assertions` flag.
    
        This patch does implements (1), (3), (4) and (5). Handling of unknown
        import assertions was not implemented directly in V8, but delegated
        to embedders. As such, it will be implemented separately in d8 and
        Chromium.
    
        To simplify the review, this patch doesn't migrate usage of the term
        "assertions" to "attributes". There are many variables and internal
        functions that could be easily renamed as soon as this patch landes.
        There is one usage in the public API
        (`ModuleRequest::GetImportAssertions`) that will probably need to be
        aliased and then removed following the same process as for other API
        breaking changes.
    
        Bug: v8:13856
        Change-Id: I78b167348d898887332c5ca7468bc5d58cd9b1ca
        Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4632799
        Commit-Queue: Shu-yu Guo <[email protected]>
        Reviewed-by: Adam Klein <[email protected]>
        Cr-Commit-Position: refs/heads/main@{#89110}
    
    Refs: v8/v8@159c82c
    Refs: v8/v8@a0fd320
    aduh95 committed Oct 24, 2023
    Configuration menu
    Copy the full SHA
    0100c7b View commit details
    Browse the repository at this point in the history
  2. deps: V8: cherry-pick ea996ad04a68

    Original commit message:
    
        [import-attributes] Remove support for numeric keys
    
        During the 2023-09 TC39 meeting the proposal has been updated to remove support
        for bigint and float literals as import attribute keys, due to implementation
        difficulties in other engines and minimal added value for JS developers.
    
        GH issue: tc39/proposal-import-attributes#145
    
        Bug: v8:13856
        Change-Id: I0ede2bb10d6ca338a4b0870a1261ccbcd088c16f
        Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4899760
        Reviewed-by: Shu-yu Guo <[email protected]>
        Commit-Queue: Joyee Cheung <[email protected]>
        Cr-Commit-Position: refs/heads/main@{#90318}
    
    Refs: v8/v8@ea996ad
    aduh95 committed Oct 24, 2023
    Configuration menu
    Copy the full SHA
    ecb8bec View commit details
    Browse the repository at this point in the history
  3. esm: use import attributes instead of import assertions

    The old import assertions proposal has been
    renamed to "import attributes" with the follwing major changes:
    
    1. The keyword is now `with` instead of `assert`.
    2. Unknown assertions cause an error rather than being ignored,
    
    This commit updates the documentation to encourage folks to use the new
    syntax, and add aliases for module customization hooks.
    
    PR-URL: nodejs#50140
    Fixes: nodejs#50134
    Refs: v8/v8@159c82c
    Reviewed-By: Geoffrey Booth <[email protected]>
    Reviewed-By: Jacob Smith <[email protected]>
    Reviewed-By: Benjamin Gruenbaum <[email protected]>
    aduh95 committed Oct 24, 2023
    Configuration menu
    Copy the full SHA
    d22b640 View commit details
    Browse the repository at this point in the history
  4. vm: use import attributes instead of import assertions

    The old import assertions proposal has been
    renamed to "import attributes" with the following major changes:
    
    1. The keyword is now `with` instead of `assert`.
    2. Unknown assertions cause an error rather than being ignored.
    
    This PR updates the documentation to encourage folks to use the new
    syntax, and add aliases to preserve backward compatibility.
    
    PR-URL: nodejs#50141
    Reviewed-By: Geoffrey Booth <[email protected]>
    Reviewed-By: Vinícius Lourenço Claro Cardoso <[email protected]>
    aduh95 committed Oct 24, 2023
    Configuration menu
    Copy the full SHA
    edc1c4e View commit details
    Browse the repository at this point in the history