@ohos-ports/nodejieba 0.0.0-stage → 3.5.8-beta.0

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.
Files changed (55) hide show
  1. package/CHANGELOG.md +360 -0
  2. package/LICENSE +21 -0
  3. package/README.md +270 -2
  4. package/binding.gyp +63 -0
  5. package/build/Release/nodejieba.node +0 -0
  6. package/index.js +77 -0
  7. package/lib/index.cpp +3 -0
  8. package/lib/nodejieba.cpp +218 -0
  9. package/lib/nodejieba.h +28 -0
  10. package/lib/utils.h +47 -0
  11. package/package.json +62 -4
  12. package/submodules/cppjieba/CHANGELOG.md +305 -0
  13. package/submodules/cppjieba/deps/limonp/CHANGELOG.md +160 -0
  14. package/submodules/cppjieba/deps/limonp/include/limonp/ArgvContext.hpp +70 -0
  15. package/submodules/cppjieba/deps/limonp/include/limonp/Closure.hpp +206 -0
  16. package/submodules/cppjieba/deps/limonp/include/limonp/Colors.hpp +31 -0
  17. package/submodules/cppjieba/deps/limonp/include/limonp/Condition.hpp +38 -0
  18. package/submodules/cppjieba/deps/limonp/include/limonp/Config.hpp +103 -0
  19. package/submodules/cppjieba/deps/limonp/include/limonp/ForcePublic.hpp +7 -0
  20. package/submodules/cppjieba/deps/limonp/include/limonp/LocalVector.hpp +139 -0
  21. package/submodules/cppjieba/deps/limonp/include/limonp/Logging.hpp +90 -0
  22. package/submodules/cppjieba/deps/limonp/include/limonp/NonCopyable.hpp +21 -0
  23. package/submodules/cppjieba/deps/limonp/include/limonp/StdExtension.hpp +157 -0
  24. package/submodules/cppjieba/deps/limonp/include/limonp/StringUtil.hpp +386 -0
  25. package/submodules/cppjieba/dict/README.md +31 -0
  26. package/submodules/cppjieba/dict/hmm_model.utf8 +34 -0
  27. package/submodules/cppjieba/dict/idf.utf8 +258826 -0
  28. package/submodules/cppjieba/dict/jieba.dict.utf8 +348982 -0
  29. package/submodules/cppjieba/dict/pos_dict/char_state_tab.utf8 +6653 -0
  30. package/submodules/cppjieba/dict/pos_dict/prob_emit.utf8 +166 -0
  31. package/submodules/cppjieba/dict/pos_dict/prob_start.utf8 +259 -0
  32. package/submodules/cppjieba/dict/pos_dict/prob_trans.utf8 +5222 -0
  33. package/submodules/cppjieba/dict/stop_words.utf8 +1534 -0
  34. package/submodules/cppjieba/dict/user.dict.utf8 +4 -0
  35. package/submodules/cppjieba/include/cppjieba/DictTrie.hpp +285 -0
  36. package/submodules/cppjieba/include/cppjieba/FullSegment.hpp +93 -0
  37. package/submodules/cppjieba/include/cppjieba/HMMModel.hpp +129 -0
  38. package/submodules/cppjieba/include/cppjieba/HMMSegment.hpp +190 -0
  39. package/submodules/cppjieba/include/cppjieba/Jieba.hpp +169 -0
  40. package/submodules/cppjieba/include/cppjieba/KeywordExtractor.hpp +153 -0
  41. package/submodules/cppjieba/include/cppjieba/MPSegment.hpp +137 -0
  42. package/submodules/cppjieba/include/cppjieba/MixSegment.hpp +109 -0
  43. package/submodules/cppjieba/include/cppjieba/PosTagger.hpp +77 -0
  44. package/submodules/cppjieba/include/cppjieba/PreFilter.hpp +54 -0
  45. package/submodules/cppjieba/include/cppjieba/QuerySegment.hpp +89 -0
  46. package/submodules/cppjieba/include/cppjieba/SegmentBase.hpp +46 -0
  47. package/submodules/cppjieba/include/cppjieba/SegmentTagged.hpp +23 -0
  48. package/submodules/cppjieba/include/cppjieba/TextRankExtractor.hpp +190 -0
  49. package/submodules/cppjieba/include/cppjieba/Trie.hpp +200 -0
  50. package/submodules/cppjieba/include/cppjieba/Unicode.hpp +227 -0
  51. package/test/load_dict_test.js +14 -0
  52. package/test/missing_binding_test.js +42 -0
  53. package/test/test.js +366 -0
  54. package/test/testdata/userdict.utf8 +1 -0
  55. package/types/index.d.ts +30 -0
