@shophost/rest-api 2.0.70 → 2.0.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/package.json +1 -1
  2. package/src/core/auth/better-auth.lib.js +1 -1
  3. package/src/core/auth/password-reset.lib.d.ts +3 -0
  4. package/src/core/auth/password-reset.lib.js +1 -0
  5. package/src/core/notifications/email.service.d.ts +13 -0
  6. package/src/core/notifications/email.service.js +1 -1
  7. package/src/features/access/access.route.d.ts +2 -2
  8. package/src/features/auth/emails/password-reset.email.d.ts +17 -0
  9. package/src/features/auth/emails/password-reset.email.js +1 -0
  10. package/src/features/cart/cart.route.d.ts +4 -4
  11. package/src/features/cart/cart.schema.d.ts +6 -6
  12. package/src/features/cart/cart.service.d.ts +1 -1
  13. package/src/features/customer/customer.route.d.ts +4 -4
  14. package/src/features/customer/customer.schema.d.ts +4 -4
  15. package/src/features/customer/customer.service.d.ts +1 -1
  16. package/src/features/manufacturer/manufacturer.route.d.ts +4 -4
  17. package/src/features/order/order.route.d.ts +28 -28
  18. package/src/features/order/order.schema.d.ts +6 -6
  19. package/src/features/order/order.service.d.ts +5 -5
  20. package/src/features/organization/organization-configuration.schema.d.ts +8 -8
  21. package/src/features/organization/organization.route.d.ts +22 -22
  22. package/src/features/organization/organization.schema.d.ts +8 -8
  23. package/src/features/organization/organization.service.d.ts +8 -8
  24. package/src/features/product/product-modifier.schema.d.ts +10 -10
  25. package/src/features/product/product.route.d.ts +58 -58
  26. package/src/features/product/product.schema.d.ts +20 -20
  27. package/src/features/product/product.service.d.ts +20 -20
  28. package/src/features/product-category/product-category.route.d.ts +4 -4
  29. package/src/features/reservation/reservation.route.d.ts +4 -4
  30. package/src/features/reservation/reservation.schema.d.ts +2 -2
  31. package/src/features/shipping-method/shipping-method.route.d.ts +2 -2
  32. package/src/schemas/locales.schema.d.ts +2 -2
  33. package/src/schemas/pagination.schema.d.ts +2 -2
  34. package/src/schemas/queries.schema.d.ts +2 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shophost/rest-api",
3
- "version": "2.0.70",
3
+ "version": "2.0.71",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "shophost-rest-api": "./scripts/shophost-rest-api.mjs"
@@ -1 +1 @@
1
- import{betterAuth as l}from"better-auth";import{prismaAdapter as d}from"better-auth/adapters/prisma";import{nextCookies as c}from"better-auth/next-js";import{openAPI as p,organization as u}from"better-auth/plugins";import{createAccessControl as m}from"better-auth/plugins/access";import{getCurrentUser as g,isGranted as f}from"./auth.util";const b={project:["create","read","update","delete"],organization:["create","read","update","delete"]},e=m(b),C=e.newRole({project:["read"]}),h=e.newRole({project:["read"]}),j=e.newRole({project:["create","read","update","delete"]}),w=e.newRole({project:["create","read","update","delete"],organization:["update"]}),A=e.newRole({project:["create","read","update","delete"],organization:["update","delete"]});export const createAuthClient=({prisma:n,baseURL:s,domain:r,trustedOrigins:i,socialProviders:t})=>{const o=l({baseURL:s,database:d(n,{provider:"postgresql"}),trustedOrigins:i,user:{additionalFields:{firstname:{type:"string",required:!0},lastname:{type:"string",required:!0}}},advanced:{crossSubDomainCookies:{enabled:!0,domain:r},useSecureCookies:r!=="localhost",defaultCookieAttributes:{path:"/",sameSite:"lax",httpOnly:!0,secure:r!=="localhost"}},emailAndPassword:{enabled:!0},socialProviders:Object.assign({},t?.google?{google:{prompt:"select_account",clientId:t.google.clientId,clientSecret:t.google.clientSecret,mapProfileToUser:a=>({firstname:a.given_name,lastname:a.family_name})}}:{}),plugins:[p(),c(),u({ac:e,roles:{member:h,readOnly:C,manager:j,admin:w,owner:A}})]});return{auth:o,getCurrentUser:g(o),isGranted:f(o)}};
1
+ import{__awaiter as b}from"tslib";import{betterAuth as v}from"better-auth";import{prismaAdapter as y}from"better-auth/adapters/prisma";import{nextCookies as z}from"better-auth/next-js";import{openAPI as h,organization as R}from"better-auth/plugins";import{createAccessControl as S}from"better-auth/plugins/access";import{logger as m}from"../logging/pino";import{EmailService as A}from"../notifications/email.service";import{IntegrationRegistry as C}from"../../features/integration/integration-registry";import{getCurrentUser as I,isGranted as j}from"./auth.util";import{resolvePasswordResetOrganizationId as k}from"./password-reset.lib";const _={project:["create","read","update","delete"],organization:["create","read","update","delete"]},t=S(_),O=t.newRole({project:["read"]}),q=t.newRole({project:["read"]}),x=t.newRole({project:["create","read","update","delete"]}),F=t.newRole({project:["create","read","update","delete"],organization:["update"]}),P=t.newRole({project:["create","read","update","delete"],organization:["update","delete"]});export const createAuthClient=({prisma:o,baseURL:c,domain:i,trustedOrigins:u,socialProviders:r})=>{const p=new A(new C(o)),l=v({baseURL:c,database:y(o,{provider:"postgresql"}),trustedOrigins:u,user:{additionalFields:{firstname:{type:"string",required:!0},lastname:{type:"string",required:!0}}},advanced:{crossSubDomainCookies:{enabled:!0,domain:i},useSecureCookies:i!=="localhost",defaultCookieAttributes:{path:"/",sameSite:"lax",httpOnly:!0,secure:i!=="localhost"}},emailAndPassword:{enabled:!0,sendResetPassword:(a,g)=>b(void 0,[a,g],void 0,function*({user:e,url:f},w){var d;const n=yield k(o,w,e.id);if(!n){m.warn({email:e.email,userId:e.id},"Skipping password reset email because no organization could be resolved");return}const s=yield o.organization.findFirst({where:{id:n,deletedAt:null},select:{id:!0,name:!0,email:!0,logoFile:{select:{url:!0}}}});if(!s){m.warn({organizationId:n,userId:e.id},"Skipping password reset email because the organization was not found");return}yield p.sendPasswordResetEmail(n,{email:e.email,firstname:typeof e.firstname=="string"&&(d=e.firstname)!==null&&d!==void 0?d:null,name:e.name},s,f)})},socialProviders:Object.assign({},r?.google?{google:{prompt:"select_account",clientId:r.google.clientId,clientSecret:r.google.clientSecret,mapProfileToUser:a=>({firstname:a.given_name,lastname:a.family_name})}}:{}),plugins:[h(),z(),R({ac:t,roles:{member:q,readOnly:O,manager:x,admin:F,owner:P}})]});return{auth:l,getCurrentUser:I(l),isGranted:j(l)}};
@@ -0,0 +1,3 @@
1
+ import type { PrismaClientType } from "../lib/prisma";
2
+ export declare const PASSWORD_RESET_ORGANIZATION_HEADER = "x-shophost-organization-id";
3
+ export declare const resolvePasswordResetOrganizationId: (prisma: PrismaClientType, request: Pick<Request, "headers"> | null | undefined, userId: string) => Promise<string | undefined>;
@@ -0,0 +1 @@
1
+ import{__awaiter as d}from"tslib";export const PASSWORD_RESET_ORGANIZATION_HEADER="x-shophost-organization-id";const a=i=>{const o=i?.trim();return o||void 0};export const resolvePasswordResetOrganizationId=(i,o,r)=>d(void 0,void 0,void 0,function*(){const t=a(o?.headers.get(PASSWORD_RESET_ORGANIZATION_HEADER));if(t){const e=yield i.organization.findFirst({where:{id:t,deletedAt:null},select:{id:!0}});if(e)return e.id}const n=yield i.member.findFirst({where:{userId:r},orderBy:{createdAt:"asc"},select:{organizationId:!0}});return n?.organizationId});
@@ -5,6 +5,10 @@ interface ReservationWithRelations extends Reservation {
5
5
  user: User | null;
6
6
  organization: Organization;
7
7
  }
