remult 2.7.33 → 3.0.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -74,7 +74,7 @@ export interface RemultServerOptions<RequestType> {
74
74
  *
75
75
  * @returns A promise that resolves when the error handling is complete.
76
76
  * @example
77
- * export const api = remultExpress({
77
+ * export const api = remultApi({
78
78
  * error: async (e) => {
79
79
  * if (e.httpStatusCode == 400) {
80
80
  * e.sendError(500, { message: "An error occurred" })
package/src/context.js CHANGED
@@ -82,14 +82,17 @@ var Remult = /** @class */ (function () {
82
82
  * @param dataProvider - an optional alternative data provider to use. Useful for writing to offline storage or an alternative data provider
83
83
  */
84
84
  this.repo = function (entity, dataProvider) {
85
+ var _a, _b, _c;
86
+ var info = (0, RepositoryImplementation_js_1.createOldEntity)(entity, _this);
85
87
  if (dataProvider === undefined)
86
- dataProvider = _this.dataProvider;
88
+ dataProvider =
89
+ (_c = (_b = (_a = info === null || info === void 0 ? void 0 : info.options) === null || _a === void 0 ? void 0 : _a.dataProvider) === null || _b === void 0 ? void 0 : _b.call(_a, _this.dataProvider)) !== null && _c !== void 0 ? _c : _this.dataProvider;
87
90
  var dpCache = _this.repCache.get(dataProvider);
88
91
  if (!dpCache)
89
92
  _this.repCache.set(dataProvider, (dpCache = new Map()));
90
93
  var r = dpCache.get(entity);
91
94
  if (!r) {
92
- dpCache.set(entity, (r = new RepositoryImplementation_js_1.RepositoryImplementation(entity, _this, dataProvider, (0, RepositoryImplementation_js_1.createOldEntity)(entity, _this))));
95
+ dpCache.set(entity, (r = new RepositoryImplementation_js_1.RepositoryImplementation(entity, _this, dataProvider, info)));
93
96
  (0, relationInfoMember_js_1.verifyFieldRelationInfo)(r, _this, dataProvider);
94
97
  }
95
98
  return r;
package/src/entity.d.ts CHANGED
@@ -2,6 +2,7 @@ import type { Allowed, AllowedForInstance } from './context.js';
2
2
  import type { FieldMetadata } from './column-interfaces.js';
3
3
  import type { EntityFilter, EntityIdFields, EntityMetadata, EntityOrderBy, EntityRef, FieldsMetadata, LifecycleEvent, MembersOnly } from './remult3/remult3.js';
4
4
  import type { FilterPreciseValues } from './filter/filter-interfaces.js';
5
+ import type { DataProvider } from './data-interfaces.js';
5
6
  export interface EntityOptions<entityType = unknown> {
6
7
  /**A human readable name for the entity */
7
8
  caption?: string;
@@ -181,6 +182,18 @@ export interface EntityOptions<entityType = unknown> {
181
182
  id?: keyof MembersOnly<entityType> | (keyof MembersOnly<entityType>)[] | EntityIdFields<entityType> | ((entity: FieldsMetadata<entityType>) => FieldMetadata | FieldMetadata[]);
182
183
  entityRefInit?: (ref: EntityRef<entityType>, row: entityType) => void;
183
184
  apiRequireId?: Allowed;
185
+ /**
186
+ * A function that allows customizing the data provider for the entity.
187
+ * @param defaultDataProvider The default data provider defined in the `remult` object.
188
+ * @example
189
+ * dataProvider: (dp) => {
190
+ * if (!dp.isProxy) // usually indicates that we're on the backend
191
+ * return getASpacificDataProvider();
192
+ * return null
193
+ * }
194
+ * @returns A custom data provider for the entity.
195
+ */
196
+ dataProvider?: (defaultDataProvider: DataProvider) => DataProvider | undefined | null;
184
197
  }
185
198
  /**
186
199
  * Provides additional information and utilities for preprocessing filters in API and backend operations.