@swiftbrowser/cli 0.2.0 → 0.3.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.
package/dist/template.js CHANGED
@@ -1,8 +1,9 @@
1
1
  // The new-project template behind `swiftbrowser init`: an iOS SwiftUI app as
2
- // Xcode 16's App template lays it out (one target, a synchronized folder, an
3
- // asset catalog), so the same project opens in Xcode and runs with
4
- // `swiftbrowser dev`. Everything here is pure: `projectFiles` returns the
5
- // files to write, and commands/init.ts writes them.
2
+ // Xcode 16's App template lays it out with "Include Tests" (an app target and
3
+ // a Swift Testing unit-test target, each with a synchronized folder; an asset
4
+ // catalog), so the same project opens in Xcode, runs with `swiftbrowser dev`
5
+ // and tests with `swiftbrowser test` or ⌘U. Everything here is pure:
6
+ // `projectFiles` returns the files to write, and commands/init.ts writes them.
6
7
  import { createHash } from 'node:crypto';
7
8
  /** A Swift type name: a letter, then letters and digits. The app's struct is `<name>App`. */
8
9
  export const APP_NAME = /^[A-Za-z][A-Za-z0-9]*$/;
@@ -33,6 +34,8 @@ export function projectFiles(options) {
33
34
  { path: `${name}/Assets.xcassets/Contents.json`, contents: json(CATALOG_INFO) },
34
35
  { path: `${name}/Assets.xcassets/AccentColor.colorset/Contents.json`, contents: json(ACCENT_COLOR) },
35
36
  { path: `${name}/Assets.xcassets/AppIcon.appiconset/Contents.json`, contents: json(APP_ICON) },
37
+ { path: `${name}Tests/${name}Tests.swift`, contents: testSource(name) },
38
+ { path: `${name}.xcodeproj/xcshareddata/xcschemes/${name}.xcscheme`, contents: scheme(name) },
36
39
  ];
37
40
  }
38
41
  /** The lines a new project's `.gitignore` holds (merged into an existing one). */
@@ -67,8 +70,11 @@ A SwiftUI app that runs on iOS and, with [SwiftBrowser](https://github.com/noya-
67
70
  (\`--host\` to open it on a phone on the same network).
68
71
  - \`npx @swiftbrowser/cli check .\` compiles it against SwiftBrowser in seconds;
69
72
  \`npx @swiftbrowser/cli build .\` writes a static site to \`dist/\`.
73
+ - Tests: \`npx @swiftbrowser/cli test .\` runs \`${name}Tests/\` in WebAssembly, as the
74
+ browser runs the app; ⌘U runs the same tests in Xcode.
70
75
 
71
- Add Swift files anywhere under \`${name}/\`: Xcode and SwiftBrowser both pick them up.
76
+ Add Swift files anywhere under \`${name}/\` (tests under \`${name}Tests/\`): Xcode and
77
+ SwiftBrowser both pick them up.
72
78
  `;
73
79
  }
74
80
  function appSource(name) {
@@ -95,19 +101,40 @@ struct ContentView: View {
95
101
  .imageScale(.large)
96
102
  .foregroundStyle(.tint)
97
103
  Text("Hello, world!")
98
- Button("Tapped \\(taps) times") {
104
+ Button(Self.tapCount(taps)) {
99
105
  taps += 1
100
106
  }
101
107
  .buttonStyle(.borderedProminent)
102
108
  }
103
109
  .padding()
104
110
  }
111
+
112
+ /// The button's title after \`taps\` taps (checked by the tests).
113
+ static func tapCount(_ taps: Int) -> String {
114
+ taps == 1 ? "Tapped once" : "Tapped \\(taps) times"
115
+ }
105
116
  }
106
117
 
107
118
  #Preview {
108
119
  ContentView()
109
120
  }
