HEX
Server: nginx/1.24.0
System: Linux nowruzgan 6.8.0-57-generic #59-Ubuntu SMP PREEMPT_DYNAMIC Sat Mar 15 17:40:59 UTC 2025 x86_64
User: babak (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/dev/nowruzgan/rest/node_modules/machinepack-json/machines/stringify-safe.js
module.exports = {


  friendlyName: 'Stringify (safe)',


  description: 'Encode the specified value into a JSON string, but tolerate recursive objects and preserve functions, errors, and regexps.',


  sync: true,


  cacheable: true,


  inputs: {

    value: {
      friendlyName: 'Data',
      description: 'The data to encode as a JSON string',
      example: '*',
      required: true
    }

  },


  exits: {

    success: {
      friendlyName: 'then',
      description: 'Done.',
      example: '...{"some stringified json": "like this"}...'
    }

  },


  fn: function (inputs,exits) {

    // Backwards compat for Node v0.10 (which doesn't have `util.is*()` qualifiers)
    var isFunction = require('lodash.isfunction');
    var isRegExp = require('lodash.isregexp');
    var isError = require('lodash.iserror');


    /**
     * This was modified by @mikermcneil from @isaacs' json-stringify-safe
     * (see https://github.com/isaacs/json-stringify-safe/commit/02cfafd45f06d076ac4bf0dd28be6738a07a72f9#diff-c3fcfbed30e93682746088e2ce1a4a24)
     * @param  {*} val           [description]
     * @return {String}               [description]
     */
    function serializer(replacer, cycleReplacer) {
      var stack = [];
      var keys = [];

      if (!cycleReplacer) {
        cycleReplacer = function(key, value) {
          if (stack[0] === value) return '[Circular ~]';
          return '[Circular ~.' + keys.slice(0, stack.indexOf(value)).join('.') + ']';
        };
      }

      return function(key, value) {
        if (stack.length > 0) {
          var thisPos = stack.indexOf(this);
          ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);
          ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);
          if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value);
        }
        else stack.push(value);

        // Do some advanced serialization
        if (isError(value)){
          value = value.stack;
        }
        else if (isRegExp(value)){
          value = value.toString();
        }
        else if (isFunction(value)){
          value = value.toString();
        }

        if (!replacer) {
          return value;
        }
        return replacer.call(this, key, value);
      };
    }

    var jsonString = JSON.stringify(inputs.value, serializer());
    return exits.success(jsonString);

  },



};