remult 0.14.7 → 0.14.8

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 (152) hide show
  1. package/LICENSE +21 -0
  2. package/esm/assign.d.ts +1 -0
  3. package/esm/assign.js +5 -0
  4. package/esm/classType.d.ts +3 -0
  5. package/esm/classType.js +1 -0
  6. package/esm/graphql.d.ts +5 -0
  7. package/esm/graphql.js +102 -0
  8. package/esm/index.d.ts +36 -0
  9. package/esm/index.js +30 -0
  10. package/esm/inputTypes.d.ts +9 -0
  11. package/esm/inputTypes.js +9 -0
  12. package/esm/postgres/index.d.ts +2 -0
  13. package/esm/postgres/index.js +2 -0
  14. package/esm/postgres/postgres-data-provider.d.ts +28 -0
  15. package/esm/postgres/postgres-data-provider.js +97 -0
  16. package/esm/postgres/schema-builder.d.ts +15 -0
  17. package/esm/postgres/schema-builder.js +128 -0
  18. package/esm/remult-express.d.ts +5 -0
  19. package/esm/remult-express.js +16 -0
  20. package/esm/remult-knex/index.d.ts +51 -0
  21. package/esm/remult-knex/index.js +381 -0
  22. package/esm/remult-middleware.d.ts +2 -0
  23. package/esm/remult-middleware.js +63 -0
  24. package/esm/remult-mongo.d.ts +9 -0
  25. package/esm/remult-mongo.js +220 -0
  26. package/esm/server/JsonEntityFileStorage.d.ts +7 -0
  27. package/esm/server/JsonEntityFileStorage.js +20 -0
  28. package/esm/server/expressBridge.d.ts +140 -0
  29. package/esm/server/expressBridge.js +668 -0
  30. package/esm/server/index.d.ts +4 -0
  31. package/esm/server/index.js +4 -0
  32. package/esm/server/register-actions-on-server.d.ts +3 -0
  33. package/esm/server/register-actions-on-server.js +24 -0
  34. package/esm/server/register-entities-on-server.d.ts +3 -0
  35. package/esm/server/register-entities-on-server.js +15 -0
  36. package/esm/src/__EntityValueProvider.d.ts +10 -0
  37. package/esm/src/__EntityValueProvider.js +1 -0
  38. package/esm/src/__RowsOfDataForTesting.d.ts +3 -0
  39. package/esm/src/__RowsOfDataForTesting.js +1 -0
  40. package/esm/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +5 -0
  41. package/esm/src/backend-tests/backend-database-test-setup.backend-spec.js +113 -0
  42. package/esm/src/backend-tests/my-test.backend-spec.d.ts +1 -0
  43. package/esm/src/backend-tests/my-test.backend-spec.js +49 -0
  44. package/esm/src/column-interfaces.d.ts +95 -0
  45. package/esm/src/column-interfaces.js +7 -0
  46. package/esm/src/column.d.ts +49 -0
  47. package/esm/src/column.js +133 -0
  48. package/esm/src/context.d.ts +124 -0
  49. package/esm/src/context.js +285 -0
  50. package/esm/src/data-api.d.ts +33 -0
  51. package/esm/src/data-api.js +204 -0
  52. package/esm/src/data-interfaces.d.ts +37 -0
  53. package/esm/src/data-interfaces.js +12 -0
  54. package/esm/src/data-providers/array-entity-data-provider.d.ts +22 -0
  55. package/esm/src/data-providers/array-entity-data-provider.js +264 -0
  56. package/esm/src/data-providers/in-memory-database.d.ts +9 -0
  57. package/esm/src/data-providers/in-memory-database.js +16 -0
  58. package/esm/src/data-providers/json-data-provider.d.ts +12 -0
  59. package/esm/src/data-providers/json-data-provider.js +52 -0
  60. package/esm/src/data-providers/rest-data-provider.d.ts +35 -0
  61. package/esm/src/data-providers/rest-data-provider.js +188 -0
  62. package/esm/src/data-providers/sql-database.d.ts +16 -0
  63. package/esm/src/data-providers/sql-database.js +261 -0
  64. package/esm/src/data-providers/web-sql-data-provider.d.ts +18 -0
  65. package/esm/src/data-providers/web-sql-data-provider.js +121 -0
  66. package/esm/src/entity.d.ts +82 -0
  67. package/esm/src/entity.js +1 -0
  68. package/esm/src/filter/filter-consumer-bridge-to-sql-request.d.ts +50 -0
  69. package/esm/src/filter/filter-consumer-bridge-to-sql-request.js +139 -0
  70. package/esm/src/filter/filter-consumer-bridge-to-url-builder.d.ts +1 -0
  71. package/esm/src/filter/filter-consumer-bridge-to-url-builder.js +1 -0
  72. package/esm/src/filter/filter-interfaces.d.ts +85 -0
  73. package/esm/src/filter/filter-interfaces.js +467 -0
  74. package/esm/src/id-entity.d.ts +4 -0
  75. package/esm/src/id-entity.js +8 -0
  76. package/esm/src/remult3/RepositoryImplementation.d.ts +326 -0
  77. package/esm/src/remult3/RepositoryImplementation.js +1806 -0
  78. package/esm/src/remult3/index.d.ts +2 -0
  79. package/esm/src/remult3/index.js +2 -0
  80. package/esm/src/remult3/remult3.d.ts +312 -0
  81. package/esm/src/remult3/remult3.js +1 -0
  82. package/esm/src/server-action.d.ts +70 -0
  83. package/esm/src/server-action.js +365 -0
  84. package/esm/src/shared-tests/db-tests-setup.d.ts +23 -0
  85. package/esm/src/shared-tests/db-tests-setup.js +66 -0
  86. package/esm/src/shared-tests/db-tests.db-tests.d.ts +26 -0
  87. package/esm/src/shared-tests/db-tests.db-tests.js +723 -0
  88. package/esm/src/shared-tests/deleteAll.d.ts +2 -0
  89. package/esm/src/shared-tests/deleteAll.js +4 -0
  90. package/esm/src/shared-tests/entityWithValidations.d.ts +14 -0
  91. package/esm/src/shared-tests/entityWithValidations.js +53 -0
  92. package/esm/src/shared-tests/index.d.ts +4 -0
  93. package/esm/src/shared-tests/index.js +4 -0
  94. package/esm/src/shared-tests/test-custom-id-column.spec.d.ts +1 -0
  95. package/esm/src/shared-tests/test-custom-id-column.spec.js +62 -0
  96. package/esm/src/shared-tests/test-special-value.spec.d.ts +10 -0
  97. package/esm/src/shared-tests/test-special-value.spec.js +88 -0
  98. package/esm/src/shared-tests/test-update-with-null.spec.d.ts +1 -0
  99. package/esm/src/shared-tests/test-update-with-null.spec.js +47 -0
  100. package/esm/src/sort.d.ts +15 -0
  101. package/esm/src/sort.js +82 -0
  102. package/esm/src/sql-command.d.ts +15 -0
  103. package/esm/src/sql-command.js +1 -0
  104. package/esm/src/tests/Done.d.ts +5 -0
  105. package/esm/src/tests/Done.js +11 -0
  106. package/esm/src/tests/TestDataApiResponse.d.ts +10 -0
  107. package/esm/src/tests/TestDataApiResponse.js +22 -0
  108. package/esm/src/tests/c.d.ts +8 -0
  109. package/esm/src/tests/c.js +22 -0
  110. package/esm/src/tests/createData.d.ts +7 -0
  111. package/esm/src/tests/createData.js +22 -0
  112. package/esm/src/tests/d.d.ts +6 -0
  113. package/esm/src/tests/d.js +19 -0
  114. package/esm/src/tests/dWithPrefilter.d.ts +7 -0
  115. package/esm/src/tests/dWithPrefilter.js +32 -0
  116. package/esm/src/tests/entityForCustomFilter.d.ts +16 -0
  117. package/esm/src/tests/entityForCustomFilter.js +44 -0
  118. package/esm/src/tests/entityWithValidationsOnColumn.d.ts +5 -0
  119. package/esm/src/tests/entityWithValidationsOnColumn.js +21 -0
  120. package/esm/src/tests/frontend-database-tests-setup.spec.d.ts +4 -0
  121. package/esm/src/tests/frontend-database-tests-setup.spec.js +38 -0
  122. package/esm/src/tests/h.d.ts +6 -0
  123. package/esm/src/tests/h.js +35 -0
  124. package/esm/src/tests/remult-3-entities.d.ts +23 -0
  125. package/esm/src/tests/remult-3-entities.js +72 -0
  126. package/esm/src/tests/tasks.d.ts +6 -0
  127. package/esm/src/tests/tasks.js +24 -0
  128. package/esm/src/tests/testHelper.spec.d.ts +34 -0
  129. package/esm/src/tests/testHelper.spec.js +217 -0
  130. package/esm/src/tests/testModel/models.d.ts +16 -0
  131. package/esm/src/tests/testModel/models.js +31 -0
  132. package/esm/src/validators.d.ts +14 -0
  133. package/esm/src/validators.js +33 -0
  134. package/esm/urlBuilder.d.ts +6 -0
  135. package/esm/urlBuilder.js +19 -0
  136. package/esm/valueConverters.d.ts +12 -0
  137. package/esm/valueConverters.js +169 -0
  138. package/index.d.ts +1 -0
  139. package/index.js +1 -0
  140. package/package.json +22 -1
  141. package/postgres/index.d.ts +1 -0
  142. package/postgres/index.js +1 -0
  143. package/postgres/postgres-data-provider.d.ts +1 -13
  144. package/postgres/postgres-data-provider.js +28 -262
  145. package/postgres/schema-builder.d.ts +15 -0
  146. package/postgres/schema-builder.js +270 -0
  147. package/readme.md +68 -30
  148. package/src/data-providers/web-sql-data-provider.js +4 -3
  149. package/src/entity.d.ts +9 -2
  150. package/src/remult3/RepositoryImplementation.js +11 -3
  151. package/src/shared-tests/test-update-with-null.spec.js +38 -0
  152. package/valueConverters.js +4 -0
