@stacksjs/stx 0.2.155 → 0.2.157

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 (241) hide show
  1. package/dist/a11y.d.ts +87 -46
  2. package/dist/animation.d.ts +96 -42
  3. package/dist/appearance-bootstrap.d.ts +49 -15
  4. package/dist/asset-roots.d.ts +32 -0
  5. package/dist/asset-roots.js +7 -0
  6. package/dist/assets.d.ts +9 -7
  7. package/dist/async-components.d.ts +78 -56
  8. package/dist/auth.d.ts +3 -0
  9. package/dist/build-externalize.d.ts +40 -0
  10. package/dist/build-externalize.js +63 -0
  11. package/dist/build-id.d.ts +22 -22
  12. package/dist/build-message.d.ts +73 -2
  13. package/dist/build-message.js +47 -8
  14. package/dist/builtins/attrs.d.ts +14 -0
  15. package/dist/builtins/drawer.d.ts +22 -0
  16. package/dist/builtins/icon.d.ts +16 -2
  17. package/dist/builtins/index.d.ts +5 -15
  18. package/dist/builtins/modal.d.ts +24 -0
  19. package/dist/builtins/safe-image.d.ts +42 -0
  20. package/dist/builtins/stx-image.d.ts +27 -0
  21. package/dist/builtins/stx-link.d.ts +9 -0
  22. package/dist/builtins/stx-loading-indicator.d.ts +11 -0
  23. package/dist/builtins/suspense.d.ts +28 -0
  24. package/dist/builtins/toast.d.ts +17 -0
  25. package/dist/builtins/transition-group.d.ts +25 -0
  26. package/dist/caching.d.ts +12 -15
  27. package/dist/cli.js +1798 -908
  28. package/dist/client/directive.d.ts +7 -0
  29. package/dist/client/index.d.ts +0 -1
  30. package/dist/client-script-bundler.d.ts +63 -5
  31. package/dist/client-script-bundler.js +30 -2
  32. package/dist/client-script.d.ts +102 -47
  33. package/dist/client-script.js +15 -3
  34. package/dist/codemod.d.ts +56 -0
  35. package/dist/codemod.js +192 -0
  36. package/dist/color-mode-boot.d.ts +83 -65
  37. package/dist/component-client-factories.d.ts +1 -6
  38. package/dist/component-processing.d.ts +58 -49
  39. package/dist/component-processing.js +1 -1
  40. package/dist/component-registry.d.ts +94 -31
  41. package/dist/component-renderer.d.ts +18 -0
  42. package/dist/composable-loader.d.ts +24 -0
  43. package/dist/composable-loader.js +12 -9
  44. package/dist/composables/index.d.ts +7 -0
  45. package/dist/composables/index.js +1 -0
  46. package/dist/composables/use-fetch.js +30 -2
  47. package/dist/composables/use-form.d.ts +91 -0
  48. package/dist/composables/use-form.js +112 -0
  49. package/dist/composables.d.ts +64 -60
  50. package/dist/computed.d.ts +86 -92
  51. package/dist/conditionals.d.ts +24 -8
  52. package/dist/conditionals.js +16 -0
  53. package/dist/config.d.ts +34 -21
  54. package/dist/config.js +35 -14
  55. package/dist/craft.js +1476 -768
  56. package/dist/crosswind-config.d.ts +58 -0
  57. package/dist/crosswind-config.js +40 -0
  58. package/dist/csp.d.ts +107 -41
  59. package/dist/defer.d.ts +24 -0
  60. package/dist/dev-server/crosswind.d.ts +35 -26
  61. package/dist/dev-server/crosswind.js +2 -18
  62. package/dist/dev-server/serve-app.js +4 -3
  63. package/dist/dev-server/terminal-colors.d.ts +32 -32
  64. package/dist/directive-api.d.ts +86 -43
  65. package/dist/document-shell.d.ts +54 -41
  66. package/dist/dynamic-components.d.ts +9 -0
  67. package/dist/error-boundaries.d.ts +47 -41
  68. package/dist/error-handling.d.ts +1 -1
  69. package/dist/errors/codes.d.ts +51 -43
  70. package/dist/errors/formatter.d.ts +58 -38
  71. package/dist/errors/index.d.ts +5 -61
  72. package/dist/errors/logger.d.ts +114 -40
  73. package/dist/errors/sanitizer.d.ts +53 -23
  74. package/dist/errors/types.d.ts +44 -31
  75. package/dist/events.d.ts +86 -25
  76. package/dist/expressions.d.ts +50 -42
  77. package/dist/forms-validation.d.ts +138 -123
  78. package/dist/forms-validation.js +1 -90
  79. package/dist/forms.d.ts +120 -66
  80. package/dist/forms.js +31 -11
  81. package/dist/fragment-container.d.ts +57 -0
  82. package/dist/fragment-container.js +109 -0
  83. package/dist/framework-composables.d.ts +32 -0
  84. package/dist/head.d.ts +156 -114
  85. package/dist/heatmap.d.ts +152 -72
  86. package/dist/html-masking.d.ts +40 -34
  87. package/dist/hydration-runtime.d.ts +20 -24
  88. package/dist/i18n.d.ts +93 -32
  89. package/dist/image-optimization/auto-sibling.d.ts +32 -4
  90. package/dist/includes.d.ts +69 -7
  91. package/dist/index.d.ts +66 -0
  92. package/dist/index.js +23 -0
  93. package/dist/internal-markdown.d.ts +12 -8
  94. package/dist/island-chunking.d.ts +30 -13
  95. package/dist/keep-alive.d.ts +72 -52
  96. package/dist/layout-types.d.ts +45 -0
  97. package/dist/layout-types.js +56 -0
  98. package/dist/lazy-module.d.ts +10 -0
  99. package/dist/loops.d.ts +66 -0
  100. package/dist/loops.js +47 -6
  101. package/dist/markdown.d.ts +0 -1
  102. package/dist/media/image/component.d.ts +25 -9
  103. package/dist/media/image/directive.d.ts +15 -1
  104. package/dist/media/image/placeholder.d.ts +20 -9
  105. package/dist/media/image/processor/cache.d.ts +40 -18
  106. package/dist/media/image/processor/index.d.ts +1 -10
  107. package/dist/media/image/processor/optimizer.d.ts +12 -1
  108. package/dist/media/image/processor/responsive.d.ts +16 -6
  109. package/dist/media/image/srcset.d.ts +47 -50
  110. package/dist/media/shared/cache.d.ts +51 -31
  111. package/dist/media/shared/hash.d.ts +7 -0
  112. package/dist/media/types.d.ts +1235 -754
  113. package/dist/media/video/directive.d.ts +15 -1
  114. package/dist/media/video/index.d.ts +39 -17
  115. package/dist/media/video/processor/cache.d.ts +42 -19
  116. package/dist/media/video/processor/index.d.ts +1 -18
  117. package/dist/media/video/processor/streaming.d.ts +17 -10
  118. package/dist/media/video/processor/thumbnail.d.ts +21 -15
  119. package/dist/media/video/processor/transcoder.d.ts +11 -1
  120. package/dist/method-spoofing.d.ts +7 -0
  121. package/dist/middleware.d.ts +60 -0
  122. package/dist/owned-routes.d.ts +42 -0
  123. package/dist/owned-routes.js +26 -0
  124. package/dist/page-meta.d.ts +38 -0
  125. package/dist/page-meta.js +16 -0
  126. package/dist/parser/directive-parser.d.ts +57 -45
  127. package/dist/parser/expression-parser.d.ts +33 -35
  128. package/dist/parser/index.d.ts +4 -39
  129. package/dist/parser/tokenizer.d.ts +61 -49
  130. package/dist/partial-hydration.d.ts +82 -50
  131. package/dist/performance-utils.d.ts +217 -124
  132. package/dist/placeholder.d.ts +18 -9
  133. package/dist/plugin-system.d.ts +264 -115
  134. package/dist/process.d.ts +11 -6
  135. package/dist/process.js +21 -4
  136. package/dist/production-builder.js +7 -0
  137. package/dist/prop-sentinels.d.ts +11 -11
  138. package/dist/public-env.d.ts +14 -0
  139. package/dist/pwa/directives.d.ts +12 -3
  140. package/dist/pwa/inject.d.ts +10 -0
  141. package/dist/pwa/precache.d.ts +22 -16
  142. package/dist/pwa/service-worker.d.ts +12 -0
  143. package/dist/pwa.js +1318 -610
  144. package/dist/reactive-bindings.d.ts +34 -11
  145. package/dist/reactive.d.ts +58 -30
  146. package/dist/reactive.js +56 -31
  147. package/dist/render.d.ts +0 -14
  148. package/dist/render.js +17 -0
  149. package/dist/route-middleware.d.ts +2 -35
  150. package/dist/route-types.d.ts +134 -0
  151. package/dist/route-types.js +24 -0
  152. package/dist/router.d.ts +5 -7
  153. package/dist/routes.d.ts +1 -3
  154. package/dist/runtime-globals.d.ts +147 -24
  155. package/dist/runtime-globals.js +16 -1
  156. package/dist/runtime-injection.d.ts +8 -0
  157. package/dist/runtime-injection.js +33 -24
  158. package/dist/script-emit.d.ts +30 -0
  159. package/dist/script-json.d.ts +36 -0
  160. package/dist/script-json.js +6 -0
  161. package/dist/script-validation.d.ts +21 -4
  162. package/dist/seo.d.ts +118 -47
  163. package/dist/server-bindings.d.ts +21 -0
  164. package/dist/sfc-template.d.ts +8 -8
  165. package/dist/signal-processing.d.ts +35 -15
  166. package/dist/signals-api.d.ts +117 -58
  167. package/dist/signals-api.js +7 -4
  168. package/dist/signals.d.ts +24 -17
  169. package/dist/signals.js +765 -60
  170. package/dist/site-builder/build.js +8 -0
  171. package/dist/site-url.d.ts +46 -0
  172. package/dist/site-url.js +70 -0
  173. package/dist/slots.d.ts +86 -20
  174. package/dist/source-signature.d.ts +45 -0
  175. package/dist/source-signature.js +20 -0
  176. package/dist/ssg.d.ts +285 -142
  177. package/dist/ssg.js +1268 -556
  178. package/dist/state-dir.d.ts +4 -4
  179. package/dist/state-management.d.ts +0 -12
  180. package/dist/state-management.js +8 -25
  181. package/dist/store-imports.d.ts +23 -0
  182. package/dist/store-imports.js +3 -0
  183. package/dist/store-loader.d.ts +10 -0
  184. package/dist/store-loader.js +10 -9
  185. package/dist/story/analytics.d.ts +138 -60
  186. package/dist/story/bookmarks.d.ts +87 -34
  187. package/dist/story/cli.d.ts +123 -69
  188. package/dist/story/collect/scanner.d.ts +4 -0
  189. package/dist/story/collect/tree.d.ts +8 -1
  190. package/dist/story/commands/build.d.ts +11 -6
  191. package/dist/story/commands/dev.d.ts +15 -8
  192. package/dist/story/commands/preview.d.ts +13 -7
  193. package/dist/story/config-watcher.d.ts +20 -13
  194. package/dist/story/config.d.ts +11 -8
  195. package/dist/story/context.d.ts +14 -8
  196. package/dist/story/hmr.d.ts +24 -26
  197. package/dist/story/hot-swap.d.ts +34 -23
  198. package/dist/story/keyboard-shortcuts.d.ts +23 -18
  199. package/dist/story/output.d.ts +46 -44
  200. package/dist/story/performance.d.ts +107 -45
  201. package/dist/story/presets.d.ts +107 -41
  202. package/dist/story/renderer.d.ts +41 -27
  203. package/dist/story/search.d.ts +23 -12
  204. package/dist/story/server.d.ts +21 -11
  205. package/dist/story/setup.d.ts +23 -15
  206. package/dist/story/testing.d.ts +65 -40
  207. package/dist/story/types.d.ts +262 -160
  208. package/dist/streaming.d.ts +119 -57
  209. package/dist/stx-virtual-ts.d.ts +165 -0
  210. package/dist/stx-virtual-ts.js +372 -0
  211. package/dist/stx.d.ts +78 -1
  212. package/dist/style-scoping.d.ts +17 -4
  213. package/dist/suspense.d.ts +67 -52
  214. package/dist/teleport.d.ts +22 -0
  215. package/dist/template-tag-balance.d.ts +22 -6
  216. package/dist/transitions.d.ts +66 -55
  217. package/dist/typecheck.d.ts +77 -0
  218. package/dist/typecheck.js +156 -0
  219. package/dist/types/component-types.d.ts +187 -122
  220. package/dist/types/config-types.d.ts +758 -297
  221. package/dist/types/context-types.d.ts +46 -24
  222. package/dist/types/csp-types.d.ts +70 -66
  223. package/dist/types/directive-types.d.ts +211 -155
  224. package/dist/types/index.d.ts +6 -109
  225. package/dist/types/pwa-types.d.ts +273 -148
  226. package/dist/types.d.ts +0 -1
  227. package/dist/typescript-templates.d.ts +11 -0
  228. package/dist/unresolved-identifiers.d.ts +24 -22
  229. package/dist/unresolved-identifiers.js +2 -0
  230. package/dist/utils.d.ts +24 -21
  231. package/dist/validator.d.ts +28 -26
  232. package/dist/variable-extractor.d.ts +48 -13
  233. package/dist/variable-extractor.js +27 -4
  234. package/dist/view-composers.d.ts +80 -81
  235. package/dist/virtual-scrolling.d.ts +101 -81
  236. package/dist/vue-template.d.ts +23 -0
  237. package/dist/web-components/css-scoping.d.ts +21 -11
  238. package/dist/web-components.d.ts +81 -58
  239. package/dist/x-element.d.ts +0 -1
  240. package/package.json +5 -5
  241. package/stx.d.ts +78 -1
package/dist/config.d.ts CHANGED
@@ -1,5 +1,21 @@
1
- import path from 'node:path';
2
1
  import type { StxConfig, StxOptions } from './types';
2
+ export declare const defaultConfig: StxConfig;
3
+ /**
4
+ * Resolve `root`, `pagesDir` and the template directories, in place.
5
+ *
6
+ * This is the ONE resolution pass. It used to live inline in `loadStxConfig`,
7
+ * while `bun-plugin`'s `serve()` read the same config file through bunfig and
8
+ * used the literal strings — so the same key meant two different directories
9
+ * depending on which path rendered the page, and `root` being *inferred* from
10
+ * the filesystem meant an ordinary Stacks layout hit the disagreement without
11
+ * anyone opting into anything (#1851).
12
+ *
13
+ * Prefixing is idempotent: a value that already starts with `root` is left
14
+ * alone. Directory strings stay project-root-relative rather than becoming
15
+ * absolute — see the note in the issue thread; that contract change is
16
+ * separable from this correctness fix.
17
+ */
18
+ export declare function resolveStxDirectories(loaded: StxConfig, cwd: string): StxConfig;
3
19
  /**
4
20
  * Load the stx config for a project.
5
21
  *
@@ -11,10 +27,27 @@ import type { StxConfig, StxOptions } from './types';
11
27
  * Results are cached per cwd so repeated calls don't re-read disk.
12
28
  */
