@diplodoc/liquid 0.0.0-rc-fix-new-line-202509031344

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SourceMap = void 0;
4
+ const actors = {
5
+ delete: ({ start, end }) => (value, flow) => {
6
+ if (value >= start && value <= end) {
7
+ flow.offset -= 1;
8
+ return -1;
9
+ }
10
+ return value;
11
+ },
12
+ offset: ([start, offset]) => (value) => {
13
+ if (value >= start) {
14
+ return value + offset;
15
+ }
16
+ return value;
17
+ },
18
+ };
19
+ class SourceMap {
20
+ constructor(content) {
21
+ this.patches = [];
22
+ this.size = this.lines(content).length;
23
+ }
24
+ dump() {
25
+ let lazy = null;
26
+ const init = () => {
27
+ if (lazy === null) {
28
+ const map = new Array(this.size);
29
+ for (let index = 0; index < this.size - 1; index++) {
30
+ map[index] = index + 1;
31
+ }
32
+ this.patches.forEach((patch) => patch(map));
33
+ lazy = {};
34
+ for (const [index, value] of Object.entries(map)) {
35
+ if (value > 0) {
36
+ lazy[String(value)] = String(Number(index) + 1);
37
+ }
38
+ }
39
+ }
40
+ // TODO: thisk about this
41
+ // Promise.resolve().then(() => lazy = null);
42
+ return lazy;
43
+ };
44
+ return new Proxy({}, {
45
+ get: (_target, prop) => {
46
+ return init()[prop];
47
+ },
48
+ has: (_target, prop) => {
49
+ return prop in init();
50
+ },
51
+ ownKeys(_target) {
52
+ return Object.keys(init());
53
+ },
54
+ getOwnPropertyDescriptor(_target, prop) {
55
+ const map = init();
56
+ if (prop in map) {
57
+ return { configurable: true, enumerable: true, value: map[prop] };
58
+ }
59
+ return undefined;
60
+ },
61
+ });
62
+ }
63
+ delete(start, content) {
64
+ const lines = this.lines(content);
65
+ const point = this.location(start, content.length, lines);
66
+ this.patch({
67
+ delete: [point],
68
+ });
69
+ }
70
+ patch(tx) {
71
+ this.patches.push((map) => {
72
+ const flow = {
73
+ offset: 0,
74
+ };
75
+ const del = (tx.delete || []).map(actors.delete);
76
+ const ofs = (tx.offset || []).map(actors.offset);
77
+ (tx.replace || []).forEach(([start, source, result]) => {
78
+ const sl = this.lines(source).length - 1;
79
+ const rl = this.lines(result).length - 1;
80
+ const offset = rl - sl;
81
+ del.push(actors.delete({
82
+ start: start + 1,
83
+ end: start + sl,
84
+ }));
85
+ ofs.push(actors.offset([start + 1, sl - 1 + offset]));
86
+ });
87
+ const patches = [...del, ...ofs];
88
+ for (let index = 0; index < map.length; index++) {
89
+ const patched = patches.reduce((value, patch) => {
90
+ if (value === -1) {
91
+ return value;
92
+ }
93
+ return patch(value, flow);
94
+ }, map[index]);
95
+ map[index] = patched === -1 ? patched : patched + flow.offset;
96
+ }
97
+ });
98
+ }
99
+ lines(content) {
100
+ const line = /^/gm;
101
+ const lines = [];
102
+ while (line.exec(content)) {
103
+ lines.push(line.lastIndex);
104
+ line.lastIndex += 1;
105
+ }
106
+ lines.push(content.length + 1);
107
+ return lines;
108
+ }
109
+ location(from, to, lines, offset = 0) {
110
+ const location = { start: -1, end: -1 };
111
+ let index = 0;
112
+ while (lines.length > index) {
113
+ if (from < lines[index]) {
114
+ location.start = index + offset;
115
+ break;
116
+ }
117
+ index++;
118
+ }
119
+ while (lines.length > index) {
120
+ if (to < lines[index]) {
121
+ location.end = index + offset;
122
+ break;
123
+ }
124
+ index++;
125
+ }
126
+ return location;
127
+ }
128
+ }
129
+ exports.SourceMap = SourceMap;
130
+ //# sourceMappingURL=sourcemap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourcemap.js","sourceRoot":"","sources":["../src/sourcemap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { LiquidContext } from './types';
2
+ export declare function applySubstitutions(this: LiquidContext, input: string, vars: Record<string, unknown>): any;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.applySubstitutions = applySubstitutions;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const utils_1 = require("./utils");
9
+ const lexical_1 = require("./syntax/lexical");
10
+ const evaluate_1 = require("./syntax/evaluate");
11
+ function applySubstitutions(input, vars) {
12
+ const { path } = this;
13
+ const { keepNotVar = false } = this.settings;
14
+ if ((0, lexical_1.isSingleVariable)(input)) {
15
+ const match = input.match(lexical_1.singleVariable);
16
+ if (!match) {
17
+ return input;
18
+ }
19
+ const trimVarPath = match[1].trim();
20
+ const value = substituteVariable.call(this, trimVarPath, vars);
21
+ if (value === undefined) {
22
+ this.logger.warn(`Variable ${chalk_1.default.bold(trimVarPath)} not found${path ? ` in ${chalk_1.default.bold(path)}` : ''}`);
23
+ return input;
24
+ }
25
+ return value;
26
+ }
27
+ return input.replace(lexical_1.vars, (match, _groupNotVar, flag, groupVar, groupVarValue) => {
28
+ if (flag) {
29
+ return keepNotVar ? _groupNotVar : groupVar;
30
+ }
31
+ const trimVarPath = groupVarValue.trim();
32
+ if (trimVarPath.startsWith('.')) {
33
+ return groupVar;
34
+ }
35
+ const value = substituteVariable.call(this, trimVarPath, vars);
36
+ if (value === undefined) {
37
+ this.logger.warn(`Variable ${chalk_1.default.bold(trimVarPath)} not found${path ? ` in ${chalk_1.default.bold(path)}` : ''}`);
38
+ return match;
39
+ }
40
+ return value;
41
+ });
42
+ }
43
+ function substituteVariable(varPath, vars) {
44
+ if ((0, lexical_1.isVariable)(varPath)) {
45
+ return (0, utils_1.getObject)(varPath, vars);
46
+ }
47
+ else {
48
+ return evaluate_1.evaluate.call(this, varPath, vars);
49
+ }
50
+ }
51
+ //# sourceMappingURL=substitutions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"substitutions.js","sourceRoot":"","sources":["../src/substitutions.ts"],"names":[],"mappings":";;;;;AAaA,gDAoDC;AA/DD,kDAA0B;AAE1B,mCAAkC;AAClC,8CAK0B;AAC1B,gDAA2C;AAE3C,SAAgB,kBAAkB,CAE9B,KAAa,EACb,IAA6B;IAE7B,MAAM,EAAC,IAAI,EAAC,GAAG,IAAI,CAAC;IACpB,MAAM,EAAC,UAAU,GAAG,KAAK,EAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;IAE3C,IAAI,IAAA,0BAAgB,EAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,wBAAgB,CAAC,CAAC;QAE5C,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QAE/D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,YAAY,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1F,CAAC;YAEF,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,cAAM,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE;QAChF,IAAI,IAAI,EAAE,CAAC;YACP,OAAO,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;QAChD,CAAC;QAED,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;QAEzC,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,QAAQ,CAAC;QACpB,CAAC;QAED,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QAE/D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,YAAY,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1F,CAAC;YAEF,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,kBAAkB,CAAsB,OAAe,EAAE,IAA6B;IAC3F,IAAI,IAAA,oBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;QACtB,OAAO,IAAA,iBAAS,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACJ,OAAO,mBAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LiquidContext } from '../types';
2
+ export declare const NoValue: unique symbol;
3
+ export declare function evaluate(this: LiquidContext | void, exp: string, scope: Record<string, unknown>, strict?: boolean): string[] | number[] | boolean | string | symbol | undefined | ((input: string) => number | string);
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.NoValue = void 0;
37
+ exports.evaluate = evaluate;
38
+ const utils_1 = require("../utils");
39
+ const errors_1 = require("../errors");
40
+ const lexical = __importStar(require("./lexical"));
41
+ const filters = __importStar(require("./filters"));
42
+ const operators = {
43
+ '==': ((l, r) => l === r),
44
+ '!=': ((l, r) => l !== r),
45
+ '>': ((l, r) => l !== null && r !== null && l > r),
46
+ '<': ((l, r) => l !== null && r !== null && l < r),
47
+ '>=': ((l, r) => l !== null && r !== null && l >= r),
48
+ '<=': ((l, r) => l !== null && r !== null && l <= r),
49
+ contains: ((l, r) => l !== null && r !== null && l.includes(r)),
50
+ and: ((l, r) => isTruthy(l) && isTruthy(r)),
51
+ or: ((l, r) => isTruthy(l) || isTruthy(r)),
52
+ '|': ((l, filter, exp) => {
53
+ try {
54
+ return filter(l);
55
+ }
56
+ catch (e) {
57
+ if (!filter) {
58
+ throw new errors_1.SkippedEvalError('Cannot apply an unsupported filter', exp);
59
+ }
60
+ throw new errors_1.SkippedEvalError('There are some problems with the filter', exp);
61
+ }
62
+ }),
63
+ '.': ((l, r, exp) => {
64
+ const parsed = lexical.getParsedMethod(r);
65
+ try {
66
+ if (!parsed) {
67
+ throw new Error('Liquid parse error.');
68
+ }
69
+ const { name, args } = parsed;
70
+ return l[name](...args);
71
+ }
72
+ catch (e) {
73
+ if (!l) {
74
+ throw new errors_1.SkippedEvalError(`Cannot apply the function '${parsed === null || parsed === void 0 ? void 0 : parsed.name}' on an undefined variable`, exp);
75
+ }
76
+ throw new errors_1.SkippedEvalError('There are some problems with the function', exp);
77
+ }
78
+ }),
79
+ };
80
+ exports.NoValue = Symbol('NoValue');
81
+ function evalValue(originStr, scope, strict) {
82
+ const str = originStr && originStr.trim();
83
+ if (!str) {
84
+ return undefined;
85
+ }
86
+ if (lexical.isLiteral(str)) {
87
+ return lexical.parseLiteral(str);
88
+ }
89
+ if (lexical.isVariable(str)) {
90
+ return (0, utils_1.getObject)(str, scope, strict ? exports.NoValue : undefined);
91
+ }
92
+ throw new TypeError(`cannot eval '${str}' as value`);
93
+ }
94
+ function isTruthy(val) {
95
+ return !isFalsy(val);
96
+ }
97
+ function isFalsy(val) {
98
+ return val === false || undefined === val || val === null;
99
+ }
100
+ const operatorREs = lexical.operators.map((op) => new RegExp(`^(${lexical.quoteBalanced.source})(${op.source})(${lexical.quoteBalanced.source})$`));
101
+ function evaluate(exp, scope, strict = false) {
102
+ if (Object.getOwnPropertyNames(filters).includes(exp.trim())) {
103
+ return filters[exp.trim()];
104
+ }
105
+ if (lexical.isSupportedMethod(exp)) {
106
+ return exp;
107
+ }
108
+ try {
109
+ for (let i = 0; i < operatorREs.length; i++) {
110
+ const operatorRE = operatorREs[i];
111
+ const match = exp.match(operatorRE);
112
+ if (match) {
113
+ const operator = match[2].trim();
114
+ if (operator === '.' && !lexical.isSupportedMethod(match[3].trim())) {
115
+ break;
116
+ }
117
+ const op = operators[operator];
118
+ const l = evaluate(match[1], scope, strict);
119
+ const r = evaluate(match[3], scope, strict);
120
+ if (l === exports.NoValue || r === exports.NoValue) {
121
+ return exports.NoValue;
122
+ }
123
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
124
+ return op(l, r, exp);
125
+ }
126
+ }
127
+ const match = exp.match(lexical.rangeLine);
128
+ if (match) {
129
+ const low = Number(evalValue(match[1], scope, strict));
130
+ const high = Number(evalValue(match[2], scope, strict));
131
+ const range = [];
132
+ for (let j = low; j <= high; j++) {
133
+ range.push(j);
134
+ }
135
+ return range;
136
+ }
137
+ return evalValue(exp, scope, strict);
138
+ }
139
+ catch (e) {
140
+ const log = (this === null || this === void 0 ? void 0 : this.logger) || (0, utils_1.logger)();
141
+ if (e instanceof errors_1.SkippedEvalError) {
142
+ log.warn(`Skip error: ${e}`);
143
+ return undefined;
144
+ }
145
+ log.error(`Error: ${e}`);
146
+ }
147
+ return undefined;
148
+ }
149
+ //# sourceMappingURL=evaluate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/syntax/evaluate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function length(input: string): number;
2
+ export declare function capitalize(input: string): string;
3
+ export declare function escapeMarkdown(input: string): string;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.length = length;
4
+ exports.capitalize = capitalize;
5
+ exports.escapeMarkdown = escapeMarkdown;
6
+ function length(input) {
7
+ return input.length;
8
+ }
9
+ function capitalize(input) {
10
+ return String(input).replace(/^([a-z])/, (_m, chr) => chr.toUpperCase());
11
+ }
12
+ function escapeMarkdown(input) {
13
+ return String(input).replace(/([\\`*_{}[\]()#+\-.!|])/g, '\\$1');
14
+ }
15
+ //# sourceMappingURL=filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/syntax/filters.ts"],"names":[],"mappings":";;AAAA,wBAEC;AAED,gCAEC;AAED,wCAEC;AAVD,SAAgB,MAAM,CAAC,KAAa;IAChC,OAAO,KAAK,CAAC,MAAM,CAAC;AACxB,CAAC;AAED,SAAgB,UAAU,CAAC,KAAa;IACpC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,SAAgB,cAAc,CAAC,KAAa;IACxC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;AACrE,CAAC"}
@@ -0,0 +1,16 @@
1
+ export declare const quoteBalanced: RegExp;
2
+ export declare const vars: RegExp;
3
+ export declare const singleVariable: RegExp;
4
+ export declare const variable: RegExp;
5
+ export declare const tagLine: RegExp;
6
+ export declare const rangeLine: RegExp;
7
+ export declare const operators: RegExp[];
8
+ export declare const isSupportedMethod: (exp: string) => boolean;
9
+ export declare const getParsedMethod: (exp: String) => {
10
+ name: string;
11
+ args: string[];
12
+ } | null;
13
+ export declare const isLiteral: (str: string) => boolean;
14
+ export declare const isVariable: (str: string) => boolean;
15
+ export declare const isSingleVariable: (str: string) => boolean;
16
+ export declare function parseLiteral(str: string): string | number | boolean;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSingleVariable = exports.isVariable = exports.isLiteral = exports.getParsedMethod = exports.isSupportedMethod = exports.operators = exports.rangeLine = exports.tagLine = exports.variable = exports.singleVariable = exports.vars = exports.quoteBalanced = void 0;
4
+ exports.parseLiteral = parseLiteral;
5
+ // quote related
6
+ const singleQuoted = /'[^']*'/;
7
+ const doubleQuoted = /"[^"]*"/;
8
+ const quoted = new RegExp(`${singleQuoted.source}|${doubleQuoted.source}`);
9
+ exports.quoteBalanced = new RegExp(`(?:${quoted.source}|[^'"])*`);
10
+ exports.vars = /((not_var)?({{2}([. \w-|(),]+)}{2}))/gm;
11
+ exports.singleVariable = /^{{2}([. \w-|(),]+)}{2}$/;
12
+ // basic types
13
+ const number = /-?\d+\.?\d*|\.?\d+/;
14
+ const bool = /true|false/;
15
+ // property access
16
+ const identifier = /[\w-|]+[?]?/;
17
+ const subscript = new RegExp(`\\[(?:${quoted.source}|[\\w-\\.]+)\\]`);
18
+ const literal = new RegExp(`(?:${quoted.source}|${bool.source}|${number.source})`);
19
+ exports.variable = new RegExp(`${identifier.source}(?:\\.${identifier.source}|${subscript.source})*`);
20
+ // range related
21
+ const rangeLimit = new RegExp(`(?:${exports.variable.source}|${number.source})`);
22
+ const rangeCapture = new RegExp(`\\((${rangeLimit.source})\\.\\.(${rangeLimit.source})\\)`);
23
+ // full match
24
+ exports.tagLine = new RegExp(`^\\s*(${identifier.source})\\s*([\\s\\S]*)\\s*$`);
25
+ const literalLine = new RegExp(`^${literal.source}$`, 'i');
26
+ const variableLine = new RegExp(`^${exports.variable.source}$`);
27
+ const numberLine = new RegExp(`^${number.source}$`);
28
+ const boolLine = new RegExp(`^${bool.source}$`, 'i');
29
+ const quotedLine = new RegExp(`^${quoted.source}$`);
30
+ exports.rangeLine = new RegExp(`^${rangeCapture.source}$`);
31
+ exports.operators = [
32
+ /\s+or\s+/,
33
+ /\s+and\s+/,
34
+ /[=]=|!=|<=|>=|<|>|\s+contains\s+/,
35
+ /\s+\|\s+/, // myVar | filterName
36
+ /\s+\|/, // myVar |filterName
37
+ /\|\s+/, // myVar| filterName
38
+ /\./,
39
+ ];
40
+ const prepareArgsForMethods = {
41
+ slice: (args) => args.map((arg) => Number(arg)),
42
+ };
43
+ const supportedMethods = Object.keys(prepareArgsForMethods);
44
+ const supportedMethodsRE = new RegExp(`^(${supportedMethods.join('\\|')})\\(([^)]*)\\)$`);
45
+ const isSupportedMethod = (exp) => {
46
+ return supportedMethodsRE.test(exp);
47
+ };
48
+ exports.isSupportedMethod = isSupportedMethod;
49
+ const getParsedMethod = (exp) => {
50
+ const match = exp.match(supportedMethodsRE);
51
+ if (!match) {
52
+ return null;
53
+ }
54
+ const name = match[1];
55
+ const args = match[2].split(/[\s,]+/);
56
+ return {
57
+ name,
58
+ args,
59
+ };
60
+ };
61
+ exports.getParsedMethod = getParsedMethod;
62
+ const isLiteral = (str) => literalLine.test(str);
63
+ exports.isLiteral = isLiteral;
64
+ const isVariable = (str) => variableLine.test(str);
65
+ exports.isVariable = isVariable;
66
+ const isSingleVariable = (str) => exports.singleVariable.test(str);
67
+ exports.isSingleVariable = isSingleVariable;
68
+ function parseLiteral(str) {
69
+ let res = str.match(numberLine);
70
+ if (res) {
71
+ return Number(str);
72
+ }
73
+ res = str.match(boolLine);
74
+ if (res) {
75
+ return str.toLowerCase() === 'true';
76
+ }
77
+ res = str.match(quotedLine);
78
+ if (res) {
79
+ return str.slice(1, -1);
80
+ }
81
+ throw new TypeError(`cannot parse '${str}' as literal`);
82
+ }
83
+ //# sourceMappingURL=lexical.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexical.js","sourceRoot":"","sources":["../../src/syntax/lexical.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ export type Logger = {
2
+ info: (...args: unknown[]) => void;
3
+ warn: (...args: unknown[]) => void;
4
+ error: (...args: unknown[]) => void;
5
+ };
6
+ export type LiquidSettings = {
7
+ conditions?: boolean | 'strict';
8
+ conditionsInCode?: boolean;
9
+ keepConditionSyntaxOnTrue?: boolean;
10
+ cycles?: boolean;
11
+ substitutions?: boolean;
12
+ keepNotVar?: boolean;
13
+ };
14
+ export type LiquidContext = {
15
+ logger: Logger;
16
+ settings: LiquidSettings;
17
+ path?: string;
18
+ };
package/lib/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/lib/utils.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ import type { LiquidContext } from './types';
2
+ export declare function removeIndentBlock(str: string): string;
3
+ type Opts = {
4
+ content: string;
5
+ tagStartPos: number;
6
+ tagContent: string;
7
+ };
8
+ export declare function getPreparedLeftContent({ content, tagStartPos, tagContent }: Opts): string;
9
+ export declare function codeUtils(this: LiquidContext): {
10
+ saveCode: (str: string, vars: Record<string, unknown>) => string;
11
+ repairCode: (str: string) => string;
12
+ };
13
+ export declare function getObject(path: string, obj: Record<string, any>, fallback?: any): any;
14
+ export declare function logger(): {
15
+ info: () => void;
16
+ warn: () => void;
17
+ error: () => void;
18
+ };
19
+ export {};
package/lib/utils.js ADDED
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.removeIndentBlock = removeIndentBlock;
4
+ exports.getPreparedLeftContent = getPreparedLeftContent;
5
+ exports.codeUtils = codeUtils;
6
+ exports.getObject = getObject;
7
+ exports.logger = logger;
8
+ const substitutions_1 = require("./substitutions");
9
+ function removeIndentBlock(str) {
10
+ let i = str.length - 1;
11
+ let curChar = str[i];
12
+ while (curChar === ' ') {
13
+ curChar = str[--i];
14
+ }
15
+ if (curChar === '\n') {
16
+ return str.substring(0, i + 1);
17
+ }
18
+ return str;
19
+ }
20
+ function getPreparedLeftContent({ content, tagStartPos, tagContent }) {
21
+ const preparedLeftContent = content.substring(0, tagStartPos);
22
+ if (tagContent === '') {
23
+ return removeIndentBlock(preparedLeftContent);
24
+ }
25
+ return preparedLeftContent;
26
+ }
27
+ const fence = '```';
28
+ function codeUtils() {
29
+ const { substitutions = true } = this.settings;
30
+ const codes = [];
31
+ const find = (open, close, string, index) => {
32
+ const start = string.indexOf(open, index);
33
+ const end = start > -1 ? string.indexOf(close, start + open.length) : -1;
34
+ return [start, end];
35
+ };
36
+ const replace = (open, close, value, string) => {
37
+ let result = '';
38
+ let carriage = 0;
39
+ let [start, end] = find(open, close, string, carriage);
40
+ while (start > -1 && end > -1) {
41
+ const fragment = string.slice(start + open.length, end);
42
+ result += string.slice(carriage, start) + open + value(fragment) + close;
43
+ carriage = end + close.length;
44
+ [start, end] = find(open, close, string, carriage);
45
+ }
46
+ result += string.slice(carriage);
47
+ return result;
48
+ };
49
+ const saveCode = (str, vars) => {
50
+ return replace(fence, fence, (code) => {
51
+ const codeWithVars = substitutions
52
+ ? substitutions_1.applySubstitutions.call(this, code, vars)
53
+ : code;
54
+ const index = codes.push(codeWithVars) - 1;
55
+ /* Keep the same count of lines to avoid transformation of the source map */
56
+ const codeLines = codeWithVars.split('\n');
57
+ const emptyLines = codeLines.length > 1 ? '\n'.repeat(codeLines.length) : '';
58
+ return `${index}${emptyLines}`;
59
+ }, str);
60
+ };
61
+ function repairCode(str) {
62
+ if (!codes.length) {
63
+ return str;
64
+ }
65
+ return replace(fence, fence, (code) => codes[Number(code)], str);
66
+ }
67
+ return { saveCode, repairCode };
68
+ }
69
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
70
+ function getObject(path, obj, fallback) {
71
+ const queue = path.split('.');
72
+ let box = obj;
73
+ while (queue.length) {
74
+ const step = queue.shift();
75
+ if (!Object.prototype.hasOwnProperty.call(box, step)) {
76
+ return fallback || undefined;
77
+ }
78
+ box = box[step];
79
+ }
80
+ return box;
81
+ }
82
+ function logger() {
83
+ return {
84
+ info: () => { },
85
+ warn: () => { },
86
+ error: () => { },
87
+ };
88
+ }
89
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}