@stacksjs/stx 0.2.10 → 0.2.11

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.
Files changed (128) hide show
  1. package/README.md +16 -11
  2. package/dist/a11y.d.ts +2 -1
  3. package/dist/analyzer.d.ts +4 -0
  4. package/dist/app-shell.d.ts +72 -0
  5. package/dist/app.d.ts +1 -0
  6. package/dist/broadcasting.d.ts +77 -0
  7. package/dist/build-assets.d.ts +32 -0
  8. package/dist/build-mode-detector.d.ts +26 -0
  9. package/dist/build.d.ts +31 -0
  10. package/dist/builtins/icon.d.ts +7 -0
  11. package/dist/builtins/index.d.ts +21 -0
  12. package/dist/builtins/stx-image.d.ts +2 -0
  13. package/dist/builtins/stx-link.d.ts +2 -0
  14. package/dist/builtins/stx-loading-indicator.d.ts +2 -0
  15. package/dist/bundle-analyzer/index.d.ts +2 -0
  16. package/dist/bundle-analyzer.js +20 -20
  17. package/dist/caching.d.ts +27 -0
  18. package/dist/cli.js +3941 -2609
  19. package/dist/client-helpers.d.ts +7 -3
  20. package/dist/client-script-bundler.d.ts +27 -0
  21. package/dist/client-script.d.ts +5 -1
  22. package/dist/client.d.ts +1 -0
  23. package/dist/component-hmr.d.ts +1 -0
  24. package/dist/component-processing.d.ts +107 -0
  25. package/dist/component-registry.d.ts +54 -0
  26. package/dist/component-renderer.d.ts +18 -0
  27. package/dist/components/StxImage.stx +12 -0
  28. package/dist/components/StxLink.stx +18 -8
  29. package/dist/composables/index.d.ts +7 -0
  30. package/dist/composables/use-broadcast-channel.d.ts +1 -0
  31. package/dist/composables/use-channel.d.ts +67 -0
  32. package/dist/composables/use-intersection-observer.d.ts +2 -0
  33. package/dist/composables/use-keyboard.d.ts +1 -0
  34. package/dist/composables/use-mouse.d.ts +1 -0
  35. package/dist/composables/use-router.d.ts +4 -0
  36. package/dist/composables/use-websocket.d.ts +1 -0
  37. package/dist/composables.d.ts +2 -0
  38. package/dist/composition-api.d.ts +1 -0
  39. package/dist/computed.d.ts +1 -0
  40. package/dist/config.d.ts +12 -1
  41. package/dist/craft-bridge.d.ts +6 -3
  42. package/dist/craft-components.d.ts +1 -0
  43. package/dist/craft.js +39 -33
  44. package/dist/deploy/index.d.ts +1 -0
  45. package/dist/dev-server/crosswind.d.ts +2 -5
  46. package/dist/dev-server/native-window.d.ts +19 -1
  47. package/dist/dev-server/serve-app.d.ts +15 -0
  48. package/dist/dev-server/serve-file.d.ts +3 -0
  49. package/dist/dev-server/serve-markdown.d.ts +3 -0
  50. package/dist/dev-server/serve-multi.d.ts +5 -0
  51. package/dist/dev-server/types.d.ts +2 -0
  52. package/dist/dev-server.d.ts +6 -40
  53. package/dist/devtools.d.ts +1 -0
  54. package/dist/directive-api.d.ts +1 -1
  55. package/dist/document-shell.d.ts +33 -0
  56. package/dist/error-boundaries.d.ts +1 -0
  57. package/dist/events.d.ts +1 -0
  58. package/dist/expressions.d.ts +38 -0
  59. package/dist/forms-validation.d.ts +2 -0
  60. package/dist/head.d.ts +1 -0
  61. package/dist/hot-reload.d.ts +1 -0
  62. package/dist/hydration-runtime.d.ts +1 -0
  63. package/dist/hydration.d.ts +1 -0
  64. package/dist/i18n.d.ts +3 -1
  65. package/dist/image-optimization/build-plugin.d.ts +1 -0
  66. package/dist/index.d.ts +22 -1
  67. package/dist/index.js +5569 -4182
  68. package/dist/inline-assets.d.ts +28 -0
  69. package/dist/internal-markdown.d.ts +0 -4
  70. package/dist/jsx-runtime.d.ts +1 -0
  71. package/dist/keep-alive.d.ts +1 -0
  72. package/dist/manifest.d.ts +41 -0
  73. package/dist/markdown.d.ts +1 -0
  74. package/dist/media/client/blur-up.d.ts +1 -0
  75. package/dist/media/client/lazy-load.d.ts +1 -0
  76. package/dist/media/client/upload-handler.d.ts +1 -0
  77. package/dist/media/shared/cache.d.ts +2 -0
  78. package/dist/media/video/index.d.ts +1 -0
  79. package/dist/media/video/processor/thumbnail.d.ts +1 -0
  80. package/dist/misc-directives.d.ts +49 -0
  81. package/dist/parser/directive-parser.d.ts +13 -0
  82. package/dist/performance-utils.d.ts +2 -0
  83. package/dist/placeholder.d.ts +45 -0
  84. package/dist/plugin-system.d.ts +32 -2
  85. package/dist/process.d.ts +11 -1
  86. package/dist/production-builder.d.ts +42 -0
  87. package/dist/production-server.d.ts +19 -0
  88. package/dist/props.d.ts +1 -0
  89. package/dist/pwa.js +3883 -2679
  90. package/dist/reactive.d.ts +2 -16
  91. package/dist/reactivity.d.ts +1 -0
  92. package/dist/router.d.ts +1 -1
  93. package/dist/runtime-injection.d.ts +20 -0
  94. package/dist/runtime.d.ts +2 -2
  95. package/dist/script-classifier.d.ts +35 -0
  96. package/dist/script-validation.d.ts +16 -0
  97. package/dist/server-bindings.d.ts +7 -0
  98. package/dist/server-components.d.ts +4 -0
  99. package/dist/signal-processing.d.ts +109 -0
  100. package/dist/signals-api.d.ts +309 -0
  101. package/dist/signals.d.ts +2 -309
  102. package/dist/spa-shell.d.ts +1 -0
  103. package/dist/ssg.js +3862 -2655
  104. package/dist/ssr.d.ts +1 -0
  105. package/dist/state-management.d.ts +27 -0
  106. package/dist/store-imports.d.ts +24 -0
  107. package/dist/store-loader.d.ts +16 -0
  108. package/dist/story/bun-test.d.ts +1 -0
  109. package/dist/story/compiled-output.d.ts +1 -0
  110. package/dist/story/interactions.d.ts +1 -0
  111. package/dist/story/renderer.d.ts +2 -0
  112. package/dist/story/setup.d.ts +1 -0
  113. package/dist/story/ui/code-panel.d.ts +1 -0
  114. package/dist/stx.d.ts +437 -0
  115. package/dist/style-scoping.d.ts +23 -0
  116. package/dist/template-compiler.d.ts +31 -0
  117. package/dist/template-hydrator.d.ts +18 -0
  118. package/dist/transitions.d.ts +1 -0
  119. package/dist/types/config-types.d.ts +62 -0
  120. package/dist/validator.d.ts +1 -0
  121. package/dist/variable-extractor.d.ts +1 -1
  122. package/dist/view-composers.d.ts +1 -0
  123. package/dist/virtual-scrolling.d.ts +1 -0
  124. package/dist/visual-testing.js +2 -2
  125. package/dist/web-components.d.ts +1 -0
  126. package/dist/x-element.d.ts +1 -0
  127. package/package.json +72 -7
  128. package/stx.d.ts +437 -0
