@sciencestack-ai/tokens 0.1.2 → 0.1.3

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 (59) hide show
  1. package/dist/base/AbstractTokenNode.js +2 -2
  2. package/dist/base/BaseTableFigureTokenNode.js +3 -3
  3. package/dist/base/BaseTokenNode.js +2 -2
  4. package/dist/base/TokenNodeFactory.js +2 -2
  5. package/dist/content/CaptionTokenNode.js +3 -3
  6. package/dist/content/QuoteTokenNode.js +1 -1
  7. package/dist/content/TextTokenNode.js +3 -3
  8. package/dist/document/AbstractSectionTokenNode.js +1 -1
  9. package/dist/document/AppendixTokenNode.js +1 -1
  10. package/dist/document/BaseEnvTokenNode.js +3 -3
  11. package/dist/document/DocumentTokenNode.js +1 -1
  12. package/dist/document/EnvironmentTokenNode.js +1 -1
  13. package/dist/document/GroupTokenNode.js +1 -1
  14. package/dist/document/MathEnvTokenNode.js +4 -4
  15. package/dist/document/SectionTokenNode.js +4 -4
  16. package/dist/document/TitleTokenNode.js +1 -1
  17. package/dist/figures/DiagramTokenNode.js +2 -2
  18. package/dist/figures/FigureTokenNode.js +1 -1
  19. package/dist/figures/IncludeGraphicsTokenNode.js +2 -2
  20. package/dist/figures/IncludePdfTokenNode.js +2 -2
  21. package/dist/figures/SubFigureTokenNode.js +1 -1
  22. package/dist/index.js +46 -46
  23. package/dist/lists/ListItemTokenNode.js +5 -5
  24. package/dist/lists/ListTokenNode.js +2 -2
  25. package/dist/metadata/AuthorTokenNode.js +2 -2
  26. package/dist/metadata/MetadataTokenNode.js +1 -1
  27. package/dist/references/BibitemTokenNode.js +5 -5
  28. package/dist/references/CitationTokenNode.js +2 -2
  29. package/dist/references/FootnoteTokenNode.js +2 -2
  30. package/dist/references/ReferenceTokenNode.js +2 -2
  31. package/dist/references/UrlTokenNode.js +1 -1
  32. package/dist/styles.js +1 -1
  33. package/dist/tables/SubTableTokenNode.js +1 -1
  34. package/dist/tables/TableTokenNode.js +1 -1
  35. package/dist/tables/TabularTokenNode.js +1 -1
  36. package/dist/technical/AlgorithmTokenNode.js +1 -1
  37. package/dist/technical/CodeTokenNode.js +2 -2
  38. package/dist/technical/CommandTokenNode.js +1 -1
  39. package/dist/technical/EquationArrayTokenNode.js +3 -3
  40. package/dist/technical/EquationTokenNode.js +2 -2
  41. package/dist/tokenProcessing.js +1 -1
  42. package/dist/utils.js +2 -2
  43. package/package.json +5 -2
  44. package/dist/graph/graphTypes.d.ts +0 -42
  45. package/dist/graph/graphTypes.d.ts.map +0 -1
  46. package/dist/graph/graphTypes.js +0 -75
  47. package/dist/graph/graphTypes.js.map +0 -1
  48. package/dist/graph/index.d.ts +0 -4
  49. package/dist/graph/index.d.ts.map +0 -1
  50. package/dist/graph/index.js +0 -3
  51. package/dist/graph/index.js.map +0 -1
  52. package/dist/graph/mathColors.d.ts +0 -11
  53. package/dist/graph/mathColors.d.ts.map +0 -1
  54. package/dist/graph/mathColors.js +0 -20
  55. package/dist/graph/mathColors.js.map +0 -1
  56. package/dist/graph/mathDepGraph.d.ts +0 -4
  57. package/dist/graph/mathDepGraph.d.ts.map +0 -1
  58. package/dist/graph/mathDepGraph.js +0 -320
  59. package/dist/graph/mathDepGraph.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import { IsInlineToken } from '../styles';
2
- import { NodeRoles } from './NodeRoles';
1
+ import { IsInlineToken } from '../styles.js';
2
+ import { NodeRoles } from './NodeRoles.js';
3
3
  import { nanoid } from 'nanoid';