13
29
  export declare function loadStxConfig(cwd?: string): Promise<StxConfig>;
30
+ export declare const config: StxConfig;
14
31
  /**
15
32
  * Helper function to define stx configuration
16
33
  */
17
34
  export declare function defineStxConfig(config: StxOptions): StxOptions;
35
+ /**
36
+ * Configuration validation error
37
+ */
38
+ export interface ConfigValidationError {
39
+ path: string;
40
+ message: string;
41
+ severity: 'error' | 'warning';
42
+ }
43
+ /**
44
+ * Configuration validation result
45
+ */
46
+ export interface ConfigValidationResult {
47
+ valid: boolean;
48
+ errors: ConfigValidationError[];
49
+ warnings: ConfigValidationError[];
50
+ }
18
51
  /**
19
52
  * Validate stx configuration
20
53
  *
@@ -30,23 +63,3 @@ export declare function defineStxConfig(config: StxOptions): StxOptions;
30
63
  * ```
31
64
  */
32
65
  export declare function validateConfig(config: StxOptions): ConfigValidationResult;
33
- export declare const defaultConfig: StxConfig;
34
- // Export a synchronous getter that returns defaults immediately, then loads async
35
- // This allows the module to be imported instantly without blocking
36
- export declare const config: StxConfig;
37
- /**
38
- * Configuration validation error
39
- */
40
- export declare interface ConfigValidationError {
41
- path: string
42
- message: string
43
- severity: 'error' | 'warning'
44
- }
45
- /**
46
- * Configuration validation result
47
- */
48
- export declare interface ConfigValidationResult {
49
- valid: boolean
50
- errors: ConfigValidationError[]
51
- warnings: ConfigValidationError[]
52
- }
package/dist/config.js CHANGED
@@ -372,6 +372,38 @@ function resolveStxRoot(configRoot, configPagesDir, cwd) {
372
372
  return { root: "resources/views", pagesDir: defaultPagesDir };
373
373
  return { root: ".", pagesDir: defaultPagesDir };
374
374
  }
