@trackunit/react-core-hooks 1.14.5-alpha-58b6b568fca.0 → 1.14.6-alpha-0cf23ed9e66.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.
package/index.cjs.js CHANGED
@@ -4,7 +4,6 @@ var reactCoreContextsApi = require('@trackunit/react-core-contexts-api');
4
4
  var react = require('react');
5
5
  var esToolkit = require('es-toolkit');
6
6
  var irisAppRuntimeCore = require('@trackunit/iris-app-runtime-core');
7
- var zod = require('zod');
8
7
 
9
8
  /**
10
9
  * Hook to get the analytics context.
@@ -1057,128 +1056,6 @@ const useUserPermission = (requiredPermission) => {
1057
1056
  }, [permissions, requiredPermission]);
1058
1057
  };
1059
1058
 
1060
- /**
1061
- * Zod pipeline that parses a non-empty JSON string into an unknown value.
1062
- * Handles double-encoded JSON by attempting a second parse when the first
1063
- * result is still a string. Returns a Zod issue (rather than throwing)
1064
- * when the input is not valid JSON.
1065
- */
1066
- const jsonParsePipeline = zod.z
1067
- .string()
1068
- .min(1)
1069
- .transform((str, ctx) => {
1070
- let parsed;
1071
- try {
1072
- parsed = JSON.parse(str);
1073
- }
1074
- catch {
1075
- ctx.addIssue({
1076
- code: zod.z.ZodIssueCode.custom,
1077
- message: "Invalid JSON string",
1078
- });
1079
- return zod.z.NEVER;
1080
- }
1081
- if (typeof parsed === "string") {
1082
- try {
1083
- parsed = JSON.parse(parsed);
1084
- }
1085
- catch {
1086
- // Not double-encoded, keep the first-level parse
1087
- }
1088
- }
1089
- return parsed;
1090
- });
1091
- /**
1092
- * Safely parses a JSON string and validates the result against a Zod schema.
1093
- * Returns the validated value when parsing and validation succeed, otherwise `null`.
1094
- * The return type is inferred from the schema — no type assertions needed.
1095
- *
1096
- * @param jsonString - The JSON string to parse, or `null`.
1097
- * @param schema - A Zod schema that describes the expected shape of the parsed value.
1098
- * @example
1099
- * ```ts
1100
- * const result = safeParse('{"name":"Ada"}', z.object({ name: z.string() }));
1101
- * // result: { name: "Ada" }
1102
- *
1103
- * const num = safeParse("42", z.number());
1104
- * // num: 42
1105
- *
1106
- * const miss = safeParse('{"a":1}', z.object({ b: z.string() }));
1107
- * // miss: null
1108
- * ```
1109
- */
1110
- const safeParse = (jsonString, schema) => {
1111
- if (!jsonString) {
1112
- return null;
1113
- }
1114
- const jsonResult = jsonParsePipeline.pipe(schema).safeParse(jsonString);
1115
- if (jsonResult.success) {
1116
- return jsonResult.data;
1117
- }
1118
- // Not valid JSON — try validating the raw string directly
1119
- const rawResult = schema.safeParse(jsonString);
1120
- return rawResult.success ? rawResult.data : null;
1121
- };
1122
- /**
1123
- * Zod pipeline that validates a non-null value and converts it to a JSON string.
1124
- * Strings are returned as-is; all other values go through `JSON.stringify`.
1125
- * Non-serialisable values (e.g. circular references) produce a Zod issue
1126
- * instead of throwing.
1127
- */
1128
- const stringifySchema = zod.z
1129
- .unknown()
1130
- .refine((val) => val !== null && val !== undefined)
1131
- .transform((val, ctx) => {
1132
- if (typeof val === "string") {
1133
- return val;
1134
- }
1135
- try {
1136
- return JSON.stringify(val);
1137
- }
1138
- catch {
1139
- ctx.addIssue({
1140
- code: zod.z.ZodIssueCode.custom,
1141
- message: "Value is not serializable to JSON",
1142
- });
1143
- return zod.z.NEVER;
1144
- }
1145
- })
1146
- .pipe(zod.z.string());
1147
- /**
1148
- * Checks whether a string is valid, non-null JSON.
1149
- *
1150
- * Reuses the internal {@link jsonParsePipeline} so that the parsing logic
1151
- * stays in one place. Returns `false` for the JSON literal `"null"` to
1152
- * match the legacy behaviour where `JSON.parse(str) !== null` was required.
1153
- *
1154
- * @param jsonString - The string to test.
1155
- * @returns {boolean} `true` when the string can be parsed as non-null JSON.
1156
- */
1157
- const isJSON = (jsonString) => {
1158
- const result = jsonParsePipeline.safeParse(jsonString);
1159
- return result.success && result.data !== null;
1160
- };
1161
- /**
1162
- * Safely converts a value to a JSON string using a Zod validation pipeline.
1163
- *
1164
- * - Returns the value unchanged if it is already a string.
1165
- * - Returns `null` for `null` / `undefined` or if serialisation fails
1166
- * (e.g. circular references).
1167
- *
1168
- * @param value - The value to stringify.
1169
- * @returns {string | null} The JSON string representation, or `null` on failure.
1170
- * @example
1171
- * ```ts
1172
- * safeStringify({ a: 1 }) // '{"a":1}'
1173
- * safeStringify("hello") // "hello"
1174
- * safeStringify(null) // null
1175
- * ```
1176
- */
1177
- const safeStringify = (value) => {
1178
- const result = stringifySchema.safeParse(value);
1179
- return result.success ? result.data : null;
1180
- };
1181
-
1182
1059
  /**
1183
1060
  * This is a hook to use the WidgetConfigProvider.
1184
1061
  *
@@ -1306,9 +1183,6 @@ const useWidgetConfig = () => {
1306
1183
  };
1307
1184
 
1308
1185
  exports.fetchAssetBlobUrl = fetchAssetBlobUrl;
1309
- exports.isJSON = isJSON;
1310
- exports.safeParse = safeParse;
1311
- exports.safeStringify = safeStringify;
1312
1186
  exports.useAnalytics = useAnalytics;
1313
1187
  exports.useAssetRuntime = useAssetRuntime;
1314
1188
  exports.useAssetSorting = useAssetSorting;
package/index.esm.js CHANGED
@@ -2,7 +2,6 @@ import { AnalyticsContext, AssetSortingContext, ConfirmationDialogContext, Envir
2
2
  import { useContext, useMemo, useState, useCallback, useEffect, useReducer, useRef } from 'react';
3
3
  import { isEqual } from 'es-toolkit';
4
4
  import { AssetRuntime, CustomerRuntime, EventRuntime, ParamsRuntime, SiteRuntime, WidgetConfigRuntime } from '@trackunit/iris-app-runtime-core';
5
- import { z } from 'zod';
6
5
 
7
6
  /**
8
7
  * Hook to get the analytics context.
@@ -1055,128 +1054,6 @@ const useUserPermission = (requiredPermission) => {
1055
1054
  }, [permissions, requiredPermission]);
1056
1055
  };
1057
1056
 
1058
- /**
1059
- * Zod pipeline that parses a non-empty JSON string into an unknown value.
1060
- * Handles double-encoded JSON by attempting a second parse when the first
1061
- * result is still a string. Returns a Zod issue (rather than throwing)
1062
- * when the input is not valid JSON.
1063
- */
1064
- const jsonParsePipeline = z
1065
- .string()
1066
- .min(1)
1067
- .transform((str, ctx) => {
1068
- let parsed;
1069
- try {
1070
- parsed = JSON.parse(str);
1071
- }
1072
- catch {
1073
- ctx.addIssue({
1074
- code: z.ZodIssueCode.custom,
1075
- message: "Invalid JSON string",
1076
- });
1077
- return z.NEVER;
1078
- }
1079
- if (typeof parsed === "string") {
1080
- try {
1081
- parsed = JSON.parse(parsed);
1082
- }
1083
- catch {
1084
- // Not double-encoded, keep the first-level parse
1085
- }
1086
- }
1087
- return parsed;
1088
- });
1089
- /**
1090
- * Safely parses a JSON string and validates the result against a Zod schema.
1091
- * Returns the validated value when parsing and validation succeed, otherwise `null`.
1092
- * The return type is inferred from the schema — no type assertions needed.
1093
- *
1094
- * @param jsonString - The JSON string to parse, or `null`.
1095
- * @param schema - A Zod schema that describes the expected shape of the parsed value.
1096
- * @example
1097
- * ```ts
1098
- * const result = safeParse('{"name":"Ada"}', z.object({ name: z.string() }));
1099
- * // result: { name: "Ada" }
1100
- *
1101
- * const num = safeParse("42", z.number());
1102
- * // num: 42
1103
- *
1104
- * const miss = safeParse('{"a":1}', z.object({ b: z.string() }));
1105
- * // miss: null
1106
- * ```
1107
- */
1108
- const safeParse = (jsonString, schema) => {
1109
- if (!jsonString) {
1110
- return null;
1111
- }
1112
- const jsonResult = jsonParsePipeline.pipe(schema).safeParse(jsonString);
1113
- if (jsonResult.success) {
1114
- return jsonResult.data;
1115
- }
1116
- // Not valid JSON — try validating the raw string directly
1117
- const rawResult = schema.safeParse(jsonString);
1118
- return rawResult.success ? rawResult.data : null;
1119
- };
1120
- /**
1121
- * Zod pipeline that validates a non-null value and converts it to a JSON string.
1122
- * Strings are returned as-is; all other values go through `JSON.stringify`.
1123
- * Non-serialisable values (e.g. circular references) produce a Zod issue
1124
- * instead of throwing.
1125
- */
1126
- const stringifySchema = z
1127
- .unknown()
1128
- .refine((val) => val !== null && val !== undefined)
1129
- .transform((val, ctx) => {
1130
- if (typeof val === "string") {
1131
- return val;
1132
- }
1133
- try {
1134
- return JSON.stringify(val);
1135
- }
1136
- catch {
1137
- ctx.addIssue({
1138
- code: z.ZodIssueCode.custom,
1139
- message: "Value is not serializable to JSON",
1140
- });
1141
- return z.NEVER;
1142
- }
1143
- })
1144
- .pipe(z.string());
1145
- /**
1146
- * Checks whether a string is valid, non-null JSON.
1147
- *
1148
- * Reuses the internal {@link jsonParsePipeline} so that the parsing logic
1149
- * stays in one place. Returns `false` for the JSON literal `"null"` to
1150
- * match the legacy behaviour where `JSON.parse(str) !== null` was required.
1151
- *
1152
- * @param jsonString - The string to test.
1153
- * @returns {boolean} `true` when the string can be parsed as non-null JSON.
1154
- */
1155
- const isJSON = (jsonString) => {
1156
- const result = jsonParsePipeline.safeParse(jsonString);
1157
- return result.success && result.data !== null;
1158
- };
1159
- /**
1160
- * Safely converts a value to a JSON string using a Zod validation pipeline.
1161
- *
1162
- * - Returns the value unchanged if it is already a string.
1163
- * - Returns `null` for `null` / `undefined` or if serialisation fails
1164
- * (e.g. circular references).
1165
- *
1166
- * @param value - The value to stringify.
1167
- * @returns {string | null} The JSON string representation, or `null` on failure.
1168
- * @example
1169
- * ```ts
1170
- * safeStringify({ a: 1 }) // '{"a":1}'
1171
- * safeStringify("hello") // "hello"
1172
- * safeStringify(null) // null
1173
- * ```
1174
- */
1175
- const safeStringify = (value) => {
1176
- const result = stringifySchema.safeParse(value);
1177
- return result.success ? result.data : null;
1178
- };
1179
-
1180
1057
  /**
1181
1058
  * This is a hook to use the WidgetConfigProvider.
1182
1059
  *
@@ -1303,4 +1180,4 @@ const useWidgetConfig = () => {
1303
1180
  return result;
1304
1181
  };
1305
1182
 
1306
- export { fetchAssetBlobUrl, isJSON, safeParse, safeStringify, useAnalytics, useAssetRuntime, useAssetSorting, useConfirmationDialog, useCurrentUser, useCurrentUserFavoriteAdvancedSensors, useCurrentUserFavoriteInsights, useCurrentUserLanguage, useCurrentUserSystemOfMeasurement, useCurrentUserTimeZonePreference, useCustomerRuntime, useEnvironment, useErrorHandler, useErrorHandlerOrNull, useEventRuntime, useExportDataContext, useFeatureBranchQueryString, useFeatureFlags, useFilterBarContext, useGeolocation, useHasAccessTo, useImageUploader, useIrisAppId, useIrisAppImage, useIrisAppName, useModalDialogContext, useNavigateInHost, useOemBrandingContext, useSiteRuntime, useTimeRange, useToast, useToken, useUserPermission, useUserSubscription, useWidgetConfig, useWidgetConfigAsync };
1183
+ export { fetchAssetBlobUrl, useAnalytics, useAssetRuntime, useAssetSorting, useConfirmationDialog, useCurrentUser, useCurrentUserFavoriteAdvancedSensors, useCurrentUserFavoriteInsights, useCurrentUserLanguage, useCurrentUserSystemOfMeasurement, useCurrentUserTimeZonePreference, useCustomerRuntime, useEnvironment, useErrorHandler, useErrorHandlerOrNull, useEventRuntime, useExportDataContext, useFeatureBranchQueryString, useFeatureFlags, useFilterBarContext, useGeolocation, useHasAccessTo, useImageUploader, useIrisAppId, useIrisAppImage, useIrisAppName, useModalDialogContext, useNavigateInHost, useOemBrandingContext, useSiteRuntime, useTimeRange, useToast, useToken, useUserPermission, useUserSubscription, useWidgetConfig, useWidgetConfigAsync };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trackunit/react-core-hooks",
3
- "version": "1.14.5-alpha-58b6b568fca.0",
3
+ "version": "1.14.6-alpha-0cf23ed9e66.0",
4
4
  "repository": "https://github.com/Trackunit/manager",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "engines": {
@@ -8,11 +8,9 @@
8
8
  },
9
9
  "dependencies": {
10
10
  "es-toolkit": "^1.39.10",
11
- "@trackunit/iris-app-runtime-core": "1.14.4-alpha-58b6b568fca.0",
12
- "@trackunit/iris-app-runtime-core-api": "1.13.4-alpha-58b6b568fca.0",
13
- "@trackunit/react-core-contexts-api": "1.14.4-alpha-58b6b568fca.0",
14
- "@trackunit/react-core-contexts-test": "1.14.5-alpha-58b6b568fca.0",
15
- "zod": "^3.23.8"
11
+ "@trackunit/iris-app-runtime-core": "1.14.5-alpha-0cf23ed9e66.0",
12
+ "@trackunit/iris-app-runtime-core-api": "1.13.5-alpha-0cf23ed9e66.0",
13
+ "@trackunit/react-core-contexts-api": "1.14.5-alpha-0cf23ed9e66.0"
16
14
  },
17
15
  "peerDependencies": {
18
16
  "react": "^19.0.0"
package/src/index.d.ts CHANGED
@@ -27,5 +27,4 @@ export * from "./useFeatureBranchQueryString";
27
27
  export * from "./user/useCurrentUser";
28
28
  export * from "./user/useCurrentUserPreference";
29
29
  export * from "./user/useUserPermission";
30
- export * from "./utilities/SettingsUtils";
31
30
  export * from "./widgetConfig/useWidgetConfig";
@@ -13,7 +13,7 @@ import { LoadingState } from "@trackunit/iris-app-runtime-core-api";
13
13
  * };
14
14
  * @see { WidgetConfigContext}
15
15
  */
