Skip to content

Instantly share code, notes, and snippets.

@ArturJS
Last active February 27, 2019 13:04
Show Gist options
  • Select an option

  • Save ArturJS/363c4f01528d5d3044e7e8330d1f0321 to your computer and use it in GitHub Desktop.

Select an option

Save ArturJS/363c4f01528d5d3044e7e8330d1f0321 to your computer and use it in GitHub Desktop.
Heizenbug debug...
var esprima = require("esprima")
var code = `
var foldParams;
var i;
var isMultipage = !page.isFrontCover() && !page.isBackCover();
var pageNumbers = page.getNumbers();
var pagesData = [];
var processIsReady;
var proofParams = __WEBPACK_IMPORTED_MODULE_13_lodash_extend___default()({}, proofParameters);
var snapshotsAreReady = __WEBPACK_IMPORTED_MODULE_21_jquery___default.a.Deferred();
processIsReady = displayProcess(artboard, face, process, {
isRenderProof: true
});
if (renderParams.hideEmptyText) {
artboard.canvasView.hideEmptyText();
}
if (renderParams.transparentBackground) {
proofParams.format = 'png';
delete artboard.canvasView.canvas.backgroundColor;
artboard.canvasView.hideBackgrounds({
type: 'colored'
});
}
artboard.canvasView.showInvisibleOnArtboardObjects();
artboard.canvasView.hideInvisibleObjects();
artboard.canvasView.hideInvisibleOnSnapshotObjects();
if (page.hasFold() && splitFolds) {
try {
foldParams = __WEBPACK_IMPORTED_MODULE_35__splitPageHelper__["a" /* default */].splitPage(page.getDesignSize({
includeBleedMargin: true
}), page.get('fold'));
} catch (e) {
snapshotsAreReady.reject(e);
}
if (isMultipage) {
pagesData.push({
proofParams: __WEBPACK_IMPORTED_MODULE_13_lodash_extend___default()(__WEBPACK_IMPORTED_MODULE_8_lodash_clone___default()(proofParams), foldParams[0]),
pageNumber: pageNumbers.left
});
pagesData.push({
proofParams: __WEBPACK_IMPORTED_MODULE_13_lodash_extend___default()(__WEBPACK_IMPORTED_MODULE_8_lodash_clone___default()(proofParams), foldParams[1]),
pageNumber: pageNumbers.right
});
} else {
for (i = 0; i < foldParams.length; i++) {
pagesData.push({
proofParams: __WEBPACK_IMPORTED_MODULE_13_lodash_extend___default()(__WEBPACK_IMPORTED_MODULE_8_lodash_clone___default()(proofParams), foldParams[i]),
pageNumber: 1
});
}
}
} else {
pageNumbers = __WEBPACK_IMPORTED_MODULE_7_lodash_isArray___default()(pageNumbers) ? pageNumbers : __WEBPACK_IMPORTED_MODULE_6_lodash_compact___default()(__WEBPACK_IMPORTED_MODULE_5_lodash_values___default()(pageNumbers));
pagesData.push({
proofParams: proofParams,
pageNumber: pageNumbers[0]
});
}
processIsReady.then(function () {
var snapshotsData = [];
__WEBPACK_IMPORTED_MODULE_16_lodash_each___default()(pagesData, function (pageData) {
var height = pageData.proofParams.height || artboard.canvasView.canvas.getHeight();
var snapshotData = {};
var width = pageData.proofParams.width || artboard.canvasView.canvas.getWidth();
if (!process.isFullCoating()) {
// snapshotData.image = artboard.canvasView.generateImage(pageData.proofParams).replace(/^data:image\/(png|jpeg|jpg);base64\,/, '');
}
snapshotData.type = process.get('type');
snapshotData.width = Math.round(width * (pageData.proofParams.scaleX || 1));
snapshotData.height = Math.round(height * (pageData.proofParams.scaleY || 1));
snapshotData.pageNumber = pageData.pageNumber;
snapshotsData.push(snapshotData);
});
artboard.canvasView.showInvisibleOnSnapshotObjects();
artboard.canvasView.canvas.backgroundColor = artboard.canvasView.defaultBackgroundColor;
artboard.canvasView.showBackgrounds();
snapshotsAreReady.resolve(snapshotsData);
});
`;
var uniq = arr => [...new Set(arr)];
var tokens = esprima.tokenize(code).filter(({type}) => type === 'Identifier');
var vars = tokens.map(t => t.value)
vars = uniq(vars)
console.log(vars)

todo: create tool which could get diffs of stack traces and vars values to have easier debugging experience Especially, when you compare similar cases and one of them NOT WORKING!

  1. remove fucking "use strict";
 sed -i -e 's|use strict|LoL|g' dist/davinciDesigner*.js
  1. for each function from call stack execute
arguments.callee.toString() // to reveal source code
  1. extract variable names ("Identifier") from source code somehow (https://www.npmjs.com/package/esprima) see also extract-variable-names.js

  2. eval('//code to save variable values from the function...')

  3. display result somehow...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment