@reactionary/core 0.6.6 → 0.6.8
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/capabilities/analytics.capability.js +5 -5
- package/capabilities/company-registration.capability.js +9 -0
- package/capabilities/company.capability.js +59 -0
- package/capabilities/employee-invitation.capability.js +9 -0
- package/capabilities/employee.capability.js +9 -0
- package/capabilities/index.js +4 -0
- package/capabilities/product-recommendations.capability.js +8 -8
- package/factories/company-registration.factory.js +0 -0
- package/factories/company.factory.js +0 -0
- package/factories/employee-invitation.factory.js +0 -0
- package/factories/employee.factory.js +0 -0
- package/factories/index.js +4 -0
- package/package.json +1 -1
- package/schemas/models/base.model.js +5 -0
- package/schemas/models/checkout.model.js +2 -1
- package/schemas/models/company-registration.model.js +14 -0
- package/schemas/models/company.model.js +60 -0
- package/schemas/models/employee-invitation.model.js +22 -0
- package/schemas/models/employee.model.js +20 -0
- package/schemas/models/identifiers.model.js +45 -0
- package/schemas/models/index.js +4 -0
- package/schemas/mutations/company-registration.mutation.js +14 -0
- package/schemas/mutations/company.mutation.js +30 -0
- package/schemas/mutations/employee-invitation.mutation.js +20 -0
- package/schemas/mutations/employee.mutation.js +29 -0
- package/schemas/mutations/index.js +4 -0
- package/schemas/queries/checkout.query.js +1 -1
- package/schemas/queries/company-registration.query.js +8 -0
- package/schemas/queries/company.query.js +12 -0
- package/schemas/queries/employee-invitation.query.js +8 -0
- package/schemas/queries/employee.query.js +19 -0
- package/schemas/queries/index.js +4 -0
- package/schemas/queries/product-associations.query.js +1 -2
- package/schemas/queries/product-reviews.query.js +1 -2
- package/schemas/queries/profile.query.js +1 -1
- package/schemas/session.schema.js +1 -0
- package/src/capabilities/analytics.capability.d.ts +5 -5
- package/src/capabilities/company-registration.capability.d.ts +21 -0
- package/src/capabilities/company.capability.d.ts +85 -0
- package/src/capabilities/employee-invitation.capability.d.ts +34 -0
- package/src/capabilities/employee.capability.d.ts +14 -0
- package/src/capabilities/index.d.ts +4 -0
- package/src/capabilities/product-recommendations.capability.d.ts +8 -8
- package/src/client/client.d.ts +6 -1
- package/src/factories/company-registration.factory.d.ts +12 -0
- package/src/factories/company.factory.d.ts +18 -0
- package/src/factories/employee-invitation.factory.d.ts +26 -0
- package/src/factories/employee.factory.d.ts +20 -0
- package/src/factories/index.d.ts +4 -0
- package/src/schemas/models/base.model.d.ts +8 -0
- package/src/schemas/models/checkout.model.d.ts +4 -0
- package/src/schemas/models/company-registration.model.d.ts +22 -0
- package/src/schemas/models/company.model.d.ts +213 -0
- package/src/schemas/models/employee-invitation.model.d.ts +88 -0
- package/src/schemas/models/employee.model.d.ts +435 -0
- package/src/schemas/models/identifiers.model.d.ts +98 -1
- package/src/schemas/models/index.d.ts +4 -0
- package/src/schemas/mutations/company-registration.mutation.d.ts +26 -0
- package/src/schemas/mutations/company.mutation.d.ts +76 -0
- package/src/schemas/mutations/employee-invitation.mutation.d.ts +28 -0
- package/src/schemas/mutations/employee.mutation.d.ts +39 -0
- package/src/schemas/mutations/index.d.ts +4 -0
- package/src/schemas/queries/checkout.query.d.ts +15 -16
- package/src/schemas/queries/company-registration.query.d.ts +7 -0
- package/src/schemas/queries/company.query.d.ts +16 -0
- package/src/schemas/queries/employee-invitation.query.d.ts +14 -0
- package/src/schemas/queries/employee.query.d.ts +29 -0
- package/src/schemas/queries/index.d.ts +4 -0
- package/src/schemas/queries/product-reviews.query.d.ts +14 -15
- package/src/schemas/queries/profile.query.d.ts +5 -6
- package/src/schemas/session.schema.d.ts +1 -0
|
@@ -5,11 +5,11 @@ import { type AnalyticsMutation, type AnalyticsMutationProductAddToCartEvent, ty
|
|
|
5
5
|
export declare abstract class AnalyticsCapability extends BaseCapability {
|
|
6
6
|
protected getResourceName(): string;
|
|
7
7
|
track(event: AnalyticsMutation): Promise<void>;
|
|
8
|
-
protected processProductSummaryView(
|
|
9
|
-
protected processProductSummaryClick(
|
|
10
|
-
protected processProductDetailsView(
|
|
11
|
-
protected processProductAddToCart(
|
|
12
|
-
protected processPurchase(
|
|
8
|
+
protected processProductSummaryView(_event: AnalyticsMutationProductSummaryViewEvent): Promise<void>;
|
|
9
|
+
protected processProductSummaryClick(_event: AnalyticsMutationProductSummaryClickEvent): Promise<void>;
|
|
10
|
+
protected processProductDetailsView(_event: AnalyticsMutationProductDetailsViewEvent): Promise<void>;
|
|
11
|
+
protected processProductAddToCart(_event: AnalyticsMutationProductAddToCartEvent): Promise<void>;
|
|
12
|
+
protected processPurchase(_event: AnalyticsMutationPurchaseEvent): Promise<void>;
|
|
13
13
|
}
|
|
14
14
|
export declare class MulticastAnalyticsCapability extends AnalyticsCapability {
|
|
15
15
|
protected capabilities: Array<AnalyticsCapability>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { CompanyRegistrationRequest } from "../schemas/models/company-registration.model.js";
|
|
2
|
+
import type { CompanyRegistrationMutationRegister } from "../schemas/mutations/company-registration.mutation.js";
|
|
3
|
+
import type { CompanyRegistrationQueryCheckRegistrationStatus } from "../schemas/queries/company-registration.query.js";
|
|
4
|
+
import type { Result } from "../schemas/result.js";
|
|
5
|
+
import { BaseCapability } from "./base.capability.js";
|
|
6
|
+
export declare abstract class CompanyRegistrationCapability extends BaseCapability {
|
|
7
|
+
protected getResourceName(): string;
|
|
8
|
+
/**
|
|
9
|
+
* Usecase:
|
|
10
|
+
* If site supports self-registration of companies, this method can be used to register a new company. Depending on backend, it might require
|
|
11
|
+
* additional offline steps (email verification, manual approval, etc) before the company can be used to log in and access company-specific features.
|
|
12
|
+
* @param payload
|
|
13
|
+
*/
|
|
14
|
+
abstract requestRegistration(payload: CompanyRegistrationMutationRegister): Promise<Result<CompanyRegistrationRequest>>;
|
|
15
|
+
/**
|
|
16
|
+
* Usecase: After registration, if it takes a while (say, if it requires manual approval), the storefront can present the customer with a url with the
|
|
17
|
+
* registration request identifier in it, to allow the customer to check periodically the status of their company registration, and show appropriate messages (e.g. "your registration is pending approval", "your registration was denied, contact support for more info", etc)
|
|
18
|
+
* @param payload
|
|
19
|
+
*/
|
|
20
|
+
abstract checkRequestStatus(payload: CompanyRegistrationQueryCheckRegistrationStatus): Promise<Result<CompanyRegistrationRequest>>;
|
|
21
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { NotFoundError } from "../schemas/index.js";
|
|
2
|
+
import type { Company, CompanyPaginatedList } from "../schemas/models/company.model.js";
|
|
3
|
+
import type { CompanyMutationAddShippingAddress, CompanyMutationMakeShippingAddressDefault, CompanyMutationRemoveShippingAddress, CompanyMutationUpdateShippingAddress } from "../schemas/mutations/index.js";
|
|
4
|
+
import type { CompanyQueryById, CompanyQueryList } from "../schemas/queries/index.js";
|
|
5
|
+
import type { Result } from "../schemas/result.js";
|
|
6
|
+
import { BaseCapability } from "./base.capability.js";
|
|
7
|
+
export declare abstract class CompanyCapability extends BaseCapability {
|
|
8
|
+
protected getResourceName(): string;
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
* Usecase: Fetch company info such as name, default contact person, etc, based on the company identifier in the request context.
|
|
12
|
+
* This can be used to render company-specific information in the storefront
|
|
13
|
+
*
|
|
14
|
+
* @param payload
|
|
15
|
+
*/
|
|
16
|
+
abstract getById(payload: CompanyQueryById): Promise<Result<Company>>;
|
|
17
|
+
/**
|
|
18
|
+
* A list of companies you are allowed to interact with. This is useful for users that are associated with multiple companies, such as consultants or employees of multiple companies.
|
|
19
|
+
*
|
|
20
|
+
* Usecase: Consultant logs in and needs to select which company they want to work with. Or a user that is an employee of multiple companies needs to switch between them.
|
|
21
|
+
* @param payload
|
|
22
|
+
*/
|
|
23
|
+
abstract listCompanies(payload: CompanyQueryList): Promise<Result<CompanyPaginatedList>>;
|
|
24
|
+
/**
|
|
25
|
+
* Updates the base information of the company.
|
|
26
|
+
* Typically, there is not alot that the user can change himself, if the data is governed from ERP
|
|
27
|
+
*
|
|
28
|
+
* Usecase: Update the user's name, email, or phone number.
|
|
29
|
+
*
|
|
30
|
+
* NOTE: For now, we are not exposing an update method for companies, as its not super clear
|
|
31
|
+
* WHAT we'd typically allow them to change on their own. Most of the time, this kind of thing comes from the customer-master
|
|
32
|
+
*
|
|
33
|
+
* @param payload
|
|
34
|
+
public abstract update(payload: CompanyMutationUpdate): Promise<Result<Company, NotFoundError>>;
|
|
35
|
+
*/
|
|
36
|
+
/**
|
|
37
|
+
* Creates a new shipping address for the currently authenticated (registered) user.
|
|
38
|
+
* Does not set it as default automatically.
|
|
39
|
+
*
|
|
40
|
+
* Usecase: User adds a new shipping address in their profile or during checkout. Ideally, any address manipulation
|
|
41
|
+
* done at checkout should be considered local to that session, unless the addressbook is empty.
|
|
42
|
+
* @param payload
|
|
43
|
+
*/
|
|
44
|
+
abstract addShippingAddress(payload: CompanyMutationAddShippingAddress): Promise<Result<Company, NotFoundError>>;
|
|
45
|
+
/**
|
|
46
|
+
* Updates an existing shipping address for the company (if allowed by backend).
|
|
47
|
+
*
|
|
48
|
+
* Usecase: User edits shipping address on company tab in my-account page. Either the default one, or one of the alternates
|
|
49
|
+
* @param payload
|
|
50
|
+
*/
|
|
51
|
+
abstract updateShippingAddress(payload: CompanyMutationUpdateShippingAddress): Promise<Result<Company, NotFoundError>>;
|
|
52
|
+
/**
|
|
53
|
+
* Removes an existing shipping address for the company (if allowed by backend).
|
|
54
|
+
* If the removed address was the default shipping address, the default shipping address is set to a random other address.
|
|
55
|
+
*
|
|
56
|
+
* Usecase: User deletes a shipping address from their business profile.
|
|
57
|
+
* @param payload
|
|
58
|
+
*/
|
|
59
|
+
abstract removeShippingAddress(payload: CompanyMutationRemoveShippingAddress): Promise<Result<Company, NotFoundError>>;
|
|
60
|
+
/**
|
|
61
|
+
* Configures an existing shipping address as the default shipping address for the company (if allowed by backend).
|
|
62
|
+
*
|
|
63
|
+
* Usecase: User selects a default shipping address in their business profile.
|
|
64
|
+
* @param payload
|
|
65
|
+
*/
|
|
66
|
+
abstract makeShippingAddressDefault(payload: CompanyMutationMakeShippingAddressDefault): Promise<Result<Company, NotFoundError>>;
|
|
67
|
+
/**
|
|
68
|
+
* Sets the current/active billing address for the company
|
|
69
|
+
*
|
|
70
|
+
* Usecase: User sets or updates their billing address in their business profile
|
|
71
|
+
*
|
|
72
|
+
* It was a design decision not to support multiple billing addresses. The billing address represents who you are as the commercial
|
|
73
|
+
* entity being billed, and as such it makes sense to have a single authoritative billing address.
|
|
74
|
+
* @param payload
|
|
75
|
+
*
|
|
76
|
+
* NOTE: We are not exposing this for now, as we expect the billing address to be managed from the ERP side
|
|
77
|
+
public abstract setBillingAddress(payload: CompanyMutationSetBillingAddress): Promise<Result<Company, NotFoundError>>;
|
|
78
|
+
*/
|
|
79
|
+
/**
|
|
80
|
+
* Create an empty company object with the given id. This can be used as a fallback when company is not found, to avoid returning null and causing errors in the storefront.
|
|
81
|
+
* The storefront can then check if the returned company has an empty name or other fields to determine if it is a valid company or a fallback.
|
|
82
|
+
* @param id
|
|
83
|
+
*/
|
|
84
|
+
protected createEmptyCompany(id: string): Company;
|
|
85
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { NotFoundError } from "../schemas/index.js";
|
|
2
|
+
import type { EmployeeInvitation, EmployeeIssuedInvitation, EmployeeInvitationPaginatedList } from "../schemas/models/index.js";
|
|
3
|
+
import type { EmployeeInvitationMutationAcceptInvitation, EmployeeInvitationMutationInviteEmployee, EmployeeInvitationMutationRevokeInvitation } from "../schemas/mutations/index.js";
|
|
4
|
+
import type { EmployeeInvitationQueryList } from "../schemas/queries/index.js";
|
|
5
|
+
import type { Result } from "../schemas/result.js";
|
|
6
|
+
import { BaseCapability } from "./base.capability.js";
|
|
7
|
+
export declare abstract class EmployeeInvitationCapability extends BaseCapability {
|
|
8
|
+
protected getResourceName(): string;
|
|
9
|
+
/**
|
|
10
|
+
* Usecase:
|
|
11
|
+
* List all open invitations sent to employees to join the company.
|
|
12
|
+
* In my-account store management, you want to see a list of all pending invitations that have been sent to employees to join the company, so you can keep track of who has been invited and resend or revoke invitations if needed.
|
|
13
|
+
* @param payload
|
|
14
|
+
*/
|
|
15
|
+
abstract listInvitations(payload: EmployeeInvitationQueryList): Promise<Result<EmployeeInvitationPaginatedList>>;
|
|
16
|
+
/**
|
|
17
|
+
* Usecase:
|
|
18
|
+
* You are an admin of a company, and you want to invite co-workers to join the company.
|
|
19
|
+
* @param payload
|
|
20
|
+
*/
|
|
21
|
+
abstract inviteEmployee(payload: EmployeeInvitationMutationInviteEmployee): Promise<Result<EmployeeIssuedInvitation>>;
|
|
22
|
+
/**
|
|
23
|
+
* Usecase:
|
|
24
|
+
* As a co-worker you received the invitation, and you want to accept it so you can start accessing the storefront on behalf of the company.
|
|
25
|
+
* @param payload
|
|
26
|
+
*/
|
|
27
|
+
abstract acceptInvitation(payload: EmployeeInvitationMutationAcceptInvitation): Promise<Result<EmployeeInvitation>>;
|
|
28
|
+
/**
|
|
29
|
+
* Usecase:
|
|
30
|
+
* As an admin you changed your mind, and no longer want the invited co-worker to join the company, or you invited the wrong email by mistake. You want to revoke the invitation so that the co-worker can no longer accept it and join the company.
|
|
31
|
+
* @param payload
|
|
32
|
+
*/
|
|
33
|
+
abstract revokeInvitation(payload: EmployeeInvitationMutationRevokeInvitation): Promise<Result<void, NotFoundError>>;
|
|
34
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { NotFoundError } from '../schemas/index.js';
|
|
2
|
+
import type { Employee, EmployeePaginatedList } from '../schemas/models/employee.model.js';
|
|
3
|
+
import type { EmployeeMutationAssignRole, EmployeeMutationUnassignRole, EmployeeMutationRemoveEmployee } from '../schemas/mutations/employee.mutation.js';
|
|
4
|
+
import type { EmployeeQueryByEmail, EmployeeQueryList } from '../schemas/queries/employee.query.js';
|
|
5
|
+
import type { Result } from '../schemas/result.js';
|
|
6
|
+
import { BaseCapability } from './base.capability.js';
|
|
7
|
+
export declare abstract class EmployeeCapability extends BaseCapability {
|
|
8
|
+
protected getResourceName(): string;
|
|
9
|
+
abstract listEmployees(payload: EmployeeQueryList): Promise<Result<EmployeePaginatedList>>;
|
|
10
|
+
abstract getByEmail(payload: EmployeeQueryByEmail): Promise<Result<Employee>>;
|
|
11
|
+
abstract assignRole(payload: EmployeeMutationAssignRole): Promise<Result<Employee, NotFoundError>>;
|
|
12
|
+
abstract unassignRole(payload: EmployeeMutationUnassignRole): Promise<Result<Employee, NotFoundError>>;
|
|
13
|
+
abstract removeEmployee(payload: EmployeeMutationRemoveEmployee): Promise<Result<void, NotFoundError>>;
|
|
14
|
+
}
|
|
@@ -16,3 +16,7 @@ export * from './product-list.capability.js';
|
|
|
16
16
|
export * from './store.capability.js';
|
|
17
17
|
export * from './order.capability.js';
|
|
18
18
|
export * from './order-search.capability.js';
|
|
19
|
+
export * from './company-registration.capability.js';
|
|
20
|
+
export * from './employee.capability.js';
|
|
21
|
+
export * from './employee-invitation.capability.js';
|
|
22
|
+
export * from './company.capability.js';
|
|
@@ -14,14 +14,14 @@ export declare abstract class ProductRecommendationsCapability extends BaseCapab
|
|
|
14
14
|
* @param query
|
|
15
15
|
*/
|
|
16
16
|
getRecommendations(query: ProductRecommendationsQuery): Promise<Result<ProductRecommendation[]>>;
|
|
17
|
-
getCollection(
|
|
18
|
-
protected getFrequentlyBoughtTogetherRecommendations(
|
|
19
|
-
protected getSimilarProductsRecommendations(
|
|
20
|
-
protected getTrendingInCategoryRecommendations(
|
|
21
|
-
protected getRelatedProductsRecommendations(
|
|
22
|
-
protected getPopularProductsRecommendations(
|
|
23
|
-
protected getTopPicksProductsRecommendations(
|
|
24
|
-
protected getAlsoViewedProductsRecommendations(
|
|
17
|
+
getCollection(_query: ProductRecommendationsByCollectionQuery): Promise<Result<ProductRecommendation[]>>;
|
|
18
|
+
protected getFrequentlyBoughtTogetherRecommendations(_query: ProductRecommendationAlgorithmFrequentlyBoughtTogetherQuery): Promise<ProductRecommendation[]>;
|
|
19
|
+
protected getSimilarProductsRecommendations(_query: ProductRecommendationAlgorithmSimilarProductsQuery): Promise<ProductRecommendation[]>;
|
|
20
|
+
protected getTrendingInCategoryRecommendations(_query: ProductRecommendationAlgorithmTrendingInCategoryQuery): Promise<ProductRecommendation[]>;
|
|
21
|
+
protected getRelatedProductsRecommendations(_query: ProductRecommendationAlgorithmRelatedProductsQuery): Promise<ProductRecommendation[]>;
|
|
22
|
+
protected getPopularProductsRecommendations(_query: ProductRecommendationAlgorithmPopuplarProductsQuery): Promise<ProductRecommendation[]>;
|
|
23
|
+
protected getTopPicksProductsRecommendations(_query: ProductRecommendationAlgorithmTopPicksProductsQuery): Promise<ProductRecommendation[]>;
|
|
24
|
+
protected getAlsoViewedProductsRecommendations(_query: ProductRecommendationAlgorithmAlsoViewedProductsQuery): Promise<ProductRecommendation[]>;
|
|
25
25
|
protected getResourceName(): string;
|
|
26
26
|
}
|
|
27
27
|
export declare class MulticastProductRecommendationsCapability extends ProductRecommendationsCapability {
|
package/src/client/client.d.ts
CHANGED
|
@@ -6,11 +6,12 @@ import type { PriceCapability } from "../capabilities/price.capability.js";
|
|
|
6
6
|
import type { InventoryCapability } from "../capabilities/inventory.capability.js";
|
|
7
7
|
import type { Cache } from "../cache/cache.interface.js";
|
|
8
8
|
import type { CategoryCapability } from "../capabilities/category.capability.js";
|
|
9
|
-
import type { AnalyticsCapability, CheckoutCapability, OrderCapability, ProductListCapability, ProfileCapability, StoreCapability } from "../capabilities/index.js";
|
|
9
|
+
import type { AnalyticsCapability, CheckoutCapability, OrderCapability, CompanyCapability, EmployeeCapability, CompanyRegistrationCapability, ProductListCapability, ProfileCapability, StoreCapability } from "../capabilities/index.js";
|
|
10
10
|
import type { OrderSearchCapability } from "../capabilities/order-search.capability.js";
|
|
11
11
|
import type { ProductRecommendationsCapability } from "../capabilities/product-recommendations.capability.js";
|
|
12
12
|
import type { ProductAssociationsCapability } from "../capabilities/product-associations.capability.js";
|
|
13
13
|
import type { ProductReviewsCapability } from "../capabilities/product-reviews.capability.js";
|
|
14
|
+
import type { EmployeeInvitationCapability } from "../capabilities/employee-invitation.capability.js";
|
|
14
15
|
export interface Client {
|
|
15
16
|
product: ProductCapability;
|
|
16
17
|
productSearch: ProductSearchCapability;
|
|
@@ -30,4 +31,8 @@ export interface Client {
|
|
|
30
31
|
store: StoreCapability;
|
|
31
32
|
order: OrderCapability;
|
|
32
33
|
orderSearch: OrderSearchCapability;
|
|
34
|
+
companyRegistration: CompanyRegistrationCapability;
|
|
35
|
+
employee: EmployeeCapability;
|
|
36
|
+
company: CompanyCapability;
|
|
37
|
+
employeeInvitation: EmployeeInvitationCapability;
|
|
33
38
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type * as z from 'zod';
|
|
2
|
+
import type { CompanyRegistrationRequestSchema } from '../schemas/models/company-registration.model.js';
|
|
3
|
+
import type { RequestContext } from '../schemas/session.schema.js';
|
|
4
|
+
export type AnyCompanyRegistrationRequestSchema = z.ZodType<z.output<typeof CompanyRegistrationRequestSchema>>;
|
|
5
|
+
export interface CompanyRegistrationFactory<TCompanyRegistrationRequestSchema extends AnyCompanyRegistrationRequestSchema = AnyCompanyRegistrationRequestSchema> {
|
|
6
|
+
companyRegistrationRequestSchema: TCompanyRegistrationRequestSchema;
|
|
7
|
+
parseCompanyRegistrationRequest(context: RequestContext, data: unknown): z.output<TCompanyRegistrationRequestSchema>;
|
|
8
|
+
}
|
|
9
|
+
export type CompanyRegistrationFactoryOutput<TFactory extends CompanyRegistrationFactory> = ReturnType<TFactory['parseCompanyRegistrationRequest']>;
|
|
10
|
+
export type CompanyRegistrationFactoryWithOutput<TFactory extends CompanyRegistrationFactory> = Omit<TFactory, 'parseCompanyRegistrationRequest'> & {
|
|
11
|
+
parseCompanyRegistrationRequest(context: RequestContext, data: unknown): CompanyRegistrationFactoryOutput<TFactory>;
|
|
12
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type * as z from 'zod';
|
|
2
|
+
import type { CompanyPaginatedListSchema, CompanySchema } from '../schemas/models/company.model.js';
|
|
3
|
+
import type { CompanyQueryList } from '../schemas/queries/company.query.js';
|
|
4
|
+
import type { RequestContext } from '../schemas/session.schema.js';
|
|
5
|
+
export type AnyCompanySchema = z.ZodType<z.output<typeof CompanySchema>>;
|
|
6
|
+
export type AnyCompanyPaginatedListSchema = z.ZodType<z.output<typeof CompanyPaginatedListSchema>>;
|
|
7
|
+
export interface CompanyFactory<TCompanySchema extends AnyCompanySchema = AnyCompanySchema, TCompanyPaginatedListSchema extends AnyCompanyPaginatedListSchema = AnyCompanyPaginatedListSchema> {
|
|
8
|
+
companySchema: TCompanySchema;
|
|
9
|
+
companyPaginatedListSchema: TCompanyPaginatedListSchema;
|
|
10
|
+
parseCompany(context: RequestContext, data: unknown): z.output<TCompanySchema>;
|
|
11
|
+
parseCompanyPaginatedList(context: RequestContext, data: unknown, query: CompanyQueryList): z.output<TCompanyPaginatedListSchema>;
|
|
12
|
+
}
|
|
13
|
+
export type CompanyFactoryOutput<TFactory extends CompanyFactory> = ReturnType<TFactory['parseCompany']>;
|
|
14
|
+
export type CompanyPaginatedListFactoryOutput<TFactory extends CompanyFactory> = ReturnType<TFactory['parseCompanyPaginatedList']>;
|
|
15
|
+
export type CompanyFactoryWithOutput<TFactory extends CompanyFactory> = Omit<TFactory, 'parseCompany' | 'parseCompanyPaginatedList'> & {
|
|
16
|
+
parseCompany(context: RequestContext, data: unknown): CompanyFactoryOutput<TFactory>;
|
|
17
|
+
parseCompanyPaginatedList(context: RequestContext, data: unknown, query: CompanyQueryList): CompanyPaginatedListFactoryOutput<TFactory>;
|
|
18
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type * as z from 'zod';
|
|
2
|
+
import type { EmployeeInvitationPaginatedListSchema, EmployeeInvitationSchema, EmployeeIssuedInvitationSchema } from '../schemas/models/employee-invitation.model.js';
|
|
3
|
+
import type { EmployeeRole } from '../schemas/models/identifiers.model.js';
|
|
4
|
+
import type { EmployeeInvitationMutationInviteEmployee } from '../schemas/mutations/employee-invitation.mutation.js';
|
|
5
|
+
import type { EmployeeInvitationQueryList } from '../schemas/queries/employee-invitation.query.js';
|
|
6
|
+
import type { RequestContext } from '../schemas/session.schema.js';
|
|
7
|
+
export type AnyEmployeeInvitationSchema = z.ZodType<z.output<typeof EmployeeInvitationSchema>>;
|
|
8
|
+
export type AnyEmployeeIssuedInvitationSchema = z.ZodType<z.output<typeof EmployeeIssuedInvitationSchema>>;
|
|
9
|
+
export type AnyEmployeeInvitationPaginatedListSchema = z.ZodType<z.output<typeof EmployeeInvitationPaginatedListSchema>>;
|
|
10
|
+
export interface EmployeeInvitationFactory<TEmployeeInvitationSchema extends AnyEmployeeInvitationSchema = AnyEmployeeInvitationSchema, TEmployeeIssuedInvitationSchema extends AnyEmployeeIssuedInvitationSchema = AnyEmployeeIssuedInvitationSchema, TEmployeeInvitationPaginatedListSchema extends AnyEmployeeInvitationPaginatedListSchema = AnyEmployeeInvitationPaginatedListSchema> {
|
|
11
|
+
employeeInvitationSchema: TEmployeeInvitationSchema;
|
|
12
|
+
employeeIssuedInvitationSchema: TEmployeeIssuedInvitationSchema;
|
|
13
|
+
employeeInvitationPaginatedListSchema: TEmployeeInvitationPaginatedListSchema;
|
|
14
|
+
parseEmployeeInvitation(context: RequestContext, data: unknown, payload?: EmployeeInvitationMutationInviteEmployee): z.output<TEmployeeInvitationSchema>;
|
|
15
|
+
parseEmployeeIssuedInvitation(context: RequestContext, data: unknown, payload?: EmployeeInvitationMutationInviteEmployee): z.output<TEmployeeIssuedInvitationSchema>;
|
|
16
|
+
parseEmployeeInvitationPaginatedList(context: RequestContext, data: unknown, query: EmployeeInvitationQueryList): z.output<TEmployeeInvitationPaginatedListSchema>;
|
|
17
|
+
mapRole(role: EmployeeRole): string;
|
|
18
|
+
}
|
|
19
|
+
export type EmployeeInvitationFactoryOutput<TFactory extends EmployeeInvitationFactory> = ReturnType<TFactory['parseEmployeeInvitation']>;
|
|
20
|
+
export type EmployeeIssuedInvitationFactoryOutput<TFactory extends EmployeeInvitationFactory> = ReturnType<TFactory['parseEmployeeIssuedInvitation']>;
|
|
21
|
+
export type EmployeeInvitationPaginatedListFactoryOutput<TFactory extends EmployeeInvitationFactory> = ReturnType<TFactory['parseEmployeeInvitationPaginatedList']>;
|
|
22
|
+
export type EmployeeInvitationFactoryWithOutput<TFactory extends EmployeeInvitationFactory> = Omit<TFactory, 'parseEmployeeInvitation' | 'parseEmployeeIssuedInvitation' | 'parseEmployeeInvitationPaginatedList'> & {
|
|
23
|
+
parseEmployeeInvitation(context: RequestContext, data: unknown, payload?: EmployeeInvitationMutationInviteEmployee): EmployeeInvitationFactoryOutput<TFactory>;
|
|
24
|
+
parseEmployeeIssuedInvitation(context: RequestContext, data: unknown, payload?: EmployeeInvitationMutationInviteEmployee): EmployeeIssuedInvitationFactoryOutput<TFactory>;
|
|
25
|
+
parseEmployeeInvitationPaginatedList(context: RequestContext, data: unknown, query: EmployeeInvitationQueryList): EmployeeInvitationPaginatedListFactoryOutput<TFactory>;
|
|
26
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type * as z from 'zod';
|
|
2
|
+
import type { EmployeePaginatedListSchema, EmployeeSchema } from '../schemas/models/employee.model.js';
|
|
3
|
+
import type { EmployeeRole } from '../schemas/models/identifiers.model.js';
|
|
4
|
+
import type { EmployeeQueryList } from '../schemas/queries/employee.query.js';
|
|
5
|
+
import type { RequestContext } from '../schemas/session.schema.js';
|
|
6
|
+
export type AnyEmployeeSchema = z.ZodType<z.output<typeof EmployeeSchema>>;
|
|
7
|
+
export type AnyEmployeePaginatedListSchema = z.ZodType<z.output<typeof EmployeePaginatedListSchema>>;
|
|
8
|
+
export interface EmployeeFactory<TEmployeeSchema extends AnyEmployeeSchema = AnyEmployeeSchema, TEmployeePaginatedListSchema extends AnyEmployeePaginatedListSchema = AnyEmployeePaginatedListSchema> {
|
|
9
|
+
employeeSchema: TEmployeeSchema;
|
|
10
|
+
employeePaginatedListSchema: TEmployeePaginatedListSchema;
|
|
11
|
+
parseEmployee(context: RequestContext, data: unknown): z.output<TEmployeeSchema>;
|
|
12
|
+
parseEmployeePaginatedList(context: RequestContext, data: unknown, query: EmployeeQueryList): z.output<TEmployeePaginatedListSchema>;
|
|
13
|
+
mapRole(role: EmployeeRole): string;
|
|
14
|
+
}
|
|
15
|
+
export type EmployeeFactoryOutput<TFactory extends EmployeeFactory> = ReturnType<TFactory['parseEmployee']>;
|
|
16
|
+
export type EmployeePaginatedListFactoryOutput<TFactory extends EmployeeFactory> = ReturnType<TFactory['parseEmployeePaginatedList']>;
|
|
17
|
+
export type EmployeeFactoryWithOutput<TFactory extends EmployeeFactory> = Omit<TFactory, 'parseEmployee' | 'parseEmployeePaginatedList'> & {
|
|
18
|
+
parseEmployee(context: RequestContext, data: unknown): EmployeeFactoryOutput<TFactory>;
|
|
19
|
+
parseEmployeePaginatedList(context: RequestContext, data: unknown, query: EmployeeQueryList): EmployeePaginatedListFactoryOutput<TFactory>;
|
|
20
|
+
};
|
package/src/factories/index.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
export * from './cart.factory.js';
|
|
2
2
|
export * from './category.factory.js';
|
|
3
3
|
export * from './checkout.factory.js';
|
|
4
|
+
export * from './company-registration.factory.js';
|
|
5
|
+
export * from './company.factory.js';
|
|
6
|
+
export * from './employee-invitation.factory.js';
|
|
7
|
+
export * from './employee.factory.js';
|
|
4
8
|
export * from './identity.factory.js';
|
|
5
9
|
export * from './inventory.factory.js';
|
|
6
10
|
export * from './order.factory.js';
|
|
@@ -27,6 +27,14 @@ export declare const ImageSchema: z.ZodObject<{
|
|
|
27
27
|
width: z.ZodOptional<z.ZodNumber>;
|
|
28
28
|
height: z.ZodOptional<z.ZodNumber>;
|
|
29
29
|
}, z.core.$loose>;
|
|
30
|
+
/**
|
|
31
|
+
* This is a generic schema for holding an email and an optional phone both values.
|
|
32
|
+
*/
|
|
33
|
+
export declare const PointOfContactSchema: z.ZodObject<{
|
|
34
|
+
email: z.ZodEmail;
|
|
35
|
+
phone: z.ZodOptional<z.ZodString>;
|
|
36
|
+
}, z.core.$loose>;
|
|
30
37
|
export type Image = InferType<typeof ImageSchema>;
|
|
31
38
|
export type PaginationOptions = InferType<typeof PaginationOptionsSchema>;
|
|
32
39
|
export type BaseModel = InferType<typeof BaseModelSchema>;
|
|
40
|
+
export type PointOfContact = InferType<typeof PointOfContactSchema>;
|
|
@@ -2647,6 +2647,10 @@ export declare const CheckoutSchema: z.ZodObject<{
|
|
|
2647
2647
|
}, z.core.$loose>>;
|
|
2648
2648
|
name: z.ZodDefault<z.ZodString>;
|
|
2649
2649
|
description: z.ZodDefault<z.ZodString>;
|
|
2650
|
+
pointOfContact: z.ZodObject<{
|
|
2651
|
+
email: z.ZodEmail;
|
|
2652
|
+
phone: z.ZodOptional<z.ZodString>;
|
|
2653
|
+
}, z.core.$loose>;
|
|
2650
2654
|
billingAddress: z.ZodNullable<z.ZodOptional<z.ZodObject<{
|
|
2651
2655
|
identifier: z.ZodDefault<z.ZodObject<{
|
|
2652
2656
|
nickName: z.ZodString;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
import type { InferType } from '../../zod-utils.js';
|
|
3
|
+
export declare const CompanyRegistrationRequestSchema: z.ZodObject<{
|
|
4
|
+
identifier: z.ZodObject<{
|
|
5
|
+
key: z.ZodString;
|
|
6
|
+
}, z.core.$loose>;
|
|
7
|
+
companyIdentifier: z.ZodObject<{
|
|
8
|
+
taxIdentifier: z.ZodString;
|
|
9
|
+
}, z.core.$loose>;
|
|
10
|
+
name: z.ZodString;
|
|
11
|
+
pointOfContact: z.ZodObject<{
|
|
12
|
+
email: z.ZodEmail;
|
|
13
|
+
phone: z.ZodOptional<z.ZodString>;
|
|
14
|
+
}, z.core.$loose>;
|
|
15
|
+
status: z.ZodEnum<{
|
|
16
|
+
pending: "pending";
|
|
17
|
+
approved: "approved";
|
|
18
|
+
denied: "denied";
|
|
19
|
+
}>;
|
|
20
|
+
comment: z.ZodOptional<z.ZodString>;
|
|
21
|
+
}, z.core.$strip>;
|
|
22
|
+
export type CompanyRegistrationRequest = InferType<typeof CompanyRegistrationRequestSchema>;
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
import type { InferType } from '../../zod-utils.js';
|
|
3
|
+
/**
|
|
4
|
+
* Status of a company in the system. This can be used to determine if the company is active and allowed to perform certain actions, or if it is pending approval or blocked due to violations of terms of service or other issues.
|
|
5
|
+
*/
|
|
6
|
+
export declare const CompanyStatusSchema: z.ZodEnum<{
|
|
7
|
+
active: "active";
|
|
8
|
+
blocked: "blocked";
|
|
9
|
+
}>;
|
|
10
|
+
export declare const CompanySchema: z.ZodObject<{
|
|
11
|
+
identifier: z.ZodObject<{
|
|
12
|
+
taxIdentifier: z.ZodString;
|
|
13
|
+
}, z.core.$loose>;
|
|
14
|
+
/**
|
|
15
|
+
* DUN and Bradstreet identifier. Useful for doing automated credit checks
|
|
16
|
+
*/
|
|
17
|
+
dunsIdentifier: z.ZodOptional<z.ZodString>;
|
|
18
|
+
/**
|
|
19
|
+
* EU Tax identifier. Useful for reporting and printing
|
|
20
|
+
*/
|
|
21
|
+
tinIdentifier: z.ZodOptional<z.ZodString>;
|
|
22
|
+
name: z.ZodString;
|
|
23
|
+
logo: z.ZodOptional<z.ZodObject<{
|
|
24
|
+
sourceUrl: z.ZodDefault<z.ZodString>;
|
|
25
|
+
altText: z.ZodDefault<z.ZodString>;
|
|
26
|
+
width: z.ZodOptional<z.ZodNumber>;
|
|
27
|
+
height: z.ZodOptional<z.ZodNumber>;
|
|
28
|
+
}, z.core.$loose>>;
|
|
29
|
+
/**
|
|
30
|
+
* future
|
|
31
|
+
parentCompany: CompanyIdentifierSchema.optional(),
|
|
32
|
+
childOrganizationalEntities: z.array(CompanyIdentifierSchema).optional()
|
|
33
|
+
*/
|
|
34
|
+
status: z.ZodDefault<z.ZodEnum<{
|
|
35
|
+
active: "active";
|
|
36
|
+
blocked: "blocked";
|
|
37
|
+
}>>;
|
|
38
|
+
/**
|
|
39
|
+
* The legal contact point for this company. Might not be someone with an actual profile on the site.
|
|
40
|
+
*/
|
|
41
|
+
pointOfContact: z.ZodObject<{
|
|
42
|
+
email: z.ZodEmail;
|
|
43
|
+
phone: z.ZodOptional<z.ZodString>;
|
|
44
|
+
}, z.core.$loose>;
|
|
45
|
+
/**
|
|
46
|
+
* Default shipping address if different from default billing address
|
|
47
|
+
*/
|
|
48
|
+
shippingAddress: z.ZodOptional<z.ZodObject<{
|
|
49
|
+
identifier: z.ZodDefault<z.ZodObject<{
|
|
50
|
+
nickName: z.ZodString;
|
|
51
|
+
}, z.core.$loose>>;
|
|
52
|
+
firstName: z.ZodString;
|
|
53
|
+
lastName: z.ZodString;
|
|
54
|
+
streetAddress: z.ZodString;
|
|
55
|
+
streetNumber: z.ZodString;
|
|
56
|
+
city: z.ZodString;
|
|
57
|
+
region: z.ZodString;
|
|
58
|
+
postalCode: z.ZodString;
|
|
59
|
+
countryCode: z.ZodString;
|
|
60
|
+
}, z.core.$loose>>;
|
|
61
|
+
/**
|
|
62
|
+
* The billing address for this company.
|
|
63
|
+
*/
|
|
64
|
+
billingAddress: z.ZodObject<{
|
|
65
|
+
identifier: z.ZodDefault<z.ZodObject<{
|
|
66
|
+
nickName: z.ZodString;
|
|
67
|
+
}, z.core.$loose>>;
|
|
68
|
+
firstName: z.ZodString;
|
|
69
|
+
lastName: z.ZodString;
|
|
70
|
+
streetAddress: z.ZodString;
|
|
71
|
+
streetNumber: z.ZodString;
|
|
72
|
+
city: z.ZodString;
|
|
73
|
+
region: z.ZodString;
|
|
74
|
+
postalCode: z.ZodString;
|
|
75
|
+
countryCode: z.ZodString;
|
|
76
|
+
}, z.core.$loose>;
|
|
77
|
+
/**
|
|
78
|
+
* Other allowed shipping addresses
|
|
79
|
+
*/
|
|
80
|
+
alternateShippingAddresses: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
81
|
+
identifier: z.ZodDefault<z.ZodObject<{
|
|
82
|
+
nickName: z.ZodString;
|
|
83
|
+
}, z.core.$loose>>;
|
|
84
|
+
firstName: z.ZodString;
|
|
85
|
+
lastName: z.ZodString;
|
|
86
|
+
streetAddress: z.ZodString;
|
|
87
|
+
streetNumber: z.ZodString;
|
|
88
|
+
city: z.ZodString;
|
|
89
|
+
region: z.ZodString;
|
|
90
|
+
postalCode: z.ZodString;
|
|
91
|
+
countryCode: z.ZodString;
|
|
92
|
+
}, z.core.$loose>>>;
|
|
93
|
+
/**
|
|
94
|
+
* Various indicators the merchant can use to indicate what the company can self-manage.
|
|
95
|
+
*/
|
|
96
|
+
/**
|
|
97
|
+
* Can user type in a different shipping address at checkout?
|
|
98
|
+
*/
|
|
99
|
+
isCustomAddressesAllowed: z.ZodDefault<z.ZodBoolean>;
|
|
100
|
+
/**
|
|
101
|
+
* Can admin users manage the address book of the company, adding and removing shipping addresses as needed?
|
|
102
|
+
*/
|
|
103
|
+
isSelfManagementOfShippingAddressesAllowed: z.ZodDefault<z.ZodBoolean>;
|
|
104
|
+
}, z.core.$loose>;
|
|
105
|
+
export declare const CompanyPaginatedListSchema: z.ZodObject<{
|
|
106
|
+
pageNumber: z.ZodNumber;
|
|
107
|
+
pageSize: z.ZodNumber;
|
|
108
|
+
totalCount: z.ZodNumber;
|
|
109
|
+
totalPages: z.ZodNumber;
|
|
110
|
+
items: z.ZodArray<z.ZodObject<{
|
|
111
|
+
identifier: z.ZodObject<{
|
|
112
|
+
taxIdentifier: z.ZodString;
|
|
113
|
+
}, z.core.$loose>;
|
|
114
|
+
/**
|
|
115
|
+
* DUN and Bradstreet identifier. Useful for doing automated credit checks
|
|
116
|
+
*/
|
|
117
|
+
dunsIdentifier: z.ZodOptional<z.ZodString>;
|
|
118
|
+
/**
|
|
119
|
+
* EU Tax identifier. Useful for reporting and printing
|
|
120
|
+
*/
|
|
121
|
+
tinIdentifier: z.ZodOptional<z.ZodString>;
|
|
122
|
+
name: z.ZodString;
|
|
123
|
+
logo: z.ZodOptional<z.ZodObject<{
|
|
124
|
+
sourceUrl: z.ZodDefault<z.ZodString>;
|
|
125
|
+
altText: z.ZodDefault<z.ZodString>;
|
|
126
|
+
width: z.ZodOptional<z.ZodNumber>;
|
|
127
|
+
height: z.ZodOptional<z.ZodNumber>;
|
|
128
|
+
}, z.core.$loose>>;
|
|
129
|
+
/**
|
|
130
|
+
* future
|
|
131
|
+
parentCompany: CompanyIdentifierSchema.optional(),
|
|
132
|
+
childOrganizationalEntities: z.array(CompanyIdentifierSchema).optional()
|
|
133
|
+
*/
|
|
134
|
+
status: z.ZodDefault<z.ZodEnum<{
|
|
135
|
+
active: "active";
|
|
136
|
+
blocked: "blocked";
|
|
137
|
+
}>>;
|
|
138
|
+
/**
|
|
139
|
+
* The legal contact point for this company. Might not be someone with an actual profile on the site.
|
|
140
|
+
*/
|
|
141
|
+
pointOfContact: z.ZodObject<{
|
|
142
|
+
email: z.ZodEmail;
|
|
143
|
+
phone: z.ZodOptional<z.ZodString>;
|
|
144
|
+
}, z.core.$loose>;
|
|
145
|
+
/**
|
|
146
|
+
* Default shipping address if different from default billing address
|
|
147
|
+
*/
|
|
148
|
+
shippingAddress: z.ZodOptional<z.ZodObject<{
|
|
149
|
+
identifier: z.ZodDefault<z.ZodObject<{
|
|
150
|
+
nickName: z.ZodString;
|
|
151
|
+
}, z.core.$loose>>;
|
|
152
|
+
firstName: z.ZodString;
|
|
153
|
+
lastName: z.ZodString;
|
|
154
|
+
streetAddress: z.ZodString;
|
|
155
|
+
streetNumber: z.ZodString;
|
|
156
|
+
city: z.ZodString;
|
|
157
|
+
region: z.ZodString;
|
|
158
|
+
postalCode: z.ZodString;
|
|
159
|
+
countryCode: z.ZodString;
|
|
160
|
+
}, z.core.$loose>>;
|
|
161
|
+
/**
|
|
162
|
+
* The billing address for this company.
|
|
163
|
+
*/
|
|
164
|
+
billingAddress: z.ZodObject<{
|
|
165
|
+
identifier: z.ZodDefault<z.ZodObject<{
|
|
166
|
+
nickName: z.ZodString;
|
|
167
|
+
}, z.core.$loose>>;
|
|
168
|
+
firstName: z.ZodString;
|
|
169
|
+
lastName: z.ZodString;
|
|
170
|
+
streetAddress: z.ZodString;
|
|
171
|
+
streetNumber: z.ZodString;
|
|
172
|
+
city: z.ZodString;
|
|
173
|
+
region: z.ZodString;
|
|
174
|
+
postalCode: z.ZodString;
|
|
175
|
+
countryCode: z.ZodString;
|
|
176
|
+
}, z.core.$loose>;
|
|
177
|
+
/**
|
|
178
|
+
* Other allowed shipping addresses
|
|
179
|
+
*/
|
|
180
|
+
alternateShippingAddresses: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
181
|
+
identifier: z.ZodDefault<z.ZodObject<{
|
|
182
|
+
nickName: z.ZodString;
|
|
183
|
+
}, z.core.$loose>>;
|
|
184
|
+
firstName: z.ZodString;
|
|
185
|
+
lastName: z.ZodString;
|
|
186
|
+
streetAddress: z.ZodString;
|
|
187
|
+
streetNumber: z.ZodString;
|
|
188
|
+
city: z.ZodString;
|
|
189
|
+
region: z.ZodString;
|
|
190
|
+
postalCode: z.ZodString;
|
|
191
|
+
countryCode: z.ZodString;
|
|
192
|
+
}, z.core.$loose>>>;
|
|
193
|
+
/**
|
|
194
|
+
* Various indicators the merchant can use to indicate what the company can self-manage.
|
|
195
|
+
*/
|
|
196
|
+
/**
|
|
197
|
+
* Can user type in a different shipping address at checkout?
|
|
198
|
+
*/
|
|
199
|
+
isCustomAddressesAllowed: z.ZodDefault<z.ZodBoolean>;
|
|
200
|
+
/**
|
|
201
|
+
* Can admin users manage the address book of the company, adding and removing shipping addresses as needed?
|
|
202
|
+
*/
|
|
203
|
+
isSelfManagementOfShippingAddressesAllowed: z.ZodDefault<z.ZodBoolean>;
|
|
204
|
+
}, z.core.$loose>>;
|
|
205
|
+
identifier: z.ZodObject<{
|
|
206
|
+
paginationOptions: z.ZodObject<{
|
|
207
|
+
pageNumber: z.ZodDefault<z.ZodNumber>;
|
|
208
|
+
pageSize: z.ZodDefault<z.ZodNumber>;
|
|
209
|
+
}, z.core.$loose>;
|
|
210
|
+
}, z.core.$loose>;
|
|
211
|
+
}, z.core.$strip>;
|
|
212
|
+
export type CompanyPaginatedList = InferType<typeof CompanyPaginatedListSchema>;
|
|
213
|
+
export type Company = InferType<typeof CompanySchema>;
|