lucy-cli 2.0.0-beta.4 → 2.0.0-beta.6

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 (162) hide show
  1. package/dist/commands/checks.d.ts +2 -2
  2. package/dist/commands/exec.d.ts +1 -1
  3. package/dist/commands/git.d.ts +2 -2
  4. package/dist/commands/home.d.ts +2 -2
  5. package/dist/commands/home.js +25 -2
  6. package/dist/commands/home.js.map +1 -1
  7. package/dist/index.js +0 -0
  8. package/dist/init/blocks.d.ts +1 -1
  9. package/dist/init/cargo.d.ts +1 -1
  10. package/dist/init/expo.d.ts +1 -1
  11. package/dist/init/gitModules.d.ts +1 -1
  12. package/dist/init/index.d.ts +1 -2
  13. package/dist/init/monorepo.d.ts +1 -1
  14. package/dist/init/prepareVelo.d.ts +1 -1
  15. package/dist/init/tauri.d.ts +1 -1
  16. package/dist/init/templates.d.ts +1 -1
  17. package/dist/init/velo.d.ts +1 -1
  18. package/dist/tasks/index.d.ts +1 -1
  19. package/dist/wix-sdk/index.d.ts +1 -1
  20. package/dist/wix-sdk/init.d.ts +1 -1
  21. package/dist/wix-sdk/run.d.ts +1 -1
  22. package/dist/wix-sync/index.d.ts +1 -1
  23. package/dist/wix-sync/init.d.ts +1 -1
  24. package/files/templates/expo verse[D]/files/.nvmrc +1 -0
  25. package/files/templates/expo verse[D]/files/.prettierignore +23 -0
  26. package/files/templates/expo verse[D]/files/.prettierrc.js +16 -0
  27. package/files/templates/expo verse[D]/files/.stylelintrc.json +8 -0
  28. package/files/templates/expo verse[D]/files/.vscode/extensions.json +10 -0
  29. package/files/templates/expo verse[D]/files/.vscode/launch.json +54 -0
  30. package/files/templates/expo verse[D]/files/.vscode/settings.json +30 -0
  31. package/files/templates/expo verse[D]/files/.vscode/tasks.json +0 -0
  32. package/files/templates/expo verse[D]/files/.yarnrc +1 -0
  33. package/files/templates/expo verse[D]/files/.yarnrc.yml +8 -0
  34. package/files/templates/expo verse[D]/files/App.tsx +63 -0
  35. package/files/templates/expo verse[D]/files/DEBUGGING.md +126 -0
  36. package/files/templates/expo verse[D]/files/README.md +45 -0
  37. package/files/templates/expo verse[D]/files/android/app/build.gradle +177 -0
  38. package/files/templates/expo verse[D]/files/android/app/debug.keystore +0 -0
  39. package/files/templates/expo verse[D]/files/android/app/proguard-rules.pro +14 -0
  40. package/files/templates/expo verse[D]/files/android/app/src/debug/AndroidManifest.xml +7 -0
  41. package/files/templates/expo verse[D]/files/android/app/src/main/AndroidManifest.xml +33 -0
  42. package/files/templates/expo verse[D]/files/android/app/src/main/java/so/sunnysideup/daily_verse/MainActivity.kt +65 -0
  43. package/files/templates/expo verse[D]/files/android/app/src/main/java/so/sunnysideup/daily_verse/MainApplication.kt +57 -0
  44. package/files/templates/expo verse[D]/files/android/app/src/main/res/drawable/ic_launcher_background.xml +6 -0
  45. package/files/templates/expo verse[D]/files/android/app/src/main/res/drawable/rn_edit_text_material.xml +37 -0
  46. package/files/templates/expo verse[D]/files/android/app/src/main/res/drawable-hdpi/splashscreen_logo.png +0 -0
  47. package/files/templates/expo verse[D]/files/android/app/src/main/res/drawable-mdpi/splashscreen_logo.png +0 -0
  48. package/files/templates/expo verse[D]/files/android/app/src/main/res/drawable-night-hdpi/splashscreen_logo.png +0 -0
  49. package/files/templates/expo verse[D]/files/android/app/src/main/res/drawable-night-mdpi/splashscreen_logo.png +0 -0
  50. package/files/templates/expo verse[D]/files/android/app/src/main/res/drawable-night-xhdpi/splashscreen_logo.png +0 -0
  51. package/files/templates/expo verse[D]/files/android/app/src/main/res/drawable-night-xxhdpi/splashscreen_logo.png +0 -0
  52. package/files/templates/expo verse[D]/files/android/app/src/main/res/drawable-night-xxxhdpi/splashscreen_logo.png +0 -0
  53. package/files/templates/expo verse[D]/files/android/app/src/main/res/drawable-xhdpi/splashscreen_logo.png +0 -0
  54. package/files/templates/expo verse[D]/files/android/app/src/main/res/drawable-xxhdpi/splashscreen_logo.png +0 -0
  55. package/files/templates/expo verse[D]/files/android/app/src/main/res/drawable-xxxhdpi/splashscreen_logo.png +0 -0
  56. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +6 -0
  57. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +6 -0
  58. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
  59. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp +0 -0
  60. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.webp +0 -0
  61. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
  62. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
  63. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp +0 -0
  64. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.webp +0 -0
  65. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
  66. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
  67. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp +0 -0
  68. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.webp +0 -0
  69. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
  70. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
  71. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp +0 -0
  72. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.webp +0 -0
  73. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
  74. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
  75. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp +0 -0
  76. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.webp +0 -0
  77. package/files/templates/expo verse[D]/files/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
  78. package/files/templates/expo verse[D]/files/android/app/src/main/res/values/colors.xml +6 -0
  79. package/files/templates/expo verse[D]/files/android/app/src/main/res/values/strings.xml +7 -0
  80. package/files/templates/expo verse[D]/files/android/app/src/main/res/values/styles.xml +12 -0
  81. package/files/templates/expo verse[D]/files/android/app/src/main/res/values-night/colors.xml +3 -0
  82. package/files/templates/expo verse[D]/files/android/build.gradle +37 -0
  83. package/files/templates/expo verse[D]/files/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  84. package/files/templates/expo verse[D]/files/android/gradle/wrapper/gradle-wrapper.properties +7 -0
  85. package/files/templates/expo verse[D]/files/android/gradle.properties +59 -0
  86. package/files/templates/expo verse[D]/files/android/gradlew +251 -0
  87. package/files/templates/expo verse[D]/files/android/gradlew.bat +94 -0
  88. package/files/templates/expo verse[D]/files/android/settings.gradle +39 -0
  89. package/files/templates/expo verse[D]/files/app.config.ts +77 -0
  90. package/files/templates/expo verse[D]/files/assets/data/de.csv +949 -0
  91. package/files/templates/expo verse[D]/files/assets/data/en.csv +949 -0
  92. package/files/templates/expo verse[D]/files/assets/fonts/PlayfairDisplay-Black.ttf +0 -0
  93. package/files/templates/expo verse[D]/files/assets/fonts/PlayfairDisplay-BlackItalic.ttf +0 -0
  94. package/files/templates/expo verse[D]/files/assets/fonts/PlayfairDisplay-Bold.ttf +0 -0
  95. package/files/templates/expo verse[D]/files/assets/fonts/PlayfairDisplay-BoldItalic.ttf +0 -0
  96. package/files/templates/expo verse[D]/files/assets/fonts/PlayfairDisplay-ExtraBold.ttf +0 -0
  97. package/files/templates/expo verse[D]/files/assets/fonts/PlayfairDisplay-ExtraBoldItalic.ttf +0 -0
  98. package/files/templates/expo verse[D]/files/assets/fonts/PlayfairDisplay-Italic.ttf +0 -0
  99. package/files/templates/expo verse[D]/files/assets/fonts/PlayfairDisplay-Medium.ttf +0 -0
  100. package/files/templates/expo verse[D]/files/assets/fonts/PlayfairDisplay-MediumItalic.ttf +0 -0
  101. package/files/templates/expo verse[D]/files/assets/fonts/PlayfairDisplay-Regular.ttf +0 -0
  102. package/files/templates/expo verse[D]/files/assets/fonts/PlayfairDisplay-SemiBold.ttf +0 -0
  103. package/files/templates/expo verse[D]/files/assets/fonts/PlayfairDisplay-SemiBoldItalic.ttf +0 -0
  104. package/files/templates/expo verse[D]/files/assets/fonts/SpaceMono-Regular.ttf +0 -0
  105. package/files/templates/expo verse[D]/files/assets/images/andorid/background.png +0 -0
  106. package/files/templates/expo verse[D]/files/assets/images/android-dark.png +0 -0
  107. package/files/templates/expo verse[D]/files/assets/images/android-light.png +0 -0
  108. package/files/templates/expo verse[D]/files/assets/images/background.png +0 -0
  109. package/files/templates/expo verse[D]/files/assets/images/ios-dark.png +0 -0
  110. package/files/templates/expo verse[D]/files/assets/images/ios-light.png +0 -0
  111. package/files/templates/expo verse[D]/files/assets/images/ios-tinted.png +0 -0
  112. package/files/templates/expo verse[D]/files/assets/images/splash-icon-dark.png +0 -0
  113. package/files/templates/expo verse[D]/files/assets/images/splash-icon-light.png +0 -0
  114. package/files/templates/expo verse[D]/files/babel.config.js +10 -0
  115. package/files/templates/expo verse[D]/files/components/.gitkeep +0 -0
  116. package/files/templates/expo verse[D]/files/components/MainScreen.tsx +299 -0
  117. package/files/templates/expo verse[D]/files/components/Share.tsx +132 -0
  118. package/files/templates/expo verse[D]/files/components/ui/.gitkeep +0 -0
  119. package/files/templates/expo verse[D]/files/components/ui/dev.tsx +48 -0
  120. package/files/templates/expo verse[D]/files/constants/config.ts +30 -0
  121. package/files/templates/expo verse[D]/files/constants/theme.ts +18 -0
  122. package/files/templates/expo verse[D]/files/data/de.csv +219 -0
  123. package/files/templates/expo verse[D]/files/data/en.csv +219 -0
  124. package/files/templates/expo verse[D]/files/data/version.json +4 -0
  125. package/files/templates/expo verse[D]/files/eas.json +47 -0
  126. package/files/templates/expo verse[D]/files/eslint.config.mjs +185 -0
  127. package/files/templates/expo verse[D]/files/global.css +47 -0
  128. package/files/templates/expo verse[D]/files/hooks/useColorScheme.ts +17 -0
  129. package/files/templates/expo verse[D]/files/index.ts +28 -0
  130. package/files/templates/expo verse[D]/files/lib/content.ts +31 -0
  131. package/files/templates/expo verse[D]/files/lib/data.ts +180 -0
  132. package/files/templates/expo verse[D]/files/lib/helper.ts +54 -0
  133. package/files/templates/expo verse[D]/files/lib/index.ts +21 -0
  134. package/files/templates/expo verse[D]/files/lib/state.ts +128 -0
  135. package/files/templates/expo verse[D]/files/lib/storage.ts +17 -0
  136. package/files/templates/expo verse[D]/files/lib/taskManager/index.ts +38 -0
  137. package/files/templates/expo verse[D]/files/lib/taskManager/loadData.ts +14 -0
  138. package/files/templates/expo verse[D]/files/lib/utils/index.ts +11 -0
  139. package/files/templates/expo verse[D]/files/lib/utils/polyfills.ts +29 -0
  140. package/files/templates/expo verse[D]/files/lib/utils/screenshot.ts +77 -0
  141. package/files/templates/expo verse[D]/files/lucy.json +8 -0
  142. package/files/templates/expo verse[D]/files/metro.config.js +81 -0
  143. package/files/templates/expo verse[D]/files/models/index.ts +28 -0
  144. package/files/templates/expo verse[D]/files/nativewind-env.d.ts +1 -0
  145. package/files/templates/expo verse[D]/files/package.json +102 -0
  146. package/files/templates/expo verse[D]/files/pnpm-workspace.yaml +3 -0
  147. package/files/templates/expo verse[D]/files/scripts/convert-verses.ts +309 -0
  148. package/files/templates/expo verse[D]/files/scripts/move-artifacts.ts +83 -0
  149. package/files/templates/expo verse[D]/files/scripts/reset-project.ts +116 -0
  150. package/files/templates/expo verse[D]/files/tailwind.config.js +63 -0
  151. package/files/templates/expo verse[D]/files/tsconfig.json +45 -0
  152. package/files/templates/expo verse[D]/files/types/index.ts +4 -0
  153. package/files/templates/expo verse[D]/files/types/reset.d.ts +1 -0
  154. package/files/templates/expo verse[D]/lucy.json +86 -0
  155. package/files/templates/expo[D]/files/app.config.ts +69 -0
  156. package/files/templates/expo[D]/files/assets/fonts/SpaceMono-Regular.ttf +0 -0
  157. package/files/templates/expo[D]/files/scripts/reset-project.ts +0 -0
  158. package/old/index.ts +0 -0
  159. package/package.json +11 -12
  160. package/pnpm-workspace.yaml +6 -0
  161. package/src/commands/home.ts +36 -2
  162. package/src/index.ts +0 -0
