@ram_28/kf-ai-sdk 2.0.1 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/README.md +36 -39
  2. package/dist/BaseField-B6da88U7.js +40 -0
  3. package/dist/BaseField-Drp0-OxL.cjs +1 -0
  4. package/dist/api/client.d.ts +7 -0
  5. package/dist/api/client.d.ts.map +1 -1
  6. package/dist/api/index.d.ts +1 -1
  7. package/dist/api/index.d.ts.map +1 -1
  8. package/dist/api/metadata.d.ts +26 -22
  9. package/dist/api/metadata.d.ts.map +1 -1
  10. package/dist/api.cjs +1 -1
  11. package/dist/api.mjs +3 -3
  12. package/dist/auth.cjs +1 -1
  13. package/dist/auth.mjs +2 -2
  14. package/dist/base-types.d.ts +1 -1
  15. package/dist/base-types.d.ts.map +1 -1
  16. package/dist/bdo/core/BaseBdo.d.ts +12 -20
  17. package/dist/bdo/core/BaseBdo.d.ts.map +1 -1
  18. package/dist/bdo/core/Item.d.ts +8 -44
  19. package/dist/bdo/core/Item.d.ts.map +1 -1
  20. package/dist/bdo/core/types.d.ts +124 -41
  21. package/dist/bdo/core/types.d.ts.map +1 -1
  22. package/dist/bdo/fields/ArrayField.d.ts +5 -4
  23. package/dist/bdo/fields/ArrayField.d.ts.map +1 -1
  24. package/dist/bdo/fields/BaseField.d.ts +14 -19
  25. package/dist/bdo/fields/BaseField.d.ts.map +1 -1
  26. package/dist/bdo/fields/BooleanField.d.ts +3 -4
  27. package/dist/bdo/fields/BooleanField.d.ts.map +1 -1
  28. package/dist/bdo/fields/DateField.d.ts +3 -4
  29. package/dist/bdo/fields/DateField.d.ts.map +1 -1
  30. package/dist/bdo/fields/DateTimeField.d.ts +5 -4
  31. package/dist/bdo/fields/DateTimeField.d.ts.map +1 -1
  32. package/dist/bdo/fields/FileField.d.ts +18 -0
  33. package/dist/bdo/fields/FileField.d.ts.map +1 -0
  34. package/dist/bdo/fields/NumberField.d.ts +6 -4
  35. package/dist/bdo/fields/NumberField.d.ts.map +1 -1
  36. package/dist/bdo/fields/ObjectField.d.ts +5 -4
  37. package/dist/bdo/fields/ObjectField.d.ts.map +1 -1
  38. package/dist/bdo/fields/ReferenceField.d.ts +13 -14
  39. package/dist/bdo/fields/ReferenceField.d.ts.map +1 -1
  40. package/dist/bdo/fields/SelectField.d.ts +9 -16
  41. package/dist/bdo/fields/SelectField.d.ts.map +1 -1
  42. package/dist/bdo/fields/StringField.d.ts +6 -4
  43. package/dist/bdo/fields/StringField.d.ts.map +1 -1
  44. package/dist/bdo/fields/TextAreaField.d.ts +1 -18
  45. package/dist/bdo/fields/TextAreaField.d.ts.map +1 -1
  46. package/dist/bdo/fields/TextField.d.ts +22 -0
  47. package/dist/bdo/fields/TextField.d.ts.map +1 -0
  48. package/dist/bdo/fields/UserField.d.ts +20 -0
  49. package/dist/bdo/fields/UserField.d.ts.map +1 -0
  50. package/dist/bdo/fields/index.d.ts +5 -2
  51. package/dist/bdo/fields/index.d.ts.map +1 -1
  52. package/dist/bdo/index.d.ts +2 -2
  53. package/dist/bdo/index.d.ts.map +1 -1
  54. package/dist/bdo.cjs +1 -1
  55. package/dist/bdo.d.ts +1 -5
  56. package/dist/bdo.d.ts.map +1 -1
  57. package/dist/bdo.mjs +286 -243
  58. package/dist/bdo.types.d.ts +2 -3
  59. package/dist/bdo.types.d.ts.map +1 -1
  60. package/dist/{client-BIkaIr2y.js → client-BULEEaCP.js} +84 -79
  61. package/dist/client-DtPpfJc1.cjs +1 -0
  62. package/dist/components/hooks/useFilter/useFilter.d.ts.map +1 -1
  63. package/dist/components/hooks/useForm/createItemProxy.d.ts.map +1 -1
  64. package/dist/components/hooks/useForm/createResolver.d.ts +12 -2
  65. package/dist/components/hooks/useForm/createResolver.d.ts.map +1 -1
  66. package/dist/components/hooks/useForm/index.d.ts +1 -1
  67. package/dist/components/hooks/useForm/index.d.ts.map +1 -1
  68. package/dist/components/hooks/useForm/types.d.ts +77 -8
  69. package/dist/components/hooks/useForm/types.d.ts.map +1 -1
  70. package/dist/components/hooks/useForm/useDraftInteraction.d.ts +26 -0
  71. package/dist/components/hooks/useForm/useDraftInteraction.d.ts.map +1 -0
  72. package/dist/components/hooks/useForm/useForm.d.ts +2 -27
  73. package/dist/components/hooks/useForm/useForm.d.ts.map +1 -1
  74. package/dist/components/hooks/useTable/useTable.d.ts.map +1 -1
  75. package/dist/{constants-DaX7GLgl.js → constants-BQrBcCON.js} +37 -13
  76. package/dist/constants-D0J69if5.cjs +1 -0
  77. package/dist/error-handling-CAoD0Kwb.cjs +1 -0
  78. package/dist/error-handling-CrhTtD88.js +14 -0
  79. package/dist/filter.cjs +1 -1
  80. package/dist/filter.mjs +2 -2
  81. package/dist/form.cjs +1 -1
  82. package/dist/form.d.ts +1 -1
  83. package/dist/form.d.ts.map +1 -1
  84. package/dist/form.mjs +333 -1142
  85. package/dist/form.types.d.ts +1 -1
  86. package/dist/form.types.d.ts.map +1 -1
  87. package/dist/index.d.ts +2 -1
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.esm-Cj63v5ny.js +1014 -0
  90. package/dist/index.esm-DuwT11sx.cjs +1 -0
  91. package/dist/{metadata-Bz8zJqC1.cjs → metadata-BJWukIqS.cjs} +1 -1
  92. package/dist/{metadata-VbQzyD2C.js → metadata-CJuFxytC.js} +1 -1
  93. package/dist/table.cjs +1 -1
  94. package/dist/table.mjs +116 -122
  95. package/dist/types/base-fields.d.ts +24 -59
  96. package/dist/types/base-fields.d.ts.map +1 -1
  97. package/dist/types/constants.d.ts +2 -2
  98. package/dist/types/constants.d.ts.map +1 -1
  99. package/dist/useFilter-Bg0jvIL6.cjs +1 -0
  100. package/dist/useFilter-DPNLKY3H.js +118 -0
  101. package/dist/utils/formatting.d.ts +10 -1
  102. package/dist/utils/formatting.d.ts.map +1 -1
  103. package/dist/workflow/Activity.d.ts +85 -0
  104. package/dist/workflow/Activity.d.ts.map +1 -0
  105. package/dist/workflow/ActivityInstance.d.ts +96 -0
  106. package/dist/workflow/ActivityInstance.d.ts.map +1 -0
  107. package/dist/workflow/client.d.ts +39 -0
  108. package/dist/workflow/client.d.ts.map +1 -0
  109. package/dist/workflow/components/useActivityForm/createActivityItemProxy.d.ts +16 -0
  110. package/dist/workflow/components/useActivityForm/createActivityItemProxy.d.ts.map +1 -0
  111. package/dist/workflow/components/useActivityForm/createActivityResolver.d.ts +22 -0
  112. package/dist/workflow/components/useActivityForm/createActivityResolver.d.ts.map +1 -0
  113. package/dist/workflow/components/useActivityForm/index.d.ts +3 -0
  114. package/dist/workflow/components/useActivityForm/index.d.ts.map +1 -0
  115. package/dist/workflow/components/useActivityForm/types.d.ts +80 -0
  116. package/dist/workflow/components/useActivityForm/types.d.ts.map +1 -0
  117. package/dist/workflow/components/useActivityForm/useActivityForm.d.ts +4 -0
  118. package/dist/workflow/components/useActivityForm/useActivityForm.d.ts.map +1 -0
  119. package/dist/workflow/index.d.ts +8 -0
  120. package/dist/workflow/index.d.ts.map +1 -0
  121. package/dist/workflow/types.d.ts +53 -0
  122. package/dist/workflow/types.d.ts.map +1 -0
  123. package/dist/workflow.cjs +1 -0
  124. package/dist/workflow.d.ts +8 -0
  125. package/dist/workflow.d.ts.map +1 -0
  126. package/dist/workflow.mjs +565 -0
  127. package/dist/workflow.types.cjs +1 -0
  128. package/dist/workflow.types.d.ts +2 -0
  129. package/dist/workflow.types.d.ts.map +1 -0
  130. package/dist/workflow.types.mjs +1 -0
  131. package/docs/api.md +140 -572
  132. package/docs/bdo.md +742 -0
  133. package/docs/useAuth.md +10 -4
  134. package/docs/useFilter.md +40 -40
  135. package/docs/useForm.md +91 -62
  136. package/docs/useTable.md +38 -38
  137. package/docs/workflow.md +703 -0
  138. package/package.json +21 -1
  139. package/sdk/api/client.ts +77 -57
  140. package/sdk/api/index.ts +1 -0
  141. package/sdk/api/metadata.ts +22 -20
  142. package/sdk/base-types.ts +5 -9
  143. package/sdk/bdo/core/BaseBdo.ts +23 -38
  144. package/sdk/bdo/core/Item.ts +34 -56
  145. package/sdk/bdo/core/types.ts +147 -45
  146. package/sdk/bdo/fields/ArrayField.ts +9 -5
  147. package/sdk/bdo/fields/BaseField.ts +19 -29
  148. package/sdk/bdo/fields/BooleanField.ts +4 -5
  149. package/sdk/bdo/fields/DateField.ts +4 -5
  150. package/sdk/bdo/fields/DateTimeField.ts +9 -5
  151. package/sdk/bdo/fields/FileField.ts +39 -0
  152. package/sdk/bdo/fields/NumberField.ts +8 -5
  153. package/sdk/bdo/fields/ObjectField.ts +9 -5
  154. package/sdk/bdo/fields/ReferenceField.ts +22 -28
  155. package/sdk/bdo/fields/SelectField.ts +13 -26
  156. package/sdk/bdo/fields/StringField.ts +10 -5
  157. package/sdk/bdo/fields/TextAreaField.ts +3 -32
  158. package/sdk/bdo/fields/TextField.ts +42 -0
  159. package/sdk/bdo/fields/UserField.ts +52 -0
  160. package/sdk/bdo/fields/index.ts +5 -2
  161. package/sdk/bdo/index.ts +19 -4
  162. package/sdk/bdo.ts +4 -31
  163. package/sdk/bdo.types.ts +26 -21
  164. package/sdk/components/hooks/useFilter/useFilter.ts +13 -30
  165. package/sdk/components/hooks/useForm/createItemProxy.ts +47 -11
  166. package/sdk/components/hooks/useForm/createResolver.ts +65 -6
  167. package/sdk/components/hooks/useForm/index.ts +4 -0
  168. package/sdk/components/hooks/useForm/types.ts +92 -9
  169. package/sdk/components/hooks/useForm/useDraftInteraction.ts +251 -0
  170. package/sdk/components/hooks/useForm/useForm.ts +132 -60
  171. package/sdk/components/hooks/useTable/useTable.ts +10 -2
  172. package/sdk/form.ts +1 -12
  173. package/sdk/form.types.ts +1 -0
  174. package/sdk/index.ts +9 -3
  175. package/sdk/types/base-fields.ts +28 -72
  176. package/sdk/types/constants.ts +2 -2
  177. package/sdk/utils/formatting.ts +13 -1
  178. package/sdk/workflow/Activity.ts +181 -0
  179. package/sdk/workflow/ActivityInstance.ts +339 -0
  180. package/sdk/workflow/client.ts +208 -0
  181. package/sdk/workflow/components/useActivityForm/createActivityItemProxy.ts +126 -0
  182. package/sdk/workflow/components/useActivityForm/createActivityResolver.ts +61 -0
  183. package/sdk/workflow/components/useActivityForm/index.ts +5 -0
  184. package/sdk/workflow/components/useActivityForm/types.ts +166 -0
  185. package/sdk/workflow/components/useActivityForm/useActivityForm.ts +386 -0
  186. package/sdk/workflow/index.ts +20 -0
  187. package/sdk/workflow/types.ts +84 -0
  188. package/sdk/workflow.ts +25 -0
  189. package/sdk/workflow.types.ts +11 -0
  190. package/dist/client-DxjRcEtN.cjs +0 -1
  191. package/dist/constants-C49b9Exc.cjs +0 -1
  192. package/dist/useFilter-DzpP_ag0.cjs +0 -1
  193. package/dist/useFilter-H5bgAZQF.js +0 -120
