@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.
- package/LICENSE +21 -0
- package/dist/components/frontend/index.js +865 -272
- package/dist/components/frontend/index.mjs +855 -262
- package/dist/entrypoint.css +163 -53
- package/dist/entrypoint.js +1474 -493
- package/dist/entrypoint.js.map +4 -4
- package/dist/frontend.js +1474 -493
- package/dist/frontend.js.map +4 -4
- package/dist/index.d.mts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +308 -37
- package/dist/index.mjs +329 -49
- package/dist/start.d.mts +1 -2
- package/dist/start.d.ts +1 -2
- package/dist/start.js +311 -38
- package/dist/start.mjs +332 -50
- package/package.json +12 -6
- package/.turbo/turbo-build.log +0 -58
- package/.turbo/turbo-lint.log +0 -4
- package/CHANGELOG.md +0 -40
- package/eslint.config.mjs +0 -49
- package/src/app.tsx +0 -147
- package/src/components/backend/index.ts +0 -6
- package/src/components/backend/toolbox-root.ts +0 -119
- package/src/components/frontend/constants.ts +0 -81
- package/src/components/frontend/entrypoint.ts +0 -12
- package/src/components/frontend/frontend.css +0 -108
- package/src/components/frontend/index.tsx +0 -46
- package/src/components/frontend/toolbox/content.tsx +0 -45
- package/src/components/frontend/toolbox/context.tsx +0 -63
- package/src/components/frontend/toolbox/core/size-aware-div.tsx +0 -51
- package/src/components/frontend/toolbox/core/timecode-display.tsx +0 -592
- package/src/components/frontend/toolbox/generators.tsx +0 -318
- package/src/components/frontend/toolbox/inputs.tsx +0 -484
- package/src/components/frontend/toolbox/outputs.tsx +0 -581
- package/src/components/frontend/toolbox/preferences.ts +0 -25
- package/src/components/frontend/toolbox/root.tsx +0 -335
- package/src/components/frontend/toolbox/settings.tsx +0 -54
- package/src/components/frontend/toolbox/types.ts +0 -28
- package/src/components/frontend/toolbox/util.tsx +0 -61
- package/src/components/proto.ts +0 -420
- package/src/config.ts +0 -7
- package/src/generators/clock.tsx +0 -206
- package/src/generators/index.tsx +0 -15
- package/src/index.ts +0 -38
- package/src/inputs/artnet.tsx +0 -305
- package/src/inputs/index.tsx +0 -13
- package/src/inputs/tcnet.tsx +0 -272
- package/src/outputs/artnet.tsx +0 -170
- package/src/outputs/index.tsx +0 -11
- package/src/start.ts +0 -47
- package/src/tree.ts +0 -133
- package/src/types.ts +0 -12
- package/src/urls.ts +0 -49
- package/src/util.ts +0 -82
- package/tailwind.config.cjs +0 -7
- package/tsconfig.json +0 -10
- 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
|
|
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
|
|
1873
|
+
let api2 = null;
|
|
1867
1874
|
const apiListeners = /* @__PURE__ */ new Set();
|
|
1868
1875
|
const setAppApi = (value) => {
|
|
1869
|
-
|
|
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 (
|
|
1922
|
-
apiListener(
|
|
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
|
|
2137
|
-
useEffect as
|
|
2138
|
-
useMemo as
|
|
2139
|
-
useState as
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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] =
|
|
14724
|
+
const [state, setState] = useState7({
|
|
14492
14725
|
inputs: {},
|
|
14493
14726
|
outputs: {},
|
|
14494
|
-
generators: {}
|
|
14727
|
+
generators: {},
|
|
14728
|
+
updates: null
|
|
14495
14729
|
});
|
|
14496
|
-
const
|
|
14497
|
-
|
|
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 =
|
|
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
|
-
|
|
14529
|
-
|
|
14816
|
+
children,
|
|
14817
|
+
data.checkForUpdates && /* @__PURE__ */ jsx9(
|
|
14818
|
+
UpdateChecker,
|
|
14530
14819
|
{
|
|
14531
|
-
|
|
14532
|
-
|
|
14533
|
-
|
|
14534
|
-
|
|
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.
|
|
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
|