2.0变量 , 向量总结正式推送
This commit is contained in:
25
libs/jieba-wasm/LICENSE
Normal file
25
libs/jieba-wasm/LICENSE
Normal file
@@ -0,0 +1,25 @@
|
||||
Copyright (c) 2018 fengkx <liangkx8237@gmail.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any
|
||||
person obtaining a copy of this software and associated
|
||||
documentation files (the "Software"), to deal in the
|
||||
Software without restriction, including without
|
||||
limitation the rights to use, copy, modify, merge,
|
||||
publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software
|
||||
is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice
|
||||
shall be included in all copies or substantial portions
|
||||
of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
|
||||
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
|
||||
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
|
||||
SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
|
||||
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
134
libs/jieba-wasm/README.md
Normal file
134
libs/jieba-wasm/README.md
Normal file
@@ -0,0 +1,134 @@
|
||||
# jieba-wasm
|
||||
|
||||
> [jieba-rs](https://github.com/messense/jieba-rs) 的 wasm binding
|
||||
|
||||
_编译成 WASM 摆脱编译 Node Addon 的烦恼_
|
||||
|
||||
# Usage
|
||||
## Node.js
|
||||
```js
|
||||
const {
|
||||
cut,
|
||||
cut_all,
|
||||
cut_for_search,
|
||||
tokenize,
|
||||
add_word,
|
||||
} = require("jieba-wasm");
|
||||
cut("中华人民共和国武汉市长江大桥", true);
|
||||
// [ '中华人民共和国', '武汉市', '长江大桥' ]
|
||||
cut_all("中华人民共和国武汉市长江大桥", true);
|
||||
/*
|
||||
[
|
||||
'中', '中华',
|
||||
'中华人民', '中华人民共和国',
|
||||
'华', '华人',
|
||||
'人', '人民',
|
||||
'人民共和国', '民',
|
||||
'共', '共和',
|
||||
'共和国', '和',
|
||||
'国', '武',
|
||||
'武汉', '武汉市',
|
||||
'汉', '市',
|
||||
'市长', '长',
|
||||
'长江', '长江大桥',
|
||||
'江', '大',
|
||||
'大桥', '桥'
|
||||
]
|
||||
*/
|
||||
cut_for_search("中华人民共和国武汉市长江大桥", true);
|
||||
/*
|
||||
[
|
||||
'中华', '华人',
|
||||
'人民', '共和',
|
||||
'共和国', '中华人民共和国',
|
||||
'武汉', '武汉市',
|
||||
'长江', '大桥',
|
||||
'长江大桥'
|
||||
]
|
||||
*/
|
||||
tokenize("中华人民共和国武汉市长江大桥", "default", true);
|
||||
/*
|
||||
[
|
||||
{ word: '中华人民共和国', start: 0, end: 7 },
|
||||
{ word: '武汉市', start: 7, end: 10 },
|
||||
{ word: '长江大桥', start: 10, end: 14 }
|
||||
]
|
||||
*/
|
||||
tokenize("中华人民共和国武汉市长江大桥", "search", true);
|
||||
/*
|
||||
[
|
||||
{ word: '中华', start: 0, end: 2 },
|
||||
{ word: '华人', start: 1, end: 3 },
|
||||
{ word: '人民', start: 2, end: 4 },
|
||||
{ word: '共和', start: 4, end: 6 },
|
||||
{ word: '共和国', start: 4, end: 7 },
|
||||
{ word: '中华人民共和国', start: 0, end: 7 },
|
||||
{ word: '武汉', start: 7, end: 9 },
|
||||
{ word: '武汉市', start: 7, end: 10 },
|
||||
{ word: '长江', start: 10, end: 12 },
|
||||
{ word: '大桥', start: 12, end: 14 },
|
||||
{ word: '长江大桥', start: 10, end: 14 }
|
||||
]
|
||||
*/
|
||||
|
||||
cut("桥大江长市汉武的省北湖国和共民人华中");
|
||||
/*
|
||||
[
|
||||
'桥', '大江', '长',
|
||||
'市', '汉', '武',
|
||||
'的', '省', '北湖',
|
||||
'国', '和', '共',
|
||||
'民', '人', '华中'
|
||||
]
|
||||
*/
|
||||
["桥大江长", "市汉武", "省北湖", "国和共民人华中"].map((word) => {
|
||||
add_word(word);
|
||||
});
|
||||
cut("桥大江长市汉武的省北湖国和共民人华中");
|
||||
// ["桥大江长", "市汉武", "的", "省北湖", "国和共民人华中"];
|
||||
|
||||
with_dict("自动借书机 1 n"); // 导入自定义字典,词条格式:词语 词频 词性(可选),以换行符分隔
|
||||
cut("你好我是一个自动借书机");
|
||||
// ["你好", "我", "是", "一个", "自动借书机"];
|
||||
```
|
||||
|
||||
## Browser
|
||||
```ts
|
||||
import init, { cut } from 'jieba-wasm';
|
||||
|
||||
// 重要:使用前必须初始化
|
||||
await init();
|
||||
|
||||
cut("中华人民共和国武汉市长江大桥", true);
|
||||
// [ '中华人民共和国', '武汉市', '长江大桥' ]
|
||||
```
|
||||
|
||||
# 示例 Demo
|
||||
|
||||
## 安装依赖
|
||||
|
||||
安装 wasm-bindgen 和 wasm-opt
|
||||
|
||||
```bash
|
||||
cargo install wasm-bindgen-cli --locked
|
||||
cargo install wasm-opt --locked
|
||||
```
|
||||
|
||||
## 前期准备
|
||||
|
||||
首先保证存在 rust 环境,然后运行以下命令
|
||||
```bash
|
||||
npm run build:cargo
|
||||
npm run build
|
||||
```
|
||||
|
||||
## 运行浏览器端示例
|
||||
```bash
|
||||
cd demo/web
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
# Piror Art
|
||||
|
||||
https://github.com/messense/jieba-rs
|
||||
73
libs/jieba-wasm/jieba_rs_wasm.d.ts
vendored
Normal file
73
libs/jieba-wasm/jieba_rs_wasm.d.ts
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
export function cut(text: string, hmm?: boolean | null): string[];
|
||||
export function cut_all(text: string): string[];
|
||||
export function cut_for_search(text: string, hmm?: boolean | null): string[];
|
||||
export function tokenize(text: string, mode: string, hmm?: boolean | null): Token[];
|
||||
export function add_word(word: string, freq?: number | null, tag?: string | null): number;
|
||||
export function tag(sentence: string, hmm?: boolean | null): Tag[];
|
||||
export function with_dict(dict: string): void;
|
||||
|
||||
/** Represents a single token with its word and position. */
|
||||
export interface Token {
|
||||
word: string;
|
||||
start: number;
|
||||
end: number;
|
||||
}
|
||||
|
||||
/** Represents a single word and its part-of-speech tag. */
|
||||
export interface Tag {
|
||||
word: string;
|
||||
tag: string;
|
||||
}
|
||||
|
||||
|
||||
|
||||
export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
|
||||
|
||||
export interface InitOutput {
|
||||
readonly memory: WebAssembly.Memory;
|
||||
readonly cut: (a: number, b: number, c: number) => [number, number];
|
||||
readonly cut_all: (a: number, b: number) => [number, number];
|
||||
readonly cut_for_search: (a: number, b: number, c: number) => [number, number];
|
||||
readonly tokenize: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
|
||||
readonly add_word: (a: number, b: number, c: number, d: number, e: number) => number;
|
||||
readonly tag: (a: number, b: number, c: number) => [number, number];
|
||||
readonly with_dict: (a: number, b: number) => [number, number];
|
||||
readonly rust_zstd_wasm_shim_qsort: (a: number, b: number, c: number, d: number) => void;
|
||||
readonly rust_zstd_wasm_shim_malloc: (a: number) => number;
|
||||
readonly rust_zstd_wasm_shim_memcmp: (a: number, b: number, c: number) => number;
|
||||
readonly rust_zstd_wasm_shim_calloc: (a: number, b: number) => number;
|
||||
readonly rust_zstd_wasm_shim_free: (a: number) => void;
|
||||
readonly rust_zstd_wasm_shim_memcpy: (a: number, b: number, c: number) => number;
|
||||
readonly rust_zstd_wasm_shim_memmove: (a: number, b: number, c: number) => number;
|
||||
readonly rust_zstd_wasm_shim_memset: (a: number, b: number, c: number) => number;
|
||||
readonly __wbindgen_malloc: (a: number, b: number) => number;
|
||||
readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
|
||||
readonly __wbindgen_export_2: WebAssembly.Table;
|
||||
readonly __externref_drop_slice: (a: number, b: number) => void;
|
||||
readonly __wbindgen_free: (a: number, b: number, c: number) => void;
|
||||
readonly __externref_table_dealloc: (a: number) => void;
|
||||
readonly __wbindgen_start: () => void;
|
||||
}
|
||||
|
||||
export type SyncInitInput = BufferSource | WebAssembly.Module;
|
||||
/**
|
||||
* Instantiates the given `module`, which can either be bytes or
|
||||
* a precompiled `WebAssembly.Module`.
|
||||
*
|
||||
* @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated.
|
||||
*
|
||||
* @returns {InitOutput}
|
||||
*/
|
||||
export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput;
|
||||
|
||||
/**
|
||||
* If `module_or_path` is {RequestInfo} or {URL}, makes a request and
|
||||
* for everything else, calls `WebAssembly.instantiate` directly.
|
||||
*
|
||||
* @param {{ module_or_path: InitInput | Promise<InitInput> }} module_or_path - Passing `InitInput` directly is deprecated.
|
||||
*
|
||||
* @returns {Promise<InitOutput>}
|
||||
*/
|
||||
export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise<InitInput> } | InitInput | Promise<InitInput>): Promise<InitOutput>;
|
||||
438
libs/jieba-wasm/jieba_rs_wasm.js
Normal file
438
libs/jieba-wasm/jieba_rs_wasm.js
Normal file
@@ -0,0 +1,438 @@
|
||||
let wasm;
|
||||
|
||||
let cachedUint8ArrayMemory0 = null;
|
||||
|
||||
function getUint8ArrayMemory0() {
|
||||
if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {
|
||||
cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);
|
||||
}
|
||||
return cachedUint8ArrayMemory0;
|
||||
}
|
||||
|
||||
let cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );
|
||||
|
||||
if (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };
|
||||
|
||||
const MAX_SAFARI_DECODE_BYTES = 2146435072;
|
||||
let numBytesDecoded = 0;
|
||||
function decodeText(ptr, len) {
|
||||
numBytesDecoded += len;
|
||||
if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {
|
||||
cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );
|
||||
cachedTextDecoder.decode();
|
||||
numBytesDecoded = len;
|
||||
}
|
||||
return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));
|
||||
}
|
||||
|
||||
function getStringFromWasm0(ptr, len) {
|
||||
ptr = ptr >>> 0;
|
||||
return decodeText(ptr, len);
|
||||
}
|
||||
|
||||
function debugString(val) {
|
||||
// primitive types
|
||||
const type = typeof val;
|
||||
if (type == 'number' || type == 'boolean' || val == null) {
|
||||
return `${val}`;
|
||||
}
|
||||
if (type == 'string') {
|
||||
return `"${val}"`;
|
||||
}
|
||||
if (type == 'symbol') {
|
||||
const description = val.description;
|
||||
if (description == null) {
|
||||
return 'Symbol';
|
||||
} else {
|
||||
return `Symbol(${description})`;
|
||||
}
|
||||
}
|
||||
if (type == 'function') {
|
||||
const name = val.name;
|
||||
if (typeof name == 'string' && name.length > 0) {
|
||||
return `Function(${name})`;
|
||||
} else {
|
||||
return 'Function';
|
||||
}
|
||||
}
|
||||
// objects
|
||||
if (Array.isArray(val)) {
|
||||
const length = val.length;
|
||||
let debug = '[';
|
||||
if (length > 0) {
|
||||
debug += debugString(val[0]);
|
||||
}
|
||||
for(let i = 1; i < length; i++) {
|
||||
debug += ', ' + debugString(val[i]);
|
||||
}
|
||||
debug += ']';
|
||||
return debug;
|
||||
}
|
||||
// Test for built-in
|
||||
const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val));
|
||||
let className;
|
||||
if (builtInMatches && builtInMatches.length > 1) {
|
||||
className = builtInMatches[1];
|
||||
} else {
|
||||
// Failed to match the standard '[object ClassName]'
|
||||
return toString.call(val);
|
||||
}
|
||||
if (className == 'Object') {
|
||||
// we're a user defined class or Object
|
||||
// JSON.stringify avoids problems with cycles, and is generally much
|
||||
// easier than looping through ownProperties of `val`.
|
||||
try {
|
||||
return 'Object(' + JSON.stringify(val) + ')';
|
||||
} catch (_) {
|
||||
return 'Object';
|
||||
}
|
||||
}
|
||||
// errors
|
||||
if (val instanceof Error) {
|
||||
return `${val.name}: ${val.message}\n${val.stack}`;
|
||||
}
|
||||
// TODO we could test for more things here, like `Set`s and `Map`s.
|
||||
return className;
|
||||
}
|
||||
|
||||
let WASM_VECTOR_LEN = 0;
|
||||
|
||||
const cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );
|
||||
|
||||
const encodeString = (typeof cachedTextEncoder.encodeInto === 'function'
|
||||
? function (arg, view) {
|
||||
return cachedTextEncoder.encodeInto(arg, view);
|
||||
}
|
||||
: function (arg, view) {
|
||||
const buf = cachedTextEncoder.encode(arg);
|
||||
view.set(buf);
|
||||
return {
|
||||
read: arg.length,
|
||||
written: buf.length
|
||||
};
|
||||
});
|
||||
|
||||
function passStringToWasm0(arg, malloc, realloc) {
|
||||
|
||||
if (realloc === undefined) {
|
||||
const buf = cachedTextEncoder.encode(arg);
|
||||
const ptr = malloc(buf.length, 1) >>> 0;
|
||||
getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);
|
||||
WASM_VECTOR_LEN = buf.length;
|
||||
return ptr;
|
||||
}
|
||||
|
||||
let len = arg.length;
|
||||
let ptr = malloc(len, 1) >>> 0;
|
||||
|
||||
const mem = getUint8ArrayMemory0();
|
||||
|
||||
let offset = 0;
|
||||
|
||||
for (; offset < len; offset++) {
|
||||
const code = arg.charCodeAt(offset);
|
||||
if (code > 0x7F) break;
|
||||
mem[ptr + offset] = code;
|
||||
}
|
||||
|
||||
if (offset !== len) {
|
||||
if (offset !== 0) {
|
||||
arg = arg.slice(offset);
|
||||
}
|
||||
ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;
|
||||
const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);
|
||||
const ret = encodeString(arg, view);
|
||||
|
||||
offset += ret.written;
|
||||
ptr = realloc(ptr, len, offset, 1) >>> 0;
|
||||
}
|
||||
|
||||
WASM_VECTOR_LEN = offset;
|
||||
return ptr;
|
||||
}
|
||||
|
||||
let cachedDataViewMemory0 = null;
|
||||
|
||||
function getDataViewMemory0() {
|
||||
if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {
|
||||
cachedDataViewMemory0 = new DataView(wasm.memory.buffer);
|
||||
}
|
||||
return cachedDataViewMemory0;
|
||||
}
|
||||
|
||||
function isLikeNone(x) {
|
||||
return x === undefined || x === null;
|
||||
}
|
||||
|
||||
function getArrayJsValueFromWasm0(ptr, len) {
|
||||
ptr = ptr >>> 0;
|
||||
const mem = getDataViewMemory0();
|
||||
const result = [];
|
||||
for (let i = ptr; i < ptr + 4 * len; i += 4) {
|
||||
result.push(wasm.__wbindgen_export_2.get(mem.getUint32(i, true)));
|
||||
}
|
||||
wasm.__externref_drop_slice(ptr, len);
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* @param {string} text
|
||||
* @param {boolean | null} [hmm]
|
||||
* @returns {string[]}
|
||||
*/
|
||||
export function cut(text, hmm) {
|
||||
const ptr0 = passStringToWasm0(text, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
||||
const len0 = WASM_VECTOR_LEN;
|
||||
const ret = wasm.cut(ptr0, len0, isLikeNone(hmm) ? 0xFFFFFF : hmm ? 1 : 0);
|
||||
var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
|
||||
wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
|
||||
return v2;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} text
|
||||
* @returns {string[]}
|
||||
*/
|
||||
export function cut_all(text) {
|
||||
const ptr0 = passStringToWasm0(text, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
||||
const len0 = WASM_VECTOR_LEN;
|
||||
const ret = wasm.cut_all(ptr0, len0);
|
||||
var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
|
||||
wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
|
||||
return v2;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} text
|
||||
* @param {boolean | null} [hmm]
|
||||
* @returns {string[]}
|
||||
*/
|
||||
export function cut_for_search(text, hmm) {
|
||||
const ptr0 = passStringToWasm0(text, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
||||
const len0 = WASM_VECTOR_LEN;
|
||||
const ret = wasm.cut_for_search(ptr0, len0, isLikeNone(hmm) ? 0xFFFFFF : hmm ? 1 : 0);
|
||||
var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
|
||||
wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
|
||||
return v2;
|
||||
}
|
||||
|
||||
function takeFromExternrefTable0(idx) {
|
||||
const value = wasm.__wbindgen_export_2.get(idx);
|
||||
wasm.__externref_table_dealloc(idx);
|
||||
return value;
|
||||
}
|
||||
/**
|
||||
* @param {string} text
|
||||
* @param {string} mode
|
||||
* @param {boolean | null} [hmm]
|
||||
* @returns {Token[]}
|
||||
*/
|
||||
export function tokenize(text, mode, hmm) {
|
||||
const ptr0 = passStringToWasm0(text, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
||||
const len0 = WASM_VECTOR_LEN;
|
||||
const ptr1 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
||||
const len1 = WASM_VECTOR_LEN;
|
||||
const ret = wasm.tokenize(ptr0, len0, ptr1, len1, isLikeNone(hmm) ? 0xFFFFFF : hmm ? 1 : 0);
|
||||
if (ret[3]) {
|
||||
throw takeFromExternrefTable0(ret[2]);
|
||||
}
|
||||
var v3 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
|
||||
wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
|
||||
return v3;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} word
|
||||
* @param {number | null} [freq]
|
||||
* @param {string | null} [tag]
|
||||
* @returns {number}
|
||||
*/
|
||||
export function add_word(word, freq, tag) {
|
||||
const ptr0 = passStringToWasm0(word, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
||||
const len0 = WASM_VECTOR_LEN;
|
||||
var ptr1 = isLikeNone(tag) ? 0 : passStringToWasm0(tag, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
||||
var len1 = WASM_VECTOR_LEN;
|
||||
const ret = wasm.add_word(ptr0, len0, isLikeNone(freq) ? 0x100000001 : (freq) >>> 0, ptr1, len1);
|
||||
return ret >>> 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} sentence
|
||||
* @param {boolean | null} [hmm]
|
||||
* @returns {Tag[]}
|
||||
*/
|
||||
export function tag(sentence, hmm) {
|
||||
const ptr0 = passStringToWasm0(sentence, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
||||
const len0 = WASM_VECTOR_LEN;
|
||||
const ret = wasm.tag(ptr0, len0, isLikeNone(hmm) ? 0xFFFFFF : hmm ? 1 : 0);
|
||||
var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
|
||||
wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
|
||||
return v2;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} dict
|
||||
*/
|
||||
export function with_dict(dict) {
|
||||
const ptr0 = passStringToWasm0(dict, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
||||
const len0 = WASM_VECTOR_LEN;
|
||||
const ret = wasm.with_dict(ptr0, len0);
|
||||
if (ret[1]) {
|
||||
throw takeFromExternrefTable0(ret[0]);
|
||||
}
|
||||
}
|
||||
|
||||
const EXPECTED_RESPONSE_TYPES = new Set(['basic', 'cors', 'default']);
|
||||
|
||||
async function __wbg_load(module, imports) {
|
||||
if (typeof Response === 'function' && module instanceof Response) {
|
||||
if (typeof WebAssembly.instantiateStreaming === 'function') {
|
||||
try {
|
||||
return await WebAssembly.instantiateStreaming(module, imports);
|
||||
|
||||
} catch (e) {
|
||||
const validResponse = module.ok && EXPECTED_RESPONSE_TYPES.has(module.type);
|
||||
|
||||
if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {
|
||||
console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e);
|
||||
|
||||
} else {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const bytes = await module.arrayBuffer();
|
||||
return await WebAssembly.instantiate(bytes, imports);
|
||||
|
||||
} else {
|
||||
const instance = await WebAssembly.instantiate(module, imports);
|
||||
|
||||
if (instance instanceof WebAssembly.Instance) {
|
||||
return { instance, module };
|
||||
|
||||
} else {
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function __wbg_get_imports() {
|
||||
const imports = {};
|
||||
imports.wbg = {};
|
||||
imports.wbg.__wbg_Error_0497d5bdba9362e5 = function(arg0, arg1) {
|
||||
const ret = Error(getStringFromWasm0(arg0, arg1));
|
||||
return ret;
|
||||
};
|
||||
imports.wbg.__wbg_new_07b483f72211fd66 = function() {
|
||||
const ret = new Object();
|
||||
return ret;
|
||||
};
|
||||
imports.wbg.__wbg_set_3f1d0b984ed272ed = function(arg0, arg1, arg2) {
|
||||
arg0[arg1] = arg2;
|
||||
};
|
||||
imports.wbg.__wbindgen_bigint_from_u64 = function(arg0) {
|
||||
const ret = BigInt.asUintN(64, arg0);
|
||||
return ret;
|
||||
};
|
||||
imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {
|
||||
const ret = debugString(arg1);
|
||||
const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
||||
const len1 = WASM_VECTOR_LEN;
|
||||
getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
|
||||
getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
|
||||
};
|
||||
imports.wbg.__wbindgen_init_externref_table = function() {
|
||||
const table = wasm.__wbindgen_export_2;
|
||||
const offset = table.grow(4);
|
||||
table.set(0, undefined);
|
||||
table.set(offset + 0, undefined);
|
||||
table.set(offset + 1, null);
|
||||
table.set(offset + 2, true);
|
||||
table.set(offset + 3, false);
|
||||
;
|
||||
};
|
||||
imports.wbg.__wbindgen_number_new = function(arg0) {
|
||||
const ret = arg0;
|
||||
return ret;
|
||||
};
|
||||
imports.wbg.__wbindgen_string_new = function(arg0, arg1) {
|
||||
const ret = getStringFromWasm0(arg0, arg1);
|
||||
return ret;
|
||||
};
|
||||
imports.wbg.__wbindgen_throw = function(arg0, arg1) {
|
||||
throw new Error(getStringFromWasm0(arg0, arg1));
|
||||
};
|
||||
|
||||
return imports;
|
||||
}
|
||||
|
||||
function __wbg_init_memory(imports, memory) {
|
||||
|
||||
}
|
||||
|
||||
function __wbg_finalize_init(instance, module) {
|
||||
wasm = instance.exports;
|
||||
__wbg_init.__wbindgen_wasm_module = module;
|
||||
cachedDataViewMemory0 = null;
|
||||
cachedUint8ArrayMemory0 = null;
|
||||
|
||||
|
||||
wasm.__wbindgen_start();
|
||||
return wasm;
|
||||
}
|
||||
|
||||
function initSync(module) {
|
||||
if (wasm !== undefined) return wasm;
|
||||
|
||||
|
||||
if (typeof module !== 'undefined') {
|
||||
if (Object.getPrototypeOf(module) === Object.prototype) {
|
||||
({module} = module)
|
||||
} else {
|
||||
console.warn('using deprecated parameters for `initSync()`; pass a single object instead')
|
||||
}
|
||||
}
|
||||
|
||||
const imports = __wbg_get_imports();
|
||||
|
||||
__wbg_init_memory(imports);
|
||||
|
||||
if (!(module instanceof WebAssembly.Module)) {
|
||||
module = new WebAssembly.Module(module);
|
||||
}
|
||||
|
||||
const instance = new WebAssembly.Instance(module, imports);
|
||||
|
||||
return __wbg_finalize_init(instance, module);
|
||||
}
|
||||
|
||||
async function __wbg_init(module_or_path) {
|
||||
if (wasm !== undefined) return wasm;
|
||||
|
||||
|
||||
if (typeof module_or_path !== 'undefined') {
|
||||
if (Object.getPrototypeOf(module_or_path) === Object.prototype) {
|
||||
({module_or_path} = module_or_path)
|
||||
} else {
|
||||
console.warn('using deprecated parameters for the initialization function; pass a single object instead')
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof module_or_path === 'undefined') {
|
||||
module_or_path = new URL('jieba_rs_wasm_bg.wasm', import.meta.url);
|
||||
}
|
||||
const imports = __wbg_get_imports();
|
||||
|
||||
if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {
|
||||
module_or_path = fetch(module_or_path);
|
||||
}
|
||||
|
||||
__wbg_init_memory(imports);
|
||||
|
||||
const { instance, module } = await __wbg_load(await module_or_path, imports);
|
||||
|
||||
return __wbg_finalize_init(instance, module);
|
||||
}
|
||||
|
||||
export { initSync };
|
||||
export default __wbg_init;
|
||||
BIN
libs/jieba-wasm/jieba_rs_wasm_bg.wasm
Normal file
BIN
libs/jieba-wasm/jieba_rs_wasm_bg.wasm
Normal file
Binary file not shown.
25
libs/jieba-wasm/jieba_rs_wasm_bg.wasm.d.ts
vendored
Normal file
25
libs/jieba-wasm/jieba_rs_wasm_bg.wasm.d.ts
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
export const memory: WebAssembly.Memory;
|
||||
export const cut: (a: number, b: number, c: number) => [number, number];
|
||||
export const cut_all: (a: number, b: number) => [number, number];
|
||||
export const cut_for_search: (a: number, b: number, c: number) => [number, number];
|
||||
export const tokenize: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
|
||||
export const add_word: (a: number, b: number, c: number, d: number, e: number) => number;
|
||||
export const tag: (a: number, b: number, c: number) => [number, number];
|
||||
export const with_dict: (a: number, b: number) => [number, number];
|
||||
export const rust_zstd_wasm_shim_qsort: (a: number, b: number, c: number, d: number) => void;
|
||||
export const rust_zstd_wasm_shim_malloc: (a: number) => number;
|
||||
export const rust_zstd_wasm_shim_memcmp: (a: number, b: number, c: number) => number;
|
||||
export const rust_zstd_wasm_shim_calloc: (a: number, b: number) => number;
|
||||
export const rust_zstd_wasm_shim_free: (a: number) => void;
|
||||
export const rust_zstd_wasm_shim_memcpy: (a: number, b: number, c: number) => number;
|
||||
export const rust_zstd_wasm_shim_memmove: (a: number, b: number, c: number) => number;
|
||||
export const rust_zstd_wasm_shim_memset: (a: number, b: number, c: number) => number;
|
||||
export const __wbindgen_malloc: (a: number, b: number) => number;
|
||||
export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
|
||||
export const __wbindgen_export_2: WebAssembly.Table;
|
||||
export const __externref_drop_slice: (a: number, b: number) => void;
|
||||
export const __wbindgen_free: (a: number, b: number, c: number) => void;
|
||||
export const __externref_table_dealloc: (a: number) => void;
|
||||
export const __wbindgen_start: () => void;
|
||||
129
libs/jieba-wasm/package.json
Normal file
129
libs/jieba-wasm/package.json
Normal file
@@ -0,0 +1,129 @@
|
||||
{
|
||||
"name": "jieba-wasm",
|
||||
"version": "2.4.0",
|
||||
"description": "WASM binding to jieba-rs",
|
||||
"main": "./pkg/nodejs/jieba_rs_wasm.js",
|
||||
"types": "./pkg/nodejs/jieba_rs_wasm.d.ts",
|
||||
"exports": {
|
||||
".": {
|
||||
"node": {
|
||||
"types": "./pkg/nodejs/jieba_rs_wasm.d.ts",
|
||||
"default": "./pkg/nodejs/jieba_rs_wasm.js"
|
||||
},
|
||||
"deno": {
|
||||
"types": "./pkg/deno/jieba_rs_wasm.d.ts",
|
||||
"default": "./pkg/deno/jieba_rs_wasm.js"
|
||||
},
|
||||
"browser": {
|
||||
"types": "./pkg/web/jieba_rs_wasm.d.ts",
|
||||
"default": "./pkg/web/jieba_rs_wasm.js"
|
||||
},
|
||||
"import": {
|
||||
"types": "./pkg/web/jieba_rs_wasm.d.ts",
|
||||
"default": "./pkg/web/jieba_rs_wasm.js"
|
||||
},
|
||||
"require": {
|
||||
"types": "./pkg/nodejs/jieba_rs_wasm.d.ts",
|
||||
"default": "./pkg/nodejs/jieba_rs_wasm.js"
|
||||
}
|
||||
},
|
||||
"./web": {
|
||||
"types": "./pkg/web/jieba_rs_wasm.d.ts",
|
||||
"default": "./pkg/web/jieba_rs_wasm.js"
|
||||
},
|
||||
"./node": {
|
||||
"types": "./pkg/nodejs/jieba_rs_wasm.d.ts",
|
||||
"default": "./pkg/nodejs/jieba_rs_wasm.js"
|
||||
},
|
||||
"./deno": {
|
||||
"types": "./pkg/deno/jieba_rs_wasm.d.ts",
|
||||
"default": "./pkg/deno/jieba_rs_wasm.js"
|
||||
}
|
||||
},
|
||||
"directories": {
|
||||
"test": "tests"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "wireit",
|
||||
"build:cargo": "wireit",
|
||||
"build:bundler": "wireit",
|
||||
"build:nodejs": "wireit",
|
||||
"build:deno": "wireit",
|
||||
"build:web": "wireit",
|
||||
"build:opt": "wireit",
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"wireit": {
|
||||
"build:cargo": {
|
||||
"command": "cargo build --release --target wasm32-unknown-unknown"
|
||||
},
|
||||
"build:bundler": {
|
||||
"command": "wasm-bindgen target/wasm32-unknown-unknown/release/jieba_rs_wasm.wasm --out-dir ./pkg/bundler --target bundler",
|
||||
"dependencies": [
|
||||
"build:cargo"
|
||||
]
|
||||
},
|
||||
"build:nodejs": {
|
||||
"command": "wasm-bindgen target/wasm32-unknown-unknown/release/jieba_rs_wasm.wasm --out-dir ./pkg/nodejs --target nodejs",
|
||||
"dependencies": [
|
||||
"build:cargo"
|
||||
]
|
||||
},
|
||||
"build:deno": {
|
||||
"command": "wasm-bindgen target/wasm32-unknown-unknown/release/jieba_rs_wasm.wasm --out-dir ./pkg/deno --target deno",
|
||||
"dependencies": [
|
||||
"build:cargo"
|
||||
]
|
||||
},
|
||||
"build:web": {
|
||||
"command": "wasm-bindgen target/wasm32-unknown-unknown/release/jieba_rs_wasm.wasm --out-dir ./pkg/web --target web",
|
||||
"dependencies": [
|
||||
"build:cargo"
|
||||
]
|
||||
},
|
||||
"build": {
|
||||
"dependencies": [
|
||||
"build:cargo",
|
||||
"build:bundler",
|
||||
"build:nodejs",
|
||||
"build:deno",
|
||||
"build:web",
|
||||
"build:opt"
|
||||
]
|
||||
},
|
||||
"build:opt": {
|
||||
"command": "node scripts/opt.js",
|
||||
"dependencies": [
|
||||
"build:cargo",
|
||||
"build:bundler",
|
||||
"build:nodejs",
|
||||
"build:deno",
|
||||
"build:web"
|
||||
]
|
||||
}
|
||||
},
|
||||
"files": [
|
||||
"pkg/**/*"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/fengkx/jieba-wasm.git"
|
||||
},
|
||||
"keywords": [
|
||||
"wasm",
|
||||
"jieba",
|
||||
"chinese",
|
||||
"segment",
|
||||
"中文分词"
|
||||
],
|
||||
"author": "fengkx",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/fengkx/jieba-wasm/issues"
|
||||
},
|
||||
"homepage": "https://github.com/fengkx/jieba-wasm#readme",
|
||||
"devDependencies": {
|
||||
"@jsdevtools/ez-spawn": "^3.0.4",
|
||||
"wireit": "^0.14.4"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user