UNPKG

@communities-webruntime/services

Version:

If you would like to run Lightning Web Runtime without the CLI, we expose some of our programmatic APIs available in Node.js. If you're looking for the CLI documentation [you can find that here](https://www.npmjs.com/package/@communities-webruntime/cli).

106 lines 3.99 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ModuleResourceService = exports.getResourceUrlFromModule = void 0; /** * Copyright (c) 2019, salesforce.com, inc. * All rights reserved. * SPDX-License-Identifier: MIT * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ const fs = __importStar(require("fs")); const api_1 = require("@webruntime/api"); const common_1 = require("@communities-webruntime/common"); /** * Gets a pre-built resource UID from a module. * * @param module the module/package to read from * @param descriptor the resource descriptor * @param mode the mode to return */ function getResourceUidFromModule(module, descriptor, mode) { const resources = require(`${module}/dist/resources.json`); if (!resources[descriptor] || !resources[descriptor][mode]) { throw new Error(`Cannot find resource ${descriptor} for mode '${mode}'`); } return resources[descriptor][mode]; } /** * Gets the URL of a pre-built resource from a module. * * @param module the module/package to read from * @param descriptor the resource descriptor * @param mode the mode to return */ function getResourceUrlFromModule(module, descriptor, mode) { const uid = getResourceUidFromModule(module, descriptor, mode); const { type, name } = common_1.parseResourceDescriptor(descriptor); return `/webruntime/${type}/${uid}/${mode}/${name}.js`; } exports.getResourceUrlFromModule = getResourceUrlFromModule; /** * Reads a pre-built resource from a module. * * @param module the module/package to read from * @param descriptor the resource descriptor * @param mode the mode to return * @param resolver used to resolve the resource path */ function readResourceFromModule(module, descriptor, mode, resolver = require) { return fs.readFileSync(resolver.resolve(`${module}/dist/public${getResourceUrlFromModule(module, descriptor, mode)}`), 'utf8'); } /** * This service serves a pre-built scripts read from a module's resource.json. */ class ModuleResourceService extends api_1.AddressableService { constructor(module, specifier, descriptor, resourceUri, resolver) { super(resourceUri); this.module = module; this.specifier = specifier; this.descriptor = descriptor; this.resourceUri = resourceUri; this.resolver = resolver; this.mappings = { [this.specifier]: this.resourceUri, }; } initialize() { } async request(specifier, { mode }) { const code = readResourceFromModule(this.module, this.descriptor, mode, this.resolver); return { type: api_1.RequestOutputTypes.COMPONENT, specifier, resource: { code, }, metadata: { dependencies: [], }, success: true, diagnostics: [], }; } toSpecifier() { return this.specifier; } } exports.ModuleResourceService = ModuleResourceService; //# sourceMappingURL=module-resource-service.js.map