react-native-executorch 0.10.3 → 0.10.5

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.
@@ -36,7 +36,7 @@ import { RnExecuTorchError } from "../../../core/error.js";
36
36
  * @category Speech / Constants
37
37
  */
38
38
  // prettier-ignore
39
- export const SUPERTONIC_SUPPORTED_LANGUAGES = ['ar', 'bg', 'cs', 'da', 'de', 'el', 'en', 'es', 'fi', 'fr', 'hi', 'hr', 'hu', 'id', 'it', 'ja', 'ko', 'ms', 'nl', 'no', 'pl', 'pt', 'ro', 'ru', 'sk', 'sv', 'sw', 'ta', 'th', 'tl', 'tr', 'na'];
39
+ export const SUPERTONIC_SUPPORTED_LANGUAGES = ['ar', 'bg', 'cs', 'da', 'de', 'el', 'en', 'es', 'et', 'fi', 'fr', 'hi', 'hr', 'hu', 'id', 'it', 'ja', 'ko', 'lt', 'lv', 'nl', 'pl', 'pt', 'ro', 'ru', 'sk', 'sl', 'sv', 'tr', 'uk', 'vi', 'na'];
40
40
 
41
41
  /**
42
42
  * Supported Supertonic 3 ISO language code.
@@ -7,8 +7,8 @@
7
7
 
8
8
  import { RnExecuTorchError } from "../../../core/error.js";
9
9
  // Punctuation Regex Patterns
10
- const EOS_PATTERN = /[.?!;…|।॥¿¡]/;
11
- const PAUSE_PATTERN = /[,:\u2014\u00AB\u00BB]/;
10
+ const EOS_PATTERN = /[.?!;…|।॥¿¡。.!?;]/;
11
+ const PAUSE_PATTERN = /[,:\u2014\u00AB\u00BB、,:〜~]/;
12
12
  const WHITESPACE_PATTERN = /\s/;
13
13
 
14
14
  // Standard Partitioning Constants
@@ -88,12 +88,24 @@ export function partition(text, limit, options) {
88
88
  };
89
89
  const breakpoints = [];
90
90
  let charIdx = 0;
91
+ let lastBpIdx = -1;
91
92
  for (const char of text) {
93
+ const endIdx = charIdx + char.length - 1;
92
94
  const t = tagFromChar(char);
93
- if (t) breakpoints.push({
94
- idx: charIdx,
95
- tag: t
96
- });
95
+ if (endIdx - lastBpIdx > limit) {
96
+ breakpoints.push({
97
+ idx: charIdx - 1,
98
+ tag: 'whitespace'
99
+ });
100
+ lastBpIdx = charIdx - 1;
101
+ }
102
+ if (t) {
103
+ breakpoints.push({
104
+ idx: endIdx,
105
+ tag: t
106
+ });
107
+ lastBpIdx = endIdx;
108
+ }
97
109
  charIdx += char.length;
98
110
  }
99
111
  if (breakpoints.length === 0 || breakpoints[breakpoints.length - 1].idx < text.length - 1) {
@@ -1 +1 @@
1
- {"version":3,"names":["RnExecuTorchError","EOS_PATTERN","PAUSE_PATTERN","WHITESPACE_PATTERN","MAX_TARGET_PHRASE_LENGTH","MIN_PARTITION_LIMIT","DEVIATION_SCALING","TARGET_LENGTH_RATIO","INITIAL_TARGET_LENGTH_RATIO","RAMP_CHARACTER_COUNT","INITIAL_SHORT_DEVIATION_SCALE","DEFAULT_SEPARATOR_PENALTY","eos","pause","whitespace","tagFromChar","char","test","getTargetLength","startCharIdx","limit","prioritizeInitialTtfa","maxTarget","Math","min","minTarget","max","progress","sliceAtCuts","text","cutIndices","chunks","startIdx","cutIdx","push","slice","map","c","trim","filter","length","partition","options","initialShortDeviationScale","separatorPenalty","separatorPenalties","breakpoints","charIdx","t","idx","tag","currBreakIdx","prevBreakIdx","cost","len","Infinity","targetLength","isFirstChunk","diff","devScale","minCost","Float32Array","predecessor","Int32Array","jMin","fill","i","j","total","cuts","reverse"],"sourceRoot":"../../../../../src","sources":["extensions/speech/utils/textPartitioner.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["RnExecuTorchError","EOS_PATTERN","PAUSE_PATTERN","WHITESPACE_PATTERN","MAX_TARGET_PHRASE_LENGTH","MIN_PARTITION_LIMIT","DEVIATION_SCALING","TARGET_LENGTH_RATIO","INITIAL_TARGET_LENGTH_RATIO","RAMP_CHARACTER_COUNT","INITIAL_SHORT_DEVIATION_SCALE","DEFAULT_SEPARATOR_PENALTY","eos","pause","whitespace","tagFromChar","char","test","getTargetLength","startCharIdx","limit","prioritizeInitialTtfa","maxTarget","Math","min","minTarget","max","progress","sliceAtCuts","text","cutIndices","chunks","startIdx","cutIdx","push","slice","map","c","trim","filter","length","partition","options","initialShortDeviationScale","separatorPenalty","separatorPenalties","breakpoints","charIdx","lastBpIdx","endIdx","t","idx","tag","currBreakIdx","prevBreakIdx","cost","len","Infinity","targetLength","isFirstChunk","diff","devScale","minCost","Float32Array","predecessor","Int32Array","jMin","fill","i","j","total","cuts","reverse"],"sourceRoot":"../../../../../src","sources":["extensions/speech/utils/textPartitioner.ts"],"mappings":"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","ignoreList":[]}
@@ -12,7 +12,7 @@ const DOWNLOAD_EVENT_ENDPOINT = 'https://ai.swmansion.com/telemetry/downloads/ap
12
12
  // self-referencing import would need package `exports` support in the consuming
13
13
  // bundler to load at all. A wrong value here is analytics noise; a failed
14
14
  // import would break the bundle.
15
- const LIB_VERSION = '0.10.3';
15
+ const LIB_VERSION = '0.10.5';
16
16
 
17
17
  // Anonymous analytics are on by default; apps opt out via setTelemetryEnabled.
18
18
  let telemetryEnabled = true;
@@ -30,7 +30,7 @@
30
30
  * List of ISO language codes supported by Supertonic 3 for text synthesis conditioning.
31
31
  * @category Speech / Constants
32
32
  */
