@absolutejs/absolute 0.19.0-beta.1108 → 0.19.0-beta.1109

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 CHANGED
@@ -59,7 +59,7 @@ const manifest = await build({
59
59
  htmlDirectory: 'example/html',
60
60
  htmxDirectory: 'example/htmx',
61
61
  reactDirectory: 'example/react',
62
- svelteDirectory: 'example/svelte',
62
+ svelteDirectory: 'example/svelte'
63
63
  });
64
64
 
65
65
  if (!manifest) throw new Error('Manifest generation failed');
@@ -116,6 +116,32 @@ Absolute JS piggybacks on the [Elysia plugin API](https://elysiajs.com/plugins).
116
116
  | **`absolute-auth`** | Full OAuth2 flow configured with 66 providers and allows full customizability with event handlers |
117
117
  | **`networkingPlugin`** | Starts your Elysia server with HOST/PORT defaults from environment variables |
118
118
 
119
+ ### Elysia composition contract
120
+
121
+ This contract is written for application authors and coding agents. It avoids
122
+ the runaway TypeScript instantiation cost that can occur when one inferred
123
+ Elysia application is repeatedly extended and re-aliased.
124
+
125
+ - Start every independently owned route surface from a named `new Elysia(...)`.
126
+ - Give each surface its shared context and plugins explicitly. Do not create
127
+ `adminApp` by extending `publicApp`, for example.
128
+ - Prefer one shallow `.use([auth, metrics])` over a long sequence of `.use()`
129
+ calls. `absolute/elysia-composition-boundaries` enforces this and safely
130
+ auto-fixes comment-free chains.
131
+ - Mount independent route surfaces at the platform root. Export each real
132
+ sub-application type for Eden consumers instead of exporting an accumulated
133
+ server alias.
134
+ - Keep `elysia` and `@sinclair/typebox` on one physical installed identity
135
+ across the workspace. Run `absolute doctor`; `absolute doctor --fix` aligns
136
+ root overrides and rebuilds Bun's dependency graph when peer contexts drift.
137
+
138
+ After a dependency change, measure a cold typecheck once. Warm incremental
139
+ checks can hide an unhealthy graph:
140
+
141
+ ```bash
142
+ /usr/bin/time -v bun run tsc --noEmit --incremental false
143
+ ```
144
+
119
145
  ---
120
146
 
121
147
  ## Configuration Philosophy
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  var __require = import.meta.require;
3
3
 
4
- // .angular-partial-tmp-gx2Z9g/src/core/streamingSlotRegistrar.ts
4
+ // .angular-partial-tmp-Ndl7R9/src/core/streamingSlotRegistrar.ts
5
5
  var STREAMING_SLOT_REGISTRAR_KEY = Symbol.for("absolutejs.streamingSlotRegistrar");
6
6
  var STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotWarningController");
7
7
  var STREAMING_SLOT_COLLECTION_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotCollectionController");
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  var __require = import.meta.require;
3
3
 
4
- // .angular-partial-tmp-gx2Z9g/src/core/streamingSlotRegistrar.ts
4
+ // .angular-partial-tmp-Ndl7R9/src/core/streamingSlotRegistrar.ts
5
5
  var STREAMING_SLOT_REGISTRAR_KEY = Symbol.for("absolutejs.streamingSlotRegistrar");
6
6
  var STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotWarningController");
7
7
  var STREAMING_SLOT_COLLECTION_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotCollectionController");
@@ -48,7 +48,7 @@ var warnMissingStreamingSlotCollector = (primitiveName) => {
48
48
  getWarningController()?.maybeWarn(primitiveName);
49
49
  };
50
50
 
51
- // .angular-partial-tmp-gx2Z9g/src/core/streamingSlotRegistry.ts
51
+ // .angular-partial-tmp-Ndl7R9/src/core/streamingSlotRegistry.ts
52
52
  var STREAMING_SLOT_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotAsyncLocalStorage");
53
53
  var isObjectRecord2 = (value) => Boolean(value) && typeof value === "object";
54
54
  var isAsyncLocalStorage = (value) => isObjectRecord2(value) && ("getStore" in value) && typeof value.getStore === "function" && ("run" in value) && typeof value.run === "function";