package/stx.d.ts ADDED
@@ -0,0 +1,437 @@
1
+ /**
2
+ * STX Ambient Type Declarations
3
+ *
4
+ * This file is shipped with the @stacksjs/stx package and referenced from
5
+ * the package's main types entry. When stx is installed, TypeScript picks
6
+ * these declarations up automatically — apps do NOT need to write their own
7
+ * stx.d.ts workaround for runtime globals.
8
+ *
9
+ * What's declared here:
10
+ * 1. Module declarations for `*.stx` and `*.md` imports
11
+ * 2. Runtime globals injected by the stx signals runtime into <script client>
12
+ * blocks (signals, lifecycle, stores, composables, head, routing, etc.)
13
+ * 3. The `window.stx` registry interface
14
+ *
15
+ * Source of truth for the auto-imported global list:
16
+ * packages/stx/src/client-script.ts → STX_AUTO_IMPORTS
17
+ * packages/stx/src/signals.ts → window.stx = { ... }
18
+ */
19
+
20
+ // ============================================================================
21
+ // Module declarations
22
+ // ============================================================================
23
+
24
+ // Allow importing .stx files
25
+ declare module '*.stx'
26
+
27
+ // Allow importing .md files with frontmatter
28
+ declare module '*.md' {
29
+ const content: string
30
+ const data: Record<string, any>
31
+ export default content
32
+ export { data }
33
+ }
34
+
35
+ // ============================================================================
36
+ // Signal types
37
+ // ============================================================================
38
+
39
+ interface StxSignal<T> {
40
+ (): T
41
+ set: (value: T) => void
42
+ update: (fn: (current: T) => T) => void
43
+ subscribe: (cb: (value: T) => void) => () => void
44
+ readonly _isSignal: true
45
+ }
46
+
47
+ interface StxDerivedSignal<T> {
48
+ (): T
49
+ readonly _isSignal: true
50
+ }
51
+
52
+ interface StxRef<T> {
53
+ value: T
54
+ }
55
+
56
+ type StxCleanup = () => void
57
+
58
+ // ============================================================================
59
+ // Signals (modern reactivity)
60
+ // ============================================================================
61
+
62
+ declare function state<T>(initial: T): StxSignal<T>
63
+ declare function derived<T>(compute: () => T): StxDerivedSignal<T>
64
+ declare function effect(fn: () => void | StxCleanup): StxCleanup
65
+ declare function batch(fn: () => void): void
66
+ declare function untrack<T>(value: T | StxSignal<T> | StxDerivedSignal<T>): T
67
+ declare function peek<T>(fn: () => T): T
68
+ declare function isSignal(value: unknown): value is StxSignal<unknown>
69
+ declare function isDerived(value: unknown): value is StxDerivedSignal<unknown>
70
+
71
+ // ============================================================================
72
+ // Lifecycle
73
+ // ============================================================================
74
+
75
+ declare function onMount(fn: () => void | StxCleanup): void
76
+ declare function onDestroy(fn: () => void): void
77
+ declare function onBeforeMount(fn: () => void): void
78
+ declare function onMounted(fn: () => void | StxCleanup): void
79
+ declare function onBeforeUpdate(fn: () => void): void
80
+ declare function onUpdated(fn: () => void): void
81
+ declare function onBeforeUnmount(fn: () => void): void
82
+ declare function onUnmounted(fn: () => void): void
83
+ declare function onErrorCaptured(fn: (error: unknown, instance: any, info: string) => boolean | void): void
84
+
85
+ // ============================================================================
86
+ // Template refs
87
+ // ============================================================================
88
+
89
+ declare function useRef<T = HTMLElement>(name: string): { current: T | null }
90
+
91
+ // ============================================================================
92
+ // Routing / navigation
93
+ // ============================================================================
94
+
95
+ declare function navigate(url: string, options?: { replace?: boolean }): void
96
+ declare function goBack(): void
97
+ declare function goForward(): void
98
+ declare function useRoute(): {
99
+ path: string
100
+ params: Record<string, string>
101
+ query: Record<string, string>
102
+ hash: string
103
+ }
104
+ declare function setRouteParams(params: Record<string, string>): void
105
+ declare function useSearchParams(): {
106
+ get: (key: string) => string | null
107
+ set: (key: string, value: string) => void
108
+ delete: (key: string) => void
109
+ has: (key: string) => boolean
110
+ }
111
+
112
+ // ============================================================================
113
+ // Data fetching
114
+ // ============================================================================
115
+
116
+ interface StxQueryResult<T> {
117
+ data: StxSignal<T | null>
118
+ loading: StxSignal<boolean>
119
+ error: StxSignal<Error | null>
120
+ refetch: () => Promise<void>
121
+ }
122
+
123
+ interface StxMutationResult<T> {
124
+ data: StxSignal<T | null>
125
+ loading: StxSignal<boolean>
126
+ error: StxSignal<Error | null>
127
+ mutate: (body?: any) => Promise<T>
128
+ }
129
+
130
+ declare function useFetch<T = any>(url: string, options?: any): StxQueryResult<T>
131
+ declare function useQuery<T = any>(url: string, options?: any): StxQueryResult<T>
132
+ declare function useMutation<T = any>(url: string, options?: any): StxMutationResult<T>
133
+
134
+ // ============================================================================
135
+ // DOM utilities
136
+ // ============================================================================
137
+
138
+ declare function useEventListener<K extends keyof WindowEventMap>(
139
+ target: Window | Document | HTMLElement | string | null,
140
+ event: K,
141
+ handler: (event: WindowEventMap[K]) => void,
142
+ options?: boolean | AddEventListenerOptions,
143
+ ): StxCleanup
144
+ declare function useEventListener(
145
+ target: Window | Document | HTMLElement | string | null,
146
+ event: string,
147
+ handler: (event: Event) => void,
148
+ options?: boolean | AddEventListenerOptions,
149
+ ): StxCleanup
150
+ declare function useMeta(meta: Record<string, string>): void
151
+ declare function useClickOutside(target: any, handler: (event: MouseEvent) => void): StxCleanup
152
+ declare function useFocus(target: any): { focused: StxSignal<boolean>, focus: () => void, blur: () => void }
153
+
154
+ // ============================================================================
155
+ // Timers / scheduling
156
+ // ============================================================================
157
+
158
+ declare function useDebounce<T extends (...args: any[]) => any>(fn: T, delay: number): T
159
+ declare function useDebouncedValue<T>(value: StxSignal<T>, delay: number): StxSignal<T>
160
+ declare function useThrottle<T extends (...args: any[]) => any>(fn: T, delay: number): T
161
+ declare function useInterval(fn: () => void, ms: number, options?: { immediate?: boolean }): {
162
+ start: () => void
163
+ stop: () => void
164
+ isActive: StxSignal<boolean>
165
+ }
166
+ declare function useTimeout(fn: () => void, ms: number): {
167
+ start: () => void
168
+ stop: () => void
169
+ isPending: StxSignal<boolean>
170
+ }
171
+ declare function nextTick(fn?: () => void): Promise<void>
172
+
173
+ // ============================================================================
174
+ // State utilities
175
+ // ============================================================================
176
+
177
+ declare function useToggle(initial?: boolean): [StxSignal<boolean>, (value?: boolean) => void]
178
+ declare function useCounter(initial?: number, options?: { min?: number, max?: number }): {
179
+ count: StxSignal<number>
180
+ inc: (n?: number) => void
181
+ dec: (n?: number) => void
182
+ set: (n: number) => void
183
+ reset: () => void
184
+ }
185
+ declare function useAsync<T>(fn: () => Promise<T>): {
186
+ data: StxSignal<T | null>
187
+ loading: StxSignal<boolean>
188
+ error: StxSignal<Error | null>
189
+ execute: () => Promise<T>
190
+ }
191
+
192
+ // ============================================================================
193
+ // Storage
194
+ // ============================================================================
195
+
196
+ declare function useLocalStorage<T>(key: string, defaultValue: T): StxSignal<T>
197
+ declare function useSessionStorage<T>(key: string, defaultValue: T): StxSignal<T>
198
+
199
+ // ============================================================================
200
+ // WebSocket
201
+ // ============================================================================
202
+
203
+ declare function useWebSocket(url: string, options?: {
204
+ immediate?: boolean
205
+ autoReconnect?: boolean | { retries?: number, delay?: number }
206
+ onMessage?: (event: MessageEvent) => void
207
+ onConnected?: () => void
208
+ onDisconnected?: () => void
209
+ onError?: (event: Event) => void
210
+ }): {
211
+ status: StxSignal<'CONNECTING' | 'OPEN' | 'CLOSING' | 'CLOSED'>
212
+ data: StxSignal<any>
213
+ send: (data: string | ArrayBuffer | Blob) => void
214
+ open: () => void
215
+ close: () => void
216
+ ws: WebSocket | null
217
+ }
218
+
219
+ // ============================================================================
220
+ // Color mode
221
+ // ============================================================================
222
+
223
+ declare function useColorMode(): {
224
+ mode: StxSignal<'light' | 'dark' | 'auto'>
225
+ setMode: (mode: 'light' | 'dark' | 'auto') => void
226
+ }
227
+ declare function useDark(): StxSignal<boolean>
228
+
229
+ // ============================================================================
230
+ // Head / SEO
231
+ // ============================================================================
232
+
233
+ interface StxHeadConfig {
234
+ title?: string
235
+ titleTemplate?: string | ((title?: string) => string)
236
+ meta?: Array<Record<string, string>>
237
+ link?: Array<Record<string, string>>
238
+ script?: Array<Record<string, string> & { children?: string }>
239
+ style?: Array<Record<string, string> & { children?: string }>
240
+ htmlAttrs?: Record<string, string>
241
+ bodyAttrs?: Record<string, string>
242
+ }
243
+
244
+ interface StxSeoMetaConfig {
245
+ title?: string
246
+ description?: string
247
+ keywords?: string
248
+ author?: string
249
+ ogTitle?: string
250
+ ogDescription?: string
251
+ ogImage?: string
252
+ ogUrl?: string
253
+ ogType?: string
254
+ twitterCard?: 'summary' | 'summary_large_image' | 'app' | 'player'
255
+ twitterTitle?: string
256
+ twitterDescription?: string
257
+ twitterImage?: string
258
+ robots?: string
259
+ canonical?: string
260
+ }
261
+
262
+ declare function useHead(config: StxHeadConfig): void
263
+ declare function useSeoMeta(config: StxSeoMetaConfig): void
264
+
265
+ // ============================================================================
266
+ // Vue-style reactivity (alternative API)
267
+ // ============================================================================
268
+
269
+ declare function ref<T>(value: T): StxRef<T>
270
+ declare function reactive<T extends object>(target: T): T
271
+ declare function computed<T>(getter: () => T): StxRef<T>
272
+ declare function watch<T>(
273
+ source: (() => T) | StxRef<T> | StxSignal<T>,
274
+ callback: (value: T, oldValue: T) => void,
275
+ options?: { immediate?: boolean, deep?: boolean },
276
+ ): StxCleanup
277
+ declare function watchEffect(fn: () => void): StxCleanup
278
+ declare function watchMultiple(
279
+ sources: Array<() => any>,
280
+ callback: (values: any[], oldValues: any[]) => void,
281
+ options?: { immediate?: boolean },
282
+ ): StxCleanup
283
+
284
+ // ============================================================================
285
+ // Component definition / composition API
286
+ // ============================================================================
287
+
288
+ declare function defineProps<T extends Record<string, any> = Record<string, any>>(definitions?: any): T
289
+ declare function withDefaults<T extends Record<string, any>>(props: T, defaults: Partial<T>): T
290
+ declare function defineEmits<T extends string = string>(): (event: T, payload?: any) => void
291
+ declare function defineExpose<T extends Record<string, any>>(exposed: T): void
292
+ declare function provide<T>(key: string | symbol, value: T): void
293
+ declare function inject<T>(key: string | symbol, defaultValue?: T): T | undefined
294
+ declare function getCurrentInstance(): any
295
+ declare function useSlots(): Record<string, any>
296
+ declare function useAttrs(): Record<string, any>
297
+ declare function $computed<T>(getter: () => T): StxRef<T>
298
+ declare function $watch<T>(
299
+ source: (() => T) | StxRef<T> | StxSignal<T>,
300
+ callback: (value: T, oldValue: T) => void,
301
+ options?: { immediate?: boolean, deep?: boolean },
302
+ ): StxCleanup
303
+
304
+ // ============================================================================
305
+ // Stores (Pinia-inspired, signals-based)
306
+ // ============================================================================
307
+
308
+ interface StxStorePersistOptions {
309
+ pick?: string[]
310
+ storage?: 'localStorage' | 'sessionStorage'
311
+ key?: string
312
+ }
313
+
314
+ interface StxStoreOptions {
315
+ persist?: boolean | StxStorePersistOptions
316
+ }
317
+
318
+ declare function defineStore<T>(
319
+ id: string,
320
+ setup: () => T,
321
+ options?: StxStoreOptions,
322
+ ): () => T
323
+ declare function defineStore<S extends Record<string, any>, G extends Record<string, any>, A extends Record<string, any>>(
324
+ id: string,
325
+ options: {
326
+ state?: () => S
327
+ getters?: G
328
+ actions?: A
329
+ persist?: boolean | StxStorePersistOptions
330
+ },
331
+ ): () => S & G & A
332
+ declare function useStore<T = any>(id: string): T
333
+ declare function createStore<T>(setup: () => T, options?: StxStoreOptions): () => T
334
+ declare function action<T extends (...args: any[]) => any>(fn: T): T
335
+ declare function createSelector<T, R>(selector: (state: T) => R): (state: T) => R
336
+
337
+ // ============================================================================
338
+ // JSX runtime (Vue/React style)
339
+ // ============================================================================
340
+
341
+ declare function h(tag: string | Function, props?: Record<string, any> | null, ...children: any[]): any
342
+ declare const Fragment: unique symbol
343
+
344
+ // ============================================================================
345
+ // window.stx registry
346
+ // ============================================================================
347
+
348
+ interface StxRuntimeRegistry {
349
+ // Signals
350
+ state: typeof state
351
+ derived: typeof derived
352
+ effect: typeof effect
353
+ batch: typeof batch
354
+ untrack: typeof untrack
355
+ peek: typeof peek
356
+ isSignal: typeof isSignal
357
+
358
+ // Lifecycle
359
+ onMount: typeof onMount
360
+ onDestroy: typeof onDestroy
361
+
362
+ // Composables
363
+ useFetch: typeof useFetch
364
+ useRef: typeof useRef
365
+ useQuery: typeof useQuery
366
+ useMutation: typeof useMutation
367
+
368
+ // Routing
369
+ navigate: typeof navigate
370
+ goBack: typeof goBack
371
+ goForward: typeof goForward
372
+ useRoute: typeof useRoute
373
+ setRouteParams: typeof setRouteParams
374
+ useSearchParams: typeof useSearchParams
375
+
376
+ // Composition
377
+ provide: typeof provide
378
+ defineProps: typeof defineProps
379
+ withDefaults: typeof withDefaults
380
+ defineEmits: typeof defineEmits
381
+ defineExpose: typeof defineExpose
382
+
383
+ // Vue compat
384
+ ref: typeof ref
385
+ reactive: typeof reactive
386
+ computed: typeof computed
387
+ watch: typeof watch
388
+ watchEffect: typeof watchEffect
389
+ $computed: typeof $computed
390
+ $watch: typeof $watch
391
+
392
+ // Utilities
393
+ useDebounce: typeof useDebounce
394
+ useDebouncedValue: typeof useDebouncedValue
395
+ useThrottle: typeof useThrottle
396
+ useInterval: typeof useInterval
397
+ useTimeout: typeof useTimeout
398
+ useToggle: typeof useToggle
399
+ useCounter: typeof useCounter
400
+ useClickOutside: typeof useClickOutside
401
+ useFocus: typeof useFocus
402
+ useAsync: typeof useAsync
403
+ useLocalStorage: typeof useLocalStorage
404
+ useEventListener: typeof useEventListener
405
+ useWebSocket: typeof useWebSocket
406
+ useColorMode: typeof useColorMode
407
+ useDark: typeof useDark
408
+ useHead: typeof useHead
409
+ useSeoMeta: typeof useSeoMeta
410
+
411
+ // Stores
412
+ defineStore: typeof defineStore
413
+ useStore: typeof useStore
414
+
415
+ // Mount API
416
+ mount: (setupFn: () => any) => void
417
+ mountEl: (selector: string, setupFn: () => any) => void
418
+
419
+ // Helpers (template helpers — populated by app)
420
+ helpers: Record<string, any>
421
+
422
+ // Internals (escape hatch)
423
+ [key: string]: any
424
+ }
425
+
426
+ // Bare global so existing code that references `stx` (without `window.`) still works
427
+ declare const stx: StxRuntimeRegistry
428
+
429
+ // Augment Window so `window.stx` is typed
430
+ interface Window {
431
+ stx: StxRuntimeRegistry
432
+ __STX_STORES__?: Record<string, any>
433
+ __STX_CURRENT_PROPS__?: Record<string, any>
434
+ __STX_CURRENT_ELEMENT__?: HTMLElement | null
435
+ __stxRouter?: boolean
436
+ __stxRouterConfig?: Record<string, any>
437
+ }