@ deliverart/ sdk- js- 全球类型
交付艺术JavaScript SDK的共享类型和公用软件包.
安装
npm install @deliverart/sdk-js-global-types
导出类型
常见图
地址
interface Address {
street: string
city: string
postalCode: string
country: string
state?: string
province?: string
line1?: string
line2?: string
}
地点
interface Location {
latitude: number
longitude: number
}
比林数据
interface BillingData {
email: string
pec?: string
sdi?: string
phone?: string
}
倾斜
interface Pagination {
currentPage: number
itemsPerPage: number
totalItems: number
totalPages: number
}
标注
interface Paginated<T> {
data: T[]
pagination: Pagination
}
工具类型
排序目录
type SortDir = 'asc' | 'desc'
日期时间
interface DatetimeFilter {
before?: string
after?: string
strictly_before?: string
strictly_after?: string
}
IRI 帮助者
iriSchema 系统
为 API 资源 IRIS 创建一个计划.
import { iriSchema } from '@deliverart/sdk-js-global-types';
const userIriSchema = iriSchema('/users/:id');
// Validates strings like: /users/123
iriNullableSchema (英语:
为无效的 API 资源 IRI 创建计划 .
import { iriNullableSchema } from '@deliverart/sdk-js-global-types';
const userNullableIriSchema = iriNullableSchema('/users/:id');
// Validates strings like: /users/123 or null
工具函数
创建 PagizedSchema
创建 Zod 响应的系统 .
import { createPaginatedSchema } from '@deliverart/sdk-js-global-types';
import { z } from 'zod';
const userSchema = z.object({
id: z.string(),
name: z.string()
});
const paginatedUsersSchema = createPaginatedSchema(userSchema);
// Type: Paginated<User>
配置响应
从 API 响应头提取 pagination 信息 .
import { responseToPagination } from '@deliverart/sdk-js-global-types';
parseResponse(data: unknown, rawResponse: Response): Paginated<User> {
const users = z.array(userSchema).parse(data);
return {
data: users,
pagination: responseToPagination(rawResponse)
};
}
用法实例
使用地址Schema
import { addressSchema } from '@deliverart/sdk-js-global-types';
import { z } from 'zod';
const createOrderSchema = z.object({
customerAddress: addressSchema.required(),
billingAddress: addressSchema.optional()
});
使用 PGination (P)
import { Paginated } from '@deliverart/sdk-js-global-types';
function displayUsers(result: Paginated<User>) {
console.log(`Page ${result.pagination.currentPage} of ${result.pagination.totalPages}`);
console.log(`Total items: ${result.pagination.totalItems}`);
result.data.forEach(user => {
console.log(user.name);
});
}
使用IRI验证器
import { iriSchema } from '@deliverart/sdk-js-global-types';
const productIriSchema = iriSchema('/products/:id');
// Valid
productIriSchema.parse('/products/123'); // ✓
// Invalid
productIriSchema.parse('/users/123'); // ✗ Throws validation error
productIriSchema.parse('invalid'); // ✗ Throws validation error
常数
国家
export const COUNTRIES = ['IT', 'US', 'UK', /* ... */] as const;
语言
export const LOCALES = ['it_IT', 'en_US', 'en_GB', /* ... */] as const;
许可证
麻省理工学院
排序子伙伴
orderSubPartnerSchema 揭露了被支持的五大象市场身份.
getOrderSubPartners(partner) 返回允许的值,而独立于连接
启动. isOrderSubPartnerAllowed(partner, subPartner) 验证一对.
getOrderSubPartnerPresentation(order) 返回市场/主显示数据
或对未知出处无效;客户端翻译连接词"vi".
matchesOrderProvenance(order, filter) 匹配 API 等同的父, 市场,
财务报告和审定财务报表 hasSubPartner 用于客户端实时视图的过滤器。 数值和省略值
两者均未具体说明。 此元数据不会取代服务器的授权或
餐厅写字资格检查.