UNPKG

surrial

Version:

Serialize anything. This is surreal!

39 lines 1.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function isInstanceOf(thing, whitelist) { return whitelist.some(function (ctor) { return thing instanceof ctor; }); } exports.isInstanceOf = isInstanceOf; var SURRIALIZABLE_FN_NAME = 'surrialize'; function isSurrializable(thing) { return thing && (typeof thing === 'object' || typeof thing === 'function') && typeof thing[SURRIALIZABLE_FN_NAME] === 'function'; } exports.isSurrializable = isSurrializable; function isEcmaScriptClass(constructor) { return constructor.toString().startsWith('class'); } function getParamList(constructor) { var splitParams = function (params) { return params.split(',').map(function (param) { return param.trim(); }); }; var constructorString = constructor.toString(); if (isEcmaScriptClass(constructor)) { var parametersMatch = /constructor[^(]*\(([^)]*)\)/.exec(constructorString); if (parametersMatch) { return splitParams(parametersMatch[1]); } else { // Constructor is optional in an es6 class return []; } } else { var parametersMatch = /function[^(]*\(([^)]*)\)/.exec(constructorString); if (parametersMatch) { return splitParams(parametersMatch[1]); } else { throw new Error("Constructor function \"" + constructor.name + "\" could not be serialized. Class was defined as: " + constructor.toString()); } } } exports.getParamList = getParamList; //# sourceMappingURL=helpers.js.map