react-native-tapline 1.3.1 → 1.5.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 (48) hide show
  1. package/dist/actions.d.ts +66 -1
  2. package/dist/actions.js +483 -51
  3. package/dist/actions.js.map +1 -1
  4. package/dist/checks.d.ts +43 -1
  5. package/dist/checks.js +17 -5
  6. package/dist/checks.js.map +1 -1
  7. package/dist/client.js +11 -1
  8. package/dist/client.js.map +1 -1
  9. package/dist/closest.d.ts +30 -0
  10. package/dist/closest.js +101 -0
  11. package/dist/closest.js.map +1 -0
  12. package/dist/commands.d.ts +9 -0
  13. package/dist/commands.js +135 -2
  14. package/dist/commands.js.map +1 -1
  15. package/dist/glass.d.ts +3 -0
  16. package/dist/glass.js +81 -0
  17. package/dist/glass.js.map +1 -0
  18. package/dist/glassclip.d.ts +18 -0
  19. package/dist/glassclip.js +69 -0
  20. package/dist/glassclip.js.map +1 -0
  21. package/dist/index.d.ts +5 -1
  22. package/dist/index.js +10 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/inspect.d.ts +7 -1
  25. package/dist/inspect.js +16 -3
  26. package/dist/inspect.js.map +1 -1
  27. package/dist/locale.d.ts +67 -0
  28. package/dist/locale.js +224 -0
  29. package/dist/locale.js.map +1 -0
  30. package/dist/logs.d.ts +2 -0
  31. package/dist/logs.js +7 -0
  32. package/dist/logs.js.map +1 -1
  33. package/dist/media.d.ts +71 -0
  34. package/dist/media.js +516 -0
  35. package/dist/media.js.map +1 -0
  36. package/dist/methods.js +6 -1
  37. package/dist/methods.js.map +1 -1
  38. package/dist/network.d.ts +20 -2
  39. package/dist/network.js +750 -3
  40. package/dist/network.js.map +1 -1
  41. package/dist/types.d.ts +8 -2
  42. package/dist/types.js.map +1 -1
  43. package/dist/uxcheck.d.ts +57 -0
  44. package/dist/uxcheck.js +222 -0
  45. package/dist/uxcheck.js.map +1 -0
  46. package/dist/wait.js +30 -3
  47. package/dist/wait.js.map +1 -1
  48. package/package.json +1 -1
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Language, region and text size as `app_command` names (AGENT-TOOLS 16.3). The names and their
3
+ * values are shared with Tapwright, so an agent gets the same `bad_params` wherever the app registers them.
4
+ */
5
+ /** Text sizes and the font scale each means (the number React Native reports as `fontScale`). */
6
+ export declare const TEXT_SIZE_SCALES: {
7
+ readonly xs: 0.82;
8
+ readonly s: 0.88;
9
+ readonly m: 0.94;
10
+ readonly l: 1;
11
+ readonly xl: 1.12;
12
+ readonly xxl: 1.24;
13
+ readonly xxxl: 1.35;
14
+ readonly ax1: 1.65;
15
+ readonly ax2: 1.94;
16
+ readonly ax3: 2.35;
17
+ readonly ax4: 2.76;
18
+ readonly ax5: 3.12;
19
+ };
20
+ export type TextSize = keyof typeof TEXT_SIZE_SCALES;
21
+ export declare const TEXT_SIZES: TextSize[];
22
+ export declare function isTextSize(value: unknown): value is TextSize;
23
+ /** Names the SDK provides itself that an app cannot replace (`appearance` can be replaced, as in 1.3). */
24
+ export declare const RESERVED_COMMANDS: readonly string[];
25
+ /** A BCP 47 code such as `ar` or `en-GB`. */
26
+ export declare function parseLanguage(args: Record<string, unknown>): string;
27
+ /** An ISO 3166 alpha-2 country code such as `QA` (returned in upper case). */
28
+ export declare function parseRegion(args: Record<string, unknown>): string;
29
+ /** `system` clears the override and goes back to the phone's own text size. */
30
+ export declare const SYSTEM_TEXT_SIZE = "system";
31
+ export declare function parseTextSize(args: Record<string, unknown>): TextSize | typeof SYSTEM_TEXT_SIZE;
32
+ /** True for a language written right to left (ar, he, fa, ur). */
33
+ export declare function isRtlLanguage(language: string): boolean;
34
+ /**
35
+ * The font scale to use: the one an agent set with `text_size`, else the system's. Calling it counts as using the helper.
36
+ * It already holds the system's scale, so text sized with it sets `allowFontScaling={false}` (else the system scale
37
+ * applies twice).
38
+ */
39
+ export declare function getTaplineFontScale(): number;
40
+ /** Calls `listener` when the override changes; returns the function that stops it. A live subscriber counts as using the helper. */
41
+ export declare function subscribeTaplineFontScale(listener: () => void): () => void;
42
+ /**
43
+ * The font scale the app should apply to its text: the size an agent set with the `text_size`
44
+ * command, else the system's. React Native reads the system scale natively, so Tapline cannot
45
+ * change it; an app that multiplies its font sizes by this value opts in to `text_size`. The value already
46
+ * holds the system's scale: that text sets `allowFontScaling={false}`, so the system scale applies once.
47
+ *
48
+ * const scale = useTaplineFontScale();
49
+ * <Text allowFontScaling={false} style={{ fontSize: 16 * scale }}>…</Text>
50
+ */
51
+ export declare function useTaplineFontScale(): number;
52
+ /** True while a hook or subscriber is live (a mounted `useTaplineFontScale`), or the app has called the getter this session. */
53
+ export declare function fontScaleHelperUsed(): boolean;
54
+ export declare function setTaplineFontScale(scale: number | null): void;
55
+ /** The session ended (host gone, Tapline stopped): the phone's own text size again, and the getter no longer counts as used. */
56
+ export declare function resetTaplineTextSize(): void;
57
+ /** Forgets the override and that the helper was used (tests). */
58
+ export declare function resetFontScale(): void;
59
+ /** `1.12×`, `1×`: the scale as the answer writes it. */
60
+ export declare function formatScale(scale: number): string;
61
+ export declare const TEXT_SIZE_UNSUPPORTED = "This app doesn't use Tapline's font-scale helper (useTaplineFontScale), and React Native reads the system text size natively. To check large text, use audit's dynamic_type check or Tapwright's open_app { text_size }.";
62
+ /** The built-in `text_size` run: validates, then sets the override. */
63
+ export declare function runTextSize(args: Record<string, unknown>): {
64
+ size: TextSize | typeof SYSTEM_TEXT_SIZE;
65
+ scale: number;
66
+ say: string;
67
+ };
package/dist/locale.js ADDED
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TEXT_SIZE_UNSUPPORTED = exports.SYSTEM_TEXT_SIZE = exports.RESERVED_COMMANDS = exports.TEXT_SIZES = exports.TEXT_SIZE_SCALES = void 0;
4
+ exports.isTextSize = isTextSize;
5
+ exports.parseLanguage = parseLanguage;
6
+ exports.parseRegion = parseRegion;
7
+ exports.parseTextSize = parseTextSize;
8
+ exports.isRtlLanguage = isRtlLanguage;
9
+ exports.getTaplineFontScale = getTaplineFontScale;
10
+ exports.subscribeTaplineFontScale = subscribeTaplineFontScale;
11
+ exports.useTaplineFontScale = useTaplineFontScale;
12
+ exports.fontScaleHelperUsed = fontScaleHelperUsed;
13
+ exports.setTaplineFontScale = setTaplineFontScale;
14
+ exports.resetTaplineTextSize = resetTaplineTextSize;
15
+ exports.resetFontScale = resetFontScale;
16
+ exports.formatScale = formatScale;
17
+ exports.runTextSize = runTextSize;
18
+ const react_1 = require("react");
19
+ const react_native_1 = require("react-native");
20
+ const types_1 = require("./types");
21
+ /**
22
+ * Language, region and text size as `app_command` names (AGENT-TOOLS 16.3). The names and their
23
+ * values are shared with Tapwright, so an agent gets the same `bad_params` wherever the app registers them.
24
+ */
25
+ /** Text sizes and the font scale each means (the number React Native reports as `fontScale`). */
26
+ exports.TEXT_SIZE_SCALES = {
27
+ xs: 0.82,
28
+ s: 0.88,
29
+ m: 0.94,
30
+ l: 1.0,
31
+ xl: 1.12,
32
+ xxl: 1.24,
33
+ xxxl: 1.35,
34
+ ax1: 1.65,
35
+ ax2: 1.94,
36
+ ax3: 2.35,
37
+ ax4: 2.76,
38
+ ax5: 3.12,
39
+ };
40
+ exports.TEXT_SIZES = Object.keys(exports.TEXT_SIZE_SCALES);
41
+ function isTextSize(value) {
42
+ return typeof value === 'string' && Object.prototype.hasOwnProperty.call(exports.TEXT_SIZE_SCALES, value);
43
+ }
44
+ /** Names the SDK provides itself that an app cannot replace (`appearance` can be replaced, as in 1.3). */
45
+ exports.RESERVED_COMMANDS = ['network', 'text_size'];
46
+ // --- validation ---------------------------------------------------------------------------------------------
47
+ const LANGUAGE = /^[A-Za-z]{2,3}$/;
48
+ const SUBTAG = /^[A-Za-z0-9]{2,8}$/;
49
+ const PRIVATE_SUBTAG = /^[A-Za-z0-9]{1,8}$/;
50
+ const SINGLETON = /^[A-Za-z0-9]$/;
51
+ const MAX_LANGUAGE_TAG = 128;
52
+ /**
53
+ * BCP 47, read subtag by subtag (linear: a regex with nested repeats can take seconds on a long bad tag): a language
54
+ * of 2-3 letters, then subtags of 2-8. A singleton starts an extension (`u-ca-gregory`), which needs one or more
55
+ * subtags of 2-8; `x` starts the private-use part (`x-a`), which needs one or more of 1-8 and runs to the end.
56
+ */
57
+ function isLanguageTag(value) {
58
+ if (value.length > MAX_LANGUAGE_TAG)
59
+ return false;
60
+ const parts = value.split('-');
61
+ if (!LANGUAGE.test(parts[0] ?? ''))
62
+ return false;
63
+ let i = 1;
64
+ while (i < parts.length) {
65
+ const part = parts[i];
66
+ if (!SINGLETON.test(part)) {
67
+ if (!SUBTAG.test(part))
68
+ return false;
69
+ i++;
70
+ continue;
71
+ }
72
+ const privateUse = part.toLowerCase() === 'x';
73
+ const fits = privateUse ? PRIVATE_SUBTAG : SUBTAG;
74
+ let n = 0;
75
+ i++;
76
+ while (i < parts.length && (privateUse || !SINGLETON.test(parts[i]))) {
77
+ if (!fits.test(parts[i]))
78
+ return false;
79
+ n++;
80
+ i++;
81
+ }
82
+ if (n === 0)
83
+ return false;
84
+ }
85
+ return true;
86
+ }
87
+ const REGION_CODE = /^[A-Za-z]{2}$/;
88
+ function badParams(message) {
89
+ return new types_1.TaplineError('bad_params', message);
90
+ }
91
+ /** A BCP 47 code such as `ar` or `en-GB`. */
92
+ function parseLanguage(args) {
93
+ const value = args.language;
94
+ if (typeof value !== 'string' || !isLanguageTag(value)) {
95
+ throw badParams('language must be a BCP 47 code such as "ar" or "en-GB"');
96
+ }
97
+ return value;
98
+ }
99
+ /** An ISO 3166 alpha-2 country code such as `QA` (returned in upper case). */
100
+ function parseRegion(args) {
101
+ const value = args.region;
102
+ if (typeof value !== 'string' || !REGION_CODE.test(value)) {
103
+ throw badParams('region must be an ISO 3166 country code such as "QA"');
104
+ }
105
+ return value.toUpperCase();
106
+ }
107
+ /** `system` clears the override and goes back to the phone's own text size. */
108
+ exports.SYSTEM_TEXT_SIZE = 'system';
109
+ function parseTextSize(args) {
110
+ const value = args.size;
111
+ if (value === exports.SYSTEM_TEXT_SIZE)
112
+ return value;
113
+ if (!isTextSize(value)) {
114
+ throw badParams(`size must be one of ${exports.TEXT_SIZES.join(', ')}, or "system" for the phone's own`);
115
+ }
116
+ return value;
117
+ }
118
+ // --- right-to-left ------------------------------------------------------------------------------------------
119
+ const RTL_LANGUAGES = new Set(['ar', 'he', 'fa', 'ur']);
120
+ /** True for a language written right to left (ar, he, fa, ur). */
121
+ function isRtlLanguage(language) {
122
+ const primary = language.split('-')[0]?.toLowerCase() ?? '';
123
+ return RTL_LANGUAGES.has(primary);
124
+ }
125
+ // --- font scale override ------------------------------------------------------------------------------------
126
+ let override = null;
127
+ let getterUsed = false;
128
+ const listeners = new Set();
129
+ function emit() {
130
+ for (const listener of [...listeners]) {
131
+ try {
132
+ listener();
133
+ }
134
+ catch {
135
+ // one failing subscriber must not stop the others, or the session reset
136
+ }
137
+ }
138
+ }
139
+ function currentScale() {
140
+ return override ?? react_native_1.PixelRatio.getFontScale();
141
+ }
142
+ /**
143
+ * The font scale to use: the one an agent set with `text_size`, else the system's. Calling it counts as using the helper.
144
+ * It already holds the system's scale, so text sized with it sets `allowFontScaling={false}` (else the system scale
145
+ * applies twice).
146
+ */
147
+ function getTaplineFontScale() {
148
+ getterUsed = true;
149
+ return currentScale();
150
+ }
151
+ /** Calls `listener` when the override changes; returns the function that stops it. A live subscriber counts as using the helper. */
152
+ function subscribeTaplineFontScale(listener) {
153
+ listeners.add(listener);
154
+ return () => {
155
+ listeners.delete(listener);
156
+ };
157
+ }
158
+ /**
159
+ * The font scale the app should apply to its text: the size an agent set with the `text_size`
160
+ * command, else the system's. React Native reads the system scale natively, so Tapline cannot
161
+ * change it; an app that multiplies its font sizes by this value opts in to `text_size`. The value already
162
+ * holds the system's scale: that text sets `allowFontScaling={false}`, so the system scale applies once.
163
+ *
164
+ * const scale = useTaplineFontScale();
165
+ * <Text allowFontScaling={false} style={{ fontSize: 16 * scale }}>…</Text>
166
+ */
167
+ function useTaplineFontScale() {
168
+ const [scale, setScale] = (0, react_1.useState)(currentScale);
169
+ (0, react_1.useEffect)(() => {
170
+ const update = () => setScale(currentScale());
171
+ const stop = subscribeTaplineFontScale(update);
172
+ update();
173
+ return stop;
174
+ }, []);
175
+ return scale;
176
+ }
177
+ /** True while a hook or subscriber is live (a mounted `useTaplineFontScale`), or the app has called the getter this session. */
178
+ function fontScaleHelperUsed() {
179
+ return listeners.size > 0 || getterUsed;
180
+ }
181
+ function setTaplineFontScale(scale) {
182
+ override = scale;
183
+ emit();
184
+ }
185
+ /** The session ended (host gone, Tapline stopped): the phone's own text size again, and the getter no longer counts as used. */
186
+ function resetTaplineTextSize() {
187
+ const changed = override !== null;
188
+ override = null;
189
+ getterUsed = false;
190
+ if (changed)
191
+ emit();
192
+ }
193
+ /** Forgets the override and that the helper was used (tests). */
194
+ function resetFontScale() {
195
+ override = null;
196
+ getterUsed = false;
197
+ listeners.clear();
198
+ }
199
+ /** `1.0×`, `1.3×`: the phone's own scale as the answer writes it (always one decimal at least). */
200
+ function formatSystemScale(scale) {
201
+ const text = String(Number(scale.toFixed(2)));
202
+ return `${text.includes('.') ? text : `${text}.0`}×`;
203
+ }
204
+ /** `1.12×`, `1×`: the scale as the answer writes it. */
205
+ function formatScale(scale) {
206
+ return `${Number(scale.toFixed(2))}×`;
207
+ }
208
+ exports.TEXT_SIZE_UNSUPPORTED = "This app doesn't use Tapline's font-scale helper (useTaplineFontScale), and React Native reads the system text size natively. To check large text, use audit's dynamic_type check or Tapwright's open_app { text_size }.";
209
+ /** The built-in `text_size` run: validates, then sets the override. */
210
+ function runTextSize(args) {
211
+ const size = parseTextSize(args);
212
+ // "system" always clears an override, also once the screens that used the helper are gone
213
+ if (size !== exports.SYSTEM_TEXT_SIZE && !fontScaleHelperUsed())
214
+ throw new types_1.TaplineError('unsupported', exports.TEXT_SIZE_UNSUPPORTED);
215
+ if (size === exports.SYSTEM_TEXT_SIZE) {
216
+ setTaplineFontScale(null);
217
+ const scale = react_native_1.PixelRatio.getFontScale();
218
+ return { size, scale, say: `Text size: the phone's own (${formatSystemScale(scale)}).` };
219
+ }
220
+ const scale = exports.TEXT_SIZE_SCALES[size];
221
+ setTaplineFontScale(scale);
222
+ return { size, scale, say: `Text size ${size} (${formatScale(scale)}).` };
223
+ }
224
+ //# sourceMappingURL=locale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale.js","sourceRoot":"","sources":["../src/locale.ts"],"names":[],"mappings":"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"}
package/dist/logs.d.ts CHANGED
@@ -12,5 +12,7 @@ export declare function clearLogs(): void;
12
12
  export declare function setLogSink(next: LogSink | null): void;