package/README.md CHANGED
@@ -47,7 +47,7 @@ npm install react @tanstack/react-query
47
47
  - **useFilter** - Advanced filtering with logical operators and payload builders
48
48
  - **BDO Module** - Type-safe, role-based data access layer with expression validation
49
49
  - **API Client** - Type-safe CRUD operations with structured filtering and sorting
50
- - **Type System** - 10 semantic field types (StringField, NumberField, CurrencyField, etc.)
50
+ - **Type System** - 12 semantic field types (StringField, NumberField, TextField, etc.)
51
51
  - **Utilities** - Formatting helpers for currency, dates, numbers, and more
52
52
 
53
53
  ## Quick Start
@@ -78,7 +78,7 @@ import type { ListResponseType, FilterType } from "@ram_28/kf-ai-sdk/api/types";
78
78
  import { formatCurrency, formatDate } from "@ram_28/kf-ai-sdk/utils";
79
79
 
80
80
  // Base Field Types
81
- import type { StringFieldType, CurrencyFieldType } from "@ram_28/kf-ai-sdk/types";
81
+ import type { StringFieldType, NumberFieldType } from "@ram_28/kf-ai-sdk/types";
82
82
  ```
83
83
 
84
84
  ## Authentication
@@ -295,34 +295,32 @@ function ProductTable() {
295
295
  Advanced filtering with logical operators.
296
296
 
297
297
  ```tsx
298
- import { useFilter } from "@ram_28/kf-ai-sdk/filter";
298
+ import { ConditionOperator, RHSType } from "@ram_28/kf-ai-sdk/filter";
299
+ import { BuyerProduct } from "./bdo/buyer/Product";
299
300
 
