@jesscss/less-parser 2.0.0-alpha.5 → 2.0.0-alpha.7

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.
Files changed (75) hide show
  1. package/README.md +133 -5
  2. package/lib/builders.d.ts +381 -0
  3. package/lib/builders.d.ts.map +1 -0
  4. package/lib/cst.cjs +14 -0
  5. package/lib/cst.d.ts +6 -0
  6. package/lib/cst.d.ts.map +1 -0
  7. package/lib/cst.js +12 -0
  8. package/lib/functional-parser.cjs +2653 -0
  9. package/lib/functional-parser.d.ts +18 -0
  10. package/lib/functional-parser.d.ts.map +1 -0
  11. package/lib/functional-parser.js +2588 -0
  12. package/lib/grammar.cjs +30621 -0
  13. package/lib/grammar.d.ts +2 -0
  14. package/lib/grammar.d.ts.map +1 -0
  15. package/lib/grammar.js +30620 -0
  16. package/lib/index.cjs +18 -0
  17. package/lib/index.d.ts +9 -32
  18. package/lib/index.d.ts.map +1 -0
  19. package/lib/index.js +7 -75
  20. package/lib/jess.cjs +3968 -0
  21. package/lib/jess.d.ts +7 -0
  22. package/lib/jess.d.ts.map +1 -0
  23. package/lib/jess.js +3962 -0
  24. package/lib/lessParser.d.ts +38 -0
  25. package/lib/lessParser.d.ts.map +1 -0
  26. package/lib/lessRecursiveParser.d.ts +99 -0
  27. package/lib/lessRecursiveParser.d.ts.map +1 -0
  28. package/lib/lessTokens.d.ts +4 -3
  29. package/lib/lessTokens.d.ts.map +1 -0
  30. package/lib/productions/guards.d.ts +113 -0
  31. package/lib/productions/guards.d.ts.map +1 -0
  32. package/lib/productions/index.d.ts +5 -0
  33. package/lib/productions/index.d.ts.map +1 -0
  34. package/lib/productions/root.d.ts +38 -0
  35. package/lib/productions/root.d.ts.map +1 -0
  36. package/lib/productions/selectors.d.ts +41 -0
  37. package/lib/productions/selectors.d.ts.map +1 -0
  38. package/lib/productions/values.d.ts +35 -0
  39. package/lib/productions/values.d.ts.map +1 -0
  40. package/lib/utils.d.ts +8 -1
  41. package/lib/utils.d.ts.map +1 -0
  42. package/package.json +49 -16
  43. package/{lib/__tests__/debug-log.js → src/__tests__/debug-log.ts} +20 -19
  44. package/src/__tests__/wall5-parse.test.ts +67 -0
  45. package/src/builders.ts +3183 -0
  46. package/src/cst.ts +25 -0
  47. package/src/functional-parser.ts +162 -0
  48. package/src/grammar.ts +869 -0
  49. package/src/index.ts +19 -0
  50. package/src/jess.ts +6 -0
  51. package/src/lessParser.ts +120 -0
  52. package/src/lessRecursiveParser.ts +279 -0
  53. package/src/lessTokens.ts +350 -0
  54. package/src/productions/guards.ts +1066 -0
  55. package/src/productions/index.ts +29 -0
  56. package/src/productions/root.ts +1613 -0
  57. package/src/productions/selectors.ts +1309 -0
  58. package/src/productions/values.ts +1449 -0
  59. package/src/utils.ts +178 -0
  60. package/lib/__tests__/debug-log.d.ts +0 -1
  61. package/lib/__tests__/debug-log.js.map +0 -1
  62. package/lib/index.js.map +0 -1
  63. package/lib/lessActionsParser.d.ts +0 -156
  64. package/lib/lessActionsParser.js +0 -145
  65. package/lib/lessActionsParser.js.map +0 -1
  66. package/lib/lessErrorMessageProvider.d.ts +0 -3
  67. package/lib/lessErrorMessageProvider.js +0 -4
  68. package/lib/lessErrorMessageProvider.js.map +0 -1
  69. package/lib/lessTokens.js +0 -249
  70. package/lib/lessTokens.js.map +0 -1
  71. package/lib/productions.d.ts +0 -181
  72. package/lib/productions.js +0 -3521
  73. package/lib/productions.js.map +0 -1
  74. package/lib/utils.js +0 -88
  75. package/lib/utils.js.map +0 -1
