@nuskin/shipping-address-form 1.7.9 → 1.7.10-6614-dev.1
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/dist/addressLookup/hooks/useAddressValidationBase.js +4 -1
- package/dist/addressLookup/hooks/useAddressValidationBase.js.map +1 -1
- package/dist/addressLookup/hooks/useIntlAddressValidation.js +9 -17
- package/dist/addressLookup/hooks/useIntlAddressValidation.js.map +1 -1
- package/dist/addressLookup/hooks/useSmartyInternationalLookup.js +16 -7
- package/dist/addressLookup/hooks/useSmartyInternationalLookup.js.map +1 -1
- package/dist/addressLookup/hooks/useSmartyLookupBase.js +2 -1
- package/dist/addressLookup/hooks/useSmartyLookupBase.js.map +1 -1
- package/dist/addressLookup/hooks/useSmartyUSLookup.js +10 -7
- package/dist/addressLookup/hooks/useSmartyUSLookup.js.map +1 -1
- package/dist/addressLookup/hooks/useUSAddressValidation.js +10 -17
- package/dist/addressLookup/hooks/useUSAddressValidation.js.map +1 -1
- package/dist/addressLookup/utils/smartyConfig.js +8 -5
- package/dist/addressLookup/utils/smartyConfig.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -22,6 +22,7 @@ const useAddressValidationBase = ({
|
|
|
22
22
|
requestKey,
|
|
23
23
|
requestUrl,
|
|
24
24
|
requestParams,
|
|
25
|
+
requestBody,
|
|
25
26
|
transformResponse,
|
|
26
27
|
effectDeps = [],
|
|
27
28
|
// NGE1-6437: a failed call must surface immediately, not auto-retry a duplicate request to Smarty
|
|
@@ -83,7 +84,9 @@ const useAddressValidationBase = ({
|
|
|
83
84
|
controller,
|
|
84
85
|
settled: false,
|
|
85
86
|
promise: (async () => {
|
|
86
|
-
const networkResponse = await _axios.default.
|
|
87
|
+
const networkResponse = requestBody ? await _axios.default.post(requestUrl, requestBody, {
|
|
88
|
+
signal: controller.signal
|
|
89
|
+
}) : await _axios.default.get(requestUrl, {
|
|
87
90
|
params: requestParams,
|
|
88
91
|
signal: controller.signal
|
|
89
92
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAddressValidationBase.js","names":["_react","require","_axios","_interopRequireDefault","_requestCache","_requestRateLimiter","_inFlightRequests","e","__esModule","default","RATE_LIMIT_ERROR_CODE","useAddressValidationBase","isEnabled","cacheNamespace","cacheTtlMs","rateLimitNamespace","rateLimitConfig","requestKey","requestUrl","requestParams","transformResponse","effectDeps","maxRetries","requestCycleKey","JSON","stringify","suggestions","setSuggestions","useState","loading","setLoading","error","setError","rateLimited","setRateLimited","activeCycleKey","setActiveCycleKey","isPendingCycleChange","useEffect","cancelled","activeRequest","activeRequestKey","validateAddress","lastError","attempt","cached","getCachedValue","rateLimitStatus","checkRateLimit","allowed","existingRequest","getInFlightRequest","response","retainInFlightRequest","promise","controller","AbortController","request","settled","networkResponse","axios","get","params","signal","setInFlightRequest","settleInFlightRequest","transformedSuggestions","data","setCachedValue","undefined","err","name","code","releaseInFlightRequest","_lastError$response","message","_activeRequest","_activeRequest2","subscribers","abort","Boolean","_default","exports"],"sources":["../../../src/addressLookup/hooks/useAddressValidationBase.jsx"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport { getCachedValue, setCachedValue } from '../utils/requestCache';\nimport { checkRateLimit } from '../utils/requestRateLimiter';\nimport {\n getInFlightRequest,\n setInFlightRequest,\n retainInFlightRequest,\n releaseInFlightRequest,\n settleInFlightRequest\n} from '../utils/inFlightRequests';\n\n// Not rendered directly: useSmartyServiceErrors resolves the displayed text\n// from fieldLabels.rateLimited. This is only a truthy signal for `error`.\nconst RATE_LIMIT_ERROR_CODE = 'rate-limited';\n\nconst useAddressValidationBase = ({\n isEnabled,\n cacheNamespace = null,\n cacheTtlMs = null,\n rateLimitNamespace,\n rateLimitConfig,\n requestKey,\n requestUrl,\n requestParams,\n transformResponse,\n effectDeps = [],\n // NGE1-6437: a failed call must surface immediately, not auto-retry a duplicate request to Smarty\n maxRetries = 0\n}) => {\n const requestCycleKey = JSON.stringify({\n isEnabled,\n effectDeps\n });\n const [suggestions, setSuggestions] = useState([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n const [rateLimited, setRateLimited] = useState(false);\n const [activeCycleKey, setActiveCycleKey] = useState(requestCycleKey);\n\n const isPendingCycleChange = activeCycleKey !== requestCycleKey;\n\n useEffect(() => {\n setActiveCycleKey(requestCycleKey);\n\n if (!isEnabled) {\n setRateLimited(false);\n return;\n }\n\n let cancelled = false;\n let activeRequest = null;\n let activeRequestKey = null;\n\n const validateAddress = async () => {\n setLoading(true);\n setError(null);\n setSuggestions([]);\n\n let lastError = null;\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n const cached = cacheNamespace ? getCachedValue(cacheNamespace, requestKey) : null;\n if (cached) {\n if (!cancelled) {\n setRateLimited(false);\n setSuggestions(cached.suggestions);\n setLoading(false);\n }\n return;\n }\n\n const rateLimitStatus = checkRateLimit(rateLimitNamespace, rateLimitConfig);\n if (!rateLimitStatus.allowed) {\n setRateLimited(true);\n setError(RATE_LIMIT_ERROR_CODE);\n setLoading(false);\n return;\n }\n\n activeRequestKey = requestKey;\n const existingRequest = getInFlightRequest(activeRequestKey);\n let response;\n\n if (existingRequest) {\n activeRequest = retainInFlightRequest(activeRequestKey);\n ({ response } = await activeRequest.promise);\n } else {\n const controller = new AbortController();\n const request = {\n controller,\n settled: false,\n promise: (async () => {\n const networkResponse = await axios.get(requestUrl, {\n params: requestParams,\n signal: controller.signal\n });\n return { response: networkResponse };\n })()\n };\n\n setInFlightRequest(activeRequestKey, request);\n activeRequest = retainInFlightRequest(activeRequestKey);\n\n try {\n ({ response } = await activeRequest.promise);\n } finally {\n settleInFlightRequest(activeRequestKey, activeRequest);\n }\n }\n\n if (cancelled) {\n return;\n }\n\n const transformedSuggestions = transformResponse(response.data);\n if (cacheNamespace) {\n setCachedValue(cacheNamespace, requestKey, {\n suggestions: transformedSuggestions\n }, cacheTtlMs || undefined);\n }\n\n setRateLimited(false);\n setSuggestions(transformedSuggestions);\n setLoading(false);\n return;\n } catch (err) {\n if (cancelled || err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n return;\n }\n lastError = err;\n // Release the failed entry so the retry issues a fresh request instead of re-awaiting the rejection.\n if (activeRequestKey && activeRequest) {\n releaseInFlightRequest(activeRequestKey, activeRequest);\n }\n activeRequestKey = null;\n activeRequest = null;\n }\n }\n\n if (!cancelled && lastError) {\n setRateLimited(false);\n setError(lastError.response?.data?.message || lastError.message);\n }\n\n if (!cancelled) {\n setLoading(false);\n }\n };\n\n validateAddress();\n\n return () => {\n cancelled = true;\n if (activeRequestKey && activeRequest) {\n releaseInFlightRequest(activeRequestKey, activeRequest);\n }\n if (activeRequest?.subscribers === 0 && !activeRequest?.settled) {\n activeRequest.controller.abort();\n }\n };\n }, [isEnabled, requestCycleKey]);\n\n return {\n suggestions: isPendingCycleChange ? [] : suggestions,\n loading: isPendingCycleChange ? Boolean(isEnabled) : loading,\n error: isPendingCycleChange ? null : error,\n rateLimited: isPendingCycleChange ? false : rateLimited\n };\n};\n\nexport default useAddressValidationBase;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useAddressValidationBase.js","names":["_react","require","_axios","_interopRequireDefault","_requestCache","_requestRateLimiter","_inFlightRequests","e","__esModule","default","RATE_LIMIT_ERROR_CODE","useAddressValidationBase","isEnabled","cacheNamespace","cacheTtlMs","rateLimitNamespace","rateLimitConfig","requestKey","requestUrl","requestParams","requestBody","transformResponse","effectDeps","maxRetries","requestCycleKey","JSON","stringify","suggestions","setSuggestions","useState","loading","setLoading","error","setError","rateLimited","setRateLimited","activeCycleKey","setActiveCycleKey","isPendingCycleChange","useEffect","cancelled","activeRequest","activeRequestKey","validateAddress","lastError","attempt","cached","getCachedValue","rateLimitStatus","checkRateLimit","allowed","existingRequest","getInFlightRequest","response","retainInFlightRequest","promise","controller","AbortController","request","settled","networkResponse","axios","post","signal","get","params","setInFlightRequest","settleInFlightRequest","transformedSuggestions","data","setCachedValue","undefined","err","name","code","releaseInFlightRequest","_lastError$response","message","_activeRequest","_activeRequest2","subscribers","abort","Boolean","_default","exports"],"sources":["../../../src/addressLookup/hooks/useAddressValidationBase.jsx"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport { getCachedValue, setCachedValue } from '../utils/requestCache';\nimport { checkRateLimit } from '../utils/requestRateLimiter';\nimport {\n getInFlightRequest,\n setInFlightRequest,\n retainInFlightRequest,\n releaseInFlightRequest,\n settleInFlightRequest\n} from '../utils/inFlightRequests';\n\n// Not rendered directly: useSmartyServiceErrors resolves the displayed text\n// from fieldLabels.rateLimited. This is only a truthy signal for `error`.\nconst RATE_LIMIT_ERROR_CODE = 'rate-limited';\n\nconst useAddressValidationBase = ({\n isEnabled,\n cacheNamespace = null,\n cacheTtlMs = null,\n rateLimitNamespace,\n rateLimitConfig,\n requestKey,\n requestUrl,\n requestParams,\n requestBody,\n transformResponse,\n effectDeps = [],\n // NGE1-6437: a failed call must surface immediately, not auto-retry a duplicate request to Smarty\n maxRetries = 0\n}) => {\n const requestCycleKey = JSON.stringify({\n isEnabled,\n effectDeps\n });\n const [suggestions, setSuggestions] = useState([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n const [rateLimited, setRateLimited] = useState(false);\n const [activeCycleKey, setActiveCycleKey] = useState(requestCycleKey);\n\n const isPendingCycleChange = activeCycleKey !== requestCycleKey;\n\n useEffect(() => {\n setActiveCycleKey(requestCycleKey);\n\n if (!isEnabled) {\n setRateLimited(false);\n return;\n }\n\n let cancelled = false;\n let activeRequest = null;\n let activeRequestKey = null;\n\n const validateAddress = async () => {\n setLoading(true);\n setError(null);\n setSuggestions([]);\n\n let lastError = null;\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n const cached = cacheNamespace ? getCachedValue(cacheNamespace, requestKey) : null;\n if (cached) {\n if (!cancelled) {\n setRateLimited(false);\n setSuggestions(cached.suggestions);\n setLoading(false);\n }\n return;\n }\n\n const rateLimitStatus = checkRateLimit(rateLimitNamespace, rateLimitConfig);\n if (!rateLimitStatus.allowed) {\n setRateLimited(true);\n setError(RATE_LIMIT_ERROR_CODE);\n setLoading(false);\n return;\n }\n\n activeRequestKey = requestKey;\n const existingRequest = getInFlightRequest(activeRequestKey);\n let response;\n\n if (existingRequest) {\n activeRequest = retainInFlightRequest(activeRequestKey);\n ({ response } = await activeRequest.promise);\n } else {\n const controller = new AbortController();\n const request = {\n controller,\n settled: false,\n promise: (async () => {\n const networkResponse = requestBody\n ? await axios.post(requestUrl, requestBody, { signal: controller.signal })\n : await axios.get(requestUrl, { params: requestParams, signal: controller.signal });\n return { response: networkResponse };\n })()\n };\n\n setInFlightRequest(activeRequestKey, request);\n activeRequest = retainInFlightRequest(activeRequestKey);\n\n try {\n ({ response } = await activeRequest.promise);\n } finally {\n settleInFlightRequest(activeRequestKey, activeRequest);\n }\n }\n\n if (cancelled) {\n return;\n }\n\n const transformedSuggestions = transformResponse(response.data);\n if (cacheNamespace) {\n setCachedValue(cacheNamespace, requestKey, {\n suggestions: transformedSuggestions\n }, cacheTtlMs || undefined);\n }\n\n setRateLimited(false);\n setSuggestions(transformedSuggestions);\n setLoading(false);\n return;\n } catch (err) {\n if (cancelled || err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n return;\n }\n lastError = err;\n // Release the failed entry so the retry issues a fresh request instead of re-awaiting the rejection.\n if (activeRequestKey && activeRequest) {\n releaseInFlightRequest(activeRequestKey, activeRequest);\n }\n activeRequestKey = null;\n activeRequest = null;\n }\n }\n\n if (!cancelled && lastError) {\n setRateLimited(false);\n setError(lastError.response?.data?.message || lastError.message);\n }\n\n if (!cancelled) {\n setLoading(false);\n }\n };\n\n validateAddress();\n\n return () => {\n cancelled = true;\n if (activeRequestKey && activeRequest) {\n releaseInFlightRequest(activeRequestKey, activeRequest);\n }\n if (activeRequest?.subscribers === 0 && !activeRequest?.settled) {\n activeRequest.controller.abort();\n }\n };\n }, [isEnabled, requestCycleKey]);\n\n return {\n suggestions: isPendingCycleChange ? [] : suggestions,\n loading: isPendingCycleChange ? Boolean(isEnabled) : loading,\n error: isPendingCycleChange ? null : error,\n rateLimited: isPendingCycleChange ? false : rateLimited\n };\n};\n\nexport default useAddressValidationBase;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -16,7 +16,6 @@ const RATE_LIMIT_CONFIG = {
|
|
|
16
16
|
windowMs: 60 * 1000,
|
|
17
17
|
cooldownMs: 60 * 1000
|
|
18
18
|
};
|
|
19
|
-
const VERIFY_URL = 'https://international-street.api.smarty.com/verify';
|
|
20
19
|
const PRECISION_LABELS = {
|
|
21
20
|
DeliveryPoint: 'delivery point',
|
|
22
21
|
Premise: 'premise',
|
|
@@ -25,22 +24,15 @@ const PRECISION_LABELS = {
|
|
|
25
24
|
AdministrativeArea: 'region'
|
|
26
25
|
};
|
|
27
26
|
const getLookupAddressLine = (formData = {}, lookupField = 'address1') => (formData === null || formData === void 0 ? void 0 : formData[lookupField]) || '';
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
key: _smartyConfig.SMARTY_INTL_STREET_KEY,
|
|
31
|
-
country: countryCode,
|
|
27
|
+
const buildRequestBody = (formData, countryCode, lookupField = 'address1') => {
|
|
28
|
+
const body = {
|
|
32
29
|
address1: getLookupAddressLine(formData, lookupField),
|
|
33
|
-
locality: formData.city || '',
|
|
34
|
-
administrative_area: formData.region || '',
|
|
35
|
-
postal_code: (0, _validators.normalizePostalCodeValue)(formData.postalCode || ''),
|
|
36
30
|
geocode: true
|
|
37
31
|
};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
});
|
|
43
|
-
return params;
|
|
32
|
+
if (formData.city) body.locality = formData.city;
|
|
33
|
+
if (formData.region) body.administrative_area = formData.region;
|
|
34
|
+
if (formData.postalCode) body.postal_code = (0, _validators.normalizePostalCodeValue)(formData.postalCode);
|
|
35
|
+
return body;
|
|
44
36
|
};
|
|
45
37
|
const buildRequestKey = (formData, countryCode, lookupField = 'address1') => JSON.stringify({
|
|
46
38
|
countryCode,
|
|
@@ -103,7 +95,7 @@ const transformSuggestions = (responseData = []) => responseData.map(item => ({
|
|
|
103
95
|
const useIntlAddressValidation = (formData, countryCode, trigger, lookupField = 'address1') => {
|
|
104
96
|
const lookupValue = getLookupAddressLine(formData, lookupField);
|
|
105
97
|
const isEnabled = Boolean(trigger && trigger !== 0 && lookupValue && countryCode);
|
|
106
|
-
const
|
|
98
|
+
const requestBody = buildRequestBody(formData, countryCode, lookupField);
|
|
107
99
|
const requestKey = `smarty-intl-validation:${buildRequestKey(formData, countryCode, lookupField)}`;
|
|
108
100
|
return (0, _useAddressValidationBase.default)({
|
|
109
101
|
isEnabled,
|
|
@@ -112,8 +104,8 @@ const useIntlAddressValidation = (formData, countryCode, trigger, lookupField =
|
|
|
112
104
|
rateLimitNamespace: RATE_LIMIT_NAMESPACE,
|
|
113
105
|
rateLimitConfig: RATE_LIMIT_CONFIG,
|
|
114
106
|
requestKey,
|
|
115
|
-
requestUrl:
|
|
116
|
-
|
|
107
|
+
requestUrl: `${(0, _smartyConfig.getStreetAddressApiUrl)()}/validate/v1/${countryCode}`,
|
|
108
|
+
requestBody,
|
|
117
109
|
transformResponse: transformSuggestions,
|
|
118
110
|
effectDeps: [trigger, lookupField]
|
|
119
111
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIntlAddressValidation.js","names":["_smartyConfig","require","_validators","_useAddressValidationBase","_interopRequireDefault","e","__esModule","default","CACHE_NAMESPACE","CACHE_TTL_MS","RATE_LIMIT_NAMESPACE","RATE_LIMIT_CONFIG","limit","windowMs","cooldownMs","VERIFY_URL","PRECISION_LABELS","DeliveryPoint","Premise","Thoroughfare","Locality","AdministrativeArea","getLookupAddressLine","formData","lookupField","buildValidationParams","countryCode","params","key","SMARTY_INTL_STREET_KEY","country","address1","locality","city","administrative_area","region","postal_code","normalizePostalCodeValue","postalCode","geocode","Object","keys","forEach","buildRequestKey","JSON","stringify","administrativeArea","getPrecisionLabel","precision","buildValidationSummary","item","_item$analysis","_item$analysis2","_item$changes","_item$changes2","verificationStatus","analysis","verification_status","address_precision","subBuildingChange","changes","sub_building","components","hasVerifiedSubBuilding","startsWith","address2","code","title","message","sortPriority","transformSuggestions","responseData","map","displayText","address3","filter","Boolean","join","validationSummary","sort","left","right","useIntlAddressValidation","trigger","lookupValue","isEnabled","requestParams","requestKey","useAddressValidationBase","cacheNamespace","cacheTtlMs","rateLimitNamespace","rateLimitConfig","requestUrl","transformResponse","effectDeps","_default","exports"],"sources":["../../../src/addressLookup/hooks/useIntlAddressValidation.jsx"],"sourcesContent":["import { SMARTY_INTL_STREET_KEY } from '../utils/smartyConfig';\nimport { normalizePostalCodeValue } from '../utils/validators';\nimport useAddressValidationBase from './useAddressValidationBase';\n\nconst CACHE_NAMESPACE = 'smarty-intl-validation';\nconst CACHE_TTL_MS = 60 * 1000;\nconst RATE_LIMIT_NAMESPACE = 'smarty-intl-validation';\nconst RATE_LIMIT_CONFIG = {\n limit: 60,\n windowMs: 60 * 1000,\n cooldownMs: 60 * 1000\n};\nconst VERIFY_URL = 'https://international-street.api.smarty.com/verify';\n\nconst PRECISION_LABELS = {\n DeliveryPoint: 'delivery point',\n Premise: 'premise',\n Thoroughfare: 'street',\n Locality: 'city',\n AdministrativeArea: 'region'\n};\n\nconst getLookupAddressLine = (formData = {}, lookupField = 'address1') => (\n formData?.[lookupField] || ''\n);\n\nconst buildValidationParams = (formData, countryCode, lookupField = 'address1') => {\n const params = {\n key: SMARTY_INTL_STREET_KEY,\n country: countryCode,\n address1: getLookupAddressLine(formData, lookupField),\n locality: formData.city || '',\n administrative_area: formData.region || '',\n postal_code: normalizePostalCodeValue(formData.postalCode || ''),\n geocode: true\n };\n\n Object.keys(params).forEach((key) => {\n if (!params[key]) {\n delete params[key];\n }\n });\n\n return params;\n};\n\nconst buildRequestKey = (formData, countryCode, lookupField = 'address1') => JSON.stringify({\n countryCode,\n address1: getLookupAddressLine(formData, lookupField),\n locality: formData.city || '',\n administrativeArea: formData.region || '',\n postalCode: normalizePostalCodeValue(formData.postalCode || '')\n});\n\nconst getPrecisionLabel = (precision) => PRECISION_LABELS[precision] || 'available level';\n\nconst buildValidationSummary = (item) => {\n const verificationStatus = item.analysis?.verification_status || 'None';\n const precision = item.analysis?.address_precision || 'None';\n const subBuildingChange = item.changes?.sub_building || item.changes?.components?.sub_building;\n const hasVerifiedSubBuilding = subBuildingChange?.startsWith('Verified');\n\n if (verificationStatus === 'Verified') {\n if (item.address2 && subBuildingChange && hasVerifiedSubBuilding) {\n return {\n code: 'verified-sub-building-changed',\n title: 'Verified with unit changes',\n message: 'This address is verified, but the apartment or suite information was changed.',\n sortPriority: 2\n };\n }\n\n return {\n code: 'verified',\n title: 'Verified',\n message: `This address is verified to the ${getPrecisionLabel(precision)} level.`,\n sortPriority: 1\n };\n }\n\n if (verificationStatus === 'Partial') {\n return {\n code: 'partial',\n title: 'Partially verified',\n message: `This address could only be verified to the ${getPrecisionLabel(precision)} level.`,\n sortPriority: 3\n };\n }\n\n if (verificationStatus === 'Ambiguous') {\n return {\n code: 'ambiguous',\n title: 'Multiple matches found',\n message: `Multiple possible matches were found at the ${getPrecisionLabel(precision)} level.`,\n sortPriority: 4\n };\n }\n\n return {\n code: 'not-verified',\n title: 'Not verified',\n message: 'This address could not be verified.',\n sortPriority: 5\n };\n};\n\nconst transformSuggestions = (responseData = []) => responseData\n .map((item) => ({\n ...item,\n displayText: [\n item.address1,\n item.address2,\n item.address3\n ].filter(Boolean).join(', '),\n validationSummary: buildValidationSummary(item)\n }))\n .sort((left, right) => left.validationSummary.sortPriority - right.validationSummary.sortPriority);\n\nconst useIntlAddressValidation = (formData, countryCode, trigger, lookupField = 'address1') => {\n const lookupValue = getLookupAddressLine(formData, lookupField);\n const isEnabled = Boolean(trigger && trigger !== 0 && lookupValue && countryCode);\n const requestParams = buildValidationParams(formData, countryCode, lookupField);\n const requestKey = `smarty-intl-validation:${buildRequestKey(formData, countryCode, lookupField)}`;\n\n return useAddressValidationBase({\n isEnabled,\n cacheNamespace: CACHE_NAMESPACE,\n cacheTtlMs: CACHE_TTL_MS,\n rateLimitNamespace: RATE_LIMIT_NAMESPACE,\n rateLimitConfig: RATE_LIMIT_CONFIG,\n requestKey,\n requestUrl: VERIFY_URL,\n requestParams,\n transformResponse: transformSuggestions,\n effectDeps: [trigger, lookupField]\n });\n};\n\nexport default useIntlAddressValidation;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useIntlAddressValidation.js","names":["_smartyConfig","require","_validators","_useAddressValidationBase","_interopRequireDefault","e","__esModule","default","CACHE_NAMESPACE","CACHE_TTL_MS","RATE_LIMIT_NAMESPACE","RATE_LIMIT_CONFIG","limit","windowMs","cooldownMs","PRECISION_LABELS","DeliveryPoint","Premise","Thoroughfare","Locality","AdministrativeArea","getLookupAddressLine","formData","lookupField","buildRequestBody","countryCode","body","address1","geocode","city","locality","region","administrative_area","postalCode","postal_code","normalizePostalCodeValue","buildRequestKey","JSON","stringify","administrativeArea","getPrecisionLabel","precision","buildValidationSummary","item","_item$analysis","_item$analysis2","_item$changes","_item$changes2","verificationStatus","analysis","verification_status","address_precision","subBuildingChange","changes","sub_building","components","hasVerifiedSubBuilding","startsWith","address2","code","title","message","sortPriority","transformSuggestions","responseData","map","displayText","address3","filter","Boolean","join","validationSummary","sort","left","right","useIntlAddressValidation","trigger","lookupValue","isEnabled","requestBody","requestKey","useAddressValidationBase","cacheNamespace","cacheTtlMs","rateLimitNamespace","rateLimitConfig","requestUrl","getStreetAddressApiUrl","transformResponse","effectDeps","_default","exports"],"sources":["../../../src/addressLookup/hooks/useIntlAddressValidation.jsx"],"sourcesContent":["import { getStreetAddressApiUrl } from '../utils/smartyConfig';\nimport { normalizePostalCodeValue } from '../utils/validators';\nimport useAddressValidationBase from './useAddressValidationBase';\n\nconst CACHE_NAMESPACE = 'smarty-intl-validation';\nconst CACHE_TTL_MS = 60 * 1000;\nconst RATE_LIMIT_NAMESPACE = 'smarty-intl-validation';\nconst RATE_LIMIT_CONFIG = {\n limit: 60,\n windowMs: 60 * 1000,\n cooldownMs: 60 * 1000\n};\n\nconst PRECISION_LABELS = {\n DeliveryPoint: 'delivery point',\n Premise: 'premise',\n Thoroughfare: 'street',\n Locality: 'city',\n AdministrativeArea: 'region'\n};\n\nconst getLookupAddressLine = (formData = {}, lookupField = 'address1') => (\n formData?.[lookupField] || ''\n);\n\nconst buildRequestBody = (formData, countryCode, lookupField = 'address1') => {\n const body = {\n address1: getLookupAddressLine(formData, lookupField),\n geocode: true\n };\n\n if (formData.city) body.locality = formData.city;\n if (formData.region) body.administrative_area = formData.region;\n if (formData.postalCode) body.postal_code = normalizePostalCodeValue(formData.postalCode);\n\n return body;\n};\n\nconst buildRequestKey = (formData, countryCode, lookupField = 'address1') => JSON.stringify({\n countryCode,\n address1: getLookupAddressLine(formData, lookupField),\n locality: formData.city || '',\n administrativeArea: formData.region || '',\n postalCode: normalizePostalCodeValue(formData.postalCode || '')\n});\n\nconst getPrecisionLabel = (precision) => PRECISION_LABELS[precision] || 'available level';\n\nconst buildValidationSummary = (item) => {\n const verificationStatus = item.analysis?.verification_status || 'None';\n const precision = item.analysis?.address_precision || 'None';\n const subBuildingChange = item.changes?.sub_building || item.changes?.components?.sub_building;\n const hasVerifiedSubBuilding = subBuildingChange?.startsWith('Verified');\n\n if (verificationStatus === 'Verified') {\n if (item.address2 && subBuildingChange && hasVerifiedSubBuilding) {\n return { code: 'verified-sub-building-changed', title: 'Verified with unit changes', message: 'This address is verified, but the apartment or suite information was changed.', sortPriority: 2 };\n }\n return { code: 'verified', title: 'Verified', message: `This address is verified to the ${getPrecisionLabel(precision)} level.`, sortPriority: 1 };\n }\n if (verificationStatus === 'Partial') {\n return { code: 'partial', title: 'Partially verified', message: `This address could only be verified to the ${getPrecisionLabel(precision)} level.`, sortPriority: 3 };\n }\n if (verificationStatus === 'Ambiguous') {\n return { code: 'ambiguous', title: 'Multiple matches found', message: `Multiple possible matches were found at the ${getPrecisionLabel(precision)} level.`, sortPriority: 4 };\n }\n\n return { code: 'not-verified', title: 'Not verified', message: 'This address could not be verified.', sortPriority: 5 };\n};\n\nconst transformSuggestions = (responseData = []) => responseData\n .map((item) => ({\n ...item,\n displayText: [item.address1, item.address2, item.address3].filter(Boolean).join(', '),\n validationSummary: buildValidationSummary(item)\n }))\n .sort((left, right) => left.validationSummary.sortPriority - right.validationSummary.sortPriority);\n\nconst useIntlAddressValidation = (formData, countryCode, trigger, lookupField = 'address1') => {\n const lookupValue = getLookupAddressLine(formData, lookupField);\n const isEnabled = Boolean(trigger && trigger !== 0 && lookupValue && countryCode);\n const requestBody = buildRequestBody(formData, countryCode, lookupField);\n const requestKey = `smarty-intl-validation:${buildRequestKey(formData, countryCode, lookupField)}`;\n\n return useAddressValidationBase({\n isEnabled,\n cacheNamespace: CACHE_NAMESPACE,\n cacheTtlMs: CACHE_TTL_MS,\n rateLimitNamespace: RATE_LIMIT_NAMESPACE,\n rateLimitConfig: RATE_LIMIT_CONFIG,\n requestKey,\n requestUrl: `${getStreetAddressApiUrl()}/validate/v1/${countryCode}`,\n requestBody,\n transformResponse: transformSuggestions,\n effectDeps: [trigger, lookupField]\n });\n};\n\nexport default useIntlAddressValidation;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _countries = require("../countries");
|
|
7
|
+
var _countries = require("../config/address/countries");
|
|
8
8
|
var _intlAutocompleteBusinessRules = require("../utils/intlAutocompleteBusinessRules");
|
|
9
9
|
var _smartyConfig = require("../utils/smartyConfig");
|
|
10
10
|
var _useSmartyLookupBase = _interopRequireDefault(require("./useSmartyLookupBase"));
|
|
@@ -18,18 +18,25 @@ const RATE_LIMIT_CONFIG = {
|
|
|
18
18
|
windowMs: 60 * 1000,
|
|
19
19
|
cooldownMs: 30 * 1000
|
|
20
20
|
};
|
|
21
|
-
const LOOKUP_URL = 'https://international-autocomplete.api.smarty.com/v2/lookup';
|
|
22
21
|
const buildCacheKey = (trimmedQuery, countryCode, selectedAddressId) => JSON.stringify({
|
|
23
22
|
query: trimmedQuery,
|
|
24
23
|
countryCode,
|
|
25
24
|
selectedAddressId: selectedAddressId || null
|
|
26
25
|
});
|
|
27
|
-
const
|
|
26
|
+
const buildRequestBody = (trimmedQuery, countryCode, selectedAddressId) => {
|
|
28
27
|
const iso3 = _countries.COUNTRY_MAP[countryCode].iso3;
|
|
29
28
|
if (selectedAddressId) {
|
|
30
|
-
return
|
|
29
|
+
return {
|
|
30
|
+
address_id: selectedAddressId,
|
|
31
|
+
iso3,
|
|
32
|
+
max_results: 10
|
|
33
|
+
};
|
|
31
34
|
}
|
|
32
|
-
return
|
|
35
|
+
return {
|
|
36
|
+
search: trimmedQuery,
|
|
37
|
+
iso3,
|
|
38
|
+
max_results: 10
|
|
39
|
+
};
|
|
33
40
|
};
|
|
34
41
|
const transformSuggestions = (candidates = []) => candidates.map(result => {
|
|
35
42
|
if (result.street) {
|
|
@@ -53,7 +60,8 @@ const useSmartyInternationalLookup = (query, countryCode = '', selectedAddressId
|
|
|
53
60
|
const trimmedQuery = query.trim();
|
|
54
61
|
const isEnabled = Boolean((trimmedQuery && trimmedQuery.length >= MIN_QUERY_LENGTH || selectedAddressId) && countryCode && _countries.COUNTRY_MAP[countryCode]);
|
|
55
62
|
const cacheKey = buildCacheKey(trimmedQuery, countryCode, selectedAddressId);
|
|
56
|
-
const requestUrl =
|
|
63
|
+
const requestUrl = `${(0, _smartyConfig.getStreetAddressApiUrl)()}/autocomplete/v1/${countryCode}`;
|
|
64
|
+
const requestBody = isEnabled ? buildRequestBody(trimmedQuery, countryCode, selectedAddressId) : null;
|
|
57
65
|
return (0, _useSmartyLookupBase.default)({
|
|
58
66
|
isEnabled,
|
|
59
67
|
debounceMs,
|
|
@@ -63,9 +71,10 @@ const useSmartyInternationalLookup = (query, countryCode = '', selectedAddressId
|
|
|
63
71
|
rateLimitConfig: RATE_LIMIT_CONFIG,
|
|
64
72
|
cacheKey,
|
|
65
73
|
requestUrl,
|
|
74
|
+
requestBody,
|
|
66
75
|
transformResponse: responseData => (0, _intlAutocompleteBusinessRules.applyIntlAutocompleteBusinessRules)(countryCode, transformSuggestions(responseData.candidates || [])),
|
|
67
76
|
onError: err => {
|
|
68
|
-
console.error('
|
|
77
|
+
console.error('International autocomplete lookup failed:', err);
|
|
69
78
|
},
|
|
70
79
|
effectDeps: [query, countryCode, selectedAddressId]
|
|
71
80
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSmartyInternationalLookup.js","names":["_countries","require","_intlAutocompleteBusinessRules","_smartyConfig","_useSmartyLookupBase","_interopRequireDefault","e","__esModule","default","MIN_QUERY_LENGTH","CACHE_NAMESPACE","CACHE_TTL_MS","RATE_LIMIT_NAMESPACE","RATE_LIMIT_CONFIG","limit","windowMs","cooldownMs","
|
|
1
|
+
{"version":3,"file":"useSmartyInternationalLookup.js","names":["_countries","require","_intlAutocompleteBusinessRules","_smartyConfig","_useSmartyLookupBase","_interopRequireDefault","e","__esModule","default","MIN_QUERY_LENGTH","CACHE_NAMESPACE","CACHE_TTL_MS","RATE_LIMIT_NAMESPACE","RATE_LIMIT_CONFIG","limit","windowMs","cooldownMs","buildCacheKey","trimmedQuery","countryCode","selectedAddressId","JSON","stringify","query","buildRequestBody","iso3","COUNTRY_MAP","address_id","max_results","search","transformSuggestions","candidates","map","result","street","displayText","locality","administrative_area","postal_code","isDetailed","address_text","entries","useSmartyInternationalLookup","debounceMs","trim","isEnabled","Boolean","length","cacheKey","requestUrl","getStreetAddressApiUrl","requestBody","useSmartyLookupBase","cacheNamespace","cacheTtlMs","rateLimitNamespace","rateLimitConfig","transformResponse","responseData","applyIntlAutocompleteBusinessRules","onError","err","console","error","effectDeps","_default","exports"],"sources":["../../../src/addressLookup/hooks/useSmartyInternationalLookup.jsx"],"sourcesContent":["import { COUNTRY_MAP } from '../config/address/countries';\nimport { applyIntlAutocompleteBusinessRules } from '../utils/intlAutocompleteBusinessRules';\nimport { getStreetAddressApiUrl } from '../utils/smartyConfig';\nimport useSmartyLookupBase from './useSmartyLookupBase';\n\nconst MIN_QUERY_LENGTH = 3;\nconst CACHE_NAMESPACE = 'smarty-intl-autocomplete';\nconst CACHE_TTL_MS = 60 * 1000;\nconst RATE_LIMIT_NAMESPACE = 'smarty-intl-autocomplete';\nconst RATE_LIMIT_CONFIG = {\n limit: 60,\n windowMs: 60 * 1000,\n cooldownMs: 30 * 1000\n};\n\nconst buildCacheKey = (trimmedQuery, countryCode, selectedAddressId) => JSON.stringify({\n query: trimmedQuery,\n countryCode,\n selectedAddressId: selectedAddressId || null\n});\n\nconst buildRequestBody = (trimmedQuery, countryCode, selectedAddressId) => {\n const iso3 = COUNTRY_MAP[countryCode].iso3;\n\n if (selectedAddressId) {\n return { address_id: selectedAddressId, iso3, max_results: 10 };\n }\n\n return { search: trimmedQuery, iso3, max_results: 10 };\n};\n\nconst transformSuggestions = (candidates = []) => candidates.map((result) => {\n if (result.street) {\n return {\n ...result,\n displayText: `${result.street}, ${result.locality}, ${result.administrative_area} ${result.postal_code}`,\n isDetailed: true\n };\n }\n\n let displayText = result.address_text;\n if (result.entries > 1) {\n displayText += ` (${result.entries})`;\n }\n\n return {\n ...result,\n displayText,\n isDetailed: false\n };\n});\n\nconst useSmartyInternationalLookup = (\n query,\n countryCode = '',\n selectedAddressId = null,\n debounceMs = 300\n) => {\n const trimmedQuery = query.trim();\n const isEnabled = Boolean(\n (((trimmedQuery && trimmedQuery.length >= MIN_QUERY_LENGTH) || selectedAddressId)) &&\n countryCode &&\n COUNTRY_MAP[countryCode]\n );\n const cacheKey = buildCacheKey(trimmedQuery, countryCode, selectedAddressId);\n const requestUrl = `${getStreetAddressApiUrl()}/autocomplete/v1/${countryCode}`;\n const requestBody = isEnabled ? buildRequestBody(trimmedQuery, countryCode, selectedAddressId) : null;\n\n return useSmartyLookupBase({\n isEnabled,\n debounceMs,\n cacheNamespace: CACHE_NAMESPACE,\n cacheTtlMs: CACHE_TTL_MS,\n rateLimitNamespace: RATE_LIMIT_NAMESPACE,\n rateLimitConfig: RATE_LIMIT_CONFIG,\n cacheKey,\n requestUrl,\n requestBody,\n transformResponse: (responseData) => (\n applyIntlAutocompleteBusinessRules(\n countryCode,\n transformSuggestions(responseData.candidates || [])\n )\n ),\n onError: (err) => {\n console.error('International autocomplete lookup failed:', err);\n },\n effectDeps: [query, countryCode, selectedAddressId]\n });\n};\n\nexport default useSmartyInternationalLookup;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -22,6 +22,7 @@ const useSmartyLookupBase = ({
|
|
|
22
22
|
rateLimitConfig,
|
|
23
23
|
cacheKey,
|
|
24
24
|
requestUrl,
|
|
25
|
+
requestBody,
|
|
25
26
|
transformResponse,
|
|
26
27
|
onError = null,
|
|
27
28
|
effectDeps = []
|
|
@@ -85,7 +86,7 @@ const useSmartyLookupBase = ({
|
|
|
85
86
|
settled: false,
|
|
86
87
|
promise: (async () => {
|
|
87
88
|
const startTime = performance.now();
|
|
88
|
-
const networkResponse = await _axios.default.
|
|
89
|
+
const networkResponse = await _axios.default.post(requestUrl, requestBody, {
|
|
89
90
|
signal: controller.signal
|
|
90
91
|
});
|
|
91
92
|
const endTime = performance.now();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSmartyLookupBase.js","names":["_react","require","_axios","_interopRequireDefault","_requestCache","_requestRateLimiter","_inFlightRequests","e","__esModule","default","RATE_LIMIT_ERROR_CODE","useSmartyLookupBase","isEnabled","debounceMs","cacheNamespace","cacheTtlMs","rateLimitNamespace","rateLimitConfig","cacheKey","requestUrl","transformResponse","onError","effectDeps","suggestions","setSuggestions","useState","loading","setLoading","error","setError","rateLimited","setRateLimited","responseTime","setResponseTime","useEffect","cancelled","activeRequest","activeRequestKey","timer","setTimeout","cached","getCachedValue","rateLimitStatus","checkRateLimit","allowed","existingRequest","getInFlightRequest","response","elapsedTime","retainInFlightRequest","promise","controller","AbortController","request","settled","startTime","performance","now","networkResponse","axios","get","signal","endTime","Math","round","setInFlightRequest","settleInFlightRequest","formattedSuggestions","data","setCachedValue","err","name","code","message","_activeRequest","_activeRequest2","clearTimeout","releaseInFlightRequest","subscribers","abort","_default","exports"],"sources":["../../../src/addressLookup/hooks/useSmartyLookupBase.jsx"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport { getCachedValue, setCachedValue } from '../utils/requestCache';\nimport { checkRateLimit } from '../utils/requestRateLimiter';\nimport {\n getInFlightRequest,\n setInFlightRequest,\n retainInFlightRequest,\n releaseInFlightRequest,\n settleInFlightRequest\n} from '../utils/inFlightRequests';\n\n// Not rendered directly: useSmartyServiceErrors resolves the displayed text\n// from fieldLabels.rateLimited. This is only a truthy signal for `error`.\nconst RATE_LIMIT_ERROR_CODE = 'rate-limited';\n\nconst useSmartyLookupBase = ({\n isEnabled,\n debounceMs,\n cacheNamespace,\n cacheTtlMs,\n rateLimitNamespace,\n rateLimitConfig,\n cacheKey,\n requestUrl,\n transformResponse,\n onError = null,\n effectDeps = []\n}) => {\n const [suggestions, setSuggestions] = useState([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n const [rateLimited, setRateLimited] = useState(false);\n const [responseTime, setResponseTime] = useState(null);\n\n useEffect(() => {\n if (!isEnabled) {\n setSuggestions([]);\n setLoading(false);\n setError(null);\n setRateLimited(false);\n setResponseTime(null);\n return;\n }\n\n setLoading(true);\n setError(null);\n let cancelled = false;\n let activeRequest = null;\n let activeRequestKey = null;\n\n const timer = setTimeout(async () => {\n try {\n const cached = getCachedValue(cacheNamespace, cacheKey);\n if (cached) {\n if (!cancelled) {\n setSuggestions(cached.suggestions);\n setResponseTime(cached.responseTime);\n setRateLimited(false);\n setLoading(false);\n }\n return;\n }\n\n const rateLimitStatus = checkRateLimit(rateLimitNamespace, rateLimitConfig);\n if (!rateLimitStatus.allowed) {\n if (!cancelled) {\n setSuggestions([]);\n setResponseTime(null);\n setRateLimited(true);\n setError(RATE_LIMIT_ERROR_CODE);\n setLoading(false);\n }\n return;\n }\n\n activeRequestKey = cacheKey;\n const existingRequest = getInFlightRequest(activeRequestKey);\n let response;\n let elapsedTime;\n\n if (existingRequest) {\n activeRequest = retainInFlightRequest(activeRequestKey);\n ({ response, elapsedTime } = await activeRequest.promise);\n } else {\n const controller = new AbortController();\n const request = {\n controller,\n settled: false,\n promise: (async () => {\n const startTime = performance.now();\n const networkResponse = await axios.get(requestUrl, { signal: controller.signal });\n const endTime = performance.now();\n return {\n response: networkResponse,\n elapsedTime: Math.round(endTime - startTime)\n };\n })()\n };\n setInFlightRequest(activeRequestKey, request);\n activeRequest = retainInFlightRequest(activeRequestKey);\n try {\n ({ response, elapsedTime } = await activeRequest.promise);\n } finally {\n settleInFlightRequest(activeRequestKey, activeRequest);\n }\n }\n\n if (cancelled) {\n return;\n }\n\n const formattedSuggestions = transformResponse(response.data);\n setResponseTime(elapsedTime);\n setCachedValue(cacheNamespace, cacheKey, {\n suggestions: formattedSuggestions,\n responseTime: elapsedTime\n }, cacheTtlMs);\n setRateLimited(false);\n setSuggestions(formattedSuggestions);\n } catch (err) {\n if (cancelled || err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n return;\n }\n onError?.(err);\n setRateLimited(false);\n setError(err.message);\n setSuggestions([]);\n setResponseTime(null);\n } finally {\n setLoading(false);\n }\n }, debounceMs);\n\n return () => {\n cancelled = true;\n clearTimeout(timer);\n if (activeRequestKey && activeRequest) {\n releaseInFlightRequest(activeRequestKey, activeRequest);\n }\n if (activeRequest?.subscribers === 0 && !activeRequest?.settled) {\n activeRequest.controller.abort();\n }\n };\n }, [isEnabled, debounceMs, ...effectDeps]);\n\n return {\n suggestions,\n loading,\n error,\n rateLimited,\n responseTime\n };\n};\n\nexport default useSmartyLookupBase;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useSmartyLookupBase.js","names":["_react","require","_axios","_interopRequireDefault","_requestCache","_requestRateLimiter","_inFlightRequests","e","__esModule","default","RATE_LIMIT_ERROR_CODE","useSmartyLookupBase","isEnabled","debounceMs","cacheNamespace","cacheTtlMs","rateLimitNamespace","rateLimitConfig","cacheKey","requestUrl","requestBody","transformResponse","onError","effectDeps","suggestions","setSuggestions","useState","loading","setLoading","error","setError","rateLimited","setRateLimited","responseTime","setResponseTime","useEffect","cancelled","activeRequest","activeRequestKey","timer","setTimeout","cached","getCachedValue","rateLimitStatus","checkRateLimit","allowed","existingRequest","getInFlightRequest","response","elapsedTime","retainInFlightRequest","promise","controller","AbortController","request","settled","startTime","performance","now","networkResponse","axios","post","signal","endTime","Math","round","setInFlightRequest","settleInFlightRequest","formattedSuggestions","data","setCachedValue","err","name","code","message","_activeRequest","_activeRequest2","clearTimeout","releaseInFlightRequest","subscribers","abort","_default","exports"],"sources":["../../../src/addressLookup/hooks/useSmartyLookupBase.jsx"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport { getCachedValue, setCachedValue } from '../utils/requestCache';\nimport { checkRateLimit } from '../utils/requestRateLimiter';\nimport {\n getInFlightRequest,\n setInFlightRequest,\n retainInFlightRequest,\n releaseInFlightRequest,\n settleInFlightRequest\n} from '../utils/inFlightRequests';\n\n// Not rendered directly: useSmartyServiceErrors resolves the displayed text\n// from fieldLabels.rateLimited. This is only a truthy signal for `error`.\nconst RATE_LIMIT_ERROR_CODE = 'rate-limited';\n\nconst useSmartyLookupBase = ({\n isEnabled,\n debounceMs,\n cacheNamespace,\n cacheTtlMs,\n rateLimitNamespace,\n rateLimitConfig,\n cacheKey,\n requestUrl,\n requestBody,\n transformResponse,\n onError = null,\n effectDeps = []\n}) => {\n const [suggestions, setSuggestions] = useState([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n const [rateLimited, setRateLimited] = useState(false);\n const [responseTime, setResponseTime] = useState(null);\n\n useEffect(() => {\n if (!isEnabled) {\n setSuggestions([]);\n setLoading(false);\n setError(null);\n setRateLimited(false);\n setResponseTime(null);\n return;\n }\n\n setLoading(true);\n setError(null);\n let cancelled = false;\n let activeRequest = null;\n let activeRequestKey = null;\n\n const timer = setTimeout(async () => {\n try {\n const cached = getCachedValue(cacheNamespace, cacheKey);\n if (cached) {\n if (!cancelled) {\n setSuggestions(cached.suggestions);\n setResponseTime(cached.responseTime);\n setRateLimited(false);\n setLoading(false);\n }\n return;\n }\n\n const rateLimitStatus = checkRateLimit(rateLimitNamespace, rateLimitConfig);\n if (!rateLimitStatus.allowed) {\n if (!cancelled) {\n setSuggestions([]);\n setResponseTime(null);\n setRateLimited(true);\n setError(RATE_LIMIT_ERROR_CODE);\n setLoading(false);\n }\n return;\n }\n\n activeRequestKey = cacheKey;\n const existingRequest = getInFlightRequest(activeRequestKey);\n let response;\n let elapsedTime;\n\n if (existingRequest) {\n activeRequest = retainInFlightRequest(activeRequestKey);\n ({ response, elapsedTime } = await activeRequest.promise);\n } else {\n const controller = new AbortController();\n const request = {\n controller,\n settled: false,\n promise: (async () => {\n const startTime = performance.now();\n const networkResponse = await axios.post(requestUrl, requestBody, { signal: controller.signal });\n const endTime = performance.now();\n return {\n response: networkResponse,\n elapsedTime: Math.round(endTime - startTime)\n };\n })()\n };\n setInFlightRequest(activeRequestKey, request);\n activeRequest = retainInFlightRequest(activeRequestKey);\n try {\n ({ response, elapsedTime } = await activeRequest.promise);\n } finally {\n settleInFlightRequest(activeRequestKey, activeRequest);\n }\n }\n\n if (cancelled) {\n return;\n }\n\n const formattedSuggestions = transformResponse(response.data);\n setResponseTime(elapsedTime);\n setCachedValue(cacheNamespace, cacheKey, {\n suggestions: formattedSuggestions,\n responseTime: elapsedTime\n }, cacheTtlMs);\n setRateLimited(false);\n setSuggestions(formattedSuggestions);\n } catch (err) {\n if (cancelled || err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n return;\n }\n onError?.(err);\n setRateLimited(false);\n setError(err.message);\n setSuggestions([]);\n setResponseTime(null);\n } finally {\n setLoading(false);\n }\n }, debounceMs);\n\n return () => {\n cancelled = true;\n clearTimeout(timer);\n if (activeRequestKey && activeRequest) {\n releaseInFlightRequest(activeRequestKey, activeRequest);\n }\n if (activeRequest?.subscribers === 0 && !activeRequest?.settled) {\n activeRequest.controller.abort();\n }\n };\n }, [isEnabled, debounceMs, ...effectDeps]);\n\n return {\n suggestions,\n loading,\n error,\n rateLimited,\n responseTime\n };\n};\n\nexport default useSmartyLookupBase;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -27,13 +27,14 @@ const buildCacheKey = (trimmedQuery, selectedAddress) => JSON.stringify({
|
|
|
27
27
|
postalCode: selectedAddress.zipcode
|
|
28
28
|
} : null
|
|
29
29
|
});
|
|
30
|
-
const
|
|
31
|
-
|
|
30
|
+
const buildRequestBody = (trimmedQuery, selectedAddress) => {
|
|
31
|
+
const body = {
|
|
32
|
+
search: trimmedQuery
|
|
33
|
+
};
|
|
32
34
|
if (selectedAddress) {
|
|
33
|
-
|
|
34
|
-
smartyUrl += `&selected=${encodeURIComponent(selectedParam)}`;
|
|
35
|
+
body.selected = `${selectedAddress.street_line} ` + `${selectedAddress.secondary} (${selectedAddress.entries}) ` + `${selectedAddress.city} ${selectedAddress.state} ${selectedAddress.zipcode}`;
|
|
35
36
|
}
|
|
36
|
-
return
|
|
37
|
+
return body;
|
|
37
38
|
};
|
|
38
39
|
const transformSuggestions = (responseData = {}) => {
|
|
39
40
|
const results = responseData.suggestions || [];
|
|
@@ -57,7 +58,8 @@ const useSmartyUSLookup = (query, selectedAddress = null, debounceMs = 300) => {
|
|
|
57
58
|
const trimmedQuery = query.trim();
|
|
58
59
|
const isEnabled = Boolean(trimmedQuery && (selectedAddress || trimmedQuery.length >= MIN_QUERY_LENGTH));
|
|
59
60
|
const cacheKey = buildCacheKey(trimmedQuery, selectedAddress);
|
|
60
|
-
const requestUrl =
|
|
61
|
+
const requestUrl = `${(0, _smartyConfig.getStreetAddressApiUrl)()}/autocomplete/v1/US`;
|
|
62
|
+
const requestBody = isEnabled ? buildRequestBody(trimmedQuery, selectedAddress) : null;
|
|
61
63
|
return (0, _useSmartyLookupBase.default)({
|
|
62
64
|
isEnabled,
|
|
63
65
|
debounceMs,
|
|
@@ -67,9 +69,10 @@ const useSmartyUSLookup = (query, selectedAddress = null, debounceMs = 300) => {
|
|
|
67
69
|
rateLimitConfig: RATE_LIMIT_CONFIG,
|
|
68
70
|
cacheKey,
|
|
69
71
|
requestUrl,
|
|
72
|
+
requestBody,
|
|
70
73
|
transformResponse: transformSuggestions,
|
|
71
74
|
onError: err => {
|
|
72
|
-
console.error('
|
|
75
|
+
console.error('US autocomplete lookup failed:', err);
|
|
73
76
|
},
|
|
74
77
|
effectDeps: [query, selectedAddress]
|
|
75
78
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSmartyUSLookup.js","names":["_smartyConfig","require","_useSmartyLookupBase","_interopRequireDefault","e","__esModule","default","MIN_QUERY_LENGTH","CACHE_NAMESPACE","CACHE_TTL_MS","RATE_LIMIT_NAMESPACE","RATE_LIMIT_CONFIG","limit","windowMs","cooldownMs","buildCacheKey","trimmedQuery","selectedAddress","JSON","stringify","query","selected","streetLine","street_line","secondary","entries","city","region","state","postalCode","zipcode","
|
|
1
|
+
{"version":3,"file":"useSmartyUSLookup.js","names":["_smartyConfig","require","_useSmartyLookupBase","_interopRequireDefault","e","__esModule","default","MIN_QUERY_LENGTH","CACHE_NAMESPACE","CACHE_TTL_MS","RATE_LIMIT_NAMESPACE","RATE_LIMIT_CONFIG","limit","windowMs","cooldownMs","buildCacheKey","trimmedQuery","selectedAddress","JSON","stringify","query","selected","streetLine","street_line","secondary","entries","city","region","state","postalCode","zipcode","buildRequestBody","body","search","transformSuggestions","responseData","results","suggestions","map","result","whiteSpace","displayText","useSmartyUSLookup","debounceMs","trim","isEnabled","Boolean","length","cacheKey","requestUrl","getStreetAddressApiUrl","requestBody","useSmartyLookupBase","cacheNamespace","cacheTtlMs","rateLimitNamespace","rateLimitConfig","transformResponse","onError","err","console","error","effectDeps","_default","exports"],"sources":["../../../src/addressLookup/hooks/useSmartyUSLookup.jsx"],"sourcesContent":["import { getStreetAddressApiUrl } from '../utils/smartyConfig';\nimport useSmartyLookupBase from './useSmartyLookupBase';\n\nconst MIN_QUERY_LENGTH = 3;\nconst CACHE_NAMESPACE = 'smarty-us-autocomplete';\nconst CACHE_TTL_MS = 60 * 1000;\nconst RATE_LIMIT_NAMESPACE = 'smarty-us-autocomplete';\nconst RATE_LIMIT_CONFIG = {\n limit: 60,\n windowMs: 60 * 1000,\n cooldownMs: 30 * 1000\n};\n\nconst buildCacheKey = (trimmedQuery, selectedAddress) => JSON.stringify({\n query: trimmedQuery,\n selected: selectedAddress ? {\n streetLine: selectedAddress.street_line,\n secondary: selectedAddress.secondary,\n entries: selectedAddress.entries,\n city: selectedAddress.city,\n region: selectedAddress.state,\n postalCode: selectedAddress.zipcode\n } : null\n});\n\nconst buildRequestBody = (trimmedQuery, selectedAddress) => {\n const body = { search: trimmedQuery };\n\n if (selectedAddress) {\n body.selected = `${selectedAddress.street_line} ` +\n `${selectedAddress.secondary} (${selectedAddress.entries}) ` +\n `${selectedAddress.city} ${selectedAddress.state} ${selectedAddress.zipcode}`;\n }\n\n return body;\n};\n\nconst transformSuggestions = (responseData = {}) => {\n const results = responseData.suggestions || [];\n\n return results.map((result) => {\n let whiteSpace = '';\n let secondary = result.secondary || '';\n\n if (secondary) {\n if (result.entries > 1) {\n secondary += ` (${result.entries} entries)`;\n }\n whiteSpace = ' ';\n }\n\n const displayText = `${result.street_line}${whiteSpace}${secondary} ${result.city}, ${result.state} ${result.zipcode}`;\n\n return {\n ...result,\n displayText\n };\n });\n};\n\nconst useSmartyUSLookup = (query, selectedAddress = null, debounceMs = 300) => {\n const trimmedQuery = query.trim();\n const isEnabled = Boolean(trimmedQuery && (selectedAddress || trimmedQuery.length >= MIN_QUERY_LENGTH));\n const cacheKey = buildCacheKey(trimmedQuery, selectedAddress);\n const requestUrl = `${getStreetAddressApiUrl()}/autocomplete/v1/US`;\n const requestBody = isEnabled ? buildRequestBody(trimmedQuery, selectedAddress) : null;\n\n return useSmartyLookupBase({\n isEnabled,\n debounceMs,\n cacheNamespace: CACHE_NAMESPACE,\n cacheTtlMs: CACHE_TTL_MS,\n rateLimitNamespace: RATE_LIMIT_NAMESPACE,\n rateLimitConfig: RATE_LIMIT_CONFIG,\n cacheKey,\n requestUrl,\n requestBody,\n transformResponse: transformSuggestions,\n onError: (err) => {\n console.error('US autocomplete lookup failed:', err);\n },\n effectDeps: [query, selectedAddress]\n });\n};\n\nexport default useSmartyUSLookup;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -17,7 +17,6 @@ const RATE_LIMIT_CONFIG = {
|
|
|
17
17
|
windowMs: 60 * 1000,
|
|
18
18
|
cooldownMs: 60 * 1000
|
|
19
19
|
};
|
|
20
|
-
const VALIDATION_URL = 'https://us-street.api.smarty.com/street-address';
|
|
21
20
|
const parseDpvFootnotes = (footnotes = '') => {
|
|
22
21
|
const normalized = String(footnotes || '');
|
|
23
22
|
const result = new Set();
|
|
@@ -108,22 +107,16 @@ const buildValidationSummary = item => {
|
|
|
108
107
|
sortPriority: 7
|
|
109
108
|
};
|
|
110
109
|
};
|
|
111
|
-
const
|
|
112
|
-
const
|
|
113
|
-
key: _smartyConfig.SMARTY_US_STREET_KEY,
|
|
110
|
+
const buildRequestBody = formData => {
|
|
111
|
+
const body = {
|
|
114
112
|
street: formData.address1 || '',
|
|
115
|
-
secondary: formData.address2 || '',
|
|
116
|
-
city: formData.city || '',
|
|
117
|
-
state: formData.region || '',
|
|
118
|
-
zipcode: (0, _validators.normalizePostalCodeValue)(formData.postalCode || ''),
|
|
119
113
|
candidates: 10
|
|
120
114
|
};
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
return params;
|
|
115
|
+
if (formData.address2) body.secondary = formData.address2;
|
|
116
|
+
if (formData.city) body.city = formData.city;
|
|
117
|
+
if (formData.region) body.state = formData.region;
|
|
118
|
+
if (formData.postalCode) body.zipcode = (0, _validators.normalizePostalCodeValue)(formData.postalCode);
|
|
119
|
+
return body;
|
|
127
120
|
};
|
|
128
121
|
const buildRequestKey = formData => JSON.stringify({
|
|
129
122
|
street: formData.address1 || '',
|
|
@@ -147,7 +140,7 @@ const transformSuggestions = (responseData = []) => responseData.map(item => {
|
|
|
147
140
|
}).sort((left, right) => left.validationSummary.sortPriority - right.validationSummary.sortPriority);
|
|
148
141
|
const useUSAddressValidation = (formData, trigger) => {
|
|
149
142
|
const isEnabled = Boolean(trigger && trigger !== 0 && (formData === null || formData === void 0 ? void 0 : formData.address1));
|
|
150
|
-
const
|
|
143
|
+
const requestBody = buildRequestBody(formData);
|
|
151
144
|
const requestKey = `smarty-us-validation:${buildRequestKey(formData)}`;
|
|
152
145
|
return (0, _useAddressValidationBase.default)({
|
|
153
146
|
isEnabled,
|
|
@@ -156,8 +149,8 @@ const useUSAddressValidation = (formData, trigger) => {
|
|
|
156
149
|
rateLimitNamespace: RATE_LIMIT_NAMESPACE,
|
|
157
150
|
rateLimitConfig: RATE_LIMIT_CONFIG,
|
|
158
151
|
requestKey,
|
|
159
|
-
requestUrl:
|
|
160
|
-
|
|
152
|
+
requestUrl: `${(0, _smartyConfig.getStreetAddressApiUrl)()}/validate/v1/US`,
|
|
153
|
+
requestBody,
|
|
161
154
|
transformResponse: transformSuggestions,
|
|
162
155
|
effectDeps: [trigger]
|
|
163
156
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUSAddressValidation.js","names":["_smartyConfig","require","_validators","_useAddressValidationBase","_interopRequireDefault","e","__esModule","default","VALID_DPV_CODES","Set","CACHE_NAMESPACE","CACHE_TTL_MS","RATE_LIMIT_NAMESPACE","RATE_LIMIT_CONFIG","limit","windowMs","cooldownMs","VALIDATION_URL","parseDpvFootnotes","footnotes","normalized","String","result","index","length","code","slice","add","trimZipPlus4","value","replace","buildDisplayText","item","_item$components","_item$components2","_item$components3","line1","delivery_line_1","line2","delivery_line_2","city","components","city_name","region","state_abbreviation","postalCode","zipcode","lastLine","filter","Boolean","join","last_line","buildValidationSummary","analysis","dpvMatchCode","dpv_match_code","dpv_footnotes","isVacant","dpv_vacant","isNoStat","dpv_no_stat","level","title","message","sortPriority","has","buildValidationParams","formData","params","key","SMARTY_US_STREET_KEY","street","address1","secondary","address2","state","normalizePostalCodeValue","candidates","Object","keys","forEach","undefined","buildRequestKey","JSON","stringify","transformSuggestions","responseData","map","_item$analysis","_item$metadata","_item$metadata2","isDeliverable","latitude","metadata","longitude","displayText","validationSummary","sort","left","right","useUSAddressValidation","trigger","isEnabled","requestParams","requestKey","useAddressValidationBase","cacheNamespace","cacheTtlMs","rateLimitNamespace","rateLimitConfig","requestUrl","transformResponse","effectDeps","_default","exports"],"sources":["../../../src/addressLookup/hooks/useUSAddressValidation.jsx"],"sourcesContent":["import { SMARTY_US_STREET_KEY } from '../utils/smartyConfig';\nimport { normalizePostalCodeValue } from '../utils/validators';\nimport useAddressValidationBase from './useAddressValidationBase';\n\nconst VALID_DPV_CODES = new Set(['Y', 'S', 'D']);\nconst CACHE_NAMESPACE = 'smarty-us-validation';\nconst CACHE_TTL_MS = 60 * 1000;\nconst RATE_LIMIT_NAMESPACE = 'smarty-us-validation';\nconst RATE_LIMIT_CONFIG = {\n limit: 60,\n windowMs: 60 * 1000,\n cooldownMs: 60 * 1000\n};\nconst VALIDATION_URL = 'https://us-street.api.smarty.com/street-address';\n\nconst parseDpvFootnotes = (footnotes = '') => {\n const normalized = String(footnotes || '');\n const result = new Set();\n\n for (let index = 0; index < normalized.length; index += 2) {\n const code = normalized.slice(index, index + 2);\n if (code.length === 2) {\n result.add(code);\n }\n }\n\n return result;\n};\n\nconst trimZipPlus4 = (value = '') => String(value).replace(/(\\b\\d{5})-\\d{4}\\b/g, '$1');\n\nconst buildDisplayText = (item) => {\n const line1 = item.delivery_line_1;\n const line2 = item.delivery_line_2;\n const city = item.components?.city_name;\n const region = item.components?.state_abbreviation;\n const postalCode = item.components?.zipcode;\n\n const lastLine = city && region ?\n [city, region, postalCode].filter(Boolean).join(' ') :\n trimZipPlus4(item.last_line || '');\n\n return [\n line1,\n line2,\n lastLine\n ].filter(Boolean).join(', ');\n};\n\nconst buildValidationSummary = (item) => {\n const analysis = item.analysis || {};\n const dpvMatchCode = analysis.dpv_match_code || '';\n const footnotes = parseDpvFootnotes(analysis.dpv_footnotes);\n const isVacant = analysis.dpv_vacant === 'Y';\n const isNoStat = analysis.dpv_no_stat === 'Y';\n\n if (dpvMatchCode === 'Y' && !isVacant && !isNoStat) {\n return {\n level: 'verified',\n code: 'verified',\n title: 'Verified',\n message: 'This address is fully verified.',\n sortPriority: 1\n };\n }\n\n if (dpvMatchCode === 'S' && footnotes.has('CC')) {\n return {\n level: 'warning',\n code: 'invalid-secondary-optional',\n title: 'Unit not recognized',\n message: 'The main address is valid, but the unit number was not recognized.',\n sortPriority: 2\n };\n }\n\n if (dpvMatchCode === 'D' || footnotes.has('N1')) {\n return {\n level: 'warning',\n code: 'missing-secondary',\n title: 'Apartment or suite needed',\n message: 'The main address is valid, but a unit number is required.',\n sortPriority: 3\n };\n }\n\n if (dpvMatchCode === 'S' && footnotes.has('C1')) {\n return {\n level: 'warning',\n code: 'invalid-secondary-required',\n title: 'Apartment or suite not recognized',\n message: 'The street address is valid, but the unit number was not recognized and is required.',\n sortPriority: 4\n };\n }\n\n if ((dpvMatchCode === 'Y' || dpvMatchCode === 'S' || dpvMatchCode === 'D') && isVacant) {\n return {\n level: 'warning',\n code: 'vacant',\n title: 'Verified, but marked vacant',\n message: 'This address is valid but marked as vacant.',\n sortPriority: 5\n };\n }\n\n if ((dpvMatchCode === 'Y' || dpvMatchCode === 'S' || dpvMatchCode === 'D') && isNoStat) {\n return {\n level: 'warning',\n code: 'no-stat',\n title: 'Verified with caution',\n message: 'This address is valid, but USPS indicates limited delivery status.',\n sortPriority: 6\n };\n }\n\n return {\n level: 'invalid',\n code: 'not-confirmed',\n title: 'Not verified',\n message: 'This address could not be confirmed.',\n sortPriority: 7\n };\n};\n\nconst buildValidationParams = (formData) => {\n const params = {\n key: SMARTY_US_STREET_KEY,\n street: formData.address1 || '',\n secondary: formData.address2 || '',\n city: formData.city || '',\n state: formData.region || '',\n zipcode: normalizePostalCodeValue(formData.postalCode || ''),\n candidates: 10\n };\n\n Object.keys(params).forEach((key) => {\n if (params[key] === '' || params[key] === null || params[key] === undefined) {\n delete params[key];\n }\n });\n\n return params;\n};\n\nconst buildRequestKey = (formData) => JSON.stringify({\n street: formData.address1 || '',\n secondary: formData.address2 || '',\n city: formData.city || '',\n state: formData.region || '',\n zipcode: normalizePostalCodeValue(formData.postalCode || '')\n});\n\nconst transformSuggestions = (responseData = []) => responseData\n .map((item) => {\n const dpvMatchCode = item.analysis?.dpv_match_code || '';\n\n return {\n ...item,\n dpvMatchCode,\n isDeliverable: VALID_DPV_CODES.has(dpvMatchCode),\n latitude: item.metadata?.latitude,\n longitude: item.metadata?.longitude,\n displayText: buildDisplayText(item),\n validationSummary: buildValidationSummary(item)\n };\n })\n .sort((left, right) => left.validationSummary.sortPriority - right.validationSummary.sortPriority);\n\nconst useUSAddressValidation = (formData, trigger) => {\n const isEnabled = Boolean(trigger && trigger !== 0 && formData?.address1);\n const requestParams = buildValidationParams(formData);\n const requestKey = `smarty-us-validation:${buildRequestKey(formData)}`;\n\n return useAddressValidationBase({\n isEnabled,\n cacheNamespace: CACHE_NAMESPACE,\n cacheTtlMs: CACHE_TTL_MS,\n rateLimitNamespace: RATE_LIMIT_NAMESPACE,\n rateLimitConfig: RATE_LIMIT_CONFIG,\n requestKey,\n requestUrl: VALIDATION_URL,\n requestParams,\n transformResponse: transformSuggestions,\n effectDeps: [trigger]\n });\n};\n\nexport default useUSAddressValidation;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useUSAddressValidation.js","names":["_smartyConfig","require","_validators","_useAddressValidationBase","_interopRequireDefault","e","__esModule","default","VALID_DPV_CODES","Set","CACHE_NAMESPACE","CACHE_TTL_MS","RATE_LIMIT_NAMESPACE","RATE_LIMIT_CONFIG","limit","windowMs","cooldownMs","parseDpvFootnotes","footnotes","normalized","String","result","index","length","code","slice","add","trimZipPlus4","value","replace","buildDisplayText","item","_item$components","_item$components2","_item$components3","line1","delivery_line_1","line2","delivery_line_2","city","components","city_name","region","state_abbreviation","postalCode","zipcode","lastLine","filter","Boolean","join","last_line","buildValidationSummary","analysis","dpvMatchCode","dpv_match_code","dpv_footnotes","isVacant","dpv_vacant","isNoStat","dpv_no_stat","level","title","message","sortPriority","has","buildRequestBody","formData","body","street","address1","candidates","address2","secondary","state","normalizePostalCodeValue","buildRequestKey","JSON","stringify","transformSuggestions","responseData","map","_item$analysis","_item$metadata","_item$metadata2","isDeliverable","latitude","metadata","longitude","displayText","validationSummary","sort","left","right","useUSAddressValidation","trigger","isEnabled","requestBody","requestKey","useAddressValidationBase","cacheNamespace","cacheTtlMs","rateLimitNamespace","rateLimitConfig","requestUrl","getStreetAddressApiUrl","transformResponse","effectDeps","_default","exports"],"sources":["../../../src/addressLookup/hooks/useUSAddressValidation.jsx"],"sourcesContent":["import { getStreetAddressApiUrl } from '../utils/smartyConfig';\nimport { normalizePostalCodeValue } from '../utils/validators';\nimport useAddressValidationBase from './useAddressValidationBase';\n\nconst VALID_DPV_CODES = new Set(['Y', 'S', 'D']);\nconst CACHE_NAMESPACE = 'smarty-us-validation';\nconst CACHE_TTL_MS = 60 * 1000;\nconst RATE_LIMIT_NAMESPACE = 'smarty-us-validation';\nconst RATE_LIMIT_CONFIG = {\n limit: 60,\n windowMs: 60 * 1000,\n cooldownMs: 60 * 1000\n};\n\nconst parseDpvFootnotes = (footnotes = '') => {\n const normalized = String(footnotes || '');\n const result = new Set();\n\n for (let index = 0; index < normalized.length; index += 2) {\n const code = normalized.slice(index, index + 2);\n if (code.length === 2) {\n result.add(code);\n }\n }\n\n return result;\n};\n\nconst trimZipPlus4 = (value = '') => String(value).replace(/(\\b\\d{5})-\\d{4}\\b/g, '$1');\n\nconst buildDisplayText = (item) => {\n const line1 = item.delivery_line_1;\n const line2 = item.delivery_line_2;\n const city = item.components?.city_name;\n const region = item.components?.state_abbreviation;\n const postalCode = item.components?.zipcode;\n\n const lastLine = city && region ?\n [city, region, postalCode].filter(Boolean).join(' ') :\n trimZipPlus4(item.last_line || '');\n\n return [\n line1,\n line2,\n lastLine\n ].filter(Boolean).join(', ');\n};\n\nconst buildValidationSummary = (item) => {\n const analysis = item.analysis || {};\n const dpvMatchCode = analysis.dpv_match_code || '';\n const footnotes = parseDpvFootnotes(analysis.dpv_footnotes);\n const isVacant = analysis.dpv_vacant === 'Y';\n const isNoStat = analysis.dpv_no_stat === 'Y';\n\n if (dpvMatchCode === 'Y' && !isVacant && !isNoStat) {\n return { level: 'verified', code: 'verified', title: 'Verified', message: 'This address is fully verified.', sortPriority: 1 };\n }\n if (dpvMatchCode === 'S' && footnotes.has('CC')) {\n return { level: 'warning', code: 'invalid-secondary-optional', title: 'Unit not recognized', message: 'The main address is valid, but the unit number was not recognized.', sortPriority: 2 };\n }\n if (dpvMatchCode === 'D' || footnotes.has('N1')) {\n return { level: 'warning', code: 'missing-secondary', title: 'Apartment or suite needed', message: 'The main address is valid, but a unit number is required.', sortPriority: 3 };\n }\n if (dpvMatchCode === 'S' && footnotes.has('C1')) {\n return { level: 'warning', code: 'invalid-secondary-required', title: 'Apartment or suite not recognized', message: 'The street address is valid, but the unit number was not recognized and is required.', sortPriority: 4 };\n }\n if ((dpvMatchCode === 'Y' || dpvMatchCode === 'S' || dpvMatchCode === 'D') && isVacant) {\n return { level: 'warning', code: 'vacant', title: 'Verified, but marked vacant', message: 'This address is valid but marked as vacant.', sortPriority: 5 };\n }\n if ((dpvMatchCode === 'Y' || dpvMatchCode === 'S' || dpvMatchCode === 'D') && isNoStat) {\n return { level: 'warning', code: 'no-stat', title: 'Verified with caution', message: 'This address is valid, but USPS indicates limited delivery status.', sortPriority: 6 };\n }\n\n return { level: 'invalid', code: 'not-confirmed', title: 'Not verified', message: 'This address could not be confirmed.', sortPriority: 7 };\n};\n\nconst buildRequestBody = (formData) => {\n const body = {\n street: formData.address1 || '',\n candidates: 10\n };\n\n if (formData.address2) body.secondary = formData.address2;\n if (formData.city) body.city = formData.city;\n if (formData.region) body.state = formData.region;\n if (formData.postalCode) body.zipcode = normalizePostalCodeValue(formData.postalCode);\n\n return body;\n};\n\nconst buildRequestKey = (formData) => JSON.stringify({\n street: formData.address1 || '',\n secondary: formData.address2 || '',\n city: formData.city || '',\n state: formData.region || '',\n zipcode: normalizePostalCodeValue(formData.postalCode || '')\n});\n\nconst transformSuggestions = (responseData = []) => responseData\n .map((item) => {\n const dpvMatchCode = item.analysis?.dpv_match_code || '';\n return {\n ...item,\n dpvMatchCode,\n isDeliverable: VALID_DPV_CODES.has(dpvMatchCode),\n latitude: item.metadata?.latitude,\n longitude: item.metadata?.longitude,\n displayText: buildDisplayText(item),\n validationSummary: buildValidationSummary(item)\n };\n })\n .sort((left, right) => left.validationSummary.sortPriority - right.validationSummary.sortPriority);\n\nconst useUSAddressValidation = (formData, trigger) => {\n const isEnabled = Boolean(trigger && trigger !== 0 && formData?.address1);\n const requestBody = buildRequestBody(formData);\n const requestKey = `smarty-us-validation:${buildRequestKey(formData)}`;\n\n return useAddressValidationBase({\n isEnabled,\n cacheNamespace: CACHE_NAMESPACE,\n cacheTtlMs: CACHE_TTL_MS,\n rateLimitNamespace: RATE_LIMIT_NAMESPACE,\n rateLimitConfig: RATE_LIMIT_CONFIG,\n requestKey,\n requestUrl: `${getStreetAddressApiUrl()}/validate/v1/US`,\n requestBody,\n transformResponse: transformSuggestions,\n effectDeps: [trigger]\n });\n};\n\nexport default useUSAddressValidation;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,9 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
exports.setStreetAddressApiUrl = exports.getStreetAddressApiUrl = void 0;
|
|
7
|
+
let _streetAddressApiUrl = 'https://apis.nuskin.com/street-address';
|
|
8
|
+
const setStreetAddressApiUrl = url => {
|
|
9
|
+
_streetAddressApiUrl = url;
|
|
10
|
+
};
|
|
11
|
+
exports.setStreetAddressApiUrl = setStreetAddressApiUrl;
|
|
12
|
+
const getStreetAddressApiUrl = () => _streetAddressApiUrl;
|
|
13
|
+
exports.getStreetAddressApiUrl = getStreetAddressApiUrl;
|
|
11
14
|
//# sourceMappingURL=smartyConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smartyConfig.js","names":["
|
|
1
|
+
{"version":3,"file":"smartyConfig.js","names":["_streetAddressApiUrl","setStreetAddressApiUrl","url","exports","getStreetAddressApiUrl"],"sources":["../../../src/addressLookup/utils/smartyConfig.js"],"sourcesContent":["let _streetAddressApiUrl = 'https://apis.nuskin.com/street-address';\n\nexport const setStreetAddressApiUrl = (url) => {\n _streetAddressApiUrl = url;\n};\n\nexport const getStreetAddressApiUrl = () => _streetAddressApiUrl;\n"],"mappings":";;;;;;AAAA,IAAIA,oBAAoB,GAAG,wCAAwC;AAE5D,MAAMC,sBAAsB,GAAIC,GAAG,IAAK;EAC7CF,oBAAoB,GAAGE,GAAG;AAC5B,CAAC;AAACC,OAAA,CAAAF,sBAAA,GAAAA,sBAAA;AAEK,MAAMG,sBAAsB,GAAGA,CAAA,KAAMJ,oBAAoB;AAACG,OAAA,CAAAC,sBAAA,GAAAA,sBAAA","ignoreList":[]}
|
package/dist/index.js
CHANGED
|
@@ -39,9 +39,16 @@ Object.defineProperty(exports, "normalizeAddressForm", {
|
|
|
39
39
|
return _addressForm.normalizeAddressForm;
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
|
+
Object.defineProperty(exports, "setStreetAddressApiUrl", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function () {
|
|
45
|
+
return _smartyConfig.setStreetAddressApiUrl;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
42
48
|
var _ShippingAddressForm = _interopRequireDefault(require("./shippingAddressForm/ShippingAddressForm"));
|
|
43
49
|
var _addressLookup = _interopRequireDefault(require("./addressLookup"));
|
|
44
50
|
var _addressForm = require("./addressLookup/utils/addressForm");
|
|
45
51
|
var _countries = require("./addressLookup/countries");
|
|
52
|
+
var _smartyConfig = require("./addressLookup/utils/smartyConfig");
|
|
46
53
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
47
54
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_ShippingAddressForm","_interopRequireDefault","require","_addressLookup","_addressForm","_countries","e","__esModule","default"],"sources":["../src/index.js"],"sourcesContent":["export { default as ShippingAddressForm } from './shippingAddressForm/ShippingAddressForm';\nexport { default } from './shippingAddressForm/ShippingAddressForm';\nexport { default as AddressLookup } from './addressLookup';\nexport { normalizeAddressForm, DEFAULT_ADDRESS_FORM } from './addressLookup/utils/addressForm';\nexport { SUPPORTED_COUNTRIES } from './addressLookup/countries';\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_ShippingAddressForm","_interopRequireDefault","require","_addressLookup","_addressForm","_countries","_smartyConfig","e","__esModule","default"],"sources":["../src/index.js"],"sourcesContent":["export { default as ShippingAddressForm } from './shippingAddressForm/ShippingAddressForm';\nexport { default } from './shippingAddressForm/ShippingAddressForm';\nexport { default as AddressLookup } from './addressLookup';\nexport { normalizeAddressForm, DEFAULT_ADDRESS_FORM } from './addressLookup/utils/addressForm';\nexport { SUPPORTED_COUNTRIES } from './addressLookup/countries';\nexport { setStreetAddressApiUrl } from './addressLookup/utils/smartyConfig';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,oBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AAA4E,SAAAD,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA","ignoreList":[]}
|