4
4
  export class AbstractTokenNode {
5
5
  _id;
@@ -1,6 +1,6 @@
1
- import { BaseTokenNode } from './BaseTokenNode';
2
- import { convertTokens2String } from '../utils';
3
- import { CaptionTokenNode } from '../content/CaptionTokenNode';
1
+ import { BaseTokenNode } from './BaseTokenNode.js';
2
+ import { convertTokens2String } from '../utils.js';
3
+ import { CaptionTokenNode } from '../content/CaptionTokenNode.js';
4
4
  export class BaseTableFigureTokenNode extends BaseTokenNode {
5
5
  tokenFactory;
6
6
  _captionToken;
@@ -1,5 +1,5 @@
1
- import { AbstractTokenNode } from './AbstractTokenNode';
2
- import { NodeRoles } from './NodeRoles';
1
+ import { AbstractTokenNode } from './AbstractTokenNode.js';
2
+ import { NodeRoles } from './NodeRoles.js';
3
3
  export class BaseTokenNode extends AbstractTokenNode {
4
4
  tokenFactory;
5
5
  constructor(token, id, tokenFactory) {
@@ -1,5 +1,5 @@
1
- import { TokenType, METADATA_TOKEN_TYPES } from '../types';
2
- import { SectionTokenNode, DocumentTokenNode, EquationTokenNode, CodeTokenNode, AlgorithmTokenNode, AlgorithmicTokenNode, TextTokenNode, QuoteTokenNode, CitationTokenNode, ReferenceTokenNode, UrlTokenNode, ListTokenNode, ListItemTokenNode, TableTokenNode, SubTableTokenNode, TabularTokenNode, CaptionTokenNode, GroupTokenNode, FootnoteTokenNode, FigureTokenNode, SubFigureTokenNode, IncludeGraphicsTokenNode, IncludePdfTokenNode, DiagramTokenNode, MathEnvTokenNode, EnvironmentTokenNode, AppendixTokenNode, CommandTokenNode, MetadataTokenNode, AbstractSectionTokenNode, TitleTokenNode, BibitemTokenNode, EquationArrayTokenNode, AuthorTokenNode } from '..';
1
+ import { TokenType, METADATA_TOKEN_TYPES } from '../types.js';
2
+ import { SectionTokenNode, DocumentTokenNode, EquationTokenNode, CodeTokenNode, AlgorithmTokenNode, AlgorithmicTokenNode, TextTokenNode, QuoteTokenNode, CitationTokenNode, ReferenceTokenNode, UrlTokenNode, ListTokenNode, ListItemTokenNode, TableTokenNode, SubTableTokenNode, TabularTokenNode, CaptionTokenNode, GroupTokenNode, FootnoteTokenNode, FigureTokenNode, SubFigureTokenNode, IncludeGraphicsTokenNode, IncludePdfTokenNode, DiagramTokenNode, MathEnvTokenNode, EnvironmentTokenNode, AppendixTokenNode, CommandTokenNode, MetadataTokenNode, AbstractSectionTokenNode, TitleTokenNode, BibitemTokenNode, EquationArrayTokenNode, AuthorTokenNode } from '...js';
3
3
  // Define metadata token types array
4
4
  export class TokenNodeFactory {
5
5
  _excludedTokenTypes = [];
@@ -1,6 +1,6 @@
1
- import { TokenType } from '../types';
2
- import { BaseTokenNode } from '../base/BaseTokenNode';
3
- import { BaseTableFigureTokenNode } from '../base/BaseTableFigureTokenNode';
1
+ import { TokenType } from '../types.js';
2
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
3
+ import { BaseTableFigureTokenNode } from '../base/BaseTableFigureTokenNode.js';
4
4
  export class CaptionTokenNode extends BaseTokenNode {
5
5
  tokenFactory;
6
6
  constructor(token, id, tokenFactory) {
@@ -1,4 +1,4 @@
1
- import { BaseTokenNode } from '../base/BaseTokenNode';
1
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
2
2
  export class QuoteTokenNode extends BaseTokenNode {
3
3
  tokenFactory;
4
4
  constructor(token, id, tokenFactory) {
@@ -1,6 +1,6 @@
1
- import { BaseTokenNode } from '../base/BaseTokenNode';
2
- import { escapeLatexSpecialChars } from '../utils';
3
- import { wrapStylesToLatex, wrapStylesToMarkdown } from '../styles';
1
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
2
+ import { escapeLatexSpecialChars } from '../utils.js';
3
+ import { wrapStylesToLatex, wrapStylesToMarkdown } from '../styles.js';
4
4
  export class TextTokenNode extends BaseTokenNode {
5
5
  tokenFactory;
6
6
  constructor(token, id, tokenFactory) {
@@ -1,4 +1,4 @@
1
- import { BaseEnvTokenNode } from './BaseEnvTokenNode';
1
+ import { BaseEnvTokenNode } from './BaseEnvTokenNode.js';
2
2
  export class AbstractSectionTokenNode extends BaseEnvTokenNode {
3
3
  tokenFactory;
4
4
  constructor(token, id, tokenFactory) {
@@ -1,4 +1,4 @@
1
- import { BaseTokenNode } from '../base/BaseTokenNode';
1
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
2
2
  export class AppendixTokenNode extends BaseTokenNode {
3
3
  tokenFactory;
4
4
  constructor(token, id, tokenFactory) {
@@ -1,6 +1,6 @@
1
- import { BaseTokenNode } from '../base/BaseTokenNode';
2
- import { convertTokens2String } from '../utils';
3
- import { NodeRoles } from '../base/NodeRoles';
1
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
2
+ import { convertTokens2String } from '../utils.js';
3
+ import { NodeRoles } from '../base/NodeRoles.js';
4
4
  export class BaseEnvTokenNode extends BaseTokenNode {
5
5
  tokenFactory;
6
6
  constructor(token, id, tokenFactory) {
@@ -1,4 +1,4 @@
1
- import { BaseTokenNode } from '../base/BaseTokenNode';
1
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
2
2
  export class DocumentTokenNode extends BaseTokenNode {
3
3
  tokenFactory;
4
4
  constructor(token, id, tokenFactory) {
@@ -1,4 +1,4 @@
1
- import { BaseTokenNode } from '../base/BaseTokenNode';
1
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
2
2
  export class EnvironmentTokenNode extends BaseTokenNode {
3
3
  tokenFactory;
4
4
  constructor(token, id, tokenFactory) {
@@ -1,4 +1,4 @@
1
- import { BaseTokenNode } from '../base/BaseTokenNode';
1
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
2
2
  export class GroupTokenNode extends BaseTokenNode {
3
3
  tokenFactory;
4
4
  constructor(token, id, tokenFactory) {
@@ -1,7 +1,7 @@
1
- import { TokenType } from "../types";
2
- import { BaseEnvTokenNode } from "./BaseEnvTokenNode";
3
- import { BaseTokenNode } from "../base/BaseTokenNode";
4
- import { AbstractTokenNode } from "../base/AbstractTokenNode";
1
+ import { TokenType } from '../types.js';
2
+ import { BaseEnvTokenNode } from './BaseEnvTokenNode.js';
3
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
4
+ import { AbstractTokenNode } from '../base/AbstractTokenNode.js';
5
5
  export class MathEnvTokenNode extends BaseEnvTokenNode {
6
6
  tokenFactory;
7
7
  _cachedTooltipContent = null;
@@ -1,7 +1,7 @@
1
- import { SECTION_LEVELS } from '../types';
2
- import { BaseEnvTokenNode } from './BaseEnvTokenNode';
3
- import { BaseTokenNode } from '../base/BaseTokenNode';
4
- import { AbstractTokenNode } from '../base/AbstractTokenNode';
1
+ import { SECTION_LEVELS } from '../types.js';
2
+ import { BaseEnvTokenNode } from './BaseEnvTokenNode.js';
3
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
4
+ import { AbstractTokenNode } from '../base/AbstractTokenNode.js';
5
5
  export class SectionTokenNode extends BaseEnvTokenNode {
6
6
  tokenFactory;
7
7
  constructor(token, id, tokenFactory) {
@@ -1,4 +1,4 @@
1
- import { BaseTokenNode } from '../base/BaseTokenNode';
1
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
2
2
  export class TitleTokenNode extends BaseTokenNode {
3
3
  tokenFactory;
4
4
  constructor(token, id, tokenFactory) {
@@ -1,5 +1,5 @@
1
- import { BaseTokenNode } from '../base/BaseTokenNode';
2
- import { getAssetRelativePath } from '../export_types';
1
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
2
+ import { getAssetRelativePath } from '../export_types.js';
3
3
  export class DiagramTokenNode extends BaseTokenNode {
4
4
  tokenFactory;
5
5
  constructor(token, id, tokenFactory) {
@@ -1,4 +1,4 @@
1
- import { BaseTableFigureTokenNode } from '../base/BaseTableFigureTokenNode';
1
+ import { BaseTableFigureTokenNode } from '../base/BaseTableFigureTokenNode.js';
2
2
  export class FigureTokenNode extends BaseTableFigureTokenNode {
3
3
  tokenFactory;
4
4
  constructor(token, id, tokenFactory) {
@@ -1,5 +1,5 @@
1
- import { BaseTokenNode } from '../base/BaseTokenNode';
2
- import { getAssetRelativePath } from '../export_types';
1
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
2
+ import { getAssetRelativePath } from '../export_types.js';
3
3
  export class IncludeGraphicsTokenNode extends BaseTokenNode {
4
4
  tokenFactory;
5
5
  constructor(token, id, tokenFactory) {
@@ -1,5 +1,5 @@
1
- import { BaseTokenNode } from '../base/BaseTokenNode';
2
- import { getAssetRelativePath } from '../export_types';
1
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
2
+ import { getAssetRelativePath } from '../export_types.js';
3
3
  export class IncludePdfTokenNode extends BaseTokenNode {
4
4
  tokenFactory;
5
5
  constructor(token, id, tokenFactory) {
@@ -1,4 +1,4 @@
1
- import { BaseTableFigureTokenNode } from '../base/BaseTableFigureTokenNode';
1
+ import { BaseTableFigureTokenNode } from '../base/BaseTableFigureTokenNode.js';
2
2
  export class SubFigureTokenNode extends BaseTableFigureTokenNode {
3
3
  tokenFactory;
4
4
  constructor(token, id, tokenFactory) {
package/dist/index.js CHANGED
@@ -1,61 +1,61 @@
1
1
  // Export all types
2
- export * from "./types";
3
- export * from "./export_types";
4
- export * from "./styles";
5
- export * from "./utils";
2
+ export * from './types.js';
3
+ export * from './export_types.js';
4
+ export * from './styles.js';
5
+ export * from './utils.js';
6
6
  // Export utilities
7
- export * from "./utils/arxiv";
8
- export * from "./utils/citationConverters";
9
- export { TokenNodeFactory } from "./base/TokenNodeFactory";
7
+ export * from './utils/arxiv.js';
8
+ export * from './utils/citationConverters.js';
9
+ export { TokenNodeFactory } from './base/TokenNodeFactory.js';
10
10
  // Noderoles
11
- export { NodeRoles } from "./base/NodeRoles";
11
+ export { NodeRoles } from './base/NodeRoles.js';
12
12
  // Base tokens
13
- export { AbstractTokenNode } from "./base/AbstractTokenNode";
14
- export { BaseTokenNode } from "./base/BaseTokenNode";
15
- export { BaseTableFigureTokenNode } from "./base/BaseTableFigureTokenNode";
13
+ export { AbstractTokenNode } from './base/AbstractTokenNode.js';
14
+ export { BaseTokenNode } from './base/BaseTokenNode.js';
15
+ export { BaseTableFigureTokenNode } from './base/BaseTableFigureTokenNode.js';
16
16
  // Document tokens
17
- export { DocumentTokenNode } from "./document/DocumentTokenNode";
18
- export { TitleTokenNode } from "./document/TitleTokenNode";
19
- export { AbstractSectionTokenNode } from "./document/AbstractSectionTokenNode";
20
- export { SectionTokenNode } from "./document/SectionTokenNode";
21
- export { GroupTokenNode } from "./document/GroupTokenNode";
22
- export { MathEnvTokenNode } from "./document/MathEnvTokenNode";
23
- export { EnvironmentTokenNode } from "./document/EnvironmentTokenNode";
24
- export { AppendixTokenNode } from "./document/AppendixTokenNode";
25
- export { BaseEnvTokenNode } from "./document/BaseEnvTokenNode";
17
+ export { DocumentTokenNode } from './document/DocumentTokenNode.js';
18
+ export { TitleTokenNode } from './document/TitleTokenNode.js';
19
+ export { AbstractSectionTokenNode } from './document/AbstractSectionTokenNode.js';
20
+ export { SectionTokenNode } from './document/SectionTokenNode.js';
21
+ export { GroupTokenNode } from './document/GroupTokenNode.js';
22
+ export { MathEnvTokenNode } from './document/MathEnvTokenNode.js';
23
+ export { EnvironmentTokenNode } from './document/EnvironmentTokenNode.js';
24
+ export { AppendixTokenNode } from './document/AppendixTokenNode.js';
25
+ export { BaseEnvTokenNode } from './document/BaseEnvTokenNode.js';
26
26
  // Technical tokens
27
- export { EquationTokenNode } from "./technical/EquationTokenNode";
28
- export { EquationArrayTokenNode, EqArrayRowNode, } from "./technical/EquationArrayTokenNode";
29
- export { CodeTokenNode } from "./technical/CodeTokenNode";
30
- export { AlgorithmTokenNode, AlgorithmicTokenNode, } from "./technical/AlgorithmTokenNode";
31
- export { CommandTokenNode } from "./technical/CommandTokenNode";
27
+ export { EquationTokenNode } from './technical/EquationTokenNode.js';
28
+ export { EquationArrayTokenNode, EqArrayRowNode, } from './technical/EquationArrayTokenNode.js';
29
+ export { CodeTokenNode } from './technical/CodeTokenNode.js';
30
+ export { AlgorithmTokenNode, AlgorithmicTokenNode, } from './technical/AlgorithmTokenNode.js';
31
+ export { CommandTokenNode } from './technical/CommandTokenNode.js';
32
32
  // Content tokens
33
- export { TextTokenNode } from "./content/TextTokenNode";
34
- export { QuoteTokenNode } from "./content/QuoteTokenNode";
35
- export { CaptionTokenNode } from "./content/CaptionTokenNode";
33
+ export { TextTokenNode } from './content/TextTokenNode.js';
34
+ export { QuoteTokenNode } from './content/QuoteTokenNode.js';
35
+ export { CaptionTokenNode } from './content/CaptionTokenNode.js';
36
36
  // References tokens
37
- export { CitationTokenNode } from "./references/CitationTokenNode";
38
- export { ReferenceTokenNode } from "./references/ReferenceTokenNode";
39
- export { FootnoteTokenNode } from "./references/FootnoteTokenNode";
40
- export { UrlTokenNode } from "./references/UrlTokenNode";
37
+ export { CitationTokenNode } from './references/CitationTokenNode.js';
38
+ export { ReferenceTokenNode } from './references/ReferenceTokenNode.js';
39
+ export { FootnoteTokenNode } from './references/FootnoteTokenNode.js';
40
+ export { UrlTokenNode } from './references/UrlTokenNode.js';
41
41
  // Lists tokens
42
- export { ListTokenNode } from "./lists/ListTokenNode";
43
- export { ListItemTokenNode } from "./lists/ListItemTokenNode";
42
+ export { ListTokenNode } from './lists/ListTokenNode.js';
43
+ export { ListItemTokenNode } from './lists/ListItemTokenNode.js';
44
44
  // Tables tokens
45
- export { TableTokenNode } from "./tables/TableTokenNode";
46
- export { SubTableTokenNode } from "./tables/SubTableTokenNode";
47
- export { TabularTokenNode } from "./tables/TabularTokenNode";
45
+ export { TableTokenNode } from './tables/TableTokenNode.js';
46
+ export { SubTableTokenNode } from './tables/SubTableTokenNode.js';
47
+ export { TabularTokenNode } from './tables/TabularTokenNode.js';
48
48
  // Figures tokens
49
- export { FigureTokenNode } from "./figures/FigureTokenNode";
50
- export { SubFigureTokenNode } from "./figures/SubFigureTokenNode";
51
- export { IncludeGraphicsTokenNode } from "./figures/IncludeGraphicsTokenNode";
52
- export { IncludePdfTokenNode } from "./figures/IncludePdfTokenNode";
53
- export { DiagramTokenNode } from "./figures/DiagramTokenNode";
49
+ export { FigureTokenNode } from './figures/FigureTokenNode.js';
50
+ export { SubFigureTokenNode } from './figures/SubFigureTokenNode.js';
51
+ export { IncludeGraphicsTokenNode } from './figures/IncludeGraphicsTokenNode.js';
52
+ export { IncludePdfTokenNode } from './figures/IncludePdfTokenNode.js';
53
+ export { DiagramTokenNode } from './figures/DiagramTokenNode.js';
54
54
  // metadata tokens
55
- export { MetadataTokenNode } from "./metadata/MetadataTokenNode";
56
- export { AuthorTokenNode } from "./metadata/AuthorTokenNode";
55
+ export { MetadataTokenNode } from './metadata/MetadataTokenNode.js';
56
+ export { AuthorTokenNode } from './metadata/AuthorTokenNode.js';
57
57
  // bibliography tokens
58
- export { BibitemTokenNode } from "./references/BibitemTokenNode";
58
+ export { BibitemTokenNode } from './references/BibitemTokenNode.js';
59
59
  // Token processing
60
- export { processTokenNodes } from "./tokenProcessing";
60
+ export { processTokenNodes } from './tokenProcessing.js';
61
61
  //# sourceMappingURL=index.js.map
@@ -1,8 +1,8 @@
1
- import { ListType } from '../types';
2
- import { BaseTokenNode } from '../base/BaseTokenNode';
3
- import { BaseEnvTokenNode } from '../document/BaseEnvTokenNode';
4
- import { ListTokenNode } from './ListTokenNode';
5
- import { AbstractTokenNode } from '../base/AbstractTokenNode';
1
+ import { ListType } from '../types.js';
2
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
3
+ import { BaseEnvTokenNode } from '../document/BaseEnvTokenNode.js';
4
+ import { ListTokenNode } from './ListTokenNode.js';
5
+ import { AbstractTokenNode } from '../base/AbstractTokenNode.js';
6
6
  const convertNumberToChar = (index) => {
7
7
  return String.fromCharCode(97 + index); // a, b, c, ...
8
8
  };
@@ -1,5 +1,5 @@
1
- import { BaseTokenNode } from '../base/BaseTokenNode';
2
- import { ListItemTokenNode } from './ListItemTokenNode';
1
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
2
+ import { ListItemTokenNode } from './ListItemTokenNode.js';
3
3
  export class ListTokenNode extends BaseTokenNode {
4
4
  tokenFactory;
5
5
  constructor(token, id, tokenFactory) {
@@ -1,5 +1,5 @@
1
- import { MetadataTokenNode } from './MetadataTokenNode';
2
- import { CommandTokenNode } from '../technical/CommandTokenNode';
1
+ import { MetadataTokenNode } from './MetadataTokenNode.js';
2
+ import { CommandTokenNode } from '../technical/CommandTokenNode.js';
3
3
  export class AuthorTokenNode extends MetadataTokenNode {
4
4
  tokenFactory;
5
5
  constructor(token, id, tokenFactory) {
@@ -1,4 +1,4 @@
1
- import { BaseTokenNode } from '../base/BaseTokenNode';
1
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
2
2
  export class MetadataTokenNode extends BaseTokenNode {
3
3
  tokenFactory;
4
4
  constructor(token, id, tokenFactory) {
@@ -1,8 +1,8 @@
1
- import { BibFormat } from '../types';
2
- import { AbstractTokenNode } from '../base/AbstractTokenNode';
3
- import { convertTokens2String } from '../utils';
4
- import { CitationStyle, formatCitation, replaceBibtexKey } from '../utils/citationConverters';
5
- import { extractArxivIdFromBibtexFields, extractArxivId } from '../utils/arxiv';
1
+ import { BibFormat } from '../types.js';
2
+ import { AbstractTokenNode } from '../base/AbstractTokenNode.js';
3
+ import { convertTokens2String } from '../utils.js';
4
+ import { CitationStyle, formatCitation, replaceBibtexKey } from '../utils/citationConverters.js';
5
+ import { extractArxivIdFromBibtexFields, extractArxivId } from '../utils/arxiv.js';
6
6
  export class BibitemTokenNode extends AbstractTokenNode {
7
7
  tokenFactory;
8
8
  _cachedContent = null;
@@ -1,5 +1,5 @@
1
- import { AbstractTokenNode } from '../base/AbstractTokenNode';
2
- import { convertTokens2String } from '../utils';
1
+ import { AbstractTokenNode } from '../base/AbstractTokenNode.js';
2
+ import { convertTokens2String } from '../utils.js';
3
3
  export class CitationTokenNode extends AbstractTokenNode {
4
4
  tokenFactory;
5
5
  constructor(token, id, tokenFactory) {
@@ -1,5 +1,5 @@
1
- import { BaseTokenNode } from '../base/BaseTokenNode';
2
- import { convertTokens2String } from '../utils';
1
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
2
+ import { convertTokens2String } from '../utils.js';
3
3
  export class FootnoteTokenNode extends BaseTokenNode {
4
4
  tokenFactory;
5
5
  constructor(token, id, tokenFactory) {
@@ -1,5 +1,5 @@
1
- import { AbstractTokenNode } from "../base/AbstractTokenNode";
2
- import { convertTokens2String } from "../utils";
1
+ import { AbstractTokenNode } from '../base/AbstractTokenNode.js';
2
+ import { convertTokens2String } from '../utils.js';
3
3
  export class ReferenceTokenNode extends AbstractTokenNode {
4
4
  tokenFactory;
5
5
  constructor(token, id, tokenFactory) {
@@ -1,4 +1,4 @@
1
- import { BaseTokenNode } from '../base/BaseTokenNode';
1
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
2
2
  export class UrlTokenNode extends BaseTokenNode {
3
3
  tokenFactory;
4
4
  constructor(token, id, tokenFactory) {
package/dist/styles.js CHANGED
@@ -1,4 +1,4 @@
1
- import { TokenType, DisplayType } from './types';
1
+ import { TokenType, DisplayType } from './types.js';
2
2
  export const INLINE_TOKEN_TYPES = [
3
3
  TokenType.TEXT,
4
4
  TokenType.CITATION,
@@ -1,4 +1,4 @@
1
- import { BaseTableFigureTokenNode } from '../base/BaseTableFigureTokenNode';
1
+ import { BaseTableFigureTokenNode } from '../base/BaseTableFigureTokenNode.js';
2
2
  export class SubTableTokenNode extends BaseTableFigureTokenNode {
3
3
  tokenFactory;
4
4
  constructor(token, id, tokenFactory) {
@@ -1,4 +1,4 @@
1
- import { BaseTableFigureTokenNode } from '../base/BaseTableFigureTokenNode';
1
+ import { BaseTableFigureTokenNode } from '../base/BaseTableFigureTokenNode.js';
2
2
  export class TableTokenNode extends BaseTableFigureTokenNode {
3
3
  tokenFactory;
4
4
  constructor(token, id, tokenFactory) {
@@ -1,4 +1,4 @@
1
- import { AbstractTokenNode, BaseTokenNode } from '../';
1
+ import { AbstractTokenNode, BaseTokenNode } from '../.js';
2
2
  const createFixedArray = (length) => new Array(length).fill(false);
3
3
  export class TabularTokenNode extends AbstractTokenNode {
4
4
  tokenFactory;
@@ -1,4 +1,4 @@
1
- import { BaseTokenNode } from '../base/BaseTokenNode';
1
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
2
2
  export class AlgorithmTokenNode extends BaseTokenNode {
3
3
  tokenFactory;
4
4
  constructor(token, id, tokenFactory) {
@@ -1,5 +1,5 @@
1
- import { DisplayType } from '../types';
2
- import { BaseTokenNode } from '../base/BaseTokenNode';
1
+ import { DisplayType } from '../types.js';
2
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
3
3
  export class CodeTokenNode extends BaseTokenNode {
4
4
  tokenFactory;
5
5
  constructor(token, id, tokenFactory) {
@@ -1,4 +1,4 @@
1
- import { BaseTokenNode } from '../base/BaseTokenNode';
1
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
2
2
  export class CommandTokenNode extends BaseTokenNode {
3
3
  tokenFactory;
4
4
  constructor(token, id, tokenFactory) {
@@ -1,6 +1,6 @@
1
- import { AbstractTokenNode } from "../base/AbstractTokenNode";
2
- import { TextTokenNode } from "../content/TextTokenNode";
3
- import { EquationTokenNode } from "./EquationTokenNode";
1
+ import { AbstractTokenNode } from '../base/AbstractTokenNode.js';
2
+ import { TextTokenNode } from '../content/TextTokenNode.js';
3
+ import { EquationTokenNode } from './EquationTokenNode.js';
4
4
  export class EquationArrayTokenNode extends AbstractTokenNode {
5
5
  tokenFactory;
6
6
  constructor(token, id, tokenFactory) {
@@ -1,5 +1,5 @@
1
- import { DisplayType } from "../types";
2
- import { BaseTokenNode } from "../base/BaseTokenNode";
1
+ import { DisplayType } from '../types.js';
2
+ import { BaseTokenNode } from '../base/BaseTokenNode.js';
3
3
  export class EquationTokenNode extends BaseTokenNode {
4
4
  tokenFactory;
5
5
  constructor(token, id, tokenFactory) {
@@ -1,4 +1,4 @@
1
- import { TokenNodeFactory } from "./base/TokenNodeFactory";
1
+ import { TokenNodeFactory } from './base/TokenNodeFactory.js';
2
2
  export function processTokenNodes(tokens, excludedTokenTypes) {
3
3
  if (!tokens)
4
4
  return [];
package/dist/utils.js CHANGED
@@ -1,5 +1,5 @@
1
- import { DisplayType, TokenType } from './types';
2
- import { IsInlineToken } from './styles';
1
+ import { DisplayType, TokenType } from './types.js';
2
+ import { IsInlineToken } from './styles.js';
3
3
  export function convertTokens2String(tokens) {
4
4
  let outStr = '';
5
5
  for (let t of tokens) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sciencestack-ai/tokens",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "TypeScript types and interfaces for ScienceStack AST tokens",
5
5
  "repository": {
6
6
  "type": "git",
@@ -10,7 +10,7 @@
10
10
  "types": "dist/index.d.ts",
11
11
  "type": "module",
12
12
  "scripts": {
13
- "build": "tsc",
13
+ "build": "tsc && node scripts/fix-imports.js",
14
14
  "dev": "tsc --watch",
15
15
  "test": "vitest run",
16
16
  "test:watch": "vitest",
@@ -33,6 +33,9 @@
33
33
  ],
34
34
  "devDependencies": {
35
35
  "@vitest/coverage-v8": "^2.1.8",
36
+ "glob": "^13.0.0",
37
+ "tsc-alias": "^1.8.16",
38
+ "tsup": "^8.5.1",
36
39
  "typescript": "^5.5.2",
37
40
  "vitest": "^2.1.8"
38
41
  },
@@ -1,42 +0,0 @@
1
- import { AbstractTokenNode } from '../';
2
- export declare enum GraphNodeType {
3
- mathEnv = "mathEnv",// e.g. theorem/lemma/definition/etc
4
- proof = "proof"
5
- }
6
- export declare class GraphNode {
7
- node: AbstractTokenNode;
8
- type: GraphNodeType;
9
- label: string;
10
- parentNode?: GraphNode;
11
- constructor(node: AbstractTokenNode, type: GraphNodeType, label: string);
12
- get id(): string;
13
- }
14
- export declare class GraphEdge {
15
- source: GraphNode;
16
- target: GraphNode;
17
- label?: string;
18
- partial?: boolean;
19
- constructor(source: GraphNode, target: GraphNode, label?: string, partial?: boolean);
20
- }
21
- export interface GraphData {
22
- nodes: GraphNode[];
23
- edges: GraphEdge[];
24
- }
25
- type NodeJson = {
26
- id: string;
27
- type: string;
28
- numbering: string;
29
- title?: string;
30
- };
31
- type EdgeJson = {
32
- from: string;
33
- to: string;
34
- type: string;
35
- indirect?: boolean;
36
- };
37
- export declare function graphdataToJSONForLLM(graphData: GraphData): {
38
- nodes: NodeJson[];
39
- edges: EdgeJson[];
40
- };
41
- export {};
42
- //# sourceMappingURL=graphTypes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graphTypes.d.ts","sourceRoot":"","sources":["../../src/graph/graphTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAoB,MAAM,KAAK,CAAC;AAE1D,oBAAY,aAAa;IACvB,OAAO,YAAY,CAAE,oCAAoC;IACzD,KAAK,UAAU;CAChB;AAED,qBAAa,SAAS;IACb,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,SAAS,CAAC;gBAElB,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM;IAMvE,IAAI,EAAE,IAAI,MAAM,CAEf;CACF;AAED,qBAAa,SAAS;IACb,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;gBAEb,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAMpF;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,KAAK,QAAQ,GAAG;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,QAAQ,GAAG;IACd,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,SAAS;;;EA2CzD"}
@@ -1,75 +0,0 @@
1
- import { MathEnvTokenNode } from '../';
2
- export var GraphNodeType;
3
- (function (GraphNodeType) {
4
- GraphNodeType["mathEnv"] = "mathEnv";
5
- GraphNodeType["proof"] = "proof";
6
- })(GraphNodeType || (GraphNodeType = {}));
7
- export class GraphNode {
8
- node;
9
- type;
10
- label;
11
- parentNode; // For proof nodes attached to theorem nodes
12
- constructor(node, type, label) {
13
- this.node = node;
14
- this.type = type;
15
- this.label = label;
16
- }
17
- get id() {
18
- return this.node.id;
19
- }
20
- }
21
- export class GraphEdge {
22
- source;
23
- target;
24
- label;
25
- partial;
26
- constructor(source, target, label, partial) {
27
- this.source = source;
28
- this.target = target;
29
- this.label = label;
30
- this.partial = partial;
31
- }
32
- }
33
- export function graphdataToJSONForLLM(graphData) {
34
- const nodes = [];
35
- const edges = [];
36
- const convertNodeToStr = (node) => {
37
- if (node instanceof MathEnvTokenNode) {
38
- const name = node.name.toLowerCase();
39
- const nodeId = name + ' ' + node.numbering;
40
- return nodeId;
41
- }
42
- return node.id;
43
- };
44
- for (const graphNode of graphData.nodes) {
45
- const node = graphNode.node;
46
- const nodeId = convertNodeToStr(node);
47
- const nodeJson = {
48
- id: nodeId,
49
- type: node.name || node.constructor.name,
50
- numbering: node.numbering ?? ''
51
- };
52
- if (typeof node.getTitleStr === 'function') {
53
- const titleStr = node.getTitleStr(false);
54
- if (titleStr.length > 0)
55
- nodeJson.title = titleStr;
56
- }
57
- nodes.push(nodeJson);
58
- }
59
- for (const edge of graphData.edges) {
60
- let label = edge.label ?? '';
61
- if (label == 'proof') {
62
- label = 'in proof of ' + convertNodeToStr(edge.target.node);
63
- }
64
- const edgeJson = {
65
- from: convertNodeToStr(edge.source.node),
66
- to: convertNodeToStr(edge.target.node),
67
- type: label
68
- };
69
- if (edge.partial)
70
- edgeJson.indirect = true;
71
- edges.push(edgeJson);
72
- }
73
- return { nodes, edges };
74
- }
75
- //# sourceMappingURL=graphTypes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graphTypes.js","sourceRoot":"","sources":["../../src/graph/graphTypes.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export type { GraphData } from './graphTypes';
2
- export { GraphNode, GraphEdge, GraphNodeType as NodeType } from './graphTypes';
3
- export { GenerateMathDepGraph } from './mathDepGraph';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,3 +0,0 @@
1
- export { GraphNode, GraphEdge, GraphNodeType as NodeType } from './graphTypes';
2
- export { GenerateMathDepGraph } from './mathDepGraph';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,11 +0,0 @@
1
- import { AbstractTokenNode } from '../';
2
- export declare const MathEnvColors: {
3
- readonly theorem: "#228B22";
4
- readonly lemma: "#228B22";
5
- readonly corollary: "#228B22";
6
- readonly proposition: "#228B22";
7
- readonly definition: "#1E90FF";
8
- readonly default: "#A9A9A9";
9
- };
10
- export declare function getMathEnvColor(node?: AbstractTokenNode): string;
11
- //# sourceMappingURL=mathColors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mathColors.d.ts","sourceRoot":"","sources":["../../src/graph/mathColors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAoB,MAAM,KAAK,CAAC;AAE1D,eAAO,MAAM,aAAa;;;;;;;CAShB,CAAC;AAEX,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAKhE"}
@@ -1,20 +0,0 @@
1
- import { MathEnvTokenNode } from '../';
2
- export const MathEnvColors = {
3
- theorem: '#228B22',
4
- lemma: '#228B22', // Forest Green
5
- corollary: '#228B22',
6
- proposition: '#228B22',
7
- definition: '#1E90FF',
8
- // remark: '#A9A9A9', // DarkGray
9
- // example: '#B0B0B0', // Gray, lighter than Remark
10
- default: '#A9A9A9' // Default color (DarkGray)
11
- };
12
- export function getMathEnvColor(node) {
13
- if (!node || !(node instanceof MathEnvTokenNode))
14
- return MathEnvColors.default;
15
- const name = node.name;
16
- if (!name)
17
- return MathEnvColors.default;
18
- return MathEnvColors[name.toLowerCase()] ?? MathEnvColors.default;
19
- }
20
- //# sourceMappingURL=mathColors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mathColors.js","sourceRoot":"","sources":["../../src/graph/mathColors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAE1D,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,SAAS,EAAE,eAAe;IACjC,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,SAAS;IACrB,iCAAiC;IACjC,mDAAmD;IACnD,OAAO,EAAE,SAAS,CAAC,2BAA2B;CACtC,CAAC;AAEX,MAAM,UAAU,eAAe,CAAC,IAAwB;IACtD,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,YAAY,gBAAgB,CAAC;QAAE,OAAO,aAAa,CAAC,OAAO,CAAC;IAC/E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,CAAC,IAAI;QAAE,OAAO,aAAa,CAAC,OAAO,CAAC;IACxC,OAAO,aAAa,CAAC,IAAI,CAAC,WAAW,EAAgC,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC;AAClG,CAAC"}
@@ -1,4 +0,0 @@
1
- import { AbstractTokenNode } from '../base/AbstractTokenNode';
2
- import { GraphData } from './graphTypes';
3
- export declare function GenerateMathDepGraph(tokenNodes: AbstractTokenNode[]): GraphData;
4
- //# sourceMappingURL=mathDepGraph.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mathDepGraph.d.ts","sourceRoot":"","sources":["../../src/graph/mathDepGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAQ9D,OAAO,EAAE,SAAS,EAAuC,MAAM,cAAc,CAAC;AAyU9E,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAU/E"}
@@ -1,320 +0,0 @@
1
- import { NodeRoles } from '../base/NodeRoles';
2
- import { EnvironmentTokenNode } from '../document/EnvironmentTokenNode';
3
- import { MathEnvTokenNode } from '../document/MathEnvTokenNode';
4
- import { SectionTokenNode } from '../document/SectionTokenNode';
5
- import { ReferenceTokenNode } from '../references/ReferenceTokenNode';
6
- import { EquationTokenNode } from '../technical/EquationTokenNode';
7
- import { GraphNode, GraphEdge, GraphNodeType } from './graphTypes';
8
- import { getTokenByLabel } from '@/lib/vrender/utils/tokens';
9
- /**
10
- * This file generates a dependency graph for mathematical environments in a LaTeX-like document
11
- * It tracks relationships between mathematical environments (like theorems, lemmas, proofs)
12
- * by analyzing their cross-references
13
-
14
- // Main functionality:
15
- // 1. Identifies numbered mathematical environments (theorems, lemmas, etc.)
16
- // 2. Tracks references between these environments (when one theorem references another)
17
- // 3. Handles special cases like untitled proofs by connecting them to their previous sibling theorems
18
- // 4. Handles linked equations by connecting their parent math/proof envs to the math envs that reference them
19
- // 5. Generates a graph structure where:
20
- // - Nodes represent mathematical environments
21
- // - Edges represent references/dependencies between them
22
- */
23
- const excludeMathEnvNames = ['proof', 'remark', 'example', 'heuristic'];
24
- function isNumberedMathEnv(node) {
25
- if (!(node instanceof MathEnvTokenNode)) {
26
- return false;
27
- }
28
- const name = node.name.toLowerCase();
29
- if (excludeMathEnvNames.includes(name)) {
30
- return false;
31
- }
32
- if (node.numbering && node.numbering.length > 0) {
33
- return true;
34
- }
35
- return false;
36
- }
37
- function isProofEnv(node) {
38
- // could be a \begin{proof} block
39
- if (!(node instanceof MathEnvTokenNode || node instanceof EnvironmentTokenNode))
40
- return false;
41
- const name = node.name;
42
- if (!name)
43
- return false;
44
- // const title = (node as any).title;
45
- return name.toLowerCase() == 'proof'; // && (!title || title.length < 1);
46
- }
47
- class MathGraphGenerator {
48
- id2GraphNode = {};
49
- graphNodes = [];
50
- graphEdges = new Set();
51
- untitledProof2GraphNode = {};
52
- resolveLabel(label) {
53
- return getTokenByLabel(label);
54
- }
55
- getGraphEdge(source_node, target_node) {
56
- for (const edge of Array.from(this.graphEdges)) {
57
- if (edge.source.id == source_node.id && edge.target.id == target_node.id) {
58
- return edge;
59
- }
60
- }
61
- return null;
62
- }
63
- findRefsInNode(node) {
64
- const refs = [];
65
- if (node instanceof ReferenceTokenNode) {
66
- refs.push(...node.getData());
67
- }
68
- else {
69
- // Process children recursively
70
- if (node.hasChildren()) {
71
- node.getChildren().forEach((child) => {
72
- refs.push(...this.findRefsInNode(child));
73
- });
74
- }
75
- }
76
- return refs;
77
- }
78
- addRefsToGraphNode(targetGraphNode, refs, partial, label) {
79
- for (const ref of refs) {
80
- let refNode = this.resolveLabel(ref);
81
- let outLabel = label;
82
- // Handle equation references
83
- if (refNode instanceof EquationTokenNode) {
84
- if (refNode.numbering) {
85
- const tag = `eq-${refNode.numbering}`;
86
- if (outLabel)
87
- outLabel += ` (${tag})`;
88
- else
89
- outLabel = tag;
90
- }
91
- // Find closest math env parent of the equation
92
- let parent = refNode.parent;
93
- while (parent && !(parent instanceof MathEnvTokenNode || isNumberedMathEnv(parent))) {
94
- parent = parent.parent;
95
- }
96
- if (parent) {
97
- if (isNumberedMathEnv(parent)) {
98
- refNode = parent;
99
- }
100
- else if (this.untitledProof2GraphNode[parent.id]) {
101
- refNode = this.untitledProof2GraphNode[parent.id].node;
102
- }
103
- }
104
- }
105
- if (!refNode || !isNumberedMathEnv(refNode))
106
- continue;
107
- const sourceGraphNode = this._getOrCreateGraphNode(refNode);
108
- if (sourceGraphNode.id === targetGraphNode.id)
109
- continue;
110
- // if (partial) {
111
- // if (outLabel) {
112
- // outLabel += ' (nearby ref)';
113
- // } else {
114
- // outLabel = '(nearby ref)';
115
- // }
116
- // }
117
- // Create edge and add to sets
118
- const edge = this._getOrCreateGraphEdge(sourceGraphNode, targetGraphNode, outLabel, partial);
119
- this.graphEdges.add(edge);
120
- // Note: nodes are added to graphNodes in document order via _getOrCreateGraphNode
121
- }
122
- }
123
- _getOrCreateGraphEdge(sourceGraphNode, targetGraphNode, edgeLabel, partial) {
124
- const existingEdge = this.getGraphEdge(sourceGraphNode, targetGraphNode);
125
- if (existingEdge) {
126
- if (existingEdge.partial && !partial) {
127
- // current full edge should override existing partial edge
128
- this.graphEdges.delete(existingEdge);
129
- }
130
- else {
131
- return existingEdge;
132
- }
133
- }
134
- const edge = new GraphEdge(sourceGraphNode, targetGraphNode, edgeLabel, partial);
135
- return edge;
136
- }
137
- searchRefsInNode(node, targetGraphNode, label, contentOnly = false) {
138
- if (!targetGraphNode) {
139
- targetGraphNode = this._getOrCreateGraphNode(node);
140
- }
141
- const contentRefs = [];
142
- for (const child of node.getChildren()) {
143
- if (contentOnly && child.role !== NodeRoles.CONTENT) {
144
- continue;
145
- }
146
- contentRefs.push(...this.findRefsInNode(child));
147
- }
148
- this.addRefsToGraphNode(targetGraphNode, contentRefs, false, label);
149
- }
150
- _getOrCreateGraphNode(node, type, label) {
151
- if (this.id2GraphNode[node.id]) {
152
- return this.id2GraphNode[node.id];
153
- }
154
- if (!type) {
155
- type = GraphNodeType.mathEnv;
156
- if (isNumberedMathEnv(node)) {
157
- type = GraphNodeType.mathEnv;
158
- }
159
- else if (isProofEnv(node)) {
160
- type = GraphNodeType.proof;
161
- }
162
- }
163
- if (!label) {
164
- label = node.id;
165
- if (type == GraphNodeType.mathEnv) {
166
- label = node instanceof MathEnvTokenNode ? `${node.name} ${node.numbering}` : node.id;
167
- }
168
- else if (type == GraphNodeType.proof) {
169
- label = 'Proof';
170
- }
171
- }
172
- const graphNode = new GraphNode(node, type, label);
173
- this.id2GraphNode[node.id] = graphNode;
174
- // Add to array in document order (DFS traversal order)
175
- this.graphNodes.push(graphNode);
176
- return graphNode;
177
- }
178
- getNodesAndEdges() {
179
- // Remove duplicate edges (same source->target with same label)
180
- const uniqueEdges = new Map();
181
- Array.from(this.graphEdges).forEach((edge) => {
182
- const edgeKey = `${edge.source.id}->${edge.target.id}:${edge.label || ''}`;
183
- if (!uniqueEdges.has(edgeKey)) {
184
- uniqueEdges.set(edgeKey, edge);
185
- }
186
- });
187
- return {
188
- nodes: this.graphNodes, // Already in document order from DFS traversal
189
- edges: Array.from(uniqueEdges.values())
190
- };
191
- }
192
- processNodeTitleRefs(node) {
193
- // Check if refs in title -> then attach inner refs of this node to the refs in title
194
- // ie. if this node references other math envs in the title, we assume its inner refs connect to the math envs in the title
195
- const titleNodes = node.getTitleData();
196
- const titleRefs = titleNodes.flatMap((t) => this.findRefsInNode(t));
197
- if (titleRefs.length > 0) {
198
- let titleStr = '';
199
- for (let titleNode of titleNodes) {
200
- const data = titleNode.getData();
201
- if (typeof data == 'string') {
202
- titleStr += data;
203
- }
204
- else if (titleNode instanceof ReferenceTokenNode) {
205
- // collect the titles of all referenced mathenvs to be the titleStr
206
- const mathEnvTitles = [];
207
- for (let ref of data) {
208
- const refNode = this.resolveLabel(ref);
209
- if (refNode instanceof MathEnvTokenNode && isNumberedMathEnv(refNode)) {
210
- mathEnvTitles.push(`${refNode.name} ${refNode.numbering}`);
211
- }
212
- }
213
- titleStr += ` ${mathEnvTitles.join(',')} `;
214
- }
215
- }
216
- let label = titleStr;
217
- if (!titleStr.toLowerCase().startsWith('proof')) {
218
- label = 'Proof: ' + titleStr;
219
- }
220
- for (const ref of titleRefs) {
221
- const refNode = this.resolveLabel(ref);
222
- if (!refNode)
223
- continue;
224
- if (isNumberedMathEnv(refNode)) {
225
- const refGraphNode = this._getOrCreateGraphNode(refNode, GraphNodeType.mathEnv);
226
- // search content only i.e. don't include title data, otherwise
227
- // refs in the title will create edges to each other
228
- this.searchRefsInNode(node, refGraphNode, label, true);
229
- }
230
- }
231
- }
232
- }
233
- processNodes(node) {
234
- if (!node)
235
- return;
236
- const ALLOW_STANDALONE_PROOFS = false;
237
- if (Array.isArray(node)) {
238
- // Process array of nodes (detect mathenv and try to match it with next sibling ref or untitled proofs)
239
- let latestMathEnvGraphNode = null;
240
- node.forEach((n) => {
241
- if (isProofEnv(n)) {
242
- // if proof env, check if titled or untitled
243
- const proofNode = n;
244
- let titleData = [];
245
- if (proofNode instanceof MathEnvTokenNode) {
246
- titleData = proofNode.getTitleData();
247
- }
248
- if (titleData.length > 0) {
249
- // titled proof
250
- this.processNodeTitleRefs(proofNode);
251
- }
252
- else {
253
- // untitled proof: heuristic to check if there is a previous sibling math env 'latestMathEnvGraphNode'
254
- if (latestMathEnvGraphNode) {
255
- this.untitledProof2GraphNode[n.id] = latestMathEnvGraphNode;
256
- const proofLabel = `Proof (${latestMathEnvGraphNode.label})`;
257
- if (ALLOW_STANDALONE_PROOFS) {
258
- // Create a separate graph node for the untitled proof
259
- const proofGraphNode = this._getOrCreateGraphNode(n, GraphNodeType.proof, proofLabel);
260
- // Store the parent relationship (no edge, just metadata)
261
- proofGraphNode.parentNode = latestMathEnvGraphNode;
262
- // Nodes are already added via _getOrCreateGraphNode
263
- this.searchRefsInNode(n, proofGraphNode);
264
- }
265
- else {
266
- // direct link to parent math env as proof edge
267
- this.searchRefsInNode(n, latestMathEnvGraphNode, proofLabel);
268
- }
269
- return;
270
- }
271
- }
272
- // reset latestMathEnvGraphNode after proof block
273
- latestMathEnvGraphNode = null;
274
- }
275
- else if (isNumberedMathEnv(n)) {
276
- latestMathEnvGraphNode = this._getOrCreateGraphNode(n, GraphNodeType.mathEnv);
277
- }
278
- else if (n instanceof ReferenceTokenNode) {
279
- // if we detect a reference node, attach refs to the latest mathenv sibling
280
- if (latestMathEnvGraphNode) {
281
- this.addRefsToGraphNode(latestMathEnvGraphNode, n.getData(), true);
282
- }
283
- return;
284
- }
285
- else if (n instanceof SectionTokenNode) {
286
- // if detect any non math section i.e. not a numbered math env or untitled proof, we reset latestMathEnv
287
- latestMathEnvGraphNode = null;
288
- }
289
- this.processNodes(n);
290
- });
291
- return;
292
- }
293
- else if (typeof node == 'object') {
294
- if (isNumberedMathEnv(node)) {
295
- this.searchRefsInNode(node);
296
- }
297
- else if (node instanceof SectionTokenNode) {
298
- this.processNodeTitleRefs(node);
299
- }
300
- // Process children recursively
301
- if (node.hasChildren()) {
302
- // big difference! vs individual processNodes(child)
303
- this.processNodes(node.getChildren());
304
- // node.getChildren().forEach((child) => {
305
- // this.processNodes(child);
306
- // });
307
- }
308
- }
309
- }
310
- }
311
- export function GenerateMathDepGraph(tokenNodes) {
312
- const processor = new MathGraphGenerator();
313
- // Then process to find dependencies and get graph data
314
- processor.processNodes(tokenNodes);
315
- const graphData = processor.getNodesAndEdges();
316
- // const outJSON = graphdataToJSONForLLM(graphData);
317
- // console.log(JSON.stringify(outJSON));
318
- return graphData;
319
- }
320
- //# sourceMappingURL=mathDepGraph.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mathDepGraph.js","sourceRoot":"","sources":["../../src/graph/mathDepGraph.ts"],"names":[],"mappings":"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"}