miaoda-expo-devkit 0.1.1-beta.98 → 0.1.1-dev.development-build.1

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 (42) hide show
  1. package/README.md +154 -110
  2. package/dist/babel/plugin-lucide-react-native.js +184 -184
  3. package/dist/cli/lint.js +317 -309
  4. package/dist/index.d.mts +1 -110
  5. package/dist/index.d.ts +1 -110
  6. package/dist/index.js +0 -159
  7. package/dist/index.mjs +0 -132
  8. package/dist/metro.d.mts +25 -5
  9. package/dist/metro.d.ts +25 -5
  10. package/dist/metro.js +49 -18
  11. package/dist/metro.mjs +50 -20
  12. package/dist/rules/no-expo-audio-compat.js +2041 -0
  13. package/dist/rules/no-expo-video-compat.js +90 -90
  14. package/dist/stubs/entry-inject.js +0 -2
  15. package/dist/stubs/expo-native-wechat-stub.js +116 -0
  16. package/dist/stubs/expo-router-entry-native-stub.js +4 -0
  17. package/dist/stubs/i18n/en.js +16 -1
  18. package/dist/stubs/i18n/zh.js +16 -1
  19. package/dist/stubs/logbox-control.js +9 -0
  20. package/dist/stubs/screenshot-control.js +1 -1
  21. package/dist/stubs/sentry-react-native-stub.js +15 -180
  22. package/oxlint-config.json +11 -4
  23. package/package.json +60 -5
  24. package/pnpm-patches/@expo__cli@55.0.16-55.0.22.patch +627 -0
  25. package/pnpm-patches/@expo__cli@55.0.16.patch +218 -0
  26. package/pnpm-patches/@expo__cli@55.0.17.patch +218 -0
  27. package/pnpm-patches/@expo__cli@55.0.18.patch +218 -0
  28. package/pnpm-patches/@expo__cli@55.0.19.patch +218 -0
  29. package/pnpm-patches/@expo__cli@55.0.20.patch +218 -0
  30. package/pnpm-patches/@expo__cli@55.0.21.patch +218 -0
  31. package/pnpm-patches/@expo__cli@55.0.22.patch +218 -0
  32. package/pnpm-patches/@shopify__react-native-skia@2.4.18.patch +14 -0
  33. package/pnpm-patches/expo-modules-core@55.0.15.patch +21 -0
  34. package/pnpm-patches/expo@55.0.6.patch +235 -0
  35. package/pnpm-patches/metro-file-map@0.83.3.patch +24 -0
  36. package/pnpm-patches/metro-runtime@0.83.3.patch +13 -0
  37. package/pnpm-patches/react-native-css-interop@0.2.6.patch +12 -0
  38. package/pnpm-patches/react-native-reanimated@4.2.1.patch +53 -0
  39. package/pnpm-patches/react-native-worklets@0.7.2.patch +91 -0
  40. package/pnpm-patches/react-native@0.83.2.patch +384 -0
  41. package/pnpmfile.cjs +168 -0
  42. package/dist/stubs/preview-control.js +0 -60
package/dist/metro.js CHANGED
@@ -43,6 +43,7 @@ __export(metro_exports, {
43
43
  withExpoHapticsStub: () => withExpoHapticsStub,
44
44
  withExpoImagePickerStub: () => withExpoImagePickerStub,
45
45
  withExpoMediaLibraryStub: () => withExpoMediaLibraryStub,
46
+ withExpoNativeWechatStub: () => withExpoNativeWechatStub,
46
47
  withExpoNotificationsStub: () => withExpoNotificationsStub,
47
48
  withLucideResolver: () => withLucideResolver,
48
49
  withNativeWind: () => withNativeWind,
@@ -133,12 +134,24 @@ function withDevStubs(config) {
133
134
  var import_path3 = __toESM(require("path"));
134
135
  var EXPO_ROUTER_ENTRY_STUB_FILENAME = "expo-router-entry-stub.js";
135
136
  var EXPO_ROUTER_ENTRY_STUB_PATH = import_path3.default.resolve(__dirname, "stubs", EXPO_ROUTER_ENTRY_STUB_FILENAME);
137
+ var EXPO_ROUTER_ENTRY_NATIVE_STUB_FILENAME = "expo-router-entry-native-stub.js";
138
+ var EXPO_ROUTER_ENTRY_NATIVE_STUB_PATH = import_path3.default.resolve(__dirname, "stubs", EXPO_ROUTER_ENTRY_NATIVE_STUB_FILENAME);
136
139
  function withEntryInjection(config, options) {
137
140
  void options;
138
141
  const upstream = config.resolver?.resolveRequest ?? null;
139
142
  const resolveRequest = (context, moduleName, platform) => {
140
- if (__DEV__ && moduleName === "expo-router/entry-classic" && platform === "web" && !context.originModulePath.includes(EXPO_ROUTER_ENTRY_STUB_FILENAME)) {
141
- return { filePath: EXPO_ROUTER_ENTRY_STUB_PATH, type: "sourceFile" };
143
+ if (__DEV__ && moduleName === "expo-router/entry-classic") {
144
+ const isWebStub = context.originModulePath.includes(EXPO_ROUTER_ENTRY_STUB_FILENAME);
145
+ const isNativeStub = context.originModulePath.includes(EXPO_ROUTER_ENTRY_NATIVE_STUB_FILENAME);
146
+ if (isWebStub || isNativeStub) {
147
+ return upstream ? upstream(context, moduleName, platform) : context.resolveRequest(context, moduleName, platform);
148
+ }
149
+ if (platform === "web") {
150
+ return { filePath: EXPO_ROUTER_ENTRY_STUB_PATH, type: "sourceFile" };
151
+ }
152
+ if (platform === "ios" || platform === "android") {
153
+ return { filePath: EXPO_ROUTER_ENTRY_NATIVE_STUB_PATH, type: "sourceFile" };
154
+ }
142
155
  }
143
156
  if (upstream) {
144
157
  return upstream(context, moduleName, platform);
@@ -306,7 +319,7 @@ function withCssInterop(config) {
306
319
  }
307
320
 
308
321
  // src/metro/withDevkit.ts
309
- var import_path15 = __toESM(require("path"));
322
+ var import_path16 = __toESM(require("path"));
310
323
 
311
324
  // src/metro/withEsbuildMinify.ts
312
325
  function withEsbuildMinify(config) {
@@ -425,12 +438,28 @@ function withExpoCalendarStub(config) {
425
438
  return { ...config, resolver: { ...config.resolver, resolveRequest } };
426
439
  }
427
440
 
428
- // src/metro/withExpoFileSystemStub.ts
441
+ // src/metro/withExpoNativeWechatStub.ts
429
442
  var import_path11 = __toESM(require("path"));
443
+ var EXPO_NATIVE_WECHAT_STUB_FILENAME = "expo-native-wechat-stub.js";
444
+ var EXPO_NATIVE_WECHAT_STUB_PATH = import_path11.default.resolve(__dirname, "stubs", EXPO_NATIVE_WECHAT_STUB_FILENAME);
445
+ function withExpoNativeWechatStub(config) {
446
+ const upstream = config.resolver?.resolveRequest ?? null;
447
+ const resolveRequest = (context, moduleName, platform) => {
448
+ if (moduleName === "expo-native-wechat" && !context.originModulePath.includes(EXPO_NATIVE_WECHAT_STUB_FILENAME)) {
449
+ return { filePath: EXPO_NATIVE_WECHAT_STUB_PATH, type: "sourceFile" };
450
+ }
451
+ if (upstream) return upstream(context, moduleName, platform);
452
+ return context.resolveRequest(context, moduleName, platform);
453
+ };
454
+ return { ...config, resolver: { ...config.resolver, resolveRequest } };
455
+ }
456
+
457
+ // src/metro/withExpoFileSystemStub.ts
458
+ var import_path12 = __toESM(require("path"));
430
459
  var LEGACY_STUB_FILENAME = "expo-file-system-stub.js";
431
- var LEGACY_STUB_PATH = import_path11.default.resolve(__dirname, "stubs", LEGACY_STUB_FILENAME);
460
+ var LEGACY_STUB_PATH = import_path12.default.resolve(__dirname, "stubs", LEGACY_STUB_FILENAME);
432
461
  var NEXT_STUB_FILENAME = "expo-file-system-next-stub.js";
433
- var NEXT_STUB_PATH = import_path11.default.resolve(__dirname, "stubs", NEXT_STUB_FILENAME);
462
+ var NEXT_STUB_PATH = import_path12.default.resolve(__dirname, "stubs", NEXT_STUB_FILENAME);
434
463
  function withExpoFileSystemStub(config) {
435
464
  const upstream = config.resolver?.resolveRequest ?? null;
436
465
  const resolveRequest = (context, moduleName, platform) => {
@@ -447,9 +476,9 @@ function withExpoFileSystemStub(config) {
447
476
  }
448
477
 
449
478
  // src/metro/withExpoImagePickerStub.ts
450
- var import_path12 = __toESM(require("path"));
479
+ var import_path13 = __toESM(require("path"));
451
480
  var EXPO_IMAGE_PICKER_STUB_FILENAME = "expo-image-picker-stub.js";
452
- var EXPO_IMAGE_PICKER_STUB_PATH = import_path12.default.resolve(
481
+ var EXPO_IMAGE_PICKER_STUB_PATH = import_path13.default.resolve(
453
482
  __dirname,
454
483
  "stubs",
455
484
  EXPO_IMAGE_PICKER_STUB_FILENAME
@@ -467,9 +496,9 @@ function withExpoImagePickerStub(config) {
467
496
  }
468
497
 
469
498
  // src/metro/withExpoCameraRecordStub.ts
470
- var import_path13 = __toESM(require("path"));
499
+ var import_path14 = __toESM(require("path"));
471
500
  var EXPO_CAMERA_RECORD_STUB_FILENAME2 = "expo-camera-record-stub.js";
472
- var EXPO_CAMERA_RECORD_STUB_PATH = import_path13.default.resolve(
501
+ var EXPO_CAMERA_RECORD_STUB_PATH = import_path14.default.resolve(
473
502
  __dirname,
474
503
  "stubs",
475
504
  EXPO_CAMERA_RECORD_STUB_FILENAME2
@@ -585,7 +614,7 @@ function withTransformLogger(config) {
585
614
 
586
615
  // src/metro/withPersistentCache.ts
587
616
  var import_node_fs2 = __toESM(require("fs"));
588
- var import_path14 = __toESM(require("path"));
617
+ var import_path15 = __toESM(require("path"));
589
618
  var import_metro_cache = require("metro-cache");
590
619
  function withPersistentCache(config, options = {}) {
591
620
  const projectRoot = config.projectRoot ?? process.cwd();
@@ -595,9 +624,9 @@ function withPersistentCache(config, options = {}) {
595
624
  if (envCacheDir) {
596
625
  cacheRoot = envCacheDir;
597
626
  } else if (cacheDir) {
598
- cacheRoot = import_path14.default.isAbsolute(cacheDir) ? cacheDir : import_path14.default.join(projectRoot, cacheDir);
627
+ cacheRoot = import_path15.default.isAbsolute(cacheDir) ? cacheDir : import_path15.default.join(projectRoot, cacheDir);
599
628
  } else {
600
- cacheRoot = import_path14.default.join(projectRoot, ".metro-cache");
629
+ cacheRoot = import_path15.default.join(projectRoot, ".metro-cache");
601
630
  }
602
631
  const existingStores = config.cacheStores;
603
632
  const firstStore = Array.isArray(existingStores) ? existingStores[0] : void 0;
@@ -644,21 +673,22 @@ function withDevkit(config, options = {}) {
644
673
  config = withExpoNotificationsStub(config);
645
674
  config = withExpoMediaLibraryStub(config);
646
675
  config = withExpoCalendarStub(config);
676
+ config = withExpoNativeWechatStub(config);
647
677
  config = withExpoFileSystemStub(config);
648
678
  config = withExpoImagePickerStub(config);
649
679
  config = withExpoCameraRecordStub(config);
650
680
  if (typeof __DEV__ !== "undefined" && __DEV__) {
651
681
  config = withEntryInjection(config);
652
682
  config = withDevStubs(config);
653
- config = withRouteEndpoint(config, { appDir: import_path15.default.join(projectRoot, "src", "app") });
683
+ config = withRouteEndpoint(config, { appDir: import_path16.default.join(projectRoot, "src", "app") });
654
684
  }
655
685
  return withNativeWind(config, { input, inlineRem: 16 });
656
686
  }
657
687
 
658
688
  // src/metro/withExpoHapticsStub.ts
659
- var import_path16 = __toESM(require("path"));
689
+ var import_path17 = __toESM(require("path"));
660
690
  var EXPO_HAPTICS_STUB_FILENAME = "expo-haptics-stub.js";
661
- var EXPO_HAPTICS_STUB_PATH = import_path16.default.resolve(__dirname, "stubs", EXPO_HAPTICS_STUB_FILENAME);
691
+ var EXPO_HAPTICS_STUB_PATH = import_path17.default.resolve(__dirname, "stubs", EXPO_HAPTICS_STUB_FILENAME);
662
692
  function withExpoHapticsStub(config) {
663
693
  const upstream = config.resolver?.resolveRequest ?? null;
664
694
  const resolveRequest = (context, moduleName, platform) => {
@@ -672,9 +702,9 @@ function withExpoHapticsStub(config) {
672
702
  }
673
703
 
674
704
  // src/metro/withExpoContactsStub.ts
675
- var import_path17 = __toESM(require("path"));
705
+ var import_path18 = __toESM(require("path"));
676
706
  var EXPO_CONTACTS_STUB_FILENAME = "expo-contacts-stub.js";
677
- var EXPO_CONTACTS_STUB_PATH = import_path17.default.resolve(
707
+ var EXPO_CONTACTS_STUB_PATH = import_path18.default.resolve(
678
708
  __dirname,
679
709
  "stubs",
680
710
  EXPO_CONTACTS_STUB_FILENAME
@@ -713,6 +743,7 @@ try {
713
743
  withExpoHapticsStub,
714
744
  withExpoImagePickerStub,
715
745
  withExpoMediaLibraryStub,
746
+ withExpoNativeWechatStub,
716
747
  withExpoNotificationsStub,
717
748
  withLucideResolver,
718
749
  withNativeWind,
package/dist/metro.mjs CHANGED
@@ -84,12 +84,24 @@ function withDevStubs(config) {
84
84
  import path3 from "path";
85
85
  var EXPO_ROUTER_ENTRY_STUB_FILENAME = "expo-router-entry-stub.js";
86
86
  var EXPO_ROUTER_ENTRY_STUB_PATH = path3.resolve(__dirname, "stubs", EXPO_ROUTER_ENTRY_STUB_FILENAME);
87
+ var EXPO_ROUTER_ENTRY_NATIVE_STUB_FILENAME = "expo-router-entry-native-stub.js";
88
+ var EXPO_ROUTER_ENTRY_NATIVE_STUB_PATH = path3.resolve(__dirname, "stubs", EXPO_ROUTER_ENTRY_NATIVE_STUB_FILENAME);
87
89
  function withEntryInjection(config, options) {
88
90
  void options;
89
91
  const upstream = config.resolver?.resolveRequest ?? null;
90
92
  const resolveRequest = (context, moduleName, platform) => {
91
- if (__DEV__ && moduleName === "expo-router/entry-classic" && platform === "web" && !context.originModulePath.includes(EXPO_ROUTER_ENTRY_STUB_FILENAME)) {
92
- return { filePath: EXPO_ROUTER_ENTRY_STUB_PATH, type: "sourceFile" };
93
+ if (__DEV__ && moduleName === "expo-router/entry-classic") {
94
+ const isWebStub = context.originModulePath.includes(EXPO_ROUTER_ENTRY_STUB_FILENAME);
95
+ const isNativeStub = context.originModulePath.includes(EXPO_ROUTER_ENTRY_NATIVE_STUB_FILENAME);
96
+ if (isWebStub || isNativeStub) {
97
+ return upstream ? upstream(context, moduleName, platform) : context.resolveRequest(context, moduleName, platform);
98
+ }
99
+ if (platform === "web") {
100
+ return { filePath: EXPO_ROUTER_ENTRY_STUB_PATH, type: "sourceFile" };
101
+ }
102
+ if (platform === "ios" || platform === "android") {
103
+ return { filePath: EXPO_ROUTER_ENTRY_NATIVE_STUB_PATH, type: "sourceFile" };
104
+ }
93
105
  }
94
106
  if (upstream) {
95
107
  return upstream(context, moduleName, platform);
@@ -257,7 +269,7 @@ function withCssInterop(config) {
257
269
  }
258
270
 
259
271
  // src/metro/withDevkit.ts
260
- import path16 from "path";
272
+ import path17 from "path";
261
273
 
262
274
  // src/metro/withEsbuildMinify.ts
263
275
  function withEsbuildMinify(config) {
@@ -376,12 +388,28 @@ function withExpoCalendarStub(config) {
376
388
  return { ...config, resolver: { ...config.resolver, resolveRequest } };
377
389
  }
378
390
 
379
- // src/metro/withExpoFileSystemStub.ts
391
+ // src/metro/withExpoNativeWechatStub.ts
380
392
  import path11 from "path";
393
+ var EXPO_NATIVE_WECHAT_STUB_FILENAME = "expo-native-wechat-stub.js";
394
+ var EXPO_NATIVE_WECHAT_STUB_PATH = path11.resolve(__dirname, "stubs", EXPO_NATIVE_WECHAT_STUB_FILENAME);
395
+ function withExpoNativeWechatStub(config) {
396
+ const upstream = config.resolver?.resolveRequest ?? null;
397
+ const resolveRequest = (context, moduleName, platform) => {
398
+ if (moduleName === "expo-native-wechat" && !context.originModulePath.includes(EXPO_NATIVE_WECHAT_STUB_FILENAME)) {
399
+ return { filePath: EXPO_NATIVE_WECHAT_STUB_PATH, type: "sourceFile" };
400
+ }
401
+ if (upstream) return upstream(context, moduleName, platform);
402
+ return context.resolveRequest(context, moduleName, platform);
403
+ };
404
+ return { ...config, resolver: { ...config.resolver, resolveRequest } };
405
+ }
406
+
407
+ // src/metro/withExpoFileSystemStub.ts
408
+ import path12 from "path";
381
409
  var LEGACY_STUB_FILENAME = "expo-file-system-stub.js";
382
- var LEGACY_STUB_PATH = path11.resolve(__dirname, "stubs", LEGACY_STUB_FILENAME);
410
+ var LEGACY_STUB_PATH = path12.resolve(__dirname, "stubs", LEGACY_STUB_FILENAME);
383
411
  var NEXT_STUB_FILENAME = "expo-file-system-next-stub.js";
384
- var NEXT_STUB_PATH = path11.resolve(__dirname, "stubs", NEXT_STUB_FILENAME);
412
+ var NEXT_STUB_PATH = path12.resolve(__dirname, "stubs", NEXT_STUB_FILENAME);
385
413
  function withExpoFileSystemStub(config) {
386
414
  const upstream = config.resolver?.resolveRequest ?? null;
387
415
  const resolveRequest = (context, moduleName, platform) => {
@@ -398,9 +426,9 @@ function withExpoFileSystemStub(config) {
398
426
  }
399
427
 
400
428
  // src/metro/withExpoImagePickerStub.ts
401
- import path12 from "path";
429
+ import path13 from "path";
402
430
  var EXPO_IMAGE_PICKER_STUB_FILENAME = "expo-image-picker-stub.js";
403
- var EXPO_IMAGE_PICKER_STUB_PATH = path12.resolve(
431
+ var EXPO_IMAGE_PICKER_STUB_PATH = path13.resolve(
404
432
  __dirname,
405
433
  "stubs",
406
434
  EXPO_IMAGE_PICKER_STUB_FILENAME
@@ -418,9 +446,9 @@ function withExpoImagePickerStub(config) {
418
446
  }
419
447
 
420
448
  // src/metro/withExpoCameraRecordStub.ts
421
- import path13 from "path";
449
+ import path14 from "path";
422
450
  var EXPO_CAMERA_RECORD_STUB_FILENAME2 = "expo-camera-record-stub.js";
423
- var EXPO_CAMERA_RECORD_STUB_PATH = path13.resolve(
451
+ var EXPO_CAMERA_RECORD_STUB_PATH = path14.resolve(
424
452
  __dirname,
425
453
  "stubs",
426
454
  EXPO_CAMERA_RECORD_STUB_FILENAME2
@@ -453,11 +481,11 @@ function withWasmSupport(config) {
453
481
 
454
482
  // src/metro/withTransformLogger.ts
455
483
  import fs4 from "fs";
456
- import path14 from "path";
484
+ import path15 from "path";
457
485
  import { Logger } from "metro-core";
458
486
  var currentMissCount = 0;
459
487
  function installPerfLogger(logFile, existingFactory) {
460
- const dir = path14.dirname(logFile);
488
+ const dir = path15.dirname(logFile);
461
489
  if (!fs4.existsSync(dir)) {
462
490
  fs4.mkdirSync(dir, { recursive: true });
463
491
  }
@@ -536,7 +564,7 @@ function withTransformLogger(config) {
536
564
 
537
565
  // src/metro/withPersistentCache.ts
538
566
  import fs5 from "fs";
539
- import path15 from "path";
567
+ import path16 from "path";
540
568
  import { FileStore } from "metro-cache";
541
569
  function withPersistentCache(config, options = {}) {
542
570
  const projectRoot = config.projectRoot ?? process.cwd();
@@ -546,9 +574,9 @@ function withPersistentCache(config, options = {}) {
546
574
  if (envCacheDir) {
547
575
  cacheRoot = envCacheDir;
548
576
  } else if (cacheDir) {
549
- cacheRoot = path15.isAbsolute(cacheDir) ? cacheDir : path15.join(projectRoot, cacheDir);
577
+ cacheRoot = path16.isAbsolute(cacheDir) ? cacheDir : path16.join(projectRoot, cacheDir);
550
578
  } else {
551
- cacheRoot = path15.join(projectRoot, ".metro-cache");
579
+ cacheRoot = path16.join(projectRoot, ".metro-cache");
552
580
  }
553
581
  const existingStores = config.cacheStores;
554
582
  const firstStore = Array.isArray(existingStores) ? existingStores[0] : void 0;
@@ -595,21 +623,22 @@ function withDevkit(config, options = {}) {
595
623
  config = withExpoNotificationsStub(config);
596
624
  config = withExpoMediaLibraryStub(config);
597
625
  config = withExpoCalendarStub(config);
626
+ config = withExpoNativeWechatStub(config);
598
627
  config = withExpoFileSystemStub(config);
599
628
  config = withExpoImagePickerStub(config);
600
629
  config = withExpoCameraRecordStub(config);
601
630
  if (typeof __DEV__ !== "undefined" && __DEV__) {
602
631
  config = withEntryInjection(config);
603
632
  config = withDevStubs(config);
604
- config = withRouteEndpoint(config, { appDir: path16.join(projectRoot, "src", "app") });
633
+ config = withRouteEndpoint(config, { appDir: path17.join(projectRoot, "src", "app") });
605
634
  }
606
635
  return withNativeWind(config, { input, inlineRem: 16 });
607
636
  }
608
637
 
609
638
  // src/metro/withExpoHapticsStub.ts
610
- import path17 from "path";
639
+ import path18 from "path";
611
640
  var EXPO_HAPTICS_STUB_FILENAME = "expo-haptics-stub.js";
612
- var EXPO_HAPTICS_STUB_PATH = path17.resolve(__dirname, "stubs", EXPO_HAPTICS_STUB_FILENAME);
641
+ var EXPO_HAPTICS_STUB_PATH = path18.resolve(__dirname, "stubs", EXPO_HAPTICS_STUB_FILENAME);
613
642
  function withExpoHapticsStub(config) {
614
643
  const upstream = config.resolver?.resolveRequest ?? null;
615
644
  const resolveRequest = (context, moduleName, platform) => {
@@ -623,9 +652,9 @@ function withExpoHapticsStub(config) {
623
652
  }
624
653
 
625
654
  // src/metro/withExpoContactsStub.ts
626
- import path18 from "path";
655
+ import path19 from "path";
627
656
  var EXPO_CONTACTS_STUB_FILENAME = "expo-contacts-stub.js";
628
- var EXPO_CONTACTS_STUB_PATH = path18.resolve(
657
+ var EXPO_CONTACTS_STUB_PATH = path19.resolve(
629
658
  __dirname,
630
659
  "stubs",
631
660
  EXPO_CONTACTS_STUB_FILENAME
@@ -663,6 +692,7 @@ export {
663
692
  withExpoHapticsStub,
664
693
  withExpoImagePickerStub,
665
694
  withExpoMediaLibraryStub,
695
+ withExpoNativeWechatStub,
666
696
  withExpoNotificationsStub,
667
697
  withLucideResolver,
668
698
  withNativeWind,