@@ -0,0 +1,326 @@
1
+ import { FieldMetadata, FieldOptions, ValueConverter, ValueListItem } from "../column-interfaces";
2
+ import { EntityOptions } from "../entity";
3
+ import { LookupColumn } from '../column';
4
+ import { EntityMetadata, FieldRef, FieldsRef, EntityFilter, FindOptions, Repository, EntityRef, QueryOptions, QueryResult, EntityOrderBy, FieldsMetadata, IdMetadata, FindFirstOptionsBase, FindFirstOptions, OmitEB, Subscribable, ControllerRef } from "./remult3";
5
+ import { ClassType } from "../../classType";
6
+ import { Remult, Unobserve } from "../context";
7
+ import { entityEventListener } from "../__EntityValueProvider";
8
+ import { DataProvider, EntityDataProvider } from "../data-interfaces";
9
+ import { RefSubscriber } from ".";
10
+ export declare class RepositoryImplementation<entityType> implements Repository<entityType> {
11
+ private entity;
12
+ private remult;
13
+ private dataProvider;
14
+ createAfterFilter(orderBy: EntityOrderBy<entityType>, lastRow: entityType): Promise<EntityFilter<entityType>>;
15
+ private _info;
16
+ private __edp;
17
+ private get edp();
18
+ constructor(entity: ClassType<entityType>, remult: Remult, dataProvider: DataProvider);
19
+ idCache: Map<any, any>;
20
+ getCachedById(id: any): entityType;
21
+ getCachedByIdAsync(id: any): Promise<entityType>;
22
+ addToCache(item: entityType): void;
23
+ get metadata(): EntityMetadata<entityType>;
24
+ listeners: entityEventListener<entityType>[];
25
+ addEventListener(listener: entityEventListener<entityType>): () => void;
26
+ query(options?: QueryOptions<entityType>): QueryResult<entityType>;
27
+ getEntityRef(entity: entityType): EntityRef<entityType>;
28
+ delete(id: (entityType extends {
29
+ id?: number;
30
+ } ? number : entityType extends {
31
+ id?: string;
32
+ } ? string : (string | number))): Promise<void>;
33
+ delete(item: entityType): Promise<void>;
34
+ insert(item: Partial<OmitEB<entityType>>[]): Promise<entityType[]>;
35
+ insert(item: Partial<OmitEB<entityType>>): Promise<entityType>;
36
+ update(id: (entityType extends {
37
+ id?: number;
38
+ } ? number : entityType extends {
39
+ id?: string;
40
+ } ? string : (string | number)), entity: Partial<OmitEB<entityType>>): Promise<entityType>;
41
+ private getRefForExistingRow;
42
+ save(item: Partial<OmitEB<entityType>>[]): Promise<entityType[]>;
43
+ save(item: Partial<OmitEB<entityType>>): Promise<entityType>;
44
+ find(options: FindOptions<entityType>): Promise<entityType[]>;
45
+ private mapRawDataToResult;
46
+ count(where?: EntityFilter<entityType>): Promise<number>;
47
+ private cache;
48
+ findFirst(where?: EntityFilter<entityType>, options?: FindFirstOptions<entityType>): Promise<entityType>;
49
+ private fieldsOf;
50
+ create(item?: Partial<OmitEB<entityType>>): entityType;
51
+ fromJson(json: any, newRow?: boolean): Promise<entityType>;
52
+ findId(id: any, options?: FindFirstOptionsBase<entityType>): Promise<entityType>;
53
+ private translateWhereToFilter;
54
+ }
55
+ export declare function __updateEntityBasedOnWhere<T>(entityDefs: EntityMetadata<T>, where: EntityFilter<T>, r: T): void;
56
+ export declare type EntityOptionsFactory = (remult: Remult) => EntityOptions;
57
+ export declare const entityInfo: unique symbol;
58
+ export declare const entityInfo_key: unique symbol;
59
+ export declare function getEntitySettings<T>(entity: ClassType<T>, throwError?: boolean): EntityOptionsFactory;
60
+ export declare function getEntityKey(entity: ClassType<any>): string;
61
+ export declare const columnsOfType: Map<any, columnInfo[]>;
62
+ export declare function createOldEntity<T>(entity: ClassType<T>, remult: Remult): EntityFullInfo<T>;
63
+ declare abstract class rowHelperBase<T> {
64
+ protected columnsInfo: FieldOptions[];
65
+ protected instance: T;
66
+ protected remult: Remult;
67
+ _error: string;
68
+ get error(): string;
69
+ set error(val: string);
70
+ constructor(columnsInfo: FieldOptions[], instance: T, remult: Remult);
71
+ _subscribers: SubscribableImp;
72
+ subscribe(listener: RefSubscriber): Unobserve;
73
+ _isLoading: boolean;
74
+ initSubscribers(): void;
75
+ get isLoading(): boolean;
76
+ set isLoading(val: boolean);
77
+ lookups: Map<string, LookupColumn<any>>;
78
+ waitLoad(): Promise<void>;
79
+ errors: {
80
+ [key: string]: string;
81
+ };
82
+ protected __assertValidity(): void;
83
+ abstract get fields(): FieldsRef<T>;
84
+ catchSaveErrors(err: any): any;
85
+ __clearErrorsAndReportChanged(): void;
86
+ _reportChangedToEntityAndFields(): void;
87
+ hasErrors(): boolean;
88
+ copyDataToObject(): any;
89
+ originalValues: any;
90
+ saveOriginalData(): void;
91
+ validate(): Promise<boolean>;
92
+ __validateEntity(): Promise<void>;
93
+ __performColumnAndEntityValidations(): Promise<void>;
94
+ toApiJson(): any;
95
+ _updateEntityBasedOnApi(body: any): Promise<void>;
96
+ }
97
+ export declare class rowHelperImplementation<T> extends rowHelperBase<T> implements EntityRef<T> {
98
+ private info;
99
+ repository: RepositoryImplementation<T>;
100
+ private edp;
101
+ private _isNew;
102
+ constructor(info: EntityFullInfo<T>, instance: T, repository: RepositoryImplementation<T>, edp: EntityDataProvider, remult: Remult, _isNew: boolean);
103
+ get apiUpdateAllowed(): boolean;
104
+ get apiDeleteAllowed(): boolean;
105
+ get apiInsertAllowed(): boolean;
106
+ metadata: EntityMetadata<T>;
107
+ getId(): any;
108
+ private _wasDeleted;
109
+ wasDeleted(): boolean;
110
+ undoChanges(): void;
111
+ reload(): Promise<T>;
112
+ private _columns;
113
+ get fields(): FieldsRef<T>;
114
+ private _saving;
115
+ save(): Promise<T>;
116
+ private getIdFilter;
117
+ delete(): Promise<void>;
118
+ loadDataFrom(data: any, loadItems?: FieldMetadata[]): Promise<void>;
119
+ id: any;
120
+ getOriginalId(): any;
121
+ private calcServerExpression;
122
+ isNew(): boolean;
123
+ wasChanged(): boolean;
124
+ __performColumnAndEntityValidations(): Promise<void>;
125
+ }
126
+ export declare function getFields<fieldsContainerType>(container: fieldsContainerType, remult?: Remult): FieldsRef<fieldsContainerType>;
127
+ export declare function getControllerRef<fieldsContainerType>(container: fieldsContainerType, remult?: Remult): ControllerRef<fieldsContainerType>;
128
+ export declare class controllerRefImpl<T = any> extends rowHelperBase<T> implements ControllerRef<T> {
129
+ constructor(columnsInfo: FieldOptions[], instance: any, remult: Remult);
130
+ __performColumnAndEntityValidations(): Promise<void>;
131
+ errors: {
132
+ [key: string]: string;
133
+ };
134
+ originalValues: any;
135
+ fields: FieldsRef<T>;
136
+ }
137
+ export declare class FieldRefImplementation<entityType, valueType> implements FieldRef<entityType, valueType> {
138
+ private settings;
139
+ metadata: FieldMetadata;
140
+ container: any;
141
+ private helper;
142
+ private rowBase;
143
+ constructor(settings: FieldOptions, metadata: FieldMetadata, container: any, helper: EntityRef<entityType>, rowBase: rowHelperBase<entityType>);
144
+ _subscribers: SubscribableImp;
145
+ subscribe(listener: RefSubscriber): Unobserve;
146
+ valueIsNull(): boolean;
147
+ originalValueIsNull(): boolean;
148
+ load(): Promise<valueType>;
149
+ target: ClassType<any>;
150
+ reportObserved(): void;
151
+ reportChanged(): void;
152
+ get error(): string;
153
+ set error(error: string);
154
+ get displayValue(): string;
155
+ get value(): any;
156
+ set value(value: any);
157
+ get originalValue(): any;
158
+ private rawOriginalValue;
159
+ setId(id: (string | number)): void;
160
+ getId(): any;
161
+ get inputValue(): string;
162
+ set inputValue(val: string);
163
+ valueChanged(): boolean;
164
+ entityRef: EntityRef<any>;
165
+ __performValidation(): Promise<void>;
166
+ validate(): Promise<boolean>;
167
+ }
168
+ export declare function getEntityRef<entityType>(entity: entityType, throwException?: boolean): EntityRef<entityType>;
169
+ export declare const CaptionTransformer: {
170
+ transformCaption: (remult: Remult, key: string, caption: string) => string;
171
+ };
172
+ export declare function buildCaption(caption: string | ((remult: Remult) => string), key: string, remult: Remult): string;
173
+ export declare class columnDefsImpl implements FieldMetadata {
174
+ private settings;
175
+ private entityDefs;
176
+ constructor(settings: FieldOptions, entityDefs: EntityFullInfo<any>, remult: Remult);
177
+ dbNamePromise: Promise<string>;
178
+ getDbName(): Promise<string>;
179
+ options: FieldOptions<any, any>;
180
+ target: ClassType<any>;
181
+ readonly: boolean;
182
+ valueConverter: ValueConverter<any>;
183
+ allowNull: boolean;
184
+ caption: string;
185
+ get dbName(): any;
186
+ inputType: string;
187
+ key: string;
188
+ get dbReadOnly(): boolean;
189
+ isServerExpression: boolean;
190
+ valueType: any;
191
+ }
192
+ declare class EntityFullInfo<T> implements EntityMetadata<T> {
193
+ columnsInfo: FieldOptions[];
194
+ entityInfo: EntityOptions;
195
+ private remult;
196
+ readonly entityType: ClassType<T>;
197
+ readonly key: string;
198
+ options: EntityOptions<any>;
199
+ constructor(columnsInfo: FieldOptions[], entityInfo: EntityOptions, remult: Remult, entityType: ClassType<T>, key: string);
200
+ get apiUpdateAllowed(): boolean;
201
+ get apiReadAllowed(): boolean;
202
+ get apiDeleteAllowed(): boolean;
203
+ get apiInsertAllowed(): boolean;
204
+ dbNamePromise: Promise<string>;
205
+ getDbName(): Promise<string>;
206
+ idMetadata: IdMetadata<T>;
207
+ fields: FieldsMetadata<T>;
208
+ dbName: string;
209
+ caption: string;
210
+ }
211
+ export declare function FieldType<valueType = any>(...options: (FieldOptions<any, valueType> | ((options: FieldOptions<any, valueType>, remult: Remult) => void))[]): (target: any) => any;
212
+ export declare class Fields {
213
+ static object<entityType = any, valueType = any>(...options: (FieldOptions<entityType, valueType> | ((options: FieldOptions<entityType, valueType>, remult: Remult) => void))[]): (target: any, key: any, c?: any) => void;
214
+ static dateOnly<entityType = any>(...options: (FieldOptions<entityType, Date> | ((options: FieldOptions<entityType, Date>, remult: Remult) => void))[]): (target: any, key: any, c?: any) => void;
215
+ static date<entityType = any>(...options: (FieldOptions<entityType, Date> | ((options: FieldOptions<entityType, Date>, remult: Remult) => void))[]): (target: any, key: any, c?: any) => void;
216
+ static integer<entityType = any>(...options: (FieldOptions<entityType, Number> | ((options: FieldOptions<entityType, Number>, remult: Remult) => void))[]): (target: any, key: any, c?: any) => void;
217
+ static autoIncrement<entityType = any>(...options: (FieldOptions<entityType, Number> | ((options: FieldOptions<entityType, Number>, remult: Remult) => void))[]): (target: any, key: any, c?: any) => void;
218
+ static number<entityType = any>(...options: (FieldOptions<entityType, Number> | ((options: FieldOptions<entityType, Number>, remult: Remult) => void))[]): (target: any, key: any, c?: any) => void;
219
+ static uuid<entityType = any>(...options: (FieldOptions<entityType, string> | ((options: FieldOptions<entityType, string>, remult: Remult) => void))[]): (target: any, key: any, c?: any) => void;
220
+ static string<entityType = any>(...options: (StringFieldOptions<entityType> | ((options: StringFieldOptions<entityType>, remult: Remult) => void))[]): (target: any, key: any, c?: any) => void;
221
+ static boolean<entityType = any>(...options: (FieldOptions<entityType, boolean> | ((options: FieldOptions<entityType, boolean>, remult: Remult) => void))[]): (target: any, key: any, c?: any) => void;
222
+ }
223
+ export declare function isAutoIncrement(f: FieldMetadata): boolean;
224
+ export interface StringFieldOptions<entityType = any> extends FieldOptions<entityType, string> {
225
+ maxLength?: number;
226
+ }
227
+ export declare function ValueListFieldType<valueType extends ValueListItem = any>(...options: (ValueListFieldOptions<any, valueType> | ((options: FieldOptions<any, valueType>, remult: Remult) => void))[]): (type: ClassType<valueType>) => void;
228
+ export interface ValueListFieldOptions<entityType, valueType> extends FieldOptions<entityType, valueType> {
229
+ getValues?: () => valueType[];
230
+ }
231
+ export declare class ValueListInfo<T extends ValueListItem> implements ValueConverter<T> {
232
+ private valueListType;
233
+ static get<T extends ValueListItem>(type: ClassType<T>): ValueListInfo<T>;
234
+ private byIdMap;
235
+ private values;
236
+ isNumeric: boolean;
237
+ private constructor();
238
+ getValues(): T[];
239
+ byId(key: any): T;
240
+ fromJson(val: any): T;
241
+ toJson(val: T): any;
242
+ fromDb(val: any): T;
243
+ toDb(val: T): any;
244
+ toInput(val: T, inputType: string): string;
245
+ fromInput(val: string, inputType: string): T;
246
+ displayValue?(val: T): string;
247
+ fieldTypeInDb?: string;
248
+ inputType?: string;
249
+ }
250
+ export declare function getValueList<T>(field: FieldRef<T>): T[];
251
+ export declare function getValueList<T>(field: FieldMetadata<T>): T[];
252
+ export declare function getValueList<T>(type: ClassType<T>): T[];
253
+ /**Decorates fields that should be used as fields.
254
+ * for more info see: [Field Types](https://remult.dev/docs/field-types.html)
255
+ *
256
+ * FieldOptions can be set in two ways:
257
+ * @example
258
+ * // as an object
259
+ * @Fields.string({ includeInApi:false })
260
+ * title='';
261
+ * @example
262
+ * // as an arrow function that receives `remult` as a parameter
263
+ * @Fields.string((options,remult) => options.includeInApi = true)
264
+ * title='';
265
+ */
266
+ export declare function Field<entityType = any, valueType = any>(valueType: () => ClassType<valueType>, ...options: (FieldOptions<entityType, valueType> | ((options: FieldOptions<entityType, valueType>, remult: Remult) => void))[]): (target: any, key: any, c?: any) => void;
267
+ export declare const storableMember: unique symbol;
268
+ export declare function decorateColumnSettings<valueType>(settings: FieldOptions<any, valueType>, remult: Remult): FieldOptions<any, valueType>;
269
+ interface columnInfo {
270
+ key: string;
271
+ settings: (remult: Remult) => FieldOptions;
272
+ }
273
+ export declare type BuildEntityFields<entityType> = {
274
+ [Properties in keyof Partial<OmitEB<entityType>>]: any;
275
+ };
276
+ export declare function BuildEntity<entityType>(c: ClassType<entityType>, key: string, fields: BuildEntityFields<entityType>, ...options: (EntityOptions<entityType> | ((options: EntityOptions<entityType>, remult: Remult) => void))[]): void;
277
+ /**Decorates classes that should be used as entities.
278
+ * Receives a key and an array of EntityOptions.
279
+ * @example
280
+ * import { Entity, Fields } from "remult";
281
+ * @Entity("tasks", {
282
+ * allowApiCrud: true
283
+ * })
284
+ * export class Task {
285
+ * @Fields.uuid()
286
+ * id!: string;
287
+ * @Fields.string()
288
+ * title = '';
289
+ * @Fields.boolean()
290
+ * completed = false;
291
+ * }
292
+ * @note
293
+ * EntityOptions can be set in two ways:
294
+ * @example
295
+ * // as an object
296
+ * @Entity("tasks",{ allowApiCrud:true })
297
+ * @example
298
+ * // as an arrow function that receives `remult` as a parameter
299
+ * @Entity("tasks", (options,remult) => options.allowApiCrud = true)
300
+ */
301
+ export declare function Entity<entityType>(key: string, ...options: (EntityOptions<entityType> | ((options: EntityOptions<entityType>, remult: Remult) => void))[]): (target: any) => any;
302
+ export declare class EntityBase {
303
+ get _(): EntityRef<this>;
304
+ save(): Promise<this>;
305
+ assign(values: Partial<Omit<this, keyof EntityBase>>): this;
306
+ delete(): Promise<void>;
307
+ isNew(): boolean;
308
+ get $(): FieldsRef<this>;
309
+ }
310
+ export declare class ControllerBase {
311
+ protected remult: Remult;
312
+ constructor(remult: Remult);
313
+ assign(values: Partial<Omit<this, keyof EntityBase>>): this;
314
+ get $(): FieldsRef<this>;
315
+ get _(): ControllerRef<this>;
316
+ }
317
+ declare class SubscribableImp implements Subscribable {
318
+ reportChanged(): void;
319
+ reportObserved(): void;
320
+ private _subscribers;
321
+ subscribe(listener: (() => void) | {
322
+ reportChanged: () => void;
323
+ reportObserved: () => void;
324
+ }): Unobserve;
325
+ }
326
+ export {};