craft-native 0.0.37
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/LICENSE.md +21 -0
- package/README.md +424 -0
- package/bin/cli.ts +937 -0
- package/dist/api/android-advanced.d.ts +737 -0
- package/dist/api/android-advanced.d.ts.map +1 -0
- package/dist/api/app.d.ts +432 -0
- package/dist/api/app.d.ts.map +1 -0
- package/dist/api/clipboard.d.ts +85 -0
- package/dist/api/clipboard.d.ts.map +1 -0
- package/dist/api/crypto.d.ts +79 -0
- package/dist/api/crypto.d.ts.map +1 -0
- package/dist/api/db.d.ts +427 -0
- package/dist/api/db.d.ts.map +1 -0
- package/dist/api/dialog.d.ts +141 -0
- package/dist/api/dialog.d.ts.map +1 -0
- package/dist/api/fs.d.ts +131 -0
- package/dist/api/fs.d.ts.map +1 -0
- package/dist/api/http.d.ts +196 -0
- package/dist/api/http.d.ts.map +1 -0
- package/dist/api/index.d.ts +38 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/ios-advanced.d.ts +833 -0
- package/dist/api/ios-advanced.d.ts.map +1 -0
- package/dist/api/macos-advanced.d.ts +721 -0
- package/dist/api/macos-advanced.d.ts.map +1 -0
- package/dist/api/media.d.ts +233 -0
- package/dist/api/media.d.ts.map +1 -0
- package/dist/api/mobile.d.ts +658 -0
- package/dist/api/mobile.d.ts.map +1 -0
- package/dist/api/process.d.ts +168 -0
- package/dist/api/process.d.ts.map +1 -0
- package/dist/api/sidebar.d.ts +125 -0
- package/dist/api/sidebar.d.ts.map +1 -0
- package/dist/api/tray.d.ts +410 -0
- package/dist/api/tray.d.ts.map +1 -0
- package/dist/api/window.d.ts +462 -0
- package/dist/api/window.d.ts.map +1 -0
- package/dist/api/windows-advanced.d.ts +719 -0
- package/dist/api/windows-advanced.d.ts.map +1 -0
- package/dist/assets/index.d.ts +69 -0
- package/dist/assets/index.d.ts.map +1 -0
- package/dist/binary-resolver.d.ts +39 -0
- package/dist/binary-resolver.d.ts.map +1 -0
- package/dist/bridge/android.d.ts +574 -0
- package/dist/bridge/android.d.ts.map +1 -0
- package/dist/bridge/core.d.ts +474 -0
- package/dist/bridge/core.d.ts.map +1 -0
- package/dist/bridge/ids.d.ts +18 -0
- package/dist/bridge/ids.d.ts.map +1 -0
- package/dist/bridge/ios.d.ts +528 -0
- package/dist/bridge/ios.d.ts.map +1 -0
- package/dist/bridge/webkit-pending.d.ts +50 -0
- package/dist/bridge/webkit-pending.d.ts.map +1 -0
- package/dist/build/bundle-optimizer.d.ts +69 -0
- package/dist/build/bundle-optimizer.d.ts.map +1 -0
- package/dist/components/index.d.ts +719 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/native.d.ts +728 -0
- package/dist/components/native.d.ts.map +1 -0
- package/dist/components/sidebar.d.ts +458 -0
- package/dist/components/sidebar.d.ts.map +1 -0
- package/dist/dev/devtools.d.ts +118 -0
- package/dist/dev/devtools.d.ts.map +1 -0
- package/dist/dev/error-overlay.d.ts +73 -0
- package/dist/dev/error-overlay.d.ts.map +1 -0
- package/dist/dev/hot-reload.d.ts +127 -0
- package/dist/dev/hot-reload.d.ts.map +1 -0
- package/dist/index.cjs +10253 -0
- package/dist/index.d.cts +59 -0
- package/dist/index.d.ts +59 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10240 -0
- package/dist/logging/index.d.ts +152 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/optimizations/index.d.ts +232 -0
- package/dist/optimizations/index.d.ts.map +1 -0
- package/dist/package.d.ts +90 -0
- package/dist/package.d.ts.map +1 -0
- package/dist/performance/runtime.d.ts +230 -0
- package/dist/performance/runtime.d.ts.map +1 -0
- package/dist/performance/startup.d.ts +223 -0
- package/dist/performance/startup.d.ts.map +1 -0
- package/dist/plugins/index.d.ts +114 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/security/index.d.ts +268 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/signing/index.d.ts +104 -0
- package/dist/signing/index.d.ts.map +1 -0
- package/dist/styles/headwind.d.ts +222 -0
- package/dist/styles/headwind.d.ts.map +1 -0
- package/dist/styles/index.d.ts +31 -0
- package/dist/styles/index.d.ts.map +1 -0
- package/dist/styles/sidebar-templates.d.ts +77 -0
- package/dist/styles/sidebar-templates.d.ts.map +1 -0
- package/dist/styles/sidebars.d.ts +194 -0
- package/dist/styles/sidebars.d.ts.map +1 -0
- package/dist/types.d.ts +1555 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/updater/index.d.ts +164 -0
- package/dist/updater/index.d.ts.map +1 -0
- package/dist/utils/audio.d.ts +40 -0
- package/dist/utils/audio.d.ts.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/native.d.ts +27 -0
- package/dist/utils/native.d.ts.map +1 -0
- package/dist/utils/react.d.ts +157 -0
- package/dist/utils/react.d.ts.map +1 -0
- package/dist/utils/storage.d.ts +35 -0
- package/dist/utils/storage.d.ts.map +1 -0
- package/dist/utils/svelte.d.ts +187 -0
- package/dist/utils/svelte.d.ts.map +1 -0
- package/dist/utils/timer.d.ts +57 -0
- package/dist/utils/timer.d.ts.map +1 -0
- package/dist/utils/vue.d.ts +157 -0
- package/dist/utils/vue.d.ts.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Craft Runtime Performance
|
|
3
|
+
* GPU acceleration, memory optimization, and animation performance
|
|
4
|
+
*/
|
|
5
|
+
export interface GPUCapabilities {
|
|
6
|
+
vendor: string;
|
|
7
|
+
renderer: string;
|
|
8
|
+
webglVersion: number;
|
|
9
|
+
maxTextureSize: number;
|
|
10
|
+
maxViewportDims: [number, number];
|
|
11
|
+
supportedExtensions: string[];
|
|
12
|
+
hardwareAccelerated: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface MemoryInfo {
|
|
15
|
+
usedJSHeapSize: number;
|
|
16
|
+
totalJSHeapSize: number;
|
|
17
|
+
jsHeapSizeLimit: number;
|
|
18
|
+
usedPercentage: number;
|
|
19
|
+
}
|
|
20
|
+
export interface AnimationMetrics {
|
|
21
|
+
fps: number;
|
|
22
|
+
frameTime: number;
|
|
23
|
+
droppedFrames: number;
|
|
24
|
+
jank: number;
|
|
25
|
+
}
|
|
26
|
+
export interface ObjectPool<T> {
|
|
27
|
+
acquire(): T;
|
|
28
|
+
release(obj: T): void;
|
|
29
|
+
size(): number;
|
|
30
|
+
available(): number;
|
|
31
|
+
trim(): void;
|
|
32
|
+
}
|
|
33
|
+
export declare class GPUAccelerator {
|
|
34
|
+
private gl;
|
|
35
|
+
private capabilities;
|
|
36
|
+
/**
|
|
37
|
+
* Initialize GPU context
|
|
38
|
+
*/
|
|
39
|
+
initialize(): Promise<GPUCapabilities>;
|
|
40
|
+
/**
|
|
41
|
+
* Get GPU capabilities
|
|
42
|
+
*/
|
|
43
|
+
getCapabilities(): GPUCapabilities | null;
|
|
44
|
+
/**
|
|
45
|
+
* Check if GPU is hardware accelerated
|
|
46
|
+
*/
|
|
47
|
+
isHardwareAccelerated(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Check WebGL extension support
|
|
50
|
+
*/
|
|
51
|
+
supportsExtension(name: string): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Apply GPU-accelerated transform
|
|
54
|
+
*/
|
|
55
|
+
applyGPUTransform(element: HTMLElement, transform: {
|
|
56
|
+
translateX?: number;
|
|
57
|
+
translateY?: number;
|
|
58
|
+
translateZ?: number;
|
|
59
|
+
rotateX?: number;
|
|
60
|
+
rotateY?: number;
|
|
61
|
+
rotateZ?: number;
|
|
62
|
+
scale?: number;
|
|
63
|
+
scaleX?: number;
|
|
64
|
+
scaleY?: number;
|
|
65
|
+
}): void;
|
|
66
|
+
/**
|
|
67
|
+
* Enable GPU compositing for element
|
|
68
|
+
*/
|
|
69
|
+
enableCompositing(element: HTMLElement): void;
|
|
70
|
+
/**
|
|
71
|
+
* Disable GPU compositing for element
|
|
72
|
+
*/
|
|
73
|
+
disableCompositing(element: HTMLElement): void;
|
|
74
|
+
}
|
|
75
|
+
export declare class MemoryOptimizer {
|
|
76
|
+
private pools;
|
|
77
|
+
private pressureCallbacks;
|
|
78
|
+
constructor();
|
|
79
|
+
/**
|
|
80
|
+
* Get current memory info
|
|
81
|
+
*/
|
|
82
|
+
getMemoryInfo(): MemoryInfo | null;
|
|
83
|
+
/**
|
|
84
|
+
* Create object pool
|
|
85
|
+
*/
|
|
86
|
+
createPool<T>(name: string, factory: () => T, reset?: (obj: T) => void, initialSize?: number): ObjectPool<T>;
|
|
87
|
+
/**
|
|
88
|
+
* Get existing pool
|
|
89
|
+
*/
|
|
90
|
+
getPool<T>(name: string): ObjectPool<T> | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Create LRU cache
|
|
93
|
+
*/
|
|
94
|
+
createLRUCache<K, V>(maxSize: number): LRUCache<K, V>;
|
|
95
|
+
/**
|
|
96
|
+
* Register memory pressure callback
|
|
97
|
+
*/
|
|
98
|
+
onMemoryPressure(callback: (level: 'none' | 'moderate' | 'critical') => void): () => void;
|
|
99
|
+
/**
|
|
100
|
+
* Force garbage collection hint
|
|
101
|
+
*/
|
|
102
|
+
requestGC(): void;
|
|
103
|
+
private setupMemoryPressureListener;
|
|
104
|
+
}
|
|
105
|
+
export declare class LRUCache<K, V> {
|
|
106
|
+
private cache;
|
|
107
|
+
private maxSize;
|
|
108
|
+
constructor(maxSize: number);
|
|
109
|
+
get(key: K): V | undefined;
|
|
110
|
+
set(key: K, value: V): void;
|
|
111
|
+
has(key: K): boolean;
|
|
112
|
+
delete(key: K): boolean;
|
|
113
|
+
clear(): void;
|
|
114
|
+
size(): number;
|
|
115
|
+
}
|
|
116
|
+
export declare class AnimationMonitor {
|
|
117
|
+
private frameCount;
|
|
118
|
+
private lastFrameTime;
|
|
119
|
+
private frameTimes;
|
|
120
|
+
private droppedFrames;
|
|
121
|
+
private rafId;
|
|
122
|
+
private callbacks;
|
|
123
|
+
private running;
|
|
124
|
+
/**
|
|
125
|
+
* Start monitoring
|
|
126
|
+
*/
|
|
127
|
+
start(): void;
|
|
128
|
+
/**
|
|
129
|
+
* Stop monitoring
|
|
130
|
+
*/
|
|
131
|
+
stop(): void;
|
|
132
|
+
/**
|
|
133
|
+
* Get current metrics
|
|
134
|
+
*/
|
|
135
|
+
getMetrics(): AnimationMetrics;
|
|
136
|
+
/**
|
|
137
|
+
* Register metrics callback
|
|
138
|
+
*/
|
|
139
|
+
onMetrics(callback: (metrics: AnimationMetrics) => void): () => void;
|
|
140
|
+
/**
|
|
141
|
+
* Reset metrics
|
|
142
|
+
*/
|
|
143
|
+
reset(): void;
|
|
144
|
+
private tick;
|
|
145
|
+
}
|
|
146
|
+
export declare class FrameScheduler {
|
|
147
|
+
private tasks;
|
|
148
|
+
private rafId;
|
|
149
|
+
private running;
|
|
150
|
+
private frameDeadline;
|
|
151
|
+
/**
|
|
152
|
+
* Schedule a task for next frame
|
|
153
|
+
*/
|
|
154
|
+
schedule(callback: () => void, priority?: 'high' | 'normal' | 'low'): void;
|
|
155
|
+
/**
|
|
156
|
+
* Start scheduler
|
|
157
|
+
*/
|
|
158
|
+
start(): void;
|
|
159
|
+
/**
|
|
160
|
+
* Stop scheduler
|
|
161
|
+
*/
|
|
162
|
+
stop(): void;
|
|
163
|
+
/**
|
|
164
|
+
* Clear all pending tasks
|
|
165
|
+
*/
|
|
166
|
+
clear(): void;
|
|
167
|
+
private processFrame;
|
|
168
|
+
}
|
|
169
|
+
export declare class GPUTransition {
|
|
170
|
+
/**
|
|
171
|
+
* Create a GPU-accelerated transition
|
|
172
|
+
*/
|
|
173
|
+
static create(element: HTMLElement, properties: {
|
|
174
|
+
from: Record<string, string | number>;
|
|
175
|
+
to: Record<string, string | number>;
|
|
176
|
+
duration: number;
|
|
177
|
+
easing?: string;
|
|
178
|
+
delay?: number;
|
|
179
|
+
}): Promise<void>;
|
|
180
|
+
/**
|
|
181
|
+
* Animate transform with GPU acceleration
|
|
182
|
+
*/
|
|
183
|
+
static transform(element: HTMLElement, keyframes: Array<{
|
|
184
|
+
transform?: string;
|
|
185
|
+
opacity?: number;
|
|
186
|
+
offset?: number;
|
|
187
|
+
}>, options: {
|
|
188
|
+
duration: number;
|
|
189
|
+
easing?: string;
|
|
190
|
+
fill?: 'none' | 'forwards' | 'backwards' | 'both';
|
|
191
|
+
}): Promise<void>;
|
|
192
|
+
}
|
|
193
|
+
export declare class ReduceMotion {
|
|
194
|
+
private static mediaQuery;
|
|
195
|
+
/**
|
|
196
|
+
* Check if reduced motion is preferred
|
|
197
|
+
*/
|
|
198
|
+
static isEnabled(): boolean;
|
|
199
|
+
/**
|
|
200
|
+
* Listen for changes
|
|
201
|
+
*/
|
|
202
|
+
static onChange(callback: (enabled: boolean) => void): () => void;
|
|
203
|
+
/**
|
|
204
|
+
* Get appropriate duration based on preference
|
|
205
|
+
*/
|
|
206
|
+
static getDuration(normalDuration: number, reducedDuration?: number): number;
|
|
207
|
+
/**
|
|
208
|
+
* Apply motion-safe animation
|
|
209
|
+
*/
|
|
210
|
+
static animate(element: HTMLElement, keyframes: Keyframe[], options: KeyframeAnimationOptions): Animation | null;
|
|
211
|
+
}
|
|
212
|
+
export declare function getGPUAccelerator(): GPUAccelerator;
|
|
213
|
+
export declare function getMemoryOptimizer(): MemoryOptimizer;
|
|
214
|
+
export declare function getAnimationMonitor(): AnimationMonitor;
|
|
215
|
+
export declare function getFrameScheduler(): FrameScheduler;
|
|
216
|
+
declare const _exports: {
|
|
217
|
+
GPUAccelerator: typeof GPUAccelerator;
|
|
218
|
+
MemoryOptimizer: typeof MemoryOptimizer;
|
|
219
|
+
LRUCache: typeof LRUCache;
|
|
220
|
+
AnimationMonitor: typeof AnimationMonitor;
|
|
221
|
+
FrameScheduler: typeof FrameScheduler;
|
|
222
|
+
GPUTransition: typeof GPUTransition;
|
|
223
|
+
ReduceMotion: typeof ReduceMotion;
|
|
224
|
+
getGPUAccelerator: typeof getGPUAccelerator;
|
|
225
|
+
getMemoryOptimizer: typeof getMemoryOptimizer;
|
|
226
|
+
getAnimationMonitor: typeof getAnimationMonitor;
|
|
227
|
+
getFrameScheduler: typeof getFrameScheduler;
|
|
228
|
+
};
|
|
229
|
+
export default _exports;
|
|
230
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/performance/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Craft Startup Performance
|
|
3
|
+
* Lazy loading, precompilation, and cold start optimization
|
|
4
|
+
*/
|
|
5
|
+
export interface LazyModule<T> {
|
|
6
|
+
load(): Promise<T>;
|
|
7
|
+
isLoaded(): boolean;
|
|
8
|
+
preload(): void;
|
|
9
|
+
}
|
|
10
|
+
export interface PrecompiledAsset {
|
|
11
|
+
path: string;
|
|
12
|
+
hash: string;
|
|
13
|
+
type: 'html' | 'css' | 'js' | 'json';
|
|
14
|
+
compressed?: boolean;
|
|
15
|
+
size: number;
|
|
16
|
+
}
|
|
17
|
+
export interface StartupMetrics {
|
|
18
|
+
coldStartTime: number;
|
|
19
|
+
timeToFirstByte: number;
|
|
20
|
+
timeToFirstPaint: number;
|
|
21
|
+
timeToInteractive: number;
|
|
22
|
+
modulesLoaded: number;
|
|
23
|
+
totalModuleSize: number;
|
|
24
|
+
cacheHits: number;
|
|
25
|
+
cacheMisses: number;
|
|
26
|
+
}
|
|
27
|
+
export declare class LazyLoader<T> implements LazyModule<T> {
|
|
28
|
+
private factory;
|
|
29
|
+
private options?;
|
|
30
|
+
private module;
|
|
31
|
+
private loading;
|
|
32
|
+
private preloading;
|
|
33
|
+
private failureCount;
|
|
34
|
+
private lastError;
|
|
35
|
+
constructor(factory: () => Promise<T>, options?: {
|
|
36
|
+
preloadDelay?: number;
|
|
37
|
+
onLoad?: (module: T) => void;
|
|
38
|
+
onError?: (error: Error) => void;
|
|
39
|
+
/**
|
|
40
|
+
* After this many consecutive factory rejections, `load()` stops
|
|
41
|
+
* calling the factory and re-throws the last error directly. Defaults
|
|
42
|
+
* to 3 — enough to absorb transient network blips without spinning a
|
|
43
|
+
* tight retry loop on a permanently broken module.
|
|
44
|
+
*/
|
|
45
|
+
maxRetries?: number;
|
|
46
|
+
} | undefined);
|
|
47
|
+
load(): Promise<T>;
|
|
48
|
+
/**
|
|
49
|
+
* Reset the failure count so {@link load} will call the factory again.
|
|
50
|
+
* Use after fixing the underlying cause (e.g. network restored).
|
|
51
|
+
*/
|
|
52
|
+
reset(): void;
|
|
53
|
+
isLoaded(): boolean;
|
|
54
|
+
preload(): void;
|
|
55
|
+
}
|
|
56
|
+
export declare class ModuleRegistry {
|
|
57
|
+
private modules;
|
|
58
|
+
private loadOrder;
|
|
59
|
+
private metrics;
|
|
60
|
+
/**
|
|
61
|
+
* Register a lazy module
|
|
62
|
+
*/
|
|
63
|
+
register<T>(name: string, factory: () => Promise<T>, options?: {
|
|
64
|
+
priority?: number;
|
|
65
|
+
preload?: boolean;
|
|
66
|
+
}): void;
|
|
67
|
+
/**
|
|
68
|
+
* Get a module (lazy loads if needed)
|
|
69
|
+
*/
|
|
70
|
+
get<T>(name: string): Promise<T>;
|
|
71
|
+
/**
|
|
72
|
+
* Preload modules by priority
|
|
73
|
+
*/
|
|
74
|
+
preloadByPriority(priorities: string[]): void;
|
|
75
|
+
/**
|
|
76
|
+
* Get load metrics
|
|
77
|
+
*/
|
|
78
|
+
getMetrics(): Map<string, {
|
|
79
|
+
loadTime: number;
|
|
80
|
+
size: number;
|
|
81
|
+
}>;
|
|
82
|
+
/**
|
|
83
|
+
* Get load order
|
|
84
|
+
*/
|
|
85
|
+
getLoadOrder(): string[];
|
|
86
|
+
private estimateSize;
|
|
87
|
+
}
|
|
88
|
+
export declare class AssetPrecompiler {
|
|
89
|
+
private cache;
|
|
90
|
+
private cacheDir;
|
|
91
|
+
constructor(cacheDir?: string);
|
|
92
|
+
/**
|
|
93
|
+
* Precompile HTML template
|
|
94
|
+
*/
|
|
95
|
+
precompileHTML(html: string, options?: {
|
|
96
|
+
minify?: boolean;
|
|
97
|
+
inlineCSS?: boolean;
|
|
98
|
+
inlineJS?: boolean;
|
|
99
|
+
}): string;
|
|
100
|
+
/**
|
|
101
|
+
* Precompile CSS
|
|
102
|
+
*/
|
|
103
|
+
precompileCSS(css: string, options?: {
|
|
104
|
+
minify?: boolean;
|
|
105
|
+
prefix?: string;
|
|
106
|
+
}): string;
|
|
107
|
+
/**
|
|
108
|
+
* Precompile JavaScript
|
|
109
|
+
*/
|
|
110
|
+
precompileJS(js: string, options?: {
|
|
111
|
+
minify?: boolean;
|
|
112
|
+
target?: 'es5' | 'es6' | 'esnext';
|
|
113
|
+
}): string;
|
|
114
|
+
/**
|
|
115
|
+
* Generate precompiled asset manifest
|
|
116
|
+
*/
|
|
117
|
+
generateManifest(assets: PrecompiledAsset[]): string;
|
|
118
|
+
private minifyHTML;
|
|
119
|
+
private minifyCSS;
|
|
120
|
+
private minifyJS;
|
|
121
|
+
private prefixCSS;
|
|
122
|
+
}
|
|
123
|
+
export declare class ColdStartOptimizer {
|
|
124
|
+
private startTime;
|
|
125
|
+
private marks;
|
|
126
|
+
private measures;
|
|
127
|
+
constructor();
|
|
128
|
+
/**
|
|
129
|
+
* Mark a point in startup
|
|
130
|
+
*/
|
|
131
|
+
mark(name: string): void;
|
|
132
|
+
/**
|
|
133
|
+
* Measure between two marks
|
|
134
|
+
*/
|
|
135
|
+
measure(name: string, startMark: string, endMark: string): number;
|
|
136
|
+
/**
|
|
137
|
+
* Get time since start
|
|
138
|
+
*/
|
|
139
|
+
timeSinceStart(): number;
|
|
140
|
+
/**
|
|
141
|
+
* Get startup metrics
|
|
142
|
+
*/
|
|
143
|
+
getMetrics(): StartupMetrics;
|
|
144
|
+
/**
|
|
145
|
+
* Get all measures
|
|
146
|
+
*/
|
|
147
|
+
getMeasures(): Array<{
|
|
148
|
+
name: string;
|
|
149
|
+
start: string;
|
|
150
|
+
end: string;
|
|
151
|
+
duration: number;
|
|
152
|
+
}>;
|
|
153
|
+
/**
|
|
154
|
+
* Report metrics
|
|
155
|
+
*/
|
|
156
|
+
report(): string;
|
|
157
|
+
}
|
|
158
|
+
export declare class BinarySizeReducer {
|
|
159
|
+
/**
|
|
160
|
+
* Analyze bundle for tree shaking opportunities
|
|
161
|
+
*/
|
|
162
|
+
analyzeTreeShaking(code: string): {
|
|
163
|
+
unusedExports: string[];
|
|
164
|
+
unusedImports: string[];
|
|
165
|
+
suggestions: string[];
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* Get dead code elimination suggestions
|
|
169
|
+
*/
|
|
170
|
+
getDeadCodeSuggestions(code: string): string[];
|
|
171
|
+
}
|
|
172
|
+
export declare class StartupCache {
|
|
173
|
+
private cache;
|
|
174
|
+
private maxSize;
|
|
175
|
+
private currentSize;
|
|
176
|
+
private hits;
|
|
177
|
+
private misses;
|
|
178
|
+
constructor(maxSizeBytes?: number);
|
|
179
|
+
/**
|
|
180
|
+
* Get item from cache
|
|
181
|
+
*/
|
|
182
|
+
get<T>(key: string): T | undefined;
|
|
183
|
+
/**
|
|
184
|
+
* Set item in cache
|
|
185
|
+
*/
|
|
186
|
+
set(key: string, data: unknown): void;
|
|
187
|
+
/**
|
|
188
|
+
* Check if key exists
|
|
189
|
+
*/
|
|
190
|
+
has(key: string): boolean;
|
|
191
|
+
/**
|
|
192
|
+
* Clear cache
|
|
193
|
+
*/
|
|
194
|
+
clear(): void;
|
|
195
|
+
/**
|
|
196
|
+
* Get cache stats
|
|
197
|
+
*/
|
|
198
|
+
getStats(): {
|
|
199
|
+
hits: number;
|
|
200
|
+
misses: number;
|
|
201
|
+
hitRate: number;
|
|
202
|
+
size: number;
|
|
203
|
+
itemCount: number;
|
|
204
|
+
};
|
|
205
|
+
private evictOldest;
|
|
206
|
+
private estimateSize;
|
|
207
|
+
}
|
|
208
|
+
export declare function getModuleRegistry(): ModuleRegistry;
|
|
209
|
+
export declare function getColdStartOptimizer(): ColdStartOptimizer;
|
|
210
|
+
export declare function getStartupCache(): StartupCache;
|
|
211
|
+
declare const _exports: {
|
|
212
|
+
LazyLoader: typeof LazyLoader;
|
|
213
|
+
ModuleRegistry: typeof ModuleRegistry;
|
|
214
|
+
AssetPrecompiler: typeof AssetPrecompiler;
|
|
215
|
+
ColdStartOptimizer: typeof ColdStartOptimizer;
|
|
216
|
+
BinarySizeReducer: typeof BinarySizeReducer;
|
|
217
|
+
StartupCache: typeof StartupCache;
|
|
218
|
+
getModuleRegistry: typeof getModuleRegistry;
|
|
219
|
+
getColdStartOptimizer: typeof getColdStartOptimizer;
|
|
220
|
+
getStartupCache: typeof getStartupCache;
|
|
221
|
+
};
|
|
222
|
+
export default _exports;
|
|
223
|
+
//# sourceMappingURL=startup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startup.d.ts","sourceRoot":"","sources":["../../src/performance/startup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Craft Plugin System
|
|
3
|
+
* Manage, install, and run plugins for extending Craft functionality
|
|
4
|
+
*/
|
|
5
|
+
import { EventEmitter } from 'events';
|
|
6
|
+
export interface Plugin {
|
|
7
|
+
name: string;
|
|
8
|
+
version: string;
|
|
9
|
+
description: string;
|
|
10
|
+
author?: string;
|
|
11
|
+
repository?: string;
|
|
12
|
+
main: string;
|
|
13
|
+
permissions: PluginPermission[];
|
|
14
|
+
hooks?: PluginHooks;
|
|
15
|
+
}
|
|
16
|
+
export type PluginPermission = 'fs:read' | 'fs:write' | 'net:fetch' | 'net:listen' | 'process:spawn' | 'env:read' | 'clipboard';
|
|
17
|
+
export interface PluginHooks {
|
|
18
|
+
build?: string;
|
|
19
|
+
dev?: string;
|
|
20
|
+
package?: string;
|
|
21
|
+
deploy?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface PluginManifest {
|
|
24
|
+
plugins: Record<string, {
|
|
25
|
+
version: string;
|
|
26
|
+
enabled: boolean;
|
|
27
|
+
}>;
|
|
28
|
+
registry: string;
|
|
29
|
+
}
|
|
30
|
+
export interface PluginRegistry {
|
|
31
|
+
plugins: Record<string, PluginRegistryEntry>;
|
|
32
|
+
}
|
|
33
|
+
export interface PluginRegistryEntry {
|
|
34
|
+
name: string;
|
|
35
|
+
description: string;
|
|
36
|
+
versions: Record<string, {
|
|
37
|
+
url: string;
|
|
38
|
+
checksum: string;
|
|
39
|
+
}>;
|
|
40
|
+
latest: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Events emitted by `PluginManager`.
|
|
44
|
+
*
|
|
45
|
+
* `plugin:error` — `{ name, hookName, error }` — a plugin's hook crashed.
|
|
46
|
+
* Subscribe to surface failures in your own UI / logs.
|
|
47
|
+
*/
|
|
48
|
+
export interface PluginEvents {
|
|
49
|
+
'plugin:error': {
|
|
50
|
+
name: string;
|
|
51
|
+
hookName: string;
|
|
52
|
+
error: unknown;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export declare class PluginManager extends EventEmitter {
|
|
56
|
+
private pluginsDir;
|
|
57
|
+
private manifestPath;
|
|
58
|
+
private manifest;
|
|
59
|
+
constructor(projectRoot: string);
|
|
60
|
+
private loadManifest;
|
|
61
|
+
private saveManifest;
|
|
62
|
+
/**
|
|
63
|
+
* Install a plugin from the registry or a URL
|
|
64
|
+
*/
|
|
65
|
+
install(nameOrUrl: string, version?: string): Promise<void>;
|
|
66
|
+
private installFromRegistry;
|
|
67
|
+
private installFromUrl;
|
|
68
|
+
private installFromGit;
|
|
69
|
+
private computeChecksum;
|
|
70
|
+
private verifyPlugin;
|
|
71
|
+
/**
|
|
72
|
+
* Uninstall a plugin
|
|
73
|
+
*/
|
|
74
|
+
uninstall(name: string): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Enable a plugin
|
|
77
|
+
*/
|
|
78
|
+
enable(name: string): void;
|
|
79
|
+
/**
|
|
80
|
+
* Disable a plugin
|
|
81
|
+
*/
|
|
82
|
+
disable(name: string): void;
|
|
83
|
+
/**
|
|
84
|
+
* List installed plugins
|
|
85
|
+
*/
|
|
86
|
+
list(): Array<{
|
|
87
|
+
name: string;
|
|
88
|
+
version: string;
|
|
89
|
+
enabled: boolean;
|
|
90
|
+
}>;
|
|
91
|
+
/**
|
|
92
|
+
* Update a plugin to the latest version
|
|
93
|
+
*/
|
|
94
|
+
update(name: string): Promise<void>;
|
|
95
|
+
/**
|
|
96
|
+
* Update all plugins
|
|
97
|
+
*/
|
|
98
|
+
updateAll(): Promise<void>;
|
|
99
|
+
/**
|
|
100
|
+
* Run a plugin hook
|
|
101
|
+
*/
|
|
102
|
+
runHook(hookName: keyof PluginHooks, context: Record<string, unknown>): Promise<void>;
|
|
103
|
+
/**
|
|
104
|
+
* Search plugins in registry
|
|
105
|
+
*/
|
|
106
|
+
search(query: string): Promise<PluginRegistryEntry[]>;
|
|
107
|
+
/**
|
|
108
|
+
* Get plugin info
|
|
109
|
+
*/
|
|
110
|
+
info(name: string): Promise<PluginRegistryEntry>;
|
|
111
|
+
}
|
|
112
|
+
export declare function pluginCommand(args: string[]): Promise<void>;
|
|
113
|
+
export default PluginManager;
|
|
114
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"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"}
|