Skip to content

Replace deprecated util._extend with Object.assign to ensure compatibility with modern Node.js #2530

@ahmedabdou0178

Description

@ahmedabdou0178

I used patch-package to patch loopback-datasource-juggler@3.36.1 for the project I'm working on.

Here is the diff that solved my problem:

diff --git a/node_modules/loopback-datasource-juggler/lib/dao.js b/node_modules/loopback-datasource-juggler/lib/dao.js
index bd9c818..d62991e 100644
--- a/node_modules/loopback-datasource-juggler/lib/dao.js
+++ b/node_modules/loopback-datasource-juggler/lib/dao.js
@@ -207,9 +207,9 @@ DataAccessObject.applyProperties = function(data, inst) {
   let properties = this.definition.settings.properties;
   properties = properties || this.definition.settings.attributes;
   if (typeof properties === 'object') {
-    util._extend(data, properties);
+    Object.assign(data, properties);
   } else if (typeof properties === 'function') {
-    util._extend(data, properties.call(this, data, inst) || {});
+    Object.assign(data, properties.call(this, data, inst) || {});
   } else if (properties !== false) {
     const scope = this.defaultScope(data, inst) || {};
     if (typeof scope.where === 'object') {
diff --git a/node_modules/loopback-datasource-juggler/lib/model.js b/node_modules/loopback-datasource-juggler/lib/model.js
index 6ca3f33..e53ede5 100644
--- a/node_modules/loopback-datasource-juggler/lib/model.js
+++ b/node_modules/loopback-datasource-juggler/lib/model.js
@@ -24,7 +24,7 @@ const DataAccessUtils = require('./model-utils');
 const Observer = require('./observer');
 const Hookable = require('./hooks');
 const validations = require('./validations');
-const _extend = util._extend;
+const _extend = Object.assign;
 const utils = require('./utils');
 const fieldsToArray = utils.fieldsToArray;
 const uuid = require('uuid');
diff --git a/node_modules/loopback-datasource-juggler/lib/validations.js b/node_modules/loopback-datasource-juggler/lib/validations.js
index 82184e0..2f250ed 100644
--- a/node_modules/loopback-datasource-juggler/lib/validations.js
+++ b/node_modules/loopback-datasource-juggler/lib/validations.js
@@ -7,7 +7,7 @@
 
 const g = require('strong-globalize')();
 const util = require('util');
-const extend = util._extend;
+const extend = Object.assign;
 
 /*!
  * Module exports

This issue body was partially generated by patch-package.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions