cspell-io 7.0.1 → 7.0.2
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/esm/common/arrayBuffers.d.ts +1 -1
- package/dist/esm/node/dataUrl.d.ts +1 -1
- package/dist/esm/node/file/FetchError.d.ts +1 -1
- package/dist/esm/node/file/fetch.d.ts +3 -4
- package/dist/esm/node/file/fetch.js +5 -1
- package/dist/esm/requests/RequestFsReadFile.d.ts +1 -1
- package/dist/esm/requests/RequestFsReadFileSync.d.ts +1 -1
- package/dist/esm/requests/RequestZlibInflate.d.ts +1 -1
- package/package.json +10 -12
- package/dist/cjs/CSpellIO.d.ts +0 -69
- package/dist/cjs/CSpellIO.js +0 -3
- package/dist/cjs/CSpellIONode.d.ts +0 -20
- package/dist/cjs/CSpellIONode.js +0 -81
- package/dist/cjs/CSpellIOWeb.d.ts +0 -15
- package/dist/cjs/CSpellIOWeb.js +0 -36
- package/dist/cjs/async/asyncIterable.d.ts +0 -6
- package/dist/cjs/async/asyncIterable.js +0 -16
- package/dist/cjs/common/BufferEncoding.d.ts +0 -4
- package/dist/cjs/common/BufferEncoding.js +0 -3
- package/dist/cjs/common/arrayBuffers.d.ts +0 -17
- package/dist/cjs/common/arrayBuffers.js +0 -45
- package/dist/cjs/common/encode-decode.d.ts +0 -11
- package/dist/cjs/common/encode-decode.js +0 -85
- package/dist/cjs/common/stat.d.ts +0 -9
- package/dist/cjs/common/stat.js +0 -19
- package/dist/cjs/common/transformers.d.ts +0 -6
- package/dist/cjs/common/transformers.js +0 -71
- package/dist/cjs/errors/ErrorNotImplemented.d.ts +0 -5
- package/dist/cjs/errors/ErrorNotImplemented.js +0 -11
- package/dist/cjs/errors/error.d.ts +0 -2
- package/dist/cjs/errors/error.js +0 -14
- package/dist/cjs/errors/index.d.ts +0 -3
- package/dist/cjs/errors/index.js +0 -8
- package/dist/cjs/file/file.d.ts +0 -6
- package/dist/cjs/file/file.js +0 -29
- package/dist/cjs/file/index.d.ts +0 -3
- package/dist/cjs/file/index.js +0 -13
- package/dist/cjs/handlers/node/file.d.ts +0 -3
- package/dist/cjs/handlers/node/file.js +0 -173
- package/dist/cjs/index.d.ts +0 -7
- package/dist/cjs/index.js +0 -20
- package/dist/cjs/models/BufferEncoding.d.ts +0 -2
- package/dist/cjs/models/BufferEncoding.js +0 -3
- package/dist/cjs/models/FileResource.d.ts +0 -35
- package/dist/cjs/models/FileResource.js +0 -3
- package/dist/cjs/models/Stats.d.ts +0 -18
- package/dist/cjs/models/Stats.js +0 -6
- package/dist/cjs/models/index.d.ts +0 -2
- package/dist/cjs/models/index.js +0 -3
- package/dist/cjs/node/dataUrl.d.ts +0 -27
- package/dist/cjs/node/dataUrl.js +0 -116
- package/dist/cjs/node/file/FetchError.d.ts +0 -9
- package/dist/cjs/node/file/FetchError.js +0 -21
- package/dist/cjs/node/file/fetch.d.ts +0 -7
- package/dist/cjs/node/file/fetch.js +0 -23
- package/dist/cjs/node/file/fileReader.d.ts +0 -4
- package/dist/cjs/node/file/fileReader.js +0 -91
- package/dist/cjs/node/file/fileWriter.d.ts +0 -4
- package/dist/cjs/node/file/fileWriter.js +0 -43
- package/dist/cjs/node/file/index.d.ts +0 -4
- package/dist/cjs/node/file/index.js +0 -13
- package/dist/cjs/node/file/stat.d.ts +0 -5
- package/dist/cjs/node/file/stat.js +0 -54
- package/dist/cjs/node/file/util.d.ts +0 -9
- package/dist/cjs/node/file/util.js +0 -69
- package/dist/cjs/requests/RequestFsReadBinaryFile.d.ts +0 -11
- package/dist/cjs/requests/RequestFsReadBinaryFile.js +0 -9
- package/dist/cjs/requests/RequestFsReadFile.d.ts +0 -11
- package/dist/cjs/requests/RequestFsReadFile.js +0 -7
- package/dist/cjs/requests/RequestFsReadFileSync.d.ts +0 -11
- package/dist/cjs/requests/RequestFsReadFileSync.js +0 -7
- package/dist/cjs/requests/RequestFsStat.d.ts +0 -11
- package/dist/cjs/requests/RequestFsStat.js +0 -9
- package/dist/cjs/requests/RequestFsWriteFile.d.ts +0 -9
- package/dist/cjs/requests/RequestFsWriteFile.js +0 -7
- package/dist/cjs/requests/RequestZlibInflate.d.ts +0 -9
- package/dist/cjs/requests/RequestZlibInflate.js +0 -7
- package/dist/cjs/requests/index.d.ts +0 -7
- package/dist/cjs/requests/index.js +0 -18
- package/dist/cjs/test/test.helper.d.ts +0 -13
- package/dist/cjs/test/test.helper.js +0 -69
- package/dist/esm/CSpellIO.d.mts +0 -69
- package/dist/esm/CSpellIO.mjs +0 -1
- package/dist/esm/CSpellIONode.d.mts +0 -20
- package/dist/esm/CSpellIONode.mjs +0 -75
- package/dist/esm/CSpellIOWeb.d.mts +0 -15
- package/dist/esm/CSpellIOWeb.mjs +0 -31
- package/dist/esm/async/asyncIterable.d.mts +0 -6
- package/dist/esm/async/asyncIterable.mjs +0 -11
- package/dist/esm/common/BufferEncoding.d.mts +0 -4
- package/dist/esm/common/BufferEncoding.mjs +0 -1
- package/dist/esm/common/arrayBuffers.d.mts +0 -17
- package/dist/esm/common/arrayBuffers.mjs +0 -37
- package/dist/esm/common/encode-decode.d.mts +0 -11
- package/dist/esm/common/encode-decode.mjs +0 -72
- package/dist/esm/common/stat.d.mts +0 -9
- package/dist/esm/common/stat.mjs +0 -14
- package/dist/esm/common/transformers.d.mts +0 -6
- package/dist/esm/common/transformers.mjs +0 -65
- package/dist/esm/errors/ErrorNotImplemented.d.mts +0 -5
- package/dist/esm/errors/ErrorNotImplemented.mjs +0 -6
- package/dist/esm/errors/error.d.mts +0 -2
- package/dist/esm/errors/error.mjs +0 -9
- package/dist/esm/errors/index.d.mts +0 -3
- package/dist/esm/errors/index.mjs +0 -2
- package/dist/esm/file/file.d.mts +0 -6
- package/dist/esm/file/file.mjs +0 -21
- package/dist/esm/file/index.d.mts +0 -3
- package/dist/esm/file/index.mjs +0 -2
- package/dist/esm/handlers/node/file.d.mts +0 -3
- package/dist/esm/handlers/node/file.mjs +0 -165
- package/dist/esm/index.d.mts +0 -7
- package/dist/esm/index.mjs +0 -4
- package/dist/esm/models/BufferEncoding.d.mts +0 -2
- package/dist/esm/models/BufferEncoding.mjs +0 -1
- package/dist/esm/models/FileResource.d.mts +0 -35
- package/dist/esm/models/FileResource.mjs +0 -1
- package/dist/esm/models/Stats.d.mts +0 -18
- package/dist/esm/models/Stats.mjs +0 -4
- package/dist/esm/models/index.d.mts +0 -2
- package/dist/esm/models/index.mjs +0 -1
- package/dist/esm/node/dataUrl.d.mts +0 -27
- package/dist/esm/node/dataUrl.mjs +0 -84
- package/dist/esm/node/file/FetchError.d.mts +0 -9
- package/dist/esm/node/file/FetchError.mjs +0 -16
- package/dist/esm/node/file/fetch.d.mts +0 -7
- package/dist/esm/node/file/fetch.mjs +0 -14
- package/dist/esm/node/file/fileReader.d.mts +0 -4
- package/dist/esm/node/file/fileReader.mjs +0 -62
- package/dist/esm/node/file/fileWriter.d.mts +0 -4
- package/dist/esm/node/file/fileWriter.mjs +0 -14
- package/dist/esm/node/file/index.d.mts +0 -4
- package/dist/esm/node/file/index.mjs +0 -3
- package/dist/esm/node/file/stat.d.mts +0 -5
- package/dist/esm/node/file/stat.mjs +0 -47
- package/dist/esm/node/file/util.d.mts +0 -9
- package/dist/esm/node/file/util.mjs +0 -57
- package/dist/esm/requests/RequestFsReadBinaryFile.d.mts +0 -11
- package/dist/esm/requests/RequestFsReadBinaryFile.mjs +0 -5
- package/dist/esm/requests/RequestFsReadFile.d.mts +0 -11
- package/dist/esm/requests/RequestFsReadFile.mjs +0 -3
- package/dist/esm/requests/RequestFsReadFileSync.d.mts +0 -11
- package/dist/esm/requests/RequestFsReadFileSync.mjs +0 -3
- package/dist/esm/requests/RequestFsStat.d.mts +0 -11
- package/dist/esm/requests/RequestFsStat.mjs +0 -5
- package/dist/esm/requests/RequestFsWriteFile.d.mts +0 -9
- package/dist/esm/requests/RequestFsWriteFile.mjs +0 -3
- package/dist/esm/requests/RequestZlibInflate.d.mts +0 -9
- package/dist/esm/requests/RequestZlibInflate.mjs +0 -3
- package/dist/esm/requests/index.d.mts +0 -7
- package/dist/esm/requests/index.mjs +0 -6
- package/dist/esm/test/test.helper.d.mts +0 -13
- package/dist/esm/test/test.helper.mjs +0 -37
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { BufferEncoding } from './BufferEncoding.mjs';
|
|
2
|
-
export interface FileReference {
|
|
3
|
-
/**
|
|
4
|
-
* The URL of the File
|
|
5
|
-
*/
|
|
6
|
-
url: URL;
|
|
7
|
-
}
|
|
8
|
-
export interface FileResource extends FileReference {
|
|
9
|
-
/**
|
|
10
|
-
* The contents of the file
|
|
11
|
-
*/
|
|
12
|
-
content: string | ArrayBufferView;
|
|
13
|
-
/**
|
|
14
|
-
* The filename of the file if known.
|
|
15
|
-
* Useful for `data:` urls.
|
|
16
|
-
*/
|
|
17
|
-
baseFilename?: string | undefined;
|
|
18
|
-
/**
|
|
19
|
-
* - `true` if the content had been gzip compressed.
|
|
20
|
-
* - `false` if the content was NOT gzip compressed.
|
|
21
|
-
* - `undefined` if it is unknown
|
|
22
|
-
*/
|
|
23
|
-
gz?: boolean;
|
|
24
|
-
}
|
|
25
|
-
export interface TextFileResource extends FileResource {
|
|
26
|
-
content: string;
|
|
27
|
-
/**
|
|
28
|
-
* The encoding used to decode the file.
|
|
29
|
-
*/
|
|
30
|
-
encoding: BufferEncoding;
|
|
31
|
-
}
|
|
32
|
-
export interface BinaryFileResource extends FileResource {
|
|
33
|
-
content: ArrayBufferView;
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=FileResource.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Subset of definition from the Node definition to avoid a dependency upon a specific version of Node
|
|
3
|
-
*/
|
|
4
|
-
export interface Stats {
|
|
5
|
-
/**
|
|
6
|
-
* Size of file in byes, -1 if unknown.
|
|
7
|
-
*/
|
|
8
|
-
size: number;
|
|
9
|
-
/**
|
|
10
|
-
* Modification time, 0 if unknown.
|
|
11
|
-
*/
|
|
12
|
-
mtimeMs: number;
|
|
13
|
-
/**
|
|
14
|
-
* Used by web requests to see if a resource has changed.
|
|
15
|
-
*/
|
|
16
|
-
eTag?: string | undefined;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=Stats.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/**
|
|
3
|
-
* Generates a string of the following format:
|
|
4
|
-
*
|
|
5
|
-
* `data:[mediaType][;charset=<encoding>[;base64],<data>`
|
|
6
|
-
*
|
|
7
|
-
* - `encoding` - defaults to `utf8` for text data
|
|
8
|
-
* @param data
|
|
9
|
-
* @param mediaType - The mediaType is a [MIME](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) type string
|
|
10
|
-
* @param attributes - Additional attributes
|
|
11
|
-
*/
|
|
12
|
-
export declare function encodeDataUrl(data: string | Buffer, mediaType: string, attributes?: Iterable<readonly [string, string]> | undefined): string;
|
|
13
|
-
export declare function toDataUrl(data: string | Buffer, mediaType: string, attributes?: Iterable<[string, string]> | undefined): URL;
|
|
14
|
-
export interface DecodedDataUrl {
|
|
15
|
-
data: Buffer;
|
|
16
|
-
mediaType: string;
|
|
17
|
-
encoding?: string | undefined;
|
|
18
|
-
attributes: Map<string, string>;
|
|
19
|
-
}
|
|
20
|
-
export declare function decodeDataUrl(url: string | URL): DecodedDataUrl;
|
|
21
|
-
export declare function encodeDataUrlFromFile(path: string | URL, mediaType?: string, attributes?: Iterable<readonly [string, string]> | undefined): Promise<string>;
|
|
22
|
-
export interface GuessMimeTypeResult {
|
|
23
|
-
mimeType: string;
|
|
24
|
-
encoding?: 'utf-8' | undefined;
|
|
25
|
-
}
|
|
26
|
-
export declare function guessMimeType(filename: string): GuessMimeTypeResult | undefined;
|
|
27
|
-
//# sourceMappingURL=dataUrl.d.mts.map
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { promises as fs } from 'fs';
|
|
2
|
-
import * as fsPath from 'path';
|
|
3
|
-
import { toURL } from './file/util.mjs';
|
|
4
|
-
/**
|
|
5
|
-
* Generates a string of the following format:
|
|
6
|
-
*
|
|
7
|
-
* `data:[mediaType][;charset=<encoding>[;base64],<data>`
|
|
8
|
-
*
|
|
9
|
-
* - `encoding` - defaults to `utf8` for text data
|
|
10
|
-
* @param data
|
|
11
|
-
* @param mediaType - The mediaType is a [MIME](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) type string
|
|
12
|
-
* @param attributes - Additional attributes
|
|
13
|
-
*/
|
|
14
|
-
export function encodeDataUrl(data, mediaType, attributes) {
|
|
15
|
-
if (typeof data === 'string')
|
|
16
|
-
return encodeString(data, mediaType, attributes);
|
|
17
|
-
const attribs = encodeAttributes(attributes || []);
|
|
18
|
-
return `data:${mediaType}${attribs};base64,${data.toString('base64url')}`;
|
|
19
|
-
}
|
|
20
|
-
export function toDataUrl(data, mediaType, attributes) {
|
|
21
|
-
return new URL(encodeDataUrl(data, mediaType, attributes));
|
|
22
|
-
}
|
|
23
|
-
function encodeString(data, mediaType, attributes) {
|
|
24
|
-
mediaType = mediaType || 'text/plain';
|
|
25
|
-
attributes = attributes || [];
|
|
26
|
-
const asUrlComp = encodeURIComponent(data);
|
|
27
|
-
const asBase64 = Buffer.from(data).toString('base64url');
|
|
28
|
-
const useBase64 = asBase64.length < asUrlComp.length - 7;
|
|
29
|
-
const encoded = useBase64 ? asBase64 : asUrlComp;
|
|
30
|
-
// Ensure charset is first.
|
|
31
|
-
const attribMap = new Map([['charset', 'utf8']].concat([...attributes]));
|
|
32
|
-
attribMap.set('charset', 'utf8'); // Make sure it is always `utf8`.
|
|
33
|
-
const attribs = encodeAttributes(attribMap);
|
|
34
|
-
return `data:${mediaType}${attribs}${useBase64 ? ';base64' : ''},${encoded}`;
|
|
35
|
-
}
|
|
36
|
-
function encodeAttributes(attributes) {
|
|
37
|
-
return [...attributes].map(([key, value]) => `;${key}=${encodeURIComponent(value)}`).join('');
|
|
38
|
-
}
|
|
39
|
-
const dataUrlRegExHead = /^data:(?<mediaType>[^;,]*)(?<attributes>(?:;[^=]+=[^;,]*)*)(?<base64>;base64)?$/;
|
|
40
|
-
export function decodeDataUrl(url) {
|
|
41
|
-
url = url.toString();
|
|
42
|
-
const [head, encodedData] = url.split(',', 2);
|
|
43
|
-
if (!head || encodedData === undefined)
|
|
44
|
-
throw Error('Not a data url');
|
|
45
|
-
const match = head.match(dataUrlRegExHead);
|
|
46
|
-
if (!match || !match.groups)
|
|
47
|
-
throw Error('Not a data url');
|
|
48
|
-
const mediaType = match.groups['mediaType'] || '';
|
|
49
|
-
const rawAttributes = (match.groups['attributes'] || '')
|
|
50
|
-
.split(';')
|
|
51
|
-
.filter((a) => !!a)
|
|
52
|
-
.map((entry) => entry.split('=', 2))
|
|
53
|
-
.map(([key, value]) => [key, decodeURIComponent(value)]);
|
|
54
|
-
const attributes = new Map(rawAttributes);
|
|
55
|
-
const encoding = attributes.get('charset');
|
|
56
|
-
const isBase64 = !!match.groups['base64'];
|
|
57
|
-
const data = isBase64 ? Buffer.from(encodedData, 'base64url') : Buffer.from(decodeURIComponent(encodedData));
|
|
58
|
-
return { mediaType, data, encoding, attributes };
|
|
59
|
-
}
|
|
60
|
-
export async function encodeDataUrlFromFile(path, mediaType, attributes) {
|
|
61
|
-
const url = toURL(path);
|
|
62
|
-
const filename = fsPath.basename(url.pathname);
|
|
63
|
-
const guess = guessMimeType(filename);
|
|
64
|
-
mediaType = mediaType || guess?.mimeType || 'text/plain';
|
|
65
|
-
const _attributes = new Map(attributes || []);
|
|
66
|
-
filename && _attributes.set('filename', filename);
|
|
67
|
-
const content = guess?.encoding ? await fs.readFile(url, guess?.encoding) : await fs.readFile(url);
|
|
68
|
-
return encodeDataUrl(content, mediaType, _attributes);
|
|
69
|
-
}
|
|
70
|
-
export function guessMimeType(filename) {
|
|
71
|
-
if (filename.endsWith('.trie'))
|
|
72
|
-
return { mimeType: 'application/vnd.cspell.dictionary+trie', encoding: 'utf-8' };
|
|
73
|
-
if (filename.endsWith('.trie.gz'))
|
|
74
|
-
return { mimeType: 'application/vnd.cspell.dictionary+trie.gz' };
|
|
75
|
-
if (filename.endsWith('.txt'))
|
|
76
|
-
return { mimeType: 'text/plain', encoding: 'utf-8' };
|
|
77
|
-
if (filename.endsWith('.gz'))
|
|
78
|
-
return { mimeType: 'application/gzip' };
|
|
79
|
-
if (filename.endsWith('.json'))
|
|
80
|
-
return { mimeType: 'application/json', encoding: 'utf-8' };
|
|
81
|
-
if (filename.endsWith('.yaml') || filename.endsWith('.yml'))
|
|
82
|
-
return { mimeType: 'application/x-yaml', encoding: 'utf-8' };
|
|
83
|
-
return undefined;
|
|
84
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
export declare class FetchUrlError extends Error implements NodeJS.ErrnoException {
|
|
3
|
-
readonly code: string | undefined;
|
|
4
|
-
readonly status: number | undefined;
|
|
5
|
-
readonly url: URL;
|
|
6
|
-
constructor(message: string, code: string | undefined, status: number | undefined, url: URL);
|
|
7
|
-
static create(url: URL, status: number, message?: string): FetchUrlError;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=FetchError.d.mts.map
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export class FetchUrlError extends Error {
|
|
2
|
-
constructor(message, code, status, url) {
|
|
3
|
-
super(message);
|
|
4
|
-
this.code = code;
|
|
5
|
-
this.status = status;
|
|
6
|
-
this.url = url;
|
|
7
|
-
this.name = 'FetchUrlError';
|
|
8
|
-
}
|
|
9
|
-
static create(url, status, message) {
|
|
10
|
-
if (status === 404)
|
|
11
|
-
return new FetchUrlError(message || 'URL not found.', 'ENOENT', status, url);
|
|
12
|
-
if (status >= 400 && status < 500)
|
|
13
|
-
return new FetchUrlError(message || 'Permission denied.', 'EACCES', status, url);
|
|
14
|
-
return new FetchUrlError(message || 'Fatal Error', 'ECONNREFUSED', status, url);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import type { Headers } from 'node-fetch';
|
|
3
|
-
import nodeFetch from 'node-fetch';
|
|
4
|
-
export declare const fetch: typeof nodeFetch;
|
|
5
|
-
export declare function fetchHead(request: string | URL): Promise<Headers>;
|
|
6
|
-
export declare function fetchURL(url: URL): Promise<Buffer>;
|
|
7
|
-
//# sourceMappingURL=fetch.d.mts.map
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import nodeFetch from 'node-fetch';
|
|
2
|
-
import { FetchUrlError } from './FetchError.mjs';
|
|
3
|
-
export const fetch = nodeFetch;
|
|
4
|
-
export async function fetchHead(request) {
|
|
5
|
-
const r = await fetch(request, { method: 'HEAD' });
|
|
6
|
-
return r.headers;
|
|
7
|
-
}
|
|
8
|
-
export async function fetchURL(url) {
|
|
9
|
-
const response = await fetch(url);
|
|
10
|
-
if (!response.ok) {
|
|
11
|
-
throw FetchUrlError.create(url, response.status);
|
|
12
|
-
}
|
|
13
|
-
return Buffer.from(await response.arrayBuffer());
|
|
14
|
-
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { BufferEncoding } from '../../models/BufferEncoding.mjs';
|
|
2
|
-
export declare function readFileText(filename: string | URL, encoding?: BufferEncoding): Promise<string>;
|
|
3
|
-
export declare function readFileTextSync(filename: string, encoding?: BufferEncoding): string;
|
|
4
|
-
//# sourceMappingURL=fileReader.d.mts.map
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
// cSpell:ignore curr
|
|
2
|
-
// cSpell:words zlib iconv
|
|
3
|
-
import * as fs from 'fs';
|
|
4
|
-
import * as Stream from 'stream';
|
|
5
|
-
import { fileURLToPath } from 'url';
|
|
6
|
-
import { promisify } from 'util';
|
|
7
|
-
import * as zlib from 'zlib';
|
|
8
|
-
import { decode } from '../../common/encode-decode.mjs';
|
|
9
|
-
import { createDecoderTransformer } from '../../common/transformers.mjs';
|
|
10
|
-
import { fetch } from './fetch.mjs';
|
|
11
|
-
import { FetchUrlError } from './FetchError.mjs';
|
|
12
|
-
import { isFileURL, isSupportedURL, isZipped, toURL } from './util.mjs';
|
|
13
|
-
const defaultEncoding = 'utf8';
|
|
14
|
-
const pipeline = promisify(Stream.pipeline);
|
|
15
|
-
export async function readFileText(filename, encoding) {
|
|
16
|
-
const url = toURL(filename);
|
|
17
|
-
if (!isSupportedURL(url)) {
|
|
18
|
-
throw new Error('Unsupported network protocol');
|
|
19
|
-
}
|
|
20
|
-
return isFileURL(url) ? _readFileText(url, encoding) : _fetchTextFromURL(url, encoding);
|
|
21
|
-
}
|
|
22
|
-
function _readFileText(url, encoding) {
|
|
23
|
-
// Convert it to a string because Yarn2 cannot handle URLs.
|
|
24
|
-
const filename = fileURLToPath(url);
|
|
25
|
-
return _readText(() => fs.createReadStream(filename), isZipped(filename), encoding);
|
|
26
|
-
}
|
|
27
|
-
async function _fetchTextFromURL(url, encoding) {
|
|
28
|
-
const response = await fetch(url);
|
|
29
|
-
if (!response.ok) {
|
|
30
|
-
throw FetchUrlError.create(url, response.status);
|
|
31
|
-
}
|
|
32
|
-
return _readText(() => response.body, isZipped(url), encoding);
|
|
33
|
-
}
|
|
34
|
-
async function _readText(getStream, isZipped, encoding) {
|
|
35
|
-
const stream = getStream();
|
|
36
|
-
const decoder = createDecoderTransformer(encoding);
|
|
37
|
-
const collector = createTextCollector(encoding || defaultEncoding);
|
|
38
|
-
return isZipped ? pipeline(stream, zlib.createGunzip(), decoder, collector) : pipeline(stream, decoder, collector);
|
|
39
|
-
}
|
|
40
|
-
export function readFileTextSync(filename, encoding) {
|
|
41
|
-
const rawData = fs.readFileSync(filename);
|
|
42
|
-
const data = isZipped(filename) ? zlib.gunzipSync(rawData) : rawData;
|
|
43
|
-
return !encoding || encoding.startsWith('utf')
|
|
44
|
-
? decode(data)
|
|
45
|
-
: encoding === 'utf16be'
|
|
46
|
-
? data.swap16().toString('utf16le')
|
|
47
|
-
: data.toString(encoding);
|
|
48
|
-
}
|
|
49
|
-
function createTextCollector(encoding) {
|
|
50
|
-
async function collect(iterable) {
|
|
51
|
-
const buf = [];
|
|
52
|
-
for await (const sb of iterable) {
|
|
53
|
-
buf.push(typeof sb === 'string'
|
|
54
|
-
? sb
|
|
55
|
-
: encoding === 'utf16be'
|
|
56
|
-
? sb.swap16().toString('utf16le')
|
|
57
|
-
: sb.toString(encoding));
|
|
58
|
-
}
|
|
59
|
-
return buf.join('');
|
|
60
|
-
}
|
|
61
|
-
return collect;
|
|
62
|
-
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { BufferEncoding, BufferEncodingExt } from '../../common/BufferEncoding.mjs';
|
|
2
|
-
export declare function writeToFile(filename: string, data: string | Iterable<string> | AsyncIterable<string>, encoding?: BufferEncoding): Promise<void>;
|
|
3
|
-
export declare function writeToFileIterable(filename: string, data: Iterable<string> | AsyncIterable<string>, encoding?: BufferEncodingExt): Promise<void>;
|
|
4
|
-
//# sourceMappingURL=fileWriter.d.mts.map
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import * as fs from 'fs';
|
|
2
|
-
import * as Stream from 'stream';
|
|
3
|
-
import { promisify } from 'util';
|
|
4
|
-
import * as zlib from 'zlib';
|
|
5
|
-
import { encoderTransformer } from '../../common/transformers.mjs';
|
|
6
|
-
const pipeline = promisify(Stream.pipeline);
|
|
7
|
-
export function writeToFile(filename, data, encoding) {
|
|
8
|
-
return writeToFileIterable(filename, typeof data === 'string' ? [data] : data, encoding);
|
|
9
|
-
}
|
|
10
|
-
export function writeToFileIterable(filename, data, encoding) {
|
|
11
|
-
const stream = Stream.Readable.from(encoderTransformer(data, encoding));
|
|
12
|
-
const zip = filename.match(/\.gz$/) ? zlib.createGzip() : new Stream.PassThrough();
|
|
13
|
-
return pipeline(stream, zip, fs.createWriteStream(filename));
|
|
14
|
-
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { Stats } from '../../models/Stats.mjs';
|
|
2
|
-
export declare function getStat(filenameOrUri: string): Promise<Stats | Error>;
|
|
3
|
-
export declare function getStatSync(uri: string): Stats | Error;
|
|
4
|
-
export declare function getStatHttp(url: URL): Promise<Stats>;
|
|
5
|
-
//# sourceMappingURL=stat.d.mts.map
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { promises as fs, statSync } from 'fs';
|
|
2
|
-
import { format } from 'util';
|
|
3
|
-
import { fetchHead } from './fetch.mjs';
|
|
4
|
-
import { isFileURL, isUrlLike, toURL } from './util.mjs';
|
|
5
|
-
export async function getStat(filenameOrUri) {
|
|
6
|
-
if (isUrlLike(filenameOrUri)) {
|
|
7
|
-
const url = toURL(filenameOrUri);
|
|
8
|
-
if (!isFileURL(url)) {
|
|
9
|
-
try {
|
|
10
|
-
return await getStatHttp(url);
|
|
11
|
-
}
|
|
12
|
-
catch (e) {
|
|
13
|
-
return toError(e);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
return fs.stat(filenameOrUri).catch((e) => toError(e));
|
|
18
|
-
}
|
|
19
|
-
export function getStatSync(uri) {
|
|
20
|
-
try {
|
|
21
|
-
return statSync(uri);
|
|
22
|
-
}
|
|
23
|
-
catch (e) {
|
|
24
|
-
return toError(e);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
export async function getStatHttp(url) {
|
|
28
|
-
const headers = await fetchHead(url);
|
|
29
|
-
const eTag = headers.get('etag') || undefined;
|
|
30
|
-
const guessSize = Number.parseInt(headers.get('content-length') || '0', 10);
|
|
31
|
-
return {
|
|
32
|
-
size: eTag ? -1 : guessSize,
|
|
33
|
-
mtimeMs: 0,
|
|
34
|
-
eTag,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
function toError(e) {
|
|
38
|
-
if (isErrnoException(e) || e instanceof Error)
|
|
39
|
-
return e;
|
|
40
|
-
return new Error(format(e));
|
|
41
|
-
}
|
|
42
|
-
function isErrnoException(e) {
|
|
43
|
-
if (!e || typeof e !== 'object')
|
|
44
|
-
return false;
|
|
45
|
-
const err = e;
|
|
46
|
-
return err.message !== undefined && err.name !== undefined;
|
|
47
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export declare function isZipped(filename: string | URL): boolean;
|
|
2
|
-
export declare function isUrlLike(filename: string | URL): boolean;
|
|
3
|
-
export declare function isSupportedURL(url: URL): boolean;
|
|
4
|
-
export declare function isFileURL(url: URL): boolean;
|
|
5
|
-
export declare function toURL(filename: string | URL): URL;
|
|
6
|
-
export declare function urlBasename(url: string | URL): string;
|
|
7
|
-
export declare function urlDirname(url: string | URL): URL;
|
|
8
|
-
export declare function basename(path: string): string;
|
|
9
|
-
//# sourceMappingURL=util.d.mts.map
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { pathToFileURL } from 'url';
|
|
2
|
-
const isZippedRegExp = /\.gz($|[?#])/i;
|
|
3
|
-
const isURLRegExp = /^(\w{2,64}:\/\/|data:)/i;
|
|
4
|
-
const supportedProtocols = { 'file:': true, 'http:': true, 'https:': true };
|
|
5
|
-
export function isZipped(filename) {
|
|
6
|
-
const path = typeof filename === 'string' ? filename : filename.pathname;
|
|
7
|
-
return isZippedRegExp.test(path);
|
|
8
|
-
}
|
|
9
|
-
export function isUrlLike(filename) {
|
|
10
|
-
return filename instanceof URL || isURLRegExp.test(filename);
|
|
11
|
-
}
|
|
12
|
-
export function isSupportedURL(url) {
|
|
13
|
-
return !!supportedProtocols[url.protocol];
|
|
14
|
-
}
|
|
15
|
-
export function isFileURL(url) {
|
|
16
|
-
return url.protocol === 'file:';
|
|
17
|
-
}
|
|
18
|
-
export function toURL(filename) {
|
|
19
|
-
return filename instanceof URL || typeof filename !== 'string'
|
|
20
|
-
? filename
|
|
21
|
-
: isUrlLike(filename)
|
|
22
|
-
? new URL(filename)
|
|
23
|
-
: pathToFileURL(filename);
|
|
24
|
-
}
|
|
25
|
-
const regMatchFilename = /filename=([^;,]*)/;
|
|
26
|
-
export function urlBasename(url) {
|
|
27
|
-
function guessDataUrlName(header) {
|
|
28
|
-
const filenameMatch = header.match(regMatchFilename);
|
|
29
|
-
if (filenameMatch)
|
|
30
|
-
return filenameMatch[1];
|
|
31
|
-
const mime = header.split(';', 1)[0];
|
|
32
|
-
return mime.replace(/\W/g, '.');
|
|
33
|
-
}
|
|
34
|
-
if (typeof url === 'string' && url.startsWith('data:')) {
|
|
35
|
-
return guessDataUrlName(url.split(',', 1)[0].split(':', 2)[1]);
|
|
36
|
-
}
|
|
37
|
-
url = toURL(url);
|
|
38
|
-
if (url.protocol === 'data:') {
|
|
39
|
-
return guessDataUrlName(url.pathname.split(',', 1)[0]);
|
|
40
|
-
}
|
|
41
|
-
return basename(url.pathname);
|
|
42
|
-
}
|
|
43
|
-
export function urlDirname(url) {
|
|
44
|
-
if (typeof url === 'string' && url.startsWith('data:')) {
|
|
45
|
-
return toURL('data:');
|
|
46
|
-
}
|
|
47
|
-
url = toURL(url);
|
|
48
|
-
if (url.protocol === 'data:') {
|
|
49
|
-
return toURL('data:');
|
|
50
|
-
}
|
|
51
|
-
return new URL(url.pathname.endsWith('/') ? '..' : '.', url);
|
|
52
|
-
}
|
|
53
|
-
export function basename(path) {
|
|
54
|
-
path = path.endsWith('/') ? path.slice(0, path.length - 1) : path;
|
|
55
|
-
const idx = path.lastIndexOf('/');
|
|
56
|
-
return idx >= 0 ? path.slice(idx + 1) || '' : path;
|
|
57
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { ServiceRequestFactoryRequestType } from '@cspell/cspell-service-bus';
|
|
2
|
-
import type { BinaryFileResource } from '../models/FileResource.mjs';
|
|
3
|
-
interface RequestParams {
|
|
4
|
-
readonly url: URL;
|
|
5
|
-
}
|
|
6
|
-
export declare const RequestFsReadBinaryFile: import("@cspell/cspell-service-bus").ServiceRequestFactory<import("@cspell/cspell-service-bus").ServiceRequest<"fs:readBinaryFile", RequestParams, Promise<BinaryFileResource>>, RequestParams, "fs:readBinaryFile">;
|
|
7
|
-
export type RequestFsReadBinaryFile = ServiceRequestFactoryRequestType<typeof RequestFsReadBinaryFile>;
|
|
8
|
-
export declare const RequestFsReadBinaryFileSync: import("@cspell/cspell-service-bus").ServiceRequestFactory<import("@cspell/cspell-service-bus").ServiceRequest<"fs:readBinaryFileSync", RequestParams, BinaryFileResource>, RequestParams, "fs:readBinaryFileSync">;
|
|
9
|
-
export type RequestFsReadBinaryFileSync = ServiceRequestFactoryRequestType<typeof RequestFsReadBinaryFileSync>;
|
|
10
|
-
export {};
|
|
11
|
-
//# sourceMappingURL=RequestFsReadBinaryFile.d.mts.map
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { requestFactory } from '@cspell/cspell-service-bus';
|
|
2
|
-
const RequestType = 'fs:readBinaryFile';
|
|
3
|
-
export const RequestFsReadBinaryFile = requestFactory(RequestType);
|
|
4
|
-
const RequestTypeSync = 'fs:readBinaryFileSync';
|
|
5
|
-
export const RequestFsReadBinaryFileSync = requestFactory(RequestTypeSync);
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { ServiceRequestFactoryRequestType } from '@cspell/cspell-service-bus';
|
|
2
|
-
import type { BufferEncoding } from '../models/BufferEncoding';
|
|
3
|
-
import type { TextFileResource } from '../models/FileResource.mjs';
|
|
4
|
-
interface RequestParams {
|
|
5
|
-
readonly url: URL;
|
|
6
|
-
readonly encoding: BufferEncoding;
|
|
7
|
-
}
|
|
8
|
-
export declare const RequestFsReadFileText: import("@cspell/cspell-service-bus").ServiceRequestFactory<import("@cspell/cspell-service-bus").ServiceRequest<"fs:readFile", RequestParams, Promise<TextFileResource>>, RequestParams, "fs:readFile">;
|
|
9
|
-
export type RequestFsReadFileText = ServiceRequestFactoryRequestType<typeof RequestFsReadFileText>;
|
|
10
|
-
export {};
|
|
11
|
-
//# sourceMappingURL=RequestFsReadFile.d.mts.map
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { ServiceRequestFactoryRequestType } from '@cspell/cspell-service-bus';
|
|
2
|
-
import type { BufferEncoding } from '../models/BufferEncoding';
|
|
3
|
-
import type { TextFileResource } from '../models/FileResource.mjs';
|
|
4
|
-
interface RequestParams {
|
|
5
|
-
readonly url: URL;
|
|
6
|
-
readonly encoding: BufferEncoding;
|
|
7
|
-
}
|
|
8
|
-
export declare const RequestFsReadFileTextSync: import("@cspell/cspell-service-bus").ServiceRequestFactory<import("@cspell/cspell-service-bus").ServiceRequest<"fs:readFileSync", RequestParams, TextFileResource>, RequestParams, "fs:readFileSync">;
|
|
9
|
-
export type RequestFsReadFileTextSync = ServiceRequestFactoryRequestType<typeof RequestFsReadFileTextSync>;
|
|
10
|
-
export {};
|
|
11
|
-
//# sourceMappingURL=RequestFsReadFileSync.d.mts.map
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { ServiceRequestFactoryRequestType } from '@cspell/cspell-service-bus';
|
|
2
|
-
import type { Stats } from '../models/index.mjs';
|
|
3
|
-
interface RequestStatParams {
|
|
4
|
-
readonly url: URL;
|
|
5
|
-
}
|
|
6
|
-
export declare const RequestFsStat: import("@cspell/cspell-service-bus").ServiceRequestFactory<import("@cspell/cspell-service-bus").ServiceRequest<"fs:stat", RequestStatParams, Promise<Stats>>, RequestStatParams, "fs:stat">;
|
|
7
|
-
export type RequestFsStat = ServiceRequestFactoryRequestType<typeof RequestFsStat>;
|
|
8
|
-
export declare const RequestFsStatSync: import("@cspell/cspell-service-bus").ServiceRequestFactory<import("@cspell/cspell-service-bus").ServiceRequest<"fs:statSync", RequestStatParams, Stats>, RequestStatParams, "fs:statSync">;
|
|
9
|
-
export type RequestFsStatSync = ServiceRequestFactoryRequestType<typeof RequestFsStatSync>;
|
|
10
|
-
export {};
|
|
11
|
-
//# sourceMappingURL=RequestFsStat.d.mts.map
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { requestFactory } from '@cspell/cspell-service-bus';
|
|
2
|
-
const RequestTypeStat = 'fs:stat';
|
|
3
|
-
export const RequestFsStat = requestFactory(RequestTypeStat);
|
|
4
|
-
const RequestTypeStatSync = 'fs:statSync';
|
|
5
|
-
export const RequestFsStatSync = requestFactory(RequestTypeStatSync);
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { ServiceRequestFactoryRequestType } from '@cspell/cspell-service-bus';
|
|
2
|
-
interface RequestParams {
|
|
3
|
-
readonly url: URL;
|
|
4
|
-
readonly content: string;
|
|
5
|
-
}
|
|
6
|
-
export declare const RequestFsWriteFile: import("@cspell/cspell-service-bus").ServiceRequestFactory<import("@cspell/cspell-service-bus").ServiceRequest<"fs:writeFile", RequestParams, Promise<void>>, RequestParams, "fs:writeFile">;
|
|
7
|
-
export type RequestFsWriteFile = ServiceRequestFactoryRequestType<typeof RequestFsWriteFile>;
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=RequestFsWriteFile.d.mts.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import type { ServiceRequestFactoryRequestType } from '@cspell/cspell-service-bus';
|
|
3
|
-
interface RequestParams {
|
|
4
|
-
readonly data: Buffer;
|
|
5
|
-
}
|
|
6
|
-
export declare const RequestZlibInflate: import("@cspell/cspell-service-bus").ServiceRequestFactory<import("@cspell/cspell-service-bus").ServiceRequest<"zlib:inflate", RequestParams, string>, RequestParams, "zlib:inflate">;
|
|
7
|
-
export type RequestZlibInflate = ServiceRequestFactoryRequestType<typeof RequestZlibInflate>;
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=RequestZlibInflate.d.mts.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { RequestFsReadBinaryFile, RequestFsReadBinaryFileSync } from './RequestFsReadBinaryFile.mjs';
|
|
2
|
-
export { RequestFsReadFileText as RequestFsReadFile } from './RequestFsReadFile.mjs';
|
|
3
|
-
export { RequestFsReadFileTextSync as RequestFsReadFileSync } from './RequestFsReadFileSync.mjs';
|
|
4
|
-
export { RequestFsStat, RequestFsStatSync } from './RequestFsStat.mjs';
|
|
5
|
-
export { RequestFsWriteFile } from './RequestFsWriteFile.mjs';
|
|
6
|
-
export { RequestZlibInflate } from './RequestZlibInflate.mjs';
|
|
7
|
-
//# sourceMappingURL=index.d.mts.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { RequestFsReadBinaryFile, RequestFsReadBinaryFileSync } from './RequestFsReadBinaryFile.mjs';
|
|
2
|
-
export { RequestFsReadFileText as RequestFsReadFile } from './RequestFsReadFile.mjs';
|
|
3
|
-
export { RequestFsReadFileTextSync as RequestFsReadFileSync } from './RequestFsReadFileSync.mjs';
|
|
4
|
-
export { RequestFsStat, RequestFsStatSync } from './RequestFsStat.mjs';
|
|
5
|
-
export { RequestFsWriteFile } from './RequestFsWriteFile.mjs';
|
|
6
|
-
export { RequestZlibInflate } from './RequestZlibInflate.mjs';
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export declare function pathToSample(...parts: string[]): string;
|
|
2
|
-
export declare function pathToRoot(...parts: string[]): string;
|
|
3
|
-
export declare function makePathToFile(file: string): Promise<void>;
|
|
4
|
-
export declare function testNameToDir(testName: string): string;
|
|
5
|
-
/**
|
|
6
|
-
* Calculate a Uri for a path to a temporary directory that will be unique to the current test.
|
|
7
|
-
* Note: if a text is not currently running, then it is the path for the test file.
|
|
8
|
-
* @param baseFilename - name of file / directory wanted
|
|
9
|
-
* @param testFilename - optional full path to a test file.
|
|
10
|
-
* @returns full path to the requested temp file.
|
|
11
|
-
*/
|
|
12
|
-
export declare function pathToTemp(...parts: string[]): string;
|
|
13
|
-
//# sourceMappingURL=test.helper.d.mts.map
|