@remcostoeten/fync
Version:
Unified TypeScript library for 9 popular APIs with consistent functional architecture
32 lines • 1.15 kB
JavaScript
import { createFyncApi } from "./api-factory";
import { createFyncResource } from "./resource-factory";
export function createFyncModule(config) {
const apiClient = createFyncApi(config.apiConfig);
const module = { api: apiClient };
Object.entries(config.resources).forEach(function ([resourceName, resourceConfig,]) {
module[resourceName] = createFyncResource(resourceConfig, apiClient);
});
if (config.helpers) {
Object.entries(config.helpers).forEach(function ([helperName, helperFn]) {
module[helperName] = helperFn;
});
}
return module;
}
export 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,
});
};
}
//# sourceMappingURL=module-factory.js.map