@@ -3,5 +3,5 @@ import { FileSystem, Path } from "@effect/platform";
3
3
  import { Config } from "../config.js";
4
4
  import { AppError } from "../error.js";
5
5
  export declare const isDirectoryClean: (excludes?: string[]) => Effect.Effect<boolean, import("@effect/platform/Error").PlatformError, Config | FileSystem.FileSystem>;
6
- export declare const checkForDirty: (excludes?: string[]) => Effect.Effect<void, AppError | import("@effect/platform/Error").PlatformError, Config | FileSystem.FileSystem>;
7
- export declare const checkForVelo: () => Effect.Effect<undefined, AppError | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError, Config | FileSystem.FileSystem | Path.Path>;
6
+ export declare const checkForDirty: (excludes?: string[]) => Effect.Effect<void, import("@effect/platform/Error").PlatformError | AppError, Config | FileSystem.FileSystem>;
7
+ export declare const checkForVelo: () => Effect.Effect<undefined, import("@effect/platform/Error").PlatformError | AppError | import("effect/ParseResult").ParseError, Config | FileSystem.FileSystem | Path.Path>;
@@ -4,4 +4,4 @@ import { FileSystem } from "@effect/platform";
4
4
  import { AppError } from "../error.js";
5
5
  export declare const execCommand: Effect.Effect<void, import("@effect/platform/Error").PlatformError, Config | import("@effect/platform/CommandExecutor").CommandExecutor>;