16
- export declare const useWidgetConfigAsync: () => import("@trackunit/iris-app-runtime-core").WidgetConfigContext;
16
+ export declare const useWidgetConfigAsync: () => import("@trackunit/iris-app-runtime-core-api").WidgetConfigContext;
17
17
  /**
18
18
  * This is a hook to use the WidgetConfigContext.
19
19
  *
@@ -35,8 +35,8 @@ export declare const useWidgetConfig: () => {
35
35
  setLoadingState: (newLoadingState: LoadingState) => Promise<void>;
36
36
  title: string | null;
37
37
  setTitle: (newTitle: string) => Promise<void>;
38
- filters: import("@trackunit/iris-app-runtime-core").FilterBarContext;
39
- timeRange: import("@trackunit/iris-app-runtime-core").TimeRange | null;
38
+ filters: import("@trackunit/iris-app-runtime-core-api").FilterBarContext;
39
+ timeRange: import("@trackunit/iris-app-runtime-core-api").TimeRange | null;
40
40
  isEditMode: boolean;
41
41
  pollInterval: number | undefined;
42
42
  openEditMode: () => Promise<void>;
@@ -1,49 +0,0 @@
1
- import { z } from "zod";
2
- /**
3
- * Safely parses a JSON string and validates the result against a Zod schema.
4
- * Returns the validated value when parsing and validation succeed, otherwise `null`.
5
- * The return type is inferred from the schema — no type assertions needed.
6
- *
7
- * @param jsonString - The JSON string to parse, or `null`.
8
- * @param schema - A Zod schema that describes the expected shape of the parsed value.
9
- * @example
10
- * ```ts
11
- * const result = safeParse('{"name":"Ada"}', z.object({ name: z.string() }));
12
- * // result: { name: "Ada" }
13
- *
14
- * const num = safeParse("42", z.number());
15
- * // num: 42
16
- *
17
- * const miss = safeParse('{"a":1}', z.object({ b: z.string() }));
18
- * // miss: null
19
- * ```
20
- */
21
- export declare const safeParse: <TValue>(jsonString: string | null, schema: z.ZodType<TValue>) => TValue | null;
22
- /**
23
- * Checks whether a string is valid, non-null JSON.
24
- *
25
- * Reuses the internal {@link jsonParsePipeline} so that the parsing logic
26
- * stays in one place. Returns `false` for the JSON literal `"null"` to
27
- * match the legacy behaviour where `JSON.parse(str) !== null` was required.
28
- *
29
- * @param jsonString - The string to test.
30
- * @returns {boolean} `true` when the string can be parsed as non-null JSON.
31
- */
32
- export declare const isJSON: (jsonString: string) => boolean;
33
- /**
34
- * Safely converts a value to a JSON string using a Zod validation pipeline.
35
- *
36
- * - Returns the value unchanged if it is already a string.
37
- * - Returns `null` for `null` / `undefined` or if serialisation fails
38
- * (e.g. circular references).
39
- *
40
- * @param value - The value to stringify.
41
- * @returns {string | null} The JSON string representation, or `null` on failure.
42
- * @example
43
- * ```ts
44
- * safeStringify({ a: 1 }) // '{"a":1}'
45
- * safeStringify("hello") // "hello"
46
- * safeStringify(null) // null
47
- * ```
48
- */
49
- export declare const safeStringify: (value: unknown) => string | null;