specnav-core 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/CHANGELOG.md +33 -0
- package/LICENSE +21 -0
- package/dist/adaptive.cjs +108 -0
- package/dist/adaptive.cjs.map +1 -0
- package/dist/adaptive.d.cts +24 -0
- package/dist/adaptive.d.ts +24 -0
- package/dist/adaptive.js +105 -0
- package/dist/adaptive.js.map +1 -0
- package/dist/cache.cjs +224 -0
- package/dist/cache.cjs.map +1 -0
- package/dist/cache.d.cts +33 -0
- package/dist/cache.d.ts +33 -0
- package/dist/cache.js +221 -0
- package/dist/cache.js.map +1 -0
- package/dist/graph.cjs +132 -0
- package/dist/graph.cjs.map +1 -0
- package/dist/graph.d.cts +19 -0
- package/dist/graph.d.ts +19 -0
- package/dist/graph.js +128 -0
- package/dist/graph.js.map +1 -0
- package/dist/index.cjs +843 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +8 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +826 -0
- package/dist/index.js.map +1 -0
- package/dist/morpher.cjs +158 -0
- package/dist/morpher.cjs.map +1 -0
- package/dist/morpher.d.cts +19 -0
- package/dist/morpher.d.ts +19 -0
- package/dist/morpher.js +154 -0
- package/dist/morpher.js.map +1 -0
- package/dist/performance.cjs +40 -0
- package/dist/performance.cjs.map +1 -0
- package/dist/performance.d.cts +21 -0
- package/dist/performance.d.ts +21 -0
- package/dist/performance.js +37 -0
- package/dist/performance.js.map +1 -0
- package/dist/speculator.cjs +59 -0
- package/dist/speculator.cjs.map +1 -0
- package/dist/speculator.d.cts +14 -0
- package/dist/speculator.d.ts +14 -0
- package/dist/speculator.js +56 -0
- package/dist/speculator.js.map +1 -0
- package/dist/trajectory.cjs +146 -0
- package/dist/trajectory.cjs.map +1 -0
- package/dist/trajectory.d.cts +34 -0
- package/dist/trajectory.d.ts +34 -0
- package/dist/trajectory.js +143 -0
- package/dist/trajectory.js.map +1 -0
- package/dist/types-DnUtmOfQ.d.cts +88 -0
- package/dist/types-DnUtmOfQ.d.ts +88 -0
- package/package.json +95 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
interface PointerSample {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
t: number;
|
|
5
|
+
}
|
|
6
|
+
interface Velocity {
|
|
7
|
+
vx: number;
|
|
8
|
+
vy: number;
|
|
9
|
+
}
|
|
10
|
+
interface LinkRect {
|
|
11
|
+
href: string;
|
|
12
|
+
rect: DOMRect;
|
|
13
|
+
element: HTMLAnchorElement;
|
|
14
|
+
}
|
|
15
|
+
interface TrajectoryConfig {
|
|
16
|
+
lookaheadMs: number;
|
|
17
|
+
minVelocity: number;
|
|
18
|
+
sampleRate: number;
|
|
19
|
+
cancelOnDeviation: boolean;
|
|
20
|
+
}
|
|
21
|
+
interface CacheConfig {
|
|
22
|
+
memory: {
|
|
23
|
+
enabled: boolean;
|
|
24
|
+
maxPages: number;
|
|
25
|
+
};
|
|
26
|
+
serviceWorker: {
|
|
27
|
+
enabled: boolean;
|
|
28
|
+
ttl: number;
|
|
29
|
+
cacheName: string;
|
|
30
|
+
crossTabSync: boolean;
|
|
31
|
+
broadcastChannel: string;
|
|
32
|
+
};
|
|
33
|
+
edge: {
|
|
34
|
+
enabled: boolean;
|
|
35
|
+
maxAge: number;
|
|
36
|
+
staleWhileRevalidate: number;
|
|
37
|
+
};
|
|
38
|
+
exclude: Array<string | RegExp>;
|
|
39
|
+
}
|
|
40
|
+
interface MorphConfig {
|
|
41
|
+
preserveScroll: boolean;
|
|
42
|
+
preserveFocus: boolean;
|
|
43
|
+
}
|
|
44
|
+
interface PrefetchConfig {
|
|
45
|
+
mode: "trajectory" | "hover" | "viewport" | "eager" | false;
|
|
46
|
+
trajectory: TrajectoryConfig;
|
|
47
|
+
hover: {
|
|
48
|
+
delayMs: number;
|
|
49
|
+
};
|
|
50
|
+
throttle: {
|
|
51
|
+
maxConcurrent: number;
|
|
52
|
+
cooldownMs: number;
|
|
53
|
+
};
|
|
54
|
+
onFocus: boolean;
|
|
55
|
+
onFocusDelayMs: number;
|
|
56
|
+
exclude: Array<string | RegExp>;
|
|
57
|
+
}
|
|
58
|
+
interface GraphConfig {
|
|
59
|
+
enabled: boolean;
|
|
60
|
+
minConfidence: number;
|
|
61
|
+
sessionWeight: number;
|
|
62
|
+
storageKey: string;
|
|
63
|
+
maxNodes: number;
|
|
64
|
+
}
|
|
65
|
+
interface AdaptiveConfig {
|
|
66
|
+
batteryThreshold: number;
|
|
67
|
+
connectionTypes: {
|
|
68
|
+
slow: string[];
|
|
69
|
+
fast: string[];
|
|
70
|
+
};
|
|
71
|
+
respectSaveData: boolean;
|
|
72
|
+
respectReducedMotion: boolean;
|
|
73
|
+
}
|
|
74
|
+
type Strategy = "auto" | "aggressive" | "conservative" | "off";
|
|
75
|
+
type CacheLayer = 1 | 2 | 3;
|
|
76
|
+
interface CachedPage {
|
|
77
|
+
href: string;
|
|
78
|
+
html: string;
|
|
79
|
+
timestamp: number;
|
|
80
|
+
ttl: number;
|
|
81
|
+
}
|
|
82
|
+
interface NavigationGraph {
|
|
83
|
+
[fromHref: string]: {
|
|
84
|
+
[toHref: string]: number;
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export type { AdaptiveConfig as A, CacheConfig as C, GraphConfig as G, LinkRect as L, MorphConfig as M, NavigationGraph as N, PointerSample as P, Strategy as S, TrajectoryConfig as T, Velocity as V, CacheLayer as a, CachedPage as b, PrefetchConfig as c };
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
interface PointerSample {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
t: number;
|
|
5
|
+
}
|
|
6
|
+
interface Velocity {
|
|
7
|
+
vx: number;
|
|
8
|
+
vy: number;
|
|
9
|
+
}
|
|
10
|
+
interface LinkRect {
|
|
11
|
+
href: string;
|
|
12
|
+
rect: DOMRect;
|
|
13
|
+
element: HTMLAnchorElement;
|
|
14
|
+
}
|
|
15
|
+
interface TrajectoryConfig {
|
|
16
|
+
lookaheadMs: number;
|
|
17
|
+
minVelocity: number;
|
|
18
|
+
sampleRate: number;
|
|
19
|
+
cancelOnDeviation: boolean;
|
|
20
|
+
}
|
|
21
|
+
interface CacheConfig {
|
|
22
|
+
memory: {
|
|
23
|
+
enabled: boolean;
|
|
24
|
+
maxPages: number;
|
|
25
|
+
};
|
|
26
|
+
serviceWorker: {
|
|
27
|
+
enabled: boolean;
|
|
28
|
+
ttl: number;
|
|
29
|
+
cacheName: string;
|
|
30
|
+
crossTabSync: boolean;
|
|
31
|
+
broadcastChannel: string;
|
|
32
|
+
};
|
|
33
|
+
edge: {
|
|
34
|
+
enabled: boolean;
|
|
35
|
+
maxAge: number;
|
|
36
|
+
staleWhileRevalidate: number;
|
|
37
|
+
};
|
|
38
|
+
exclude: Array<string | RegExp>;
|
|
39
|
+
}
|
|
40
|
+
interface MorphConfig {
|
|
41
|
+
preserveScroll: boolean;
|
|
42
|
+
preserveFocus: boolean;
|
|
43
|
+
}
|
|
44
|
+
interface PrefetchConfig {
|
|
45
|
+
mode: "trajectory" | "hover" | "viewport" | "eager" | false;
|
|
46
|
+
trajectory: TrajectoryConfig;
|
|
47
|
+
hover: {
|
|
48
|
+
delayMs: number;
|
|
49
|
+
};
|
|
50
|
+
throttle: {
|
|
51
|
+
maxConcurrent: number;
|
|
52
|
+
cooldownMs: number;
|
|
53
|
+
};
|
|
54
|
+
onFocus: boolean;
|
|
55
|
+
onFocusDelayMs: number;
|
|
56
|
+
exclude: Array<string | RegExp>;
|
|
57
|
+
}
|
|
58
|
+
interface GraphConfig {
|
|
59
|
+
enabled: boolean;
|
|
60
|
+
minConfidence: number;
|
|
61
|
+
sessionWeight: number;
|
|
62
|
+
storageKey: string;
|
|
63
|
+
maxNodes: number;
|
|
64
|
+
}
|
|
65
|
+
interface AdaptiveConfig {
|
|
66
|
+
batteryThreshold: number;
|
|
67
|
+
connectionTypes: {
|
|
68
|
+
slow: string[];
|
|
69
|
+
fast: string[];
|
|
70
|
+
};
|
|
71
|
+
respectSaveData: boolean;
|
|
72
|
+
respectReducedMotion: boolean;
|
|
73
|
+
}
|
|
74
|
+
type Strategy = "auto" | "aggressive" | "conservative" | "off";
|
|
75
|
+
type CacheLayer = 1 | 2 | 3;
|
|
76
|
+
interface CachedPage {
|
|
77
|
+
href: string;
|
|
78
|
+
html: string;
|
|
79
|
+
timestamp: number;
|
|
80
|
+
ttl: number;
|
|
81
|
+
}
|
|
82
|
+
interface NavigationGraph {
|
|
83
|
+
[fromHref: string]: {
|
|
84
|
+
[toHref: string]: number;
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export type { AdaptiveConfig as A, CacheConfig as C, GraphConfig as G, LinkRect as L, MorphConfig as M, NavigationGraph as N, PointerSample as P, Strategy as S, TrajectoryConfig as T, Velocity as V, CacheLayer as a, CachedPage as b, PrefetchConfig as c };
|
package/package.json
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "specnav-core",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Framework-agnostic speculative navigation engine with trajectory prediction, 3-layer caching, and DOM morphing",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Abraham",
|
|
7
|
+
"homepage": "https://github.com/Robini908/specnav#readme",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/Robini908/specnav.git",
|
|
11
|
+
"directory": "packages/core"
|
|
12
|
+
},
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/Robini908/specnav/issues"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"navigation",
|
|
18
|
+
"prefetch",
|
|
19
|
+
"performance",
|
|
20
|
+
"speculation"
|
|
21
|
+
],
|
|
22
|
+
"type": "module",
|
|
23
|
+
"sideEffects": false,
|
|
24
|
+
"main": "./dist/index.js",
|
|
25
|
+
"module": "./dist/index.mjs",
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"exports": {
|
|
28
|
+
".": {
|
|
29
|
+
"types": "./dist/index.d.ts",
|
|
30
|
+
"import": "./dist/index.mjs",
|
|
31
|
+
"require": "./dist/index.js"
|
|
32
|
+
},
|
|
33
|
+
"./trajectory": {
|
|
34
|
+
"types": "./dist/trajectory.d.ts",
|
|
35
|
+
"import": "./dist/trajectory.mjs",
|
|
36
|
+
"require": "./dist/trajectory.js"
|
|
37
|
+
},
|
|
38
|
+
"./cache": {
|
|
39
|
+
"types": "./dist/cache.d.ts",
|
|
40
|
+
"import": "./dist/cache.mjs",
|
|
41
|
+
"require": "./dist/cache.js"
|
|
42
|
+
},
|
|
43
|
+
"./morpher": {
|
|
44
|
+
"types": "./dist/morpher.d.ts",
|
|
45
|
+
"import": "./dist/morpher.mjs",
|
|
46
|
+
"require": "./dist/morpher.js"
|
|
47
|
+
},
|
|
48
|
+
"./speculator": {
|
|
49
|
+
"types": "./dist/speculator.d.ts",
|
|
50
|
+
"import": "./dist/speculator.mjs",
|
|
51
|
+
"require": "./dist/speculator.js"
|
|
52
|
+
},
|
|
53
|
+
"./graph": {
|
|
54
|
+
"types": "./dist/graph.d.ts",
|
|
55
|
+
"import": "./dist/graph.mjs",
|
|
56
|
+
"require": "./dist/graph.js"
|
|
57
|
+
},
|
|
58
|
+
"./adaptive": {
|
|
59
|
+
"types": "./dist/adaptive.d.ts",
|
|
60
|
+
"import": "./dist/adaptive.mjs",
|
|
61
|
+
"require": "./dist/adaptive.js"
|
|
62
|
+
},
|
|
63
|
+
"./performance": {
|
|
64
|
+
"types": "./dist/performance.d.ts",
|
|
65
|
+
"import": "./dist/performance.mjs",
|
|
66
|
+
"require": "./dist/performance.js"
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"files": [
|
|
70
|
+
"dist",
|
|
71
|
+
"README.md",
|
|
72
|
+
"LICENSE",
|
|
73
|
+
"CHANGELOG.md"
|
|
74
|
+
],
|
|
75
|
+
"devDependencies": {
|
|
76
|
+
"@types/node": "^22.0.0",
|
|
77
|
+
"tsup": "^8.0.2",
|
|
78
|
+
"typescript": "^5.8.0",
|
|
79
|
+
"vitest": "^2.0.0"
|
|
80
|
+
},
|
|
81
|
+
"engines": {
|
|
82
|
+
"node": ">=18.0.0"
|
|
83
|
+
},
|
|
84
|
+
"publishConfig": {
|
|
85
|
+
"access": "public",
|
|
86
|
+
"registry": "https://registry.npmjs.org"
|
|
87
|
+
},
|
|
88
|
+
"scripts": {
|
|
89
|
+
"build": "tsup",
|
|
90
|
+
"dev": "tsup --watch",
|
|
91
|
+
"test": "vitest run",
|
|
92
|
+
"test:watch": "vitest",
|
|
93
|
+
"typecheck": "tsc --noEmit"
|
|
94
|
+
}
|
|
95
|
+
}
|