@rudra-js/core 0.7.2 → 0.7.3
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claim-screening.d.ts","sourceRoot":"","sources":["../src/claim-screening.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"claim-screening.d.ts","sourceRoot":"","sources":["../src/claim-screening.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAmKlE,eAAO,MAAM,eAAe,UAAkE,CAAC;AAc/F,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAOvD;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC9B;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,CAWzD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWnD"}
|
package/dist/claim-screening.js
CHANGED
|
@@ -96,19 +96,41 @@ const CONFUSABLES = {
|
|
|
96
96
|
τ: 't',
|
|
97
97
|
υ: 'u',
|
|
98
98
|
χ: 'x',
|
|
99
|
+
ϳ: 'j',
|
|
100
|
+
ѵ: 'v',
|
|
101
|
+
};
|
|
102
|
+
// Capitals that lowercasing reads wrong: Ν becomes ν, which reads as v.
|
|
103
|
+
const CAPITALS = {
|
|
104
|
+
Β: 'b',
|
|
105
|
+
Ζ: 'z',
|
|
106
|
+
Η: 'h',
|
|
107
|
+
Μ: 'm',
|
|
108
|
+
Ν: 'n',
|
|
109
|
+
Υ: 'y',
|
|
110
|
+
Ү: 'y',
|
|
111
|
+
Ӏ: 'i',
|
|
112
|
+
Ԛ: 'q',
|
|
113
|
+
Ԝ: 'w',
|
|
114
|
+
Ϻ: 'm',
|
|
115
|
+
Ϝ: 'f',
|
|
116
|
+
Ԍ: 'g',
|
|
99
117
|
};
|
|
100
118
|
const INVISIBLE = /[\p{Cf}\p{Default_Ignorable_Code_Point}\p{Cc}]/gu;
|
|
101
119
|
const SPACING = /[\t\n\v\f\r\u0085]/;
|
|
102
120
|
const MARKS = /[\p{Mn}\p{Me}]/gu;
|
|
103
|
-
function normaliseForClaims(text) {
|
|
121
|
+
function normaliseForClaims(text, byLook) {
|
|
104
122
|
// NFKC would turn the lunate sigmas into ς and Σ, which the fold can't read as c.
|
|
105
|
-
const
|
|
123
|
+
const compatible = text
|
|
106
124
|
.replace(INVISIBLE, (char) => (SPACING.test(char) ? char : ''))
|
|
107
125
|
.replace(/[ϲϹ]/g, 'c')
|
|
108
|
-
.normalize('NFKC')
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
126
|
+
.normalize('NFKC');
|
|
127
|
+
let cased = compatible;
|
|
128
|
+
if (byLook) {
|
|
129
|
+
cased = '';
|
|
130
|
+
for (const char of compatible)
|
|
131
|
+
cased += CAPITALS[char] ?? char;
|
|
132
|
+
}
|
|
133
|
+
const lowered = cased.toLowerCase().normalize('NFC').replace(MARKS, '');
|
|
112
134
|
let folded = '';
|
|
113
135
|
for (const char of lowered)
|
|
114
136
|
folded += CONFUSABLES[char] ?? char;
|
|
@@ -146,11 +168,14 @@ export function hostFacts(input) {
|
|
|
146
168
|
return { pooled: [...pooled], bySku };
|
|
147
169
|
}
|
|
148
170
|
export function claimIn(text) {
|
|
149
|
-
|
|
150
|
-
for (const
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
171
|
+
// Read twice, since Ν reads as N but ν as v.
|
|
172
|
+
for (const byLook of [false, true]) {
|
|
173
|
+
const normalised = normaliseForClaims(text, byLook);
|
|
174
|
+
for (const claim of CLAIM_PATTERNS) {
|
|
175
|
+
for (const pattern of claim.patterns) {
|
|
176
|
+
if (pattern.test(normalised))
|
|
177
|
+
return claim.kind;
|
|
178
|
+
}
|
|
154
179
|
}
|
|
155
180
|
}
|
|
156
181
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claim-screening.js","sourceRoot":"","sources":["../src/claim-screening.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,MAAM,cAAc,GAA2C;IAC7D;QACE,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE;YACR,2BAA2B;YAC3B,mDAAmD;YACnD,0BAA0B;YAE1B,kEAAkE;YAElE,+BAA+B;YAE/B,0CAA0C;YAC1C,yDAAyD;YAEzD,yEAAyE;YAEzE,kCAAkC;YAElC,6DAA6D;YAC7D,+CAA+C;SAChD;KACF;IACD;QACE,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE;YACR,SAAS;YACT,6DAA6D;YAE7D,yBAAyB;YAEzB,wBAAwB;YAExB,qBAAqB;YACrB,yBAAyB;YAEzB,6DAA6D;YAE7D,qBAAqB;YACrB,4BAA4B;YAE5B,2DAA2D;YAC3D,yBAAyB;YAEzB,kDAAkD;SACnD;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,qEAAqE;YACrE,iGAAiG;YACjG,uBAAuB;YACvB,sCAAsC;YACtC,6BAA6B;YAE7B,8BAA8B;YAE9B,4DAA4D;YAE5D,8GAA8G;SAC/G;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,2BAA2B;YAC3B,iDAAiD;YACjD,kMAAkM;YAClM,qDAAqD;YACrD,iBAAiB;SAClB;KACF;IACD;QACE,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE;YACR,gCAAgC;YAChC,mBAAmB;YACnB,6BAA6B;YAE7B,sFAAsF;YACtF,mEAAmE;SACpE;KACF;CACF,CAAC;AAEF,MAAM,WAAW,GAA2B;IAC1C,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;CACP,CAAC;AAEF,MAAM,SAAS,GAAG,kDAAkD,CAAC;AAErE,MAAM,OAAO,GAAG,oBAAoB,CAAC;AAErC,MAAM,KAAK,GAAG,kBAAkB,CAAC;AAEjC,SAAS,kBAAkB,CAAC,IAAY;
|
|
1
|
+
{"version":3,"file":"claim-screening.js","sourceRoot":"","sources":["../src/claim-screening.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rudra-js/core",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.3",
|
|
4
4
|
"description": "The contracts and logic that turn one tracking payload into one renderable component specification",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"llm",
|
|
@@ -54,10 +54,10 @@
|
|
|
54
54
|
"zod": "^4.0.0"
|
|
55
55
|
},
|
|
56
56
|
"peerDependencies": {
|
|
57
|
-
"@rudra-js/attested": "^0.7.
|
|
57
|
+
"@rudra-js/attested": "^0.7.3"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
|
-
"@rudra-js/attested": "0.7.
|
|
60
|
+
"@rudra-js/attested": "0.7.3",
|
|
61
61
|
"@types/node": "^26.4.1"
|
|
62
62
|
}
|
|
63
63
|
}
|
package/src/claim-screening.ts
CHANGED
|
@@ -116,6 +116,25 @@ const CONFUSABLES: Record<string, string> = {
|
|
|
116
116
|
τ: 't',
|
|
117
117
|
υ: 'u',
|
|
118
118
|
χ: 'x',
|
|
119
|
+
ϳ: 'j',
|
|
120
|
+
ѵ: 'v',
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
// Capitals that lowercasing reads wrong: Ν becomes ν, which reads as v.
|
|
124
|
+
const CAPITALS: Record<string, string> = {
|
|
125
|
+
Β: 'b',
|
|
126
|
+
Ζ: 'z',
|
|
127
|
+
Η: 'h',
|
|
128
|
+
Μ: 'm',
|
|
129
|
+
Ν: 'n',
|
|
130
|
+
Υ: 'y',
|
|
131
|
+
Ү: 'y',
|
|
132
|
+
Ӏ: 'i',
|
|
133
|
+
Ԛ: 'q',
|
|
134
|
+
Ԝ: 'w',
|
|
135
|
+
Ϻ: 'm',
|
|
136
|
+
Ϝ: 'f',
|
|
137
|
+
Ԍ: 'g',
|
|
119
138
|
};
|
|
120
139
|
|
|
121
140
|
const INVISIBLE = /[\p{Cf}\p{Default_Ignorable_Code_Point}\p{Cc}]/gu;
|
|
@@ -124,15 +143,19 @@ const SPACING = /[\t\n\v\f\r\u0085]/;
|
|
|
124
143
|
|
|
125
144
|
const MARKS = /[\p{Mn}\p{Me}]/gu;
|
|
126
145
|
|
|
127
|
-
function normaliseForClaims(text: string): string {
|
|
146
|
+
function normaliseForClaims(text: string, byLook: boolean): string {
|
|
128
147
|
// NFKC would turn the lunate sigmas into ς and Σ, which the fold can't read as c.
|
|
129
|
-
const
|
|
148
|
+
const compatible = text
|
|
130
149
|
.replace(INVISIBLE, (char) => (SPACING.test(char) ? char : ''))
|
|
131
150
|
.replace(/[ϲϹ]/g, 'c')
|
|
132
|
-
.normalize('NFKC')
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
151
|
+
.normalize('NFKC');
|
|
152
|
+
|
|
153
|
+
let cased = compatible;
|
|
154
|
+
if (byLook) {
|
|
155
|
+
cased = '';
|
|
156
|
+
for (const char of compatible) cased += CAPITALS[char] ?? char;
|
|
157
|
+
}
|
|
158
|
+
const lowered = cased.toLowerCase().normalize('NFC').replace(MARKS, '');
|
|
136
159
|
|
|
137
160
|
let folded = '';
|
|
138
161
|
for (const char of lowered) folded += CONFUSABLES[char] ?? char;
|
|
@@ -181,10 +204,13 @@ export function hostFacts(input: TrackingInput): HostFacts {
|
|
|
181
204
|
}
|
|
182
205
|
|
|
183
206
|
export function claimIn(text: string): string | null {
|
|
184
|
-
|
|
185
|
-
for (const
|
|
186
|
-
|
|
187
|
-
|
|
207
|
+
// Read twice, since Ν reads as N but ν as v.
|
|
208
|
+
for (const byLook of [false, true]) {
|
|
209
|
+
const normalised = normaliseForClaims(text, byLook);
|
|
210
|
+
for (const claim of CLAIM_PATTERNS) {
|
|
211
|
+
for (const pattern of claim.patterns) {
|
|
212
|
+
if (pattern.test(normalised)) return claim.kind;
|
|
213
|
+
}
|
|
188
214
|
}
|
|
189
215
|
}
|
|
190
216
|
return null;
|