125 lines
11 KiB
JavaScript
125 lines
11 KiB
JavaScript
"use strict";
|
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
});
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.register = exports.testDS = void 0;
|
|
const liquid_1 = require("../liquidjs/liquid");
|
|
const sheets_1 = require("../lib/net/sheets");
|
|
const jsonpath = require("jsonpath");
|
|
const cacache_1 = require("cacache");
|
|
const index_1 = require("../index");
|
|
const constants_1 = require("../constants");
|
|
const exists_1 = require("@plastichub/fs/exists");
|
|
const dir_1 = require("@plastichub/fs/dir");
|
|
const osr_commons_1 = require("@plastichub/osr-commons");
|
|
const fs_path = require("path");
|
|
const cache_path = (_namespace) => `${fs_path.resolve(fs_path.join((0, osr_commons_1.OSR_CACHE)(), _namespace))}`;
|
|
function testDS(engine) {
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
// let ret = await read('1oVEiGH4o3SV-mAA3Mb-WNVJMyYl4VMxLjWjrSw_ipJY', 'ElenaMargin');
|
|
// console.log('sheet result : ', ret);
|
|
});
|
|
}
|
|
exports.testDS = testDS;
|
|
const register = (engine) => {
|
|
engine.registerTag('googlesheet', {
|
|
parse: function (token, other) {
|
|
const args = token.args;
|
|
const tokenizer = new liquid_1.Tokenizer(args, this.liquid.options.operatorsTrie);
|
|
this.name = tokenizer.readValue();
|
|
const begin = tokenizer.p;
|
|
tokenizer.readIdentifier();
|
|
tokenizer.p = begin;
|
|
this.hash = new liquid_1.Hash(tokenizer.remaining());
|
|
},
|
|
render: function* (ctx, emitter) {
|
|
const { liquid, hash, name } = this;
|
|
let name_ = ctx.opts.dynamicPartials
|
|
? (liquid_1.TypeGuards.isQuotedToken(name)
|
|
? yield ((0, liquid_1.evalQuotedToken)(name))
|
|
: yield (0, liquid_1.evalToken)(name, ctx))
|
|
: name.getText();
|
|
const id = this.hash.hash['id'];
|
|
let id_ = ctx.opts.dynamicPartials
|
|
? (liquid_1.TypeGuards.isQuotedToken(id)
|
|
? yield ((0, liquid_1.evalQuotedToken)(id))
|
|
: yield (0, liquid_1.evalToken)(id, ctx))
|
|
: id.getText();
|
|
const range = this.hash.hash['range'];
|
|
let range_ = ctx.opts.dynamicPartials
|
|
? (liquid_1.TypeGuards.isQuotedToken(range)
|
|
? yield ((0, liquid_1.evalQuotedToken)(range))
|
|
: yield (0, liquid_1.evalToken)(range, ctx))
|
|
: range.getText();
|
|
const path = this.hash.hash['path'];
|
|
let path_;
|
|
if (path) {
|
|
path_ = ctx.opts.dynamicPartials
|
|
? (liquid_1.TypeGuards.isQuotedToken(path)
|
|
? yield ((0, liquid_1.evalQuotedToken)(path))
|
|
: yield (0, liquid_1.evalToken)(path, ctx))
|
|
: path.getText();
|
|
}
|
|
const cache = this.hash.hash['cache'];
|
|
let cache_ = true;
|
|
if (cache) {
|
|
cache_ = ctx.opts.dynamicPartials
|
|
? (liquid_1.TypeGuards.isQuotedToken(path)
|
|
? yield ((0, liquid_1.evalQuotedToken)(path))
|
|
: yield (0, liquid_1.evalToken)(path, ctx))
|
|
: cache.getText();
|
|
}
|
|
const assign = this.hash.hash['assign'];
|
|
let assign_;
|
|
if (assign) {
|
|
assign_ = ctx.opts.dynamicPartials
|
|
? (liquid_1.TypeGuards.isQuotedToken(assign)
|
|
? yield ((0, liquid_1.evalQuotedToken)(assign))
|
|
: yield (0, liquid_1.evalToken)(path, ctx))
|
|
: assign_.getText();
|
|
}
|
|
const cache_dir = fs_path.resolve(`${cache_path(constants_1.MODULE_NAME)}`);
|
|
if (!(0, exists_1.sync)(cache_dir)) {
|
|
(0, dir_1.sync)(cache_dir);
|
|
}
|
|
const c_integrity = `${id_}_${range_}`;
|
|
const cached = yield cacache_1.get.info(cache_dir, c_integrity);
|
|
let data = [];
|
|
if (cached && cache_) {
|
|
data = JSON.parse((yield (0, cacache_1.get)(cache_dir, c_integrity)).data.toString());
|
|
}
|
|
else {
|
|
data = yield (0, sheets_1.read)(id_, range_);
|
|
}
|
|
let ret = [];
|
|
if (path) {
|
|
try {
|
|
ret = jsonpath.query(data, path_);
|
|
if (assign_) {
|
|
ctx.bottom()[assign_] = ret[0];
|
|
liquid.owner.variables[assign_] = ret[0];
|
|
ret = '';
|
|
}
|
|
ret = ret[0];
|
|
}
|
|
catch (e) {
|
|
index_1.logger.error('error jsonpath', e);
|
|
}
|
|
}
|
|
ret = data[0];
|
|
if (cache_ && !cached) {
|
|
yield (0, cacache_1.put)(cache_dir, c_integrity, JSON.stringify(data, null, 2));
|
|
}
|
|
return ret;
|
|
}
|
|
});
|
|
};
|
|
exports.register = register;
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGx1Z2lucy9kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBdUk7QUFDdkksOENBQXlDO0FBQ3pDLHFDQUFvQztBQUVwQyxxQ0FBNkQ7QUFFN0Qsb0NBQWlDO0FBQ2pDLDRDQUEwQztBQUUxQyxrREFBc0Q7QUFDdEQsNENBQWtEO0FBRWxELHlEQUFtRDtBQUVuRCxnQ0FBK0I7QUFFL0IsTUFBTSxVQUFVLEdBQUcsQ0FBQyxVQUFrQixFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFBLHVCQUFTLEdBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUE7QUFHdEcsU0FBc0IsTUFBTSxDQUFDLE1BQU07O1FBQy9CLHVGQUF1RjtRQUN2Rix1Q0FBdUM7SUFDM0MsQ0FBQztDQUFBO0FBSEQsd0JBR0M7QUFHTSxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFO0lBRS9CLE1BQU0sQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFO1FBRTlCLEtBQUssRUFBRSxVQUFVLEtBQWUsRUFBRSxLQUFLO1lBQ25DLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUE7WUFDdkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxrQkFBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQTtZQUN4RSxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNsQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQzFCLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMzQixTQUFTLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksYUFB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
|