Socket
Socket
Sign inDemoInstall

objection

Package Overview
Dependencies
Maintainers
4
Versions
200
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

objection - npm Package Compare versions

Comparing version 3.1.3 to 3.1.4

30

lib/model/Model.js

@@ -222,3 +222,3 @@ 'use strict';

$omitFromJson(props) {
$omitFromJson(...props) {
if (arguments.length === 0) {

@@ -228,10 +228,10 @@ return this.$$omitFromJson;

if (!this.hasOwnProperty('$$omitFromJson')) {
defineNonEnumerableProperty(this, '$$omitFromJson', props);
} else {
this.$$omitFromJson = this.$$omitFromJson.concat(props);
defineNonEnumerableProperty(this, '$$omitFromJson', []);
}
this.$$omitFromJson = this.$$omitFromJson.concat(asPropsArray(props));
return this;
}
}
$omitFromDatabaseJson(props) {
$omitFromDatabaseJson(...props) {
if (arguments.length === 0) {

@@ -241,6 +241,6 @@ return this.$$omitFromDatabaseJson;

if (!this.hasOwnProperty('$$omitFromDatabaseJson')) {
defineNonEnumerableProperty(this, '$$omitFromDatabaseJson', props);
} else {
this.$$omitFromDatabaseJson = this.$$omitFromDatabaseJson.concat(props);
defineNonEnumerableProperty(this, '$$omitFromDatabaseJson', []);
}
this.$$omitFromDatabaseJson = this.$$omitFromDatabaseJson.concat(asPropsArray(props));
return this;
}

@@ -913,4 +913,18 @@ }

function asPropsArray(props) {
if (props.length === 1) {
const arg = props[0];
if (Array.isArray(arg)) {
return arg;
} else if (arg && typeof arg === 'object') {
return Object.entries(arg)
.filter(([, value]) => value)
.map(([key]) => key);
}
}
return props;
}
module.exports = {
Model,
};

@@ -6,3 +6,3 @@ 'use strict';

const { isInternalProp } = require('../../../utils/internalPropUtils');
const { union, difference, isObject, jsonEquals } = require('../../../utils/objectUtils');
const { difference, isObject, jsonEquals } = require('../../../utils/objectUtils');
const promiseUtils = require('../../../utils/promiseUtils');

@@ -37,3 +37,3 @@

const { changedProps, unchangedProps } = this._findChanges(node);
const allProps = union(changedProps, unchangedProps);
const allProps = [...changedProps, ...unchangedProps];

@@ -64,3 +64,4 @@ const propsToUpdate = difference(

// there is nothing to update. Otherwise, we need to wait for the hook to be
// called before calling handleUpdate. See issue #2233.
// called before calling handleUpdate, but only if the node contains changes
// that aren't id properties (relates). See issues #2233, #2605.
const hasBeforeUpdate =

@@ -70,3 +71,6 @@ node.obj.constructor.beforeUpdate !== Model.beforeUpdate ||

if (!hasBeforeUpdate && !handleUpdate()) {
if (
(hasBeforeUpdate && !this._hasNonIdPropertyChanges(node)) ||
(!hasBeforeUpdate && !handleUpdate())
) {
return null;

@@ -89,20 +93,11 @@ }

if (hasBeforeUpdate) {
updateBuilder
.context({
runBefore: () => {
// Call handleUpdate in the runBefore hook which runs after the
// $beforeUpdate hook, allowing it to modify the object before the
// updated properties are determined. See issue #2233.
if (hasBeforeUpdate && !handleUpdate()) {
throw new ReturnNullException();
}
},
})
.onError((error) => {
if (error instanceof ReturnNullException) {
return null;
} else {
return Promise.reject(error);
}
});
updateBuilder.internalContext().runBefore.push((result, builder) => {
// Call handleUpdate in the runBefore hook which runs after the
// $beforeUpdate hook, allowing it to modify the object before the
// updated properties are determined. See issue #2233.
if (hasBeforeUpdate && !handleUpdate()) {
builder.internalOptions().returnImmediatelyValue = null;
}
return result;
});
}

@@ -224,2 +219,7 @@

_hasNonIdPropertyChanges(node) {
const idProps = node.modelClass.getIdPropertyArray();
return this._findChanges(node).changedProps.some((prop) => !idProps.includes(prop));
}
_createBuilder(node) {

@@ -244,4 +244,2 @@ if (node.parentEdge && !node.parentEdge.relation.isObjectionHasManyRelation) {

class ReturnNullException {}
function childQueryOptions() {

@@ -248,0 +246,0 @@ return {

@@ -7,2 +7,3 @@ 'use strict';

this.keepImplicitJoinProps = false;
this.returnImmediatelyValue = undefined;
this.isInternalQuery = false;

@@ -18,2 +19,3 @@ this.debug = false;

copy.keepImplicitJoinProps = this.keepImplicitJoinProps;
copy.returnImmediatelyValue = this.returnImmediatelyValue;
copy.isInternalQuery = this.isInternalQuery;

@@ -20,0 +22,0 @@ copy.debug = this.debug;

@@ -1122,3 +1122,20 @@ 'use strict';

class ReturnImmediatelyException {
constructor(value) {
this.value = value;
}
}
function handleReturnImmediatelyValue(builder) {
const { returnImmediatelyValue } = builder.internalOptions();
if (returnImmediatelyValue !== undefined) {
throw new ReturnImmediatelyException(returnImmediatelyValue);
}
}
function handleExecuteError(builder, err) {
if (err instanceof ReturnImmediatelyException) {
return Promise.resolve(err.value);
}
let promise = Promise.reject(wrapError(err));

@@ -1143,5 +1160,7 @@

if (op.hasHook(hookName)) {
promise = promise.then((result) =>
builder.callAsyncOperationMethod(op, hookName, [builder, result]),
);
promise = promise.then((result) => {
const res = builder.callAsyncOperationMethod(op, hookName, [builder, result]);
handleReturnImmediatelyValue(builder);
return res;
});
}

@@ -1266,3 +1285,7 @@ });

if (isFunction(func)) {
promise = promise.then((result) => func.call(builder, result, builder));
promise = promise.then((result) => {
const res = func.call(builder, result, builder);
handleReturnImmediatelyValue(builder);
return res;
});
} else if (Array.isArray(func)) {

@@ -1269,0 +1292,0 @@ func.forEach((func) => {

{
"name": "objection",
"version": "3.1.3",
"version": "3.1.4",
"description": "An SQL-friendly ORM for Node.js",

@@ -75,3 +75,3 @@ "main": "lib/objection.js",

"pg": "^8.11.3",
"prettier": "3.1.0",
"prettier": "3.2.5",
"sqlite3": "^5.1.6",

@@ -78,0 +78,0 @@ "typescript": ">=5.3.2",

@@ -232,9 +232,10 @@ /// <reference types="node" />

type PartialModelGraphField<F> = Defined<F> extends Model
? PartialModelGraph<Defined<F>>
: Defined<F> extends Array<infer I>
? I extends Model
? PartialModelGraph<I>[]
: Expression<F>
: Expression<F>;
type PartialModelGraphField<F> =
Defined<F> extends Model
? PartialModelGraph<Defined<F>>
: Defined<F> extends Array<infer I>
? I extends Model
? PartialModelGraph<I>[]
: Expression<F>
: Expression<F>;

@@ -1703,4 +1704,2 @@ /**

$set(obj: Pojo): this;
$omit(keys: string | string[] | { [key: string]: boolean }): this;
$pick(keys: string | string[] | { [key: string]: boolean }): this;
$clone(opt?: CloneOptions): this;

@@ -1711,2 +1710,4 @@ $traverse(filterConstructor: typeof Model, traverser: TraverserFunction): this;

$traverseAsync(traverser: TraverserFunction): Promise<this>;
$omitFromJson(keys: string | string[] | { [key: string]: boolean }): this;
$omitFromDatabaseJson(keys: string | string[] | { [key: string]: boolean }): this;

@@ -1713,0 +1714,0 @@ $knex(): Knex;

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc