{"version":3,"sources":["change_detection_jit_generator.es6"],"names":[],"mappings":"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","file":"angular2/src/change_detection/change_detection_jit_generator.es6","sourcesContent":["import {isPresent, isBlank, BaseException, Type} from 'angular2/src/facade/lang';\nimport {List, ListWrapper, MapWrapper, StringMapWrapper} from 'angular2/src/facade/collection';\n\nimport {AbstractChangeDetector} from './abstract_change_detector';\nimport {ChangeDetectionUtil} from './change_detection_util';\nimport {DirectiveRecord} from './directive_record';\n\nimport {\n  ProtoRecord,\n  RECORD_TYPE_SELF,\n  RECORD_TYPE_PROPERTY,\n  RECORD_TYPE_LOCAL,\n  RECORD_TYPE_INVOKE_METHOD,\n  RECORD_TYPE_CONST,\n  RECORD_TYPE_INVOKE_CLOSURE,\n  RECORD_TYPE_PRIMITIVE_OP,\n  RECORD_TYPE_KEYED_ACCESS,\n  RECORD_TYPE_PIPE,\n  RECORD_TYPE_BINDING_PIPE,\n  RECORD_TYPE_INTERPOLATE\n  } from './proto_record';\n\n/**\n * The code generator takes a list of proto records and creates a function/class\n * that \"emulates\" what the developer would write by hand to implement the same\n * kind of behaviour.\n *\n * The implementation comprises two parts:\n * * ChangeDetectorJITGenerator has the logic of how everything fits together.\n * * template functions (e.g., constructorTemplate) define what code is generated.\n*/\nvar ABSTRACT_CHANGE_DETECTOR = \"AbstractChangeDetector\";\nvar UTIL = \"ChangeDetectionUtil\";\nvar DISPATCHER_ACCESSOR = \"this.dispatcher\";\nvar PIPE_REGISTRY_ACCESSOR = \"this.pipeRegistry\";\nvar PROTOS_ACCESSOR = \"this.protos\";\nvar DIRECTIVES_ACCESSOR = \"this.directiveRecords\";\nvar CONTEXT_ACCESSOR = \"this.context\";\nvar IS_CHANGED_LOCAL = \"isChanged\";\nvar CHANGES_LOCAL = \"changes\";\nvar LOCALS_ACCESSOR = \"this.locals\";\nvar MODE_ACCESSOR = \"this.mode\";\nvar TEMP_LOCAL = \"temp\";\nvar CURRENT_PROTO = \"currentProto\";\n\nfunction typeTemplate(type:string, cons:string, detectChanges:string,\n                      notifyOnAllChangesDone:string, setContext:string):string {\n  return `\n${cons}\n${detectChanges}\n${notifyOnAllChangesDone}\n${setContext};\n\nreturn function(dispatcher, pipeRegistry) {\n  return new ${type}(dispatcher, pipeRegistry, protos, directiveRecords);\n}\n`;\n}\n\nfunction constructorTemplate(type:string, fieldsDefinitions:string):string {\n  return `\nvar ${type} = function ${type}(dispatcher, pipeRegistry, protos, directiveRecords) {\n${ABSTRACT_CHANGE_DETECTOR}.call(this);\n${DISPATCHER_ACCESSOR} = dispatcher;\n${PIPE_REGISTRY_ACCESSOR} = pipeRegistry;\n${PROTOS_ACCESSOR} = protos;\n${DIRECTIVES_ACCESSOR} = directiveRecords;\n${LOCALS_ACCESSOR} = null;\n${fieldsDefinitions}\n}\n\n${type}.prototype = Object.create(${ABSTRACT_CHANGE_DETECTOR}.prototype);\n`;\n}\n\nfunction pipeOnDestroyTemplate(pipeNames:List) {\n  return pipeNames.map((p) => `${p}.onDestroy()`).join(\"\\n\");\n}\n\nfunction hydrateTemplate(type:string, mode:string, fieldDefinitions:string, pipeOnDestroy:string,\n                         directiveFieldNames:List<String>, detectorFieldNames:List<String>):string {\n  var directiveInit = \"\";\n  for(var i = 0; i < directiveFieldNames.length; ++i) {\n    directiveInit += `${directiveFieldNames[i]} = directives.getDirectiveFor(this.directiveRecords[${i}]);\\n`;\n  }\n\n  var detectorInit = \"\";\n  for(var i = 0; i < detectorFieldNames.length; ++i) {\n    detectorInit += `${detectorFieldNames[i]} = directives.getDetectorFor(this.directiveRecords[${i}]);\\n`;\n  }\n\n  return `\n${type}.prototype.hydrate = function(context, locals, directives) {\n  ${MODE_ACCESSOR} = \"${mode}\";\n  ${CONTEXT_ACCESSOR} = context;\n  ${LOCALS_ACCESSOR} = locals;\n  ${directiveInit}\n  ${detectorInit}\n}\n${type}.prototype.dehydrate = function() {\n  ${pipeOnDestroy}\n  ${fieldDefinitions}\n  ${LOCALS_ACCESSOR} = null;\n}\n${type}.prototype.hydrated = function() {\n  return ${CONTEXT_ACCESSOR} !== ${UTIL}.unitialized();\n}\n`;\n}\n\nfunction detectChangesTemplate(type:string, body:string):string {\n  return `\n${type}.prototype.detectChangesInRecords = function(throwOnChange) {\n  ${body}\n}\n`;\n}\n\nfunction callOnAllChangesDoneTemplate(type:string, body:string):string {\n  return `\n${type}.prototype.callOnAllChangesDone = function() {\n  ${body}\n}\n`;\n}\n\nfunction onAllChangesDoneTemplate(directive:string):string {\n  return `${directive}.onAllChangesDone();`;\n}\n\n\nfunction detectChangesBodyTemplate(localDefinitions:string, changeDefinitions:string, records:string):string {\n  return `\n${localDefinitions}\n${changeDefinitions}\nvar ${TEMP_LOCAL};\nvar ${IS_CHANGED_LOCAL} = false;\nvar ${CURRENT_PROTO};\nvar ${CHANGES_LOCAL} = null;\n\ncontext = ${CONTEXT_ACCESSOR};\n${records}\n`;\n}\n\nfunction pipeCheckTemplate(protoIndex:number, context:string, bindingPropagationConfig:string, pipe:string, pipeType:string,\n                           oldValue:string, newValue:string, change:string, update:string,\n                           addToChanges, lastInDirective:string):string{\n  return `\n${CURRENT_PROTO} = ${PROTOS_ACCESSOR}[${protoIndex}];\nif (${pipe} === ${UTIL}.unitialized()) {\n  ${pipe} = ${PIPE_REGISTRY_ACCESSOR}.get('${pipeType}', ${context}, ${bindingPropagationConfig});\n} else if (!${pipe}.supports(${context})) {\n  ${pipe}.onDestroy();\n  ${pipe} = ${PIPE_REGISTRY_ACCESSOR}.get('${pipeType}', ${context}, ${bindingPropagationConfig});\n}\n\n${newValue} = ${pipe}.transform(${context});\nif (! ${UTIL}.noChangeMarker(${newValue})) {\n  ${change} = true;\n  ${update}\n  ${addToChanges}\n  ${oldValue} = ${newValue};\n}\n${lastInDirective}\n`;\n}\n\nfunction referenceCheckTemplate(protoIndex:number, assignment:string, oldValue:string, newValue:string, change:string,\n                                update:string, addToChanges:string, lastInDirective:string):string {\n  return `\n${CURRENT_PROTO} = ${PROTOS_ACCESSOR}[${protoIndex}];\n${assignment}\nif (${newValue} !== ${oldValue} || (${newValue} !== ${newValue}) && (${oldValue} !== ${oldValue})) {\n  ${change} = true;\n  ${update}\n  ${addToChanges}\n  ${oldValue} = ${newValue};\n}\n${lastInDirective}\n`;\n}\n\nfunction assignmentTemplate(field:string, value:string) {\n  return `${field} = ${value};`;\n}\n\nfunction localDefinitionsTemplate(names:List):string {\n  return names.map((n) => `var ${n};`).join(\"\\n\");\n}\n\nfunction changeDefinitionsTemplate(names:List):string {\n  return names.map((n) => `var ${n} = false;`).join(\"\\n\");\n}\n\nfunction fieldDefinitionsTemplate(names:List):string {\n  return names.map((n) => `${n} = ${UTIL}.unitialized();`).join(\"\\n\");\n}\n\nfunction ifChangedGuardTemplate(changeNames:List, body:string):string {\n  var cond = changeNames.join(\" || \");\n  return `\nif (${cond}) {\n  ${body}\n}\n`;\n}\n\nfunction addToChangesTemplate(oldValue:string, newValue:string):string {\n  return `${CHANGES_LOCAL} = ${UTIL}.addChange(${CHANGES_LOCAL}, ${CURRENT_PROTO}.bindingRecord.propertyName, ${UTIL}.simpleChange(${oldValue}, ${newValue}));`;\n}\n\nfunction updateDirectiveTemplate(oldValue:string, newValue:string, directiveProperty:string):string {\n  return `\nif(throwOnChange) ${UTIL}.throwOnChange(${CURRENT_PROTO}, ${UTIL}.simpleChange(${oldValue}, ${newValue}));\n${directiveProperty} = ${newValue};\n${IS_CHANGED_LOCAL} = true;\n  `;\n}\n\nfunction updateElementTemplate(oldValue:string, newValue:string):string {\n  return `\nif(throwOnChange) ${UTIL}.throwOnChange(${CURRENT_PROTO}, ${UTIL}.simpleChange(${oldValue}, ${newValue}));\n${DISPATCHER_ACCESSOR}.notifyOnBinding(${CURRENT_PROTO}.bindingRecord, ${newValue});\n  `;\n}\n\nfunction notifyOnChangesTemplate(directive:string):string{\n  return  `\nif(${CHANGES_LOCAL}) {\n  ${directive}.onChange(${CHANGES_LOCAL});\n  ${CHANGES_LOCAL} = null;\n}\n`;\n}\n\nfunction notifyOnPushDetectorsTemplate(detector:string):string{\n  return  `\nif(${IS_CHANGED_LOCAL}) {\n  ${detector}.markAsCheckOnce();\n}\n`;\n}\n\nfunction lastInDirectiveTemplate(notifyOnChanges:string, notifyOnPush:string):string{\n  return  `\n${notifyOnChanges}\n${notifyOnPush}\n${IS_CHANGED_LOCAL} = false;\n`;\n}\n\n\nexport class ChangeDetectorJITGenerator {\n  typeName:string;\n  records:List<ProtoRecord>;\n  directiveRecords:List;\n  localNames:List<string>;\n  changeNames:List<string>;\n  fieldNames:List<string>;\n  pipeNames:List<string>;\n  changeDetectionStrategy:stirng;\n\n  constructor(typeName:string, changeDetectionStrategy:string, records:List<ProtoRecord>, directiveRecords:List) {\n    this.typeName = typeName;\n    this.changeDetectionStrategy = changeDetectionStrategy;\n    this.records = records;\n    this.directiveRecords = directiveRecords;\n\n    this.localNames = this.getLocalNames(records);\n    this.changeNames = this.getChangeNames(this.localNames);\n    this.fieldNames = this.getFieldNames(this.localNames);\n    this.pipeNames = this.getPipeNames(this.localNames);\n  }\n\n  getLocalNames(records:List<ProtoRecord>):List<string> {\n    var index = 0;\n    var names = records.map((r) => {\n      var sanitizedName = r.name.replace(new RegExp(\"\\\\W\", \"g\"), '');\n      return `${sanitizedName}${index++}`\n    });\n    return [\"context\"].concat(names);\n  }\n\n  getChangeNames(localNames:List<string>):List<string> {\n    return localNames.map((n) => `change_${n}`);\n  }\n\n  getFieldNames(localNames:List<string>):List<string> {\n    return localNames.map((n) => `this.${n}`);\n  }\n\n  getPipeNames(localNames:List<string>):List<string> {\n    return localNames.map((n) => `this.${n}_pipe`);\n  }\n\n  generate():Function {\n    var text = typeTemplate(this.typeName, this.genConstructor(), this.genDetectChanges(),\n      this.genCallOnAllChangesDone(), this.genHydrate());\n    return new Function('AbstractChangeDetector', 'ChangeDetectionUtil', 'protos', 'directiveRecords', text)\n      (AbstractChangeDetector, ChangeDetectionUtil, this.records, this.directiveRecords);\n  }\n\n  genConstructor():string {\n    return constructorTemplate(this.typeName, this.genFieldDefinitions());\n  }\n\n  genHydrate():string {\n    var mode = ChangeDetectionUtil.changeDetectionMode(this.changeDetectionStrategy);\n    return hydrateTemplate(this.typeName, mode, this.genFieldDefinitions(),\n      pipeOnDestroyTemplate(this.getNonNullPipeNames()),\n      this.getDirectiveFieldNames(), this.getDetectorFieldNames());\n  }\n\n  getDirectiveFieldNames():List<string> {\n    return this.directiveRecords.map((d) => this.getDirective(d));\n  }\n\n  getDetectorFieldNames():List<string> {\n    return this.directiveRecords.filter(r => r.isOnPushChangeDetection()).map((d) => this.getDetector(d));\n  }\n\n  getDirective(d:DirectiveRecord) {\n    return `this.directive_${d.name}`;\n  }\n\n  getDetector(d:DirectiveRecord) {\n    return `this.detector_${d.name}`;\n  }\n\n  genFieldDefinitions() {\n    var fields = [];\n    fields = fields.concat(this.fieldNames);\n    fields = fields.concat(this.getNonNullPipeNames());\n    fields = fields.concat(this.getDirectiveFieldNames());\n    fields = fields.concat(this.getDetectorFieldNames());\n    return fieldDefinitionsTemplate(fields);\n  }\n\n  getNonNullPipeNames():List<string> {\n    var pipes = [];\n    this.records.forEach((r) => {\n      if (r.mode === RECORD_TYPE_PIPE || r.mode === RECORD_TYPE_BINDING_PIPE) {\n        pipes.push(this.pipeNames[r.selfIndex]);\n      }\n    });\n    return pipes;\n  }\n\n  genDetectChanges():string {\n    var body = this.genDetectChangesBody();\n    return detectChangesTemplate(this.typeName, body);\n  }\n\n  genCallOnAllChangesDone():string {\n    var notifications = [];\n    var dirs = this.directiveRecords;\n\n    for (var i = dirs.length - 1; i >= 0; --i) {\n      var dir = dirs[i];\n      if (dir.callOnAllChangesDone) {\n        var directive = `this.directive_${dir.name}`;\n        notifications.push(onAllChangesDoneTemplate(directive));\n      }\n    }\n\n    return callOnAllChangesDoneTemplate(this.typeName, notifications.join(\";\\n\"));\n  }\n\n  genDetectChangesBody():string {\n    var rec = this.records.map((r) => this.genRecord(r)).join(\"\\n\");\n    return detectChangesBodyTemplate(this.genLocalDefinitions(), this.genChangeDefinitions(), rec);\n  }\n\n  genLocalDefinitions():string {\n    return localDefinitionsTemplate(this.localNames);\n  }\n\n  genChangeDefinitions():string {\n    return changeDefinitionsTemplate(this.changeNames);\n  }\n\n  genRecord(r:ProtoRecord):string {\n    if (r.mode === RECORD_TYPE_PIPE || r.mode === RECORD_TYPE_BINDING_PIPE) {\n      return this.genPipeCheck (r);\n    } else {\n      return this.genReferenceCheck(r);\n    }\n  }\n\n  genPipeCheck(r:ProtoRecord):string {\n    var context = this.localNames[r.contextIndex];\n    var oldValue = this.fieldNames[r.selfIndex];\n    var newValue = this.localNames[r.selfIndex];\n    var change = this.changeNames[r.selfIndex];\n\n    var pipe = this.pipeNames[r.selfIndex];\n    var cdRef = r.mode === RECORD_TYPE_BINDING_PIPE ? \"this.ref\" : \"null\";\n\n    var update = this.genUpdateDirectiveOrElement(r);\n    var addToChanges = this.genAddToChanges(r);\n    var lastInDirective = this.genLastInDirective(r);\n\n    return pipeCheckTemplate(r.selfIndex - 1, context, cdRef, pipe, r.name, oldValue, newValue, change,\n      update, addToChanges, lastInDirective);\n  }\n\n  genReferenceCheck(r:ProtoRecord):string {\n    var oldValue = this.fieldNames[r.selfIndex];\n    var newValue = this.localNames[r.selfIndex];\n    var change = this.changeNames[r.selfIndex];\n    var assignment = this.genUpdateCurrentValue(r);\n\n    var update = this.genUpdateDirectiveOrElement(r);\n    var addToChanges = this.genAddToChanges(r);\n    var lastInDirective = this.genLastInDirective(r);\n\n    var check = referenceCheckTemplate(r.selfIndex - 1, assignment, oldValue, newValue, change,\n      update, addToChanges, lastInDirective);\n    if (r.isPureFunction()) {\n      return this.ifChangedGuard(r, check);\n    } else {\n      return check;\n    }\n  }\n\n  genUpdateCurrentValue(r:ProtoRecord):string {\n    var context = this.localNames[r.contextIndex];\n    var newValue = this.localNames[r.selfIndex];\n    var args = this.genArgs(r);\n\n    switch (r.mode) {\n      case RECORD_TYPE_SELF:\n        return assignmentTemplate(newValue, context);\n\n      case RECORD_TYPE_CONST:\n        return `${newValue} = ${this.genLiteral(r.funcOrValue)}`;\n\n      case RECORD_TYPE_PROPERTY:\n        return assignmentTemplate(newValue, `${context}.${r.name}`);\n\n      case RECORD_TYPE_LOCAL:\n        return assignmentTemplate(newValue, `${LOCALS_ACCESSOR}.get('${r.name}')`);\n\n      case RECORD_TYPE_INVOKE_METHOD:\n        return assignmentTemplate(newValue, `${context}.${r.name}(${args})`);\n\n      case RECORD_TYPE_INVOKE_CLOSURE:\n        return assignmentTemplate(newValue, `${context}(${args})`);\n\n      case RECORD_TYPE_PRIMITIVE_OP:\n        return assignmentTemplate(newValue, `${UTIL}.${r.name}(${args})`);\n\n      case RECORD_TYPE_INTERPOLATE:\n        return assignmentTemplate(newValue, this.genInterpolation(r));\n\n      case RECORD_TYPE_KEYED_ACCESS:\n        var key = this.localNames[r.args[0]];\n        return assignmentTemplate(newValue, `${context}[${key}]`);\n\n      default:\n        throw new BaseException(`Unknown operation ${r.mode}`);\n    }\n  }\n\n  ifChangedGuard(r:ProtoRecord, body:string):string {\n    return ifChangedGuardTemplate(r.args.map((a) => this.changeNames[a]), body);\n  }\n\n  genInterpolation(r:ProtoRecord):string{\n    var res = \"\";\n    for (var i = 0; i < r.args.length; ++i) {\n      res += this.genLiteral(r.fixedArgs[i]);\n      res += \" + \";\n      res += this.localNames[r.args[i]];\n      res += \" + \";\n    }\n    res += this.genLiteral(r.fixedArgs[r.args.length]);\n    return res;\n  }\n\n  genLiteral(value):string {\n    return JSON.stringify(value);\n  }\n\n  genUpdateDirectiveOrElement(r:ProtoRecord):string {\n    if (! r.lastInBinding) return \"\";\n\n    var newValue = this.localNames[r.selfIndex];\n    var oldValue = this.fieldNames[r.selfIndex];\n\n    var br = r.bindingRecord;\n    if (br.isDirective()) {\n      var directiveProperty = `${this.getDirective(br.directiveRecord)}.${br.propertyName}`;\n      return updateDirectiveTemplate(oldValue, newValue, directiveProperty);\n    } else {\n      return updateElementTemplate(oldValue, newValue);\n    }\n  }\n\n  genAddToChanges(r:ProtoRecord):string {\n    var newValue = this.localNames[r.selfIndex];\n    var oldValue = this.fieldNames[r.selfIndex];\n    return r.bindingRecord.callOnChange() ? addToChangesTemplate(oldValue, newValue) : \"\";\n  }\n\n  genLastInDirective(r:ProtoRecord):string{\n    var onChanges = this.genNotifyOnChanges(r);\n    var onPush = this.genNotifyOnPushDetectors(r);\n    return lastInDirectiveTemplate(onChanges, onPush);\n  }\n\n  genNotifyOnChanges(r:ProtoRecord):string{\n    var br = r.bindingRecord;\n    if (r.lastInDirective && br.callOnChange()) {\n      return notifyOnChangesTemplate(this.getDirective(br.directiveRecord));\n    } else {\n      return \"\";\n    }\n  }\n\n  genNotifyOnPushDetectors(r:ProtoRecord):string{\n    var br = r.bindingRecord;\n    if (r.lastInDirective && br.isOnPushChangeDetection()) {\n      return notifyOnPushDetectorsTemplate(this.getDetector(br.directiveRecord));\n    } else {\n      return \"\";\n    }\n  }\n\n  genArgs(r:ProtoRecord):string {\n    return r.args.map((arg) => this.localNames[arg]).join(\", \");\n  }\n}\n\n\n\n\n"]}