{"version":3,"names":["Tracker","IdentitySymbolProvider","Timer","__SystemJSRewritingHack","_export","default","setters","_defaultsJs","defaultExample","_utilsJs","deepCopy","_collectionsJs","DefaultMap","execute","_recorder_","_src_babylonian_programming_editor_utils_tracker_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","constructor","ids","builder","idIterationParents","iterations","errors","Map","executedBlocks","Set","exampleIds","add","exampleId","timer","_identities","_symbolProvider","reset","clear","id","iterationParentId","runId","value","name","keyword","originalValue","prototype","includes","has","__tracker_identity","next","type","CanvasRenderingContext2D","getImageData","canvas","width","height","__tracker_time","Date","now","block","iteration","iterationMap","iterationCount","error","errorMsg","Zone","current","babylonianExampleId","example","_identitySymbols","_index","length","MaxRuntime","_maxRuntime","_startTime","start","check","time","Error"],"sources":["tracker.js"],"sourcesContent":["import { defaultExample } from \"./defaults.js\";\nimport { deepCopy } from \"./utils.js\";\nimport { DefaultMap } from \"./collections.js\";\n\nexport default class Tracker {\n  \n  constructor() {\n    this.ids = new DefaultMap( // Map(id, Map(exampleId, Map(runId, {before, after: {type, value, name}]})) \n      DefaultMap.builder(\n        DefaultMap.builder(Object)\n      )\n    );\n    this.idIterationParents = new DefaultMap(0); // Map(id, iterationId); \n    this.iterations = new DefaultMap( // Map(id, Map(exampleId, iterationCounter))\n      DefaultMap.builder(0)\n    );\n    this.errors = new Map(); // Map(exampleId, errorMsg);\n    this.executedBlocks = new Set(); // Set(id)\n    // this.exampleId = defaultExample().id;\n    this.exampleIds = new Set();\n    this.exampleIds.add(this.exampleId);\n    this.timer = new Timer();\n    this._identities = new Map(); // Map(identity, symbol)\n    this._symbolProvider = new IdentitySymbolProvider();\n  }\n  \n  reset() {\n    this.ids.clear();\n    this.idIterationParents.clear();\n    this.iterations.clear();\n    this.errors.clear();\n    this.executedBlocks.clear();\n    this.exampleId = defaultExample().id;\n    this.exampleIds.clear();\n    this.exampleIds.add(this.exampleId);\n    this._identities.clear();\n    this._symbolProvider.reset();\n  }\n\n  id(id, exampleId, iterationParentId, runId, value, name, keyword = \"after\") {\n    const originalValue = value;\n    let prototype;\n    \n    \n    // console.log('TRACKER ID ' + id \n    //             + \" exampleId: \" + exampleId \n    //             +  \" iterationParentId: \" + iterationParentId\n    //             +  \" runId: \" + runId\n    //             + \" Value: \" + value\n    //             + \" keyword:\" + keyword)\n    // #TODO #ContinueHere for implementing aysnc Babylonian Programming....\n    // next steps is signalling that this item has changed and might be in need for updating...\n    if(![\"before\", \"after\"].includes(keyword)) {\n      return value;\n    }\n    this.idIterationParents.set(id, iterationParentId);\n   \n    // Check and assign object identity\n    if(value instanceof Object) {\n      if(this._identities.has(value)) {\n        value.__tracker_identity = this._identities.get(value);\n      } else {\n        value.__tracker_identity = this._symbolProvider.next();\n        this._identities.set(value, value.__tracker_identity);\n      }\n    }\n    \n   \n    // Check and store object type\n    let type = typeof(value);\n    if(value && value.constructor && value.constructor.name) {\n      type = value.constructor.name;\n    }\n    \n    if(value && value.constructor && value.constructor.prototype) {\n      prototype = value.constructor.prototype;\n    }\n\n    \n    // Copy the value\n    if(value instanceof CanvasRenderingContext2D) {\n      value = value.getImageData(0, 0, value.canvas.width, value.canvas.height);\n    } else if (value instanceof Object) {\n      value = deepCopy(value);\n    } else {\n      // don't copy values since they are unmutable\n    }\n    \n    if(value instanceof Object) {\n      value.__tracker_time = Date.now() \n    }\n    \n   \n    this.ids.get(id)\n            .get(exampleId)\n            .get(runId)[keyword] = {\n              type: type,\n              value: value,\n              prototype: prototype,\n              name: name\n            };\n    \n    return originalValue;\n  }\n  \n  block(id) {\n    this.executedBlocks.add(id);\n  }\n  \n  iteration(id) {\n    const iterationMap = this.iterations.get(id);\n    const iterationCount = iterationMap.get(this.exampleId);\n    iterationMap.set(this.exampleId, iterationCount + 1);\n    return iterationCount;\n  }\n  \n  error(errorMsg) {\n    this.errors.set(this.exampleId, errorMsg);\n  }\n  \n  get exampleId() {\n    return Zone.current.babylonianExampleId\n  }\n  \n  set exampleId(id) {\n    // throw new Error(\"exampleId should not be set\")\n  }\n  \n  example(exampleId) {\n    // this.exampleId = exampleId; // for async examples this is not enough... Zone.current.babylonianExampleId\n    this.exampleIds.add(this.exampleId);\n  }\n}\n\n\nexport class IdentitySymbolProvider {\n  constructor() {\n    this._identitySymbols =  ['🐶','🐺','🐱','🐭','🐹','🐰','🐸','🐯','🐨','🐻','🐷','🐽','🐮','🐗','🐵','🐒','🐴','🐑','🐘','🐼','🐧','🐦','🐤','🐥','🐣','🐔','🐍','🐢','🐛','🐝','🐜','🐞','🐌','🐙','🐚','🐠','🐟','🐳','🐋','🐄','🐏','🐀','🐃','🐅','🐇','🐉','🐎','🐐','🐓','🐕','🐖','🐁','🐂','🐲','🐡','🐊'];\n    this._index = 0;\n  }\n  \n  next() {\n    return this._identitySymbols[this._index++ % this._identitySymbols.length];\n  }\n  \n  reset() {\n    this._index = 0;\n  }\n}\n\nexport class Timer {\n  \n  static get MaxRuntime() {\n     return 2000\n  }\n  \n  constructor() {\n    this._maxRuntime = Timer.MaxRuntime;\n    this._startTime = null;\n  }\n  \n  start() {\n    this._startTime = (+new Date());\n  }\n  \n  reset() {\n    this._startTime = null;\n  }\n  \n  check() {\n    if(this._startTime === null) {\n      return;\n    }\n    \n    const time = Date.now();\n    if(time - this._startTime > this._maxRuntime) {\n      throw new Error(\"Timeout reached. Maybe there is an inifinite loop?\");\n    }\n  }\n}\n"],"mappings":"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"}