package/binding.gyp ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "targets": [
3
+ {
4
+ "target_name": "nodejieba",
5
+ "cflags!": [ "-fno-exceptions" ],
6
+ "cflags_cc!": [ "-fno-exceptions" ],
7
+ "xcode_settings": {
8
+ "GCC_ENABLE_CPP_EXCEPTIONS": "YES",
9
+ "CLANG_CXX_LIBRARY": "libc++",
10
+ "MACOSX_DEPLOYMENT_TARGET": "10.13",
11
+ },
12
+ "msvs_settings": {
13
+ "VCCLCompilerTool": {
14
+ "ExceptionHandling": 1,
15
+ "AdditionalOptions": ["/std:c++14","/utf-8"]
16
+ },
17
+ },
18
+ "win_delay_load_hook": "true",
19
+ "sources": [
20
+ "./lib/index.cpp",
21
+ "./lib/nodejieba.cpp",
22
+ ],
23
+ "cflags": [
24
+ "-DLOGGING_LEVEL=LL_WARNING"
25
+ ],
26
+ "include_dirs" : [
27
+ "<!(node -p \"require('node-addon-api').include_dir\")",
28
+ "./submodules/cppjieba/include",
29
+ "./submodules/cppjieba/deps/limonp/include",
30
+ ],
31
+ 'configurations': {
32
+ 'Release': {
33
+ 'msvs_settings': {
34
+ 'VCCLCompilerTool': {
35
+ 'ExceptionHandling': '1',
36
+ 'PreprocessorDefinitions': ['LOGGING_LEVEL=LL_WARNING'],
37
+ }
38
+ }
39
+ }
40
+ },
41
+ "conditions": [
42
+ [ "OS == 'mac'", {
43
+ "xcode_settings": {
44
+ "OTHER_CPLUSPLUSFLAGS":[
45
+ "-mmacosx-version-min=10.13",
46
+ "-std=c++14",
47
+ "-stdlib=libc++",
48
+ "-DLOGGING_LEVEL=LL_WARNING",
49
+ ]
50
+ }
51
+ }],
52
+ # 添加Windows特定条件
53
+ [ "OS == 'win'", {
54
+ "msvs_settings": {
55
+ "VCCLCompilerTool": {
56
+ "AdditionalOptions": ["/std:c++14"]
57
+ }
58
+ }
59
+ }]
60
+ ],
61
+ }
62
+ ]
63
+ }
Binary file
package/index.js ADDED
@@ -0,0 +1,77 @@
1
+ var path = require('path');
2
+ var BINARY_PATH = path.join(__dirname, 'build/Release/nodejieba.node');
3
+ var nodejieba;
4
+ var bindingLoadError;
5
+
6
+ function getNodejieba() {
7
+ if (nodejieba) {
8
+ return nodejieba;
9
+ }
10
+ if (bindingLoadError) {
11
+ throw bindingLoadError;
12
+ }
13
+ try {
14
+ nodejieba = require(BINARY_PATH);
15
+ return nodejieba;
16
+ } catch (err) {
17
+ if (err && err.code === 'MODULE_NOT_FOUND') {
18
+ bindingLoadError = new Error(
19
+ "nodejieba native binding was not found at " + BINARY_PATH + ". " +
20
+ "This usually means install scripts were skipped or the native binary failed to download/build. " +
21
+ "Try reinstalling without --ignore-scripts or run `npm rebuild nodejieba`."
22
+ );
23
+ bindingLoadError.code = 'BINDING_NOT_FOUND';
24
+ bindingLoadError.cause = err;
25
+ throw bindingLoadError;
26
+ }
27
+ throw err;
28
+ }
29
+ }
30
+
31
+ var isDictLoaded = false;
32
+
33
+ var DICT_DIR = __dirname + "/submodules/cppjieba/dict/";
34
+
35
+ var exports = {
36
+ DEFAULT_DICT: DICT_DIR + "jieba.dict.utf8",
37
+ DEFAULT_HMM_DICT: DICT_DIR + "hmm_model.utf8",
38
+ DEFAULT_USER_DICT: DICT_DIR + "user.dict.utf8",
39
+ DEFAULT_IDF_DICT: DICT_DIR + "idf.utf8",
40
+ DEFAULT_STOP_WORD_DICT: DICT_DIR + "stop_words.utf8",
41
+
42
+ load: function (dictJson) {
43
+ if (!dictJson) {
44
+ dictJson = {};
45
+ }
46
+ dict = dictJson.dict || exports.DEFAULT_DICT;
47
+ hmmDict = dictJson.hmmDict || exports.DEFAULT_HMM_DICT;
48
+ userDict = dictJson.userDict || exports.DEFAULT_USER_DICT;
49
+ idfDict = dictJson.idfDict || exports.DEFAULT_IDF_DICT;
50
+ stopWordDict = dictJson.stopWordDict || exports.DEFAULT_STOP_WORD_DICT;
51
+
52
+ var result = getNodejieba().load(dict, hmmDict, userDict, idfDict, stopWordDict);
53
+ isDictLoaded = true;
54
+ return result;
55
+ }
56
+ };
57
+
58
+ function wrapWithDictLoad(functName) {
59
+ exports[functName] = function () {
60
+ if (!isDictLoaded) {
61
+ exports.load();
62
+ }
63
+ return getNodejieba()[functName].apply(this, arguments);
64
+ }
65
+ }
66
+
67
+ wrapWithDictLoad("cut");
68
+ wrapWithDictLoad("cutAll");
69
+ wrapWithDictLoad("cutHMM");
70
+ wrapWithDictLoad("cutForSearch");
71
+ wrapWithDictLoad("cutSmall");
72
+ wrapWithDictLoad("tag");
73
+ wrapWithDictLoad("extract");
74
+ wrapWithDictLoad("textRankExtract");
75
+ wrapWithDictLoad("insertWord");
76
+
77
+ module.exports = exports;
package/lib/index.cpp ADDED
@@ -0,0 +1,3 @@
1
+ #include "nodejieba.h"
2
+
3
+ NODE_API_ADDON(NodeJieba)
@@ -0,0 +1,218 @@
1
+ #include "nodejieba.h"
2
+
3
+ #include "utils.h"
4
+
5
+ #include "cppjieba/Jieba.hpp"
6
+ #include "cppjieba/KeywordExtractor.hpp"
7
+ #include "cppjieba/TextRankExtractor.hpp"
8
+
9
+ NodeJieba::NodeJieba(Napi::Env env, Napi::Object exports) {
10
+ DefineAddon(exports, {
11
+ InstanceMethod("load", &NodeJieba::load),
12
+ InstanceMethod("cut", &NodeJieba::cut),
13
+ InstanceMethod("cutAll", &NodeJieba::cutAll),
14
+ InstanceMethod("cutHMM", &NodeJieba::cutHMM),
15
+ InstanceMethod("cutForSearch", &NodeJieba::cutForSearch),
16
+ InstanceMethod("cutSmall", &NodeJieba::cutSmall),
17
+ InstanceMethod("tag", &NodeJieba::tag),
18
+ InstanceMethod("extract", &NodeJieba::extract),
19
+ InstanceMethod("textRankExtract", &NodeJieba::textRankExtract),
20
+ InstanceMethod("insertWord", &NodeJieba::insertWord)
21
+ });
22
+ }
23
+
24
+ Napi::Value NodeJieba::load(const Napi::CallbackInfo& info) {
25
+ if (info.Length() != 5) {
26
+ return Napi::Boolean::New(info.Env(), false);
27
+ }
28
+
29
+ std::string dictPath = info[0].As<Napi::String>();
30
+ std::string modelPath = info[1].As<Napi::String>();
31
+ std::string userDictPath = info[2].As<Napi::String>();
32
+ std::string idfPath = info[3].As<Napi::String>();
33
+ std::string stopWordsPath = info[4].As<Napi::String>();
34
+
35
+ delete _jieba_handle;
36
+ _jieba_handle = new cppjieba::Jieba(dictPath,
37
+ modelPath,
38
+ userDictPath,
39
+ idfPath,
40
+ stopWordsPath);
41
+
42
+ delete _text_rank_extractor_handle;
43
+ _text_rank_extractor_handle = new cppjieba
44
+ ::TextRankExtractor(dictPath,
45
+ modelPath,
46
+ stopWordsPath,
47
+ userDictPath);
48
+
49
+ return Napi::Boolean::New(info.Env(), true);
50
+ }
51
+
52
+ Napi::Value NodeJieba::insertWord(const Napi::CallbackInfo& info) {
53
+ if(info.Length() < 1) {
54
+ return Napi::Boolean::New(info.Env(), false);
55
+ }
56
+ std::string word = info[0].As<Napi::String>();
57
+ std::string tag = "x";
58
+ if(info.Length() > 1) {
59
+ tag = info[1].As<Napi::String>();
60
+ }
61
+
62
+ if( !_jieba_handle ){
63
+ Napi::Error::New(info.Env(), "Before calling any other function you have to call load() first").ThrowAsJavaScriptException();
64
+ }
65
+
66
+ if(!_jieba_handle->InsertUserWord(word, tag)) {
67
+ return Napi::Boolean::New(info.Env(), false);
68
+ }
69
+
70
+ return Napi::Boolean::New(info.Env(), true);
71
+ }
72
+
73
+ Napi::Value NodeJieba::cut(const Napi::CallbackInfo& info) {
74
+ if (info.Length() == 0) {
75
+ return Napi::Boolean::New(info.Env(), false);
76
+ }
77
+ std::string sentence = info[0].As<Napi::String>();
78
+ bool useHMM = false;
79
+ if (info.Length() > 1) {
80
+ useHMM = info[1].As<Napi::Boolean>();
81
+ }
82
+
83
+ if( !_jieba_handle ){
84
+ Napi::Error::New(info.Env(), "Before calling any other function you have to call load() first").ThrowAsJavaScriptException();
85
+ }
86
+
87
+ std::vector<std::string> words;
88
+ _jieba_handle->Cut(sentence, words, useHMM);
89
+ Napi::Array outArray;
90
+ WrapVector(info.Env(), words, outArray);
91
+ return outArray;
92
+ }
93
+
94
+ Napi::Value NodeJieba::cutHMM(const Napi::CallbackInfo& info) {
95
+ if (info.Length() == 0) {
96
+ return Napi::Boolean::New(info.Env(), false);
97
+ }
98
+ std::string sentence = info[0].As<Napi::String>();
99
+
100
+ if( !_jieba_handle ){
101
+ Napi::Error::New(info.Env(), "Before calling any other function you have to call load() first").ThrowAsJavaScriptException();
102
+ }
103
+
104
+ std::vector<std::string> words;
105
+ _jieba_handle->CutHMM(sentence, words);
106
+ Napi::Array outArray;
107
+ WrapVector(info.Env(), words, outArray);
108
+ return outArray;
109
+ }
110
+
111
+ Napi::Value NodeJieba::cutAll(const Napi::CallbackInfo& info) {
112
+ if (info.Length() == 0) {
113
+ return Napi::Boolean::New(info.Env(), false);
114
+ }
115
+ std::string sentence = info[0].As<Napi::String>();
116
+
117
+ if( !_jieba_handle ){
118
+ Napi::Error::New(info.Env(), "Before calling any other function you have to call load() first").ThrowAsJavaScriptException();
119
+ }
120
+
121
+ std::vector<std::string> words;
122
+ _jieba_handle->CutAll(sentence, words);
123
+ Napi::Array outArray;
124
+ WrapVector(info.Env(), words, outArray);
125
+ return outArray;
126
+ }
127
+
128
+ Napi::Value NodeJieba::cutForSearch(const Napi::CallbackInfo& info) {
129
+ if (info.Length() == 0) {
130
+ return Napi::Boolean::New(info.Env(), false);
131
+ }
132
+ std::string sentence = info[0].As<Napi::String>();
133
+ bool useHMM = false;
134
+ if (info.Length() > 1) {
135
+ useHMM = info[1].As<Napi::Boolean>();
136
+ }
137
+
138
+ if( !_jieba_handle ){
139
+ Napi::Error::New(info.Env(), "Before calling any other function you have to call load() first").ThrowAsJavaScriptException();
140
+ }
141
+
142
+ std::vector<std::string> words;
143
+ _jieba_handle->CutForSearch(sentence, words, useHMM);
144
+ Napi::Array outArray;
145
+ WrapVector(info.Env(), words, outArray);
146
+ return outArray;
147
+ }
148
+
149
+ Napi::Value NodeJieba::cutSmall(const Napi::CallbackInfo& info) {
150
+ if (info.Length() < 2) {
151
+ return Napi::Boolean::New(info.Env(), false);
152
+ }
153
+ std::string sentence = info[0].As<Napi::String>();
154
+ size_t word_len_limit = info[1].As<Napi::Number>().Int32Value();
155
+
156
+ if( !_jieba_handle ){
157
+ Napi::Error::New(info.Env(), "Before calling any other function you have to call load() first").ThrowAsJavaScriptException();
158
+ }
159
+
160
+ std::vector<std::string> words;
161
+ _jieba_handle->CutSmall(sentence, words, word_len_limit);
162
+ Napi::Array outArray;
163
+ WrapVector(info.Env(), words, outArray);
164
+ return outArray;
165
+ }
166
+
167
+ Napi::Value NodeJieba::tag(const Napi::CallbackInfo& info) {
168
+ if (info.Length() == 0) {
169
+ return Napi::Boolean::New(info.Env(), false);
170
+ }
171
+ std::string sentence = info[0].As<Napi::String>();
172
+
173
+ if( !_jieba_handle ){
174
+ Napi::Error::New(info.Env(), "Before calling any other function you have to call load() first").ThrowAsJavaScriptException();
175
+ }
176
+
177
+ std::vector<std::pair<std::string, std::string> > words;
178
+ _jieba_handle->Tag(sentence, words);
179
+ Napi::Array outArray;
180
+ WrapPairVector(info.Env(), words, outArray);
181
+ return outArray;
182
+ }
183
+
184
+ Napi::Value NodeJieba::extract(const Napi::CallbackInfo& info) {
185
+ if (info.Length() != 2) {
186
+ return Napi::Boolean::New(info.Env(), false);
187
+ }
188
+ std::string sentence = info[0].As<Napi::String>();
189
+ size_t topN = info[1].As<Napi::Number>().Int32Value();
190
+
191
+ if( !_jieba_handle ){
192
+ Napi::Error::New(info.Env(), "Before calling any other function you have to call load() first").ThrowAsJavaScriptException();
193
+ }
194
+
195
+ std::vector<std::pair<std::string, double> > words;
196
+ _jieba_handle->extractor.Extract(sentence, words, topN);
197
+ Napi::Array outArray;
198
+ WrapPairVector(info.Env(), words, outArray);
199
+ return outArray;
200
+ }
201
+
202
+ Napi::Value NodeJieba::textRankExtract(const Napi::CallbackInfo& info) {
203
+ if (info.Length() != 2) {
204
+ return Napi::Boolean::New(info.Env(), false);
205
+ }
206
+ std::string sentence = info[0].As<Napi::String>();
207
+ size_t topN = info[1].As<Napi::Number>().Int32Value();
208
+
209
+ if( !_text_rank_extractor_handle ){
210
+ Napi::Error::New(info.Env(), "Before calling any other function you have to call load() first").ThrowAsJavaScriptException();
211
+ }
212
+
213
+ std::vector<std::pair<std::string, double> > words;
214
+ _text_rank_extractor_handle->Extract(sentence, words, topN);
215
+ Napi::Array outArray;
216
+ WrapPairVector(info.Env(), words, outArray);
217
+ return outArray;
218
+ }
@@ -0,0 +1,28 @@
1
+ #ifndef NODEJIBEA_SRC_NODEJIEBA_H
2
+ #define NODEJIBEA_SRC_NODEJIEBA_H
3
+
4
+ #include <napi.h>
5
+
6
+ namespace cppjieba{ class Jieba; class TextRankExtractor; }
7
+
8
+ class NodeJieba : public Napi::Addon<NodeJieba> {
9
+ public:
10
+ NodeJieba(Napi::Env env, Napi::Object exports);
11
+
12
+ private:
13
+ Napi::Value load(const Napi::CallbackInfo& info);
14
+ Napi::Value cut(const Napi::CallbackInfo& info);
15
+ Napi::Value cutAll(const Napi::CallbackInfo& info);
16
+ Napi::Value cutHMM(const Napi::CallbackInfo& info);
17
+ Napi::Value cutForSearch(const Napi::CallbackInfo& info);
18
+ Napi::Value cutSmall(const Napi::CallbackInfo& info);
19
+ Napi::Value tag(const Napi::CallbackInfo& info);
20
+ Napi::Value extract(const Napi::CallbackInfo& info);
21
+ Napi::Value textRankExtract(const Napi::CallbackInfo& info);
22
+ Napi::Value insertWord(const Napi::CallbackInfo& info);
23
+
24
+ cppjieba::Jieba* _jieba_handle{nullptr};
25
+ cppjieba::TextRankExtractor* _text_rank_extractor_handle{nullptr};
26
+ };
27
+
28
+ #endif // NODEJIBEA_SRC_NODEJIEBA_H
package/lib/utils.h ADDED
@@ -0,0 +1,47 @@
1
+ #ifndef NODEJIEBA_SRC_UTLS_H
2
+ #define NODEJIEBA_SRC_UTLS_H
3
+
4
+ #include <string>
5
+ #include <utility>
6
+ #include <vector>
7
+
8
+ inline void WrapVector(Napi::Env env, std::vector<std::string> &ov, Napi::Array &array) {
9
+ array = Napi::Array::New(env, ov.size());
10
+ for(size_t i = 0; i < ov.size(); i++) {
11
+ array.Set(i, Napi::String::New(env, ov[i]));
12
+ }
13
+ }
14
+
15
+ inline void WrapPairVector(Napi::Env env, std::vector<std::pair<std::string,double> > &ov, Napi::Array &array) {
16
+ array = Napi::Array::New(env, ov.size());
17
+ for(size_t i = 0; i < ov.size(); i++) {
18
+ Napi::Object obj = Napi::Object::New(env);
19
+ Napi::Value k;
20
+ Napi::Value v;
21
+ k = Napi::String::New(env, "word");
22
+ v = Napi::String::New(env, ov[i].first);
23
+ obj.Set(k, v);
24
+ k = Napi::String::New(env, "weight");
25
+ v = Napi::Number::New(env, ov[i].second);
26
+ obj.Set(k, v);
27
+ array.Set(i, obj);
28
+ }
29
+ }
30
+
31
+ inline void WrapPairVector(Napi::Env env, std::vector<std::pair<std::string,std::string> > &ov, Napi::Array &array) {
32
+ array = Napi::Array::New(env, ov.size());
33
+ for(size_t i = 0; i < ov.size(); i++) {
34
+ Napi::Object obj = Napi::Object::New(env);
35
+ Napi::Value k;
36
+ Napi::Value v;
37
+ k = Napi::String::New(env, "word");
38
+ v = Napi::String::New(env, ov[i].first);
39
+ obj.Set(k, v);
40
+ k = Napi::String::New(env, "tag");
41
+ v = Napi::String::New(env, ov[i].second);
42
+ obj.Set(k, v);
43
+ array.Set(i, obj);
44
+ }
45
+ }
46
+
47
+ #endif
package/package.json CHANGED
@@ -1,6 +1,64 @@
1
1
  {
2
2
  "name": "@ohos-ports/nodejieba",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "description": "chinese word segmentation for node",
4
+ "version": "3.5.8-beta.0",
5
+ "author": "Yanyi Wu <wuyanyi09@foxmail.com>",
6
+ "maintainers": [
7
+ "Yanyi Wu <wuyanyi09@foxmail.com>"
8
+ ],
9
+ "main": "./index.js",
10
+ "typings": "types/index.d.ts",
11
+ "engines": {
12
+ "node": ">= 14.0.0"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/ohos-ports/ohos-ports.git",
17
+ "directory": "ports/nodejieba/3.5.8"
18
+ },
19
+ "keywords": [
20
+ "chinese",
21
+ "segment",
22
+ "cppjieba",
23
+ "jieba",
24
+ "中文分词",
25
+ "结巴分词"
26
+ ],
27
+ "dependencies": {
28
+ "@mapbox/node-pre-gyp": "^1.0.10",
29
+ "node-addon-api": "^5.1.0"
30
+ },
31
+ "devDependencies": {
32
+ "mocha": "~10.7.3",
33
+ "should": "~13.2.3",
34
+ "typescript": "^5.0.4"
35
+ },
36
+ "scripts": {
37
+ "test": "mocha --timeout 10s -R spec test/test.js && mocha --timeout 10s -R spec test/load_dict_test.js && mocha --timeout 10s -R spec test/missing_binding_test.js",
38
+ "install": "npx @mapbox/node-pre-gyp install --fallback-to-build",
39
+ "rebuild": "npx @mapbox/node-pre-gyp rebuild"
40
+ },
41
+ "binary": {
42
+ "module_name": "nodejieba",
43
+ "module_path": "./build/Release/",
44
+ "host": "https://github.com/yanyiwu/nodejieba/releases/download/",
45
+ "remote_path": "v{version}",
46
+ "package_name": "{module_name}-v{version}-{node_abi}-{platform}-{arch}-{libc}.tar.gz"
47
+ },
48
+ "license": "MIT",
49
+ "bugs": {
50
+ "url": "https://github.com/ohos-ports/ohos-ports/issues"
51
+ },
52
+ "files": [
53
+ "index.js",
54
+ "lib/",
55
+ "types/",
56
+ "binding.gyp",
57
+ "submodules/cppjieba/dict/",
58
+ "submodules/cppjieba/include/",
59
+ "submodules/cppjieba/deps/limonp/include/",
60
+ "build/Release/*.node",
61
+ "CHANGELOG.md",
62
+ "test/"
63
+ ]
64
+ }