UNPKG

akasharender

Version:

Rendering support for generating static HTML websites or EPUB eBooks

101 lines 10.2 kB
/** * * Copyright 2014-2025 David Herron * * This file is part of AkashaCMS (http://akashacms.com/). * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var _Plugin_name, _Plugin_options, _Plugin_config, _Plugin_akasha; /* * Ideally, the options object would have a declared data type, * and TypeScript could help us enforce types. * * The base type has a link to the config, and each Plugin * adds its own fields. In loosey-goosey JavaScript we just * declare a blank object and add fields as we wish. * * I attempted to use this as a base type, then use Union * types in each Plugin. The type machinations became * impossible, unfortunately. * export type PluginBaseOptions = { config?: Configuration }; * * The solution is adding a new attribute, config. Any * plugin can now get the config with this.config. */ export class Plugin { constructor(name) { _Plugin_name.set(this, void 0); _Plugin_options.set(this, void 0); _Plugin_config.set(this, void 0); _Plugin_akasha.set(this, void 0); __classPrivateFieldSet(this, _Plugin_name, name, "f"); } set options(newOptions) { __classPrivateFieldSet(this, _Plugin_options, newOptions, "f"); } get options() { return __classPrivateFieldGet(this, _Plugin_options, "f"); } set config(newConfig) { __classPrivateFieldSet(this, _Plugin_config, newConfig, "f"); } get config() { return __classPrivateFieldGet(this, _Plugin_config, "f"); } get akasha() { return __classPrivateFieldGet(this, _Plugin_akasha, "f"); } set akasha(_akasha) { __classPrivateFieldSet(this, _Plugin_akasha, _akasha, "f"); } /** * Add this plugin to the configuration object. */ configure(config, options) { throw new Error("Must implement configure function"); } /** * Getter for the plugin name */ get name() { return __classPrivateFieldGet(this, _Plugin_name, "f"); } /** * Getter for object describing the additional FileCache fields * to index. Plugins may be interested in specific data that must * be indexed. * * This function returns an empty object. Any plugin wishing to * have an indexed field should implement this, and modify this object * appropriately. * * The object returned has four fields, <code>documents</code>, * <code>assets</code>, <code>layouts</code>, and <code>partials</code>. * * Any field that is <code>undefined</code> is to be ignored. Otherwise * the field must be an object listing the fields to index. This * mechanism does not support setting the index type. */ get cacheIndexes() { return { documents: undefined, // {}, assets: undefined, // {}, layouts: undefined, // {}, partials: undefined, // {} }; } } _Plugin_name = new WeakMap(), _Plugin_options = new WeakMap(), _Plugin_config = new WeakMap(), _Plugin_akasha = new WeakMap(); ; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL1BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7Ozs7Ozs7Ozs7Ozs7QUFJSDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBRUgsTUFBTSxPQUFPLE1BQU07SUFPZixZQUFZLElBQUk7UUFMaEIsK0JBQWM7UUFDZCxrQ0FBUztRQUNULGlDQUF1QjtRQUN2QixpQ0FBUTtRQUdKLHVCQUFBLElBQUksZ0JBQVUsSUFBSSxNQUFBLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSx1QkFBQSxJQUFJLG1CQUFZLFVBQVUsTUFBQSxDQUFDLENBQUMsQ0FBQztJQUN2RCxJQUFJLE9BQU8sS0FBSyxPQUFPLHVCQUFBLElBQUksdUJBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxNQUFNLENBQUMsU0FBUyxJQUFJLHVCQUFBLElBQUksa0JBQVcsU0FBUyxNQUFBLENBQUMsQ0FBQyxDQUFDO0lBQ25ELElBQUksTUFBTSxLQUFvQixPQUFPLHVCQUFBLElBQUksc0JBQVEsQ0FBQyxDQUFDLENBQUM7SUFDcEQsSUFBSSxNQUFNLEtBQUssT0FBTyx1QkFBQSxJQUFJLHNCQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSx1QkFBQSxJQUFJLGtCQUFXLE9BQU8sTUFBQSxDQUFDLENBQUMsQ0FBQztJQUUvQzs7T0FFRztJQUNILFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTztRQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxJQUFJLEtBQUssT0FBTyx1QkFBQSxJQUFJLG9CQUFNLENBQUMsQ0FBQyxDQUFDO0lBRWpDOzs7Ozs7Ozs7Ozs7Ozs7T0FlRztJQUNILElBQUksWUFBWTtRQUNaLE9BQU87WUFDSCxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU07WUFDNUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNO1lBQ3pCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTTtZQUMxQixRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUs7U0FDN0IsQ0FBQztJQUNOLENBQUM7Q0FDSjs7QUFBQSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKlxuICogQ29weXJpZ2h0IDIwMTQtMjAyNSBEYXZpZCBIZXJyb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBBa2FzaGFDTVMgKGh0dHA6Ly9ha2FzaGFjbXMuY29tLykuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG4vKlxuICogSWRlYWxseSwgdGhlIG9wdGlvbnMgb2JqZWN0IHdvdWxkIGhhdmUgYSBkZWNsYXJlZCBkYXRhIHR5cGUsXG4gKiBhbmQgVHlwZVNjcmlwdCBjb3VsZCBoZWxwIHVzIGVuZm9yY2UgdHlwZXMuXG4gKlxuICogVGhlIGJhc2UgdHlwZSBoYXMgYSBsaW5rIHRvIHRoZSBjb25maWcsIGFuZCBlYWNoIFBsdWdpblxuICogYWRkcyBpdHMgb3duIGZpZWxkcy4gIEluIGxvb3NleS1nb29zZXkgSmF2YVNjcmlwdCB3ZSBqdXN0XG4gKiBkZWNsYXJlIGEgYmxhbmsgb2JqZWN0IGFuZCBhZGQgZmllbGRzIGFzIHdlIHdpc2guXG4gKlxuICogSSBhdHRlbXB0ZWQgdG8gdXNlIHRoaXMgYXMgYSBiYXNlIHR5cGUsIHRoZW4gdXNlIFVuaW9uXG4gKiB0eXBlcyBpbiBlYWNoIFBsdWdpbi4gIFRoZSB0eXBlIG1hY2hpbmF0aW9ucyBiZWNhbWVcbiAqIGltcG9zc2libGUsIHVuZm9ydHVuYXRlbHkuXG4gKlxuZXhwb3J0IHR5cGUgUGx1Z2luQmFzZU9wdGlvbnMgPSB7XG4gICAgY29uZmlnPzogQ29uZmlndXJhdGlvblxufTtcbiAqXG4gKiBUaGUgc29sdXRpb24gaXMgYWRkaW5nIGEgbmV3IGF0dHJpYnV0ZSwgY29uZmlnLiAgQW55XG4gKiBwbHVnaW4gY2FuIG5vdyBnZXQgdGhlIGNvbmZpZyB3aXRoIHRoaXMuY29uZmlnLlxuICovXG5cbmV4cG9ydCBjbGFzcyBQbHVnaW4ge1xuXG4gICAgI25hbWU6IHN0cmluZztcbiAgICAjb3B0aW9ucztcbiAgICAjY29uZmlnOiBDb25maWd1cmF0aW9uO1xuICAgICNha2FzaGE7XG5cbiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7XG4gICAgICAgIHRoaXMuI25hbWUgID0gbmFtZTtcbiAgICB9XG5cbiAgICBzZXQgb3B0aW9ucyhuZXdPcHRpb25zKSB7IHRoaXMuI29wdGlvbnMgPSBuZXdPcHRpb25zOyB9XG4gICAgZ2V0IG9wdGlvbnMoKSB7IHJldHVybiB0aGlzLiNvcHRpb25zOyB9XG4gICAgc2V0IGNvbmZpZyhuZXdDb25maWcpIHsgdGhpcy4jY29uZmlnID0gbmV3Q29uZmlnOyB9XG4gICAgZ2V0IGNvbmZpZygpOiBDb25maWd1cmF0aW9uIHsgcmV0dXJuIHRoaXMuI2NvbmZpZzsgfVxuICAgIGdldCBha2FzaGEoKSB7IHJldHVybiB0aGlzLiNha2FzaGE7IH1cbiAgICBzZXQgYWthc2hhKF9ha2FzaGEpIHsgdGhpcy4jYWthc2hhID0gX2FrYXNoYTsgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoaXMgcGx1Z2luIHRvIHRoZSBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAgICAgKi9cbiAgICBjb25maWd1cmUoY29uZmlnLCBvcHRpb25zKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk11c3QgaW1wbGVtZW50IGNvbmZpZ3VyZSBmdW5jdGlvblwiKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXR0ZXIgZm9yIHRoZSBwbHVnaW4gbmFtZVxuICAgICAqL1xuICAgIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy4jbmFtZTsgfVxuXG4gICAgLyoqXG4gICAgICogR2V0dGVyIGZvciBvYmplY3QgZGVzY3JpYmluZyB0aGUgYWRkaXRpb25hbCBGaWxlQ2FjaGUgZmllbGRzXG4gICAgICogdG8gaW5kZXguICBQbHVnaW5zIG1heSBiZSBpbnRlcmVzdGVkIGluIHNwZWNpZmljIGRhdGEgdGhhdCBtdXN0XG4gICAgICogYmUgaW5kZXhlZC5cbiAgICAgKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbiBlbXB0eSBvYmplY3QuICBBbnkgcGx1Z2luIHdpc2hpbmcgdG9cbiAgICAgKiBoYXZlIGFuIGluZGV4ZWQgZmllbGQgc2hvdWxkIGltcGxlbWVudCB0aGlzLCBhbmQgbW9kaWZ5IHRoaXMgb2JqZWN0XG4gICAgICogYXBwcm9wcmlhdGVseS5cbiAgICAgKlxuICAgICAqIFRoZSBvYmplY3QgcmV0dXJuZWQgaGFzIGZvdXIgZmllbGRzLCA8Y29kZT5kb2N1bWVudHM8L2NvZGU+LFxuICAgICAqIDxjb2RlPmFzc2V0czwvY29kZT4sIDxjb2RlPmxheW91dHM8L2NvZGU+LCBhbmQgPGNvZGU+cGFydGlhbHM8L2NvZGU+LlxuICAgICAqXG4gICAgICogQW55IGZpZWxkIHRoYXQgaXMgPGNvZGU+dW5kZWZpbmVkPC9jb2RlPiBpcyB0byBiZSBpZ25vcmVkLiAgT3RoZXJ3aXNlXG4gICAgICogdGhlIGZpZWxkIG11c3QgYmUgYW4gb2JqZWN0IGxpc3RpbmcgdGhlIGZpZWxkcyB0byBpbmRleC4gIFRoaXNcbiAgICAgKiBtZWNoYW5pc20gZG9lcyBub3Qgc3VwcG9ydCBzZXR0aW5nIHRoZSBpbmRleCB0eXBlLlxuICAgICAqL1xuICAgIGdldCBjYWNoZUluZGV4ZXMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkb2N1bWVudHM6IHVuZGVmaW5lZCwgLy8ge30sXG4gICAgICAgICAgICBhc3NldHM6IHVuZGVmaW5lZCwgLy8ge30sXG4gICAgICAgICAgICBsYXlvdXRzOiB1bmRlZmluZWQsIC8vIHt9LFxuICAgICAgICAgICAgcGFydGlhbHM6IHVuZGVmaW5lZCwgLy8ge31cbiAgICAgICAgfTtcbiAgICB9XG59O1xuIl19