@naisys/erp 3.0.0-beta.42 → 3.0.0-beta.44

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.
@@ -1,5 +1,5 @@
1
1
  import { r as __toESM } from "./rolldown-runtime-CvHMtSRF.js";
2
- import { $ as union, $t as UnstyledButton, A as IconNote, At as Menu, B as IconArrowBackUp, Bt as Button, C as useForm, Ct as Select, D as IconTrash, Dt as Pagination, E as IconUpload, Et as PasswordInput, F as IconInfoCircle, Ft as Divider, G as ZodIssueCode, Gt as Anchor, H as IconAlertTriangle, Ht as Autocomplete, I as IconFile, It as Container, J as boolean, Jt as Accordion, K as _enum, Kt as Text, L as IconEye$1, Lt as Code, M as IconListDetails, Mt as Image, N as IconLayoutSidebarLeftExpand, Nt as FileButton, O as IconRobot, Ot as NumberInput, P as IconLayoutSidebarLeftCollapse, Pt as Drawer, Q as string, Qt as Popover, R as IconChevronDown, Rt as Center, S as IconCopy, St as Stack, T as IconUser, Tt as Tooltip, U as IconAlertCircle, Ut as Checkbox, V as IconApi, Vt as Badge, W as require_semver, Wt as AppShell, X as object, Xt as ActionIcon, Y as number, Yt as Group, Z as record, Zt as Loader, _ as IconRefresh, _t as Title, a as _undefined, an as require_jsx_runtime, at as Route, b as IconEyeOff, bt as Table, c as boolean$1, ct as useNavigate, d as object$1, dt as useSearchParams, en as ScrollArea, et as unknown, f as string$1, ft as Notifications, g as Markdown, gt as DatesProvider, h as remarkGfm, ht as DateInput, i as _null, in as useDebouncedValue, it as Outlet, j as IconLogout, jt as Textarea, k as IconPlus, kt as Modal, l as literal, lt as useOutletContext, m as datetime, mt as DateTimePicker, n as string$2, nn as MantineProvider, nt as Link, o as any, on as require_client, ot as Routes, p as union$1, pt as notifications, q as array, qt as Alert, r as _enum$1, rn as useDisclosure, rt as Navigate, s as array$1, sn as require_react, st as useLocation, t as number$1, tn as Box, tt as BrowserRouter, u as number$2, ut as useParams, v as IconPhoto, vt as TextInput, w as IconX, wt as SegmentedControl, x as IconDownload, xt as Switch, y as IconEye, yt as Tabs, z as IconCheck, zt as Card } from "./vendor-DFaFIeiT.js";
2
+ import { $ as string, $t as Popover, A as IconPlus, At as Modal, B as IconCheck, Bt as Card, C as IconCopy, Ct as Stack, D as IconUpload, Dt as PasswordInput, E as IconUser, Et as Tooltip, F as IconLayoutSidebarLeftCollapse, Ft as Drawer, G as require_semver, Gt as AppShell, H as IconApi, Ht as Badge, I as IconInfoCircle, It as Divider, J as array, Jt as Alert, K as ZodIssueCode, Kt as Anchor, L as IconFile, Lt as Container, M as IconLogout, Mt as Textarea, N as IconListDetails, Nt as Image, O as IconTrash, Ot as Pagination, P as IconLayoutSidebarLeftExpand, Pt as FileButton, Q as record, Qt as Loader, R as IconEye$1, Rt as Code, S as IconDownload, St as Switch, T as IconX, Tt as SegmentedControl, U as IconAlertTriangle, Ut as Autocomplete, V as IconArrowBackUp, Vt as Button, W as IconAlertCircle, Wt as Checkbox, X as number, Xt as Group, Y as boolean, Yt as Accordion, Z as object, Zt as ActionIcon, _ as Markdown, _t as DatesProvider, a as _undefined, an as useDebouncedValue, at as Outlet, b as IconEye, bt as Tabs, c as boolean$1, cn as require_react, ct as useLocation, d as object$1, dt as useParams, en as UnstyledButton, et as union, f as string$1, ft as useSearchParams, g as remarkGfm, gt as DateInput, h as diffWordsWithSpace, ht as DateTimePicker, i as _null, in as useDisclosure, it as Navigate, j as IconNote, jt as Menu, k as IconRobot, kt as NumberInput, l as literal, lt as useNavigate, m as datetime, mt as notifications, n as string$2, nn as Box, nt as BrowserRouter, o as any, on as require_jsx_runtime, ot as Route, p as union$1, pt as Notifications, q as _enum, qt as Text, r as _enum$1, rn as MantineProvider, rt as Link, s as array$1, sn as require_client, st as Routes, t as number$1, tn as ScrollArea, tt as unknown, u as number$2, ut as useOutletContext, v as IconRefresh, vt as Title, w as useForm, wt as Select, x as IconEyeOff, xt as Table, y as IconPhoto, yt as TextInput, z as IconChevronDown, zt as Center } from "./vendor-Co7ZCNxO.js";
3
3
  //#region \0vite/modulepreload-polyfill.js
4
4
  (function polyfill() {
5
5
  const relList = document.createElement("link").relList;
@@ -780,6 +780,29 @@ var CompactMarkdown = ({ children }) => (0, import_jsx_runtime.jsx)(Markdown, {
780
780
  children
781
781
  });
782
782
  //#endregion
783
+ //#region ../../../packages/common-browser/dist/InlineWordDiff.js
784
+ var HIGHLIGHT_BG_OLD = "light-dark(rgba(255, 99, 99, 0.42), rgba(255, 99, 99, 0.45))";
785
+ var HIGHLIGHT_BG_NEW = "light-dark(rgba(80, 200, 120, 0.42), rgba(80, 200, 120, 0.45))";
786
+ /**
787
+ * Renders one side of a word-level inline text diff. Pair two instances
788
+ * (one with side="old", one with side="new") to show the before/after.
789
+ */
790
+ var InlineWordDiff = ({ oldText, newText, side }) => {
791
+ const parts = (0, import_react.useMemo)(() => diffWordsWithSpace(oldText, newText), [oldText, newText]);
792
+ const highlightBg = side === "old" ? HIGHLIGHT_BG_OLD : HIGHLIGHT_BG_NEW;
793
+ return (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: parts.map((p, i) => {
794
+ if (side === "old" && p.added) return null;
795
+ if (side === "new" && p.removed) return null;
796
+ return (side === "old" ? p.removed : p.added) ? (0, import_jsx_runtime.jsx)("span", {
797
+ style: {
798
+ background: highlightBg,
799
+ borderRadius: 2
800
+ },
801
+ children: p.value
802
+ }, i) : (0, import_jsx_runtime.jsx)("span", { children: p.value }, i);
803
+ }) });
804
+ };
805
+ //#endregion
783
806
  //#region ../../../packages/common-browser/dist/SecretField.js
784
807
  var SecretField = ({ value, onRotate, rotating, emptyLabel = "Not set" }) => {
785
808
  const [visible, setVisible] = (0, import_react.useState)(false);
@@ -984,6 +1007,19 @@ var ServerLogViewer = ({ fetchLogs: fetchLogsFn, logFiles }) => {
984
1007
  ] });
985
1008
  };
986
1009
  //#endregion
1010
+ //#region ../../../packages/common-browser/dist/TextDiffViewer.js
1011
+ var cellStyle = {
1012
+ fontFamily: "var(--mantine-font-family-monospace)",
1013
+ fontSize: 12,
1014
+ lineHeight: "18px",
1015
+ padding: "0 8px",
1016
+ whiteSpace: "pre-wrap",
1017
+ wordBreak: "break-word",
1018
+ verticalAlign: "top"
1019
+ };
1020
+ ({ ...cellStyle });
1021
+ ({ ...cellStyle });
1022
+ //#endregion
987
1023
  //#region ../../../packages/common-browser/dist/VersionBadge.js
988
1024
  var VersionBadge = ({ version, size = "sm" }) => {
989
1025
  if (!version) return null;
@@ -6918,20 +6954,33 @@ var PropertyChanges = ({ changes }) => /* @__PURE__ */ (0, import_jsx_runtime.js
6918
6954
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Table.Th, { children: "Property" }),
6919
6955
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Table.Th, { children: "From" }),
6920
6956
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Table.Th, { children: "To" })
6921
- ] }) }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Table.Tbody, { children: changes.map((c) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Table.Tr, { children: [
6922
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Table.Td, {
6923
- fw: 600,
6924
- children: c.field
6925
- }),
6926
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Table.Td, {
6927
- c: "red",
6928
- children: String(c.from ?? "—")
6929
- }),
6930
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Table.Td, {
6931
- c: "green",
6932
- children: String(c.to ?? "—")
6933
- })
6934
- ] }, c.field)) })]
6957
+ ] }) }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Table.Tbody, { children: changes.map((c) => {
6958
+ const fromStr = c.from == null ? "" : String(c.from);
6959
+ const toStr = c.to == null ? "" : String(c.to);
6960
+ const bothPresent = c.from != null && c.to != null;
6961
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Table.Tr, { children: [
6962
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Table.Td, {
6963
+ fw: 600,
6964
+ children: c.field
6965
+ }),
6966
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Table.Td, {
6967
+ c: "red",
6968
+ children: c.from == null ? "—" : bothPresent ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InlineWordDiff, {
6969
+ oldText: fromStr,
6970
+ newText: toStr,
6971
+ side: "old"
6972
+ }) : fromStr
6973
+ }),
6974
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Table.Td, {
6975
+ c: "green",
6976
+ children: c.to == null ? "—" : bothPresent ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InlineWordDiff, {
6977
+ oldText: fromStr,
6978
+ newText: toStr,
6979
+ side: "new"
6980
+ }) : toStr
6981
+ })
6982
+ ] }, c.field);
6983
+ }) })]
6935
6984
  });
6936
6985
  var FieldDiffSection = ({ fields }) => {
6937
6986
  const changed = fields.filter((f) => f.status !== "unchanged");
@@ -62320,6 +62320,521 @@ function remarkGfm(options) {
62320
62320
  fromMarkdownExtensions.push(gfmFromMarkdown());
62321
62321
  toMarkdownExtensions.push(gfmToMarkdown(settings));
62322
62322
  }
62323
+ //#endregion
62324
+ //#region ../../../packages/common-browser/node_modules/diff/libesm/diff/base.js
62325
+ var Diff = class {
62326
+ diff(oldStr, newStr, options = {}) {
62327
+ let callback;
62328
+ if (typeof options === "function") {
62329
+ callback = options;
62330
+ options = {};
62331
+ } else if ("callback" in options) callback = options.callback;
62332
+ const oldString = this.castInput(oldStr, options);
62333
+ const newString = this.castInput(newStr, options);
62334
+ const oldTokens = this.removeEmpty(this.tokenize(oldString, options));
62335
+ const newTokens = this.removeEmpty(this.tokenize(newString, options));
62336
+ return this.diffWithOptionsObj(oldTokens, newTokens, options, callback);
62337
+ }
62338
+ diffWithOptionsObj(oldTokens, newTokens, options, callback) {
62339
+ var _a;
62340
+ const done = (value) => {
62341
+ value = this.postProcess(value, options);
62342
+ if (callback) {
62343
+ setTimeout(function() {
62344
+ callback(value);
62345
+ }, 0);
62346
+ return;
62347
+ } else return value;
62348
+ };
62349
+ const newLen = newTokens.length, oldLen = oldTokens.length;
62350
+ let editLength = 1;
62351
+ let maxEditLength = newLen + oldLen;
62352
+ if (options.maxEditLength != null) maxEditLength = Math.min(maxEditLength, options.maxEditLength);
62353
+ const maxExecutionTime = (_a = options.timeout) !== null && _a !== void 0 ? _a : Infinity;
62354
+ const abortAfterTimestamp = Date.now() + maxExecutionTime;
62355
+ const bestPath = [{
62356
+ oldPos: -1,
62357
+ lastComponent: void 0
62358
+ }];
62359
+ let newPos = this.extractCommon(bestPath[0], newTokens, oldTokens, 0, options);
62360
+ if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) return done(this.buildValues(bestPath[0].lastComponent, newTokens, oldTokens));
62361
+ let minDiagonalToConsider = -Infinity, maxDiagonalToConsider = Infinity;
62362
+ const execEditLength = () => {
62363
+ for (let diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {
62364
+ let basePath;
62365
+ const removePath = bestPath[diagonalPath - 1], addPath = bestPath[diagonalPath + 1];
62366
+ if (removePath) bestPath[diagonalPath - 1] = void 0;
62367
+ let canAdd = false;
62368
+ if (addPath) {
62369
+ const addPathNewPos = addPath.oldPos - diagonalPath;
62370
+ canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;
62371
+ }
62372
+ const canRemove = removePath && removePath.oldPos + 1 < oldLen;
62373
+ if (!canAdd && !canRemove) {
62374
+ bestPath[diagonalPath] = void 0;
62375
+ continue;
62376
+ }
62377
+ if (!canRemove || canAdd && removePath.oldPos < addPath.oldPos) basePath = this.addToPath(addPath, true, false, 0, options);
62378
+ else basePath = this.addToPath(removePath, false, true, 1, options);
62379
+ newPos = this.extractCommon(basePath, newTokens, oldTokens, diagonalPath, options);
62380
+ if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) return done(this.buildValues(basePath.lastComponent, newTokens, oldTokens)) || true;
62381
+ else {
62382
+ bestPath[diagonalPath] = basePath;
62383
+ if (basePath.oldPos + 1 >= oldLen) maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);
62384
+ if (newPos + 1 >= newLen) minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);
62385
+ }
62386
+ }
62387
+ editLength++;
62388
+ };
62389
+ if (callback) (function exec() {
62390
+ setTimeout(function() {
62391
+ if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) return callback(void 0);
62392
+ if (!execEditLength()) exec();
62393
+ }, 0);
62394
+ })();
62395
+ else while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {
62396
+ const ret = execEditLength();
62397
+ if (ret) return ret;
62398
+ }
62399
+ }
62400
+ addToPath(path, added, removed, oldPosInc, options) {
62401
+ const last = path.lastComponent;
62402
+ if (last && !options.oneChangePerToken && last.added === added && last.removed === removed) return {
62403
+ oldPos: path.oldPos + oldPosInc,
62404
+ lastComponent: {
62405
+ count: last.count + 1,
62406
+ added,
62407
+ removed,
62408
+ previousComponent: last.previousComponent
62409
+ }
62410
+ };
62411
+ else return {
62412
+ oldPos: path.oldPos + oldPosInc,
62413
+ lastComponent: {
62414
+ count: 1,
62415
+ added,
62416
+ removed,
62417
+ previousComponent: last
62418
+ }
62419
+ };
62420
+ }
62421
+ extractCommon(basePath, newTokens, oldTokens, diagonalPath, options) {
62422
+ const newLen = newTokens.length, oldLen = oldTokens.length;
62423
+ let oldPos = basePath.oldPos, newPos = oldPos - diagonalPath, commonCount = 0;
62424
+ while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(oldTokens[oldPos + 1], newTokens[newPos + 1], options)) {
62425
+ newPos++;
62426
+ oldPos++;
62427
+ commonCount++;
62428
+ if (options.oneChangePerToken) basePath.lastComponent = {
62429
+ count: 1,
62430
+ previousComponent: basePath.lastComponent,
62431
+ added: false,
62432
+ removed: false
62433
+ };
62434
+ }
62435
+ if (commonCount && !options.oneChangePerToken) basePath.lastComponent = {
62436
+ count: commonCount,
62437
+ previousComponent: basePath.lastComponent,
62438
+ added: false,
62439
+ removed: false
62440
+ };
62441
+ basePath.oldPos = oldPos;
62442
+ return newPos;
62443
+ }
62444
+ equals(left, right, options) {
62445
+ if (options.comparator) return options.comparator(left, right);
62446
+ else return left === right || !!options.ignoreCase && left.toLowerCase() === right.toLowerCase();
62447
+ }
62448
+ removeEmpty(array) {
62449
+ const ret = [];
62450
+ for (let i = 0; i < array.length; i++) if (array[i]) ret.push(array[i]);
62451
+ return ret;
62452
+ }
62453
+ castInput(value, options) {
62454
+ return value;
62455
+ }
62456
+ tokenize(value, options) {
62457
+ return Array.from(value);
62458
+ }
62459
+ join(chars) {
62460
+ return chars.join("");
62461
+ }
62462
+ postProcess(changeObjects, options) {
62463
+ return changeObjects;
62464
+ }
62465
+ get useLongestToken() {
62466
+ return false;
62467
+ }
62468
+ buildValues(lastComponent, newTokens, oldTokens) {
62469
+ const components = [];
62470
+ let nextComponent;
62471
+ while (lastComponent) {
62472
+ components.push(lastComponent);
62473
+ nextComponent = lastComponent.previousComponent;
62474
+ delete lastComponent.previousComponent;
62475
+ lastComponent = nextComponent;
62476
+ }
62477
+ components.reverse();
62478
+ const componentLen = components.length;
62479
+ let componentPos = 0, newPos = 0, oldPos = 0;
62480
+ for (; componentPos < componentLen; componentPos++) {
62481
+ const component = components[componentPos];
62482
+ if (!component.removed) {
62483
+ if (!component.added && this.useLongestToken) {
62484
+ let value = newTokens.slice(newPos, newPos + component.count);
62485
+ value = value.map(function(value, i) {
62486
+ const oldValue = oldTokens[oldPos + i];
62487
+ return oldValue.length > value.length ? oldValue : value;
62488
+ });
62489
+ component.value = this.join(value);
62490
+ } else component.value = this.join(newTokens.slice(newPos, newPos + component.count));
62491
+ newPos += component.count;
62492
+ if (!component.added) oldPos += component.count;
62493
+ } else {
62494
+ component.value = this.join(oldTokens.slice(oldPos, oldPos + component.count));
62495
+ oldPos += component.count;
62496
+ }
62497
+ }
62498
+ return components;
62499
+ }
62500
+ };
62501
+ //#endregion
62502
+ //#region ../../../packages/common-browser/node_modules/diff/libesm/diff/character.js
62503
+ var CharacterDiff = class extends Diff {};
62504
+ new CharacterDiff();
62505
+ //#endregion
62506
+ //#region ../../../packages/common-browser/node_modules/diff/libesm/util/string.js
62507
+ function longestCommonPrefix(str1, str2) {
62508
+ let i;
62509
+ for (i = 0; i < str1.length && i < str2.length; i++) if (str1[i] != str2[i]) return str1.slice(0, i);
62510
+ return str1.slice(0, i);
62511
+ }
62512
+ function longestCommonSuffix(str1, str2) {
62513
+ let i;
62514
+ if (!str1 || !str2 || str1[str1.length - 1] != str2[str2.length - 1]) return "";
62515
+ for (i = 0; i < str1.length && i < str2.length; i++) if (str1[str1.length - (i + 1)] != str2[str2.length - (i + 1)]) return str1.slice(-i);
62516
+ return str1.slice(-i);
62517
+ }
62518
+ function replacePrefix(string, oldPrefix, newPrefix) {
62519
+ if (string.slice(0, oldPrefix.length) != oldPrefix) throw Error(`string ${JSON.stringify(string)} doesn't start with prefix ${JSON.stringify(oldPrefix)}; this is a bug`);
62520
+ return newPrefix + string.slice(oldPrefix.length);
62521
+ }
62522
+ function replaceSuffix(string, oldSuffix, newSuffix) {
62523
+ if (!oldSuffix) return string + newSuffix;
62524
+ if (string.slice(-oldSuffix.length) != oldSuffix) throw Error(`string ${JSON.stringify(string)} doesn't end with suffix ${JSON.stringify(oldSuffix)}; this is a bug`);
62525
+ return string.slice(0, -oldSuffix.length) + newSuffix;
62526
+ }
62527
+ function removePrefix(string, oldPrefix) {
62528
+ return replacePrefix(string, oldPrefix, "");
62529
+ }
62530
+ function removeSuffix(string, oldSuffix) {
62531
+ return replaceSuffix(string, oldSuffix, "");
62532
+ }
62533
+ function maximumOverlap(string1, string2) {
62534
+ return string2.slice(0, overlapCount(string1, string2));
62535
+ }
62536
+ function overlapCount(a, b) {
62537
+ let startA = 0;
62538
+ if (a.length > b.length) startA = a.length - b.length;
62539
+ let endB = b.length;
62540
+ if (a.length < b.length) endB = a.length;
62541
+ const map = Array(endB);
62542
+ let k = 0;
62543
+ map[0] = 0;
62544
+ for (let j = 1; j < endB; j++) {
62545
+ if (b[j] == b[k]) map[j] = map[k];
62546
+ else map[j] = k;
62547
+ while (k > 0 && b[j] != b[k]) k = map[k];
62548
+ if (b[j] == b[k]) k++;
62549
+ }
62550
+ k = 0;
62551
+ for (let i = startA; i < a.length; i++) {
62552
+ while (k > 0 && a[i] != b[k]) k = map[k];
62553
+ if (a[i] == b[k]) k++;
62554
+ }
62555
+ return k;
62556
+ }
62557
+ /**
62558
+ * Split a string into segments using a word segmenter, merging consecutive
62559
+ * segments if they are both whitespace segments. Whitespace segments can
62560
+ * appear adjacent to one another for two reasons:
62561
+ * - newlines always get their own segment
62562
+ * - where a diacritic is attached to a whitespace character in the text, the
62563
+ * segment ends after the diacritic, so e.g. " \u0300 " becomes two segments.
62564
+ * This function therefore runs the segmenter's .segment() method and then
62565
+ * merges consecutive segments of whitespace into a single part.
62566
+ */
62567
+ function segment(string, segmenter) {
62568
+ const parts = [];
62569
+ for (const segmentObj of Array.from(segmenter.segment(string))) {
62570
+ const segment = segmentObj.segment;
62571
+ if (parts.length && /\s/.test(parts[parts.length - 1]) && /\s/.test(segment)) parts[parts.length - 1] += segment;
62572
+ else parts.push(segment);
62573
+ }
62574
+ return parts;
62575
+ }
62576
+ function trailingWs(string, segmenter) {
62577
+ if (segmenter) return leadingAndTrailingWs(string, segmenter)[1];
62578
+ let i;
62579
+ for (i = string.length - 1; i >= 0; i--) if (!string[i].match(/\s/)) break;
62580
+ return string.substring(i + 1);
62581
+ }
62582
+ function leadingWs(string, segmenter) {
62583
+ if (segmenter) return leadingAndTrailingWs(string, segmenter)[0];
62584
+ const match = string.match(/^\s*/);
62585
+ return match ? match[0] : "";
62586
+ }
62587
+ function leadingAndTrailingWs(string, segmenter) {
62588
+ if (!segmenter) return [leadingWs(string), trailingWs(string)];
62589
+ if (segmenter.resolvedOptions().granularity != "word") throw new Error("The segmenter passed must have a granularity of \"word\"");
62590
+ const segments = segment(string, segmenter);
62591
+ const firstSeg = segments[0];
62592
+ const lastSeg = segments[segments.length - 1];
62593
+ return [/\s/.test(firstSeg) ? firstSeg : "", /\s/.test(lastSeg) ? lastSeg : ""];
62594
+ }
62595
+ //#endregion
62596
+ //#region ../../../packages/common-browser/node_modules/diff/libesm/diff/word.js
62597
+ var extendedWordChars = "a-zA-Z0-9_\\u{AD}\\u{C0}-\\u{D6}\\u{D8}-\\u{F6}\\u{F8}-\\u{2C6}\\u{2C8}-\\u{2D7}\\u{2DE}-\\u{2FF}\\u{1E00}-\\u{1EFF}";
62598
+ var tokenizeIncludingWhitespace = new RegExp(`[${extendedWordChars}]+|\\s+|[^${extendedWordChars}]`, "ug");
62599
+ var WordDiff = class extends Diff {
62600
+ equals(left, right, options) {
62601
+ if (options.ignoreCase) {
62602
+ left = left.toLowerCase();
62603
+ right = right.toLowerCase();
62604
+ }
62605
+ return left.trim() === right.trim();
62606
+ }
62607
+ tokenize(value, options = {}) {
62608
+ let parts;
62609
+ if (options.intlSegmenter) {
62610
+ const segmenter = options.intlSegmenter;
62611
+ if (segmenter.resolvedOptions().granularity != "word") throw new Error("The segmenter passed must have a granularity of \"word\"");
62612
+ parts = segment(value, segmenter);
62613
+ } else parts = value.match(tokenizeIncludingWhitespace) || [];
62614
+ const tokens = [];
62615
+ let prevPart = null;
62616
+ parts.forEach((part) => {
62617
+ if (/\s/.test(part)) if (prevPart == null) tokens.push(part);
62618
+ else tokens.push(tokens.pop() + part);
62619
+ else if (prevPart != null && /\s/.test(prevPart)) if (tokens[tokens.length - 1] == prevPart) tokens.push(tokens.pop() + part);
62620
+ else tokens.push(prevPart + part);
62621
+ else tokens.push(part);
62622
+ prevPart = part;
62623
+ });
62624
+ return tokens;
62625
+ }
62626
+ join(tokens) {
62627
+ return tokens.map((token, i) => {
62628
+ if (i == 0) return token;
62629
+ else return token.replace(/^\s+/, "");
62630
+ }).join("");
62631
+ }
62632
+ postProcess(changes, options) {
62633
+ if (!changes || options.oneChangePerToken) return changes;
62634
+ let lastKeep = null;
62635
+ let insertion = null;
62636
+ let deletion = null;
62637
+ changes.forEach((change) => {
62638
+ if (change.added) insertion = change;
62639
+ else if (change.removed) deletion = change;
62640
+ else {
62641
+ if (insertion || deletion) dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, change, options.intlSegmenter);
62642
+ lastKeep = change;
62643
+ insertion = null;
62644
+ deletion = null;
62645
+ }
62646
+ });
62647
+ if (insertion || deletion) dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, null, options.intlSegmenter);
62648
+ return changes;
62649
+ }
62650
+ };
62651
+ new WordDiff();
62652
+ function dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep, segmenter) {
62653
+ if (deletion && insertion) {
62654
+ const [oldWsPrefix, oldWsSuffix] = leadingAndTrailingWs(deletion.value, segmenter);
62655
+ const [newWsPrefix, newWsSuffix] = leadingAndTrailingWs(insertion.value, segmenter);
62656
+ if (startKeep) {
62657
+ const commonWsPrefix = longestCommonPrefix(oldWsPrefix, newWsPrefix);
62658
+ startKeep.value = replaceSuffix(startKeep.value, newWsPrefix, commonWsPrefix);
62659
+ deletion.value = removePrefix(deletion.value, commonWsPrefix);
62660
+ insertion.value = removePrefix(insertion.value, commonWsPrefix);
62661
+ }
62662
+ if (endKeep) {
62663
+ const commonWsSuffix = longestCommonSuffix(oldWsSuffix, newWsSuffix);
62664
+ endKeep.value = replacePrefix(endKeep.value, newWsSuffix, commonWsSuffix);
62665
+ deletion.value = removeSuffix(deletion.value, commonWsSuffix);
62666
+ insertion.value = removeSuffix(insertion.value, commonWsSuffix);
62667
+ }
62668
+ } else if (insertion) {
62669
+ if (startKeep) {
62670
+ const ws = leadingWs(insertion.value, segmenter);
62671
+ insertion.value = insertion.value.substring(ws.length);
62672
+ }
62673
+ if (endKeep) {
62674
+ const ws = leadingWs(endKeep.value, segmenter);
62675
+ endKeep.value = endKeep.value.substring(ws.length);
62676
+ }
62677
+ } else if (startKeep && endKeep) {
62678
+ const newWsFull = leadingWs(endKeep.value, segmenter), [delWsStart, delWsEnd] = leadingAndTrailingWs(deletion.value, segmenter);
62679
+ const newWsStart = longestCommonPrefix(newWsFull, delWsStart);
62680
+ deletion.value = removePrefix(deletion.value, newWsStart);
62681
+ const newWsEnd = longestCommonSuffix(removePrefix(newWsFull, newWsStart), delWsEnd);
62682
+ deletion.value = removeSuffix(deletion.value, newWsEnd);
62683
+ endKeep.value = replacePrefix(endKeep.value, newWsFull, newWsEnd);
62684
+ startKeep.value = replaceSuffix(startKeep.value, newWsFull, newWsFull.slice(0, newWsFull.length - newWsEnd.length));
62685
+ } else if (endKeep) {
62686
+ const endKeepWsPrefix = leadingWs(endKeep.value, segmenter);
62687
+ const overlap = maximumOverlap(trailingWs(deletion.value, segmenter), endKeepWsPrefix);
62688
+ deletion.value = removeSuffix(deletion.value, overlap);
62689
+ } else if (startKeep) {
62690
+ const overlap = maximumOverlap(trailingWs(startKeep.value, segmenter), leadingWs(deletion.value, segmenter));
62691
+ deletion.value = removePrefix(deletion.value, overlap);
62692
+ }
62693
+ }
62694
+ var WordsWithSpaceDiff = class extends Diff {
62695
+ tokenize(value) {
62696
+ const regex = new RegExp(`(\\r?\\n)|[${extendedWordChars}]+|[^\\S\\n\\r]+|[^${extendedWordChars}]`, "ug");
62697
+ return value.match(regex) || [];
62698
+ }
62699
+ };
62700
+ var wordsWithSpaceDiff = new WordsWithSpaceDiff();
62701
+ function diffWordsWithSpace(oldStr, newStr, options) {
62702
+ return wordsWithSpaceDiff.diff(oldStr, newStr, options);
62703
+ }
62704
+ //#endregion
62705
+ //#region ../../../packages/common-browser/node_modules/diff/libesm/diff/line.js
62706
+ var LineDiff = class extends Diff {
62707
+ constructor() {
62708
+ super(...arguments);
62709
+ this.tokenize = tokenize;
62710
+ }
62711
+ equals(left, right, options) {
62712
+ if (options.ignoreWhitespace) {
62713
+ if (!options.newlineIsToken || !left.includes("\n")) left = left.trim();
62714
+ if (!options.newlineIsToken || !right.includes("\n")) right = right.trim();
62715
+ } else if (options.ignoreNewlineAtEof && !options.newlineIsToken) {
62716
+ if (left.endsWith("\n")) left = left.slice(0, -1);
62717
+ if (right.endsWith("\n")) right = right.slice(0, -1);
62718
+ }
62719
+ return super.equals(left, right, options);
62720
+ }
62721
+ };
62722
+ new LineDiff();
62723
+ function tokenize(value, options) {
62724
+ if (options.stripTrailingCr) value = value.replace(/\r\n/g, "\n");
62725
+ const retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/);
62726
+ if (!linesAndNewlines[linesAndNewlines.length - 1]) linesAndNewlines.pop();
62727
+ for (let i = 0; i < linesAndNewlines.length; i++) {
62728
+ const line = linesAndNewlines[i];
62729
+ if (i % 2 && !options.newlineIsToken) retLines[retLines.length - 1] += line;
62730
+ else retLines.push(line);
62731
+ }
62732
+ return retLines;
62733
+ }
62734
+ //#endregion
62735
+ //#region ../../../packages/common-browser/node_modules/diff/libesm/diff/sentence.js
62736
+ function isSentenceEndPunct(char) {
62737
+ return char == "." || char == "!" || char == "?";
62738
+ }
62739
+ var SentenceDiff = class extends Diff {
62740
+ tokenize(value) {
62741
+ var _a;
62742
+ const result = [];
62743
+ let tokenStartI = 0;
62744
+ for (let i = 0; i < value.length; i++) {
62745
+ if (i == value.length - 1) {
62746
+ result.push(value.slice(tokenStartI));
62747
+ break;
62748
+ }
62749
+ if (isSentenceEndPunct(value[i]) && value[i + 1].match(/\s/)) {
62750
+ result.push(value.slice(tokenStartI, i + 1));
62751
+ i = tokenStartI = i + 1;
62752
+ while ((_a = value[i + 1]) === null || _a === void 0 ? void 0 : _a.match(/\s/)) i++;
62753
+ result.push(value.slice(tokenStartI, i + 1));
62754
+ tokenStartI = i + 1;
62755
+ }
62756
+ }
62757
+ return result;
62758
+ }
62759
+ };
62760
+ new SentenceDiff();
62761
+ //#endregion
62762
+ //#region ../../../packages/common-browser/node_modules/diff/libesm/diff/css.js
62763
+ var CssDiff = class extends Diff {
62764
+ tokenize(value) {
62765
+ return value.split(/([{}:;,]|\s+)/);
62766
+ }
62767
+ };
62768
+ new CssDiff();
62769
+ //#endregion
62770
+ //#region ../../../packages/common-browser/node_modules/diff/libesm/diff/json.js
62771
+ var JsonDiff = class extends Diff {
62772
+ constructor() {
62773
+ super(...arguments);
62774
+ this.tokenize = tokenize;
62775
+ }
62776
+ get useLongestToken() {
62777
+ return true;
62778
+ }
62779
+ castInput(value, options) {
62780
+ const { undefinedReplacement, stringifyReplacer = (k, v) => typeof v === "undefined" ? undefinedReplacement : v } = options;
62781
+ return typeof value === "string" ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), null, " ");
62782
+ }
62783
+ equals(left, right, options) {
62784
+ return super.equals(left.replace(/,([\r\n])/g, "$1"), right.replace(/,([\r\n])/g, "$1"), options);
62785
+ }
62786
+ };
62787
+ new JsonDiff();
62788
+ function canonicalize(obj, stack, replacementStack, replacer, key) {
62789
+ stack = stack || [];
62790
+ replacementStack = replacementStack || [];
62791
+ if (replacer) obj = replacer(key === void 0 ? "" : key, obj);
62792
+ let i;
62793
+ for (i = 0; i < stack.length; i += 1) if (stack[i] === obj) return replacementStack[i];
62794
+ let canonicalizedObj;
62795
+ if ("[object Array]" === Object.prototype.toString.call(obj)) {
62796
+ stack.push(obj);
62797
+ canonicalizedObj = new Array(obj.length);
62798
+ replacementStack.push(canonicalizedObj);
62799
+ for (i = 0; i < obj.length; i += 1) canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, String(i));
62800
+ stack.pop();
62801
+ replacementStack.pop();
62802
+ return canonicalizedObj;
62803
+ }
62804
+ if (obj && obj.toJSON) obj = obj.toJSON();
62805
+ if (typeof obj === "object" && obj !== null) {
62806
+ stack.push(obj);
62807
+ canonicalizedObj = {};
62808
+ replacementStack.push(canonicalizedObj);
62809
+ const sortedKeys = [];
62810
+ let key;
62811
+ for (key in obj)
62812
+ /* istanbul ignore else */
62813
+ if (Object.prototype.hasOwnProperty.call(obj, key)) sortedKeys.push(key);
62814
+ sortedKeys.sort();
62815
+ for (i = 0; i < sortedKeys.length; i += 1) {
62816
+ key = sortedKeys[i];
62817
+ canonicalizedObj[key] = canonicalize(obj[key], stack, replacementStack, replacer, key);
62818
+ }
62819
+ stack.pop();
62820
+ replacementStack.pop();
62821
+ } else canonicalizedObj = obj;
62822
+ return canonicalizedObj;
62823
+ }
62824
+ //#endregion
62825
+ //#region ../../../packages/common-browser/node_modules/diff/libesm/diff/array.js
62826
+ var ArrayDiff = class extends Diff {
62827
+ tokenize(value) {
62828
+ return value.slice();
62829
+ }
62830
+ join(value) {
62831
+ return value;
62832
+ }
62833
+ removeEmpty(value) {
62834
+ return value;
62835
+ }
62836
+ };
62837
+ new ArrayDiff();
62323
62838
  Object.freeze({ status: "aborted" });
62324
62839
  function $constructor(name, initializer, params) {
62325
62840
  function init(inst, def) {
@@ -66176,4 +66691,4 @@ function number(params) {
66176
66691
  return /* @__PURE__ */ _coercedNumber(ZodNumber, params);
66177
66692
  }
66178
66693
  //#endregion
66179
- export { union$1 as $, UnstyledButton as $t, IconNote as A, Menu as At, IconArrowBackUp as B, Button as Bt, useForm as C, Select as Ct, IconTrash as D, Pagination as Dt, IconUpload as E, PasswordInput as Et, IconInfoCircle as F, Divider as Ft, ZodIssueCode as G, Anchor as Gt, IconAlertTriangle as H, Autocomplete as Ht, IconFile as I, Container as It, boolean$3 as J, Accordion as Jt, _enum$1 as K, Text as Kt, IconEye$1 as L, Code as Lt, IconListDetails as M, Image as Mt, IconLayoutSidebarLeftExpand as N, FileButton as Nt, IconRobot as O, NumberInput as Ot, IconLayoutSidebarLeftCollapse as P, Drawer as Pt, string$5 as Q, Popover as Qt, IconChevronDown as R, Center as Rt, IconCopy as S, Stack as St, IconUser as T, Tooltip as Tt, IconAlertCircle as U, Checkbox as Ut, IconApi as V, Badge as Vt, require_semver as W, AppShell as Wt, object$1 as X, ActionIcon as Xt, number$4 as Y, Group as Yt, record as Z, Loader as Zt, IconRefresh as _, Title as _t, _undefined as a, require_jsx_runtime as an, Route as at, IconEyeOff as b, Table as bt, boolean as c, useNavigate as ct, object as d, useSearchParams as dt, ScrollArea as en, unknown$1 as et, string$1 as f, Notifications as ft, Markdown as g, DatesProvider as gt, remarkGfm as h, DateInput as ht, _null as i, useDebouncedValue as in, Outlet as it, IconLogout as j, Textarea as jt, IconPlus as k, Modal as kt, literal as l, useOutletContext as lt, datetime as m, DateTimePicker as mt, string as n, MantineProvider as nn, Link as nt, any as o, require_client as on, Routes as ot, union as p, notifications as pt, array$1 as q, Alert as qt, _enum as r, useDisclosure as rn, Navigate as rt, array as s, require_react as sn, useLocation as st, number as t, Box as tn, BrowserRouter as tt, number$1 as u, useParams as ut, IconPhoto as v, TextInput as vt, IconX as w, SegmentedControl as wt, IconDownload as x, Switch as xt, IconEye as y, Tabs as yt, IconCheck as z, Card as zt };
66694
+ export { string$5 as $, Popover as $t, IconPlus as A, Modal as At, IconCheck as B, Card as Bt, IconCopy as C, Stack as Ct, IconUpload as D, PasswordInput as Dt, IconUser as E, Tooltip as Et, IconLayoutSidebarLeftCollapse as F, Drawer as Ft, require_semver as G, AppShell as Gt, IconApi as H, Badge as Ht, IconInfoCircle as I, Divider as It, array$1 as J, Alert as Jt, ZodIssueCode as K, Anchor as Kt, IconFile as L, Container as Lt, IconLogout as M, Textarea as Mt, IconListDetails as N, Image as Nt, IconTrash as O, Pagination as Ot, IconLayoutSidebarLeftExpand as P, FileButton as Pt, record as Q, Loader as Qt, IconEye$1 as R, Code as Rt, IconDownload as S, Switch as St, IconX as T, SegmentedControl as Tt, IconAlertTriangle as U, Autocomplete as Ut, IconArrowBackUp as V, Button as Vt, IconAlertCircle as W, Checkbox as Wt, number$4 as X, Group as Xt, boolean$3 as Y, Accordion as Yt, object$1 as Z, ActionIcon as Zt, Markdown as _, DatesProvider as _t, _undefined as a, useDebouncedValue as an, Outlet as at, IconEye as b, Tabs as bt, boolean as c, require_react as cn, useLocation as ct, object as d, useParams as dt, UnstyledButton as en, union$1 as et, string$1 as f, useSearchParams as ft, remarkGfm as g, DateInput as gt, diffWordsWithSpace as h, DateTimePicker as ht, _null as i, useDisclosure as in, Navigate as it, IconNote as j, Menu as jt, IconRobot as k, NumberInput as kt, literal as l, useNavigate as lt, datetime as m, notifications as mt, string as n, Box as nn, BrowserRouter as nt, any as o, require_jsx_runtime as on, Route as ot, union as p, Notifications as pt, _enum$1 as q, Text as qt, _enum as r, MantineProvider as rn, Link as rt, array as s, require_client as sn, Routes as st, number as t, ScrollArea as tn, unknown$1 as tt, number$1 as u, useOutletContext as ut, IconRefresh as v, Title as vt, useForm as w, Select as wt, IconEyeOff as x, Table as xt, IconPhoto as y, TextInput as yt, IconChevronDown as z, Center as zt };
@@ -45,9 +45,9 @@
45
45
  <meta name="format-detection" content="telephone=no" />
46
46
 
47
47
  <title>NAISYS ERP</title>
48
- <script type="module" crossorigin src="/erp/assets/index-BtPV-Cky.js"></script>
48
+ <script type="module" crossorigin src="/erp/assets/index-BQQF-oz_.js"></script>
49
49
  <link rel="modulepreload" crossorigin href="/erp/assets/rolldown-runtime-CvHMtSRF.js">
50
- <link rel="modulepreload" crossorigin href="/erp/assets/vendor-DFaFIeiT.js">
50
+ <link rel="modulepreload" crossorigin href="/erp/assets/vendor-Co7ZCNxO.js">
51
51
  <link rel="stylesheet" crossorigin href="/erp/assets/vendor-CLUPjUnv.css">
52
52
  <link rel="stylesheet" crossorigin href="/erp/assets/index-CSiMTJfw.css">
53
53
  </head>
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@naisys/erp",
3
- "version": "3.0.0-beta.42",
3
+ "version": "3.0.0-beta.44",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@naisys/erp",
9
- "version": "3.0.0-beta.42",
9
+ "version": "3.0.0-beta.44",
10
10
  "dependencies": {
11
11
  "@fastify/cookie": "^11.0.2",
12
12
  "@fastify/cors": "^11.2.0",
@@ -14,11 +14,11 @@
14
14
  "@fastify/rate-limit": "^10.3.0",
15
15
  "@fastify/static": "^9.0.0",
16
16
  "@fastify/swagger": "^9.7.0",
17
- "@naisys/common": "3.0.0-beta.42",
18
- "@naisys/common-node": "3.0.0-beta.42",
19
- "@naisys/erp-shared": "3.0.0-beta.42",
20
- "@naisys/hub-database": "3.0.0-beta.42",
21
- "@naisys/supervisor-database": "3.0.0-beta.42",
17
+ "@naisys/common": "3.0.0-beta.44",
18
+ "@naisys/common-node": "3.0.0-beta.44",
19
+ "@naisys/erp-shared": "3.0.0-beta.44",
20
+ "@naisys/hub-database": "3.0.0-beta.44",
21
+ "@naisys/supervisor-database": "3.0.0-beta.44",
22
22
  "@prisma/adapter-better-sqlite3": "^7.5.0",
23
23
  "@prisma/client": "^7.5.0",
24
24
  "@scalar/fastify-api-reference": "^1.48.7",
@@ -394,41 +394,41 @@
394
394
  }
395
395
  },
396
396
  "node_modules/@naisys/common": {
397
- "version": "3.0.0-beta.42",
398
- "resolved": "https://registry.npmjs.org/@naisys/common/-/common-3.0.0-beta.42.tgz",
399
- "integrity": "sha512-uF5qsHYTtG7KMzdkpSrvC8sJubiP1EMSYrdsDhC/7am6txIph+sYc+4YRDDEL+nsXyJZ0pzKlpsIqyA3n0VShA==",
397
+ "version": "3.0.0-beta.44",
398
+ "resolved": "https://registry.npmjs.org/@naisys/common/-/common-3.0.0-beta.44.tgz",
399
+ "integrity": "sha512-g7ZiYVZTXa+qhPdzNrc0CDjx6ks/Gl8uJ+GVJlocyeClU+eKfbsc7/NU4f8S+DUyxrwZIA082r1ZR9YATjbc4g==",
400
400
  "dependencies": {
401
401
  "semver": "^7.7.4",
402
402
  "zod": "^4.3.6"
403
403
  }
404
404
  },
405
405
  "node_modules/@naisys/common-node": {
406
- "version": "3.0.0-beta.42",
407
- "resolved": "https://registry.npmjs.org/@naisys/common-node/-/common-node-3.0.0-beta.42.tgz",
408
- "integrity": "sha512-fnVLrTQolU5jzrDEF5t2JXVN3Cd9IJ7web6Gm6K61vqFreBE4jJpuH/IqlIK8J1Cx8YRKiGrpX8+M5JEiQ/GwQ==",
406
+ "version": "3.0.0-beta.44",
407
+ "resolved": "https://registry.npmjs.org/@naisys/common-node/-/common-node-3.0.0-beta.44.tgz",
408
+ "integrity": "sha512-8I/1Q+cqxW204x8HY24cnoMn2fNNd4d+s5VX6/0G4Fotcx08n1fRFqNENDmGfhEPOlvS9KBpVhyTqr5/Ur/GVw==",
409
409
  "dependencies": {
410
- "@naisys/common": "3.0.0-beta.42",
410
+ "@naisys/common": "3.0.0-beta.44",
411
411
  "better-sqlite3": "^12.6.2",
412
412
  "js-yaml": "^4.1.1",
413
413
  "pino": "^10.3.1"
414
414
  }
415
415
  },
416
416
  "node_modules/@naisys/erp-shared": {
417
- "version": "3.0.0-beta.42",
418
- "resolved": "https://registry.npmjs.org/@naisys/erp-shared/-/erp-shared-3.0.0-beta.42.tgz",
419
- "integrity": "sha512-6p94ZxCe42KCvkocQoppLsyPBNXOWcQrAMgDWK9cLJfL4avu1hGtjkkmZHFCGuL6IdQGO0FGWtKWD3fTx8vMuA==",
417
+ "version": "3.0.0-beta.44",
418
+ "resolved": "https://registry.npmjs.org/@naisys/erp-shared/-/erp-shared-3.0.0-beta.44.tgz",
419
+ "integrity": "sha512-YdWKB3FfeU6Wkz/IS4iLzTCy0G9pnnN5clvHQ6THQ+o4V5aTsf7fiwtIIaPDJoF1lZVipgpCYjfQcUj4F8E7kw==",
420
420
  "dependencies": {
421
- "@naisys/common": "3.0.0-beta.42",
421
+ "@naisys/common": "3.0.0-beta.44",
422
422
  "zod": "^4.3.6"
423
423
  }
424
424
  },
425
425
  "node_modules/@naisys/hub-database": {
426
- "version": "3.0.0-beta.42",
427
- "resolved": "https://registry.npmjs.org/@naisys/hub-database/-/hub-database-3.0.0-beta.42.tgz",
428
- "integrity": "sha512-ioa6Tsu4rFkYbaClgdg+GK1+7ipIVYdPiUhQcreXUNDqg9yHIGuT9neS31DwfpEPwhhAlagHLtY2ncwbaIMQhA==",
426
+ "version": "3.0.0-beta.44",
427
+ "resolved": "https://registry.npmjs.org/@naisys/hub-database/-/hub-database-3.0.0-beta.44.tgz",
428
+ "integrity": "sha512-DXrWAdr9BHvv3pQUderMhG70r3FfydN9qygtm1OHSYgUa51tQ+e7mkEsfOINK4nmt+cg6MoW1s4kPeh7LovLVw==",
429
429
  "dependencies": {
430
- "@naisys/common": "3.0.0-beta.42",
431
- "@naisys/common-node": "3.0.0-beta.42",
430
+ "@naisys/common": "3.0.0-beta.44",
431
+ "@naisys/common-node": "3.0.0-beta.44",
432
432
  "@prisma/adapter-better-sqlite3": "^7.5.0",
433
433
  "@prisma/client": "^7.5.0",
434
434
  "better-sqlite3": "^12.6.2",
@@ -436,12 +436,12 @@
436
436
  }
437
437
  },
438
438
  "node_modules/@naisys/supervisor-database": {
439
- "version": "3.0.0-beta.42",
440
- "resolved": "https://registry.npmjs.org/@naisys/supervisor-database/-/supervisor-database-3.0.0-beta.42.tgz",
441
- "integrity": "sha512-FDyjqIQvMWygofzyaslojf7THmaem/Cr2Uh0HU1AaZ0QKjQ/iRd8WSy6FfwUXbWZdcijzJv7dnQp2zdV8uB45w==",
439
+ "version": "3.0.0-beta.44",
440
+ "resolved": "https://registry.npmjs.org/@naisys/supervisor-database/-/supervisor-database-3.0.0-beta.44.tgz",
441
+ "integrity": "sha512-Z7OLyOII1UTXAz/4KXjbG4hy/GCRCTXwNasmfELO3beAM66GvKAlXrGClFSHtXNKvgVaQomATSRdZKqlPH4tVg==",
442
442
  "dependencies": {
443
- "@naisys/common": "3.0.0-beta.42",
444
- "@naisys/common-node": "3.0.0-beta.42",
443
+ "@naisys/common": "3.0.0-beta.44",
444
+ "@naisys/common-node": "3.0.0-beta.44",
445
445
  "@prisma/adapter-better-sqlite3": "^7.5.0",
446
446
  "@prisma/client": "^7.5.0",
447
447
  "bcryptjs": "^3.0.2",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@naisys/erp",
3
- "version": "3.0.0-beta.42",
3
+ "version": "3.0.0-beta.44",
4
4
  "description": "NAISYS ERP - Web UI for AI-driven order and work management",
5
5
  "type": "module",
6
6
  "main": "dist/erpServer.js",
@@ -46,11 +46,11 @@
46
46
  "@fastify/rate-limit": "^10.3.0",
47
47
  "@fastify/static": "^9.0.0",
48
48
  "@fastify/swagger": "^9.7.0",
49
- "@naisys/common": "3.0.0-beta.42",
50
- "@naisys/common-node": "3.0.0-beta.42",
51
- "@naisys/erp-shared": "3.0.0-beta.42",
52
- "@naisys/hub-database": "3.0.0-beta.42",
53
- "@naisys/supervisor-database": "3.0.0-beta.42",
49
+ "@naisys/common": "3.0.0-beta.44",
50
+ "@naisys/common-node": "3.0.0-beta.44",
51
+ "@naisys/erp-shared": "3.0.0-beta.44",
52
+ "@naisys/hub-database": "3.0.0-beta.44",
53
+ "@naisys/supervisor-database": "3.0.0-beta.44",
54
54
  "@prisma/adapter-better-sqlite3": "^7.5.0",
55
55
  "@prisma/client": "^7.5.0",
56
56
  "@scalar/fastify-api-reference": "^1.48.7",