Skip to content

Commit 3d48b95

Browse files
committed
vfs: remove SEAProvider export and hasSeaAssets
Users should use sea.getVfs() from node:sea instead of creating SEAProvider directly. getVfs() returns null when not running as SEA, making hasSeaAssets() redundant. - Remove SEAProvider from node:vfs exports - Remove hasSeaAssets() from node:sea - Simplify embedding.js to just check getVfs() result - Update documentation and tests
1 parent 74133e8 commit 3d48b95

7 files changed

Lines changed: 3 additions & 80 deletions

File tree

doc/api/single-executable-applications.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -189,11 +189,10 @@ To use the VFS with SEA:
189189
const fs = require('node:fs');
190190
const sea = require('node:sea');
191191

192-
// Check if SEA assets are available
193-
if (sea.hasAssets()) {
194-
// Initialize and mount the SEA VFS
195-
const vfs = sea.getVfs();
192+
// Get the SEA VFS (returns null if not running as SEA)
193+
const vfs = sea.getVfs();
196194

195+
if (vfs) {
197196
// Now you can use standard fs APIs to read bundled assets
198197
const config = JSON.parse(fs.readFileSync('/sea/config.json', 'utf8'));
199198
const data = fs.readFileSync('/sea/data/file.txt');

doc/api/vfs.md

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -468,27 +468,6 @@ myVfs.provider.setReadOnly();
468468
// myVfs.writeFileSync('/app/config.json', 'new content');
469469
```
470470

471-
## Class: `SEAProvider`
472-
473-
<!-- YAML
474-
added: REPLACEME
475-
-->
476-
477-
The `SEAProvider` provides read-only access to assets bundled in a Single
478-
Executable Application (SEA). It can only be used when running as a SEA.
479-
480-
```cjs
481-
const { create, SEAProvider } = require('node:vfs');
482-
483-
// Only works in SEA builds
484-
try {
485-
const seaVfs = create(new SEAProvider());
486-
seaVfs.mount('/assets');
487-
} catch (err) {
488-
console.log('Not running as SEA');
489-
}
490-
```
491-
492471
## Class: `RealFSProvider`
493472

494473
<!-- YAML

lib/internal/vfs/sea.js

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -55,21 +55,7 @@ function getSeaVfs(options) {
5555
return cachedSeaVfs;
5656
}
5757

58-
/**
59-
* Checks if SEA VFS is available (i.e., running as SEA with assets).
60-
* @returns {boolean}
61-
*/
62-
function hasSeaAssets() {
63-
if (!isSea()) {
64-
return false;
65-
}
66-
const { getAssetKeys } = internalBinding('sea');
67-
const keys = getAssetKeys() || [];
68-
return keys.length > 0;
69-
}
70-
7158
module.exports = {
7259
createSeaVfs,
7360
getSeaVfs,
74-
hasSeaAssets,
7561
};

lib/sea.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ function getAssetKeys() {
8383

8484
const {
8585
getSeaVfs: getVfs,
86-
hasSeaAssets: hasAssets,
8786
} = require('internal/vfs/sea');
8887

8988
module.exports = {
@@ -93,5 +92,4 @@ module.exports = {
9392
getAssetAsBlob,
9493
getAssetKeys,
9594
getVfs,
96-
hasAssets,
9795
};

lib/vfs.js

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,10 @@
11
'use strict';
22

3-
const {
4-
codes: {
5-
ERR_INVALID_STATE,
6-
},
7-
} = require('internal/errors');
83
const { VirtualFileSystem } = require('internal/vfs/file_system');
94
const { VirtualProvider } = require('internal/vfs/provider');
105
const { MemoryProvider } = require('internal/vfs/providers/memory');
116
const { RealFSProvider } = require('internal/vfs/providers/real');
127

13-
// SEAProvider is lazy-loaded to avoid loading SEA bindings when not needed
14-
let SEAProvider;
15-
16-
function getSEAProvider() {
17-
if (SEAProvider === undefined) {
18-
try {
19-
SEAProvider = require('internal/vfs/providers/sea').SEAProvider;
20-
} catch {
21-
// SEA bindings not available (not running in SEA)
22-
SEAProvider = class SEAProviderUnavailable {
23-
constructor() {
24-
throw new ERR_INVALID_STATE('SEAProvider can only be used in a Single Executable Application');
25-
}
26-
};
27-
}
28-
}
29-
return SEAProvider;
30-
}
31-
328
/**
339
* Creates a new VirtualFileSystem instance.
3410
* @param {VirtualProvider} [provider] The provider to use (defaults to MemoryProvider)
@@ -54,7 +30,4 @@ module.exports = {
5430
VirtualProvider,
5531
MemoryProvider,
5632
RealFSProvider,
57-
get SEAProvider() {
58-
return getSEAProvider();
59-
},
6033
};

test/fixtures/sea/vfs/sea.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,6 @@ const fs = require('fs');
33
const sea = require('node:sea');
44
const assert = require('assert');
55

6-
// Test hasSeaAssets() returns true when we have assets
7-
const hasAssets = sea.hasAssets();
8-
assert.strictEqual(hasAssets, true, 'hasSeaAssets() should return true');
9-
console.log('hasSeaAssets:', hasAssets);
10-
116
// Test getSeaVfs() returns a VFS instance
127
const vfs = sea.getVfs();
138
assert.ok(vfs !== null, 'getSeaVfs() should not return null');

test/parallel/test-vfs-sea.js

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,6 @@ const sea = require('node:sea');
99

1010
// Test that SEA functions are exported from sea module
1111
assert.strictEqual(typeof sea.getVfs, 'function');
12-
assert.strictEqual(typeof sea.hasAssets, 'function');
13-
14-
// Test hasSeaAssets() returns false when not running as SEA
15-
{
16-
const hasAssets = sea.hasAssets();
17-
assert.strictEqual(hasAssets, false);
18-
}
1912

2013
// Test getSeaVfs() returns null when not running as SEA
2114
{

0 commit comments

Comments
 (0)