package/lib/index.cjs ADDED
@@ -0,0 +1,18 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_functional_parser = require("./functional-parser.cjs");
3
+ const require_grammar = require("./grammar.cjs");
4
+ const require_cst = require("./cst.cjs");
5
+ //#region src/index.ts
6
+ const Parser = require_functional_parser.LessParser;
7
+ //#endregion
8
+ exports.Fragments = require_functional_parser.Fragments;
9
+ exports.LessGrammar = require_functional_parser.LessGrammar;
10
+ exports.LessParser = require_functional_parser.LessParser;
11
+ exports.Parser = Parser;
12
+ exports.Tokens = require_functional_parser.Tokens;
13
+ exports.lessFragments = require_functional_parser.lessFragments;
14
+ exports.lessGrammar = require_grammar.lessGrammar;
15
+ exports.lessTokens = require_functional_parser.lessTokens;
16
+ exports.parseLessCst = require_cst.parseLessCst;
17
+ exports.parseLessDoc = require_cst.parseLessDoc;
18
+ exports.parseLessFn = require_functional_parser.parseLessFn;
package/lib/index.d.ts CHANGED
@@ -1,33 +1,10 @@
1
- import { type CstNode, Lexer } from 'chevrotain';
2
- import { LessActionsParser, type LessParserConfig } from './lessActionsParser.js';
3
- import type { ConditionalPick } from 'type-fest';
4
- import type { Rules, IParseResult } from '@jesscss/core';
5
- export * from './lessActionsParser.js';
6
1
  export * from './lessTokens.js';
