Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save c7x43t/012f89da59c28a30f820651ecff891c3 to your computer and use it in GitHub Desktop.
Save c7x43t/012f89da59c28a30f820651ecff891c3 to your computer and use it in GitHub Desktop.
function isObject(o){return typeof o === "object" && o !==null}
function generatePatch(classNames){
var result='';
for(var className of classNames){
// CookieStore
var classPatch='';
if(className in window){
classPatch+=`function ${className}(){}\n`;
var classPrototype=window[className].prototype;
var descriptors=Object.getOwnPropertyDescriptors(classPrototype);
var _descriptors=[];
for(var key of Object.keys(descriptors)){
var descriptor=descriptors[key];
_descriptors.push([key,descriptors,false]);
}
for(var key of Object.getOwnPropertySymbols(descriptors)){
var keyName=key.description.match(/^Symbol\.(.*)$/);
var key=Symbol[keyName[1]];
var descriptor=descriptors[key];
_descriptors.push([`Symbol.${keyName[1]}`,descriptor,true]);
}
console.log(_descriptors);
for(var [key,descriptor,isSymbol] of _descriptors){
console.log(key,descriptor,isSymbol)
classPatch+=`
var attributes={}\n`;
for(var attribute in descriptor){
var key_=attribute;
var value_=descriptor[attribute];
classPatch+=`attributes[${key_}]=${value_};\n`
}
classPatch+=`Object.defineProperty(${className}.prototype,${key},attributes);\n`;
classPatch+=`window[${className}]=${className}`;
}
}
result+=classPatch+'\n';
}
return result;
}
generatePatch(["CookieStore"])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment