UNPKG

solid-services

Version:

Solid.js library adding a services layer for global shared state.

31 lines 3.62 kB
import { createRegistry } from "./registry"; import { createContext, createComponent, useContext, } from "solid-js"; export const ServiceRegistryContext = createContext(); export const ServiceRegistry = (props) => { let registry; return createComponent(ServiceRegistryContext.Provider, { get value() { return (registry ??= createRegistry({ get expose() { return props.expose; }, })); }, get children() { return props.children; }, }); }; /** * Returns the current registry. * * If no registry is found, it will throw an error. */ export function useRegistry() { const registry = useContext(ServiceRegistryContext); if (!registry) { throw new Error("Your app needs to be wrapped with <ServiceRegistry> context in order to use services."); } return registry; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQXNCLE1BQU0sWUFBWSxDQUFDO0FBR2hFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsZUFBZSxFQUNmLFVBQVUsR0FFWCxNQUFNLFVBQVUsQ0FBQztBQU1sQixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxhQUFhLEVBQVksQ0FBQztBQUVoRSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQXlDLENBQUMsS0FBSyxFQUFFLEVBQUU7SUFDN0UsSUFBSSxRQUE4QixDQUFDO0lBRW5DLE9BQU8sZUFBZSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtRQUN0RCxJQUFJLEtBQUs7WUFDUCxPQUFPLENBQUMsUUFBUSxLQUFLLGNBQWMsQ0FBQztnQkFDbEMsSUFBSSxNQUFNO29CQUNSLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQztnQkFDdEIsQ0FBQzthQUNGLENBQUMsQ0FBQyxDQUFDO1FBQ04sQ0FBQztRQUVELElBQUksUUFBUTtZQUNWLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUN4QixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxXQUFXO0lBQ3pCLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBRXBELElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDYixNQUFNLElBQUksS0FBSyxDQUNiLHVGQUF1RixDQUN4RixDQUFDO0tBQ0g7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVnaXN0cnksIFNlcnZpY2VJbml0aWFsaXplciB9IGZyb20gXCIuL3JlZ2lzdHJ5XCI7XG5pbXBvcnQgdHlwZSB7IFJlZ2lzdHJ5IH0gZnJvbSBcIi4vcmVnaXN0cnlcIjtcblxuaW1wb3J0IHtcbiAgY3JlYXRlQ29udGV4dCxcbiAgY3JlYXRlQ29tcG9uZW50LFxuICB1c2VDb250ZXh0LFxuICBGbG93Q29tcG9uZW50LFxufSBmcm9tIFwic29saWQtanNcIjtcblxuZXhwb3J0IHR5cGUgUmVnaXN0cnlQcm92aWRlclByb3BzID0ge1xuICBleHBvc2U/OiBTZXJ2aWNlSW5pdGlhbGl6ZXI8YW55PltdIHwgYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBTZXJ2aWNlUmVnaXN0cnlDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxSZWdpc3RyeT4oKTtcblxuZXhwb3J0IGNvbnN0IFNlcnZpY2VSZWdpc3RyeTogRmxvd0NvbXBvbmVudDxSZWdpc3RyeVByb3ZpZGVyUHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGxldCByZWdpc3RyeTogUmVnaXN0cnkgfCB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChTZXJ2aWNlUmVnaXN0cnlDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgZ2V0IHZhbHVlKCkge1xuICAgICAgcmV0dXJuIChyZWdpc3RyeSA/Pz0gY3JlYXRlUmVnaXN0cnkoe1xuICAgICAgICBnZXQgZXhwb3NlKCkge1xuICAgICAgICAgIHJldHVybiBwcm9wcy5leHBvc2U7XG4gICAgICAgIH0sXG4gICAgICB9KSk7XG4gICAgfSxcblxuICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgIHJldHVybiBwcm9wcy5jaGlsZHJlbjtcbiAgICB9LFxuICB9KTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgY3VycmVudCByZWdpc3RyeS5cbiAqIFxuICogSWYgbm8gcmVnaXN0cnkgaXMgZm91bmQsIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VSZWdpc3RyeSgpOiBSZWdpc3RyeSB7XG4gIGNvbnN0IHJlZ2lzdHJ5ID0gdXNlQ29udGV4dChTZXJ2aWNlUmVnaXN0cnlDb250ZXh0KTtcblxuICBpZiAoIXJlZ2lzdHJ5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJZb3VyIGFwcCBuZWVkcyB0byBiZSB3cmFwcGVkIHdpdGggPFNlcnZpY2VSZWdpc3RyeT4gY29udGV4dCBpbiBvcmRlciB0byB1c2Ugc2VydmljZXMuXCJcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHJlZ2lzdHJ5O1xufVxuIl19