@sales-planner/http-client 0.19.2 → 0.19.4

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/README.md CHANGED
@@ -96,17 +96,25 @@ All shop-scoped clients (`skus`, `brands`, `categories`, `groups`, `statuses`, `
96
96
  - `importJson(ctx, items)`, `importCsv(ctx, csv)`, `exportJson(ctx)`, `exportCsv(ctx)`
97
97
  - `getExampleJson()`, `getExampleCsv()` (no auth)
98
98
 
99
- System clients (`users`, `tenants`, `shops`, `roles`, `userRoles`, `apiKeys`) also return paginated responses:
99
+ System clients (`users`, `tenants`, `shops`, `roles`, `userRoles`, `userShops`, `apiKeys`) also return paginated responses:
100
100
 
101
101
  ```typescript
102
102
  // All system getAll() methods return PaginatedResponse<T>
103
103
  const { items: users, total } = await client.users.getAll();
104
104
  const { items: tenants } = await client.tenants.getAll({ limit: 10 });
105
105
  const { items: shops } = await client.shops.getAll();
106
- const { items: roles } = await client.roles.getAll();
107
106
  const { items: userRoles } = await client.userRoles.getAll();
108
107
  const { items: apiKeys } = await client.apiKeys.getAll();
109
108
 
109
+ // Roles are predefined and read-only (available to all authenticated users)
110
+ const { items: roles } = await client.roles.getAll();
111
+ const role = await client.roles.getById(1);
112
+
113
+ // User-shop assignments
114
+ const userShops = await client.userShops.getAll({ shopId: 1 });
115
+ await client.userShops.create({ user_id: 1, shop_id: 1 });
116
+ await client.userShops.delete(assignmentId);
117
+
110
118
  // Delete all shop data (SKUs, sales history, brands, categories, etc.)
111
119
  const result = await client.shops.deleteData(shopId);
112
120
  console.log(result);
@@ -136,22 +144,22 @@ SKU metrics and materialized view management:
136
144
  const ctx = { shop_id: 1, tenant_id: 1 };
137
145
 
138
146
  // SKU Metrics - aggregated metrics from materialized views
139
- const { items, total } = await client.skuMetrics.list(ctx.shop_id, ctx.tenant_id);
140
- const metric = await client.skuMetrics.get(id, ctx.shop_id, ctx.tenant_id);
141
- const topProducts = await client.skuMetrics.getByAbcClass('A', ctx.shop_id, ctx.tenant_id);
147
+ const { items, total } = await client.skuMetrics.list(ctx);
148
+ const metric = await client.skuMetrics.get(ctx, id);
149
+ const topProducts = await client.skuMetrics.getByAbcClass(ctx, 'A');
142
150
 
143
151
  // Export
144
- const csv = await client.skuMetrics.exportCsv(ctx.shop_id, ctx.tenant_id);
145
- const json = await client.skuMetrics.exportJson(ctx.shop_id, ctx.tenant_id);
152
+ const csv = await client.skuMetrics.exportCsv(ctx);
153
+ const json = await client.skuMetrics.exportJson(ctx);
146
154
 
147
155
  // View Management
148
- const views = await client.computed.getViews(ctx.shop_id, ctx.tenant_id);
156
+ const views = await client.computed.getViews(ctx);
149
157
  // [{ name: 'mv_sku_metrics', description: 'SKU metrics with ABC classification' }]
150
158
 
151
- const result = await client.computed.refreshAll(ctx.shop_id, ctx.tenant_id);
159
+ const result = await client.computed.refreshAll(ctx);
152
160
  // { results: [...], totalDuration: 1234, success: true }
153
161
 
154
- const viewResult = await client.computed.refreshView('mv_sku_metrics', ctx.shop_id, ctx.tenant_id);
162
+ const viewResult = await client.computed.refreshView(ctx, 'mv_sku_metrics');
155
163
  // { view: 'mv_sku_metrics', duration: 500, success: true }
156
164
  ```
157
165
 
@@ -363,7 +371,7 @@ interface SkuCompetitorMapping {
363
371
  ```
364
372
 
365
373
  Available entity types summary:
366
- - `User`, `Tenant`, `Shop`, `Role`, `ApiKey` - system entities
374
+ - `User`, `Tenant`, `Shop`, `Role`, `UserShop`, `ApiKey` - system entities
367
375
  - `Sku`, `Brand`, `Category`, `Group`, `Status`, `Supplier`, `Warehouse`, `Marketplace` - shop data
368
376
  - `SalesHistory`, `Leftover`, `SeasonalCoefficient` - time-series data
369
377
  - `CompetitorProduct`, `CompetitorSale`, `SkuCompetitorMapping` - competitor data
@@ -462,55 +470,62 @@ interface SkuImportResult extends ImportResult {
462
470
  import type {
463
471
  // Query & Response
464
472
  ShopContextParams, PaginationQuery, PaginatedResponse, PeriodQuery,
465
- SalesHistoryQuery, LeftoverQuery, CompetitorSaleQuery, GetUserRolesQuery,
466
-
473
+ SalesHistoryQuery, LeftoverQuery, CompetitorSaleQuery,
474
+ GetUserRolesQuery, GetUserShopsQuery,
475
+
467
476
  // System Entities
468
- User, Tenant, Shop, Role, ApiKey, UserRoleResponse,
469
-
477
+ User, Tenant, Shop, Role, UserShop, ApiKey, UserRoleResponse,
478
+
470
479
  // Shop Data Entities
471
480
  Sku, Brand, Category, Group, Status, Supplier, Warehouse, Marketplace,
472
-
481
+
473
482
  // Time-Series Entities
474
483
  SalesHistory, Leftover, SeasonalCoefficient,
475
-
484
+
476
485
  // Competitor Entities
477
486
  CompetitorProduct, CompetitorSale, SkuCompetitorMapping,
478
-
487
+
479
488
  // Computed Entities (read-only)
480
489
  SkuMetrics,
481
-
490
+
482
491
  // User/Me Response Types
483
492
  UserWithRolesAndTenants, UserRole, TenantInfo, ShopInfo,
484
-
493
+
485
494
  // Create/Update Requests
486
495
  CreateSkuRequest, UpdateSkuRequest,
487
496
  CreateUserRequest, UpdateUserRequest,
488
497
  CreateTenantRequest, UpdateTenantRequest,
489
498
  CreateShopRequest, UpdateShopRequest,
490
499
  CreateApiKeyRequest,
491
-
500
+ CreateUserShopDto,
501
+
492
502
  // Import Items (use string codes, auto-resolved)
493
503
  ImportSkuItem, ImportSalesHistoryItem, ImportLeftoverItem,
494
504
  ImportSeasonalCoefficientItem, ImportSkuCompetitorMappingItem,
495
505
  ImportCompetitorProductItem, ImportCompetitorSaleItem,
496
506
  ImportBrandItem, ImportCategoryItem, ImportGroupItem,
497
507
  ImportStatusItem, ImportSupplierItem, ImportWarehouseItem, ImportMarketplaceItem,
498
-
508
+
499
509
  // Export Items
500
- SkuExportItem, SalesHistoryExportItem, LeftoverExportItem,
510
+ SkuExportItem, SkuMetricsExportItem, SalesHistoryExportItem, LeftoverExportItem,
501
511
  SeasonalCoefficientExportItem, SkuCompetitorMappingExportItem,
502
512
  CompetitorProductExportItem, CompetitorSaleExportItem,
503
513
  BrandExportItem, CategoryExportItem, GroupExportItem,
504
514
  StatusExportItem, SupplierExportItem, WarehouseExportItem, MarketplaceExportItem,
505
-
515
+
506
516
  // Results
507
517
  ImportResult, SkuImportResult, SalesHistoryImportResult, DeleteDataResult,
508
-
518
+
509
519
  // Metadata (for UI documentation)
510
520
  EntitiesMetadata, EntityMetadata, EntityFieldMetadata, FieldType,
511
521
  } from '@sales-planner/http-client';
512
522
  ```
513
523
 
524
+ ## Related Packages
525
+
526
+ - `@sales-planner/shared` — TypeScript types (included as dependency)
527
+ - `@sales-planner/react` — React hooks powered by TanStack Query
528
+
514
529
  ## License
515
530
 
516
531
  MIT
@@ -5,6 +5,7 @@ export interface GetApiKeysQuery extends PaginationQuery {
5
5
  }
6
6
  export declare class ApiKeysClient extends BaseClient {
7
7
  getAll(query?: GetApiKeysQuery): Promise<PaginatedResponse<ApiKey>>;
8
+ getById(id: number): Promise<ApiKey>;
8
9
  create(request: CreateApiKeyRequest): Promise<ApiKey>;
9
10
  delete(id: number): Promise<void>;
10
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api-keys-client.d.ts","sourceRoot":"","sources":["../../src/clients/api-keys-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,aAAc,SAAQ,UAAU;IACrC,MAAM,CAAC,KAAK,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAMnE,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGxC"}
1
+ {"version":3,"file":"api-keys-client.d.ts","sourceRoot":"","sources":["../../src/clients/api-keys-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,aAAc,SAAQ,UAAU;IACrC,MAAM,CAAC,KAAK,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAMnE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpC,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGxC"}
@@ -5,6 +5,9 @@ export class ApiKeysClient extends BaseClient {
5
5
  params: query,
6
6
  });
7
7
  }
8
+ async getById(id) {
9
+ return this.request('GET', `/api-keys/${id}`);
10
+ }
8
11
  async create(request) {
9
12
  return this.request('POST', '/api-keys', { body: request });
10
13
  }
@@ -1,3 +1,4 @@
1
+ import type { ShopContextParams } from '@sales-planner/shared';
1
2
  import { BaseClient } from './base-client.js';
2
3
  /**
3
4
  * View metadata returned by getViews
@@ -31,14 +32,14 @@ export declare class ComputedEntitiesClient extends BaseClient {
31
32
  /**
32
33
  * Get list of all available materialized views
33
34
  */
34
- getViews(shopId: number, tenantId: number): Promise<ViewInfo[]>;
35
+ getViews(ctx: ShopContextParams): Promise<ViewInfo[]>;
35
36
  /**
36
37
  * Refresh all materialized views in dependency order
37
38
  */
38
- refreshAll(shopId: number, tenantId: number): Promise<RefreshAllResult>;
39
+ refreshAll(ctx: ShopContextParams): Promise<RefreshAllResult>;
39
40
  /**
40
41
  * Refresh a single materialized view by name
41
42
  */
42
- refreshView(viewName: string, shopId: number, tenantId: number): Promise<RefreshResult>;
43
+ refreshView(ctx: ShopContextParams, viewName: string): Promise<RefreshResult>;
43
44
  }
44
45
  //# sourceMappingURL=computed-entities-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"computed-entities-client.d.ts","sourceRoot":"","sources":["../../src/clients/computed-entities-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,UAAU;IACpD;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IASrE;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAS7E;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;CAQ9F"}
1
+ {"version":3,"file":"computed-entities-client.d.ts","sourceRoot":"","sources":["../../src/clients/computed-entities-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,UAAU;IACpD;;OAEG;IACG,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAM3D;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAMnE;;OAEG;IACG,WAAW,CAAC,GAAG,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;CAKpF"}
@@ -7,34 +7,25 @@ export class ComputedEntitiesClient extends BaseClient {
7
7
  /**
8
8
  * Get list of all available materialized views
9
9
  */
10
- async getViews(shopId, tenantId) {
10
+ async getViews(ctx) {
11
11
  return this.request('GET', '/computed/views', {
12
- params: {
13
- shop_id: shopId,
14
- tenant_id: tenantId,
15
- },
12
+ params: ctx,
16
13
  });
17
14
  }
18
15
  /**
19
16
  * Refresh all materialized views in dependency order
20
17
  */
21
- async refreshAll(shopId, tenantId) {
18
+ async refreshAll(ctx) {
22
19
  return this.request('POST', '/computed/refresh', {
23
- params: {
24
- shop_id: shopId,
25
- tenant_id: tenantId,
26
- },
20
+ params: ctx,
27
21
  });
28
22
  }
29
23
  /**
30
24
  * Refresh a single materialized view by name
31
25
  */
32
- async refreshView(viewName, shopId, tenantId) {
26
+ async refreshView(ctx, viewName) {
33
27
  return this.request('POST', `/computed/refresh/${viewName}`, {
34
- params: {
35
- shop_id: shopId,
36
- tenant_id: tenantId,
37
- },
28
+ params: ctx,
38
29
  });
39
30
  }
40
31
  }
@@ -1,5 +1,6 @@
1
1
  export { SalesPlannerClient } from './sales-planner-client.js';
2
2
  export { ApiError, type ClientConfig } from './base-client.js';
3
3
  export { SkuMetricsClient } from './sku-metrics-client.js';
4
+ export { UserShopsClient } from './user-shops-client.js';
4
5
  export { ComputedEntitiesClient, type ViewInfo, type RefreshResult, type RefreshAllResult, } from './computed-entities-client.js';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,sBAAsB,EACtB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,gBAAgB,GACtB,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,sBAAsB,EACtB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,gBAAgB,GACtB,MAAM,+BAA+B,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { SalesPlannerClient } from './sales-planner-client.js';
2
2
  export { ApiError } from './base-client.js';
3
3
  export { SkuMetricsClient } from './sku-metrics-client.js';
4
+ export { UserShopsClient } from './user-shops-client.js';
4
5
  export { ComputedEntitiesClient, } from './computed-entities-client.js';
@@ -1,10 +1,7 @@
1
- import type { Role, CreateRoleRequest, UpdateRoleRequest } from '@sales-planner/shared';
1
+ import type { Role, PaginatedResponse, PaginationQuery } from '@sales-planner/shared';
2
2
  import { BaseClient } from './base-client.js';
3
3
  export declare class RolesClient extends BaseClient {
4
- getRoles(): Promise<Role[]>;
5
- getRole(id: number): Promise<Role>;
6
- createRole(request: CreateRoleRequest): Promise<Role>;
7
- updateRole(id: number, request: UpdateRoleRequest): Promise<Role>;
8
- deleteRole(id: number): Promise<void>;
4
+ getAll(query?: PaginationQuery): Promise<PaginatedResponse<Role>>;
5
+ getById(id: number): Promise<Role>;
9
6
  }
10
7
  //# sourceMappingURL=roles-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"roles-client.d.ts","sourceRoot":"","sources":["../../src/clients/roles-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,qBAAa,WAAY,SAAQ,UAAU;IACnC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAI3B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG5C"}
1
+ {"version":3,"file":"roles-client.d.ts","sourceRoot":"","sources":["../../src/clients/roles-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,qBAAa,WAAY,SAAQ,UAAU;IACnC,MAAM,CAAC,KAAK,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAMjE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzC"}
@@ -1,18 +1,11 @@
1
1
  import { BaseClient } from './base-client.js';
2
2
  export class RolesClient extends BaseClient {
3
- async getRoles() {
4
- return this.request('GET', '/roles');
3
+ async getAll(query) {
4
+ return this.request('GET', '/roles', {
5
+ params: query,
6
+ });
5
7
  }
6
- async getRole(id) {
8
+ async getById(id) {
7
9
  return this.request('GET', `/roles/${id}`);
8
10
  }
9
- async createRole(request) {
10
- return this.request('POST', '/roles', { body: request });
11
- }
12
- async updateRole(id, request) {
13
- return this.request('PUT', `/roles/${id}`, { body: request });
14
- }
15
- async deleteRole(id) {
16
- return this.request('DELETE', `/roles/${id}`);
17
- }
18
11
  }
@@ -1,7 +1,7 @@
1
- import type { Brand, CreateBrandRequest, UpdateBrandRequest, ImportBrandItem, BrandExportItem, Category, CreateCategoryRequest, UpdateCategoryRequest, ImportCategoryItem, CategoryExportItem, CompetitorProduct, CreateCompetitorProductRequest, UpdateCompetitorProductRequest, ImportCompetitorProductItem, CompetitorProductExportItem, CompetitorProductQuery, CompetitorSale, CreateCompetitorSaleRequest, UpdateCompetitorSaleRequest, ImportCompetitorSaleItem, CompetitorSaleExportItem, CompetitorSaleQuery, Group, CreateGroupRequest, UpdateGroupRequest, ImportGroupItem, GroupExportItem, Leftover, CreateLeftoverRequest, UpdateLeftoverRequest, ImportLeftoverItem, LeftoverExportItem, LeftoverQuery, PaginationQuery, Status, CreateStatusRequest, UpdateStatusRequest, ImportStatusItem, StatusExportItem, Supplier, CreateSupplierRequest, UpdateSupplierRequest, ImportSupplierItem, SupplierExportItem, SeasonalCoefficient, CreateSeasonalCoefficientRequest, UpdateSeasonalCoefficientRequest, ImportSeasonalCoefficientItem, SeasonalCoefficientExportItem, SkuCompetitorMapping, CreateSkuCompetitorMappingRequest, UpdateSkuCompetitorMappingRequest, ImportSkuCompetitorMappingItem, SkuCompetitorMappingExportItem, Warehouse, CreateWarehouseRequest, UpdateWarehouseRequest, ImportWarehouseItem, WarehouseExportItem, Marketplace, CreateMarketplaceRequest, UpdateMarketplaceRequest, ImportMarketplaceItem, MarketplaceExportItem, Role, CreateRoleRequest, UpdateRoleRequest, SalesHistory, CreateSalesHistoryRequest, UpdateSalesHistoryRequest, ImportSalesHistoryItem, SalesHistoryExportItem, SalesHistoryImportResult, SalesHistoryQuery, ImportResult } from '@sales-planner/shared';
1
+ import type { Brand, CreateBrandRequest, UpdateBrandRequest, ImportBrandItem, BrandExportItem, Category, CreateCategoryRequest, UpdateCategoryRequest, ImportCategoryItem, CategoryExportItem, CompetitorProduct, CreateCompetitorProductRequest, UpdateCompetitorProductRequest, ImportCompetitorProductItem, CompetitorProductExportItem, CompetitorProductQuery, CompetitorSale, CreateCompetitorSaleRequest, UpdateCompetitorSaleRequest, ImportCompetitorSaleItem, CompetitorSaleExportItem, CompetitorSaleQuery, Group, CreateGroupRequest, UpdateGroupRequest, ImportGroupItem, GroupExportItem, Leftover, CreateLeftoverRequest, UpdateLeftoverRequest, ImportLeftoverItem, LeftoverExportItem, LeftoverQuery, PaginationQuery, Status, CreateStatusRequest, UpdateStatusRequest, ImportStatusItem, StatusExportItem, Supplier, CreateSupplierRequest, UpdateSupplierRequest, ImportSupplierItem, SupplierExportItem, SeasonalCoefficient, CreateSeasonalCoefficientRequest, UpdateSeasonalCoefficientRequest, ImportSeasonalCoefficientItem, SeasonalCoefficientExportItem, SkuCompetitorMapping, CreateSkuCompetitorMappingRequest, UpdateSkuCompetitorMappingRequest, ImportSkuCompetitorMappingItem, SkuCompetitorMappingExportItem, Warehouse, CreateWarehouseRequest, UpdateWarehouseRequest, ImportWarehouseItem, WarehouseExportItem, Marketplace, CreateMarketplaceRequest, UpdateMarketplaceRequest, ImportMarketplaceItem, MarketplaceExportItem, SalesHistory, CreateSalesHistoryRequest, UpdateSalesHistoryRequest, ImportSalesHistoryItem, SalesHistoryExportItem, SalesHistoryImportResult, SalesHistoryQuery, ImportResult } from '@sales-planner/shared';
2
2
  import type { ClientConfig } from './base-client.js';
3
3
  import { CodedEntityClient } from './coded-entity-client.js';
4
- import { CrudClient } from './crud-client.js';
4
+ import { RolesClient } from './roles-client.js';
5
5
  import { ShopScopedClient } from './shop-scoped-client.js';
6
6
  import { MeClient } from './me-client.js';
7
7
  import { MetadataClient } from './metadata-client.js';
@@ -10,6 +10,7 @@ import { TenantsClient } from './tenants-client.js';
10
10
  import { ShopsClient } from './shops-client.js';
11
11
  import { SkusClient } from './skus-client.js';
12
12
  import { UserRolesClient } from './user-roles-client.js';
13
+ import { UserShopsClient } from './user-shops-client.js';
13
14
  import { ApiKeysClient } from './api-keys-client.js';
14
15
  import { SkuMetricsClient } from './sku-metrics-client.js';
15
16
  import { ComputedEntitiesClient } from './computed-entities-client.js';
@@ -34,8 +35,9 @@ export declare class SalesPlannerClient {
34
35
  readonly skuCompetitorMappings: ShopScopedClient<SkuCompetitorMapping, CreateSkuCompetitorMappingRequest, UpdateSkuCompetitorMappingRequest, ImportSkuCompetitorMappingItem, SkuCompetitorMappingExportItem, ImportResult, PaginationQuery>;
35
36
  readonly competitorProducts: ShopScopedClient<CompetitorProduct, CreateCompetitorProductRequest, UpdateCompetitorProductRequest, ImportCompetitorProductItem, CompetitorProductExportItem, ImportResult, CompetitorProductQuery>;
36
37
  readonly competitorSales: ShopScopedClient<CompetitorSale, CreateCompetitorSaleRequest, UpdateCompetitorSaleRequest, ImportCompetitorSaleItem, CompetitorSaleExportItem, ImportResult, CompetitorSaleQuery>;
37
- readonly roles: CrudClient<Role, CreateRoleRequest, UpdateRoleRequest>;
38
+ readonly roles: RolesClient;
38
39
  readonly userRoles: UserRolesClient;
40
+ readonly userShops: UserShopsClient;
39
41
  readonly apiKeys: ApiKeysClient;
40
42
  readonly skuMetrics: SkuMetricsClient;
41
43
  readonly computed: ComputedEntitiesClient;
@@ -1 +1 @@
1
- {"version":3,"file":"sales-planner-client.d.ts","sourceRoot":"","sources":["../../src/clients/sales-planner-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sales-planner-client.d.ts","sourceRoot":"","sources":["../../src/clients/sales-planner-client.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { ApiError } from './base-client.js';
2
2
  import { CodedEntityClient } from './coded-entity-client.js';
3
- import { CrudClient } from './crud-client.js';
3
+ import { RolesClient } from './roles-client.js';
4
4
  import { ShopScopedClient } from './shop-scoped-client.js';
5
5
  import { MeClient } from './me-client.js';
6
6
  import { MetadataClient } from './metadata-client.js';
@@ -9,6 +9,7 @@ import { TenantsClient } from './tenants-client.js';
9
9
  import { ShopsClient } from './shops-client.js';
10
10
  import { SkusClient } from './skus-client.js';
11
11
  import { UserRolesClient } from './user-roles-client.js';
12
+ import { UserShopsClient } from './user-shops-client.js';
12
13
  import { ApiKeysClient } from './api-keys-client.js';
13
14
  import { SkuMetricsClient } from './sku-metrics-client.js';
14
15
  import { ComputedEntitiesClient } from './computed-entities-client.js';
@@ -36,6 +37,7 @@ export class SalesPlannerClient {
36
37
  competitorSales;
37
38
  roles;
38
39
  userRoles;
40
+ userShops;
39
41
  apiKeys;
40
42
  skuMetrics;
41
43
  computed;
@@ -60,8 +62,9 @@ export class SalesPlannerClient {
60
62
  this.skuCompetitorMappings = new ShopScopedClient(config, 'sku-competitor-mappings');
61
63
  this.competitorProducts = new ShopScopedClient(config, 'competitor-products');
62
64
  this.competitorSales = new ShopScopedClient(config, 'competitor-sales');
63
- this.roles = new CrudClient(config, 'roles');
65
+ this.roles = new RolesClient(config);
64
66
  this.userRoles = new UserRolesClient(config);
67
+ this.userShops = new UserShopsClient(config);
65
68
  this.apiKeys = new ApiKeysClient(config);
66
69
  this.skuMetrics = new SkuMetricsClient(config);
67
70
  this.computed = new ComputedEntitiesClient(config);
@@ -1,4 +1,4 @@
1
- import type { PaginatedResponse, PaginationQuery, SkuMetrics } from '@sales-planner/shared';
1
+ import type { PaginatedResponse, PaginationQuery, ShopContextParams, SkuMetrics } from '@sales-planner/shared';
2
2
  import { BaseClient } from './base-client.js';
3
3
  /**
4
4
  * Client for read-only SKU metrics computed from materialized views.
@@ -8,22 +8,22 @@ export declare class SkuMetricsClient extends BaseClient {
8
8
  /**
9
9
  * List SKU metrics for a shop with pagination
10
10
  */
11
- list(shopId: number, tenantId: number, query?: PaginationQuery): Promise<PaginatedResponse<SkuMetrics>>;
11
+ list(ctx: ShopContextParams, query?: PaginationQuery): Promise<PaginatedResponse<SkuMetrics>>;
12
12
  /**
13
13
  * Get a single SKU metric by ID
14
14
  */
15
- get(id: number, shopId: number, tenantId: number): Promise<SkuMetrics>;
15
+ get(ctx: ShopContextParams, id: number): Promise<SkuMetrics>;
16
16
  /**
17
17
  * Get SKU metrics filtered by ABC classification
18
18
  */
19
- getByAbcClass(abcClass: 'A' | 'B' | 'C', shopId: number, tenantId: number): Promise<SkuMetrics[]>;
19
+ getByAbcClass(ctx: ShopContextParams, abcClass: 'A' | 'B' | 'C'): Promise<SkuMetrics[]>;
20
20
  /**
21
21
  * Export SKU metrics as CSV
22
22
  */
23
- exportCsv(shopId: number, tenantId: number): Promise<string>;
23
+ exportCsv(ctx: ShopContextParams): Promise<string>;
24
24
  /**
25
25
  * Export SKU metrics as JSON
26
26
  */
27
- exportJson(shopId: number, tenantId: number): Promise<SkuMetrics[]>;
27
+ exportJson(ctx: ShopContextParams): Promise<SkuMetrics[]>;
28
28
  }
29
29
  //# sourceMappingURL=sku-metrics-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sku-metrics-client.d.ts","sourceRoot":"","sources":["../../src/clients/sku-metrics-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C;;OAEG;IACG,IAAI,CACR,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,eAAe,GACtB,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAUzC;;OAEG;IACG,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAS5E;;OAEG;IACG,aAAa,CACjB,QAAQ,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EACzB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,EAAE,CAAC;IASxB;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASlE;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAQ1E"}
1
+ {"version":3,"file":"sku-metrics-client.d.ts","sourceRoot":"","sources":["../../src/clients/sku-metrics-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,UAAU,EACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C;;OAEG;IACG,IAAI,CACR,GAAG,EAAE,iBAAiB,EACtB,KAAK,CAAC,EAAE,eAAe,GACtB,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAMzC;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAMlE;;OAEG;IACG,aAAa,CAAC,GAAG,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAM7F;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAMxD;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAKhE"}
@@ -7,57 +7,41 @@ export class SkuMetricsClient extends BaseClient {
7
7
  /**
8
8
  * List SKU metrics for a shop with pagination
9
9
  */
10
- async list(shopId, tenantId, query) {
10
+ async list(ctx, query) {
11
11
  return this.request('GET', '/sku-metrics', {
12
- params: {
13
- shop_id: shopId,
14
- tenant_id: tenantId,
15
- ...query,
16
- },
12
+ params: { ...ctx, ...query },
17
13
  });
18
14
  }
19
15
  /**
20
16
  * Get a single SKU metric by ID
21
17
  */
22
- async get(id, shopId, tenantId) {
18
+ async get(ctx, id) {
23
19
  return this.request('GET', `/sku-metrics/${id}`, {
24
- params: {
25
- shop_id: shopId,
26
- tenant_id: tenantId,
27
- },
20
+ params: ctx,
28
21
  });
29
22
  }
30
23
  /**
31
24
  * Get SKU metrics filtered by ABC classification
32
25
  */
33
- async getByAbcClass(abcClass, shopId, tenantId) {
26
+ async getByAbcClass(ctx, abcClass) {
34
27
  return this.request('GET', `/sku-metrics/abc/${abcClass}`, {
35
- params: {
36
- shop_id: shopId,
37
- tenant_id: tenantId,
38
- },
28
+ params: ctx,
39
29
  });
40
30
  }
41
31
  /**
42
32
  * Export SKU metrics as CSV
43
33
  */
44
- async exportCsv(shopId, tenantId) {
34
+ async exportCsv(ctx) {
45
35
  return this.requestText('GET', '/sku-metrics/export/csv', {
46
- params: {
47
- shop_id: shopId,
48
- tenant_id: tenantId,
49
- },
36
+ params: ctx,
50
37
  });
51
38
  }
52
39
  /**
53
40
  * Export SKU metrics as JSON
54
41
  */
55
- async exportJson(shopId, tenantId) {
42
+ async exportJson(ctx) {
56
43
  return this.request('GET', '/sku-metrics/export/json', {
57
- params: {
58
- shop_id: shopId,
59
- tenant_id: tenantId,
60
- },
44
+ params: ctx,
61
45
  });
62
46
  }
63
47
  }
@@ -0,0 +1,9 @@
1
+ import type { UserShop, CreateUserShopRequest, GetUserShopsQuery } from '@sales-planner/shared';
2
+ import { BaseClient } from './base-client.js';
3
+ export declare class UserShopsClient extends BaseClient {
4
+ getAll(query?: GetUserShopsQuery): Promise<UserShop[]>;
5
+ getById(id: number): Promise<UserShop>;
6
+ create(request: CreateUserShopRequest): Promise<UserShop>;
7
+ delete(id: number): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=user-shops-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-shops-client.d.ts","sourceRoot":"","sources":["../../src/clients/user-shops-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,qBAAa,eAAgB,SAAQ,UAAU;IACvC,MAAM,CAAC,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAQtD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAItC,MAAM,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIzD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGxC"}
@@ -0,0 +1,22 @@
1
+ import { BaseClient } from './base-client.js';
2
+ export class UserShopsClient extends BaseClient {
3
+ async getAll(query) {
4
+ const params = {};
5
+ if (query?.userId)
6
+ params.userId = query.userId;
7
+ if (query?.shopId)
8
+ params.shopId = query.shopId;
9
+ if (query?.tenantId)
10
+ params.tenantId = query.tenantId;
11
+ return this.request('GET', '/user-shops', { params });
12
+ }
13
+ async getById(id) {
14
+ return this.request('GET', `/user-shops/${id}`);
15
+ }
16
+ async create(request) {
17
+ return this.request('POST', '/user-shops', { body: request });
18
+ }
19
+ async delete(id) {
20
+ return this.request('DELETE', `/user-shops/${id}`);
21
+ }
22
+ }
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { SalesPlannerClient, ApiError } from './clients/index.js';
2
2
  export type { ClientConfig } from './clients/index.js';
3
- export type { User, Tenant, Shop, Sku, SalesHistory, Role, UserRole, ApiKey, Marketplace, Leftover, SeasonalCoefficient, SkuCompetitorMapping, CompetitorProduct, CompetitorSale, CreateUserDto, CreateTenantDto, CreateTenantWithShopDto, CreateShopDto, CreateSkuDto, CreateSkuRequest, UpdateSkuDto, UpdateSkuRequest, ImportSkuItem, CreateSalesHistoryDto, CreateSalesHistoryRequest, UpdateSalesHistoryDto, ImportSalesHistoryItem, CreateLeftoverDto, CreateLeftoverRequest, UpdateLeftoverDto, ImportLeftoverItem, CreateSeasonalCoefficientDto, CreateSeasonalCoefficientRequest, UpdateSeasonalCoefficientDto, ImportSeasonalCoefficientItem, CreateSkuCompetitorMappingDto, CreateSkuCompetitorMappingRequest, UpdateSkuCompetitorMappingDto, ImportSkuCompetitorMappingItem, CreateCompetitorProductDto, CreateCompetitorProductRequest, UpdateCompetitorProductDto, ImportCompetitorProductItem, CreateCompetitorSaleDto, CreateCompetitorSaleRequest, UpdateCompetitorSaleDto, ImportCompetitorSaleItem, CreateApiKeyDto, CreateRoleDto, CreateUserRoleDto, CreateMarketplaceDto, CreateMarketplaceRequest, ShopContextParams, PeriodQuery, LeftoverQuery, CompetitorSaleQuery, UserWithRolesAndTenants, TenantWithShopAndApiKey, ImportResult, DeleteDataResult, SkuExportItem, SalesHistoryExportItem, LeftoverExportItem, SeasonalCoefficientExportItem, SkuCompetitorMappingExportItem, CompetitorProductExportItem, CompetitorSaleExportItem, EntityFieldMetadata, EntityMetadata, EntitiesMetadata, FieldType, } from '@sales-planner/shared';
3
+ export type { User, Tenant, Shop, Sku, Brand, Category, Group, Status, Supplier, Warehouse, SalesHistory, Role, UserRole, ApiKey, Marketplace, Leftover, SeasonalCoefficient, SkuCompetitorMapping, CompetitorProduct, CompetitorSale, UserShop, SkuMetrics, CreateUserDto, CreateUserRequest, UpdateUserRequest, CreateTenantDto, CreateTenantRequest, UpdateTenantRequest, CreateTenantWithShopDto, CreateShopDto, CreateShopRequest, UpdateShopRequest, CreateApiKeyDto, CreateApiKeyRequest, CreateUserRoleDto, CreateUserShopDto, CreateSkuDto, CreateSkuRequest, UpdateSkuDto, UpdateSkuRequest, ImportSkuItem, CreateSalesHistoryDto, CreateSalesHistoryRequest, UpdateSalesHistoryDto, ImportSalesHistoryItem, CreateLeftoverDto, CreateLeftoverRequest, UpdateLeftoverDto, ImportLeftoverItem, CreateSeasonalCoefficientDto, CreateSeasonalCoefficientRequest, UpdateSeasonalCoefficientDto, ImportSeasonalCoefficientItem, CreateSkuCompetitorMappingDto, CreateSkuCompetitorMappingRequest, UpdateSkuCompetitorMappingDto, ImportSkuCompetitorMappingItem, CreateCompetitorProductDto, CreateCompetitorProductRequest, UpdateCompetitorProductDto, ImportCompetitorProductItem, CreateCompetitorSaleDto, CreateCompetitorSaleRequest, UpdateCompetitorSaleDto, ImportCompetitorSaleItem, ImportBrandItem, ImportCategoryItem, ImportGroupItem, ImportStatusItem, ImportSupplierItem, ImportWarehouseItem, ImportMarketplaceItem, CreateMarketplaceDto, CreateMarketplaceRequest, ShopContextParams, PaginationQuery, PeriodQuery, SalesHistoryQuery, LeftoverQuery, CompetitorSaleQuery, GetUserRolesQuery, GetUserShopsQuery, PaginatedResponse, UserWithRolesAndTenants, UserRoleResponse, TenantInfo, ShopInfo, TenantWithShopAndApiKey, ImportResult, SkuImportResult, SalesHistoryImportResult, DeleteDataResult, SkuExportItem, SkuMetricsExportItem, BrandExportItem, CategoryExportItem, GroupExportItem, StatusExportItem, SupplierExportItem, WarehouseExportItem, MarketplaceExportItem, SalesHistoryExportItem, LeftoverExportItem, SeasonalCoefficientExportItem, SkuCompetitorMappingExportItem, CompetitorProductExportItem, CompetitorSaleExportItem, EntityFieldMetadata, EntityMetadata, EntitiesMetadata, FieldType, } from '@sales-planner/shared';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAClE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,YAAY,EAEV,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,GAAG,EACH,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EAEd,aAAa,EACb,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,4BAA4B,EAC5B,gCAAgC,EAChC,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,EAC7B,iCAAiC,EACjC,6BAA6B,EAC7B,8BAA8B,EAC9B,0BAA0B,EAC1B,8BAA8B,EAC9B,0BAA0B,EAC1B,2BAA2B,EAC3B,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EAExB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,mBAAmB,EAEnB,uBAAuB,EACvB,uBAAuB,EACvB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,6BAA6B,EAC7B,8BAA8B,EAC9B,2BAA2B,EAC3B,wBAAwB,EAExB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,SAAS,GACV,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAClE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,YAAY,EAEV,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,GAAG,EACH,KAAK,EACL,QAAQ,EACR,KAAK,EACL,MAAM,EACN,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,QAAQ,EAER,UAAU,EAEV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EAEjB,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,4BAA4B,EAC5B,gCAAgC,EAChC,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,EAC7B,iCAAiC,EACjC,6BAA6B,EAC7B,8BAA8B,EAC9B,0BAA0B,EAC1B,8BAA8B,EAC9B,0BAA0B,EAC1B,2BAA2B,EAC3B,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EAExB,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EAEjB,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,uBAAuB,EACvB,YAAY,EACZ,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAEhB,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,6BAA6B,EAC7B,8BAA8B,EAC9B,2BAA2B,EAC3B,wBAAwB,EAExB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,SAAS,GACV,MAAM,uBAAuB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sales-planner/http-client",
3
- "version": "0.19.2",
3
+ "version": "0.19.4",
4
4
  "description": "HTTP client for Sales Planner API",
5
5
  "author": "Damir Manapov",
6
6
  "license": "MIT",
@@ -24,7 +24,7 @@
24
24
  "README.md"
25
25
  ],
26
26
  "dependencies": {
27
- "@sales-planner/shared": "0.17.2"
27
+ "@sales-planner/shared": "0.17.4"
28
28
  },
29
29
  "devDependencies": {
30
30
  "typescript": "^5.7.3"