13
13
  /** The unpatched console.log, for Tapline's own one-line status messages. */
14
14
  export declare function originalLog(...args: unknown[]): void;
15
+ /** The unpatched console.warn, for Tapline's own notices to the developer (not captured as an app log). */
16
+ export declare function originalWarn(...args: unknown[]): void;
15
17
  export declare function installLogs(): void;
16
18
  export declare function uninstallLogs(): void;
package/dist/logs.js CHANGED
@@ -8,6 +8,7 @@ exports.getLogEntries = getLogEntries;
8
8
  exports.clearLogs = clearLogs;
9
9
  exports.setLogSink = setLogSink;
10
10
  exports.originalLog = originalLog;
11
+ exports.originalWarn = originalWarn;
11
12
  exports.installLogs = installLogs;
12
13
  exports.uninstallLogs = uninstallLogs;
13
14
  const crash_1 = require("./crash");
@@ -130,6 +131,12 @@ function originalLog(...args) {
130
131
  if (typeof log === 'function')
131
132
  log.apply(console, args);
132
133
  }
134
+ /** The unpatched console.warn, for Tapline's own notices to the developer (not captured as an app log). */
135
+ function originalWarn(...args) {
136
+ const warn = originals.get('warn') ?? consoleOf().warn;
137
+ if (typeof warn === 'function')
138
+ warn.apply(console, args);
139
+ }
133
140
  function installLogs() {
134
141
  if (installed)
135
142
  return;
package/dist/logs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"logs.js","sourceRoot":"","sources":["../src/logs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../src/logs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ interface ExpoMediaLibrary {
2
+ createAssetAsync: (uri: string) => Promise<unknown>;
3
+ deleteAssetsAsync: (ids: string[]) => Promise<unknown>;
4
+ getPermissionsAsync: (writeOnly?: boolean) => Promise<unknown>;
5
+ requestPermissionsAsync: (writeOnly?: boolean) => Promise<unknown>;
6
+ }
7
+ interface CameraRollModule {
8
+ save: (uri: string, options?: {
9
+ type?: string;
10
+ }) => Promise<unknown>;
11
+ deletePhotos: (uris: string[]) => Promise<unknown>;
12
+ }
13
+ interface FileSystemModule {
14
+ cacheDirectory: string;
15
+ writeAsStringAsync: (uri: string, contents: string, options: {
16
+ encoding: string;
17
+ }) => Promise<unknown>;
18
+ deleteAsync: (uri: string, options?: {
19
+ idempotent?: boolean;
20
+ }) => Promise<unknown>;
21
+ }
22
+ type PickerModule = Record<string, unknown>;
23
+ export interface MediaModules {
24
+ expo: ExpoMediaLibrary | null;
25
+ cameraRoll: CameraRollModule | null;
26
+ fileSystem: FileSystemModule | null;
27
+ imagePicker: PickerModule | null;
28
+ }
29
+ /** Replace the optional modules (tests); undefined restores the lookup. */
30
+ export declare function setMediaModules(next: MediaModules | undefined): void;
31
+ /** How long an OS prompt is waited for before the answer says a person must (tests shorten it). */
32
+ export declare function setMediaPatience(ms: number): void;
33
+ /** The asset ids this session has added and not yet removed. */
34
+ export declare function addedAssetIds(): readonly string[];
35
+ export interface AddOutcome {
36
+ /** The new asset's id; absent when a person must answer the OS prompt first. */
37
+ id?: string;
38
+ needsPerson?: boolean;
39
+ /** Ids of earlier saves that finished after their `needsPerson` answer; the host remembers them. */
40
+ late?: string[];
41
+ }
42
+ export interface RemoveOutcome {
43
+ removed: number;
44
+ /** The person has not answered the OS delete confirmation yet. */
45
+ pending?: boolean;
46
+ /** The person declined the delete; the pictures stay (and stay remembered). */
47
+ declined?: boolean;
48
+ }
49
+ /** A picture handed to a photo picker, as an `expo-image-picker` asset describes it. */
50
+ export interface TaplinePickerPicture {
51
+ uri: string;
52
+ fileName: string;
53
+ mimeType: string;
54
+ width: number;
55
+ height: number;
56
+ base64: string;
57
+ }
58
+ /** What a hook receives when pictures are armed for the app's own picker. */
59
+ export type TaplinePickerHook = (pictures: readonly TaplinePickerPicture[]) => void | Promise<void>;
60
+ /**
61
+ * For an app whose photo picker is not expo-image-picker: called when the agent arms test pictures
62
+ * (`media` with `picker: true`), so the app can hand them to its own picker once. Returns the unregister function.
63
+ */
64
+ export declare function registerTaplinePickerHook(hook: TaplinePickerHook): () => void;
65
+ /** Puts the picker back as the app made it and forgets pictures not yet used. Called after one use and on disconnect. */
66
+ export declare function resetMedia(): void;
67
+ /** Whether a picker stub is waiting for its one use. */
68
+ export declare function pickerArmed(): boolean;
69
+ /** `media {op: "add" | "remove" | "picker", ...}` (AGENT-TOOLS 1.12 §17.6). One picture per `add` and `picker` request. */
70
+ export declare function media(rawParams: unknown): Promise<unknown>;
71
+ export {};