craft-native 0.0.246 → 0.0.248

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 (46) hide show
  1. package/dist/android/src/index.d.ts +11 -0
  2. package/dist/android/src/index.js +33 -21
  3. package/dist/android/templates/AndroidManifest.xml.template +1 -0
  4. package/dist/android/templates/CraftBridge.kt.template +136 -1
  5. package/dist/android/templates/CraftHeartRate.kt.template +938 -0
  6. package/dist/android/templates/CraftHeartRateCore.kt.template +485 -0
  7. package/dist/android/templates/CraftNative.kt.template +17 -0
  8. package/dist/android/templates/CraftNativeFlatList.kt.template +115 -40
  9. package/dist/android/templates/CraftNativeMapGoogle.kt.template +92 -5
  10. package/dist/android/templates/CraftNativeMapLibre.kt.template +90 -3
  11. package/dist/android/templates/CraftNativeMutation.kt.template +32 -0
  12. package/dist/android/templates/CraftNativeRefreshableFlatList.kt.template +7 -2
  13. package/dist/android/templates/CraftNativeServices.kt.template +59 -1
  14. package/dist/android/templates/CraftNativeShell.kt.template +54 -14
  15. package/dist/android/templates/MainActivityNative.kt.template +369 -69
  16. package/dist/android/templates/build.gradle.kts.project.template +1 -1
  17. package/dist/api/mobile.d.ts +39 -3
  18. package/dist/browser.js +9 -9
  19. package/dist/cli.js +90 -673
  20. package/dist/components/index.d.ts +50 -9
  21. package/dist/index.cjs +394 -438
  22. package/dist/index.d.cts +1 -1
  23. package/dist/index.d.ts +1 -1
  24. package/dist/index.js +446 -493
  25. package/dist/ios/src/index.d.ts +2 -0
  26. package/dist/ios/src/index.js +54 -53
  27. package/dist/ios/templates/CraftApp.swift +37 -2
  28. package/dist/ios/templates/CraftHealth.swift +217 -0
  29. package/dist/ios/templates/CraftHeartRate.swift +6 -3
  30. package/dist/ios/templates/CraftHybrid.swift +18 -19
  31. package/dist/ios/templates/CraftLiveActivities.swift +1 -1
  32. package/dist/ios/templates/CraftNativeActions.swift +87 -8
  33. package/dist/ios/templates/CraftNativeFiles.swift +15 -3
  34. package/dist/ios/templates/CraftNativeFlatList.swift +18 -1
  35. package/dist/ios/templates/CraftNativeMutation.swift +36 -0
  36. package/dist/ios/templates/CraftNativeScreen.swift +813 -65
  37. package/dist/ios/templates/CraftNativeServices.swift +4 -2
  38. package/dist/ios/templates/CraftNativeUI.swift +10 -2
  39. package/dist/ios/templates/testing/DriverTests.swift.template +1 -0
  40. package/dist/ios/templates/testing/HostApp.swift +9 -2
  41. package/dist/macos/templates/CraftNativeMutation.swift +36 -0
  42. package/dist/macos/templates/native_layout.zig +226 -2
  43. package/dist/mobile-testing.js +21 -3
  44. package/dist/mobile.js +101 -63
  45. package/dist/testing/media-cache/media-cache.kt +4 -2
  46. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -13,7 +13,67 @@ var __export = (target, all) => {
13
13
  set: __exportSetter.bind(all, name)
14
14
  });
15
15
  };
16
- var __require = import.meta.require;
16
+
17
+ // src/components/index.ts
18
+ var exports_components = {};
19
+ __export(exports_components, {
20
+ Animated: () => Animated,
21
+ FileBrowserInstance: () => FileBrowserInstance,
22
+ OutlineViewInstance: () => OutlineViewInstance,
23
+ Platform: () => Platform,
24
+ ProgressInstance: () => ProgressInstance,
25
+ Sidebar: () => Sidebar2,
26
+ SplitViewInstance: () => SplitViewInstance,
27
+ StyleSheet: () => StyleSheet,
28
+ TableViewInstance: () => TableViewInstance,
29
+ arcStyle: () => arcStyle,
30
+ canQuickLook: () => canQuickLook,
31
+ createArcSidebar: () => createArcSidebar,
32
+ createFileBrowser: () => createFileBrowser,
33
+ createOrbStackSidebar: () => createOrbStackSidebar,
34
+ createOutlineView: () => createOutlineView,
35
+ createProgress: () => createProgress,
36
+ createSidebar: () => createSidebar2,
37
+ createSplitView: () => createSplitView,
38
+ createTableView: () => createTableView,
39
+ createTahoeSidebar: () => createTahoeSidebar,
40
+ default: () => components_default,
41
+ hideQuickLook: () => hideQuickLook,
42
+ orbstackStyle: () => orbstackStyle,
43
+ setToolbar: () => setToolbar,
44
+ setToolbarVisible: () => setToolbarVisible,
45
+ setTouchBar: () => setTouchBar,
46
+ showColorPicker: () => showColorPicker,
47
+ showDatePicker: () => showDatePicker,
48
+ showFontPicker: () => showFontPicker,
49
+ showQuickLook: () => showQuickLook,
50
+ sidebarItem: () => sidebarItem,
51
+ sidebarSection: () => sidebarSection,
52
+ sidebarSeparator: () => sidebarSeparator,
53
+ tahoeStyle: () => tahoeStyle,
54
+ updateToolbarItem: () => updateToolbarItem,
55
+ updateTouchBarItem: () => updateTouchBarItem
56
+ });
57
+
58
+ // src/updater/index.ts
59
+ var exports_updater = {};
60
+ __export(exports_updater, {
61
+ AutoUpdater: () => AutoUpdater,
62
+ DeltaGenerator: () => DeltaGenerator,
63
+ canReplaceBundle: () => canReplaceBundle,
64
+ clearQuarantine: () => clearQuarantine,
65
+ default: () => updater_default,
66
+ dittoBundle: () => dittoBundle,
67
+ extractBundle: () => extractBundle,
68
+ extractBundleFromDmg: () => extractBundleFromDmg,
69
+ extractBundleFromZip: () => extractBundleFromZip,
70
+ generateUpdateManifest: () => generateUpdateManifest,
71
+ isMacOS: () => isMacOS,
72
+ readBundleIdentity: () => readBundleIdentity,
73
+ swapBundle: () => swapBundle,
74
+ updaterCommand: () => updaterCommand,
75
+ verifyBundleTrust: () => verifyBundleTrust
76
+ });
17
77
 
18
78
  // src/index.ts
19
79
  import { execFile as execFile2, spawn as spawn4 } from "child_process";
