Logos DX
    Preparing search index...

    Function serializer

    • Enhanced key generation that handles object property ordering, circular references, and non-serializable values with unique IDs.

      This function provides more reliable key generation than JSON.stringify by handling edge cases like circular references, consistent object key ordering, and various JavaScript types.

      Non-serializable types get unique instance IDs:

      • Functions → fn:_abc123 (unique per function instance)
      • Symbols → sym:_abc123 (unique per symbol instance)
      • Errors → e:_abc123 (unique per error instance)
      • WeakMap → wm:_abc123 (unique per instance)
      • WeakSet → ws:_abc123 (unique per instance)
      • Circular refs → circ:_abc123 (unique per object)

      Parameters

      • args: unknown[]

        The arguments to generate a key from

      Returns string

      A string key suitable for caching

      const key = serializer([{a: 1, b: 2}, "test", 123]);
      // Returns: '{"a":1,"b":2}|test|123'

      const key2 = serializer([new Date(1000), /test/i]);
      // Returns: 'd:1000|r:/test/i'

      // Functions get unique IDs
      const fn1 = () => {};
      const fn2 = () => {};
      serializer([fn1]) !== serializer([fn2]); // true
      serializer([fn1]) === serializer([fn1]); // true