@tabnas/parser 0.2.0

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.
package/dist/error.js ADDED
@@ -0,0 +1,362 @@
1
+ "use strict";
2
+ /* Copyright (c) 2013-2026 Richard Rodger, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TabnasError = void 0;
5
+ exports.errdesc = errdesc;
6
+ exports.errinject = errinject;
7
+ exports.errsite = errsite;
8
+ exports.errmsg = errmsg;
9
+ exports.trimstk = trimstk;
10
+ exports.strinject = strinject;
11
+ exports.prop = prop;
12
+ const types_1 = require("./types");
13
+ const utility_1 = require("./utility");
14
+ const S = {
15
+ function: 'function',
16
+ object: 'object',
17
+ string: 'string',
18
+ unexpected: 'unexpected',
19
+ Object: 'Object',
20
+ Array: 'Array',
21
+ gap: ' ',
22
+ no_re_flags: types_1.EMPTY,
23
+ };
24
+ // Tabnas errors with nice formatting.
25
+ class TabnasError extends SyntaxError {
26
+ constructor(code, details, token, rule, ctx) {
27
+ details = (0, utility_1.deep)({}, details);
28
+ let desc = errdesc(code, details, token, rule, ctx);
29
+ super(desc.message);
30
+ (0, utility_1.assign)(this, desc);
31
+ }
32
+ }
33
+ exports.TabnasError = TabnasError;
34
+ // Inject value text into an error message. The value is taken from
35
+ // the `details` parameter to TabnasError. If not defined, the value is
36
+ // determined heuristically from the Token and Context.
37
+ function errinject(s, code, details, token, rule, ctx) {
38
+ let ref = {
39
+ ...(ctx || {}),
40
+ ...(ctx.cfg || {}),
41
+ ...(ctx.opts || {}),
42
+ ...(token || {}),
43
+ ...(rule || {}),
44
+ ...(ctx.meta || {}),
45
+ ...(details || {}),
46
+ ...{ code, details, token, rule, ctx },
47
+ };
48
+ return strinject(s, ref, { indent: ' ' });
49
+ }
50
+ // Remove Tabnas internal lines as spurious for caller.
51
+ function trimstk(err) {
52
+ if (err.stack) {
53
+ err.stack = err.stack
54
+ .split('\n')
55
+ .filter((s) => !s.includes('tabnas/tabnas'))
56
+ .map((s) => s.replace(/ at /, 'at '))
57
+ .join('\n');
58
+ }
59
+ }
60
+ // Extract error site in source text and mark error point.
61
+ function errsite(spec) {
62
+ let { src, sub, msg, cline, row, col, pos } = spec;
63
+ row = null != row && 0 < row ? row : 1;
64
+ col = null != col && 0 < col ? col : 1;
65
+ pos =
66
+ null != pos && 0 < pos
67
+ ? pos
68
+ : null == src
69
+ ? 0
70
+ : src
71
+ .split('\n')
72
+ .reduce((pos, line, i) => ((pos +=
73
+ i < row - 1 ? line.length + 1 : i === row - 1 ? col : 0),
74
+ pos), 0);
75
+ let tsrc = null == sub ? types_1.EMPTY : sub;
76
+ let behind = src.substring(Math.max(0, pos - 333), pos).split('\n');
77
+ let ahead = src.substring(pos, pos + 333).split('\n');
78
+ let pad = 2 + (types_1.EMPTY + (row + 2)).length;
79
+ let rc = row < 3 ? 1 : row - 2;
80
+ let ln = (s) => (null == cline ? '' : cline) +
81
+ (types_1.EMPTY + rc++).padStart(pad, ' ') +
82
+ ' | ' +
83
+ (null == cline ? '' : '\x1b[0m') +
84
+ (null == s ? types_1.EMPTY : s);
85
+ let blen = behind.length;
86
+ let lines = [
87
+ 2 < blen ? ln(behind[blen - 3]) : null,
88
+ 1 < blen ? ln(behind[blen - 2]) : null,
89
+ ln(behind[blen - 1] + ahead[0]),
90
+ ' '.repeat(pad) +
91
+ ' ' +
92
+ ' '.repeat(col - 1) +
93
+ (null == cline ? '' : cline) +
94
+ '^'.repeat(tsrc.length || 1) +
95
+ ' ' +
96
+ msg +
97
+ (null == cline ? '' : '\x1b[0m'),
98
+ ln(ahead[1]),
99
+ ln(ahead[2]),
100
+ ]
101
+ .filter((line) => null != line)
102
+ .join('\n');
103
+ return lines;
104
+ }
105
+ function errmsg(spec) {
106
+ const color = {
107
+ active: false,
108
+ reset: '',
109
+ hi: '',
110
+ lo: '',
111
+ line: '',
112
+ };
113
+ if (spec.color && spec.color.active) {
114
+ Object.assign(color, spec.color);
115
+ }
116
+ const txts = {
117
+ msg: null,
118
+ hint: null,
119
+ site: null,
120
+ ...(spec.txts || {})
121
+ };
122
+ let message = [
123
+ null == spec.prefix
124
+ ? null
125
+ : 'function' === typeof spec.prefix
126
+ ? spec.prefix(color, spec)
127
+ : '' + spec.prefix,
128
+ (null == spec.code
129
+ ? ''
130
+ : color.hi +
131
+ '[' +
132
+ (null == spec.name ? '' : spec.name + '/') +
133
+ spec.code +
134
+ ']:') +
135
+ color.reset +
136
+ ' ' +
137
+ // (null == spec.msg ? '' : spec.msg),
138
+ (null == txts.msg ? '' : txts.msg),
139
+ (null != spec.row && null != spec.col) || null != spec.file
140
+ ? ' ' +
141
+ color.line +
142
+ '-->' +
143
+ color.reset +
144
+ ' ' +
145
+ (null == spec.file ? '<no-file>' : spec.file) +
146
+ (null == spec.row || null == spec.col
147
+ ? ''
148
+ : ':' + spec.row + ':' + spec.col)
149
+ : null,
150
+ null == spec.src
151
+ ? ''
152
+ : (null == txts.site ? '' : errsite({
153
+ src: spec.src,
154
+ sub: spec.sub,
155
+ msg: spec.smsg || spec.txts?.msg,
156
+ cline: color.line,
157
+ row: spec.row,
158
+ col: spec.col,
159
+ pos: spec.pos,
160
+ })),
161
+ '',
162
+ // null == spec.hint ? null : spec.hint,
163
+ // txts.hint,
164
+ (null == txts.hint ? '' : txts.hint),
165
+ null == spec.suffix
166
+ ? null
167
+ : 'function' === typeof spec.suffix
168
+ ? spec.suffix(color, spec)
169
+ : '' + spec.suffix,
170
+ ]
171
+ .filter((n) => null != n)
172
+ .join('\n');
173
+ return message;
174
+ }
175
+ function errdesc(code, details, token, rule, ctx) {
176
+ try {
177
+ const src = ctx.src();
178
+ const cfg = ctx.cfg;
179
+ const meta = ctx.meta;
180
+ const txts = errinject({
181
+ msg: cfg.error[code] ||
182
+ (details?.use?.err &&
183
+ (details.use.err.code || details.use.err.message)) ||
184
+ cfg.error.unknown,
185
+ hint: (cfg.hint[code] ||
186
+ details.use?.err?.message ||
187
+ cfg.hint.unknown ||
188
+ '')
189
+ .trim()
190
+ .split('\n')
191
+ .map((s) => ' ' + s)
192
+ .join('\n'),
193
+ site: '',
194
+ }, code, details, token, rule, ctx);
195
+ txts.site = errsite({
196
+ src,
197
+ msg: txts.msg,
198
+ cline: cfg.color.active ? cfg.color.line : '',
199
+ row: token.rI,
200
+ col: token.cI,
201
+ pos: token.sI,
202
+ sub: token.src,
203
+ });
204
+ const suffix = true === cfg.errmsg.suffix ? (color) => [
205
+ '',
206
+ // Optional "see also" line (e.g. a docs URL). Purely
207
+ // cosmetic; consumers opt in via `errmsg.link`.
208
+ ...(cfg.errmsg.link
209
+ ? [' ' + color.lo + cfg.errmsg.link + color.reset]
210
+ : []),
211
+ ' ' +
212
+ color.lo +
213
+ '--internal: tag=' +
214
+ (ctx.opts.tag || '') +
215
+ '; rule=' +
216
+ rule.name +
217
+ '~' +
218
+ rule.state +
219
+ '; token=' +
220
+ (0, utility_1.tokenize)(token.tin, ctx.cfg) +
221
+ (null == token.why ? '' : '~' + token.why) +
222
+ '; plugins=' +
223
+ ctx
224
+ .plgn()
225
+ .map((p) => p.name)
226
+ .join(',') +
227
+ '--' +
228
+ color.reset,
229
+ ].join('\n') :
230
+ ('string' === typeof cfg.errmsg.suffix || 'function' === typeof cfg.errmsg.suffix) ?
231
+ cfg.errmsg.suffix :
232
+ undefined;
233
+ let message = errmsg({
234
+ code,
235
+ // name: 'tabnas',
236
+ name: cfg.errmsg.name,
237
+ txts,
238
+ src,
239
+ file: meta ? meta.fileName : undefined,
240
+ row: token.rI,
241
+ col: token.cI,
242
+ pos: token.sI,
243
+ sub: token.src,
244
+ color: cfg.color,
245
+ suffix,
246
+ });
247
+ let desc = {
248
+ internal: {
249
+ token,
250
+ ctx,
251
+ },
252
+ };
253
+ desc = {
254
+ ...Object.create(desc),
255
+ message,
256
+ code,
257
+ details,
258
+ meta,
259
+ fileName: meta ? meta.fileName : undefined,
260
+ lineNumber: token.rI,
261
+ columnNumber: token.cI,
262
+ txts: () => txts
263
+ };
264
+ return desc;
265
+ }
266
+ catch (e) {
267
+ // TODO: fix
268
+ console.log(e);
269
+ return {};
270
+ }
271
+ }
272
+ // Inject value into text by key using "{key}" syntax.
273
+ function strinject(s, m, f) {
274
+ let st = typeof s;
275
+ let t = Array.isArray(s)
276
+ ? 'array'
277
+ : null == s
278
+ ? 'string'
279
+ : 'object' === st
280
+ ? st
281
+ : 'string';
282
+ let so = 'object' === t
283
+ ? s
284
+ : 'array' === t
285
+ ? s.reduce((a, n, i) => ((a[i] = n), a), {})
286
+ : { _: s };
287
+ let mo = null == m ? {} : m;
288
+ Object.entries(so).map((n) => (so[n[0]] =
289
+ null == n[1]
290
+ ? ''
291
+ : ('' + n[1]).replace(/\{([\w_0-9.]+)}/g, (match, keypath) => {
292
+ let inject = prop(mo, keypath);
293
+ inject = undefined === inject ? match : inject;
294
+ if ('object' === typeof inject) {
295
+ let cn = inject?.constructor?.name;
296
+ if ('Object' === cn || 'Array' === cn) {
297
+ inject = JSON.stringify(inject).replace(/([^"])"/g, '$1');
298
+ }
299
+ else {
300
+ inject = inject.toString();
301
+ }
302
+ }
303
+ else {
304
+ inject = '' + inject;
305
+ }
306
+ if (f) {
307
+ if ('string' === typeof f.indent) {
308
+ inject = inject.replace(/\n/g, '\n' + f.indent);
309
+ }
310
+ }
311
+ return inject;
312
+ })));
313
+ return ('string' === t ? so._ : 'array' === t ? Object.values(so) : so);
314
+ }
315
+ function prop(obj, path, val) {
316
+ let root = obj;
317
+ try {
318
+ let parts = path.split('.');
319
+ let pn;
320
+ for (let pI = 0; pI < parts.length; pI++) {
321
+ pn = parts[pI];
322
+ if ('__proto__' === pn) {
323
+ throw new Error(pn);
324
+ }
325
+ if (pI < parts.length - 1) {
326
+ obj = obj[pn] = obj[pn] || {};
327
+ }
328
+ }
329
+ if (undefined !== val) {
330
+ if ('__proto__' === pn) {
331
+ throw new Error(pn);
332
+ }
333
+ obj[pn] = val;
334
+ }
335
+ return obj[pn];
336
+ }
337
+ catch (e) {
338
+ throw new Error('Cannot ' +
339
+ (undefined === val ? 'get' : 'set') +
340
+ ' path ' +
341
+ path +
342
+ ' on object: ' +
343
+ str(root) +
344
+ (undefined === val ? '' : ' to value: ' + str(val, 22)));
345
+ }
346
+ }
347
+ function str(o, len = 44) {
348
+ let s;
349
+ try {
350
+ s = 'object' === typeof o ? JSON.stringify(o) : '' + o;
351
+ }
352
+ catch (e) {
353
+ s = '' + o;
354
+ }
355
+ return snip(len < s.length ? s.substring(0, len - 3) + '...' : s, len);
356
+ }
357
+ function snip(s, len = 5) {
358
+ return undefined === s
359
+ ? ''
360
+ : ('' + s).substring(0, len).replace(/[\r\n\t]/g, '.');
361
+ }
362
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import type { Tin, Rule, Config, Context, LexCheck, LexMatcher, MakeLexMatcher, NormAltSpec } from './types';
2
+ import { INSPECT } from './types';
3
+ declare class Point {
4
+ len: number;
5
+ sI: number;
6
+ rI: number;
7
+ cI: number;
8
+ token: Token[];
9
+ end?: Token;
10
+ constructor(len: number, sI?: number, rI?: number, cI?: number);
11
+ toString(): string;
12
+ [INSPECT](): string;
13
+ }
14
+ declare const makePoint: (...params: ConstructorParameters<typeof Point>) => Point;
15
+ declare class Token {
16
+ isToken: boolean;
17
+ name: string;
18
+ tin: Tin;
19
+ val: any;
20
+ src: string;
21
+ sI: number;
22
+ rI: number;
23
+ cI: number;
24
+ len: number;
25
+ use?: Record<string, any>;
26
+ err?: string;
27
+ why?: string;
28
+ ignored?: Token;
29
+ constructor(name: string, tin: Tin, val: any, src: string, pnt: Point, use?: any, why?: string);
30
+ resolveVal(rule: Rule, ctx: Context): any;
31
+ bad(err: string, details?: any): Token;
32
+ toString(): string;
33
+ [INSPECT](): string;
34
+ }
35
+ declare const makeToken: (...params: ConstructorParameters<typeof Token>) => Token;
36
+ declare const makeNoToken: () => Token;
37
+ declare function guardedMatcher(mcfg: {
38
+ lex: boolean;
39
+ check?: LexCheck | undefined;
40
+ }, body: LexMatcher): LexMatcher;
41
+ declare const CONSUME: number;
42
+ declare const IS_ROW: number;
43
+ declare const CI_RESET: number;
44
+ declare const STOP: number;
45
+ declare const STATE_MASK = 65535;
46
+ type ScanSpec = {
47
+ readonly initialState: number;
48
+ readonly nclasses: number;
49
+ readonly classOf: Uint8Array;
50
+ readonly fallback: (c: string) => number;
51
+ readonly table: Int32Array;
52
+ };
53
+ type ScanOut = {
54
+ sI: number;
55
+ rI: number;
56
+ cI: number;
57
+ };
58
+ declare function scan(src: string, startSI: number, startRI: number, startCI: number, spec: ScanSpec, out: ScanOut): boolean;
59
+ declare function buildLineRunSpec(cfgLine: Config['line']): ScanSpec;
60
+ declare function buildCharRunSpec(charsBitmap: Uint8Array, chars: Record<string, any>): ScanSpec;
61
+ declare function buildStringBodySpec(cfg: Config, qchar: string): ScanSpec;
62
+ declare let makeFixedMatcher: MakeLexMatcher;
63
+ declare let makeMatchMatcher: MakeLexMatcher;
64
+ declare let makeCommentMatcher: MakeLexMatcher;
65
+ declare let makeTextMatcher: MakeLexMatcher;
66
+ declare let makeNumberMatcher: MakeLexMatcher;
67
+ declare let makeStringMatcher: MakeLexMatcher;
68
+ declare let makeLineMatcher: MakeLexMatcher;
69
+ declare let makeSpaceMatcher: MakeLexMatcher;
70
+ declare class Lex {
71
+ src: string;
72
+ ctx: Context;
73
+ cfg: Config;
74
+ pnt: Point;
75
+ fwd: string;
76
+ refwd(): string;
77
+ constructor(ctx: Context);
78
+ token(ref: Tin | string, val: any, src: string, pnt?: Point, use?: any, why?: string): Token;
79
+ next(rule: Rule, alt?: NormAltSpec, altI?: number, tI?: number): Token;
80
+ tokenize<R extends string | Tin, T extends R extends Tin ? string : Tin>(ref: R): T;
81
+ bad(why: string, pstart: number, pend: number): Token;
82
+ }
83
+ declare const makeLex: (...params: ConstructorParameters<typeof Lex>) => Lex;
84
+ export { Lex, Point, Token, makeNoToken, makeLex, makePoint, makeToken, makeMatchMatcher, makeFixedMatcher, makeSpaceMatcher, makeLineMatcher, makeStringMatcher, makeCommentMatcher, makeNumberMatcher, makeTextMatcher, guardedMatcher, scan, buildCharRunSpec, buildLineRunSpec, buildStringBodySpec, CONSUME, IS_ROW, CI_RESET, STOP, STATE_MASK, };
85
+ export type { ScanSpec, ScanOut };