mono/packages/osrl/plugins/get.js
2025-12-30 16:33:03 +01:00

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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BsdWdpbnMvZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQUF5QjtBQUN6QixpREFBd0M7QUFDeEMsNERBQXlFO0FBRXpFLG9DQUFpQztBQUVqQywrQ0FBd0Y7QUFDeEYseUJBQXdCO0FBQ3hCLDREQUErRTtBQUMvRSx3Q0FBMEU7QUFHbkUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRTtJQUNqQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRTtRQUN4QixhQUFhLEVBQWIsc0JBQWE7UUFDYixjQUFjLEVBQWQsdUJBQWM7UUFDZCxLQUFLLEVBQUUsVUFBVSxLQUFlO1lBQzlCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUE7WUFDdkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxrQkFBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQTtZQUN4RSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ3pELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFBO1lBQ2hDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUE7WUFDekIsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFBO1lBQzFDLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxNQUFNLEVBQUU7Z0JBQzlCLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtnQkFDckIsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxFQUFFO29CQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtpQkFDckM7O29CQUFNLFNB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