@absolutejs/absolute 0.20.0-beta.17 → 0.20.0-beta.18

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
@@ -202,6 +202,31 @@ for late UI subscribers, `checkForUpdate()` performs a passive check, and
202
202
  `applyUpdate()` activates and reloads only after the user accepts. AbsoluteJS
203
203
  does not silently replace a running application session.
204
204
 
205
+ ### Native device capabilities
206
+
207
+ Application code uses one provider-neutral API in web pages and Capacitor apps:
208
+
209
+ ```ts
210
+ import { clipboard, haptics, share } from '@absolutejs/devices';
211
+
212
+ await clipboard.writeText('Copied everywhere');
213
+ await share.share({ text: 'Shared everywhere', url: 'https://absolutejs.com' });
214
+ await haptics.impact('light');
215
+ ```
216
+
217
+ `absolute mobile init` and `absolute mobile sync` discover these named value
218
+ imports, read the tested mappings published by `@absolutejs/devices-capacitor`,
219
+ and offer to install only the exact Capacitor plugins in use. The generated
220
+ shell wires them into the shared device facade; users do not import Capacitor,
221
+ edit Swift/Kotlin, or maintain native bootstrap code. Type-only imports and test
222
+ sources do not provision plugins. `absolute mobile doctor release` rejects a
223
+ missing or mismatched plugin before release.
224
+
225
+ Clipboard and Share use browser standards on the web and fail with normalized
226
+ errors when unavailable. Haptics uses vibration where supported and otherwise
227
+ safely becomes a no-op, because tactile feedback must never be required to
228
+ complete an action.
229
+
205
230
  ### Immutable production images
206
231
 
207
232
  Build production assets and the server bundle while constructing the image,
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  var __require = import.meta.require;
3
3
 
4
- // .angular-partial-tmp-fccHUx/src/core/streamingSlotRegistrar.ts
4
+ // .angular-partial-tmp-1EnNiK/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-fccHUx/src/core/streamingSlotRegistrar.ts
4
+ // .angular-partial-tmp-1EnNiK/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-fccHUx/src/core/streamingSlotRegistry.ts
51
+ // .angular-partial-tmp-1EnNiK/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";