@seedtactics/insight-client 16.8.4-beta.8 → 17.0.0-beta.0

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 (41) hide show
  1. package/README.md +21 -0
  2. package/dist/assets/index-BkKYqUM0.js +388 -0
  3. package/dist/cell-status/material-details.d.ts +19 -5
  4. package/dist/cell-status/material-details.js +71 -37
  5. package/dist/components/LogEntry.js +2 -9
  6. package/dist/components/log-entry-container-name.d.ts +2 -0
  7. package/dist/components/log-entry-container-name.js +10 -0
  8. package/dist/components/operations/AllMaterial.js +4 -3
  9. package/dist/components/station-monitor/BasketLoadStationWork.js +12 -8
  10. package/dist/components/station-monitor/BulkRawMaterial.js +4 -4
  11. package/dist/components/station-monitor/CancelLoadButton.d.ts +4 -0
  12. package/dist/components/station-monitor/CancelLoadButton.js +60 -0
  13. package/dist/components/station-monitor/Closeout.js +2 -1
  14. package/dist/components/station-monitor/Inspection.js +2 -1
  15. package/dist/components/station-monitor/InvalidateCycle.d.ts +4 -1
  16. package/dist/components/station-monitor/InvalidateCycle.js +104 -38
  17. package/dist/components/station-monitor/LoadStation.js +25 -15
  18. package/dist/components/station-monitor/Material.js +14 -1
  19. package/dist/components/station-monitor/QuarantineButton.js +160 -90
  20. package/dist/components/station-monitor/Queues.js +2 -1
  21. package/dist/components/station-monitor/QueuesAddMaterial.js +65 -57
  22. package/dist/components/station-monitor/SystemOverview.js +2 -1
  23. package/dist/components/station-monitor/Whiteboard.js +2 -2
  24. package/dist/data/material-operation-policy.d.ts +21 -0
  25. package/dist/data/material-operation-policy.js +89 -0
  26. package/dist/extension.d.ts +11 -0
  27. package/dist/extension.js +21 -0
  28. package/dist/index.html +1 -2
  29. package/dist/index.js +1 -1
  30. package/dist/network/api.d.ts +20 -4
  31. package/dist/network/api.js +163 -2
  32. package/dist/network/backend-mock.js +6 -0
  33. package/dist/network/backend.d.ts +2 -0
  34. package/dist/network/backend.js +2 -1
  35. package/package.json +12 -11
  36. package/dist/assets/index-DHusyIyb.js +0 -388
  37. package/dist/assets/manifest-BzJli0lx.webmanifest +0 -15
  38. package/dist/bootstrap.d.ts +0 -5
  39. package/dist/bootstrap.js +0 -56
  40. package/dist/components/station-monitor/Material.test.d.ts +0 -1
  41. package/dist/components/station-monitor/Material.test.js +0 -199
@@ -0,0 +1,21 @@
1
+ import { createStore } from "jotai";
2
+ import { registerNetworkBackend } from "./network/backend.js";
3
+ import { fmsInformation, loadInfo } from "./network/server-settings.js";
4
+ import { render } from "./renderer.js";
5
+ /**
6
+ * Starts one complete FMS Insight application with optional statically composed custom pages.
7
+ */
8
+ export async function bootstrapInsight(appProps = {}, rootElement) {
9
+ const root = rootElement ?? document.getElementById("root");
10
+ if (!root) {
11
+ throw new Error("Unable to start FMS Insight: no root element was provided or found");
12
+ }
13
+ registerNetworkBackend();
14
+ const store = createStore();
15
+ store.set(fmsInformation, await loadInfo());
16
+ render(appProps, root, store);
17
+ }
18
+ export { customState } from "./cell-status/custom-state.js";
19
+ export { defaultChooseModes } from "./components/ChooseMode.js";
20
+ export { RouteLocation } from "./components/routes.js";
21
+ export { authenticatedFetch } from "./network/backend.js";
package/dist/index.html CHANGED
@@ -3,7 +3,6 @@
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
6
- <link rel="manifest" href="/assets/manifest-BzJli0lx.webmanifest" />
7
6
  <link rel="shortcut icon" href="/assets/favicon-gWFxiJK2.ico" />
8
7
  <title>SeedTactic FMS Insight</title>
9
8
  <style type="text/css">
@@ -44,7 +43,7 @@
44
43
  }
45
44
  }
46
45
  </style>
47
- <script type="module" crossorigin src="/assets/index-DHusyIyb.js"></script>
46
+ <script type="module" crossorigin src="/assets/index-BkKYqUM0.js"></script>
48
47
  <link rel="stylesheet" crossorigin href="/assets/index-DXfAwuj-.css">
49
48
  </head>
50
49
  <body>
package/dist/index.js CHANGED
@@ -30,7 +30,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30
30
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31
31
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
32
  */
33
- import { bootstrapInsight } from "./bootstrap.js";
33
+ import { bootstrapInsight } from "./extension.js";
34
34
  import { ApiException } from "./network/api.js";
35
35
  async function main() {
36
36
  const developmentProps = import.meta.env.DEV
@@ -53,6 +53,10 @@ export declare class JobsClient {
53
53
  protected processRemoveMaterialFromAllQueues(response: Response): Promise<void>;
54
54
  signalMaterialForQuarantine(materialId: number, operName: string | null | undefined, reason: string | undefined, signal?: AbortSignal): Promise<void>;
55
55
  protected processSignalMaterialForQuarantine(response: Response): Promise<void>;
56
+ quarantineQueuedMaterial(materialId: number, operName: string | null | undefined, reason: string | undefined, signal?: AbortSignal): Promise<void>;
57
+ protected processQuarantineQueuedMaterial(response: Response): Promise<void>;
58
+ cancelLoad(materialId: number, operName: string | null | undefined, request: CancelLoadRequest, signal?: AbortSignal): Promise<void>;
59
+ protected processCancelLoad(response: Response): Promise<void>;
56
60
  invalidatePalletCycle(materialId: number, operName: string | null | undefined, changeCastingTo: string | null | undefined, changeJobUniqueTo: string | null | undefined, process: number, signal?: AbortSignal): Promise<MaterialDetails>;
57
61
  protected processInvalidatePalletCycle(response: Response): Promise<MaterialDetails>;
58
62
  swapMaterialOnPallet(materialId: number, operName: string | null | undefined, mat: MatToPutOnPallet, signal?: AbortSignal): Promise<void>;
@@ -140,7 +144,6 @@ export declare class FMSInfo implements IFMSInfo {
140
144
  openIDConnectClientId?: string | undefined;
141
145
  usingLabelPrinterForSerials?: boolean | undefined;
142
146
  useClientPrinterForLabels?: boolean | undefined;
143
- allowQuarantineToCancelLoad?: boolean | undefined;
144
147
  quarantineQueue?: string | undefined;
145
148
  customStationMonitorDialogUrl?: string | undefined;
146
149
  supportsRebookings?: string | undefined;
@@ -172,7 +175,6 @@ export interface IFMSInfo {
172
175
  openIDConnectClientId?: string | undefined;
173
176
  usingLabelPrinterForSerials?: boolean | undefined;
174
177
  useClientPrinterForLabels?: boolean | undefined;
175
- allowQuarantineToCancelLoad?: boolean | undefined;
176
178
  quarantineQueue?: string | undefined;
177
179
  customStationMonitorDialogUrl?: string | undefined;
178
180
  supportsRebookings?: string | undefined;
@@ -722,7 +724,7 @@ export declare class CurrentStatus implements ICurrentStatus {
722
724
  [key: string]: BasketStatus;
723
725
  } | undefined;
724
726
  basketMoveInstructions?: BasketMoveInstruction[] | undefined;
725
- customState?: unknown | undefined;
727
+ customState?: any | undefined;
726
728
  constructor(data?: ICurrentStatus);
727
729
  init(_data?: any): void;
728
730
  static fromJS(data: any): CurrentStatus;
@@ -747,7 +749,7 @@ export interface ICurrentStatus {
747
749
  [key: string]: BasketStatus;
748
750
  } | undefined;
749
751
  basketMoveInstructions?: BasketMoveInstruction[] | undefined;
750
- customState?: unknown | undefined;
752
+ customState?: any | undefined;
751
753
  }
752
754
  export declare class HistoricJob extends Job implements IHistoricJob {
753
755
  scheduleId?: string | undefined;
@@ -905,6 +907,7 @@ export declare enum LocType {
905
907
  export declare class InProcessMaterialAction implements IInProcessMaterialAction {
906
908
  type: ActionType;
907
909
  workId?: string | undefined;
910
+ loadCancellationId?: string | undefined;
908
911
  loadOntoPalletNum?: number | undefined;
909
912
  loadOntoFace?: number | undefined;
910
913
  processAfterLoad?: number | undefined;
@@ -927,6 +930,7 @@ export declare class InProcessMaterialAction implements IInProcessMaterialAction
927
930
  export interface IInProcessMaterialAction {
928
931
  type: ActionType;
929
932
  workId?: string | undefined;
933
+ loadCancellationId?: string | undefined;
930
934
  loadOntoPalletNum?: number | undefined;
931
935
  loadOntoFace?: number | undefined;
932
936
  processAfterLoad?: number | undefined;
@@ -1369,6 +1373,18 @@ export interface IQueuePosition {
1369
1373
  queue: string;
1370
1374
  position: number;
1371
1375
  }
1376
+ export declare class CancelLoadRequest implements ICancelLoadRequest {
1377
+ expectedLoadCancellationId: string;
1378
+ reason?: string | undefined;
1379
+ constructor(data?: ICancelLoadRequest);
1380
+ init(_data?: any): void;
1381
+ static fromJS(data: any): CancelLoadRequest;
1382
+ toJSON(data?: any): any;
1383
+ }
1384
+ export interface ICancelLoadRequest {
1385
+ expectedLoadCancellationId: string;
1386
+ reason?: string | undefined;
1387
+ }
1372
1388
  export declare class MatToPutOnPallet implements IMatToPutOnPallet {
1373
1389
  pallet: number;
1374
1390
  materialIDToSetOnPallet: number;
@@ -807,6 +807,16 @@ export class JobsClient {
807
807
  return;
808
808
  });
809
809
  }
810
+ else if (status === 400) {
811
+ return response.text().then((_responseText) => {
812
+ return throwException("A server side error occurred.", status, _responseText, _headers);
813
+ });
814
+ }
815
+ else if (status === 409) {
816
+ return response.text().then((_responseText) => {
817
+ return throwException("A server side error occurred.", status, _responseText, _headers);
818
+ });
819
+ }
810
820
  else if (status !== 200 && status !== 204) {
811
821
  return response.text().then((_responseText) => {
812
822
  return throwException("An unexpected server error occurred.", status, _responseText, _headers);
@@ -846,6 +856,119 @@ export class JobsClient {
846
856
  return;
847
857
  });
848
858
  }
859
+ else if (status === 400) {
860
+ return response.text().then((_responseText) => {
861
+ return throwException("A server side error occurred.", status, _responseText, _headers);
862
+ });
863
+ }
864
+ else if (status === 409) {
865
+ return response.text().then((_responseText) => {
866
+ return throwException("A server side error occurred.", status, _responseText, _headers);
867
+ });
868
+ }
869
+ else if (status !== 200 && status !== 204) {
870
+ return response.text().then((_responseText) => {
871
+ return throwException("An unexpected server error occurred.", status, _responseText, _headers);
872
+ });
873
+ }
874
+ return Promise.resolve(null);
875
+ }
876
+ quarantineQueuedMaterial(materialId, operName, reason, signal) {
877
+ let url_ = this.baseUrl + "/api/v1/jobs/material/{materialId}/quarantine-queued?";
878
+ if (materialId === undefined || materialId === null)
879
+ throw new globalThis.Error("The parameter 'materialId' must be defined.");
880
+ url_ = url_.replace("{materialId}", encodeURIComponent("" + materialId));
881
+ if (operName !== undefined && operName !== null)
882
+ url_ += "operName=" + encodeURIComponent("" + operName) + "&";
883
+ url_ = url_.replace(/[?&]$/, "");
884
+ const content_ = JSON.stringify(reason);
885
+ let options_ = {
886
+ body: content_,
887
+ method: "PUT",
888
+ signal,
889
+ headers: {
890
+ "Content-Type": "application/json",
891
+ },
892
+ };
893
+ return this.http.fetch(url_, options_).then((_response) => {
894
+ return this.processQuarantineQueuedMaterial(_response);
895
+ });
896
+ }
897
+ processQuarantineQueuedMaterial(response) {
898
+ const status = response.status;
899
+ let _headers = {};
900
+ if (response.headers && response.headers.forEach) {
901
+ response.headers.forEach((v, k) => (_headers[k] = v));
902
+ }
903
+ if (status === 200) {
904
+ return response.text().then((_responseText) => {
905
+ return;
906
+ });
907
+ }
908
+ else if (status === 400) {
909
+ return response.text().then((_responseText) => {
910
+ return throwException("A server side error occurred.", status, _responseText, _headers);
911
+ });
912
+ }
913
+ else if (status === 409) {
914
+ return response.text().then((_responseText) => {
915
+ return throwException("A server side error occurred.", status, _responseText, _headers);
916
+ });
917
+ }
918
+ else if (status !== 200 && status !== 204) {
919
+ return response.text().then((_responseText) => {
920
+ return throwException("An unexpected server error occurred.", status, _responseText, _headers);
921
+ });
922
+ }
923
+ return Promise.resolve(null);
924
+ }
925
+ cancelLoad(materialId, operName, request, signal) {
926
+ let url_ = this.baseUrl + "/api/v1/jobs/material/{materialId}/cancel-load?";
927
+ if (materialId === undefined || materialId === null)
928
+ throw new globalThis.Error("The parameter 'materialId' must be defined.");
929
+ url_ = url_.replace("{materialId}", encodeURIComponent("" + materialId));
930
+ if (operName !== undefined && operName !== null)
931
+ url_ += "operName=" + encodeURIComponent("" + operName) + "&";
932
+ url_ = url_.replace(/[?&]$/, "");
933
+ const content_ = JSON.stringify(request);
934
+ let options_ = {
935
+ body: content_,
936
+ method: "PUT",
937
+ signal,
938
+ headers: {
939
+ "Content-Type": "application/json",
940
+ },
941
+ };
942
+ return this.http.fetch(url_, options_).then((_response) => {
943
+ return this.processCancelLoad(_response);
944
+ });
945
+ }
946
+ processCancelLoad(response) {
947
+ const status = response.status;
948
+ let _headers = {};
949
+ if (response.headers && response.headers.forEach) {
950
+ response.headers.forEach((v, k) => (_headers[k] = v));
951
+ }
952
+ if (status === 200) {
953
+ return response.text().then((_responseText) => {
954
+ return;
955
+ });
956
+ }
957
+ else if (status === 400) {
958
+ return response.text().then((_responseText) => {
959
+ return throwException("A server side error occurred.", status, _responseText, _headers);
960
+ });
961
+ }
962
+ else if (status === 409) {
963
+ return response.text().then((_responseText) => {
964
+ return throwException("A server side error occurred.", status, _responseText, _headers);
965
+ });
966
+ }
967
+ else if (status === 500) {
968
+ return response.text().then((_responseText) => {
969
+ return throwException("A server side error occurred.", status, _responseText, _headers);
970
+ });
971
+ }
849
972
  else if (status !== 200 && status !== 204) {
850
973
  return response.text().then((_responseText) => {
851
974
  return throwException("An unexpected server error occurred.", status, _responseText, _headers);
@@ -893,6 +1016,16 @@ export class JobsClient {
893
1016
  return result200;
894
1017
  });
895
1018
  }
1019
+ else if (status === 400) {
1020
+ return response.text().then((_responseText) => {
1021
+ return throwException("A server side error occurred.", status, _responseText, _headers);
1022
+ });
1023
+ }
1024
+ else if (status === 409) {
1025
+ return response.text().then((_responseText) => {
1026
+ return throwException("A server side error occurred.", status, _responseText, _headers);
1027
+ });
1028
+ }
896
1029
  else if (status !== 200 && status !== 204) {
897
1030
  return response.text().then((_responseText) => {
898
1031
  return throwException("An unexpected server error occurred.", status, _responseText, _headers);
@@ -2239,7 +2372,6 @@ export class FMSInfo {
2239
2372
  this.openIDConnectClientId = _data["OpenIDConnectClientId"];
2240
2373
  this.usingLabelPrinterForSerials = _data["UsingLabelPrinterForSerials"];
2241
2374
  this.useClientPrinterForLabels = _data["UseClientPrinterForLabels"];
2242
- this.allowQuarantineToCancelLoad = _data["AllowQuarantineToCancelLoad"];
2243
2375
  this.quarantineQueue = _data["QuarantineQueue"];
2244
2376
  this.customStationMonitorDialogUrl = _data["CustomStationMonitorDialogUrl"];
2245
2377
  this.supportsRebookings = _data["SupportsRebookings"];
@@ -2287,7 +2419,6 @@ export class FMSInfo {
2287
2419
  data["OpenIDConnectClientId"] = this.openIDConnectClientId;
2288
2420
  data["UsingLabelPrinterForSerials"] = this.usingLabelPrinterForSerials;
2289
2421
  data["UseClientPrinterForLabels"] = this.useClientPrinterForLabels;
2290
- data["AllowQuarantineToCancelLoad"] = this.allowQuarantineToCancelLoad;
2291
2422
  data["QuarantineQueue"] = this.quarantineQueue;
2292
2423
  data["CustomStationMonitorDialogUrl"] = this.customStationMonitorDialogUrl;
2293
2424
  data["SupportsRebookings"] = this.supportsRebookings;
@@ -3982,6 +4113,7 @@ export class InProcessMaterialAction {
3982
4113
  if (_data) {
3983
4114
  this.type = _data["Type"];
3984
4115
  this.workId = _data["WorkId"];
4116
+ this.loadCancellationId = _data["LoadCancellationId"];
3985
4117
  this.loadOntoPalletNum = _data["LoadOntoPalletNum"];
3986
4118
  this.loadOntoFace = _data["LoadOntoFace"];
3987
4119
  this.processAfterLoad = _data["ProcessAfterLoad"];
@@ -4008,6 +4140,7 @@ export class InProcessMaterialAction {
4008
4140
  data = typeof data === "object" ? data : {};
4009
4141
  data["Type"] = this.type;
4010
4142
  data["WorkId"] = this.workId;
4143
+ data["LoadCancellationId"] = this.loadCancellationId;
4011
4144
  data["LoadOntoPalletNum"] = this.loadOntoPalletNum;
4012
4145
  data["LoadOntoFace"] = this.loadOntoFace;
4013
4146
  data["ProcessAfterLoad"] = this.processAfterLoad;
@@ -5058,6 +5191,34 @@ export class QueuePosition {
5058
5191
  return data;
5059
5192
  }
5060
5193
  }
5194
+ export class CancelLoadRequest {
5195
+ constructor(data) {
5196
+ if (data) {
5197
+ for (var property in data) {
5198
+ if (data.hasOwnProperty(property))
5199
+ this[property] = data[property];
5200
+ }
5201
+ }
5202
+ }
5203
+ init(_data) {
5204
+ if (_data) {
5205
+ this.expectedLoadCancellationId = _data["ExpectedLoadCancellationId"];
5206
+ this.reason = _data["Reason"];
5207
+ }
5208
+ }
5209
+ static fromJS(data) {
5210
+ data = typeof data === "object" ? data : {};
5211
+ let result = new CancelLoadRequest();
5212
+ result.init(data);
5213
+ return result;
5214
+ }
5215
+ toJSON(data) {
5216
+ data = typeof data === "object" ? data : {};
5217
+ data["ExpectedLoadCancellationId"] = this.expectedLoadCancellationId;
5218
+ data["Reason"] = this.reason;
5219
+ return data;
5220
+ }
5221
+ }
5061
5222
  export class MatToPutOnPallet {
5062
5223
  constructor(data) {
5063
5224
  if (data) {
@@ -226,6 +226,12 @@ export function registerMockBackend(offsetSeconds, mockD, mockEvts) {
226
226
  signalMaterialForQuarantine() {
227
227
  return Promise.resolve();
228
228
  },
229
+ quarantineQueuedMaterial() {
230
+ return Promise.resolve();
231
+ },
232
+ cancelLoad() {
233
+ return Promise.resolve();
234
+ },
229
235
  swapMaterialOnPallet() {
230
236
  return Promise.resolve();
231
237
  },
@@ -11,6 +11,8 @@ export interface JobAPI {
11
11
  addUnprocessedMaterialToQueue(jobUnique: string, lastCompletedProcess: number, queue: string, pos: number, operatorName: string | null, workorder: string | null, serial: string): Promise<Readonly<api.IInProcessMaterial> | undefined>;
12
12
  addUnallocatedCastingToQueue(castingName: string, queue: string, qty: number, operatrorName: string | null, workorder: string | null, serials: string[]): Promise<ReadonlyArray<Readonly<api.IInProcessMaterial>>>;
13
13
  signalMaterialForQuarantine(materialId: number, operName: string | null, reason: string | undefined): Promise<void>;
14
+ quarantineQueuedMaterial(materialId: number, operName: string | null, reason: string | undefined): Promise<void>;
15
+ cancelLoad(materialId: number, operName: string | null, request: Readonly<api.ICancelLoadRequest>): Promise<void>;
14
16
  swapMaterialOnPallet(materialId: number, operName: string | null, mat: Readonly<api.IMatToPutOnPallet>): Promise<void>;
15
17
  invalidatePalletCycle(materialId: number, operName: string | null | undefined, changeCastingTo: string | null | undefined, changeJobUniqueTo: string | null | undefined, process: number): Promise<Readonly<api.IMaterialDetails> | null | undefined>;
16
18
  unscheduledRebookings(signal?: AbortSignal): Promise<ReadonlyArray<Readonly<api.IRebooking>>>;
@@ -64,7 +64,8 @@ export function setUserToken(u) {
64
64
  }
65
65
  /** Performs a request using the authenticated Insight user's bearer token, when present. */
66
66
  export function authenticatedFetch(url, init) {
67
- const headers = new Headers(init?.headers);
67
+ const headers = new Headers(url instanceof Request ? url.headers : undefined);
68
+ new Headers(init?.headers).forEach((value, name) => headers.set(name, value));
68
69
  if (userAccessToken) {
69
70
  headers.set("Authorization", "Bearer " + userAccessToken);
70
71
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seedtactics/insight-client",
3
- "version": "16.8.4-beta.8",
3
+ "version": "17.0.0-beta.0",
4
4
  "license": "BSD-3-Clause",
5
5
  "repository": {
6
6
  "url": "https://github.com/SeedTactics/fms-insight"
@@ -11,7 +11,7 @@
11
11
  ],
12
12
  "type": "module",
13
13
  "exports": {
14
- "./bootstrap": "./dist/bootstrap.js",
14
+ "./extension": "./dist/extension.js",
15
15
  "./cell-status/*": "./dist/cell-status/*.js",
16
16
  "./components/*": "./dist/components/*.js",
17
17
  "./components/analysis/*": "./dist/components/analysis/*.js",
@@ -46,9 +46,9 @@
46
46
  "jotai-family": "^1.0.2",
47
47
  "jsbarcode": "^3.12.3",
48
48
  "oidc-client-ts": "^3.5.0",
49
- "react": "^19.2.7",
49
+ "react": "^19.2.8",
50
50
  "react-calendar": "^6.0.1",
51
- "react-dom": "^19.2.7",
51
+ "react-dom": "^19.2.8",
52
52
  "react-error-boundary": "^6.1.2",
53
53
  "react-resize-detector": "^12.3.0",
54
54
  "react-timeago": "^8.3.0",
@@ -61,16 +61,17 @@
61
61
  "@types/d3-sankey": "^0.12.5",
62
62
  "@types/d3-scale": "^4.0.9",
63
63
  "@types/d3-shape": "^3.1.8",
64
- "@types/node": "^26.1.1",
64
+ "@types/node": "^26.1.2",
65
65
  "@types/react": "^19.2.17",
66
66
  "@types/react-dom": "^19.2.3",
67
- "@vitejs/plugin-react": "^6.0.3",
67
+ "@vitejs/plugin-react": "^6.0.4",
68
68
  "@vitest/browser-playwright": "^4.1.10",
69
- "jsdom": "^29.1.1",
69
+ "jsdom": "^30.0.1",
70
70
  "nswag": "^14.7.1",
71
- "oxfmt": "^0.59.0",
72
- "oxlint": "^1.74.0",
73
- "oxlint-tsgolint": "^0.25.0",
71
+ "oxfmt": "^0.61.0",
72
+ "oxlint": "^1.76.0",
73
+ "oxlint-tsgolint": "^7.0.2001",
74
+ "playwright": "^1.62.0",
74
75
  "typescript": "^7.0.2",
75
76
  "vite": "^8.1.5",
76
77
  "vitest": "^4.1.10",
@@ -79,7 +80,7 @@
79
80
  "scripts": {
80
81
  "type-check": "tsc --noEmit --skipLibCheck",
81
82
  "lint": "oxlint --type-aware",
82
- "build": "tsc --noEmit --skipLibCheck && vite build",
83
+ "build": "vite build",
83
84
  "build:package": "tsc --project tsconfig.publish.json && cp -Tr ../../docs ./docs",
84
85
  "start": "vite",
85
86
  "test:unit": "vitest run --project unit",