@@ -57,7 +117,7 @@ function craftBinaryNotFoundMessage(triedPath) {
57
117
  `);
58
118
  }
59
119
  // package.json
60
- var version = "0.0.246";
120
+ var version = "0.0.248";
61
121
 
62
122
  // src/sdk-version.ts
63
123
  var SDK_VERSION = version;
@@ -302,13 +362,13 @@ async function packageApp(config) {
302
362
  }
303
363
  async function packageMacOS(config, outDir) {
304
364
  const results = [];
305
- const { name, version: version2, bundleId = `com.myapp.${name.toLowerCase()}` } = config;
365
+ const { name, version, bundleId = `com.myapp.${name.toLowerCase()}` } = config;
306
366
  const opts = config.macos || {};
307
367
  const hardenedRuntime = !opts.appStore;
308
368
  const appBundlePath = join2(outDir, `${name}.app`);
309
369
  const appBundle = createMacOSAppBundle({
310
370
  name,
311
- version: version2,
371
+ version,
312
372
  bundleId,
313
373
  buildNumber: opts.buildNumber,
314
374
  category: opts.category,
@@ -352,7 +412,7 @@ async function packageMacOS(config, outDir) {
352
412
  }
353
413
  results.push({ success: true, platform: "macos", format: "app", outputPath: appBundlePath });
354
414
  if (opts.dmg !== false) {
355
- const outputPath = join2(outDir, `${name}-${version2}.dmg`);
415
+ const outputPath = join2(outDir, `${name}-${version}.dmg`);
356
416
  const dmgResult = await createDMG({ appBundlePath, outputPath, volumeName: name });
357
417
  results.push({
358
418
  success: dmgResult.success,
@@ -365,12 +425,12 @@ async function packageMacOS(config, outDir) {
365
425
  results.push(...await notarizeIfRequested(opts, outputPath, "dmg"));
366
426
  }
367
427
  if (opts.pkg || opts.appStore) {
368
- const outputPath = join2(outDir, `${name}-${version2}.pkg`);
428
+ const outputPath = join2(outDir, `${name}-${version}.pkg`);
369
429
  const pkgResult = await createPKG({
370
430
  appBundlePath,
371
431
  outputPath,
372
432
  identifier: bundleId,
373
- version: version2,
433
+ version,
374
434
  appStore: opts.appStore === true,
375
435
  installerIdentity: opts.installerIdentity
376
436
  });
@@ -416,14 +476,14 @@ async function notarizeIfRequested(opts, artifactPath, format) {
416
476
  }
417
477
  async function packageWindows(config, outDir) {
418
478
  const results = [];
419
- const { name, version: version2 } = config;
479
+ const { name, version } = config;
420
480
  const opts = config.windows || {};
421
481
  if (opts.msi !== false) {
422
482
  const msiResult = await createMSI({
423
483
  name,
424
- version: version2,
484
+ version,
425
485
  binaryPath: config.binaryPath,
426
- outputPath: join2(outDir, `${name}-${version2}.msi`),
486
+ outputPath: join2(outDir, `${name}-${version}.msi`),
427
487
  manufacturer: config.author || "Unknown",
428
488
  architecture: opts.architecture || windowsArchitecture(process.arch),
429
489
  additionalFiles: opts.additionalFiles,
@@ -443,11 +503,11 @@ async function packageWindows(config, outDir) {
443
503
  if (opts.zip || opts.msi === false) {
444
504
  const zipResult = await createZIP({
445
505
  name,
446
- version: version2,
506
+ version,
447
507
  manufacturer: config.author || "Unknown",
448
508
  binaryPath: config.binaryPath,
449
509
  additionalFiles: opts.additionalFiles,
450
- outputPath: join2(outDir, `${name}-${version2}-windows.zip`)
510
+ outputPath: join2(outDir, `${name}-${version}-windows.zip`)
451
511
  });
452
512
  results.push({
453
513
  success: zipResult.success,
@@ -461,14 +521,14 @@ async function packageWindows(config, outDir) {
461
521
  }
462
522
  async function packageLinux(config, outDir) {
463
523
  const results = [];
464
- const { name, version: version2 } = config;
524
+ const { name, version } = config;
465
525
  const opts = config.linux || {};
466
526
  if (opts.deb !== false) {
467
527
  const debResult = await createDEB({
468
528
  name,
469
- version: version2,
529
+ version,
470
530
  binaryPath: config.binaryPath,
471
- outputPath: join2(outDir, `${name}_${version2}_amd64.deb`),
531
+ outputPath: join2(outDir, `${name}_${version}_amd64.deb`),
472
532
  description: config.description || "",
473
533
  maintainer: config.author || "Unknown",
474
534
  dependencies: opts.debDependencies || [...DEFAULT_DEB_DEPENDENCIES],
@@ -486,9 +546,9 @@ async function packageLinux(config, outDir) {
486
546
  if (opts.rpm) {
487
547
  const rpmResult = await createRPM({
488
548
  name,
489
- version: version2,
549
+ version,
490
550
  binaryPath: config.binaryPath,
491
- outputPath: join2(outDir, `${name}-${version2}-1.x86_64.rpm`),
551
+ outputPath: join2(outDir, `${name}-${version}-1.x86_64.rpm`),
492
552
  description: config.description || "",
493
553
  requires: opts.rpmDependencies || ["gtk3", "webkit2gtk3"]
494
554
  });
@@ -503,9 +563,9 @@ async function packageLinux(config, outDir) {
503
563
  if (opts.appImage) {
504
564
  const appImageResult = await createAppImage({
505
565
  name,
506
- version: version2,
566
+ version,
507
567
  binaryPath: config.binaryPath,
508
- outputPath: join2(outDir, `${name}-${version2}-x86_64.AppImage`),
568
+ outputPath: join2(outDir, `${name}-${version}-x86_64.AppImage`),
509
569
  iconPath: config.iconPath
510
570
  });
511
571
  results.push({
@@ -1856,17 +1916,17 @@ class NativeBridge extends EventEmitter {
1856
1916
  });
1857
1917
  }
1858
1918
  return new Promise((resolve, reject) => {
1859
- const timer2 = setTimeout(() => {
1919
+ const timer = setTimeout(() => {
1860
1920
  this.pendingRequests.delete(message.id);
1861
1921
  reject(new BridgeError("Request timeout", BridgeErrorCodes.TIMEOUT));
1862
1922
  }, effectiveTimeout);
1863
1923
  this.pendingRequests.set(message.id, {
1864
1924
  resolve,
1865
1925
  reject,
1866
- timeout: timer2
1926
+ timeout: timer
1867
1927
  });
1868
1928
  if (!this.send(message)) {
1869
- clearTimeout(timer2);
1929
+ clearTimeout(timer);
1870
1930
  this.pendingRequests.delete(message.id);
1871
1931
  reject(new BridgeError("No bridge transport available \u2014 not running inside a Craft host", BridgeErrorCodes.UNKNOWN));
1872
1932
  }
@@ -2154,54 +2214,6 @@ class BridgeError extends Error {
2154
2214
  this.data = data;
2155
2215
  }
2156
2216
  }
2157
- class NativeComponentBridge {
2158
- bridge;
2159
- components = new Map;
2160
- constructor(bridge) {
2161
- this.bridge = bridge;
2162
- this.bridge.on("component.event", this.handleComponentEvent.bind(this));
2163
- }
2164
- handleComponentEvent(event) {
2165
- const component = this.components.get(event.componentId);
2166
- if (component) {
2167
- this.bridge.emit(`component:${event.componentId}:${event.eventType}`, event.data);
2168
- }
2169
- }
2170
- async createSidebar(config) {
2171
- const id = await this.bridge.request("component.createSidebar", config);
2172
- this.components.set(id, { id, type: "sidebar", props: config });
2173
- return id;
2174
- }
2175
- async createFileBrowser(config) {
2176
- const id = await this.bridge.request("component.createFileBrowser", config);
2177
- this.components.set(id, { id, type: "fileBrowser", props: config });
2178
- return id;
2179
- }
2180
- async createSplitView(config) {
2181
- const id = await this.bridge.request("component.createSplitView", config);
2182
- this.components.set(id, { id, type: "splitView", props: config });
2183
- return id;
2184
- }
2185
- async updateComponent(componentId, props) {
2186
- const component = this.components.get(componentId);
2187
- if (component) {
2188
- component.props = { ...component.props, ...props };
2189
- }
2190
- await this.bridge.request("component.update", { componentId, props });
2191
- }
2192
- async destroyComponent(componentId) {
2193
- this.components.delete(componentId);
2194
- await this.bridge.request("component.destroy", { componentId });
2195
- }
2196
- onComponentEvent(componentId, eventType, callback) {
2197
- const eventName = `component:${componentId}:${eventType}`;
2198
- this.bridge.on(eventName, callback);
2199
- return () => this.bridge.off(eventName, callback);
2200
- }
2201
- async getFileBrowserSelection(componentId) {
2202
- return this.bridge.request("component.getFileBrowserSelection", { componentId });
2203
- }
2204
- }
2205
2217
  var globalBridge = null;
2206
2218
  var globalBridgeConfig = null;
2207
2219
  function getBridge(config) {
@@ -2270,8 +2282,8 @@ function isDesktopWebViewHost() {
2270
2282
  return true;
2271
2283
  if (typeof window === "undefined")
2272
2284
  return false;
2273
- const host2 = window;
2274
- return typeof host2.chrome?.webview?.postMessage === "function";
2285
+ const host = window;
2286
+ return typeof host.chrome?.webview?.postMessage === "function";
2275
2287
  }
2276
2288
  function postWebKit(message) {
2277
2289
  if (!isWebKitHost())
@@ -2289,13 +2301,13 @@ function webkitRequest(bucket, message, options = {}) {
2289
2301
  return new Promise((resolve, reject) => {
2290
2302
  let settled = false;
2291
2303
  const list = w.__craftBridgePending[bucket] = w.__craftBridgePending[bucket] || [];
2292
- let timer2;
2304
+ let timer;
2293
2305
  const entry = {
2294
2306
  resolve: (v) => {
2295
2307
  if (settled)
2296
2308
  return;
2297
2309
  settled = true;
2298
- clearTimeout(timer2);
2310
+ clearTimeout(timer);
2299
2311
  const idx = list.indexOf(entry);
2300
2312
  if (idx >= 0)
2301
2313
  list.splice(idx, 1);
@@ -2305,7 +2317,7 @@ function webkitRequest(bucket, message, options = {}) {
2305
2317
  if (settled)
2306
2318
  return;
2307
2319
  settled = true;
2308
- clearTimeout(timer2);
2320
+ clearTimeout(timer);
2309
2321
  const idx = list.indexOf(entry);
2310
2322
  if (idx >= 0)
2311
2323
  list.splice(idx, 1);
@@ -2313,7 +2325,7 @@ function webkitRequest(bucket, message, options = {}) {
2313
2325
  }
2314
2326
  };
2315
2327
  list.push(entry);
2316
- timer2 = setTimeout(() => {
2328
+ timer = setTimeout(() => {
2317
2329
  entry.reject(new Error(`[WKWebView] ${bucket} timed out after ${timeoutMs}ms`));
2318
2330
  }, timeoutMs);
2319
2331
  try {
@@ -2645,8 +2657,8 @@ class WindowManager {
2645
2657
  if (!injected?._call) {
2646
2658
  throw new Error("Craft window bridge is unavailable");
2647
2659
  }
2648
- const id2 = await injected._call("getFocused", undefined, "main");
2649
- return id2 ? this._windows.get(id2) || null : null;
2660
+ const id = await injected._call("getFocused", undefined, "main");
2661
+ return id ? this._windows.get(id) || null : null;
2650
2662
  }
2651
2663
  const bridge = getBridge();
2652
2664
  const id = await bridge.request("window.getFocused");
@@ -3383,9 +3395,9 @@ function base64ToUint8(base64) {
3383
3395
  var fs = {
3384
3396
  async readFile(path) {
3385
3397
  validatePath(path);
3386
- const native2 = getCraftFs();
3387
- if (native2)
3388
- return native2.readFile(path);
3398
+ const native = getCraftFs();
3399
+ if (native)
3400
+ return native.readFile(path);
3389
3401
  if (typeof window !== "undefined" && window.craft) {
3390
3402
  return callBridge("fs.readFile", { path });
3391
3403
  }
@@ -3394,9 +3406,9 @@ var fs = {
3394
3406
  },
3395
3407
  async writeFile(path, content) {
3396
3408
  validatePath(path);
3397
- const native2 = getCraftFs();
3398
- if (native2)
3399
- return native2.writeFile(path, content);
3409
+ const native = getCraftFs();
3410
+ if (native)
3411
+ return native.writeFile(path, content);
3400
3412
  if (typeof window !== "undefined" && window.craft) {
3401
3413
  await callBridge("fs.writeFile", { path, content });
3402
3414
  return;
@@ -3407,9 +3419,9 @@ var fs = {
3407
3419
  async readDir(path) {
3408
3420
  validatePath(path);
3409
3421
  const filter = (xs) => xs.filter((n) => n !== "." && n !== "..");
3410
- const native2 = getCraftFs();
3411
- if (native2)
3412
- return filter(await native2.readDir(path));
3422
+ const native = getCraftFs();
3423
+ if (native)
3424
+ return filter(await native.readDir(path));
3413
3425
  if (typeof window !== "undefined" && window.craft) {
3414
3426
  return filter(await callBridge("fs.readDir", { path }));
3415
3427
  }
@@ -3418,9 +3430,9 @@ var fs = {
3418
3430
  },
3419
3431
  async mkdir(path) {
3420
3432
  validatePath(path);
3421
- const native2 = getCraftFs();
3422
- if (native2)
3423
- return native2.mkdir(path);
3433
+ const native = getCraftFs();
3434
+ if (native)
3435
+ return native.mkdir(path);
3424
3436
  if (typeof window !== "undefined" && window.craft) {
3425
3437
  await callBridge("fs.mkdir", { path });
3426
3438
  return;
@@ -3430,9 +3442,9 @@ var fs = {
3430
3442
  },
3431
3443
  async remove(path) {
3432
3444
  validatePath(path);
3433
- const native2 = getCraftFs();
3434
- if (native2)
3435
- return native2.remove(path);
3445
+ const native = getCraftFs();
3446
+ if (native)
3447
+ return native.remove(path);
3436
3448
  if (typeof window !== "undefined" && window.craft) {
3437
3449
  await callBridge("fs.remove", { path });
3438
3450
  return;
@@ -3442,9 +3454,9 @@ var fs = {
3442
3454
  },
3443
3455
  async exists(path) {
3444
3456
  validatePath(path);
3445
- const native2 = getCraftFs();
3446
- if (native2)
3447
- return native2.exists(path);
3457
+ const native = getCraftFs();
3458
+ if (native)
3459
+ return native.exists(path);
3448
3460
  if (typeof window !== "undefined" && window.craft) {
3449
3461
  return callBridge("fs.exists", { path });
3450
3462
  }
@@ -3529,9 +3541,9 @@ var _watchRecursiveWarned = false;
3529
3541
  async function watch(path, callback, options = {}) {
3530
3542
  validatePath(path);
3531
3543
  const recursive = options.recursive ?? true;
3532
- const native2 = getCraftFs();
3533
- if (native2?.watch) {
3534
- const handle = await native2.watch(path, (event) => callback(event.type, event.path), { recursive });
3544
+ const native = getCraftFs();
3545
+ if (native?.watch) {
3546
+ const handle = await native.watch(path, (event) => callback(event.type, event.path), { recursive });
3535
3547
  return () => {
3536
3548
  handle.unwatch();
3537
3549
  };
@@ -3764,8 +3776,8 @@ class Database {
3764
3776
  class KeyValueStore {
3765
3777
  db;
3766
3778
  tableName;
3767
- constructor(db2, tableName = "kv_store") {
3768
- this.db = db2;
3779
+ constructor(db, tableName = "kv_store") {
3780
+ this.db = db;
3769
3781
  this.tableName = tableName;
3770
3782
  }
3771
3783
  async init() {
@@ -4126,8 +4138,8 @@ var crypto = {
4126
4138
  if (!hasNodeCrypto) {
4127
4139
  throw new CraftCryptoError("MD5 is not available in this runtime \u2014 WebCrypto does not implement it. " + "Use sha256/sha512, or call this from Node.");
4128
4140
  }
4129
- const { createHash: createHash3 } = await import("crypto");
4130
- return createHash3("md5").update(data).digest("hex");
4141
+ const { createHash } = await import("crypto");
4142
+ return createHash("md5").update(data).digest("hex");
4131
4143
  }
4132
4144
  if (typeof globalThis.crypto !== "undefined" && globalThis.crypto.subtle) {
4133
4145
  const encoder = new TextEncoder;
@@ -4135,8 +4147,8 @@ var crypto = {
4135
4147
  const hashBuffer = await globalThis.crypto.subtle.digest(algorithm === "sha256" ? "SHA-256" : "SHA-512", dataBuffer);
4136
4148
  return bufferToHex(hashBuffer);
4137
4149
  }
4138
- const { createHash: createHash2 } = await import("crypto");
4139
- return createHash2(algorithm).update(data).digest("hex");
4150
+ const { createHash } = await import("crypto");
4151
+ return createHash(algorithm).update(data).digest("hex");
4140
4152
  },
4141
4153
  async encrypt(data, key) {
4142
4154
  if (typeof window !== "undefined" && window.craft?.crypto) {
@@ -4161,8 +4173,8 @@ var crypto = {
4161
4173
  if (combined.length < 1 + SALT_LEN + IV_LEN + TAG_LEN) {
4162
4174
  throw new CraftCryptoError("Ciphertext too short to be valid");
4163
4175
  }
4164
- const version2 = combined[0];
4165
- if (version2 !== FORMAT_VERSION) {
4176
+ const version = combined[0];
4177
+ if (version !== FORMAT_VERSION) {
4166
4178
  throw new LegacyCiphertextError;
4167
4179
  }
4168
4180
  const salt = combined.slice(1, 1 + SALT_LEN);
@@ -4201,11 +4213,11 @@ async function aesGcmEncrypt(key, iv, plaintext) {
4201
4213
  const ct1 = cipher.update(plaintext);
4202
4214
  const ct2 = cipher.final();
4203
4215
  const tag = cipher.getAuthTag();
4204
- const out2 = new Uint8Array(ct1.length + ct2.length + tag.length);
4205
- out2.set(ct1, 0);
4206
- out2.set(ct2, ct1.length);
4207
- out2.set(tag, ct1.length + ct2.length);
4208
- return out2;
4216
+ const out = new Uint8Array(ct1.length + ct2.length + tag.length);
4217
+ out.set(ct1, 0);
4218
+ out.set(ct2, ct1.length);
4219
+ out.set(tag, ct1.length + ct2.length);
4220
+ return out;
4209
4221
  }
4210
4222
  const out = await globalThis.crypto.subtle.encrypt({ name: "AES-GCM", iv: asBufferSource(iv) }, key, asBufferSource(plaintext));
4211
4223
  return new Uint8Array(out);
@@ -4219,10 +4231,10 @@ async function aesGcmDecrypt(key, iv, ciphertextWithTag) {
4219
4231
  decipher.setAuthTag(tag);
4220
4232
  const pt1 = decipher.update(ct);
4221
4233
  const pt2 = decipher.final();
4222
- const out2 = new Uint8Array(pt1.length + pt2.length);
4223
- out2.set(pt1, 0);
4224
- out2.set(pt2, pt1.length);
4225
- return out2;
4234
+ const out = new Uint8Array(pt1.length + pt2.length);
4235
+ out.set(pt1, 0);
4236
+ out.set(pt2, pt1.length);
4237
+ return out;
4226
4238
  }
4227
4239
  const out = await globalThis.crypto.subtle.decrypt({ name: "AES-GCM", iv: asBufferSource(iv) }, key, asBufferSource(ciphertextWithTag));
4228
4240
  return new Uint8Array(out);
@@ -4607,9 +4619,9 @@ async function tempDir() {
4607
4619
  }
4608
4620
  function exit(code = 0) {
4609
4621
  if (typeof window !== "undefined") {
4610
- const app2 = window.craft?.app;
4611
- if (app2 && typeof app2.quit === "function") {
4612
- app2.quit(code);
4622
+ const app = window.craft?.app;
4623
+ if (app && typeof app.quit === "function") {
4624
+ app.quit(code);
4613
4625
  return;
4614
4626
  }
4615
4627
  }
@@ -4631,18 +4643,18 @@ async function open(target) {
4631
4643
  const platform = getPlatform();
4632
4644
  const { execFile } = await import("child_process");
4633
4645
  const { promisify } = await import("util");
4634
- const exec2 = promisify(execFile);
4646
+ const exec = promisify(execFile);
4635
4647
  switch (platform) {
4636
4648
  case "darwin":
4637
4649
  case "macos":
4638
- await exec2("open", [target]);
4650
+ await exec("open", [target]);
4639
4651
  return;
4640
4652
  case "win32":
4641
4653
  case "windows":
4642
- await exec2("cmd.exe", ["/c", "start", '""', target]);
4654
+ await exec("cmd.exe", ["/c", "start", '""', target]);
4643
4655
  return;
4644
4656
  case "linux":
4645
- await exec2("xdg-open", [target]);
4657
+ await exec("xdg-open", [target]);
4646
4658
  return;
4647
4659
  default:
4648
4660
  throw new Error(`Unsupported platform: ${platform}`);
@@ -4982,10 +4994,10 @@ var secureStorage = {
4982
4994
  }
4983
4995
  };
4984
4996
  function storageHost(method) {
4985
- const host2 = getCraftRoot()?.storage;
4986
- if (typeof host2?.[method] !== "function")
4997
+ const host = getCraftRoot()?.storage;
4998
+ if (typeof host?.[method] !== "function")
4987
4999
  throw Object.assign(new Error("This host does not provide native storage"), { code: "STORAGE_UNSUPPORTED" });
4988
- return host2;
5000
+ return host;
4989
5001
  }
4990
5002
  var storage2 = {
4991
5003
  supportsSetIfAbsent() {
@@ -7026,13 +7038,13 @@ var media = {
7026
7038
  return _hasMediaAccess("microphone", "audioinput");
7027
7039
  },
7028
7040
  async requestPermission(options = {}) {
7029
- const { camera: camera2 = false, microphone = false } = options;
7030
- if (!camera2 && !microphone) {
7041
+ const { camera = false, microphone = false } = options;
7042
+ if (!camera && !microphone) {
7031
7043
  return true;
7032
7044
  }
7033
7045
  try {
7034
7046
  const stream = await this.getMediaStream({
7035
- video: camera2,
7047
+ video: camera,
7036
7048
  audio: microphone
7037
7049
  });
7038
7050
  stream.getTracks().forEach((track) => track.stop());
@@ -7661,47 +7673,6 @@ function onSwipe(listener) {
7661
7673
  return gestures.onSwipe(listener);
7662
7674
  }
7663
7675
  var gestures = { hasNativeGestures, onSwipe };
7664
- // src/components/index.ts
7665
- var exports_components = {};
7666
- __export(exports_components, {
7667
- updateTouchBarItem: () => updateTouchBarItem,
7668
- updateToolbarItem: () => updateToolbarItem,
7669
- tahoeStyle: () => tahoeStyle,
7670
- sidebarSeparator: () => sidebarSeparator,
7671
- sidebarSection: () => sidebarSection,
7672
- sidebarItem: () => sidebarItem,
7673
- showQuickLook: () => showQuickLook,
7674
- showFontPicker: () => showFontPicker,
7675
- showDatePicker: () => showDatePicker,
7676
- showColorPicker: () => showColorPicker,
7677
- setTouchBar: () => setTouchBar,
7678
- setToolbarVisible: () => setToolbarVisible,
7679
- setToolbar: () => setToolbar,
7680
- orbstackStyle: () => orbstackStyle,
7681
- hideQuickLook: () => hideQuickLook,
7682
- default: () => components_default,
7683
- createTahoeSidebar: () => createTahoeSidebar,
7684
- createTableView: () => createTableView,
7685
- createSplitView: () => createSplitView,
7686
- createSidebar: () => createSidebar2,
7687
- createProgress: () => createProgress,
7688
- createOutlineView: () => createOutlineView,
7689
- createOrbStackSidebar: () => createOrbStackSidebar,
7690
- createFileBrowser: () => createFileBrowser,
7691
- createArcSidebar: () => createArcSidebar,
7692
- canQuickLook: () => canQuickLook,
7693
- arcStyle: () => arcStyle,
7694
- TableViewInstance: () => TableViewInstance,
7695
- StyleSheet: () => StyleSheet,
7696
- SplitViewInstance: () => SplitViewInstance,
7697
- Sidebar: () => Sidebar2,
7698
- ProgressInstance: () => ProgressInstance,
7699
- Platform: () => Platform,
7700
- OutlineViewInstance: () => OutlineViewInstance,
7701
- FileBrowserInstance: () => FileBrowserInstance,
7702
- Animated: () => Animated
7703
- });
7704
-
7705
7676
  // src/components/sidebar.ts
7706
7677
  var tahoeStyle = {
7707
7678
  style: "tahoe",
@@ -8909,9 +8880,9 @@ async function buildCSS(options) {
8909
8880
  console.warn("buildCSS can only be run in Node.js environment");
8910
8881
  return;
8911
8882
  }
8912
- const { exec: exec2 } = await import("child_process");
8883
+ const { exec } = await import("child_process");
8913
8884
  const { promisify } = await import("util");
8914
- const execAsync = promisify(exec2);
8885
+ const execAsync = promisify(exec);
8915
8886
  const args = [
8916
8887
  "build",
8917
8888
  "--content",
@@ -9541,9 +9512,9 @@ function renderArcSidebar(data, collapsed = false) {
9541
9512
  const renderItem = (item) => {
9542
9513
  const isSelected = item.selected;
9543
9514
  if (collapsed) {
9544
- const itemClass2 = isSelected ? s.itemCollapsedSelected : s.itemCollapsed;
9515
+ const itemClass = isSelected ? s.itemCollapsedSelected : s.itemCollapsed;
9545
9516
  return `
9546
- <div class='${itemClass2}' data-id='${item.id}'>
9517
+ <div class='${itemClass}' data-id='${item.id}'>
9547
9518
  <span class="${isSelected ? s.itemFaviconSelected : s.itemFavicon}">
9548
9519
  ${item.icon ? getIcon2(item.icon) : ""}
9549
9520
  </span>
@@ -9790,15 +9761,15 @@ var orbstackDemoData = {
9790
9761
  }
9791
9762
  ]
