@gusto/embedded-react-sdk 0.49.0 → 0.50.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/CHANGELOG.md +26 -0
- package/dist/components/Base/createCompoundContext.d.ts +1 -1
- package/dist/components/Base/createCompoundContext.js.map +1 -1
- package/dist/components/Common/UI/Breadcrumbs/Breadcrumbs.js +1 -1
- package/dist/components/Common/UI/CalendarPreview/CalendarLegend.d.ts +1 -1
- package/dist/components/Common/UI/CalendarPreview/CalendarLegend.js.map +1 -1
- package/dist/components/Common/UI/FileInput/FileInput.js +1 -1
- package/dist/components/Common/UI/ProgressBar/ProgressBar.js +4 -4
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +5 -3
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +5 -3
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js +7 -5
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.js +5 -3
- package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +5 -3
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/signCompanyFormSchema.d.ts +1 -0
- package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/signCompanyFormSchema.js.map +1 -1
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js +10 -8
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Company/Industry/Context.js +8 -6
- package/dist/components/Company/Industry/Context.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js +5 -3
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js +5 -3
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
- package/dist/components/Company/OnboardingFlow/OnboardingFlow.d.ts +1 -1
- package/dist/components/Company/OnboardingFlow/OnboardingFlow.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/context.js +5 -3
- package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.d.ts +1 -0
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +5 -3
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js +5 -3
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
- package/dist/components/Contractor/Address/shared/useContractorAddressForm/contractorAddressSchema.d.ts +1 -0
- package/dist/components/Contractor/Address/shared/useContractorAddressForm/contractorAddressSchema.js.map +1 -1
- package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.d.ts +38 -0
- package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js.map +1 -1
- package/dist/components/Contractor/Documents/DocumentsList/useContractorDocumentsList/useContractorDocumentsList.d.ts +1 -0
- package/dist/components/Contractor/Documents/DocumentsList/useContractorDocumentsList/useContractorDocumentsList.js.map +1 -1
- package/dist/components/Contractor/OnboardingFlow/OnboardingFlow.d.ts +3 -3
- package/dist/components/Contractor/OnboardingFlow/OnboardingFlow.js.map +1 -1
- package/dist/components/Contractor/PaymentMethod/PaymentMethod.d.ts +5 -5
- package/dist/components/Contractor/PaymentMethod/PaymentMethod.js +105 -108
- package/dist/components/Contractor/PaymentMethod/PaymentMethod.js.map +1 -1
- package/dist/components/Contractor/PaymentMethod/PaymentMethod.module.scss.js +8 -0
- package/dist/components/Contractor/PaymentMethod/PaymentMethod.module.scss.js.map +1 -0
- package/dist/components/Contractor/PaymentMethod/shared/index.d.ts +2 -0
- package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/fields.d.ts +93 -0
- package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/fields.js +22 -0
- package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/fields.js.map +1 -0
- package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/index.d.ts +5 -0
- package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountForm.d.ts +127 -0
- package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountForm.js +109 -0
- package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountForm.js.map +1 -0
- package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountFormSchema.d.ts +83 -0
- package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountFormSchema.js +42 -0
- package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountFormSchema.js.map +1 -0
- package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/contractorPaymentMethodSchema.d.ts +58 -0
- package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/contractorPaymentMethodSchema.js +21 -0
- package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/contractorPaymentMethodSchema.js.map +1 -0
- package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/fields.d.ts +20 -0
- package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/fields.js +9 -0
- package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/fields.js.map +1 -0
- package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/index.d.ts +5 -0
- package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/useContractorPaymentMethodForm.d.ts +117 -0
- package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/useContractorPaymentMethodForm.js +91 -0
- package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/useContractorPaymentMethodForm.js.map +1 -0
- package/dist/components/Contractor/PaymentMethod/types.d.ts +0 -5
- package/dist/components/Contractor/Payments/PaymentFlow/PaymentFlow.d.ts +2 -2
- package/dist/components/Contractor/Payments/PaymentFlow/PaymentFlow.js.map +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.d.ts +1 -0
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js.map +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.d.ts +45 -0
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/useCompensationForm/compensationSchema.d.ts +1 -0
- package/dist/components/Employee/Compensation/shared/useCompensationForm/compensationSchema.js.map +1 -1
- package/dist/components/Employee/Dashboard/DashboardFlow.d.ts +1 -1
- package/dist/components/Employee/Dashboard/DashboardFlow.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/childSupportGarnishmentFormSchema.d.ts +1 -0
- package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/childSupportGarnishmentFormSchema.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/useDeductionForm/deductionFormSchema.d.ts +1 -0
- package/dist/components/Employee/Deductions/shared/useDeductionForm/deductionFormSchema.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +5 -3
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Employee/Documents/shared/useSignEmployeeForm/signEmployeeFormSchema.d.ts +1 -0
- package/dist/components/Employee/Documents/shared/useSignEmployeeForm/signEmployeeFormSchema.js.map +1 -1
- package/dist/components/Employee/EmployeeListFlow/EmployeeListFlow.d.ts +2 -2
- package/dist/components/Employee/EmployeeListFlow/EmployeeListFlow.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/shared/FederalTaxesView.js +1 -1
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/federalTaxesSchema.d.ts +1 -0
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/federalTaxesSchema.js.map +1 -1
- package/dist/components/Employee/OnboardingExecutionFlow/OnboardingExecutionFlow.d.ts +2 -2
- package/dist/components/Employee/OnboardingExecutionFlow/OnboardingExecutionFlow.js.map +1 -1
- package/dist/components/Employee/OnboardingFlow/OnboardingFlow.d.ts +3 -3
- package/dist/components/Employee/OnboardingFlow/OnboardingFlow.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankForm.d.ts +4 -4
- package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankForm.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankFormSchema.d.ts +1 -0
- package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankFormSchema.js +7 -6
- package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankFormSchema.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodForm.d.ts +1 -1
- package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodForm.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodFormSchema.d.ts +1 -0
- package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodFormSchema.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsForm.d.ts +2 -2
- package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsForm.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/employeeDetailsSchema.d.ts +1 -0
- package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/employeeDetailsSchema.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.d.ts +11 -12
- package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useHomeAddressForm/homeAddressSchema.d.ts +1 -0
- package/dist/components/Employee/Profile/shared/useHomeAddressForm/homeAddressSchema.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.d.ts +36 -0
- package/dist/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.d.ts +31 -0
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/workAddressSchema.d.ts +1 -0
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/workAddressSchema.js.map +1 -1
- package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingFlow.d.ts +2 -2
- package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingFlow.js.map +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldProps.d.ts +36 -18
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fields.d.ts +113 -13
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fields.js.map +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/index.d.ts +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/useEmployeeStateTaxesForm.d.ts +2 -7
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/useEmployeeStateTaxesForm.js.map +1 -1
- package/dist/components/Flow/Flow.js +1 -1
- package/dist/components/InformationRequests/InformationRequests.d.ts +3 -3
- package/dist/components/InformationRequests/InformationRequests.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.js +10 -8
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/helpers/validations.d.ts +12 -0
- package/dist/helpers/validations.js +6 -4
- package/dist/helpers/validations.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.js +247 -237
- package/dist/index.js.map +1 -1
- package/dist/models/external.d.ts +6 -0
- package/dist/style.css +1 -1
- package/dist/types/sdkError.js +13 -6
- package/dist/types/sdkError.js.map +1 -1
- package/package.json +7 -7
- package/dist/components/Contractor/PaymentMethod/BankAccountForm.d.ts +0 -3
- package/dist/components/Contractor/PaymentMethod/BankAccountForm.js +0 -56
- package/dist/components/Contractor/PaymentMethod/BankAccountForm.js.map +0 -1
- package/dist/components/Contractor/PaymentMethod/PaymentTypeForm.d.ts +0 -2
- package/dist/components/Contractor/PaymentMethod/PaymentTypeForm.js +0 -33
- package/dist/components/Contractor/PaymentMethod/PaymentTypeForm.js.map +0 -1
- /package/docs/{appendix → guides}/endpoint-inventory.json +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdkError.js","sources":["../../src/types/sdkError.ts"],"sourcesContent":["import type { EntityErrorObject } from '@gusto/embedded-api-v-2025-11-15/models/components/entityerrorobject'\nimport { GustoEmbeddedError } from '@gusto/embedded-api-v-2025-11-15/models/errors/gustoembeddederror'\nimport { HTTPClientError } from '@gusto/embedded-api-v-2025-11-15/models/errors/httpclienterrors'\nimport { SDKValidationError } from '@gusto/embedded-api-v-2025-11-15/models/errors/sdkvalidationerror'\nimport { getFieldErrors } from '@/helpers/apiErrorToList'\n\n/**\n * Constant map of {@link SDKErrorCategory} string values keyed by uppercase name.\n *\n * @remarks\n * Use this when you need to reference a category value by name (e.g.\n * `SDKErrorCategories.API_ERROR`). Each entry corresponds to one classification:\n *\n * | Value | When it applies |\n * | ----- | --------------- |\n * | `api_error` | HTTP error response from the Gusto API (422, 404, 409, 500, etc.) |\n * | `validation_error` | Client-side Zod schema validation before the request was sent |\n * | `network_error` | Network connectivity failure (connection refused, timeout, abort) |\n * | `internal_error` | Unexpected runtime error (unhandled exception, initialization failure) |\n *\n * @public\n */\nexport const SDKErrorCategories = {\n API_ERROR: 'api_error',\n VALIDATION_ERROR: 'validation_error',\n NETWORK_ERROR: 'network_error',\n INTERNAL_ERROR: 'internal_error',\n} as const\n\n/**\n * High-level classification of where an {@link SDKError} originated.\n *\n * @public\n */\nexport type SDKErrorCategory = (typeof SDKErrorCategories)[keyof typeof SDKErrorCategories]\n\n/**\n * An error thrown by internal SDK logic that should be caught and normalized\n * by `baseSubmitHandler` rather than propagating to the ErrorBoundary.\n *\n * Use this for guard clauses and data integrity checks inside submit handler\n * callbacks where the error should surface as an inline banner, not a crash.\n *\n * @internal\n *\n * @example\n * ```typescript\n * await baseSubmitHandler(data, async () => {\n * const response = await createPayroll({ ... })\n * if (!response.payrollId) {\n * throw new SDKInternalError('Missing payroll ID in response')\n * }\n * })\n * ```\n */\nexport class SDKInternalError extends Error {\n readonly category: SDKErrorCategory\n\n constructor(message: string, category: SDKErrorCategory = 'internal_error') {\n super(message)\n this.name = 'SDKInternalError'\n this.category = category\n }\n}\n\n/**\n * A flattened, field-level error extracted from an API response.\n *\n * @remarks\n * For API errors with structured field errors (e.g. 422 responses), nested\n * `errors[]` structures are recursively flattened into one entry per leaf\n * field. The `field` property is the dot-separated camelCase path\n * (e.g. `\"firstName\"`, `\"states.CA.filingStatus.value\"`).\n *\n * @public\n */\nexport interface SDKFieldError {\n /** Dot-separated camelCase field path (e.g. \"firstName\", \"states.CA.filingStatus.value\") */\n field: string\n /** API error category (e.g. \"invalid_attribute_value\", \"invalid_operation\", \"payroll_blocker\") */\n category: string\n /** Human-readable error message from the API */\n message: string\n /** Additional metadata from the API (e.g. `{ key: \"missing_bank_info\" }` for payroll blockers) */\n metadata?: Record<string, unknown>\n}\n\n/**\n * Unified error shape returned by every form hook and error-handling surface.\n *\n * @remarks\n * Every caught error — whether from the Gusto API, client-side Zod validation,\n * a network failure, or an unexpected runtime exception — is normalized into\n * this shape. The {@link SDKErrorCategory} `category` field distinguishes\n * which source produced the error; `fieldErrors` is populated for structured\n * API responses (typically 422) and is an empty array otherwise.\n *\n * Observability telemetry uses {@link ObservabilityError}, which extends this\n * shape with component context.\n *\n * @public\n *\n * @example\n * ```tsx\n * import { useEmployeeForm } from '@gusto/embedded-react-sdk'\n *\n * const { errorHandling } = useEmployeeForm({ employeeId })\n * const error = errorHandling.error\n *\n * if (error) {\n * console.log(error.category) // 'api_error'\n * console.log(error.httpStatus) // 422\n * console.log(error.fieldErrors) // [{ field: 'firstName', ... }]\n * }\n * ```\n */\nexport interface SDKError {\n /** High-level error classification */\n category: SDKErrorCategory\n\n /** Human-readable error summary */\n message: string\n\n /** HTTP status code (undefined for non-HTTP errors like network or validation) */\n httpStatus?: number\n\n /** Flattened field-level errors from API responses. Empty array for non-field errors. */\n fieldErrors: SDKFieldError[]\n\n /**\n * The original error object for advanced use cases.\n * May be stripped by sanitization (controlled by `sanitization.includeRawError`).\n */\n raw?: unknown\n}\n\ninterface ErrorWithErrors {\n errors: EntityErrorObject[]\n}\n\nfunction hasErrorsArray(error: unknown): error is ErrorWithErrors {\n return (\n error !== null &&\n typeof error === 'object' &&\n 'errors' in error &&\n Array.isArray((error as { errors: unknown }).errors)\n )\n}\n\nfunction humanizeFieldName(snakeCaseField: string): string {\n if (!snakeCaseField) return snakeCaseField\n const words = snakeCaseField.replace(/_/g, ' ')\n return words.charAt(0).toUpperCase() + words.slice(1)\n}\n\nfunction humanizeMessage(message: string, field: string): string {\n if (!message || !field) return message\n const humanized = humanizeFieldName(field)\n return message.replace(field, humanized)\n}\n\nfunction toSDKFieldError(entityError: EntityErrorObject): SDKFieldError {\n const rawMessage = entityError.message ?? ''\n return {\n field: entityError.errorKey,\n message: humanizeMessage(rawMessage, entityError.errorKey),\n category: entityError.category,\n metadata: entityError.metadata as Record<string, unknown> | undefined,\n }\n}\n\n/**\n * Extracts and flattens field errors from an API error's `errors[]` array.\n *\n * Uses the existing `getFieldErrors` recursive traversal for nested errors,\n * with a fallback for errors in categories that `getFieldErrors` doesn't handle.\n */\nfunction extractFieldErrors(errors: EntityErrorObject[]): SDKFieldError[] {\n const flattened = errors.flatMap(err => getFieldErrors(err))\n if (flattened.length > 0) {\n return flattened.map(toSDKFieldError)\n }\n\n return errors.filter(err => err.message).map(toSDKFieldError)\n}\n\ninterface RawAPIFieldError {\n error_key?: string\n errorKey?: string\n category: string\n message?: string\n metadata?: Record<string, unknown>\n}\n\nfunction rawToEntityError(raw: RawAPIFieldError): EntityErrorObject {\n return {\n errorKey: raw.errorKey ?? raw.error_key ?? '',\n category: raw.category,\n message: raw.message,\n metadata: raw.metadata,\n }\n}\n\nfunction tryExtractFieldErrorsFromBody(body: string | undefined): SDKFieldError[] {\n if (!body) return []\n try {\n const parsed: unknown = JSON.parse(body)\n if (\n parsed !== null &&\n typeof parsed === 'object' &&\n 'errors' in parsed &&\n Array.isArray((parsed as { errors: unknown }).errors)\n ) {\n const errors = (parsed as { errors: RawAPIFieldError[] }).errors\n return errors\n .filter(err => err.message)\n .map(rawToEntityError)\n .map(toSDKFieldError)\n }\n } catch {\n // Body isn't valid JSON\n }\n return []\n}\n\nfunction buildApiErrorMessage(fieldErrors: SDKFieldError[], fallbackMessage: string): string {\n if (fieldErrors.length === 0) {\n return fallbackMessage\n }\n return fieldErrors.length === 1\n ? '1 field has issues'\n : `${fieldErrors.length} fields have issues`\n}\n\n/**\n * Normalizes any caught error into a unified `SDKError`.\n *\n * Classification is based purely on the error type:\n * - `SDKInternalError` → uses the error's own `category` (default: `internal_error`)\n * - `GustoEmbeddedError` subclasses → `api_error`\n * - `SDKValidationError` → `validation_error`\n * - `HTTPClientError` subclasses → `network_error`\n * - Everything else → `internal_error`\n *\n * @internal\n */\nexport function normalizeToSDKError(error: unknown): SDKError {\n if (error instanceof SDKInternalError) {\n return {\n category: error.category,\n message: error.message,\n fieldErrors: [],\n raw: error,\n }\n }\n\n if (error instanceof SDKValidationError) {\n return {\n category: 'validation_error',\n message: typeof error.rawMessage === 'string' ? error.rawMessage : error.message,\n fieldErrors: [],\n raw: error,\n }\n }\n\n if (error instanceof HTTPClientError) {\n return {\n category: 'network_error',\n message: error.message,\n fieldErrors: [],\n raw: error,\n }\n }\n\n if (error instanceof GustoEmbeddedError) {\n const httpStatus = error.httpMeta.response.status\n const fieldErrors = hasErrorsArray(error)\n ? extractFieldErrors(error.errors)\n : tryExtractFieldErrorsFromBody(error.httpMeta.body)\n\n return {\n category: 'api_error',\n message: buildApiErrorMessage(fieldErrors, error.message),\n httpStatus,\n fieldErrors,\n raw: error,\n }\n }\n\n if (error instanceof Error) {\n return {\n category: 'internal_error',\n message: error.message,\n fieldErrors: [],\n raw: error,\n }\n }\n\n return {\n category: 'internal_error',\n message: 'An unknown error occurred',\n fieldErrors: [],\n raw: error,\n }\n}\n"],"names":["SDKInternalError","message","category","hasErrorsArray","error","humanizeFieldName","snakeCaseField","words","humanizeMessage","field","humanized","toSDKFieldError","entityError","rawMessage","extractFieldErrors","errors","flattened","err","getFieldErrors","rawToEntityError","raw","tryExtractFieldErrorsFromBody","body","parsed","buildApiErrorMessage","fieldErrors","fallbackMessage","normalizeToSDKError","SDKValidationError","HTTPClientError","GustoEmbeddedError","httpStatus"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sdkError.js","sources":["../../src/types/sdkError.ts"],"sourcesContent":["import type { EntityErrorObject } from '@gusto/embedded-api-v-2025-11-15/models/components/entityerrorobject'\nimport { GustoEmbeddedError } from '@gusto/embedded-api-v-2025-11-15/models/errors/gustoembeddederror'\nimport { HTTPClientError } from '@gusto/embedded-api-v-2025-11-15/models/errors/httpclienterrors'\nimport { SDKValidationError } from '@gusto/embedded-api-v-2025-11-15/models/errors/sdkvalidationerror'\nimport { getFieldErrors } from '@/helpers/apiErrorToList'\n\n/**\n * Constant map of {@link SDKErrorCategory} string values keyed by uppercase name.\n *\n * @remarks\n * Use this when you need to reference a category value by name (e.g.\n * `SDKErrorCategories.API_ERROR`). Each entry corresponds to one classification:\n *\n * | Value | When it applies |\n * | ----- | --------------- |\n * | `api_error` | HTTP error response from the Gusto API (422, 404, 409, 500, etc.) |\n * | `validation_error` | Client-side Zod schema validation before the request was sent |\n * | `network_error` | Network connectivity failure (connection refused, timeout, abort) |\n * | `internal_error` | Unexpected runtime error (unhandled exception, initialization failure) |\n *\n * @public\n */\nexport const SDKErrorCategories = {\n API_ERROR: 'api_error',\n VALIDATION_ERROR: 'validation_error',\n NETWORK_ERROR: 'network_error',\n INTERNAL_ERROR: 'internal_error',\n} as const\n\n/**\n * High-level classification of where an {@link SDKError} originated.\n *\n * @public\n */\nexport type SDKErrorCategory = (typeof SDKErrorCategories)[keyof typeof SDKErrorCategories]\n\n/**\n * An error thrown by internal SDK logic that should be caught and normalized\n * by `baseSubmitHandler` rather than propagating to the ErrorBoundary.\n *\n * Use this for guard clauses and data integrity checks inside submit handler\n * callbacks where the error should surface as an inline banner, not a crash.\n *\n * @internal\n *\n * @example\n * ```typescript\n * await baseSubmitHandler(data, async () => {\n * const response = await createPayroll({ ... })\n * if (!response.payrollId) {\n * throw new SDKInternalError('Missing payroll ID in response')\n * }\n * })\n * ```\n */\nexport class SDKInternalError extends Error {\n readonly category: SDKErrorCategory\n\n constructor(message: string, category: SDKErrorCategory = 'internal_error') {\n super(message)\n this.name = 'SDKInternalError'\n this.category = category\n }\n}\n\n/**\n * A flattened, field-level error extracted from an API response.\n *\n * @remarks\n * For API errors with structured field errors (e.g. 422 responses), nested\n * `errors[]` structures are recursively flattened into one entry per leaf\n * field. The `field` property is the dot-separated camelCase path\n * (e.g. `\"firstName\"`, `\"states.CA.filingStatus.value\"`).\n *\n * @public\n */\nexport interface SDKFieldError {\n /** Dot-separated camelCase field path (e.g. \"firstName\", \"states.CA.filingStatus.value\") */\n field: string\n /** API error category (e.g. \"invalid_attribute_value\", \"invalid_operation\", \"payroll_blocker\") */\n category: string\n /** Human-readable error message from the API */\n message: string\n /** Additional metadata from the API (e.g. `{ key: \"missing_bank_info\" }` for payroll blockers) */\n metadata?: Record<string, unknown>\n}\n\n/**\n * Unified error shape returned by every form hook and error-handling surface.\n *\n * @remarks\n * Every caught error — whether from the Gusto API, client-side Zod validation,\n * a network failure, or an unexpected runtime exception — is normalized into\n * this shape. The {@link SDKErrorCategory} `category` field distinguishes\n * which source produced the error; `fieldErrors` is populated for structured\n * API responses (typically 422) and is an empty array otherwise.\n *\n * Observability telemetry uses {@link ObservabilityError}, which extends this\n * shape with component context.\n *\n * @public\n *\n * @example\n * ```tsx\n * import { useEmployeeForm } from '@gusto/embedded-react-sdk'\n *\n * const { errorHandling } = useEmployeeForm({ employeeId })\n * const error = errorHandling.error\n *\n * if (error) {\n * console.log(error.category) // 'api_error'\n * console.log(error.httpStatus) // 422\n * console.log(error.fieldErrors) // [{ field: 'firstName', ... }]\n * }\n * ```\n */\nexport interface SDKError {\n /** High-level error classification */\n category: SDKErrorCategory\n\n /** Human-readable error summary */\n message: string\n\n /** HTTP status code (undefined for non-HTTP errors like network or validation) */\n httpStatus?: number\n\n /** Flattened field-level errors from API responses. Empty array for non-field errors. */\n fieldErrors: SDKFieldError[]\n\n /**\n * The original error object for advanced use cases.\n * May be stripped by sanitization (controlled by `sanitization.includeRawError`).\n */\n raw?: unknown\n}\n\ninterface ErrorWithErrors {\n errors: EntityErrorObject[]\n}\n\nfunction hasErrorsArray(error: unknown): error is ErrorWithErrors {\n return (\n error !== null &&\n typeof error === 'object' &&\n 'errors' in error &&\n Array.isArray((error as { errors: unknown }).errors)\n )\n}\n\nfunction humanizeFieldName(snakeCaseField: string): string {\n if (!snakeCaseField) return snakeCaseField\n const words = snakeCaseField.replace(/_/g, ' ')\n return words.charAt(0).toUpperCase() + words.slice(1)\n}\n\nfunction humanizeMessage(message: string, field: string): string {\n if (!message || !field) return message\n const humanized = humanizeFieldName(field)\n return message.replace(field, humanized)\n}\n\nfunction toSDKFieldError(entityError: EntityErrorObject): SDKFieldError {\n const rawMessage = entityError.message ?? ''\n return {\n field: entityError.errorKey,\n message: humanizeMessage(rawMessage, entityError.errorKey),\n category: entityError.category,\n metadata: entityError.metadata as Record<string, unknown> | undefined,\n }\n}\n\n/**\n * Extracts and flattens field errors from an API error's `errors[]` array.\n *\n * Uses the existing `getFieldErrors` recursive traversal for nested errors,\n * with a fallback for errors in categories that `getFieldErrors` doesn't handle.\n */\nfunction extractFieldErrors(errors: EntityErrorObject[]): SDKFieldError[] {\n const flattened = errors.flatMap(err => getFieldErrors(err))\n if (flattened.length > 0) {\n return flattened.map(toSDKFieldError)\n }\n\n return errors.filter(err => err.message).map(toSDKFieldError)\n}\n\ninterface RawAPIFieldError {\n error_key?: string\n errorKey?: string\n category: string\n message?: string\n metadata?: Record<string, unknown>\n}\n\nfunction rawToEntityError(raw: RawAPIFieldError): EntityErrorObject {\n return {\n errorKey: raw.errorKey ?? raw.error_key ?? '',\n category: raw.category,\n message: raw.message,\n metadata: raw.metadata,\n }\n}\n\nfunction tryExtractFieldErrorsFromBody(body: string | undefined): SDKFieldError[] {\n if (!body) return []\n try {\n const parsed: unknown = JSON.parse(body)\n if (\n parsed !== null &&\n typeof parsed === 'object' &&\n 'errors' in parsed &&\n Array.isArray((parsed as { errors: unknown }).errors)\n ) {\n const errors = (parsed as { errors: RawAPIFieldError[] }).errors\n return errors\n .filter(err => err.message)\n .map(rawToEntityError)\n .map(toSDKFieldError)\n }\n } catch {\n // Body isn't valid JSON\n }\n return []\n}\n\nfunction buildApiErrorMessage(fieldErrors: SDKFieldError[], fallbackMessage: string): string {\n if (fieldErrors.length === 0) {\n return fallbackMessage\n }\n return fieldErrors.length === 1\n ? '1 field has issues'\n : `${fieldErrors.length} fields have issues`\n}\n\n/**\n * Normalizes any caught error into a unified `SDKError`.\n *\n * Classification is based purely on the error type:\n * - `SDKInternalError` → uses the error's own `category` (default: `internal_error`)\n * - `GustoEmbeddedError` subclasses → `api_error`\n * - `SDKValidationError` → `validation_error`\n * - `HTTPClientError` subclasses → `network_error`\n * - Everything else → `internal_error`\n *\n * @internal\n */\nexport function normalizeToSDKError(error: unknown): SDKError {\n if (error instanceof SDKInternalError) {\n return {\n category: error.category,\n message: error.message,\n fieldErrors: [],\n raw: error,\n }\n }\n\n if (error instanceof SDKValidationError) {\n return {\n category: 'validation_error',\n message: typeof error.rawMessage === 'string' ? error.rawMessage : error.message,\n fieldErrors: [],\n raw: error,\n }\n }\n\n if (error instanceof HTTPClientError) {\n return {\n category: 'network_error',\n message: error.message,\n fieldErrors: [],\n raw: error,\n }\n }\n\n if (error instanceof GustoEmbeddedError) {\n const httpStatus = error.httpMeta.response.status\n const fieldErrors = hasErrorsArray(error)\n ? extractFieldErrors(error.errors)\n : tryExtractFieldErrorsFromBody(error.httpMeta.body)\n\n return {\n category: 'api_error',\n message: buildApiErrorMessage(fieldErrors, error.message),\n httpStatus,\n fieldErrors,\n raw: error,\n }\n }\n\n if (error instanceof Error) {\n return {\n category: 'internal_error',\n message: error.message,\n fieldErrors: [],\n raw: error,\n }\n }\n\n return {\n category: 'internal_error',\n message: 'An unknown error occurred',\n fieldErrors: [],\n raw: error,\n }\n}\n"],"names":["SDKErrorCategories","SDKInternalError","message","category","hasErrorsArray","error","humanizeFieldName","snakeCaseField","words","humanizeMessage","field","humanized","toSDKFieldError","entityError","rawMessage","extractFieldErrors","errors","flattened","err","getFieldErrors","rawToEntityError","raw","tryExtractFieldErrorsFromBody","body","parsed","buildApiErrorMessage","fieldErrors","fallbackMessage","normalizeToSDKError","SDKValidationError","HTTPClientError","GustoEmbeddedError","httpStatus"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gusto/embedded-react-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.50.0",
|
|
4
4
|
"homepage": "https://github.com/Gusto/embedded-react-sdk",
|
|
5
5
|
"bugs": {
|
|
6
6
|
"url": "https://github.com/Gusto/embedded-react-sdk/issues"
|
|
@@ -22,11 +22,11 @@
|
|
|
22
22
|
"import": "./dist/*.css",
|
|
23
23
|
"require": "./dist/*.css"
|
|
24
24
|
},
|
|
25
|
-
"./endpoint-inventory.json": "./docs/
|
|
25
|
+
"./endpoint-inventory.json": "./docs/guides/endpoint-inventory.json"
|
|
26
26
|
},
|
|
27
27
|
"files": [
|
|
28
28
|
"dist",
|
|
29
|
-
"docs/
|
|
29
|
+
"docs/guides/endpoint-inventory.json",
|
|
30
30
|
"./README.md",
|
|
31
31
|
"./CHANGELOG.md"
|
|
32
32
|
],
|
|
@@ -93,8 +93,8 @@
|
|
|
93
93
|
"sdk-app:analyze-props": "npx tsx sdk-app/scripts/analyze-component-props.ts"
|
|
94
94
|
},
|
|
95
95
|
"devDependencies": {
|
|
96
|
-
"@commitlint/cli": "^21.
|
|
97
|
-
"@commitlint/config-conventional": "^21.
|
|
96
|
+
"@commitlint/cli": "^21.2.0",
|
|
97
|
+
"@commitlint/config-conventional": "^21.2.0",
|
|
98
98
|
"@eslint/js": "^9.39.2",
|
|
99
99
|
"@microsoft/api-extractor": "^7.58.9",
|
|
100
100
|
"@playwright/test": "^1.61.1",
|
|
@@ -154,7 +154,7 @@
|
|
|
154
154
|
"stylelint-config-standard": "^40.0.0",
|
|
155
155
|
"ts-morph": "^28.0.0",
|
|
156
156
|
"tsx": "^4.22.4",
|
|
157
|
-
"typescript-eslint": "^8.62.
|
|
157
|
+
"typescript-eslint": "^8.62.1",
|
|
158
158
|
"vite": "^6.4.3",
|
|
159
159
|
"vite-plugin-checker": "^0.14.4",
|
|
160
160
|
"vite-plugin-circular-dependency": "^0.6.0",
|
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
"classnames": "^2.5.1",
|
|
188
188
|
"deepmerge": "^4.3.1",
|
|
189
189
|
"dompurify": "^3.4.11",
|
|
190
|
-
"i18next": "^26.3.
|
|
190
|
+
"i18next": "^26.3.4",
|
|
191
191
|
"react-aria": "^3.47.0",
|
|
192
192
|
"react-aria-components": "1.16.0",
|
|
193
193
|
"react-error-boundary": "^6.1.2",
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { jsxs as a, jsx as r } from "react/jsx-runtime";
|
|
2
|
-
import { useTranslation as n } from "react-i18next";
|
|
3
|
-
import { Flex as t } from "../../Common/Flex/Flex.js";
|
|
4
|
-
import "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
5
|
-
import "react";
|
|
6
|
-
import { TextInputField as o } from "../../Common/Fields/TextInputField/TextInputField.js";
|
|
7
|
-
import { RadioGroupField as i } from "../../Common/Fields/RadioGroupField/RadioGroupField.js";
|
|
8
|
-
function g({ bankAccount: u }) {
|
|
9
|
-
const { t: e } = n("Contractor.PaymentMethod", { keyPrefix: "bankAccountForm" });
|
|
10
|
-
return /* @__PURE__ */ a(t, { gap: 20, flexDirection: "column", children: [
|
|
11
|
-
/* @__PURE__ */ r(
|
|
12
|
-
o,
|
|
13
|
-
{
|
|
14
|
-
name: "name",
|
|
15
|
-
isRequired: !0,
|
|
16
|
-
label: e("nameLabel"),
|
|
17
|
-
errorMessage: e("validations.accountName")
|
|
18
|
-
}
|
|
19
|
-
),
|
|
20
|
-
/* @__PURE__ */ r(
|
|
21
|
-
o,
|
|
22
|
-
{
|
|
23
|
-
name: "routingNumber",
|
|
24
|
-
label: e("routingNumberLabel"),
|
|
25
|
-
isRequired: !0,
|
|
26
|
-
description: e("routingNumberDescription"),
|
|
27
|
-
errorMessage: e("validations.routingNumber")
|
|
28
|
-
}
|
|
29
|
-
),
|
|
30
|
-
/* @__PURE__ */ r(
|
|
31
|
-
o,
|
|
32
|
-
{
|
|
33
|
-
name: "accountNumber",
|
|
34
|
-
label: e("accountNumberLabel"),
|
|
35
|
-
errorMessage: e("validations.accountNumber"),
|
|
36
|
-
isRequired: !0
|
|
37
|
-
}
|
|
38
|
-
),
|
|
39
|
-
/* @__PURE__ */ r(
|
|
40
|
-
i,
|
|
41
|
-
{
|
|
42
|
-
name: "accountType",
|
|
43
|
-
isRequired: !0,
|
|
44
|
-
label: e("accountTypeLabel"),
|
|
45
|
-
options: [
|
|
46
|
-
{ value: "Checking", label: e("accountTypeChecking") },
|
|
47
|
-
{ value: "Savings", label: e("accountTypeSavings") }
|
|
48
|
-
]
|
|
49
|
-
}
|
|
50
|
-
)
|
|
51
|
-
] });
|
|
52
|
-
}
|
|
53
|
-
export {
|
|
54
|
-
g as BankAccountForm
|
|
55
|
-
};
|
|
56
|
-
//# sourceMappingURL=BankAccountForm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BankAccountForm.js","sources":["../../../../src/components/Contractor/PaymentMethod/BankAccountForm.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { BankAccountFormProps } from './types'\nimport { Flex, RadioGroupField, TextInputField } from '@/components/Common'\n\n/** @internal */\nexport function BankAccountForm({ bankAccount }: BankAccountFormProps) {\n const { t } = useTranslation('Contractor.PaymentMethod', { keyPrefix: 'bankAccountForm' })\n\n return (\n <Flex gap={20} flexDirection={'column'}>\n <TextInputField\n name=\"name\"\n isRequired\n label={t('nameLabel')}\n errorMessage={t('validations.accountName')}\n />\n\n <TextInputField\n name=\"routingNumber\"\n label={t('routingNumberLabel')}\n isRequired\n description={t('routingNumberDescription')}\n errorMessage={t('validations.routingNumber')}\n />\n\n <TextInputField\n name=\"accountNumber\"\n label={t('accountNumberLabel')}\n errorMessage={t('validations.accountNumber')}\n isRequired\n />\n\n <RadioGroupField\n name=\"accountType\"\n isRequired\n label={t('accountTypeLabel')}\n options={[\n { value: 'Checking', label: t('accountTypeChecking') },\n { value: 'Savings', label: t('accountTypeSavings') },\n ]}\n />\n </Flex>\n )\n}\n"],"names":["BankAccountForm","bankAccount","t","useTranslation","jsxs","Flex","jsx","TextInputField","RadioGroupField"],"mappings":";;;;;;;AAKO,SAASA,EAAgB,EAAE,aAAAC,KAAqC;AACrE,QAAM,EAAE,GAAAC,MAAMC,EAAe,4BAA4B,EAAE,WAAW,mBAAmB;AAEzF,SACE,gBAAAC,EAACC,GAAA,EAAK,KAAK,IAAI,eAAe,UAC5B,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,YAAU;AAAA,QACV,OAAOL,EAAE,WAAW;AAAA,QACpB,cAAcA,EAAE,yBAAyB;AAAA,MAAA;AAAA,IAAA;AAAA,IAG3C,gBAAAI;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAOL,EAAE,oBAAoB;AAAA,QAC7B,YAAU;AAAA,QACV,aAAaA,EAAE,0BAA0B;AAAA,QACzC,cAAcA,EAAE,2BAA2B;AAAA,MAAA;AAAA,IAAA;AAAA,IAG7C,gBAAAI;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAOL,EAAE,oBAAoB;AAAA,QAC7B,cAAcA,EAAE,2BAA2B;AAAA,QAC3C,YAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAGZ,gBAAAI;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,YAAU;AAAA,QACV,OAAON,EAAE,kBAAkB;AAAA,QAC3B,SAAS;AAAA,UACP,EAAE,OAAO,YAAY,OAAOA,EAAE,qBAAqB,EAAA;AAAA,UACnD,EAAE,OAAO,WAAW,OAAOA,EAAE,oBAAoB,EAAA;AAAA,QAAE;AAAA,MACrD;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
-
import { useTranslation as i } from "react-i18next";
|
|
3
|
-
import "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
4
|
-
import "react";
|
|
5
|
-
import { PAYMENT_METHODS as t } from "../../../shared/constants.js";
|
|
6
|
-
import { RadioGroupField as r } from "../../Common/Fields/RadioGroupField/RadioGroupField.js";
|
|
7
|
-
function s() {
|
|
8
|
-
const { t: e } = i("Contractor.PaymentMethod");
|
|
9
|
-
return /* @__PURE__ */ o(
|
|
10
|
-
r,
|
|
11
|
-
{
|
|
12
|
-
name: "type",
|
|
13
|
-
label: e("paymentFieldsetLegend"),
|
|
14
|
-
shouldVisuallyHideLabel: !0,
|
|
15
|
-
options: [
|
|
16
|
-
{
|
|
17
|
-
value: t.directDeposit,
|
|
18
|
-
label: e("directDepositLabel"),
|
|
19
|
-
description: e("directDepositDescription")
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
value: t.check,
|
|
23
|
-
label: e("checkLabel"),
|
|
24
|
-
description: e("checkDescription")
|
|
25
|
-
}
|
|
26
|
-
]
|
|
27
|
-
}
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
export {
|
|
31
|
-
s as PaymentTypeForm
|
|
32
|
-
};
|
|
33
|
-
//# sourceMappingURL=PaymentTypeForm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PaymentTypeForm.js","sources":["../../../../src/components/Contractor/PaymentMethod/PaymentTypeForm.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { RadioGroupField } from '@/components/Common'\nimport { PAYMENT_METHODS } from '@/shared/constants'\n\n/** @internal */\nexport function PaymentTypeForm() {\n const { t } = useTranslation('Contractor.PaymentMethod')\n return (\n <RadioGroupField\n name=\"type\"\n label={t('paymentFieldsetLegend')}\n shouldVisuallyHideLabel\n options={[\n {\n value: PAYMENT_METHODS.directDeposit,\n label: t('directDepositLabel'),\n description: t('directDepositDescription'),\n },\n {\n value: PAYMENT_METHODS.check,\n label: t('checkLabel'),\n description: t('checkDescription'),\n },\n ]}\n />\n )\n}\n"],"names":["PaymentTypeForm","t","useTranslation","jsx","RadioGroupField","PAYMENT_METHODS"],"mappings":";;;;;;AAKO,SAASA,IAAkB;AAChC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,0BAA0B;AACvD,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,OAAOH,EAAE,uBAAuB;AAAA,MAChC,yBAAuB;AAAA,MACvB,SAAS;AAAA,QACP;AAAA,UACE,OAAOI,EAAgB;AAAA,UACvB,OAAOJ,EAAE,oBAAoB;AAAA,UAC7B,aAAaA,EAAE,0BAA0B;AAAA,QAAA;AAAA,QAE3C;AAAA,UACE,OAAOI,EAAgB;AAAA,UACvB,OAAOJ,EAAE,YAAY;AAAA,UACrB,aAAaA,EAAE,kBAAkB;AAAA,QAAA;AAAA,MACnC;AAAA,IACF;AAAA,EAAA;AAGN;"}
|
|
File without changes
|