mol_text_distance 0.0.1
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/.nojekyll +0 -0
- package/README.md +41 -0
- package/node.audit.js +1 -0
- package/node.d.ts +28 -0
- package/node.deps.json +1 -0
- package/node.esm.js +84 -0
- package/node.esm.js.map +1 -0
- package/node.js +83 -0
- package/node.js.map +1 -0
- package/node.test.js +1737 -0
- package/node.test.js.map +1 -0
- package/package.json +16 -0
- package/test.html +17 -0
- package/web.audit.js +1 -0
- package/web.css +1 -0
- package/web.css.map +1 -0
- package/web.d.ts +28 -0
- package/web.deps.json +1 -0
- package/web.esm.js +84 -0
- package/web.esm.js.map +1 -0
- package/web.js +83 -0
- package/web.js.map +1 -0
- package/web.test.js +932 -0
- package/web.test.js.map +1 -0
package/.nojekyll
ADDED
|
File without changes
|
package/README.md
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# $mol_text_distance
|
|
2
|
+
|
|
3
|
+
Calculates the lexicographical distance between two texts.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
// 0.18
|
|
9
|
+
$mol_text_distance(
|
|
10
|
+
`little meerkat jumps over big elephant`,
|
|
11
|
+
`over little elephant jumps big meerkat`,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
// 0.66
|
|
15
|
+
$mol_text_distance(
|
|
16
|
+
`A structural comparison of arbitrary objects is discussed.`,
|
|
17
|
+
`Application of caching for correct comparison of cyclic references is disclosed.`,
|
|
18
|
+
)
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Algorithm
|
|
22
|
+
|
|
23
|
+
- A simple and fast.
|
|
24
|
+
- Normalized from 0 to 1.
|
|
25
|
+
- Rearrangement of words gives short distance.
|
|
26
|
+
- Independent of texts length.
|
|
27
|
+
- Independent of changes position.
|
|
28
|
+
- Complexity O(n).
|
|
29
|
+
- Memory usage O(log n).
|
|
30
|
+
|
|
31
|
+
## NPM Bundle
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
npm install mol_text_distance
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
1KB [](https://bundlephobia.com/package/mol_text_distance)
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
import { $mol_text_distance } from 'mol_text_distance'
|
|
41
|
+
```
|
package/node.audit.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
console.info("Audit passed")
|
package/node.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
declare let _$_: {
|
|
2
|
+
new (): {};
|
|
3
|
+
} & typeof globalThis;
|
|
4
|
+
declare class $ extends _$_ {
|
|
5
|
+
}
|
|
6
|
+
declare namespace $ {
|
|
7
|
+
export type $ = typeof $$;
|
|
8
|
+
export class $$ extends $ {
|
|
9
|
+
}
|
|
10
|
+
namespace $$ {
|
|
11
|
+
type $$ = $;
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
declare namespace $ {
|
|
17
|
+
function $mol_text_key(text: string): Map<string, number>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
declare namespace $ {
|
|
21
|
+
function $mol_text_key_distance(left: Map<string, number>, right: Map<string, number>): number;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
declare namespace $ {
|
|
25
|
+
function $mol_text_distance(left: string, right: string): number;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export = $;
|
package/node.deps.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"files":["LICENSE","README.md","lang.lang.tree","mam.jam.js","mam.ts","package.json","sandbox.config.json","tsconfig.json","tsfmt.json","yarn.lock","mol/CNAME","mol/CODE_OF_CONDUCT.md","mol/CONTRIBUTING.md","mol/LICENSE","mol/index.html","mol/mol.meta.tree","mol/readme.md","mol/text/key/key.ts","mol/text/key/distance/distance.ts","mol/text/distance/distance.ts","mol/text/distance/readme.md"],"mods":{},"deps_in":{"mol/text":{"mol/text/distance":-9007199254740991,"mol/text/key":-9007199254740991},"mol":{"mol/text":-9007199254740991},"":{"mol":-9007199254740991},"mol/text/key/distance":{"mol/text/distance":-2},"mol/text/key":{"mol/text/key/distance":-9007199254740991,"mol/text/distance":-3}},"deps_out":{"mol/text/distance":{"mol/text":-9007199254740991,"mol/text/key/distance":-2,"mol/text/key":-3},"mol/text":{"mol":-9007199254740991},"mol":{"":-9007199254740991},"mol/text/key/distance":{"mol/text/key":-9007199254740991},"mol/text/key":{"mol/text":-9007199254740991}},"sloc":{"LICENSE":113,"md":501,"tree":31,"js":10,"ts":55,"json":85,"lock":994,"CNAME":1,"html":1},"deps":{"mol/text/distance":{"..":-9007199254740991,"/mol/text/distance":-1,"/mol/text/key/distance":-2,"/mol/text/key":-3},"mol/text":{"..":-9007199254740991},"mol":{"..":-9007199254740991},"":{},"mol/text/key/distance":{"..":-9007199254740991,"/mol/text/key/distance":-1},"mol/text/key":{"..":-9007199254740991,"/mol/text/key":-1}}}
|
package/node.esm.js
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var exports = void 0;
|
|
3
|
+
"use strict"
|
|
4
|
+
|
|
5
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
6
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
7
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
8
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if ((d = decorators[i])) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
9
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
var globalThis = globalThis || ( typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : this )
|
|
13
|
+
var $ = ( typeof module === 'object' ) ? ( module['export'+'s'] = globalThis ) : globalThis
|
|
14
|
+
$.$$ = $
|
|
15
|
+
|
|
16
|
+
;
|
|
17
|
+
|
|
18
|
+
var $node = $node || {}
|
|
19
|
+
void function( module ) { var exports = module.exports = this; function require( id ) { return $node[ id.replace( /^.\// , "../" ) ] };
|
|
20
|
+
;
|
|
21
|
+
"use strict";
|
|
22
|
+
Error.stackTraceLimit = 50;
|
|
23
|
+
var $;
|
|
24
|
+
(function ($) {
|
|
25
|
+
})($ || ($ = {}));
|
|
26
|
+
module.exports = $;
|
|
27
|
+
//mam.ts
|
|
28
|
+
;
|
|
29
|
+
|
|
30
|
+
$node[ "../mam.ts" ] = $node[ "../mam.ts" ] = module.exports }.call( {} , {} )
|
|
31
|
+
;
|
|
32
|
+
"use strict";
|
|
33
|
+
var $;
|
|
34
|
+
(function ($) {
|
|
35
|
+
function $mol_text_key(text) {
|
|
36
|
+
text = '\n\n' + text + '\r\r';
|
|
37
|
+
const key = new Map();
|
|
38
|
+
for (let i = 0; i < text.length - 2; ++i) {
|
|
39
|
+
const trigram = text.slice(i, i + 3);
|
|
40
|
+
const count = key.get(trigram) ?? 0;
|
|
41
|
+
key.set(trigram, count + 1);
|
|
42
|
+
}
|
|
43
|
+
return key;
|
|
44
|
+
}
|
|
45
|
+
$.$mol_text_key = $mol_text_key;
|
|
46
|
+
})($ || ($ = {}));
|
|
47
|
+
//mol/text/key/key.ts
|
|
48
|
+
;
|
|
49
|
+
"use strict";
|
|
50
|
+
var $;
|
|
51
|
+
(function ($) {
|
|
52
|
+
function $mol_text_key_distance(left, right) {
|
|
53
|
+
let dist = -4;
|
|
54
|
+
let total = -4;
|
|
55
|
+
for (const [trigram, left_count] of left) {
|
|
56
|
+
total += left_count;
|
|
57
|
+
const right_count = right.get(trigram) ?? 0;
|
|
58
|
+
dist += Math.abs(left_count - right_count);
|
|
59
|
+
}
|
|
60
|
+
for (const [trigram, right_count] of right) {
|
|
61
|
+
total += right_count;
|
|
62
|
+
const left_count = left.get(trigram) ?? 0;
|
|
63
|
+
dist += Math.abs(left_count - right_count);
|
|
64
|
+
}
|
|
65
|
+
if (dist < 0)
|
|
66
|
+
return 0;
|
|
67
|
+
return dist / total;
|
|
68
|
+
}
|
|
69
|
+
$.$mol_text_key_distance = $mol_text_key_distance;
|
|
70
|
+
})($ || ($ = {}));
|
|
71
|
+
//mol/text/key/distance/distance.ts
|
|
72
|
+
;
|
|
73
|
+
"use strict";
|
|
74
|
+
var $;
|
|
75
|
+
(function ($) {
|
|
76
|
+
function $mol_text_distance(left, right) {
|
|
77
|
+
return $mol_text_key_distance($mol_text_key(left), $mol_text_key(right));
|
|
78
|
+
}
|
|
79
|
+
$.$mol_text_distance = $mol_text_distance;
|
|
80
|
+
})($ || ($ = {}));
|
|
81
|
+
//mol/text/distance/distance.ts
|
|
82
|
+
;
|
|
83
|
+
export default $
|
|
84
|
+
//# sourceMappingURL=node.esm.js.map
|
package/node.esm.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../mam.jam.js","-","../../../../mam.ts","../../key/mol/text/key/key.ts","../../key/distance/mol/text/key/distance/distance.ts","../mol/text/distance/distance.ts"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACbA;AACA;AACA;AACA;;ACHA,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC;AAK3B,IAAU,CAAC,CAMV;AAND,WAAU,CAAC;AAMX,CAAC,EANS,CAAC,KAAD,CAAC,QAMV;AAED,MAAM,CAAC,OAAO,GAAG,CAAC,CAAA;;;ADblB;AACA;AACA;;AEFA,IAAU,CAAC,CAaV;AAbD,WAAU,CAAC;IAEV,SAAgB,aAAa,CAAE,IAAY;QAC1C,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAA;QAC7B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAoB,CAAA;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,EAAG,CAAC,EAAG;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAE,CAAA;YACtC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAE,OAAO,CAAE,IAAI,CAAC,CAAA;YACrC,GAAG,CAAC,GAAG,CAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAE,CAAA;SAC7B;QACD,OAAO,GAAG,CAAA;IACX,CAAC;IATe,eAAa,gBAS5B,CAAA;AAEF,CAAC,EAbS,CAAC,KAAD,CAAC,QAaV;;;;ACbD,IAAU,CAAC,CA2BV;AA3BD,WAAU,CAAC;IAEV,SAAgB,sBAAsB,CACrC,IAA2B,EAC3B,KAA4B;QAG5B,IAAI,IAAI,GAAG,CAAC,CAAC,CAAA;QACb,IAAI,KAAK,GAAG,CAAC,CAAC,CAAA;QAEd,KAAK,MAAM,CAAE,OAAO,EAAE,UAAU,CAAE,IAAI,IAAI,EAAG;YAC5C,KAAK,IAAI,UAAU,CAAA;YACnB,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAE,OAAO,CAAE,IAAI,CAAC,CAAA;YAC7C,IAAI,IAAI,IAAI,CAAC,GAAG,CAAE,UAAU,GAAG,WAAW,CAAE,CAAA;SAC5C;QAED,KAAK,MAAM,CAAE,OAAO,EAAE,WAAW,CAAE,IAAI,KAAK,EAAG;YAC9C,KAAK,IAAI,WAAW,CAAA;YACpB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAE,OAAO,CAAE,IAAI,CAAC,CAAA;YAC3C,IAAI,IAAI,IAAI,CAAC,GAAG,CAAE,UAAU,GAAG,WAAW,CAAE,CAAA;SAC5C;QAED,IAAI,IAAI,GAAG,CAAC;YAAG,OAAO,CAAC,CAAA;QAEvB,OAAO,IAAI,GAAG,KAAK,CAAA;IACpB,CAAC;IAvBe,wBAAsB,yBAuBrC,CAAA;AAEF,CAAC,EA3BS,CAAC,KAAD,CAAC,QA2BV;;;;AC3BD,IAAU,CAAC,CAYV;AAZD,WAAU,CAAC;IAEV,SAAgB,kBAAkB,CACjC,IAAY,EACZ,KAAa;QAEb,OAAO,sBAAsB,CAC5B,aAAa,CAAE,IAAI,CAAE,EACrB,aAAa,CAAE,KAAK,CAAE,CACtB,CAAA;IACF,CAAC;IARe,oBAAkB,qBAQjC,CAAA;AAEF,CAAC,EAZS,CAAC,KAAD,CAAC,QAYV;;;AJZD","file":"node.esm.js","sourcesContent":[null,null,"Error.stackTraceLimit = 50;\n\ndeclare let _$_: { new(): {} } & typeof globalThis\ndeclare class $ extends _$_ {}\n\nnamespace $ {\n\texport type $ = typeof $$\n\texport declare class $$ extends $ {}\n\tnamespace $$ {\n\t\texport type $$ = $\n\t}\n}\n\nmodule.exports = $\n","namespace $ {\n\t\n\texport function $mol_text_key( text: string ) {\n\t\ttext = '\\n\\n' + text + '\\r\\r'\n\t\tconst key = new Map< string, number >()\n\t\tfor( let i = 0; i < text.length - 2; ++ i ) {\n\t\t\tconst trigram = text.slice( i, i + 3 )\n\t\t\tconst count = key.get( trigram ) ?? 0\n\t\t\tkey.set( trigram, count + 1 )\n\t\t}\n\t\treturn key\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_text_key_distance(\n\t\tleft: Map< string, number >,\n\t\tright: Map< string, number >,\n\t) {\n\t\t\n\t\tlet dist = -4\n\t\tlet total = -4\n\t\t\n\t\tfor( const [ trigram, left_count ] of left ) {\n\t\t\ttotal += left_count\n\t\t\tconst right_count = right.get( trigram ) ?? 0\n\t\t\tdist += Math.abs( left_count - right_count )\n\t\t}\n\t\t\n\t\tfor( const [ trigram, right_count ] of right ) {\n\t\t\ttotal += right_count\n\t\t\tconst left_count = left.get( trigram ) ?? 0\n\t\t\tdist += Math.abs( left_count - right_count )\n\t\t}\n\t\t\n\t\tif( dist < 0 ) return 0\n\t\t\n\t\treturn dist / total\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_text_distance(\n\t\tleft: string,\n\t\tright: string,\n\t) {\n\t\treturn $mol_text_key_distance(\n\t\t\t$mol_text_key( left ),\n\t\t\t$mol_text_key( right ),\n\t\t)\n\t}\n\t\n}\n"]}
|
package/node.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var exports = void 0;
|
|
3
|
+
"use strict"
|
|
4
|
+
|
|
5
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
6
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
7
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
8
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if ((d = decorators[i])) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
9
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
var globalThis = globalThis || ( typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : this )
|
|
13
|
+
var $ = ( typeof module === 'object' ) ? ( module['export'+'s'] = globalThis ) : globalThis
|
|
14
|
+
$.$$ = $
|
|
15
|
+
|
|
16
|
+
;
|
|
17
|
+
|
|
18
|
+
var $node = $node || {}
|
|
19
|
+
void function( module ) { var exports = module.exports = this; function require( id ) { return $node[ id.replace( /^.\// , "../" ) ] };
|
|
20
|
+
;
|
|
21
|
+
"use strict";
|
|
22
|
+
Error.stackTraceLimit = 50;
|
|
23
|
+
var $;
|
|
24
|
+
(function ($) {
|
|
25
|
+
})($ || ($ = {}));
|
|
26
|
+
module.exports = $;
|
|
27
|
+
//mam.ts
|
|
28
|
+
;
|
|
29
|
+
|
|
30
|
+
$node[ "../mam.ts" ] = $node[ "../mam.ts" ] = module.exports }.call( {} , {} )
|
|
31
|
+
;
|
|
32
|
+
"use strict";
|
|
33
|
+
var $;
|
|
34
|
+
(function ($) {
|
|
35
|
+
function $mol_text_key(text) {
|
|
36
|
+
text = '\n\n' + text + '\r\r';
|
|
37
|
+
const key = new Map();
|
|
38
|
+
for (let i = 0; i < text.length - 2; ++i) {
|
|
39
|
+
const trigram = text.slice(i, i + 3);
|
|
40
|
+
const count = key.get(trigram) ?? 0;
|
|
41
|
+
key.set(trigram, count + 1);
|
|
42
|
+
}
|
|
43
|
+
return key;
|
|
44
|
+
}
|
|
45
|
+
$.$mol_text_key = $mol_text_key;
|
|
46
|
+
})($ || ($ = {}));
|
|
47
|
+
//mol/text/key/key.ts
|
|
48
|
+
;
|
|
49
|
+
"use strict";
|
|
50
|
+
var $;
|
|
51
|
+
(function ($) {
|
|
52
|
+
function $mol_text_key_distance(left, right) {
|
|
53
|
+
let dist = -4;
|
|
54
|
+
let total = -4;
|
|
55
|
+
for (const [trigram, left_count] of left) {
|
|
56
|
+
total += left_count;
|
|
57
|
+
const right_count = right.get(trigram) ?? 0;
|
|
58
|
+
dist += Math.abs(left_count - right_count);
|
|
59
|
+
}
|
|
60
|
+
for (const [trigram, right_count] of right) {
|
|
61
|
+
total += right_count;
|
|
62
|
+
const left_count = left.get(trigram) ?? 0;
|
|
63
|
+
dist += Math.abs(left_count - right_count);
|
|
64
|
+
}
|
|
65
|
+
if (dist < 0)
|
|
66
|
+
return 0;
|
|
67
|
+
return dist / total;
|
|
68
|
+
}
|
|
69
|
+
$.$mol_text_key_distance = $mol_text_key_distance;
|
|
70
|
+
})($ || ($ = {}));
|
|
71
|
+
//mol/text/key/distance/distance.ts
|
|
72
|
+
;
|
|
73
|
+
"use strict";
|
|
74
|
+
var $;
|
|
75
|
+
(function ($) {
|
|
76
|
+
function $mol_text_distance(left, right) {
|
|
77
|
+
return $mol_text_key_distance($mol_text_key(left), $mol_text_key(right));
|
|
78
|
+
}
|
|
79
|
+
$.$mol_text_distance = $mol_text_distance;
|
|
80
|
+
})($ || ($ = {}));
|
|
81
|
+
//mol/text/distance/distance.ts
|
|
82
|
+
|
|
83
|
+
//# sourceMappingURL=node.js.map
|
package/node.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../mam.jam.js","-","../../../../mam.ts","../../key/mol/text/key/key.ts","../../key/distance/mol/text/key/distance/distance.ts","../mol/text/distance/distance.ts"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACbA;AACA;AACA;AACA;;ACHA,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC;AAK3B,IAAU,CAAC,CAMV;AAND,WAAU,CAAC;AAMX,CAAC,EANS,CAAC,KAAD,CAAC,QAMV;AAED,MAAM,CAAC,OAAO,GAAG,CAAC,CAAA;;;ADblB;AACA;AACA;;AEFA,IAAU,CAAC,CAaV;AAbD,WAAU,CAAC;IAEV,SAAgB,aAAa,CAAE,IAAY;QAC1C,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAA;QAC7B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAoB,CAAA;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,EAAG,CAAC,EAAG;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAE,CAAA;YACtC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAE,OAAO,CAAE,IAAI,CAAC,CAAA;YACrC,GAAG,CAAC,GAAG,CAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAE,CAAA;SAC7B;QACD,OAAO,GAAG,CAAA;IACX,CAAC;IATe,eAAa,gBAS5B,CAAA;AAEF,CAAC,EAbS,CAAC,KAAD,CAAC,QAaV;;;;ACbD,IAAU,CAAC,CA2BV;AA3BD,WAAU,CAAC;IAEV,SAAgB,sBAAsB,CACrC,IAA2B,EAC3B,KAA4B;QAG5B,IAAI,IAAI,GAAG,CAAC,CAAC,CAAA;QACb,IAAI,KAAK,GAAG,CAAC,CAAC,CAAA;QAEd,KAAK,MAAM,CAAE,OAAO,EAAE,UAAU,CAAE,IAAI,IAAI,EAAG;YAC5C,KAAK,IAAI,UAAU,CAAA;YACnB,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAE,OAAO,CAAE,IAAI,CAAC,CAAA;YAC7C,IAAI,IAAI,IAAI,CAAC,GAAG,CAAE,UAAU,GAAG,WAAW,CAAE,CAAA;SAC5C;QAED,KAAK,MAAM,CAAE,OAAO,EAAE,WAAW,CAAE,IAAI,KAAK,EAAG;YAC9C,KAAK,IAAI,WAAW,CAAA;YACpB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAE,OAAO,CAAE,IAAI,CAAC,CAAA;YAC3C,IAAI,IAAI,IAAI,CAAC,GAAG,CAAE,UAAU,GAAG,WAAW,CAAE,CAAA;SAC5C;QAED,IAAI,IAAI,GAAG,CAAC;YAAG,OAAO,CAAC,CAAA;QAEvB,OAAO,IAAI,GAAG,KAAK,CAAA;IACpB,CAAC;IAvBe,wBAAsB,yBAuBrC,CAAA;AAEF,CAAC,EA3BS,CAAC,KAAD,CAAC,QA2BV;;;;AC3BD,IAAU,CAAC,CAYV;AAZD,WAAU,CAAC;IAEV,SAAgB,kBAAkB,CACjC,IAAY,EACZ,KAAa;QAEb,OAAO,sBAAsB,CAC5B,aAAa,CAAE,IAAI,CAAE,EACrB,aAAa,CAAE,KAAK,CAAE,CACtB,CAAA;IACF,CAAC;IARe,oBAAkB,qBAQjC,CAAA;AAEF,CAAC,EAZS,CAAC,KAAD,CAAC,QAYV;;","file":"node.js","sourcesContent":[null,null,"Error.stackTraceLimit = 50;\n\ndeclare let _$_: { new(): {} } & typeof globalThis\ndeclare class $ extends _$_ {}\n\nnamespace $ {\n\texport type $ = typeof $$\n\texport declare class $$ extends $ {}\n\tnamespace $$ {\n\t\texport type $$ = $\n\t}\n}\n\nmodule.exports = $\n","namespace $ {\n\t\n\texport function $mol_text_key( text: string ) {\n\t\ttext = '\\n\\n' + text + '\\r\\r'\n\t\tconst key = new Map< string, number >()\n\t\tfor( let i = 0; i < text.length - 2; ++ i ) {\n\t\t\tconst trigram = text.slice( i, i + 3 )\n\t\t\tconst count = key.get( trigram ) ?? 0\n\t\t\tkey.set( trigram, count + 1 )\n\t\t}\n\t\treturn key\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_text_key_distance(\n\t\tleft: Map< string, number >,\n\t\tright: Map< string, number >,\n\t) {\n\t\t\n\t\tlet dist = -4\n\t\tlet total = -4\n\t\t\n\t\tfor( const [ trigram, left_count ] of left ) {\n\t\t\ttotal += left_count\n\t\t\tconst right_count = right.get( trigram ) ?? 0\n\t\t\tdist += Math.abs( left_count - right_count )\n\t\t}\n\t\t\n\t\tfor( const [ trigram, right_count ] of right ) {\n\t\t\ttotal += right_count\n\t\t\tconst left_count = left.get( trigram ) ?? 0\n\t\t\tdist += Math.abs( left_count - right_count )\n\t\t}\n\t\t\n\t\tif( dist < 0 ) return 0\n\t\t\n\t\treturn dist / total\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_text_distance(\n\t\tleft: string,\n\t\tright: string,\n\t) {\n\t\treturn $mol_text_key_distance(\n\t\t\t$mol_text_key( left ),\n\t\t\t$mol_text_key( right ),\n\t\t)\n\t}\n\t\n}\n"]}
|