9792
9763
  };
9793
- function getFullPageHTML(sidebarHTML, style2) {
9794
- const bgClass = style2 === "orbstack" ? "bg-[#0f0f0f]" : "bg-neutral-50 dark:bg-neutral-900";
9764
+ function getFullPageHTML(sidebarHTML, style) {
9765
+ const bgClass = style === "orbstack" ? "bg-[#0f0f0f]" : "bg-neutral-50 dark:bg-neutral-900";
9795
9766
  return `
9796
9767
  <!DOCTYPE html>
9797
- <html lang="en" class="${style2 === "orbstack" ? "dark" : ""}">
9768
+ <html lang="en" class="${style === "orbstack" ? "dark" : ""}">
9798
9769
  <head>
9799
9770
  <meta charset='UTF-8'>
9800
9771
  <meta name='viewport' content='width=device-width, initial-scale=1.0'>
9801
- <title>Craft Sidebar - ${style2}</title>
9772
+ <title>Craft Sidebar - ${style}</title>
9802
9773
  <script src='https://cdn.tailwindcss.com'></script>
9803
9774
  <style>
9804
9775
  /* Custom scrollbar */
@@ -9905,20 +9876,20 @@ var reactOptimizations = {
9905
9876
  }
9906
9877
  };
9907
9878
  var vueOptimizations = {
9908
- configureProduction(app2, config = {}) {
9909
- if (!app2?.config)
9879
+ configureProduction(app, config = {}) {
9880
+ if (!app?.config)
9910
9881
  return;
9911
- if (!config.enableDevTools && app2.config.devtools !== undefined) {
9912
- app2.config.devtools = false;
9882
+ if (!config.enableDevTools && app.config.devtools !== undefined) {
9883
+ app.config.devtools = false;
9913
9884
  }
9914
- if (app2.config.performance !== undefined) {
9915
- app2.config.performance = config.performance || false;
9885
+ if (app.config.performance !== undefined) {
9886
+ app.config.performance = config.performance || false;
9916
9887
  }
9917
9888
  if (config.errorHandler) {
9918
- app2.config.errorHandler = config.errorHandler;
9889
+ app.config.errorHandler = config.errorHandler;
9919
9890
  }
9920
9891
  if (config.warnHandler) {
9921
- app2.config.warnHandler = config.warnHandler;
9892
+ app.config.warnHandler = config.warnHandler;
9922
9893
  }
9923
9894
  },
9924
9895
  createAsyncConfig(options = {}) {
@@ -10220,24 +10191,6 @@ var commonOptimizations = {
10220
10191
  }
10221
10192
  };
10222
10193
  // src/updater/index.ts
10223
- var exports_updater = {};
10224
- __export(exports_updater, {
10225
- verifyBundleTrust: () => verifyBundleTrust,
10226
- updaterCommand: () => updaterCommand,
10227
- swapBundle: () => swapBundle,
10228
- readBundleIdentity: () => readBundleIdentity,
10229
- isMacOS: () => isMacOS,
10230
- generateUpdateManifest: () => generateUpdateManifest,
10231
- extractBundleFromZip: () => extractBundleFromZip,
10232
- extractBundleFromDmg: () => extractBundleFromDmg,
10233
- extractBundle: () => extractBundle,
10234
- dittoBundle: () => dittoBundle,
10235
- default: () => updater_default,
10236
- clearQuarantine: () => clearQuarantine,
10237
- canReplaceBundle: () => canReplaceBundle,
10238
- DeltaGenerator: () => DeltaGenerator,
10239
- AutoUpdater: () => AutoUpdater
10240
- });
10241
10194
  import { createReadStream, createWriteStream, existsSync as existsSync5, mkdirSync as mkdirSync2, readFileSync as readFileSync2, rmdirSync, statSync as statSync3, unlinkSync, writeFileSync as writeFileSync3 } from "fs";
10242
10195
  import { join as join4, basename as basename3, dirname as dirname2 } from "path";
10243
10196
  import { tmpdir as tmpdir2 } from "os";
@@ -10694,8 +10647,8 @@ class AutoUpdater extends EventEmitter3 {
10694
10647
  throw new Error("No update downloaded");
10695
10648
  }
10696
10649
  if (this.updateInfo) {
10697
- const platform2 = this.getPlatform();
10698
- const platformUpdate = this.updateInfo.platforms[platform2];
10650
+ const platform = this.getPlatform();
10651
+ const platformUpdate = this.updateInfo.platforms[platform];
10699
10652
  if (platformUpdate) {
10700
10653
  const hash = await this.computeFileHash(this.downloadPath);
10701
10654
  if (hash !== platformUpdate.sha256) {
@@ -10821,8 +10774,8 @@ class AutoUpdater extends EventEmitter3 {
10821
10774
  const downloadPath = this.downloadPath;
10822
10775
  if (downloadPath.endsWith(".AppImage")) {
10823
10776
  execFileSync2("chmod", ["+x", downloadPath]);
10824
- const { renameSync: renameSync2 } = await import("fs");
10825
- renameSync2(downloadPath, this.config.appPath);
10777
+ const { renameSync } = await import("fs");
10778
+ renameSync(downloadPath, this.config.appPath);
10826
10779
  } else if (downloadPath.endsWith(".deb")) {
10827
10780
  execFileSync2("sudo", ["dpkg", "-i", downloadPath]);
10828
10781
  } else if (downloadPath.endsWith(".rpm")) {
@@ -11005,14 +10958,14 @@ async function updaterCommand(args) {
11005
10958
  switch (subcommand) {
11006
10959
  case "check": {
11007
10960
  const url = rest[0];
11008
- const version2 = rest[1] || "0.0.0";
10961
+ const version = rest[1] || "0.0.0";
11009
10962
  if (!url) {
11010
10963
  console.error("Usage: craft updater check <update-url> [current-version]");
11011
10964
  process.exit(1);
11012
10965
  }
11013
10966
  const updater = new AutoUpdater({
11014
10967
  updateUrl: url,
11015
- currentVersion: version2,
10968
+ currentVersion: version,
11016
10969
  appPath: process.cwd(),
11017
10970
  autoDownload: false
11018
10971
  });
@@ -11046,14 +10999,14 @@ ${update.releaseNotes}`);
11046
10999
  break;
11047
11000
  }
11048
11001
  case "generate-manifest": {
11049
- const version2 = rest[0];
11002
+ const version = rest[0];
11050
11003
  const outputPath = rest[1] || "update.json";
11051
- if (!version2) {
11004
+ if (!version) {
11052
11005
  console.error("Usage: craft updater generate-manifest <version> [output]");
11053
11006
  process.exit(1);
11054
11007
  }
11055
11008
  const manifest = {
11056
- version: version2,
11009
+ version,
11057
11010
  releaseDate: new Date().toISOString(),
11058
11011
  platforms: {}
11059
11012
  };
@@ -11247,83 +11200,83 @@ class CraftApp {
11247
11200
  }
11248
11201
  buildArgs() {
11249
11202
  const args = [];
11250
- const { window: window3, html, url, appName } = this.config;
11203
+ const { window: window2, html, url, appName } = this.config;
11251
11204
  if (appName)
11252
11205
  args.push("--app-name", appName);
11253
- if (!window3?.menubarOnly) {
11206
+ if (!window2?.menubarOnly) {
11254
11207
  if (url) {
11255
11208
  args.push("--url", url);
11256
11209
  } else if (html) {
11257
11210
  args.push("--html", html);
11258
11211
  }
11259
11212
  }
11260
- if (window3?.title)
11261
- args.push("--title", window3.title);
11262
- if (window3?.width)
11263
- args.push("--width", String(window3.width));
11264
- if (window3?.height)
11265
- args.push("--height", String(window3.height));
11266
- if (window3?.x !== undefined)
11267
- args.push("--x", String(window3.x));
11268
- if (window3?.y !== undefined)
11269
- args.push("--y", String(window3.y));
11270
- if (window3?.frameless)
11213
+ if (window2?.title)
11214
+ args.push("--title", window2.title);
11215
+ if (window2?.width)
11216
+ args.push("--width", String(window2.width));
11217
+ if (window2?.height)
11218
+ args.push("--height", String(window2.height));
11219
+ if (window2?.x !== undefined)
11220
+ args.push("--x", String(window2.x));
11221
+ if (window2?.y !== undefined)
11222
+ args.push("--y", String(window2.y));
11223
+ if (window2?.frameless)
11271
11224
  args.push("--frameless");
11272
- if (window3?.transparent)
11225
+ if (window2?.transparent)
11273
11226
  args.push("--transparent");
11274
- if (window3?.alwaysOnTop)
11227
+ if (window2?.alwaysOnTop)
11275
11228
  args.push("--always-on-top");
11276
- if (window3?.fullscreen)
11229
+ if (window2?.fullscreen)
11277
11230
  args.push("--fullscreen");
11278
- if (!window3?.resizable)
11231
+ if (!window2?.resizable)
11279
11232
  args.push("--no-resize");
11280
- if (window3?.darkMode)
11233
+ if (window2?.darkMode)
11281
11234
  args.push("--dark");
11282
- if (window3?.hotReload)
11235
+ if (window2?.hotReload)
11283
11236
  args.push("--hot-reload");
11284
- if (window3?.devTools === false)
11237
+ if (window2?.devTools === false)
11285
11238
  args.push("--no-devtools");
11286
- else if (window3?.devTools === true)
11239
+ else if (window2?.devTools === true)
11287
11240
  args.push("--dev-tools");
11288
- if (window3?.systemTray)
11241
+ if (window2?.systemTray)
11289
11242
  args.push("--system-tray");
11290
- if (window3?.hideDockIcon)
11243
+ if (window2?.hideDockIcon)
11291
11244
  args.push("--hide-dock-icon");
11292
- if (window3?.menubarOnly)
11245
+ if (window2?.menubarOnly)
11293
11246
  args.push("--menubar-only");
11294
- if (window3?.trayPopover)
11247
+ if (window2?.trayPopover)
11295
11248
  args.push("--tray-popover");
11296
- if (window3?.titlebarHidden)
11249
+ if (window2?.titlebarHidden)
11297
11250
  args.push("--titlebar-hidden");
11298
- if (window3?.headless)
11251
+ if (window2?.headless)
11299
11252
  args.push("--headless");
11300
- if (window3?.keepRunning === true)
11253
+ if (window2?.keepRunning === true)
11301
11254
  args.push("--keep-running");
11302
- else if (window3?.keepRunning === false)
11255
+ else if (window2?.keepRunning === false)
11303
11256
  args.push("--quit-on-close");
11304
- if (window3?.webWindowMaterial) {
11257
+ if (window2?.webWindowMaterial) {
11305
11258
  args.push("--web-window-material");
11306
- } else if (window3?.webSidebarMaterial) {
11259
+ } else if (window2?.webSidebarMaterial) {
11307
11260
  args.push("--web-sidebar-material");
11308
- if (window3?.webSidebarWidth)
11309
- args.push("--web-sidebar-width", String(window3.webSidebarWidth));
11310
- if (window3?.webSidebarMaterialOpacity !== undefined)
11311
- args.push("--web-sidebar-material-opacity", String(window3.webSidebarMaterialOpacity));
11312
- }
11313
- if (window3?.icon)
11314
- args.push("--icon", window3.icon);
11315
- if (window3?.frameAutosave)
11316
- args.push("--frame-autosave", window3.frameAutosave);
11317
- if (window3?.nativeSidebar) {
11261
+ if (window2?.webSidebarWidth)
11262
+ args.push("--web-sidebar-width", String(window2.webSidebarWidth));
11263
+ if (window2?.webSidebarMaterialOpacity !== undefined)
11264
+ args.push("--web-sidebar-material-opacity", String(window2.webSidebarMaterialOpacity));
11265
+ }
11266
+ if (window2?.icon)
11267
+ args.push("--icon", window2.icon);
11268
+ if (window2?.frameAutosave)
11269
+ args.push("--frame-autosave", window2.frameAutosave);
11270
+ if (window2?.nativeSidebar) {
11318
11271
  args.push("--native-sidebar");
11319
- if (window3?.sidebarWidth)
11320
- args.push("--sidebar-width", String(window3.sidebarWidth));
11321
- const sidebarConfig = window3?.sidebarConfig ? {
11322
- ...window3.sidebarConfig,
11323
- variant: window3.sidebarConfig.variant ?? window3.sidebarVariant,
11324
- material: window3.sidebarConfig.material ?? window3.sidebarMaterial,
11325
- backgroundEffect: window3.sidebarConfig.backgroundEffect ?? window3.sidebarBackgroundEffect,
11326
- allowsVibrancy: window3.sidebarConfig.allowsVibrancy ?? window3.sidebarAllowsVibrancy
11272
+ if (window2?.sidebarWidth)
11273
+ args.push("--sidebar-width", String(window2.sidebarWidth));
11274
+ const sidebarConfig = window2?.sidebarConfig ? {
11275
+ ...window2.sidebarConfig,
11276
+ variant: window2.sidebarConfig.variant ?? window2.sidebarVariant,
11277
+ material: window2.sidebarConfig.material ?? window2.sidebarMaterial,
11278
+ backgroundEffect: window2.sidebarConfig.backgroundEffect ?? window2.sidebarBackgroundEffect,
11279
+ allowsVibrancy: window2.sidebarConfig.allowsVibrancy ?? window2.sidebarAllowsVibrancy
11327
11280
  } : undefined;
11328
11281
  if (sidebarConfig?.variant === "desktop") {
11329
11282
  sidebarConfig.material = sidebarConfig.material ?? "sidebar";
@@ -11363,240 +11316,240 @@ function createApp(config) {
11363
11316
  return new CraftApp(config);
11364
11317
  }
11365
11318
  async function show2(html, options) {
11366
- const app2 = new CraftApp({ html, window: options });
11367
- return app2.show();
11319
+ const app = new CraftApp({ html, window: options });
11320
+ return app.show();
11368
11321
  }
11369
11322
  async function loadURL(url, options) {
11370
- const app2 = new CraftApp({ url, window: options });
11371
- return app2.show();
11323
+ const app = new CraftApp({ url, window: options });
11324
+ return app.show();
11372
11325
  }
11373
11326
  export {
11374
- writeText,
11375
- writeHTML,
11376
- writeBinaryFile,
11377
- workManager,
11378
- windowsWidgets,
11379
- windowsHello,
11380
- windowManager,
11381
- windowManagement,
11382
- window2 as window,
11383
- win,
11384
- watch,
11385
- vueOptimizations,
11386
- verifyPassword,
11387
- verifyBundleTrust,
11388
- variants,
11389
- uuid,
11390
- exports_updater as updater,
11391
- updateTouchBarItem,
11392
- updateToolbarItem,
11393
- unregisterShortcut,
11394
- tw,
11395
- trayManager,
11396
- tray,
11397
- touchBar,
11398
- toastNotifications,
11399
- tipKit,
11400
- timingSafeEqual,
11401
- tempDir,
11402
- taskbarProgress,
11403
- tahoeStyles,
11404
- tahoeStyle,
11405
- tahoeDemoData,
11406
- swapBundle,
11407
- svelteOptimizations,
11408
- submenu,
11409
- styles,
11410
- style,
11411
- storeKit,
11412
- storage2 as storage,
11413
- stat,
11414
- startupTask,
11415
- stageManager,
11416
- spotlight,
11417
- spawn2 as spawn,
11418
- spaces,
11419
- sidecar,
11420
- sidebarUtils,
11421
- sidebarSeparator,
11422
- sidebarSection,
11423
- sidebarItem,
11424
- sidebarCSSVariables,
11425
- sidebar,
11426
- showQuickLook,
11427
- showPrompt,
11428
- showFontPicker,
11429
- showDockIcon,
11430
- showDatePicker,
11431
- showConfirm,
11432
- showColorPicker,
11433
- showAlert,
11434
- show2 as show,
11435
- shareTarget,
11436
- sharePlay,
11437
- shareExtension,
11438
- share,
11439
- setTouchBar,
11440
- setToolbarVisible,
11441
- setToolbar,
11442
- setBadge,
11443
- separator,
11444
- secureStorage,
11445
- secondaryTiles,
11446
- saveFile,
11447
- resolveCraftBinary,
11448
- requireCraftRuntime,
11449
- renderTahoeSidebar,
11450
- renderOrbStackSidebar,
11451
- renderArcSidebar,
11452
- registerShortcut,
11453
- readText,
11454
- readHTML,
11455
- readBundleIdentity,
11456
- readBinaryFile,
11457
- reactOptimizations,
11458
- randomString,
11459
- quit,
11460
- quickActions,
11461
- predictiveBack,
11462
- playBilling,
11463
- photoPicker,
11464
- permissions,
11465
- parseCraftVersionOutput,
11466
- packageApp,
11467
- pack,
11468
- orbstackStyles,
11469
- orbstackStyle,
11470
- orbstackDemoData,
11471
- openFolder,
11472
- openFile,
11473
- openDatabase,
11474
- open,
11475
- onSwipe,
11476
- notify,
11477
- notifications,
11478
- notifications as notification,
11479
- msixUpdate,
11480
- move,
11481
- menuItem,
11482
- media,
11483
- materialYou,
11484
- location,
11485
- loadURL,
11486
- liveActivities,
11487
- lifecycle,
11488
- jumpList,
11489
- isMobile,
11490
- isDesktop,
11491
- isDarkMode,
11492
- isCraftRuntime,
11493
- isCraft,
11494
- http,
11495
- homeDir,
11496
- hmac,
11497
- hideQuickLook,
11498
- hideDockIcon,
11499
- hide,
11500
- hashPassword,
11501
- hasNativeSpaces,
11502
- hasNativeGestures,
11503
- haptics,
11504
- handoff,
11505
- getVersion,
11506
- getSystemInfo,
11507
- getSidebarStyle,
11508
- getPlatform,
11509
- getPath,
11510
- getNativeBridgeCall,
11511
- getName,
11512
- getLocale,
11513
- getInfo,
11514
- getFullPageHTML,
11515
- getCraft,
11516
- gestures,
11517
- generateUpdateManifest,
11518
- generateConfig,
11519
- fs,
11520
- foregroundService,
11521
- focusFilters,
11522
- focus,
11523
- extractBundleFromZip,
11524
- extractBundleFromDmg,
11525
- extractBundle,
11526
- exit,
11527
- exec,
11528
- env,
11529
- dittoBundle,
11530
- dialog,
11531
- device,
11532
- desktopWidgets,
11533
- db,
11534
- cx,
11535
- cwd,
11536
- crypto,
11537
- createWindow,
11538
- createTahoeSidebar,
11539
- createTableView,
11540
- createSplitView,
11541
- createSpacesSidebar,
11542
- createSidebar,
11543
- createSettingsSidebar,
11544
- createProgress,
11545
- createOutlineView,
11546
- createOrbStackSidebar,
11547
- createMenubarApp,
11548
- createFileSidebar,
11549
- createFileBrowser,
11550
- createClient,
11551
- createArcSidebar,
11552
- createApp,
11553
- craftUnavailableMessage,
11554
- craftProcessFailedMessage,
11555
- craftBinaryNotFoundMessage,
11556
- copy,
11557
- exports_components as components,
11558
- commonOptimizations,
11559
- cx as clsx,
11560
- clipboard,
11561
- clearQuarantine,
11562
- checkbox,
11563
- carplay,
11564
- canReplaceBundle,
11565
- canQuickLook,
11566
- camera,
11567
- buildMenu,
11568
- buildCSS,
11569
- biometrics,
11570
- argv,
11571
- arcStyles,
11572
- arcStyle,
11573
- arcDemoData,
11574
- appManager,
11575
- appLanguage,
11576
- appIntents,
11577
- appClips,
11578
- app,
11579
- widgets as androidWidgets,
11580
- Window,
11581
- WebSocketClient,
11582
- Timer,
11583
- TableViewInstance,
11584
- SystemTray,
11585
- StyleSheet,
11586
- Storage,
11587
- SplitViewInstance,
11588
- Sidebar,
11589
- ProgressInstance,
11590
- OutlineViewInstance,
11591
- MenubarApp,
11592
- KeyValueStore,
11593
- HttpError,
11594
- HttpClient,
11595
- FileBrowserInstance,
11596
- Database,
11597
- CraftApp,
11598
- ChildProcess,
11599
- AutoUpdater,
11327
+ Animated,
11600
11328
  AudioManager,
11601
- Animated
11329
+ AutoUpdater,
11330
+ ChildProcess,
11331
+ CraftApp,
11332
+ Database,
11333
+ FileBrowserInstance,
11334
+ HttpClient,
11335
+ HttpError,
11336
+ KeyValueStore,
11337
+ MenubarApp,
11338
+ OutlineViewInstance,
11339
+ ProgressInstance,
11340
+ Sidebar,
11341
+ SplitViewInstance,
11342
+ Storage,
11343
+ StyleSheet,
11344
+ SystemTray,
11345
+ TableViewInstance,
11346
+ Timer,
11347
+ WebSocketClient,
11348
+ Window,
11349
+ widgets as androidWidgets,
11350
+ app,
11351
+ appClips,
11352
+ appIntents,
11353
+ appLanguage,
11354
+ appManager,
11355
+ arcDemoData,
11356
+ arcStyle,
11357
+ arcStyles,
11358
+ argv,
11359
+ biometrics,
11360
+ buildCSS,
11361
+ buildMenu,
11362
+ camera,
11363
+ canQuickLook,
11364
+ canReplaceBundle,
11365
+ carplay,
11366
+ checkbox,
11367
+ clearQuarantine,
11368
+ clipboard,
11369
+ cx as clsx,
11370
+ commonOptimizations,
11371
+ exports_components as components,
11372
+ copy,
11373
+ craftBinaryNotFoundMessage,
11374
+ craftProcessFailedMessage,
11375
+ craftUnavailableMessage,
11376
+ createApp,
11377
+ createArcSidebar,
11378
+ createClient,
11379
+ createFileBrowser,
11380
+ createFileSidebar,
11381
+ createMenubarApp,
11382
+ createOrbStackSidebar,
11383
+ createOutlineView,
11384
+ createProgress,
11385
+ createSettingsSidebar,
11386
+ createSidebar,
11387
+ createSpacesSidebar,
11388
+ createSplitView,
11389
+ createTableView,
11390
+ createTahoeSidebar,
11391
+ createWindow,
11392
+ crypto,
11393
+ cwd,
11394
+ cx,
11395
+ db,
11396
+ desktopWidgets,
11397
+ device,
11398
+ dialog,
11399
+ dittoBundle,
11400
+ env,
11401
+ exec,
11402
+ exit,
11403
+ extractBundle,
11404
+ extractBundleFromDmg,
11405
+ extractBundleFromZip,
11406
+ focus,
11407
+ focusFilters,
11408
+ foregroundService,
11409
+ fs,
11410
+ generateConfig,
11411
+ generateUpdateManifest,
11412
+ gestures,
11413
+ getCraft,
11414
+ getFullPageHTML,
11415
+ getInfo,
11416
+ getLocale,
11417
+ getName,
11418
+ getNativeBridgeCall,
11419
+ getPath,
11420
+ getPlatform,
11421
+ getSidebarStyle,
11422
+ getSystemInfo,
11423
+ getVersion,
11424
+ handoff,
11425
+ haptics,
11426
+ hasNativeGestures,
11427
+ hasNativeSpaces,
11428
+ hashPassword,
11429
+ hide,
11430
+ hideDockIcon,
11431
+ hideQuickLook,
11432
+ hmac,
11433
+ homeDir,
11434
+ http,
11435
+ isCraft,
11436
+ isCraftRuntime,
11437
+ isDarkMode,
11438
+ isDesktop,
11439
+ isMobile,
11440
+ jumpList,
11441
+ lifecycle,
11442
+ liveActivities,
11443
+ loadURL,
11444
+ location,
11445
+ materialYou,
11446
+ media,
11447
+ menuItem,
11448
+ move,
11449
+ msixUpdate,
11450
+ notifications as notification,
11451
+ notifications,
11452
+ notify,
11453
+ onSwipe,
11454
+ open,
11455
+ openDatabase,
11456
+ openFile,
11457
+ openFolder,
11458
+ orbstackDemoData,
11459
+ orbstackStyle,
11460
+ orbstackStyles,
11461
+ pack,
11462
+ packageApp,
11463
+ parseCraftVersionOutput,
11464
+ permissions,
11465
+ photoPicker,
11466
+ playBilling,
11467
+ predictiveBack,
11468
+ quickActions,
11469
+ quit,
11470
+ randomString,
11471
+ reactOptimizations,
11472
+ readBinaryFile,
11473
+ readBundleIdentity,
11474
+ readHTML,
11475
+ readText,
11476
+ registerShortcut,
11477
+ renderArcSidebar,
11478
+ renderOrbStackSidebar,
11479
+ renderTahoeSidebar,
11480
+ requireCraftRuntime,
11481
+ resolveCraftBinary,
11482
+ saveFile,
11483
+ secondaryTiles,
11484
+ secureStorage,
11485
+ separator,
11486
+ setBadge,
11487
+ setToolbar,
11488
+ setToolbarVisible,
11489
+ setTouchBar,
11490
+ share,
11491
+ shareExtension,
11492
+ sharePlay,
11493
+ shareTarget,
11494
+ show2 as show,
11495
+ showAlert,
11496
+ showColorPicker,
11497
+ showConfirm,
11498
+ showDatePicker,
11499
+ showDockIcon,
11500
+ showFontPicker,
11501
+ showPrompt,
11502
+ showQuickLook,
11503
+ sidebar,
11504
+ sidebarCSSVariables,
11505
+ sidebarItem,
11506
+ sidebarSection,
11507
+ sidebarSeparator,
11508
+ sidebarUtils,
11509
+ sidecar,
11510
+ spaces,
11511
+ spawn2 as spawn,
11512
+ spotlight,
11513
+ stageManager,
11514
+ startupTask,
11515
+ stat,
11516
+ storage2 as storage,
11517
+ storeKit,
11518
+ style,
11519
+ styles,
11520
+ submenu,
11521
+ svelteOptimizations,
11522
+ swapBundle,
11523
+ tahoeDemoData,
11524
+ tahoeStyle,
11525
+ tahoeStyles,
11526
+ taskbarProgress,
11527
+ tempDir,
11528
+ timingSafeEqual,
11529
+ tipKit,
11530
+ toastNotifications,
11531
+ touchBar,
11532
+ tray,
11533
+ trayManager,
11534
+ tw,
11535
+ unregisterShortcut,
11536
+ updateToolbarItem,
11537
+ updateTouchBarItem,
11538
+ exports_updater as updater,
11539
+ uuid,
11540
+ variants,
11541
+ verifyBundleTrust,
11542
+ verifyPassword,
11543
+ vueOptimizations,
11544
+ watch,
11545
+ win,
11546
+ window2 as window,
11547
+ windowManagement,
11548
+ windowManager,
11549
+ windowsHello,
11550
+ windowsWidgets,
11551
+ workManager,
11552
+ writeBinaryFile,
11553
+ writeHTML,
11554
+ writeText
11602
11555
  };