33
- export declare const SUPERTONIC_SUPPORTED_LANGUAGES: readonly ["ar", "bg", "cs", "da", "de", "el", "en", "es", "fi", "fr", "hi", "hr", "hu", "id", "it", "ja", "ko", "ms", "nl", "no", "pl", "pt", "ro", "ru", "sk", "sv", "sw", "ta", "th", "tl", "tr", "na"];
33
+ export declare const SUPERTONIC_SUPPORTED_LANGUAGES: readonly ["ar", "bg", "cs", "da", "de", "el", "en", "es", "et", "fi", "fr", "hi", "hr", "hu", "id", "it", "ja", "ko", "lt", "lv", "nl", "pl", "pt", "ro", "ru", "sk", "sl", "sv", "tr", "uk", "vi", "na"];
34
34
  /**
35
35
  * Supported Supertonic 3 ISO language code.
36
36
  * @category Speech / Types
@@ -1 +1 @@
1
- {"version":3,"file":"textPartitioner.d.ts","sourceRoot":"","sources":["../../../../../../src/extensions/speech/utils/textPartitioner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwBH;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEzC;;;;OAIG;IACH,QAAQ,CAAC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAE7C;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE;QAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;CACH,CAAC;AAqCF;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,EAAE,CA4G3F"}
1
+ {"version":3,"file":"textPartitioner.d.ts","sourceRoot":"","sources":["../../../../../../src/extensions/speech/utils/textPartitioner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwBH;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEzC;;;;OAIG;IACH,QAAQ,CAAC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAE7C;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE;QAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;CACH,CAAC;AAqCF;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAqH3F"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-executorch",
3
- "version": "0.10.3",
3
+ "version": "0.10.5",
4
4
  "nativeLibsVersion": "0.10.4",
5
5
  "description": "An easy way to run AI models in React Native with ExecuTorch",
6
6
  "main": "./lib/module/index.js",
@@ -209,11 +209,9 @@ Pod::Spec.new do |s|
209
209
 
210
210
  # --- Link flags ---
211
211
  physical_ldflags = [
212
- '$(inherited)',
213
212
  "\"#{executorch_binaries_path}/libthreadpool_ios.a\"",
214
213
  ]
215
214
  simulator_ldflags = [
216
- '$(inherited)',
217
215
  "\"#{executorch_binaries_path}/libthreadpool_simulator.a\"",
218
216
  ]
219
217
 
@@ -239,9 +237,10 @@ Pod::Spec.new do |s|
239
237
  end
240
238
 
241
239
  s.user_target_xcconfig = {
242
- "OTHER_LDFLAGS[sdk=iphoneos*]" => physical_ldflags.join(' '),
243
- "OTHER_LDFLAGS[sdk=iphonesimulator*]" => simulator_ldflags.join(' '),
244
- 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'x86_64',
240
+ "RNE_OTHER_LDFLAGS[sdk=iphoneos*]" => physical_ldflags.join(' '),
241
+ "RNE_OTHER_LDFLAGS[sdk=iphonesimulator*]" => simulator_ldflags.join(' '),
242
+ "OTHER_LDFLAGS" => '$(inherited) $(RNE_OTHER_LDFLAGS)',
243
+ 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'x86_64',
245
244
  }
246
245
 
247
246
  # iOS OpenCV is provided by a CocoaPod (not a downloaded tarball), normally
@@ -76,7 +76,7 @@ const http = require('http');
76
76
  const fs = require('fs');
77
77
  const path = require('path');
78
78
  const { spawnSync } = require('child_process');
79
- const { createHash } = require('crypto');
79
+ const { createHash, randomBytes } = require('crypto');
80
80
  const { Buffer } = require('buffer');
81
81
 
82
82
  // ---- Config ----------------------------------------------------------------
@@ -324,16 +324,16 @@ function warnAboutPlatformAsymmetry({ backends }, targets) {
324
324
 
325
325
  // ---- Target detection ------------------------------------------------------
326
326
 
327
+ // The iOS artifacts come down on every host, not only on macOS. Expo's
328
+ // fingerprint runtime version hashes the whole package root for both platforms,
329
+ // so a Mac install that held them and a Linux EAS builder that did not computed
330
+ // different Android runtime versions (#1509). They are ~10 MB compressed.
327
331
  function detectTargets() {
328
332
  if (process.env.RNET_TARGET) {
329
333
  return [process.env.RNET_TARGET];
330
334
  }
331
335
 
332
- const targets = [];
333
- if (process.platform === 'darwin') {
334
- targets.push('ios');
335
- }
336
- targets.push('android-arm64-v8a');
336
+ const targets = ['ios', 'android-arm64-v8a'];
337
337
  if (!process.env.RNET_NO_X86_64) {
338
338
  targets.push('android-x86_64');
339
339
  }
@@ -414,34 +414,59 @@ function ensureDir(dir) {
414
414
  fs.mkdirSync(dir, { recursive: true });
415
415
  }
416
416
 
417
+ // Writes to a temp file beside `dest` and renames it into place once complete.
418
+ // Package managers can run this postinstall for several copies of the package
419
+ // at once (a monorepo whose workspaces resolve it with different peers), all
420
+ // sharing CACHE_DIR. Writing `dest` directly let one copy truncate a checksum
421
+ // or tarball while another was reading it. The rename is atomic, so a reader
422
+ // sees either the previous file or the complete new one.
417
423
  function download(url, dest) {
424
+ const tmp = `${dest}.${process.pid}-${randomBytes(4).toString('hex')}.tmp`;
418
425
  return new Promise((resolve, reject) => {
419
- const file = fs.createWriteStream(dest);
426
+ const file = fs.createWriteStream(tmp);
427
+ const fail = (err) => {
428
+ // Close before removing: on Windows an open handle makes the unlink fail
429
+ // with EBUSY, which then replaces the real error with the cleanup's. And
430
+ // `force` covers the case where the file was never created. Rejects only
431
+ // once the temp file is gone, so a failed download leaves nothing behind.
432
+ file.close(() => {
433
+ fs.rmSync(tmp, { force: true });
434
+ reject(err);
435
+ });
436
+ };
420
437
  const get = (currentUrl) => {
421
438
  const client = currentUrl.startsWith('http://') ? http : https;
422
439
  const headers = {};
423
440
  if (process.env.GITHUB_TOKEN && currentUrl.includes('github.com')) {
424
441
  headers.Authorization = `Bearer ${process.env.GITHUB_TOKEN}`;
425
442
  }
426
- client.get(currentUrl, { headers }, (res) => {
427
- if (res.statusCode === 301 || res.statusCode === 302) {
428
- return get(res.headers.location);
429
- }
430
- if (res.statusCode !== 200) {
431
- return reject(new Error(`HTTP ${res.statusCode} for ${currentUrl}`));
432
- }
433
- res.pipe(file);
434
- file.on('finish', () => file.close(resolve));
435
- });
443
+ client
444
+ .get(currentUrl, { headers }, (res) => {
445
+ if (res.statusCode === 301 || res.statusCode === 302) {
446
+ res.resume();
447
+ return get(res.headers.location);
448
+ }
449
+ if (res.statusCode !== 200) {
450
+ res.resume();
451
+ return fail(new Error(`HTTP ${res.statusCode} for ${currentUrl}`));
452
+ }
453
+ res.pipe(file);
454
+ file.on('finish', () =>
455
+ file.close((err) => {
456
+ if (err) return fail(err);
457
+ try {
458
+ fs.renameSync(tmp, dest);
459
+ resolve();
460
+ } catch (renameErr) {
461
+ fail(renameErr);
462
+ }
463
+ })
464
+ );
465
+ })
466
+ .on('error', fail);
436
467
  };
437
468
  get(url);
438
- file.on('error', (err) => {
439
- // Close before removing: on Windows an open handle makes the unlink fail
440
- // with EBUSY, which then replaces the real error with the cleanup's. And
441
- // `force` covers the case where the file was never created.
442
- file.close(() => fs.rmSync(dest, { force: true }));
443
- reject(err);
444
- });
469
+ file.on('error', fail);
445
470
  });
446
471
  }
447
472
 
@@ -546,6 +571,17 @@ function expandPattern(root, pattern) {
546
571
  return candidates.filter((candidate) => fs.existsSync(candidate));
547
572
  }
548
573
 
574
+ function removeAppleDoubleFiles(dir) {
575
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
576
+ const entryPath = path.join(dir, entry.name);
577
+ if (entry.name.startsWith('._')) {
578
+ fs.rmSync(entryPath, { recursive: true, force: true });
579
+ } else if (entry.isDirectory()) {
580
+ removeAppleDoubleFiles(entryPath);
581
+ }
582
+ }
583
+ }
584
+
549
585
  function extract(tarball, destDir) {
550
586
  ensureDir(destDir);
551
587
  // `-m` stamps extracted files with the extraction time instead of the mtime
@@ -639,6 +675,8 @@ async function main() {
639
675
  console.log(` ✓ Done`);
640
676
  }
641
677
 
678
+ removeAppleDoubleFiles(THIRD_PARTY_DIR);
679
+
642
680
  // Belt and braces to core no longer carrying backends: this also clears
643
681
  // binaries left by an EARLIER install that had the backend enabled.
644
682
  pruneDisabledBackends(targets, config);
@@ -658,10 +696,13 @@ module.exports = {
658
696
  ALL_BACKENDS,
659
697
  ALL_LIBS,
660
698
  BACKEND_FILES,
699
+ detectTargets,
661
700
  FEATURE_MAP,
662
701
  findUserConfig,
663
702
  readUserConfig,
664
703
  pruneDisabledBackends,
704
+ removeAppleDoubleFiles,
665
705
  sha256,
666
706
  extract,
707
+ download,
667
708
  };
@@ -35,9 +35,9 @@ import { RnExecuTorchError } from '../../../core/error';
35
35
  */
