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

sea: support embedding assets #50960

Closed
wants to merge 5 commits into from
Closed

Commits on Jan 16, 2024

  1. src: print string content better in BlobDeserializer

    When it's a short string, print it inline, otherwise print it
    from a separate line. Also add the missing line breaks finally.
    joyeecheung committed Jan 16, 2024
    Configuration menu
    Copy the full SHA
    3cd0c4b View commit details
    Browse the repository at this point in the history
  2. sea: support embedding assets

    With this patch:
    
    Users can now include assets by adding a key-path dictionary
    to the configuration as the `assets` field. At build time, Node.js
    would read the assets from the specified paths and bundle them into
    the preparation blob. In the generated executable, users can retrieve
    the assets using the `sea.getAsset()` and `sea.getAssetAsBlob()` API.
    
    ```json
    {
      "main": "/path/to/bundled/script.js",
      "output": "/path/to/write/the/generated/blob.blob",
      "assets": {
        "a.jpg": "/path/to/a.jpg",
        "b.txt": "/path/to/b.txt"
      }
    }
    ```
    
    The single-executable application can access the assets as follows:
    
    ```cjs
    const { getAsset } = require('node:sea');
    // Returns a copy of the data in an ArrayBuffer
    const image = getAsset('a.jpg');
    // Returns a string decoded from the asset as UTF8.
    const text = getAsset('b.txt', 'utf8');
    // Returns a Blob containing the asset.
    const blob = getAssetAsBlob('a.jpg');
    ```
    
    Drive-by: update the  documentation to include a section dedicated
    to the injected main script and refer to it as "injected main
    script" instead of "injected module" because it's a script, not
    a module.
    joyeecheung committed Jan 16, 2024
    Configuration menu
    Copy the full SHA
    b4bc3be View commit details
    Browse the repository at this point in the history
  3. sea: support sea.getRawAsset()

    This patch adds support for `sea.getRawAsset()` which is
    similar to `sea.getAsset()` but returns the raw asset
    in an array buffer without copying. Users should avoid
    writing to the returned array buffer. If the injected
    section is not marked as writable or not aligned,
    writing to the raw asset is likely to result in a crash.
    joyeecheung committed Jan 16, 2024
    Configuration menu
    Copy the full SHA
    e58bdbf View commit details
    Browse the repository at this point in the history

Commits on Jan 31, 2024

  1. fixup! sea: support embedding assets

    Co-authored-by: Antoine du Hamel <duhamelantoine1995@gmail.com>
    joyeecheung and aduh95 authored Jan 31, 2024
    Configuration menu
    Copy the full SHA
    dd27a1d View commit details
    Browse the repository at this point in the history

Commits on Feb 1, 2024

  1. Configuration menu
    Copy the full SHA
    7030989 View commit details
    Browse the repository at this point in the history