remult 0.26.23 → 0.27.0

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 (126) hide show
  1. package/SseSubscriptionServer.d.ts +3 -4
  2. package/assign.js +1 -2
  3. package/esm/graphql.js +1 -1
  4. package/esm/remult-hono.js +3 -1
  5. package/esm/remult-knex/index.js +3 -1
  6. package/esm/remult-sqlite3.js +4 -1
  7. package/esm/remult-sveltekit.js +1 -0
  8. package/esm/server/index.js +3 -2
  9. package/esm/server/initAsyncHooks.js +3 -3
  10. package/esm/server/remult-admin.js +1 -4
  11. package/esm/server/remult-api-server.js +47 -48
  12. package/esm/src/CompoundIdField.js +9 -9
  13. package/esm/src/data-api.js +1 -1
  14. package/esm/src/data-providers/json-entity-opfs-storage.js +9 -5
  15. package/esm/src/data-providers/sql-database.js +9 -9
  16. package/esm/src/filter/filter-consumer-bridge-to-sql-request.js +3 -1
  17. package/esm/src/filter/filter-interfaces.js +1 -1
  18. package/esm/src/live-query/LiveQueryClient.js +0 -1
  19. package/esm/src/remult-proxy.js +1 -3
  20. package/esm/src/remult-static.js +1 -0
  21. package/esm/src/remult3/Fields.js +15 -7
  22. package/esm/src/remult3/RepositoryImplementation.js +165 -125
  23. package/esm/src/remult3/entity.js +1 -1
  24. package/esm/src/remult3/relation-loader.js +2 -2
  25. package/esm/src/remult3/remult3.js +15 -0
  26. package/esm/src/server-action.js +16 -12
  27. package/esm/src/sort.js +0 -2
  28. package/esm/src/validators.js +3 -3
  29. package/esm/src/valueConverters.js +2 -2
  30. package/graphql.js +3 -4
  31. package/index.js +2 -2
  32. package/live-query/data-provider-live-query-storage.js +6 -6
  33. package/migrations/compare-migration-snapshots.js +48 -49
  34. package/migrations/generate-migrations.js +1 -2
  35. package/migrations/migrate.js +2 -3
  36. package/migrations/migration-types.d.ts +1 -1
  37. package/migrations/migration-types.js +4 -4
  38. package/migrations/update-migrations-ts-file.js +1 -2
  39. package/myLog.js +1 -2
  40. package/package.json +1 -1
  41. package/postgres/postgres-data-provider.d.ts +2 -2
  42. package/postgres/postgres-data-provider.js +5 -5
  43. package/postgres/schema-builder.d.ts +1 -1
  44. package/postgres/schema-builder.js +3 -3
  45. package/remult-express.js +4 -3
  46. package/remult-fastify.js +4 -3
  47. package/remult-fresh.js +1 -2
  48. package/remult-hapi.js +4 -3
  49. package/remult-hono.js +6 -3
  50. package/remult-knex/index.d.ts +2 -2
  51. package/remult-knex/index.js +7 -5
  52. package/remult-mongo.d.ts +1 -1
  53. package/remult-next.d.ts +5 -6
  54. package/remult-next.js +11 -6
  55. package/remult-nuxt.js +1 -2
  56. package/remult-solid-start.js +1 -2
  57. package/remult-sqlite3.js +4 -1
  58. package/remult-sveltekit.d.ts +1 -1
  59. package/remult-sveltekit.js +33 -35
  60. package/server/JsonEntityFileStorage.d.ts +1 -1
  61. package/server/get-remult-admin-html.js +1 -2
  62. package/server/index.js +4 -3
  63. package/server/initAsyncHooks.d.ts +10 -10
  64. package/server/initAsyncHooks.js +5 -2
  65. package/server/initDataProvider.js +1 -2
  66. package/server/initDataProviderOrJson.js +1 -2
  67. package/server/remult-admin.js +3 -7
  68. package/server/remult-api-server.d.ts +21 -21
  69. package/server/remult-api-server.js +54 -48
  70. package/src/CompoundIdField.d.ts +2 -2
  71. package/src/CompoundIdField.js +9 -0
  72. package/src/buildRestDataProvider.d.ts +1 -1
  73. package/src/buildRestDataProvider.js +8 -8
  74. package/src/column-interfaces.d.ts +4 -4
  75. package/src/column-interfaces.js +1 -2
  76. package/src/column.d.ts +4 -4
  77. package/src/column.js +2 -2
  78. package/src/context.d.ts +4 -4
  79. package/src/context.js +5 -5
  80. package/src/data-api.d.ts +4 -4
  81. package/src/data-api.js +4 -4
  82. package/src/data-interfaces.d.ts +1 -1
  83. package/src/data-interfaces.js +1 -2
  84. package/src/data-providers/json-entity-opfs-storage.js +30 -16
  85. package/src/data-providers/rest-data-provider.d.ts +3 -3
  86. package/src/data-providers/rest-data-provider.js +4 -4
  87. package/src/data-providers/sql-database.d.ts +1 -1
  88. package/src/data-providers/sql-database.js +11 -11
  89. package/src/data-providers/web-sql-data-provider.d.ts +2 -2
  90. package/src/entity.d.ts +1 -1
  91. package/src/filter/filter-consumer-bridge-to-sql-request.d.ts +3 -3
  92. package/src/filter/filter-consumer-bridge-to-sql-request.js +21 -19
  93. package/src/filter/filter-interfaces.d.ts +2 -1
  94. package/src/filter/filter-interfaces.js +10 -7
  95. package/src/isOfType.js +2 -3
  96. package/src/live-query/SubscriptionServer.js +95 -97
  97. package/src/remult-proxy.js +1 -3
  98. package/src/remult-static.d.ts +2 -2
  99. package/src/remult-static.js +7 -4
  100. package/src/remult3/Fields.d.ts +17 -17
  101. package/src/remult3/Fields.js +22 -13
  102. package/src/remult3/RepositoryImplementation.d.ts +51 -46
  103. package/src/remult3/RepositoryImplementation.js +421 -368
  104. package/src/remult3/__updateEntityBasedOnWhere.js +1 -2
  105. package/src/remult3/addValidator.d.ts +1 -1
  106. package/src/remult3/addValidator.js +1 -2
  107. package/src/remult3/classDescribers.d.ts +4 -4
  108. package/src/remult3/classDescribers.js +3 -4
  109. package/src/remult3/columnInfo.d.ts +1 -1
  110. package/src/remult3/entity.js +2 -4
  111. package/src/remult3/getEntityRef.js +4 -4
  112. package/src/remult3/relation-loader.d.ts +1 -1
  113. package/src/remult3/relationInfoMember.d.ts +3 -3
  114. package/src/remult3/relationInfoMember.js +4 -5
  115. package/src/remult3/remult3.d.ts +23 -20
  116. package/src/remult3/remult3.js +15 -0
  117. package/src/remult3/repository-internals.d.ts +3 -3
  118. package/src/remult3/repository-internals.js +2 -2
  119. package/src/server-action.d.ts +2 -2
  120. package/src/server-action.js +65 -58
  121. package/src/sort.d.ts +1 -1
  122. package/src/sort.js +0 -2
  123. package/src/sql-command.d.ts +1 -1
  124. package/src/validators.d.ts +1 -1
  125. package/src/validators.js +13 -11
  126. package/src/valueConverters.js +3 -2
package/src/column.d.ts CHANGED
@@ -6,14 +6,14 @@ export declare class LookupColumn<T> {
6
6
  private allowNull;
7
7
  toJson(): any;
8
8
  setId(val: any): void;
9
- waitLoadOf(id: any): Promise<T>;
9
+ waitLoadOf(id: any): Promise<T | undefined> | null;
10
10
  get(id: any): any;
11
11
  storedItem?: {
12
12
  item: T;
13
13
  };
14
14
  set(item: T): void;
15
- id: idType<T>;
16
- constructor(repository: Repository<T>, isReferenceRelation: any, allowNull: any);
15
+ id?: idType<T>;
16
+ constructor(repository: Repository<T>, isReferenceRelation: boolean, allowNull: boolean);
17
17
  get item(): T;
18
- waitLoad(): Promise<T>;
18
+ waitLoad(): Promise<T | null | undefined>;
19
19
  }
package/src/column.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LookupColumn = exports.makeTitle = void 0;
3
+ exports.LookupColumn = void 0;
4
+ exports.makeTitle = makeTitle;
4
5
  var tslib_1 = require("tslib");
5
6
  var getEntityRef_js_1 = require("./remult3/getEntityRef.js");
6
7
  var repository_internals_js_1 = require("./remult3/repository-internals.js");
@@ -13,7 +14,6 @@ function makeTitle(name) {
13
14
  .replace('Email', 'eMail')
14
15
  .replace(' I D', ' ID'));
15
16
  }
16
- exports.makeTitle = makeTitle;
17
17
  var LookupColumn = /** @class */ (function () {
18
18
  function LookupColumn(repository, isReferenceRelation, allowNull) {
19
19
  this.repository = repository;
package/src/context.d.ts CHANGED
@@ -11,14 +11,14 @@ export declare class RemultAsyncLocalStorage {
11
11
  constructor(remultObjectStorage: RemultAsyncLocalStorageCore<{
12
12
  remult: Remult;
13
13
  inInitRequest?: boolean;
14
- }>);
14
+ }> | undefined);
15
15
  run<T>(remult: Remult, callback: (remult: Remult) => Promise<T>): Promise<T>;
16
- isInInitRequest(): boolean;
16
+ isInInitRequest(): boolean | undefined;
17
17
  setInInitRequest(val: boolean): void;
18
18
  getStore(): {
19
19
  remult: Remult;
20
20
  inInitRequest?: boolean;
21
- };
21
+ } | undefined;
22
22
  }
23
23
  export type RemultAsyncLocalStorageCore<T> = {
24
24
  run<R>(store: T, callback: () => Promise<R>): Promise<R>;
@@ -202,6 +202,6 @@ export interface itemChange {
202
202
  deleted: boolean;
203
203
  }
204
204
  export declare function doTransaction(remult: Remult, what: (dp: DataProvider) => Promise<void>): Promise<void>;
205
- export declare function withRemult<T>(callback: (remult: any) => Promise<T>, options?: {
205
+ export declare function withRemult<T>(callback: (remult: Remult) => Promise<T>, options?: {
206
206
  dataProvider?: DataProvider | Promise<DataProvider> | (() => Promise<DataProvider | undefined>);
207
207
  }): Promise<T>;
package/src/context.js CHANGED
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.withRemult = exports.doTransaction = exports.EventSource = exports.queryConfig = exports.Allow = exports.setControllerSettings = exports.ClassHelper = exports.Remult = exports.isBackend = exports.RemultAsyncLocalStorage = void 0;
3
+ exports.EventSource = exports.queryConfig = exports.Allow = exports.ClassHelper = exports.Remult = exports.RemultAsyncLocalStorage = void 0;
4
+ exports.isBackend = isBackend;
5
+ exports.setControllerSettings = setControllerSettings;
6
+ exports.doTransaction = doTransaction;
7
+ exports.withRemult = withRemult;
4
8
  var tslib_1 = require("tslib");
5
9
  var rest_data_provider_js_1 = require("./data-providers/rest-data-provider.js");
6
10
  var LiveQueryClient_js_1 = require("./live-query/LiveQueryClient.js");
@@ -65,7 +69,6 @@ if (!remult_static_js_1.remultStatic.asyncContext)
65
69
  function isBackend() {
66
70
  return remult_static_js_1.remultStatic.actionInfo.runningOnServer || !remult_proxy_js_1.remult.dataProvider.isProxy;
67
71
  }
68
- exports.isBackend = isBackend;
69
72
  var Remult = /** @class */ (function () {
70
73
  function Remult(provider) {
71
74
  var _this = this;
@@ -252,7 +255,6 @@ function setControllerSettings(target, options) {
252
255
  r = p.constructor;
253
256
  }
254
257
  }
255
- exports.setControllerSettings = setControllerSettings;
256
258
  var Allow = /** @class */ (function () {
257
259
  function Allow() {
258
260
  }
@@ -381,7 +383,6 @@ function doTransaction(remult, what) {
381
383
  });
382
384
  });
383
385
  }
384
- exports.doTransaction = doTransaction;
385
386
  var transactionLiveQueryPublisher = /** @class */ (function () {
386
387
  function transactionLiveQueryPublisher(orig) {
387
388
  this.orig = orig;
@@ -485,4 +486,3 @@ function withRemult(callback, options) {
485
486
  });
486
487
  });
487
488
  }
488
- exports.withRemult = withRemult;
package/src/data-api.d.ts CHANGED
@@ -2,7 +2,7 @@ import type { Remult } from './context.js';
2
2
  import type { ErrorInfo } from './data-interfaces.js';
3
3
  import type { EntityMetadata, FindOptions, Repository } from './remult3/remult3.js';
4
4
  import type { rowHelperImplementation } from './remult3/RepositoryImplementation.js';
5
- export declare class DataApi<T = any> {
5
+ export declare class DataApi<T = unknown> {
6
6
  private repository;
7
7
  private remult;
8
8
  constructor(repository: Repository<T>, remult: Remult);
@@ -23,8 +23,8 @@ export declare class DataApi<T = any> {
23
23
  private doOnId;
24
24
  updateManyThroughPutRequest(response: DataApiResponse, request: DataApiRequest, body: any): Promise<void>;
25
25
  updateManyImplementation(response: DataApiResponse, request: DataApiRequest, body: {
26
- where: any;
27
- set: any;
26
+ where?: any;
27
+ set?: any;
28
28
  }): Promise<void>;
29
29
  actualUpdate(row: any, body: any): Promise<rowHelperImplementation<T>>;
30
30
  put(response: DataApiResponse, id: any, body: any): Promise<void>;
@@ -45,4 +45,4 @@ export interface DataApiRequest {
45
45
  get(key: string): any;
46
46
  }
47
47
  export declare function determineSort(sortUrlParm: string, dirUrlParam: string): any;
48
- export declare function serializeError(data: ErrorInfo): ErrorInfo<any>;
48
+ export declare function serializeError(data: ErrorInfo): ErrorInfo<unknown>;
package/src/data-api.js CHANGED
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.serializeError = exports.determineSort = exports.DataApi = void 0;
3
+ exports.DataApi = void 0;
4
+ exports.determineSort = determineSort;
5
+ exports.serializeError = serializeError;
4
6
  var tslib_1 = require("tslib");
5
7
  var context_js_1 = require("./context.js");
6
8
  var rest_data_provider_js_1 = require("./data-providers/rest-data-provider.js");
@@ -515,7 +517,7 @@ var DataApi = /** @class */ (function () {
515
517
  return [4 /*yield*/, this.buildWhere(request, body)];
516
518
  case 1:
517
519
  where_2 = _a.sent();
518
- filter_interfaces_js_1.Filter.throwErrorIfFilterIsEmpty(where_2, 'deleteMany');
520
+ filter_interfaces_js_1.Filter.throwErrorIfFilterIsEmpty(where_2, 'updateMany');
519
521
  return [4 /*yield*/, (0, context_js_1.doTransaction)(this.remult, function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
520
522
  var updated, _a, _b, _c, x, e_3_1;
521
523
  var _d, e_3, _e, _f;
@@ -767,7 +769,6 @@ function determineSort(sortUrlParm, dirUrlParam) {
767
769
  });
768
770
  return result;
769
771
  }
770
- exports.determineSort = determineSort;
771
772
  function serializeError(data) {
772
773
  if (data instanceof TypeError) {
773
774
  data = { message: data.message, stack: data.stack };
@@ -779,4 +780,3 @@ function serializeError(data) {
779
780
  data = { message: x };
780
781
  return data;
781
782
  }
782
- exports.serializeError = serializeError;
@@ -35,7 +35,7 @@ export interface RestDataProviderHttpProvider {
35
35
  get(url: string): Promise<any>;
36
36
  }
37
37
  export declare function extractSort(sort: any): Sort;
38
- export interface ErrorInfo<entityType = any> {
38
+ export interface ErrorInfo<entityType = unknown> {
39
39
  message?: string;
40
40
  modelState?: {
41
41
  [Properties in keyof Partial<MembersOnly<entityType>>]?: string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.extractSort = void 0;
3
+ exports.extractSort = extractSort;
4
4
  var sort_js_1 = require("./sort.js");
5
5
  function extractSort(sort) {
6
6
  if (sort instanceof Array) {
@@ -12,4 +12,3 @@ function extractSort(sort) {
12
12
  }
13
13
  return sort;
14
14
  }
15
- exports.extractSort = extractSort;
@@ -7,7 +7,28 @@ var JsonEntityOpfsStorage = /** @class */ (function () {
7
7
  }
8
8
  JsonEntityOpfsStorage.prototype.getItem = function (entityDbName) {
9
9
  return tslib_1.__awaiter(this, void 0, void 0, function () {
10
- var _a, opfsFile, readable;
10
+ var opfsFile, readable;
11
+ return tslib_1.__generator(this, function (_a) {
12
+ switch (_a.label) {
13
+ case 0: return [4 /*yield*/, this.init()];
14
+ case 1: return [4 /*yield*/, (_a.sent()).getFileHandle(entityDbName + '.json', {
15
+ create: true,
16
+ })];
17
+ case 2:
18
+ opfsFile = _a.sent();
19
+ return [4 /*yield*/, opfsFile.getFile()];
20
+ case 3:
21
+ readable = _a.sent();
22
+ return [4 /*yield*/, readable.text()];
23
+ case 4: return [2 /*return*/, _a.sent()];
24
+ }
25
+ });
26
+ });
27
+ };
28
+ //@internal
29
+ JsonEntityOpfsStorage.prototype.init = function () {
30
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
31
+ var _a;
11
32
  return tslib_1.__generator(this, function (_b) {
12
33
  switch (_b.label) {
13
34
  case 0:
@@ -17,16 +38,7 @@ var JsonEntityOpfsStorage = /** @class */ (function () {
17
38
  case 1:
18
39
  _a.opfsRoot = _b.sent();
19
40
  _b.label = 2;
20
- case 2: return [4 /*yield*/, this.opfsRoot.getFileHandle(entityDbName + '.json', {
21
- create: true,
22
- })];
23
- case 3:
24
- opfsFile = _b.sent();
25
- return [4 /*yield*/, opfsFile.getFile()];
26
- case 4:
27
- readable = _b.sent();
28
- return [4 /*yield*/, readable.text()];
29
- case 5: return [2 /*return*/, _b.sent()];
41
+ case 2: return [2 /*return*/, this.opfsRoot];
30
42
  }
31
43
  });
32
44
  });
@@ -36,19 +48,21 @@ var JsonEntityOpfsStorage = /** @class */ (function () {
36
48
  var opfsFile, writable;
37
49
  return tslib_1.__generator(this, function (_a) {
38
50
  switch (_a.label) {
39
- case 0: return [4 /*yield*/, this.opfsRoot.getFileHandle(entityDbName + '.json', {
51
+ case 0: return [4 /*yield*/, this.init()];
52
+ case 1: return [4 /*yield*/, (_a.sent()).getFileHandle(entityDbName + '.json', {
40
53
  create: true,
41
54
  })];
42
- case 1:
55
+ case 2: return [4 /*yield*/, _a.sent()];
56
+ case 3:
43
57
  opfsFile = _a.sent();
44
58
  return [4 /*yield*/, opfsFile.createWritable()];
45
- case 2:
59
+ case 4:
46
60
  writable = _a.sent();
47
61
  return [4 /*yield*/, writable.write(json)];
48
- case 3:
62
+ case 5:
49
63
  _a.sent();
50
64
  return [4 /*yield*/, writable.close()];
51
- case 4:
65
+ case 6:
52
66
  _a.sent();
53
67
  return [2 /*return*/];
54
68
  }
@@ -15,8 +15,8 @@ export declare class RestEntityDataProvider implements EntityDataProvider, Proxy
15
15
  private http;
16
16
  private entity;
17
17
  constructor(url: () => string, http: () => RestDataProviderHttpProvider, entity: EntityMetadata);
18
- translateFromJson(row: any): {};
19
- translateToJson(row: any): {};
18
+ translateFromJson(row: any): any;
19
+ translateToJson(row: any): any;
20
20
  count(where: Filter): Promise<number>;
21
21
  deleteMany(where: Filter): Promise<number>;
22
22
  updateMany(where: Filter, data: any): Promise<number>;
@@ -29,7 +29,7 @@ export declare class RestEntityDataProvider implements EntityDataProvider, Proxy
29
29
  }
30
30
  export declare class RestDataProviderHttpProviderUsingFetch implements RestDataProviderHttpProvider {
31
31
  private fetch?;
32
- constructor(fetch?: (input: RequestInfo, init?: RequestInit) => Promise<Response>);
32
+ constructor(fetch?: ((input: RequestInfo, init?: RequestInit) => Promise<Response>) | undefined);
33
33
  get(url: string): Promise<any>;
34
34
  put(url: string, data: any): Promise<any>;
35
35
  delete(url: string): Promise<any>;
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.liveQueryAction = exports.addFilterToUrlAndReturnTrueIfSuccessful = exports.RestDataProviderHttpProviderUsingFetch = exports.RestEntityDataProvider = exports.findOptionsFromJson = exports.findOptionsToJson = exports.RestDataProvider = void 0;
3
+ exports.liveQueryAction = exports.RestDataProviderHttpProviderUsingFetch = exports.RestEntityDataProvider = exports.RestDataProvider = void 0;
4
+ exports.findOptionsToJson = findOptionsToJson;
5
+ exports.findOptionsFromJson = findOptionsFromJson;
6
+ exports.addFilterToUrlAndReturnTrueIfSuccessful = addFilterToUrlAndReturnTrueIfSuccessful;
4
7
  var tslib_1 = require("tslib");
5
8
  var urlBuilder_js_1 = require("../../urlBuilder.js");
6
9
  var buildRestDataProvider_js_1 = require("../buildRestDataProvider.js");
@@ -58,7 +61,6 @@ function findOptionsToJson(options, meta) {
58
61
  options = tslib_1.__assign(tslib_1.__assign({}, options), { load: options.load(meta.fields).map(function (y) { return y.key; }) });
59
62
  return options;
60
63
  }
61
- exports.findOptionsToJson = findOptionsToJson;
62
64
  //@internal
63
65
  function findOptionsFromJson(json, meta) {
64
66
  var e_1, _a;
@@ -109,7 +111,6 @@ function findOptionsFromJson(json, meta) {
109
111
  }
110
112
  return r;
111
113
  }
112
- exports.findOptionsFromJson = findOptionsFromJson;
113
114
  var RestEntityDataProvider = /** @class */ (function () {
114
115
  function RestEntityDataProvider(url, http, entity) {
115
116
  this.url = url;
@@ -470,5 +471,4 @@ function addFilterToUrlAndReturnTrueIfSuccessful(filter, url) {
470
471
  }
471
472
  return true;
472
473
  }
473
- exports.addFilterToUrlAndReturnTrueIfSuccessful = addFilterToUrlAndReturnTrueIfSuccessful;
474
474
  exports.liveQueryAction = 'liveQuery-';
@@ -37,7 +37,7 @@ export declare class SqlDatabase implements DataProvider, HasWrapIdentifier, Can
37
37
  * Wraps an identifier with the database's identifier syntax.
38
38
  */
39
39
  wrapIdentifier: (name: string) => string;
40
- ensureSchema(entities: EntityMetadata<any>[]): Promise<void>;
40
+ ensureSchema(entities: EntityMetadata[]): Promise<void>;
41
41
  /**
42
42
  * Gets the entity data provider.
43
43
  * @param entity - The entity metadata.
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getRowAfterUpdate = exports.SqlDatabase = void 0;
3
+ exports.SqlDatabase = void 0;
4
+ exports.getRowAfterUpdate = getRowAfterUpdate;
4
5
  var tslib_1 = require("tslib");
5
6
  var filter_consumer_bridge_to_sql_request_js_1 = require("../filter/filter-consumer-bridge-to-sql-request.js");
6
7
  var filter_interfaces_js_1 = require("../filter/filter-interfaces.js");
@@ -268,16 +269,16 @@ var SqlDatabase = /** @class */ (function () {
268
269
  exports.SqlDatabase = SqlDatabase;
269
270
  var icons = new Map([
270
271
  // CRUD
271
- ['INSERT', '⚪'],
272
- ['SELECT', '🔵'],
273
- ['UPDATE', '🟣'],
274
- ['DELETE', '🟤'],
272
+ ['INSERT', '⚪'], // Used to insert new data into a database.
273
+ ['SELECT', '🔵'], // Used to select data from a database and retrieve it.
274
+ ['UPDATE', '🟣'], // Used to update existing data within a database.
275
+ ['DELETE', '🟤'], // Used to delete existing data from a database.
275
276
  // Additional
276
- ['CREATE', '🟩'],
277
- ['ALTER', '🟨'],
278
- ['DROP', '🟥'],
279
- ['TRUNCATE', '⬛'],
280
- ['GRANT', '🟪'],
277
+ ['CREATE', '🟩'], // Used to create a new table, or database.
278
+ ['ALTER', '🟨'], // Used to modify an existing database object, such as a table.
279
+ ['DROP', '🟥'], // Used to delete an entire table or database.
280
+ ['TRUNCATE', '⬛'], // Used to remove all records from a table, including all spaces allocated for the records are removed.
281
+ ['GRANT', '🟪'], // Used to give a specific user permission to perform certain tasks.
281
282
  ['REVOKE', '🟫'], // Used to take back permissions from a user.
282
283
  ]);
283
284
  var LogSQLCommand = /** @class */ (function () {
@@ -805,4 +806,3 @@ function getRowAfterUpdate(meta, dataProvider, data, id, operation) {
805
806
  return r[0];
806
807
  });
807
808
  }
808
- exports.getRowAfterUpdate = getRowAfterUpdate;
@@ -10,9 +10,9 @@ export declare class WebSqlDataProvider implements SqlImplementation, __RowsOfDa
10
10
  end(): Promise<void>;
11
11
  getLimitSqlSyntax(limit: number, offset: number): string;
12
12
  entityIsUsedForTheFirstTime(entity: EntityMetadata): Promise<void>;
13
- ensureSchema(entities: EntityMetadata<any>[]): Promise<void>;
13
+ ensureSchema(entities: EntityMetadata[]): Promise<void>;
14
14
  dropTable(entity: EntityMetadata): Promise<void>;
15
- createTable(entity: EntityMetadata<any>): Promise<void>;
15
+ createTable(entity: EntityMetadata): Promise<void>;
16
16
  createCommand(): SqlCommand;
17
17
  transaction(action: (dataProvider: SqlImplementation) => Promise<void>): Promise<void>;
18
18
  private addColumnSqlSyntax;
package/src/entity.d.ts CHANGED
@@ -2,7 +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 } from './remult3/remult3.js';
4
4
  import type { FilterPreciseValues } from './filter/filter-interfaces.js';
5
- export interface EntityOptions<entityType = any> {
5
+ export interface EntityOptions<entityType = unknown> {
6
6
  /**A human readable name for the entity */
7
7
  caption?: string;
8
8
  /**
@@ -57,7 +57,7 @@ export declare class CustomSqlFilterBuilder implements SqlCommandWithParameters,
57
57
  * @param {FieldMetadata<valueType>} [field] - The field metadata.
58
58
  * @returns {string} - The SQL token.
59
59
  */
60
- param: <valueType>(val: valueType, field?: FieldMetadata<valueType, any>) => string;
60
+ param: <valueType>(val: valueType, field?: FieldMetadata<valueType>) => string;
61
61
  /**
62
62
  * Converts an entity filter into a raw SQL condition - and appends to it any `backendPrefilter` and `backendPreprocessFilter`
63
63
  * @param {RepositoryOverloads<entityType>} repo - The repository.
@@ -66,9 +66,9 @@ export declare class CustomSqlFilterBuilder implements SqlCommandWithParameters,
66
66
  */
67
67
  filterToRaw: <entityType>(repo: RepositoryOverloads<entityType>, condition: EntityFilter<entityType>) => Promise<string>;
68
68
  }
69
- export declare function isDbReadonly<entityType>(field: FieldMetadata, dbNames: EntityDbNames<entityType>): boolean;
69
+ export declare function isDbReadonly<entityType>(field: FieldMetadata, dbNames: EntityDbNames<entityType>): boolean | "" | undefined;
70
70
  export declare function shouldNotCreateField<entityType>(field: FieldMetadata, dbNames: EntityDbNames<entityType>): boolean;
71
- export declare function shouldCreateEntity(entity: EntityMetadata<any>, e: EntityDbNamesBase): boolean;
71
+ export declare function shouldCreateEntity(entity: EntityMetadata, e: EntityDbNamesBase): boolean;
72
72
  export declare type EntityDbNamesBase = {
73
73
  $entityName: string;
74
74
  $dbNameOf(field: FieldMetadata<any> | string): string;
@@ -1,6 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fieldDbName = exports.entityDbName = exports.dbNamesOfWithForceSqlExpression = exports.dbNamesOf = exports.shouldCreateEntity = exports.shouldNotCreateField = exports.isDbReadonly = exports.CustomSqlFilterBuilder = exports.FilterConsumerBridgeToSqlRequest = void 0;
3
+ exports.CustomSqlFilterBuilder = exports.FilterConsumerBridgeToSqlRequest = void 0;
4
+ exports.isDbReadonly = isDbReadonly;
5
+ exports.shouldNotCreateField = shouldNotCreateField;
6
+ exports.shouldCreateEntity = shouldCreateEntity;
7
+ exports.dbNamesOf = dbNamesOf;
8
+ exports.dbNamesOfWithForceSqlExpression = dbNamesOfWithForceSqlExpression;
9
+ exports.entityDbName = entityDbName;
10
+ exports.fieldDbName = fieldDbName;
4
11
  var tslib_1 = require("tslib");
5
12
  var sql_database_js_1 = require("../data-providers/sql-database.js");
6
13
  var remult_proxy_js_1 = require("../remult-proxy.js");
@@ -332,17 +339,14 @@ function isDbReadonly(field, dbNames) {
332
339
  field.isServerExpression ||
333
340
  (field.options.sqlExpression && field.dbName != dbNames.$dbNameOf(field)));
334
341
  }
335
- exports.isDbReadonly = isDbReadonly;
336
342
  function shouldNotCreateField(field, dbNames) {
337
- return (field.isServerExpression ||
343
+ return Boolean(field.isServerExpression ||
338
344
  (field.options.sqlExpression && field.dbName != dbNames.$dbNameOf(field)));
339
345
  }
340
- exports.shouldNotCreateField = shouldNotCreateField;
341
346
  function shouldCreateEntity(entity, e) {
342
347
  return (!entity.options.sqlExpression &&
343
348
  e.$entityName.toLowerCase().indexOf('from ') < 0);
344
349
  }
345
- exports.shouldCreateEntity = shouldCreateEntity;
346
350
  function dbNamesOf(repo, wrapIdentifierOrOptions) {
347
351
  return tslib_1.__awaiter(this, void 0, void 0, function () {
348
352
  return tslib_1.__generator(this, function (_a) {
@@ -350,7 +354,6 @@ function dbNamesOf(repo, wrapIdentifierOrOptions) {
350
354
  });
351
355
  });
352
356
  }
353
- exports.dbNamesOf = dbNamesOf;
354
357
  function dbNamesOfWithForceSqlExpression(repo, wrapIdentifierOrOptions) {
355
358
  return tslib_1.__awaiter(this, void 0, void 0, function () {
356
359
  return tslib_1.__generator(this, function (_a) {
@@ -358,12 +361,11 @@ function dbNamesOfWithForceSqlExpression(repo, wrapIdentifierOrOptions) {
358
361
  });
359
362
  });
360
363
  }
361
- exports.dbNamesOfWithForceSqlExpression = dbNamesOfWithForceSqlExpression;
362
- function internalDbNamesOf(repo, wrapIdentifierOrOptions, forceSqlExpression) {
363
- if (forceSqlExpression === void 0) { forceSqlExpression = false; }
364
- return tslib_1.__awaiter(this, void 0, void 0, function () {
364
+ function internalDbNamesOf(repo_1, wrapIdentifierOrOptions_1) {
365
+ return tslib_1.__awaiter(this, arguments, void 0, function (repo, wrapIdentifierOrOptions, forceSqlExpression) {
365
366
  var options, meta, result, _a, _b, field, r, e_3_1;
366
367
  var _c, e_3, _d;
368
+ if (forceSqlExpression === void 0) { forceSqlExpression = false; }
367
369
  return tslib_1.__generator(this, function (_e) {
368
370
  switch (_e.label) {
369
371
  case 0:
@@ -408,6 +410,7 @@ function internalDbNamesOf(repo, wrapIdentifierOrOptions, forceSqlExpression) {
408
410
  else if (options.tableName === true) {
409
411
  r = result.$entityName + '.' + r;
410
412
  }
413
+ ;
411
414
  result[field.key] = r;
412
415
  _e.label = 5;
413
416
  case 5:
@@ -429,10 +432,10 @@ function internalDbNamesOf(repo, wrapIdentifierOrOptions, forceSqlExpression) {
429
432
  });
430
433
  });
431
434
  }
432
- function entityDbName(metadata, wrapIdentifier) {
433
- if (wrapIdentifier === void 0) { wrapIdentifier = function (x) { return x; }; }
434
- return tslib_1.__awaiter(this, void 0, void 0, function () {
435
+ function entityDbName(metadata_1) {
436
+ return tslib_1.__awaiter(this, arguments, void 0, function (metadata, wrapIdentifier) {
435
437
  var prev;
438
+ if (wrapIdentifier === void 0) { wrapIdentifier = function (x) { return x; }; }
436
439
  return tslib_1.__generator(this, function (_a) {
437
440
  switch (_a.label) {
438
441
  case 0:
@@ -457,13 +460,12 @@ function entityDbName(metadata, wrapIdentifier) {
457
460
  });
458
461
  });
459
462
  }
460
- exports.entityDbName = entityDbName;
461
463
  var sqlExpressionInProgressKey = Symbol.for("sqlExpressionInProgressKey");
462
- function fieldDbName(f, meta, wrapIdentifier, forceSqlExpression) {
463
- if (wrapIdentifier === void 0) { wrapIdentifier = function (x) { return x; }; }
464
- if (forceSqlExpression === void 0) { forceSqlExpression = false; }
465
- return tslib_1.__awaiter(this, void 0, void 0, function () {
464
+ function fieldDbName(f_1, meta_1) {
465
+ return tslib_1.__awaiter(this, arguments, void 0, function (f, meta, wrapIdentifier, forceSqlExpression) {
466
466
  var result_1, rel, field, fInfo;
467
+ if (wrapIdentifier === void 0) { wrapIdentifier = function (x) { return x; }; }
468
+ if (forceSqlExpression === void 0) { forceSqlExpression = false; }
467
469
  return tslib_1.__generator(this, function (_a) {
468
470
  switch (_a.label) {
469
471
  case 0:
@@ -476,6 +478,7 @@ function fieldDbName(f, meta, wrapIdentifier, forceSqlExpression) {
476
478
  _a.label = 1;
477
479
  case 1:
478
480
  _a.trys.push([1, , 3, 4]);
481
+ ;
479
482
  f[sqlExpressionInProgressKey] = true;
480
483
  return [4 /*yield*/, f.options.sqlExpression(meta)];
481
484
  case 2:
@@ -509,4 +512,3 @@ function fieldDbName(f, meta, wrapIdentifier, forceSqlExpression) {
509
512
  });
510
513
  });
511
514
  }
512
- exports.fieldDbName = fieldDbName;
@@ -182,6 +182,7 @@ export declare class Filter {
182
182
  */
183
183
  static resolve<entityType>(filter: EntityFilter<entityType> | (() => EntityFilter<entityType> | Promise<EntityFilter<entityType>>)): Promise<EntityFilter<entityType>>;
184
184
  toJson(): any;
185
+ static translateCustomWhere<T>(r: Filter, entity: EntityMetadata<T>, remult: Remult): Promise<Filter>;
185
186
  }
186
187
  export interface FilterConsumer {
187
188
  or(orElements: Filter[]): void;
@@ -221,7 +222,7 @@ export declare class FilterSerializer implements FilterConsumer {
221
222
  result: any;
222
223
  constructor();
223
224
  databaseCustom(databaseCustom: any): void;
224
- custom(key: any, customItem: any): void;
225
+ custom(key: string, customItem: any): void;
225
226
  hasUndefined: boolean;
226
227
  add(key: string, val: any): void;
227
228
  or(orElements: Filter[]): void;
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.__updateEntityBasedOnWhere = exports.buildFilterFromRequestParameters = exports.entityFilterToJson = exports.FilterSerializer = exports.customDatabaseFilterToken = exports.customUrlToken = exports.NotFilter = exports.OrFilter = exports.AndFilter = exports.Filter = void 0;
3
+ exports.FilterSerializer = exports.customDatabaseFilterToken = exports.customUrlToken = exports.NotFilter = exports.OrFilter = exports.AndFilter = exports.Filter = void 0;
4
+ exports.entityFilterToJson = entityFilterToJson;
5
+ exports.buildFilterFromRequestParameters = buildFilterFromRequestParameters;
6
+ exports.__updateEntityBasedOnWhere = __updateEntityBasedOnWhere;
4
7
  var tslib_1 = require("tslib");
5
8
  var getEntityRef_js_1 = require("../remult3/getEntityRef.js");
6
9
  var relationInfoMember_js_1 = require("../remult3/relationInfoMember.js");
@@ -206,13 +209,17 @@ var Filter = /** @class */ (function () {
206
209
  var fieldToFilter_1 = whereItem[key];
207
210
  {
208
211
  if (key == '$or') {
209
- result.push(new (OrFilter.bind.apply(OrFilter, tslib_1.__spreadArray([void 0], tslib_1.__read(fieldToFilter_1.map(function (x) { return Filter.fromEntityFilter(entity, x); })), false)))());
212
+ result.push(new (OrFilter.bind.apply(OrFilter, tslib_1.__spreadArray([void 0], tslib_1.__read(fieldToFilter_1.map(function (x) {
213
+ return Filter.fromEntityFilter(entity, x);
214
+ })), false)))());
210
215
  }
211
216
  else if (key == '$not') {
212
217
  result.push(new NotFilter(Filter.fromEntityFilter(entity, fieldToFilter_1)));
213
218
  }
214
219
  else if (key == '$and') {
215
- result.push(new (AndFilter.bind.apply(AndFilter, tslib_1.__spreadArray([void 0], tslib_1.__read(fieldToFilter_1.map(function (x) { return Filter.fromEntityFilter(entity, x); })), false)))());
220
+ result.push(new (AndFilter.bind.apply(AndFilter, tslib_1.__spreadArray([void 0], tslib_1.__read(fieldToFilter_1.map(function (x) {
221
+ return Filter.fromEntityFilter(entity, x);
222
+ })), false)))());
216
223
  }
217
224
  else if (key.startsWith(exports.customUrlToken)) {
218
225
  result.push(new Filter(function (x) {
@@ -342,7 +349,6 @@ var Filter = /** @class */ (function () {
342
349
  this.__applyToConsumer(r);
343
350
  return r.result;
344
351
  };
345
- //@internal
346
352
  Filter.translateCustomWhere = function (r, entity, remult) {
347
353
  return tslib_1.__awaiter(this, void 0, void 0, function () {
348
354
  var f;
@@ -758,7 +764,6 @@ function entityFilterToJson(entityDefs, where) {
758
764
  return {};
759
765
  return Filter.fromEntityFilter(entityDefs, where).toJson();
760
766
  }
761
- exports.entityFilterToJson = entityFilterToJson;
762
767
  function buildFilterFromRequestParameters(entity, filterInfo) {
763
768
  var e_5, _a;
764
769
  var where = {};
@@ -989,7 +994,6 @@ function buildFilterFromRequestParameters(entity, filterInfo) {
989
994
  return array;
990
995
  }
991
996
  }
992
- exports.buildFilterFromRequestParameters = buildFilterFromRequestParameters;
993
997
  var customTranslator = /** @class */ (function () {
994
998
  function customTranslator(translateCustom) {
995
999
  this.translateCustom = translateCustom;
@@ -1149,7 +1153,6 @@ function __updateEntityBasedOnWhere(entityDefs, where, r) {
1149
1153
  });
1150
1154
  }
1151
1155
  }
1152
- exports.__updateEntityBasedOnWhere = __updateEntityBasedOnWhere;
1153
1156
  var preciseValuesCollector = /** @class */ (function () {
1154
1157
  function preciseValuesCollector() {
1155
1158
  this.rawValues = {};
package/src/isOfType.js CHANGED
@@ -1,14 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cast = exports.isOfType = void 0;
3
+ exports.isOfType = isOfType;
4
+ exports.cast = cast;
4
5
  function isOfType(obj, checkMethod) {
5
6
  return typeof obj[checkMethod] !== 'undefined';
6
7
  }
7
- exports.isOfType = isOfType;
8
8
  function cast(obj, checkMethod) {
9
9
  if (isOfType(obj, checkMethod)) {
10
10
  return obj;
11
11
  }
12
12
  throw new Error("Object is not of type ".concat(checkMethod.toString()));
13
13
  }
14
- exports.cast = cast;