375
+ const announcedRoots = new Set;
376
+ function alreadyUnderRoot(value, root) {
377
+ const normalizedRoot = root.replace(/[\\/]+$/, "");
378
+ if (!normalizedRoot || normalizedRoot === ".")
379
+ return !0;
380
+ const normalizedValue = value.replace(/\\/g, "/"), rootAsPosix = normalizedRoot.replace(/\\/g, "/");
381
+ return normalizedValue === rootAsPosix || normalizedValue.startsWith(`${rootAsPosix}/`);
382
+ }
383
+ export function resolveStxDirectories(loaded, cwd) {
384
+ const inferred = !loaded.root, resolved = resolveStxRoot(loaded.root, loaded.pagesDir, cwd);
385
+ loaded.root = resolved.root;
386
+ loaded.pagesDir = resolved.pagesDir;
387
+ if (inferred && resolved.root !== ".") {
388
+ const announceKey = `${cwd}::${resolved.root}`;
389
+ if (!announcedRoots.has(announceKey)) {
390
+ announcedRoots.add(announceKey);
391
+ console.warn(`[stx] No "root" in config \u2014 inferred "${resolved.root}" from the project layout. Template directories are resolved under it; set root explicitly to pin this.`);
392
+ }
393
+ }
394
+ if (loaded.root && loaded.root !== ".") {
395
+ const rootPrefix = loaded.root;
396
+ for (const key of ["partialsDir", "componentsDir", "layoutsDir"]) {
397
+ const value = loaded[key];
398
+ if (typeof value !== "string" || !value)
399
+ continue;
400
+ if (path.isAbsolute(value) || alreadyUnderRoot(value, rootPrefix))
401
+ continue;
402
+ loaded[key] = path.join(rootPrefix, value);
403
+ }
404
+ }
405
+ return loaded;
406
+ }
375
407
  function warnMissingDirs(loaded, cwd) {
376
408
  const keys = ["componentsDir", "layoutsDir", "partialsDir"];
377
409
  for (const key of keys) {
@@ -381,8 +413,8 @@ function warnMissingDirs(loaded, cwd) {
381
413
  const abs = path.isAbsolute(value) ? value : path.join(cwd, value);
382
414
  if (fs.existsSync(abs))
383
415
  continue;
384
- const prefixed = !!loaded.root && loaded.root !== ".";
385
- console.warn(`[stx] ${String(key)} resolves to "${abs}", which does not exist. Configured as "${value}"` + (prefixed ? ` and prefixed with root "${loaded.root}" \u2014 a value that already includes the root gets it twice.` : "."));
416
+ const root = loaded.root, underRoot = !!root && root !== ".";
417
+ console.warn(`[stx] ${String(key)} resolves to "${abs}", which does not exist. Configured as "${value}"` + (underRoot ? `, resolved under root "${root}".` : "."));
386
418
  }
387
419
  }
388
420
  function applyStateDir(loaded) {
@@ -418,18 +450,7 @@ export async function loadStxConfig(cwd) {
418
450
  verbose: !1
419
451
  })).config;
420
452
  applyStateDir(loaded);
421
- const resolved = resolveStxRoot(loaded.root, loaded.pagesDir, effectiveCwd);
422
- loaded.root = resolved.root;
423
- loaded.pagesDir = resolved.pagesDir;
424
- if (loaded.root && loaded.root !== ".") {
425
- const rootPrefix = loaded.root;
426
- if (loaded.partialsDir && !path.isAbsolute(loaded.partialsDir))
427
- loaded.partialsDir = path.join(rootPrefix, loaded.partialsDir);
428
- if (loaded.componentsDir && !path.isAbsolute(loaded.componentsDir))
429
- loaded.componentsDir = path.join(rootPrefix, loaded.componentsDir);
430
- if (loaded.layoutsDir && !path.isAbsolute(loaded.layoutsDir))
431
- loaded.layoutsDir = path.join(rootPrefix, loaded.layoutsDir);
432
- }
453
+ resolveStxDirectories(loaded, effectiveCwd);
433
454
  warnMissingDirs(loaded, effectiveCwd);
434
455
  if (loaded.plugins && loaded.plugins.length > 0) {
435
456
  const { pluginManager } = await import("./plugin-system.js"), pluginComponentDirs = [], pluginPageDirs = [];