react-native-tapline 1.4.0 → 1.6.0

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 (77) hide show
  1. package/TaplineNative.podspec +3 -1
  2. package/dist/actions.d.ts +75 -2
  3. package/dist/actions.js +333 -25
  4. package/dist/actions.js.map +1 -1
  5. package/dist/alerts.d.ts +2 -0
  6. package/dist/alerts.js +5 -0
  7. package/dist/alerts.js.map +1 -1
  8. package/dist/anim.d.ts +25 -0
  9. package/dist/anim.js +311 -0
  10. package/dist/anim.js.map +1 -0
  11. package/dist/appinfo.d.ts +12 -0
  12. package/dist/appinfo.js +78 -0
  13. package/dist/appinfo.js.map +1 -0
  14. package/dist/checks.d.ts +43 -1
  15. package/dist/checks.js +17 -5
  16. package/dist/checks.js.map +1 -1
  17. package/dist/client.d.ts +2 -0
  18. package/dist/client.js +28 -2
  19. package/dist/client.js.map +1 -1
  20. package/dist/commands.js +28 -0
  21. package/dist/commands.js.map +1 -1
  22. package/dist/glass.d.ts +3 -0
  23. package/dist/glass.js +81 -0
  24. package/dist/glass.js.map +1 -0
  25. package/dist/glassclip.d.ts +18 -0
  26. package/dist/glassclip.js +69 -0
  27. package/dist/glassclip.js.map +1 -0
  28. package/dist/guard.d.ts +17 -0
  29. package/dist/guard.js +44 -0
  30. package/dist/guard.js.map +1 -0
  31. package/dist/idle.d.ts +43 -0
  32. package/dist/idle.js +379 -0
  33. package/dist/idle.js.map +1 -0
  34. package/dist/index.d.ts +8 -0
  35. package/dist/index.js +6 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/inspect.d.ts +18 -1
  38. package/dist/inspect.js +48 -8
  39. package/dist/inspect.js.map +1 -1
  40. package/dist/loading.d.ts +17 -0
  41. package/dist/loading.js +96 -0
  42. package/dist/loading.js.map +1 -0
  43. package/dist/locale.js +1 -1
  44. package/dist/locale.js.map +1 -1
  45. package/dist/media.d.ts +71 -0
  46. package/dist/media.js +516 -0
  47. package/dist/media.js.map +1 -0
  48. package/dist/methods.js +14 -1
  49. package/dist/methods.js.map +1 -1
  50. package/dist/move.d.ts +40 -0
  51. package/dist/move.js +125 -0
  52. package/dist/move.js.map +1 -0
  53. package/dist/native.d.ts +5 -0
  54. package/dist/native.js.map +1 -1
  55. package/dist/network.d.ts +4 -0
  56. package/dist/network.js +49 -1
  57. package/dist/network.js.map +1 -1
  58. package/dist/place.d.ts +23 -0
  59. package/dist/place.js +66 -0
  60. package/dist/place.js.map +1 -0
  61. package/dist/placekey.d.ts +29 -0
  62. package/dist/placekey.js +134 -0
  63. package/dist/placekey.js.map +1 -0
  64. package/dist/routetree.d.ts +27 -0
  65. package/dist/routetree.js +216 -0
  66. package/dist/routetree.js.map +1 -0
  67. package/dist/types.d.ts +28 -2
  68. package/dist/types.js +5 -1
  69. package/dist/types.js.map +1 -1
  70. package/dist/uxcheck.d.ts +57 -0
  71. package/dist/uxcheck.js +222 -0
  72. package/dist/uxcheck.js.map +1 -0
  73. package/dist/wait.d.ts +5 -0
  74. package/dist/wait.js +34 -3
  75. package/dist/wait.js.map +1 -1
  76. package/ios/TaplineNativeModule.swift +61 -0
  77. package/package.json +1 -1
package/dist/guard.js ADDED
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseRecipientGuard = parseRecipientGuard;
4
+ exports.recipientFields = recipientFields;
5
+ exports.assertRecipient = assertRecipient;
6
+ const inspect_1 = require("./inspect");
7
+ const types_1 = require("./types");
8
+ const FIELDS = ['id', 'label', 'text', 'role'];
9
+ function bad(message) {
10
+ return new types_1.TaplineError('bad_params', message);
11
+ }
12
+ /** A guard from the wire: each field a string or null, and a field left out means absent. */
13
+ function parseRecipientGuard(raw) {
14
+ if (!(0, types_1.isRecord)(raw))
15
+ throw bad('guard must be an object with id, label, text and role');
16
+ if (Object.keys(raw).length === 0)
17
+ throw bad('guard needs at least one of id, label, text or role');
18
+ const guard = { id: null, label: null, text: null, role: null };
19
+ for (const field of FIELDS) {
20
+ const value = raw[field];
21
+ if (value === undefined || value === null)
22
+ continue;
23
+ if (typeof value !== 'string')
24
+ throw bad(`guard.${field} must be a string or null`);
25
+ guard[field] = value === '' ? null : value;
26
+ }
27
+ return guard;
28
+ }
29
+ const nonEmpty = (value) => (typeof value === 'string' && value !== '' ? value : null);
30
+ /** The fields as the host sees them: `toElement`'s text (cut, display-normalised), and empty means absent. */
31
+ function recipientFields(entry) {
32
+ const info = (0, inspect_1.toElement)(entry, null, '');
33
+ return { id: nonEmpty(info.testID), label: nonEmpty(info.label), text: nonEmpty(info.text), role: nonEmpty(info.role) };
34
+ }
35
+ /** Refuses with `stale` when the element that will receive the touch is not exactly the one the policy checked. */
36
+ function assertRecipient(guard, recipient) {
37
+ if (guard === undefined)
38
+ return;
39
+ const actual = recipientFields(recipient);
40
+ if (FIELDS.some((field) => guard[field] !== actual[field])) {
41
+ throw new types_1.TaplineError('stale', 'stale: the target is another element now than the one the policy checked; look again.');
42
+ }
43
+ }
44
+ //# sourceMappingURL=guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.js","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":";;AAsBA,kDAWC;AAKD,0CAGC;AAGD,0CAMC;AAlDD,uCAAsC;AACtC,mCAAiD;AAcjD,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC;AAExD,SAAS,GAAG,CAAC,OAAe;IAC1B,OAAO,IAAI,oBAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,6FAA6F;AAC7F,SAAgB,mBAAmB,CAAC,GAAY;IAC9C,IAAI,CAAC,IAAA,gBAAQ,EAAC,GAAG,CAAC;QAAE,MAAM,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACvF,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACpG,MAAM,KAAK,GAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAChF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,SAAS;QACpD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,MAAM,GAAG,CAAC,SAAS,KAAK,2BAA2B,CAAC,CAAC;QACpF,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,KAAgC,EAAiB,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAEjI,8GAA8G;AAC9G,SAAgB,eAAe,CAAC,KAAY;IAC1C,MAAM,IAAI,GAAG,IAAA,mBAAS,EAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACxC,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1H,CAAC;AAED,mHAAmH;AACnH,SAAgB,eAAe,CAAC,KAAiC,EAAE,SAAgB;IACjF,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO;IAChC,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,oBAAY,CAAC,OAAO,EAAE,uFAAuF,CAAC,CAAC;IAC3H,CAAC;AACH,CAAC"}
package/dist/idle.d.ts ADDED
@@ -0,0 +1,43 @@
1
+ export interface IdleReading {
2
+ interactionHandles: number;
3
+ /** Animated animations running now (loops excluded). */
4
+ animations: number;
5
+ layoutAnimating: boolean;
6
+ /** Requests begun after the action's mark that are still open. */
7
+ startedRequestsOpen: number;
8
+ /** True when something the SDK can't see may be running: the caller must use the quiet window. */
9
+ blind: boolean;
10
+ }
11
+ /**
12
+ * Patches Animated's runners, LayoutAnimation and InteractionManager handles with counters. Safe to call
13
+ * twice and with a module missing. Returns the function that puts everything back.
14
+ */
15
+ export declare function installIdleSignals(): () => void;
16
+ export declare function uninstallIdleSignals(): void;
17
+ /** Whether know-don't-watch is on: the signals are patched. Off by default in 1.6.0 (`knowIdle`). */
18
+ export declare function isKnowIdle(): boolean;
19
+ export declare function setKnowIdle(on: boolean): void;
20
+ /** Sets the app's own choice and applies it. */
21
+ export declare function configureKnowIdle(on: boolean): void;
22
+ /** A session ended: back to the app's own setting. */
23
+ export declare function resetKnowIdle(): void;
24
+ /** What the SDK sees running right now. */
25
+ export declare function readIdle(requestMark: number): IdleReading;
26
+ export interface IdleOutcome {
27
+ settledMs: number;
28
+ /** The SDK was blind to something: the caller runs today's quiet window and position poll. */
29
+ usedFallback: boolean;
30
+ /** The wait ended at the cap with something still running. */
31
+ capped: boolean;
32
+ }
33
+ /**
34
+ * Resolves once every visible signal has been idle, with no React commit, for `frames` frames of 16 ms,
35
+ * or at `capMs`. Resolves at once with `usedFallback` when the SDK is blind (or `capMs` is 0), and
36
+ * mid-wait if it becomes blind (a loop starts) or is switched off. `requestMark` is `startedRequests()`
37
+ * from when the action began: only requests begun after it count.
38
+ */
39
+ export declare function waitUntilIdle(options: {
40
+ frames: 1 | 2;
41
+ capMs: number;
42
+ requestMark: number;
43
+ }): Promise<IdleOutcome>;
package/dist/idle.js ADDED
@@ -0,0 +1,379 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.installIdleSignals = installIdleSignals;
4
+ exports.uninstallIdleSignals = uninstallIdleSignals;
5
+ exports.isKnowIdle = isKnowIdle;
6
+ exports.setKnowIdle = setKnowIdle;
7
+ exports.configureKnowIdle = configureKnowIdle;
8
+ exports.resetKnowIdle = resetKnowIdle;
9
+ exports.readIdle = readIdle;
10
+ exports.waitUntilIdle = waitUntilIdle;
11
+ const network_1 = require("./network");
12
+ const register_1 = require("./register");
13
+ const types_1 = require("./types");
14
+ const FRAME_MS = 16;
15
+ /** How often the signals are read while waiting; finer than a frame, so the answer isn't rounded up to one. */
16
+ const POLL_MS = 8;
17
+ /** An animation nobody told us the end of is counted for its duration plus this. */
18
+ const SHORT_GRACE_MS = 50;
19
+ /** An animation whose end callback never comes is dropped this long after its expected end. */
20
+ const STUCK_GRACE_MS = 1000;
21
+ const TIMING_DEFAULT_MS = 500;
22
+ /** Spring and decay have no duration, and a composite (stagger) hides its children's timers. */
23
+ const ASSUMED_MS = 600;
24
+ const LAYOUT_GRACE_MS = 100;
25
+ let patches = [];
26
+ let installed = false;
27
+ /** Counts installs: a wrapper left under another patch after uninstall passes calls through, and stays dead on a later install. */
28
+ let epoch = 0;
29
+ /** An API exists but couldn't be patched: animations may run unseen. */
30
+ let unpatchable = false;
31
+ /** The react-native exports read for this install: InteractionManager's getter throws, so it is read once. */
32
+ let exportsRead = null;
33
+ const handles = new Map();
34
+ const animations = new Map();
35
+ const loops = new Map();
36
+ const layouts = new Map();
37
+ let nextId = 1;
38
+ /** Waits still polling; uninstall ends them. */
39
+ const activeWaits = new Set();
40
+ /** A react-native export, or undefined: InteractionManager is gone from newer versions and its getter throws. */
41
+ function rnExport(name) {
42
+ if (exportsRead?.has(name))
43
+ return exportsRead.get(name);
44
+ let found;
45
+ try {
46
+ const rn = require('react-native');
47
+ found = (0, types_1.isRecord)(rn) ? rn[name] : undefined;
48
+ }
49
+ catch {
50
+ found = undefined;
51
+ }
52
+ exportsRead?.set(name, found);
53
+ return found;
54
+ }
55
+ function isFn(value) {
56
+ return typeof value === 'function';
57
+ }
58
+ /** Replaces `target[name]` with `make(original)`; remembers how to put it back. A missing function is skipped. */
59
+ function patch(target, name, make) {
60
+ if (typeof target !== 'object' && typeof target !== 'function')
61
+ return;
62
+ if (target === null)
63
+ return;
64
+ const record = target;
65
+ let original;
66
+ try {
67
+ original = record[name];
68
+ }
69
+ catch {
70
+ return;
71
+ }
72
+ if (!isFn(original))
73
+ return;
74
+ try {
75
+ const wrapper = make(original);
76
+ const mine = epoch;
77
+ const patched = function (...args) {
78
+ return installed && mine === epoch ? wrapper.apply(this, args) : original.apply(this, args);
79
+ };
80
+ const own = Object.prototype.hasOwnProperty.call(record, name);
81
+ record[name] = patched;
82
+ if (record[name] !== patched) {
83
+ unpatchable = true;
84
+ return;
85
+ }
86
+ patches.push({ target: record, name, own, original, patched });
87
+ }
88
+ catch {
89
+ unpatchable = true;
90
+ }
91
+ }
92
+ function add(map, key, expiresAt) {
93
+ map.set(key, { expiresAt, stuck: false });
94
+ return () => {
95
+ map.delete(key);
96
+ };
97
+ }
98
+ function once(fn) {
99
+ let done = false;
100
+ return () => {
101
+ if (done)
102
+ return;
103
+ done = true;
104
+ fn();
105
+ };
106
+ }
107
+ /** How many entries still count: not released, not stuck, not past their expiry. Expired ones are dropped. */
108
+ function live(map) {
109
+ const now = Date.now();
110
+ let count = 0;
111
+ for (const [key, entry] of map) {
112
+ if (entry.expiresAt !== null && now >= entry.expiresAt)
113
+ map.delete(key);
114
+ else if (!entry.stuck)
115
+ count += 1;
116
+ }
117
+ return count;
118
+ }
119
+ /** A wait ended at its cap with these still held: they are stuck, and don't hold the next settle. */
120
+ function markStuck() {
121
+ for (const map of [handles, animations, layouts, loops]) {
122
+ for (const entry of map.values())
123
+ entry.stuck = true;
124
+ }
125
+ }
126
+ /** The milliseconds an Animated runner is expected to take, from its arguments. */
127
+ function expectedMs(name, args) {
128
+ const config = args[1];
129
+ if (name === 'timing') {
130
+ const duration = (0, types_1.isRecord)(config) && typeof config.duration === 'number' ? config.duration : TIMING_DEFAULT_MS;
131
+ const delay = (0, types_1.isRecord)(config) && typeof config.delay === 'number' ? config.delay : 0;
132
+ return duration + delay;
133
+ }
134
+ if (name === 'delay')
135
+ return typeof args[0] === 'number' ? args[0] : 0;
136
+ return ASSUMED_MS;
137
+ }
138
+ /**
139
+ * Counts an animation from `start`. With an end callback it is released when that runs (also on stop);
140
+ * the callback is wrapped only when the app passed one. Without one it is counted for its expected time.
141
+ */
142
+ function track(animation, kind, expected) {
143
+ if (!(0, types_1.isRecord)(animation) || !isFn(animation.start))
144
+ return animation;
145
+ const start = animation.start;
146
+ try {
147
+ animation.start = function (...args) {
148
+ const callback = args[0];
149
+ const map = kind === 'loop' ? loops : animations;
150
+ const withCallback = isFn(callback);
151
+ const expiresAt = kind === 'loop' ? null : Date.now() + expected + (withCallback ? STUCK_GRACE_MS : SHORT_GRACE_MS);
152
+ const release = once(add(map, nextId++, expiresAt));
153
+ if (!withCallback)
154
+ return start.apply(this, args);
155
+ const wrapped = (...result) => {
156
+ release();
157
+ return callback(...result);
158
+ };
159
+ try {
160
+ return start.apply(this, [wrapped, ...args.slice(1)]);
161
+ }
162
+ catch (error) {
163
+ release();
164
+ throw error;
165
+ }
166
+ };
167
+ }
168
+ catch {
169
+ // a frozen animation object: the factory's result is returned as it was
170
+ }
171
+ return animation;
172
+ }
173
+ const ANIMATED_RUNNERS = ['timing', 'spring', 'decay', 'parallel', 'sequence', 'stagger', 'delay'];
174
+ function patchAnimated() {
175
+ for (const name of ANIMATED_RUNNERS) {
176
+ patch(rnExport('Animated'), name, (original) => function (...args) {
177
+ return track(original.apply(this, args), 'run', expectedMs(name, args));
178
+ });
179
+ }
180
+ patch(rnExport('Animated'), 'loop', (original) => function (...args) {
181
+ return track(original.apply(this, args), 'loop', 0);
182
+ });
183
+ }
184
+ /** Counts a LayoutAnimation to its end or fail callback (wrapped only when the app passed one), else to its duration plus a grace. */
185
+ function layoutTracked(original, args, callbackAt, duration, self) {
186
+ const release = once(add(layouts, nextId++, Date.now() + (typeof duration === 'number' ? duration : TIMING_DEFAULT_MS) + LAYOUT_GRACE_MS));
187
+ const next = [...args];
188
+ for (const at of callbackAt) {
189
+ const callback = next[at];
190
+ if (isFn(callback)) {
191
+ next[at] = (...result) => {
192
+ release();
193
+ return callback(...result);
194
+ };
195
+ }
196
+ }
197
+ try {
198
+ return original.apply(self, next);
199
+ }
200
+ catch (error) {
201
+ release();
202
+ throw error;
203
+ }
204
+ }
205
+ function patchLayoutAnimation() {
206
+ patch(rnExport('LayoutAnimation'), 'configureNext', (original) => function (...args) {
207
+ const config = args[0];
208
+ return layoutTracked(original, args, [1, 2], (0, types_1.isRecord)(config) ? config.duration : undefined, this);
209
+ });
210
+ // The preset helpers call the module's own `configureNext`, not the property, so they are counted here.
211
+ for (const name of ['easeInEaseOut', 'linear', 'spring']) {
212
+ patch(rnExport('LayoutAnimation'), name, (original) => function (...args) {
213
+ const layout = rnExport('LayoutAnimation');
214
+ const presets = (0, types_1.isRecord)(layout) ? layout.Presets : undefined;
215
+ const preset = (0, types_1.isRecord)(presets) ? presets[name] : undefined;
216
+ return layoutTracked(original, args, [0], (0, types_1.isRecord)(preset) ? preset.duration : undefined, this);
217
+ });
218
+ }
219
+ }
220
+ function patchInteractions() {
221
+ const manager = rnExport('InteractionManager');
222
+ patch(manager, 'createInteractionHandle', (original) => function (...args) {
223
+ const handle = original.apply(this, args);
224
+ add(handles, handle, null);
225
+ return handle;
226
+ });
227
+ patch(manager, 'clearInteractionHandle', (original) => function (...args) {
228
+ handles.delete(args[0]);
229
+ return original.apply(this, args);
230
+ });
231
+ }
232
+ /** True when Reanimated is in the app: its worklets run on the UI thread, out of the SDK's sight. */
233
+ function reanimatedPresent() {
234
+ const holder = globalThis;
235
+ return holder.__reanimatedModuleProxy !== undefined || holder._REANIMATED_VERSION_JS !== undefined;
236
+ }
237
+ /**
238
+ * Patches Animated's runners, LayoutAnimation and InteractionManager handles with counters. Safe to call
239
+ * twice and with a module missing. Returns the function that puts everything back.
240
+ */
241
+ function installIdleSignals() {
242
+ if (!installed) {
243
+ installed = true;
244
+ epoch += 1;
245
+ restoreOwn();
246
+ unpatchable = false;
247
+ exportsRead = new Map();
248
+ patchAnimated();
249
+ patchLayoutAnimation();
250
+ patchInteractions();
251
+ }
252
+ return uninstallIdleSignals;
253
+ }
254
+ /**
255
+ * Puts back what is still on top. A wrapper something else was stacked on (the fast-animation wrappers) stays: it is
256
+ * dead (it passes calls through) and its record is kept, so a later call restores it once the wrapper above is gone.
257
+ */
258
+ function restoreOwn() {
259
+ const kept = [];
260
+ for (const record of patches.reverse()) {
261
+ const { target, name, own, original, patched } = record;
262
+ try {
263
+ if (target[name] !== patched) {
264
+ // Replaced by another patch above ours: keep the record. An app's own replacement is dropped with it later.
265
+ kept.push(record);
266
+ continue;
267
+ }
268
+ if (own)
269
+ target[name] = original;
270
+ else
271
+ delete target[name];
272
+ }
273
+ catch {
274
+ // ignore
275
+ }
276
+ }
277
+ patches = kept.reverse();
278
+ }
279
+ function uninstallIdleSignals() {
280
+ if (!installed)
281
+ return;
282
+ installed = false;
283
+ restoreOwn();
284
+ exportsRead = null;
285
+ handles.clear();
286
+ animations.clear();
287
+ loops.clear();
288
+ layouts.clear();
289
+ unpatchable = false;
290
+ // A wait still polling ends now, as blind: its caller runs the quiet window.
291
+ for (const stop of [...activeWaits])
292
+ stop();
293
+ }
294
+ /** Whether know-don't-watch is on: the signals are patched. Off by default in 1.6.0 (`knowIdle`). */
295
+ function isKnowIdle() {
296
+ return installed;
297
+ }
298
+ function setKnowIdle(on) {
299
+ if (on)
300
+ installIdleSignals();
301
+ else
302
+ uninstallIdleSignals();
303
+ }
304
+ /** The app's own setting (`knowIdle` in `startTapline`); an agent can only switch to quiet for a session. */
305
+ let appSetting = false;
306
+ /** Sets the app's own choice and applies it. */
307
+ function configureKnowIdle(on) {
308
+ appSetting = on;
309
+ setKnowIdle(on);
310
+ }
311
+ /** A session ended: back to the app's own setting. */
312
+ function resetKnowIdle() {
313
+ setKnowIdle(appSetting);
314
+ }
315
+ /** What the SDK sees running right now. */
316
+ function readIdle(requestMark) {
317
+ return {
318
+ interactionHandles: live(handles),
319
+ animations: live(animations),
320
+ layoutAnimating: live(layouts) > 0,
321
+ startedRequestsOpen: (0, network_1.openRequestsAfter)(requestMark),
322
+ blind: !installed || unpatchable || live(loops) > 0 || reanimatedPresent(),
323
+ };
324
+ }
325
+ function idle(reading) {
326
+ return reading.interactionHandles === 0 && reading.animations === 0 && !reading.layoutAnimating && reading.startedRequestsOpen === 0;
327
+ }
328
+ /**
329
+ * Resolves once every visible signal has been idle, with no React commit, for `frames` frames of 16 ms,
330
+ * or at `capMs`. Resolves at once with `usedFallback` when the SDK is blind (or `capMs` is 0), and
331
+ * mid-wait if it becomes blind (a loop starts) or is switched off. `requestMark` is `startedRequests()`
332
+ * from when the action began: only requests begun after it count.
333
+ */
334
+ function waitUntilIdle(options) {
335
+ const started = Date.now();
336
+ if (options.capMs <= 0 || readIdle(options.requestMark).blind)
337
+ return Promise.resolve({ settledMs: 0, usedFallback: true, capped: false });
338
+ const holdMs = options.frames * FRAME_MS;
339
+ return new Promise((resolve) => {
340
+ let done = false;
341
+ // The last moment anything was busy or committed; the wait ends `holdMs` after it.
342
+ let lastChange = started;
343
+ let timer;
344
+ const stopCommits = (0, register_1.onCommit)(() => {
345
+ lastChange = Date.now();
346
+ });
347
+ const finish = (usedFallback, capped) => {
348
+ if (done)
349
+ return;
350
+ done = true;
351
+ if (timer !== undefined)
352
+ clearTimeout(timer);
353
+ clearTimeout(cap);
354
+ stopCommits();
355
+ activeWaits.delete(abort);
356
+ if (capped)
357
+ markStuck();
358
+ resolve({ settledMs: Math.max(0, Math.min(options.capMs, Date.now() - started)), usedFallback, capped });
359
+ };
360
+ const abort = () => finish(true, false);
361
+ activeWaits.add(abort);
362
+ const cap = setTimeout(() => finish(false, true), options.capMs);
363
+ const tick = () => {
364
+ if (done)
365
+ return;
366
+ const reading = readIdle(options.requestMark);
367
+ if (reading.blind)
368
+ return finish(true, false);
369
+ const now = Date.now();
370
+ if (!idle(reading))
371
+ lastChange = now;
372
+ if (now - lastChange >= holdMs)
373
+ return finish(false, false);
374
+ timer = setTimeout(tick, POLL_MS);
375
+ };
376
+ timer = setTimeout(tick, POLL_MS);
377
+ });
378
+ }
379
+ //# sourceMappingURL=idle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idle.js","sourceRoot":"","sources":["../src/idle.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -23,6 +23,12 @@ export interface TaplineOptions {
23
23
  * agent can press. Tapline's own prompts always stay native.
