msgpackr 1.11.6 → 1.11.8

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.
package/dist/index.js CHANGED
@@ -1276,10 +1276,13 @@
1276
1276
  hasSharedUpdate = false;
1277
1277
  let encodingError;
1278
1278
  try {
1279
- if (packr.randomAccessStructure && value && value.constructor && (value.constructor === Object ||
1280
- (value.constructor !== Map && !Array.isArray(value) && !extensionClasses.some(extClass => value instanceof extClass))))
1281
- writeStruct(value);
1282
- else
1279
+ if (packr.randomAccessStructure && value && typeof value === 'object') {
1280
+ if (value.constructor === Object) writeStruct(value); // simple object
1281
+ else if (value.constructor !== Map && !Array.isArray(value) && !extensionClasses.some(extClass => value instanceof extClass)) {
1282
+ // allow user classes, if they don't need special handling (but do use toJSON if available)
1283
+ writeStruct(value.toJSON ? value.toJSON() : value);
1284
+ } else pack(value);
1285
+ } else
1283
1286
  pack(value);
1284
1287
  let lastBundle = bundledStrings;
1285
1288
  if (bundledStrings)