ugly-app 0.1.620 → 0.1.622

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 (75) hide show
  1. package/dist/cli/version.d.ts +1 -1
  2. package/dist/cli/version.js +1 -1
  3. package/dist/client/animation/useScrollAnimation.d.ts +10 -0
  4. package/dist/client/animation/useScrollAnimation.d.ts.map +1 -1
  5. package/dist/client/animation/useScrollAnimation.js +64 -59
  6. package/dist/client/animation/useScrollAnimation.js.map +1 -1
  7. package/dist/client/components/ScrollAnimatedView.d.ts.map +1 -1
  8. package/dist/client/components/ScrollAnimatedView.js +3 -2
  9. package/dist/client/components/ScrollAnimatedView.js.map +1 -1
  10. package/dist/native/contract-meta.d.ts +7 -0
  11. package/dist/native/contract-meta.d.ts.map +1 -0
  12. package/dist/native/contract-meta.js +105 -0
  13. package/dist/native/contract-meta.js.map +1 -0
  14. package/dist/native/contract.d.ts +254 -24
  15. package/dist/native/contract.d.ts.map +1 -1
  16. package/dist/native/contract.js +4 -15
  17. package/dist/native/contract.js.map +1 -1
  18. package/dist/native/facades/net.d.ts +26 -0
  19. package/dist/native/facades/net.d.ts.map +1 -0
  20. package/dist/native/facades/net.js +22 -0
  21. package/dist/native/facades/net.js.map +1 -0
  22. package/dist/native/facades/process.d.ts +20 -0
  23. package/dist/native/facades/process.d.ts.map +1 -0
  24. package/dist/native/facades/process.js +15 -0
  25. package/dist/native/facades/process.js.map +1 -0
  26. package/dist/native/facades/studio.d.ts +47 -0
  27. package/dist/native/facades/studio.d.ts.map +1 -0
  28. package/dist/native/facades/studio.js +38 -0
  29. package/dist/native/facades/studio.js.map +1 -0
  30. package/dist/native/index.d.ts +10 -3
  31. package/dist/native/index.d.ts.map +1 -1
  32. package/dist/native/index.js +4 -2
  33. package/dist/native/index.js.map +1 -1
  34. package/dist/native/install.d.ts.map +1 -1
  35. package/dist/native/install.js +10 -8
  36. package/dist/native/install.js.map +1 -1
  37. package/dist/native/permissions.d.ts +12 -0
  38. package/dist/native/permissions.d.ts.map +1 -0
  39. package/dist/native/permissions.js +47 -0
  40. package/dist/native/permissions.js.map +1 -0
  41. package/dist/native/protocol.d.ts +5 -1
  42. package/dist/native/protocol.d.ts.map +1 -1
  43. package/dist/native/protocol.js +8 -0
  44. package/dist/native/protocol.js.map +1 -1
  45. package/dist/native/web-adapter.d.ts +5 -0
  46. package/dist/native/web-adapter.d.ts.map +1 -0
  47. package/dist/native/web-adapter.js +111 -0
  48. package/dist/native/web-adapter.js.map +1 -0
  49. package/dist/native/wrapper.d.ts +80 -6
  50. package/dist/native/wrapper.d.ts.map +1 -1
  51. package/dist/native/wrapper.js +149 -12
  52. package/dist/native/wrapper.js.map +1 -1
  53. package/package.json +1 -1
  54. package/src/cli/version.ts +1 -1
  55. package/src/client/animation/useScrollAnimation.ts +72 -74
  56. package/src/client/components/ScrollAnimatedView.tsx +3 -6
  57. package/src/native/contract-meta.test.ts +23 -0
  58. package/src/native/contract-meta.ts +114 -0
  59. package/src/native/contract.test.ts +13 -7
  60. package/src/native/contract.ts +130 -32
  61. package/src/native/facades/facades.test.ts +35 -0
  62. package/src/native/facades/net.ts +50 -0
  63. package/src/native/facades/process.ts +37 -0
  64. package/src/native/facades/studio.ts +73 -0
  65. package/src/native/index.ts +24 -3
  66. package/src/native/install.test.ts +8 -0
  67. package/src/native/install.ts +12 -8
  68. package/src/native/permissions.test.ts +42 -0
  69. package/src/native/permissions.ts +53 -0
  70. package/src/native/protocol.test.ts +15 -0
  71. package/src/native/protocol.ts +10 -1
  72. package/src/native/web-adapter.test.ts +27 -0
  73. package/src/native/web-adapter.ts +118 -0
  74. package/src/native/wrapper.test.ts +22 -0
  75. package/src/native/wrapper.ts +163 -13
@@ -1,2 +1,2 @@
1
- export declare const CLI_VERSION = "0.1.620";
1
+ export declare const CLI_VERSION = "0.1.622";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.620";
2
+ export const CLI_VERSION = "0.1.622";
3
3
  //# sourceMappingURL=version.js.map
@@ -15,7 +15,17 @@ export interface ScrollAnimationStyle {
15
15
  opacity: number;
16
16
  transform: string;
17
17
  transition?: string;
18
+ willChange?: string;
18
19
  }
20
+ /**
21
+ * Reveal-on-scroll hook driven entirely by CSS transitions.
22
+ *
23
+ * The element renders ONCE in its hidden state and ONCE in its visible state;
24
+ * the GPU interpolates opacity/transform between them. There is no per-frame
25
+ * React re-render (the previous implementation ran a requestAnimationFrame loop
26
+ * that called forceUpdate() every frame, per instance — with several staggered
27
+ * items on screen that re-render storm caused the visible jank).
28
+ */
19
29
  export declare function useScrollAnimation<T extends HTMLElement = HTMLDivElement>(config?: ScrollAnimationConfig): {
20
30
  ref: import("react").RefObject<T | null>;
21
31
  style: ScrollAnimationStyle;
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollAnimation.d.ts","sourceRoot":"","sources":["../../../src/client/animation/useScrollAnimation.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,mBAAmB,GAC3B,QAAQ,GACR,SAAS,GACT,WAAW,GACX,WAAW,GACX,YAAY,GACZ,OAAO,GACP,MAAM,CAAC;AAEX,MAAM,WAAW,qBAAqB;IACpC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,WAAW,GAAG,cAAc,EACvE,MAAM,GAAE,qBAA0B;;;;;EAiFnC;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,WAUW,MAAM,KAAG,qBAAqB,CAQzC"}
1
+ {"version":3,"file":"useScrollAnimation.d.ts","sourceRoot":"","sources":["../../../src/client/animation/useScrollAnimation.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAC3B,QAAQ,GACR,SAAS,GACT,WAAW,GACX,WAAW,GACX,YAAY,GACZ,OAAO,GACP,MAAM,CAAC;AAEX,MAAM,WAAW,qBAAqB;IACpC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAiCD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,WAAW,GAAG,cAAc,EACvE,MAAM,GAAE,qBAA0B;;;;;EAoDnC;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,IASS,OAAO,MAAM,KAAG,qBAAqB,CAM9C"}
@@ -1,82 +1,87 @@
1
- import { useCallback, useEffect, useLayoutEffect, useRef, useState, } from 'react';
2
- import { easingFunctions, useAnimatedValue, useAnimatedValueTracker, } from './animatedValue.js';
1
+ import { useEffect, useRef, useState } from 'react';
2
+ // Smooth ease-out (no overshoot/bounce the old springBouncy easing read as
3
+ // "jerky" once many items animated at once). Compositor-friendly.
4
+ const EASE = 'cubic-bezier(0.16, 1, 0.3, 1)';
5
+ function hiddenTransform(animation) {
6
+ switch (animation) {
7
+ case 'slideUp':
8
+ return 'translateY(40px)';
9
+ case 'slideDown':
10
+ return 'translateY(-40px)';
11
+ case 'slideLeft':
12
+ return 'translateX(40px)';
13
+ case 'slideRight':
14
+ return 'translateX(-40px)';
15
+ case 'scale':
16
+ return 'scale(0.92)';
17
+ case 'fadeIn':
18
+ case 'none':
19
+ default:
20
+ return 'none';
21
+ }
22
+ }
23
+ function prefersReducedMotion() {
24
+ return (typeof window !== 'undefined' &&
25
+ typeof window.matchMedia === 'function' &&
26
+ window.matchMedia('(prefers-reduced-motion: reduce)').matches);
27
+ }
28
+ /**
29
+ * Reveal-on-scroll hook driven entirely by CSS transitions.
30
+ *
31
+ * The element renders ONCE in its hidden state and ONCE in its visible state;
32
+ * the GPU interpolates opacity/transform between them. There is no per-frame
33
+ * React re-render (the previous implementation ran a requestAnimationFrame loop
34
+ * that called forceUpdate() every frame, per instance — with several staggered
35
+ * items on screen that re-render storm caused the visible jank).
36
+ */
3
37
  export function useScrollAnimation(config = {}) {
4
- const { animation = 'fadeIn', delay = 0, duration, threshold = 0.2, once = true, } = config;
38
+ const { animation = 'fadeIn', delay = 0, duration = 600, threshold = 0.2, once = true, } = config;
5
39
  const ref = useRef(null);
6
- const [isVisible, setIsVisible] = useState(true);
7
- const hasAnimated = useRef(false);
8
- const animatedValue = useAnimatedValue(1);
9
- const progress = useAnimatedValueTracker(animatedValue);
10
- useLayoutEffect(() => {
11
- const element = ref.current;
12
- if (!element)
13
- return;
14
- const rect = element.getBoundingClientRect();
15
- if (rect.top >= window.innerHeight) {
16
- animatedValue.set(0);
17
- setIsVisible(false);
18
- hasAnimated.current = false;
19
- }
20
- else {
21
- hasAnimated.current = true;
22
- }
23
- }, [animatedValue]);
40
+ const reduce = animation === 'none' || prefersReducedMotion();
41
+ // Hidden until revealed (unless there's nothing to animate).
42
+ const [visible, setVisible] = useState(reduce);
43
+ const hasAnimated = useRef(reduce);
24
44
  useEffect(() => {
45
+ if (reduce)
46
+ return;
25
47
  const element = ref.current;
26
48
  if (!element)
27
49
  return;
28
50
  const observer = new IntersectionObserver((entries) => {
29
- entries.forEach((entry) => {
51
+ for (const entry of entries) {
30
52
  if (entry.isIntersecting) {
31
- if (once && hasAnimated.current)
32
- return;
33
53
  hasAnimated.current = true;
34
- setIsVisible(true);
35
- setTimeout(() => {
36
- void animatedValue.start(1, {
37
- duration,
38
- easing: easingFunctions.springBouncy,
39
- });
40
- }, delay);
54
+ setVisible(true);
55
+ if (once)
56
+ observer.disconnect();
41
57
  }
42
- else if (!once) {
43
- setIsVisible(false);
44
- animatedValue.set(0);
58
+ else if (!once && !hasAnimated.current) {
59
+ setVisible(false);
45
60
  }
46
- });
61
+ }
47
62
  }, { threshold });
48
63
  observer.observe(element);
49
64
  return () => observer.disconnect();
50
- }, [animatedValue, delay, duration, once, threshold]);
51
- const getStyle = useCallback(() => {
52
- const p = progress;
53
- switch (animation) {
54
- case 'fadeIn':
55
- return { opacity: p, transform: 'none' };
56
- case 'slideUp':
57
- return { opacity: p, transform: `translateY(${40 * (1 - p)}px)` };
58
- case 'slideDown':
59
- return { opacity: p, transform: `translateY(${-40 * (1 - p)}px)` };
60
- case 'slideLeft':
61
- return { opacity: p, transform: `translateX(${40 * (1 - p)}px)` };
62
- case 'slideRight':
63
- return { opacity: p, transform: `translateX(${-40 * (1 - p)}px)` };
64
- case 'scale':
65
- return { opacity: p, transform: `scale(${0.9 + 0.1 * p})` };
66
- case 'none':
67
- default:
68
- return { opacity: 1, transform: 'none' };
69
- }
70
- }, [animation, progress]);
71
- return { ref, style: getStyle(), isVisible, progress };
65
+ }, [reduce, once, threshold]);
66
+ const transitionDelay = delay > 0 ? ` ${delay}ms` : '';
67
+ const style = {
68
+ opacity: visible ? 1 : 0,
69
+ transform: visible ? 'none' : hiddenTransform(animation),
70
+ transition: reduce
71
+ ? undefined
72
+ : `opacity ${duration}ms ${EASE}${transitionDelay}, transform ${duration}ms ${EASE}${transitionDelay}`,
73
+ // GPU-hint only while waiting to animate in; drop it once shown.
74
+ willChange: visible ? undefined : 'opacity, transform',
75
+ };
76
+ return { ref, style, isVisible: visible, progress: visible ? 1 : 0 };
72
77
  }
73
78
  export function useStaggerAnimation(config) {
74
79
  const { baseDelay = 100, startDelay = 0, animation = 'slideUp', duration = 600, threshold = 0.2, } = config;
75
- return useCallback((index) => ({
80
+ return (index) => ({
76
81
  animation,
77
82
  delay: startDelay + index * baseDelay,
78
83
  duration,
79
84
  threshold,
80
- }), [animation, baseDelay, duration, startDelay, threshold]);
85
+ });
81
86
  }
82
87
  //# sourceMappingURL=useScrollAnimation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollAnimation.js","sourceRoot":"","sources":["../../../src/client/animation/useScrollAnimation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useScrollAnimation.js","sourceRoot":"","sources":["../../../src/client/animation/useScrollAnimation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollAnimatedView.d.ts","sourceRoot":"","sources":["../../../src/client/components/ScrollAnimatedView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,qBAAqB,EAEtB,MAAM,oCAAoC,CAAC;AAG5C,MAAM,WAAW,uBAAwB,SAAQ,qBAAqB;IACpE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,KAAK,EACL,SAAoB,EACpB,KAAS,EACT,QAAQ,EACR,SAAe,EACf,IAAW,GACZ,EAAE,uBAAuB,qBA4BzB;AAED,wBAAgB,2BAA2B,CAAC,EAC1C,QAAQ,EACR,SAAqB,EACrB,SAAe,EACf,UAAc,EACd,QAAQ,EACR,SAAe,EACf,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,qBAkBA"}
1
+ {"version":3,"file":"ScrollAnimatedView.d.ts","sourceRoot":"","sources":["../../../src/client/components/ScrollAnimatedView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,qBAAqB,EAEtB,MAAM,oCAAoC,CAAC;AAG5C,MAAM,WAAW,uBAAwB,SAAQ,qBAAqB;IACpE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,KAAK,EACL,SAAoB,EACpB,KAAS,EACT,QAAQ,EACR,SAAe,EACf,IAAW,GACZ,EAAE,uBAAuB,qBAyBzB;AAED,wBAAgB,2BAA2B,CAAC,EAC1C,QAAQ,EACR,SAAqB,EACrB,SAAe,EACf,UAAc,EACd,QAAQ,EACR,SAAe,EACf,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,qBAkBA"}
@@ -3,7 +3,7 @@ import React from 'react';
3
3
  import { useScrollAnimation, } from '../animation/useScrollAnimation.js';
4
4
  import { View } from './View.js';
5
5
  export function ScrollAnimatedView({ children, style, animation = 'fadeIn', delay = 0, duration, threshold = 0.2, once = true, }) {
6
- const { ref, style: animationStyle, isVisible, } = useScrollAnimation({
6
+ const { ref, style: animationStyle } = useScrollAnimation({
7
7
  animation,
8
8
  delay,
9
9
  duration,
@@ -14,7 +14,8 @@ export function ScrollAnimatedView({ children, style, animation = 'fadeIn', dela
14
14
  ...Object(style),
15
15
  opacity: animationStyle.opacity,
16
16
  transform: animationStyle.transform,
17
- willChange: isVisible ? 'auto' : 'opacity, transform',
17
+ transition: animationStyle.transition,
18
+ willChange: animationStyle.willChange,
18
19
  width: '100%',
19
20
  alignItems: 'center',
20
21
  }, children: children }));
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollAnimatedView.js","sourceRoot":"","sources":["../../../src/client/components/ScrollAnimatedView.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAEL,kBAAkB,GACnB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAOjC,MAAM,UAAU,kBAAkB,CAAC,EACjC,QAAQ,EACR,KAAK,EACL,SAAS,GAAG,QAAQ,EACpB,KAAK,GAAG,CAAC,EACT,QAAQ,EACR,SAAS,GAAG,GAAG,EACf,IAAI,GAAG,IAAI,GACa;IACxB,MAAM,EACJ,GAAG,EACH,KAAK,EAAE,cAAc,EACrB,SAAS,GACV,GAAG,kBAAkB,CAAC;QACrB,SAAS;QACT,KAAK;QACL,QAAQ;QACR,SAAS;QACT,IAAI;KACL,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,IAAI,IACH,OAAO,EAAE,GAAG,EACZ,KAAK,EAAE;YACL,GAAG,MAAM,CAAC,KAAK,CAAC;YAChB,OAAO,EAAE,cAAc,CAAC,OAAO;YAC/B,SAAS,EAAE,cAAc,CAAC,SAAS;YACnC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB;YACrD,KAAK,EAAE,MAAM;YACb,UAAU,EAAE,QAAQ;SACrB,YAEA,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,EAC1C,QAAQ,EACR,SAAS,GAAG,SAAS,EACrB,SAAS,GAAG,GAAG,EACf,UAAU,GAAG,CAAC,EACd,QAAQ,EACR,SAAS,GAAG,GAAG,EACf,KAAK,GASN;IACC,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEpD,OAAO,CACL,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,YACf,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAChC,KAAC,kBAAkB,IAEjB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,UAAU,GAAG,KAAK,GAAG,SAAS,EACrC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,YAEnB,KAAK,IAND,KAAK,CAOS,CACtB,CAAC,GACG,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ScrollAnimatedView.js","sourceRoot":"","sources":["../../../src/client/components/ScrollAnimatedView.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAEL,kBAAkB,GACnB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAOjC,MAAM,UAAU,kBAAkB,CAAC,EACjC,QAAQ,EACR,KAAK,EACL,SAAS,GAAG,QAAQ,EACpB,KAAK,GAAG,CAAC,EACT,QAAQ,EACR,SAAS,GAAG,GAAG,EACf,IAAI,GAAG,IAAI,GACa;IACxB,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,kBAAkB,CAAC;QACxD,SAAS;QACT,KAAK;QACL,QAAQ;QACR,SAAS;QACT,IAAI;KACL,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,IAAI,IACH,OAAO,EAAE,GAAG,EACZ,KAAK,EAAE;YACL,GAAG,MAAM,CAAC,KAAK,CAAC;YAChB,OAAO,EAAE,cAAc,CAAC,OAAO;YAC/B,SAAS,EAAE,cAAc,CAAC,SAAS;YACnC,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,KAAK,EAAE,MAAM;YACb,UAAU,EAAE,QAAQ;SACrB,YAEA,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,EAC1C,QAAQ,EACR,SAAS,GAAG,SAAS,EACrB,SAAS,GAAG,GAAG,EACf,UAAU,GAAG,CAAC,EACd,QAAQ,EACR,SAAS,GAAG,GAAG,EACf,KAAK,GASN;IACC,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEpD,OAAO,CACL,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,YACf,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAChC,KAAC,kBAAkB,IAEjB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,UAAU,GAAG,KAAK,GAAG,SAAS,EACrC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,YAEnB,KAAK,IAND,KAAK,CAOS,CACtB,CAAC,GACG,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Channel, Namespace } from './contract.js';
2
+ export type Platform = 'ios' | 'android' | 'desktop' | 'web';
3
+ export type Fallback = 'native' | 'web' | 'noop' | 'throw';
4
+ export declare const NAMESPACES: Namespace[];
5
+ export declare const CHANNEL_FALLBACK: Record<Channel, Record<Platform, Fallback>>;
6
+ export declare function fallbackFor(channel: Channel, platform: Platform): Fallback;
7
+ //# sourceMappingURL=contract-meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-meta.d.ts","sourceRoot":"","sources":["../../src/native/contract-meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAGxD,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,CAAC;AAC7D,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,eAAO,MAAM,UAAU,EAAE,SAAS,EAmBjC,CAAC;AAiFF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAA0B,CAAC;AAEpG,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAK1E"}
@@ -0,0 +1,105 @@
1
+ import { namespaceOf } from './contract.js';
2
+ export const NAMESPACES = [
3
+ 'capture',
4
+ 'gps',
5
+ 'liveActivity',
6
+ 'alarm',
7
+ 'tts',
8
+ 'push',
9
+ 'clipboard',
10
+ 'system',
11
+ 'badge',
12
+ 'ui',
13
+ 'fs',
14
+ 'secrets',
15
+ 'serve',
16
+ 'workers',
17
+ 'net',
18
+ 'process',
19
+ 'permissions',
20
+ 'studio',
21
+ ];
22
+ // Per-namespace fallback profile when no explicit channel override applies.
23
+ // Tuple order: [ios, android, desktop, web].
24
+ const NS_DEFAULT = {
25
+ capture: ['native', 'native', 'native', 'web'],
26
+ gps: ['native', 'native', 'native', 'web'],
27
+ liveActivity: ['native', 'native', 'native', 'web'],
28
+ alarm: ['native', 'native', 'native', 'web'],
29
+ tts: ['native', 'native', 'native', 'web'],
30
+ push: ['native', 'native', 'native', 'web'],
31
+ clipboard: ['native', 'native', 'native', 'web'],
32
+ system: ['native', 'native', 'native', 'web'],
33
+ badge: ['native', 'native', 'native', 'web'],
34
+ ui: ['native', 'native', 'noop', 'web'],
35
+ fs: ['native', 'native', 'native', 'throw'],
36
+ secrets: ['native', 'native', 'native', 'throw'],
37
+ serve: ['native', 'native', 'native', 'throw'],
38
+ workers: ['native', 'native', 'native', 'throw'],
39
+ net: ['native', 'native', 'native', 'throw'],
40
+ process: ['throw', 'throw', 'native', 'throw'],
41
+ permissions: ['native', 'native', 'native', 'native'],
42
+ studio: ['native', 'native', 'native', 'throw'],
43
+ };
44
+ const PLATFORM_INDEX = { ios: 0, android: 1, desktop: 2, web: 3 };
45
+ // All request/response channels (mirrors contract.ts channels; the test guards count).
46
+ const CHANNELS = [
47
+ 'capture.screenshot',
48
+ 'gps.start',
49
+ 'gps.stop',
50
+ 'liveActivity.startWorkout',
51
+ 'liveActivity.updateWorkout',
52
+ 'liveActivity.endWorkout',
53
+ 'liveActivity.startCardio',
54
+ 'liveActivity.updateCardio',
55
+ 'liveActivity.endCardio',
56
+ 'alarm.schedule',
57
+ 'alarm.cancel',
58
+ 'alarm.playAudio',
59
+ 'tts.start',
60
+ 'tts.pause',
61
+ 'tts.resume',
62
+ 'tts.stop',
63
+ 'push.register',
64
+ 'clipboard.write',
65
+ 'clipboard.read',
66
+ 'system.openExternal',
67
+ 'system.share',
68
+ 'badge.set',
69
+ 'ui.getSafeArea',
70
+ 'fs.readFile',
71
+ 'fs.writeFile',
72
+ 'fs.mkdir',
73
+ 'fs.rm',
74
+ 'fs.rename',
75
+ 'fs.readdir',
76
+ 'fs.stat',
77
+ 'fs.exists',
78
+ 'fs.realpath',
79
+ 'secrets.get',
80
+ 'secrets.set',
81
+ 'secrets.delete',
82
+ 'secrets.list',
83
+ 'serve.start',
84
+ 'serve.stop',
85
+ 'workers.register',
86
+ 'workers.unregister',
87
+ 'workers.list',
88
+ ];
89
+ function buildChannelFallback() {
90
+ const out = {};
91
+ for (const ch of CHANNELS) {
92
+ const prof = NS_DEFAULT[namespaceOf(ch)];
93
+ out[ch] = { ios: prof[0], android: prof[1], desktop: prof[2], web: prof[3] };
94
+ }
95
+ return out;
96
+ }
97
+ export const CHANNEL_FALLBACK = buildChannelFallback();
98
+ export function fallbackFor(channel, platform) {
99
+ const row = CHANNEL_FALLBACK[channel];
100
+ if (row)
101
+ return row[platform];
102
+ // Facade-namespace channel (e.g. studio.*, process.*, net.*) not in the table:
103
+ return NS_DEFAULT[namespaceOf(channel)][PLATFORM_INDEX[platform]];
104
+ }
105
+ //# sourceMappingURL=contract-meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-meta.js","sourceRoot":"","sources":["../../src/native/contract-meta.ts"],"names":[],"mappings":"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"}