Socket
Socket
Sign inDemoInstall

remult

Package Overview
Dependencies
5
Maintainers
2
Versions
540
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.25.7-exp.1 to 0.25.7-exp.2

69

esm/src/data-api.js

@@ -33,2 +33,6 @@ import { doTransaction } from './context.js';

return this.count(res, req, body);
case 'deleteMany':
return this.deleteMany(res, req, body);
case 'updateMany':
return this.updateMany(res, req, body);
case 'endLiveQuery':

@@ -64,2 +68,20 @@ await this.remult.liveQueryStorage.remove(body.id);

}
async deleteMany(response, request, filterBody) {
try {
return await doTransaction(this.remult, async () => {
let deleted = 0;
for await (const x of this.repository.query({
where: await this.buildWhere(request, filterBody),
include: this.includeNone(),
})) {
await this.actualDelete(x);
deleted++;
}
response.success({ deleted });
});
}
catch (err) {
response.error(err);
}
}
async getArrayImpl(response, request, filterBody) {

@@ -224,21 +246,44 @@ let findOptions = {

}
async updateMany(response, request, body) {
try {
return await doTransaction(this.remult, async () => {
let updated = 0;
for await (const x of this.repository.query({
where: await this.buildWhere(request, body.where),
include: this.includeNone(),
})) {
await this.actualUpdate(x, body.set);
updated++;
}
response.success({ updated });
});
}
catch (err) {
response.error(err);
}
}
async actualUpdate(row, body) {
let ref = this.repository.getEntityRef(row);
await ref._updateEntityBasedOnApi(body);
if (!ref.apiUpdateAllowed) {
throw new ForbiddenError();
}
await ref.save();
return ref;
}
async put(response, id, body) {
await this.doOnId(response, id, async (row) => {
let ref = this.repository.getEntityRef(row);
await ref._updateEntityBasedOnApi(body);
if (!ref.apiUpdateAllowed) {
response.forbidden();
return;
}
await ref.save();
const ref = await this.actualUpdate(row, body);
response.success(ref.toApiJson());
});
}
async actualDelete(row) {
if (!this.repository.getEntityRef(row).apiDeleteAllowed) {
throw new ForbiddenError();
}
await this.repository.getEntityRef(row).delete();
}
async delete(response, id) {
await this.doOnId(response, id, async (row) => {
if (!this.repository.getEntityRef(row).apiDeleteAllowed) {
response.forbidden();
return;
}
await this.repository.getEntityRef(row).delete();
await this.actualDelete(row);
response.deleted();

@@ -245,0 +290,0 @@ });

34

esm/src/data-providers/array-entity-data-provider.js

@@ -6,2 +6,3 @@ import { CompoundIdField } from '../CompoundIdField.js';

entity;
rows;
static rawFilter(filter) {

@@ -14,10 +15,5 @@ return {

}
//@internal
rows;
constructor(entity, rows) {
this.entity = entity;
if (rows === undefined)
this.rows = [];
else
this.rows = rows;
this.rows = rows;
}

@@ -31,3 +27,3 @@ //@internal

this.__names = await dbNamesOf(this.entity, (x) => x);
for (const r of this.rows) {
for (const r of this.rows()) {
this.verifyThatRowHasAllNotNullColumns(r, this.__names);

@@ -59,3 +55,3 @@ }

async count(where) {
let rows = this.rows;
let rows = this.rows();
const names = await this.init();

@@ -77,3 +73,3 @@ let j = 0;

async find(options) {
let rows = this.rows;
let rows = this.rows();
const dbNames = await this.init();

@@ -130,4 +126,4 @@ if (options) {

let keys = Object.keys(data);
for (let i = 0; i < this.rows.length; i++) {
let r = this.rows[i];
for (let i = 0; i < this.rows().length; i++) {
let r = this.rows()[i];
if (idMatches(r)) {

@@ -143,4 +139,4 @@ let newR = { ...r };

this.verifyThatRowHasAllNotNullColumns(newR, names);
this.rows[i] = newR;
return Promise.resolve(this.translateFromJson(this.rows[i], names));
this.rows()[i] = newR;
return Promise.resolve(this.translateFromJson(this.rows()[i], names));
}

@@ -153,5 +149,5 @@ }

let idMatches = this.idMatches(id, names);
for (let i = 0; i < this.rows.length; i++) {
if (idMatches(this.rows[i])) {
this.rows.splice(i, 1);
for (let i = 0; i < this.rows().length; i++) {
if (idMatches(this.rows()[i])) {
this.rows().splice(i, 1);
return Promise.resolve();

@@ -169,3 +165,3 @@ }

j[idf.key] = 1;
for (const row of this.rows) {
for (const row of this.rows()) {
if (row[idf.key] >= j[idf.key])

@@ -176,3 +172,3 @@ j[idf.key] = row[idf.key] + 1;

if (j[idf.key])
this.rows.forEach((i) => {
this.rows().forEach((i) => {
if (j[idf.key] == i[idf.key])

@@ -183,3 +179,3 @@ throw Error('id already exists');

this.verifyThatRowHasAllNotNullColumns(j, names);
this.rows.push(j);
this.rows().push(j);
return Promise.resolve(this.translateFromJson(j, names));

@@ -186,0 +182,0 @@ }

import { ArrayEntityDataProvider } from './array-entity-data-provider.js';
export class InMemoryDataProvider {
async transaction(action) {
await action(this);
let before = JSON.stringify(this.rows);
try {
await action(this);
}
catch (e) {
this.rows = JSON.parse(before);
throw e;
}
}

@@ -11,3 +18,3 @@ rows = {};

this.rows[name] = [];
return new ArrayEntityDataProvider(entity, this.rows[name]);
return new ArrayEntityDataProvider(entity, () => this.rows[name]);
}

@@ -14,0 +21,0 @@ toString() {

@@ -27,3 +27,3 @@ import { ArrayEntityDataProvider } from './array-entity-data-provider.js';

data = JSON.parse(s);
let dp = new ArrayEntityDataProvider(this.entity, data);
let dp = new ArrayEntityDataProvider(this.entity, () => data);
return what(dp, async () => await this.helper.setItem(dbName, JSON.stringify(data, undefined, 2)));

@@ -30,0 +30,0 @@ }

@@ -122,2 +122,10 @@ import { UrlBuilder } from '../../urlBuilder.js';

}
async deleteMany(where) {
const { run } = this.buildFindRequest({ where }, true);
return run('deleteMany').then((r) => +r.deleted);
}
async updateMany(where, data) {
const { run } = this.buildFindRequest({ where }, true);
return run('updateMany', { set: this.toJsonOfIncludedKeys(data) }).then((r) => +r.updated);
}
find(options) {

@@ -128,3 +136,3 @@ let { run } = this.buildFindRequest(options);

//@internal
buildFindRequest(options) {
buildFindRequest(options, forcePost = false) {
let url = new UrlBuilder(this.url());

@@ -135,3 +143,4 @@ let filterObject;

filterObject = options.where.toJson(); // options.where.__applyToConsumer(new FilterConsumnerBridgeToUrlBuilder(url));
if (addFilterToUrlAndReturnTrueIfSuccessful(filterObject, url))
if (!forcePost &&
addFilterToUrlAndReturnTrueIfSuccessful(filterObject, url))
filterObject = undefined;

@@ -163,3 +172,3 @@ }

}
const run = (action) => {
const run = (action, body) => {
let u = new UrlBuilder(url.url);

@@ -171,4 +180,8 @@ if (!action && filterObject) {

u.add('__action', action);
if (filterObject) {
return this.http().post(u.url, filterObject);
if (filterObject || forcePost) {
if (!body)
body = filterObject;
else
body = { ...body, where: filterObject };
return this.http().post(u.url, body);
}

@@ -195,2 +208,7 @@ else

update(id, data) {
return this.http()
.put(this.url() + '/' + encodeURIComponent(id), this.toJsonOfIncludedKeys(data))
.then((y) => this.translateFromJson(y));
}
toJsonOfIncludedKeys(data) {
let result = {};

@@ -202,5 +220,3 @@ let keys = Object.keys(data);

}
return this.http()
.put(this.url() + '/' + encodeURIComponent(id), result)
.then((y) => this.translateFromJson(y));
return result;
}

@@ -215,2 +231,7 @@ delete(id) {

}
insertMany(data) {
return this.http()
.post(this.url(), data.map((data) => this.translateToJson(data)))
.then((y) => y.map((y) => this.translateFromJson(y)));
}
}

@@ -217,0 +238,0 @@ export class RestDataProviderHttpProviderUsingFetch {

@@ -16,8 +16,2 @@ export {};

//p1 - add section to Fields doc, explaining field type in db
/*p1 - JYC - Delete many, update many, insert many
//p1 - @jycouet regarding required - are you ok with leaving '' as not a good value? (0 will be a good value)
- post + __action=delet
*/
//p1 - JYC - there should be a required that says not null or undefined, but space, 0 etc... should be ok - NOAM- check if removing zero is good enough
/*y1 - Talk JYC - JYC - add some integrity checks on delete

@@ -28,2 +22,3 @@ - soft delete

*/
//y1 תגיד - updateMany צריך להחזיר את השורות שעודכנו (כמו update או insert) או כמה שורות עודכנו (כמו deleteMany)
/*y1 currency.ts:10 Uncaught TypeError: Currency_1 is not a constructor

@@ -30,0 +25,0 @@

{
"name": "remult",
"version": "0.25.7-exp.1",
"version": "0.25.7-exp.2",
"description": "A CRUD framework for full-stack TypeScript",

@@ -5,0 +5,0 @@ "homepage": "https://remult.dev",

import type { Remult } from './context.js';
import type { ErrorInfo } from './data-interfaces.js';
import type { FindOptions, Repository } from './remult3/remult3.js';
import type { rowHelperImplementation } from './remult3/RepositoryImplementation.js';
export declare class DataApi<T = any> {

@@ -13,2 +14,3 @@ private repository;

count(response: DataApiResponse, request: DataApiRequest, filterBody?: any): Promise<void>;
deleteMany(response: DataApiResponse, request: DataApiRequest, filterBody?: any): Promise<void>;
getArrayImpl(response: DataApiResponse, request: DataApiRequest, filterBody: any): Promise<{

@@ -23,3 +25,6 @@ r: any[];

private doOnId;
updateMany(response: DataApiResponse, request: DataApiRequest, body?: any): Promise<void>;
actualUpdate(row: any, body: any): Promise<rowHelperImplementation<T>>;
put(response: DataApiResponse, id: any, body: any): Promise<void>;
actualDelete(row: any): Promise<void>;
delete(response: DataApiResponse, id: any): Promise<void>;

@@ -26,0 +31,0 @@ post(response: DataApiResponse, body: any): Promise<void>;

@@ -39,13 +39,17 @@ "use strict";

case 'count': return [3 /*break*/, 2];
case 'endLiveQuery': return [3 /*break*/, 3];
case 'deleteMany': return [3 /*break*/, 3];
case 'updateMany': return [3 /*break*/, 4];
case 'endLiveQuery': return [3 /*break*/, 5];
}
return [3 /*break*/, 5];
return [3 /*break*/, 7];
case 1: return [2 /*return*/, this.getArray(res, req, body)];
case 2: return [2 /*return*/, this.count(res, req, body)];
case 3: return [4 /*yield*/, this.remult.liveQueryStorage.remove(body.id)];
case 4:
case 3: return [2 /*return*/, this.deleteMany(res, req, body)];
case 4: return [2 /*return*/, this.updateMany(res, req, body)];
case 5: return [4 /*yield*/, this.remult.liveQueryStorage.remove(body.id)];
case 6:
_b.sent();
res.success('ok');
return [2 /*return*/];
case 5: return [2 /*return*/, this.post(res, body)];
case 7: return [2 /*return*/, this.post(res, body)];
}

@@ -107,2 +111,77 @@ });

};
DataApi.prototype.deleteMany = function (response, request, filterBody) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var err_2;
var _this = this;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
return [4 /*yield*/, (0, context_js_1.doTransaction)(this.remult, function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var deleted, _a, _b, _c, _d, _e, x, e_1_1;
var _f;
var _g, e_1, _h, _j;
return tslib_1.__generator(this, function (_k) {
switch (_k.label) {
case 0:
deleted = 0;
_k.label = 1;
case 1:
_k.trys.push([1, 8, 9, 14]);
_a = true;
_e = (_d = this.repository).query;
_f = {};
return [4 /*yield*/, this.buildWhere(request, filterBody)];
case 2:
_b = tslib_1.__asyncValues.apply(void 0, [_e.apply(_d, [(_f.where = _k.sent(),
_f.include = this.includeNone(),
_f)])]);
_k.label = 3;
case 3: return [4 /*yield*/, _b.next()];
case 4:
if (!(_c = _k.sent(), _g = _c.done, !_g)) return [3 /*break*/, 7];
_j = _c.value;
_a = false;
x = _j;
return [4 /*yield*/, this.actualDelete(x)];
case 5:
_k.sent();
deleted++;
_k.label = 6;
case 6:
_a = true;
return [3 /*break*/, 3];
case 7: return [3 /*break*/, 14];
case 8:
e_1_1 = _k.sent();
e_1 = { error: e_1_1 };
return [3 /*break*/, 14];
case 9:
_k.trys.push([9, , 12, 13]);
if (!(!_a && !_g && (_h = _b.return))) return [3 /*break*/, 11];
return [4 /*yield*/, _h.call(_b)];
case 10:
_k.sent();
_k.label = 11;
case 11: return [3 /*break*/, 13];
case 12:
if (e_1) throw e_1.error;
return [7 /*endfinally*/];
case 13: return [7 /*endfinally*/];
case 14:
response.success({ deleted: deleted });
return [2 /*return*/];
}
});
}); })];
case 1: return [2 /*return*/, _a.sent()];
case 2:
err_2 = _a.sent();
response.error(err_2);
return [3 /*break*/, 3];
case 3: return [2 /*return*/];
}
});
});
};
DataApi.prototype.getArrayImpl = function (response, request, filterBody) {

@@ -188,3 +267,3 @@ return tslib_1.__awaiter(this, void 0, void 0, function () {

DataApi.prototype.includeNone = function () {
var e_1, _a;
var e_2, _a;
var include = {};

@@ -199,3 +278,3 @@ try {

}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {

@@ -205,3 +284,3 @@ try {

}
finally { if (e_1) throw e_1.error; }
finally { if (e_2) throw e_2.error; }
}

@@ -212,3 +291,3 @@ return include;

return tslib_1.__awaiter(this, void 0, void 0, function () {
var r, err_2;
var r, err_3;
return tslib_1.__generator(this, function (_a) {

@@ -230,7 +309,7 @@ switch (_a.label) {

case 3:
err_2 = _a.sent();
if (err_2.isForbiddenError)
err_3 = _a.sent();
if (err_3.isForbiddenError)
response.forbidden();
else
response.error(err_2);
response.error(err_3);
return [3 /*break*/, 4];

@@ -244,3 +323,3 @@ case 4: return [2 /*return*/];

return tslib_1.__awaiter(this, void 0, void 0, function () {
var r, data, err_3;
var r, data, err_4;
var _a;

@@ -278,7 +357,7 @@ var _this = this;

case 5:
err_3 = _b.sent();
if (err_3.isForbiddenError)
err_4 = _b.sent();
if (err_4.isForbiddenError)
response.forbidden();
else
response.error(err_3);
response.error(err_4);
return [3 /*break*/, 6];

@@ -329,3 +408,3 @@ case 6: return [2 /*return*/];

return tslib_1.__awaiter(this, void 0, void 0, function () {
var where, _a, _b, err_4;
var where, _a, _b, err_5;
var _this = this;

@@ -377,4 +456,4 @@ return tslib_1.__generator(this, function (_c) {

case 5:
err_4 = _c.sent();
response.error(err_4);
err_5 = _c.sent();
response.error(err_5);
return [3 /*break*/, 6];

@@ -386,2 +465,98 @@ case 6: return [2 /*return*/];

};
DataApi.prototype.updateMany = function (response, request, body) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var err_6;
var _this = this;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
return [4 /*yield*/, (0, context_js_1.doTransaction)(this.remult, function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var updated, _a, _b, _c, _d, _e, x, e_3_1;
var _f;
var _g, e_3, _h, _j;
return tslib_1.__generator(this, function (_k) {
switch (_k.label) {
case 0:
updated = 0;
_k.label = 1;
case 1:
_k.trys.push([1, 8, 9, 14]);
_a = true;
_e = (_d = this.repository).query;
_f = {};
return [4 /*yield*/, this.buildWhere(request, body.where)];
case 2:
_b = tslib_1.__asyncValues.apply(void 0, [_e.apply(_d, [(_f.where = _k.sent(),
_f.include = this.includeNone(),
_f)])]);
_k.label = 3;
case 3: return [4 /*yield*/, _b.next()];
case 4:
if (!(_c = _k.sent(), _g = _c.done, !_g)) return [3 /*break*/, 7];
_j = _c.value;
_a = false;
x = _j;
return [4 /*yield*/, this.actualUpdate(x, body.set)];
case 5:
_k.sent();
updated++;
_k.label = 6;
case 6:
_a = true;
return [3 /*break*/, 3];
case 7: return [3 /*break*/, 14];
case 8:
e_3_1 = _k.sent();
e_3 = { error: e_3_1 };
return [3 /*break*/, 14];
case 9:
_k.trys.push([9, , 12, 13]);
if (!(!_a && !_g && (_h = _b.return))) return [3 /*break*/, 11];
return [4 /*yield*/, _h.call(_b)];
case 10:
_k.sent();
_k.label = 11;
case 11: return [3 /*break*/, 13];
case 12:
if (e_3) throw e_3.error;
return [7 /*endfinally*/];
case 13: return [7 /*endfinally*/];
case 14:
response.success({ updated: updated });
return [2 /*return*/];
}
});
}); })];
case 1: return [2 /*return*/, _a.sent()];
case 2:
err_6 = _a.sent();
response.error(err_6);
return [3 /*break*/, 3];
case 3: return [2 /*return*/];
}
});
});
};
DataApi.prototype.actualUpdate = function (row, body) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var ref;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
ref = this.repository.getEntityRef(row);
return [4 /*yield*/, ref._updateEntityBasedOnApi(body)];
case 1:
_a.sent();
if (!ref.apiUpdateAllowed) {
throw new server_action_js_1.ForbiddenError();
}
return [4 /*yield*/, ref.save()];
case 2:
_a.sent();
return [2 /*return*/, ref];
}
});
});
};
DataApi.prototype.put = function (response, id, body) {

@@ -396,14 +571,5 @@ return tslib_1.__awaiter(this, void 0, void 0, function () {

switch (_a.label) {
case 0:
ref = this.repository.getEntityRef(row);
return [4 /*yield*/, ref._updateEntityBasedOnApi(body)];
case 0: return [4 /*yield*/, this.actualUpdate(row, body)];
case 1:
_a.sent();
if (!ref.apiUpdateAllowed) {
response.forbidden();
return [2 /*return*/];
}
return [4 /*yield*/, ref.save()];
case 2:
_a.sent();
ref = _a.sent();
response.success(ref.toApiJson());

@@ -421,2 +587,18 @@ return [2 /*return*/];

};
DataApi.prototype.actualDelete = function (row) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!this.repository.getEntityRef(row).apiDeleteAllowed) {
throw new server_action_js_1.ForbiddenError();
}
return [4 /*yield*/, this.repository.getEntityRef(row).delete()];
case 1:
_a.sent();
return [2 /*return*/];
}
});
});
};
DataApi.prototype.delete = function (response, id) {

@@ -430,8 +612,3 @@ return tslib_1.__awaiter(this, void 0, void 0, function () {

switch (_a.label) {
case 0:
if (!this.repository.getEntityRef(row).apiDeleteAllowed) {
response.forbidden();
return [2 /*return*/];
}
return [4 /*yield*/, this.repository.getEntityRef(row).delete()];
case 0: return [4 /*yield*/, this.actualDelete(row)];
case 1:

@@ -453,3 +630,3 @@ _a.sent();

return tslib_1.__awaiter(this, void 0, void 0, function () {
var insert_1, result_1, _a, _b, err_5;
var insert_1, result_1, _a, _b, err_7;
var _this = this;

@@ -482,4 +659,4 @@ return tslib_1.__generator(this, function (_c) {

return [4 /*yield*/, (0, context_js_1.doTransaction)(this.remult, function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var body_1, body_1_1, item, _a, _b, e_2_1;
var e_2, _c;
var body_1, body_1_1, item, _a, _b, e_4_1;
var e_4, _c;
return tslib_1.__generator(this, function (_d) {

@@ -504,4 +681,4 @@ switch (_d.label) {

case 5:
e_2_1 = _d.sent();
e_2 = { error: e_2_1 };
e_4_1 = _d.sent();
e_4 = { error: e_4_1 };
return [3 /*break*/, 7];

@@ -512,3 +689,3 @@ case 6:

}
finally { if (e_2) throw e_2.error; }
finally { if (e_4) throw e_4.error; }
return [7 /*endfinally*/];

@@ -531,7 +708,7 @@ case 7: return [2 /*return*/];

case 5:
err_5 = _c.sent();
if (err_5.isForbiddenError)
err_7 = _c.sent();
if (err_7.isForbiddenError)
response.forbidden();
else
response.error(err_5);
response.error(err_7);
return [3 /*break*/, 6];

@@ -538,0 +715,0 @@ case 6: return [2 /*return*/];

@@ -20,2 +20,7 @@ import type { Filter } from './filter/filter-interfaces.js';

}
export interface ProxyEntityDataProvider {
insertMany(data: any[]): Promise<any[]>;
deleteMany(where: Filter): Promise<number>;
updateMany(where: Filter, data: any): Promise<number>;
}
export interface EntityDataProviderFindOptions {

@@ -22,0 +27,0 @@ where?: Filter;

@@ -6,4 +6,5 @@ import type { EntityDataProvider, EntityDataProviderFindOptions } from '../data-interfaces.js';

private entity;
private rows;
static rawFilter(filter: CustomArrayFilter): EntityFilter<any>;
constructor(entity: EntityMetadata, rows?: any[]);
constructor(entity: EntityMetadata, rows: () => any[]);
count(where?: Filter): Promise<number>;

@@ -10,0 +11,0 @@ find(options?: EntityDataProviderFindOptions): Promise<any[]>;

@@ -11,6 +11,3 @@ "use strict";

this.entity = entity;
if (rows === undefined)
this.rows = [];
else
this.rows = rows;
this.rows = rows;
}

@@ -40,3 +37,3 @@ ArrayEntityDataProvider.rawFilter = function (filter) {

try {
for (_b = tslib_1.__values(this.rows), _c = _b.next(); !_c.done; _c = _b.next()) {
for (_b = tslib_1.__values(this.rows()), _c = _b.next(); !_c.done; _c = _b.next()) {
r = _c.value;

@@ -96,3 +93,3 @@ this.verifyThatRowHasAllNotNullColumns(r, this.__names);

case 0:
rows = this.rows;
rows = this.rows();
return [4 /*yield*/, this.init()];

@@ -125,3 +122,3 @@ case 1:

case 0:
rows = this.rows;
rows = this.rows();
return [4 /*yield*/, this.init()];

@@ -213,4 +210,4 @@ case 1:

keys = Object.keys(data);
for (i = 0; i < this.rows.length; i++) {
r = this.rows[i];
for (i = 0; i < this.rows().length; i++) {
r = this.rows()[i];
if (idMatches(r)) {

@@ -236,4 +233,4 @@ newR = tslib_1.__assign({}, r);

this.verifyThatRowHasAllNotNullColumns(newR, names);
this.rows[i] = newR;
return [2 /*return*/, Promise.resolve(this.translateFromJson(this.rows[i], names))];
this.rows()[i] = newR;
return [2 /*return*/, Promise.resolve(this.translateFromJson(this.rows()[i], names))];
}

@@ -255,5 +252,5 @@ }

idMatches = this.idMatches(id, names);
for (i = 0; i < this.rows.length; i++) {
if (idMatches(this.rows[i])) {
this.rows.splice(i, 1);
for (i = 0; i < this.rows().length; i++) {
if (idMatches(this.rows()[i])) {
this.rows().splice(i, 1);
return [2 /*return*/, Promise.resolve()];

@@ -282,3 +279,3 @@ }

try {
for (_a = tslib_1.__values(this.rows), _b = _a.next(); !_b.done; _b = _a.next()) {
for (_a = tslib_1.__values(this.rows()), _b = _a.next(); !_b.done; _b = _a.next()) {
row = _b.value;

@@ -298,3 +295,3 @@ if (row[idf.key] >= j[idf.key])

if (j[idf.key])
this.rows.forEach(function (i) {
this.rows().forEach(function (i) {
if (j[idf.key] == i[idf.key])

@@ -305,3 +302,3 @@ throw Error('id already exists');

this.verifyThatRowHasAllNotNullColumns(j, names);
this.rows.push(j);
this.rows().push(j);
return [2 /*return*/, Promise.resolve(this.translateFromJson(j, names))];

@@ -308,0 +305,0 @@ }

@@ -12,8 +12,19 @@ "use strict";

return tslib_1.__awaiter(this, void 0, void 0, function () {
var before, e_1;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, action(this)];
case 0:
before = JSON.stringify(this.rows);
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4 /*yield*/, action(this)];
case 2:
_a.sent();
return [2 /*return*/];
return [3 /*break*/, 4];
case 3:
e_1 = _a.sent();
this.rows = JSON.parse(before);
throw e_1;
case 4: return [2 /*return*/];
}

@@ -24,6 +35,7 @@ });

InMemoryDataProvider.prototype.getEntityDataProvider = function (entity) {
var _this = this;
var name = entity.key;
if (!this.rows[name])
this.rows[name] = [];
return new array_entity_data_provider_js_1.ArrayEntityDataProvider(entity, this.rows[name]);
return new array_entity_data_provider_js_1.ArrayEntityDataProvider(entity, function () { return _this.rows[name]; });
};

@@ -30,0 +42,0 @@ InMemoryDataProvider.prototype.toString = function () {

@@ -50,3 +50,3 @@ "use strict";

data = JSON.parse(s);
dp = new array_entity_data_provider_js_1.ArrayEntityDataProvider(this.entity, data);
dp = new array_entity_data_provider_js_1.ArrayEntityDataProvider(this.entity, function () { return data; });
return [2 /*return*/, what(dp, function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {

@@ -53,0 +53,0 @@ switch (_a.label) {

@@ -1,2 +0,2 @@

import type { DataProvider, EntityDataProvider, EntityDataProviderFindOptions, RestDataProviderHttpProvider } from '../data-interfaces.js';
import type { DataProvider, EntityDataProvider, EntityDataProviderFindOptions, ProxyEntityDataProvider, RestDataProviderHttpProvider } from '../data-interfaces.js';
import { UrlBuilder } from '../../urlBuilder.js';

@@ -13,3 +13,3 @@ import type { ApiClient } from '../context.js';

}
export declare class RestEntityDataProvider implements EntityDataProvider {
export declare class RestEntityDataProvider implements EntityDataProvider, ProxyEntityDataProvider {
private url;

@@ -22,6 +22,10 @@ private http;

count(where: Filter): Promise<number>;
deleteMany(where: Filter): Promise<number>;
updateMany(where: Filter, data: any): Promise<number>;
find(options?: EntityDataProviderFindOptions): Promise<Array<any>>;
update(id: any, data: any): Promise<any>;
private toJsonOfIncludedKeys;
delete(id: any): Promise<void>;
insert(data: any): Promise<any>;
insertMany(data: any[]): Promise<any[]>;
}

@@ -28,0 +32,0 @@ export declare class RestDataProviderHttpProviderUsingFetch implements RestDataProviderHttpProvider {

@@ -164,2 +164,20 @@ "use strict";

};
RestEntityDataProvider.prototype.deleteMany = function (where) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var run;
return tslib_1.__generator(this, function (_a) {
run = this.buildFindRequest({ where: where }, true).run;
return [2 /*return*/, run('deleteMany').then(function (r) { return +r.deleted; })];
});
});
};
RestEntityDataProvider.prototype.updateMany = function (where, data) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var run;
return tslib_1.__generator(this, function (_a) {
run = this.buildFindRequest({ where: where }, true).run;
return [2 /*return*/, run('updateMany', { set: this.toJsonOfIncludedKeys(data) }).then(function (r) { return +r.updated; })];
});
});
};
RestEntityDataProvider.prototype.find = function (options) {

@@ -171,4 +189,5 @@ var _this = this;

//@internal
RestEntityDataProvider.prototype.buildFindRequest = function (options) {
RestEntityDataProvider.prototype.buildFindRequest = function (options, forcePost) {
var _this = this;
if (forcePost === void 0) { forcePost = false; }
var url = new urlBuilder_js_1.UrlBuilder(this.url());

@@ -179,3 +198,4 @@ var filterObject;

filterObject = options.where.toJson(); // options.where.__applyToConsumer(new FilterConsumnerBridgeToUrlBuilder(url));
if (addFilterToUrlAndReturnTrueIfSuccessful(filterObject, url))
if (!forcePost &&
addFilterToUrlAndReturnTrueIfSuccessful(filterObject, url))
filterObject = undefined;

@@ -207,3 +227,3 @@ }

}
var run = function (action) {
var run = function (action, body) {
var u = new urlBuilder_js_1.UrlBuilder(url.url);

@@ -215,4 +235,8 @@ if (!action && filterObject) {

u.add('__action', action);
if (filterObject) {
return _this.http().post(u.url, filterObject);
if (filterObject || forcePost) {
if (!body)
body = filterObject;
else
body = tslib_1.__assign(tslib_1.__assign({}, body), { where: filterObject });
return _this.http().post(u.url, body);
}

@@ -252,4 +276,9 @@ else

RestEntityDataProvider.prototype.update = function (id, data) {
var _this = this;
return this.http()
.put(this.url() + '/' + encodeURIComponent(id), this.toJsonOfIncludedKeys(data))
.then(function (y) { return _this.translateFromJson(y); });
};
RestEntityDataProvider.prototype.toJsonOfIncludedKeys = function (data) {
var e_4, _a;
var _this = this;
var result = {};

@@ -271,5 +300,3 @@ var keys = Object.keys(data);

}
return this.http()
.put(this.url() + '/' + encodeURIComponent(id), result)
.then(function (y) { return _this.translateFromJson(y); });
return result;
};

@@ -285,2 +312,8 @@ RestEntityDataProvider.prototype.delete = function (id) {

};
RestEntityDataProvider.prototype.insertMany = function (data) {
var _this = this;
return this.http()
.post(this.url(), data.map(function (data) { return _this.translateToJson(data); }))
.then(function (y) { return y.map(function (y) { return _this.translateFromJson(y); }); });
};
return RestEntityDataProvider;

@@ -287,0 +320,0 @@ }());

@@ -321,2 +321,6 @@ import type { ErrorInfo, FieldOptions } from '../../index.js';

update(id: Partial<MembersOnly<entityType>>, item: Partial<MembersOnly<entityType>>): Promise<entityType>;
/**
* Updates all items that match the `where` condition.
*/
updateMany(where: EntityFilter<entityType>, item: Partial<MembersOnly<entityType>>): Promise<number>;
/** Deletes an Item*/

@@ -329,2 +333,6 @@ delete(id: entityType extends {

delete(item: Partial<MembersOnly<entityType>>): Promise<void>;
/**
* Deletes all items that match the `where` condition.
*/
deleteMany(where: EntityFilter<entityType>): Promise<number>;
/** Creates an instance of an item. It'll not be saved to the data source unless `save` or `insert` will be called for that item */

@@ -331,0 +339,0 @@ create(item?: Partial<MembersOnly<entityType>>): entityType;

@@ -17,8 +17,2 @@ "use strict";

//p1 - add section to Fields doc, explaining field type in db
/*p1 - JYC - Delete many, update many, insert many
//p1 - @jycouet regarding required - are you ok with leaving '' as not a good value? (0 will be a good value)
- post + __action=delet
*/
//p1 - JYC - there should be a required that says not null or undefined, but space, 0 etc... should be ok - NOAM- check if removing zero is good enough
/*y1 - Talk JYC - JYC - add some integrity checks on delete

@@ -29,2 +23,3 @@ - soft delete

*/
//y1 תגיד - updateMany צריך להחזיר את השורות שעודכנו (כמו update או insert) או כמה שורות עודכנו (כמו deleteMany)
/*y1 currency.ts:10 Uncaught TypeError: Currency_1 is not a constructor

@@ -31,0 +26,0 @@

@@ -54,2 +54,3 @@ import type { ClassType } from '../../classType.js';

validate(entity: Partial<MembersOnly<entityType>>, ...fields: Extract<keyof MembersOnly<entityType>, string>[]): Promise<ErrorInfo<entityType> | undefined>;
updateMany(where: EntityFilter<entityType>, set: Partial<MembersOnly<entityType>>): Promise<number>;
update(id: entityType extends {

@@ -74,2 +75,3 @@ id?: number;

count(where?: EntityFilter<entityType>): Promise<number>;
deleteMany(where: EntityFilter<entityType>): Promise<number>;
private cache;

@@ -145,2 +147,4 @@ findOne(options?: FindFirstOptions<entityType>, skipOrderByAndLimit?: boolean): Promise<entityType>;

save(onlyTheseFieldsSentOnlyInTheCaseOfProxySaveWithPartialObject?: string[]): Promise<T>;
processInsertResponseDto(updatedRow: any): Promise<T>;
buildDtoForInsert(): Promise<any>;
private buildLifeCycleEvent;

@@ -147,0 +151,0 @@ private getIdFilter;

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc