@noldova/context.parsers 0.0.0-stage → 0.0.2

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 (56) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +94 -2
  3. package/api/index.d.ts +1378 -0
  4. package/api/index.js +30 -0
  5. package/api/index.js.map +1 -0
  6. package/exceptions/invalid-offset.exception.js +31 -0
  7. package/exceptions/invalid-offset.exception.js.map +1 -0
  8. package/exceptions/invalid-span.exception.js +33 -0
  9. package/exceptions/invalid-span.exception.js.map +1 -0
  10. package/exceptions/line-out-of-bounds.exception.js +23 -0
  11. package/exceptions/line-out-of-bounds.exception.js.map +1 -0
  12. package/exceptions/parser.exception.js +14 -0
  13. package/exceptions/parser.exception.js.map +1 -0
  14. package/models/diagnostic-collector.js +31 -0
  15. package/models/diagnostic-collector.js.map +1 -0
  16. package/models/nodes/comment.node.js +14 -0
  17. package/models/nodes/comment.node.js.map +1 -0
  18. package/models/nodes/composite.node.js +16 -0
  19. package/models/nodes/composite.node.js.map +1 -0
  20. package/models/nodes/end-of-file.node.js +19 -0
  21. package/models/nodes/end-of-file.node.js.map +1 -0
  22. package/models/nodes/literal.node.js +14 -0
  23. package/models/nodes/literal.node.js.map +1 -0
  24. package/models/nodes/node.js +18 -0
  25. package/models/nodes/node.js.map +1 -0
  26. package/models/nodes/value.node.js +16 -0
  27. package/models/nodes/value.node.js.map +1 -0
  28. package/models/nodes/whitespace.node.js +14 -0
  29. package/models/nodes/whitespace.node.js.map +1 -0
  30. package/models/parser-context.js +17 -0
  31. package/models/parser-context.js.map +1 -0
  32. package/models/parser-result.js +16 -0
  33. package/models/parser-result.js.map +1 -0
  34. package/models/sources/source-line-map.js +67 -0
  35. package/models/sources/source-line-map.js.map +1 -0
  36. package/models/sources/source-line.js +31 -0
  37. package/models/sources/source-line.js.map +1 -0
  38. package/models/sources/source-position.js +23 -0
  39. package/models/sources/source-position.js.map +1 -0
  40. package/models/sources/source-span.js +20 -0
  41. package/models/sources/source-span.js.map +1 -0
  42. package/models/sources/source.js +36 -0
  43. package/models/sources/source.js.map +1 -0
  44. package/package.json +26 -4
  45. package/resources.js +38 -0
  46. package/resources.js.map +1 -0
  47. package/services/lexer.js +38 -0
  48. package/services/lexer.js.map +1 -0
  49. package/services/parser.js +96 -0
  50. package/services/parser.js.map +1 -0
  51. package/services/source.reader.js +93 -0
  52. package/services/source.reader.js.map +1 -0
  53. package/types/node-type.js +9 -0
  54. package/types/node-type.js.map +1 -0
  55. package/types/value-node-type.js +9 -0
  56. package/types/value-node-type.js.map +1 -0
