UNPKG

pickleparser

Version:

A pure Javascript implemented parser for Python pickle format

30 lines (28 loc) 1.01 kB
/* eslint-disable @typescript-eslint/no-explicit-any */ import { UnpicklingTypeOfDictionary } from './parser'; export interface IDictionaryProvider { create(): any; setMethod(dict: any, key: unknown, value: unknown): void; } const ObjectDictionaryProvider: IDictionaryProvider = { create: () => ({}), setMethod: function (dict: Record<string, unknown>, key: string, value: unknown): void { dict[key] = value; }, }; const StdandardDictionaryProvider: IDictionaryProvider = { create: () => new Map(), setMethod: function (dict: Map<unknown, unknown>, key: unknown, value: unknown): void { dict.set(key, value); }, }; export const DictionaryProviderFactory = (type: UnpicklingTypeOfDictionary) => { switch (type) { case 'Map': return StdandardDictionaryProvider; case 'object': return ObjectDictionaryProvider; default: throw new Error(`Unknown unpickling type [${type}] of Dictionary.`); } };