300
301
  function ProductFilter() {
301
- const filter = useFilter({
302
- fields: {
303
- name: { type: "string" },
304
- price: { type: "number" },
305
- category: {
306
- type: "select",
307
- options: ["electronics", "clothing", "books"],
308
- },
309
- },
310
- });
311
-
312
- const handleApply = () => {
313
- const payload = buildFilterPayload(filter.conditions);
314
- // Use payload with API
315
- };
302
+ const product = new BuyerProduct();
303
+ const filter = useFilter();
316
304
 
317
305
  return (
318
306
  <div>
319
- <button onClick={() => filter.addCondition("name", "contains", "")}>
307
+ <button onClick={() => filter.addCondition({
308
+ Operator: ConditionOperator.Contains,
309
+ LHSField: product.Title.id,
310
+ RHSValue: "",
311
+ RHSType: RHSType.Constant,
312
+ })}>
320
313
  Add Name Filter
321
314
  </button>
322
- <button onClick={() => filter.addCondition("price", "gte", 0)}>
315
+ <button onClick={() => filter.addCondition({
316
+ Operator: ConditionOperator.GTE,
317
+ LHSField: product.Price.id,
318
+ RHSValue: 0,
319
+ RHSType: RHSType.Constant,
320
+ })}>
323
321
  Add Price Filter
324
322
  </button>
325
- <button onClick={handleApply}>Apply Filters</button>
323
+ <button onClick={() => console.log(filter.payload)}>Apply Filters</button>
326
324
  </div>
327
325
  );
328
326
  }
@@ -336,21 +334,17 @@ Type-safe, role-based data access layer:
336
334
  import { BaseBdo, StringField, NumberField } from "@ram_28/kf-ai-sdk/bdo";
337
335
 
338
336
  // Define your BDO class