package/api/index.js ADDED
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ export { InvalidOffsetException } from "../exceptions/invalid-offset.exception.js";
9
+ export { InvalidSpanException } from "../exceptions/invalid-span.exception.js";
10
+ export { LineOutOfBoundsException } from "../exceptions/line-out-of-bounds.exception.js";
11
+ export { ParserException } from "../exceptions/parser.exception.js";
12
+ export { CommentNode } from "../models/nodes/comment.node.js";
13
+ export { CompositeNode } from "../models/nodes/composite.node.js";
14
+ export { EndOfFileNode } from "../models/nodes/end-of-file.node.js";
15
+ export { LiteralNode } from "../models/nodes/literal.node.js";
16
+ export { Node } from "../models/nodes/node.js";
17
+ export { ValueNode } from "../models/nodes/value.node.js";
18
+ export { WhitespaceNode } from "../models/nodes/whitespace.node.js";
19
+ export { ParserContext } from "../models/parser-context.js";
20
+ export { ParserResult } from "../models/parser-result.js";
21
+ export { SourceLine } from "../models/sources/source-line.js";
22
+ export { SourcePosition } from "../models/sources/source-position.js";
23
+ export { SourceSpan } from "../models/sources/source-span.js";
24
+ export { Source } from "../models/sources/source.js";
25
+ export { DiagnosticCollector } from "../models/diagnostic-collector.js";
26
+ export { Lexer } from "../services/lexer.js";
27
+ export { Parser } from "../services/parser.js";
28
+ export { SourceLineMap } from "../models/sources/source-line-map.js";
29
+ export { SourceReader } from "../services/source.reader.js";
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/parsers/noldova.context.parsers/src/api/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { Resources } from "../resources.js";
9
+ import { ParserException } from "./parser.exception.js";
10
+ export class InvalidOffsetException extends ParserException {
11
+ maximumOffset;
12
+ minimumOffset;
13
+ offset;
14
+ constructor(offset, minimumOffset, maximumOffset, options) {
15
+ super(Resources.invalidOffset(offset, minimumOffset, maximumOffset), options);
16
+ this.offset = offset;
17
+ this.minimumOffset = minimumOffset;
18
+ this.maximumOffset = maximumOffset;
19
+ }
20
+ static throwIfOutsideRange(offset, minimumOffset, maximumOffset) {
21
+ if (!Number.isSafeInteger(offset)
22
+ || !Number.isSafeInteger(minimumOffset)
23
+ || !Number.isSafeInteger(maximumOffset)
24
+ || minimumOffset < 0
25
+ || maximumOffset < minimumOffset
26
+ || offset < minimumOffset
27
+ || offset > maximumOffset)
28
+ throw new InvalidOffsetException(offset, minimumOffset, maximumOffset);
29
+ }
30
+ }
31
+ //# sourceMappingURL=invalid-offset.exception.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invalid-offset.exception.js","sourceRoot":"","sources":["../../../../src/parsers/noldova.context.parsers/src/exceptions/invalid-offset.exception.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,OAAO,sBAAuB,SAAQ,eAAe;IACzC,aAAa,CAAS;IACtB,aAAa,CAAS;IACtB,MAAM,CAAS;IAE/B,YAAmB,MAAc,EAAE,aAAqB,EAAE,aAAqB,EAAE,OAA0B;QACzG,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC;QAE9E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAAC,MAAc,EAAE,aAAqB,EAAE,aAAqB;QAC5F,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;eAC5B,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC;eACpC,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC;eACpC,aAAa,GAAG,CAAC;eACjB,aAAa,GAAG,aAAa;eAC7B,MAAM,GAAG,aAAa;eACtB,MAAM,GAAG,aAAa;YACzB,MAAM,IAAI,sBAAsB,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;IAC3E,CAAC;CACF"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { Resources } from "../resources.js";
9
+ import { ParserException } from "./parser.exception.js";
10
+ export class InvalidSpanException extends ParserException {
11
+ length;
12
+ sourceLength;
13
+ startOffset;
14
+ constructor(startOffset, length, sourceLength, options) {
15
+ super(Resources.invalidSpan(startOffset, length, sourceLength), options);
16
+ this.startOffset = startOffset;
17
+ this.length = length;
18
+ this.sourceLength = sourceLength;
19
+ }
20
+ static throwIfInvalid(startOffset, length, sourceLength) {
21
+ const endOffset = startOffset + length;
22
+ if (!Number.isSafeInteger(startOffset)
23
+ || !Number.isSafeInteger(length)
24
+ || !Number.isSafeInteger(sourceLength)
25
+ || !Number.isSafeInteger(endOffset)
26
+ || startOffset < 0
27
+ || length < 0
28
+ || sourceLength < 0
29
+ || endOffset > sourceLength)
30
+ throw new InvalidSpanException(startOffset, length, sourceLength);
31
+ }
32
+ }
33
+ //# sourceMappingURL=invalid-span.exception.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invalid-span.exception.js","sourceRoot":"","sources":["../../../../src/parsers/noldova.context.parsers/src/exceptions/invalid-span.exception.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,OAAO,oBAAqB,SAAQ,eAAe;IACvC,MAAM,CAAS;IACf,YAAY,CAAS;IACrB,WAAW,CAAS;IAEpC,YAAmB,WAAmB,EAAE,MAAc,EAAE,YAAoB,EAAE,OAA0B;QACtG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;QAEzE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,WAAmB,EAAE,MAAc,EAAE,YAAoB;QACpF,MAAM,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC;eACjC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;eAC7B,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC;eACnC,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;eAChC,WAAW,GAAG,CAAC;eACf,MAAM,GAAG,CAAC;eACV,YAAY,GAAG,CAAC;eAChB,SAAS,GAAG,YAAY;YAC3B,MAAM,IAAI,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IACtE,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { Resources } from "../resources.js";
9
+ import { ParserException } from "./parser.exception.js";
10
+ export class LineOutOfBoundsException extends ParserException {
11
+ lineCount;
12
+ lineIndex;
13
+ constructor(lineIndex, lineCount, options) {
14
+ super(Resources.lineOutOfBounds(lineIndex, lineCount), options);
15
+ this.lineIndex = lineIndex;
16
+ this.lineCount = lineCount;
17
+ }
18
+ static throwIfOutOfBounds(lineIndex, lineCount) {
19
+ if (!Number.isSafeInteger(lineIndex) || !Number.isSafeInteger(lineCount) || lineCount < 0 || lineIndex < 0 || lineIndex >= lineCount)
20
+ throw new LineOutOfBoundsException(lineIndex, lineCount);
21
+ }
22
+ }
23
+ //# sourceMappingURL=line-out-of-bounds.exception.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line-out-of-bounds.exception.js","sourceRoot":"","sources":["../../../../src/parsers/noldova.context.parsers/src/exceptions/line-out-of-bounds.exception.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,OAAO,wBAAyB,SAAQ,eAAe;IAC3C,SAAS,CAAS;IAClB,SAAS,CAAS;IAElC,YAAmB,SAAiB,EAAE,SAAiB,EAAE,OAA0B;QACjF,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;QAEhE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAAC,SAAiB,EAAE,SAAiB;QACnE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,IAAI,SAAS;YAClI,MAAM,IAAI,wBAAwB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { Exception } from "@noldova/context.exceptions";
9
+ export class ParserException extends Exception {
10
+ constructor(message, options) {
11
+ super(message, options);
12
+ }
13
+ }
14
+ //# sourceMappingURL=parser.exception.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.exception.js","sourceRoot":"","sources":["../../../../src/parsers/noldova.context.parsers/src/exceptions/parser.exception.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAyB,MAAM,6BAA6B,CAAC;AAE/E,MAAM,OAAO,eAAgB,SAAQ,SAAS;IAC5C,YAAmB,OAAe,EAAE,OAA0B;QAC5D,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { Diagnostic, DiagnosticLocation } from "@noldova/context.diagnostics";
9
+ export class DiagnosticCollector {
10
+ collectedDiagnostics = [];
11
+ source;
12
+ constructor(source) {
13
+ this.source = source;
14
+ }
15
+ get diagnostics() {
16
+ return this.collectedDiagnostics;
17
+ }
18
+ add(diagnosticOrTemplate, span, messageArguments = []) {
19
+ if (diagnosticOrTemplate instanceof Diagnostic) {
20
+ this.collectedDiagnostics.push(diagnosticOrTemplate);
21
+ return;
22
+ }
23
+ const diagnosticSourceSpan = span;
24
+ const location = new DiagnosticLocation(this.source.identity, diagnosticSourceSpan.startOffset, diagnosticSourceSpan.length, this.source.length);
25
+ this.collectedDiagnostics.push(diagnosticOrTemplate.create(location, messageArguments));
26
+ }
27
+ truncate(count) {
28
+ this.collectedDiagnostics.splice(count);
29
+ }
30
+ }
31
+ //# sourceMappingURL=diagnostic-collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostic-collector.js","sourceRoot":"","sources":["../../../../src/parsers/noldova.context.parsers/src/models/diagnostic-collector.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAA2B,MAAM,8BAA8B,CAAC;AAKvG,MAAM,OAAO,mBAAmB;IACb,oBAAoB,GAAiB,EAAE,CAAC;IACxC,MAAM,CAAS;IAEhC,YAAmB,MAAc;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IAIM,GAAG,CAAC,oBAAqD,EAAE,IAAiB,EAAE,gBAAgB,GAAiC,EAAE;QACtI,IAAI,oBAAoB,YAAY,UAAU,EAAE,CAAC;YAC/C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QAED,MAAM,oBAAoB,GAAG,IAAK,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,oBAAoB,CAAC,WAAW,EAAE,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjJ,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC1F,CAAC;IAEM,QAAQ,CAAC,KAAa;QAC3B,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { ValueNode } from "./value.node.js";
9
+ export class CommentNode extends ValueNode {
10
+ constructor(value, span, leadingTrivia, trailingTrivia) {
11
+ super(value, span, leadingTrivia, trailingTrivia);
12
+ }
13
+ }
14
+ //# sourceMappingURL=comment.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment.node.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers/src/models/nodes/comment.node.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,OAAgB,WAAY,SAAQ,SAAS;IACjD,YAAsB,KAAa,EAAE,IAAgB,EAAE,aAAoB,EAAE,cAAqB;QAChG,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IACpD,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { Node } from "./node.js";
9
+ export class CompositeNode extends Node {
10
+ children;
11
+ constructor(children, span, leadingTrivia, trailingTrivia) {
12
+ super(span, leadingTrivia, trailingTrivia);
13
+ this.children = children;
14
+ }
15
+ }
16
+ //# sourceMappingURL=composite.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composite.node.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers/src/models/nodes/composite.node.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,OAAgB,aAAc,SAAQ,IAAI;IAC9B,QAAQ,CAAkB;IAE1C,YAAsB,QAAyB,EAAE,IAAgB,EAAE,aAAoB,EAAE,cAAqB;QAC5G,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { nameof } from "@noldova/context.core";
9
+ import { ArgumentException } from "@noldova/context.exceptions";
10
+ import { Resources } from "../../resources.js";
11
+ import { Node } from "./node.js";
12
+ export class EndOfFileNode extends Node {
13
+ constructor(span, leadingTrivia, trailingTrivia) {
14
+ super(span, leadingTrivia, trailingTrivia);
15
+ if (!span.isEmpty)
16
+ throw new ArgumentException(Resources.endOfFileSpanInvalid, nameof(t => t.span));
17
+ }
18
+ }
19
+ //# sourceMappingURL=end-of-file.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"end-of-file.node.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers/src/models/nodes/end-of-file.node.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,OAAO,aAAc,SAAQ,IAAI;IACrC,YAAmB,IAAgB,EAAE,aAAoB,EAAE,cAAqB;QAC9E,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;QAE3C,IAAI,CAAC,IAAI,CAAC,OAAO;YACf,MAAM,IAAI,iBAAiB,CAAC,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpG,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { ValueNode } from "./value.node.js";
9
+ export class LiteralNode extends ValueNode {
10
+ constructor(value, span, leadingTrivia, trailingTrivia) {
11
+ super(value, span, leadingTrivia, trailingTrivia);
12
+ }
13
+ }
14
+ //# sourceMappingURL=literal.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literal.node.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers/src/models/nodes/literal.node.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,OAAgB,WAAY,SAAQ,SAAS;IACjD,YAAsB,KAAa,EAAE,IAAgB,EAAE,aAAoB,EAAE,cAAqB;QAChG,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IACpD,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ export class Node {
9
+ span;
10
+ leadingTrivia;
11
+ trailingTrivia;
12
+ constructor(span, leadingTrivia, trailingTrivia) {
13
+ this.span = span;
14
+ this.leadingTrivia = leadingTrivia;
15
+ this.trailingTrivia = trailingTrivia;
16
+ }
17
+ }
18
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers/src/models/nodes/node.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,OAAgB,IAAI;IACR,IAAI,CAAa;IACjB,aAAa,CAAmB;IAChC,cAAc,CAAmB;IAEjD,YAAsB,IAAgB,EAAE,aAAoB,EAAE,cAAqB;QACjF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { Node } from "./node.js";
9
+ export class ValueNode extends Node {
10
+ value;
11
+ constructor(value, span, leadingTrivia, trailingTrivia) {
12
+ super(span, leadingTrivia, trailingTrivia);
13
+ this.value = value;
14
+ }
15
+ }
16
+ //# sourceMappingURL=value.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value.node.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers/src/models/nodes/value.node.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,OAAgB,SAAU,SAAQ,IAAI;IAC1B,KAAK,CAAS;IAE9B,YAAsB,KAAa,EAAE,IAAgB,EAAE,aAAoB,EAAE,cAAqB;QAChG,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { ValueNode } from "./value.node.js";
9
+ export class WhitespaceNode extends ValueNode {
10
+ constructor(value, span, leadingTrivia, trailingTrivia) {
11
+ super(value, span, leadingTrivia, trailingTrivia);
12
+ }
13
+ }
14
+ //# sourceMappingURL=whitespace.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whitespace.node.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers/src/models/nodes/whitespace.node.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,OAAO,cAAe,SAAQ,SAAS;IAC3C,YAAmB,KAAa,EAAE,IAAgB,EAAE,aAAoB,EAAE,cAAqB;QAC7F,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IACpD,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { DiagnosticCollector } from "./diagnostic-collector.js";
9
+ export class ParserContext {
10
+ diagnosticCollector;
11
+ source;
12
+ constructor(source) {
13
+ this.diagnosticCollector = new DiagnosticCollector(source);
14
+ this.source = source;
15
+ }
16
+ }
17
+ //# sourceMappingURL=parser-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser-context.js","sourceRoot":"","sources":["../../../../src/parsers/noldova.context.parsers/src/models/parser-context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGhE,MAAM,OAAO,aAAa;IACR,mBAAmB,CAAsB;IACzC,MAAM,CAAS;IAE/B,YAAmB,MAAc;QAC/B,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ export class ParserResult {
9
+ diagnostics;
10
+ rootNode;
11
+ constructor(rootNode, diagnostics) {
12
+ this.rootNode = rootNode;
13
+ this.diagnostics = [...diagnostics];
14
+ }
15
+ }
16
+ //# sourceMappingURL=parser-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser-result.js","sourceRoot":"","sources":["../../../../src/parsers/noldova.context.parsers/src/models/parser-result.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,OAAO,YAAY;IACP,WAAW,CAAwB;IACnC,QAAQ,CAAQ;IAEhC,YAAmB,QAAe,EAAE,WAAkC;QACpE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;IACtC,CAAC;CACF"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { BinarySearchService } from "@noldova/context.collections";
9
+ import { nameof } from "@noldova/context.core";
10
+ import { ArgumentOutOfRangeException } from "@noldova/context.exceptions";
11
+ import { ReadOnlyStringSpan } from "@noldova/context.text";
12
+ import { InvalidOffsetException } from "../../exceptions/invalid-offset.exception.js";
13
+ import { LineOutOfBoundsException } from "../../exceptions/line-out-of-bounds.exception.js";
14
+ import { SourceLine } from "./source-line.js";
15
+ import { SourcePosition } from "./source-position.js";
16
+ import { Resources } from "../../resources.js";
17
+ export class SourceLineMap {
18
+ lineStarts;
19
+ source;
20
+ lines;
21
+ constructor(source, lineTerminator) {
22
+ const lineStarts = [0];
23
+ const lines = [];
24
+ let lineStartOffset = 0;
25
+ for (let index = 0; index < source.length; index++) {
26
+ const lineBreakLength = lineTerminator.getLength(source.content, index);
27
+ if (lineBreakLength === 0)
28
+ continue;
29
+ lines.push(new SourceLine(lines.length, lineStartOffset, index, lineBreakLength));
30
+ index += lineBreakLength - 1;
31
+ lineStartOffset = index + 1;
32
+ lineStarts.push(lineStartOffset);
33
+ }
34
+ lines.push(new SourceLine(lines.length, lineStartOffset, source.length, 0));
35
+ this.source = source;
36
+ this.lineStarts = lineStarts;
37
+ this.lines = lines;
38
+ }
39
+ get lineCount() {
40
+ return this.lines.length;
41
+ }
42
+ getLineSpan(lineIndex) {
43
+ const line = this.getLine(lineIndex);
44
+ return this.source.getSpan(line.startOffset, line.length);
45
+ }
46
+ getLineText(lineIndex) {
47
+ return this.getLineSpan(lineIndex).toString();
48
+ }
49
+ getPosition(offset) {
50
+ InvalidOffsetException.throwIfOutsideRange(offset, 0, this.source.length);
51
+ const lineIndex = BinarySearchService.floorIndex(this.lineStarts, offset);
52
+ const line = this.getLine(lineIndex);
53
+ return new SourcePosition(lineIndex, offset - line.startOffset);
54
+ }
55
+ getOffset(position) {
56
+ const line = this.getLine(position.lineIndex);
57
+ const maximumCharacterIndex = line.length + Math.max(0, line.lineBreakLength - 1);
58
+ if (position.characterIndex > maximumCharacterIndex)
59
+ throw new ArgumentOutOfRangeException(nameof(t => t.characterIndex), position.characterIndex, Resources.characterIndexInvalid);
60
+ return line.startOffset + position.characterIndex;
61
+ }
62
+ getLine(lineIndex) {
63
+ LineOutOfBoundsException.throwIfOutOfBounds(lineIndex, this.lines.length);
64
+ return this.lines[lineIndex];
65
+ }
66
+ }
67
+ //# sourceMappingURL=source-line-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-line-map.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers/src/models/sources/source-line-map.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { nameof } from "@noldova/context.core";
9
+ import { ArgumentOutOfRangeException } from "@noldova/context.exceptions";
10
+ import { Resources } from "../../resources.js";
11
+ export class SourceLine {
12
+ lineIndex;
13
+ startOffset;
14
+ endOffset;
15
+ lineBreakLength;
16
+ length;
17
+ constructor(lineIndex, startOffset, endOffset, lineBreakLength) {
18
+ if (!Number.isSafeInteger(lineIndex) || lineIndex < 0)
19
+ throw new ArgumentOutOfRangeException(nameof(t => t.lineIndex), lineIndex, Resources.lineIndexInvalid);
20
+ if (!Number.isSafeInteger(startOffset) || startOffset < 0)
21
+ throw new ArgumentOutOfRangeException(nameof(t => t.startOffset), startOffset, Resources.lineStartInvalid);
22
+ if (!Number.isSafeInteger(endOffset) || endOffset < startOffset)
23
+ throw new ArgumentOutOfRangeException(nameof(t => t.endOffset), endOffset, Resources.lineEndInvalid);
24
+ this.lineIndex = lineIndex;
25
+ this.startOffset = startOffset;
26
+ this.endOffset = endOffset;
27
+ this.lineBreakLength = lineBreakLength;
28
+ this.length = endOffset - startOffset;
29
+ }
30
+ }
31
+ //# sourceMappingURL=source-line.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-line.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers/src/models/sources/source-line.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,OAAO,UAAU;IACL,SAAS,CAAS;IAClB,WAAW,CAAS;IACpB,SAAS,CAAS;IAClB,eAAe,CAAY;IAC3B,MAAM,CAAS;IAE/B,YAAmB,SAAiB,EAAE,WAAmB,EAAE,SAAiB,EAAE,eAA0B;QACtG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC;YACnD,MAAM,IAAI,2BAA2B,CAAC,MAAM,CAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAErH,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC;YACvD,MAAM,IAAI,2BAA2B,CAAC,MAAM,CAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAEzH,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,WAAW;YAC7D,MAAM,IAAI,2BAA2B,CAAC,MAAM,CAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;QAEnH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;IACxC,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { nameof } from "@noldova/context.core";
9
+ import { ArgumentOutOfRangeException } from "@noldova/context.exceptions";
10
+ import { Resources } from "../../resources.js";
11
+ export class SourcePosition {
12
+ lineIndex;
13
+ characterIndex;
14
+ constructor(lineIndex, characterIndex) {
15
+ if (!Number.isSafeInteger(lineIndex) || lineIndex < 0)
16
+ throw new ArgumentOutOfRangeException(nameof(t => t.lineIndex), lineIndex, Resources.lineIndexInvalid);
17
+ if (!Number.isSafeInteger(characterIndex) || characterIndex < 0)
18
+ throw new ArgumentOutOfRangeException(nameof(t => t.characterIndex), characterIndex, Resources.characterIndexInvalid);
19
+ this.lineIndex = lineIndex;
20
+ this.characterIndex = characterIndex;
21
+ }
22
+ }
23
+ //# sourceMappingURL=source-position.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-position.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers/src/models/sources/source-position.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,OAAO,cAAc;IACT,SAAS,CAAS;IAClB,cAAc,CAAS;IAEvC,YAAmB,SAAiB,EAAE,cAAsB;QAC1D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC;YACnD,MAAM,IAAI,2BAA2B,CAAC,MAAM,CAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAEzH,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,CAAC;YAC7D,MAAM,IAAI,2BAA2B,CAAC,MAAM,CAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,cAAc,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAExI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;CACF"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ export class SourceSpan {
9
+ startOffset;
10
+ length;
11
+ endOffset;
12
+ isEmpty;
13
+ constructor(startOffset, length) {
14
+ this.startOffset = startOffset;
15
+ this.length = length;
16
+ this.endOffset = startOffset + length;
17
+ this.isEmpty = length === 0;
18
+ }
19
+ }
20
+ //# sourceMappingURL=source-span.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-span.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers/src/models/sources/source-span.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,OAAO,UAAU;IACL,WAAW,CAAS;IACpB,MAAM,CAAS;IACf,SAAS,CAAS;IAClB,OAAO,CAAU;IAEjC,YAAmB,WAAmB,EAAE,MAAc;QACpD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,KAAK,CAAC,CAAC;IAC9B,CAAC;CACF"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { nameof } from "@noldova/context.core";
9
+ import { ArgumentException } from "@noldova/context.exceptions";
10
+ import { ReadOnlyStringSpan } from "@noldova/context.text";
11
+ import { InvalidSpanException } from "../../exceptions/invalid-span.exception.js";
12
+ export class Source {
13
+ content;
14
+ identity;
15
+ length;
16
+ constructor(content, identity) {
17
+ if (!Object.isUndefined(identity))
18
+ ArgumentException.throwIfNullOrWhitespace(identity, nameof(t => t.identity));
19
+ this.content = content;
20
+ this.identity = identity;
21
+ this.length = this.content.length;
22
+ }
23
+ getSpan(startOrSpan, length = 0) {
24
+ if (!Object.isNumber(startOrSpan))
25
+ return this.getSpan(startOrSpan.startOffset, startOrSpan.length);
26
+ InvalidSpanException.throwIfInvalid(startOrSpan, length, this.length);
27
+ return new ReadOnlyStringSpan(this.content, startOrSpan, length);
28
+ }
29
+ getText(startOrSpan, length = 0) {
30
+ if (!Object.isNumber(startOrSpan))
31
+ return this.getText(startOrSpan.startOffset, startOrSpan.length);
32
+ InvalidSpanException.throwIfInvalid(startOrSpan, length, this.length);
33
+ return this.content.slice(startOrSpan, startOrSpan + length);
34
+ }
35
+ }
36
+ //# sourceMappingURL=source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers/src/models/sources/source.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAGlF,MAAM,OAAO,MAAM;IACD,OAAO,CAAS;IAChB,QAAQ,CAAqB;IAC7B,MAAM,CAAS;IAE/B,YAAmB,OAAe,EAAE,QAAiB;QACnD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;YAC/B,iBAAiB,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEvF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACpC,CAAC;IAIM,OAAO,CAAC,WAAgC,EAAE,MAAM,GAAW,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAEnE,oBAAoB,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACtE,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IACnE,CAAC;IAIM,OAAO,CAAC,WAAgC,EAAE,MAAM,GAAW,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAEnE,oBAAoB,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAAC,CAAC;IAC/D,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,28 @@
1
1
  {
2
2
  "name": "@noldova/context.parsers",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.0.2",
4
+ "type": "module",
5
+ "main": "api/index.js",
6
+ "types": "api/index.d.ts",
7
+ "license": "MIT",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/noldova-com/context.git",
11
+ "directory": "src/parsers/noldova.context.parsers"
12
+ },
13
+ "homepage": "https://github.com/noldova-com/context#readme",
14
+ "bugs": {
15
+ "url": "https://github.com/noldova-com/context/issues"
16
+ },
17
+ "publishConfig": {
18
+ "access": "public",
19
+ "registry": "https://registry.npmjs.org/"
20
+ },
21
+ "dependencies": {
22
+ "@noldova/context.collections": "0.0.2",
23
+ "@noldova/context.core": "0.0.2",
24
+ "@noldova/context.diagnostics": "0.0.2",
25
+ "@noldova/context.exceptions": "0.0.2",
26
+ "@noldova/context.text": "0.0.2"
27
+ }
28
+ }