@remcostoeten/fync
Version:
Unified TypeScript library for 9 popular APIs with consistent functional architecture
40 lines (39 loc) • 1.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createApiBuilder = createApiBuilder;
exports.createFyncModule = createFyncModule;
var _apiFactory = require("./api-factory");
var _resourceFactory = require("./resource-factory");
function createFyncModule(config) {
const apiClient = (0, _apiFactory.createFyncApi)(config.apiConfig);
const module = {
api: apiClient
};
Object.entries(config.resources).forEach(function ([resourceName, resourceConfig]) {
module[resourceName] = (0, _resourceFactory.createFyncResource)(resourceConfig, apiClient);
});
if (config.helpers) {
Object.entries(config.helpers).forEach(function ([helperName, helperFn]) {
module[helperName] = helperFn;
});
}
return module;
}
function createApiBuilder(defaultConfig) {
return function buildApi(userConfig, resources) {
const finalConfig = {
...defaultConfig,
...userConfig
};
if (userConfig.token && finalConfig.auth?.type === "bearer") {
finalConfig.auth.token = userConfig.token;
}
return createFyncModule({
name: defaultConfig.baseUrl || "api",
apiConfig: finalConfig,
resources
});
};
}