7
- export type LessRules = keyof ConditionalPick<LessActionsParser, () => CstNode>;
8
- export type SyntacticContentAssistSuggestion = {
9
- nextTokenType: string;
10
- nextTokenLabel?: string;
11
- ruleStack: string[];
12
- occurrenceStack: number[];
13
- };
14
- export declare class Parser {
15
- lexer: Lexer;
16
- /** @todo - return Jess AST as parser */
17
- parser: LessActionsParser;
18
- constructor(config?: LessParserConfig);
19
- parse(text: string): IParseResult<Rules>;
20
- parse(text: string, rule: 'stylesheet', ...args: Parameters<LessActionsParser['stylesheet']>): IParseResult<Rules>;
21
- parse<T extends LessRules = LessRules>(text: string, rule?: T, ...args: Parameters<LessActionsParser[T]>): IParseResult;
22
- /**
23
- * IDE helper: suggest next possible token types at `offset` using Chevrotain's
24
- * syntactic content assist. This is syntactic-only (not semantic completion).
25
- *
26
- * Note: content assist is significantly slower than normal parsing, so it
27
- * should be called on-demand (e.g. near the cursor).
28
- */
29
- suggest(text: string, init: {
30
- offset: number;
31
- rule?: LessRules;
32
- }): SyntacticContentAssistSuggestion[];
33
- }
2
+ export { LessGrammar } from './builders.js';
3
+ import { LessParser } from './functional-parser.js';
4
+ export { LessParser };
5
+ export { lessGrammar } from './grammar.js';
6
+ export { parseLessFn, type LessFnParseResult } from './functional-parser.js';
7
+ export { parseLessCst, parseLessDoc } from './cst.js';
8
+ export type { LessCstChild, LessCstError, LessCstLeaf, LessCstNode, LessCstParseResult, LessCstType } from './cst.js';
9
+ export declare const Parser: typeof LessParser;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAQhC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACtD,YAAY,EACV,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EACtF,MAAM,UAAU,CAAC;AAClB,eAAO,MAAM,MAAM,mBAAa,CAAC"}
package/lib/index.js CHANGED
@@ -1,75 +1,7 @@
1
- import { Lexer } from 'chevrotain';
2
- import { lessTokens, lessFragments } from './lessTokens.js';
3
- import { createLexerDefinition } from '@jesscss/css-parser';
4
- import { LessActionsParser } from './lessActionsParser.js';
5
- import { LessErrorMessageProvider } from './lessErrorMessageProvider.js';
6
- export * from './lessActionsParser.js';
7
- export * from './lessTokens.js';
8
- const errorMessageProvider = new LessErrorMessageProvider();
9
- export class Parser {
10
- lexer;
11
- /** @todo - return Jess AST as parser */
12
- parser;
13
- constructor(config = {}) {
14
- config = {
15
- errorMessageProvider,
16
- /**
17
- * Override this if you want a stricter Less/CSS parser.
18
- * @todo - Allow overriding when parsing a single rule.
19
- */
20
- looseMode: true,
21
- skipValidations: process.env.TEST !== 'true',
22
- ...config
23
- };
24
- const { lexer, T } = createLexerDefinition(lessFragments(), lessTokens());
25
- this.lexer = new Lexer(lexer, {
26
- ensureOptimizations: true,
27
- skipValidations: process.env.TEST !== 'true'
28
- });
29
- this.parser = new LessActionsParser(lexer, T, config);
30
- /** Not sure why this is necessary, but Less tests were a problem */
31
- this.parse = this.parse.bind(this);
32
- }
33
- parse(text, rule = 'stylesheet', ...args) {
34
- const parser = this.parser;
35
- const lexerResult = this.lexer.tokenize(text);
36
- const lexedTokens = lexerResult.tokens;
37
- // Reset warnings BEFORE setting input, in case input setter does something that affects warnings
38
- parser.warnings = [];
39
- parser.input = lexedTokens;
40
- const tree = parser[rule](...args);
41
- // Capture warnings immediately after parsing to ensure they're not lost
42
- const warnings = [...parser.warnings];
43
- if (parser.errors.length > 0) {
44
- const firstError = parser.errors[0];
45
- const firstToken = firstError?.token;
46
- }
47
- return { tree, lexerResult, errors: parser.errors, warnings };
48
- }
49
- /**
50
- * IDE helper: suggest next possible token types at `offset` using Chevrotain's
51
- * syntactic content assist. This is syntactic-only (not semantic completion).
52
- *
53
- * Note: content assist is significantly slower than normal parsing, so it
54
- * should be called on-demand (e.g. near the cursor).
55
- */
56
- suggest(text, init) {
57
- const { offset, rule = 'stylesheet' } = init;
58
- const prefix = text.slice(0, Math.max(0, offset));
59
- const lexerResult = this.lexer.tokenize(prefix);
60
- const tokens = lexerResult.tokens;
61
- try {
62
- const paths = this.parser.computeContentAssist(rule, tokens);
63
- return paths.map(p => ({
64
- nextTokenType: p.nextTokenType.name,
65
- nextTokenLabel: p.nextTokenType.LABEL,
66
- ruleStack: p.ruleStack,
67
- occurrenceStack: p.occurrenceStack
68
- }));
69
- }
70
- catch {
71
- return [];
72
- }
73
- }
74
- }
75
- //# sourceMappingURL=index.js.map
1
+ import { c as Fragments, d as lessTokens, l as Tokens, n as parseLessFn, r as LessGrammar, t as LessParser, u as lessFragments } from "./functional-parser.js";
2
+ import { lessGrammar } from "./grammar.js";
3
+ import { parseLessCst, parseLessDoc } from "./cst.js";
4
+ //#region src/index.ts
5
+ const Parser = LessParser;
6
+ //#endregion
7
+ export { Fragments, LessGrammar, LessParser, Parser, Tokens, lessFragments, lessGrammar, lessTokens, parseLessCst, parseLessDoc, parseLessFn };