110
121
  `;
122
+ function testSource(name) {
123
+ return `import Testing
124
+ @testable import ${name}
125
+
126
+ // Swift Testing, as Xcode's template writes it: \`swiftbrowser test\` runs
127
+ // these in WebAssembly, ⌘U in the iOS Simulator.
128
+ @MainActor
129
+ struct ${name}Tests {
130
+ @Test func tapCountReadsNaturally() {
131
+ #expect(ContentView.tapCount(0) == "Tapped 0 times")
132
+ #expect(ContentView.tapCount(1) == "Tapped once")
133
+ #expect(ContentView.tapCount(2) == "Tapped 2 times")
134
+ }
135
+ }
136
+ `;
137
+ }
111
138
  const WORKSPACE = `<?xml version="1.0" encoding="UTF-8"?>
112
139
  <Workspace
113
140
  version = "1.0">
@@ -122,7 +149,7 @@ const CATALOG_INFO = { info: { author: 'xcode', version: 1 } };
122
149
  const ACCENT_COLOR = {
123
150
  colors: [
124
151
  {
125
- color: { 'color-space': 'srgb', components: { alpha: '1.000', blue: '1.000', green: '0.478', red: '0.000' } },
152
+ color: { 'color-space': 'srgb', components: { alpha: '1.000', blue: '1.000', green: '0.533', red: '0.000' } },
126
153
  idiom: 'universal',
127
154
  },
128
155
  ],
@@ -136,16 +163,115 @@ const APP_ICON = {
136
163
  ],
137
164
  info: { author: 'xcode', version: 1 },
138
165
  };
166
+ /**
167
+ * The app's shared scheme: builds and runs the app, and tests `<name>Tests`
168
+ * (⌘U, `xcodebuild test -scheme <name>`). Xcode would make one per user on
169
+ * first open; a shared one gives every checkout, and CI, the same test action.
170
+ */
171
+ export function scheme(name) {
172
+ const reference = (target, product) => `<BuildableReference
173
+ BuildableIdentifier = "primary"
174
+ BlueprintIdentifier = "${objectId(name, target)}"
175
+ BuildableName = "${product}"
176
+ BlueprintName = "${product.replace(/\.[a-z]+$/, '')}"
177
+ ReferencedContainer = "container:${name}.xcodeproj">
178
+ </BuildableReference>`;
179
+ const app = reference('target', `${name}.app`);
180
+ return `<?xml version="1.0" encoding="UTF-8"?>
181
+ <Scheme
182
+ LastUpgradeVersion = "1600"
183
+ version = "1.7">
184
+ <BuildAction
185
+ parallelizeBuildables = "YES"
186
+ buildImplicitDependencies = "YES"
187
+ buildArchitectures = "Automatic">
188
+ <BuildActionEntries>
189
+ <BuildActionEntry
190
+ buildForTesting = "YES"
191
+ buildForRunning = "YES"
192
+ buildForProfiling = "YES"
193
+ buildForArchiving = "YES"
194
+ buildForAnalyzing = "YES">
195
+ ${app}
196
+ </BuildActionEntry>
197
+ </BuildActionEntries>
198
+ </BuildAction>
199
+ <TestAction
200
+ buildConfiguration = "Debug"
201
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
202
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
203
+ shouldUseLaunchSchemeArgsEnv = "YES"
204
+ shouldAutocreateTestPlan = "YES">
205
+ <Testables>
206
+ <TestableReference
207
+ skipped = "NO"
208
+ parallelizable = "YES">
209
+ ${reference('tests-target', `${name}Tests.xctest`)}
210
+ </TestableReference>
211
+ </Testables>
212
+ </TestAction>
213
+ <LaunchAction
214
+ buildConfiguration = "Debug"
215
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
216
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
217
+ launchStyle = "0"
218
+ useCustomWorkingDirectory = "NO"
219
+ ignoresPersistentStateOnLaunch = "NO"
220
+ debugDocumentVersioning = "YES"
221
+ debugServiceExtension = "internal"
222
+ allowLocationSimulation = "YES">
223
+ <BuildableProductRunnable
224
+ runnableDebuggingMode = "0">
225
+ ${app}
226
+ </BuildableProductRunnable>
227
+ </LaunchAction>
228
+ <ProfileAction
229
+ buildConfiguration = "Release"
230
+ shouldUseLaunchSchemeArgsEnv = "YES"
231
+ savedToolIdentifier = ""
232
+ useCustomWorkingDirectory = "NO"
233
+ debugDocumentVersioning = "YES">
234
+ <BuildableProductRunnable
235
+ runnableDebuggingMode = "0">
236
+ ${app}
237
+ </BuildableProductRunnable>
238
+ </ProfileAction>
239
+ <AnalyzeAction
240
+ buildConfiguration = "Debug">
241
+ </AnalyzeAction>
242
+ <ArchiveAction
243
+ buildConfiguration = "Release"
244
+ revealArchiveInOrganizer = "YES">
245
+ </ArchiveAction>
246
+ </Scheme>
247
+ `;
248
+ }
139
249
  /** A pbxproj object id: 24 hex digits, stable for a name and role. */
140
250
  function objectId(name, role) {
141
251
  return createHash('sha1').update(`${name}/${role}`).digest('hex').slice(0, 24).toUpperCase();
142
252
  }
143
- /** Xcode 16's iOS App template (objectVersion 77, a synchronized root group), named `name`. */
253
+ /**
254
+ * Xcode 16's iOS App template with "Include Tests" (objectVersion 77,
255
+ * synchronized root groups) without its UI tests, named `name`: the app
256
+ * target and `<name>Tests`, a unit-test bundle hosted by the app.
257
+ */
144
258
  export function pbxproj(name, bundleId) {
145
259
  const id = (role) => objectId(name, role);
146
260
  const app = id('product');
147
261
  const folder = id('folder');
148
262
  const frameworks = id('frameworks');
263
+ const tests = `${name}Tests`;
264
+ const testBundle = id('tests-product');
265
+ const testFolder = id('tests-folder');
266
+ const testFrameworks = id('tests-frameworks');
267
+ const testTarget = id('tests-target');
268
+ const testConfigs = id('tests-configs');
269
+ const testSources = id('tests-sources');
270
+ const testResources = id('tests-resources');
271
+ const testDebug = id('tests-debug');
272
+ const testRelease = id('tests-release');
273
+ const testDependency = id('tests-dependency');
274
+ const testProxy = id('tests-proxy');
149
275
  const mainGroup = id('main-group');
150
276
  const products = id('products');
151
277
  const target = id('target');
@@ -253,6 +379,22 @@ export function pbxproj(name, bundleId) {
253
379
  ]
254
380
  .map(([key, value]) => `\t\t\t\t${key} = ${value};`)
255
381
  .join('\n');
382
+ // The test bundle loads into the app (TEST_HOST), so `@testable import` sees its internals.
383
+ const testSettings = [
384
+ ['BUNDLE_LOADER', '"$(TEST_HOST)"'],
385
+ ['CODE_SIGN_STYLE', 'Automatic'],
386
+ ['CURRENT_PROJECT_VERSION', '1'],
387
+ ['GENERATE_INFOPLIST_FILE', 'YES'],
388
+ ['MARKETING_VERSION', '1.0'],
389
+ ['PRODUCT_BUNDLE_IDENTIFIER', quoted(`${bundleId}Tests`)],
390
+ ['PRODUCT_NAME', '"$(TARGET_NAME)"'],
391
+ ['SWIFT_EMIT_LOC_STRINGS', 'NO'],
392
+ ['SWIFT_VERSION', '5.0'],
393
+ ['TARGETED_DEVICE_FAMILY', '"1,2"'],
394
+ ['TEST_HOST', `"$(BUILT_PRODUCTS_DIR)/${name}.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/${name}"`],
395
+ ]
396
+ .map(([key, value]) => `\t\t\t\t${key} = ${value};`)
397
+ .join('\n');
256
398
  return `// !$*UTF8*$!
257
399
  {
258
400
  archiveVersion = 1;
@@ -261,8 +403,19 @@ export function pbxproj(name, bundleId) {
261
403
  objectVersion = 77;
262
404
  objects = {
263
405
 
406
+ /* Begin PBXContainerItemProxy section */
407
+ ${testProxy} /* PBXContainerItemProxy */ = {
408
+ isa = PBXContainerItemProxy;
409
+ containerPortal = ${project} /* Project object */;
410
+ proxyType = 1;
411
+ remoteGlobalIDString = ${target};
412
+ remoteInfo = ${name};
413
+ };
414
+ /* End PBXContainerItemProxy section */
415
+
264
416
  /* Begin PBXFileReference section */
265
417
  ${app} /* ${name}.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ${name}.app; sourceTree = BUILT_PRODUCTS_DIR; };
418
+ ${testBundle} /* ${tests}.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ${tests}.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
266
419
  /* End PBXFileReference section */
267
420
 
268
421
  /* Begin PBXFileSystemSynchronizedRootGroup section */
@@ -271,6 +424,11 @@ export function pbxproj(name, bundleId) {
271
424
  path = ${name};
272
425
  sourceTree = "<group>";
273
426
  };
427
+ ${testFolder} /* ${tests} */ = {
428
+ isa = PBXFileSystemSynchronizedRootGroup;
429
+ path = ${tests};
430
+ sourceTree = "<group>";
431
+ };
274
432
  /* End PBXFileSystemSynchronizedRootGroup section */
275
433
 
276
434
  /* Begin PBXFrameworksBuildPhase section */
@@ -281,6 +439,13 @@ export function pbxproj(name, bundleId) {
281
439
  );
282
440
  runOnlyForDeploymentPostprocessing = 0;
283
441
  };
442
+ ${testFrameworks} /* Frameworks */ = {
443
+ isa = PBXFrameworksBuildPhase;
444
+ buildActionMask = 2147483647;
445
+ files = (
446
+ );
447
+ runOnlyForDeploymentPostprocessing = 0;
448
+ };
284
449
  /* End PBXFrameworksBuildPhase section */
285
450
 
286
451
  /* Begin PBXGroup section */
@@ -288,6 +453,7 @@ export function pbxproj(name, bundleId) {
288
453
  isa = PBXGroup;
289
454
  children = (
290
455
  ${folder} /* ${name} */,
456
+ ${testFolder} /* ${tests} */,
291
457
  ${products} /* Products */,
292
458
  );
293
459
  sourceTree = "<group>";
@@ -296,6 +462,7 @@ export function pbxproj(name, bundleId) {
296
462
  isa = PBXGroup;
297
463
  children = (
298
464
  ${app} /* ${name}.app */,
465
+ ${testBundle} /* ${tests}.xctest */,
299
466
  );
300
467
  name = Products;
301
468
  sourceTree = "<group>";
@@ -325,6 +492,29 @@ export function pbxproj(name, bundleId) {
325
492
  productReference = ${app} /* ${name}.app */;
326
493
  productType = "com.apple.product-type.application";
327
494
  };
495
+ ${testTarget} /* ${tests} */ = {
496
+ isa = PBXNativeTarget;
497
+ buildConfigurationList = ${testConfigs} /* Build configuration list for PBXNativeTarget "${tests}" */;
498
+ buildPhases = (
499
+ ${testSources} /* Sources */,
500
+ ${testFrameworks} /* Frameworks */,
501
+ ${testResources} /* Resources */,
502
+ );
503
+ buildRules = (
504
+ );
505
+ dependencies = (
506
+ ${testDependency} /* PBXTargetDependency */,
507
+ );
508
+ fileSystemSynchronizedGroups = (
509
+ ${testFolder} /* ${tests} */,
510
+ );
511
+ name = ${tests};
512
+ packageProductDependencies = (
513
+ );
514
+ productName = ${tests};
515
+ productReference = ${testBundle} /* ${tests}.xctest */;
516
+ productType = "com.apple.product-type.bundle.unit-test";
517
+ };
328
518
  /* End PBXNativeTarget section */
329
519
 
330
520
  /* Begin PBXProject section */
@@ -338,6 +528,10 @@ export function pbxproj(name, bundleId) {
338
528
  ${target} = {
339
529
  CreatedOnToolsVersion = 16.0;
340
530
  };
531
+ ${testTarget} = {
532
+ CreatedOnToolsVersion = 16.0;
533
+ TestTargetID = ${target};
534
+ };
341
535
  };
342
536
  };
343
537
  buildConfigurationList = ${projectConfigs} /* Build configuration list for PBXProject "${name}" */;
@@ -355,6 +549,7 @@ export function pbxproj(name, bundleId) {
355
549
  projectRoot = "";
356
550
  targets = (
357
551
  ${target} /* ${name} */,
552
+ ${testTarget} /* ${tests} */,
358
553
  );
359
554
  };
360
555
  /* End PBXProject section */
@@ -367,6 +562,13 @@ export function pbxproj(name, bundleId) {
367
562
  );
368
563
  runOnlyForDeploymentPostprocessing = 0;
369
564
  };
565
+ ${testResources} /* Resources */ = {
566
+ isa = PBXResourcesBuildPhase;
567
+ buildActionMask = 2147483647;
568
+ files = (
569
+ );
570
+ runOnlyForDeploymentPostprocessing = 0;
571
+ };
370
572
  /* End PBXResourcesBuildPhase section */
371
573
 
372
574
  /* Begin PBXSourcesBuildPhase section */
@@ -377,8 +579,23 @@ export function pbxproj(name, bundleId) {
377
579
  );
378
580
  runOnlyForDeploymentPostprocessing = 0;
379
581
  };
582
+ ${testSources} /* Sources */ = {
583
+ isa = PBXSourcesBuildPhase;
584
+ buildActionMask = 2147483647;
585
+ files = (
586
+ );
587
+ runOnlyForDeploymentPostprocessing = 0;
588
+ };
380
589
  /* End PBXSourcesBuildPhase section */
381
590
 
591
+ /* Begin PBXTargetDependency section */
592
+ ${testDependency} /* PBXTargetDependency */ = {
593
+ isa = PBXTargetDependency;
594
+ target = ${target} /* ${name} */;
595
+ targetProxy = ${testProxy} /* PBXContainerItemProxy */;
596
+ };
597
+ /* End PBXTargetDependency section */
598
+
382
599
  /* Begin XCBuildConfiguration section */
383
600
  ${projectDebug} /* Debug */ = {
384
601
  isa = XCBuildConfiguration;
@@ -408,6 +625,20 @@ ${targetSettings}
408
625
  };
409
626
  name = Release;
410
627
  };
628
+ ${testDebug} /* Debug */ = {
629
+ isa = XCBuildConfiguration;
630
+ buildSettings = {
631
+ ${testSettings}
632
+ };
633
+ name = Debug;
634
+ };
635
+ ${testRelease} /* Release */ = {
636
+ isa = XCBuildConfiguration;
637
+ buildSettings = {
638
+ ${testSettings}
639
+ };
640
+ name = Release;
641
+ };
411
642
  /* End XCBuildConfiguration section */
412
643
 
413
644
  /* Begin XCConfigurationList section */
@@ -429,6 +660,15 @@ ${targetSettings}
429
660
  defaultConfigurationIsVisible = 0;
430
661
  defaultConfigurationName = Release;
431
662
  };
663
+ ${testConfigs} /* Build configuration list for PBXNativeTarget "${tests}" */ = {
664
+ isa = XCConfigurationList;
665
+ buildConfigurations = (
666
+ ${testDebug} /* Debug */,
667
+ ${testRelease} /* Release */,
668
+ );
669
+ defaultConfigurationIsVisible = 0;
670
+ defaultConfigurationName = Release;
671
+ };
432
672
  /* End XCConfigurationList section */
433
673
  };
434
674
  rootObject = ${project} /* Project object */;
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,44 @@
1
+ // Runs one test module for WebAssembly under Node's WASI, as
2
+ // `node testRunner.js <module.wasm> [arguments…]`; its exit status is the
3
+ // tests'. `swiftbrowser test` starts it in a child process (commands/test.ts)
4
+ // so that a trap or a hang ends that process only, and so that its output can
5
+ // be read line by line.
6
+ //
7
+ // The module gets a directory of its own, a fresh temporary one that is gone
8
+ // afterwards: XCTest finds `Bundle.main` from the program's path, which must
9
+ // be in a directory that exists (`/tests/<module>`), and tests that write files
10
+ // get a home (`HOME`) and `/tmp`.
11
+ import { mkdtempSync, rmSync } from 'node:fs';
12
+ import { readFile } from 'node:fs/promises';
13
+ import { tmpdir } from 'node:os';
14
+ import path from 'node:path';
15
+ import { WASI } from 'node:wasi';
16
+ const [wasm, ...args] = process.argv.slice(2);
17
+ if (!wasm) {
18
+ console.error('usage: node testRunner.js <module.wasm> [arguments…]');
19
+ process.exit(2);
20
+ }
21
+ const home = mkdtempSync(path.join(tmpdir(), 'swiftbrowser-test-'));
22
+ let status = 1;
23
+ try {
24
+ const wasi = new WASI({
25
+ version: 'preview1',
26
+ args: [`/tests/${path.basename(wasm)}`, ...args],
27
+ env: { HOME: '/tests', TMPDIR: '/tmp' },
28
+ preopens: { '/tests': home, '/tmp': home },
29
+ returnOnExit: true,
30
+ });
31
+ const { instance } = await WebAssembly.instantiate(await readFile(wasm), wasi.getImportObject());
32
+ status = wasi.start(instance);
33
+ }
34
+ catch (error) {
35
+ // A trap (`fatalError`, a failed force unwrap…) ends the run here; the
36
+ // Swift runtime has printed why, and the first frames say where.
37
+ const stack = error instanceof Error ? (error.stack ?? error.message) : String(error);
38
+ console.error(stack.split('\n').slice(0, 12).join('\n'));
39
+ }
40
+ finally {
41
+ rmSync(home, { recursive: true, force: true });
42
+ }
43
+ process.exitCode = status;
44
+ //# sourceMappingURL=testRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testRunner.js","sourceRoot":"","sources":["../src/testRunner.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,0EAA0E;AAC1E,8EAA8E;AAC9E,8EAA8E;AAC9E,wBAAwB;AACxB,EAAE;AACF,6EAA6E;AAC7E,6EAA6E;AAC7E,gFAAgF;AAChF,kCAAkC;AAElC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;IACV,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;IACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AACD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;AACpE,IAAI,MAAM,GAAG,CAAC,CAAC;AACf,IAAI,CAAC;IACH,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,OAAO,EAAE,UAAU;QACnB,IAAI,EAAE,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;QAChD,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;QACvC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;QAC1C,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACjG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,uEAAuE;IACvE,iEAAiE;IACjE,MAAM,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC;QAAS,CAAC;IACT,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC;AACD,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swiftbrowser/cli",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "description": "Run an iOS SwiftUI app in the browser: init, doctor, check, dev and build for an Xcode project or a folder of Swift sources.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -22,10 +22,10 @@
22
22
  "build": "tsc -p tsconfig.build.json"
23
23
  },
24
24
  "dependencies": {
25
- "@swiftbrowser/kit": "0.2.0",
26
- "@swiftbrowser/swift": "0.2.0",
27
- "@swiftbrowser/web": "0.2.0",
28
- "@swiftbrowser/xcodeproj": "0.2.0"
25
+ "@swiftbrowser/kit": "0.3.1",
26
+ "@swiftbrowser/swift": "0.3.1",
27
+ "@swiftbrowser/web": "0.3.1",
28
+ "@swiftbrowser/xcodeproj": "0.3.1"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@types/node": "^26.6.4",