8
+ interface OrganizationEmailSender {
9
+ email?: string | null;
10
+ name: string;
11
+ }
8
12
  declare class EmailService {
9
13
  private readonly integrationRegistry;
10
14
  private readonly runtimes;
@@ -19,6 +23,15 @@ declare class EmailService {
19
23
  * Sends an order confirmation email
20
24
  */
21
25
  sendOrderConfirmationEmail(organizationId: string, user: User, organization: Organization, order: Order): Promise<void>;
26
+ sendPasswordResetEmail(organizationId: string, user: {
27
+ email: string;
28
+ firstname?: string | null;
29
+ name?: string | null;
30
+ }, organization: OrganizationEmailSender & {
31
+ logoFile?: {
32
+ url?: string | null;
33
+ } | null;
34
+ }, resetUrl: string): Promise<void>;
22
35
  /**
23
36
  * Sends an order confirmation email
24
37
  */
@@ -1 +1 @@
1
- import{__awaiter as r}from"tslib";import{Resend as m}from"resend";import{getStoredResendConfig as l}from"../../features/integration/integration-config";import{OrderConfirmationEmail as a}from"../../features/order/emails/order-confirmation.email";import u from"../../features/order/emails/order-notification.email";import{ReservationCancellationEmail as c}from"../../features/reservation/emails/reservation-cancellation.email";import{ReservationConfirmationEmail as f}from"../../features/reservation/emails/reservation-confirmation.email";import v from"../../features/reservation/emails/reservation-notification.email";import{ReservationUpdatedEmail as h}from"../../features/reservation/emails/reservation-updated.email";import{logger as d}from"../logging/pino";class g{constructor(o){this.integrationRegistry=o,this.runtimes=new Map}getRuntime(o){return r(this,void 0,void 0,function*(){const e=l(this.integrationRegistry.get(o,"resend")),i=JSON.stringify(e??null),t=this.runtimes.get(o);if(t?.signature===i)return t;const n={fromEmail:e?.fromEmail,resend:e?.apiKey?new m(e.apiKey):void 0,signature:i};return this.runtimes.set(o,n),n})}getFromAddress(o,e){return r(this,void 0,void 0,function*(){var i,t;const s=(t=(i=(yield this.getRuntime(o)).fromEmail)!==null&&i!==void 0?i:e.email)!==null&&t!==void 0?t:"info@shophost.io";return`${e.name} <${s}>`})}sendEmail(o,e,i){return r(this,void 0,void 0,function*(){const t=yield this.getRuntime(o);if(!t.resend)return;const{data:n,error:s}=yield t.resend.emails.send(e,i);if(s)throw d.error({resendError:s,from:e.from,subject:e.subject,to:e.to},"Failed to send email with Resend"),new Error(`Resend send failed: ${s.name}: ${s.message}`);return d.info({emailId:n?.id,subject:e.subject,to:e.to},"Email sent with Resend"),n})}sendOrderConfirmationEmail(o,e,i,t){return r(this,void 0,void 0,function*(){console.log(`Sending order confirmation email to ${e.email}`),yield this.sendEmail(o,{from:yield this.getFromAddress(o,i),to:[e.email],subject:`Order Confirmation - Order #${t.referenceId} | ${i.name}`,react:a({user:e,organization:i,order:t})})})}sendOrderNotificationEmail(o,e,i,t,n){return r(this,void 0,void 0,function*(){console.log(`Sending order notification email to ${i.email}`),yield this.sendEmail(o,{from:yield this.getFromAddress(o,t),to:[i.email],subject:`You have received a new order | ${t.name}`,react:u({user:e,organization:t,order:n})})})}sendReservationConfirmationEmail(o,e){return r(this,void 0,void 0,function*(){const i=e.user,t=e.organization;i?.email&&(console.log(`Sending reservation confirmation email to ${i.email}`),yield this.sendEmail(o,{from:yield this.getFromAddress(o,t),to:[i.email],subject:`Reservation Confirmation - ${t.name}`,react:f({user:i,organization:t,reservation:e})}))})}sendReservationCancellationEmail(o,e){return r(this,void 0,void 0,function*(){const i=e.user,t=e.organization;i?.email&&(console.log(`Sending reservation cancellation email to ${i.email}`),yield this.sendEmail(o,{from:yield this.getFromAddress(o,t),to:[i.email],subject:`Reservation Cancelled - ${t.name}`,react:c({user:i,organization:t,reservation:e})}))})}sendReservationNotificationEmail(o,e,i){return r(this,void 0,void 0,function*(){const t=i.user,n=i.organization;t&&(console.log(`Sending reservation notification email to ${e.email}`),yield this.sendEmail(o,{from:yield this.getFromAddress(o,n),to:[e.email],subject:`New Reservation Request | ${n.name}`,react:v({user:t,member:e,organization:n,reservation:i})}))})}sendReservationUpdatedEmail(o,e){return r(this,void 0,void 0,function*(){const i=e.user,t=e.organization;i?.email&&(console.log(`Sending reservation updated email to ${i.email}`),yield this.sendEmail(o,{from:yield this.getFromAddress(o,t),to:[i.email],subject:`Reservation Updated - ${t.name}`,react:h({user:i,organization:t,reservation:e})}))})}}export{g as EmailService};
1
+ import{__awaiter as r}from"tslib";import{Resend as m}from"resend";import{getStoredResendConfig as l}from"../../features/integration/integration-config";import{PasswordResetEmail as a}from"../../features/auth/emails/password-reset.email";import{OrderConfirmationEmail as u}from"../../features/order/emails/order-confirmation.email";import c from"../../features/order/emails/order-notification.email";import{ReservationCancellationEmail as f}from"../../features/reservation/emails/reservation-cancellation.email";import{ReservationConfirmationEmail as v}from"../../features/reservation/emails/reservation-confirmation.email";import h from"../../features/reservation/emails/reservation-notification.email";import{ReservationUpdatedEmail as g}from"../../features/reservation/emails/reservation-updated.email";import{logger as d}from"../logging/pino";class E{constructor(o){this.integrationRegistry=o,this.runtimes=new Map}getRuntime(o){return r(this,void 0,void 0,function*(){yield this.integrationRegistry.ready();const e=l(this.integrationRegistry.get(o,"resend")),i=JSON.stringify(e??null),t=this.runtimes.get(o);if(t?.signature===i)return t;const n={fromEmail:e?.fromEmail,resend:e?.apiKey?new m(e.apiKey):void 0,signature:i};return this.runtimes.set(o,n),n})}getFromAddress(o,e){return r(this,void 0,void 0,function*(){var i,t;const s=(t=(i=(yield this.getRuntime(o)).fromEmail)!==null&&i!==void 0?i:e.email)!==null&&t!==void 0?t:"info@shophost.io";return`${e.name} <${s}>`})}sendEmail(o,e,i){return r(this,void 0,void 0,function*(){const t=yield this.getRuntime(o);if(!t.resend)return;const{data:n,error:s}=yield t.resend.emails.send(e,i);if(s)throw d.error({resendError:s,from:e.from,subject:e.subject,to:e.to},"Failed to send email with Resend"),new Error(`Resend send failed: ${s.name}: ${s.message}`);return d.info({emailId:n?.id,subject:e.subject,to:e.to},"Email sent with Resend"),n})}sendOrderConfirmationEmail(o,e,i,t){return r(this,void 0,void 0,function*(){console.log(`Sending order confirmation email to ${e.email}`),yield this.sendEmail(o,{from:yield this.getFromAddress(o,i),to:[e.email],subject:`Order Confirmation - Order #${t.referenceId} | ${i.name}`,react:u({user:e,organization:i,order:t})})})}sendPasswordResetEmail(o,e,i,t){return r(this,void 0,void 0,function*(){console.log(`Sending password reset email to ${e.email}`),yield this.sendEmail(o,{from:yield this.getFromAddress(o,i),to:[e.email],subject:`Reset your password | ${i.name}`,react:a({user:e,organization:i,resetUrl:t})})})}sendOrderNotificationEmail(o,e,i,t,n){return r(this,void 0,void 0,function*(){console.log(`Sending order notification email to ${i.email}`),yield this.sendEmail(o,{from:yield this.getFromAddress(o,t),to:[i.email],subject:`You have received a new order | ${t.name}`,react:c({user:e,organization:t,order:n})})})}sendReservationConfirmationEmail(o,e){return r(this,void 0,void 0,function*(){const i=e.user,t=e.organization;i?.email&&(console.log(`Sending reservation confirmation email to ${i.email}`),yield this.sendEmail(o,{from:yield this.getFromAddress(o,t),to:[i.email],subject:`Reservation Confirmation - ${t.name}`,react:v({user:i,organization:t,reservation:e})}))})}sendReservationCancellationEmail(o,e){return r(this,void 0,void 0,function*(){const i=e.user,t=e.organization;i?.email&&(console.log(`Sending reservation cancellation email to ${i.email}`),yield this.sendEmail(o,{from:yield this.getFromAddress(o,t),to:[i.email],subject:`Reservation Cancelled - ${t.name}`,react:f({user:i,organization:t,reservation:e})}))})}sendReservationNotificationEmail(o,e,i){return r(this,void 0,void 0,function*(){const t=i.user,n=i.organization;t&&(console.log(`Sending reservation notification email to ${e.email}`),yield this.sendEmail(o,{from:yield this.getFromAddress(o,n),to:[e.email],subject:`New Reservation Request | ${n.name}`,react:h({user:t,member:e,organization:n,reservation:i})}))})}sendReservationUpdatedEmail(o,e){return r(this,void 0,void 0,function*(){const i=e.user,t=e.organization;i?.email&&(console.log(`Sending reservation updated email to ${i.email}`),yield this.sendEmail(o,{from:yield this.getFromAddress(o,t),to:[i.email],subject:`Reservation Updated - ${t.name}`,react:g({user:i,organization:t,reservation:e})}))})}}export{E as EmailService};
@@ -28,6 +28,8 @@ export declare const accessRoute: {
28
28
  is: "is";
29
29
  mt: "mt";
30
30
  ml: "ml";
31
+ no: "no";
32
+ ms: "ms";
31
33
  af: "af";
32
34
  sq: "sq";
33
35
  ar_dz: "ar_dz";
@@ -97,8 +99,6 @@ export declare const accessRoute: {
97
99
  lv: "lv";
98
100
  lt: "lt";
99
101
  mk: "mk";
100
- ms: "ms";
101
- no: "no";
102
102
  nb: "nb";
103
103
  nn: "nn";
104
104
  pl: "pl";
@@ -0,0 +1,17 @@
1
+ import * as React from "react";
2
+ interface PasswordResetEmailProps {
3
+ organization: {
4
+ name: string;
5
+ logoFile?: {
6
+ url?: string | null;
7
+ } | null;
8
+ };
9
+ resetUrl: string;
10
+ user: {
11
+ email: string;
12
+ firstname?: string | null;
13
+ name?: string | null;
14
+ };
15
+ }
16
+ declare const PasswordResetEmail: React.FC<Readonly<PasswordResetEmailProps>>;
17
+ export { PasswordResetEmail };
@@ -0,0 +1 @@
1
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import{Body as x,Button as h,Container as b,Head as g,Heading as u,Html as p,Img as y,Link as w,Preview as N,Section as l,Tailwind as f,Text as a}from"../../../core/email/components";const v=({organization:s,resetUrl:r,user:o})=>{var n,d,i;const m=`Reset your password for ${s.name}`,c=((n=o.firstname)===null||n===void 0?void 0:n.trim())||((d=o.name)===null||d===void 0?void 0:d.trim())||"there";return t(p,{children:[e(g,{}),e(N,{children:m}),e(f,{children:e(x,{className:"bg-gray-50 font-sans py-10",children:t(b,{className:"mx-auto max-w-[600px] rounded-2xl bg-white px-8 py-10 shadow-sm",children:[t(l,{className:"mb-8 text-center",children:[!((i=s.logoFile)===null||i===void 0)&&i.url?e(y,{alt:`${s.name} logo`,className:"mx-auto rounded-lg",height:"72",src:s.logoFile.url}):null,e(a,{className:"mb-0 mt-4 text-sm uppercase tracking-[0.2em] text-gray-500",children:s.name})]}),t(l,{children:[e(u,{className:"mb-3 text-3xl font-bold text-gray-900",children:"Reset your password"}),t(a,{className:"mb-4 text-base leading-7 text-gray-700",children:["Hi ",c,","]}),t(a,{className:"mb-6 text-base leading-7 text-gray-700",children:["We received a request to reset the password for ",o.email,". Use the button below to choose a new password."]})]}),e(l,{className:"mb-8 text-center",children:e(h,{href:r,className:"rounded-lg bg-black px-6 py-3 text-sm font-semibold text-white no-underline",children:"Reset password"})}),t(l,{className:"rounded-xl border border-gray-200 bg-gray-50 px-5 py-4",children:[e(a,{className:"m-0 text-sm leading-6 text-gray-700",children:"If the button does not work, copy and paste this link into your browser:"}),e(w,{href:r,className:"mt-3 block break-all text-sm leading-6 text-blue-600",children:r})]}),e(a,{className:"mb-0 mt-8 text-sm leading-6 text-gray-500",children:"If you did not request this reset, you can safely ignore this email."})]})})})]})};export{v as PasswordResetEmail};
@@ -46,6 +46,8 @@ export declare const cartRoute: {
46
46
  is: "is";
47
47
  mt: "mt";
48
48
  ml: "ml";
49
+ no: "no";
50
+ ms: "ms";
49
51
  af: "af";
50
52
  sq: "sq";
51
53
  ar_dz: "ar_dz";
@@ -115,8 +117,6 @@ export declare const cartRoute: {
115
117
  lv: "lv";
116
118
  lt: "lt";
117
119
  mk: "mk";
118
- ms: "ms";
119
- no: "no";
120
120
  nb: "nb";
121
121
  nn: "nn";
122
122
  pl: "pl";
@@ -220,6 +220,8 @@ export declare const cartRoute: {
220
220
  is: "is";
221
221
  mt: "mt";
222
222
  ml: "ml";
223
+ no: "no";
224
+ ms: "ms";
223
225
  af: "af";
224
226
  sq: "sq";
225
227
  ar_dz: "ar_dz";
@@ -289,8 +291,6 @@ export declare const cartRoute: {
289
291
  lv: "lv";
290
292
  lt: "lt";
291
293
  mk: "mk";
292
- ms: "ms";
293
- no: "no";
294
294
  nb: "nb";
295
295
  nn: "nn";
296
296
  pl: "pl";
@@ -30,6 +30,8 @@ export declare const CartProductsMappingSchema: z.ZodRecord<z.ZodString, z.ZodOb
30
30
  is: "is";
31
31
  mt: "mt";
32
32
  ml: "ml";
33
+ no: "no";
34
+ ms: "ms";
33
35
  af: "af";
34
36
  sq: "sq";
35
37
  ar_dz: "ar_dz";
@@ -99,8 +101,6 @@ export declare const CartProductsMappingSchema: z.ZodRecord<z.ZodString, z.ZodOb
99
101
  lv: "lv";
100
102
  lt: "lt";
101
103
  mk: "mk";
102
- ms: "ms";
103
- no: "no";
104
104
  nb: "nb";
105
105
  nn: "nn";
106
106
  pl: "pl";
@@ -259,6 +259,8 @@ export declare const CartDataSchema: z.ZodObject<{
259
259
  is: "is";
260
260
  mt: "mt";
261
261
  ml: "ml";
262
+ no: "no";
263
+ ms: "ms";
262
264
  af: "af";
263
265
  sq: "sq";
264
266
  ar_dz: "ar_dz";
@@ -328,8 +330,6 @@ export declare const CartDataSchema: z.ZodObject<{
328
330
  lv: "lv";
329
331
  lt: "lt";
330
332
  mk: "mk";
331
- ms: "ms";
332
- no: "no";
333
333
  nb: "nb";
334
334
  nn: "nn";
335
335
  pl: "pl";
@@ -445,6 +445,8 @@ export declare const CartConflictSchema: z.ZodObject<{
445
445
  is: "is";
446
446
  mt: "mt";
447
447
  ml: "ml";
448
+ no: "no";
449
+ ms: "ms";
448
450
  af: "af";
449
451
  sq: "sq";
450
452
  ar_dz: "ar_dz";
@@ -514,8 +516,6 @@ export declare const CartConflictSchema: z.ZodObject<{
514
516
  lv: "lv";
515
517
  lt: "lt";
516
518
  mk: "mk";
517
- ms: "ms";
518
- no: "no";
519
519
  nb: "nb";
520
520
  nn: "nn";
521
521
  pl: "pl";
@@ -56,7 +56,7 @@ declare class CartService {
56
56
  id: string;
57
57
  selectMin: number;
58
58
  selectMax: number;
59
- defaultLocale?: "hr" | "th" | "tr" | "id" | "is" | "mt" | "ml" | "af" | "sq" | "ar_dz" | "ar_bh" | "ar_eg" | "ar_iq" | "ar_jo" | "ar_kw" | "ar_lb" | "ar_ly" | "ar_ma" | "ar_om" | "ar_qa" | "ar_sa" | "ar_sy" | "ar_tn" | "ar_ae" | "ar_ye" | "eu" | "be" | "bg" | "ca" | "zh_hk" | "zh_cn" | "zh_sg" | "zh_tw" | "cs" | "da" | "nl_be" | "nl" | "en" | "en_au" | "en_bz" | "en_ca" | "en_ie" | "en_jm" | "en_nz" | "en_za" | "en_tt" | "en_gb" | "en_us" | "et" | "fo" | "fa" | "fi" | "fr_be" | "fr_ca" | "fr_lu" | "fr" | "fr_ch" | "gd" | "de_at" | "de_li" | "de_lu" | "de" | "de_ch" | "el" | "he" | "hi" | "hu" | "ga" | "it" | "it_ch" | "ja" | "ko" | "ku" | "lv" | "lt" | "mk" | "ms" | "no" | "nb" | "nn" | "pl" | "pt_br" | "pt" | "pa" | "rm" | "ro" | "ro_md" | "ru" | "ru_md" | "sr" | "sk" | "sl" | "sb" | "es_ar" | "es_bo" | "es_cl" | "es_co" | "es_cr" | "es_do" | "es_ec" | "es_sv" | "es_gt" | "es_hn" | "es_mx" | "es" | "sv" | "sv_fi" | "uk" | "ur" | "vi" | "cy" | "ji" | "zu" | undefined;
59
+ defaultLocale?: "hr" | "th" | "tr" | "id" | "is" | "mt" | "ml" | "no" | "ms" | "af" | "sq" | "ar_dz" | "ar_bh" | "ar_eg" | "ar_iq" | "ar_jo" | "ar_kw" | "ar_lb" | "ar_ly" | "ar_ma" | "ar_om" | "ar_qa" | "ar_sa" | "ar_sy" | "ar_tn" | "ar_ae" | "ar_ye" | "eu" | "be" | "bg" | "ca" | "zh_hk" | "zh_cn" | "zh_sg" | "zh_tw" | "cs" | "da" | "nl_be" | "nl" | "en" | "en_au" | "en_bz" | "en_ca" | "en_ie" | "en_jm" | "en_nz" | "en_za" | "en_tt" | "en_gb" | "en_us" | "et" | "fo" | "fa" | "fi" | "fr_be" | "fr_ca" | "fr_lu" | "fr" | "fr_ch" | "gd" | "de_at" | "de_li" | "de_lu" | "de" | "de_ch" | "el" | "he" | "hi" | "hu" | "ga" | "it" | "it_ch" | "ja" | "ko" | "ku" | "lv" | "lt" | "mk" | "nb" | "nn" | "pl" | "pt_br" | "pt" | "pa" | "rm" | "ro" | "ro_md" | "ru" | "ru_md" | "sr" | "sk" | "sl" | "sb" | "es_ar" | "es_bo" | "es_cl" | "es_co" | "es_cr" | "es_do" | "es_ec" | "es_sv" | "es_gt" | "es_hn" | "es_mx" | "es" | "sv" | "sv_fi" | "uk" | "ur" | "vi" | "cy" | "ji" | "zu" | undefined;
60
60
  modifiers?: {
61
61
  title: string;
62
62
  price: number;
@@ -56,6 +56,8 @@ export declare const customerRoute: {
56
56
  is: "is";
57
57
  mt: "mt";
58
58
  ml: "ml";
59
+ no: "no";
60
+ ms: "ms";
59
61
  af: "af";
60
62
  sq: "sq";
61
63
  ar_dz: "ar_dz";
@@ -125,8 +127,6 @@ export declare const customerRoute: {
125
127
  lv: "lv";
126
128
  lt: "lt";
127
129
  mk: "mk";
128
- ms: "ms";
129
- no: "no";
130
130
  nb: "nb";
131
131
  nn: "nn";
132
132
  pl: "pl";
@@ -356,7 +356,7 @@ export declare const customerRoute: {
356
356
  expiresAt: Date;
357
357
  items: {
358
358
  translations: {
359
- locale: "hr" | "th" | "tr" | "id" | "is" | "mt" | "ml" | "af" | "sq" | "ar_dz" | "ar_bh" | "ar_eg" | "ar_iq" | "ar_jo" | "ar_kw" | "ar_lb" | "ar_ly" | "ar_ma" | "ar_om" | "ar_qa" | "ar_sa" | "ar_sy" | "ar_tn" | "ar_ae" | "ar_ye" | "eu" | "be" | "bg" | "ca" | "zh_hk" | "zh_cn" | "zh_sg" | "zh_tw" | "cs" | "da" | "nl_be" | "nl" | "en" | "en_au" | "en_bz" | "en_ca" | "en_ie" | "en_jm" | "en_nz" | "en_za" | "en_tt" | "en_gb" | "en_us" | "et" | "fo" | "fa" | "fi" | "fr_be" | "fr_ca" | "fr_lu" | "fr" | "fr_ch" | "gd" | "de_at" | "de_li" | "de_lu" | "de" | "de_ch" | "el" | "he" | "hi" | "hu" | "ga" | "it" | "it_ch" | "ja" | "ko" | "ku" | "lv" | "lt" | "mk" | "ms" | "no" | "nb" | "nn" | "pl" | "pt_br" | "pt" | "pa" | "rm" | "ro" | "ro_md" | "ru" | "ru_md" | "sr" | "sk" | "sl" | "sb" | "es_ar" | "es_bo" | "es_cl" | "es_co" | "es_cr" | "es_do" | "es_ec" | "es_sv" | "es_gt" | "es_hn" | "es_mx" | "es" | "sv" | "sv_fi" | "uk" | "ur" | "vi" | "cy" | "ji" | "zu";
359
+ locale: "hr" | "th" | "tr" | "id" | "is" | "mt" | "ml" | "no" | "ms" | "af" | "sq" | "ar_dz" | "ar_bh" | "ar_eg" | "ar_iq" | "ar_jo" | "ar_kw" | "ar_lb" | "ar_ly" | "ar_ma" | "ar_om" | "ar_qa" | "ar_sa" | "ar_sy" | "ar_tn" | "ar_ae" | "ar_ye" | "eu" | "be" | "bg" | "ca" | "zh_hk" | "zh_cn" | "zh_sg" | "zh_tw" | "cs" | "da" | "nl_be" | "nl" | "en" | "en_au" | "en_bz" | "en_ca" | "en_ie" | "en_jm" | "en_nz" | "en_za" | "en_tt" | "en_gb" | "en_us" | "et" | "fo" | "fa" | "fi" | "fr_be" | "fr_ca" | "fr_lu" | "fr" | "fr_ch" | "gd" | "de_at" | "de_li" | "de_lu" | "de" | "de_ch" | "el" | "he" | "hi" | "hu" | "ga" | "it" | "it_ch" | "ja" | "ko" | "ku" | "lv" | "lt" | "mk" | "nb" | "nn" | "pl" | "pt_br" | "pt" | "pa" | "rm" | "ro" | "ro_md" | "ru" | "ru_md" | "sr" | "sk" | "sl" | "sb" | "es_ar" | "es_bo" | "es_cl" | "es_co" | "es_cr" | "es_do" | "es_ec" | "es_sv" | "es_gt" | "es_hn" | "es_mx" | "es" | "sv" | "sv_fi" | "uk" | "ur" | "vi" | "cy" | "ji" | "zu";
360
360
  title: string;
361
361
  subtitle: string;
362
362
  }[];
@@ -462,7 +462,7 @@ export declare const customerRoute: {
462
462
  expiresAt: Date;
463
463
  items: {
464
464
  translations: {
465
- locale: "hr" | "th" | "tr" | "id" | "is" | "mt" | "ml" | "af" | "sq" | "ar_dz" | "ar_bh" | "ar_eg" | "ar_iq" | "ar_jo" | "ar_kw" | "ar_lb" | "ar_ly" | "ar_ma" | "ar_om" | "ar_qa" | "ar_sa" | "ar_sy" | "ar_tn" | "ar_ae" | "ar_ye" | "eu" | "be" | "bg" | "ca" | "zh_hk" | "zh_cn" | "zh_sg" | "zh_tw" | "cs" | "da" | "nl_be" | "nl" | "en" | "en_au" | "en_bz" | "en_ca" | "en_ie" | "en_jm" | "en_nz" | "en_za" | "en_tt" | "en_gb" | "en_us" | "et" | "fo" | "fa" | "fi" | "fr_be" | "fr_ca" | "fr_lu" | "fr" | "fr_ch" | "gd" | "de_at" | "de_li" | "de_lu" | "de" | "de_ch" | "el" | "he" | "hi" | "hu" | "ga" | "it" | "it_ch" | "ja" | "ko" | "ku" | "lv" | "lt" | "mk" | "ms" | "no" | "nb" | "nn" | "pl" | "pt_br" | "pt" | "pa" | "rm" | "ro" | "ro_md" | "ru" | "ru_md" | "sr" | "sk" | "sl" | "sb" | "es_ar" | "es_bo" | "es_cl" | "es_co" | "es_cr" | "es_do" | "es_ec" | "es_sv" | "es_gt" | "es_hn" | "es_mx" | "es" | "sv" | "sv_fi" | "uk" | "ur" | "vi" | "cy" | "ji" | "zu";
465
+ locale: "hr" | "th" | "tr" | "id" | "is" | "mt" | "ml" | "no" | "ms" | "af" | "sq" | "ar_dz" | "ar_bh" | "ar_eg" | "ar_iq" | "ar_jo" | "ar_kw" | "ar_lb" | "ar_ly" | "ar_ma" | "ar_om" | "ar_qa" | "ar_sa" | "ar_sy" | "ar_tn" | "ar_ae" | "ar_ye" | "eu" | "be" | "bg" | "ca" | "zh_hk" | "zh_cn" | "zh_sg" | "zh_tw" | "cs" | "da" | "nl_be" | "nl" | "en" | "en_au" | "en_bz" | "en_ca" | "en_ie" | "en_jm" | "en_nz" | "en_za" | "en_tt" | "en_gb" | "en_us" | "et" | "fo" | "fa" | "fi" | "fr_be" | "fr_ca" | "fr_lu" | "fr" | "fr_ch" | "gd" | "de_at" | "de_li" | "de_lu" | "de" | "de_ch" | "el" | "he" | "hi" | "hu" | "ga" | "it" | "it_ch" | "ja" | "ko" | "ku" | "lv" | "lt" | "mk" | "nb" | "nn" | "pl" | "pt_br" | "pt" | "pa" | "rm" | "ro" | "ro_md" | "ru" | "ru_md" | "sr" | "sk" | "sl" | "sb" | "es_ar" | "es_bo" | "es_cl" | "es_co" | "es_cr" | "es_do" | "es_ec" | "es_sv" | "es_gt" | "es_hn" | "es_mx" | "es" | "sv" | "sv_fi" | "uk" | "ur" | "vi" | "cy" | "ji" | "zu";
466
466
  title: string;
467
467
  subtitle: string;
468
468
  }[];
@@ -51,6 +51,8 @@ export declare const AdminCustomerDetailSchema: z.ZodObject<{
51
51
  is: "is";
52
52
  mt: "mt";
53
53
  ml: "ml";
54
+ no: "no";
55
+ ms: "ms";
54
56
  af: "af";
55
57
  sq: "sq";
56
58
  ar_dz: "ar_dz";
@@ -120,8 +122,6 @@ export declare const AdminCustomerDetailSchema: z.ZodObject<{
120
122
  lv: "lv";
121
123
  lt: "lt";
122
124
  mk: "mk";
123
- ms: "ms";
124
- no: "no";
125
125
  nb: "nb";
126
126
  nn: "nn";
127
127
  pl: "pl";
@@ -351,7 +351,7 @@ export declare const AdminCustomerDetailSchema: z.ZodObject<{
351
351
  expiresAt: Date;
352
352
  items: {
353
353
  translations: {
354
- locale: "hr" | "th" | "tr" | "id" | "is" | "mt" | "ml" | "af" | "sq" | "ar_dz" | "ar_bh" | "ar_eg" | "ar_iq" | "ar_jo" | "ar_kw" | "ar_lb" | "ar_ly" | "ar_ma" | "ar_om" | "ar_qa" | "ar_sa" | "ar_sy" | "ar_tn" | "ar_ae" | "ar_ye" | "eu" | "be" | "bg" | "ca" | "zh_hk" | "zh_cn" | "zh_sg" | "zh_tw" | "cs" | "da" | "nl_be" | "nl" | "en" | "en_au" | "en_bz" | "en_ca" | "en_ie" | "en_jm" | "en_nz" | "en_za" | "en_tt" | "en_gb" | "en_us" | "et" | "fo" | "fa" | "fi" | "fr_be" | "fr_ca" | "fr_lu" | "fr" | "fr_ch" | "gd" | "de_at" | "de_li" | "de_lu" | "de" | "de_ch" | "el" | "he" | "hi" | "hu" | "ga" | "it" | "it_ch" | "ja" | "ko" | "ku" | "lv" | "lt" | "mk" | "ms" | "no" | "nb" | "nn" | "pl" | "pt_br" | "pt" | "pa" | "rm" | "ro" | "ro_md" | "ru" | "ru_md" | "sr" | "sk" | "sl" | "sb" | "es_ar" | "es_bo" | "es_cl" | "es_co" | "es_cr" | "es_do" | "es_ec" | "es_sv" | "es_gt" | "es_hn" | "es_mx" | "es" | "sv" | "sv_fi" | "uk" | "ur" | "vi" | "cy" | "ji" | "zu";
354
+ locale: "hr" | "th" | "tr" | "id" | "is" | "mt" | "ml" | "no" | "ms" | "af" | "sq" | "ar_dz" | "ar_bh" | "ar_eg" | "ar_iq" | "ar_jo" | "ar_kw" | "ar_lb" | "ar_ly" | "ar_ma" | "ar_om" | "ar_qa" | "ar_sa" | "ar_sy" | "ar_tn" | "ar_ae" | "ar_ye" | "eu" | "be" | "bg" | "ca" | "zh_hk" | "zh_cn" | "zh_sg" | "zh_tw" | "cs" | "da" | "nl_be" | "nl" | "en" | "en_au" | "en_bz" | "en_ca" | "en_ie" | "en_jm" | "en_nz" | "en_za" | "en_tt" | "en_gb" | "en_us" | "et" | "fo" | "fa" | "fi" | "fr_be" | "fr_ca" | "fr_lu" | "fr" | "fr_ch" | "gd" | "de_at" | "de_li" | "de_lu" | "de" | "de_ch" | "el" | "he" | "hi" | "hu" | "ga" | "it" | "it_ch" | "ja" | "ko" | "ku" | "lv" | "lt" | "mk" | "nb" | "nn" | "pl" | "pt_br" | "pt" | "pa" | "rm" | "ro" | "ro_md" | "ru" | "ru_md" | "sr" | "sk" | "sl" | "sb" | "es_ar" | "es_bo" | "es_cl" | "es_co" | "es_cr" | "es_do" | "es_ec" | "es_sv" | "es_gt" | "es_hn" | "es_mx" | "es" | "sv" | "sv_fi" | "uk" | "ur" | "vi" | "cy" | "ji" | "zu";
355
355
  title: string;
356
356
  subtitle: string;
357
357
  }[];
@@ -457,7 +457,7 @@ export declare const AdminCustomerDetailSchema: z.ZodObject<{
457
457
  expiresAt: Date;
458
458
  items: {
459
459
  translations: {
460
- locale: "hr" | "th" | "tr" | "id" | "is" | "mt" | "ml" | "af" | "sq" | "ar_dz" | "ar_bh" | "ar_eg" | "ar_iq" | "ar_jo" | "ar_kw" | "ar_lb" | "ar_ly" | "ar_ma" | "ar_om" | "ar_qa" | "ar_sa" | "ar_sy" | "ar_tn" | "ar_ae" | "ar_ye" | "eu" | "be" | "bg" | "ca" | "zh_hk" | "zh_cn" | "zh_sg" | "zh_tw" | "cs" | "da" | "nl_be" | "nl" | "en" | "en_au" | "en_bz" | "en_ca" | "en_ie" | "en_jm" | "en_nz" | "en_za" | "en_tt" | "en_gb" | "en_us" | "et" | "fo" | "fa" | "fi" | "fr_be" | "fr_ca" | "fr_lu" | "fr" | "fr_ch" | "gd" | "de_at" | "de_li" | "de_lu" | "de" | "de_ch" | "el" | "he" | "hi" | "hu" | "ga" | "it" | "it_ch" | "ja" | "ko" | "ku" | "lv" | "lt" | "mk" | "ms" | "no" | "nb" | "nn" | "pl" | "pt_br" | "pt" | "pa" | "rm" | "ro" | "ro_md" | "ru" | "ru_md" | "sr" | "sk" | "sl" | "sb" | "es_ar" | "es_bo" | "es_cl" | "es_co" | "es_cr" | "es_do" | "es_ec" | "es_sv" | "es_gt" | "es_hn" | "es_mx" | "es" | "sv" | "sv_fi" | "uk" | "ur" | "vi" | "cy" | "ji" | "zu";
460
+ locale: "hr" | "th" | "tr" | "id" | "is" | "mt" | "ml" | "no" | "ms" | "af" | "sq" | "ar_dz" | "ar_bh" | "ar_eg" | "ar_iq" | "ar_jo" | "ar_kw" | "ar_lb" | "ar_ly" | "ar_ma" | "ar_om" | "ar_qa" | "ar_sa" | "ar_sy" | "ar_tn" | "ar_ae" | "ar_ye" | "eu" | "be" | "bg" | "ca" | "zh_hk" | "zh_cn" | "zh_sg" | "zh_tw" | "cs" | "da" | "nl_be" | "nl" | "en" | "en_au" | "en_bz" | "en_ca" | "en_ie" | "en_jm" | "en_nz" | "en_za" | "en_tt" | "en_gb" | "en_us" | "et" | "fo" | "fa" | "fi" | "fr_be" | "fr_ca" | "fr_lu" | "fr" | "fr_ch" | "gd" | "de_at" | "de_li" | "de_lu" | "de" | "de_ch" | "el" | "he" | "hi" | "hu" | "ga" | "it" | "it_ch" | "ja" | "ko" | "ku" | "lv" | "lt" | "mk" | "nb" | "nn" | "pl" | "pt_br" | "pt" | "pa" | "rm" | "ro" | "ro_md" | "ru" | "ru_md" | "sr" | "sk" | "sl" | "sb" | "es_ar" | "es_bo" | "es_cl" | "es_co" | "es_cr" | "es_do" | "es_ec" | "es_sv" | "es_gt" | "es_hn" | "es_mx" | "es" | "sv" | "sv_fi" | "uk" | "ur" | "vi" | "cy" | "ji" | "zu";
461
461
  title: string;
462
462
  subtitle: string;
463
463
  }[];
@@ -49,7 +49,7 @@ declare class CustomerService {
49
49
  expiresAt: Date;
50
50
  items: {
51
51
  translations: {
52
- locale: "hr" | "th" | "tr" | "id" | "is" | "mt" | "ml" | "af" | "sq" | "ar_dz" | "ar_bh" | "ar_eg" | "ar_iq" | "ar_jo" | "ar_kw" | "ar_lb" | "ar_ly" | "ar_ma" | "ar_om" | "ar_qa" | "ar_sa" | "ar_sy" | "ar_tn" | "ar_ae" | "ar_ye" | "eu" | "be" | "bg" | "ca" | "zh_hk" | "zh_cn" | "zh_sg" | "zh_tw" | "cs" | "da" | "nl_be" | "nl" | "en" | "en_au" | "en_bz" | "en_ca" | "en_ie" | "en_jm" | "en_nz" | "en_za" | "en_tt" | "en_gb" | "en_us" | "et" | "fo" | "fa" | "fi" | "fr_be" | "fr_ca" | "fr_lu" | "fr" | "fr_ch" | "gd" | "de_at" | "de_li" | "de_lu" | "de" | "de_ch" | "el" | "he" | "hi" | "hu" | "ga" | "it" | "it_ch" | "ja" | "ko" | "ku" | "lv" | "lt" | "mk" | "ms" | "no" | "nb" | "nn" | "pl" | "pt_br" | "pt" | "pa" | "rm" | "ro" | "ro_md" | "ru" | "ru_md" | "sr" | "sk" | "sl" | "sb" | "es_ar" | "es_bo" | "es_cl" | "es_co" | "es_cr" | "es_do" | "es_ec" | "es_sv" | "es_gt" | "es_hn" | "es_mx" | "es" | "sv" | "sv_fi" | "uk" | "ur" | "vi" | "cy" | "ji" | "zu";
52
+ locale: "hr" | "th" | "tr" | "id" | "is" | "mt" | "ml" | "no" | "ms" | "af" | "sq" | "ar_dz" | "ar_bh" | "ar_eg" | "ar_iq" | "ar_jo" | "ar_kw" | "ar_lb" | "ar_ly" | "ar_ma" | "ar_om" | "ar_qa" | "ar_sa" | "ar_sy" | "ar_tn" | "ar_ae" | "ar_ye" | "eu" | "be" | "bg" | "ca" | "zh_hk" | "zh_cn" | "zh_sg" | "zh_tw" | "cs" | "da" | "nl_be" | "nl" | "en" | "en_au" | "en_bz" | "en_ca" | "en_ie" | "en_jm" | "en_nz" | "en_za" | "en_tt" | "en_gb" | "en_us" | "et" | "fo" | "fa" | "fi" | "fr_be" | "fr_ca" | "fr_lu" | "fr" | "fr_ch" | "gd" | "de_at" | "de_li" | "de_lu" | "de" | "de_ch" | "el" | "he" | "hi" | "hu" | "ga" | "it" | "it_ch" | "ja" | "ko" | "ku" | "lv" | "lt" | "mk" | "nb" | "nn" | "pl" | "pt_br" | "pt" | "pa" | "rm" | "ro" | "ro_md" | "ru" | "ru_md" | "sr" | "sk" | "sl" | "sb" | "es_ar" | "es_bo" | "es_cl" | "es_co" | "es_cr" | "es_do" | "es_ec" | "es_sv" | "es_gt" | "es_hn" | "es_mx" | "es" | "sv" | "sv_fi" | "uk" | "ur" | "vi" | "cy" | "ji" | "zu";
53
53
  title: string;
54
54
  subtitle: string;
55
55
  }[];
@@ -28,6 +28,8 @@ export declare const manufacturerRoute: {
28
28
  is: "is";
29
29
  mt: "mt";
30
30
  ml: "ml";
31
+ no: "no";
32
+ ms: "ms";
31
33
  af: "af";
32
34
  sq: "sq";
33
35
  ar_dz: "ar_dz";
@@ -97,8 +99,6 @@ export declare const manufacturerRoute: {
97
99
  lv: "lv";
98
100
  lt: "lt";
99
101
  mk: "mk";
100
- ms: "ms";
101
- no: "no";
102
102
  nb: "nb";
103
103
  nn: "nn";
104
104
  pl: "pl";
@@ -339,6 +339,8 @@ export declare const manufacturerRoute: {
339
339
  is: "is";
340
340
  mt: "mt";
341
341
  ml: "ml";
342
+ no: "no";
343
+ ms: "ms";
342
344
  af: "af";
343
345
  sq: "sq";
344
346
  ar_dz: "ar_dz";
@@ -408,8 +410,6 @@ export declare const manufacturerRoute: {
408
410
  lv: "lv";
409
411
  lt: "lt";
410
412
  mk: "mk";
411
- ms: "ms";
412
- no: "no";
413
413
  nb: "nb";
414
414
  nn: "nn";
415
415
  pl: "pl";