awing-library 2.1.2-dev.6 → 2.1.2-dev.60

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 (69) hide show
  1. package/dist/esm/AWING/DataGrid/interface.d.ts +1 -1
  2. package/dist/esm/AWING/DatePicker/types.d.ts +4 -2
  3. package/dist/esm/AWING/DateRangePicker/Container.d.ts +1 -1
  4. package/dist/esm/AWING/DropDownTreeSelect/components/TreeViewSearch.d.ts +10 -0
  5. package/dist/esm/AWING/DropDownTreeSelect/components/utils.d.ts +1 -0
  6. package/dist/esm/AWING/DropDownTreeSelect/index.d.ts +10 -0
  7. package/dist/esm/AWING/DropDownTreeSelect/type.d.ts +5 -0
  8. package/dist/esm/AWING/DropDownTreeSelect/utils.d.ts +16 -0
  9. package/dist/esm/AWING/PageManagement/interface.d.ts +1 -1
  10. package/dist/esm/AWING/TableEditable/interface.d.ts +5 -1
  11. package/dist/esm/Commons/Components/ClassicBaseDrawer.d.ts +1 -1
  12. package/dist/esm/Commons/Components/ClassicDrawer.d.ts +6 -3
  13. package/dist/esm/Commons/Components/Drawer.d.ts +9 -1
  14. package/dist/esm/Features/NOTIFICATION/FilterNotification/Constants.d.ts +6 -0
  15. package/dist/esm/Features/NOTIFICATION/FilterNotification/Container.d.ts +2 -0
  16. package/dist/esm/Features/NOTIFICATION/FilterNotification/CreateOrEdit.d.ts +2 -0
  17. package/dist/esm/Features/NOTIFICATION/FilterNotification/Services.d.ts +35 -0
  18. package/dist/esm/Features/NOTIFICATION/FilterNotification/context.d.ts +11 -0
  19. package/dist/esm/Features/NOTIFICATION/FilterNotification/index.d.ts +8 -0
  20. package/dist/esm/Features/NOTIFICATION/FilterNotification/types.d.ts +49 -0
  21. package/dist/esm/Features/NOTIFICATION/FilterNotification/utils.d.ts +7 -0
  22. package/dist/esm/Features/NOTIFICATION/NotificationConfig/Services.d.ts +5 -2
  23. package/dist/esm/Features/NOTIFICATION/NotificationConfig/types.d.ts +1 -0
  24. package/dist/esm/Features/NOTIFICATION/ObjectFilter/Services.d.ts +5 -5
  25. package/dist/esm/Features/NOTIFICATION/ObjectFilter/context.d.ts +0 -2
  26. package/dist/esm/Features/NOTIFICATION/ObjectFilter/index.d.ts +0 -1
  27. package/dist/esm/Features/NOTIFICATION/ObjectFilter/types.d.ts +1 -0
  28. package/dist/esm/Features/NOTIFICATION/ObjectFilter/utils.d.ts +1 -1
  29. package/dist/esm/Features/NOTIFICATION/SubscriptionConfig/Services.d.ts +5 -2
  30. package/dist/esm/Features/NOTIFICATION/SubscriptionConfig/types.d.ts +9 -8
  31. package/dist/esm/Features/NOTIFICATION/Template/Services.d.ts +11 -4
  32. package/dist/esm/Features/NOTIFICATION/Template/context.d.ts +0 -3
  33. package/dist/esm/Features/NOTIFICATION/Template/hooks/useCreateOrEdit.d.ts +5 -5
  34. package/dist/esm/Features/NOTIFICATION/Template/index.d.ts +1 -3
  35. package/dist/esm/Features/NOTIFICATION/Template/types.d.ts +5 -5
  36. package/dist/esm/Features/NOTIFICATION/components/TestingTool/types.d.ts +2 -0
  37. package/dist/esm/Features/NOTIFICATION/components/TestingTool/utils.d.ts +1 -0
  38. package/dist/esm/Features/NOTIFICATION/index.d.ts +1 -0
  39. package/dist/esm/Features/NOTIFICATION/types.d.ts +14 -0
  40. package/dist/esm/Features/SYSTEM/Directory/Services.d.ts +3 -2
  41. package/dist/esm/Features/SYSTEM/Directory/index.d.ts +1 -1
  42. package/dist/esm/Features/SYSTEM/Group/Services.d.ts +8 -6
  43. package/dist/esm/Features/SYSTEM/Group/types.d.ts +1 -0
  44. package/dist/esm/Features/SYSTEM/Role/Services.d.ts +8 -9
  45. package/dist/esm/Features/SYSTEM/Role/types.d.ts +1 -0
  46. package/dist/esm/Features/SYSTEM/RoleTag/Services.d.ts +8 -9
  47. package/dist/esm/Features/SYSTEM/RoleTag/types.d.ts +1 -0
  48. package/dist/esm/Features/SYSTEM/Schema/Atoms.d.ts +18 -3
  49. package/dist/esm/Features/SYSTEM/Schema/Services.d.ts +5 -8
  50. package/dist/esm/Features/SYSTEM/Schema/types.d.ts +1 -0
  51. package/dist/esm/Features/SYSTEM/Sharing/Types.d.ts +9 -5
  52. package/dist/esm/Features/SYSTEM/User/Services.d.ts +5 -2
  53. package/dist/esm/Features/SYSTEM/User/types.d.ts +1 -0
  54. package/dist/esm/Features/SYSTEM/Workflow/CreateOrEdit.d.ts +1 -1
  55. package/dist/esm/Features/SYSTEM/Workflow/container.d.ts +4 -2
  56. package/dist/esm/Features/SYSTEM/Workflow/index.d.ts +5 -3
  57. package/dist/esm/Features/SYSTEM/Workflow/types.d.ts +1 -0
  58. package/dist/esm/Features/types.d.ts +18 -0
  59. package/dist/esm/Helpers/index.d.ts +1 -0
  60. package/dist/esm/Helpers/number.d.ts +2 -1
  61. package/dist/esm/Helpers/query.d.ts +161 -0
  62. package/dist/esm/index.js +5541 -4978
  63. package/dist/esm/translate/resources/en/translation.json +7 -5
  64. package/dist/esm/translate/resources/id/translation.json +7 -5
  65. package/dist/esm/translate/resources/ja/translation.json +7 -5
  66. package/dist/esm/translate/resources/th/translation.json +7 -5
  67. package/dist/esm/translate/resources/vi/translation.json +10 -6
  68. package/dist/index.d.ts +297 -124
  69. package/package.json +1 -1
