@gukhanmun/stdict-cdb 0.4.0-dev.236 → 0.4.0-dev.248
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/index.d.ts +14 -77
- package/dist/index.js +23 -9
- package/dist/stdict.cdb +0 -0
- package/dist/stdict.cdb.gz +0 -0
- package/package.json +5 -4
package/dist/index.d.ts
CHANGED
|
@@ -1,77 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { FileDictionarySource, FileDictionarySource as FileDictionarySource$1, SourceRole } from "@gukhanmun/types";
|
|
3
2
|
/**
|
|
4
|
-
*
|
|
3
|
+
* URL of the bundled, gzip-compressed Standard Korean Language Dictionary CDB.
|
|
5
4
|
*
|
|
6
|
-
* The `
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* - A `URL` — resolved via `fetch` in browsers; via `node:fs/promises`
|
|
10
|
-
* in Node.js, Deno 2.0+, and Bun.
|
|
11
|
-
* - A `string` — treated as a filesystem path; supported in Node.js,
|
|
12
|
-
* Deno 2.0+, and Bun only. Throws in browser environments.
|
|
13
|
-
*
|
|
14
|
-
* At runtime, a `FileDictionarySource` is distinguished from other values by
|
|
15
|
-
* the absence of an `entries` property (`"entries" in source` selects a
|
|
16
|
-
* {@link MapDictionarySource}).
|
|
5
|
+
* The URL now points to `stdict.cdb.gz` to fit registry per-file limits.
|
|
6
|
+
* {@link stdictCdbBytes} transparently returns the decompressed CDB bytes.
|
|
7
|
+
* The npm package also retains its raw `stdict.cdb` file export.
|
|
17
8
|
*/
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* The binary dictionary data or a reference to where it can be loaded.
|
|
21
|
-
*
|
|
22
|
-
* Pass a `BufferSource` for data already in memory, a `URL` for a remote
|
|
23
|
-
* or local URL (resolved via `fetch` or `readFile`), or a path `string`
|
|
24
|
-
* for filesystem paths (Node.js / Deno 2.0+ / Bun only).
|
|
25
|
-
*/
|
|
26
|
-
readonly data: ArrayBuffer | ArrayBufferView | URL | string;
|
|
27
|
-
/**
|
|
28
|
-
* The on-disk format of the dictionary file.
|
|
29
|
-
*
|
|
30
|
-
* - `"fst"` — Gukhanmun FST file (`*.gukfst`); preferred for small
|
|
31
|
-
* WebAssembly bundles. Supported in all runtimes.
|
|
32
|
-
* - `"cdb"` — Gukhanmun CDB-trie file (`*.gukcdb`); preferred when code
|
|
33
|
-
* auditability or trivial mmap support matters. Requires a filesystem
|
|
34
|
-
* or in-memory bytes; supported in Node-API and (with `from_bytes`) in
|
|
35
|
-
* WASM builds that include the `cdb` feature.
|
|
36
|
-
*
|
|
37
|
-
* The `"tsv"` format is reserved and never accepted. Pass entries in memory
|
|
38
|
-
* through {@link MapDictionarySource} instead of compiling a table.
|
|
39
|
-
*/
|
|
40
|
-
readonly format: "fst" | "cdb";
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* A dictionary built from entries computed at runtime, such as per-document
|
|
44
|
-
* reading overrides.
|
|
45
|
-
*
|
|
46
|
-
* Use this instead of compiling a TSV file with `gukhanmun-mkdict` when the
|
|
47
|
-
* entries do not exist on disk, for example in a browser, an edge runtime, or a
|
|
48
|
-
* site generator that derives entries per document.
|
|
49
|
-
*
|
|
50
|
-
* A source is distinguished from a {@link FileDictionarySource} by the presence
|
|
51
|
-
* of an `entries` property.
|
|
52
|
-
*
|
|
53
|
-
* @example
|
|
54
|
-
* ```ts
|
|
55
|
-
* import { stdictFst } from "@gukhanmun/stdict-fst";
|
|
56
|
-
* const g = await load({
|
|
57
|
-
* dictionaries: [
|
|
58
|
-
* {
|
|
59
|
-
* entries: [
|
|
60
|
-
* { hanja: "高橋", reading: "다카하시" },
|
|
61
|
-
* { hanja: "東京", reading: "도쿄", preference: 10 },
|
|
62
|
-
* { hanja: "年代", reading: "연대", suffixReading: "년대" },
|
|
63
|
-
* ],
|
|
64
|
-
* },
|
|
65
|
-
* await stdictFst(),
|
|
66
|
-
* ],
|
|
67
|
-
* });
|
|
68
|
-
* ```
|
|
69
|
-
*/
|
|
70
|
-
//#endregion
|
|
71
|
-
//#region index.d.ts
|
|
72
|
-
|
|
73
|
-
/** URL of the bundled Standard Korean Language Dictionary CDB binary. */
|
|
74
|
-
declare const stdictCdbUrl: URL;
|
|
9
|
+
export declare const stdictCdbUrl: URL;
|
|
75
10
|
/**
|
|
76
11
|
* Loads the bundled Standard Korean Language Dictionary as raw bytes.
|
|
77
12
|
*
|
|
@@ -86,17 +21,19 @@ declare const stdictCdbUrl: URL;
|
|
|
86
21
|
* wrongly take the `node:fs` path and `readFile` would reject the `https:`
|
|
87
22
|
* URL with "The URL must be of scheme file".
|
|
88
23
|
*
|
|
89
|
-
*
|
|
24
|
+
* Gzip is detected from the payload's magic bytes, so compressed files are
|
|
25
|
+
* inflated transparently and relocated raw CDB files remain supported.
|
|
26
|
+
*
|
|
27
|
+
* @param url Location of the raw or gzip-compressed CDB to read. Defaults to the bundled
|
|
90
28
|
* {@link stdictCdbUrl}; pass another URL to load a relocated copy.
|
|
91
29
|
* @returns The CDB binary as a `Uint8Array`.
|
|
92
30
|
*/
|
|
93
|
-
declare function stdictCdbBytes(url?: URL): Promise<Uint8Array<ArrayBuffer>>;
|
|
31
|
+
export declare function stdictCdbBytes(url?: URL): Promise<Uint8Array<ArrayBuffer>>;
|
|
94
32
|
/**
|
|
95
33
|
* Loads the bundled Standard Korean Language Dictionary as a
|
|
96
34
|
* {@link FileDictionarySource} ready to pass to `load({ dictionaries: [...] })`.
|
|
97
35
|
*
|
|
98
|
-
* @returns A `FileDictionarySource` with `format: "cdb"`.
|
|
36
|
+
* @returns A `FileDictionarySource` with `format: "cdb"` and `role: "reference"`.
|
|
99
37
|
*/
|
|
100
|
-
declare function stdictCdb(): Promise<FileDictionarySource>;
|
|
101
|
-
|
|
102
|
-
export { type FileDictionarySource, stdictCdb, stdictCdbBytes, stdictCdbUrl };
|
|
38
|
+
export declare function stdictCdb(): Promise<FileDictionarySource$1>;
|
|
39
|
+
export type { FileDictionarySource, SourceRole };
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
/**
|
|
3
|
-
|
|
1
|
+
// index.ts
|
|
2
|
+
/**
|
|
3
|
+
* URL of the bundled, gzip-compressed Standard Korean Language Dictionary CDB.
|
|
4
|
+
*
|
|
5
|
+
* The URL now points to `stdict.cdb.gz` to fit registry per-file limits.
|
|
6
|
+
* {@link stdictCdbBytes} transparently returns the decompressed CDB bytes.
|
|
7
|
+
* The npm package also retains its raw `stdict.cdb` file export.
|
|
8
|
+
*/
|
|
9
|
+
const stdictCdbUrl = new URL("./stdict.cdb.gz", import.meta.url);
|
|
4
10
|
/**
|
|
5
11
|
* Loads the bundled Standard Korean Language Dictionary as raw bytes.
|
|
6
12
|
*
|
|
@@ -15,7 +21,10 @@ const stdictCdbUrl = new URL("./stdict.cdb", import.meta.url);
|
|
|
15
21
|
* wrongly take the `node:fs` path and `readFile` would reject the `https:`
|
|
16
22
|
* URL with "The URL must be of scheme file".
|
|
17
23
|
*
|
|
18
|
-
*
|
|
24
|
+
* Gzip is detected from the payload's magic bytes, so compressed files are
|
|
25
|
+
* inflated transparently and relocated raw CDB files remain supported.
|
|
26
|
+
*
|
|
27
|
+
* @param url Location of the raw or gzip-compressed CDB to read. Defaults to the bundled
|
|
19
28
|
* {@link stdictCdbUrl}; pass another URL to load a relocated copy.
|
|
20
29
|
* @returns The CDB binary as a `Uint8Array`.
|
|
21
30
|
*/
|
|
@@ -25,23 +34,28 @@ async function stdictCdbBytes(url = stdictCdbUrl) {
|
|
|
25
34
|
/* webpackIgnore: true */
|
|
26
35
|
"node:fs/promises"
|
|
27
36
|
)).readFile(url);
|
|
28
|
-
return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
|
|
37
|
+
return inflateIfGzip(new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength));
|
|
29
38
|
}
|
|
30
39
|
const response = await fetch(url);
|
|
31
40
|
if (!response.ok) throw new Error(`Failed to fetch stdict CDB: HTTP ${response.status}`);
|
|
32
|
-
return new Uint8Array(await response.arrayBuffer());
|
|
41
|
+
return inflateIfGzip(new Uint8Array(await response.arrayBuffer()));
|
|
42
|
+
}
|
|
43
|
+
async function inflateIfGzip(bytes) {
|
|
44
|
+
if (bytes.length < 2 || bytes[0] !== 31 || bytes[1] !== 139) return bytes;
|
|
45
|
+
const stream = new Blob([bytes]).stream().pipeThrough(new DecompressionStream("gzip"));
|
|
46
|
+
return new Uint8Array(await new Response(stream).arrayBuffer());
|
|
33
47
|
}
|
|
34
48
|
/**
|
|
35
49
|
* Loads the bundled Standard Korean Language Dictionary as a
|
|
36
50
|
* {@link FileDictionarySource} ready to pass to `load({ dictionaries: [...] })`.
|
|
37
51
|
*
|
|
38
|
-
* @returns A `FileDictionarySource` with `format: "cdb"`.
|
|
52
|
+
* @returns A `FileDictionarySource` with `format: "cdb"` and `role: "reference"`.
|
|
39
53
|
*/
|
|
40
54
|
async function stdictCdb() {
|
|
41
55
|
return {
|
|
42
56
|
data: await stdictCdbBytes(),
|
|
43
|
-
format: "cdb"
|
|
57
|
+
format: "cdb",
|
|
58
|
+
role: "reference"
|
|
44
59
|
};
|
|
45
60
|
}
|
|
46
|
-
//#endregion
|
|
47
61
|
export { stdictCdb, stdictCdbBytes, stdictCdbUrl };
|
package/dist/stdict.cdb
CHANGED
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gukhanmun/stdict-cdb",
|
|
3
|
-
"version": "0.4.0-dev.
|
|
3
|
+
"version": "0.4.0-dev.248",
|
|
4
4
|
"description": "Standard Korean Language Dictionary bundled as a CDB binary for @gukhanmun/wasm and @gukhanmun/napi.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"import": "./dist/index.js",
|
|
10
10
|
"default": "./dist/index.js"
|
|
11
11
|
},
|
|
12
|
-
"./stdict.cdb": "./dist/stdict.cdb"
|
|
12
|
+
"./stdict.cdb": "./dist/stdict.cdb",
|
|
13
|
+
"./stdict.cdb.gz": "./dist/stdict.cdb.gz"
|
|
13
14
|
},
|
|
14
15
|
"files": [
|
|
15
16
|
"dist"
|
|
@@ -55,9 +56,9 @@
|
|
|
55
56
|
"@gukhanmun/types": "*"
|
|
56
57
|
},
|
|
57
58
|
"devDependencies": {
|
|
58
|
-
"@gukhanmun/types": "0.4.0-dev.
|
|
59
|
+
"@gukhanmun/types": "0.4.0-dev.248+36997e7"
|
|
59
60
|
},
|
|
60
61
|
"scripts": {
|
|
61
|
-
"build": "tsdown && node -e \"require('node:fs')
|
|
62
|
+
"build": "tsdown && node -e \"const fs=require('node:fs');for(const f of ['stdict.cdb','stdict.cdb.gz'])fs.copyFileSync(f,'dist/'+f)\""
|
|
62
63
|
}
|
|
63
64
|
}
|