109 lines
9.1 KiB
JavaScript
109 lines
9.1 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.register = void 0;
|
|
const axios_1 = require("axios");
|
|
const jsonpath_plus_1 = require("jsonpath-plus");
|
|
const primitives_1 = require("@plastichub/core/primitives");
|
|
const index_1 = require("../index");
|
|
const liquid_1 = require("../liquidjs/liquid");
|
|
const _1 = require("./");
|
|
const render_1 = require("../liquidjs/builtin/tags/render");
|
|
const filters_1 = require("../filters");
|
|
const register = (engine) => {
|
|
engine.registerTag('get', {
|
|
parseFilePath: render_1.parseFilePath,
|
|
renderFilePath: render_1.renderFilePath,
|
|
parse: function (token) {
|
|
const args = token.args;
|
|
const tokenizer = new liquid_1.Tokenizer(args, this.liquid.options.operatorsTrie);
|
|
this['file'] = this.parseFilePath(tokenizer, this.liquid);
|
|
this['currentFile'] = token.file;
|
|
const begin = tokenizer.p;
|
|
const withStr = tokenizer.readIdentifier();
|
|
if (withStr.content === 'with') {
|
|
tokenizer.skipBlank();
|
|
if (tokenizer.peek() !== ':') {
|
|
this.withVar = tokenizer.readValue();
|
|
}
|
|
else
|
|
tokenizer.p = begin;
|
|
}
|
|
else
|
|
tokenizer.p = begin;
|
|
this.hash = new liquid_1.Hash(tokenizer.remaining(), this.liquid.options.jekyllInclude);
|
|
},
|
|
render: function* (ctx, emitter) {
|
|
const enabled = yield* (0, _1.arg)(this.hash.hash, 'enabled', ctx, true);
|
|
if (!enabled)
|
|
return;
|
|
const { liquid, hash, withVar } = this;
|
|
const { renderer } = liquid;
|
|
let url = yield this.renderFilePath(this['file'], ctx, liquid);
|
|
if ((0, primitives_1.isString)(url)) {
|
|
url = liquid.owner.options.resolve(url);
|
|
}
|
|
(0, liquid_1.assert)(url, () => `illegal url "${url}"`);
|
|
(0, liquid_1.assert)((0, filters_1.isValidUrl)(url), () => `illegal url "${url}"`);
|
|
let data = null;
|
|
const raw = yield axios_1.default.get(url);
|
|
if (!raw) {
|
|
index_1.logger.error(`Error fetching data from ${url}`);
|
|
return;
|
|
}
|
|
if (raw && raw.data) {
|
|
data = raw.data;
|
|
}
|
|
const jsonpath = yield* (0, _1.arg)(this.hash.hash, 'path', ctx);
|
|
if (jsonpath && ((0, primitives_1.isObject)(data) || (0, primitives_1.isArray)(data))) {
|
|
try {
|
|
data = (0, jsonpath_plus_1.JSONPath)({
|
|
path: jsonpath,
|
|
json: data,
|
|
});
|
|
data = (0, filters_1.cleanArray)(data);
|
|
//@todo : jsonpath spec
|
|
if ((0, primitives_1.isArray)(data) && data.length === 1) {
|
|
data = data[0];
|
|
}
|
|
}
|
|
catch (error) {
|
|
index_1.logger.error('Error querying index', error, error.stack);
|
|
}
|
|
}
|
|
const assign = yield* (0, _1.arg)(this.hash.hash, 'assign', ctx);
|
|
const before = yield* (0, _1.arg)(this.hash.hash, 'before', ctx);
|
|
const after = yield* (0, _1.arg)(this.hash.hash, 'after', ctx);
|
|
/*
|
|
@todo : remote content
|
|
ctx.setRegister('blocks', {})
|
|
ctx.setRegister('blockMode', BlockMode.OUTPUT)
|
|
|
|
const scope = yield hash.render(ctx)
|
|
if (withVar) scope[url] = evalToken(withVar, ctx)
|
|
|
|
const templates = yield liquid._parsePartialFile(url, ctx.sync, this['currentFile'])
|
|
ctx.push(ctx.opts.jekyllInclude ? { include: scope } : scope)
|
|
let output = ''
|
|
const collector: Emitter = {
|
|
buffer: emitter.buffer,
|
|
write: function (html) {
|
|
this.buffer += html
|
|
output += html
|
|
}
|
|
}
|
|
yield renderer.renderTemplates(templates, ctx, collector)
|
|
ctx.pop()
|
|
ctx.restoreRegister(saved)
|
|
liquid.owner.stats.includes.push({ file: url, parent: this.currentFile })
|
|
*/
|
|
data = yield (0, filters_1.applyFilters)(data, after || '', (0, filters_1.Filters)(liquid.owner.options));
|
|
if (assign) {
|
|
ctx.bottom()[assign] = data;
|
|
return;
|
|
}
|
|
return data;
|
|
}
|
|
});
|
|
};
|
|
exports.register = register;
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BsdWdpbnMvZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQUF5QjtBQUN6QixpREFBd0M7QUFDeEMsNERBQXlFO0FBRXpFLG9DQUFpQztBQUVqQywrQ0FBd0Y7QUFDeEYseUJBQXdCO0FBQ3hCLDREQUErRTtBQUMvRSx3Q0FBMEU7QUFHbkUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRTtJQUNqQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRTtRQUN4QixhQUFhLEVBQWIsc0JBQWE7UUFDYixjQUFjLEVBQWQsdUJBQWM7UUFDZCxLQUFLLEVBQUUsVUFBVSxLQUFlO1lBQzlCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUE7WUFDdkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxrQkFBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQTtZQUN4RSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ3pELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFBO1lBQ2hDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUE7WUFDekIsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFBO1lBQzFDLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxNQUFNLEVBQUU7Z0JBQzlCLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtnQkFDckIsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxFQUFFO29CQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtpQkFDckM7O29CQUFNLFNBQVMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFBO2FBQzNCOztnQkFBTSxTQUFTLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQTtZQUUxQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksYUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNoRixDQUFDO1FBQ0QsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEdBQVksRUFBRSxPQUFnQjtZQUMvQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFBLE1BQUcsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ2hFLElBQUksQ0FBQyxPQUFPO2dCQUFFLE9BQU07WUFDcEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFBO1lBQ3RDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUE7WUFFM0IsSUFBSSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFDOUQsSUFBSSxJQUFBLHFCQUFRLEVBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2pCLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDeEM7WUFDRCxJQUFBLGVBQU0sRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDLENBQUE7WUFDekMsSUFBQSxlQUFNLEVBQUMsSUFBQSxvQkFBVSxFQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsQ0FBQyxDQUFBO1lBRXJELElBQUksSUFBSSxHQUFHLElBQUksQ0FBQTtZQUNmLE1BQU0sR0FBRyxHQUFHLE1BQU0sZUFBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNoQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNSLGNBQU0sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEdBQUcsRUFBRSxDQUFDLENBQUE7Z0JBQy9DLE9BQU07YUFDUDtZQUVELElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUU7Z0JBQ25CLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFBO2FBQ2hCO1lBRUQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBQSxNQUFHLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBQ3hELElBQUksUUFBUSxJQUFJLENBQUMsSUFBQSxxQkFBUSxFQUFDLElBQUksQ0FBQyxJQUFJLElBQUEsb0JBQU8sRUFBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO2dCQUNqRCxJQUFJO29CQUNGLElBQUksR0FBRyxJQUFBLHdCQUFRLEVBQ2I7d0JBQ0UsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsSUFBSSxFQUFFLElBQUk7cUJBRVgsQ0FBQyxDQUFBO29CQUNKLElBQUksR0FBRyxJQUFBLG9CQUFVLEVBQUMsSUFBSSxDQUFDLENBQUE7b0JBQ3ZCLHVCQUF1QjtvQkFDdkIsSUFBSSxJQUFBLG9CQUFPLEVBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7d0JBQ3RDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7cUJBQ2Y7aUJBQ0Y7Z0JBQUMsT0FBTyxLQUFLLEVBQUU7b0JBQ2QsY0FBTSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO2lCQUN6RDthQUNGO1lBQ0QsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBQSxNQUFHLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBQ3hELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUEsTUFBRyxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQTtZQUN4RCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFBLE1BQUcsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFDNUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JBc0JRO1lBQ0YsSUFBSSxHQUFHLE1BQU0sSUFBQSxzQkFBWSxFQUFDLElBQUksRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLElBQUEsaUJBQU8sRUFBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7WUFDM0UsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQTtnQkFDM0IsT0FBTTthQUNQO1lBQ0QsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO0tBQ0YsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBaEdZLFFBQUEsUUFBUSxZQWdHcEIifQ==
|