@@ -11,3 +11,17 @@ export type ObjectDataInputOfNotificationConfigDetailInput = {
11
11
  key?: string | number;
12
12
  value?: NotificationConfigDetailInput;
13
13
  };
14
+ export type GraphQLQuery = {
15
+ id?: number;
16
+ name?: string;
17
+ baseObjectType?: string;
18
+ directoryPath?: string;
19
+ queryString?: string;
20
+ resultExpression?: string;
21
+ graphqlVariables?: {
22
+ id?: string;
23
+ name?: string;
24
+ type?: string;
25
+ value?: string;
26
+ };
27
+ };
@@ -1,12 +1,13 @@
1
1
  import { type DirectoryAddOrEditServices } from 'AWING/DirectoryForm';
2
2
  import { type DirectoryPermissionServices } from 'AWING/DirectoryPermission';
3
- import type { PagingQueryInput } from 'Features/types';
3
+ import type { CustomPagingRequestInput } from 'Features/types';
4
4
  import type { Directory } from './types';
5
5
  export type DirectoryServices = DirectoryAddOrEditServices & DirectoryPermissionServices & {
6
6
  /** Get Directories
7
7
  * @params PagingQueryInput<Directory> - Không truyền param sẽ lấy tất cả
8
8
  */
9
- getDirectories: (params?: PagingQueryInput<Directory> & {
9
+ getDirectories: (params?: {
10
+ input?: CustomPagingRequestInput;
10
11
  parentDirectoryId?: number;
11
12
  workspaceId?: number;
12
13
  depthFromRoot?: number;
@@ -6,7 +6,7 @@ export type DirectorySystemProps = DirectoryServices & {
6
6
  currentWorkspace?: CurrentWorkspace;
7
7
  objectTypeCodes?: ObjectTypeCode[];
8
8
  };
9
- declare const DirectorySystem: (props: DirectorySystemProps) => import("react/jsx-runtime").JSX.Element;
9
+ declare const DirectorySystem: (props: DirectorySystemProps) => import("react/jsx-runtime").JSX.Element | null;
10
10
  export * from './types';
11
11
  export * from './Services';
12
12
  export default DirectorySystem;
@@ -1,12 +1,14 @@
1
1
  import type { Group, GroupInput } from './types';
2
- import type { PagingQueryInput } from 'Features/types';
2
+ import type { CustomPagingRequestInput, PagingQueryInput } from 'Features/types';
3
3
  import type { RoleTag } from './types';
4
4
  import { User } from '../User/types';
5
5
  export type GroupServices = {
6
6
  /** Get RoleTags
7
7
  * @param p - PagingQueryInput<RoleTag> - Không truyền param sẽ lấy tất cả RoleTag
8
8
  */
9
- getRoleTags: (p?: PagingQueryInput<RoleTag>) => Promise<{
9
+ getRoleTags: (p?: {
10
+ input: CustomPagingRequestInput;
11
+ }) => Promise<{
10
12
  roleTags: RoleTag[];
11
13
  total: number;
12
14
  }>;
@@ -17,10 +19,9 @@ export type GroupServices = {
17
19
  users: User[];
18
20
  total: number;
19
21
  }>;
20
- /** Get Groups
21
- * @param p - PagingQueryInput<Group> - Không truyền param sẽ lấy tất cả Group
22
- */
23
- getGroups: (p?: PagingQueryInput<Group>) => Promise<{
22
+ getGroups: (p?: {
23
+ input: CustomPagingRequestInput;
24
+ }) => Promise<{
24
25
  groups: Group[];
25
26
  total: number;
26
27
  }>;
@@ -39,6 +40,7 @@ export type GroupServices = {
39
40
  updateGroup: (p: {
40
41
  input: GroupInput;
41
42
  id: number;
43
+ versionId?: number;
42
44
  }) => Promise<void>;
43
45
  /** Loading khi lấy dữ liệu */
44
46
  isLoading: boolean;
@@ -12,6 +12,7 @@ export type Group = {
12
12
  roleAuthens?: RoleAuthens[];
13
13
  workspaceId?: number;
14
14
  isSystem?: boolean;
15
+ versionId?: number;
15
16
  };
16
17
  export type SortInputGroup = SortInputType<Group>;
17
18
  export type GroupInput = {
@@ -1,17 +1,15 @@
1
- import type { PagingQueryInput } from 'Features/types';
1
+ import type { CustomPagingRequestInput } from 'Features/types';
2
2
  import type { Role, RoleTag, RoleInput } from './types';
3
3
  export type RoleServices = {
4
- /** Get Roles
5
- * @param p - PagingQueryInput<Role> - Không truyền param sẽ lấy tất cả Role
6
- */
7
- getRoles: (p?: PagingQueryInput<Role>) => Promise<{
4
+ getRoles: (p?: {
5
+ input: CustomPagingRequestInput;
6
+ }) => Promise<{
8
7
  roles: Role[];
9
8
  total: number;
10
9
  }>;
11
- /** Get RoleTags
12
- * @param p - PagingQueryInput<RoleTag> - Không truyền param sẽ lấy tất cả RoleTag
13
- */
14
- getRoleTags: (p?: PagingQueryInput<RoleTag>) => Promise<{
10
+ getRoleTags: (p?: {
11
+ input: CustomPagingRequestInput;
12
+ }) => Promise<{
15
13
  roleTags: RoleTag[];
16
14
  total: number;
17
15
  }>;
@@ -30,5 +28,6 @@ export type RoleServices = {
30
28
  updateRole: (p: {
31
29
  input: RoleInput;
32
30
  id: number;
31
+ versionId?: number;
33
32
  }) => Promise<void>;
34
33
  };
@@ -6,6 +6,7 @@ export type Role = {
6
6
  name?: string;
7
7
  roleTags?: Array<RoleTag>;
8
8
  workspaceId?: number;
9
+ versionId?: number;
9
10
  };
10
11
  export type RoleTag = IRoleTag;
11
12
  export type SortInput = SortInputType<Role>;
@@ -1,17 +1,15 @@
1
- import type { PagingQueryInput } from 'Features/types';
1
+ import type { CustomPagingRequestInput } from 'Features/types';
2
2
  import type { RoleTag, Role, RoleTagInput } from './types';
3
3
  export type RoleTagServices = {
4
- /** Get Roles
5
- * @param p - PagingQueryInput<Role> - Không truyền param sẽ lấy tất cả Role
6
- */
7
- getRoles: (p?: PagingQueryInput<Role>) => Promise<{
4
+ getRoles: (p?: {
5
+ input: CustomPagingRequestInput;
6
+ }) => Promise<{
8
7
  roles: Role[];
9
8
  total: number;
10
9
  }>;
11
- /** Get RoleTags
12
- * @param p - PagingQueryInput<RoleTag> - Không truyền param sẽ lấy tất cả RoleTag
13
- */
14
- getRoleTags: (p?: PagingQueryInput<RoleTag>) => Promise<{
10
+ getRoleTags: (p?: {
11
+ input: CustomPagingRequestInput;
12
+ }) => Promise<{
15
13
  roleTags: RoleTag[];
16
14
  total: number;
17
15
  }>;
@@ -30,5 +28,6 @@ export type RoleTagServices = {
30
28
  updateRoleTag: (p: {
31
29
  input: RoleTagInput;
32
30
  id: number;
31
+ versionId?: number;
33
32
  }) => Promise<void>;
34
33
  };
@@ -5,6 +5,7 @@ export type RoleTag = {
5
5
  id?: number;
6
6
  name?: string;
7
7
  workspaceId?: number;
8
+ versionId?: number;
8
9
  };
9
10
  export type Role = IRole;
10
11
  export type RoleOptions = {
@@ -6,9 +6,24 @@ export declare const fullFieldsState: import("jotai").PrimitiveAtom<ObjectDefini
6
6
  export declare const objectTypeCodesState: import("jotai").PrimitiveAtom<ObjectTypeCode[]> & {
7
7
  init: ObjectTypeCode[];
8
8
  };
9
- export declare const rootSchemasState: import("jotai").PrimitiveAtom<Schema[]> & {
10
- init: Schema[];
11
- };
9
+ /**
10
+ * Consolidated schema state - contains both regular and root schemas
11
+ * - rootSchemas: The root/default schemas from the workspace
12
+ * - regularSchemas: The regular schemas retrieved from API
13
+ * - totalCount: The total count of regular schemas (for pagination)
14
+ */
15
+ export declare const schemasState: import("jotai").PrimitiveAtom<{
16
+ rootSchemas: Schema[];
17
+ regularSchemas: Schema[];
18
+ totalCount: number;
19
+ }> & {
20
+ init: {
21
+ rootSchemas: Schema[];
22
+ regularSchemas: Schema[];
23
+ totalCount: number;
24
+ };
25
+ };
26
+ export declare const rootSchemasState: import("jotai").WritableAtom<Schema[], [update: Schema[]], void>;
12
27
  export declare const nameState: import("jotai").PrimitiveAtom<string> & {
13
28
  init: string;
14
29
  };
@@ -1,16 +1,12 @@
1
- import type { PagingQueryInput } from 'Features/types';
1
+ import type { CustomPagingRequestInput, PagingQueryInput } from 'Features/types';
2
2
  import type { Schema, ObjectDefinition, SchemaInput } from './types';
3
3
  export type SchemaServices = {
4
- /** Get Schemas
5
- * @param p - PagingQueryInput<Schema> - Không truyền param sẽ lấy tất cả Schema
6
- */
7
- getSchemas: (p?: PagingQueryInput<Schema>) => Promise<{
4
+ getSchemas: (p?: {
5
+ input: CustomPagingRequestInput;
6
+ }) => Promise<{
8
7
  items: Schema[];
9
8
  total: number;
10
9
  }>;
11
- /** Get Schemas
12
- * @param p - PagingQueryInput<Schema> - Không truyền param sẽ lấy tất cả Schema
13
- */
14
10
  getSchemaById: (p: {
15
11
  id: number;
16
12
  }) => Promise<Schema>;
@@ -33,5 +29,6 @@ export type SchemaServices = {
33
29
  updateSchema: (p: {
34
30
  input: SchemaInput;
35
31
  id: number;
32
+ versionId?: number;
36
33
  }) => Promise<void>;
37
34
  };
@@ -23,6 +23,7 @@ export type Schema = {
23
23
  schemaObjectDefinitions?: Array<SchemaObjectDefinition>;
24
24
  workspaceId?: number;
25
25
  isRoot?: boolean;
26
+ versionId?: number;
26
27
  };
27
28
  export type WorkspaceDefaultSchema = {
28
29
  schemaId?: number;
@@ -1,4 +1,4 @@
1
- import { PagingQueryInput } from 'Features/types';
1
+ import { CustomPagingRequestInput } from 'Features/types';
2
2
  import { Schema, SchemaObjectDefinition } from '../Schema';
3
3
  import { Workspace } from '../types';
4
4
  import { Atom } from 'jotai';
@@ -20,11 +20,11 @@ export type Sharing = {
20
20
  objectFilterId: number;
21
21
  schema?: Schema;
22
22
  schemaId?: number;
23
- sharingWorkspaces: Array<SharingWorkspace>;
24
- totalTargetWorkspace: number;
23
+ sharingWorkspaces?: Array<SharingWorkspace>;
25
24
  workspaceId: number;
26
25
  folderSourceDirectoryId?: number;
27
26
  key?: string;
27
+ versionId?: number;
28
28
  };
29
29
  export type ObjectFilter = {
30
30
  configType?: string;
@@ -94,6 +94,7 @@ export type SharingInput = {
94
94
  folderSourceDirectoryId?: number;
95
95
  targetWorkspaceId?: number;
96
96
  sharingWorkspaces?: Array<ObjectDataInputOfSharingWorkspaceInput>;
97
+ versionId?: number;
97
98
  };
98
99
  export type ParamConfiguration = {
99
100
  id: number;
@@ -150,9 +151,11 @@ export interface SharingProps {
150
151
  updateWorkspaceSharing: (p: {
151
152
  id: number;
152
153
  input: SharingInput;
154
+ versionId?: number;
153
155
  }) => Promise<void>;
154
156
  getSharings: (p?: {
155
- GetPagingInWorkspaceRequestGqlInput: GetPagingInWorkspaceRequestGqlInput;
157
+ input: CustomPagingRequestInput;
158
+ objectTypeCode?: string;
156
159
  }) => Promise<{
157
160
  sharings: Sharing[];
158
161
  total: number;
@@ -166,7 +169,8 @@ export interface SharingProps {
166
169
  id: number;
167
170
  }) => Promise<void>;
168
171
  getObjectFilters: () => Promise<ObjectFilter[]>;
169
- getDirectories: (params?: PagingQueryInput<Directory> & {
172
+ getDirectories: (params?: {
173
+ input?: CustomPagingRequestInput;
170
174
  parentDirectoryId?: number;
171
175
  workspaceId?: number;
172
176
  depthFromRoot?: number;
@@ -1,4 +1,4 @@
1
- import type { PagingQueryInput } from 'Features/types';
1
+ import type { CustomPagingRequestInput, PagingQueryInput } from 'Features/types';
2
2
  import type { UserInput, RoleTag, User, Group } from './types';
3
3
  export type UserServices = {
4
4
  /** Get RoleTags
@@ -11,7 +11,9 @@ export type UserServices = {
11
11
  /** Get Users
12
12
  * @param p - PagingQueryInput<Users> - Không truyền param sẽ lấy tất cả Users
13
13
  */
14
- getUsers: (p?: PagingQueryInput<User>) => Promise<{
14
+ getUsers: (p?: {
15
+ input: CustomPagingRequestInput;
16
+ }) => Promise<{
15
17
  users: User[];
16
18
  total: number;
17
19
  }>;
@@ -26,6 +28,7 @@ export type UserServices = {
26
28
  updateUser: (p: {
27
29
  user: UserInput;
28
30
  id: number;
31
+ versionId?: number;
29
32
  }) => Promise<void>;
30
33
  /** Delete User by ID */
31
34
  deleteUser: (p: {
@@ -50,4 +50,5 @@ export type User = {
50
50
  groups?: number[];
51
51
  roleAuthens?: Array<RoleAuthens>;
52
52
  username?: string;
53
+ versionId?: number;
53
54
  };
@@ -3,7 +3,7 @@ import { ObjectInputType } from 'Features/types';
3
3
  type CreateOrEditProps = {
4
4
  getById: (id: number) => Promise<Workflow>;
5
5
  create: (workflow: ObjectInputType<Workflow>) => Promise<void>;
6
- update: (id: number, workflow: ObjectInputType<Workflow>) => Promise<void>;
6
+ update: (id: number, workflow: ObjectInputType<Workflow>, versionId?: number) => Promise<void>;
7
7
  objectTypeCodeMap: {
8
8
  value: string;
9
9
  label: string;
@@ -1,7 +1,9 @@
1
+ import { CustomPagingRequestInput, PagingType } from 'Features/types';
1
2
  import { Workflow } from './types';
2
- import { PagingQueryInput, PagingType } from 'Features/types';
3
3
  type WorkflowContainerProps = {
4
- getPaging: (queryInput: PagingQueryInput<Workflow>) => Promise<PagingType<Workflow>>;
4
+ getPaging: (queryInput: {
5
+ input: CustomPagingRequestInput;
6
+ }) => Promise<PagingType<Workflow>>;
5
7
  remove: (id: number) => Promise<void>;
6
8
  };
7
9
  declare const WorkflowContainer: (props: WorkflowContainerProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,10 +1,12 @@
1
+ import { CustomPagingRequestInput, ObjectInputType, PagingType } from 'Features/types';
1
2
  import { Workflow } from './types';
2
- import { ObjectInputType, PagingQueryInput, PagingType } from 'Features/types';
3
3
  type WorkflowFeatureProps = {
4
4
  getById: (id: number) => Promise<Workflow>;
5
- getPaging: (queryInput: PagingQueryInput<Workflow>) => Promise<PagingType<Workflow>>;
5
+ getPaging: (queryInput: {
6
+ input: CustomPagingRequestInput;
7
+ }) => Promise<PagingType<Workflow>>;
6
8
  create: (workflow: ObjectInputType<Workflow>) => Promise<void>;
7
- update: (id: number, workflow: ObjectInputType<Workflow>) => Promise<void>;
9
+ update: (id: number, workflow: ObjectInputType<Workflow>, versionId?: number) => Promise<void>;
8
10
  remove: (id: number) => Promise<void>;
9
11
  objectTypeCodeMap: {
10
12
  value: string;
@@ -6,6 +6,7 @@ export type Workflow = {
6
6
  description?: string;
7
7
  workflowMatrices: Array<WorkflowMatrix>;
8
8
  workflowStates: Array<WorkflowState>;
9
+ versionId?: number;
9
10
  };
10
11
  export type WorkflowMatrix = {
11
12
  id: number;
@@ -63,3 +63,21 @@ export type EnumTypeConvert = {
63
63
  key: string;
64
64
  value: string | number;
65
65
  };
66
+ export declare enum Direction {
67
+ Asc = "ASC",
68
+ Desc = "DESC"
69
+ }
70
+ export type SortingTokenInput = {
71
+ direction: Direction;
72
+ field?: string;
73
+ };
74
+ export type WhereConditionInput = {
75
+ condition?: string;
76
+ params?: string[];
77
+ };
78
+ export type CustomPagingRequestInput = {
79
+ order?: SortingTokenInput[];
80
+ skip?: number;
81
+ take?: number;
82
+ where?: WhereConditionInput;
83
+ };
@@ -4,3 +4,4 @@ export * from './datetime';
4
4
  export * from './number';
5
5
  export * from './text';
6
6
  export * from './validation';
7
+ export * from './query';
@@ -2,6 +2,7 @@
2
2
  * Xử lý các thao tác số học và toán học một cách tiện lợi.
3
3
  * Hỗ trợ các phép toán phức tạp hoặc tối ưu hóa các logic tính toán thường dùng.
4
4
  */
5
- export declare function formatNumber(num: number | bigint | string | undefined): string;
5
+ export type Locale = 'vi' | 'en' | 'ja' | 'th' | 'id';
6
+ export declare function formatNumberByLocale(value?: number | bigint, lang?: string, locale?: string): string;
6
7
  export declare function roundDecimalNumber(number: any): string | null;
7
8
  export declare function WMAPEcalculator(data: any): number | "∞";
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Available filter operation types
3
+ */
4
+ export declare enum FilterOperationType {
5
+ EQ = "eq",// Equal
6
+ CONTAINS = "contains",// Contains substring
7
+ STARTSWITH = "startswith",// Starts with
8
+ ENDSWITH = "endswith",// Ends with
9
+ GT = "gt",// Greater than
10
+ GTE = "gte",// Greater than or equal
11
+ LT = "lt",// Less than
12
+ LTE = "lte",// Less than or equal
13
+ IN = "in",// In array
14
+ BETWEEN = "between",// Between two values
15
+ NE = "ne",// Not equal
16
+ NOTCONTAINS = "notcontains",// Does not contain substring
17
+ NOTIN = "notin",// Not in array
18
+ CUSTOM = "custom"
19
+ }
20
+ /**
21
+ * Logical operators for combining filter conditions
22
+ */
23
+ export declare enum LogicalOperatorType {
24
+ AND = "and",
25
+ OR = "or",
26
+ NOT = "not"
27
+ }
28
+ /**
29
+ * Structure for a single filter item
30
+ */
31
+ export interface FilterItem {
32
+ key: string;
33
+ value: any;
34
+ type: FilterOperationType | string;
35
+ isArray?: boolean;
36
+ }
37
+ /**
38
+ * Structure for a filter group that can contain nested conditions
39
+ */
40
+ export interface FilterGroup {
41
+ operator: LogicalOperatorType;
42
+ filters: Array<FilterItem | FilterGroup>;
43
+ }
44
+ /**
45
+ * Filter expression can be either a single item or a group
46
+ */
47
+ export type FilterExpression = FilterItem | FilterGroup;
48
+ /**
49
+ * Converts an array of filter objects to a string condition
50
+ * @param filters - Array of objects with key, value, and type properties
51
+ * @param defaultOperator - Default logical operator to use when combining filters (AND or OR)
52
+ * @returns Object with a 'condition' property containing the string condition and optional 'params' array
53
+ */
54
+ export declare function convertArrayFiltersToCondition(filters: Array<FilterItem>, defaultOperator?: LogicalOperatorType): {
55
+ condition: string;
56
+ params?: string[];
57
+ } | null;
58
+ /**
59
+ * Converts a complex filter expression to a string condition
60
+ * @param filterExpression - Filter expression (can be nested with logical operators)
61
+ * @returns Object with a 'condition' property containing the string condition and optional 'params' array
62
+ */
63
+ export declare function convertFilterExpressionToCondition(filterExpression: FilterExpression): {
64
+ condition: string;
65
+ params?: string[];
66
+ } | null;
67
+ /**
68
+ * Usage examples:
69
+ * * Simple filter with AND:
70
+ * ```typescript
71
+ * const filters: FilterItem[] = [
72
+ * { key: 'name', value: 'John', type: FilterOperationType.CONTAINS },
73
+ * { key: 'age', value: 30, type: FilterOperationType.GTE }
74
+ * ];
75
+ * const result = convertArrayFiltersToCondition(filters); // name.Contains("John") && age>=30
76
+ * ```
77
+ *
78
+ * Simple filter with OR:
79
+ * ```typescript
80
+ * const filters: FilterItem[] = [
81
+ * { key: 'status', value: 'active', type: FilterOperationType.EQ },
82
+ * { key: 'status', value: 'pending', type: FilterOperationType.EQ }
83
+ * ];
84
+ * const result = convertArrayFiltersToCondition(filters, LogicalOperatorType.OR); // status="active" || status="pending"
85
+ * ```
86
+ *
87
+ * Filter with isArray property:
88
+ * ```typescript
89
+ * const filters: FilterItem[] = [
90
+ * { key: 'objectTypeCode', value: 'OBJECTFILTER', type: FilterOperationType.EQ, isArray: false },
91
+ * { key: 'name', value: 'Long', type: FilterOperationType.EQ, isArray: true },
92
+ * ];
93
+ * const result = convertArrayFiltersToCondition(filters);
94
+ * // Returns: { condition: 'objectTypeCode="OBJECTFILTER" && @0.Contains(name)', params: ["Long"] }
95
+ * ```
96
+ *
97
+ * Filter with isArray and array values:
98
+ * ```typescript
99
+ * const filters: FilterItem[] = [
100
+ * { key: 'id', value: [1, 2, 3], type: FilterOperationType.EQ, isArray: true },
101
+ * { key: 'names', value: ['name1', 'name2', 'name3'], type: FilterOperationType.EQ, isArray: true },
102
+ * ];
103
+ * const result = convertArrayFiltersToCondition(filters);
104
+ * // Returns: { condition: '@0.Contains(id) && @1.Contains(names)', params: ["1,2,3", "name1,name2,name3"] }
105
+ * ```
106
+ *
107
+ * Complex nested filter:
108
+ * ```typescript
109
+ * const complexFilter: FilterGroup = {
110
+ * operator: LogicalOperatorType.AND,
111
+ * filters: [
112
+ * { key: 'name', value: 'John', type: FilterOperationType.CONTAINS },
113
+ * {
114
+ * operator: LogicalOperatorType.OR,
115
+ * filters: [
116
+ * { key: 'age', value: 30, type: FilterOperationType.GTE },
117
+ * { key: 'vip', value: true, type: FilterOperationType.EQ }
118
+ * ]
119
+ * },
120
+ * {
121
+ * operator: LogicalOperatorType.NOT,
122
+ * filters: [
123
+ * { key: 'status', value: 'inactive', type: FilterOperationType.EQ }
124
+ * ]
125
+ * }
126
+ * ]
127
+ * };
128
+ * const result = convertFilterExpressionToCondition(complexFilter);
129
+ * // name.Contains("John") && (age>=30 || vip="true") && !(status="inactive")
130
+ * ```
131
+ *
132
+ * Complex filter with parameterized values:
133
+ * ```typescript
134
+ * const complexFilter: FilterGroup = {
135
+ * operator: LogicalOperatorType.AND,
136
+ * filters: [
137
+ * { key: 'objectTypeCode', value: 'OBJECTFILTER', type: FilterOperationType.EQ },
138
+ * { key: 'name', value: 'Long', type: FilterOperationType.EQ, isArray: true }
139
+ * ]
140
+ * };
141
+ * const result = convertFilterExpressionToCondition(complexFilter);
142
+ * // Returns: { condition: 'objectTypeCode="OBJECTFILTER" && @0.Contains(name)', params: ["Long"] }
143
+ * ```
144
+ *
145
+ * Complex filter with array values:
146
+ * ```typescript
147
+ * const complexFilter: FilterGroup = {
148
+ * operator: LogicalOperatorType.AND,
149
+ * filters: [
150
+ * { key: 'objectTypeCode', value: 'OBJECTFILTER', type: FilterOperationType.EQ },
151
+ * { key: 'id', value: [1, 2], type: FilterOperationType.EQ, isArray: true },
152
+ * { key: 'name', value: ['name1', 'name2'], type: FilterOperationType.EQ, isArray: true }
153
+ * ]
154
+ * };
155
+ * const result = convertFilterExpressionToCondition(complexFilter);
156
+ * // Returns: {
157
+ * // condition: 'objectTypeCode="OBJECTFILTER" && @0.Contains(id) && @1.Contains(name)',
158
+ * // params: ["1,2", "name1,name2"]
159
+ * // }
160
+ * ```
161
+ */