UNPKG

@freemework/hosting

Version:

Hosting library of the Freemework Project.

38 lines 1.66 kB
import { readFile } from "fs"; import { promisify } from "util"; import { pathToFileURL } from "url"; const readFileAsync = promisify(readFile); import { FConfigurationDictionary } from "@freemework/common"; /** * Very similar to Java property files */ export class FConfigurationProperties extends FConfigurationDictionary { static async fromFile(propertiesConfigFile) { const propertiesConfigFileURL = pathToFileURL(propertiesConfigFile); const sourceURI = new URL(`configuration+file+properties://${propertiesConfigFileURL.pathname}`); const fileContent = await readFileAsync(propertiesConfigFile); return new FConfigurationProperties(sourceURI, fileContent.toString("utf-8")); } static factory(propertiesDocument) { const encodedPropertiesDocument = encodeURIComponent(propertiesDocument); const sourceURI = new URL(`configuration:properties?data=${encodedPropertiesDocument}`); return new FConfigurationProperties(sourceURI, propertiesDocument); } constructor(sourceURI, propertiesDocument) { const dict = {}; const lines = propertiesDocument.toString().split(/(?:\r\n|\r|\n)/g); lines.forEach((line) => { if (line.startsWith("#")) { return; } const indexOfEq = line.indexOf("="); if (indexOfEq >= 0) { const name = line.substring(0, indexOfEq).trim(); const value = line.substring(indexOfEq + 1).trim(); dict[name] = value; } }); super(sourceURI, dict); } } //# sourceMappingURL=FConfigurationProperties.js.map