@lynxship/cli 0.1.3 → 0.1.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 (43) hide show
  1. package/README.md +63 -2
  2. package/dist/android-build.d.ts.map +1 -1
  3. package/dist/android-build.js +61 -2
  4. package/dist/android-host.d.ts +12 -0
  5. package/dist/android-host.d.ts.map +1 -0
  6. package/dist/android-host.js +70 -0
  7. package/dist/index.js +97 -4
  8. package/dist/ios-build.d.ts.map +1 -1
  9. package/dist/ios-build.js +26 -4
  10. package/dist/ios-host.d.ts +17 -0
  11. package/dist/ios-host.d.ts.map +1 -0
  12. package/dist/ios-host.js +93 -0
  13. package/package.json +6 -5
  14. package/templates/android-host/app/build.gradle +38 -0
  15. package/templates/android-host/app/proguard-rules.pro +2 -0
  16. package/templates/android-host/app/src/main/AndroidManifest.xml +20 -0
  17. package/templates/android-host/app/src/main/java/template/LynxShipApplication.java +13 -0
  18. package/templates/android-host/app/src/main/java/template/MainActivity.java +19 -0
  19. package/templates/android-host/app/src/main/java/template/ProjectTemplateProvider.java +32 -0
  20. package/templates/android-host/app/src/main/res/values/strings.xml +3 -0
  21. package/templates/android-host/app/src/main/res/values/themes.xml +6 -0
  22. package/templates/android-host/build.gradle +3 -0
  23. package/templates/android-host/gradle/wrapper/gradle-wrapper.jar +0 -0
  24. package/templates/android-host/gradle/wrapper/gradle-wrapper.properties +7 -0
  25. package/templates/android-host/gradle.properties +3 -0
  26. package/templates/android-host/gradlew +185 -0
  27. package/templates/android-host/gradlew.bat +89 -0
  28. package/templates/android-host/settings.gradle +20 -0
  29. package/templates/ios-host/ExportOptions.plist +16 -0
  30. package/templates/ios-host/Podfile +42 -0
  31. package/templates/ios-host/__IOS_TARGET_NAME__/AppDelegate.swift +11 -0
  32. package/templates/ios-host/__IOS_TARGET_NAME__/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  33. package/templates/ios-host/__IOS_TARGET_NAME__/Assets.xcassets/AppIcon.appiconset/Contents.json +13 -0
  34. package/templates/ios-host/__IOS_TARGET_NAME__/Assets.xcassets/Contents.json +6 -0
  35. package/templates/ios-host/__IOS_TARGET_NAME__/Base.lproj/LaunchScreen.storyboard +25 -0
  36. package/templates/ios-host/__IOS_TARGET_NAME__/Base.lproj/Main.storyboard +24 -0
  37. package/templates/ios-host/__IOS_TARGET_NAME__/DemoLynxProvider.swift +18 -0
  38. package/templates/ios-host/__IOS_TARGET_NAME__/Hello-Lynx-Bridging-Header.h +4 -0
  39. package/templates/ios-host/__IOS_TARGET_NAME__/Info.plist +25 -0
  40. package/templates/ios-host/__IOS_TARGET_NAME__/SceneDelegate.swift +49 -0
  41. package/templates/ios-host/__IOS_TARGET_NAME__/ViewController.swift +22 -0
  42. package/templates/ios-host/__IOS_TARGET_NAME__.xcodeproj/project.pbxproj +452 -0
  43. package/templates/ios-host/sync-bundle.mjs +11 -0
@@ -0,0 +1,18 @@
1
+ import Foundation
2
+
3
+ class DemoLynxProvider: NSObject, LynxTemplateProvider {
4
+ func loadTemplate(withUrl url: String!, onComplete callback: LynxTemplateLoadBlock!) {
5
+ if let filePath = Bundle.main.path(forResource: url, ofType: "bundle") {
6
+ do {
7
+ let data = try Data(contentsOf: URL(fileURLWithPath: filePath))
8
+ callback(data, nil)
9
+ } catch {
10
+ print("Error reading file: \(error.localizedDescription)")
11
+ callback(nil, error)
12
+ }
13
+ } else {
14
+ let urlError = NSError(domain: "com.lynx", code: 400, userInfo: [NSLocalizedDescriptionKey: "Invalid URL."])
15
+ callback(nil, urlError)
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,4 @@
1
+ #import <Lynx/LynxConfig.h>
2
+ #import <Lynx/LynxEnv.h>
3
+ #import <Lynx/LynxTemplateProvider.h>
4
+ #import <Lynx/LynxView.h>
@@ -0,0 +1,25 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>UIApplicationSceneManifest</key>
6
+ <dict>
7
+ <key>UIApplicationSupportsMultipleScenes</key>
8
+ <false/>
9
+ <key>UISceneConfigurations</key>
10
+ <dict>
11
+ <key>UIWindowSceneSessionRoleApplication</key>
12
+ <array>
13
+ <dict>
14
+ <key>UISceneConfigurationName</key>
15
+ <string>Default Configuration</string>
16
+ <key>UISceneDelegateClassName</key>
17
+ <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
18
+ <key>UISceneStoryboardFile</key>
19
+ <string>Main</string>
20
+ </dict>
21
+ </array>
22
+ </dict>
23
+ </dict>
24
+ </dict>
25
+ </plist>
@@ -0,0 +1,49 @@
1
+ //
2
+ // SceneDelegate.swift
3
+ // Hello-Lynx
4
+ //
5
+ // Created by ByteDance on 2025/2/19.
6
+ //
7
+
8
+ import UIKit
9
+
10
+ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
11
+
12
+ var window: UIWindow?
13
+
14
+ func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
15
+ // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
16
+ // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
17
+ // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
18
+ guard let _ = (scene as? UIWindowScene) else { return }
19
+ }
20
+
21
+ func sceneDidDisconnect(_ scene: UIScene) {
22
+ // Called as the scene is being released by the system.
23
+ // This occurs shortly after the scene enters the background, or when its session is discarded.
24
+ // Release any resources associated with this scene that can be re-created the next time the scene connects.
25
+ // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
26
+ }
27
+
28
+ func sceneDidBecomeActive(_ scene: UIScene) {
29
+ // Called when the scene has moved from an inactive state to an active state.
30
+ // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
31
+ }
32
+
33
+ func sceneWillResignActive(_ scene: UIScene) {
34
+ // Called when the scene will move from an active state to an inactive state.
35
+ // This may occur due to temporary interruptions (ex. an incoming phone call).
36
+ }
37
+
38
+ func sceneWillEnterForeground(_ scene: UIScene) {
39
+ // Called as the scene transitions from the background to the foreground.
40
+ // Use this method to undo the changes made on entering the background.
41
+ }
42
+
43
+ func sceneDidEnterBackground(_ scene: UIScene) {
44
+ // Called as the scene transitions from the foreground to the background.
45
+ // Use this method to save data, release shared resources, and store enough scene-specific state information
46
+ // to restore the scene back to its current state.
47
+ }
48
+ }
49
+
@@ -0,0 +1,22 @@
1
+ import UIKit
2
+
3
+ class ViewController: UIViewController {
4
+
5
+ override func viewDidLoad() {
6
+ super.viewDidLoad()
7
+
8
+ let lynxView = LynxView { builder in
9
+ builder.config = LynxConfig(provider: DemoLynxProvider())
10
+ builder.screenSize = self.view.frame.size
11
+ builder.fontScale = 1.0
12
+ }
13
+
14
+ lynxView.preferredLayoutWidth = self.view.frame.size.width
15
+ lynxView.preferredLayoutHeight = self.view.frame.size.height
16
+ lynxView.layoutWidthMode = .exact
17
+ lynxView.layoutHeightMode = .exact
18
+ self.view.addSubview(lynxView)
19
+
20
+ lynxView.loadTemplate(fromURL: "main.lynx", initData: nil)
21
+ }
22
+ }
@@ -0,0 +1,452 @@
1
+ // !$*UTF8*$!
2
+ {
3
+ archiveVersion = 1;
4
+ classes = {
5
+ };
6
+ objectVersion = 56;
7
+ objects = {
8
+
9
+ /* Begin PBXBuildFile section */
10
+ 2B94A3C92D6613730060892C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B94A3C82D6613730060892C /* AppDelegate.swift */; };
11
+ 2B94A3CB2D6613730060892C /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B94A3CA2D6613730060892C /* SceneDelegate.swift */; };
12
+ 2B94A3CD2D6613730060892C /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B94A3CC2D6613730060892C /* ViewController.swift */; };
13
+ 2B94A3D02D6613730060892C /* Base in Resources */ = {isa = PBXBuildFile; fileRef = 2B94A3CF2D6613730060892C /* Base */; };
14
+ 2B94A3D22D6613740060892C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2B94A3D12D6613740060892C /* Assets.xcassets */; };
15
+ 2B94A3D52D6613740060892C /* Base in Resources */ = {isa = PBXBuildFile; fileRef = 2B94A3D42D6613740060892C /* Base */; };
16
+ 2B94A3DD2D6614980060892C /* DemoLynxProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B94A3DC2D6614980060892C /* DemoLynxProvider.swift */; };
17
+ 2BE49E032D7720F0000D068C /* main.lynx.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 2BE49E022D7720F0000D068C /* main.lynx.bundle */; };
18
+ 63972E0D34F86B0706325BCE /* libPods-Hello-Lynx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C4B67B2104D0445A811952B8 /* libPods-Hello-Lynx.a */; };
19
+ /* End PBXBuildFile section */
20
+
21
+ /* Begin PBXFileReference section */
22
+ 2B94A3C52D6613730060892C /* Hello-Lynx.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Hello-Lynx.app"; sourceTree = BUILT_PRODUCTS_DIR; };
23
+ 2B94A3C82D6613730060892C /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
24
+ 2B94A3CA2D6613730060892C /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
25
+ 2B94A3CC2D6613730060892C /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
26
+ 2B94A3CF2D6613730060892C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
27
+ 2B94A3D12D6613740060892C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
28
+ 2B94A3D42D6613740060892C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
29
+ 2B94A3D62D6613740060892C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
30
+ 2B94A3DC2D6614980060892C /* DemoLynxProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DemoLynxProvider.swift; sourceTree = "<group>"; };
31
+ 2B94A3DE2D6614DC0060892C /* Hello-Lynx-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Hello-Lynx-Bridging-Header.h"; sourceTree = "<group>"; };
32
+ 2BE49E022D7720F0000D068C /* main.lynx.bundle */ = {isa = PBXFileReference; lastKnownFileType = file; path = main.lynx.bundle; sourceTree = "<group>"; };
33
+ 61CE2062BA0F77A3DF32F268 /* Pods-Hello-Lynx.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Hello-Lynx.release.xcconfig"; path = "Target Support Files/Pods-Hello-Lynx/Pods-Hello-Lynx.release.xcconfig"; sourceTree = "<group>"; };
34
+ 72043EE1F9E3529358168057 /* Pods-Hello-Lynx.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Hello-Lynx.debug.xcconfig"; path = "Target Support Files/Pods-Hello-Lynx/Pods-Hello-Lynx.debug.xcconfig"; sourceTree = "<group>"; };
35
+ C4B67B2104D0445A811952B8 /* libPods-Hello-Lynx.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Hello-Lynx.a"; sourceTree = BUILT_PRODUCTS_DIR; };
36
+ /* End PBXFileReference section */
37
+
38
+ /* Begin PBXFrameworksBuildPhase section */
39
+ 2B94A3C22D6613730060892C /* Frameworks */ = {
40
+ isa = PBXFrameworksBuildPhase;
41
+ buildActionMask = 2147483647;
42
+ files = (
43
+ 63972E0D34F86B0706325BCE /* libPods-Hello-Lynx.a in Frameworks */,
44
+ );
45
+ runOnlyForDeploymentPostprocessing = 0;
46
+ };
47
+ /* End PBXFrameworksBuildPhase section */
48
+
49
+ /* Begin PBXGroup section */
50
+ 2B94A3BC2D6613730060892C = {
51
+ isa = PBXGroup;
52
+ children = (
53
+ 2BE49E022D7720F0000D068C /* main.lynx.bundle */,
54
+ 2B94A3C72D6613730060892C /* Hello-Lynx */,
55
+ 2B94A3C62D6613730060892C /* Products */,
56
+ C6D18F00D0E7395AB3C4C81F /* Pods */,
57
+ 7225697D323AB6B76668D385 /* Frameworks */,
58
+ );
59
+ sourceTree = "<group>";
60
+ };
61
+ 2B94A3C62D6613730060892C /* Products */ = {
62
+ isa = PBXGroup;
63
+ children = (
64
+ 2B94A3C52D6613730060892C /* Hello-Lynx.app */,
65
+ );
66
+ name = Products;
67
+ sourceTree = "<group>";
68
+ };
69
+ 2B94A3C72D6613730060892C /* Hello-Lynx */ = {
70
+ isa = PBXGroup;
71
+ children = (
72
+ 2B94A3C82D6613730060892C /* AppDelegate.swift */,
73
+ 2B94A3CA2D6613730060892C /* SceneDelegate.swift */,
74
+ 2B94A3CC2D6613730060892C /* ViewController.swift */,
75
+ 2B94A3CE2D6613730060892C /* Main.storyboard */,
76
+ 2B94A3D12D6613740060892C /* Assets.xcassets */,
77
+ 2B94A3D32D6613740060892C /* LaunchScreen.storyboard */,
78
+ 2B94A3D62D6613740060892C /* Info.plist */,
79
+ 2B94A3DC2D6614980060892C /* DemoLynxProvider.swift */,
80
+ 2B94A3DE2D6614DC0060892C /* Hello-Lynx-Bridging-Header.h */,
81
+ );
82
+ path = "Hello-Lynx";
83
+ sourceTree = "<group>";
84
+ };
85
+ 7225697D323AB6B76668D385 /* Frameworks */ = {
86
+ isa = PBXGroup;
87
+ children = (
88
+ C4B67B2104D0445A811952B8 /* libPods-Hello-Lynx.a */,
89
+ );
90
+ name = Frameworks;
91
+ sourceTree = "<group>";
92
+ };
93
+ C6D18F00D0E7395AB3C4C81F /* Pods */ = {
94
+ isa = PBXGroup;
95
+ children = (
96
+ 72043EE1F9E3529358168057 /* Pods-Hello-Lynx.debug.xcconfig */,
97
+ 61CE2062BA0F77A3DF32F268 /* Pods-Hello-Lynx.release.xcconfig */,
98
+ );
99
+ path = Pods;
100
+ sourceTree = "<group>";
101
+ };
102
+ /* End PBXGroup section */
103
+
104
+ /* Begin PBXNativeTarget section */
105
+ 2B94A3C42D6613730060892C /* Hello-Lynx */ = {
106
+ isa = PBXNativeTarget;
107
+ buildConfigurationList = 2B94A3D92D6613740060892C /* Build configuration list for PBXNativeTarget "Hello-Lynx" */;
108
+ buildPhases = (
109
+ 1A6D9ADAF68CC04F0BA85760 /* [CP] Check Pods Manifest.lock */,
110
+ 2B94A3C12D6613730060892C /* Sources */,
111
+ 2B94A3C22D6613730060892C /* Frameworks */,
112
+ 2B94A3C32D6613730060892C /* Resources */,
113
+ AB185E27E0CB58373A5099D9 /* [CP] Copy Pods Resources */,
114
+ );
115
+ buildRules = (
116
+ );
117
+ dependencies = (
118
+ );
119
+ name = "Hello-Lynx";
120
+ productName = "Hello-Lynx";
121
+ productReference = 2B94A3C52D6613730060892C /* Hello-Lynx.app */;
122
+ productType = "com.apple.product-type.application";
123
+ };
124
+ /* End PBXNativeTarget section */
125
+
126
+ /* Begin PBXProject section */
127
+ 2B94A3BD2D6613730060892C /* Project object */ = {
128
+ isa = PBXProject;
129
+ attributes = {
130
+ BuildIndependentTargetsInParallel = 1;
131
+ LastSwiftUpdateCheck = 1530;
132
+ LastUpgradeCheck = 1530;
133
+ TargetAttributes = {
134
+ 2B94A3C42D6613730060892C = {
135
+ CreatedOnToolsVersion = 15.3;
136
+ };
137
+ };
138
+ };
139
+ buildConfigurationList = 2B94A3C02D6613730060892C /* Build configuration list for PBXProject "Hello-Lynx" */;
140
+ compatibilityVersion = "Xcode 14.0";
141
+ developmentRegion = en;
142
+ hasScannedForEncodings = 0;
143
+ knownRegions = (
144
+ en,
145
+ Base,
146
+ );
147
+ mainGroup = 2B94A3BC2D6613730060892C;
148
+ productRefGroup = 2B94A3C62D6613730060892C /* Products */;
149
+ projectDirPath = "";
150
+ projectRoot = "";
151
+ targets = (
152
+ 2B94A3C42D6613730060892C /* Hello-Lynx */,
153
+ );
154
+ };
155
+ /* End PBXProject section */
156
+
157
+ /* Begin PBXResourcesBuildPhase section */
158
+ 2B94A3C32D6613730060892C /* Resources */ = {
159
+ isa = PBXResourcesBuildPhase;
160
+ buildActionMask = 2147483647;
161
+ files = (
162
+ 2BE49E032D7720F0000D068C /* main.lynx.bundle in Resources */,
163
+ 2B94A3D22D6613740060892C /* Assets.xcassets in Resources */,
164
+ 2B94A3D52D6613740060892C /* Base in Resources */,
165
+ 2B94A3D02D6613730060892C /* Base in Resources */,
166
+ );
167
+ runOnlyForDeploymentPostprocessing = 0;
168
+ };
169
+ /* End PBXResourcesBuildPhase section */
170
+
171
+ /* Begin PBXShellScriptBuildPhase section */
172
+ 1A6D9ADAF68CC04F0BA85760 /* [CP] Check Pods Manifest.lock */ = {
173
+ isa = PBXShellScriptBuildPhase;
174
+ buildActionMask = 2147483647;
175
+ files = (
176
+ );
177
+ inputFileListPaths = (
178
+ );
179
+ inputPaths = (
180
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
181
+ "${PODS_ROOT}/Manifest.lock",
182
+ );
183
+ name = "[CP] Check Pods Manifest.lock";
184
+ outputFileListPaths = (
185
+ );
186
+ outputPaths = (
187
+ "$(DERIVED_FILE_DIR)/Pods-Hello-Lynx-checkManifestLockResult.txt",
188
+ );
189
+ runOnlyForDeploymentPostprocessing = 0;
190
+ shellPath = /bin/sh;
191
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
192
+ showEnvVarsInLog = 0;
193
+ };
194
+ AB185E27E0CB58373A5099D9 /* [CP] Copy Pods Resources */ = {
195
+ isa = PBXShellScriptBuildPhase;
196
+ buildActionMask = 2147483647;
197
+ files = (
198
+ );
199
+ inputFileListPaths = (
200
+ "${PODS_ROOT}/Target Support Files/Pods-Hello-Lynx/Pods-Hello-Lynx-resources-${CONFIGURATION}-input-files.xcfilelist",
201
+ );
202
+ name = "[CP] Copy Pods Resources";
203
+ outputFileListPaths = (
204
+ "${PODS_ROOT}/Target Support Files/Pods-Hello-Lynx/Pods-Hello-Lynx-resources-${CONFIGURATION}-output-files.xcfilelist",
205
+ );
206
+ runOnlyForDeploymentPostprocessing = 0;
207
+ shellPath = /bin/sh;
208
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Hello-Lynx/Pods-Hello-Lynx-resources.sh\"\n";
209
+ showEnvVarsInLog = 0;
210
+ };
211
+ /* End PBXShellScriptBuildPhase section */
212
+
213
+ /* Begin PBXSourcesBuildPhase section */
214
+ 2B94A3C12D6613730060892C /* Sources */ = {
215
+ isa = PBXSourcesBuildPhase;
216
+ buildActionMask = 2147483647;
217
+ files = (
218
+ 2B94A3DD2D6614980060892C /* DemoLynxProvider.swift in Sources */,
219
+ 2B94A3CD2D6613730060892C /* ViewController.swift in Sources */,
220
+ 2B94A3C92D6613730060892C /* AppDelegate.swift in Sources */,
221
+ 2B94A3CB2D6613730060892C /* SceneDelegate.swift in Sources */,
222
+ );
223
+ runOnlyForDeploymentPostprocessing = 0;
224
+ };
225
+ /* End PBXSourcesBuildPhase section */
226
+
227
+ /* Begin PBXVariantGroup section */
228
+ 2B94A3CE2D6613730060892C /* Main.storyboard */ = {
229
+ isa = PBXVariantGroup;
230
+ children = (
231
+ 2B94A3CF2D6613730060892C /* Base */,
232
+ );
233
+ name = Main.storyboard;
234
+ sourceTree = "<group>";
235
+ };
236
+ 2B94A3D32D6613740060892C /* LaunchScreen.storyboard */ = {
237
+ isa = PBXVariantGroup;
238
+ children = (
239
+ 2B94A3D42D6613740060892C /* Base */,
240
+ );
241
+ name = LaunchScreen.storyboard;
242
+ sourceTree = "<group>";
243
+ };
244
+ /* End PBXVariantGroup section */
245
+
246
+ /* Begin XCBuildConfiguration section */
247
+ 2B94A3D72D6613740060892C /* Debug */ = {
248
+ isa = XCBuildConfiguration;
249
+ buildSettings = {
250
+ ALWAYS_SEARCH_USER_PATHS = NO;
251
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
252
+ CLANG_ANALYZER_NONNULL = YES;
253
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
254
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
255
+ CLANG_ENABLE_MODULES = YES;
256
+ CLANG_ENABLE_OBJC_ARC = YES;
257
+ CLANG_ENABLE_OBJC_WEAK = YES;
258
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
259
+ CLANG_WARN_BOOL_CONVERSION = YES;
260
+ CLANG_WARN_COMMA = YES;
261
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
262
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
263
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
264
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
265
+ CLANG_WARN_EMPTY_BODY = YES;
266
+ CLANG_WARN_ENUM_CONVERSION = YES;
267
+ CLANG_WARN_INFINITE_RECURSION = YES;
268
+ CLANG_WARN_INT_CONVERSION = YES;
269
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
270
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
271
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
272
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
273
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
274
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
275
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
276
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
277
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
278
+ CLANG_WARN_UNREACHABLE_CODE = YES;
279
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
280
+ COPY_PHASE_STRIP = NO;
281
+ DEBUG_INFORMATION_FORMAT = dwarf;
282
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
283
+ ENABLE_TESTABILITY = YES;
284
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
285
+ GCC_C_LANGUAGE_STANDARD = gnu17;
286
+ GCC_DYNAMIC_NO_PIC = NO;
287
+ GCC_NO_COMMON_BLOCKS = YES;
288
+ GCC_OPTIMIZATION_LEVEL = 0;
289
+ GCC_PREPROCESSOR_DEFINITIONS = (
290
+ "DEBUG=1",
291
+ "$(inherited)",
292
+ );
293
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
294
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
295
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
296
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
297
+ GCC_WARN_UNUSED_FUNCTION = YES;
298
+ GCC_WARN_UNUSED_VARIABLE = YES;
299
+ IPHONEOS_DEPLOYMENT_TARGET = 17.4;
300
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
301
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
302
+ MTL_FAST_MATH = YES;
303
+ ONLY_ACTIVE_ARCH = YES;
304
+ SDKROOT = iphoneos;
305
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
306
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
307
+ };
308
+ name = Debug;
309
+ };
310
+ 2B94A3D82D6613740060892C /* Release */ = {
311
+ isa = XCBuildConfiguration;
312
+ buildSettings = {
313
+ ALWAYS_SEARCH_USER_PATHS = NO;
314
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
315
+ CLANG_ANALYZER_NONNULL = YES;
316
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
317
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
318
+ CLANG_ENABLE_MODULES = YES;
319
+ CLANG_ENABLE_OBJC_ARC = YES;
320
+ CLANG_ENABLE_OBJC_WEAK = YES;
321
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
322
+ CLANG_WARN_BOOL_CONVERSION = YES;
323
+ CLANG_WARN_COMMA = YES;
324
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
325
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
326
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
327
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
328
+ CLANG_WARN_EMPTY_BODY = YES;
329
+ CLANG_WARN_ENUM_CONVERSION = YES;
330
+ CLANG_WARN_INFINITE_RECURSION = YES;
331
+ CLANG_WARN_INT_CONVERSION = YES;
332
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
333
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
334
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
335
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
336
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
337
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
338
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
339
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
340
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
341
+ CLANG_WARN_UNREACHABLE_CODE = YES;
342
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
343
+ COPY_PHASE_STRIP = NO;
344
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
345
+ ENABLE_NS_ASSERTIONS = NO;
346
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
347
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
348
+ GCC_C_LANGUAGE_STANDARD = gnu17;
349
+ GCC_NO_COMMON_BLOCKS = YES;
350
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
351
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
352
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
353
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
354
+ GCC_WARN_UNUSED_FUNCTION = YES;
355
+ GCC_WARN_UNUSED_VARIABLE = YES;
356
+ IPHONEOS_DEPLOYMENT_TARGET = 17.4;
357
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
358
+ MTL_ENABLE_DEBUG_INFO = NO;
359
+ MTL_FAST_MATH = YES;
360
+ SDKROOT = iphoneos;
361
+ SWIFT_COMPILATION_MODE = wholemodule;
362
+ VALIDATE_PRODUCT = YES;
363
+ };
364
+ name = Release;
365
+ };
366
+ 2B94A3DA2D6613740060892C /* Debug */ = {
367
+ isa = XCBuildConfiguration;
368
+ baseConfigurationReference = 72043EE1F9E3529358168057 /* Pods-Hello-Lynx.debug.xcconfig */;
369
+ buildSettings = {
370
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
371
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
372
+ CODE_SIGN_STYLE = Automatic;
373
+ CURRENT_PROJECT_VERSION = 1;
374
+ DEVELOPMENT_TEAM = 53DJZDK42H;
375
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
376
+ GENERATE_INFOPLIST_FILE = YES;
377
+ INFOPLIST_FILE = "Hello-Lynx/Info.plist";
378
+ INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
379
+ INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
380
+ INFOPLIST_KEY_UIMainStoryboardFile = Main;
381
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
382
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
383
+ LD_RUNPATH_SEARCH_PATHS = (
384
+ "$(inherited)",
385
+ "@executable_path/Frameworks",
386
+ );
387
+ MARKETING_VERSION = 1.0;
388
+ PRODUCT_BUNDLE_IDENTIFIER = "test.Hello-Lynx";
389
+ PRODUCT_NAME = "$(TARGET_NAME)";
390
+ SWIFT_EMIT_LOC_STRINGS = YES;
391
+ SWIFT_OBJC_BRIDGING_HEADER = "Hello-Lynx/Hello-Lynx-Bridging-Header.h";
392
+ SWIFT_VERSION = 5.0;
393
+ TARGETED_DEVICE_FAMILY = "1,2";
394
+ };
395
+ name = Debug;
396
+ };
397
+ 2B94A3DB2D6613740060892C /* Release */ = {
398
+ isa = XCBuildConfiguration;
399
+ baseConfigurationReference = 61CE2062BA0F77A3DF32F268 /* Pods-Hello-Lynx.release.xcconfig */;
400
+ buildSettings = {
401
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
402
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
403
+ CODE_SIGN_STYLE = Automatic;
404
+ CURRENT_PROJECT_VERSION = 1;
405
+ DEVELOPMENT_TEAM = 53DJZDK42H;
406
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
407
+ GENERATE_INFOPLIST_FILE = YES;
408
+ INFOPLIST_FILE = "Hello-Lynx/Info.plist";
409
+ INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
410
+ INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
411
+ INFOPLIST_KEY_UIMainStoryboardFile = Main;
412
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
413
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
414
+ LD_RUNPATH_SEARCH_PATHS = (
415
+ "$(inherited)",
416
+ "@executable_path/Frameworks",
417
+ );
418
+ MARKETING_VERSION = 1.0;
419
+ PRODUCT_BUNDLE_IDENTIFIER = "test.Hello-Lynx";
420
+ PRODUCT_NAME = "$(TARGET_NAME)";
421
+ SWIFT_EMIT_LOC_STRINGS = YES;
422
+ SWIFT_OBJC_BRIDGING_HEADER = "Hello-Lynx/Hello-Lynx-Bridging-Header.h";
423
+ SWIFT_VERSION = 5.0;
424
+ TARGETED_DEVICE_FAMILY = "1,2";
425
+ };
426
+ name = Release;
427
+ };
428
+ /* End XCBuildConfiguration section */
429
+
430
+ /* Begin XCConfigurationList section */
431
+ 2B94A3C02D6613730060892C /* Build configuration list for PBXProject "Hello-Lynx" */ = {
432
+ isa = XCConfigurationList;
433
+ buildConfigurations = (
434
+ 2B94A3D72D6613740060892C /* Debug */,
435
+ 2B94A3D82D6613740060892C /* Release */,
436
+ );
437
+ defaultConfigurationIsVisible = 0;
438
+ defaultConfigurationName = Release;
439
+ };
440
+ 2B94A3D92D6613740060892C /* Build configuration list for PBXNativeTarget "Hello-Lynx" */ = {
441
+ isa = XCConfigurationList;
442
+ buildConfigurations = (
443
+ 2B94A3DA2D6613740060892C /* Debug */,
444
+ 2B94A3DB2D6613740060892C /* Release */,
445
+ );
446
+ defaultConfigurationIsVisible = 0;
447
+ defaultConfigurationName = Release;
448
+ };
449
+ /* End XCConfigurationList section */
450
+ };
451
+ rootObject = 2B94A3BD2D6613730060892C /* Project object */;
452
+ }
@@ -0,0 +1,11 @@
1
+ import { copyFile, mkdir } from "node:fs/promises";
2
+ import { dirname, join } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+
5
+ const root = dirname(fileURLToPath(import.meta.url));
6
+ const source = join(root, "..", "dist", "main.lynx.bundle");
7
+ const target = join(root, "main.lynx.bundle");
8
+
9
+ await mkdir(dirname(target), { recursive: true });
10
+ await copyFile(source, target);
11
+ console.log(`Synced ${source} -> ${target}`);