@deliverart/sdk-js-user 0.0.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.
@@ -0,0 +1,11 @@
1
+ {
2
+ "$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json",
3
+ "changelog": "@changesets/cli/changelog",
4
+ "commit": false,
5
+ "fixed": [],
6
+ "linked": [],
7
+ "access": "restricted",
8
+ "baseBranch": "main",
9
+ "updateInternalDependencies": "patch",
10
+ "ignore": []
11
+ }
@@ -0,0 +1,47 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ permissions:
9
+ contents: write
10
+
11
+ jobs:
12
+ release:
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+
17
+ - uses: pnpm/action-setup@v2
18
+ with:
19
+ version: 8
20
+
21
+ - uses: actions/setup-node@v4
22
+ with:
23
+ node-version: '20'
24
+ registry-url: 'https://registry.npmjs.org'
25
+ always-auth: true
26
+ env:
27
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
28
+
29
+ - name: Install deps
30
+ run: pnpm install
31
+
32
+ - name: Build
33
+ run: pnpm build
34
+
35
+ - name: Create version and changelog
36
+ run: pnpx @changesets/cli version
37
+
38
+ - name: Publish to NPM
39
+ run: pnpx @changesets/cli publish
40
+ env:
41
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
42
+
43
+ - name: Push updated versions and changelogs
44
+ uses: EndBug/add-and-commit@v9
45
+ with:
46
+ message: 'chore(release): version bump'
47
+ add: '.'
package/.prettierrc ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "semi": false,
3
+ "singleQuote": true,
4
+ "printWidth": 100,
5
+ "trailingComma": "all",
6
+ "arrowParens": "avoid"
7
+ }
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # sdk-js-user
2
+
3
+ Deliverart sdk for user management.
package/dist/index.cjs ADDED
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ UserPlugin: () => UserPlugin,
24
+ securityRoleSchema: () => securityRoleSchema,
25
+ securityRoles: () => securityRoles,
26
+ userSchema: () => userSchema,
27
+ userStepSchema: () => userStepSchema,
28
+ userSteps: () => userSteps,
29
+ writableUserSchema: () => writableUserSchema
30
+ });
31
+ module.exports = __toCommonJS(index_exports);
32
+
33
+ // src/models.ts
34
+ var import_sdk_js_global_types = require("@deliverart/sdk-js-global-types");
35
+ var import_zod2 = require("zod");
36
+
37
+ // src/types.ts
38
+ var import_zod = require("zod");
39
+ var securityRoles = [
40
+ // Role used for describe single operations
41
+ "ROLE_CUSTOMER_ACCESS",
42
+ "ROLE_BUNDLE_ACCESS",
43
+ "ROLE_DELIVERY_ACCESS",
44
+ "ROLE_POINT_OF_SALE_ACCESS",
45
+ "ROLE_MENU_ACCESS",
46
+ "ROLE_INTEGRATION_ACCESS",
47
+ "ROLE_ORDER_ACCESS",
48
+ "ROLE_LEAD_ACCESS",
49
+ "ROLE_COMPANY_ACCESS",
50
+ "ROLE_USER_ACCESS",
51
+ "ROLE_SUBSCRIPTION_ACCESS",
52
+ "ROLE_PAYMENT_ACCESS",
53
+ "ROLE_PAYMENT_CONFIG_ACCESS",
54
+ // Role ADMIN for single operations
55
+ "ROLE_CUSTOMER_ADMIN",
56
+ "ROLE_BUNDLE_ADMIN",
57
+ "ROLE_DELIVERY_ADMIN",
58
+ "ROLE_POINT_OF_SALE_ADMIN",
59
+ "ROLE_MENU_ADMIN",
60
+ "ROLE_INTEGRATION_ADMIN",
61
+ "ROLE_ORDER_ADMIN",
62
+ "ROLE_LEAD_ADMIN",
63
+ "ROLE_COMPANY_ADMIN",
64
+ "ROLE_USER_ADMIN",
65
+ "ROLE_SUBSCRIPTION_ADMIN",
66
+ "ROLE_PAYMENT_ADMIN",
67
+ "ROLE_PAYMENT_CONFIG_ADMIN",
68
+ // Role for the users
69
+ "ROLE_COURIER",
70
+ "ROLE_CUSTOMER",
71
+ "ROLE_MANAGER",
72
+ "ROLE_SUPER_ADMIN",
73
+ "ROLE_KITCHEN",
74
+ // Default user role
75
+ "ROLE_USER"
76
+ ];
77
+ var securityRoleSchema = import_zod.z.enum(securityRoles);
78
+ var userSteps = [
79
+ "registration",
80
+ "verify_email",
81
+ "create_company",
82
+ "create_point_of_sale"
83
+ ];
84
+ var userStepSchema = import_zod.z.enum(userSteps);
85
+
86
+ // src/models.ts
87
+ var userSchema = import_zod2.z.object({
88
+ id: import_zod2.z.string(),
89
+ firstName: import_zod2.z.string(),
90
+ lastName: import_zod2.z.string(),
91
+ email: import_zod2.z.string().email(),
92
+ roles: securityRoleSchema.array(),
93
+ completedSteps: import_zod2.z.string().array(),
94
+ emailVerified: import_zod2.z.boolean(),
95
+ suspended: import_zod2.z.boolean(),
96
+ createdAt: import_sdk_js_global_types.datetimeSchema,
97
+ updatedAt: import_sdk_js_global_types.datetimeSchema
98
+ });
99
+ var writableUserSchema = userSchema.pick({
100
+ firstName: true,
101
+ lastName: true,
102
+ roles: true,
103
+ email: true
104
+ }).extend({
105
+ plainPassword: import_zod2.z.string().optional()
106
+ });
107
+
108
+ // src/plugin.ts
109
+ var import_sdk_js_global_types2 = require("@deliverart/sdk-js-global-types");
110
+ var UserPlugin = class {
111
+ setup(client) {
112
+ return {
113
+ me: {
114
+ async get() {
115
+ const response = await client.http.get("/me");
116
+ return response.data;
117
+ }
118
+ },
119
+ users: {
120
+ async list(params) {
121
+ const response = await client.http.get(`/users`, { params });
122
+ return { data: response.data, pagination: (0, import_sdk_js_global_types2.responseToPagination)(response) };
123
+ },
124
+ async get(id) {
125
+ const response = await client.http.get(`/users/${id}`);
126
+ return response.data;
127
+ },
128
+ async update(id, data) {
129
+ const response = await client.http.patch(`/users/${id}`, data, {
130
+ headers: { "Content-Type": "application/merge-patch+json" }
131
+ });
132
+ return response.data;
133
+ },
134
+ async create(data) {
135
+ const response = await client.http.post(`/users`, data, {
136
+ headers: { "Content-Type": "application/json" }
137
+ });
138
+ return response.data;
139
+ },
140
+ async delete(id) {
141
+ await client.http.delete(`/users/${id}`);
142
+ }
143
+ }
144
+ };
145
+ }
146
+ };
147
+ // Annotate the CommonJS export names for ESM import in node:
148
+ 0 && (module.exports = {
149
+ UserPlugin,
150
+ securityRoleSchema,
151
+ securityRoles,
152
+ userSchema,
153
+ userStepSchema,
154
+ userSteps,
155
+ writableUserSchema
156
+ });
@@ -0,0 +1,100 @@
1
+ import { z } from 'zod';
2
+ import { ApiExtension, ApiClientPlugin, ApiClient } from '@deliverart/sdk-js-core';
3
+ import { SortDir, Paginated } from '@deliverart/sdk-js-global-types';
4
+
5
+ declare const userSchema: z.ZodObject<{
6
+ id: z.ZodString;
7
+ firstName: z.ZodString;
8
+ lastName: z.ZodString;
9
+ email: z.ZodString;
10
+ roles: z.ZodArray<z.ZodEnum<["ROLE_CUSTOMER_ACCESS", "ROLE_BUNDLE_ACCESS", "ROLE_DELIVERY_ACCESS", "ROLE_POINT_OF_SALE_ACCESS", "ROLE_MENU_ACCESS", "ROLE_INTEGRATION_ACCESS", "ROLE_ORDER_ACCESS", "ROLE_LEAD_ACCESS", "ROLE_COMPANY_ACCESS", "ROLE_USER_ACCESS", "ROLE_SUBSCRIPTION_ACCESS", "ROLE_PAYMENT_ACCESS", "ROLE_PAYMENT_CONFIG_ACCESS", "ROLE_CUSTOMER_ADMIN", "ROLE_BUNDLE_ADMIN", "ROLE_DELIVERY_ADMIN", "ROLE_POINT_OF_SALE_ADMIN", "ROLE_MENU_ADMIN", "ROLE_INTEGRATION_ADMIN", "ROLE_ORDER_ADMIN", "ROLE_LEAD_ADMIN", "ROLE_COMPANY_ADMIN", "ROLE_USER_ADMIN", "ROLE_SUBSCRIPTION_ADMIN", "ROLE_PAYMENT_ADMIN", "ROLE_PAYMENT_CONFIG_ADMIN", "ROLE_COURIER", "ROLE_CUSTOMER", "ROLE_MANAGER", "ROLE_SUPER_ADMIN", "ROLE_KITCHEN", "ROLE_USER"]>, "many">;
11
+ completedSteps: z.ZodArray<z.ZodString, "many">;
12
+ emailVerified: z.ZodBoolean;
13
+ suspended: z.ZodBoolean;
14
+ createdAt: z.ZodString;
15
+ updatedAt: z.ZodString;
16
+ }, "strip", z.ZodTypeAny, {
17
+ id: string;
18
+ firstName: string;
19
+ lastName: string;
20
+ email: string;
21
+ roles: ("ROLE_CUSTOMER_ACCESS" | "ROLE_BUNDLE_ACCESS" | "ROLE_DELIVERY_ACCESS" | "ROLE_POINT_OF_SALE_ACCESS" | "ROLE_MENU_ACCESS" | "ROLE_INTEGRATION_ACCESS" | "ROLE_ORDER_ACCESS" | "ROLE_LEAD_ACCESS" | "ROLE_COMPANY_ACCESS" | "ROLE_USER_ACCESS" | "ROLE_SUBSCRIPTION_ACCESS" | "ROLE_PAYMENT_ACCESS" | "ROLE_PAYMENT_CONFIG_ACCESS" | "ROLE_CUSTOMER_ADMIN" | "ROLE_BUNDLE_ADMIN" | "ROLE_DELIVERY_ADMIN" | "ROLE_POINT_OF_SALE_ADMIN" | "ROLE_MENU_ADMIN" | "ROLE_INTEGRATION_ADMIN" | "ROLE_ORDER_ADMIN" | "ROLE_LEAD_ADMIN" | "ROLE_COMPANY_ADMIN" | "ROLE_USER_ADMIN" | "ROLE_SUBSCRIPTION_ADMIN" | "ROLE_PAYMENT_ADMIN" | "ROLE_PAYMENT_CONFIG_ADMIN" | "ROLE_COURIER" | "ROLE_CUSTOMER" | "ROLE_MANAGER" | "ROLE_SUPER_ADMIN" | "ROLE_KITCHEN" | "ROLE_USER")[];
22
+ completedSteps: string[];
23
+ emailVerified: boolean;
24
+ suspended: boolean;
25
+ createdAt: string;
26
+ updatedAt: string;
27
+ }, {
28
+ id: string;
29
+ firstName: string;
30
+ lastName: string;
31
+ email: string;
32
+ roles: ("ROLE_CUSTOMER_ACCESS" | "ROLE_BUNDLE_ACCESS" | "ROLE_DELIVERY_ACCESS" | "ROLE_POINT_OF_SALE_ACCESS" | "ROLE_MENU_ACCESS" | "ROLE_INTEGRATION_ACCESS" | "ROLE_ORDER_ACCESS" | "ROLE_LEAD_ACCESS" | "ROLE_COMPANY_ACCESS" | "ROLE_USER_ACCESS" | "ROLE_SUBSCRIPTION_ACCESS" | "ROLE_PAYMENT_ACCESS" | "ROLE_PAYMENT_CONFIG_ACCESS" | "ROLE_CUSTOMER_ADMIN" | "ROLE_BUNDLE_ADMIN" | "ROLE_DELIVERY_ADMIN" | "ROLE_POINT_OF_SALE_ADMIN" | "ROLE_MENU_ADMIN" | "ROLE_INTEGRATION_ADMIN" | "ROLE_ORDER_ADMIN" | "ROLE_LEAD_ADMIN" | "ROLE_COMPANY_ADMIN" | "ROLE_USER_ADMIN" | "ROLE_SUBSCRIPTION_ADMIN" | "ROLE_PAYMENT_ADMIN" | "ROLE_PAYMENT_CONFIG_ADMIN" | "ROLE_COURIER" | "ROLE_CUSTOMER" | "ROLE_MANAGER" | "ROLE_SUPER_ADMIN" | "ROLE_KITCHEN" | "ROLE_USER")[];
33
+ completedSteps: string[];
34
+ emailVerified: boolean;
35
+ suspended: boolean;
36
+ createdAt: string;
37
+ updatedAt: string;
38
+ }>;
39
+ type User = z.infer<typeof userSchema>;
40
+ declare const writableUserSchema: z.ZodObject<Pick<{
41
+ id: z.ZodString;
42
+ firstName: z.ZodString;
43
+ lastName: z.ZodString;
44
+ email: z.ZodString;
45
+ roles: z.ZodArray<z.ZodEnum<["ROLE_CUSTOMER_ACCESS", "ROLE_BUNDLE_ACCESS", "ROLE_DELIVERY_ACCESS", "ROLE_POINT_OF_SALE_ACCESS", "ROLE_MENU_ACCESS", "ROLE_INTEGRATION_ACCESS", "ROLE_ORDER_ACCESS", "ROLE_LEAD_ACCESS", "ROLE_COMPANY_ACCESS", "ROLE_USER_ACCESS", "ROLE_SUBSCRIPTION_ACCESS", "ROLE_PAYMENT_ACCESS", "ROLE_PAYMENT_CONFIG_ACCESS", "ROLE_CUSTOMER_ADMIN", "ROLE_BUNDLE_ADMIN", "ROLE_DELIVERY_ADMIN", "ROLE_POINT_OF_SALE_ADMIN", "ROLE_MENU_ADMIN", "ROLE_INTEGRATION_ADMIN", "ROLE_ORDER_ADMIN", "ROLE_LEAD_ADMIN", "ROLE_COMPANY_ADMIN", "ROLE_USER_ADMIN", "ROLE_SUBSCRIPTION_ADMIN", "ROLE_PAYMENT_ADMIN", "ROLE_PAYMENT_CONFIG_ADMIN", "ROLE_COURIER", "ROLE_CUSTOMER", "ROLE_MANAGER", "ROLE_SUPER_ADMIN", "ROLE_KITCHEN", "ROLE_USER"]>, "many">;
46
+ completedSteps: z.ZodArray<z.ZodString, "many">;
47
+ emailVerified: z.ZodBoolean;
48
+ suspended: z.ZodBoolean;
49
+ createdAt: z.ZodString;
50
+ updatedAt: z.ZodString;
51
+ }, "firstName" | "lastName" | "email" | "roles"> & {
52
+ plainPassword: z.ZodOptional<z.ZodString>;
53
+ }, "strip", z.ZodTypeAny, {
54
+ firstName: string;
55
+ lastName: string;
56
+ email: string;
57
+ roles: ("ROLE_CUSTOMER_ACCESS" | "ROLE_BUNDLE_ACCESS" | "ROLE_DELIVERY_ACCESS" | "ROLE_POINT_OF_SALE_ACCESS" | "ROLE_MENU_ACCESS" | "ROLE_INTEGRATION_ACCESS" | "ROLE_ORDER_ACCESS" | "ROLE_LEAD_ACCESS" | "ROLE_COMPANY_ACCESS" | "ROLE_USER_ACCESS" | "ROLE_SUBSCRIPTION_ACCESS" | "ROLE_PAYMENT_ACCESS" | "ROLE_PAYMENT_CONFIG_ACCESS" | "ROLE_CUSTOMER_ADMIN" | "ROLE_BUNDLE_ADMIN" | "ROLE_DELIVERY_ADMIN" | "ROLE_POINT_OF_SALE_ADMIN" | "ROLE_MENU_ADMIN" | "ROLE_INTEGRATION_ADMIN" | "ROLE_ORDER_ADMIN" | "ROLE_LEAD_ADMIN" | "ROLE_COMPANY_ADMIN" | "ROLE_USER_ADMIN" | "ROLE_SUBSCRIPTION_ADMIN" | "ROLE_PAYMENT_ADMIN" | "ROLE_PAYMENT_CONFIG_ADMIN" | "ROLE_COURIER" | "ROLE_CUSTOMER" | "ROLE_MANAGER" | "ROLE_SUPER_ADMIN" | "ROLE_KITCHEN" | "ROLE_USER")[];
58
+ plainPassword?: string | undefined;
59
+ }, {
60
+ firstName: string;
61
+ lastName: string;
62
+ email: string;
63
+ roles: ("ROLE_CUSTOMER_ACCESS" | "ROLE_BUNDLE_ACCESS" | "ROLE_DELIVERY_ACCESS" | "ROLE_POINT_OF_SALE_ACCESS" | "ROLE_MENU_ACCESS" | "ROLE_INTEGRATION_ACCESS" | "ROLE_ORDER_ACCESS" | "ROLE_LEAD_ACCESS" | "ROLE_COMPANY_ACCESS" | "ROLE_USER_ACCESS" | "ROLE_SUBSCRIPTION_ACCESS" | "ROLE_PAYMENT_ACCESS" | "ROLE_PAYMENT_CONFIG_ACCESS" | "ROLE_CUSTOMER_ADMIN" | "ROLE_BUNDLE_ADMIN" | "ROLE_DELIVERY_ADMIN" | "ROLE_POINT_OF_SALE_ADMIN" | "ROLE_MENU_ADMIN" | "ROLE_INTEGRATION_ADMIN" | "ROLE_ORDER_ADMIN" | "ROLE_LEAD_ADMIN" | "ROLE_COMPANY_ADMIN" | "ROLE_USER_ADMIN" | "ROLE_SUBSCRIPTION_ADMIN" | "ROLE_PAYMENT_ADMIN" | "ROLE_PAYMENT_CONFIG_ADMIN" | "ROLE_COURIER" | "ROLE_CUSTOMER" | "ROLE_MANAGER" | "ROLE_SUPER_ADMIN" | "ROLE_KITCHEN" | "ROLE_USER")[];
64
+ plainPassword?: string | undefined;
65
+ }>;
66
+ type WritableUser = z.infer<typeof writableUserSchema>;
67
+
68
+ declare const securityRoles: readonly ["ROLE_CUSTOMER_ACCESS", "ROLE_BUNDLE_ACCESS", "ROLE_DELIVERY_ACCESS", "ROLE_POINT_OF_SALE_ACCESS", "ROLE_MENU_ACCESS", "ROLE_INTEGRATION_ACCESS", "ROLE_ORDER_ACCESS", "ROLE_LEAD_ACCESS", "ROLE_COMPANY_ACCESS", "ROLE_USER_ACCESS", "ROLE_SUBSCRIPTION_ACCESS", "ROLE_PAYMENT_ACCESS", "ROLE_PAYMENT_CONFIG_ACCESS", "ROLE_CUSTOMER_ADMIN", "ROLE_BUNDLE_ADMIN", "ROLE_DELIVERY_ADMIN", "ROLE_POINT_OF_SALE_ADMIN", "ROLE_MENU_ADMIN", "ROLE_INTEGRATION_ADMIN", "ROLE_ORDER_ADMIN", "ROLE_LEAD_ADMIN", "ROLE_COMPANY_ADMIN", "ROLE_USER_ADMIN", "ROLE_SUBSCRIPTION_ADMIN", "ROLE_PAYMENT_ADMIN", "ROLE_PAYMENT_CONFIG_ADMIN", "ROLE_COURIER", "ROLE_CUSTOMER", "ROLE_MANAGER", "ROLE_SUPER_ADMIN", "ROLE_KITCHEN", "ROLE_USER"];
69
+ declare const securityRoleSchema: z.ZodEnum<["ROLE_CUSTOMER_ACCESS", "ROLE_BUNDLE_ACCESS", "ROLE_DELIVERY_ACCESS", "ROLE_POINT_OF_SALE_ACCESS", "ROLE_MENU_ACCESS", "ROLE_INTEGRATION_ACCESS", "ROLE_ORDER_ACCESS", "ROLE_LEAD_ACCESS", "ROLE_COMPANY_ACCESS", "ROLE_USER_ACCESS", "ROLE_SUBSCRIPTION_ACCESS", "ROLE_PAYMENT_ACCESS", "ROLE_PAYMENT_CONFIG_ACCESS", "ROLE_CUSTOMER_ADMIN", "ROLE_BUNDLE_ADMIN", "ROLE_DELIVERY_ADMIN", "ROLE_POINT_OF_SALE_ADMIN", "ROLE_MENU_ADMIN", "ROLE_INTEGRATION_ADMIN", "ROLE_ORDER_ADMIN", "ROLE_LEAD_ADMIN", "ROLE_COMPANY_ADMIN", "ROLE_USER_ADMIN", "ROLE_SUBSCRIPTION_ADMIN", "ROLE_PAYMENT_ADMIN", "ROLE_PAYMENT_CONFIG_ADMIN", "ROLE_COURIER", "ROLE_CUSTOMER", "ROLE_MANAGER", "ROLE_SUPER_ADMIN", "ROLE_KITCHEN", "ROLE_USER"]>;
70
+ type SecurityRole = z.infer<typeof securityRoleSchema>;
71
+ declare const userSteps: readonly ["registration", "verify_email", "create_company", "create_point_of_sale"];
72
+ declare const userStepSchema: z.ZodEnum<["registration", "verify_email", "create_company", "create_point_of_sale"]>;
73
+ type UserStep = z.infer<typeof userStepSchema>;
74
+ interface GetUsersQueryParams {
75
+ email?: string;
76
+ firstName?: string;
77
+ lastName?: string;
78
+ suspended?: string;
79
+ 'order[createdAt]'?: SortDir;
80
+ page?: number;
81
+ 'roles[]'?: SecurityRole[];
82
+ }
83
+ interface UserExtension extends ApiExtension {
84
+ me: {
85
+ get: () => Promise<User>;
86
+ };
87
+ users: {
88
+ list: (params?: GetUsersQueryParams) => Promise<Paginated<User[]>>;
89
+ create: (data: WritableUser) => Promise<User>;
90
+ get: (id: string) => Promise<User>;
91
+ delete: (id: string) => Promise<void>;
92
+ update: (id: string, data: Partial<WritableUser>) => Promise<User>;
93
+ };
94
+ }
95
+
96
+ declare class UserPlugin implements ApiClientPlugin<UserExtension> {
97
+ setup(client: ApiClient): UserExtension;
98
+ }
99
+
100
+ export { type GetUsersQueryParams, type SecurityRole, type User, type UserExtension, UserPlugin, type UserStep, type WritableUser, securityRoleSchema, securityRoles, userSchema, userStepSchema, userSteps, writableUserSchema };
@@ -0,0 +1,100 @@
1
+ import { z } from 'zod';
2
+ import { ApiExtension, ApiClientPlugin, ApiClient } from '@deliverart/sdk-js-core';
3
+ import { SortDir, Paginated } from '@deliverart/sdk-js-global-types';
4
+
5
+ declare const userSchema: z.ZodObject<{
6
+ id: z.ZodString;
7
+ firstName: z.ZodString;
8
+ lastName: z.ZodString;
9
+ email: z.ZodString;
10
+ roles: z.ZodArray<z.ZodEnum<["ROLE_CUSTOMER_ACCESS", "ROLE_BUNDLE_ACCESS", "ROLE_DELIVERY_ACCESS", "ROLE_POINT_OF_SALE_ACCESS", "ROLE_MENU_ACCESS", "ROLE_INTEGRATION_ACCESS", "ROLE_ORDER_ACCESS", "ROLE_LEAD_ACCESS", "ROLE_COMPANY_ACCESS", "ROLE_USER_ACCESS", "ROLE_SUBSCRIPTION_ACCESS", "ROLE_PAYMENT_ACCESS", "ROLE_PAYMENT_CONFIG_ACCESS", "ROLE_CUSTOMER_ADMIN", "ROLE_BUNDLE_ADMIN", "ROLE_DELIVERY_ADMIN", "ROLE_POINT_OF_SALE_ADMIN", "ROLE_MENU_ADMIN", "ROLE_INTEGRATION_ADMIN", "ROLE_ORDER_ADMIN", "ROLE_LEAD_ADMIN", "ROLE_COMPANY_ADMIN", "ROLE_USER_ADMIN", "ROLE_SUBSCRIPTION_ADMIN", "ROLE_PAYMENT_ADMIN", "ROLE_PAYMENT_CONFIG_ADMIN", "ROLE_COURIER", "ROLE_CUSTOMER", "ROLE_MANAGER", "ROLE_SUPER_ADMIN", "ROLE_KITCHEN", "ROLE_USER"]>, "many">;
11
+ completedSteps: z.ZodArray<z.ZodString, "many">;
12
+ emailVerified: z.ZodBoolean;
13
+ suspended: z.ZodBoolean;
14
+ createdAt: z.ZodString;
15
+ updatedAt: z.ZodString;
16
+ }, "strip", z.ZodTypeAny, {
17
+ id: string;
18
+ firstName: string;
19
+ lastName: string;
20
+ email: string;
21
+ roles: ("ROLE_CUSTOMER_ACCESS" | "ROLE_BUNDLE_ACCESS" | "ROLE_DELIVERY_ACCESS" | "ROLE_POINT_OF_SALE_ACCESS" | "ROLE_MENU_ACCESS" | "ROLE_INTEGRATION_ACCESS" | "ROLE_ORDER_ACCESS" | "ROLE_LEAD_ACCESS" | "ROLE_COMPANY_ACCESS" | "ROLE_USER_ACCESS" | "ROLE_SUBSCRIPTION_ACCESS" | "ROLE_PAYMENT_ACCESS" | "ROLE_PAYMENT_CONFIG_ACCESS" | "ROLE_CUSTOMER_ADMIN" | "ROLE_BUNDLE_ADMIN" | "ROLE_DELIVERY_ADMIN" | "ROLE_POINT_OF_SALE_ADMIN" | "ROLE_MENU_ADMIN" | "ROLE_INTEGRATION_ADMIN" | "ROLE_ORDER_ADMIN" | "ROLE_LEAD_ADMIN" | "ROLE_COMPANY_ADMIN" | "ROLE_USER_ADMIN" | "ROLE_SUBSCRIPTION_ADMIN" | "ROLE_PAYMENT_ADMIN" | "ROLE_PAYMENT_CONFIG_ADMIN" | "ROLE_COURIER" | "ROLE_CUSTOMER" | "ROLE_MANAGER" | "ROLE_SUPER_ADMIN" | "ROLE_KITCHEN" | "ROLE_USER")[];
22
+ completedSteps: string[];
23
+ emailVerified: boolean;
24
+ suspended: boolean;
25
+ createdAt: string;
26
+ updatedAt: string;
27
+ }, {
28
+ id: string;
29
+ firstName: string;
30
+ lastName: string;
31
+ email: string;
32
+ roles: ("ROLE_CUSTOMER_ACCESS" | "ROLE_BUNDLE_ACCESS" | "ROLE_DELIVERY_ACCESS" | "ROLE_POINT_OF_SALE_ACCESS" | "ROLE_MENU_ACCESS" | "ROLE_INTEGRATION_ACCESS" | "ROLE_ORDER_ACCESS" | "ROLE_LEAD_ACCESS" | "ROLE_COMPANY_ACCESS" | "ROLE_USER_ACCESS" | "ROLE_SUBSCRIPTION_ACCESS" | "ROLE_PAYMENT_ACCESS" | "ROLE_PAYMENT_CONFIG_ACCESS" | "ROLE_CUSTOMER_ADMIN" | "ROLE_BUNDLE_ADMIN" | "ROLE_DELIVERY_ADMIN" | "ROLE_POINT_OF_SALE_ADMIN" | "ROLE_MENU_ADMIN" | "ROLE_INTEGRATION_ADMIN" | "ROLE_ORDER_ADMIN" | "ROLE_LEAD_ADMIN" | "ROLE_COMPANY_ADMIN" | "ROLE_USER_ADMIN" | "ROLE_SUBSCRIPTION_ADMIN" | "ROLE_PAYMENT_ADMIN" | "ROLE_PAYMENT_CONFIG_ADMIN" | "ROLE_COURIER" | "ROLE_CUSTOMER" | "ROLE_MANAGER" | "ROLE_SUPER_ADMIN" | "ROLE_KITCHEN" | "ROLE_USER")[];
33
+ completedSteps: string[];
34
+ emailVerified: boolean;
35
+ suspended: boolean;
36
+ createdAt: string;
37
+ updatedAt: string;
38
+ }>;
39
+ type User = z.infer<typeof userSchema>;
40
+ declare const writableUserSchema: z.ZodObject<Pick<{
41
+ id: z.ZodString;
42
+ firstName: z.ZodString;
43
+ lastName: z.ZodString;
44
+ email: z.ZodString;
45
+ roles: z.ZodArray<z.ZodEnum<["ROLE_CUSTOMER_ACCESS", "ROLE_BUNDLE_ACCESS", "ROLE_DELIVERY_ACCESS", "ROLE_POINT_OF_SALE_ACCESS", "ROLE_MENU_ACCESS", "ROLE_INTEGRATION_ACCESS", "ROLE_ORDER_ACCESS", "ROLE_LEAD_ACCESS", "ROLE_COMPANY_ACCESS", "ROLE_USER_ACCESS", "ROLE_SUBSCRIPTION_ACCESS", "ROLE_PAYMENT_ACCESS", "ROLE_PAYMENT_CONFIG_ACCESS", "ROLE_CUSTOMER_ADMIN", "ROLE_BUNDLE_ADMIN", "ROLE_DELIVERY_ADMIN", "ROLE_POINT_OF_SALE_ADMIN", "ROLE_MENU_ADMIN", "ROLE_INTEGRATION_ADMIN", "ROLE_ORDER_ADMIN", "ROLE_LEAD_ADMIN", "ROLE_COMPANY_ADMIN", "ROLE_USER_ADMIN", "ROLE_SUBSCRIPTION_ADMIN", "ROLE_PAYMENT_ADMIN", "ROLE_PAYMENT_CONFIG_ADMIN", "ROLE_COURIER", "ROLE_CUSTOMER", "ROLE_MANAGER", "ROLE_SUPER_ADMIN", "ROLE_KITCHEN", "ROLE_USER"]>, "many">;
46
+ completedSteps: z.ZodArray<z.ZodString, "many">;
47
+ emailVerified: z.ZodBoolean;
48
+ suspended: z.ZodBoolean;
49
+ createdAt: z.ZodString;
50
+ updatedAt: z.ZodString;
51
+ }, "firstName" | "lastName" | "email" | "roles"> & {
52
+ plainPassword: z.ZodOptional<z.ZodString>;
53
+ }, "strip", z.ZodTypeAny, {
54
+ firstName: string;
55
+ lastName: string;
56
+ email: string;
57
+ roles: ("ROLE_CUSTOMER_ACCESS" | "ROLE_BUNDLE_ACCESS" | "ROLE_DELIVERY_ACCESS" | "ROLE_POINT_OF_SALE_ACCESS" | "ROLE_MENU_ACCESS" | "ROLE_INTEGRATION_ACCESS" | "ROLE_ORDER_ACCESS" | "ROLE_LEAD_ACCESS" | "ROLE_COMPANY_ACCESS" | "ROLE_USER_ACCESS" | "ROLE_SUBSCRIPTION_ACCESS" | "ROLE_PAYMENT_ACCESS" | "ROLE_PAYMENT_CONFIG_ACCESS" | "ROLE_CUSTOMER_ADMIN" | "ROLE_BUNDLE_ADMIN" | "ROLE_DELIVERY_ADMIN" | "ROLE_POINT_OF_SALE_ADMIN" | "ROLE_MENU_ADMIN" | "ROLE_INTEGRATION_ADMIN" | "ROLE_ORDER_ADMIN" | "ROLE_LEAD_ADMIN" | "ROLE_COMPANY_ADMIN" | "ROLE_USER_ADMIN" | "ROLE_SUBSCRIPTION_ADMIN" | "ROLE_PAYMENT_ADMIN" | "ROLE_PAYMENT_CONFIG_ADMIN" | "ROLE_COURIER" | "ROLE_CUSTOMER" | "ROLE_MANAGER" | "ROLE_SUPER_ADMIN" | "ROLE_KITCHEN" | "ROLE_USER")[];
58
+ plainPassword?: string | undefined;
59
+ }, {
60
+ firstName: string;
61
+ lastName: string;
62
+ email: string;
63
+ roles: ("ROLE_CUSTOMER_ACCESS" | "ROLE_BUNDLE_ACCESS" | "ROLE_DELIVERY_ACCESS" | "ROLE_POINT_OF_SALE_ACCESS" | "ROLE_MENU_ACCESS" | "ROLE_INTEGRATION_ACCESS" | "ROLE_ORDER_ACCESS" | "ROLE_LEAD_ACCESS" | "ROLE_COMPANY_ACCESS" | "ROLE_USER_ACCESS" | "ROLE_SUBSCRIPTION_ACCESS" | "ROLE_PAYMENT_ACCESS" | "ROLE_PAYMENT_CONFIG_ACCESS" | "ROLE_CUSTOMER_ADMIN" | "ROLE_BUNDLE_ADMIN" | "ROLE_DELIVERY_ADMIN" | "ROLE_POINT_OF_SALE_ADMIN" | "ROLE_MENU_ADMIN" | "ROLE_INTEGRATION_ADMIN" | "ROLE_ORDER_ADMIN" | "ROLE_LEAD_ADMIN" | "ROLE_COMPANY_ADMIN" | "ROLE_USER_ADMIN" | "ROLE_SUBSCRIPTION_ADMIN" | "ROLE_PAYMENT_ADMIN" | "ROLE_PAYMENT_CONFIG_ADMIN" | "ROLE_COURIER" | "ROLE_CUSTOMER" | "ROLE_MANAGER" | "ROLE_SUPER_ADMIN" | "ROLE_KITCHEN" | "ROLE_USER")[];
64
+ plainPassword?: string | undefined;
65
+ }>;
66
+ type WritableUser = z.infer<typeof writableUserSchema>;
67
+
68
+ declare const securityRoles: readonly ["ROLE_CUSTOMER_ACCESS", "ROLE_BUNDLE_ACCESS", "ROLE_DELIVERY_ACCESS", "ROLE_POINT_OF_SALE_ACCESS", "ROLE_MENU_ACCESS", "ROLE_INTEGRATION_ACCESS", "ROLE_ORDER_ACCESS", "ROLE_LEAD_ACCESS", "ROLE_COMPANY_ACCESS", "ROLE_USER_ACCESS", "ROLE_SUBSCRIPTION_ACCESS", "ROLE_PAYMENT_ACCESS", "ROLE_PAYMENT_CONFIG_ACCESS", "ROLE_CUSTOMER_ADMIN", "ROLE_BUNDLE_ADMIN", "ROLE_DELIVERY_ADMIN", "ROLE_POINT_OF_SALE_ADMIN", "ROLE_MENU_ADMIN", "ROLE_INTEGRATION_ADMIN", "ROLE_ORDER_ADMIN", "ROLE_LEAD_ADMIN", "ROLE_COMPANY_ADMIN", "ROLE_USER_ADMIN", "ROLE_SUBSCRIPTION_ADMIN", "ROLE_PAYMENT_ADMIN", "ROLE_PAYMENT_CONFIG_ADMIN", "ROLE_COURIER", "ROLE_CUSTOMER", "ROLE_MANAGER", "ROLE_SUPER_ADMIN", "ROLE_KITCHEN", "ROLE_USER"];
69
+ declare const securityRoleSchema: z.ZodEnum<["ROLE_CUSTOMER_ACCESS", "ROLE_BUNDLE_ACCESS", "ROLE_DELIVERY_ACCESS", "ROLE_POINT_OF_SALE_ACCESS", "ROLE_MENU_ACCESS", "ROLE_INTEGRATION_ACCESS", "ROLE_ORDER_ACCESS", "ROLE_LEAD_ACCESS", "ROLE_COMPANY_ACCESS", "ROLE_USER_ACCESS", "ROLE_SUBSCRIPTION_ACCESS", "ROLE_PAYMENT_ACCESS", "ROLE_PAYMENT_CONFIG_ACCESS", "ROLE_CUSTOMER_ADMIN", "ROLE_BUNDLE_ADMIN", "ROLE_DELIVERY_ADMIN", "ROLE_POINT_OF_SALE_ADMIN", "ROLE_MENU_ADMIN", "ROLE_INTEGRATION_ADMIN", "ROLE_ORDER_ADMIN", "ROLE_LEAD_ADMIN", "ROLE_COMPANY_ADMIN", "ROLE_USER_ADMIN", "ROLE_SUBSCRIPTION_ADMIN", "ROLE_PAYMENT_ADMIN", "ROLE_PAYMENT_CONFIG_ADMIN", "ROLE_COURIER", "ROLE_CUSTOMER", "ROLE_MANAGER", "ROLE_SUPER_ADMIN", "ROLE_KITCHEN", "ROLE_USER"]>;
70
+ type SecurityRole = z.infer<typeof securityRoleSchema>;
71
+ declare const userSteps: readonly ["registration", "verify_email", "create_company", "create_point_of_sale"];
72
+ declare const userStepSchema: z.ZodEnum<["registration", "verify_email", "create_company", "create_point_of_sale"]>;
73
+ type UserStep = z.infer<typeof userStepSchema>;
74
+ interface GetUsersQueryParams {
75
+ email?: string;
76
+ firstName?: string;
77
+ lastName?: string;
78
+ suspended?: string;
79
+ 'order[createdAt]'?: SortDir;
80
+ page?: number;
81
+ 'roles[]'?: SecurityRole[];
82
+ }
83
+ interface UserExtension extends ApiExtension {
84
+ me: {
85
+ get: () => Promise<User>;
86
+ };
87
+ users: {
88
+ list: (params?: GetUsersQueryParams) => Promise<Paginated<User[]>>;
89
+ create: (data: WritableUser) => Promise<User>;
90
+ get: (id: string) => Promise<User>;
91
+ delete: (id: string) => Promise<void>;
92
+ update: (id: string, data: Partial<WritableUser>) => Promise<User>;
93
+ };
94
+ }
95
+
96
+ declare class UserPlugin implements ApiClientPlugin<UserExtension> {
97
+ setup(client: ApiClient): UserExtension;
98
+ }
99
+
100
+ export { type GetUsersQueryParams, type SecurityRole, type User, type UserExtension, UserPlugin, type UserStep, type WritableUser, securityRoleSchema, securityRoles, userSchema, userStepSchema, userSteps, writableUserSchema };
package/dist/index.js ADDED
@@ -0,0 +1,123 @@
1
+ // src/models.ts
2
+ import { datetimeSchema } from "@deliverart/sdk-js-global-types";
3
+ import { z as z2 } from "zod";
4
+
5
+ // src/types.ts
6
+ import { z } from "zod";
7
+ var securityRoles = [
8
+ // Role used for describe single operations
9
+ "ROLE_CUSTOMER_ACCESS",
10
+ "ROLE_BUNDLE_ACCESS",
11
+ "ROLE_DELIVERY_ACCESS",
12
+ "ROLE_POINT_OF_SALE_ACCESS",
13
+ "ROLE_MENU_ACCESS",
14
+ "ROLE_INTEGRATION_ACCESS",
15
+ "ROLE_ORDER_ACCESS",
16
+ "ROLE_LEAD_ACCESS",
17
+ "ROLE_COMPANY_ACCESS",
18
+ "ROLE_USER_ACCESS",
19
+ "ROLE_SUBSCRIPTION_ACCESS",
20
+ "ROLE_PAYMENT_ACCESS",
21
+ "ROLE_PAYMENT_CONFIG_ACCESS",
22
+ // Role ADMIN for single operations
23
+ "ROLE_CUSTOMER_ADMIN",
24
+ "ROLE_BUNDLE_ADMIN",
25
+ "ROLE_DELIVERY_ADMIN",
26
+ "ROLE_POINT_OF_SALE_ADMIN",
27
+ "ROLE_MENU_ADMIN",
28
+ "ROLE_INTEGRATION_ADMIN",
29
+ "ROLE_ORDER_ADMIN",
30
+ "ROLE_LEAD_ADMIN",
31
+ "ROLE_COMPANY_ADMIN",
32
+ "ROLE_USER_ADMIN",
33
+ "ROLE_SUBSCRIPTION_ADMIN",
34
+ "ROLE_PAYMENT_ADMIN",
35
+ "ROLE_PAYMENT_CONFIG_ADMIN",
36
+ // Role for the users
37
+ "ROLE_COURIER",
38
+ "ROLE_CUSTOMER",
39
+ "ROLE_MANAGER",
40
+ "ROLE_SUPER_ADMIN",
41
+ "ROLE_KITCHEN",
42
+ // Default user role
43
+ "ROLE_USER"
44
+ ];
45
+ var securityRoleSchema = z.enum(securityRoles);
46
+ var userSteps = [
47
+ "registration",
48
+ "verify_email",
49
+ "create_company",
50
+ "create_point_of_sale"
51
+ ];
52
+ var userStepSchema = z.enum(userSteps);
53
+
54
+ // src/models.ts
55
+ var userSchema = z2.object({
56
+ id: z2.string(),
57
+ firstName: z2.string(),
58
+ lastName: z2.string(),
59
+ email: z2.string().email(),
60
+ roles: securityRoleSchema.array(),
61
+ completedSteps: z2.string().array(),
62
+ emailVerified: z2.boolean(),
63
+ suspended: z2.boolean(),
64
+ createdAt: datetimeSchema,
65
+ updatedAt: datetimeSchema
66
+ });
67
+ var writableUserSchema = userSchema.pick({
68
+ firstName: true,
69
+ lastName: true,
70
+ roles: true,
71
+ email: true
72
+ }).extend({
73
+ plainPassword: z2.string().optional()
74
+ });
75
+
76
+ // src/plugin.ts
77
+ import { responseToPagination } from "@deliverart/sdk-js-global-types";
78
+ var UserPlugin = class {
79
+ setup(client) {
80
+ return {
81
+ me: {
82
+ async get() {
83
+ const response = await client.http.get("/me");
84
+ return response.data;
85
+ }
86
+ },
87
+ users: {
88
+ async list(params) {
89
+ const response = await client.http.get(`/users`, { params });
90
+ return { data: response.data, pagination: responseToPagination(response) };
91
+ },
92
+ async get(id) {
93
+ const response = await client.http.get(`/users/${id}`);
94
+ return response.data;
95
+ },
96
+ async update(id, data) {
97
+ const response = await client.http.patch(`/users/${id}`, data, {
98
+ headers: { "Content-Type": "application/merge-patch+json" }
99
+ });
100
+ return response.data;
101
+ },
102
+ async create(data) {
103
+ const response = await client.http.post(`/users`, data, {
104
+ headers: { "Content-Type": "application/json" }
105
+ });
106
+ return response.data;
107
+ },
108
+ async delete(id) {
109
+ await client.http.delete(`/users/${id}`);
110
+ }
111
+ }
112
+ };
113
+ }
114
+ };
115
+ export {
116
+ UserPlugin,
117
+ securityRoleSchema,
118
+ securityRoles,
119
+ userSchema,
120
+ userStepSchema,
121
+ userSteps,
122
+ writableUserSchema
123
+ };
@@ -0,0 +1,41 @@
1
+ /* eslint-disable */
2
+ // eslint.config.js per @typescript-eslint v8
3
+ import js from '@eslint/js'
4
+ import prettier from 'eslint-config-prettier'
5
+ import simpleImportSortPlugin from 'eslint-plugin-simple-import-sort'
6
+ import tsPlugin from '@typescript-eslint/eslint-plugin'
7
+ import tsParser from '@typescript-eslint/parser'
8
+
9
+ export default [
10
+ js.configs.recommended,
11
+ {
12
+ files: ['**/*.ts'],
13
+ languageOptions: {
14
+ parser: tsParser,
15
+ globals: {
16
+ process: 'readonly',
17
+ fetch: 'readonly',
18
+ Request: 'readonly',
19
+ Response: 'readonly',
20
+ Headers: 'readonly',
21
+ },
22
+ parserOptions: {
23
+ project: ['./tsconfig.json'],
24
+ tsconfigRootDir: process.cwd(),
25
+ sourceType: 'module',
26
+ },
27
+ },
28
+ plugins: {
29
+ '@typescript-eslint': tsPlugin,
30
+ 'simple-import-sort': simpleImportSortPlugin,
31
+ },
32
+ rules: {
33
+ 'simple-import-sort/imports': 'error',
34
+ 'simple-import-sort/exports': 'error',
35
+ '@typescript-eslint/no-unused-vars': 'warn',
36
+ },
37
+ },
38
+ prettier,
39
+ ]
40
+
41
+ export const ignores = ['dist', 'node_modules']
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@deliverart/sdk-js-user",
3
+ "description": "Deliverart JavaScript SDK for User Management",
4
+ "version": "0.0.1",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "require": "./dist/index.cjs"
12
+ }
13
+ },
14
+ "dependencies": {
15
+ "zod": "^3",
16
+ "@deliverart/sdk-js-core": "0.0.6",
17
+ "@deliverart/sdk-js-global-types": "0.0.4"
18
+ },
19
+ "devDependencies": {
20
+ "@changesets/cli": "^2.29.4",
21
+ "@eslint/js": "9.28.0",
22
+ "@types/node": "22.15.30",
23
+ "@typescript-eslint/eslint-plugin": "8.33.1",
24
+ "@typescript-eslint/parser": "8.33.1",
25
+ "eslint": "9.28.0",
26
+ "eslint-config-prettier": "10.1.5",
27
+ "eslint-plugin-simple-import-sort": "12.1.1",
28
+ "prettier": "3.5.3",
29
+ "tsup": "8.5.0",
30
+ "typescript": "5.8.3"
31
+ },
32
+ "publishConfig": {
33
+ "access": "public"
34
+ },
35
+ "scripts": {
36
+ "build": "tsup src/index.ts --dts --format esm,cjs",
37
+ "dev": "tsup src/index.ts --dts --watch",
38
+ "lint": "eslint .",
39
+ "lint:fix": "eslint . --fix",
40
+ "prettier": "prettier --check .",
41
+ "prettier:fix": "prettier --write .",
42
+ "version": "@changesets/cli version",
43
+ "release": "@changesets/cli publish"
44
+ }
45
+ }
package/src/index.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './models'
2
+ export * from './plugin'
3
+ export * from './types'
package/src/models.ts ADDED
@@ -0,0 +1,30 @@
1
+ import { datetimeSchema } from '@deliverart/sdk-js-global-types'
2
+ import { z } from 'zod'
3
+
4
+ import { securityRoleSchema } from './types'
5
+
6
+ export const userSchema = z.object({
7
+ id: z.string(),
8
+ firstName: z.string(),
9
+ lastName: z.string(),
10
+ email: z.string().email(),
11
+ roles: securityRoleSchema.array(),
12
+ completedSteps: z.string().array(),
13
+ emailVerified: z.boolean(),
14
+ suspended: z.boolean(),
15
+ createdAt: datetimeSchema,
16
+ updatedAt: datetimeSchema,
17
+ })
18
+ export type User = z.infer<typeof userSchema>
19
+
20
+ export const writableUserSchema = userSchema
21
+ .pick({
22
+ firstName: true,
23
+ lastName: true,
24
+ roles: true,
25
+ email: true,
26
+ })
27
+ .extend({
28
+ plainPassword: z.string().optional(),
29
+ })
30
+ export type WritableUser = z.infer<typeof writableUserSchema>
package/src/plugin.ts ADDED
@@ -0,0 +1,43 @@
1
+ import { ApiClient, ApiClientPlugin } from '@deliverart/sdk-js-core'
2
+ import { responseToPagination } from '@deliverart/sdk-js-global-types'
3
+
4
+ import { User } from './models'
5
+ import { GetUsersQueryParams, UserExtension } from './types'
6
+
7
+ export class UserPlugin implements ApiClientPlugin<UserExtension> {
8
+ setup(client: ApiClient): UserExtension {
9
+ return {
10
+ me: {
11
+ async get() {
12
+ const response = await client.http.get<User>('/me')
13
+ return response.data
14
+ },
15
+ },
16
+ users: {
17
+ async list(params?: GetUsersQueryParams) {
18
+ const response = await client.http.get<User[]>(`/users`, { params })
19
+ return { data: response.data, pagination: responseToPagination(response) }
20
+ },
21
+ async get(id: string) {
22
+ const response = await client.http.get<User>(`/users/${id}`)
23
+ return response.data
24
+ },
25
+ async update(id: string, data: Partial<User>) {
26
+ const response = await client.http.patch<User>(`/users/${id}`, data, {
27
+ headers: { 'Content-Type': 'application/merge-patch+json' },
28
+ })
29
+ return response.data
30
+ },
31
+ async create(data: Partial<User>) {
32
+ const response = await client.http.post<User>(`/users`, data, {
33
+ headers: { 'Content-Type': 'application/json' },
34
+ })
35
+ return response.data
36
+ },
37
+ async delete(id: string) {
38
+ await client.http.delete(`/users/${id}`)
39
+ },
40
+ },
41
+ }
42
+ }
43
+ }
package/src/types.ts ADDED
@@ -0,0 +1,83 @@
1
+ import { ApiExtension } from '@deliverart/sdk-js-core'
2
+ import { Paginated, SortDir } from '@deliverart/sdk-js-global-types'
3
+ import { z } from 'zod'
4
+
5
+ import { User, WritableUser } from './models'
6
+
7
+ export const securityRoles = [
8
+ // Role used for describe single operations
9
+ 'ROLE_CUSTOMER_ACCESS',
10
+ 'ROLE_BUNDLE_ACCESS',
11
+ 'ROLE_DELIVERY_ACCESS',
12
+ 'ROLE_POINT_OF_SALE_ACCESS',
13
+ 'ROLE_MENU_ACCESS',
14
+ 'ROLE_INTEGRATION_ACCESS',
15
+ 'ROLE_ORDER_ACCESS',
16
+ 'ROLE_LEAD_ACCESS',
17
+ 'ROLE_COMPANY_ACCESS',
18
+ 'ROLE_USER_ACCESS',
19
+ 'ROLE_SUBSCRIPTION_ACCESS',
20
+ 'ROLE_PAYMENT_ACCESS',
21
+ 'ROLE_PAYMENT_CONFIG_ACCESS',
22
+ // Role ADMIN for single operations
23
+ 'ROLE_CUSTOMER_ADMIN',
24
+ 'ROLE_BUNDLE_ADMIN',
25
+ 'ROLE_DELIVERY_ADMIN',
26
+ 'ROLE_POINT_OF_SALE_ADMIN',
27
+ 'ROLE_MENU_ADMIN',
28
+ 'ROLE_INTEGRATION_ADMIN',
29
+ 'ROLE_ORDER_ADMIN',
30
+ 'ROLE_LEAD_ADMIN',
31
+ 'ROLE_COMPANY_ADMIN',
32
+ 'ROLE_USER_ADMIN',
33
+ 'ROLE_SUBSCRIPTION_ADMIN',
34
+ 'ROLE_PAYMENT_ADMIN',
35
+ 'ROLE_PAYMENT_CONFIG_ADMIN',
36
+ // Role for the users
37
+ 'ROLE_COURIER',
38
+ 'ROLE_CUSTOMER',
39
+ 'ROLE_MANAGER',
40
+ 'ROLE_SUPER_ADMIN',
41
+ 'ROLE_KITCHEN',
42
+ // Default user role
43
+ 'ROLE_USER',
44
+ ] as const
45
+ export const securityRoleSchema = z.enum(securityRoles)
46
+ export type SecurityRole = z.infer<typeof securityRoleSchema>
47
+
48
+ export const userSteps = [
49
+ 'registration',
50
+ 'verify_email',
51
+ 'create_company',
52
+ 'create_point_of_sale',
53
+ ] as const
54
+ export const userStepSchema = z.enum(userSteps)
55
+ export type UserStep = z.infer<typeof userStepSchema>
56
+
57
+ export interface GetUsersQueryParams {
58
+ email?: string
59
+ firstName?: string
60
+ lastName?: string
61
+ suspended?: string
62
+ 'order[createdAt]'?: SortDir
63
+ page?: number
64
+ 'roles[]'?: SecurityRole[]
65
+ }
66
+
67
+ export interface UserExtension extends ApiExtension {
68
+ me: {
69
+ get: () => Promise<User>
70
+ }
71
+ users: {
72
+ // eslint-disable-next-line no-unused-vars
73
+ list: (params?: GetUsersQueryParams) => Promise<Paginated<User[]>>
74
+ // eslint-disable-next-line no-unused-vars
75
+ create: (data: WritableUser) => Promise<User>
76
+ // eslint-disable-next-line no-unused-vars
77
+ get: (id: string) => Promise<User>
78
+ // eslint-disable-next-line no-unused-vars
79
+ delete: (id: string) => Promise<void>
80
+ // eslint-disable-next-line no-unused-vars
81
+ update: (id: string, data: Partial<WritableUser>) => Promise<User>
82
+ }
83
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "ESNext",
5
+ "moduleResolution": "Node",
6
+ "esModuleInterop": true,
7
+ "forceConsistentCasingInFileNames": true,
8
+ "strict": true,
9
+ "skipLibCheck": true,
10
+ "outDir": "dist",
11
+ "declaration": true,
12
+ "declarationMap": true
13
+ },
14
+ "include": ["src"]
15
+ }