24
24
  */
25
25
  alerts?: 'record' | 'stand-in';
26
+ /**
27
+ * Know, don't watch (1.6, off by default): an action answers as soon as the animations, interactions and
28
+ * requests Tapline can see are idle, a frame or two later, instead of after 100 ms without a commit.
29
+ * What it can't see (Reanimated, a sheet, native work) keeps the 100 ms window.
30
+ */
31
+ knowIdle?: boolean;
26
32
  }
27
33
  /**
28
34
  * Start the in-app agent: it reconnects to the computer this app was paired with, and pairs
@@ -48,5 +54,7 @@ export { tree, setMeasurer, defaultMeasurer } from './inspect';
48
54
  export type { Measurer } from './inspect';
49
55
  export { getRoots } from './register';
50
56
  export { getLogEntries, installLogs, uninstallLogs } from './logs';
57
+ export { registerTaplinePickerHook } from './media';
58
+ export type { TaplinePickerHook, TaplinePickerPicture } from './media';
51
59
  export { TaplineError, PROTOCOL_VERSION } from './types';
52
60
  export type { Action, AppInfo, DeviceInfo, ErrorCode, Frame, LogEntry, ScreenInfo, Target, TaplineElement, TreeResult, } from './types';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PROTOCOL_VERSION = exports.TaplineError = exports.uninstallLogs = exports.installLogs = exports.getLogEntries = exports.getRoots = exports.defaultMeasurer = exports.setMeasurer = exports.tree = exports.configureActions = exports.resolveTarget = exports.screenshot = exports.reload = exports.getLogs = exports.openURL = exports.toggle = exports.scroll = exports.typeText = exports.longPress = exports.press = exports.methods = exports.backoffDelay = exports.defaultCapabilities = exports.collectDeviceInfo = exports.TaplineClient = exports.TaplineAgent = exports.secureStoreStorage = exports.memoryStorage = exports.parseTaplineLink = exports.isTaplineLink = exports.TEXT_SIZES = exports.subscribeTaplineFontScale = exports.getTaplineFontScale = exports.useTaplineFontScale = exports.registerRegionCommand = exports.registerLanguageCommand = exports.registerTaplineCommand = void 0;
3
+ exports.PROTOCOL_VERSION = exports.TaplineError = exports.registerTaplinePickerHook = exports.uninstallLogs = exports.installLogs = exports.getLogEntries = exports.getRoots = exports.defaultMeasurer = exports.setMeasurer = exports.tree = exports.configureActions = exports.resolveTarget = exports.screenshot = exports.reload = exports.getLogs = exports.openURL = exports.toggle = exports.scroll = exports.typeText = exports.longPress = exports.press = exports.methods = exports.backoffDelay = exports.defaultCapabilities = exports.collectDeviceInfo = exports.TaplineClient = exports.TaplineAgent = exports.secureStoreStorage = exports.memoryStorage = exports.parseTaplineLink = exports.isTaplineLink = exports.TEXT_SIZES = exports.subscribeTaplineFontScale = exports.getTaplineFontScale = exports.useTaplineFontScale = exports.registerRegionCommand = exports.registerLanguageCommand = exports.registerTaplineCommand = void 0;
4
4
  exports.startTapline = startTapline;
5
5
  exports.stopTapline = stopTapline;
6
6
  const react_native_1 = require("react-native");
@@ -8,6 +8,7 @@ const agent_1 = require("./agent");
8
8
  const alerts_1 = require("./alerts");
9
9
  const crash_1 = require("./crash");
10
10
  const logs_1 = require("./logs");
11
+ const idle_1 = require("./idle");
11
12
  const network_1 = require("./network");
12
13
  const wait_1 = require("./wait");
13
14
  const storage_1 = require("./storage");
@@ -115,6 +116,7 @@ function startTapline(options) {
115
116
  (0, logs_1.installLogs)();
116
117
  (0, alerts_1.installAlertTracking)({ standIn: options.alerts === 'stand-in' });
117
118
  watchNetwork();
119
+ (0, idle_1.configureKnowIdle)(options.knowIdle === true);
118
120
  const next = new agent_1.TaplineAgent({ app: options.app, ...(url !== '' && token !== '' ? { direct: { url, token } } : {}) }, { storage, linking: react_native_1.Linking, confirm: confirmWithAlert, notify: notifyWithAlert, offers: devOffers() });
119
121
  agent = next;
120
122
  void next.start();
@@ -133,6 +135,7 @@ function stopTapline() {
133
135
  (0, crash_1.configureCrash)(null);
134
136
  (0, alerts_1.uninstallAlertTracking)();
135
137
  unwatchNetwork();
138
+ (0, idle_1.configureKnowIdle)(false);
136
139
  }
137
140
  }
138
141
  catch {
@@ -185,6 +188,8 @@ var logs_2 = require("./logs");
185
188
  Object.defineProperty(exports, "getLogEntries", { enumerable: true, get: function () { return logs_2.getLogEntries; } });
186
189
  Object.defineProperty(exports, "installLogs", { enumerable: true, get: function () { return logs_2.installLogs; } });
187
190
  Object.defineProperty(exports, "uninstallLogs", { enumerable: true, get: function () { return logs_2.uninstallLogs; } });
191
+ var media_1 = require("./media");
192
+ Object.defineProperty(exports, "registerTaplinePickerHook", { enumerable: true, get: function () { return media_1.registerTaplinePickerHook; } });
188
193
  var types_1 = require("./types");
189
194
  Object.defineProperty(exports, "TaplineError", { enumerable: true, get: function () { return types_1.TaplineError; } });
190
195
  Object.defineProperty(exports, "PROTOCOL_VERSION", { enumerable: true, get: function () { return types_1.PROTOCOL_VERSION; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/inspect.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { type Fiber, type FiberRootLike } from './fiber';
2
+ import { type PlaceParts } from './placekey';
2
3
  import { type Action, type Frame, type ScreenInfo, type TaplineElement, type TreeResult } from './types';
3
4
  /** How much of an element's text a line shows (AGENT-TOOLS v1.5); a cut ends with `…(+N)`, the count left out. */
