@nocios/crudify-components 2.0.32 → 2.0.36

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 (61) hide show
  1. package/coverage/base.css +224 -0
  2. package/coverage/block-navigation.js +87 -0
  3. package/coverage/coverage-final.json +120 -0
  4. package/coverage/favicon.png +0 -0
  5. package/coverage/index.html +686 -0
  6. package/coverage/prettify.css +1 -0
  7. package/coverage/prettify.js +2 -0
  8. package/coverage/sort-arrow-sprite.png +0 -0
  9. package/coverage/sorter.js +210 -0
  10. package/dist/{CrudiaMarkdownField-C54-A_J3.d.mts → CrudiaMarkdownField-Bxl08sRG.d.mts} +12 -7
  11. package/dist/{CrudiaMarkdownField-C8HQh7s5.d.ts → CrudiaMarkdownField-DUJNOOzP.d.ts} +12 -7
  12. package/dist/chunk-44VU4TSP.mjs +1 -0
  13. package/dist/chunk-4LMFQECS.js +1 -0
  14. package/dist/chunk-77UKXG5L.mjs +1 -0
  15. package/dist/{chunk-4VN5YRYZ.js → chunk-BXFEQ6KP.js} +1 -1
  16. package/dist/{chunk-6ONAT4QU.js → chunk-H6XXWDUT.js} +1 -1
  17. package/dist/chunk-NIRLP2TC.js +1 -0
  18. package/dist/chunk-O4FUHIQG.mjs +1 -0
  19. package/dist/chunk-QFACMV2I.mjs +1 -0
  20. package/dist/chunk-QZH3KSJZ.js +1 -0
  21. package/dist/{chunk-RJBX4MWF.mjs → chunk-WMLIOPUC.mjs} +1 -1
  22. package/dist/components.d.mts +1 -1
  23. package/dist/components.d.ts +1 -1
  24. package/dist/components.js +1 -1
  25. package/dist/components.mjs +1 -1
  26. package/dist/errorTranslation-D-Y7uNN_.d.mts +141 -0
  27. package/dist/errorTranslation-DDlAXpMl.d.ts +141 -0
  28. package/dist/hooks.d.mts +2 -2
  29. package/dist/hooks.d.ts +2 -2
  30. package/dist/hooks.js +1 -1
  31. package/dist/hooks.mjs +1 -1
  32. package/dist/{index-DY90WVQQ.d.mts → index-U--xRr8A.d.mts} +225 -191
  33. package/dist/{index-d1vE803G.d.ts → index-dXVRVcEB.d.ts} +225 -191
  34. package/dist/index.d.mts +175 -6
  35. package/dist/index.d.ts +175 -6
  36. package/dist/index.js +2 -2
  37. package/dist/index.mjs +1 -1
  38. package/dist/{errorTranslation-By5Av0tL.d.ts → tenantConfig-DqJqQkoR.d.mts} +116 -139
  39. package/dist/{errorTranslation-DeeDj7Vt.d.mts → tenantConfig-DqJqQkoR.d.ts} +116 -139
  40. package/dist/utils.d.mts +2 -2
  41. package/dist/utils.d.ts +2 -2
  42. package/dist/utils.js +1 -1
  43. package/dist/utils.mjs +1 -1
  44. package/package.json +1 -1
  45. package/coverage/.tmp/coverage-102.json +0 -1
  46. package/coverage/.tmp/coverage-103.json +0 -1
  47. package/coverage/.tmp/coverage-104.json +0 -1
  48. package/coverage/.tmp/coverage-105.json +0 -1
  49. package/coverage/.tmp/coverage-106.json +0 -1
  50. package/coverage/.tmp/coverage-107.json +0 -1
  51. package/dist/api-B4uXiHF0.d.mts +0 -118
  52. package/dist/api-B4uXiHF0.d.ts +0 -118
  53. package/dist/chunk-4ILUXVPW.mjs +0 -1
  54. package/dist/chunk-5XBTRBE5.js +0 -1
  55. package/dist/chunk-CR5KJUST.js +0 -1
  56. package/dist/chunk-H5M2Q6PB.mjs +0 -1
  57. package/dist/chunk-JAPL7EZJ.mjs +0 -1
  58. package/dist/chunk-L7GKP6XY.mjs +0 -1
  59. package/dist/chunk-NSV6ECYO.js +0 -1
  60. package/dist/chunk-PTUSZGL4.mjs +0 -1
  61. package/dist/chunk-T6R65ROU.js +0 -1
package/dist/index.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  import crudify__default from '@nocios/crudify-sdk';
2
2
  export * from '@nocios/crudify-sdk';
3
3
  export { default as crudify } from '@nocios/crudify-sdk';
4
- import { d as CrudifyLoginConfig, l as PasswordRule, E as EvaluatedPasswordRule } from './CrudiaMarkdownField-C8HQh7s5.js';
5
- export { B as BoxScreenType, a as CrudiaAutoGenerate, i as CrudiaAutoGenerateProps, b as CrudiaFileField, o as CrudiaFileFieldDeletionHandlers, j as CrudiaFileFieldProps, c as CrudiaMarkdownField, k as CrudiaMarkdownFieldProps, C as CrudifyLogin, e as CrudifyLoginProps, f as CrudifyLoginTranslations, D as DEFAULT_PASSWORD_RULES, L as LoginComponent, m as POLICY_ACTIONS, n as PREFERRED_POLICY_ORDER, p as PasswordRuleType, P as Policies, h as PolicyAction, S as SessionStatus, g as UserLoginData, U as UserProfileDisplay } from './CrudiaMarkdownField-C8HQh7s5.js';
4
+ import { d as CrudifyLoginConfig, l as PasswordRule, E as EvaluatedPasswordRule } from './CrudiaMarkdownField-DUJNOOzP.js';
5
+ export { B as BoxScreenType, a as CrudiaAutoGenerate, i as CrudiaAutoGenerateProps, b as CrudiaFileField, o as CrudiaFileFieldDeletionHandlers, j as CrudiaFileFieldProps, c as CrudiaMarkdownField, k as CrudiaMarkdownFieldProps, C as CrudifyLogin, e as CrudifyLoginProps, f as CrudifyLoginTranslations, D as DEFAULT_PASSWORD_RULES, L as LoginComponent, m as POLICY_ACTIONS, n as PREFERRED_POLICY_ORDER, p as PasswordRuleType, P as Policies, h as PolicyAction, S as SessionStatus, g as UserLoginData, U as UserProfileDisplay } from './CrudiaMarkdownField-DUJNOOzP.js';
6
6
  import React, { ReactNode } from 'react';
7
- export { A as ApiError, C as CrudifyApiResponse, d as CrudifyOperationOptions, e as CrudifyRequestOptions, a as CrudifyTransactionResponse, F as ForgotPasswordRequest, J as JwtPayload, b as LoginRequest, L as LoginResponse, R as ResetPasswordRequest, g as TransactionInput, f as TransactionOperation, T as TransactionResponseData, U as UserProfile, V as ValidateCodeRequest, c as ValidationError } from './api-B4uXiHF0.js';
8
- export { F as FileItem, v as FileStatus, L as LoginResult, N as NotificationOptions, a as SessionConfig, g as SessionDebugInfo, S as SessionManager, e as SessionProvider, h as SessionProviderProps, d as SessionState, c as StorageType, b as TokenData, T as TokenStorage, n as UseAuthReturn, p as UseDataReturn, s as UseFileUploadOptions, t as UseFileUploadReturn, U as UseSessionOptions, k as UseUserDataOptions, j as UseUserDataReturn, l as UserData, m as useAuth, w as useCrudifyWithNotifications, o as useData, r as useFileUpload, u as useSession, f as useSessionContext, i as useUserData, q as useUserProfile } from './index-d1vE803G.js';
7
+ export { A as ApiError, f as CrudifyApiResponse, e as CrudifyEnvironment, l as CrudifyOperationOptions, m as CrudifyRequestOptions, g as CrudifyTransactionResponse, F as ForgotPasswordRequest, J as JwtPayload, i as LoginRequest, L as LoginResponse, j as ResetPasswordRequest, R as ResolvedTenantConfig, T as TenantConfig, a as TenantConfigOptions, o as TransactionInput, n as TransactionOperation, h as TransactionResponseData, U as UserProfile, V as ValidateCodeRequest, k as ValidationError, r as resolveTenantConfig, u as useTenantConfig } from './tenantConfig-DqJqQkoR.js';
8
+ export { F as FileItem, v as FileStatus, L as LoginResult, N as NotificationOptions, a as SessionConfig, g as SessionDebugInfo, S as SessionManager, e as SessionProvider, h as SessionProviderProps, d as SessionState, c as StorageType, b as TokenData, T as TokenStorage, n as UseAuthReturn, p as UseDataReturn, s as UseFileUploadOptions, t as UseFileUploadReturn, U as UseSessionOptions, k as UseUserDataOptions, j as UseUserDataReturn, l as UserData, m as useAuth, w as useCrudifyWithNotifications, o as useData, r as useFileUpload, u as useSession, f as useSessionContext, i as useUserData, q as useUserProfile } from './index-dXVRVcEB.js';
9
9
  import * as react_jsx_runtime from 'react/jsx-runtime';
10
10
  import { ThemeOptions } from '@mui/material';
11
11
  export { A as AutoGenerateConfig, G as GlobalNotificationProvider, a as GlobalNotificationProviderProps, N as Notification, b as NotificationSeverity, d as UseAutoGenerateOptions, U as UseAutoGenerateReturn, c as useAutoGenerate, u as useGlobalNotification } from './GlobalNotificationProvider-Zq18OkpI.js';
12
- export { h as CrudifyEnvironment, E as ERROR_CODES, n as ERROR_SEVERITY_MAP, w as ErrorCode, x as ErrorSeverity, y as ErrorTranslationConfig, P as ParsedError, R as ResolvedTenantConfig, T as TenantConfig, b as TenantConfigOptions, v as createErrorTranslator, d as decodeJwtSafely, g as getCurrentUserEmail, m as getErrorMessage, j as handleCrudifyError, i as isTokenExpired, p as parseApiError, l as parseJavaScriptError, k as parseTransactionError, r as resolveTenantConfig, a as secureLocalStorage, s as secureSessionStorage, q as translateError, t as translateErrorCode, o as translateErrorCodes, u as useTenantConfig } from './errorTranslation-By5Av0tL.js';
12
+ export { E as ERROR_CODES, f as ERROR_SEVERITY_MAP, m as ErrorCode, n as ErrorSeverity, o as ErrorTranslationConfig, P as ParsedError, l as createErrorTranslator, d as decodeJwtSafely, g as getCurrentUserEmail, e as getErrorMessage, h as handleCrudifyError, i as isTokenExpired, p as parseApiError, c as parseJavaScriptError, b as parseTransactionError, a as secureLocalStorage, s as secureSessionStorage, k as translateError, t as translateErrorCode, j as translateErrorCodes } from './errorTranslation-DDlAXpMl.js';
13
13
  import { ApiResponse, IModule, ModuleCreateInput, ModuleEditInput, ActionListFilters, IAction, ActionCreateInput, ActionEditInput, UpdateActionsProfilesInput, UpdateActionsProfilesResponse, CalculatePermissionsInput, CalculatePermissionsResponse } from '@nocios/crudify-admin-sdk';
14
14
  export { ActionCreateInput, ActionEditInput, ActionListFilters, ApiResponse, IAction, IModule, ModuleCreateInput, ModuleEditInput, UpdateActionsProfilesInput, UpdateActionsProfilesResponse } from '@nocios/crudify-admin-sdk';
15
15
 
@@ -1123,7 +1123,176 @@ declare const CRITICAL_TRANSLATIONS: {
1123
1123
  readonly "users.moduleName": "Usuarios";
1124
1124
  readonly "users.moduleSingular": "Usuario";
1125
1125
  };
1126
- readonly en: {};
1126
+ readonly en: {
1127
+ readonly "base.actions.create": "New";
1128
+ readonly "base.actions.delete": "Delete";
1129
+ readonly "base.actions.read": "View";
1130
+ readonly "base.actions.refresh": "Refresh";
1131
+ readonly "base.actions.update": "Edit";
1132
+ readonly "base.btn.back": "Back";
1133
+ readonly "base.btn.cancel": "Cancel";
1134
+ readonly "base.btn.hidePassword": "Hide password";
1135
+ readonly "base.btn.showPassword": "Show password";
1136
+ readonly "base.errors.errorUnknown": "An unknown error occurred.";
1137
+ readonly "base.fields.actions": "Actions";
1138
+ readonly "base.fields.confirmPassword": "Confirm password";
1139
+ readonly "base.fields.createdAt": "Created at";
1140
+ readonly "base.fields.email": "Email";
1141
+ readonly "base.fields.lastName": "Last name";
1142
+ readonly "base.fields.name": "Name";
1143
+ readonly "base.fields.password": "Password";
1144
+ readonly "base.fields.profile": "Profile";
1145
+ readonly "base.fields.updatedAt": "Updated at";
1146
+ readonly "base.file.allowedTypes": "Allowed types: {{types}}";
1147
+ readonly "base.file.clickToDownload": "Click to download";
1148
+ readonly "base.file.clickToPreview": "Click to preview image";
1149
+ readonly "base.file.confirmDelete.cancel": "Cancel";
1150
+ readonly "base.file.confirmDelete.confirm": "Delete";
1151
+ readonly "base.file.confirmDelete.message": "Are you sure you want to delete this file? This action cannot be undone.";
1152
+ readonly "base.file.confirmDelete.title": "Delete file";
1153
+ readonly "base.file.delete": "Delete";
1154
+ readonly "base.file.deleting": "Deleting...";
1155
+ readonly "base.file.dragOrClick": "Drag files here or click to select";
1156
+ readonly "base.file.dropHere": "Drop file here";
1157
+ readonly "base.file.maxFiles": "Maximum {{count}} files";
1158
+ readonly "base.file.maxSize": "Maximum {{size}} per file";
1159
+ readonly "base.file.noPreview": "No preview";
1160
+ readonly "base.file.pendingDeletion": "Pending deletion";
1161
+ readonly "base.file.privateFile": "Private file";
1162
+ readonly "base.file.restore": "Restore";
1163
+ readonly "base.file.uploading": "Uploading files...";
1164
+ readonly "base.file.validation.filesWithErrors": "Some files have errors";
1165
+ readonly "base.file.validation.maxFilesExceeded": "Maximum {{count}} files allowed";
1166
+ readonly "base.file.validation.minFilesRequired": "At least one file is required";
1167
+ readonly "base.file.validation.minFilesRequiredPlural": "At least {{count}} files are required";
1168
+ readonly "base.lastUpdated": "Last updated at {{formattedLastUpdated}}";
1169
+ readonly "base.loading.configInitial": "Loading initial configuration...";
1170
+ readonly "base.loading.pleaseWait": "Loading, please wait...";
1171
+ readonly "base.loading.starting": "Starting application...";
1172
+ readonly "base.loading.themeSetup": "Generating theme...";
1173
+ readonly "base.loading.validatingSession": "Validating session...";
1174
+ readonly "base.titles.create": "New {{moduleName}}";
1175
+ readonly "base.titles.read": "View {{moduleName}}";
1176
+ readonly "base.titles.update": "Edit {{moduleName}}";
1177
+ readonly "checkCode.codeLabel": "Verification Code";
1178
+ readonly "checkCode.codePlaceholder": "Enter the 6-digit code";
1179
+ readonly "checkCode.codeRequired": "Code is required";
1180
+ readonly "checkCode.emailLabel": "Email";
1181
+ readonly "checkCode.emailPlaceholder": "Enter your email";
1182
+ readonly "checkCode.emailRequired": "Email is required";
1183
+ readonly "checkCode.instructions": "Enter the 6-digit code we sent to your email.";
1184
+ readonly "checkCode.invalidEmail": "Enter a valid email address";
1185
+ readonly "checkCode.resendCodeLink": "Resend code";
1186
+ readonly "checkCode.title": "Verify Code";
1187
+ readonly "checkCode.verifyButton": "Verify Code";
1188
+ readonly "error.app.config": "Configuration Error: {{message}}";
1189
+ readonly "error.app.initialization": "Error during final application initialization.";
1190
+ readonly "error.transaction": "Operation error";
1191
+ readonly "errors.DUPLICATE": "The <b>{{field}}</b> field must be unique.";
1192
+ readonly "errors.FOREIGN_KEY_NOT_FOUND": "The <b>{{field}}</b> field must reference an existing item.";
1193
+ readonly "errors.INVALID_EMAIL": "The <b>{{field}}</b> field must be a valid email address.";
1194
+ readonly "errors.INVALID_OBJECT_ID": "The <b>{{field}}</b> field must be a valid value.";
1195
+ readonly "errors.IN_USE": "The item is in use and cannot be deleted.";
1196
+ readonly "errors.MAX_LENGTH": "The <b>{{field}}</b> field must not exceed <b>{{length}}</b> characters.";
1197
+ readonly "errors.MIN_LENGTH": "The <b>{{field}}</b> field must be at least <b>{{length}}</b> characters.";
1198
+ readonly "errors.MUST_NOT_BE_EMAIL": "The <b>{{field}}</b> field must not be an email.";
1199
+ readonly "errors.NO_PERMISSION": "You don't have permission to perform this action.";
1200
+ readonly "errors.NO_SPACES": "The <b>{{field}}</b> field must not contain spaces.";
1201
+ readonly "errors.ONE_OR_MORE_OPERATIONS_FAILED": "Operation error";
1202
+ readonly "errors.REQUIRED": "The <b>{{field}}</b> field is required.";
1203
+ readonly "errors.TOKEN_HAS_EXPIRED": "Session has expired. Please log in again.";
1204
+ readonly "errors.TOO_MANY_REQUESTS": "Request limit reached. Please try again later.";
1205
+ readonly "errors.UNAUTHORIZED": "You are not authorized to perform this action.";
1206
+ readonly "errors.all_password_fields_required": "All password fields are required";
1207
+ readonly "errors.auth.INVALID_API_KEY": "Invalid API key";
1208
+ readonly "errors.auth.INVALID_CREDENTIALS": "Invalid username and/or password";
1209
+ readonly "errors.auth.NO_PERMISSION": "You don't have sufficient permissions";
1210
+ readonly "errors.auth.SESSION_EXPIRED": "Your session has expired. Please log in again.";
1211
+ readonly "errors.auth.TOO_MANY_REQUESTS": "Too many attempts. Please wait 15 minutes and try again";
1212
+ readonly "errors.auth.UNAUTHORIZED": "You don't have permission to perform this action";
1213
+ readonly "errors.auth.USER_NOT_ACTIVE": "User not active";
1214
+ readonly "errors.auth.USER_NOT_FOUND": "User not found";
1215
+ readonly "errors.data.BAD_REQUEST": "Invalid request";
1216
+ readonly "errors.data.FIELD_ERROR": "Error in submitted data";
1217
+ readonly "errors.data.IN_USE": "The item is in use and cannot be deleted";
1218
+ readonly "errors.data.ITEM_NOT_FOUND": "The requested item was not found";
1219
+ readonly "errors.data.NOT_FOUND": "Not found";
1220
+ readonly "errors.internal_error_changing_password": "Internal error changing password. Please try again";
1221
+ readonly "errors.password_min_length": "Password must be at least 8 characters";
1222
+ readonly "errors.password_mismatch": "Passwords do not match";
1223
+ readonly "errors.password_must_be_different": "New password must be different from current password";
1224
+ readonly "errors.system.DATABASE_CONNECTION_ERROR": "Connection error. Please check your internet connection.";
1225
+ readonly "errors.system.INTERNAL_SERVER_ERROR": "Internal server error. Please try again.";
1226
+ readonly "errors.system.INVALID_CONFIGURATION": "System configuration error";
1227
+ readonly "errors.system.TOO_MANY_REQUESTS": "Too many requests. Please wait a moment and try again";
1228
+ readonly "errors.system.UNKNOWN_OPERATION": "Unrecognized operation";
1229
+ readonly "errors.users_module_not_configured": "Users module not configured";
1230
+ readonly "footer.copyright": "Nocios S.R.L. All rights reserved.";
1231
+ readonly "footer.version": "Version";
1232
+ readonly "forgotPassword.checkEmailInstructions": "Check your inbox for the verification code";
1233
+ readonly "forgotPassword.codeAlreadyExistsMessage": "A code has already been sent and is still valid";
1234
+ readonly "forgotPassword.emailLabel": "Email";
1235
+ readonly "forgotPassword.emailPlaceholder": "Enter your email";
1236
+ readonly "forgotPassword.emailRequired": "Email is required";
1237
+ readonly "forgotPassword.emailSentMessage": "Code sent successfully";
1238
+ readonly "forgotPassword.enterCodeLink": "Enter Code";
1239
+ readonly "forgotPassword.instructions": "Enter your email and we'll send you a code to reset your password.";
1240
+ readonly "forgotPassword.invalidEmail": "Enter a valid email address";
1241
+ readonly "forgotPassword.sendCodeButton": "Send Code";
1242
+ readonly "forgotPassword.title": "Recover Password";
1243
+ readonly "login.alreadyHaveCodeLink": "Already have a code?";
1244
+ readonly "login.forgotPasswordLink": "Forgot your password?";
1245
+ readonly "login.initializationError": "Initialization error";
1246
+ readonly "login.initializing": "Initializing...";
1247
+ readonly "login.loginButton": "Log In";
1248
+ readonly "login.logoAlt": "Logo";
1249
+ readonly "login.noAccountPrompt": "Don't have an account?";
1250
+ readonly "login.notInitialized": "System not initialized";
1251
+ readonly "login.passwordLabel": "Password";
1252
+ readonly "login.passwordPlaceholder": "Enter your password";
1253
+ readonly "login.passwordRequired": "Password is required";
1254
+ readonly "login.signUpLink": "Sign up";
1255
+ readonly "login.usernameOrEmailLabel": "Username or email";
1256
+ readonly "login.usernameOrEmailPlaceholder": "Enter your email";
1257
+ readonly "login.usernameRequired": "Username is required";
1258
+ readonly "passwordRequirements.lowercase": "One lowercase letter";
1259
+ readonly "passwordRequirements.minLength": "Minimum 8 characters";
1260
+ readonly "passwordRequirements.number": "One number";
1261
+ readonly "passwordRequirements.special": "One special character (!@#$%...)";
1262
+ readonly "passwordRequirements.uppercase": "One uppercase letter";
1263
+ readonly "profiles.actions.assignProfiles": "Assign profiles";
1264
+ readonly "profiles.moduleName": "Profiles";
1265
+ readonly "profiles.moduleSingular": "Profile";
1266
+ readonly "publicPolicies.fields.conditions.customEdit": "Custom edit";
1267
+ readonly "resetPassword.codeExpiredOrInvalid": "The code has expired or is invalid";
1268
+ readonly "resetPassword.confirmPasswordLabel": "Confirm Password";
1269
+ readonly "resetPassword.confirmPasswordPlaceholder": "Confirm your new password";
1270
+ readonly "resetPassword.confirmPasswordRequired": "Confirm your password";
1271
+ readonly "resetPassword.goToLoginButton": "Go to Login";
1272
+ readonly "resetPassword.instructions": "Enter your new password.";
1273
+ readonly "resetPassword.invalidCode": "The verification code is invalid. Please check the link or request a new one.";
1274
+ readonly "resetPassword.missingParameters": "Missing required parameters";
1275
+ readonly "resetPassword.newPasswordLabel": "New Password";
1276
+ readonly "resetPassword.newPasswordPlaceholder": "Enter your new password";
1277
+ readonly "resetPassword.newPasswordRequired": "New password is required";
1278
+ readonly "resetPassword.passwordRequirementsNotMet": "Password does not meet all requirements";
1279
+ readonly "resetPassword.passwordTooShort": "Password must be at least 8 characters";
1280
+ readonly "resetPassword.passwordsDoNotMatch": "Passwords do not match";
1281
+ readonly "resetPassword.requestNewCodeButton": "Request New Code";
1282
+ readonly "resetPassword.resetPasswordButton": "Reset Password";
1283
+ readonly "resetPassword.successInstructions": "You can now log in with your new password";
1284
+ readonly "resetPassword.successMessage": "Password reset successfully";
1285
+ readonly "resetPassword.title": "New Password";
1286
+ readonly "resetPassword.validatingCode": "Validating code...";
1287
+ readonly "translations.fields.lang": "Language";
1288
+ readonly "translations.moduleName": "Translations";
1289
+ readonly "translations.moduleSingular": "Translation";
1290
+ readonly "users.fields.currentPassword": "Current password";
1291
+ readonly "users.fields.newPassword": "New Password";
1292
+ readonly "users.fields.repeatNewPassword": "Repeat New Password";
1293
+ readonly "users.moduleName": "Users";
1294
+ readonly "users.moduleSingular": "User";
1295
+ };
1127
1296
  };
