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
@@ -30,7 +30,7 @@ export function Entity(key, ...options) {
30
30
  for (const rawFilterMember in target) {
31
31
  if (Object.prototype.hasOwnProperty.call(target, rawFilterMember)) {
32
32
  const element = target[rawFilterMember];
33
- if (element?.rawFilterInfo?.rawFilterTranslator) {
33
+ if (element?.rawFilterInfo) {
34
34
  if (!element.rawFilterInfo.key)
35
35
  element.rawFilterInfo.key = rawFilterMember;
36
36
  }
@@ -137,8 +137,8 @@ class PendingInStatements {
137
137
  });
138
138
  this.values.set(val, (valHandler = {
139
139
  value: val,
140
- resolve,
141
- reject,
140
+ resolve: resolve,
141
+ reject: reject,
142
142
  result,
143
143
  }));
144
144
  }
@@ -13,6 +13,21 @@ export const flags = {
13
13
  //p1 - replace uuid with crypto.randomUUID and allow custom fallback NO
14
14
  //p1 - add nanoid - NO
15
15
  //p1 - add id and use luid by default, but allow changes with Fields.id.defaultIdProvider NO but defaultProvider yes
16
+ /*p1
17
+ * field, fieldType ,ValueListFieldType, - return optional parameter for decorators
18
+ * options to remultExpress tc... should be mandatory
19
+ * return value converter to previous typing
20
+ * add breaking change notification about findOne and findFirst and findId
21
+ */
22
+ //p1 - fix query docs to also explain how it can be used for infinite scroll and pagination.
23
+ //y1 - 'test expression columns without aliases'
24
+ //y1 - ts issue with fields - when a field is optional, it's $ is also optional and thats a problem
25
+ //p1 - vite 5.3 supports ts5 decorators - check and adapt.
26
+ //p1 - see if I can fix the no alias problem in selects
27
+ //p1 - add luid - it's cool for order by.
28
+ //p1 - replace uuid with crypto.randomUUID and allow custom fallback
29
+ //p1 - add nanoid
30
+ //p1 - add id and use luid by default, but allow changes with Fields.id.defaultIdProvider
16
31
  //p1 - explain the benefits of changing the default provider for testing in docs.
17
32
  //p1 - fix sqlite to support alter table when adding a column with ensure schema = on
18
33
  //p1 - fix app custom filters example for multiple filters.
@@ -81,7 +81,7 @@ export class myServerAction extends Action {
81
81
  options;
82
82
  originalMethod;
83
83
  constructor(name, types, options, originalMethod) {
84
- super(name, options.queue, options.allowed);
84
+ super(name, options.queue ?? false, options.allowed);
85
85
  this.types = types;
86
86
  this.options = options;
87
87
  this.originalMethod = originalMethod;
@@ -146,7 +146,9 @@ export function BackendMethod(options) {
146
146
  return await serverAction.doWork(args, undefined);
147
147
  }
148
148
  else
149
- return await originalMethod.apply(this, args);
149
+ return await originalMethod.apply(
150
+ //@ts-expect-error I specifically referred to the this of the original function - so it'll be sent inside
151
+ this, args);
150
152
  };
151
153
  registerAction(target, result);
152
154
  result[serverActionField] = serverAction;
@@ -173,7 +175,7 @@ export function BackendMethod(options) {
173
175
  reg(controllerOptions.key +
174
176
  '/' +
175
177
  (options?.apiPrefix ? options.apiPrefix + '/' : '') +
176
- key, options ? options.queue : false, options.allowed, async (d, req, res) => {
178
+ key, options ? options.queue ?? false : false, options.allowed, async (d, req, res) => {
177
179
  d.args = d.args.map((x) => (isCustomUndefined(x) ? undefined : x));
178
180
  let allowed = options.allowed;
179
181
  try {
@@ -184,22 +186,23 @@ export function BackendMethod(options) {
184
186
  if (remultStatic.allEntities.includes(constructor)) {
185
187
  let repo = remult.repo(constructor);
186
188
  let y;
187
- if (d.rowInfo.isNewRow) {
189
+ const rowInfo = d.rowInfo;
190
+ if (rowInfo.isNewRow) {
188
191
  y = repo.create();
189
192
  let rowHelper = repo.getEntityRef(y);
190
- await rowHelper._updateEntityBasedOnApi(d.rowInfo.data);
193
+ await rowHelper._updateEntityBasedOnApi(rowInfo.data);
191
194
  }
192
195
  else {
193
196
  let rows = await repo.find({
194
197
  where: {
195
- ...repo.metadata.idMetadata.getIdFilter(d.rowInfo.id),
196
- $and: [repo.metadata.options.apiPrefilter],
198
+ ...repo.metadata.idMetadata.getIdFilter(rowInfo.id),
199
+ $and: [repo.metadata.options.apiPrefilter ?? {}],
197
200
  },
198
201
  });
199
202
  if (rows.length != 1)
200
203
  throw new Error('not found or too many matches');
201
204
  y = rows[0];
202
- await repo.getEntityRef(y)._updateEntityBasedOnApi(d.rowInfo.data);
205
+ await repo.getEntityRef(y)._updateEntityBasedOnApi(rowInfo.data);
203
206
  }
204
207
  if (!remult.isAllowedForInstance(y, allowed))
205
208
  throw new ForbiddenError();
@@ -265,7 +268,7 @@ export function BackendMethod(options) {
265
268
  })(classOptions.key +
266
269
  '/' +
267
270
  (options?.apiPrefix ? options.apiPrefix + '/' : '') +
268
- key, options ? options.queue : false, options.allowed).run({
271
+ key, options?.queue ?? false, options.allowed).run({
269
272
  args,
270
273
  rowInfo: {
271
274
  data: await defs.toApiJson(),
@@ -290,7 +293,7 @@ export function BackendMethod(options) {
290
293
  })(x.classes.get(self.constructor).key +
291
294
  '/' +
292
295
  (options?.apiPrefix ? options.apiPrefix + '/' : '') +
293
- key, options ? options.queue : false, options.allowed).run({
296
+ key, options?.queue ?? false, options.allowed).run({
294
297
  args,
295
298
  fields: await defs.toApiJson(),
296
299
  }, baseUrl, http);
@@ -304,12 +307,13 @@ export function BackendMethod(options) {
304
307
  },
305
308
  };
306
309
  result = async function (...args) {
310
+ //@ts-ignore I specifically referred to the this of the original function - so it'll be sent inside
311
+ let self = this;
307
312
  if (!isBackend()) {
308
- let self = this;
309
313
  return serverAction.doWork(args, self);
310
314
  }
311
315
  else
312
- return await originalMethod.apply(this, args);
316
+ return await originalMethod.apply(self, args);
313
317
  };
314
318
  registerAction(target.constructor, result);
315
319
  result[serverActionField] = serverAction;
package/esm/src/sort.js CHANGED
@@ -83,8 +83,6 @@ export class Sort {
83
83
  * @returns {Sort} A `Sort` instance representing the translated order by.
84
84
  */
85
85
  static translateOrderByToSort(entityDefs, orderBy) {
86
- if (!orderBy)
87
- return undefined;
88
86
  let sort = new Sort();
89
87
  if (orderBy)
90
88
  for (const key in orderBy) {
@@ -28,9 +28,9 @@ export class Validators {
28
28
  static url = createValueValidator((val) => !!new URL(val), 'Invalid Url');
29
29
  static in = createValueValidatorWithArgs((val, values) => values.includes(val), (values) => `Value must be one of: ${values
30
30
  .map((y) => typeof y === 'object'
31
- ? y['id'] !== undefined
32
- ? y['id']
33
- : y.toString()
31
+ ? y?.['id'] !== undefined
32
+ ? y?.['id']
33
+ : y?.toString()
34
34
  : y)
35
35
  .join(', ')}`);
36
36
  static notNull = createValueValidator((val) => val != null, 'Should not be null');
@@ -72,7 +72,7 @@ export class ValueConverters {
72
72
  if (!val)
73
73
  return null;
74
74
  return ValueConverters.DateOnly.fromJson(ValueConverters.DateOnly.toJson(val));
75
- },
75
+ }, //when using date storage, the database expects and returns a date local and every where else we reflect on date iso
76
76
  fromDb: (val) => {
77
77
  return ValueConverters.Date.fromDb(val);
78
78
  },
@@ -141,7 +141,7 @@ export class ValueConverters {
141
141
  return r;
142
142
  },
143
143
  toInput: (x, type) => {
144
- return x?.toString();
144
+ return x?.toString() ?? '';
145
145
  },
146
146
  inputType: InputTypes.number,
147
147
  };
package/graphql.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.translateWhereToRestBody = exports.remultGraphql = void 0;
3
+ exports.remultGraphql = remultGraphql;
4
+ exports.translateWhereToRestBody = translateWhereToRestBody;
4
5
  var tslib_1 = require("tslib");
5
6
  var internals_js_1 = require("./internals.js");
6
7
  var index_js_1 = require("./index.js");
@@ -940,7 +941,6 @@ function remultGraphql(options) {
940
941
  _a));
941
942
  }
942
943
  }
943
- exports.remultGraphql = remultGraphql;
944
944
  function getQueryArgsConnection(key) {
945
945
  var queryArgsConnection = [
946
946
  {
@@ -1168,8 +1168,7 @@ function translateWhereToRestBody(fields, _a) {
1168
1168
  finally { if (e_7) throw e_7.error; }
1169
1169
  }
1170
1170
  if (where.OR) {
1171
- result.OR = where.OR.map(function (where) { return translateWhereToRestBody(fields, { where: where }).where; });
1171
+ result.OR = where.OR.map(function (where) { var _a; return (_a = translateWhereToRestBody(fields, { where: where })) === null || _a === void 0 ? void 0 : _a.where; });
1172
1172
  }
1173
1173
  return { where: result };
1174
1174
  }
1175
- exports.translateWhereToRestBody = translateWhereToRestBody;
package/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.repo = exports.SubscriptionChannel = exports.InMemoryLiveQueryStorage = exports.remult = exports.ValueConverters = exports.createValueValidator = exports.createValueValidatorWithArgs = exports.createValidatorWithArgs = exports.createValidator = exports.valueValidator = exports.Validators = exports.UrlBuilder = exports.Filter = exports.CompoundIdField = exports.Sort = exports.EventSource = exports.isBackend = exports.withRemult = exports.Remult = exports.Allow = exports.ForbiddenError = exports.ProgressListener = exports.BackendMethod = exports.Controller = exports.JsonEntityOpfsStorage = exports.JsonDataProvider = exports.dbNamesOf = exports.CustomSqlFilterBuilder = exports.SqlDatabase = exports.WebSqlDataProvider = exports.InMemoryDataProvider = exports.RestDataProvider = exports.describeEntity = exports.describeBackendMethods = exports.describeClass = exports.IdEntity = exports.Relations = exports.Fields = exports.Field = exports.getEntityRef = exports.Entity = exports.CaptionTransformer = exports.ValueListInfo = exports.getValueList = exports.ValueListFieldType = exports.getFields = exports.FieldType = exports.ControllerBase = exports.EntityBase = exports.ArrayEntityDataProvider = void 0;
3
+ exports.SubscriptionChannel = exports.InMemoryLiveQueryStorage = exports.remult = exports.ValueConverters = exports.createValueValidator = exports.createValueValidatorWithArgs = exports.createValidatorWithArgs = exports.createValidator = exports.valueValidator = exports.Validators = exports.UrlBuilder = exports.Filter = exports.CompoundIdField = exports.Sort = exports.EventSource = exports.isBackend = exports.withRemult = exports.Remult = exports.Allow = exports.ForbiddenError = exports.ProgressListener = exports.BackendMethod = exports.Controller = exports.JsonEntityOpfsStorage = exports.JsonDataProvider = exports.dbNamesOf = exports.CustomSqlFilterBuilder = exports.SqlDatabase = exports.WebSqlDataProvider = exports.InMemoryDataProvider = exports.RestDataProvider = exports.describeEntity = exports.describeBackendMethods = exports.describeClass = exports.IdEntity = exports.Relations = exports.Fields = exports.Field = exports.getEntityRef = exports.Entity = exports.CaptionTransformer = exports.ValueListInfo = exports.getValueList = exports.ValueListFieldType = exports.getFields = exports.FieldType = exports.ControllerBase = exports.EntityBase = exports.ArrayEntityDataProvider = void 0;
4
+ exports.repo = repo;
4
5
  var array_entity_data_provider_js_1 = require("./src/data-providers/array-entity-data-provider.js");
5
6
  Object.defineProperty(exports, "ArrayEntityDataProvider", { enumerable: true, get: function () { return array_entity_data_provider_js_1.ArrayEntityDataProvider; } });
6
7
  var RepositoryImplementation_js_1 = require("./src/remult3/RepositoryImplementation.js");
@@ -93,4 +94,3 @@ Object.defineProperty(exports, "SubscriptionChannel", { enumerable: true, get: f
93
94
  function repo(entity, dataProvider) {
94
95
  return remult_proxy_js_2.remult.repo(entity, dataProvider);
95
96
  }
96
- exports.repo = repo;
@@ -36,11 +36,11 @@ var DataProviderLiveQueryStorage = /** @class */ (function () {
36
36
  });
37
37
  };
38
38
  DataProviderLiveQueryStorage.prototype.add = function (_a) {
39
- var id = _a.id, entityKey = _a.entityKey, data = _a.data;
40
- return tslib_1.__awaiter(this, void 0, void 0, function () {
39
+ return tslib_1.__awaiter(this, arguments, void 0, function (_b) {
41
40
  var _this = this;
42
- return tslib_1.__generator(this, function (_b) {
43
- switch (_b.label) {
41
+ var id = _b.id, entityKey = _b.entityKey, data = _b.data;
42
+ return tslib_1.__generator(this, function (_c) {
43
+ switch (_c.label) {
44
44
  case 0: return [4 /*yield*/, this.repo.then(function (repo) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
45
45
  var q;
46
46
  return tslib_1.__generator(this, function (_a) {
@@ -56,7 +56,7 @@ var DataProviderLiveQueryStorage = /** @class */ (function () {
56
56
  });
57
57
  }); })];
58
58
  case 1:
59
- _b.sent();
59
+ _c.sent();
60
60
  return [2 /*return*/];
61
61
  }
62
62
  });
@@ -231,7 +231,7 @@ var LiveQueryStorageEntity = /** @class */ (function (_super) {
231
231
  tslib_1.__extends(LiveQueryStorageEntity, _super);
232
232
  /*@internal */
233
233
  function LiveQueryStorageEntity() {
234
- var _this = _super !== null && _super.apply(this, arguments) || this;
234
+ var _this = _super.apply(this, tslib_1.__spreadArray([], tslib_1.__read(arguments), false)) || this;
235
235
  _this.id = '';
236
236
  _this.entityKey = '';
237
237
  _this.lastUsedIso = new Date().toISOString();
@@ -1,31 +1,32 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.emptySnapshot = exports.compareMigrationSnapshot = void 0;
3
+ exports.compareMigrationSnapshot = compareMigrationSnapshot;
4
+ exports.emptySnapshot = emptySnapshot;
4
5
  var tslib_1 = require("tslib");
5
6
  var index_js_1 = require("../index.js");
6
7
  var filter_consumer_bridge_to_sql_request_js_1 = require("../src/filter/filter-consumer-bridge-to-sql-request.js");
7
8
  function compareMigrationSnapshot(_a) {
8
- var entities = _a.entities, snapshot = _a.snapshot, migrationBuilder = _a.migrationBuilder, reporter = _a.reporter;
9
- return tslib_1.__awaiter(this, void 0, void 0, function () {
10
- var processedEntities, entities_1, entities_1_1, entity, meta, e, entitySnapshot, createColumns, processedColumns, _b, _c, field, columnDbName, column, e_1_1, _d, _e, columnDbName, e_2_1, e_3_1, _f, _g, entityDbName, e_4_1;
11
- var e_3, _h, e_1, _j, e_2, _k, e_4, _l;
12
- return tslib_1.__generator(this, function (_m) {
13
- switch (_m.label) {
9
+ return tslib_1.__awaiter(this, arguments, void 0, function (_b) {
10
+ var processedEntities, entities_1, entities_1_1, entity, meta, e, entitySnapshot, createColumns, processedColumns, _c, _d, field, columnDbName, column, e_1_1, _e, _f, columnDbName, e_2_1, e_3_1, _g, _h, entityDbName, e_4_1;
11
+ var e_3, _j, e_1, _k, e_2, _l, e_4, _m;
12
+ var entities = _b.entities, snapshot = _b.snapshot, migrationBuilder = _b.migrationBuilder, reporter = _b.reporter;
13
+ return tslib_1.__generator(this, function (_o) {
14
+ switch (_o.label) {
14
15
  case 0:
15
16
  snapshot = JSON.parse(JSON.stringify(snapshot));
16
17
  processedEntities = new Set();
17
- _m.label = 1;
18
+ _o.label = 1;
18
19
  case 1:
19
- _m.trys.push([1, 23, 24, 25]);
20
+ _o.trys.push([1, 23, 24, 25]);
20
21
  entities_1 = tslib_1.__values(entities), entities_1_1 = entities_1.next();
21
- _m.label = 2;
22
+ _o.label = 2;
22
23
  case 2:
23
24
  if (!!entities_1_1.done) return [3 /*break*/, 22];
24
25
  entity = entities_1_1.value;
25
26
  meta = (0, index_js_1.repo)(entity).metadata;
26
27
  return [4 /*yield*/, (0, filter_consumer_bridge_to_sql_request_js_1.dbNamesOf)(meta, function (x) { return x; })];
27
28
  case 3:
28
- e = _m.sent();
29
+ e = _o.sent();
29
30
  processedEntities.add(e.$entityName);
30
31
  if (!(0, filter_consumer_bridge_to_sql_request_js_1.shouldCreateEntity)(meta, e)) return [3 /*break*/, 21];
31
32
  entitySnapshot = snapshot.entities[e.$entityName];
@@ -35,23 +36,23 @@ function compareMigrationSnapshot(_a) {
35
36
  reporter('create table ' + e.$entityName);
36
37
  return [4 /*yield*/, migrationBuilder.createTable(meta)];
37
38
  case 4:
38
- _m.sent();
39
+ _o.sent();
39
40
  entitySnapshot = snapshot.entities[e.$entityName] = {
40
41
  key: meta.key,
41
42
  className: meta.entityType.name,
42
43
  columns: {},
43
44
  };
44
- _m.label = 5;
45
+ _o.label = 5;
45
46
  case 5:
46
47
  processedColumns = new Set();
47
- _m.label = 6;
48
+ _o.label = 6;
48
49
  case 6:
49
- _m.trys.push([6, 12, 13, 14]);
50
- _b = (e_1 = void 0, tslib_1.__values(meta.fields)), _c = _b.next();
51
- _m.label = 7;
50
+ _o.trys.push([6, 12, 13, 14]);
51
+ _c = (e_1 = void 0, tslib_1.__values(meta.fields)), _d = _c.next();
52
+ _o.label = 7;
52
53
  case 7:
53
- if (!!_c.done) return [3 /*break*/, 11];
54
- field = _c.value;
54
+ if (!!_d.done) return [3 /*break*/, 11];
55
+ field = _d.value;
55
56
  if (!!(0, filter_consumer_bridge_to_sql_request_js_1.shouldNotCreateField)(field, e)) return [3 /*break*/, 10];
56
57
  columnDbName = e.$dbNameOf(field);
57
58
  processedColumns.add(columnDbName);
@@ -61,50 +62,50 @@ function compareMigrationSnapshot(_a) {
61
62
  reporter('add column ' + e.$entityName + '.' + columnDbName);
62
63
  return [4 /*yield*/, migrationBuilder.addColumn(meta, field)];
63
64
  case 8:
64
- _m.sent();
65
- _m.label = 9;
65
+ _o.sent();
66
+ _o.label = 9;
66
67
  case 9:
67
68
  entitySnapshot.columns[columnDbName] = { key: field.key };
68
- _m.label = 10;
69
+ _o.label = 10;
69
70
  case 10:
70
- _c = _b.next();
71
+ _d = _c.next();
71
72
  return [3 /*break*/, 7];
72
73
  case 11: return [3 /*break*/, 14];
73
74
  case 12:
74
- e_1_1 = _m.sent();
75
+ e_1_1 = _o.sent();
75
76
  e_1 = { error: e_1_1 };
76
77
  return [3 /*break*/, 14];
77
78
  case 13:
78
79
  try {
79
- if (_c && !_c.done && (_j = _b.return)) _j.call(_b);
80
+ if (_d && !_d.done && (_k = _c.return)) _k.call(_c);
80
81
  }
81
82
  finally { if (e_1) throw e_1.error; }
82
83
  return [7 /*endfinally*/];
83
84
  case 14:
84
- _m.trys.push([14, 19, 20, 21]);
85
- _d = (e_2 = void 0, tslib_1.__values(Object.keys(entitySnapshot.columns))), _e = _d.next();
86
- _m.label = 15;
85
+ _o.trys.push([14, 19, 20, 21]);
86
+ _e = (e_2 = void 0, tslib_1.__values(Object.keys(entitySnapshot.columns))), _f = _e.next();
87
+ _o.label = 15;
87
88
  case 15:
88
- if (!!_e.done) return [3 /*break*/, 18];
89
- columnDbName = _e.value;
89
+ if (!!_f.done) return [3 /*break*/, 18];
90
+ columnDbName = _f.value;
90
91
  if (!!processedColumns.has(columnDbName)) return [3 /*break*/, 17];
91
92
  reporter('remove column ' + e.$entityName + '.' + columnDbName);
92
93
  return [4 /*yield*/, migrationBuilder.removeColumn(e.$entityName, columnDbName)];
93
94
  case 16:
94
- _m.sent();
95
+ _o.sent();
95
96
  delete entitySnapshot.columns[columnDbName];
96
- _m.label = 17;
97
+ _o.label = 17;
97
98
  case 17:
98
- _e = _d.next();
99
+ _f = _e.next();
99
100
  return [3 /*break*/, 15];
100
101
  case 18: return [3 /*break*/, 21];
101
102
  case 19:
102
- e_2_1 = _m.sent();
103
+ e_2_1 = _o.sent();
103
104
  e_2 = { error: e_2_1 };
104
105
  return [3 /*break*/, 21];
105
106
  case 20:
106
107
  try {
107
- if (_e && !_e.done && (_k = _d.return)) _k.call(_d);
108
+ if (_f && !_f.done && (_l = _e.return)) _l.call(_e);
108
109
  }
109
110
  finally { if (e_2) throw e_2.error; }
110
111
  return [7 /*endfinally*/];
@@ -113,40 +114,40 @@ function compareMigrationSnapshot(_a) {
113
114
  return [3 /*break*/, 2];
114
115
  case 22: return [3 /*break*/, 25];
115
116
  case 23:
116
- e_3_1 = _m.sent();
117
+ e_3_1 = _o.sent();
117
118
  e_3 = { error: e_3_1 };
118
119
  return [3 /*break*/, 25];
119
120
  case 24:
120
121
  try {
121
- if (entities_1_1 && !entities_1_1.done && (_h = entities_1.return)) _h.call(entities_1);
122
+ if (entities_1_1 && !entities_1_1.done && (_j = entities_1.return)) _j.call(entities_1);
122
123
  }
123
124
  finally { if (e_3) throw e_3.error; }
124
125
  return [7 /*endfinally*/];
125
126
  case 25:
126
- _m.trys.push([25, 30, 31, 32]);
127
- _f = tslib_1.__values(Object.keys(snapshot.entities)), _g = _f.next();
128
- _m.label = 26;
127
+ _o.trys.push([25, 30, 31, 32]);
128
+ _g = tslib_1.__values(Object.keys(snapshot.entities)), _h = _g.next();
129
+ _o.label = 26;
129
130
  case 26:
130
- if (!!_g.done) return [3 /*break*/, 29];
131
- entityDbName = _g.value;
131
+ if (!!_h.done) return [3 /*break*/, 29];
132
+ entityDbName = _h.value;
132
133
  if (!!processedEntities.has(entityDbName)) return [3 /*break*/, 28];
133
134
  reporter('remove table ' + entityDbName);
134
135
  return [4 /*yield*/, migrationBuilder.removeTable(entityDbName)];
135
136
  case 27:
136
- _m.sent();
137
+ _o.sent();
137
138
  delete snapshot.entities[entityDbName];
138
- _m.label = 28;
139
+ _o.label = 28;
139
140
  case 28:
140
- _g = _f.next();
141
+ _h = _g.next();
141
142
  return [3 /*break*/, 26];
142
143
  case 29: return [3 /*break*/, 32];
143
144
  case 30:
144
- e_4_1 = _m.sent();
145
+ e_4_1 = _o.sent();
145
146
  e_4 = { error: e_4_1 };
146
147
  return [3 /*break*/, 32];
147
148
  case 31:
148
149
  try {
149
- if (_g && !_g.done && (_l = _f.return)) _l.call(_f);
150
+ if (_h && !_h.done && (_m = _g.return)) _m.call(_g);
150
151
  }
151
152
  finally { if (e_4) throw e_4.error; }
152
153
  return [7 /*endfinally*/];
@@ -155,11 +156,9 @@ function compareMigrationSnapshot(_a) {
155
156
  });
156
157
  });
157
158
  }
158
- exports.compareMigrationSnapshot = compareMigrationSnapshot;
159
159
  function emptySnapshot() {
160
160
  return {
161
161
  version: 1,
162
162
  entities: {},
163
163
  };
164
164
  }
165
- exports.emptySnapshot = emptySnapshot;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateMigrations = void 0;
3
+ exports.generateMigrations = generateMigrations;
4
4
  var tslib_1 = require("tslib");
5
5
  var path_1 = tslib_1.__importDefault(require("path"));
6
6
  var fs_1 = tslib_1.__importDefault(require("fs"));
@@ -101,4 +101,3 @@ function generateMigrations(options) {
101
101
  });
102
102
  });
103
103
  }
104
- exports.generateMigrations = generateMigrations;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.migrate = void 0;
3
+ exports.migrate = migrate;
4
4
  var tslib_1 = require("tslib");
5
5
  var index_js_1 = require("../index.js");
6
6
  var initDataProviderOrJson_js_1 = require("../server/initDataProviderOrJson.js");
@@ -37,7 +37,7 @@ function migrate(options) {
37
37
  VersionInfo_1 = /** @class */ (function (_super) {
38
38
  tslib_1.__extends(VersionInfo, _super);
39
39
  function VersionInfo() {
40
- var _this = _super !== null && _super.apply(this, arguments) || this;
40
+ var _this = _super.apply(this, tslib_1.__spreadArray([], tslib_1.__read(arguments), false)) || this;
41
41
  _this.version = -1;
42
42
  return _this;
43
43
  }
@@ -168,4 +168,3 @@ function migrate(options) {
168
168
  });
169
169
  });
170
170
  }
171
- exports.migrate = migrate;
@@ -40,7 +40,7 @@ export type MigrationUtils = {
40
40
  export declare class DefaultMigrationBuilder implements Required<MigrationBuilder> {
41
41
  code: MigrationCode;
42
42
  private wrapped?;
43
- constructor(code: MigrationCode, wrapped?: MigrationBuilder);
43
+ constructor(code: MigrationCode, wrapped?: MigrationBuilder | undefined);
44
44
  createTable(meta: EntityMetadata): Promise<void>;
45
45
  addColumn(meta: EntityMetadata, field: FieldMetadata): Promise<void>;
46
46
  removeTable(entityDbName: string): Promise<void>;
@@ -8,8 +8,8 @@ var DefaultMigrationBuilder = /** @class */ (function () {
8
8
  this.wrapped = wrapped;
9
9
  }
10
10
  DefaultMigrationBuilder.prototype.createTable = function (meta) {
11
- var _a;
12
11
  return tslib_1.__awaiter(this, void 0, void 0, function () {
12
+ var _a;
13
13
  return tslib_1.__generator(this, function (_b) {
14
14
  switch (_b.label) {
15
15
  case 0:
@@ -27,8 +27,8 @@ var DefaultMigrationBuilder = /** @class */ (function () {
27
27
  });
28
28
  };
29
29
  DefaultMigrationBuilder.prototype.addColumn = function (meta, field) {
30
- var _a;
31
30
  return tslib_1.__awaiter(this, void 0, void 0, function () {
31
+ var _a;
32
32
  return tslib_1.__generator(this, function (_b) {
33
33
  switch (_b.label) {
34
34
  case 0:
@@ -46,8 +46,8 @@ var DefaultMigrationBuilder = /** @class */ (function () {
46
46
  });
47
47
  };
48
48
  DefaultMigrationBuilder.prototype.removeTable = function (entityDbName) {
49
- var _a;
50
49
  return tslib_1.__awaiter(this, void 0, void 0, function () {
50
+ var _a;
51
51
  return tslib_1.__generator(this, function (_b) {
52
52
  switch (_b.label) {
53
53
  case 0:
@@ -65,8 +65,8 @@ var DefaultMigrationBuilder = /** @class */ (function () {
65
65
  });
66
66
  };
67
67
  DefaultMigrationBuilder.prototype.removeColumn = function (entityName, columnDbName) {
68
- var _a;
69
68
  return tslib_1.__awaiter(this, void 0, void 0, function () {
69
+ var _a;
70
70
  return tslib_1.__generator(this, function (_b) {
71
71
  switch (_b.label) {
72
72
  case 0:
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  // consider replacing with https://www.npmjs.com/package/ts-morph
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.updateMigrationsFile = void 0;
4
+ exports.updateMigrationsFile = updateMigrationsFile;
5
5
  var tslib_1 = require("tslib");
6
6
  function updateMigrationsFile(filePath, steps) {
7
7
  return tslib_1.__awaiter(this, void 0, void 0, function () {
@@ -138,4 +138,3 @@ function updateMigrationsFile(filePath, steps) {
138
138
  });
139
139
  });
140
140
  }
141
- exports.updateMigrationsFile = updateMigrationsFile;
package/myLog.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.writeToLog = void 0;
3
+ exports.writeToLog = writeToLog;
4
4
  var tslib_1 = require("tslib");
5
5
  function writeToLog(what) {
6
6
  return tslib_1.__awaiter(this, void 0, void 0, function () {
@@ -17,4 +17,3 @@ function writeToLog(what) {
17
17
  });
18
18
  });
19
19
  }
20
- exports.writeToLog = writeToLog;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "remult",
3
- "version": "0.26.23",
3
+ "version": "0.27.0",
4
4
  "description": "A CRUD framework for full-stack TypeScript",
5
5
  "homepage": "https://remult.dev",
6
6
  "repository": {
@@ -24,10 +24,10 @@ export declare class PostgresDataProvider implements SqlImplementation, CanBuild
24
24
  caseInsensitiveIdentifiers?: boolean;
25
25
  schema?: string;
26
26
  orderByNullsFirst?: boolean;
27
- });
27
+ } | undefined);
28
28
  end(): Promise<void>;
29
29
  provideMigrationBuilder(builder: MigrationCode): MigrationBuilder;
30
- wrapIdentifier: (name: any) => any;
30
+ wrapIdentifier: (name: string) => string;
31
31
  ensureSchema(entities: EntityMetadata<any>[]): Promise<void>;
32
32
  orderByNullsFirst?: boolean;
33
33
  transaction(action: (dataProvider: SqlImplementation) => Promise<void>): Promise<void>;