36
36
  // prettier-ignore
37
37
  export const SUPERTONIC_SUPPORTED_LANGUAGES = [
38
- 'ar', 'bg', 'cs', 'da', 'de', 'el', 'en', 'es', 'fi', 'fr', 'hi', 'hr',
39
- 'hu', 'id', 'it', 'ja', 'ko', 'ms', 'nl', 'no', 'pl', 'pt', 'ro', 'ru',
40
- 'sk', 'sv', 'sw', 'ta', 'th', 'tl', 'tr', 'na',
38
+ 'ar', 'bg', 'cs', 'da', 'de', 'el', 'en', 'es', 'et', 'fi', 'fr', 'hi',
39
+ 'hr', 'hu', 'id', 'it', 'ja', 'ko', 'lt', 'lv', 'nl', 'pl', 'pt', 'ro',
40
+ 'ru', 'sk', 'sl', 'sv', 'tr', 'uk', 'vi', 'na',
41
41
  ] as const;
42
42
 
43
43
  /**
@@ -7,8 +7,8 @@ import { RnExecuTorchError } from '../../../core/error';
7
7
  type Tag = 'eos' | 'pause' | 'whitespace';
8
8
 
9
9
  // Punctuation Regex Patterns
10
- const EOS_PATTERN = /[.?!;…|।॥¿¡]/;
11
- const PAUSE_PATTERN = /[,:\u2014\u00AB\u00BB]/;
10
+ const EOS_PATTERN = /[.?!;…|।॥¿¡。.!?;]/;
11
+ const PAUSE_PATTERN = /[,:\u2014\u00AB\u00BB、,:〜~]/;
12
12
  const WHITESPACE_PATTERN = /\s/;
13
13
 
14
14
  // Standard Partitioning Constants
@@ -124,9 +124,18 @@ export function partition(text: string, limit: number, options?: PartitionOption
124
124
 
125
125
  const breakpoints: { idx: number; tag: Tag }[] = [];
126
126
  let charIdx = 0;
127
+ let lastBpIdx = -1;
127
128
  for (const char of text) {
129
+ const endIdx = charIdx + char.length - 1;
128
130
  const t = tagFromChar(char);
129
- if (t) breakpoints.push({ idx: charIdx, tag: t });
131
+ if (endIdx - lastBpIdx > limit) {
132
+ breakpoints.push({ idx: charIdx - 1, tag: 'whitespace' });
133
+ lastBpIdx = charIdx - 1;
134
+ }
135
+ if (t) {
136
+ breakpoints.push({ idx: endIdx, tag: t });
137
+ lastBpIdx = endIdx;
138
+ }
130
139
  charIdx += char.length;
131
140
  }
132
141
 
@@ -10,7 +10,7 @@ const DOWNLOAD_EVENT_ENDPOINT = 'https://ai.swmansion.com/telemetry/downloads/ap
10
10
  // self-referencing import would need package `exports` support in the consuming
11
11
  // bundler to load at all. A wrong value here is analytics noise; a failed
12
12
  // import would break the bundle.
13
- const LIB_VERSION = '0.10.3';
13
+ const LIB_VERSION = '0.10.5';
14
14
 
15
15
  // Anonymous analytics are on by default; apps opt out via setTelemetryEnabled.
16
16
  let telemetryEnabled = true;
@@ -16,7 +16,8 @@ Native ExecuTorch artifacts are split into **committed source** and
16
16
  `scripts/download-libs.js` runs at **postinstall** and downloads the prebuilt
17
17
  binaries from this repo's GitHub Releases (tag `v<package version>`), based on the
18
18
  app's opted-in `backends` / `libs` / `features` (see the getting-started docs).
19
- It writes `rne-build-config.json`, which the podspec and `android/build.gradle.kts`
19
+ Both platforms' binaries are fetched on every host, so the package contents (and
20
+ Expo's fingerprint) do not depend on the OS that ran the install. It writes `rne-build-config.json`, which the podspec and `android/build.gradle.kts`
20
21
  read to gate `RNE_ENABLE_*` and link only the requested backends.
21
22
 
22
23
  Extracted layout the podspec / `android/CMakeLists.txt` expect: