sea: implement sea.getAssetKeys() · nodejs/node@0bf9775

@@ -221,7 +221,10 @@ executable, users can retrieve the assets using the [`sea.getAsset()`][] and

221221

The single-executable application can access the assets as follows:

222222223223

```cjs

224-

const { getAsset, getAssetAsBlob, getRawAsset } = require('node:sea');

224+

const { getAsset, getAssetAsBlob, getRawAsset, getAssetKeys } = require('node:sea');

225+

// Get all asset keys.

226+

const keys = getAssetKeys();

227+

console.log(keys); // ['a.jpg', 'b.txt']

225228

// Returns a copy of the data in an ArrayBuffer.

226229

const image = getAsset('a.jpg');

227230

// Returns a string decoded from the asset as UTF8.

@@ -232,8 +235,8 @@ const blob = getAssetAsBlob('a.jpg');

232235

const raw = getRawAsset('a.jpg');

233236

```

234237235-

See documentation of the [`sea.getAsset()`][], [`sea.getAssetAsBlob()`][] and [`sea.getRawAsset()`][]

236-

APIs for more information.

238+

See documentation of the [`sea.getAsset()`][], [`sea.getAssetAsBlob()`][],

239+

[`sea.getRawAsset()`][] and [`sea.getAssetKeys()`][] APIs for more information.

237240238241

### Startup snapshot support

239242

@@ -429,6 +432,19 @@ writes to the returned array buffer is likely to result in a crash.

429432

`assets` field in the single-executable application configuration.

430433

* Returns: {ArrayBuffer}

431434435+

### `sea.getAssetKeys()`

436+437+

<!-- YAML

438+

added: REPLACEME

439+

-->

440+441+

* Returns {string\[]} An array containing all the keys of the assets

442+

embedded in the executable. If no assets are embedded, returns an empty array.

443+444+

This method can be used to retrieve an array of all the keys of assets

445+

embedded into the single-executable application.

446+

An error is thrown when not running inside a single-executable application.

447+432448

### `require(id)` in the injected main script is not file based

433449434450

`require()` in the injected main script is not the same as the [`require()`][]

@@ -503,6 +519,7 @@ to help us document them.

503519

[`require.main`]: modules.md#accessing-the-main-module

504520

[`sea.getAsset()`]: #seagetassetkey-encoding

505521

[`sea.getAssetAsBlob()`]: #seagetassetasblobkey-options

522+

[`sea.getAssetKeys()`]: #seagetassetkeys

506523

[`sea.getRawAsset()`]: #seagetrawassetkey

507524

[`v8.startupSnapshot.setDeserializeMainFunction()`]: v8.md#v8startupsnapshotsetdeserializemainfunctioncallback-data

508525

[`v8.startupSnapshot` API]: v8.md#startup-snapshot-api