@arcanewizards/timecode-toolbox 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/LICENSE +21 -0
  2. package/dist/components/frontend/index.js +865 -272
  3. package/dist/components/frontend/index.mjs +855 -262
  4. package/dist/entrypoint.css +163 -53
  5. package/dist/entrypoint.js +1474 -493
  6. package/dist/entrypoint.js.map +4 -4
  7. package/dist/frontend.js +1474 -493
  8. package/dist/frontend.js.map +4 -4
  9. package/dist/index.d.mts +3 -1
  10. package/dist/index.d.ts +3 -1
  11. package/dist/index.js +308 -37
  12. package/dist/index.mjs +329 -49
  13. package/dist/start.d.mts +1 -2
  14. package/dist/start.d.ts +1 -2
  15. package/dist/start.js +311 -38
  16. package/dist/start.mjs +332 -50
  17. package/package.json +12 -6
  18. package/.turbo/turbo-build.log +0 -58
  19. package/.turbo/turbo-lint.log +0 -4
  20. package/CHANGELOG.md +0 -40
  21. package/eslint.config.mjs +0 -49
  22. package/src/app.tsx +0 -147
  23. package/src/components/backend/index.ts +0 -6
  24. package/src/components/backend/toolbox-root.ts +0 -119
  25. package/src/components/frontend/constants.ts +0 -81
  26. package/src/components/frontend/entrypoint.ts +0 -12
  27. package/src/components/frontend/frontend.css +0 -108
  28. package/src/components/frontend/index.tsx +0 -46
  29. package/src/components/frontend/toolbox/content.tsx +0 -45
  30. package/src/components/frontend/toolbox/context.tsx +0 -63
  31. package/src/components/frontend/toolbox/core/size-aware-div.tsx +0 -51
  32. package/src/components/frontend/toolbox/core/timecode-display.tsx +0 -592
  33. package/src/components/frontend/toolbox/generators.tsx +0 -318
  34. package/src/components/frontend/toolbox/inputs.tsx +0 -484
  35. package/src/components/frontend/toolbox/outputs.tsx +0 -581
  36. package/src/components/frontend/toolbox/preferences.ts +0 -25
  37. package/src/components/frontend/toolbox/root.tsx +0 -335
  38. package/src/components/frontend/toolbox/settings.tsx +0 -54
  39. package/src/components/frontend/toolbox/types.ts +0 -28
  40. package/src/components/frontend/toolbox/util.tsx +0 -61
  41. package/src/components/proto.ts +0 -420
  42. package/src/config.ts +0 -7
  43. package/src/generators/clock.tsx +0 -206
  44. package/src/generators/index.tsx +0 -15
  45. package/src/index.ts +0 -38
  46. package/src/inputs/artnet.tsx +0 -305
  47. package/src/inputs/index.tsx +0 -13
  48. package/src/inputs/tcnet.tsx +0 -272
  49. package/src/outputs/artnet.tsx +0 -170
  50. package/src/outputs/index.tsx +0 -11
  51. package/src/start.ts +0 -47
  52. package/src/tree.ts +0 -133
  53. package/src/types.ts +0 -12
  54. package/src/urls.ts +0 -49
  55. package/src/util.ts +0 -82
  56. package/tailwind.config.cjs +0 -7
  57. package/tsconfig.json +0 -10
  58. package/tsup.config.ts +0 -10
package/dist/index.mjs CHANGED
@@ -4,7 +4,13 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getProtoOf = Object.getPrototypeOf;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __commonJS = (cb, mod) => function __require() {
7
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
8
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
9
+ }) : x)(function(x) {
10
+ if (typeof require !== "undefined") return require.apply(this, arguments);
11
+ throw Error('Dynamic require of "' + x + '" is not supported');
12
+ });
13
+ var __commonJS = (cb, mod) => function __require2() {
8
14
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
15
  };