6
6
  export declare const open: Effect.Effect<void, import("@effect/platform/Error").PlatformError, Config | FileSystem.FileSystem | import("@effect/platform/CommandExecutor").CommandExecutor>;
7
- export declare const openEditor: Effect.Effect<void, AppError | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError, Config | import("@effect/platform/CommandExecutor").CommandExecutor>;
7
+ export declare const openEditor: Effect.Effect<void, import("@effect/platform/Error").PlatformError | AppError | import("effect/ParseResult").ParseError, Config | import("@effect/platform/CommandExecutor").CommandExecutor>;
@@ -4,5 +4,5 @@ import { Config } from '../config.js';
4
4
  import { AppError } from '../error.js';
5
5
  import { FileSystem, Path } from "@effect/platform";
6
6
  export declare const isSubmoduleRegistered: (git: SimpleGit, submoduleName: string) => Effect.Effect<boolean, AppError, never>;
7
- export declare const gitInit: (update?: boolean) => Effect.Effect<void, AppError | import("@effect/platform/Error").PlatformError, Config | FileSystem.FileSystem | Path.Path>;
8
- export declare const initSubmodules: (update?: boolean) => Effect.Effect<void, AppError | import("@effect/platform/Error").PlatformError, Config | FileSystem.FileSystem | Path.Path>;
7
+ export declare const gitInit: (update?: boolean) => Effect.Effect<void, import("@effect/platform/Error").PlatformError | AppError, Config | FileSystem.FileSystem | Path.Path>;
8
+ export declare const initSubmodules: (update?: boolean) => Effect.Effect<void, import("@effect/platform/Error").PlatformError | AppError, Config | FileSystem.FileSystem | Path.Path>;
@@ -1,4 +1,4 @@
1
1
  import { Effect } from "effect/index";
2
2
  import { Config } from "../config.js";