1128
1297
  type CriticalTranslationKey = keyof typeof CRITICAL_TRANSLATIONS.es;
1129
1298
  type SupportedLanguage = keyof typeof CRITICAL_TRANSLATIONS;
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _createStarExport(obj) { Object.keys(obj) .filter((key) => key !== "default" && key !== "__esModule") .forEach((key) => { if (exports.hasOwnProperty(key)) { return; } Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]}); }); } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } async function _asyncOptionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = await fn(value); } else if (op === 'call' || op === 'optionalCall') { value = await fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunk5XBTRBE5js = require('./chunk-5XBTRBE5.js');var _chunkT6R65ROUjs = require('./chunk-T6R65ROU.js');var _chunk6ONAT4QUjs = require('./chunk-6ONAT4QU.js');var _chunk4VN5YRYZjs = require('./chunk-4VN5YRYZ.js');var _chunkNSV6ECYOjs = require('./chunk-NSV6ECYO.js');var _chunkCR5KJUSTjs = require('./chunk-CR5KJUST.js');var _crudifysdk = require('@nocios/crudify-sdk'); var _crudifysdk2 = _interopRequireDefault(_crudifysdk); _createStarExport(_crudifysdk);var _react = require('react');var _material = require('@mui/material');var _jsxruntime = require('react/jsx-runtime');var sr=(e={})=>{try{let r=_chunkCR5KJUSTjs.b.call(void 0, );if(r.configSource!=="none"&&r.theme)return{...e,...r.theme}}catch(r){_chunkCR5KJUSTjs.a.warn("Error reading theme from config",r instanceof Error?{errorMessage:r.message}:{message:String(r)})}return e};function ar({children:e,defaultTheme:r={},disableCssBaseline:t=!1}){let o=_react.useMemo.call(void 0, ()=>{let a=sr(r);return _material.createTheme.call(void 0, a)},[r]);return _jsxruntime.jsxs.call(void 0, _material.ThemeProvider,{theme:o,children:[!t&&_jsxruntime.jsx.call(void 0, _material.CssBaseline,{}),e]})}var _reactrouterdom = require('react-router-dom');var lr={border:"5px solid rgba(0, 0, 0, 0.1)",borderTopColor:"#3B82F6",borderRadius:"50%",width:"50px",height:"50px",animation:"spin 1s linear infinite"},cr=()=>_jsxruntime.jsx.call(void 0, "style",{children:`
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _createStarExport(obj) { Object.keys(obj) .filter((key) => key !== "default" && key !== "__esModule") .forEach((key) => { if (exports.hasOwnProperty(key)) { return; } Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]}); }); } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } async function _asyncOptionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = await fn(value); } else if (op === 'call' || op === 'optionalCall') { value = await fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkQZH3KSJZjs = require('./chunk-QZH3KSJZ.js');var _chunkNIRLP2TCjs = require('./chunk-NIRLP2TC.js');var _chunkH6XXWDUTjs = require('./chunk-H6XXWDUT.js');var _chunkBXFEQ6KPjs = require('./chunk-BXFEQ6KP.js');var _chunk4LMFQECSjs = require('./chunk-4LMFQECS.js');var _crudifysdk = require('@nocios/crudify-sdk'); var _crudifysdk2 = _interopRequireDefault(_crudifysdk); _createStarExport(_crudifysdk);var _react = require('react');var _material = require('@mui/material');var _jsxruntime = require('react/jsx-runtime');var sr=(e={})=>{try{let r=_chunk4LMFQECSjs.b.call(void 0, );if(r.configSource!=="none"&&r.theme)return{...e,...r.theme}}catch(r){_chunk4LMFQECSjs.a.warn("Error reading theme from config",r instanceof Error?{errorMessage:r.message}:{message:String(r)})}return e};function ar({children:e,defaultTheme:r={},disableCssBaseline:t=!1}){let o=_react.useMemo.call(void 0, ()=>{let a=sr(r);return _material.createTheme.call(void 0, a)},[r]);return _jsxruntime.jsxs.call(void 0, _material.ThemeProvider,{theme:o,children:[!t&&_jsxruntime.jsx.call(void 0, _material.CssBaseline,{}),e]})}var _reactrouterdom = require('react-router-dom');var lr={border:"5px solid rgba(0, 0, 0, 0.1)",borderTopColor:"#3B82F6",borderRadius:"50%",width:"50px",height:"50px",animation:"spin 1s linear infinite"},cr=()=>_jsxruntime.jsx.call(void 0, "style",{children:`
2
2
  @keyframes spin {
3
3
  0% { transform: rotate(0deg); }
4
4
  100% { transform: rotate(360deg); }
5
5
  }
6
- `});function g({stage:e="loading",message:r}){let o=r||{initializing:"Initializing application...","validating-session":"Validating session...",loading:"Loading..."}[e];return _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, cr,{}),_jsxruntime.jsxs.call(void 0, "div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100vh",width:"100vw",backgroundColor:"#f0f2f5",fontFamily:'"Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',color:"#333",textAlign:"center",boxSizing:"border-box",padding:"20px",background:"#fff"},children:[_jsxruntime.jsx.call(void 0, "div",{style:lr}),_jsxruntime.jsx.call(void 0, "p",{style:{fontSize:"1.25em",fontWeight:"500",marginTop:"24px",color:"#1f2937"},children:o})]})]})}function _({children:e,loadingComponent:r,loginPath:t="/login"}){let{isAuthenticated:o,isLoading:a,isLoggingOut:s,isInitialized:y,tokens:l,error:f}=_chunk6ONAT4QUjs.l.call(void 0, ),u=_reactrouterdom.useLocation.call(void 0, );if(!y||a&&!s)return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:r||_jsxruntime.jsx.call(void 0, g,{stage:"validating-session"})});let c=o&&_optionalChain([l, 'optionalAccess', _2 => _2.accessToken])&&l.accessToken.length>0;if(f||!o||!c){if(s)return _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:t,replace:!0});let C=u.pathname+u.search;if(u.pathname===t||u.pathname.startsWith(t))return _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:t,replace:!0});let T=_chunk5XBTRBE5js.h.call(void 0, C),k=encodeURIComponent(T);return _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:`${t}?redirect=${k}`,replace:!0})}return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e})}var L="crudify_tokens",mr="crudify_enc_key";function B(){try{let e=localStorage.getItem(L);return e?e.startsWith("v2:")&&e.length>50:!1}catch (e2){return!1}}function W(){try{let e=localStorage.getItem(mr);return e!==null&&e.length>=32}catch (e3){return!1}}function U(){return B()&&W()}function H(){try{let e=localStorage.getItem(L);return e?!e.startsWith("v2:")||e.length<50:!1}catch (e4){return!1}}function gr(){try{H()&&localStorage.removeItem(L)}catch (e5){}}function Y({children:e,redirectTo:r="/",loadingComponent:t,initTimeout:o=3e3}){let{isAuthenticated:a,isInitialized:s}=_chunk6ONAT4QUjs.l.call(void 0, ),y=_reactrouterdom.useLocation.call(void 0, ),[l]=_react.useState.call(void 0, ()=>U()),[f,u]=_react.useState.call(void 0, !1);if(_react.useEffect.call(void 0, ()=>{if(!s&&l){let c=setTimeout(()=>{u(!0)},o);return()=>clearTimeout(c)}},[s,l,o]),s&&a){let c=new URLSearchParams(y.search),C=_chunk5XBTRBE5js.j.call(void 0, c,r);return _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:C,replace:!0})}return s&&!a?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e}):l&&!f?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:t||_jsxruntime.jsx.call(void 0, g,{stage:"validating-session"})}):_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e})}function J({children:e,behavior:r="redirect-if-authenticated",redirectTo:t="/",loadingComponent:o}){let{isAuthenticated:a,isInitialized:s}=_chunk6ONAT4QUjs.l.call(void 0, );return s?r==="allow-all"?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e}):a?_jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:t,replace:!0}):_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e}):_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:o||_jsxruntime.jsx.call(void 0, g,{stage:"validating-session"})})}var X=_react.createContext.call(void 0, void 0),hr= exports.CrudifyInitializer =({config:e,children:r,fallback:t=null,onInitialized:o,onError:a})=>{let[s,y]=_react.useState.call(void 0, !1),[l,f]=_react.useState.call(void 0, !1),[u,c]=_react.useState.call(void 0, null),C=_react.useRef.call(void 0, !1),T=_react.useRef.call(void 0, !1);_react.useEffect.call(void 0, ()=>{C.current||(_chunk6ONAT4QUjs.q.registerHighPriorityInitializer(),C.current=!0),T.current||(T.current=!0,(async()=>{f(!0),c(null);try{let d=_chunkCR5KJUSTjs.d.call(void 0, {publicApiKey:_optionalChain([e, 'optionalAccess', _3 => _3.publicApiKey]),env:_optionalChain([e, 'optionalAccess', _4 => _4.env]),enableDebug:_optionalChain([e, 'optionalAccess', _5 => _5.enableLogging])});if(!d.publicApiKey)throw new Error("Crudify configuration missing. Please provide publicApiKey via props or ensure cookies are set by Lambda.");let v=d.env||"prod";_chunkCR5KJUSTjs.a.setEnvironment(v),await _chunk6ONAT4QUjs.q.initialize({priority:"HIGH",publicApiKey:d.publicApiKey,env:d.env||"prod",enableLogging:_optionalChain([e, 'optionalAccess', _6 => _6.enableLogging]),requestedBy:"CrudifyInitializer"}),y(!0),f(!1),o&&o()}catch(d){let v=d instanceof Error?d:new Error(String(d));c(v),f(!1),a&&a(v)}})())},[_optionalChain([e, 'optionalAccess', _7 => _7.publicApiKey]),_optionalChain([e, 'optionalAccess', _8 => _8.env]),_optionalChain([e, 'optionalAccess', _9 => _9.enableLogging]),o,a]);let k={isInitialized:s,isInitializing:l,error:u};return l&&t?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:t}):(u&&_chunkCR5KJUSTjs.a.error("[CrudifyInitializer] Initialization failed",u),_jsxruntime.jsx.call(void 0, X.Provider,{value:k,children:r}))},Tr= exports.useCrudifyInitializer =()=>{let e=_react.useContext.call(void 0, X);if(!e)throw new Error("useCrudifyInitializer must be used within CrudifyInitializer");return e};var _crudifyadminsdk = require('@nocios/crudify-admin-sdk'); var _crudifyadminsdk2 = _interopRequireDefault(_crudifyadminsdk);var Z=!1,I=null,h=null;async function Sr(){let r=await _chunk6ONAT4QUjs.d.getInstance().getTokenInfo(),t=_optionalChain([r, 'optionalAccess', _10 => _10.apiEndpointAdmin]),o=_optionalChain([r, 'optionalAccess', _11 => _11.apiKeyEndpointAdmin]);return t&&o?{apiUrl:t,apiKey:o}:_chunk6ONAT4QUjs.h.waitForCredentials()}async function Er(){if(!Z)return I||(I=(async()=>{try{let e=_chunk6ONAT4QUjs.d.getInstance(),{apiUrl:r,apiKey:t}=await Sr();h=await _asyncOptionalChain([(await e.getTokenInfo()), 'optionalAccess', async _12 => _12.crudifyTokens, 'optionalAccess', async _13 => _13.accessToken])||null,_crudifyadminsdk2.default.init({url:r,apiKey:t,getAdditionalHeaders:()=>h?{Authorization:`Bearer ${h}`}:{}}),Z=!0}catch(e){throw I=null,_chunkCR5KJUSTjs.a.error("[crudifyAdminWrapper] Initialization failed",e instanceof Error?e:{message:String(e)}),e}})(),I)}async function n(e){try{await Er();let r=_chunk6ONAT4QUjs.d.getInstance();h=await _asyncOptionalChain([(await r.getTokenInfo()), 'optionalAccess', async _14 => _14.crudifyTokens, 'optionalAccess', async _15 => _15.accessToken])||null;let o=await e(),a=o.errors&&(typeof o.errors=="string"&&o.errors.includes("401")||Array.isArray(o.errors)&&o.errors.some(s=>typeof s=="string"&&s.includes("401")));return!o.success&&a?await r.refreshTokens()?(h=await _asyncOptionalChain([(await r.getTokenInfo()), 'optionalAccess', async _16 => _16.crudifyTokens, 'optionalAccess', async _17 => _17.accessToken])||null,await e()):(_chunkCR5KJUSTjs.a.error("[crudifyAdmin] Token refresh failed"),typeof window<"u"&&(window.location.href="/login"),o):o}catch(r){return _chunkCR5KJUSTjs.a.error("[crudifyAdmin] Operation error",r instanceof Error?r:{message:String(r)}),{success:!1,errors:r instanceof Error?r.message:"Unknown error"}}}var kr={listModules:()=>n(()=>_crudifyadminsdk2.default.listModules()),getModule:e=>n(()=>_crudifyadminsdk2.default.getModule(e)),createModule:e=>n(()=>_crudifyadminsdk2.default.createModule(e)),editModule:(e,r)=>n(()=>_crudifyadminsdk2.default.editModule(e,r)),deleteModule:e=>n(()=>_crudifyadminsdk2.default.deleteModule(e)),activateModule:e=>n(()=>_crudifyadminsdk2.default.activateModule(e)),deactivateModule:e=>n(()=>_crudifyadminsdk2.default.deactivateModule(e)),getModuleVersions:e=>n(()=>_crudifyadminsdk2.default.getModuleVersions(e)),listActions:e=>n(()=>_crudifyadminsdk2.default.listActions(e)),getAction:e=>n(()=>_crudifyadminsdk2.default.getAction(e)),createAction:e=>n(()=>_crudifyadminsdk2.default.createAction(e)),editAction:(e,r)=>n(()=>_crudifyadminsdk2.default.editAction(e,r)),deleteAction:e=>n(()=>_crudifyadminsdk2.default.deleteAction(e)),activateAction:e=>n(()=>_crudifyadminsdk2.default.activateAction(e)),deactivateAction:e=>n(()=>_crudifyadminsdk2.default.deactivateAction(e)),getActionVersions:e=>n(()=>_crudifyadminsdk2.default.getActionVersions(e)),getActionsByProfile:e=>n(()=>_crudifyadminsdk2.default.getActionsByProfile(e)),updateActionsProfiles:e=>n(()=>_crudifyadminsdk2.default.updateActionsProfiles(e)),calculatePermissions:e=>n(()=>_crudifyadminsdk2.default.calculatePermissions(e))};exports.AuthRoute = Y; exports.CRITICAL_TRANSLATIONS = _chunk5XBTRBE5js.a; exports.CrossTabSyncManager = _chunk6ONAT4QUjs.b; exports.CrudiaAutoGenerate = _chunk5XBTRBE5js.v; exports.CrudiaFileField = _chunk5XBTRBE5js.w; exports.CrudiaMarkdownField = _chunk5XBTRBE5js.x; exports.CrudifyInitializationManager = _chunk6ONAT4QUjs.p; exports.CrudifyInitializer = hr; exports.CrudifyLogin = _chunk5XBTRBE5js.o; exports.CrudifyProvider = _chunk6ONAT4QUjs.i; exports.CrudifyThemeProvider = ar; exports.DEFAULT_PASSWORD_RULES = _chunk5XBTRBE5js.n; exports.ERROR_CODES = _chunkNSV6ECYOjs.a; exports.ERROR_SEVERITY_MAP = _chunkNSV6ECYOjs.b; exports.GlobalNotificationProvider = _chunk6ONAT4QUjs.f; exports.GuestRoute = J; exports.LoginComponent = _chunk5XBTRBE5js.t; exports.POLICY_ACTIONS = _chunk5XBTRBE5js.q; exports.PREFERRED_POLICY_ORDER = _chunk5XBTRBE5js.r; exports.PasswordRequirements = _chunk5XBTRBE5js.k; exports.Policies = _chunk5XBTRBE5js.s; exports.ProtectedRoute = _; exports.SessionDebugInfo = _chunk6ONAT4QUjs.m; exports.SessionLoadingScreen = g; exports.SessionManager = _chunk6ONAT4QUjs.d; exports.SessionProvider = _chunk6ONAT4QUjs.k; exports.SessionStatus = _chunk5XBTRBE5js.u; exports.TokenStorage = _chunk6ONAT4QUjs.a; exports.TranslationService = _chunk5XBTRBE5js.d; exports.TranslationsProvider = _chunk5XBTRBE5js.f; exports.UserProfileDisplay = _chunk5XBTRBE5js.p; exports.allPasswordRulesPassed = _chunk5XBTRBE5js.m; exports.clearCorruptedTokens = gr; exports.createErrorTranslator = _chunkCR5KJUSTjs.p; exports.crossTabSync = _chunk6ONAT4QUjs.c; exports.crudify = _crudifysdk2.default; exports.crudifyAdmin = kr; exports.crudifyInitManager = _chunk6ONAT4QUjs.q; exports.decodeJwtSafely = _chunkCR5KJUSTjs.r; exports.evaluatePasswordRules = _chunk5XBTRBE5js.l; exports.extractSafeRedirectFromUrl = _chunk5XBTRBE5js.j; exports.getCriticalLanguages = _chunk5XBTRBE5js.b; exports.getCriticalTranslations = _chunk5XBTRBE5js.c; exports.getCurrentUserEmail = _chunkCR5KJUSTjs.s; exports.getErrorMessage = _chunkNSV6ECYOjs.e; exports.handleCrudifyError = _chunkNSV6ECYOjs.g; exports.hasCorruptedTokens = H; exports.hasEncryptionKeyHash = W; exports.hasStoredTokens = B; exports.isTokenExpired = _chunkCR5KJUSTjs.t; exports.logger = _chunkCR5KJUSTjs.a; exports.parseApiError = _chunkNSV6ECYOjs.c; exports.parseJavaScriptError = _chunkNSV6ECYOjs.f; exports.parseTransactionError = _chunkNSV6ECYOjs.d; exports.resolveTenantConfig = _chunkCR5KJUSTjs.b; exports.secureLocalStorage = _chunk4VN5YRYZjs.b; exports.secureSessionStorage = _chunk4VN5YRYZjs.a; exports.shouldWaitForInitialization = U; exports.translateError = _chunkCR5KJUSTjs.o; exports.translateErrorCode = _chunkCR5KJUSTjs.m; exports.translateErrorCodes = _chunkCR5KJUSTjs.n; exports.translationService = _chunk5XBTRBE5js.e; exports.useAuth = _chunkT6R65ROUjs.b; exports.useAutoGenerate = _chunk6ONAT4QUjs.o; exports.useCrudify = _chunk6ONAT4QUjs.j; exports.useCrudifyInitializer = Tr; exports.useCrudifyWithNotifications = _chunkT6R65ROUjs.d; exports.useData = _chunkT6R65ROUjs.c; exports.useFileUpload = _chunk6ONAT4QUjs.r; exports.useGlobalNotification = _chunk6ONAT4QUjs.g; exports.useSession = _chunk6ONAT4QUjs.e; exports.useSessionContext = _chunk6ONAT4QUjs.l; exports.useTenantConfig = _chunkCR5KJUSTjs.c; exports.useTranslations = _chunk5XBTRBE5js.g; exports.useUserData = _chunkT6R65ROUjs.a; exports.useUserProfile = _chunk6ONAT4QUjs.n; exports.validateInternalRedirect = _chunk5XBTRBE5js.h; exports.validateTrustedRedirect = _chunk5XBTRBE5js.i;
6
+ `});function g({stage:e="loading",message:r}){let o=r||{initializing:"Initializing application...","validating-session":"Validating session...",loading:"Loading..."}[e];return _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, cr,{}),_jsxruntime.jsxs.call(void 0, "div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100vh",width:"100vw",backgroundColor:"#f0f2f5",fontFamily:'"Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',color:"#333",textAlign:"center",boxSizing:"border-box",padding:"20px",background:"#fff"},children:[_jsxruntime.jsx.call(void 0, "div",{style:lr}),_jsxruntime.jsx.call(void 0, "p",{style:{fontSize:"1.25em",fontWeight:"500",marginTop:"24px",color:"#1f2937"},children:o})]})]})}function _({children:e,loadingComponent:r,loginPath:t="/login"}){let{isAuthenticated:o,isLoading:a,isLoggingOut:s,isInitialized:y,tokens:l,error:f}=_chunkH6XXWDUTjs.l.call(void 0, ),u=_reactrouterdom.useLocation.call(void 0, );if(!y||a&&!s)return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:r||_jsxruntime.jsx.call(void 0, g,{stage:"validating-session"})});let c=o&&_optionalChain([l, 'optionalAccess', _2 => _2.accessToken])&&l.accessToken.length>0;if(f||!o||!c){if(s)return _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:t,replace:!0});let C=u.pathname+u.search;if(u.pathname===t||u.pathname.startsWith(t))return _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:t,replace:!0});let T=_chunkQZH3KSJZjs.h.call(void 0, C),k=encodeURIComponent(T);return _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:`${t}?redirect=${k}`,replace:!0})}return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e})}var L="crudify_tokens",mr="crudify_enc_key";function B(){try{let e=localStorage.getItem(L);return e?e.startsWith("v2:")&&e.length>50:!1}catch (e2){return!1}}function W(){try{let e=localStorage.getItem(mr);return e!==null&&e.length>=32}catch (e3){return!1}}function U(){return B()&&W()}function H(){try{let e=localStorage.getItem(L);return e?!e.startsWith("v2:")||e.length<50:!1}catch (e4){return!1}}function gr(){try{H()&&localStorage.removeItem(L)}catch (e5){}}function Y({children:e,redirectTo:r="/",loadingComponent:t,initTimeout:o=3e3}){let{isAuthenticated:a,isInitialized:s}=_chunkH6XXWDUTjs.l.call(void 0, ),y=_reactrouterdom.useLocation.call(void 0, ),[l]=_react.useState.call(void 0, ()=>U()),[f,u]=_react.useState.call(void 0, !1);if(_react.useEffect.call(void 0, ()=>{if(!s&&l){let c=setTimeout(()=>{u(!0)},o);return()=>clearTimeout(c)}},[s,l,o]),s&&a){let c=new URLSearchParams(y.search),C=_chunkQZH3KSJZjs.j.call(void 0, c,r);return _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:C,replace:!0})}return s&&!a?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e}):l&&!f?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:t||_jsxruntime.jsx.call(void 0, g,{stage:"validating-session"})}):_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e})}function J({children:e,behavior:r="redirect-if-authenticated",redirectTo:t="/",loadingComponent:o}){let{isAuthenticated:a,isInitialized:s}=_chunkH6XXWDUTjs.l.call(void 0, );return s?r==="allow-all"?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e}):a?_jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:t,replace:!0}):_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e}):_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:o||_jsxruntime.jsx.call(void 0, g,{stage:"validating-session"})})}var X=_react.createContext.call(void 0, void 0),hr= exports.CrudifyInitializer =({config:e,children:r,fallback:t=null,onInitialized:o,onError:a})=>{let[s,y]=_react.useState.call(void 0, !1),[l,f]=_react.useState.call(void 0, !1),[u,c]=_react.useState.call(void 0, null),C=_react.useRef.call(void 0, !1),T=_react.useRef.call(void 0, !1);_react.useEffect.call(void 0, ()=>{C.current||(_chunkH6XXWDUTjs.q.registerHighPriorityInitializer(),C.current=!0),T.current||(T.current=!0,(async()=>{f(!0),c(null);try{let d=_chunk4LMFQECSjs.d.call(void 0, {publicApiKey:_optionalChain([e, 'optionalAccess', _3 => _3.publicApiKey]),env:_optionalChain([e, 'optionalAccess', _4 => _4.env]),enableDebug:_optionalChain([e, 'optionalAccess', _5 => _5.enableLogging])});if(!d.publicApiKey)throw new Error("Crudify configuration missing. Please provide publicApiKey via props or ensure cookies are set by Lambda.");let v=d.env||"prod";_chunk4LMFQECSjs.a.setEnvironment(v),await _chunkH6XXWDUTjs.q.initialize({priority:"HIGH",publicApiKey:d.publicApiKey,env:d.env||"prod",enableLogging:_optionalChain([e, 'optionalAccess', _6 => _6.enableLogging]),requestedBy:"CrudifyInitializer"}),y(!0),f(!1),o&&o()}catch(d){let v=d instanceof Error?d:new Error(String(d));c(v),f(!1),a&&a(v)}})())},[_optionalChain([e, 'optionalAccess', _7 => _7.publicApiKey]),_optionalChain([e, 'optionalAccess', _8 => _8.env]),_optionalChain([e, 'optionalAccess', _9 => _9.enableLogging]),o,a]);let k={isInitialized:s,isInitializing:l,error:u};return l&&t?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:t}):(u&&_chunk4LMFQECSjs.a.error("[CrudifyInitializer] Initialization failed",u),_jsxruntime.jsx.call(void 0, X.Provider,{value:k,children:r}))},Tr= exports.useCrudifyInitializer =()=>{let e=_react.useContext.call(void 0, X);if(!e)throw new Error("useCrudifyInitializer must be used within CrudifyInitializer");return e};var _crudifyadminsdk = require('@nocios/crudify-admin-sdk'); var _crudifyadminsdk2 = _interopRequireDefault(_crudifyadminsdk);var Z=!1,I=null,h=null;async function Sr(){let r=await _chunkH6XXWDUTjs.d.getInstance().getTokenInfo(),t=_optionalChain([r, 'optionalAccess', _10 => _10.apiEndpointAdmin]),o=_optionalChain([r, 'optionalAccess', _11 => _11.apiKeyEndpointAdmin]);return t&&o?{apiUrl:t,apiKey:o}:_chunkH6XXWDUTjs.h.waitForCredentials()}async function Er(){if(!Z)return I||(I=(async()=>{try{let e=_chunkH6XXWDUTjs.d.getInstance(),{apiUrl:r,apiKey:t}=await Sr();h=await _asyncOptionalChain([(await e.getTokenInfo()), 'optionalAccess', async _12 => _12.crudifyTokens, 'optionalAccess', async _13 => _13.accessToken])||null,_crudifyadminsdk2.default.init({url:r,apiKey:t,getAdditionalHeaders:()=>h?{Authorization:`Bearer ${h}`}:{}}),Z=!0}catch(e){throw I=null,_chunk4LMFQECSjs.a.error("[crudifyAdminWrapper] Initialization failed",e instanceof Error?e:{message:String(e)}),e}})(),I)}async function n(e){try{await Er();let r=_chunkH6XXWDUTjs.d.getInstance();h=await _asyncOptionalChain([(await r.getTokenInfo()), 'optionalAccess', async _14 => _14.crudifyTokens, 'optionalAccess', async _15 => _15.accessToken])||null;let o=await e(),a=o.errors&&(typeof o.errors=="string"&&o.errors.includes("401")||Array.isArray(o.errors)&&o.errors.some(s=>typeof s=="string"&&s.includes("401")));return!o.success&&a?await r.refreshTokens()?(h=await _asyncOptionalChain([(await r.getTokenInfo()), 'optionalAccess', async _16 => _16.crudifyTokens, 'optionalAccess', async _17 => _17.accessToken])||null,await e()):(_chunk4LMFQECSjs.a.error("[crudifyAdmin] Token refresh failed"),typeof window<"u"&&(window.location.href="/login"),o):o}catch(r){return _chunk4LMFQECSjs.a.error("[crudifyAdmin] Operation error",r instanceof Error?r:{message:String(r)}),{success:!1,errors:r instanceof Error?r.message:"Unknown error"}}}var kr={listModules:()=>n(()=>_crudifyadminsdk2.default.listModules()),getModule:e=>n(()=>_crudifyadminsdk2.default.getModule(e)),createModule:e=>n(()=>_crudifyadminsdk2.default.createModule(e)),editModule:(e,r)=>n(()=>_crudifyadminsdk2.default.editModule(e,r)),deleteModule:e=>n(()=>_crudifyadminsdk2.default.deleteModule(e)),activateModule:e=>n(()=>_crudifyadminsdk2.default.activateModule(e)),deactivateModule:e=>n(()=>_crudifyadminsdk2.default.deactivateModule(e)),getModuleVersions:e=>n(()=>_crudifyadminsdk2.default.getModuleVersions(e)),listActions:e=>n(()=>_crudifyadminsdk2.default.listActions(e)),getAction:e=>n(()=>_crudifyadminsdk2.default.getAction(e)),createAction:e=>n(()=>_crudifyadminsdk2.default.createAction(e)),editAction:(e,r)=>n(()=>_crudifyadminsdk2.default.editAction(e,r)),deleteAction:e=>n(()=>_crudifyadminsdk2.default.deleteAction(e)),activateAction:e=>n(()=>_crudifyadminsdk2.default.activateAction(e)),deactivateAction:e=>n(()=>_crudifyadminsdk2.default.deactivateAction(e)),getActionVersions:e=>n(()=>_crudifyadminsdk2.default.getActionVersions(e)),getActionsByProfile:e=>n(()=>_crudifyadminsdk2.default.getActionsByProfile(e)),updateActionsProfiles:e=>n(()=>_crudifyadminsdk2.default.updateActionsProfiles(e)),calculatePermissions:e=>n(()=>_crudifyadminsdk2.default.calculatePermissions(e))};exports.AuthRoute = Y; exports.CRITICAL_TRANSLATIONS = _chunkQZH3KSJZjs.a; exports.CrossTabSyncManager = _chunkH6XXWDUTjs.b; exports.CrudiaAutoGenerate = _chunkQZH3KSJZjs.v; exports.CrudiaFileField = _chunkQZH3KSJZjs.w; exports.CrudiaMarkdownField = _chunkQZH3KSJZjs.x; exports.CrudifyInitializationManager = _chunkH6XXWDUTjs.p; exports.CrudifyInitializer = hr; exports.CrudifyLogin = _chunkQZH3KSJZjs.o; exports.CrudifyProvider = _chunkH6XXWDUTjs.i; exports.CrudifyThemeProvider = ar; exports.DEFAULT_PASSWORD_RULES = _chunkQZH3KSJZjs.n; exports.ERROR_CODES = _chunk4LMFQECSjs.u; exports.ERROR_SEVERITY_MAP = _chunk4LMFQECSjs.v; exports.GlobalNotificationProvider = _chunkH6XXWDUTjs.f; exports.GuestRoute = J; exports.LoginComponent = _chunkQZH3KSJZjs.t; exports.POLICY_ACTIONS = _chunkQZH3KSJZjs.q; exports.PREFERRED_POLICY_ORDER = _chunkQZH3KSJZjs.r; exports.PasswordRequirements = _chunkQZH3KSJZjs.k; exports.Policies = _chunkQZH3KSJZjs.s; exports.ProtectedRoute = _; exports.SessionDebugInfo = _chunkH6XXWDUTjs.m; exports.SessionLoadingScreen = g; exports.SessionManager = _chunkH6XXWDUTjs.d; exports.SessionProvider = _chunkH6XXWDUTjs.k; exports.SessionStatus = _chunkQZH3KSJZjs.u; exports.TokenStorage = _chunkH6XXWDUTjs.a; exports.TranslationService = _chunkQZH3KSJZjs.d; exports.TranslationsProvider = _chunkQZH3KSJZjs.f; exports.UserProfileDisplay = _chunkQZH3KSJZjs.p; exports.allPasswordRulesPassed = _chunkQZH3KSJZjs.m; exports.clearCorruptedTokens = gr; exports.createErrorTranslator = _chunk4LMFQECSjs.p; exports.crossTabSync = _chunkH6XXWDUTjs.c; exports.crudify = _crudifysdk2.default; exports.crudifyAdmin = kr; exports.crudifyInitManager = _chunkH6XXWDUTjs.q; exports.decodeJwtSafely = _chunk4LMFQECSjs.r; exports.evaluatePasswordRules = _chunkQZH3KSJZjs.l; exports.extractSafeRedirectFromUrl = _chunkQZH3KSJZjs.j; exports.getCriticalLanguages = _chunkQZH3KSJZjs.b; exports.getCriticalTranslations = _chunkQZH3KSJZjs.c; exports.getCurrentUserEmail = _chunk4LMFQECSjs.s; exports.getErrorMessage = _chunk4LMFQECSjs.y; exports.handleCrudifyError = _chunk4LMFQECSjs.A; exports.hasCorruptedTokens = H; exports.hasEncryptionKeyHash = W; exports.hasStoredTokens = B; exports.isTokenExpired = _chunk4LMFQECSjs.t; exports.logger = _chunk4LMFQECSjs.a; exports.parseApiError = _chunk4LMFQECSjs.w; exports.parseJavaScriptError = _chunk4LMFQECSjs.z; exports.parseTransactionError = _chunk4LMFQECSjs.x; exports.resolveTenantConfig = _chunk4LMFQECSjs.b; exports.secureLocalStorage = _chunkBXFEQ6KPjs.b; exports.secureSessionStorage = _chunkBXFEQ6KPjs.a; exports.shouldWaitForInitialization = U; exports.translateError = _chunk4LMFQECSjs.o; exports.translateErrorCode = _chunk4LMFQECSjs.m; exports.translateErrorCodes = _chunk4LMFQECSjs.n; exports.translationService = _chunkQZH3KSJZjs.e; exports.useAuth = _chunkNIRLP2TCjs.b; exports.useAutoGenerate = _chunkH6XXWDUTjs.o; exports.useCrudify = _chunkH6XXWDUTjs.j; exports.useCrudifyInitializer = Tr; exports.useCrudifyWithNotifications = _chunkNIRLP2TCjs.d; exports.useData = _chunkNIRLP2TCjs.c; exports.useFileUpload = _chunkH6XXWDUTjs.r; exports.useGlobalNotification = _chunkH6XXWDUTjs.g; exports.useSession = _chunkH6XXWDUTjs.e; exports.useSessionContext = _chunkH6XXWDUTjs.l; exports.useTenantConfig = _chunk4LMFQECSjs.c; exports.useTranslations = _chunkQZH3KSJZjs.g; exports.useUserData = _chunkNIRLP2TCjs.a; exports.useUserProfile = _chunkH6XXWDUTjs.n; exports.validateInternalRedirect = _chunkQZH3KSJZjs.h; exports.validateTrustedRedirect = _chunkQZH3KSJZjs.i;
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import{a as j,b as ee,c as re,d as oe,e as te,f as ne,g as se,h as z,i as be,j as b,k as we,l as Le,m as Ue,n as Fe,o as Oe,p as Ge,q as De,r as Ke,s as Ve,t as _e,u as Be,v as He,w as Je,x as $e}from"./chunk-L7GKP6XY.mjs";import{a as Qe,b as Xe,c as Ze,d as rr}from"./chunk-H5M2Q6PB.mjs";import{a as ae,b as de,c as fe,d as x,e as me,f as Re,g as xe,h as D,i as Pe,j as Ae,k as Ie,l as m,m as he,n as Ne,o as We,p as qe,q as S,r as Ye}from"./chunk-PTUSZGL4.mjs";import{a as je,b as er}from"./chunk-RJBX4MWF.mjs";import{a as Te,b as ve,c as Se,d as Ee,e as ke,f as Me,g as ze}from"./chunk-JAPL7EZJ.mjs";import{a as p,b as M,c as ie,d as G,m as ue,n as pe,o as le,p as ce,r as ge,s as ye,t as Ce}from"./chunk-4ILUXVPW.mjs";import{default as vo}from"@nocios/crudify-sdk";export*from"@nocios/crudify-sdk";import{useMemo as or}from"react";import{ThemeProvider as tr,createTheme as ir,CssBaseline as nr}from"@mui/material";import{jsx as ur,jsxs as pr}from"react/jsx-runtime";var sr=(e={})=>{try{let r=M();if(r.configSource!=="none"&&r.theme)return{...e,...r.theme}}catch(r){p.warn("Error reading theme from config",r instanceof Error?{errorMessage:r.message}:{message:String(r)})}return e};function ar({children:e,defaultTheme:r={},disableCssBaseline:t=!1}){let o=or(()=>{let a=sr(r);return ir(a)},[r]);return pr(tr,{theme:o,children:[!t&&ur(nr,{}),e]})}import{Navigate as w,useLocation as fr}from"react-router-dom";import{Fragment as dr,jsx as E,jsxs as K}from"react/jsx-runtime";var lr={border:"5px solid rgba(0, 0, 0, 0.1)",borderTopColor:"#3B82F6",borderRadius:"50%",width:"50px",height:"50px",animation:"spin 1s linear infinite"},cr=()=>E("style",{children:`
1
+ import{a as j,b as ee,c as re,d as oe,e as te,f as ne,g as se,h as z,i as be,j as b,k as we,l as Le,m as Ue,n as Fe,o as Oe,p as Ge,q as De,r as Ke,s as Ve,t as _e,u as Be,v as He,w as Je,x as $e}from"./chunk-QFACMV2I.mjs";import{a as Qe,b as Xe,c as Ze,d as rr}from"./chunk-77UKXG5L.mjs";import{a as ae,b as de,c as fe,d as x,e as me,f as Re,g as xe,h as D,i as Pe,j as Ae,k as Ie,l as m,m as he,n as Ne,o as We,p as qe,q as S,r as Ye}from"./chunk-O4FUHIQG.mjs";import{a as je,b as er}from"./chunk-WMLIOPUC.mjs";import{A as ze,a as p,b as M,c as ie,d as G,m as ue,n as pe,o as le,p as ce,r as ge,s as ye,t as Ce,u as Te,v as ve,w as Se,x as Ee,y as ke,z as Me}from"./chunk-44VU4TSP.mjs";import{default as vo}from"@nocios/crudify-sdk";export*from"@nocios/crudify-sdk";import{useMemo as or}from"react";import{ThemeProvider as tr,createTheme as ir,CssBaseline as nr}from"@mui/material";import{jsx as ur,jsxs as pr}from"react/jsx-runtime";var sr=(e={})=>{try{let r=M();if(r.configSource!=="none"&&r.theme)return{...e,...r.theme}}catch(r){p.warn("Error reading theme from config",r instanceof Error?{errorMessage:r.message}:{message:String(r)})}return e};function ar({children:e,defaultTheme:r={},disableCssBaseline:t=!1}){let o=or(()=>{let a=sr(r);return ir(a)},[r]);return pr(tr,{theme:o,children:[!t&&ur(nr,{}),e]})}import{Navigate as w,useLocation as fr}from"react-router-dom";import{Fragment as dr,jsx as E,jsxs as K}from"react/jsx-runtime";var lr={border:"5px solid rgba(0, 0, 0, 0.1)",borderTopColor:"#3B82F6",borderRadius:"50%",width:"50px",height:"50px",animation:"spin 1s linear infinite"},cr=()=>E("style",{children:`
2
2
  @keyframes spin {
3
3
  0% { transform: rotate(0deg); }
4
4
  100% { transform: rotate(360deg); }
@@ -1,11 +1,119 @@
1
- import { J as JwtPayload } from './api-B4uXiHF0.js';
2
-
3
- interface JWTPayload extends JwtPayload {
4
- "cognito:username"?: string;
1
+ interface CrudifyApiResponse<T = unknown> {
2
+ success: boolean;
3
+ data?: T;
4
+ errors?: string | Record<string, string[]> | string[];
5
+ errorCode?: string;
6
+ fieldsWarning?: Record<string, string[]> | null;
7
+ }
8
+ interface CrudifyTransactionResponse {
9
+ success: boolean;
10
+ data?: TransactionResponseData[];
11
+ errors?: string | Record<string, string[]>;
12
+ errorCode?: string;
13
+ }
14
+ interface TransactionResponseData {
15
+ response?: {
16
+ status: string;
17
+ data?: unknown;
18
+ message?: string;
19
+ };
20
+ errors?: string | Record<string, string[]>;
21
+ }
22
+ interface UserProfile {
23
+ id: string | number;
24
+ email: string;
25
+ username?: string;
26
+ firstName?: string;
27
+ lastName?: string;
28
+ fullName?: string;
29
+ avatar?: string;
30
+ role?: string;
31
+ permissions?: string[];
32
+ lastLogin?: string;
33
+ isActive?: boolean;
34
+ createdAt?: string;
35
+ updatedAt?: string;
36
+ [key: string]: unknown;
37
+ }
38
+ interface LoginResponse {
39
+ token: string;
40
+ user?: UserProfile;
41
+ expiresIn?: number;
42
+ refreshToken?: string;
43
+ }
44
+ interface LoginRequest {
45
+ identifier: string;
46
+ password: string;
47
+ }
48
+ interface ForgotPasswordRequest {
49
+ email: string;
5
50
  }
6
- declare const decodeJwtSafely: (token: string) => JWTPayload | null;
7
- declare const getCurrentUserEmail: () => string | null;
8
- declare const isTokenExpired: (token: string) => boolean;
51
+ interface ResetPasswordRequest {
52
+ email: string;
53
+ code: string;
54
+ newPassword: string;
55
+ }
56
+ interface ValidateCodeRequest {
57
+ email: string;
58
+ codePassword: string;
59
+ }
60
+ interface JwtPayload {
61
+ sub?: string;
62
+ email?: string;
63
+ username?: string;
64
+ iat?: number;
65
+ exp?: number;
66
+ iss?: string;
67
+ aud?: string;
68
+ [key: string]: unknown;
69
+ }
70
+ interface ApiError {
71
+ code: string;
72
+ message: string;
73
+ field?: string;
74
+ details?: Record<string, unknown>;
75
+ }
76
+ interface ValidationError {
77
+ field: string;
78
+ message: string;
79
+ code: string;
80
+ }
81
+ /**
82
+ * Options for Crudify CRUD operations
83
+ */
84
+ interface CrudifyOperationOptions {
85
+ signal?: AbortSignal;
86
+ /** Action metadata for success notifications */
87
+ actionConfig?: {
88
+ key?: string;
89
+ moduleKey?: string;
90
+ [key: string]: unknown;
91
+ };
92
+ /** Skip showing notifications for this operation */
93
+ skipNotifications?: boolean;
94
+ /** Allow additional properties */
95
+ [key: string]: unknown;
96
+ }
97
+ /**
98
+ * Options for Crudify request operations
99
+ */
100
+ interface CrudifyRequestOptions {
101
+ signal?: AbortSignal;
102
+ }
103
+ /**
104
+ * Represents a single operation within a transaction.
105
+ */
106
+ interface TransactionOperation {
107
+ operation: "create" | "update" | "delete" | string;
108
+ moduleKey?: string;
109
+ data?: Record<string, unknown>;
110
+ _id?: string;
111
+ [key: string]: unknown;
112
+ }
113
+ /**
114
+ * Input for transaction operations. Can be a single operation or an array of operations.
115
+ */
116
+ type TransactionInput = TransactionOperation | TransactionOperation[] | Record<string, unknown>;
9
117
 
10
118
  /**
11
119
  * Configuration resolver for crudify-components
@@ -201,135 +309,4 @@ declare function resolveTenantConfig(options?: TenantConfigOptions): ResolvedTen
201
309
  */
202
310
  declare function useTenantConfig(options?: TenantConfigOptions): ResolvedTenantConfig;
203
311
 
204
- declare class SecureStorage {
205
- private readonly storage;
206
- private encryptionKey;
207
- private salt;
208
- private initPromise;
209
- private initialized;
210
- constructor(storageType?: "localStorage" | "sessionStorage");
211
- /**
212
- * Initialize encryption key asynchronously
213
- * Must be called before using encryption methods
214
- */
215
- private ensureInitialized;
216
- private initialize;
217
- private generateFingerprint;
218
- private clearLegacyData;
219
- setItem(key: string, value: string, expiryMinutes?: number): Promise<void>;
220
- getItem(key: string): Promise<string | null>;
221
- removeItem(key: string): void;
222
- clear(): void;
223
- setToken(token: string): Promise<void>;
224
- getToken(): Promise<string | null>;
225
- hasValidToken(): Promise<boolean>;
226
- migrateFromLocalStorage(key: string): Promise<void>;
227
- private uint8ArrayToBase64;
228
- private base64ToUint8Array;
229
- }
230
- declare const secureSessionStorage: SecureStorage;
231
- declare const secureLocalStorage: SecureStorage;
232
-
233
- declare const ERROR_CODES: {
234
- readonly INVALID_CREDENTIALS: "INVALID_CREDENTIALS";
235
- readonly UNAUTHORIZED: "UNAUTHORIZED";
236
- readonly INVALID_API_KEY: "INVALID_API_KEY";
237
- readonly USER_NOT_FOUND: "USER_NOT_FOUND";
238
- readonly USER_NOT_ACTIVE: "USER_NOT_ACTIVE";
239
- readonly NO_PERMISSION: "NO_PERMISSION";
240
- readonly ITEM_NOT_FOUND: "ITEM_NOT_FOUND";
241
- readonly NOT_FOUND: "NOT_FOUND";
242
- readonly IN_USE: "IN_USE";
243
- readonly FIELD_ERROR: "FIELD_ERROR";
244
- readonly BAD_REQUEST: "BAD_REQUEST";
245
- readonly INVALID_EMAIL: "INVALID_EMAIL";
246
- readonly INVALID_CODE: "INVALID_CODE";
247
- readonly INTERNAL_SERVER_ERROR: "INTERNAL_SERVER_ERROR";
248
- readonly DATABASE_CONNECTION_ERROR: "DATABASE_CONNECTION_ERROR";
249
- readonly INVALID_CONFIGURATION: "INVALID_CONFIGURATION";
250
- readonly UNKNOWN_OPERATION: "UNKNOWN_OPERATION";
251
- readonly TOO_MANY_REQUESTS: "TOO_MANY_REQUESTS";
252
- readonly NETWORK_ERROR: "NETWORK_ERROR";
253
- readonly TIMEOUT_ERROR: "TIMEOUT_ERROR";
254
- };
255
- type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES];
256
- type ErrorSeverity = "info" | "warning" | "error" | "critical";
257
- declare const ERROR_SEVERITY_MAP: Record<ErrorCode, ErrorSeverity>;
258
- interface ParsedError {
259
- code: ErrorCode;
260
- message: string;
261
- severity: ErrorSeverity;
262
- field?: string;
263
- details?: Record<string, unknown>;
264
- }
265
- /**
266
- * Parse a Crudify API response and extract standardized error information
267
- */
268
- declare function parseApiError(response: unknown): ParsedError[];
269
- /**
270
- * Parse transaction response errors
271
- */
272
- declare function parseTransactionError(response: unknown): ParsedError[];
273
- /**
274
- * Get a human-readable error message for an error code
275
- */
276
- declare function getErrorMessage(code: ErrorCode): string;
277
- /**
278
- * Handle JavaScript/Network errors and convert to ParsedError
279
- */
280
- declare function parseJavaScriptError(error: unknown): ParsedError;
281
- /**
282
- * Universal error handler that can process any type of error from Crudify APIs
283
- */
284
- declare function handleCrudifyError(error: unknown): ParsedError[];
285
-
286
- interface ErrorTranslationConfig {
287
- /** Función de traducción de i18next */
288
- translateFn: (key: string) => string;
289
- /** Idioma actual (opcional, para logging) */
290
- currentLanguage?: string;
291
- /** Habilitar logs de debug */
292
- enableDebug?: boolean;
293
- }
294
- /**
295
- * Traduce un código de error usando jerarquía de fallbacks
296
- */
297
- declare function translateErrorCode(errorCode: string, config: ErrorTranslationConfig): string;
298
- /**
299
- * Traduce múltiples códigos de error
300
- */
301
- declare function translateErrorCodes(errorCodes: string[], config: ErrorTranslationConfig): string[];
302
- /**
303
- * Traduce un error completo (código + mensaje personalizado)
304
- */
305
- declare function translateError(error: {
306
- code: string;
307
- message?: string;
308
- field?: string;
309
- }, config: ErrorTranslationConfig): string;
310
- /**
311
- * Hook para usar en componentes React con i18next
312
- */
313
- declare function createErrorTranslator(translateFn: (key: string) => string, options?: {
314
- currentLanguage?: string;
315
- enableDebug?: boolean;
316
- }): {
317
- translateErrorCode: (code: string) => string;
318
- translateErrorCodes: (codes: string[]) => string[];
319
- translateError: (error: {
320
- code: string;
321
- message?: string;
322
- field?: string;
323
- }) => string;
324
- translateApiError: (apiResponse: {
325
- data?: {
326
- response?: {
327
- status?: string;
328
- };
329
- };
330
- status?: string;
331
- code?: string;
332
- } | null | undefined) => string;
333
- };
334
-
335
- export { type ConfigResolverOptions as C, ERROR_CODES as E, type ParsedError as P, type ResolvedTenantConfig as R, type TenantConfig as T, secureLocalStorage as a, type TenantConfigOptions as b, resolveConfig as c, decodeJwtSafely as d, useResolvedConfig as e, type ResolvedConfig as f, getCurrentUserEmail as g, type CrudifyEnvironment as h, isTokenExpired as i, handleCrudifyError as j, parseTransactionError as k, parseJavaScriptError as l, getErrorMessage as m, ERROR_SEVERITY_MAP as n, translateErrorCodes as o, parseApiError as p, translateError as q, resolveTenantConfig as r, secureSessionStorage as s, translateErrorCode as t, useTenantConfig as u, createErrorTranslator as v, type ErrorCode as w, type ErrorSeverity as x, type ErrorTranslationConfig as y };
312
+ export { type ApiError as A, type ConfigResolverOptions as C, type ForgotPasswordRequest as F, type JwtPayload as J, type LoginResponse as L, type ResolvedTenantConfig as R, type TenantConfig as T, type UserProfile as U, type ValidateCodeRequest as V, type TenantConfigOptions as a, resolveConfig as b, useResolvedConfig as c, type ResolvedConfig as d, type CrudifyEnvironment as e, type CrudifyApiResponse as f, type CrudifyTransactionResponse as g, type TransactionResponseData as h, type LoginRequest as i, type ResetPasswordRequest as j, type ValidationError as k, type CrudifyOperationOptions as l, type CrudifyRequestOptions as m, type TransactionOperation as n, type TransactionInput as o, resolveTenantConfig as r, useTenantConfig as u };