123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.useSidecar = void 0;
- var react_1 = require("react");
- var env_1 = require("./env");
- var cache = new WeakMap();
- var NO_OPTIONS = {};
- function useSidecar(importer, effect) {
- var options = (effect && effect.options) || NO_OPTIONS;
- if (env_1.env.isNode && !options.ssr) {
- return [null, null];
- }
- // eslint-disable-next-line react-hooks/rules-of-hooks
- return useRealSidecar(importer, effect);
- }
- exports.useSidecar = useSidecar;
- function useRealSidecar(importer, effect) {
- var options = (effect && effect.options) || NO_OPTIONS;
- var couldUseCache = env_1.env.forceCache || (env_1.env.isNode && !!options.ssr) || !options.async;
- var _a = (0, react_1.useState)(couldUseCache ? function () { return cache.get(importer); } : undefined), Car = _a[0], setCar = _a[1];
- var _b = (0, react_1.useState)(null), error = _b[0], setError = _b[1];
- (0, react_1.useEffect)(function () {
- if (!Car) {
- importer().then(function (car) {
- var resolved = effect ? effect.read() : car.default || car;
- if (!resolved) {
- console.error('Sidecar error: with importer', importer);
- var error_1;
- if (effect) {
- console.error('Sidecar error: with medium', effect);
- error_1 = new Error('Sidecar medium was not found');
- }
- else {
- error_1 = new Error('Sidecar was not found in exports');
- }
- setError(function () { return error_1; });
- throw error_1;
- }
- cache.set(importer, resolved);
- setCar(function () { return resolved; });
- }, function (e) { return setError(function () { return e; }); });
- }
- }, []);
- return [Car, error];
- }
|