3
- import { FileSystem } from "@effect/platform";
4
- export declare const createLucyHome: () => Effect.Effect<void, import("@effect/platform/Error").PlatformError, Config | FileSystem.FileSystem>;
3
+ import { FileSystem, Path } from "@effect/platform";
4
+ export declare const createLucyHome: () => Effect.Effect<void, any, Config | FileSystem.FileSystem | Path.Path>;
@@ -1,18 +1,41 @@
1
1
  import { Effect } from "effect/index";
2
2
  import { Config } from "../config.js";
3
- import { FileSystem } from "@effect/platform";
3
+ import { FileSystem, Path } from "@effect/platform";
4
4
  import { logger, orange } from "../utils/logger.js";
5
5
  import path from 'path';
6
6
  export const createLucyHome = () => {
7
7
  return Effect.gen(function* () {
8
8
  const config = yield* Config;
9
9
  const fs = yield* FileSystem.FileSystem;
10
+ const p = yield* Path.Path;
10
11
  if (!(yield* fs.exists(config.config.lucyHome))) {
11
12
  logger.action(`Creating Lucy home directory at ${orange(config.config.lucyHome)}`);
12
13
  yield* fs.makeDirectory(config.config.lucyHome, { recursive: true });
13
14
  }
14
15
  const templateFiles = yield* fs.readDirectory(config.config.filesFolder);
15
- yield* Effect.forEach(templateFiles, (file) => fs.copy(path.join(config.config.filesFolder, file), path.join(config.config.lucyHome, file), { overwrite: true }));
16
+ const shouldExclude = (relativePath) => {
17
+ const segments = relativePath.split(/[/\\]/);
18
+ return segments.includes("node_modules") || segments.includes("Pods");
19
+ };
20
+ const copyDirFiltered = (src, dest, base) => Effect.gen(function* () {
21
+ const entries = yield* fs.readDirectory(src);
22
+ yield* fs.makeDirectory(dest, { recursive: true });
23
+ yield* Effect.forEach(entries, (entry) => Effect.gen(function* () {
24
+ const from = p.join(src, entry);
25
+ const to = p.join(dest, entry);
26
+ const rel = base ? p.relative(base, from) : entry;
27
+ if (shouldExclude(rel)) {
28
+ return;
29
+ }
30
+ const stat = yield* fs.stat(from);
31
+ if (stat.type === "Directory") {
32
+ yield* copyDirFiltered(from, to, base ?? src);
33
+ return;
34
+ }
35
+ yield* fs.copyFile(from, to);
36
+ }), { discard: true });
37
+ });
38
+ yield* Effect.forEach(templateFiles, (file) => copyDirFiltered(path.join(config.config.filesFolder, file), path.join(config.config.lucyHome, file)), { discard: true });
16
39
  });
17
40
  };
18
41
  //# sourceMappingURL=home.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"home.js","sourceRoot":"","sources":["../../src/commands/home.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,IAAc,MAAM,MAAM,CAAC;AAElC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IAC/B,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACvB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAA;QAC5B,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;QAEvC,IAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,mCAAmC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACnF,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QACxE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CACjB,aAAa,EACb,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAC9H,CAAA;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAA"}
