UNPKG

@mdfriday/foundry

Version:

The core engine of MDFriday. Convert Markdown and shortcodes into fully themed static sites – Hugo-style, powered by TypeScript.

125 lines 4.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Factory = void 0; exports.newOverlayFsFactory = newOverlayFsFactory; exports.createOverlayFileSystem = createOverlayFileSystem; exports.createReadOnlyOverlayFs = createReadOnlyOverlayFs; exports.createWritableOverlayFs = createWritableOverlayFs; exports.appendToOverlayFs = appendToOverlayFs; exports.createOverlayFromPairs = createOverlayFromPairs; exports.createMultilayerOverlayFs = createMultilayerOverlayFs; const overlayoptions_1 = require("./overlayoptions"); const overlayfs_1 = require("../entity/overlayfs"); /** * OverlayFs factory implementation */ class Factory { /** * Create overlay filesystem with default settings */ create(fss) { const options = (0, overlayoptions_1.createDefaultOverlayOptions)(fss); return (0, overlayfs_1.newOverlayFs)(options); } /** * Create overlay filesystem with custom options */ createWithOptions(options) { return (0, overlayfs_1.createOverlayFs)(options); } /** * Create read-only overlay filesystem */ createReadOnly(fss) { const options = (0, overlayoptions_1.createDefaultOverlayOptions)(fss); return (0, overlayfs_1.newOverlayFs)(options); } /** * Create writable overlay filesystem (first filesystem is writable) */ createWritable(fss) { const options = (0, overlayoptions_1.createWritableOverlayOptions)(fss); return (0, overlayfs_1.newOverlayFs)(options); } /** * Create overlay filesystem with custom directory merger */ createWithMerger(fss, merger) { const options = (0, overlayoptions_1.createDefaultOverlayOptions)(fss).withDirsMerger(merger); return (0, overlayfs_1.newOverlayFs)(options); } } exports.Factory = Factory; /** * Create new OverlayFs factory */ function newOverlayFsFactory() { return new Factory(); } /** * Convenience function to create overlay filesystem */ function createOverlayFileSystem(fss, options) { const factory = newOverlayFsFactory(); if (!options) { return factory.create(fss); } const overlayOptions = { fss }; if (options.firstWritable !== undefined) { overlayOptions.firstWritable = options.firstWritable; } if (options.dirsMerger !== undefined) { overlayOptions.dirsMerger = options.dirsMerger; } return factory.createWithOptions(overlayOptions); } /** * Create read-only overlay filesystem (convenience function) */ function createReadOnlyOverlayFs(fss) { const factory = newOverlayFsFactory(); return factory.createReadOnly(fss); } /** * Create writable overlay filesystem (convenience function) */ function createWritableOverlayFs(fss, dirsMerger) { const factory = newOverlayFsFactory(); const overlayFs = factory.createWritable(fss); if (dirsMerger) { return overlayFs.withDirsMerger(dirsMerger); } return overlayFs; } /** * Append filesystems to existing overlay (convenience function) */ function appendToOverlayFs(overlayFs, ...fss) { return overlayFs.append(...fss); } /** * Create overlay filesystem from array of filesystem pairs */ function createOverlayFromPairs(pairs) { // Sort by priority (lower number = higher priority) const sortedPairs = pairs.sort((a, b) => a.priority - b.priority); const fss = sortedPairs.map(pair => pair.fs); const factory = newOverlayFsFactory(); return factory.create(fss); } /** * Create multilayer overlay filesystem */ function createMultilayerOverlayFs(readOnlyLayers, writableLayer, dirsMerger) { const fss = writableLayer ? [writableLayer, ...readOnlyLayers] : readOnlyLayers; const options = { fss, firstWritable: !!writableLayer, }; if (dirsMerger !== undefined) { options.dirsMerger = dirsMerger; } const factory = newOverlayFsFactory(); return factory.createWithOptions(options); } //# sourceMappingURL=overlayfs-factory.js.map