htmljs-parser 5.7.4 → 5.8.1

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/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { type ParserOptions, type Range } from "./internal";
2
2
  export { TagType, ErrorCode, getLines, getLocation, getPosition, type ParserOptions as Handlers, type Position, type Location, type Ranges, type Range, } from "./internal";
3
+ export { isValidStatement, isValidAttrValue } from "./util/validators";
3
4
  /**
4
5
  * Creates a new Marko parser.
5
6
  */
package/dist/index.js CHANGED
@@ -25,7 +25,9 @@ __export(src_exports, {
25
25
  createParser: () => createParser,
26
26
  getLines: () => getLines,
27
27
  getLocation: () => getLocation,
28
- getPosition: () => getPosition
28
+ getPosition: () => getPosition,
29
+ isValidAttrValue: () => isValidAttrValue,
30
+ isValidStatement: () => isValidStatement
29
31
  });
30
32
  module.exports = __toCommonJS(src_exports);
31
33
 
@@ -411,7 +413,9 @@ __export(states_exports, {
411
413
  checkForCDATA: () => checkForCDATA,
412
414
  checkForClosingTag: () => checkForClosingTag,
413
415
  checkForPlaceholder: () => checkForPlaceholder,
414
- handleDelimitedEOL: () => handleDelimitedEOL
416
+ handleDelimitedEOL: () => handleDelimitedEOL,
417
+ shouldTerminateConciseAttrValue: () => shouldTerminateConciseAttrValue,
418
+ shouldTerminateHtmlAttrValue: () => shouldTerminateHtmlAttrValue
415
419
  });
416
420
 
417
421
  // src/states/OPEN_TAG.ts
@@ -2835,6 +2839,80 @@ var PARSED_STRING = {
2835
2839
  }
2836
2840
  };
2837
2841
 
2842
+ // src/util/validators.ts
2843
+ var ROOT_STATE = {
2844
+ name: "ROOT",
2845
+ enter() {
2846
+ return ROOT_RANGE;
2847
+ },
2848
+ exit() {
2849
+ },
2850
+ char() {
2851
+ },
2852
+ eol() {
2853
+ },
2854
+ eof() {
2855
+ },
2856
+ return() {
2857
+ }
2858
+ };
2859
+ var ROOT_RANGE = {
2860
+ state: ROOT_STATE,
2861
+ parent: void 0,
2862
+ start: 0,
2863
+ end: 0
2864
+ };
2865
+ function isValidStatement(code) {
2866
+ return isValid(code, true, prepareStatement);
2867
+ }
2868
+ function prepareStatement(expr) {
2869
+ expr.operators = true;
2870
+ expr.terminatedByEOL = true;
2871
+ expr.consumeIndentedContent = true;
2872
+ }
2873
+ function isValidAttrValue(code, concise) {
2874
+ return isValid(code, concise, prepareAttrValue);
2875
+ }
2876
+ function prepareAttrValue(expr, concise) {
2877
+ expr.operators = true;
2878
+ expr.terminatedByWhitespace = true;
2879
+ expr.shouldTerminate = concise ? shouldTerminateConciseAttrValue : shouldTerminateHtmlAttrValue;
2880
+ }
2881
+ function isValid(data, concise, prepare) {
2882
+ const parser = new Parser({});
2883
+ const maxPos = parser.maxPos = data.length;
2884
+ parser.pos = 0;
2885
+ parser.data = data;
2886
+ parser.indent = "";
2887
+ parser.forward = 1;
2888
+ parser.textPos = -1;
2889
+ parser.isConcise = concise;
2890
+ parser.beginMixedMode = parser.endingMixedModeAtEOL = false;
2891
+ parser.lines = parser.activeTag = parser.activeAttr = void 0;
2892
+ parser.activeState = ROOT_STATE;
2893
+ parser.activeRange = ROOT_RANGE;
2894
+ const expr = parser.enterState(states_exports.EXPRESSION);
2895
+ prepare(expr, concise);
2896
+ while (parser.pos < maxPos) {
2897
+ const code = data.charCodeAt(parser.pos);
2898
+ if (code === 10 /* NEWLINE */) {
2899
+ parser.forward = 1;
2900
+ parser.activeState.eol.call(parser, 1, parser.activeRange);
2901
+ } else if (code === 13 /* CARRIAGE_RETURN */ && data.charCodeAt(parser.pos + 1) === 10 /* NEWLINE */) {
2902
+ parser.forward = 2;
2903
+ parser.activeState.eol.call(parser, 2, parser.activeRange);
2904
+ } else {
2905
+ parser.forward = 1;
2906
+ parser.activeState.char.call(parser, code, parser.activeRange);
2907
+ }
2908
+ if (parser.activeRange === ROOT_RANGE) {
2909
+ return false;
2910
+ }
2911
+ parser.pos += parser.forward;
2912
+ }
2913
+ return parser.pos === maxPos && parser.activeRange === expr && !expr.groupStack.length;
2914
+ }
2915
+
2838
2916
  // src/index.ts
2839
2917
  function createParser(handlers) {
2840
2918
  const parser = new Parser(handlers);
@@ -2872,5 +2950,7 @@ function createParser(handlers) {
2872
2950
  createParser,
2873
2951
  getLines,
2874
2952
  getLocation,
2875
- getPosition
2953
+ getPosition,
2954
+ isValidAttrValue,
2955
+ isValidStatement
2876
2956
  });
package/dist/index.mjs CHANGED
@@ -386,7 +386,9 @@ __export(states_exports, {
386
386
  checkForCDATA: () => checkForCDATA,
387
387
  checkForClosingTag: () => checkForClosingTag,
388
388
  checkForPlaceholder: () => checkForPlaceholder,
389
- handleDelimitedEOL: () => handleDelimitedEOL
389
+ handleDelimitedEOL: () => handleDelimitedEOL,
390
+ shouldTerminateConciseAttrValue: () => shouldTerminateConciseAttrValue,
391
+ shouldTerminateHtmlAttrValue: () => shouldTerminateHtmlAttrValue
390
392
  });
391
393
 
392
394
  // src/states/OPEN_TAG.ts
@@ -2810,6 +2812,80 @@ var PARSED_STRING = {
2810
2812
  }
2811
2813
  };
2812
2814
 
2815
+ // src/util/validators.ts
2816
+ var ROOT_STATE = {
2817
+ name: "ROOT",
2818
+ enter() {
2819
+ return ROOT_RANGE;
2820
+ },
2821
+ exit() {
2822
+ },
2823
+ char() {
2824
+ },
2825
+ eol() {
2826
+ },
2827
+ eof() {
2828
+ },
2829
+ return() {
2830
+ }
2831
+ };
2832
+ var ROOT_RANGE = {
2833
+ state: ROOT_STATE,
2834
+ parent: void 0,
2835
+ start: 0,
2836
+ end: 0
2837
+ };
2838
+ function isValidStatement(code) {
2839
+ return isValid(code, true, prepareStatement);
2840
+ }
2841
+ function prepareStatement(expr) {
2842
+ expr.operators = true;
2843
+ expr.terminatedByEOL = true;
2844
+ expr.consumeIndentedContent = true;
2845
+ }
2846
+ function isValidAttrValue(code, concise) {
2847
+ return isValid(code, concise, prepareAttrValue);
2848
+ }
2849
+ function prepareAttrValue(expr, concise) {
2850
+ expr.operators = true;
2851
+ expr.terminatedByWhitespace = true;
2852
+ expr.shouldTerminate = concise ? shouldTerminateConciseAttrValue : shouldTerminateHtmlAttrValue;
2853
+ }
2854
+ function isValid(data, concise, prepare) {
2855
+ const parser = new Parser({});
2856
+ const maxPos = parser.maxPos = data.length;
2857
+ parser.pos = 0;
2858
+ parser.data = data;
2859
+ parser.indent = "";
2860
+ parser.forward = 1;
2861
+ parser.textPos = -1;
2862
+ parser.isConcise = concise;
2863
+ parser.beginMixedMode = parser.endingMixedModeAtEOL = false;
2864
+ parser.lines = parser.activeTag = parser.activeAttr = void 0;
2865
+ parser.activeState = ROOT_STATE;
2866
+ parser.activeRange = ROOT_RANGE;
2867
+ const expr = parser.enterState(states_exports.EXPRESSION);
2868
+ prepare(expr, concise);
2869
+ while (parser.pos < maxPos) {
2870
+ const code = data.charCodeAt(parser.pos);
2871
+ if (code === 10 /* NEWLINE */) {
2872
+ parser.forward = 1;
2873
+ parser.activeState.eol.call(parser, 1, parser.activeRange);
2874
+ } else if (code === 13 /* CARRIAGE_RETURN */ && data.charCodeAt(parser.pos + 1) === 10 /* NEWLINE */) {
2875
+ parser.forward = 2;
2876
+ parser.activeState.eol.call(parser, 2, parser.activeRange);
2877
+ } else {
2878
+ parser.forward = 1;
2879
+ parser.activeState.char.call(parser, code, parser.activeRange);
2880
+ }
2881
+ if (parser.activeRange === ROOT_RANGE) {
2882
+ return false;
2883
+ }
2884
+ parser.pos += parser.forward;
2885
+ }
2886
+ return parser.pos === maxPos && parser.activeRange === expr && !expr.groupStack.length;
2887
+ }
2888
+
2813
2889
  // src/index.ts
2814
2890
  function createParser(handlers) {
2815
2891
  const parser = new Parser(handlers);
@@ -2846,5 +2922,7 @@ export {
2846
2922
  createParser,
2847
2923
  getLines,
2848
2924
  getLocation,
2849
- getPosition
2925
+ getPosition,
2926
+ isValidAttrValue,
2927
+ isValidStatement
2850
2928
  };
@@ -1,4 +1,4 @@
1
- import { type StateDefinition, type Range, type Ranges, type Meta } from "../internal";
1
+ import { STATE, type StateDefinition, type Range, type Ranges, type Meta } from "../internal";
2
2
  declare const enum ATTR_STAGE {
3
3
  UNKNOWN = 0,
4
4
  NAME = 1,
@@ -17,4 +17,6 @@ export interface AttrMeta extends Meta {
17
17
  bound: boolean;
18
18
  }
19
19
  export declare const ATTRIBUTE: StateDefinition<AttrMeta>;
20
+ export declare function shouldTerminateHtmlAttrValue(this: STATE.ExpressionMeta, code: number, data: string, pos: number): boolean;
21
+ export declare function shouldTerminateConciseAttrValue(code: number, data: string, pos: number): boolean;
20
22
  export {};
@@ -126,7 +126,7 @@ export declare enum ErrorCode {
126
126
  INVALID_TAG_TYPES = 27,
127
127
  INVALID_ATTR_TYPE_PARAMS = 28
128
128
  }
129
- export declare const enum TagType {
129
+ export declare enum TagType {
130
130
  html = 0,
131
131
  text = 1,
132
132
  void = 2,
@@ -0,0 +1,2 @@
1
+ export declare function isValidStatement(code: string): boolean;
2
+ export declare function isValidAttrValue(code: string, concise: boolean): boolean;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "htmljs-parser",
3
3
  "description": "An HTML parser recognizes content and string placeholders and allows JavaScript expressions as attribute values",
4
- "version": "5.7.4",
4
+ "version": "5.8.1",
5
5
  "devDependencies": {
6
6
  "@changesets/changelog-github": "^0.5.0",
7
7
  "@changesets/cli": "^2.27.1",