@loaders.gl/loader-utils 3.0.10 → 3.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es5/index.js +25 -7
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/json-loader.js +1 -1
- package/dist/es5/lib/binary-utils/array-buffer-utils.js +8 -4
- package/dist/es5/lib/binary-utils/array-buffer-utils.js.map +1 -1
- package/dist/es5/lib/binary-utils/buffer-utils.js +1 -1
- package/dist/es5/lib/binary-utils/buffer-utils.js.map +1 -1
- package/dist/es5/lib/filesystems/node-filesystem.js +267 -0
- package/dist/es5/lib/filesystems/node-filesystem.js.map +1 -0
- package/dist/es5/lib/node/{buffer-utils.node.js → buffer.js} +1 -1
- package/dist/es5/lib/node/buffer.js.map +1 -0
- package/dist/es5/lib/node/fs.js +22 -22
- package/dist/es5/lib/node/fs.js.map +1 -1
- package/dist/es5/lib/node/util.js +18 -0
- package/dist/es5/lib/node/util.js.map +1 -0
- package/dist/esm/index.js +8 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/json-loader.js +1 -1
- package/dist/esm/lib/binary-utils/array-buffer-utils.js +8 -4
- package/dist/esm/lib/binary-utils/array-buffer-utils.js.map +1 -1
- package/dist/esm/lib/binary-utils/buffer-utils.js +1 -1
- package/dist/esm/lib/binary-utils/buffer-utils.js.map +1 -1
- package/dist/esm/lib/filesystems/node-filesystem.js +60 -0
- package/dist/esm/lib/filesystems/node-filesystem.js.map +1 -0
- package/dist/esm/lib/node/{buffer-utils.node.js → buffer.js} +1 -1
- package/dist/esm/lib/node/buffer.js.map +1 -0
- package/dist/esm/lib/node/fs.js +12 -14
- package/dist/esm/lib/node/fs.js.map +1 -1
- package/dist/esm/lib/node/util.js +3 -0
- package/dist/esm/lib/node/util.js.map +1 -0
- package/dist/esm/lib/parser-utils/parse-json.js +1 -1
- package/dist/esm/lib/parser-utils/parse-json.js.map +1 -1
- package/dist/esm/lib/path-utils/file-aliases.js +1 -1
- package/dist/esm/lib/path-utils/file-aliases.js.map +1 -1
- package/dist/esm/lib/path-utils/path.js +2 -2
- package/dist/esm/lib/path-utils/path.js.map +1 -1
- package/dist/esm/lib/worker-loader-utils/create-loader-worker.js +1 -1
- package/dist/esm/lib/worker-loader-utils/create-loader-worker.js.map +1 -1
- package/dist/esm/lib/worker-loader-utils/parse-with-worker.js +1 -1
- package/dist/esm/lib/worker-loader-utils/parse-with-worker.js.map +1 -1
- package/package.json +11 -7
- package/src/index.ts +26 -8
- package/src/lib/binary-utils/array-buffer-utils.ts +8 -5
- package/src/lib/binary-utils/buffer-utils.ts +1 -1
- package/src/lib/filesystems/node-filesystem.ts +79 -0
- package/src/lib/node/{buffer-utils.node.ts → buffer.ts} +0 -0
- package/src/lib/node/fs.ts +29 -13
- package/src/lib/node/util.ts +4 -0
- package/dist/es5/lib/node/buffer-utils.node.js.map +0 -1
- package/dist/esm/lib/node/buffer-utils.node.js.map +0 -1
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import * as fs from '../node/fs';
|
|
2
|
+
import {IFileSystem, IRandomAccessReadFileSystem} from '@loaders.gl/loader-utils';
|
|
3
|
+
// import {fetchFile} from "../fetch/fetch-file"
|
|
4
|
+
// import {selectLoader} from "../api/select-loader";
|
|
5
|
+
|
|
6
|
+
type Stat = {
|
|
7
|
+
size: number;
|
|
8
|
+
isDirectory: () => boolean;
|
|
9
|
+
info?: fs.Stats;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
type ReadOptions = {
|
|
13
|
+
buffer?: Buffer;
|
|
14
|
+
offset?: number;
|
|
15
|
+
length?: number;
|
|
16
|
+
position?: number;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* FileSystem pass-through for Node.js
|
|
21
|
+
* Compatible with BrowserFileSystem.
|
|
22
|
+
* @param options
|
|
23
|
+
*/
|
|
24
|
+
export default class NodeFileSystem implements IFileSystem, IRandomAccessReadFileSystem {
|
|
25
|
+
// implements IFileSystem
|
|
26
|
+
constructor(options: {[key: string]: any}) {
|
|
27
|
+
this.fetch = options._fetch;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
async readdir(dirname = '.', options?: {}): Promise<any[]> {
|
|
31
|
+
return await fs.readdir(dirname, options);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
async stat(path: string, options?: {}): Promise<Stat> {
|
|
35
|
+
const info = await fs.stat(path, options);
|
|
36
|
+
return {size: Number(info.size), isDirectory: () => false, info};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async fetch(path: string, options: {[key: string]: any}) {
|
|
40
|
+
// Falls back to handle https:/http:/data: etc fetches
|
|
41
|
+
// eslint-disable-next-line
|
|
42
|
+
const fallbackFetch = options.fetch || this.fetch;
|
|
43
|
+
return fallbackFetch(path, options);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// implements IRandomAccessFileSystem
|
|
47
|
+
async open(path: string, flags: string | number, mode?: any): Promise<number> {
|
|
48
|
+
return await fs.open(path, flags);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
async close(fd: number): Promise<void> {
|
|
52
|
+
return await fs.close(fd);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
async fstat(fd: number): Promise<Stat> {
|
|
56
|
+
const info = await fs.fstat(fd);
|
|
57
|
+
return info;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
async read(
|
|
61
|
+
fd: number,
|
|
62
|
+
// @ts-ignore Possibly null
|
|
63
|
+
{buffer = null, offset = 0, length = buffer.byteLength, position = null}: ReadOptions
|
|
64
|
+
): Promise<{bytesRead: number; buffer: Buffer}> {
|
|
65
|
+
let totalBytesRead = 0;
|
|
66
|
+
// Read in loop until we get required number of bytes
|
|
67
|
+
while (totalBytesRead < length) {
|
|
68
|
+
const {bytesRead} = await fs.read(
|
|
69
|
+
fd,
|
|
70
|
+
buffer,
|
|
71
|
+
offset + totalBytesRead,
|
|
72
|
+
length - totalBytesRead,
|
|
73
|
+
position + totalBytesRead
|
|
74
|
+
);
|
|
75
|
+
totalBytesRead += bytesRead;
|
|
76
|
+
}
|
|
77
|
+
return {bytesRead: totalBytesRead, buffer};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
File without changes
|
package/src/lib/node/fs.ts
CHANGED
|
@@ -1,22 +1,38 @@
|
|
|
1
1
|
// fs wrapper (promisified fs + avoids bundling fs in browsers)
|
|
2
2
|
import fs from 'fs';
|
|
3
|
-
import {toArrayBuffer} from './buffer
|
|
4
|
-
import {promisify} from 'util';
|
|
3
|
+
import {toArrayBuffer} from './buffer';
|
|
4
|
+
import {promisify} from './util';
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
throw new Error(`${fsFunction} not available in browser`);
|
|
8
|
-
};
|
|
6
|
+
export type {Stats} from 'fs';
|
|
9
7
|
|
|
10
|
-
|
|
8
|
+
// paths
|
|
9
|
+
|
|
10
|
+
/** Wrapper for Node.js fs method */
|
|
11
|
+
export const readdir = promisify(fs.readdir);
|
|
12
|
+
/** Wrapper for Node.js fs method */
|
|
13
|
+
export const stat = promisify(fs.stat);
|
|
14
|
+
|
|
15
|
+
/** Wrapper for Node.js fs method */
|
|
16
|
+
export const readFile = promisify(fs.readFile);
|
|
17
|
+
/** Wrapper for Node.js fs method */
|
|
18
|
+
export const readFileSync = fs.readFileSync;
|
|
19
|
+
/** Wrapper for Node.js fs method */
|
|
20
|
+
export const writeFile = promisify(fs.writeFile);
|
|
21
|
+
/** Wrapper for Node.js fs method */
|
|
22
|
+
export const writeFileSync = fs.writeFileSync;
|
|
11
23
|
|
|
12
|
-
|
|
13
|
-
export const close = fs?.close ? promisify(fs.close) : error('fs.close');
|
|
14
|
-
export const read = fs?.read ? promisify(fs.read) : error('fs.read');
|
|
24
|
+
// file descriptors
|
|
15
25
|
|
|
16
|
-
|
|
17
|
-
export const
|
|
18
|
-
|
|
19
|
-
export const
|
|
26
|
+
/** Wrapper for Node.js fs method */
|
|
27
|
+
export const open = promisify(fs.open);
|
|
28
|
+
/** Wrapper for Node.js fs method */
|
|
29
|
+
export const close = promisify(fs.close);
|
|
30
|
+
/** Wrapper for Node.js fs method */
|
|
31
|
+
export const read = promisify(fs.read);
|
|
32
|
+
/** Wrapper for Node.js fs method */
|
|
33
|
+
export const fstat = promisify(fs.fstat);
|
|
34
|
+
|
|
35
|
+
export const isSupported = Boolean(fs);
|
|
20
36
|
|
|
21
37
|
export async function _readToArrayBuffer(fd: number, start: number, length: number) {
|
|
22
38
|
const buffer = Buffer.alloc(length);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/node/buffer-utils.node.ts"],"names":["toArrayBuffer","buffer","Buffer","isBuffer","typedArray","Uint8Array","toBuffer","binaryData","ArrayBuffer","isView","byteLength","view","i","length"],"mappings":";;;;;;;;AAGA;;AAKO,SAASA,aAAT,CAAuBC,MAAvB,EAA+B;AAEpC,MAAIC,MAAM,CAACC,QAAP,CAAgBF,MAAhB,CAAJ,EAA6B;AAC3B,QAAMG,UAAU,GAAG,IAAIC,UAAJ,CAAeJ,MAAf,CAAnB;AACA,WAAOG,UAAU,CAACH,MAAlB;AACD;;AACD,SAAOA,MAAP;AACD;;AAKM,SAASK,QAAT,CAAkBC,UAAlB,EAA8B;AACnC,MAAIC,WAAW,CAACC,MAAZ,CAAmBF,UAAnB,CAAJ,EAAoC;AAClCA,IAAAA,UAAU,GAAGA,UAAU,CAACN,MAAxB;AACD;;AAED,MAAI,OAAOC,MAAP,KAAkB,WAAlB,IAAiCK,UAAU,YAAYC,WAA3D,EAAwE;AACtE,QAAMP,MAAM,GAAG,IAAIC,MAAJ,CAAWK,UAAU,CAACG,UAAtB,CAAf;AACA,QAAMC,IAAI,GAAG,IAAIN,UAAJ,CAAeE,UAAf,CAAb;;AACA,SAAK,IAAIK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGX,MAAM,CAACY,MAA3B,EAAmC,EAAED,CAArC,EAAwC;AACtCX,MAAAA,MAAM,CAACW,CAAD,CAAN,GAAYD,IAAI,CAACC,CAAD,CAAhB;AACD;;AACD,WAAOX,MAAP;AACD;;AAED,SAAO,oBAAO,KAAP,CAAP;AACD","sourcesContent":["// Isolates Buffer references to ensure they are only bundled under Node.js (avoids big webpack polyfill)\n// this file is not visible to webpack (it is excluded in the package.json \"browser\" field).\n\nimport {assert} from '../env-utils/assert';\n\n/**\n * Convert Buffer to ArrayBuffer\n */\nexport function toArrayBuffer(buffer) {\n // TODO - per docs we should just be able to call buffer.buffer, but there are issues\n if (Buffer.isBuffer(buffer)) {\n const typedArray = new Uint8Array(buffer);\n return typedArray.buffer;\n }\n return buffer;\n}\n\n/**\n * Convert (copy) ArrayBuffer to Buffer\n */\nexport function toBuffer(binaryData) {\n if (ArrayBuffer.isView(binaryData)) {\n binaryData = binaryData.buffer;\n }\n\n if (typeof Buffer !== 'undefined' && binaryData instanceof ArrayBuffer) {\n const buffer = new Buffer(binaryData.byteLength);\n const view = new Uint8Array(binaryData);\n for (let i = 0; i < buffer.length; ++i) {\n buffer[i] = view[i];\n }\n return buffer;\n }\n\n return assert(false);\n}\n"],"file":"buffer-utils.node.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/node/buffer-utils.node.ts"],"names":["assert","toArrayBuffer","buffer","Buffer","isBuffer","typedArray","Uint8Array","toBuffer","binaryData","ArrayBuffer","isView","byteLength","view","i","length"],"mappings":"AAGA,SAAQA,MAAR,QAAqB,qBAArB;AAKA,OAAO,SAASC,aAAT,CAAuBC,MAAvB,EAA+B;AAEpC,MAAIC,MAAM,CAACC,QAAP,CAAgBF,MAAhB,CAAJ,EAA6B;AAC3B,UAAMG,UAAU,GAAG,IAAIC,UAAJ,CAAeJ,MAAf,CAAnB;AACA,WAAOG,UAAU,CAACH,MAAlB;AACD;;AACD,SAAOA,MAAP;AACD;AAKD,OAAO,SAASK,QAAT,CAAkBC,UAAlB,EAA8B;AACnC,MAAIC,WAAW,CAACC,MAAZ,CAAmBF,UAAnB,CAAJ,EAAoC;AAClCA,IAAAA,UAAU,GAAGA,UAAU,CAACN,MAAxB;AACD;;AAED,MAAI,OAAOC,MAAP,KAAkB,WAAlB,IAAiCK,UAAU,YAAYC,WAA3D,EAAwE;AACtE,UAAMP,MAAM,GAAG,IAAIC,MAAJ,CAAWK,UAAU,CAACG,UAAtB,CAAf;AACA,UAAMC,IAAI,GAAG,IAAIN,UAAJ,CAAeE,UAAf,CAAb;;AACA,SAAK,IAAIK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGX,MAAM,CAACY,MAA3B,EAAmC,EAAED,CAArC,EAAwC;AACtCX,MAAAA,MAAM,CAACW,CAAD,CAAN,GAAYD,IAAI,CAACC,CAAD,CAAhB;AACD;;AACD,WAAOX,MAAP;AACD;;AAED,SAAOF,MAAM,CAAC,KAAD,CAAb;AACD","sourcesContent":["// Isolates Buffer references to ensure they are only bundled under Node.js (avoids big webpack polyfill)\n// this file is not visible to webpack (it is excluded in the package.json \"browser\" field).\n\nimport {assert} from '../env-utils/assert';\n\n/**\n * Convert Buffer to ArrayBuffer\n */\nexport function toArrayBuffer(buffer) {\n // TODO - per docs we should just be able to call buffer.buffer, but there are issues\n if (Buffer.isBuffer(buffer)) {\n const typedArray = new Uint8Array(buffer);\n return typedArray.buffer;\n }\n return buffer;\n}\n\n/**\n * Convert (copy) ArrayBuffer to Buffer\n */\nexport function toBuffer(binaryData) {\n if (ArrayBuffer.isView(binaryData)) {\n binaryData = binaryData.buffer;\n }\n\n if (typeof Buffer !== 'undefined' && binaryData instanceof ArrayBuffer) {\n const buffer = new Buffer(binaryData.byteLength);\n const view = new Uint8Array(binaryData);\n for (let i = 0; i < buffer.length; ++i) {\n buffer[i] = view[i];\n }\n return buffer;\n }\n\n return assert(false);\n}\n"],"file":"buffer-utils.node.js"}
|