@arcanewizards/timecode-toolbox 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -30,6 +30,53 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
30
30
  ));
31
31
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
32
 
33
+ // ../../node_modules/.pnpm/escape-html@1.0.3/node_modules/escape-html/index.js
34
+ var require_escape_html = __commonJS({
35
+ "../../node_modules/.pnpm/escape-html@1.0.3/node_modules/escape-html/index.js"(exports2, module2) {
36
+ "use strict";
37
+ var matchHtmlRegExp = /["'&<>]/;
38
+ module2.exports = escapeHtml;
39
+ function escapeHtml(string) {
40
+ var str = "" + string;
41
+ var match = matchHtmlRegExp.exec(str);
42
+ if (!match) {
43
+ return str;
44
+ }
45
+ var escape;
46
+ var html = "";
47
+ var index = 0;
48
+ var lastIndex = 0;
49
+ for (index = match.index; index < str.length; index++) {
50
+ switch (str.charCodeAt(index)) {
51
+ case 34:
52
+ escape = "&quot;";
53
+ break;
54
+ case 38:
55
+ escape = "&amp;";
56
+ break;
57
+ case 39:
58
+ escape = "&#39;";
59
+ break;
60
+ case 60:
61
+ escape = "&lt;";
62
+ break;
63
+ case 62:
64
+ escape = "&gt;";
65
+ break;
66
+ default:
67
+ continue;
68
+ }
69
+ if (lastIndex !== index) {
70
+ html += str.substring(lastIndex, index);
71
+ }
72
+ lastIndex = index + 1;
73
+ html += escape;
74
+ }
75
+ return lastIndex !== index ? html + str.substring(lastIndex, index) : html;
76
+ }
77
+ }
78
+ });
79
+
33
80
  // ../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_listCacheClear.js
34
81
  var require_listCacheClear = __commonJS({
35
82
  "../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_listCacheClear.js"(exports2, module2) {
@@ -1654,6 +1701,7 @@ var import_data = require("@arcanejs/react-toolkit/data");
1654
1701
  var import_react_toolkit2 = require("@arcanejs/react-toolkit");
1655
1702
  var import_toolkit = require("@arcanejs/toolkit");
1656
1703
  var import_events = require("events");
1704
+ var import_escape_html = __toESM(require_escape_html(), 1);
1657
1705
  var import_jsx_runtime = require("react/jsx-runtime");
1658
1706
 
1659
1707
  // ../../packages/net-utils/dist/index.js
@@ -1861,6 +1909,26 @@ var runSigilApp = ({
1861
1909
  debug: upstreamLogger.debug.bind(upstreamLogger)
1862
1910
  },
1863
1911
  title,
1912
+ htmlPage: (context) => `
1913
+ <html>
1914
+ <head>
1915
+ <title>${(0, import_escape_html.default)(context.title)}</title>
1916
+ <meta charset="utf-8">
1917
+ <meta name="viewport" content="width=device-width, user-scalable=no" />
1918
+ <style type="text/css">
1919
+ @font-face {
1920
+ font-family: 'Material Symbols Outlined';
1921
+ font-style: normal;
1922
+ src: url(${context.coreAssets.materialSymbolsOutlined}) format('woff');
1923
+ }
1924
+ </style>
1925
+ ${context.coreAssets.entrypointCss ? `<link rel="stylesheet" href="${context.coreAssets.entrypointCss}" />` : ""}
1926
+ </head>
1927
+ <body>
1928
+ <div id="root"></div>
1929
+ <script type="text/javascript" src="${context.coreAssets.entrypointJs}"></script>
1930
+ </body>
1931
+ </html>`,
1864
1932
  ...toolkitOptions
1865
1933
  });
1866
1934
  toolkit.start({
@@ -2056,7 +2124,8 @@ var AppListenerManager = ({
2056
2124
  const resolvedConnectionDetails = {
2057
2125
  config,
2058
2126
  host,
2059
- port
2127
+ port,
2128
+ internal: !!config.interface && !!interfaces[config.interface]?.internal
2060
2129
  };
2061
2130
  try {
2062
2131
  const listener = await toolkit.listen({
@@ -2127,11 +2196,21 @@ var AppListenerManager = ({
2127
2196
  }, [appRegistration, listenerConfig, logger, toolkit, updateReactState]);
2128
2197
  (0, import_react3.useEffect)(() => {
2129
2198
  for (const state of Object.values(listenerState)) {
2199
+ let preferredConnection = null;
2130
2200
  if (state.state === "connected") {
2201
+ if (!preferredConnection) {
2202
+ preferredConnection = state;
2203
+ }
2204
+ if (!preferredConnection.internal && state.internal) {
2205
+ preferredConnection = state;
2206
+ }
2207
+ }
2208
+ if (preferredConnection) {
2131
2209
  setWindowUrl(
2132
- new URL(`http://${state.host ?? "localhost"}:${state.port}/`)
2210
+ new URL(
2211
+ `http://${preferredConnection.host ?? "localhost"}:${preferredConnection.port}/`
2212
+ )
2133
2213
  );
2134
- return;
2135
2214
  }
2136
2215
  }
2137
2216
  });
@@ -6204,6 +6283,24 @@ var SIGIL_COLOR = external_exports.enum([
6204
6283
  "gray"
6205
6284
  ]);
6206
6285
 
6286
+ // ../../packages/sigil/dist/shared/config.js
6287
+ var APP_LISTENER_CONFIG = zod_default.object({
6288
+ port: zod_default.union([
6289
+ zod_default.number().int().min(1).max(65535),
6290
+ zod_default.object({
6291
+ from: zod_default.number().int().min(1).max(65535),
6292
+ to: zod_default.number().int().min(1).max(65535)
6293
+ }).refine((data) => data.to >= data.from, {
6294
+ message: '"to" must be greater than or equal to "from"'
6295
+ })
6296
+ ]),
6297
+ interface: zod_default.string().optional()
6298
+ });
6299
+ var ALL_APP_LISTENER_CONFIG = zod_default.record(
6300
+ zod_default.string(),
6301
+ APP_LISTENER_CONFIG
6302
+ );
6303
+
6207
6304
  // src/components/proto.ts
6208
6305
  var NET_UTILS_GENERAL_TARGET_DEFINITION = zod_default.union([
6209
6306
  zod_default.object({
@@ -6284,6 +6381,7 @@ var OUTPUT_CONFIG = zod_default.object({
6284
6381
  link: INPUT_OR_GENERATOR_INSTANCE_ID.nullable()
6285
6382
  });
6286
6383
  var TOOLBOX_CONFIG = zod_default.object({
6384
+ appListener: APP_LISTENER_CONFIG.partial().optional(),
6287
6385
  inputs: zod_default.record(zod_default.string(), INPUT_CONFIG),
6288
6386
  generators: zod_default.record(zod_default.string(), GENERATOR_CONFIG),
6289
6387
  outputs: zod_default.record(zod_default.string(), OUTPUT_CONFIG),
@@ -6317,7 +6415,11 @@ var DEFAULT_PROPS2 = {
6317
6415
  updates: null
6318
6416
  },
6319
6417
  handlers: { children: {} },
6320
- license: ""
6418
+ license: "",
6419
+ network: {
6420
+ envPort: null,
6421
+ defaultPort: -1
6422
+ }
6321
6423
  };
6322
6424
  var ToolboxRoot = class extends import_base2.Base {
6323
6425
  /** @hidden */
@@ -6346,7 +6448,8 @@ var ToolboxRoot = class extends import_base2.Base {
6346
6448
  config: this.props.config,
6347
6449
  state: this.props.state,
6348
6450
  handlers: this.props.handlers,
6349
- license: this.props.license
6451
+ license: this.props.license,
6452
+ network: this.props.network
6350
6453
  };
6351
6454
  }
6352
6455
  /** @hidden */
@@ -14649,10 +14752,7 @@ var UpdateChecker = ({
14649
14752
 
14650
14753
  // src/env.ts
14651
14754
  var getEnv = (logger) => {
14652
- const PORT = process.env.PORT ? parseInt(process.env.PORT, 10) : {
14653
- from: 4100,
14654
- to: 4200
14655
- };
14755
+ const PORT = process.env.PORT && parseInt(process.env.PORT, 10) || null;
14656
14756
  let API_BASE_URL;
14657
14757
  try {
14658
14758
  API_BASE_URL = process.env.API_BASE_URL ? new URL(process.env.API_BASE_URL) : new URL("https://arcanewizards.com");
@@ -14670,6 +14770,7 @@ var getEnv = (logger) => {
14670
14770
 
14671
14771
  // src/app.tsx
14672
14772
  var import_jsx_runtime9 = require("react/jsx-runtime");
14773
+ var DEFAULT_PORT = { from: 4100, to: 4200 };
14673
14774
  var App = ({
14674
14775
  title,
14675
14776
  version: version2,
@@ -14727,14 +14828,16 @@ var App = ({
14727
14828
  [handlers]
14728
14829
  );
14729
14830
  const license = useLicense();
14730
- const appListenerConfig = (0, import_react10.useMemo)(
14731
- () => ({
14732
- default: {
14733
- port: env.PORT
14734
- }
14735
- }),
14736
- [env.PORT]
14737
- );
14831
+ const appListenerConfig = (0, import_react10.useMemo)(() => {
14832
+ const baseConfig = {
14833
+ port: data.appListener?.port ?? DEFAULT_PORT,
14834
+ interface: data.appListener?.interface ?? void 0
14835
+ };
14836
+ if (env.PORT) {
14837
+ baseConfig.port = env.PORT;
14838
+ }
14839
+ return baseConfig;
14840
+ }, [env.PORT, data.appListener]);
14738
14841
  if (!license) {
14739
14842
  return;
14740
14843
  }
@@ -14747,7 +14850,11 @@ var App = ({
14747
14850
  handlers: availableHandlers,
14748
14851
  onUpdateConfig,
14749
14852
  onCallHandler: callHandler,
14750
- license: license.text
14853
+ license: license.text,
14854
+ network: {
14855
+ envPort: env.PORT,
14856
+ defaultPort: DEFAULT_PORT
14857
+ }
14751
14858
  }
14752
14859
  ),
14753
14860
  /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(InputConnections, { state, setState }),
@@ -14799,7 +14906,7 @@ var App = ({
14799
14906
  {
14800
14907
  toolkit,
14801
14908
  setWindowUrl,
14802
- listenerConfig: appListenerConfig
14909
+ listenerConfig: { appListenerConfig }
14803
14910
  }
14804
14911
  )
14805
14912
  ]
@@ -14817,7 +14924,7 @@ var createApp = (props) => {
14817
14924
  };
14818
14925
 
14819
14926
  // package.json
14820
- var version = "0.1.3";
14927
+ var version = "0.1.4";
14821
14928
 
14822
14929
  // src/urls.ts
14823
14930
  var urls_exports = {};
@@ -14891,3 +14998,14 @@ lodash/lodash.js:
14891
14998
  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
14892
14999
  *)
14893
15000
  */
15001
+ /*! Bundled license information:
15002
+
15003
+ escape-html/index.js:
15004
+ (*!
15005
+ * escape-html
15006
+ * Copyright(c) 2012-2013 TJ Holowaychuk
15007
+ * Copyright(c) 2015 Andreas Lubbe
15008
+ * Copyright(c) 2015 Tiancheng "Timothy" Gu
15009
+ * MIT Licensed
15010
+ *)
15011
+ */
package/dist/index.mjs CHANGED
@@ -34,6 +34,53 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
34
34
  mod
35
35
  ));
36
36
 
37
+ // ../../node_modules/.pnpm/escape-html@1.0.3/node_modules/escape-html/index.js
38
+ var require_escape_html = __commonJS({
39
+ "../../node_modules/.pnpm/escape-html@1.0.3/node_modules/escape-html/index.js"(exports, module) {
40
+ "use strict";
41
+ var matchHtmlRegExp = /["'&<>]/;
42
+ module.exports = escapeHtml;
43
+ function escapeHtml(string) {
44
+ var str = "" + string;
45
+ var match = matchHtmlRegExp.exec(str);
46
+ if (!match) {
47
+ return str;
48
+ }
49
+ var escape;
50
+ var html = "";
51
+ var index = 0;
52
+ var lastIndex = 0;
53
+ for (index = match.index; index < str.length; index++) {
54
+ switch (str.charCodeAt(index)) {
55
+ case 34:
56
+ escape = "&quot;";
57
+ break;
58
+ case 38:
59
+ escape = "&amp;";
60
+ break;
61
+ case 39:
62
+ escape = "&#39;";
63
+ break;
64
+ case 60:
65
+ escape = "&lt;";
66
+ break;
67
+ case 62:
68
+ escape = "&gt;";
69
+ break;
70
+ default:
71
+ continue;
72
+ }
73
+ if (lastIndex !== index) {
74
+ html += str.substring(lastIndex, index);
75
+ }
76
+ lastIndex = index + 1;
77
+ html += escape;
78
+ }
79
+ return lastIndex !== index ? html + str.substring(lastIndex, index) : html;
80
+ }
81
+ }
82
+ });
83
+
37
84
  // ../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_listCacheClear.js
38
85
  var require_listCacheClear = __commonJS({
39
86
  "../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_listCacheClear.js"(exports, module) {
@@ -1644,6 +1691,7 @@ var SIGIL_NAMESPACE = "sigil";
1644
1691
  var isSigilComponentCall = (call, action) => call.namespace === SIGIL_NAMESPACE && call.action === action;
1645
1692
 
1646
1693
  // ../../packages/sigil/dist/index.js
1694
+ var import_escape_html = __toESM(require_escape_html(), 1);
1647
1695
  import { useEffect as useEffect2, useMemo, useState } from "react";
1648
1696
  import {
1649
1697
  BaseParent,
@@ -1862,6 +1910,26 @@ var runSigilApp = ({
1862
1910
  debug: upstreamLogger.debug.bind(upstreamLogger)
1863
1911
  },
1864
1912
  title,
1913
+ htmlPage: (context) => `
1914
+ <html>
1915
+ <head>
1916
+ <title>${(0, import_escape_html.default)(context.title)}</title>
1917
+ <meta charset="utf-8">
1918
+ <meta name="viewport" content="width=device-width, user-scalable=no" />
1919
+ <style type="text/css">
1920
+ @font-face {
1921
+ font-family: 'Material Symbols Outlined';
1922
+ font-style: normal;
1923
+ src: url(${context.coreAssets.materialSymbolsOutlined}) format('woff');
1924
+ }
1925
+ </style>
1926
+ ${context.coreAssets.entrypointCss ? `<link rel="stylesheet" href="${context.coreAssets.entrypointCss}" />` : ""}
1927
+ </head>
1928
+ <body>
1929
+ <div id="root"></div>
1930
+ <script type="text/javascript" src="${context.coreAssets.entrypointJs}"></script>
1931
+ </body>
1932
+ </html>`,
1865
1933
  ...toolkitOptions
1866
1934
  });
1867
1935
  toolkit.start({
@@ -2057,7 +2125,8 @@ var AppListenerManager = ({
2057
2125
  const resolvedConnectionDetails = {
2058
2126
  config,
2059
2127
  host,
2060
- port
2128
+ port,
2129
+ internal: !!config.interface && !!interfaces[config.interface]?.internal
2061
2130
  };
2062
2131
  try {
2063
2132
  const listener = await toolkit.listen({
@@ -2128,11 +2197,21 @@ var AppListenerManager = ({
2128
2197
  }, [appRegistration, listenerConfig, logger, toolkit, updateReactState]);
2129
2198
  useEffect3(() => {
2130
2199
  for (const state of Object.values(listenerState)) {
2200
+ let preferredConnection = null;
2131
2201
  if (state.state === "connected") {
2202
+ if (!preferredConnection) {
2203
+ preferredConnection = state;
2204
+ }
2205
+ if (!preferredConnection.internal && state.internal) {
2206
+ preferredConnection = state;
2207
+ }
2208
+ }
2209
+ if (preferredConnection) {
2132
2210
  setWindowUrl(
2133
- new URL(`http://${state.host ?? "localhost"}:${state.port}/`)
2211
+ new URL(
2212
+ `http://${preferredConnection.host ?? "localhost"}:${preferredConnection.port}/`
2213
+ )
2134
2214
  );
2135
- return;
2136
2215
  }
2137
2216
  }
2138
2217
  });
@@ -6213,6 +6292,24 @@ var SIGIL_COLOR = external_exports.enum([
6213
6292
  "gray"
6214
6293
  ]);
6215
6294
 
6295
+ // ../../packages/sigil/dist/shared/config.js
6296
+ var APP_LISTENER_CONFIG = zod_default.object({
6297
+ port: zod_default.union([
6298
+ zod_default.number().int().min(1).max(65535),
6299
+ zod_default.object({
6300
+ from: zod_default.number().int().min(1).max(65535),
6301
+ to: zod_default.number().int().min(1).max(65535)
6302
+ }).refine((data) => data.to >= data.from, {
6303
+ message: '"to" must be greater than or equal to "from"'
6304
+ })
6305
+ ]),
6306
+ interface: zod_default.string().optional()
6307
+ });
6308
+ var ALL_APP_LISTENER_CONFIG = zod_default.record(
6309
+ zod_default.string(),
6310
+ APP_LISTENER_CONFIG
6311
+ );
6312
+
6216
6313
  // src/components/proto.ts
6217
6314
  var NET_UTILS_GENERAL_TARGET_DEFINITION = zod_default.union([
6218
6315
  zod_default.object({
@@ -6293,6 +6390,7 @@ var OUTPUT_CONFIG = zod_default.object({
6293
6390
  link: INPUT_OR_GENERATOR_INSTANCE_ID.nullable()
6294
6391
  });
6295
6392
  var TOOLBOX_CONFIG = zod_default.object({
6393
+ appListener: APP_LISTENER_CONFIG.partial().optional(),
6296
6394
  inputs: zod_default.record(zod_default.string(), INPUT_CONFIG),
6297
6395
  generators: zod_default.record(zod_default.string(), GENERATOR_CONFIG),
6298
6396
  outputs: zod_default.record(zod_default.string(), OUTPUT_CONFIG),
@@ -6326,7 +6424,11 @@ var DEFAULT_PROPS2 = {
6326
6424
  updates: null
6327
6425
  },
6328
6426
  handlers: { children: {} },
6329
- license: ""
6427
+ license: "",
6428
+ network: {
6429
+ envPort: null,
6430
+ defaultPort: -1
6431
+ }
6330
6432
  };
6331
6433
  var ToolboxRoot = class extends Base {
6332
6434
  /** @hidden */
@@ -6355,7 +6457,8 @@ var ToolboxRoot = class extends Base {
6355
6457
  config: this.props.config,
6356
6458
  state: this.props.state,
6357
6459
  handlers: this.props.handlers,
6358
- license: this.props.license
6460
+ license: this.props.license,
6461
+ network: this.props.network
6359
6462
  };
6360
6463
  }
6361
6464
  /** @hidden */
@@ -14677,10 +14780,7 @@ var UpdateChecker = ({
14677
14780
 
14678
14781
  // src/env.ts
14679
14782
  var getEnv = (logger) => {
14680
- const PORT = process.env.PORT ? parseInt(process.env.PORT, 10) : {
14681
- from: 4100,
14682
- to: 4200
14683
- };
14783
+ const PORT = process.env.PORT && parseInt(process.env.PORT, 10) || null;
14684
14784
  let API_BASE_URL;
14685
14785
  try {
14686
14786
  API_BASE_URL = process.env.API_BASE_URL ? new URL(process.env.API_BASE_URL) : new URL("https://arcanewizards.com");
@@ -14698,6 +14798,7 @@ var getEnv = (logger) => {
14698
14798
 
14699
14799
  // src/app.tsx
14700
14800
  import { Fragment as Fragment4, jsx as jsx9, jsxs as jsxs2 } from "react/jsx-runtime";
14801
+ var DEFAULT_PORT = { from: 4100, to: 4200 };
14701
14802
  var App = ({
14702
14803
  title,
14703
14804
  version: version2,
@@ -14755,14 +14856,16 @@ var App = ({
14755
14856
  [handlers]
14756
14857
  );
14757
14858
  const license = useLicense();
14758
- const appListenerConfig = useMemo6(
14759
- () => ({
14760
- default: {
14761
- port: env.PORT
14762
- }
14763
- }),
14764
- [env.PORT]
14765
- );
14859
+ const appListenerConfig = useMemo6(() => {
14860
+ const baseConfig = {
14861
+ port: data.appListener?.port ?? DEFAULT_PORT,
14862
+ interface: data.appListener?.interface ?? void 0
14863
+ };
14864
+ if (env.PORT) {
14865
+ baseConfig.port = env.PORT;
14866
+ }
14867
+ return baseConfig;
14868
+ }, [env.PORT, data.appListener]);
14766
14869
  if (!license) {
14767
14870
  return;
14768
14871
  }
@@ -14775,7 +14878,11 @@ var App = ({
14775
14878
  handlers: availableHandlers,
14776
14879
  onUpdateConfig,
14777
14880
  onCallHandler: callHandler,
14778
- license: license.text
14881
+ license: license.text,
14882
+ network: {
14883
+ envPort: env.PORT,
14884
+ defaultPort: DEFAULT_PORT
14885
+ }
14779
14886
  }
14780
14887
  ),
14781
14888
  /* @__PURE__ */ jsx9(InputConnections, { state, setState }),
@@ -14827,7 +14934,7 @@ var App = ({
14827
14934
  {
14828
14935
  toolkit,
14829
14936
  setWindowUrl,
14830
- listenerConfig: appListenerConfig
14937
+ listenerConfig: { appListenerConfig }
14831
14938
  }
14832
14939
  )
14833
14940
  ]
@@ -14845,7 +14952,7 @@ var createApp = (props) => {
14845
14952
  };
14846
14953
 
14847
14954
  // package.json
14848
- var version = "0.1.3";
14955
+ var version = "0.1.4";
14849
14956
 
14850
14957
  // src/urls.ts
14851
14958
  var urls_exports = {};
@@ -14918,3 +15025,14 @@ lodash/lodash.js:
14918
15025
  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
14919
15026
  *)
14920
15027
  */
15028
+ /*! Bundled license information:
15029
+
15030
+ escape-html/index.js:
15031
+ (*!
15032
+ * escape-html
15033
+ * Copyright(c) 2012-2013 TJ Holowaychuk
15034
+ * Copyright(c) 2015 Andreas Lubbe
15035
+ * Copyright(c) 2015 Tiancheng "Timothy" Gu
15036
+ * MIT Licensed
15037
+ *)
15038
+ */