breeze-client
Version:
Breeze data management for JavaScript clients
1 lines • 15.9 kB
Source Map (JSON)
{"version":3,"file":"breeze-client-adapter-model-library-ko.mjs","sources":["../../src/adapter-model-library-ko.ts","../../src/breeze-client-adapter-model-library-ko.ts"],"sourcesContent":["import * as breeze from 'breeze-client';\r\n\r\nlet core = breeze.core;\r\n\r\nlet canIsolateES5Props = core.isES5Supported;\r\nlet ko: any;\r\n\r\nexport class ModelLibraryKnockoutAdapter implements breeze.ModelLibraryAdapter {\r\n name: string;\r\n constructor() {\r\n this.name = \"ko\";\r\n }\r\n\r\n static register(config?: breeze.BreezeConfig) {\r\n config = config || breeze.config;\r\n config.registerAdapter(\"modelLibrary\", ModelLibraryKnockoutAdapter);\r\n return config.initializeAdapterInstance(\"modelLibrary\", \"ko\", true) as ModelLibraryKnockoutAdapter;\r\n }\r\n\r\n initialize() {\r\n ko = core.requireLib(\"ko;knockout\", \"The Knockout library\");\r\n ko.extenders.intercept = function (target: any, interceptorOptions: any) {\r\n let instance = interceptorOptions.instance;\r\n let property = interceptorOptions.property;\r\n\r\n // create a computed observable to intercept writes to our observable\r\n let result: any;\r\n if (target.splice) {\r\n result = ko.computed({\r\n read: target //always return the original observables value\r\n });\r\n } else {\r\n result = ko.computed({\r\n read: target, //always return the original observables value\r\n write: function (newValue: any) {\r\n instance._$interceptor(property, newValue, target);\r\n return instance;\r\n }\r\n });\r\n }\r\n //return the new computed observable\r\n return result;\r\n };\r\n\r\n }\r\n\r\n getTrackablePropertyNames(entity: any) {\r\n let names: string[] = [];\r\n for (let p in entity) {\r\n if (p === \"entityType\") continue;\r\n if (p === \"_$typeName\") continue;\r\n\r\n let propDescr = getES5PropDescriptor(entity, p);\r\n if (propDescr && propDescr.get) {\r\n names.push(p);\r\n } else {\r\n let val = entity[p];\r\n if (ko.isObservable(val)) {\r\n names.push(p);\r\n } else if (!core.isFunction(val)) {\r\n names.push(p);\r\n }\r\n }\r\n }\r\n return names;\r\n }\r\n\r\n initializeEntityPrototype(proto: any) {\r\n\r\n proto.getProperty = function (propertyName: string) {\r\n return this[propertyName]();\r\n };\r\n\r\n proto.setProperty = function (propertyName: string, value: any) {\r\n this[propertyName](value);\r\n // allow set property chaining.\r\n return this;\r\n };\r\n\r\n if (canIsolateES5Props) {\r\n isolateES5Props(proto);\r\n }\r\n\r\n }\r\n\r\n startTracking(entity: any, proto: any) {\r\n // create ko's for each property and assign defaultValues\r\n\r\n let stype = (entity.entityType || entity.complexType) as breeze.StructuralType;\r\n let es5Descriptors = stype._extra.es5Descriptors || {};\r\n\r\n // sort unmapped properties to the end\r\n stype.getProperties().sort(function (p1, p2) {\r\n let v1 = p1.isUnmapped ? 1 : 0;\r\n let v2 = p2.isUnmapped ? 1 : 0;\r\n return v1 - v2;\r\n }).forEach(function (prop) {\r\n let propName = prop.name;\r\n let val = entity[propName];\r\n let propDescr = es5Descriptors[propName];\r\n let koObj: any;\r\n\r\n // check if property is an ES5 property\r\n if (propDescr) {\r\n let getFn = propDescr.get.bind(entity);\r\n if (propDescr.set) {\r\n let setFn = propDescr.set.bind(entity);\r\n let rawAccessorFn = function (newValue: any) {\r\n if (arguments.length === 0) {\r\n getFn();\r\n return;\r\n } else {\r\n setFn(newValue);\r\n }\r\n };\r\n koObj = ko.computed({\r\n read: function () {\r\n (stype as any)._koDummy();\r\n return getFn();\r\n },\r\n write: function (newValue: any) {\r\n entity._$interceptor(prop, newValue, rawAccessorFn);\r\n (stype as any)._koDummy.valueHasMutated();\r\n return entity;\r\n }\r\n });\r\n } else {\r\n koObj = ko.computed({\r\n read: getFn,\r\n write: function () {\r\n }\r\n\r\n });\r\n }\r\n // check if property is already exposed as a ko object\r\n } else if (ko.isObservable(val)) {\r\n if (prop.isNavigationProperty) {\r\n throw new Error(\"Cannot assign a navigation property in an entity ctor.: \" + propName);\r\n }\r\n koObj = val;\r\n // otherwise\r\n } else {\r\n val = initializeValueForProp(entity, prop, val);\r\n koObj = prop.isScalar ? ko.observable(val) : ko.observableArray(val);\r\n }\r\n\r\n\r\n if (prop.isScalar) {\r\n if (propDescr) {\r\n Object.defineProperty(entity, propName, {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: koObj\r\n });\r\n } else {\r\n let koExt = koObj.extend({ intercept: { instance: entity, property: prop } });\r\n entity[propName] = koExt;\r\n }\r\n } else {\r\n val._koObj = koObj;\r\n // code to suppress extra breeze notification when\r\n // ko's array methods are called.\r\n koObj.subscribe(onBeforeChange, null, \"beforeChange\");\r\n // code to insure that any direct breeze changes notify ko\r\n val.arrayChanged.subscribe(onArrayChanged);\r\n\r\n koObj.equalityComparer = function () {\r\n throw new Error(\"Collection navigation properties may NOT be set.\");\r\n };\r\n entity[propName] = koObj;\r\n }\r\n\r\n });\r\n\r\n }\r\n}\r\n\r\nbreeze.config.registerAdapter(\"modelLibrary\", ModelLibraryKnockoutAdapter);\r\n\r\n\r\n// private fns\r\n\r\nfunction getES5PropDescriptor(proto: any, propName: string): any {\r\n if (!canIsolateES5Props) {\r\n return null;\r\n }\r\n if (proto.hasOwnProperty(propName)) {\r\n return Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(proto, propName);\r\n } else {\r\n let nextProto = Object.getPrototypeOf(proto);\r\n return nextProto ? getES5PropDescriptor(nextProto, propName) : null;\r\n }\r\n}\r\n\r\nfunction initializeValueForProp(entity: any, prop: breeze.EntityProperty, val: any) {\r\n if (prop instanceof breeze.DataProperty) {\r\n if (prop.isComplexProperty) {\r\n // TODO: right now we create Empty complexObjects here - these should actually come from the entity\r\n if (prop.isScalar) {\r\n val = (prop.dataType as breeze.ComplexType)._createInstanceCore(entity, prop);\r\n } else {\r\n val = breeze.makeComplexArray([], entity, prop);\r\n }\r\n } else if (!prop.isScalar) {\r\n val = breeze.makePrimitiveArray([], entity, prop);\r\n } else if (val === undefined) {\r\n val = prop.defaultValue;\r\n }\r\n\r\n } else if (prop instanceof breeze.NavigationProperty) {\r\n if (val !== undefined) {\r\n throw new Error(\"Cannot assign a navigation property in an entity ctor.: \" + prop.name);\r\n }\r\n if (prop.isScalar) {\r\n // TODO: change this to nullEntity later.\r\n val = null;\r\n } else {\r\n val = breeze.makeRelationArray([], entity, prop);\r\n }\r\n } else {\r\n throw new Error(\"unknown property: \" + (prop as any).name);\r\n }\r\n return val;\r\n}\r\n\r\n\r\nfunction onBeforeChange(args: any) {\r\n args._koObj._suppressBreeze = true;\r\n}\r\n\r\nfunction onArrayChanged(args: any) {\r\n let koObj = args.array._koObj;\r\n if (koObj._suppressBreeze) {\r\n koObj._suppressBreeze = false;\r\n } else {\r\n koObj.valueHasMutated();\r\n }\r\n}\r\n\r\nfunction isolateES5Props(proto: any) {\r\n let stype = (proto.entityType || proto.complexType) as breeze.StructuralType;\r\n let es5Descriptors = {};\r\n stype.getProperties().forEach(function (prop) {\r\n let propDescr = getES5PropDescriptor(proto, prop.name);\r\n if (propDescr) {\r\n es5Descriptors[prop.name] = propDescr;\r\n }\r\n });\r\n if (!core.isEmpty(es5Descriptors)) {\r\n let extra = stype._extra;\r\n extra.es5Descriptors = es5Descriptors;\r\n (stype as any)._koDummy = ko.observable(null);\r\n }\r\n}\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './adapter-model-library-ko';\n"],"names":[],"mappings":"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"}