10
16
  var __export = (target, all) => {
@@ -1805,6 +1811,7 @@ var runSigilApp = ({
1805
1811
  logger: upstreamLogger,
1806
1812
  title,
1807
1813
  version: version2,
1814
+ edition,
1808
1815
  appProps,
1809
1816
  toolkitOptions,
1810
1817
  createApp: createApp2,
@@ -1863,10 +1870,10 @@ var runSigilApp = ({
1863
1870
  logger.info(`${title} ready to start listening`);
1864
1871
  }
1865
1872
  });
1866
- let api = null;
1873
+ let api2 = null;
1867
1874
  const apiListeners = /* @__PURE__ */ new Set();
1868
1875
  const setAppApi = (value) => {
1869
- api = value;
1876
+ api2 = value;
1870
1877
  for (const listener of apiListeners) {
1871
1878
  listener(value);
1872
1879
  }
@@ -1899,6 +1906,7 @@ var runSigilApp = ({
1899
1906
  createApp2({
1900
1907
  title,
1901
1908
  version: version2,
1909
+ edition,
1902
1910
  toolkit,
1903
1911
  logger,
1904
1912
  logEventEmitter,
@@ -1918,8 +1926,8 @@ var runSigilApp = ({
1918
1926
  if (event === "apiChange") {
1919
1927
  const apiListener = listener;
1920
1928
  apiListeners.add(apiListener);
1921
- if (api) {
1922
- apiListener(api);
1929
+ if (api2) {
1930
+ apiListener(api2);
1923
1931
  }
1924
1932
  return;
1925
1933
  }
@@ -2133,10 +2141,10 @@ var AppListenerManager = ({
2133
2141
 
2134
2142
  // src/app.tsx
2135
2143
  import {
2136
- useCallback as useCallback6,
2137
- useEffect as useEffect9,
2138
- useMemo as useMemo5,
2139
- useState as useState6
2144
+ useCallback as useCallback7,
2145
+ useEffect as useEffect11,
2146
+ useMemo as useMemo6,
2147
+ useState as useState7
2140
2148
  } from "react";
2141
2149
 
2142
2150
  // src/components/backend/index.ts
@@ -6288,12 +6296,18 @@ var OUTPUT_CONFIG = zod_default.object({
6288
6296
  var TOOLBOX_CONFIG = zod_default.object({
6289
6297
  inputs: zod_default.record(zod_default.string(), INPUT_CONFIG),
6290
6298
  generators: zod_default.record(zod_default.string(), GENERATOR_CONFIG),
6291
- outputs: zod_default.record(zod_default.string(), OUTPUT_CONFIG)
6299
+ outputs: zod_default.record(zod_default.string(), OUTPUT_CONFIG),
6300
+ /**
6301
+ * Hash of the license the user has agreed to.
6302
+ */
6303
+ agreedToLicense: zod_default.string().optional(),
6304
+ checkForUpdates: zod_default.boolean().optional().default(true)
6292
6305
  });
6293
6306
  var DEFAULT_CONFIG = {
6294
6307
  inputs: {},
6295
6308
  generators: {},
6296
- outputs: {}
6309
+ outputs: {},
6310
+ checkForUpdates: true
6297
6311
  };
6298
6312
  var isPlaying = (state) => state.state === "playing" || state.state === "lagging";
6299
6313
  var isStopped = (state) => state.state === "stopped";
@@ -6309,9 +6323,11 @@ var DEFAULT_PROPS2 = {
6309
6323
  state: {
6310
6324
  inputs: {},
6311
6325
  outputs: {},
6312
- generators: {}
6326
+ generators: {},
6327
+ updates: null
6313
6328
  },
6314
- handlers: { children: {} }
6329
+ handlers: { children: {} },
6330
+ license: ""
6315
6331
  };
6316
6332
  var ToolboxRoot = class extends Base {
6317
6333
  /** @hidden */
@@ -6339,7 +6355,8 @@ var ToolboxRoot = class extends Base {
6339
6355
  key: idMap.getId(this),
6340
6356
  config: this.props.config,
6341
6357
  state: this.props.state,
6342
- handlers: this.props.handlers
6358
+ handlers: this.props.handlers,
6359
+ license: this.props.license
6343
6360
  };
6344
6361
  }
6345
6362
  /** @hidden */
@@ -6368,9 +6385,56 @@ var ToolboxRoot = class extends Base {
6368
6385
  };
6369
6386
  };
6370
6387
 
6388
+ // src/components/backend/license-gate.ts
6389
+ import {
6390
+ Base as Base2,
6391
+ EventEmitter as EventEmitter4
6392
+ } from "@arcanejs/toolkit/components/base";
6393
+ var DEFAULT_PROPS3 = {
6394
+ license: "",
6395
+ hash: ""
6396
+ };
6397
+ var LicenseGate = class extends Base2 {
6398
+ /** @hidden */
6399
+ events = new EventEmitter4();
6400
+ constructor(props) {
6401
+ super(DEFAULT_PROPS3, props, {
6402
+ onPropsUpdated: (oldProps) => this.events.processPropChanges(
6403
+ {
6404
+ onAcceptLicense: "acceptLicense"
6405
+ },
6406
+ oldProps,
6407
+ this.props
6408
+ )
6409
+ });
6410
+ this.triggerInitialPropsUpdate();
6411
+ }
6412
+ addListener = this.events.addListener;
6413
+ removeListener = this.events.removeListener;
6414
+ /** @hidden */
6415
+ getProtoInfo(idMap) {
6416
+ return {
6417
+ namespace: "timecode-toolbox",
6418
+ component: "license-gate",
6419
+ key: idMap.getId(this),
6420
+ license: this.props.license,
6421
+ hash: this.props.hash
6422
+ };
6423
+ }
6424
+ /** @hidden */
6425
+ handleMessage = (message) => {
6426
+ if (isTimecodeToolboxComponentMessage(message, "license-gate")) {
6427
+ if (message.action === "accept-license") {
6428
+ this.events.emit("acceptLicense", message.hash);
6429
+ }
6430
+ }
6431
+ };
6432
+ };
6433
+
6371
6434
  // src/components/backend/index.ts
6372
6435
  var C = prepareComponents2("timecode-toolbox", {
6373
- ToolboxRoot
6436
+ ToolboxRoot,
6437
+ LicenseGate
6374
6438
  });
6375
6439
 
6376
6440
  // src/config.ts
@@ -6454,7 +6518,7 @@ var TIMECODE_FPS = {
6454
6518
 
6455
6519
  // ../../packages/artnet/dist/index.js
6456
6520
  import { createSocket } from "dgram";
6457
- import EventEmitter4 from "events";
6521
+ import EventEmitter5 from "events";
6458
6522
  var ARTNET_HEADER = "Art-Net\0";
6459
6523
  var ARTNET_VERSION = 14;
6460
6524
  var OP_TIME_CODE = 38656;
@@ -6571,7 +6635,7 @@ var parseTimecodePacket = (packet, source) => {
6571
6635
  };
6572
6636
  };
6573
6637
  var createArtnet = (config) => {
6574
- const events = new EventEmitter4();
6638
+ const events = new EventEmitter5();
6575
6639
  let sendSocket = null;
6576
6640
  let receiveSocket = null;
6577
6641
  let destroyed = false;
@@ -6972,7 +7036,7 @@ var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
6972
7036
  var __getOwnPropNames2 = Object.getOwnPropertyNames;
6973
7037
  var __getProtoOf2 = Object.getPrototypeOf;
6974
7038
  var __hasOwnProp2 = Object.prototype.hasOwnProperty;
6975
- var __commonJS2 = (cb, mod) => function __require() {
7039
+ var __commonJS2 = (cb, mod) => function __require2() {
6976
7040
  return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
6977
7041
  };
6978
7042
  var __copyProps2 = (to, from, except, desc) => {
@@ -7511,7 +7575,7 @@ var calculateUniqueNodeId = (info) => {
7511
7575
 
7512
7576
  // ../../packages/tcnet/dist/index.js
7513
7577
  import { createSocket as createSocket2 } from "dgram";
7514
- import EventEmitter5 from "events";
7578
+ import EventEmitter6 from "events";
7515
7579
  import { promisify } from "util";
7516
7580
  var require_lodash = __commonJS2({
7517
7581
  "../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/lodash.js"(exports, module) {
@@ -13030,7 +13094,7 @@ var bindSocket2 = (socket, port, address) => {
13030
13094
  };
13031
13095
  var createTCNetNode = (props) => {
13032
13096
  const { logger } = props;
13033
- const events = new EventEmitter5();
13097
+ const events = new EventEmitter6();
13034
13098
  let iface = null;
13035
13099
  const sockets = {
13036
13100
  broadcastSend: null,
@@ -13541,7 +13605,7 @@ var createTCNetNode = (props) => {
13541
13605
  };
13542
13606
 
13543
13607
  // ../../packages/tcnet/dist/monitor.js
13544
- import EventEmitter6 from "events";
13608
+ import EventEmitter7 from "events";
13545
13609
  var MAX_DELTA_MS = 10;
13546
13610
  var layerDataIdToIndex = (dataLayerId) => {
13547
13611
  return dataLayerId - 1;
@@ -13560,7 +13624,7 @@ var TCNET_LAYER_INDEXES = Array.from(
13560
13624
  (_, i) => asLayerIndex(i)
13561
13625
  );
13562
13626
  var createTCNetTimecodeMonitor = (tcNetNode, logger) => {
13563
- const events = new EventEmitter6();
13627
+ const events = new EventEmitter7();
13564
13628
  const on = events.on.bind(events);
13565
13629
  const addListener = events.addListener.bind(events);
13566
13630
  const removeListener = events.removeListener.bind(events);
@@ -14466,11 +14530,179 @@ var Generators = (props) => {
14466
14530
  return /* @__PURE__ */ jsx8(Fragment3, { children: /* @__PURE__ */ jsx8(ClockGenerators, { ...props }) });
14467
14531
  };
14468
14532
 
14533
+ // src/license.ts
14534
+ import { createHash } from "crypto";
14535
+ import { readFile } from "fs/promises";
14536
+ import { useEffect as useEffect9, useState as useState6 } from "react";
14537
+ var getLicense = async () => {
14538
+ const licenseText = await readFile(__require.resolve("../LICENSE"), "utf-8");
14539
+ const hash = createHash("sha256").update(licenseText).digest("hex");
14540
+ return { text: licenseText, hash };
14541
+ };
14542
+ var useLicense = () => {
14543
+ const [license, setLicense] = useState6(null);
14544
+ useEffect9(() => {
14545
+ getLicense().then(setLicense);
14546
+ }, []);
14547
+ return license;
14548
+ };
14549
+
14550
+ // src/updates.tsx
14551
+ import { useCallback as useCallback6, useEffect as useEffect10, useMemo as useMemo5 } from "react";
14552
+
14553
+ // ../../packages/apis/dist/index.js
14554
+ var APP_PLATFORM = zod_default.enum(["windows", "macos", "linux"]);
14555
+ var APP_ARCHITECTURE = zod_default.enum(["x64", "arm64"]);
14556
+ var APP_EDITION = zod_default.enum(["desktop", "cli"]);
14557
+ var CHECK_FOR_UPDATES_REQUEST = zod_default.object({
14558
+ app: zod_default.string(),
14559
+ edition: APP_EDITION,
14560
+ platform: APP_PLATFORM,
14561
+ architecture: APP_ARCHITECTURE,
14562
+ currentVersion: zod_default.string()
14563
+ });
14564
+ var CHECK_FOR_UPDATES_VERSION = zod_default.object({
14565
+ version: zod_default.string(),
14566
+ releaseNotes: zod_default.string()
14567
+ });
14568
+ var CHECK_FOR_UPDATES_RESPONSE = zod_default.object({
14569
+ downloadUrl: zod_default.string().optional(),
14570
+ latestVersion: zod_default.string(),
14571
+ newVersions: zod_default.array(CHECK_FOR_UPDATES_VERSION).optional()
14572
+ });
14573
+ var ApiError = class extends Error {
14574
+ constructor(message, response) {
14575
+ super(message);
14576
+ this.response = response;
14577
+ this.name = "ApiError";
14578
+ }
14579
+ };
14580
+ var api = (baseUrl) => {
14581
+ const checkForUpdates = async (request) => {
14582
+ const response = await fetch(new URL("/api/v1/updates", baseUrl), {
14583
+ method: "POST",
14584
+ headers: { "Content-Type": "application/json" },
14585
+ body: JSON.stringify(request)
14586
+ });
14587
+ if (!response.ok) {
14588
+ throw new ApiError(
14589
+ `Failed to check for updates: ${response.statusText} - ${await response.text()}`,
14590
+ response
14591
+ );
14592
+ }
14593
+ const responseData = await response.json();
14594
+ return CHECK_FOR_UPDATES_RESPONSE.parse(responseData);
14595
+ };
14596
+ return {
14597
+ checkForUpdates
14598
+ };
14599
+ };
14600
+
14601
+ // src/updates.tsx
14602
+ var getAppPlatform = () => {
14603
+ switch (process.platform) {
14604
+ case "win32":
14605
+ return "windows";
14606
+ case "darwin":
14607
+ return "macos";
14608
+ case "linux":
14609
+ return "linux";
14610
+ default:
14611
+ throw new Error(`Unsupported platform: ${process.platform}`);
14612
+ }
14613
+ };
14614
+ var getAppArchitecture = () => {
14615
+ switch (process.arch) {
14616
+ case "x64":
14617
+ return "x64";
14618
+ case "arm64":
14619
+ return "arm64";
14620
+ default:
14621
+ throw new Error(`Unsupported architecture: ${process.arch}`);
14622
+ }
14623
+ };
14624
+ var UpdateChecker = ({
14625
+ apiBaseUrl,
14626
+ version: version2,
14627
+ edition,
14628
+ setUpdateState
14629
+ }) => {
14630
+ const a = useMemo5(() => api(apiBaseUrl), [apiBaseUrl]);
14631
+ const logger = useLogger();
14632
+ const checkForUpdates = useCallback6(() => {
14633
+ const lastCheckedMillis = Date.now();
14634
+ setUpdateState({ type: "loading" });
14635
+ a.checkForUpdates({
14636
+ app: "timecode-toolbox",
14637
+ edition,
14638
+ platform: getAppPlatform(),
14639
+ architecture: getAppArchitecture(),
14640
+ currentVersion: version2
14641
+ }).then((response) => {
14642
+ if (!response.newVersions || response.newVersions.length === 0) {
14643
+ setUpdateState({ type: "up-to-date", lastCheckedMillis });
14644
+ logger.info("No updates available");
14645
+ return;
14646
+ }
14647
+ setUpdateState({
14648
+ type: "updates-available",
14649
+ lastCheckedMillis,
14650
+ response
14651
+ });
14652
+ logger.info(
14653
+ `Update available: ${response.latestVersion} - Download at ${response.downloadUrl}`
14654
+ );
14655
+ }).catch((error) => {
14656
+ const err = new Error("Failed to check for updates");
14657
+ err.cause = error instanceof Error ? error : new Error(String(error));
14658
+ setUpdateState({
14659
+ lastCheckedMillis,
14660
+ type: "error",
14661
+ error: String(err)
14662
+ });
14663
+ logger.error(err);
14664
+ });
14665
+ }, [a, setUpdateState, edition, logger, version2]);
14666
+ useEffect10(() => {
14667
+ checkForUpdates();
14668
+ const interval = setInterval(checkForUpdates, 1e3 * 60 * 60);
14669
+ return () => clearInterval(interval);
14670
+ }, [checkForUpdates]);
14671
+ useEffect10(() => {
14672
+ return () => {
14673
+ setUpdateState(null);
14674
+ };
14675
+ }, [setUpdateState]);
14676
+ return null;
14677
+ };
14678
+
14679
+ // src/env.ts
14680
+ var getEnv = (logger) => {
14681
+ const PORT = process.env.PORT ? parseInt(process.env.PORT, 10) : {
14682
+ from: 4100,
14683
+ to: 4200
14684
+ };
14685
+ let API_BASE_URL;
14686
+ try {
14687
+ API_BASE_URL = process.env.API_BASE_URL ? new URL(process.env.API_BASE_URL) : new URL("https://arcanewizards.com");
14688
+ } catch (error) {
14689
+ const err = new Error(`Invalid API_BASE_URL: ${process.env.API_BASE_URL}`);
14690
+ err.cause = error instanceof Error ? error : new Error(String(error));
14691
+ logger.error(err);
14692
+ throw err;
14693
+ }
14694
+ return {
14695
+ PORT,
14696
+ API_BASE_URL
14697
+ };
14698
+ };
14699
+
14469
14700
  // src/app.tsx
14470
- import { jsx as jsx9, jsxs as jsxs2 } from "react/jsx-runtime";
14701
+ import { Fragment as Fragment4, jsx as jsx9, jsxs as jsxs2 } from "react/jsx-runtime";
14471
14702
  var App = ({
14472
14703
  title,
14473
14704
  version: version2,
14705
+ edition,
14474
14706
  toolkit,
14475
14707
  dataDirectory,
14476
14708
  logger,
@@ -14478,8 +14710,9 @@ var App = ({
14478
14710
  setWindowUrl,
14479
14711
  shutdownContext
14480
14712
  }) => {
14713
+ const env = useMemo6(() => getEnv(logger), [logger]);
14481
14714
  const { data, error, updateData, resetData } = useDataFileContext(ToolboxConfigData);
14482
- useEffect9(() => {
14715
+ useEffect11(() => {
14483
14716
  if (error) {
14484
14717
  logger.warn("Resetting config to application default");
14485
14718
  resetData();
@@ -14488,13 +14721,20 @@ var App = ({
14488
14721
  const onUpdateConfig = (diff) => {
14489
14722
  updateData((prev) => patchJson(prev, diff) ?? DEFAULT_CONFIG);
14490
14723
  };
14491
- const [state, setState] = useState6({
14724
+ const [state, setState] = useState7({
14492
14725
  inputs: {},
14493
14726
  outputs: {},
14494
- generators: {}
14727
+ generators: {},
14728
+ updates: null
14495
14729
  });
14496
- const [handlers, setHandlers] = useState6({ children: {} });
14497
- const availableHandlers = useMemo5(
14730
+ const setUpdateState = useCallback7((updates) => {
14731
+ setState((prev) => ({
14732
+ ...prev,
14733
+ updates
14734
+ }));
14735
+ }, []);
14736
+ const [handlers, setHandlers] = useState7({ children: {} });
14737
+ const availableHandlers = useMemo6(
14498
14738
  () => mapTree(
14499
14739
  handlers,
14500
14740
  (node) => Object.fromEntries(
@@ -14503,7 +14743,7 @@ var App = ({
14503
14743
  ),
14504
14744
  [handlers]
14505
14745
  );
14506
- const callHandler = useCallback6(
14746
+ const callHandler = useCallback7(
14507
14747
  async (call) => {
14508
14748
  const handlerFunc = getTreeValue(handlers, call.path)?.[call.handler];
14509
14749
  if (handlerFunc) {
@@ -14515,6 +14755,54 @@ var App = ({
14515
14755
  },
14516
14756
  [handlers]
14517
14757
  );
14758
+ const license = useLicense();
14759
+ const appListenerConfig = useMemo6(
14760
+ () => ({
14761
+ default: {
14762
+ port: env.PORT
14763
+ }
14764
+ }),
14765
+ [env.PORT]
14766
+ );
14767
+ if (!license) {
14768
+ return;
14769
+ }
14770
+ const children = data.agreedToLicense === license.hash ? /* @__PURE__ */ jsxs2(Fragment4, { children: [
14771
+ /* @__PURE__ */ jsx9(
14772
+ C.ToolboxRoot,
14773
+ {
14774
+ config: data,
14775
+ state,
14776
+ handlers: availableHandlers,
14777
+ onUpdateConfig,
14778
+ onCallHandler: callHandler,
14779
+ license: license.text
14780
+ }
14781
+ ),
14782
+ /* @__PURE__ */ jsx9(InputConnections, { state, setState }),
14783
+ /* @__PURE__ */ jsx9(
14784
+ Generators,
14785
+ {
14786
+ state,
14787
+ setState,
14788
+ setHandlers
14789
+ }
14790
+ ),
14791
+ /* @__PURE__ */ jsx9(OutputConnections, { state, setState })
14792
+ ] }) : /* @__PURE__ */ jsx9(
14793
+ C.LicenseGate,
14794
+ {
14795
+ license: license.text,
14796
+ hash: license.hash,
14797
+ onAcceptLicense: (agreedToLicense) => {
14798
+ logger.info(`License accepted: ${agreedToLicense}`);
14799
+ updateData((current) => ({
14800
+ ...current,
14801
+ agreedToLicense
14802
+ }));
14803
+ }
14804
+ }
14805
+ );
14518
14806
  return /* @__PURE__ */ jsxs2(
14519
14807
  AppShell,
14520
14808
  {
@@ -14525,32 +14813,22 @@ var App = ({
14525
14813
  logEventEmitter,
14526
14814
  shutdownContext,
14527
14815
  children: [
14528
- /* @__PURE__ */ jsx9(
14529
- C.ToolboxRoot,
14816
+ children,
14817
+ data.checkForUpdates && /* @__PURE__ */ jsx9(
14818
+ UpdateChecker,
14530
14819
  {
14531
- config: data,
14532
- state,
14533
- handlers: availableHandlers,
14534
- onUpdateConfig,
14535
- onCallHandler: callHandler
14820
+ version: version2,
14821
+ edition,
14822
+ apiBaseUrl: env.API_BASE_URL,
14823
+ setUpdateState
14536
14824
  }
14537
14825
  ),
14538
- /* @__PURE__ */ jsx9(InputConnections, { state, setState }),
14539
- /* @__PURE__ */ jsx9(Generators, { state, setState, setHandlers }),
14540
- /* @__PURE__ */ jsx9(OutputConnections, { state, setState }),
14541
14826
  /* @__PURE__ */ jsx9(
14542
14827
  AppListenerManager,
14543
14828
  {
14544
14829
  toolkit,
14545
14830
  setWindowUrl,
14546
- listenerConfig: {
14547
- default: {
14548
- port: {
14549
- from: 4100,
14550
- to: 4200
14551
- }
14552
- }
14553
- }
14831
+ listenerConfig: appListenerConfig
14554
14832
  }
14555
14833
  )
14556
14834
  ]
@@ -14568,7 +14846,7 @@ var createApp = (props) => {
14568
14846
  };
14569
14847
 
14570
14848
  // package.json
14571
- var version = "0.1.0";
14849
+ var version = "0.1.1";
14572
14850
 
14573
14851
  // src/urls.ts
14574
14852
  var urls_exports = {};
@@ -14613,11 +14891,13 @@ var runTimecodeToolboxServer = ({
14613
14891
  logger,
14614
14892
  appProps,
14615
14893
  toolkitOptions,
14616
- title
14894
+ title,
14895
+ edition
14617
14896
  }) => runSigilApp({
14618
14897
  logger,
14619
14898
  title,
14620
14899
  version,
14900
+ edition,
14621
14901
  appProps,
14622
14902
  toolkitOptions,
14623
14903
  createApp,
package/dist/start.d.mts CHANGED
@@ -1,2 +1 @@
1
-
2
- export { }
1
+ #!/usr/bin/env node
package/dist/start.d.ts CHANGED
@@ -1,2 +1 @@
1
-
2
- export { }
1
+ #!/usr/bin/env node