1
+ {"version":3,"file":"home.js","sourceRoot":"","sources":["../../src/commands/home.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
File without changes
@@ -2,4 +2,4 @@ import { Effect } from "effect/index";
2
2
  import { Config } from "../config.js";
3
3
  import { FileSystem, Path } from "@effect/platform";
4
4
  import { AppError } from "../error.js";
5
- export declare const init_blocks: () => Effect.Effect<void, AppError | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError, Config | FileSystem.FileSystem | Path.Path | import("@effect/platform/CommandExecutor").CommandExecutor>;
5
+ export declare const init_blocks: () => Effect.Effect<void, import("@effect/platform/Error").PlatformError | AppError | import("effect/ParseResult").ParseError, Config | FileSystem.FileSystem | import("@effect/platform/CommandExecutor").CommandExecutor | Path.Path>;
@@ -1,2 +1,2 @@
1
1
  import { Effect } from "effect/index";
2
- export declare const init_cargo: () => Effect.Effect<void, import("../error.js").AppError | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError, import("../config.js").Config | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path | import("@effect/platform/CommandExecutor").CommandExecutor>;
2
+ export declare const init_cargo: () => Effect.Effect<void, import("@effect/platform/Error").PlatformError | import("../error.js").AppError | import("effect/ParseResult").ParseError, import("../config.js").Config | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/CommandExecutor").CommandExecutor | import("@effect/platform/Path").Path>;
@@ -2,4 +2,4 @@ import { Effect } from "effect/index";
2
2
  import { Config } from "../config.js";
3
3
  import { FileSystem, Path } from "@effect/platform";
4
4
  import { AppError } from "../error.js";
5
- export declare const init_expo: () => Effect.Effect<void, AppError | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError, Config | FileSystem.FileSystem | Path.Path | import("@effect/platform/CommandExecutor").CommandExecutor>;
5
+ export declare const init_expo: () => Effect.Effect<void, import("@effect/platform/Error").PlatformError | AppError | import("effect/ParseResult").ParseError, Config | FileSystem.FileSystem | import("@effect/platform/CommandExecutor").CommandExecutor | Path.Path>;
@@ -1,2 +1,2 @@
1
1
  import { Effect } from "effect/index";
2
- export declare const init_submodules: () => Effect.Effect<void, import("../error.js").AppError | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError, import("../config.js").Config | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path>;
2
+ export declare const init_submodules: () => Effect.Effect<void, import("@effect/platform/Error").PlatformError | import("../error.js").AppError | import("effect/ParseResult").ParseError, import("../config.js").Config | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path>;
@@ -1,4 +1,3 @@
1
1
  import { Effect } from "effect/index";
2
2
  import { Config } from "../config.js";
3
- import { AppError } from "../error.js";
4
- export declare const init: Effect.Effect<void, AppError | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError, Config | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path | import("@effect/platform/CommandExecutor").CommandExecutor>;
3
+ export declare const init: Effect.Effect<void, any, Config | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/CommandExecutor").CommandExecutor | import("@effect/platform/Path").Path>;
@@ -1,4 +1,4 @@
1
1
  import { Effect } from "effect/index";
2
2
  import { Config } from "../config.js";
3
3
  import { FileSystem, Path } from "@effect/platform";
4
- export declare const init_monorepo: () => Effect.Effect<void, import("../error.js").AppError | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError, Config | FileSystem.FileSystem | Path.Path | import("@effect/platform/CommandExecutor").CommandExecutor>;
4
+ export declare const init_monorepo: () => Effect.Effect<void, import("@effect/platform/Error").PlatformError | import("../error.js").AppError | import("effect/ParseResult").ParseError, Config | FileSystem.FileSystem | import("@effect/platform/CommandExecutor").CommandExecutor | Path.Path>;
@@ -1,2 +1,2 @@
1
1
  import { Effect } from 'effect/index';
2
- export declare const prepareVelo: Effect.Effect<void, import("../error.js").AppError | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError, import("../config.js").Config | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path | import("@effect/platform/CommandExecutor").CommandExecutor>;
2
+ export declare const prepareVelo: Effect.Effect<void, import("@effect/platform/Error").PlatformError | import("../error.js").AppError | import("effect/ParseResult").ParseError, import("../config.js").Config | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/CommandExecutor").CommandExecutor | import("@effect/platform/Path").Path>;
@@ -2,4 +2,4 @@ import { Effect } from "effect/index";
2
2
  import { Config } from "../config.js";
3
3
  import { FileSystem, Path } from "@effect/platform";
4
4
  import { AppError } from "../error.js";
5
- export declare const init_tauri: () => Effect.Effect<void, AppError | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError, Config | FileSystem.FileSystem | Path.Path | import("@effect/platform/CommandExecutor").CommandExecutor>;
5
+ export declare const init_tauri: () => Effect.Effect<void, import("@effect/platform/Error").PlatformError | AppError | import("effect/ParseResult").ParseError, Config | FileSystem.FileSystem | import("@effect/platform/CommandExecutor").CommandExecutor | Path.Path>;
@@ -2,4 +2,4 @@ import { Effect } from "effect/index";
2
2
  import { Config } from "../config.js";
3
3
  import { FileSystem } from "@effect/platform";
4
4
  import { AppError } from "../error.js";
5
- export declare const selectTemplate: () => Effect.Effect<undefined, AppError | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError, Config | FileSystem.FileSystem>;
5
+ export declare const selectTemplate: () => Effect.Effect<undefined, import("@effect/platform/Error").PlatformError | AppError | import("effect/ParseResult").ParseError, Config | FileSystem.FileSystem>;
@@ -2,4 +2,4 @@ import { Effect } from "effect/index";
2
2
  import { Config } from "../config.js";
3
3
  import { FileSystem, Path } from "@effect/platform";
4
4
  import { AppError } from "../error.js";
5
- export declare const init_velo: () => Effect.Effect<void, AppError | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError, Config | FileSystem.FileSystem | Path.Path | import("@effect/platform/CommandExecutor").CommandExecutor>;
5
+ export declare const init_velo: () => Effect.Effect<void, import("@effect/platform/Error").PlatformError | AppError | import("effect/ParseResult").ParseError, Config | FileSystem.FileSystem | import("@effect/platform/CommandExecutor").CommandExecutor | Path.Path>;
@@ -1,4 +1,4 @@
1
1
  import { Effect } from "effect/index";
2
2
  import { Config } from "../config.js";
3
3
  import { AppError } from "../error.js";
4
- export declare const tasks: Effect.Effect<void, AppError | import("@effect/platform/Error").PlatformError, Config | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path>;
4
+ export declare const tasks: Effect.Effect<void, import("@effect/platform/Error").PlatformError | AppError, Config | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path>;
@@ -1,4 +1,4 @@
1
1
  import { Effect } from "effect/index";
2
2
  import { Config } from "../config.js";
3
3
  import { AppError } from "../error.js";
4
- export declare const wix_sdk: Effect.Effect<void, AppError | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError, Config | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path>;
4
+ export declare const wix_sdk: Effect.Effect<void, import("@effect/platform/Error").PlatformError | AppError | import("effect/ParseResult").ParseError, Config | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path>;
@@ -1,4 +1,4 @@
1
1
  import { Effect } from "effect/index";
2
2
  import { Config } from "../config.js";
3
3
  import { AppError } from "../error.js";
4
- export declare const wix_sdk_init: Effect.Effect<void, AppError | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError, Config | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path>;
4
+ export declare const wix_sdk_init: Effect.Effect<void, import("@effect/platform/Error").PlatformError | AppError | import("effect/ParseResult").ParseError, Config | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path>;
@@ -1,4 +1,4 @@
1
1
  import { Effect } from "effect/index";
2
2
  import { Config } from "../config.js";
3
3
  import { AppError } from "../error.js";
4
- export declare const wix_sdk_run: (program: Effect.Effect<never, AppError, never>) => Effect.Effect<void, AppError | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError, Config | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path>;
4
+ export declare const wix_sdk_run: (program: Effect.Effect<never, AppError, never>) => Effect.Effect<void, import("@effect/platform/Error").PlatformError | AppError | import("effect/ParseResult").ParseError, Config | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path>;
@@ -1,4 +1,4 @@
1
1
  import { Effect } from "effect/index";
2
2
  import { Config } from "../config.js";
3
3
  import { AppError } from "../error.js";
4
- export declare const wix_sync: Effect.Effect<void, AppError | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError, Config | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path>;
4
+ export declare const wix_sync: Effect.Effect<void, import("@effect/platform/Error").PlatformError | AppError | import("effect/ParseResult").ParseError, Config | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path>;
@@ -1,4 +1,4 @@
1
1
  import { Effect } from "effect/index";
2
2
  import { Config } from "../config.js";
3
3
  import { AppError } from "../error.js";
4
- export declare const init: Effect.Effect<void, AppError | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError, Config | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path>;
4
+ export declare const init: Effect.Effect<void, import("@effect/platform/Error").PlatformError | AppError | import("effect/ParseResult").ParseError, Config | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path>;
@@ -0,0 +1,23 @@
1
+ # Dependencies
2
+ node_modules/
3
+
4
+ # Build output
5
+ dist
6
+ .next/
7
+ .wix/
8
+ build
9
+ out
10
+
11
+ # Turbo cache
12
+ .turbo
13
+
14
+ # Logs
15
+ *.log
16
+ npm-debug.log*
17
+ yarn-debug.log*
18
+ yarn-error.log*
19
+ pnpm-debug.log*
20
+
21
+ # As per your ESLint config, JS files are not formatted.
22
+ **/*.js
23
+
@@ -0,0 +1,16 @@
1
+ module.exports = {
2
+ printWidth: 80,
3
+ tabWidth: 4,
4
+ useTabs: true,
5
+ singleQuote: true,
6
+ trailingComma: 'all',
7
+ plugins: ['prettier-plugin-tailwindcss'],
8
+ overrides: [
9
+ {
10
+ files: ['**/*.{json,jsonc,json5}', '*.{json,jsonc,json5}'],
11
+ options: {
12
+ useTabs: true
13
+ }
14
+ }
15
+ ]
16
+ };
@@ -0,0 +1,8 @@
1
+ {
2
+ "overrides": [
3
+ {
4
+ "files": ["**/*.{ts,tsx}", "*.{ts,tsx}"],
5
+ "customSyntax": "@stylelint/postcss-css-in-js"
6
+ }
7
+ ]
8
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "recommendations": [
3
+ "expo.vscode-expo-tools",
4
+ "ms-vscode.vscode-typescript-next",
5
+ "esbenp.prettier-vscode",
6
+ "dbaeumer.vscode-eslint",
7
+ "bradlc.vscode-tailwindcss",
8
+ "ms-vscode.vscode-json"
9
+ ]
10
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "version": "0.2.0",
3
+ "configurations": [
4
+ {
5
+ "name": "Debug Expo (Development Build)",
6
+ "type": "expo",
7
+ "request": "attach",
8
+ "projectRoot": "${workspaceFolder}",
9
+ "bundlerPort": "8081",
10
+ "bundlerHost": "127.0.0.1",
11
+ "sourceMaps": true,
12
+ "sourceMapPathOverrides": {
13
+ "webpack:///./*": "${workspaceFolder}/*",
14
+ "webpack:///src/*": "${workspaceFolder}/*",
15
+ "webpack:///*": "*"
16
+ }
17
+ },
18
+ {
19
+ "name": "Debug Expo Web",
20
+ "type": "node",
21
+ "request": "launch",
22
+ "program": "${workspaceFolder}/node_modules/.bin/expo",
23
+ "args": ["start", "--web"],
24
+ "cwd": "${workspaceFolder}",
25
+ "console": "integratedTerminal",
26
+ "sourceMaps": true,
27
+ "skipFiles": ["<node_internals>/**"]
28
+ },
29
+ {
30
+ "name": "Attach to Hermes (React Native Direct)",
31
+ "request": "attach",
32
+ "type": "reactnativedirect",
33
+ "cwd": "${workspaceFolder}",
34
+ "address": "localhost",
35
+ "port": 8082,
36
+ "sourceMaps": true,
37
+ "sourceMapPathOverrides": {
38
+ "webpack:///./*": "${workspaceFolder}/*",
39
+ "webpack:///src/*": "${workspaceFolder}/*"
40
+ }
41
+ },
42
+ {
43
+ "name": "Debug TypeScript Scripts",
44
+ "type": "node",
45
+ "request": "launch",
46
+ "program": "${workspaceFolder}/node_modules/.bin/tsx",
47
+ "args": ["${file}"],
48
+ "cwd": "${workspaceFolder}",
49
+ "console": "integratedTerminal",
50
+ "sourceMaps": true,
51
+ "skipFiles": ["<node_internals>/**"]
52
+ }
53
+ ]
54
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "typescript.preferences.includePackageJsonAutoImports": "on",
3
+ "typescript.suggest.autoImports": true,
4
+ "typescript.updateImportsOnFileMove.enabled": "always",
5
+ "editor.codeActionsOnSave": {
6
+ "source.fixAll.eslint": "explicit"
7
+ },
8
+ "eslint.validate": [
9
+ "javascript",
10
+ "javascriptreact",
11
+ "typescript",
12
+ "typescriptreact"
13
+ ],
14
+ "debug.javascript.usePreview": true,
15
+ "debug.javascript.breakOnConditionalError": true,
16
+ "debug.node.autoAttach": "disabled",
17
+ "debug.terminal.clearBeforeReusing": true,
18
+ "files.exclude": {
19
+ "**/.expo": true,
20
+ "**/.expo-shared": true,
21
+ "**/node_modules": true
22
+ },
23
+ "search.exclude": {
24
+ "**/.expo": true,
25
+ "**/.expo-shared": true,
26
+ "**/node_modules": true,
27
+ "**/build": true,
28
+ "**/dist": true
29
+ }
30
+ }
@@ -0,0 +1 @@
1
+ node-options=--max-old-space-size=16384
@@ -0,0 +1,8 @@
1
+ # compressionLevel: mixed
2
+
3
+ # enableGlobalCache: false
4
+
5
+ nodeLinker: node-modules
6
+
7
+ npmRegistryServer: "https://registry.npmjs.org/"
8
+
@@ -0,0 +1,63 @@
1
+ import { useFonts } from 'expo-font';
2
+ import * as SplashScreen from 'expo-splash-screen';
3
+ import { StatusBar } from 'expo-status-bar';
4
+ import { useEffect, useRef } from 'react';
5
+ import { StyleSheet, View } from 'react-native';
6
+ import { SafeAreaProvider } from 'react-native-safe-area-context';
7
+
8
+ import MainScreen from './components/MainScreen';
9
+ import Dev from './components/ui/dev';
10
+ import { appLoadedResolver } from './lib/taskManager';
11
+
12
+ void SplashScreen.preventAutoHideAsync();
13
+
14
+ /**
15
+ * This is the main entry point for the app.
16
+ * It is used to initialize the app and to hide the splash screen.
17
+ * It also calls the resolver function to indicate that the app has mounted.
18
+ * @returns The main app component.
19
+ */
20
+ export default function App() {
21
+ const [loaded, error] = useFonts({
22
+ 'Playfair-Bold': require('@/assets/fonts/PlayfairDisplay-Bold.ttf'),
23
+ 'Playfair-Regular': require('@/assets/fonts/PlayfairDisplay-Regular.ttf'),
24
+ 'Playfair-Italic': require('@/assets/fonts/PlayfairDisplay-Italic.ttf'),
25
+ });
26
+
27
+ const hasResolvedOnceRef = useRef(false);
28
+
29
+ useEffect(() => {
30
+ if (__DEV__ && appLoadedResolver && !hasResolvedOnceRef.current) {
31
+ hasResolvedOnceRef.current = true;
32
+ appLoadedResolver();
33
+ // eslint-disable-next-line no-console
34
+ console.log('Resolver called');
35
+ }
36
+ if (loaded || error) {
37
+ void SplashScreen.hideAsync();
38
+ }
39
+ }, [loaded, error]);
40
+
41
+ if (!loaded && !error) {
42
+ return null;
43
+ }
44
+
45
+ return (
46
+ <SafeAreaProvider>
47
+ <View style={styles.container}>
48
+ <MainScreen />
49
+ <StatusBar style="auto" />
50
+ <Dev />
51
+ </View>
52
+ </SafeAreaProvider>
53
+ );
54
+ }
55
+
56
+ const styles = StyleSheet.create({
57
+ container: {
58
+ flex: 1,
59
+ backgroundColor: '#fff',
60
+ alignItems: 'center',
61
+ justifyContent: 'center',
62
+ },
63
+ });
@@ -0,0 +1,126 @@
1
+ # TypeScript Debugging Guide for Daily Verse
2
+
3
+ ## Overview
4
+ This guide explains how to properly debug your React Native/Expo TypeScript application using VS Code.
5
+
6
+ ## Prerequisites
7
+ 1. **VS Code Extensions** (install these):
8
+ - Expo Tools (`expo.vscode-expo-tools`)
9
+ - TypeScript and JavaScript Language Features
10
+ - ESLint
11
+ - Prettier
12
+
13
+ 2. **Development Setup**:
14
+ - Ensure you have `expo-dev-client` installed (✅ already in package.json)
15
+ - Source maps are enabled (✅ configured in tsconfig.json and metro.config.js)
16
+
17
+ ## Debugging Configurations
18
+
19
+ ### 1. Debug Expo (Development Build) - **RECOMMENDED**
20
+ **Use this for**: Debugging React Native app on device/simulator
21
+ **Steps**:
22
+ 1. Start Expo development server: `pnpm dev`
23
+ 2. Open your app on device/simulator
24
+ 3. In VS Code: Run & Debug → "Debug Expo (Development Build)"
25
+ 4. Set breakpoints in your TypeScript files
26
+ 5. Interact with your app to hit breakpoints
27
+
28
+ ### 2. Debug Expo Web
29
+ **Use this for**: Debugging web version of your app
30
+ **Steps**:
31
+ 1. In VS Code: Run & Debug → "Debug Expo Web"
32
+ 2. This will start the web server and open browser
33
+ 3. Set breakpoints in your TypeScript files
34
+ 4. Interact with web app to hit breakpoints
35
+
36
+ ### 3. Attach to Hermes (React Native Direct)
37
+ **Use this for**: Advanced debugging with Hermes engine
38
+ **Steps**:
39
+ 1. Start your app with Hermes debugging enabled
40
+ 2. In VS Code: Run & Debug → "Attach to Hermes (React Native Direct)"
41
+ 3. Set breakpoints and debug
42
+
43
+ ### 4. Debug TypeScript Scripts
44
+ **Use this for**: Debugging standalone TypeScript files (like scripts/)
45
+ **Steps**:
46
+ 1. Open the TypeScript file you want to debug
47
+ 2. In VS Code: Run & Debug → "Debug TypeScript Scripts"
48
+ 3. This will run the current file with tsx
49
+
50
+ ## Setting Breakpoints
51
+
52
+ ### ✅ DO:
53
+ - Set breakpoints in `.ts` and `.tsx` files
54
+ - Use conditional breakpoints for specific scenarios
55
+ - Set breakpoints in component methods, hooks, and utility functions
56
+ - Use logpoints for non-intrusive debugging
57
+
58
+ ### ❌ DON'T:
59
+ - Set breakpoints in `node_modules` files
60
+ - Set breakpoints in generated/compiled files
61
+ - Set breakpoints in files without source maps
62
+
63
+ ## Common Issues & Solutions
64
+
65
+ ### Issue: Breakpoints not hitting
66
+ **Solutions**:
67
+ 1. Ensure source maps are enabled (✅ already configured)
68
+ 2. Make sure you're using the correct debug configuration
69
+ 3. Verify the development server is running
70
+ 4. Check that you're debugging the right platform (web vs mobile)
71
+ 5. Restart the debug session
72
+
73
+ ### Issue: "Cannot connect to runtime process"
74
+ **Solutions**:
75
+ 1. Ensure Expo development server is running (`pnpm dev`)
76
+ 2. Make sure your app is open and connected to the development server
77
+ 3. Check that ports 8081 and 8082 are not blocked
78
+ 4. Try restarting both the Expo server and debug session
79
+
80
+ ### Issue: Source maps not working
81
+ **Solutions**:
82
+ 1. Clear Metro cache: `pnpm dev --clear`
83
+ 2. Restart TypeScript server in VS Code: Cmd+Shift+P → "TypeScript: Restart TS Server"
84
+ 3. Check that `sourceMap: true` is in tsconfig.json (✅ already set)
85
+
86
+ ## Best Practices
87
+
88
+ 1. **Use Development Builds**: Always debug with development builds, not production
89
+ 2. **Clear Cache**: When in doubt, clear Metro cache with `--clear` flag
90
+ 3. **Restart Services**: Restart both Expo server and VS Code debug session if issues persist
91
+ 4. **Check Console**: Monitor both VS Code Debug Console and Expo development tools
92
+ 5. **Use Logpoints**: For quick debugging without stopping execution
93
+
94
+ ## File Structure for Debugging
95
+ ```
96
+ .vscode/
97
+ ├── launch.json # Debug configurations
98
+ ├── settings.json # VS Code workspace settings
99
+ └── extensions.json # Recommended extensions
100
+
101
+ metro.config.js # Metro bundler config (source maps enabled)
102
+ tsconfig.json # TypeScript config (source maps enabled)
103
+ ```
104
+
105
+ ## Quick Start
106
+ 1. Install recommended VS Code extensions
107
+ 2. Run `pnpm dev` to start Expo development server
108
+ 3. Open your app on device/simulator
109
+ 4. In VS Code: F5 or Run & Debug → "Debug Expo (Development Build)"
110
+ 5. Set breakpoints in your TypeScript code
111
+ 6. Interact with your app to trigger breakpoints
112
+
113
+ ## Troubleshooting Commands
114
+ ```bash
115
+ # Clear Metro cache
116
+ pnpm dev --clear
117
+
118
+ # Reset Expo
119
+ expo r -c
120
+
121
+ # Check Expo doctor
122
+ pnpm doctor
123
+
124
+ # Restart TypeScript server in VS Code
125
+ # Cmd+Shift+P → "TypeScript: Restart TS Server"
126
+ ```
@@ -0,0 +1,45 @@
1
+ # Welcome to your Expo app 👋
2
+
3
+ This is an [Expo](https://expo.dev) project created with [`create-expo-app`](https://www.npmjs.com/package/create-expo-app).
4
+
5
+ ## Get started
6
+
7
+ 1. Install dependencies
8
+
9
+ ```bash
10
+ yarn install
11
+ ```
12
+
13
+ 2. Start the app
14
+
15
+ ```bash
16
+ npx expo start
17
+ ```
18
+
19
+ In the output, you'll find options to open the app in a
20
+
21
+ - [development build](https://docs.expo.dev/develop/development-builds/introduction/)
22
+ - [Android emulator](https://docs.expo.dev/workflow/android-studio-emulator/)
23
+ - [iOS simulator](https://docs.expo.dev/workflow/ios-simulator/)
24
+ - [Expo Go](https://expo.dev/go), a limited sandbox for trying out app development with Expo
25
+
26
+ You can start developing by editing the files inside the **app** directory. This project uses [file-based routing](https://docs.expo.dev/router/introduction).
27
+
28
+ This command will move the starter code to the **app-example** directory and create a blank **app** directory where you can start developing.
29
+
30
+ ## Learn more
31
+
32
+ To learn more about developing your project with Expo, look at the following resources:
33
+
34
+ - [React Reusable Components](https://www.reactnativereusables.com/getting-started/introduction/)
35
+ - [NativeWind Documentation](https://www.nativewind.dev/docs)
36
+ - [Expo Documentation](https://docs.expo.dev/)
37
+ - [Expo documentation](https://docs.expo.dev/): Learn fundamentals, or go into advanced topics with our [guides](https://docs.expo.dev/guides).
38
+ - [Learn Expo tutorial](https://docs.expo.dev/tutorial/introduction/): Follow a step-by-step tutorial where you'll create a project that runs on Android, iOS, and the web.
39
+
40
+ ## Join the community
41
+
42
+ Join our community of developers creating universal apps.
43
+
44
+ - [Expo on GitHub](https://github.com/expo/expo): View our open source platform and contribute.
45
+ - [Discord community](https://chat.expo.dev): Chat with Expo users and ask questions.