@rovela-ai/sdk 0.11.2 → 0.12.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/admin/api/categories.d.ts.map +1 -1
- package/dist/admin/api/categories.js +4 -0
- package/dist/admin/api/categories.js.map +1 -1
- package/dist/admin/api/orders.d.ts.map +1 -1
- package/dist/admin/api/orders.js +6 -0
- package/dist/admin/api/orders.js.map +1 -1
- package/dist/admin/api/products.d.ts.map +1 -1
- package/dist/admin/api/products.js +4 -0
- package/dist/admin/api/products.js.map +1 -1
- package/dist/admin/components/CatalogTranslationsEditor.d.ts +15 -0
- package/dist/admin/components/CatalogTranslationsEditor.d.ts.map +1 -0
- package/dist/admin/components/CatalogTranslationsEditor.js +59 -0
- package/dist/admin/components/CatalogTranslationsEditor.js.map +1 -0
- package/dist/admin/components/CategoryForm.d.ts.map +1 -1
- package/dist/admin/components/CategoryForm.js +4 -1
- package/dist/admin/components/CategoryForm.js.map +1 -1
- package/dist/admin/components/ProductForm.d.ts.map +1 -1
- package/dist/admin/components/ProductForm.js +5 -1
- package/dist/admin/components/ProductForm.js.map +1 -1
- package/dist/admin/types.d.ts +10 -0
- package/dist/admin/types.d.ts.map +1 -1
- package/dist/auth/api/register.d.ts.map +1 -1
- package/dist/auth/api/register.js +4 -1
- package/dist/auth/api/register.js.map +1 -1
- package/dist/auth/components/AddressBook.d.ts.map +1 -1
- package/dist/auth/components/AddressBook.js +10 -8
- package/dist/auth/components/AddressBook.js.map +1 -1
- package/dist/auth/components/AddressForm.d.ts.map +1 -1
- package/dist/auth/components/AddressForm.js +8 -6
- package/dist/auth/components/AddressForm.js.map +1 -1
- package/dist/auth/components/ForgotPasswordForm.d.ts.map +1 -1
- package/dist/auth/components/ForgotPasswordForm.js +4 -2
- package/dist/auth/components/ForgotPasswordForm.js.map +1 -1
- package/dist/auth/components/ResetPasswordForm.d.ts.map +1 -1
- package/dist/auth/components/ResetPasswordForm.js +10 -8
- package/dist/auth/components/ResetPasswordForm.js.map +1 -1
- package/dist/auth/components/SignInForm.d.ts.map +1 -1
- package/dist/auth/components/SignInForm.js +5 -3
- package/dist/auth/components/SignInForm.js.map +1 -1
- package/dist/auth/components/SignUpForm.d.ts.map +1 -1
- package/dist/auth/components/SignUpForm.js +7 -5
- package/dist/auth/components/SignUpForm.js.map +1 -1
- package/dist/auth/components/UserMenu.d.ts.map +1 -1
- package/dist/auth/components/UserMenu.js +4 -2
- package/dist/auth/components/UserMenu.js.map +1 -1
- package/dist/auth/components/VerifyEmailNotice.d.ts.map +1 -1
- package/dist/auth/components/VerifyEmailNotice.js +6 -4
- package/dist/auth/components/VerifyEmailNotice.js.map +1 -1
- package/dist/auth/hooks/useAuth.d.ts.map +1 -1
- package/dist/auth/hooks/useAuth.js +11 -1
- package/dist/auth/hooks/useAuth.js.map +1 -1
- package/dist/auth/server/customer-service.d.ts +1 -1
- package/dist/auth/server/customer-service.d.ts.map +1 -1
- package/dist/auth/server/customer-service.js +2 -1
- package/dist/auth/server/customer-service.js.map +1 -1
- package/dist/auth/types.d.ts +2 -0
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/cart/components/CartDrawer.js +1 -1
- package/dist/cart/components/CartDrawer.js.map +1 -1
- package/dist/cart/components/CartItem.js +1 -1
- package/dist/cart/components/CartItem.js.map +1 -1
- package/dist/checkout/api/manual.d.ts.map +1 -1
- package/dist/checkout/api/manual.js +6 -0
- package/dist/checkout/api/manual.js.map +1 -1
- package/dist/checkout/components/OrderTimeline.d.ts.map +1 -1
- package/dist/checkout/components/OrderTimeline.js +8 -6
- package/dist/checkout/components/OrderTimeline.js.map +1 -1
- package/dist/checkout/hooks/useCheckout.d.ts.map +1 -1
- package/dist/checkout/hooks/useCheckout.js +6 -2
- package/dist/checkout/hooks/useCheckout.js.map +1 -1
- package/dist/checkout/server/create-checkout-session.d.ts.map +1 -1
- package/dist/checkout/server/create-checkout-session.js +1 -0
- package/dist/checkout/server/create-checkout-session.js.map +1 -1
- package/dist/checkout/server/handle-webhook.js +1 -0
- package/dist/checkout/server/handle-webhook.js.map +1 -1
- package/dist/checkout/server/order-service.d.ts.map +1 -1
- package/dist/checkout/server/order-service.js +2 -0
- package/dist/checkout/server/order-service.js.map +1 -1
- package/dist/checkout/types.d.ts +4 -0
- package/dist/checkout/types.d.ts.map +1 -1
- package/dist/core/cookie-consent/CookieBanner.d.ts.map +1 -1
- package/dist/core/cookie-consent/CookieBanner.js +7 -4
- package/dist/core/cookie-consent/CookieBanner.js.map +1 -1
- package/dist/core/db/queries.d.ts +67 -27
- package/dist/core/db/queries.d.ts.map +1 -1
- package/dist/core/db/queries.js +53 -0
- package/dist/core/db/queries.js.map +1 -1
- package/dist/core/db/schema.d.ts +88 -0
- package/dist/core/db/schema.d.ts.map +1 -1
- package/dist/core/db/schema.js +16 -0
- package/dist/core/db/schema.js.map +1 -1
- package/dist/core/i18n/LocaleLink.d.ts +27 -0
- package/dist/core/i18n/LocaleLink.d.ts.map +1 -0
- package/dist/core/i18n/LocaleLink.js +52 -0
- package/dist/core/i18n/LocaleLink.js.map +1 -0
- package/dist/core/i18n/catalog.d.ts +45 -0
- package/dist/core/i18n/catalog.d.ts.map +1 -0
- package/dist/core/i18n/catalog.js +72 -0
- package/dist/core/i18n/catalog.js.map +1 -0
- package/dist/core/i18n/index.d.ts +5 -1
- package/dist/core/i18n/index.d.ts.map +1 -1
- package/dist/core/i18n/index.js +2 -0
- package/dist/core/i18n/index.js.map +1 -1
- package/dist/core/i18n/messages/en.d.ts.map +1 -1
- package/dist/core/i18n/messages/en.js +98 -0
- package/dist/core/i18n/messages/en.js.map +1 -1
- package/dist/core/i18n/messages/fr.d.ts.map +1 -1
- package/dist/core/i18n/messages/fr.js +98 -0
- package/dist/core/i18n/messages/fr.js.map +1 -1
- package/dist/core/i18n/resolve.d.ts +15 -3
- package/dist/core/i18n/resolve.d.ts.map +1 -1
- package/dist/core/i18n/resolve.js +7 -5
- package/dist/core/i18n/resolve.js.map +1 -1
- package/dist/core/server/index.d.ts +3 -0
- package/dist/core/server/index.d.ts.map +1 -1
- package/dist/core/server/index.js +3 -0
- package/dist/core/server/index.js.map +1 -1
- package/dist/core/server/locale-metadata.d.ts +32 -0
- package/dist/core/server/locale-metadata.d.ts.map +1 -0
- package/dist/core/server/locale-metadata.js +65 -0
- package/dist/core/server/locale-metadata.js.map +1 -0
- package/dist/core/server/request-locale.d.ts +24 -0
- package/dist/core/server/request-locale.d.ts.map +1 -0
- package/dist/core/server/request-locale.js +44 -0
- package/dist/core/server/request-locale.js.map +1 -0
- package/dist/emails/i18n.d.ts +27 -0
- package/dist/emails/i18n.d.ts.map +1 -0
- package/dist/emails/i18n.js +273 -0
- package/dist/emails/i18n.js.map +1 -0
- package/dist/emails/send/auth.d.ts +6 -0
- package/dist/emails/send/auth.d.ts.map +1 -1
- package/dist/emails/send/auth.js +3 -0
- package/dist/emails/send/auth.js.map +1 -1
- package/dist/emails/send/orders.d.ts +12 -0
- package/dist/emails/send/orders.d.ts.map +1 -1
- package/dist/emails/send/orders.js +6 -0
- package/dist/emails/send/orders.js.map +1 -1
- package/dist/emails/sender.d.ts.map +1 -1
- package/dist/emails/sender.js +3 -2
- package/dist/emails/sender.js.map +1 -1
- package/dist/emails/types.d.ts +2 -0
- package/dist/emails/types.d.ts.map +1 -1
- package/dist/products/api/product.d.ts +1 -1
- package/dist/products/api/product.d.ts.map +1 -1
- package/dist/products/api/product.js +5 -2
- package/dist/products/api/product.js.map +1 -1
- package/dist/products/api/products.d.ts.map +1 -1
- package/dist/products/api/products.js +7 -1
- package/dist/products/api/products.js.map +1 -1
- package/dist/products/components/ProductCard.js +1 -1
- package/dist/products/components/ProductCard.js.map +1 -1
- package/dist/products/hooks/useProduct.d.ts.map +1 -1
- package/dist/products/hooks/useProduct.js +4 -2
- package/dist/products/hooks/useProduct.js.map +1 -1
- package/dist/products/hooks/useProducts.d.ts.map +1 -1
- package/dist/products/hooks/useProducts.js +4 -1
- package/dist/products/hooks/useProducts.js.map +1 -1
- package/package.json +1 -1
|
@@ -132,5 +132,103 @@ export const en = {
|
|
|
132
132
|
'form.postalCodeRequired': 'Postal code is required',
|
|
133
133
|
'form.countryRequired': 'Country is required',
|
|
134
134
|
'form.stateRequired': 'State is required',
|
|
135
|
+
// ── Auth ──────────────────────────────────────────────────────────────────
|
|
136
|
+
'auth.signIn': 'Sign in',
|
|
137
|
+
'auth.signingIn': 'Signing in...',
|
|
138
|
+
'auth.signInFailed': 'Sign in failed',
|
|
139
|
+
'auth.password': 'Password',
|
|
140
|
+
'auth.enterPassword': 'Enter your password',
|
|
141
|
+
'auth.forgotPassword': 'Forgot password?',
|
|
142
|
+
'auth.rememberMe': 'Remember me for 30 days',
|
|
143
|
+
'auth.createAccount': 'Create account',
|
|
144
|
+
'auth.creatingAccount': 'Creating account...',
|
|
145
|
+
'auth.createAccountFailed': 'Failed to create account',
|
|
146
|
+
'auth.name': 'Name',
|
|
147
|
+
'auth.optionalSuffix': '(optional)',
|
|
148
|
+
'auth.namePlaceholder': 'John Doe',
|
|
149
|
+
'auth.atLeast8': 'At least 8 characters',
|
|
150
|
+
'auth.confirmPassword': 'Confirm Password',
|
|
151
|
+
'auth.confirmYourPassword': 'Confirm your password',
|
|
152
|
+
'auth.passwordsNoMatch': 'Passwords do not match',
|
|
153
|
+
'auth.password8': 'Password must be at least 8 characters',
|
|
154
|
+
'auth.forgotIntro': "Enter your email address and we'll send you a link to reset your password.",
|
|
155
|
+
'auth.checkYourEmail': 'Check your email',
|
|
156
|
+
'auth.forgotSuccessBody': "If an account exists with that email, we've sent you a link to reset your password.",
|
|
157
|
+
'auth.sendResetLink': 'Send reset link',
|
|
158
|
+
'auth.sending': 'Sending...',
|
|
159
|
+
'auth.resetTitle': 'Reset your password',
|
|
160
|
+
'auth.newPassword': 'New Password',
|
|
161
|
+
'auth.confirmNewPassword': 'Confirm New Password',
|
|
162
|
+
'auth.resetPassword': 'Reset password',
|
|
163
|
+
'auth.resetting': 'Resetting...',
|
|
164
|
+
'auth.resetFailed': 'Failed to reset password',
|
|
165
|
+
'auth.invalidLink': 'Invalid link',
|
|
166
|
+
'auth.invalidResetLink': 'Invalid or expired reset link',
|
|
167
|
+
'auth.verifyingLink': 'Verifying link…',
|
|
168
|
+
'auth.passwordResetDone': 'Password reset',
|
|
169
|
+
'auth.myAccount': 'My Account',
|
|
170
|
+
'auth.orders': 'Orders',
|
|
171
|
+
'auth.settings': 'Settings',
|
|
172
|
+
'auth.signOut': 'Sign out',
|
|
173
|
+
'auth.customer': 'Customer',
|
|
174
|
+
'auth.verifyYourEmail': 'Verify your email',
|
|
175
|
+
'auth.verifySentTo': "We've sent a verification email to",
|
|
176
|
+
'auth.verifyCheckInbox': 'Please check your inbox and click the verification link to activate your account.',
|
|
177
|
+
'auth.resendVerification': 'Resend verification email',
|
|
178
|
+
'auth.resendFailed': 'Failed to resend email',
|
|
179
|
+
'auth.resendFailedVerification': 'Failed to resend verification email',
|
|
180
|
+
'auth.tips': 'Tips:',
|
|
181
|
+
'auth.tipSpam': 'Check your spam or junk folder',
|
|
182
|
+
'auth.tipExpiry': 'The link expires in 24 hours',
|
|
183
|
+
'auth.tipCorrectEmail': 'Make sure you entered the correct email',
|
|
184
|
+
// ── Address book ──────────────────────────────────────────────────────────
|
|
185
|
+
'address.addNew': 'Add a new address',
|
|
186
|
+
'address.edit': 'Edit address',
|
|
187
|
+
'address.saved': 'Saved addresses',
|
|
188
|
+
'address.none': 'No saved addresses yet',
|
|
189
|
+
'address.add': 'Add address',
|
|
190
|
+
'address.defaultShipping': 'Default shipping',
|
|
191
|
+
'address.defaultBilling': 'Default billing',
|
|
192
|
+
'address.removeQ': 'Remove?',
|
|
193
|
+
'address.yes': 'Yes',
|
|
194
|
+
'address.removing': 'Removing…',
|
|
195
|
+
'address.saveFailed': 'Could not save the address. Please try again.',
|
|
196
|
+
'address.updateFailed': 'Could not update the address. Please try again.',
|
|
197
|
+
'address.label': 'Label (optional)',
|
|
198
|
+
'address.labelPlaceholder': 'Home, Work, Job site…',
|
|
199
|
+
'address.company': 'Company (optional)',
|
|
200
|
+
'address.stateProvince': 'State / Province',
|
|
201
|
+
'address.stateProvinceOptional': 'State / Province (optional)',
|
|
202
|
+
'address.selectState': 'Select a state',
|
|
203
|
+
'address.phoneOptional': 'Phone (optional)',
|
|
204
|
+
'address.phonePlaceholder': 'For delivery updates',
|
|
205
|
+
'address.required': 'Required',
|
|
206
|
+
'address.save': 'Save address',
|
|
207
|
+
'address.saving': 'Saving…',
|
|
208
|
+
'address.cancel': 'Cancel',
|
|
209
|
+
'address.useDefaultShipping': 'Use as default shipping address',
|
|
210
|
+
'address.useDefaultBilling': 'Use as default billing address',
|
|
211
|
+
// ── Cookie consent (EDPB) ─────────────────────────────────────────────────
|
|
212
|
+
'consent.title': 'Cookie preferences',
|
|
213
|
+
'consent.intro': "We use cookies to make this store work and, with your consent, to understand how it's used and show you relevant content. You can choose which categories to allow.",
|
|
214
|
+
'consent.learnMore': 'Learn more',
|
|
215
|
+
'consent.acceptAll': 'Accept all',
|
|
216
|
+
'consent.rejectAll': 'Reject all',
|
|
217
|
+
'consent.customize': 'Customize',
|
|
218
|
+
'consent.savePreferences': 'Save preferences',
|
|
219
|
+
'consent.chooseCategories': 'Choose which categories of cookies you allow.',
|
|
220
|
+
'consent.essential': 'Essential',
|
|
221
|
+
'consent.essentialDesc': 'Required for core features like cart and login. Always on.',
|
|
222
|
+
'consent.analytics': 'Analytics',
|
|
223
|
+
'consent.analyticsDesc': 'Help us understand how the store is used so we can improve it.',
|
|
224
|
+
'consent.marketing': 'Marketing',
|
|
225
|
+
'consent.marketingDesc': 'Used to measure ads and show you relevant content across sites.',
|
|
226
|
+
// ── Order timeline ────────────────────────────────────────────────────────
|
|
227
|
+
'timeline.orderPlaced': 'Order placed',
|
|
228
|
+
'timeline.paymentConfirmed': 'Payment confirmed',
|
|
229
|
+
'timeline.shipped': 'Shipped',
|
|
230
|
+
'timeline.delivered': 'Delivered',
|
|
231
|
+
'timeline.carrierTracking': '{carrier} tracking',
|
|
232
|
+
'timeline.tracking': 'Tracking',
|
|
135
233
|
};
|
|
136
234
|
//# sourceMappingURL=en.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.js","sourceRoot":"","sources":["../../../../src/core/i18n/messages/en.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"en.js","sourceRoot":"","sources":["../../../../src/core/i18n/messages/en.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fr.d.ts","sourceRoot":"","sources":["../../../../src/core/i18n/messages/fr.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAE9C,eAAO,MAAM,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"fr.d.ts","sourceRoot":"","sources":["../../../../src/core/i18n/messages/fr.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAE9C,eAAO,MAAM,EAAE,EAAE,cA0OhB,CAAA"}
|
|
@@ -133,5 +133,103 @@ export const fr = {
|
|
|
133
133
|
'form.postalCodeRequired': 'Le code postal est requis',
|
|
134
134
|
'form.countryRequired': 'Le pays est requis',
|
|
135
135
|
'form.stateRequired': "L'État est requis",
|
|
136
|
+
// ── Auth ──────────────────────────────────────────────────────────────────
|
|
137
|
+
'auth.signIn': 'Se connecter',
|
|
138
|
+
'auth.signingIn': 'Connexion…',
|
|
139
|
+
'auth.signInFailed': 'Échec de la connexion. Vérifiez vos identifiants.',
|
|
140
|
+
'auth.password': 'Mot de passe',
|
|
141
|
+
'auth.enterPassword': 'Saisissez votre mot de passe',
|
|
142
|
+
'auth.forgotPassword': 'Mot de passe oublié ?',
|
|
143
|
+
'auth.rememberMe': 'Rester connecté pendant 30 jours',
|
|
144
|
+
'auth.createAccount': 'Créer un compte',
|
|
145
|
+
'auth.creatingAccount': 'Création du compte…',
|
|
146
|
+
'auth.createAccountFailed': 'La création du compte a échoué',
|
|
147
|
+
'auth.name': 'Nom',
|
|
148
|
+
'auth.optionalSuffix': '(facultatif)',
|
|
149
|
+
'auth.namePlaceholder': 'Jean Dupont',
|
|
150
|
+
'auth.atLeast8': 'Au moins 8 caractères',
|
|
151
|
+
'auth.confirmPassword': 'Confirmez le mot de passe',
|
|
152
|
+
'auth.confirmYourPassword': 'Confirmez votre mot de passe',
|
|
153
|
+
'auth.passwordsNoMatch': 'Les mots de passe ne correspondent pas',
|
|
154
|
+
'auth.password8': 'Le mot de passe doit contenir au moins 8 caractères',
|
|
155
|
+
'auth.forgotIntro': 'Saisissez votre adresse e-mail et nous vous enverrons un lien pour réinitialiser votre mot de passe.',
|
|
156
|
+
'auth.checkYourEmail': 'Consultez votre e-mail',
|
|
157
|
+
'auth.forgotSuccessBody': 'Si un compte existe avec cet e-mail, nous vous avons envoyé un lien pour réinitialiser votre mot de passe.',
|
|
158
|
+
'auth.sendResetLink': 'Envoyer le lien',
|
|
159
|
+
'auth.sending': 'Envoi…',
|
|
160
|
+
'auth.resetTitle': 'Réinitialiser votre mot de passe',
|
|
161
|
+
'auth.newPassword': 'Nouveau mot de passe',
|
|
162
|
+
'auth.confirmNewPassword': 'Confirmez le nouveau mot de passe',
|
|
163
|
+
'auth.resetPassword': 'Réinitialiser le mot de passe',
|
|
164
|
+
'auth.resetting': 'Réinitialisation…',
|
|
165
|
+
'auth.resetFailed': 'La réinitialisation du mot de passe a échoué',
|
|
166
|
+
'auth.invalidLink': 'Lien invalide',
|
|
167
|
+
'auth.invalidResetLink': 'Lien de réinitialisation invalide ou expiré',
|
|
168
|
+
'auth.verifyingLink': 'Vérification du lien…',
|
|
169
|
+
'auth.passwordResetDone': 'Mot de passe réinitialisé',
|
|
170
|
+
'auth.myAccount': 'Mon compte',
|
|
171
|
+
'auth.orders': 'Mes commandes',
|
|
172
|
+
'auth.settings': 'Paramètres',
|
|
173
|
+
'auth.signOut': 'Se déconnecter',
|
|
174
|
+
'auth.customer': 'Client',
|
|
175
|
+
'auth.verifyYourEmail': 'Vérifiez votre e-mail',
|
|
176
|
+
'auth.verifySentTo': 'Nous avons envoyé un e-mail de vérification à',
|
|
177
|
+
'auth.verifyCheckInbox': 'Consultez votre boîte de réception et cliquez sur le lien de vérification pour activer votre compte.',
|
|
178
|
+
'auth.resendVerification': "Renvoyer l'e-mail de vérification",
|
|
179
|
+
'auth.resendFailed': "Impossible de renvoyer l'e-mail",
|
|
180
|
+
'auth.resendFailedVerification': "Impossible de renvoyer l'e-mail de vérification",
|
|
181
|
+
'auth.tips': 'Conseils :',
|
|
182
|
+
'auth.tipSpam': 'Vérifiez votre dossier spam ou courrier indésirable',
|
|
183
|
+
'auth.tipExpiry': 'Le lien expire dans 24 heures',
|
|
184
|
+
'auth.tipCorrectEmail': "Vérifiez que l'adresse e-mail saisie est correcte",
|
|
185
|
+
// ── Address book ──────────────────────────────────────────────────────────
|
|
186
|
+
'address.addNew': 'Ajouter une nouvelle adresse',
|
|
187
|
+
'address.edit': "Modifier l'adresse",
|
|
188
|
+
'address.saved': 'Adresses enregistrées',
|
|
189
|
+
'address.none': 'Aucune adresse enregistrée',
|
|
190
|
+
'address.add': 'Ajouter une adresse',
|
|
191
|
+
'address.defaultShipping': 'Livraison par défaut',
|
|
192
|
+
'address.defaultBilling': 'Facturation par défaut',
|
|
193
|
+
'address.removeQ': 'Supprimer ?',
|
|
194
|
+
'address.yes': 'Oui',
|
|
195
|
+
'address.removing': 'Suppression…',
|
|
196
|
+
'address.saveFailed': "Impossible d'enregistrer l'adresse. Veuillez réessayer.",
|
|
197
|
+
'address.updateFailed': "Impossible de mettre à jour l'adresse. Veuillez réessayer.",
|
|
198
|
+
'address.label': 'Libellé (facultatif)',
|
|
199
|
+
'address.labelPlaceholder': 'Domicile, Bureau, Chantier…',
|
|
200
|
+
'address.company': 'Société (facultatif)',
|
|
201
|
+
'address.stateProvince': 'État / Province',
|
|
202
|
+
'address.stateProvinceOptional': 'État / Province (facultatif)',
|
|
203
|
+
'address.selectState': 'Sélectionnez un État',
|
|
204
|
+
'address.phoneOptional': 'Téléphone (facultatif)',
|
|
205
|
+
'address.phonePlaceholder': 'Pour le suivi de livraison',
|
|
206
|
+
'address.required': 'Requis',
|
|
207
|
+
'address.save': "Enregistrer l'adresse",
|
|
208
|
+
'address.saving': 'Enregistrement…',
|
|
209
|
+
'address.cancel': 'Annuler',
|
|
210
|
+
'address.useDefaultShipping': 'Utiliser comme adresse de livraison par défaut',
|
|
211
|
+
'address.useDefaultBilling': 'Utiliser comme adresse de facturation par défaut',
|
|
212
|
+
// ── Cookie consent (EDPB) ─────────────────────────────────────────────────
|
|
213
|
+
'consent.title': 'Préférences de cookies',
|
|
214
|
+
'consent.intro': 'Nous utilisons des cookies pour faire fonctionner cette boutique et, avec votre consentement, pour comprendre son utilisation et vous proposer des contenus pertinents. Vous pouvez choisir les catégories à autoriser.',
|
|
215
|
+
'consent.learnMore': 'En savoir plus',
|
|
216
|
+
'consent.acceptAll': 'Tout accepter',
|
|
217
|
+
'consent.rejectAll': 'Tout refuser',
|
|
218
|
+
'consent.customize': 'Personnaliser',
|
|
219
|
+
'consent.savePreferences': 'Enregistrer mes préférences',
|
|
220
|
+
'consent.chooseCategories': 'Choisissez les catégories de cookies que vous autorisez.',
|
|
221
|
+
'consent.essential': 'Essentiels',
|
|
222
|
+
'consent.essentialDesc': 'Nécessaires aux fonctions de base comme le panier et la connexion. Toujours actifs.',
|
|
223
|
+
'consent.analytics': 'Statistiques',
|
|
224
|
+
'consent.analyticsDesc': "Nous aident à comprendre l'utilisation de la boutique pour l'améliorer.",
|
|
225
|
+
'consent.marketing': 'Marketing',
|
|
226
|
+
'consent.marketingDesc': 'Servent à mesurer les publicités et à vous proposer des contenus pertinents.',
|
|
227
|
+
// ── Order timeline ────────────────────────────────────────────────────────
|
|
228
|
+
'timeline.orderPlaced': 'Commande passée',
|
|
229
|
+
'timeline.paymentConfirmed': 'Paiement confirmé',
|
|
230
|
+
'timeline.shipped': 'Expédiée',
|
|
231
|
+
'timeline.delivered': 'Livrée',
|
|
232
|
+
'timeline.carrierTracking': 'Suivi {carrier}',
|
|
233
|
+
'timeline.tracking': 'Suivi',
|
|
136
234
|
};
|
|
137
235
|
//# sourceMappingURL=fr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fr.js","sourceRoot":"","sources":["../../../../src/core/i18n/messages/fr.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"fr.js","sourceRoot":"","sources":["../../../../src/core/i18n/messages/fr.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,18 +44,30 @@ export interface LocaleRedirectInput extends RequestLocaleInput {
|
|
|
44
44
|
/** ORIGINAL request pathname, prefix included (x-rovela-pathname). */
|
|
45
45
|
pathname?: string | null;
|
|
46
46
|
}
|
|
47
|
+
export interface LocaleRedirectDecision {
|
|
48
|
+
path: string;
|
|
49
|
+
/**
|
|
50
|
+
* True for STRUCTURAL corrections (prefix strips — a URL shape the store
|
|
51
|
+
* never serves) → 308, so crawlers consolidate. False for PREFERENCE hops
|
|
52
|
+
* (cookie / geo routing off a bare URL) → temporary, because the target
|
|
53
|
+
* depends on visitor state and must never be cached as permanent.
|
|
54
|
+
*/
|
|
55
|
+
permanent: boolean;
|
|
56
|
+
}
|
|
47
57
|
/**
|
|
48
58
|
* Where this request should redirect for locale correctness, or null.
|
|
49
59
|
*
|
|
50
|
-
* - Prefixed URL for a locale the store doesn't serve
|
|
51
|
-
* (no /
|
|
60
|
+
* - Prefixed URL for a locale the store doesn't serve, or for the DEFAULT
|
|
61
|
+
* locale (no /en duplicates on an en-default store) → strip the prefix.
|
|
62
|
+
* PERMANENT.
|
|
52
63
|
* - Bare URL + the visitor prefers an enabled non-default locale (explicit
|
|
53
64
|
* cookie first, else IP-country hint) → the prefixed equivalent. This is
|
|
54
65
|
* the "IP detection" behavior: first visit from France lands on /fr; the
|
|
55
66
|
* cookie the provider then writes keeps it sticky, and switching back to
|
|
56
67
|
* the default writes a default-locale cookie which suppresses this.
|
|
68
|
+
* TEMPORARY.
|
|
57
69
|
*/
|
|
58
|
-
export declare function resolveLocaleRedirect({ prefixLocale, cookieLocale, geoLocale, pathname, config, }: LocaleRedirectInput):
|
|
70
|
+
export declare function resolveLocaleRedirect({ prefixLocale, cookieLocale, geoLocale, pathname, config, }: LocaleRedirectInput): LocaleRedirectDecision | null;
|
|
59
71
|
/**
|
|
60
72
|
* Build the URL for the CURRENT page in another locale — the language
|
|
61
73
|
* switcher's navigation target. `pathname` may carry a locale prefix.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/core/i18n/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,SAAS,CAAA;AAEhB,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,WAAW,CAAA;IAC1B,wDAAwD;IACxD,cAAc,EAAE,WAAW,EAAE,CAAA;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,CAAC,EAAE;IAClD,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;CACjC,GAAG,IAAI,GAAG,iBAAiB,CAU3B;AAED,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,MAAM,EAAE,iBAAiB,CAAA;CAC1B;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,kBAAkB,GAAG,WAAW,CAK9F;AAED,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAED
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/core/i18n/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,SAAS,CAAA;AAEhB,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,WAAW,CAAA;IAC1B,wDAAwD;IACxD,cAAc,EAAE,WAAW,EAAE,CAAA;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,CAAC,EAAE;IAClD,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;CACjC,GAAG,IAAI,GAAG,iBAAiB,CAU3B;AAED,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,MAAM,EAAE,iBAAiB,CAAA;CAC1B;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,kBAAkB,GAAG,WAAW,CAK9F;AAED,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,SAAS,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,MAAM,GACP,EAAE,mBAAmB,GAAG,sBAAsB,GAAG,IAAI,CA0BrD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,GAAG,MAAM,CAYpG"}
|
|
@@ -42,22 +42,24 @@ export function resolveRequestLocale({ prefixLocale, config }) {
|
|
|
42
42
|
/**
|
|
43
43
|
* Where this request should redirect for locale correctness, or null.
|
|
44
44
|
*
|
|
45
|
-
* - Prefixed URL for a locale the store doesn't serve
|
|
46
|
-
* (no /
|
|
45
|
+
* - Prefixed URL for a locale the store doesn't serve, or for the DEFAULT
|
|
46
|
+
* locale (no /en duplicates on an en-default store) → strip the prefix.
|
|
47
|
+
* PERMANENT.
|
|
47
48
|
* - Bare URL + the visitor prefers an enabled non-default locale (explicit
|
|
48
49
|
* cookie first, else IP-country hint) → the prefixed equivalent. This is
|
|
49
50
|
* the "IP detection" behavior: first visit from France lands on /fr; the
|
|
50
51
|
* cookie the provider then writes keeps it sticky, and switching back to
|
|
51
52
|
* the default writes a default-locale cookie which suppresses this.
|
|
53
|
+
* TEMPORARY.
|
|
52
54
|
*/
|
|
53
55
|
export function resolveLocaleRedirect({ prefixLocale, cookieLocale, geoLocale, pathname, config, }) {
|
|
54
56
|
if (!pathname || !pathname.startsWith('/'))
|
|
55
57
|
return null;
|
|
56
|
-
// Prefixed URL: only "not enabled"
|
|
58
|
+
// Prefixed URL: only "not enabled" / "is default" need correction.
|
|
57
59
|
if (isSupportedLocale(prefixLocale)) {
|
|
58
60
|
if (!config.enabledLocales.includes(prefixLocale) || prefixLocale === config.defaultLocale) {
|
|
59
61
|
const bare = pathname.replace(new RegExp(`^/${prefixLocale}(?=/|$)`), '') || '/';
|
|
60
|
-
return bare;
|
|
62
|
+
return { path: bare, permanent: true };
|
|
61
63
|
}
|
|
62
64
|
return null;
|
|
63
65
|
}
|
|
@@ -70,7 +72,7 @@ export function resolveLocaleRedirect({ prefixLocale, cookieLocale, geoLocale, p
|
|
|
70
72
|
if (preferred &&
|
|
71
73
|
preferred !== config.defaultLocale &&
|
|
72
74
|
config.enabledLocales.includes(preferred)) {
|
|
73
|
-
return `/${preferred}${pathname === '/' ? '' : pathname}
|
|
75
|
+
return { path: `/${preferred}${pathname === '/' ? '' : pathname}`, permanent: false };
|
|
74
76
|
}
|
|
75
77
|
return null;
|
|
76
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/core/i18n/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GAElB,MAAM,SAAS,CAAA;AAQhB;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAGjC;IACN,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,EAAE,aAAa,CAAC;QACpD,CAAC,CAAC,QAAQ,CAAC,aAAa;QACxB,CAAC,CAAC,cAAc,CAAA;IAClB,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,cAAc,IAAI,EAAE,CAAC;SAC7C,MAAM,CAAC,iBAAiB,CAAC;QAC1B,qCAAqC;SACpC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAChD,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,CAAA;AACxD,CAAC;AAYD;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAE,YAAY,EAAE,MAAM,EAAsB;IAC/E,IAAI,iBAAiB,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACpF,OAAO,YAAY,CAAA;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,aAAa,CAAA;AAC7B,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/core/i18n/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GAElB,MAAM,SAAS,CAAA;AAQhB;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAGjC;IACN,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,EAAE,aAAa,CAAC;QACpD,CAAC,CAAC,QAAQ,CAAC,aAAa;QACxB,CAAC,CAAC,cAAc,CAAA;IAClB,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,cAAc,IAAI,EAAE,CAAC;SAC7C,MAAM,CAAC,iBAAiB,CAAC;QAC1B,qCAAqC;SACpC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAChD,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,CAAA;AACxD,CAAC;AAYD;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAE,YAAY,EAAE,MAAM,EAAsB;IAC/E,IAAI,iBAAiB,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACpF,OAAO,YAAY,CAAA;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,aAAa,CAAA;AAC7B,CAAC;AAkBD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CAAC,EACpC,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,MAAM,GACc;IACpB,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAEvD,mEAAmE;IACnE,IAAI,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,KAAK,MAAM,CAAC,aAAa,EAAE,CAAC;YAC3F,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,YAAY,SAAS,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAA;YAChF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;QACxC,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,oEAAoE;IACpE,MAAM,SAAS,GAAG,iBAAiB,CAAC,YAAY,CAAC;QAC/C,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC;YAC5B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,CAAA;IACV,IACE,SAAS;QACT,SAAS,KAAK,MAAM,CAAC,aAAa;QAClC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,EACzC,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,SAAS,GAAG,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;IACvF,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,MAAmB,EAAE,aAA0B;IAC1F,8CAA8C;IAC9C,IAAI,IAAI,GAAG,QAAQ,CAAA;IACnB,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACtC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAA;YAClC,MAAK;QACP,CAAC;IACH,CAAC;IACD,IAAI,MAAM,KAAK,aAAa;QAAE,OAAO,IAAI,CAAA;IACzC,OAAO,IAAI,MAAM,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;AAChD,CAAC"}
|
|
@@ -16,4 +16,7 @@ export { db, getDb, getSql, createDb, checkConnection, getConnectionInfo, schema
|
|
|
16
16
|
export type { OnboardingState, SdkDb, CustomerAddressInput, CustomerGroupInput, PaymentMethodInput, StoreLocationInput, } from '../db';
|
|
17
17
|
export { sanitizeRichHtml } from './sanitize';
|
|
18
18
|
export type { Product as DbProduct, NewProduct, ProductVariant as DbProductVariant, NewProductVariant, Category as DbCategory, NewCategory, Order as DbOrder, NewOrder, OrderItem as DbOrderItem, NewOrderItem, Customer as DbCustomer, NewCustomer, StoreAdmin as DbStoreAdmin, NewStoreAdmin, FindProductsOptions, FindOrdersOptions, } from '../db';
|
|
19
|
+
export { localizedAlternates } from './locale-metadata';
|
|
20
|
+
export { getRequestLocale } from './request-locale';
|
|
21
|
+
export type { RequestLocaleResult } from './request-locale';
|
|
19
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,QAAQ,GACT,MAAM,WAAW,CAAA;AAGlB,YAAY,EACV,SAAS,EACT,cAAc,EACd,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EAEjB,UAAU,EACV,cAAc,EACd,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,EAEb,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,GACZ,MAAM,WAAW,CAAA;AAGlB,OAAO,EAEL,EAAE,EACF,KAAK,EACL,MAAM,EAEN,QAAQ,EAER,eAAe,EACf,iBAAiB,EAEjB,MAAM,EAEN,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,aAAa,EAEb,aAAa,EACb,aAAa,EACb,aAAa,EACb,iBAAiB,EAEjB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EAEf,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EAEf,cAAc,EACd,cAAc,EACd,cAAc,EAEd,UAAU,EACV,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EAEjB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB,EAEvB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,kBAAkB,EAElB,2BAA2B,EAC3B,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EAEzB,0BAA0B,EAC1B,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAEhB,uBAAuB,EACvB,gBAAgB,EAEhB,0BAA0B,EAC1B,kBAAkB,EAClB,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EAEnB,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EAEnB,gBAAgB,EAEhB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EAEf,YAAY,EACZ,cAAc,EAEd,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,OAAO,CAAA;AAEd,YAAY,EACV,eAAe,EACf,KAAK,EACL,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,OAAO,CAAA;AAId,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAG7C,YAAY,EACV,OAAO,IAAI,SAAS,EACpB,UAAU,EACV,cAAc,IAAI,gBAAgB,EAClC,iBAAiB,EACjB,QAAQ,IAAI,UAAU,EACtB,WAAW,EACX,KAAK,IAAI,OAAO,EAChB,QAAQ,EACR,SAAS,IAAI,WAAW,EACxB,YAAY,EACZ,QAAQ,IAAI,UAAU,EACtB,WAAW,EACX,UAAU,IAAI,YAAY,EAC1B,aAAa,EACb,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,OAAO,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,QAAQ,GACT,MAAM,WAAW,CAAA;AAGlB,YAAY,EACV,SAAS,EACT,cAAc,EACd,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EAEjB,UAAU,EACV,cAAc,EACd,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,EAEb,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,GACZ,MAAM,WAAW,CAAA;AAGlB,OAAO,EAEL,EAAE,EACF,KAAK,EACL,MAAM,EAEN,QAAQ,EAER,eAAe,EACf,iBAAiB,EAEjB,MAAM,EAEN,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,aAAa,EAEb,aAAa,EACb,aAAa,EACb,aAAa,EACb,iBAAiB,EAEjB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EAEf,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EAEf,cAAc,EACd,cAAc,EACd,cAAc,EAEd,UAAU,EACV,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EAEjB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB,EAEvB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,kBAAkB,EAElB,2BAA2B,EAC3B,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EAEzB,0BAA0B,EAC1B,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAEhB,uBAAuB,EACvB,gBAAgB,EAEhB,0BAA0B,EAC1B,kBAAkB,EAClB,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EAEnB,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EAEnB,gBAAgB,EAEhB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EAEf,YAAY,EACZ,cAAc,EAEd,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,OAAO,CAAA;AAEd,YAAY,EACV,eAAe,EACf,KAAK,EACL,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,OAAO,CAAA;AAId,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAG7C,YAAY,EACV,OAAO,IAAI,SAAS,EACpB,UAAU,EACV,cAAc,IAAI,gBAAgB,EAClC,iBAAiB,EACjB,QAAQ,IAAI,UAAU,EACtB,WAAW,EACX,KAAK,IAAI,OAAO,EAChB,QAAQ,EACR,SAAS,IAAI,WAAW,EACxB,YAAY,EACZ,QAAQ,IAAI,UAAU,EACtB,WAAW,EACX,UAAU,IAAI,YAAY,EAC1B,aAAa,EACb,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,OAAO,CAAA;AAGd,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -59,4 +59,7 @@ ensureOnboardingColumn, getOnboardingState, setOnboardingFlag, getSetupGuideSign
|
|
|
59
59
|
// Server-side HTML sanitizer for `html`-typed metafields (rich descriptions).
|
|
60
60
|
// Sanitize at the write boundary (admin product save + catalog import).
|
|
61
61
|
export { sanitizeRichHtml } from './sanitize';
|
|
62
|
+
// Locale-aware metadata alternates (canonical + hreflang, i18n core)
|
|
63
|
+
export { localizedAlternates } from './locale-metadata';
|
|
64
|
+
export { getRequestLocale } from './request-locale';
|
|
62
65
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,oCAAoC;AACpC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,QAAQ,GACT,MAAM,WAAW,CAAA;AA2BlB,6EAA6E;AAC7E,OAAO;AACL,SAAS;AACT,EAAE,EACF,KAAK,EACL,MAAM;AACN,oEAAoE;AACpE,QAAQ;AACR,SAAS;AACT,eAAe,EACf,iBAAiB;AACjB,SAAS;AACT,MAAM;AACN,qBAAqB;AACrB,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,aAAa;AACb,uBAAuB;AACvB,aAAa,EACb,aAAa,EACb,aAAa,EACb,iBAAiB;AACjB,+BAA+B;AAC/B,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,eAAe;AACf,uBAAuB;AACvB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,eAAe;AACf,yBAAyB;AACzB,cAAc,EACd,cAAc,EACd,cAAc;AACd,mBAAmB;AACnB,UAAU,EACV,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,WAAW,EACX,kBAAkB,EAClB,iBAAiB;AACjB,qBAAqB;AACrB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB;AACvB,sBAAsB;AACtB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,kBAAkB;AAClB,oCAAoC;AACpC,2BAA2B,EAC3B,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB;AACzB,oDAAoD;AACpD,0BAA0B,EAC1B,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB;AAChB,yBAAyB;AACzB,uBAAuB,EACvB,gBAAgB;AAChB,+CAA+C;AAC/C,0BAA0B,EAC1B,kBAAkB,EAClB,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB;AACnB,qDAAqD;AACrD,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB;AACnB,SAAS;AACT,gBAAgB;AAChB,QAAQ;AACR,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,eAAe;AACf,iBAAiB;AACjB,YAAY,EACZ,cAAc;AACd,uCAAuC;AACvC,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,OAAO,CAAA;AAWd,8EAA8E;AAC9E,wEAAwE;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,oCAAoC;AACpC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,QAAQ,GACT,MAAM,WAAW,CAAA;AA2BlB,6EAA6E;AAC7E,OAAO;AACL,SAAS;AACT,EAAE,EACF,KAAK,EACL,MAAM;AACN,oEAAoE;AACpE,QAAQ;AACR,SAAS;AACT,eAAe,EACf,iBAAiB;AACjB,SAAS;AACT,MAAM;AACN,qBAAqB;AACrB,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,aAAa;AACb,uBAAuB;AACvB,aAAa,EACb,aAAa,EACb,aAAa,EACb,iBAAiB;AACjB,+BAA+B;AAC/B,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,eAAe;AACf,uBAAuB;AACvB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,eAAe;AACf,yBAAyB;AACzB,cAAc,EACd,cAAc,EACd,cAAc;AACd,mBAAmB;AACnB,UAAU,EACV,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,WAAW,EACX,kBAAkB,EAClB,iBAAiB;AACjB,qBAAqB;AACrB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB;AACvB,sBAAsB;AACtB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,kBAAkB;AAClB,oCAAoC;AACpC,2BAA2B,EAC3B,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB;AACzB,oDAAoD;AACpD,0BAA0B,EAC1B,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB;AAChB,yBAAyB;AACzB,uBAAuB,EACvB,gBAAgB;AAChB,+CAA+C;AAC/C,0BAA0B,EAC1B,kBAAkB,EAClB,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB;AACnB,qDAAqD;AACrD,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB;AACnB,SAAS;AACT,gBAAgB;AAChB,QAAQ;AACR,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,eAAe;AACf,iBAAiB;AACjB,YAAY,EACZ,cAAc;AACd,uCAAuC;AACvC,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,OAAO,CAAA;AAWd,8EAA8E;AAC9E,wEAAwE;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAsB7C,qEAAqE;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela-ai/sdk/core/server/locale-metadata
|
|
3
|
+
*
|
|
4
|
+
* Locale-aware `metadata.alternates` for template pages — the SEO-correct
|
|
5
|
+
* companion to the path-prefix routing:
|
|
6
|
+
*
|
|
7
|
+
* - each locale variant SELF-canonicalizes (`/en/products/x` → canonical
|
|
8
|
+
* `/en/products/x`, never the default-locale URL — a cross-locale
|
|
9
|
+
* canonical tells Google the translation is a duplicate and suppresses
|
|
10
|
+
* it from the index);
|
|
11
|
+
* - every variant declares the full hreflang set including `x-default`
|
|
12
|
+
* (pointing at the default-locale URL) so Google pairs the translations.
|
|
13
|
+
*
|
|
14
|
+
* Single-locale stores get a plain self-canonical — byte-identical to the
|
|
15
|
+
* pre-i18n output. Server-only (reads request headers + settings).
|
|
16
|
+
*
|
|
17
|
+
* Usage in a template page's generateMetadata:
|
|
18
|
+
* ```ts
|
|
19
|
+
* export async function generateMetadata({ params }) {
|
|
20
|
+
* const { slug } = await params
|
|
21
|
+
* return { title: ..., alternates: await localizedAlternates(`/products/${slug}`) }
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
import type { Metadata } from 'next';
|
|
26
|
+
/**
|
|
27
|
+
* Build `alternates` (canonical + hreflang languages) for the BARE path of
|
|
28
|
+
* the current page (`/products/x`, no locale prefix — the helper applies
|
|
29
|
+
* the active request's prefix itself).
|
|
30
|
+
*/
|
|
31
|
+
export declare function localizedAlternates(barePath: string): Promise<Metadata['alternates']>;
|
|
32
|
+
//# sourceMappingURL=locale-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale-metadata.d.ts","sourceRoot":"","sources":["../../../src/core/server/locale-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AASpC;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAiC3F"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela-ai/sdk/core/server/locale-metadata
|
|
3
|
+
*
|
|
4
|
+
* Locale-aware `metadata.alternates` for template pages — the SEO-correct
|
|
5
|
+
* companion to the path-prefix routing:
|
|
6
|
+
*
|
|
7
|
+
* - each locale variant SELF-canonicalizes (`/en/products/x` → canonical
|
|
8
|
+
* `/en/products/x`, never the default-locale URL — a cross-locale
|
|
9
|
+
* canonical tells Google the translation is a duplicate and suppresses
|
|
10
|
+
* it from the index);
|
|
11
|
+
* - every variant declares the full hreflang set including `x-default`
|
|
12
|
+
* (pointing at the default-locale URL) so Google pairs the translations.
|
|
13
|
+
*
|
|
14
|
+
* Single-locale stores get a plain self-canonical — byte-identical to the
|
|
15
|
+
* pre-i18n output. Server-only (reads request headers + settings).
|
|
16
|
+
*
|
|
17
|
+
* Usage in a template page's generateMetadata:
|
|
18
|
+
* ```ts
|
|
19
|
+
* export async function generateMetadata({ params }) {
|
|
20
|
+
* const { slug } = await params
|
|
21
|
+
* return { title: ..., alternates: await localizedAlternates(`/products/${slug}`) }
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
import { headers } from 'next/headers';
|
|
26
|
+
import { findSettings } from '../db/queries';
|
|
27
|
+
import { resolveStoreLocaleConfig } from '../i18n/resolve';
|
|
28
|
+
import { LOCALE_HEADER, isSupportedLocale } from '../i18n/types';
|
|
29
|
+
function baseUrl() {
|
|
30
|
+
return (process.env.NEXT_PUBLIC_APP_URL || '').replace(/\/$/, '');
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Build `alternates` (canonical + hreflang languages) for the BARE path of
|
|
34
|
+
* the current page (`/products/x`, no locale prefix — the helper applies
|
|
35
|
+
* the active request's prefix itself).
|
|
36
|
+
*/
|
|
37
|
+
export async function localizedAlternates(barePath) {
|
|
38
|
+
const base = baseUrl();
|
|
39
|
+
const path = barePath === '/' ? '' : barePath;
|
|
40
|
+
let config;
|
|
41
|
+
try {
|
|
42
|
+
config = resolveStoreLocaleConfig(await findSettings());
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
config = resolveStoreLocaleConfig(null);
|
|
46
|
+
}
|
|
47
|
+
const urlFor = (locale) => locale === config.defaultLocale ? `${base}${path || '/'}` : `${base}/${locale}${path}`;
|
|
48
|
+
// Single-locale store: plain self-canonical, no hreflang (pre-i18n shape).
|
|
49
|
+
if (config.enabledLocales.length < 2) {
|
|
50
|
+
return { canonical: `${base}${path || '/'}` };
|
|
51
|
+
}
|
|
52
|
+
const hdrs = await headers();
|
|
53
|
+
const prefixLocale = hdrs.get(LOCALE_HEADER);
|
|
54
|
+
const active = isSupportedLocale(prefixLocale) && config.enabledLocales.includes(prefixLocale)
|
|
55
|
+
? prefixLocale
|
|
56
|
+
: config.defaultLocale;
|
|
57
|
+
return {
|
|
58
|
+
canonical: urlFor(active),
|
|
59
|
+
languages: {
|
|
60
|
+
...Object.fromEntries(config.enabledLocales.map((l) => [l, urlFor(l)])),
|
|
61
|
+
'x-default': urlFor(config.defaultLocale),
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=locale-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale-metadata.js","sourceRoot":"","sources":["../../../src/core/server/locale-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEhE,SAAS,OAAO;IACd,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,QAAgB;IACxD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IACtB,MAAM,IAAI,GAAG,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;IAE7C,IAAI,MAAM,CAAA;IACV,IAAI,CAAC;QACH,MAAM,GAAG,wBAAwB,CAAC,MAAM,YAAY,EAAE,CAAC,CAAA;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAA;IACzC,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,EAAE,CAChC,MAAM,KAAK,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,MAAM,GAAG,IAAI,EAAE,CAAA;IAExF,2EAA2E;IAC3E,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,CAAA;IAC/C,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAA;IAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IAC5C,MAAM,MAAM,GACV,iBAAiB,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC7E,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,MAAM,CAAC,aAAa,CAAA;IAE1B,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;QACzB,SAAS,EAAE;YACT,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;SAC1C;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela-ai/sdk/core/server/request-locale
|
|
3
|
+
*
|
|
4
|
+
* Server-side request-locale resolution for template pages and public API
|
|
5
|
+
* handlers. Two sources, in priority order:
|
|
6
|
+
*
|
|
7
|
+
* 1. the proxy's prefix header (`x-rovela-locale`) — set on rewritten
|
|
8
|
+
* /fr-style page requests;
|
|
9
|
+
* 2. an explicit `?locale=` query param — how CLIENT-side fetches to public
|
|
10
|
+
* APIs (which the proxy deliberately excludes from locale handling)
|
|
11
|
+
* carry the active locale across.
|
|
12
|
+
*
|
|
13
|
+
* Both are validated against the store's ENABLED locales — an arbitrary
|
|
14
|
+
* param can never select an unserved language.
|
|
15
|
+
*/
|
|
16
|
+
import { type StoreLocaleConfig } from '../i18n/resolve';
|
|
17
|
+
import { type StoreLocale } from '../i18n/types';
|
|
18
|
+
export interface RequestLocaleResult {
|
|
19
|
+
locale: StoreLocale;
|
|
20
|
+
config: StoreLocaleConfig;
|
|
21
|
+
}
|
|
22
|
+
/** Resolve the active locale for the current server request. */
|
|
23
|
+
export declare function getRequestLocale(explicit?: string | null): Promise<RequestLocaleResult>;
|
|
24
|
+
//# sourceMappingURL=request-locale.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-locale.d.ts","sourceRoot":"","sources":["../../../src/core/server/request-locale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAClF,OAAO,EAAoC,KAAK,WAAW,EAAE,MAAM,eAAe,CAAA;AAElF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,WAAW,CAAA;IACnB,MAAM,EAAE,iBAAiB,CAAA;CAC1B;AAED,gEAAgE;AAChE,wBAAsB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAuB7F"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela-ai/sdk/core/server/request-locale
|
|
3
|
+
*
|
|
4
|
+
* Server-side request-locale resolution for template pages and public API
|
|
5
|
+
* handlers. Two sources, in priority order:
|
|
6
|
+
*
|
|
7
|
+
* 1. the proxy's prefix header (`x-rovela-locale`) — set on rewritten
|
|
8
|
+
* /fr-style page requests;
|
|
9
|
+
* 2. an explicit `?locale=` query param — how CLIENT-side fetches to public
|
|
10
|
+
* APIs (which the proxy deliberately excludes from locale handling)
|
|
11
|
+
* carry the active locale across.
|
|
12
|
+
*
|
|
13
|
+
* Both are validated against the store's ENABLED locales — an arbitrary
|
|
14
|
+
* param can never select an unserved language.
|
|
15
|
+
*/
|
|
16
|
+
import { headers } from 'next/headers';
|
|
17
|
+
import { findSettings } from '../db/queries';
|
|
18
|
+
import { resolveStoreLocaleConfig } from '../i18n/resolve';
|
|
19
|
+
import { LOCALE_HEADER, isSupportedLocale } from '../i18n/types';
|
|
20
|
+
/** Resolve the active locale for the current server request. */
|
|
21
|
+
export async function getRequestLocale(explicit) {
|
|
22
|
+
let config;
|
|
23
|
+
try {
|
|
24
|
+
config = resolveStoreLocaleConfig(await findSettings());
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
config = resolveStoreLocaleConfig(null);
|
|
28
|
+
}
|
|
29
|
+
// Explicit param (API fetches) wins over the header when valid.
|
|
30
|
+
if (isSupportedLocale(explicit) && config.enabledLocales.includes(explicit)) {
|
|
31
|
+
return { locale: explicit, config };
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const prefixLocale = (await headers()).get(LOCALE_HEADER);
|
|
35
|
+
if (isSupportedLocale(prefixLocale) && config.enabledLocales.includes(prefixLocale)) {
|
|
36
|
+
return { locale: prefixLocale, config };
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// headers() unavailable (build-time) → default
|
|
41
|
+
}
|
|
42
|
+
return { locale: config.defaultLocale, config };
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=request-locale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-locale.js","sourceRoot":"","sources":["../../../src/core/server/request-locale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,wBAAwB,EAA0B,MAAM,iBAAiB,CAAA;AAClF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAoB,MAAM,eAAe,CAAA;AAOlF,gEAAgE;AAChE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAwB;IAC7D,IAAI,MAAyB,CAAA;IAC7B,IAAI,CAAC;QACH,MAAM,GAAG,wBAAwB,CAAC,MAAM,YAAY,EAAE,CAAC,CAAA;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAA;IACzC,CAAC;IAED,gEAAgE;IAChE,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5E,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;IACrC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QACzD,IAAI,iBAAiB,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACpF,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAA;QACzC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;IACjD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAAA;AACjD,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela-ai/sdk/emails/i18n
|
|
3
|
+
*
|
|
4
|
+
* Transactional-email localization (i18n B3) — a locale post-processor at
|
|
5
|
+
* the render boundary. The templates render in English (the proven,
|
|
6
|
+
* table-based builders stay untouched); when an order/customer carries a
|
|
7
|
+
* non-English locale, the rendered HTML + subject pass through a per-locale
|
|
8
|
+
* phrase table plus date / currency / greeting transforms.
|
|
9
|
+
*
|
|
10
|
+
* Why a post-processor instead of t() calls inside the 11 templates:
|
|
11
|
+
* production-proven (this engine ran for weeks on a live French store
|
|
12
|
+
* before being upstreamed), zero-risk to the English output (unmatched
|
|
13
|
+
* strings stay English — never broken markup), and one file to maintain
|
|
14
|
+
* until the visual email editor re-architects rendering anyway.
|
|
15
|
+
*
|
|
16
|
+
* Longest-first replacement so short labels never corrupt longer phrases.
|
|
17
|
+
* Day abbreviations are digit-anchored ("Mon 1" → "lun. 1") so they can
|
|
18
|
+
* never touch a French word ("Mon compte").
|
|
19
|
+
*/
|
|
20
|
+
import { type StoreLocale } from '../core/i18n/types';
|
|
21
|
+
/**
|
|
22
|
+
* Localize a rendered email (HTML body or subject line) for a locale.
|
|
23
|
+
* English (or anything unmapped) returns the input unchanged — the email is
|
|
24
|
+
* NEVER broken by localization, worst case it ships in English.
|
|
25
|
+
*/
|
|
26
|
+
export declare function localizeEmail(input: string, locale: StoreLocale | string | null | undefined): string;
|
|
27
|
+
//# sourceMappingURL=i18n.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/emails/i18n.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAA;AA2PlE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAIpG"}
|