@shopware-ag/meteor-admin-sdk
Version:
The Meteor SDK for the Shopware Administration.
40 lines • 1.97 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { createRepositoryAdapter, } from '../repository-adapter';
import { inject } from 'vue';
export function getRepository(entityName, propRepositoryFactory) {
if (propRepositoryFactory) {
return createRepositoryAdapter(propRepositoryFactory(entityName));
}
const injectedFactory = inject('repositoryFactory');
if (injectedFactory) {
return createRepositoryAdapter(injectedFactory.create(entityName));
}
/*
* The use of a Proxy delays the import of the repository until the first method is called.
* This avoids side effects from the repository import and prevents returning a Promise
* from this composable, which would force components using it to be async.
*/
let lazyDataRepository;
return new Proxy({}, {
get(_, property) {
return function (...args) {
return __awaiter(this, void 0, void 0, function* () {
if (!lazyDataRepository) {
lazyDataRepository = (yield import('../repository')).default(entityName);
}
const method = lazyDataRepository[property];
return method(...args);
});
};
},
});
}
//# sourceMappingURL=getRepository.js.map