/** * Copyright (c) HashiCorp, Inc. * SPDX-License-Identifier: MPL-2.0 */ import ApplicationSerializer from './application'; import { EmbeddedRecordsMixin } from '@ember-data/serializer/rest'; export default ApplicationSerializer.extend(EmbeddedRecordsMixin, { attrs: { config: { embedded: 'always' }, }, normalize(modelClass, data) { // embedded records need a unique value to be stored // use the uuid from the auth-method as the unique id for mount-config if (data.config && !data.config.id) { data.config.id = data.uuid; } return this._super(modelClass, data); }, normalizeBackend(path, backend) { const struct = { ...backend }; // strip the trailing slash off of the path so we // can navigate to it without getting `//` in the url struct.id = path.slice(0, -1); struct.path = path; return struct; }, normalizeResponse(store, primaryModelClass, payload, id, requestType) { const isCreate = requestType === 'createRecord'; const backends = isCreate ? payload.data : Object.keys(payload.data).map((path) => this.normalizeBackend(path, payload.data[path])); return this._super(store, primaryModelClass, backends, id, requestType); }, });