@elanlanguages/bridge-anonymization 0.1.3 → 0.2.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.
- package/README.md +255 -94
- package/dist/crypto/pii-map-crypto.d.ts +50 -36
- package/dist/crypto/pii-map-crypto.d.ts.map +1 -1
- package/dist/crypto/pii-map-crypto.js +133 -68
- package/dist/crypto/pii-map-crypto.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +48 -9
- package/dist/index.js.map +1 -1
- package/dist/ner/model-manager.d.ts +20 -11
- package/dist/ner/model-manager.d.ts.map +1 -1
- package/dist/ner/model-manager.js +147 -76
- package/dist/ner/model-manager.js.map +1 -1
- package/dist/ner/ner-model.d.ts +1 -1
- package/dist/ner/ner-model.d.ts.map +1 -1
- package/dist/ner/ner-model.js +40 -27
- package/dist/ner/ner-model.js.map +1 -1
- package/dist/ner/onnx-runtime.d.ts +6 -5
- package/dist/ner/onnx-runtime.d.ts.map +1 -1
- package/dist/ner/onnx-runtime.js +55 -24
- package/dist/ner/onnx-runtime.js.map +1 -1
- package/dist/ner/tokenizer.d.ts +5 -0
- package/dist/ner/tokenizer.d.ts.map +1 -1
- package/dist/ner/tokenizer.js +15 -2
- package/dist/ner/tokenizer.js.map +1 -1
- package/dist/pipeline/semantic-data-loader.d.ts +24 -16
- package/dist/pipeline/semantic-data-loader.d.ts.map +1 -1
- package/dist/pipeline/semantic-data-loader.js +169 -176
- package/dist/pipeline/semantic-data-loader.js.map +1 -1
- package/dist/pipeline/semantic-enricher.d.ts +12 -2
- package/dist/pipeline/semantic-enricher.d.ts.map +1 -1
- package/dist/pipeline/semantic-enricher.js +85 -35
- package/dist/pipeline/semantic-enricher.js.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/path.d.ts +34 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/path.js +96 -0
- package/dist/utils/path.js.map +1 -0
- package/dist/utils/storage-browser.d.ts +51 -0
- package/dist/utils/storage-browser.d.ts.map +1 -0
- package/dist/utils/storage-browser.js +381 -0
- package/dist/utils/storage-browser.js.map +1 -0
- package/dist/utils/storage-node.d.ts +43 -0
- package/dist/utils/storage-node.d.ts.map +1 -0
- package/dist/utils/storage-node.js +93 -0
- package/dist/utils/storage-node.js.map +1 -0
- package/dist/utils/storage.d.ts +70 -0
- package/dist/utils/storage.d.ts.map +1 -0
- package/dist/utils/storage.js +69 -0
- package/dist/utils/storage.js.map +1 -0
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-enricher.d.ts","sourceRoot":"","sources":["../../src/pipeline/semantic-enricher.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,SAAS,EAET,YAAY,EACZ,aAAa,EACd,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"semantic-enricher.d.ts","sourceRoot":"","sources":["../../src/pipeline/semantic-enricher.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,SAAS,EAET,YAAY,EACZ,aAAa,EACd,MAAM,mBAAmB,CAAC;AAS3B;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAKD;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAaxD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,EAAE,EAClB,MAAM,CAAC,EAAE,cAAc,GACtB,SAAS,EAAE,CAkBb;AAoGD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAwBvE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAgCjE;AA+ED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB,CAEA;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAU7C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQrD"}
|
|
@@ -8,28 +8,36 @@
|
|
|
8
8
|
* createAnonymizer({ semantic: { enabled: true, autoDownload: true } })
|
|
9
9
|
*/
|
|
10
10
|
import { PIIType, } from "../types/index.js";
|
|
11
|
-
import {
|
|
12
|
-
// Re-export data availability check and other exports from data loader
|
|
13
|
-
export { isSemanticDataAvailable, getDataDirectory };
|
|
11
|
+
import { isSemanticDataDownloaded, loadSemanticData, getSemanticDataSync, getDataStats, } from "./semantic-data-loader.js";
|
|
14
12
|
// Track if data has been initialized
|
|
15
13
|
let dataInitialized = false;
|
|
16
14
|
/**
|
|
17
|
-
*
|
|
15
|
+
* Initializes semantic data (async, must be called before sync functions)
|
|
18
16
|
* @throws Error if data files are not available
|
|
19
17
|
*/
|
|
20
|
-
function
|
|
18
|
+
export async function initializeEnricher() {
|
|
21
19
|
if (dataInitialized)
|
|
22
20
|
return;
|
|
23
|
-
|
|
21
|
+
const available = await isSemanticDataDownloaded();
|
|
22
|
+
if (!available) {
|
|
24
23
|
throw new Error(`Semantic enrichment data not available. ` +
|
|
25
24
|
`Use ensureSemanticData() or createAnonymizer({ semantic: { enabled: true } }) to download.`);
|
|
26
25
|
}
|
|
27
|
-
loadSemanticData();
|
|
26
|
+
await loadSemanticData();
|
|
28
27
|
dataInitialized = true;
|
|
29
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Checks if enricher is ready for synchronous operations
|
|
31
|
+
*/
|
|
32
|
+
export function isEnricherReady() {
|
|
33
|
+
return dataInitialized && getSemanticDataSync() !== null;
|
|
34
|
+
}
|
|
30
35
|
/**
|
|
31
36
|
* Enriches PII spans with semantic attributes based on lookup tables
|
|
32
37
|
*
|
|
38
|
+
* NOTE: This function requires semantic data to be pre-loaded via initializeEnricher()
|
|
39
|
+
* or through createAnonymizer({ semantic: { enabled: true } }).
|
|
40
|
+
*
|
|
33
41
|
* @param spans - Array of detected PII spans
|
|
34
42
|
* @param config - Optional configuration for enrichment
|
|
35
43
|
* @returns Array of spans with semantic attributes added
|
|
@@ -42,13 +50,11 @@ function ensureDataLoaded() {
|
|
|
42
50
|
* ```
|
|
43
51
|
*/
|
|
44
52
|
export function enrichSemantics(spans, config) {
|
|
45
|
-
//
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
ensureDataLoaded();
|
|
53
|
+
// Check if data is loaded
|
|
54
|
+
const data = getSemanticDataSync();
|
|
55
|
+
if (data === null) {
|
|
56
|
+
// Silently skip enrichment if data not available
|
|
57
|
+
return spans;
|
|
52
58
|
}
|
|
53
59
|
return spans.map((span) => {
|
|
54
60
|
switch (span.type) {
|
|
@@ -87,6 +93,58 @@ function enrichLocation(span) {
|
|
|
87
93
|
},
|
|
88
94
|
};
|
|
89
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Looks up gender for a name in the database (synchronous)
|
|
98
|
+
*/
|
|
99
|
+
function lookupGenderSync(name, locale) {
|
|
100
|
+
const data = getSemanticDataSync();
|
|
101
|
+
if (data === null)
|
|
102
|
+
return undefined;
|
|
103
|
+
const entry = data.names.get(name.toLowerCase());
|
|
104
|
+
if (entry === undefined)
|
|
105
|
+
return undefined;
|
|
106
|
+
// Check for locale-specific override
|
|
107
|
+
if (locale !== undefined &&
|
|
108
|
+
locale !== "" &&
|
|
109
|
+
entry.localeOverrides !== undefined &&
|
|
110
|
+
entry.localeOverrides[locale] !== undefined) {
|
|
111
|
+
return entry.localeOverrides[locale];
|
|
112
|
+
}
|
|
113
|
+
return entry.gender;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Population threshold for "major" cities that take precedence over regions
|
|
117
|
+
*/
|
|
118
|
+
const MAJOR_CITY_POPULATION = 500000;
|
|
119
|
+
/**
|
|
120
|
+
* Looks up location type synchronously
|
|
121
|
+
*/
|
|
122
|
+
function lookupLocationTypeSync(location) {
|
|
123
|
+
const data = getSemanticDataSync();
|
|
124
|
+
if (data === null)
|
|
125
|
+
return undefined;
|
|
126
|
+
const normalized = location.toLowerCase().trim();
|
|
127
|
+
// Check countries FIRST (to avoid "USA" being matched as a city)
|
|
128
|
+
const countryCode = data.countries.get(normalized);
|
|
129
|
+
if (countryCode !== undefined) {
|
|
130
|
+
return { type: "country", countryCode };
|
|
131
|
+
}
|
|
132
|
+
// Check cities - if it's a major city (pop > 500K), prioritize it over regions
|
|
133
|
+
const city = data.cities.get(normalized);
|
|
134
|
+
if (city && city.population >= MAJOR_CITY_POPULATION) {
|
|
135
|
+
return { type: "city", countryCode: city.country };
|
|
136
|
+
}
|
|
137
|
+
// Check regions
|
|
138
|
+
const region = data.regions.get(normalized);
|
|
139
|
+
if (region) {
|
|
140
|
+
return { type: "region", countryCode: region.country };
|
|
141
|
+
}
|
|
142
|
+
// Check remaining cities (smaller cities)
|
|
143
|
+
if (city) {
|
|
144
|
+
return { type: "city", countryCode: city.country };
|
|
145
|
+
}
|
|
146
|
+
return undefined;
|
|
147
|
+
}
|
|
90
148
|
/**
|
|
91
149
|
* Infers gender from a person's name using the lookup database
|
|
92
150
|
*
|
|
@@ -108,13 +166,11 @@ export function inferGender(name, locale) {
|
|
|
108
166
|
return { gender: "unknown", confidence: 0, source: "unknown" };
|
|
109
167
|
}
|
|
110
168
|
// Check if data is available
|
|
111
|
-
|
|
169
|
+
const data = getSemanticDataSync();
|
|
170
|
+
if (data === null) {
|
|
112
171
|
return { gender: "unknown", confidence: 0, source: "unknown" };
|
|
113
172
|
}
|
|
114
|
-
|
|
115
|
-
ensureDataLoaded();
|
|
116
|
-
}
|
|
117
|
-
const gender = lookupGender(firstName, locale);
|
|
173
|
+
const gender = lookupGenderSync(firstName, locale);
|
|
118
174
|
if (gender === undefined || gender === "") {
|
|
119
175
|
return { gender: "unknown", confidence: 0, source: "unknown" };
|
|
120
176
|
}
|
|
@@ -139,19 +195,17 @@ export function inferGender(name, locale) {
|
|
|
139
195
|
*/
|
|
140
196
|
export function classifyLocation(location) {
|
|
141
197
|
// Check if data is available
|
|
142
|
-
|
|
198
|
+
const data = getSemanticDataSync();
|
|
199
|
+
if (data === null) {
|
|
143
200
|
return { scope: "unknown", confidence: 0 };
|
|
144
201
|
}
|
|
145
|
-
if (!dataInitialized) {
|
|
146
|
-
ensureDataLoaded();
|
|
147
|
-
}
|
|
148
202
|
const normalized = normalizeLocationName(location);
|
|
149
|
-
const result =
|
|
203
|
+
const result = lookupLocationTypeSync(normalized);
|
|
150
204
|
if (!result) {
|
|
151
205
|
// Try variations
|
|
152
206
|
const variations = generateLocationVariations(location);
|
|
153
207
|
for (const variant of variations) {
|
|
154
|
-
const variantResult =
|
|
208
|
+
const variantResult = lookupLocationTypeSync(variant);
|
|
155
209
|
if (variantResult) {
|
|
156
210
|
return {
|
|
157
211
|
scope: variantResult.type,
|
|
@@ -241,28 +295,24 @@ export function getDatabaseStats() {
|
|
|
241
295
|
* Checks if a name exists in the database
|
|
242
296
|
*/
|
|
243
297
|
export function hasName(name) {
|
|
244
|
-
|
|
298
|
+
const data = getSemanticDataSync();
|
|
299
|
+
if (data === null) {
|
|
245
300
|
return false;
|
|
246
301
|
}
|
|
247
|
-
if (!dataInitialized) {
|
|
248
|
-
ensureDataLoaded();
|
|
249
|
-
}
|
|
250
302
|
const firstName = extractFirstName(name);
|
|
251
303
|
if (firstName === null || firstName === "")
|
|
252
304
|
return false;
|
|
253
|
-
return
|
|
305
|
+
return lookupGenderSync(firstName) !== undefined;
|
|
254
306
|
}
|
|
255
307
|
/**
|
|
256
308
|
* Checks if a location exists in the database
|
|
257
309
|
*/
|
|
258
310
|
export function hasLocation(location) {
|
|
259
|
-
|
|
311
|
+
const data = getSemanticDataSync();
|
|
312
|
+
if (data === null) {
|
|
260
313
|
return false;
|
|
261
314
|
}
|
|
262
|
-
if (!dataInitialized) {
|
|
263
|
-
ensureDataLoaded();
|
|
264
|
-
}
|
|
265
315
|
const normalized = normalizeLocationName(location);
|
|
266
|
-
return
|
|
316
|
+
return lookupLocationTypeSync(normalized) !== undefined;
|
|
267
317
|
}
|
|
268
318
|
//# sourceMappingURL=semantic-enricher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-enricher.js","sourceRoot":"","sources":["../../src/pipeline/semantic-enricher.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAEL,OAAO,GAGR,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"semantic-enricher.js","sourceRoot":"","sources":["../../src/pipeline/semantic-enricher.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
|
package/dist/utils/index.js
CHANGED
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser-safe path utilities
|
|
3
|
+
* Replaces Node.js path module for cross-platform compatibility
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Joins path segments with forward slashes
|
|
7
|
+
* Normalizes the result to remove redundant separators
|
|
8
|
+
*/
|
|
9
|
+
export declare function join(...parts: string[]): string;
|
|
10
|
+
/**
|
|
11
|
+
* Returns the directory name of a path
|
|
12
|
+
* @example dirname('/foo/bar/baz.txt') => '/foo/bar'
|
|
13
|
+
*/
|
|
14
|
+
export declare function dirname(path: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* Returns the last portion of a path (the filename)
|
|
17
|
+
* @example basename('/foo/bar/baz.txt') => 'baz.txt'
|
|
18
|
+
*/
|
|
19
|
+
export declare function basename(path: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Normalizes a path by resolving . and .. segments
|
|
22
|
+
* and removing redundant slashes
|
|
23
|
+
*/
|
|
24
|
+
export declare function normalize(path: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Returns the extension of a path
|
|
27
|
+
* @example extname('/foo/bar/baz.txt') => '.txt'
|
|
28
|
+
*/
|
|
29
|
+
export declare function extname(path: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* Checks if a path is absolute
|
|
32
|
+
*/
|
|
33
|
+
export declare function isAbsolute(path: string): boolean;
|
|
34
|
+
//# sourceMappingURL=path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,wBAAgB,IAAI,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAO/C;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAa5C;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAS7C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA6B9C;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAS5C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQhD"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser-safe path utilities
|
|
3
|
+
* Replaces Node.js path module for cross-platform compatibility
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Joins path segments with forward slashes
|
|
7
|
+
* Normalizes the result to remove redundant separators
|
|
8
|
+
*/
|
|
9
|
+
export function join(...parts) {
|
|
10
|
+
const joined = parts
|
|
11
|
+
.filter((part) => part !== "")
|
|
12
|
+
.join("/")
|
|
13
|
+
.replace(/\/+/g, "/");
|
|
14
|
+
return normalize(joined);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Returns the directory name of a path
|
|
18
|
+
* @example dirname('/foo/bar/baz.txt') => '/foo/bar'
|
|
19
|
+
*/
|
|
20
|
+
export function dirname(path) {
|
|
21
|
+
const normalized = normalize(path);
|
|
22
|
+
const lastSlash = normalized.lastIndexOf("/");
|
|
23
|
+
if (lastSlash === -1) {
|
|
24
|
+
return ".";
|
|
25
|
+
}
|
|
26
|
+
if (lastSlash === 0) {
|
|
27
|
+
return "/";
|
|
28
|
+
}
|
|
29
|
+
return normalized.slice(0, lastSlash);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Returns the last portion of a path (the filename)
|
|
33
|
+
* @example basename('/foo/bar/baz.txt') => 'baz.txt'
|
|
34
|
+
*/
|
|
35
|
+
export function basename(path) {
|
|
36
|
+
const normalized = normalize(path);
|
|
37
|
+
const lastSlash = normalized.lastIndexOf("/");
|
|
38
|
+
if (lastSlash === -1) {
|
|
39
|
+
return normalized;
|
|
40
|
+
}
|
|
41
|
+
return normalized.slice(lastSlash + 1);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Normalizes a path by resolving . and .. segments
|
|
45
|
+
* and removing redundant slashes
|
|
46
|
+
*/
|
|
47
|
+
export function normalize(path) {
|
|
48
|
+
// Replace backslashes with forward slashes (Windows compatibility)
|
|
49
|
+
let normalized = path.replace(/\\/g, "/");
|
|
50
|
+
// Remove redundant slashes (but keep leading // for UNC paths if needed)
|
|
51
|
+
normalized = normalized.replace(/\/+/g, "/");
|
|
52
|
+
// Handle . and .. segments
|
|
53
|
+
const parts = normalized.split("/");
|
|
54
|
+
const result = [];
|
|
55
|
+
for (const part of parts) {
|
|
56
|
+
if (part === "..") {
|
|
57
|
+
// Don't pop past root
|
|
58
|
+
if (result.length > 0 && result[result.length - 1] !== "..") {
|
|
59
|
+
result.pop();
|
|
60
|
+
}
|
|
61
|
+
else if (!normalized.startsWith("/")) {
|
|
62
|
+
result.push("..");
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
else if (part !== "." && part !== "") {
|
|
66
|
+
result.push(part);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Preserve leading slash
|
|
70
|
+
const prefix = normalized.startsWith("/") ? "/" : "";
|
|
71
|
+
const joined = result.join("/");
|
|
72
|
+
return prefix + joined || ".";
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Returns the extension of a path
|
|
76
|
+
* @example extname('/foo/bar/baz.txt') => '.txt'
|
|
77
|
+
*/
|
|
78
|
+
export function extname(path) {
|
|
79
|
+
const base = basename(path);
|
|
80
|
+
const dotIndex = base.lastIndexOf(".");
|
|
81
|
+
if (dotIndex <= 0) {
|
|
82
|
+
return "";
|
|
83
|
+
}
|
|
84
|
+
return base.slice(dotIndex);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Checks if a path is absolute
|
|
88
|
+
*/
|
|
89
|
+
export function isAbsolute(path) {
|
|
90
|
+
// Unix absolute paths start with /
|
|
91
|
+
// Windows absolute paths start with drive letter (C:) or UNC (\\)
|
|
92
|
+
return (path.startsWith("/") ||
|
|
93
|
+
/^[a-zA-Z]:/.test(path) ||
|
|
94
|
+
path.startsWith("\\\\"));
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser Storage Provider
|
|
3
|
+
* Implements StorageProvider using IndexedDB for text data and OPFS for binary files
|
|
4
|
+
*/
|
|
5
|
+
import type { StorageProvider } from "./storage.js";
|
|
6
|
+
/**
|
|
7
|
+
* Browser implementation of StorageProvider
|
|
8
|
+
* Uses IndexedDB for text data and OPFS for binary files (like models)
|
|
9
|
+
*/
|
|
10
|
+
export declare class BrowserStorageProvider implements StorageProvider {
|
|
11
|
+
/**
|
|
12
|
+
* Determines if a path should use OPFS (for large binary files)
|
|
13
|
+
*/
|
|
14
|
+
private shouldUseOPFS;
|
|
15
|
+
/**
|
|
16
|
+
* Normalizes a path to a storage key
|
|
17
|
+
*/
|
|
18
|
+
private toStorageKey;
|
|
19
|
+
/**
|
|
20
|
+
* Reads a file as binary data
|
|
21
|
+
*/
|
|
22
|
+
readFile(path: string): Promise<Uint8Array>;
|
|
23
|
+
/**
|
|
24
|
+
* Reads a file as text
|
|
25
|
+
*/
|
|
26
|
+
readTextFile(path: string, encoding?: string): Promise<string>;
|
|
27
|
+
/**
|
|
28
|
+
* Writes data to a file
|
|
29
|
+
*/
|
|
30
|
+
writeFile(path: string, data: Uint8Array | string): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Checks if a file exists
|
|
33
|
+
*/
|
|
34
|
+
exists(path: string): Promise<boolean>;
|
|
35
|
+
/**
|
|
36
|
+
* Creates a directory (no-op in browser storage, directories are implicit)
|
|
37
|
+
*/
|
|
38
|
+
mkdir(_path: string): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Removes a file or directory
|
|
41
|
+
*/
|
|
42
|
+
rm(path: string, options?: {
|
|
43
|
+
recursive?: boolean;
|
|
44
|
+
force?: boolean;
|
|
45
|
+
}): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Gets the cache directory path (virtual path in browser)
|
|
48
|
+
*/
|
|
49
|
+
getCacheDir(subdir: string): string;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=storage-browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-browser.d.ts","sourceRoot":"","sources":["../../src/utils/storage-browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAuMpD;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAC5D;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAgCjD;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0CpE;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBvE;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB5C;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC;;OAEG;IACG,EAAE,CACN,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GACjD,OAAO,CAAC,IAAI,CAAC;IAkEhB;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAGpC"}
|