{"version":3,"file":"breeze-client-adapter-data-service-webapi.mjs","sources":["../../src/adapter-data-service-webapi.ts","../../src/breeze-client-adapter-data-service-webapi.ts"],"sourcesContent":["import * as breeze from 'breeze-client';\r\n// import { JsonResultsAdapter, KeyMapping } from './breeze';\r\n\r\n/** @hidden */\r\nexport class DataServiceWebApiAdapter extends breeze.AbstractDataServiceAdapter {\r\n\r\n  constructor() {\r\n    super();\r\n    this.name = \"webApi\";\r\n  }\r\n\r\n  static register(config?: breeze.BreezeConfig) {\r\n    config = config || breeze.config;\r\n    config.registerAdapter(\"dataService\", DataServiceWebApiAdapter);\r\n    return config.initializeAdapterInstance(\"dataService\", \"webApi\", true) as DataServiceWebApiAdapter;\r\n  }\r\n\r\n  /** @hidden @internal */\r\n  _prepareSaveBundle(saveContext: breeze.SaveContext, saveBundle: breeze.SaveBundle) {\r\n    let changeRequestInterceptor = this._createChangeRequestInterceptor(saveContext, saveBundle);\r\n    let em = saveContext.entityManager;\r\n    let metadataStore = em.metadataStore;\r\n    let helper = em.helper;\r\n    let serSaveBundle: any = {};\r\n    serSaveBundle.entities = saveBundle.entities.map(function (e, ix) {\r\n      let rawEntity = helper.unwrapInstance(e, transformValue);\r\n\r\n      let autoGeneratedKey: Object | undefined;\r\n      if (e.entityType.autoGeneratedKeyType !== breeze.AutoGeneratedKeyType.None) {\r\n        autoGeneratedKey = {\r\n          propertyName: e.entityType.keyProperties[0].nameOnServer,\r\n          autoGeneratedKeyType: e.entityType.autoGeneratedKeyType.name\r\n        };\r\n      }\r\n\r\n      let originalValuesOnServer = helper.unwrapOriginalValues(e, metadataStore);\r\n      rawEntity.entityAspect = {\r\n        entityTypeName: e.entityType.name,\r\n        defaultResourceName: e.entityType.defaultResourceName,\r\n        entityState: e.entityAspect.entityState.name,\r\n        originalValuesMap: originalValuesOnServer,\r\n        autoGeneratedKey: autoGeneratedKey\r\n      };\r\n      rawEntity = changeRequestInterceptor.getRequest(rawEntity, e, ix);\r\n      return rawEntity;\r\n    });\r\n\r\n    serSaveBundle.saveOptions = { tag: saveBundle.saveOptions.tag };\r\n    changeRequestInterceptor.done(serSaveBundle.entities);\r\n    return serSaveBundle;\r\n  }\r\n\r\n  /** @hidden @internal */\r\n  _prepareSaveResult(saveContext: breeze.SaveContext, data: any) {\r\n    // use the jsonResultAdapter to extractResults and extractKeyMappings\r\n    let jra = saveContext.dataService.jsonResultsAdapter || this.jsonResultsAdapter;\r\n    let entities = jra.extractSaveResults(data) || [];\r\n    let keyMappings: breeze.KeyMapping[] = jra.extractKeyMappings(data) || [];\r\n    let deletedKeys = jra.extractDeletedKeys ? (jra.extractDeletedKeys(data)) || [] : [];\r\n\r\n    if (keyMappings.length) {\r\n      // HACK: need to change the 'case' of properties in the saveResult\r\n      // but KeyMapping properties internally are still ucase. ugh...\r\n      keyMappings = keyMappings.map(function (km) {\r\n        if (km.entityTypeName) return km; // it's already lower case\r\n        let kmHack = km as any;\r\n        let entityTypeName = breeze.MetadataStore.normalizeTypeName(kmHack.EntityTypeName);\r\n        return { entityTypeName: entityTypeName, tempValue: kmHack.TempValue, realValue: kmHack.RealValue };\r\n      });\r\n    }\r\n\r\n    if (deletedKeys.length) {\r\n      deletedKeys = deletedKeys.map(function (dk) {\r\n        if (dk.entityTypeName) return dk; // it's already lower case\r\n        let entityTypeName = breeze.MetadataStore.normalizeTypeName(dk.EntityTypeName);\r\n        // NOTE the dk.KeyValue => keyValues transition - needed because we are deserializing an .NET EntityKey\r\n        return { entityTypeName: entityTypeName, keyValues: dk.KeyValue };\r\n      });\r\n    }\r\n\r\n    return { entities: entities, keyMappings: keyMappings, deletedKeys: deletedKeys };\r\n\r\n  }\r\n\r\n  jsonResultsAdapter: breeze.JsonResultsAdapter = new breeze.JsonResultsAdapter({\r\n\r\n    name: \"webApi_default\",\r\n\r\n    visitNode: function (node: any, mappingContext: breeze.MappingContext, nodeContext: breeze.NodeContext) {\r\n      if (node == null) return {};\r\n      let entityTypeName = breeze.MetadataStore.normalizeTypeName(node.$type);\r\n      let entityType = entityTypeName && mappingContext.entityManager.metadataStore.getEntityType(entityTypeName, true);\r\n      let propertyName = nodeContext.propertyName;\r\n      let ignore = propertyName && propertyName.substr(0, 1) === \"$\";\r\n\r\n      return {\r\n        entityType: entityType,\r\n        nodeId: node.$id,\r\n        nodeRefId: node.$ref,\r\n        ignore: ignore\r\n      } as any;\r\n    }\r\n\r\n  });\r\n\r\n}\r\n\r\n/** Transform data properties while unwrapping entities before save */\r\nfunction transformValue(prop: breeze.DataProperty, val: any) {\r\n  if (prop.dataType === breeze.DataType.DateOnly) {\r\n    val = breeze.DataType.toDateOnlyString(val);\r\n  }\r\n  return val;\r\n}\r\n\r\n\r\nbreeze.config.registerAdapter(\"dataService\", DataServiceWebApiAdapter);\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './adapter-data-service-webapi';\n"],"names":[],"mappings":"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"}