339
- class AdminProduct extends BaseBdo<ProductType> {
340
- readonly boId = "BDO_Product";
341
-
342
- readonly Title = new StringField({ id: "Title", label: "Product Title" });
343
- readonly Price = new NumberField({ id: "Price", label: "Price" });
337
+ class AdminProduct extends BaseBdo<ProductType, ProductEditableType, ProductReadonlyType> {
338
+ readonly meta = { _id: "BDO_Product", name: "Product" } as const;
344
339
 
345
- protected _getFieldDefinitions() {
346
- return { Title: this.Title, Price: this.Price };
347
- }
340
+ readonly Title = new StringField({ _id: "Title", Name: "Product Title", Type: "String", Constraint: { Required: true } });
341
+ readonly Price = new NumberField({ _id: "Price", Name: "Price", Type: "Number" });
348
342
 
349
343
  // Expose only the methods this role can use
350
344
  public async get(id: string) { return super.get(id); }
351
- public async list(options?: ListOptionsType) { return super.list(options); }
352
- public async create(data: Partial<ProductType>) { return super.create(data); }
353
- public async update(id: string, data: Partial<ProductType>) { return super.update(id, data); }
345
+ public async list(options?: any) { return super.list(options); }
346
+ public async create(data: Partial<ProductEditableType>) { return super.create(data); }
347
+ public async update(id: string, data: Partial<ProductEditableType>) { return super.update(id, data); }
354
348
  }
355
349
  ```
356
350
 
@@ -387,13 +381,13 @@ async function productOperations() {
387
381
  // List with filtering and sorting
388
382
  const products = await api("products").list({
389
383
  Filter: {
390
- Operator: "AND",
384
+ Operator: "And",
391
385
  Condition: [
392
386
  { Operator: "EQ", LHSField: "category", RHSValue: "electronics" },
393
387
  { Operator: "GTE", LHSField: "price", RHSValue: 50 },
394
388
  ],
395
389
  },
396
- Sort: [{ Field: "price", Order: "DESC" }],
390
+ Sort: [{ "price": "DESC" }],
397
391
  Page: 1,
398
392
  PageSize: 25,
399
393
  });
@@ -401,7 +395,7 @@ async function productOperations() {
401
395
  // Count records
402
396
  const count = await api("products").count({
403
397
  Filter: {
404
- Operator: "AND",
398
+ Operator: "And",
405
399
  Condition: [{ Operator: "EQ", LHSField: "inStock", RHSValue: true }],
406
400
  },
407
401
  });
@@ -415,21 +409,21 @@ The SDK provides semantic field types for type-safe data modeling:
415
409
  ```tsx
416
410
  import type {
417
411
  StringFieldType,
418
- TextAreaFieldType,
412
+ TextFieldType,
419
413
  NumberFieldType,
420
414
  BooleanFieldType,
421
415
  DateFieldType,
422
416
  DateTimeFieldType,
423
- CurrencyFieldType,
424
417
  SelectFieldType,
418
+ ReferenceFieldType,
425
419
  } from "@ram_28/kf-ai-sdk/types";
426
420
 
427
421
  // Define your data types
428
422
  interface Product {
429
423
  _id: StringFieldType;
430
424
  name: StringFieldType;
431
- description: TextAreaFieldType;
432
- price: CurrencyFieldType;
425
+ description: TextFieldType;
426
+ price: NumberFieldType;
433
427
  quantity: NumberFieldType;
434
428
  inStock: BooleanFieldType;
435
429
  category: SelectFieldType<"electronics" | "clothing" | "books">;
@@ -471,6 +465,9 @@ Detailed documentation for each feature:
471
465
 
472
466
  - [useTable Documentation](./docs/useTable.md)
473
467
  - [useFilter Documentation](./docs/useFilter.md)
468
+ - [useForm Documentation](./docs/useForm.md)
469
+ - [useAuth Documentation](./docs/useAuth.md)
470
+ - [API Documentation](./docs/api.md)
474
471
 
475
472
  ## Requirements
476
473
 
@@ -0,0 +1,40 @@
1
+ var i = Object.defineProperty;
2
+ var s = (t, e, a) => e in t ? i(t, e, { enumerable: !0, configurable: !0, writable: !0, value: a }) : t[e] = a;
3
+ var r = (t, e, a) => s(t, typeof e != "symbol" ? e + "" : e, a);
4
+ class u {
5
+ constructor(e) {
6
+ /** Full raw backend meta */
7
+ r(this, "_meta");
8
+ r(this, "_parentBoId");
9
+ this._meta = e;
10
+ }
11
+ // === Convenience getters (transform backend naming → SDK naming) ===
12
+ get id() {
13
+ return this._meta._id;
14
+ }
15
+ get label() {
16
+ return this._meta.Name || this._meta._id;
17
+ }
18
+ get readOnly() {
19
+ return this._meta.ReadOnly ?? !1;
20
+ }
21
+ get required() {
22
+ var e;
23
+ return ((e = this._meta.Constraint) == null ? void 0 : e.Required) ?? this._meta.Required ?? !1;
24
+ }
25
+ get defaultValue() {
26
+ var e;
27
+ return this._meta.DefaultValue ?? ((e = this._meta.Constraint) == null ? void 0 : e.DefaultValue);
28
+ }
29
+ get primaryKey() {
30
+ var e;
31
+ return ((e = this._meta.Constraint) == null ? void 0 : e.PrimaryKey) ?? !1;
32
+ }
33
+ /** Full raw meta (the exact JSON passed to constructor) */
34
+ get meta() {
35
+ return this._meta;
36
+ }
37
+ }
38
+ export {
39
+ u as B
40
+ };
@@ -0,0 +1 @@
1
+ "use strict";var i=Object.defineProperty;var s=(t,e,a)=>e in t?i(t,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[e]=a;var r=(t,e,a)=>s(t,typeof e!="symbol"?e+"":e,a);class u{constructor(e){r(this,"_meta");r(this,"_parentBoId");this._meta=e}get id(){return this._meta._id}get label(){return this._meta.Name||this._meta._id}get readOnly(){return this._meta.ReadOnly??!1}get required(){var e;return((e=this._meta.Constraint)==null?void 0:e.Required)??this._meta.Required??!1}get defaultValue(){var e;return this._meta.DefaultValue??((e=this._meta.Constraint)==null?void 0:e.DefaultValue)}get primaryKey(){var e;return((e=this._meta.Constraint)==null?void 0:e.PrimaryKey)??!1}get meta(){return this._meta}}exports.BaseField=u;
@@ -83,6 +83,13 @@ export declare function getDefaultHeaders(): Record<string, string>;
83
83
  * Get current base URL
84
84
  */
85
85
  export declare function getApiBaseUrl(): string;
86
+ /**
87
+ * Create a resource client for a given base path.
88
+ * This is the shared implementation used by both `api()` and workflow owner methods.
89
+ * @param basePath - URL path segment (e.g., "/api/app/user" or "/api/app/process/leave_bp/vendor_ado")
90
+ * @returns Resource client with CRUD operations matching API spec
91
+ */
92
+ export declare function createResourceClient<T = any>(basePath: string): ResourceClientType<T>;
86
93
  /**
87
94
  * Create a resource client for the specified Business Object
88
95
  * @param bo_id - Business Object identifier (e.g., "user", "leave", "vendor")
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../sdk/api/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../sdk/api/client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAEhB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,GAAG;IAKzC,8BAA8B;IAC9B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAE5B,wBAAwB;IACxB,MAAM,CACJ,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAClC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAErC,6BAA6B;IAC7B,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAExE,0BAA0B;IAC1B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEhD,oEAAoE;IACpE,IAAI,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9D,8DAA8D;IAC9D,KAAK,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAM7D;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEpD;;;OAGG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAE7E;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAErE;;;;OAIG;IACH,gBAAgB,CACd,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAClC,OAAO,CAAC,iBAAiB,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAMhD;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE9E;;;OAGG;IACH,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAM3E;;;OAGG;IACH,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEtC;;;;;;;OAOG;IACH,UAAU,CAAC,OAAO,GAAG,oBAAoB,EACvC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CACvB;AAoBD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEnD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAEvE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE1D;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,GAAG,GAAG,EAC1C,QAAQ,EAAE,MAAM,GACf,kBAAkB,CAAC,CAAC,CAAC,CA6RvB;AAED;;;;GAIG;AACH,wBAAgB,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAEjE"}
@@ -1,4 +1,4 @@
1
- export { api, setApiBaseUrl, setDefaultHeaders, getDefaultHeaders, getApiBaseUrl, } from "./client";
1
+ export { api, createResourceClient, setApiBaseUrl, setDefaultHeaders, getDefaultHeaders, getApiBaseUrl, } from "./client";
2
2
  export type { ResourceClientType } from "./client";
3
3
  export { DatetimeFormat, decodeDate, decodeDateTime, formatDate, formatDateTime, parseDate, parseDateTime, } from "./datetime";
4
4
  export { getBdoSchema, listMetadata } from "./metadata";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../sdk/api/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,GAAG,EACH,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,GACd,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGnD,OAAO,EACL,cAAc,EACd,UAAU,EACV,cAAc,EACd,UAAU,EACV,cAAc,EACd,SAAS,EACT,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACxD,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGzF,YAAY,EAEV,iBAAiB,EACjB,cAAc,EACd,QAAQ,EAER,aAAa,EACb,kBAAkB,EAClB,0BAA0B,EAC1B,UAAU,EACV,aAAa,EACb,qBAAqB,EAErB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EAEjB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAElB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EAEjB,iBAAiB,EAEjB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,eAAe,EACf,mBAAmB,GACpB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../sdk/api/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,GAAG,EACH,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,GACd,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGnD,OAAO,EACL,cAAc,EACd,UAAU,EACV,cAAc,EACd,UAAU,EACV,cAAc,EACd,SAAS,EACT,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACxD,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGzF,YAAY,EAEV,iBAAiB,EACjB,cAAc,EACd,QAAQ,EAER,aAAa,EACb,kBAAkB,EAClB,0BAA0B,EAC1B,UAAU,EACV,aAAa,EACb,qBAAqB,EAErB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EAEjB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAElB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EAEjB,iBAAiB,EAEjB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,eAAe,EACf,mBAAmB,GACpB,MAAM,sBAAsB,CAAC"}
@@ -37,39 +37,43 @@ export interface MetadataItemType {
37
37
  *
38
38
  * @param options - Optional list options (filters, sorting, pagination)
39
39
  * @returns Promise resolving to list of metadata items
40
- *
41
- * @example
42
- * ```typescript
43
- * // List all metadata
44
- * const all = await listMetadata();
45
- *
46
- * // List with filters
47
- * const businessObjects = await listMetadata({
48
- * Filter: {
49
- * Operator: "AND",
50
- * Condition: [{ LhsField: "Kind", Operator: "eq", RhsValue: "BusinessObject" }]
51
- * }
52
- * });
53
- * ```
54
40
  */
55
41
  export declare function listMetadata(options?: ListOptionsType): Promise<ListResponseType<MetadataItemType>>;
56
42
  /**
57
- * Field metadata structure
43
+ * Field metadata structure — matches new Constraint/View/Property backend shape
58
44
  */
59
45
  export interface FieldMetadataType {
60
46
  Id: string;
61
47
  Name: string;
62
48
  Type: string;
49
+ ReadOnly?: boolean;
63
50
  Required?: boolean;
64
- Unique?: boolean;
65
- Computed?: boolean;
66
- Values?: {
67
- Mode: "Static" | "Dynamic";
68
- Items?: Array<{
69
- Value: string;
70
- Label: string;
51
+ Constraint?: {
52
+ Required?: boolean;
53
+ Enum?: string[];
54
+ Length?: number;
55
+ IntegerPart?: number;
56
+ FractionPart?: number;
57
+ PrimaryKey?: boolean;
58
+ DefaultValue?: unknown;
59
+ Precision?: "Second" | "Millisecond";
60
+ Format?: "Plain" | "Markdown";
61
+ };
62
+ View?: {
63
+ DataObject?: {
64
+ Type: string;
65
+ Id: string;
66
+ };
67
+ Fields?: Record<string, {
68
+ Type: string;
71
69
  }>;
70
+ Search?: string[];
71
+ Filter?: Record<string, unknown>;
72
+ Sort?: unknown[];
73
+ BusinessEntity?: string;
72
74
  };
75
+ Property?: FieldMetadataType | Record<string, FieldMetadataType>;
76
+ DefaultValue?: unknown;
73
77
  [key: string]: any;
74
78
  }
75
79
  //# sourceMappingURL=metadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../sdk/api/metadata.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAOzE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC;CAC1B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA8B7E;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,YAAY,CAChC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CA8B7C;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;QAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACjD,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../sdk/api/metadata.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAOzE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC;CAC1B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA8B7E;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CA8B7C;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,SAAS,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;QACrC,MAAM,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;KAC/B,CAAC;IACF,IAAI,CAAC,EAAE;QACL,UAAU,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;QAC1C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;QACjB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,QAAQ,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACjE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB"}
package/dist/api.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./client-DxjRcEtN.cjs"),u=require("./metadata-Bz8zJqC1.cjs"),o=require("./constants-C49b9Exc.cjs"),p={DATE:"%Y-%m-%d",TIME:"%H:%M:%S",DATE_TIME:"%Y-%m-%d %H:%M:%S"};function D(t){const[e,a,r]=t.$__d__.split("-").map(Number);return new Date(e,a-1,r)}function g(t){return new Date(t.$__dt__*1e3)}function l(t){const e=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0");return`${e}-${a}-${r}`}function S(t){const e=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),c=String(t.getSeconds()).padStart(2,"0");return`${e}-${a}-${r} ${s}:${i}:${c}`}function y(t){const[e,a,r]=t.split("-").map(Number);return new Date(e,a-1,r)}function f(t){const[e,a]=t.split(" "),[r,s,i]=e.split("-").map(Number),[c,d,m]=a.split(":").map(Number);return new Date(r,s-1,i,c,d,m)}exports.api=n.api;exports.getApiBaseUrl=n.getApiBaseUrl;exports.getDefaultHeaders=n.getDefaultHeaders;exports.setApiBaseUrl=n.setApiBaseUrl;exports.setDefaultHeaders=n.setDefaultHeaders;exports.getBdoSchema=u.getBdoSchema;exports.listMetadata=u.listMetadata;exports.DateEncodingKey=o.DateEncodingKey;exports.DeleteStatus=o.DeleteStatus;exports.HttpMethod=o.HttpMethod;exports.MetricType=o.MetricType;exports.QueryType=o.QueryType;exports.DatetimeFormat=p;exports.decodeDate=D;exports.decodeDateTime=g;exports.formatDate=l;exports.formatDateTime=S;exports.parseDate=y;exports.parseDateTime=f;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./client-DtPpfJc1.cjs"),u=require("./metadata-BJWukIqS.cjs"),o=require("./constants-D0J69if5.cjs"),p={DATE:"%Y-%m-%d",TIME:"%H:%M:%S",DATE_TIME:"%Y-%m-%d %H:%M:%S"};function D(t){const[e,a,r]=t.$__d__.split("-").map(Number);return new Date(e,a-1,r)}function g(t){return new Date(t.$__dt__*1e3)}function l(t){const e=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0");return`${e}-${a}-${r}`}function S(t){const e=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),c=String(t.getSeconds()).padStart(2,"0");return`${e}-${a}-${r} ${s}:${i}:${c}`}function y(t){const[e,a,r]=t.split("-").map(Number);return new Date(e,a-1,r)}function f(t){const[e,a]=t.split(" "),[r,s,i]=e.split("-").map(Number),[c,d,m]=a.split(":").map(Number);return new Date(r,s-1,i,c,d,m)}exports.api=n.api;exports.getApiBaseUrl=n.getApiBaseUrl;exports.getDefaultHeaders=n.getDefaultHeaders;exports.setApiBaseUrl=n.setApiBaseUrl;exports.setDefaultHeaders=n.setDefaultHeaders;exports.getBdoSchema=u.getBdoSchema;exports.listMetadata=u.listMetadata;exports.DateEncodingKey=o.DateEncodingKey;exports.DeleteStatus=o.DeleteStatus;exports.HttpMethod=o.HttpMethod;exports.MetricType=o.MetricType;exports.QueryType=o.QueryType;exports.DatetimeFormat=p;exports.decodeDate=D;exports.decodeDateTime=g;exports.formatDate=l;exports.formatDateTime=S;exports.parseDate=y;exports.parseDateTime=f;
package/dist/api.mjs CHANGED
@@ -1,6 +1,6 @@
1
- import { a as f, c as h, g as M, s as $, b as T } from "./client-BIkaIr2y.js";
2
- import { g as H, l as b } from "./metadata-VbQzyD2C.js";
3
- import { D as w, a as x, H as A, M as N, Q as Y } from "./constants-DaX7GLgl.js";
1
+ import { a as f, c as h, g as M, s as $, b as T } from "./client-BULEEaCP.js";
2
+ import { g as H, l as b } from "./metadata-CJuFxytC.js";
3
+ import { a as w, b as x, H as A, M as N, Q as Y } from "./constants-BQrBcCON.js";
4
4
  const m = {
5
5
  /** Date format: "YYYY-MM-DD" */
6
6
  DATE: "%Y-%m-%d",
package/dist/auth.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var J=Object.defineProperty;var X=(e,t,n)=>t in e?J(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var M=(e,t,n)=>X(e,typeof t!="symbol"?t+"":t,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("react/jsx-runtime"),r=require("react"),N=require("@tanstack/react-query"),L=require("./client-DxjRcEtN.cjs"),W=require("./constants-C49b9Exc.cjs"),H={sessionEndpoint:"/api/id",providers:{google:{loginPath:"/api/auth/google/login",logoutPath:"/api/auth/logout"}},defaultProvider:"google",autoRedirect:!1,sessionCheckInterval:0,retry:{count:3,delay:1e3},staleTime:5*60*1e3,refetchOnWindowFocus:!1,refetchOnReconnect:!0};let h={...H};function Y(e){h={...h,...e,providers:{...h.providers,...e.providers},retry:{...h.retry,...e.retry}}}function Z(e,t){h.providers[e]=t}function b(){return{...h}}function k(){return h.baseUrl||L.getApiBaseUrl()||(typeof window<"u"?window.location.origin:"")}function G(e){return h.providers[e]}function D(){h={...H}}class E extends Error{constructor(n,o){super(n);M(this,"statusCode");this.name="AuthenticationError",this.statusCode=o}}async function ee(){const e=b(),t=k(),n=L.getDefaultHeaders(),o=await fetch(`${t}${e.sessionEndpoint}`,{method:"GET",headers:n,credentials:"include"});if(!o.ok)throw o.status===401||o.status===403?new E("Not authenticated",o.status):new E(`Session check failed: ${o.statusText}`,o.status);return await o.json()}function _(e,t){return new Promise(()=>{const n=b(),o=k();if(!o)throw new Error('Auth base URL is not configured. Call setApiBaseUrl("https://...") or configureAuth({ baseUrl: "https://..." }) first.');const u=e||n.defaultProvider,c=G(u);if(!c){const A=Object.keys(n.providers||{}).join(", ")||"none";throw new Error(`Auth provider "${u}" is not configured. Available providers: ${A}`)}if(!c.loginPath)throw new Error(`Login path not configured for provider "${u}". Configure it with: configureAuth({ providers: { ${u}: { loginPath: '/api/auth/...' } } })`);let f;try{f=new URL(`${o}${c.loginPath}`)}catch{throw new Error(`Failed to construct login URL. Base URL: "${o}", Login path: "${c.loginPath}". Ensure baseUrl is a valid URL (e.g., "https://example.com").`)}(t!=null&&t.callbackUrl||n.callbackUrl)&&f.searchParams.set("callbackUrl",(t==null?void 0:t.callbackUrl)||n.callbackUrl||window.location.href),t!=null&&t.params&&Object.entries(t.params).forEach(([A,v])=>{f.searchParams.set(A,v)}),window.open(f.toString(),"_blank")})}async function te(e){const t=b(),n=k(),o=L.getDefaultHeaders(),u=G(t.defaultProvider),c=u==null?void 0:u.logoutPath;if(c&&(e==null?void 0:e.callLogoutEndpoint)!==!1)try{await fetch(`${n}${c}`,{method:"POST",headers:o,credentials:"include"})}catch(f){console.warn("Logout endpoint call failed:",f)}e!=null&&e.redirectUrl?window.location.href=e.redirectUrl:t.loginRedirectUrl&&(window.location.href=t.loginRedirectUrl)}const V=r.createContext(null),K=["auth","session"];function re({children:e,config:t,onAuthChange:n,onError:o,loadingComponent:u,unauthenticatedComponent:c,skipInitialCheck:f=!1}){const A=r.useRef(!1);t&&!A.current&&(Y(t),A.current=!0);const v=N.useQueryClient(),l=b(),{data:a,isLoading:g,error:U,refetch:R,isFetching:P}=N.useQuery({queryKey:K,queryFn:ee,enabled:!f,retry:(s,w)=>w instanceof E&&(w.statusCode===401||w.statusCode===403)?!1:s<l.retry.count,retryDelay:l.retry.delay,staleTime:l.staleTime,gcTime:l.staleTime*2,refetchOnWindowFocus:l.refetchOnWindowFocus??!0,refetchOnReconnect:l.refetchOnReconnect??!0,refetchInterval:l.sessionCheckInterval||!1}),[x,S]=r.useState(null),d=r.useMemo(()=>g||P?"loading":Object.keys((a==null?void 0:a.userDetails)||{}).length>0?"authenticated":"unauthenticated",[g,P,a]),i=(a==null?void 0:a.userDetails)||null,$=(a==null?void 0:a.staticBaseUrl)||null,O=(a==null?void 0:a.buildId)||null,j=d==="authenticated",C=r.useRef(n);C.current=n;const m=r.useRef(o);m.current=o,r.useEffect(()=>{var s;g||(s=C.current)==null||s.call(C,d,i)},[d,i,g]),r.useEffect(()=>{var s;U&&(S(U),(s=m.current)==null||s.call(m,U))},[U]),r.useEffect(()=>{d==="unauthenticated"&&l.autoRedirect&&!g&&_()},[d,g,l.autoRedirect]);const p=r.useCallback((s,w)=>{_(s,w)},[]),q=r.useCallback(async s=>{v.removeQueries({queryKey:K}),await te(s)},[v]),B=r.useCallback(async()=>{if(P)return a||null;try{return(await R()).data||null}catch(s){return S(s),null}},[R,P,a]),I=r.useCallback(s=>(i==null?void 0:i.Role)===s,[i]),T=r.useCallback(s=>s.includes((i==null?void 0:i.Role)||""),[i]),F=r.useCallback(()=>{S(null)},[]),Q=r.useCallback(()=>{R()},[R]),z=r.useMemo(()=>({user:i,staticBaseUrl:$,buildId:O,status:d,isAuthenticated:j,isLoading:g,login:p,logout:q,refreshSession:B,hasRole:I,hasAnyRole:T,error:x,clearError:F,_forceCheck:Q}),[i,$,O,d,j,g,p,q,B,I,T,x,F,Q]);return d==="loading"&&u?y.jsx(y.Fragment,{children:u}):d==="unauthenticated"&&!l.autoRedirect&&c?y.jsx(y.Fragment,{children:c}):y.jsx(V.Provider,{value:z,children:e})}function ne(){const e=r.useContext(V);if(!e)throw new Error("useAuth must be used within an AuthProvider");return e}function oe(){const e=ne();return r.useMemo(()=>({user:e.user,staticBaseUrl:e.staticBaseUrl,buildId:e.buildId,status:e.status,isAuthenticated:e.isAuthenticated,isLoading:e.isLoading,login:e.login,logout:e.logout,refreshSession:e.refreshSession,hasRole:e.hasRole,hasAnyRole:e.hasAnyRole,error:e.error,clearError:e.clearError}),[e.user,e.staticBaseUrl,e.buildId,e.status,e.isAuthenticated,e.isLoading,e.login,e.logout,e.refreshSession,e.hasRole,e.hasAnyRole,e.error,e.clearError])}exports.AuthProviderName=W.AuthProviderName;exports.AuthStatus=W.AuthStatus;exports.AuthProvider=re;exports.AuthenticationError=E;exports.configureAuth=Y;exports.getAuthBaseUrl=k;exports.getAuthConfig=b;exports.resetAuthConfig=D;exports.setAuthProvider=Z;exports.useAuth=oe;
1
+ "use strict";var J=Object.defineProperty;var X=(e,t,n)=>t in e?J(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var M=(e,t,n)=>X(e,typeof t!="symbol"?t+"":t,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("react/jsx-runtime"),r=require("react"),N=require("@tanstack/react-query"),L=require("./client-DtPpfJc1.cjs"),W=require("./constants-D0J69if5.cjs"),H={sessionEndpoint:"/api/id",providers:{google:{loginPath:"/api/auth/google/login",logoutPath:"/api/auth/logout"}},defaultProvider:"google",autoRedirect:!1,sessionCheckInterval:0,retry:{count:3,delay:1e3},staleTime:5*60*1e3,refetchOnWindowFocus:!1,refetchOnReconnect:!0};let h={...H};function Y(e){h={...h,...e,providers:{...h.providers,...e.providers},retry:{...h.retry,...e.retry}}}function Z(e,t){h.providers[e]=t}function b(){return{...h}}function k(){return h.baseUrl||L.getApiBaseUrl()||(typeof window<"u"?window.location.origin:"")}function G(e){return h.providers[e]}function D(){h={...H}}class E extends Error{constructor(n,o){super(n);M(this,"statusCode");this.name="AuthenticationError",this.statusCode=o}}async function ee(){const e=b(),t=k(),n=L.getDefaultHeaders(),o=await fetch(`${t}${e.sessionEndpoint}`,{method:"GET",headers:n,credentials:"include"});if(!o.ok)throw o.status===401||o.status===403?new E("Not authenticated",o.status):new E(`Session check failed: ${o.statusText}`,o.status);return await o.json()}function _(e,t){return new Promise(()=>{const n=b(),o=k();if(!o)throw new Error('Auth base URL is not configured. Call setApiBaseUrl("https://...") or configureAuth({ baseUrl: "https://..." }) first.');const u=e||n.defaultProvider,c=G(u);if(!c){const A=Object.keys(n.providers||{}).join(", ")||"none";throw new Error(`Auth provider "${u}" is not configured. Available providers: ${A}`)}if(!c.loginPath)throw new Error(`Login path not configured for provider "${u}". Configure it with: configureAuth({ providers: { ${u}: { loginPath: '/api/auth/...' } } })`);let f;try{f=new URL(`${o}${c.loginPath}`)}catch{throw new Error(`Failed to construct login URL. Base URL: "${o}", Login path: "${c.loginPath}". Ensure baseUrl is a valid URL (e.g., "https://example.com").`)}(t!=null&&t.callbackUrl||n.callbackUrl)&&f.searchParams.set("callbackUrl",(t==null?void 0:t.callbackUrl)||n.callbackUrl||window.location.href),t!=null&&t.params&&Object.entries(t.params).forEach(([A,v])=>{f.searchParams.set(A,v)}),window.open(f.toString(),"_blank")})}async function te(e){const t=b(),n=k(),o=L.getDefaultHeaders(),u=G(t.defaultProvider),c=u==null?void 0:u.logoutPath;if(c&&(e==null?void 0:e.callLogoutEndpoint)!==!1)try{await fetch(`${n}${c}`,{method:"POST",headers:o,credentials:"include"})}catch(f){console.warn("Logout endpoint call failed:",f)}e!=null&&e.redirectUrl?window.location.href=e.redirectUrl:t.loginRedirectUrl&&(window.location.href=t.loginRedirectUrl)}const V=r.createContext(null),K=["auth","session"];function re({children:e,config:t,onAuthChange:n,onError:o,loadingComponent:u,unauthenticatedComponent:c,skipInitialCheck:f=!1}){const A=r.useRef(!1);t&&!A.current&&(Y(t),A.current=!0);const v=N.useQueryClient(),l=b(),{data:a,isLoading:g,error:U,refetch:R,isFetching:P}=N.useQuery({queryKey:K,queryFn:ee,enabled:!f,retry:(s,w)=>w instanceof E&&(w.statusCode===401||w.statusCode===403)?!1:s<l.retry.count,retryDelay:l.retry.delay,staleTime:l.staleTime,gcTime:l.staleTime*2,refetchOnWindowFocus:l.refetchOnWindowFocus??!0,refetchOnReconnect:l.refetchOnReconnect??!0,refetchInterval:l.sessionCheckInterval||!1}),[x,S]=r.useState(null),d=r.useMemo(()=>g||P?"loading":Object.keys((a==null?void 0:a.userDetails)||{}).length>0?"authenticated":"unauthenticated",[g,P,a]),i=(a==null?void 0:a.userDetails)||null,$=(a==null?void 0:a.staticBaseUrl)||null,O=(a==null?void 0:a.buildId)||null,j=d==="authenticated",C=r.useRef(n);C.current=n;const m=r.useRef(o);m.current=o,r.useEffect(()=>{var s;g||(s=C.current)==null||s.call(C,d,i)},[d,i,g]),r.useEffect(()=>{var s;U&&(S(U),(s=m.current)==null||s.call(m,U))},[U]),r.useEffect(()=>{d==="unauthenticated"&&l.autoRedirect&&!g&&_()},[d,g,l.autoRedirect]);const p=r.useCallback((s,w)=>{_(s,w)},[]),q=r.useCallback(async s=>{v.removeQueries({queryKey:K}),await te(s)},[v]),B=r.useCallback(async()=>{if(P)return a||null;try{return(await R()).data||null}catch(s){return S(s),null}},[R,P,a]),I=r.useCallback(s=>(i==null?void 0:i.Role)===s,[i]),T=r.useCallback(s=>s.includes((i==null?void 0:i.Role)||""),[i]),F=r.useCallback(()=>{S(null)},[]),Q=r.useCallback(()=>{R()},[R]),z=r.useMemo(()=>({user:i,staticBaseUrl:$,buildId:O,status:d,isAuthenticated:j,isLoading:g,login:p,logout:q,refreshSession:B,hasRole:I,hasAnyRole:T,error:x,clearError:F,_forceCheck:Q}),[i,$,O,d,j,g,p,q,B,I,T,x,F,Q]);return d==="loading"&&u?y.jsx(y.Fragment,{children:u}):d==="unauthenticated"&&!l.autoRedirect&&c?y.jsx(y.Fragment,{children:c}):y.jsx(V.Provider,{value:z,children:e})}function ne(){const e=r.useContext(V);if(!e)throw new Error("useAuth must be used within an AuthProvider");return e}function oe(){const e=ne();return r.useMemo(()=>({user:e.user,staticBaseUrl:e.staticBaseUrl,buildId:e.buildId,status:e.status,isAuthenticated:e.isAuthenticated,isLoading:e.isLoading,login:e.login,logout:e.logout,refreshSession:e.refreshSession,hasRole:e.hasRole,hasAnyRole:e.hasAnyRole,error:e.error,clearError:e.clearError}),[e.user,e.staticBaseUrl,e.buildId,e.status,e.isAuthenticated,e.isLoading,e.login,e.logout,e.refreshSession,e.hasRole,e.hasAnyRole,e.error,e.clearError])}exports.AuthProviderName=W.AuthProviderName;exports.AuthStatus=W.AuthStatus;exports.AuthProvider=re;exports.AuthenticationError=E;exports.configureAuth=Y;exports.getAuthBaseUrl=k;exports.getAuthConfig=b;exports.resetAuthConfig=D;exports.setAuthProvider=Z;exports.useAuth=oe;
package/dist/auth.mjs CHANGED
@@ -4,8 +4,8 @@ var N = (e, t, r) => Z(e, typeof t != "symbol" ? t + "" : t, r);
4
4
  import { jsx as C, Fragment as W } from "react/jsx-runtime";
5
5
  import { useRef as p, useState as D, useMemo as k, useEffect as L, useCallback as g, createContext as ee, useContext as te } from "react";
6
6
  import { useQueryClient as re, useQuery as ne } from "@tanstack/react-query";
7
- import { c as oe, g as H } from "./client-BIkaIr2y.js";
8
- import { c as me, A as be } from "./constants-DaX7GLgl.js";
7
+ import { c as oe, g as H } from "./client-BULEEaCP.js";
8
+ import { c as me, A as be } from "./constants-BQrBcCON.js";
9
9
  const M = {
10
10
  sessionEndpoint: "/api/id",
11
11
  providers: {
@@ -1,2 +1,2 @@
1
- export type { StringFieldType, TextAreaFieldType, NumberFieldType, LongFieldType, BooleanFieldType, DateFieldType, DateTimeFieldType, CurrencyFieldType, CurrencyValueType, JSONFieldType, ReferenceFieldType, ExtractReferenceType, ExtractFetchFieldType, JSONValueType, JSONObjectType, JSONArrayType, SelectFieldType, ArrayFieldType, ObjectFieldType, OptionalFieldType, ExtractFieldType, SystemFieldsType, UserRefType, } from './types/base-fields';
1
+ export type { StringFieldType, TextFieldType, TextAreaFieldType, NumberFieldType, BooleanFieldType, DateFieldType, DateTimeFieldType, ReferenceFieldType, ExtractReferenceType, ExtractFetchFieldType, SelectFieldType, UserFieldType, FileFieldType, ArrayFieldType, ObjectFieldType, OptionalFieldType, ExtractFieldType, SystemFieldsType, UserRefType, } from './types/base-fields';
2
2
  //# sourceMappingURL=base-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-types.d.ts","sourceRoot":"","sources":["../sdk/base-types.ts"],"names":[],"mappings":"AAKA,YAAY,EAEV,eAAe,EACf,iBAAiB,EAGjB,eAAe,EACf,aAAa,EAGb,gBAAgB,EAGhB,aAAa,EACb,iBAAiB,EAGjB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EAGrB,aAAa,EACb,cAAc,EACd,aAAa,EAGb,eAAe,EAGf,cAAc,EACd,eAAe,EACf,iBAAiB,EAGjB,gBAAgB,EAGhB,gBAAgB,EAChB,WAAW,GACZ,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"base-types.d.ts","sourceRoot":"","sources":["../sdk/base-types.ts"],"names":[],"mappings":"AAKA,YAAY,EAEV,eAAe,EACf,aAAa,EACb,iBAAiB,EAGjB,eAAe,EAGf,gBAAgB,EAGhB,aAAa,EACb,iBAAiB,EAGjB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EAGrB,eAAe,EAGf,aAAa,EACb,aAAa,EAGb,cAAc,EACd,eAAe,EACf,iBAAiB,EAGjB,gBAAgB,EAGhB,gBAAgB,EAChB,WAAW,GACZ,MAAM,qBAAqB,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import type { ListOptionsType, CreateUpdateResponseType, DeleteResponseType, MetricOptionsType, MetricResponseType, PivotOptionsType, PivotResponseType, DraftResponseType } from "../../types/common";
2
- import type { StringFieldType, SystemFields, UserRefType } from "../../types/base-fields";
2
+ import type { SystemFields } from "../../types/base-fields";
3
3
  import { type ItemType } from "./Item";
4
4
  import { BaseField } from "../fields/BaseField";
5
5
  import { StringField } from "../fields/StringField";
6
6
  import { DateTimeField } from "../fields/DateTimeField";
7
- import { ReferenceField } from "../fields/ReferenceField";
7
+ import { UserField } from "../fields/UserField";
8
8
  import type { ValidationResultType, BdoMetaType } from "./types";
9
9
  import { type BDOMetadata } from "../expressions";
10
10
  export type { SystemFields } from "../../types/base-fields";
@@ -17,18 +17,6 @@ export type { SystemFields } from "../../types/base-fields";
17
17
  * @template TEntity - The full entity type with all fields
18
18
  * @template TEditable - Fields that this role can create/update (defaults to TEntity without system fields)
19
19
  * @template TReadonly - Fields that this role can only read (defaults to empty)
20
- *
21
- * @example
22
- * ```typescript
23
- * class AdminProduct extends BaseBdo<ProductType> {
24
- * readonly meta = { _id: "BDO_Product", name: "Product" };
25
- *
26
- * // Re-expose only methods this role can use
27
- * public async get(id: StringFieldType) { return super.get(id); }
28
- * public async list(options?: ListOptionsType) { return super.list(options); }
29
- * // create, update, delete NOT exposed - TypeScript error if called
30
- * }
31
- * ```
32
20
  */
33
21
  export declare abstract class BaseBdo<TEntity extends Record<string, unknown>, TEditable extends Record<string, unknown> = Omit<TEntity, SystemFields>, TReadonly extends Record<string, unknown> = {}> {
34
22
  /**
@@ -38,8 +26,8 @@ export declare abstract class BaseBdo<TEntity extends Record<string, unknown>, T
38
26
  readonly _id: StringField;
39
27
  readonly _created_at: DateTimeField;
40
28
  readonly _modified_at: DateTimeField;
41
- readonly _created_by: ReferenceField<UserRefType>;
42
- readonly _modified_by: ReferenceField<UserRefType>;
29
+ readonly _created_by: UserField;
30
+ readonly _modified_by: UserField;
43
31
  readonly _version: StringField;
44
32
  readonly _m_version: StringField;
45
33
  /**
@@ -92,7 +80,7 @@ export declare abstract class BaseBdo<TEntity extends Record<string, unknown>, T
92
80
  /**
93
81
  * Get a single record by ID
94
82
  */
95
- protected get(id: StringFieldType): Promise<ItemType<TEditable, TReadonly>>;
83
+ protected get(id: string): Promise<ItemType<TEditable, TReadonly>>;
96
84
  /**
97
85
  * List records with optional filtering, sorting, and pagination
98
86
  */
@@ -109,11 +97,11 @@ export declare abstract class BaseBdo<TEntity extends Record<string, unknown>, T
109
97
  /**
110
98
  * Update an existing record
111
99
  */
112
- protected update(id: StringFieldType, data: Partial<TEditable>): Promise<CreateUpdateResponseType>;
100
+ protected update(id: string, data: Partial<TEditable>): Promise<CreateUpdateResponseType>;
113
101
  /**
114
102
  * Delete a record by ID
115
103
  */
116
- protected delete(id: StringFieldType): Promise<DeleteResponseType>;
104
+ protected delete(id: string): Promise<DeleteResponseType>;
117
105
  /**
118
106
  * Create a draft - compute fields without persisting
119
107
  */
@@ -130,10 +118,14 @@ export declare abstract class BaseBdo<TEntity extends Record<string, unknown>, T
130
118
  * Use this when you need get/set/validate methods on fields
131
119
  */
132
120
  protected createItem(data?: Partial<TEditable>): ItemType<TEditable, TReadonly>;
121
+ /**
122
+ * Commit an update draft - finalize changes on an existing record
123
+ */
124
+ protected draftUpdate(id: string, data: Partial<TEditable>): Promise<CreateUpdateResponseType>;
133
125
  /**
134
126
  * Patch an existing draft - compute fields during editing
135
127
  */
136
- protected draftPatch(id: StringFieldType, data: Partial<TEditable>): Promise<DraftResponseType>;
128
+ protected draftPatch(id: string, data: Partial<TEditable>): Promise<DraftResponseType>;
137
129
  /**
138
130
  * Get aggregated metrics grouped by dimensions
139
131
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BaseBdo.d.ts","sourceRoot":"","sources":["../../../sdk/bdo/core/BaseBdo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseBdo.d.ts","sourceRoot":"","sources":["../../../sdk/bdo/core/BaseBdo.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ValidationResultType, FieldMetaType } from "./types";
1
+ import type { ValidationResultType, BaseFieldMetaType, EditableFieldAccessorType, ReadonlyFieldAccessorType, FieldAccessorType } from "./types";
2
2
  import type { BaseField } from "../fields/BaseField";
3
3
  /**
4
4
  * Interface for BDO that Item needs
@@ -8,28 +8,7 @@ interface BdoLike {
8
8
  hasMetadata(): boolean;
9
9
  validateFieldExpression(fieldId: string, value: unknown, allValues: Record<string, unknown>): ValidationResultType;
10
10
  }
11
- /**
12
- * Editable field accessor — has get(), set(), validate()
13
- */
14
- export interface EditableFieldAccessorType<T> {
15
- readonly meta: FieldMetaType;
16
- get(): T | undefined;
17
- set(value: T): void;
18
- validate(): ValidationResultType;
19
- }
20
- /**
21
- * Readonly field accessor — has get(), validate(), NO set()
22
- */
23
- export interface ReadonlyFieldAccessorType<T> {
24
- readonly meta: FieldMetaType;
25
- get(): T | undefined;
26
- validate(): ValidationResultType;
27
- }
28
- /**
29
- * Field accessor with get/set/validate methods + meta object (union type)
30
- */
31
- export type FieldAccessorType<T> = EditableFieldAccessorType<T> | ReadonlyFieldAccessorType<T>;
32
- export type { FieldMetaType };
11
+ export type { EditableFieldAccessorType, ReadonlyFieldAccessorType, FieldAccessorType, BaseFieldMetaType };
33
12
  /**
34
13
  * Create editable accessor type for each field in TEditable
35
14
  */
@@ -55,31 +34,16 @@ export type ItemType<TEditable extends Record<string, unknown>, TReadonly extend
55
34
  * Item class that wraps a record with field accessors
56
35
  *
57
36
  * Each field is accessible as a property returning an accessor with:
58
- * - id: field identifier
59
- * - label: display label
37
+ * - label: display name
38
+ * - required: whether field is required
39
+ * - readOnly: whether field is read-only
40
+ * - defaultValue: default value
41
+ * - meta: full raw backend meta
60
42
  * - get(): get current value
61
- * - set(value): set value
43
+ * - set(value): set value (editable fields only)
62
44
  * - validate(): validate current value
63
45
  *
64
46
  * @template T - The type of the underlying data
65
- *
66
- * @example
67
- * ```typescript
68
- * const product = new AdminProduct();
69
- * const item = await product.get("product_123");
70
- *
71
- * // Field accessor access
72
- * item.Title.get() // get value
73
- * item.Title.set("New Title") // set value (editable fields only)
74
- * item.Title.meta.id // "Title"
75
- * item.Title.meta.label // "Product Title"
76
- * item.Title.meta.isEditable // true if field is editable
77
- * item.Title.validate() // validate
78
- *
79
- * // Methods
80
- * const result = item.validate(); // validate all fields
81
- * const raw = item.toJSON(); // get raw data
82
- * ```
83
47
  */
84
48
  export declare class Item<T extends Record<string, unknown>> {
85
49
  private _data;
@@ -1 +1 @@
1
- {"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../../sdk/bdo/core/Item.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD;;GAEG;AACH,UAAU,OAAO;IACf,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAChD,WAAW,IAAI,OAAO,CAAC;IACvB,uBAAuB,CACrB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,oBAAoB,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB,CAAC,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IACrB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACpB,QAAQ,IAAI,oBAAoB,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB,CAAC,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IACrB,QAAQ,IAAI,oBAAoB,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,yBAAyB,CAAC,CAAC,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC;AAG/F,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B;;GAEG;AACH,KAAK,iBAAiB,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC/E,CAAC;AAEF;;GAEG;AACH,KAAK,iBAAiB,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC/E,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,CAClB,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,IAC5C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,GAC7B,iBAAiB,CAAC,SAAS,CAAC,GAC5B,iBAAiB,CAAC,SAAS,CAAC,GAC5B;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjD,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsD;gBAEzE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IA+E1C;;;OAGG;IACH,OAAO,CAAC,YAAY;IAgEpB;;OAEG;IACH,QAAQ,IAAI,oBAAoB;IAkChC;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC;CAGrB"}
1
+ {"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../../sdk/bdo/core/Item.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EACzB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD;;GAEG;AACH,UAAU,OAAO;IACf,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAChD,WAAW,IAAI,OAAO,CAAC;IACvB,uBAAuB,CACrB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,oBAAoB,CAAC;CACzB;AAGD,YAAY,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;AAE3G;;GAEG;AACH,KAAK,iBAAiB,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC/E,CAAC;AAEF;;GAEG;AACH,KAAK,iBAAiB,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC/E,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,CAClB,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,IAC5C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,GAC7B,iBAAiB,CAAC,SAAS,CAAC,GAC5B,iBAAiB,CAAC,SAAS,CAAC,GAC5B;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3B;;;;;;;;;;;;;;GAcG;AACH,qBAAa,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjD,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsD;gBAEzE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IA+E1C;;;OAGG;IACH,OAAO,CAAC,YAAY;IAwEpB;;OAEG;IACH,QAAQ,IAAI,oBAAoB;IAqChC;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC;CAGrB"}