4
5
  export declare const MAX_TEXT = 200;
@@ -25,6 +26,8 @@ export interface HostNode {
25
26
  text: string;
26
27
  isText: boolean;
27
28
  insideText: boolean;
29
+ /** Inside a virtualized list's item (AGENT-TOOLS 1.13 §18.2: the host never saves what a row said). */
30
+ row?: true;
28
31
  }
29
32
  /** Text as an agent sees and matches it: without the invisible direction marks. */
30
33
  export declare function displayText(raw: string): string;
@@ -52,6 +55,10 @@ export interface RouteFound {
52
55
  focused: boolean;
53
56
  /** Route names from the outermost navigator to this one. */
54
57
  chain: string[];
58
+ /** How the screen is presented when it isn't a plain push (React Native Screens' `stackPresentation`), for the place's layer. */
59
+ presentation?: string;
60
+ /** The screen component's fiber, to tell which of a route and a bare Modal lies on top of the other. */
61
+ fiber?: Fiber;
55
62
  }
56
63
  /** One tab of a native tab bar (drawn by the OS, so not in the host tree as a button). */
57
64
  export interface TabFound {
@@ -60,6 +67,8 @@ export interface TabFound {
60
67
  screenKey: string | null;
61
68
  selected: boolean;
62
69
  }
70
+ /** What the place is made of, without describing any element (cheap enough for every commit); null without React roots. */
71
+ export declare function placeParts(roots?: FiberRootLike[]): PlaceParts | null;
63
72
  export declare function collectNodes(roots?: FiberRootLike[]): HostNode[];
64
73
  /** The focused screen: the deepest focused route, the last one on ties (drawn on top). */
65
74
  export declare function currentRoute(routes: RouteFound[]): RouteFound | null;
@@ -147,6 +156,8 @@ export interface Snapshot {
147
156
  screen: ScreenInfo;
148
157
  /** Visible screens that got React Navigation's props, in tree order. */
149
158
  routes: RouteFound[];
159
+ /** What the place (AGENT-TOOLS 1.13 §18.1) is made of. */
160
+ parts: PlaceParts;
150
161
  /**
151
162
  * Set while a modal (a sheet) is open: what the open sheet hides, worked out on first call. The
152
163
  * look leaves the screen behind a sheet out, so `entries` don't hold it; this does, with the
@@ -232,6 +243,12 @@ export interface Listed {
232
243
  entry: Entry;
233
244
  frame: Frame | null;
234
245
  }
246
+ /** What a journey in a user's eyes does to the list: keeps what shows on the glass, says whether a view scrolls further (see glass.ts). */
247
+ export type GlassPass = (snapshot: Snapshot, listed: Listed[]) => Promise<{
248
+ kept: Listed[];
249
+ moreAbove: boolean;
250
+ moreBelow: boolean;
251
+ }>;
235
252
  /**
236
253
  * AGENT-TOOLS v1.3 "Duplicates": when an element and its nearest listed ancestor have the same
237
254
  * quoted text and the same rect (within 1 pt), only one is listed: the one that takes an action,
@@ -246,4 +263,4 @@ export declare function foldDuplicates(snapshot: Snapshot, listed: Listed[]): Li
246
263
  * ref never lands on another element; it also reports what changed since the previous call. A new
247
264
  * host session has no previous call (`forgetLastTree`), so its first list starts over like a look.
248
265
  */
249
- export declare function tree(params?: unknown): Promise<TreeResult>;
266
+ export declare function tree(params?: unknown, glass?: GlassPass): Promise<TreeResult>;