legal-markdown-js 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +168 -0
  3. package/dist/browser.d.ts +87 -0
  4. package/dist/browser.d.ts.map +1 -0
  5. package/dist/browser.js +157 -0
  6. package/dist/browser.js.map +1 -0
  7. package/dist/cli/index.d.ts +34 -0
  8. package/dist/cli/index.d.ts.map +1 -0
  9. package/dist/cli/index.js +221 -0
  10. package/dist/cli/index.js.map +1 -0
  11. package/dist/cli/service.d.ts +128 -0
  12. package/dist/cli/service.d.ts.map +1 -0
  13. package/dist/cli/service.js +284 -0
  14. package/dist/cli/service.js.map +1 -0
  15. package/dist/constants/index.d.ts +229 -0
  16. package/dist/constants/index.d.ts.map +1 -0
  17. package/dist/constants/index.js +232 -0
  18. package/dist/constants/index.js.map +1 -0
  19. package/dist/core/exporters/metadata-exporter.d.ts +104 -0
  20. package/dist/core/exporters/metadata-exporter.d.ts.map +1 -0
  21. package/dist/core/exporters/metadata-exporter.js +201 -0
  22. package/dist/core/exporters/metadata-exporter.js.map +1 -0
  23. package/dist/core/index.d.ts +40 -0
  24. package/dist/core/index.d.ts.map +1 -0
  25. package/dist/core/index.js +56 -0
  26. package/dist/core/index.js.map +1 -0
  27. package/dist/core/parsers/yaml-parser.d.ts +149 -0
  28. package/dist/core/parsers/yaml-parser.d.ts.map +1 -0
  29. package/dist/core/parsers/yaml-parser.js +321 -0
  30. package/dist/core/parsers/yaml-parser.js.map +1 -0
  31. package/dist/core/processors/clause-processor.d.ts +74 -0
  32. package/dist/core/processors/clause-processor.d.ts.map +1 -0
  33. package/dist/core/processors/clause-processor.js +213 -0
  34. package/dist/core/processors/clause-processor.js.map +1 -0
  35. package/dist/core/processors/date-processor.d.ts +90 -0
  36. package/dist/core/processors/date-processor.d.ts.map +1 -0
  37. package/dist/core/processors/date-processor.js +336 -0
  38. package/dist/core/processors/date-processor.js.map +1 -0
  39. package/dist/core/processors/header-processor.d.ts +104 -0
  40. package/dist/core/processors/header-processor.d.ts.map +1 -0
  41. package/dist/core/processors/header-processor.js +585 -0
  42. package/dist/core/processors/header-processor.js.map +1 -0
  43. package/dist/core/processors/import-processor.d.ts +116 -0
  44. package/dist/core/processors/import-processor.d.ts.map +1 -0
  45. package/dist/core/processors/import-processor.js +236 -0
  46. package/dist/core/processors/import-processor.js.map +1 -0
  47. package/dist/core/processors/mixin-processor.d.ts +93 -0
  48. package/dist/core/processors/mixin-processor.d.ts.map +1 -0
  49. package/dist/core/processors/mixin-processor.js +378 -0
  50. package/dist/core/processors/mixin-processor.js.map +1 -0
  51. package/dist/core/processors/reference-processor.d.ts +115 -0
  52. package/dist/core/processors/reference-processor.d.ts.map +1 -0
  53. package/dist/core/processors/reference-processor.js +273 -0
  54. package/dist/core/processors/reference-processor.js.map +1 -0
  55. package/dist/errors/index.d.ts +234 -0
  56. package/dist/errors/index.d.ts.map +1 -0
  57. package/dist/errors/index.js +267 -0
  58. package/dist/errors/index.js.map +1 -0
  59. package/dist/extensions/batch-processor.d.ts +197 -0
  60. package/dist/extensions/batch-processor.d.ts.map +1 -0
  61. package/dist/extensions/batch-processor.js +392 -0
  62. package/dist/extensions/batch-processor.js.map +1 -0
  63. package/dist/extensions/formatters/index.d.ts +99 -0
  64. package/dist/extensions/formatters/index.d.ts.map +1 -0
  65. package/dist/extensions/formatters/index.js +128 -0
  66. package/dist/extensions/formatters/index.js.map +1 -0
  67. package/dist/extensions/index.d.ts +53 -0
  68. package/dist/extensions/index.d.ts.map +1 -0
  69. package/dist/extensions/index.js +71 -0
  70. package/dist/extensions/index.js.map +1 -0
  71. package/dist/extensions/latex-parser.d.ts +111 -0
  72. package/dist/extensions/latex-parser.d.ts.map +1 -0
  73. package/dist/extensions/latex-parser.js +563 -0
  74. package/dist/extensions/latex-parser.js.map +1 -0
  75. package/dist/extensions/rst-parser.d.ts +112 -0
  76. package/dist/extensions/rst-parser.d.ts.map +1 -0
  77. package/dist/extensions/rst-parser.js +268 -0
  78. package/dist/extensions/rst-parser.js.map +1 -0
  79. package/dist/extensions/template-loops.d.ts +61 -0
  80. package/dist/extensions/template-loops.d.ts.map +1 -0
  81. package/dist/extensions/template-loops.js +418 -0
  82. package/dist/extensions/template-loops.js.map +1 -0
  83. package/dist/extensions/utilities/index.d.ts +114 -0
  84. package/dist/extensions/utilities/index.d.ts.map +1 -0
  85. package/dist/extensions/utilities/index.js +137 -0
  86. package/dist/extensions/utilities/index.js.map +1 -0
  87. package/dist/extensions/validators/index.d.ts +65 -0
  88. package/dist/extensions/validators/index.d.ts.map +1 -0
  89. package/dist/extensions/validators/index.js +88 -0
  90. package/dist/extensions/validators/index.js.map +1 -0
  91. package/dist/generators/html-generator.d.ts +184 -0
  92. package/dist/generators/html-generator.d.ts.map +1 -0
  93. package/dist/generators/html-generator.js +361 -0
  94. package/dist/generators/html-generator.js.map +1 -0
  95. package/dist/generators/pdf-generator.d.ts +165 -0
  96. package/dist/generators/pdf-generator.d.ts.map +1 -0
  97. package/dist/generators/pdf-generator.js +275 -0
  98. package/dist/generators/pdf-generator.js.map +1 -0
  99. package/dist/helpers/date-helpers.d.ts +216 -0
  100. package/dist/helpers/date-helpers.d.ts.map +1 -0
  101. package/dist/helpers/date-helpers.js +402 -0
  102. package/dist/helpers/date-helpers.js.map +1 -0
  103. package/dist/helpers/index.d.ts +87 -0
  104. package/dist/helpers/index.d.ts.map +1 -0
  105. package/dist/helpers/index.js +149 -0
  106. package/dist/helpers/index.js.map +1 -0
  107. package/dist/helpers/number-helpers.d.ts +269 -0
  108. package/dist/helpers/number-helpers.d.ts.map +1 -0
  109. package/dist/helpers/number-helpers.js +406 -0
  110. package/dist/helpers/number-helpers.js.map +1 -0
  111. package/dist/helpers/string-helpers.d.ts +391 -0
  112. package/dist/helpers/string-helpers.d.ts.map +1 -0
  113. package/dist/helpers/string-helpers.js +549 -0
  114. package/dist/helpers/string-helpers.js.map +1 -0
  115. package/dist/index.d.ts +229 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +384 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/legal-markdown.umd.min.js +2 -0
  120. package/dist/legal-markdown.umd.min.js.LICENSE.txt +14 -0
  121. package/dist/legal-markdown.umd.min.js.map +1 -0
  122. package/dist/lib/index.d.ts +150 -0
  123. package/dist/lib/index.d.ts.map +1 -0
  124. package/dist/lib/index.js +265 -0
  125. package/dist/lib/index.js.map +1 -0
  126. package/dist/parsers/content-detector.d.ts +131 -0
  127. package/dist/parsers/content-detector.d.ts.map +1 -0
  128. package/dist/parsers/content-detector.js +220 -0
  129. package/dist/parsers/content-detector.js.map +1 -0
  130. package/dist/parsers/fallback-parsers.d.ts +14 -0
  131. package/dist/parsers/fallback-parsers.d.ts.map +1 -0
  132. package/dist/parsers/fallback-parsers.js +188 -0
  133. package/dist/parsers/fallback-parsers.js.map +1 -0
  134. package/dist/parsers/implementations/pandoc-native.d.ts +13 -0
  135. package/dist/parsers/implementations/pandoc-native.d.ts.map +1 -0
  136. package/dist/parsers/implementations/pandoc-native.js +63 -0
  137. package/dist/parsers/implementations/pandoc-native.js.map +1 -0
  138. package/dist/parsers/implementations/pandoc-wasm.d.ts +14 -0
  139. package/dist/parsers/implementations/pandoc-wasm.d.ts.map +1 -0
  140. package/dist/parsers/implementations/pandoc-wasm.js +64 -0
  141. package/dist/parsers/implementations/pandoc-wasm.js.map +1 -0
  142. package/dist/parsers/pandoc-factory.d.ts +97 -0
  143. package/dist/parsers/pandoc-factory.d.ts.map +1 -0
  144. package/dist/parsers/pandoc-factory.js +146 -0
  145. package/dist/parsers/pandoc-factory.js.map +1 -0
  146. package/dist/parsers/pandoc-loader.d.ts +24 -0
  147. package/dist/parsers/pandoc-loader.d.ts.map +1 -0
  148. package/dist/parsers/pandoc-loader.js +124 -0
  149. package/dist/parsers/pandoc-loader.js.map +1 -0
  150. package/dist/parsers/pandoc-parser.d.ts +27 -0
  151. package/dist/parsers/pandoc-parser.d.ts.map +1 -0
  152. package/dist/parsers/pandoc-parser.js +3 -0
  153. package/dist/parsers/pandoc-parser.js.map +1 -0
  154. package/dist/styles/default.css +125 -0
  155. package/dist/styles/headers.css +146 -0
  156. package/dist/styles/highlight.css +171 -0
  157. package/dist/tracking/field-tracker.d.ts +206 -0
  158. package/dist/tracking/field-tracker.d.ts.map +1 -0
  159. package/dist/tracking/field-tracker.js +247 -0
  160. package/dist/tracking/field-tracker.js.map +1 -0
  161. package/dist/types.d.ts +186 -0
  162. package/dist/types.d.ts.map +1 -0
  163. package/dist/types.js +33 -0
  164. package/dist/types.js.map +1 -0
  165. package/dist/utils/logger.d.ts +107 -0
  166. package/dist/utils/logger.d.ts.map +1 -0
  167. package/dist/utils/logger.js +122 -0
  168. package/dist/utils/logger.js.map +1 -0
  169. package/dist/web/bundle-standalone.js +28 -0
  170. package/dist/web/bundle.js +17 -0
  171. package/dist/web/index.html +1465 -0
  172. package/dist/web/legal-markdown.umd.min.js +2 -0
  173. package/dist/web/standalone.html +390 -0
  174. package/dist/web/styles.css +874 -0
  175. package/package.json +118 -0
@@ -0,0 +1,146 @@
1
+ /* Legal Header Styles - Header Field Tracking Support */
2
+
3
+ /* Base legal header styling */
4
+ .legal-header {
5
+ display: block;
6
+ margin: 1em 0 0.5em 0;
7
+ font-weight: 600;
8
+ line-height: 1.3;
9
+ }
10
+
11
+ /* Level-specific styling */
12
+ .legal-header-level-1,
13
+ .legal-article {
14
+ font-size: 1.6em;
15
+ font-weight: bold;
16
+ color: #1a1a1a;
17
+ margin: 2em 0 1em 0;
18
+ border-bottom: 3px solid #333;
19
+ padding-bottom: 0.2em;
20
+ }
21
+
22
+ .legal-header-level-2,
23
+ .legal-section {
24
+ font-size: 1.3em;
25
+ font-weight: 600;
26
+ color: #333;
27
+ margin: 1.5em 0 0.8em 0;
28
+ border-bottom: 1px solid #666;
29
+ padding-bottom: 0.1em;
30
+ }
31
+
32
+ .legal-header-level-3,
33
+ .legal-subsection {
34
+ font-size: 1.1em;
35
+ font-weight: 500;
36
+ color: #444;
37
+ margin: 1em 0 0.5em 0;
38
+ }
39
+
40
+ .legal-header-level-4,
41
+ .legal-sub-subsection {
42
+ font-size: 1.05em;
43
+ font-weight: 500;
44
+ color: #555;
45
+ margin: 0.8em 0 0.4em 0;
46
+ }
47
+
48
+ .legal-header-level-5,
49
+ .legal-paragraph {
50
+ font-size: 1em;
51
+ font-weight: 500;
52
+ color: #666;
53
+ margin: 0.6em 0 0.3em 0;
54
+ }
55
+
56
+ /* Data attribute based styling for more specificity */
57
+ .legal-header[data-level='1'] {
58
+ /* Additional Article-level styling */
59
+ text-transform: uppercase;
60
+ letter-spacing: 0.5px;
61
+ }
62
+
63
+ .legal-header[data-level='2'] {
64
+ /* Additional Section-level styling */
65
+ font-variant: small-caps;
66
+ }
67
+
68
+ .legal-header[data-level='3'] {
69
+ /* Additional Subsection-level styling */
70
+ font-style: italic;
71
+ }
72
+
73
+ /* Hover effects for interactive documents */
74
+ .legal-header:hover {
75
+ background-color: rgba(0, 120, 215, 0.1);
76
+ cursor: pointer;
77
+ border-radius: 2px;
78
+ padding: 2px 4px;
79
+ margin: -2px -4px;
80
+ }
81
+
82
+ /* Print optimizations */
83
+ @media print {
84
+ .legal-header {
85
+ page-break-after: avoid;
86
+ page-break-inside: avoid;
87
+ }
88
+
89
+ .legal-header:hover {
90
+ background-color: transparent;
91
+ padding: 0;
92
+ margin: 1em 0 0.5em 0;
93
+ }
94
+
95
+ .legal-header-level-1,
96
+ .legal-article {
97
+ page-break-before: always;
98
+ }
99
+
100
+ .legal-header-level-1:first-child {
101
+ page-break-before: avoid;
102
+ }
103
+ }
104
+
105
+ /* Dark mode support */
106
+ @media (prefers-color-scheme: dark) {
107
+ .legal-header-level-1,
108
+ .legal-article {
109
+ color: #e6e6e6;
110
+ border-bottom-color: #ccc;
111
+ }
112
+
113
+ .legal-header-level-2,
114
+ .legal-section {
115
+ color: #ddd;
116
+ border-bottom-color: #999;
117
+ }
118
+
119
+ .legal-header-level-3,
120
+ .legal-subsection {
121
+ color: #ccc;
122
+ }
123
+
124
+ .legal-header-level-4,
125
+ .legal-sub-subsection {
126
+ color: #bbb;
127
+ }
128
+
129
+ .legal-header-level-5,
130
+ .legal-paragraph {
131
+ color: #aaa;
132
+ }
133
+ }
134
+
135
+ /* Responsive adjustments */
136
+ @media (max-width: 768px) {
137
+ .legal-header-level-1,
138
+ .legal-article {
139
+ font-size: 1.4em;
140
+ }
141
+
142
+ .legal-header-level-2,
143
+ .legal-section {
144
+ font-size: 1.2em;
145
+ }
146
+ }
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Highlight Styles for Legal Documents
3
+ *
4
+ * Provides visual indicators for:
5
+ * - Imported values (blue): Fields filled from data
6
+ * - Missing values (red): Required fields without values
7
+ * - Logic fields (yellow): Fields with conditional logic or mixins
8
+ */
9
+
10
+ /* Imported values - Successfully filled from data */
11
+ .imported-value {
12
+ border: 1px solid #0066cc;
13
+ border-radius: 2px;
14
+ padding: 1px 3px;
15
+ background-color: #e6f3ff;
16
+ color: #004085;
17
+ display: inline;
18
+ vertical-align: baseline;
19
+ white-space: normal;
20
+ }
21
+
22
+ /* Nested elements in imported values */
23
+ .imported-value a {
24
+ display: inline;
25
+ white-space: normal;
26
+ line-height: inherit;
27
+ vertical-align: baseline;
28
+ }
29
+
30
+ /* Print styles for imported values */
31
+ @media print {
32
+ .imported-value {
33
+ border-color: #0066cc;
34
+ background-color: #e6f3ff;
35
+ color: #004085;
36
+ -webkit-print-color-adjust: exact;
37
+ print-color-adjust: exact;
38
+ }
39
+ }
40
+
41
+ /* Missing values - Required fields without data */
42
+ .missing-value {
43
+ border: 1px solid #dc3545;
44
+ border-radius: 2px;
45
+ padding: 1px 3px;
46
+ background-color: #fff5f5;
47
+ color: #dc3545;
48
+ display: inline;
49
+ vertical-align: baseline;
50
+ white-space: normal;
51
+ font-weight: 500;
52
+ }
53
+
54
+ /* Nested elements in missing values */
55
+ .missing-value a {
56
+ display: inline;
57
+ white-space: normal;
58
+ line-height: inherit;
59
+ vertical-align: baseline;
60
+ }
61
+
62
+ /* Print styles for missing values */
63
+ @media print {
64
+ .missing-value {
65
+ border-color: #dc3545;
66
+ background-color: #fff5f5;
67
+ color: #dc3545;
68
+ -webkit-print-color-adjust: exact;
69
+ print-color-adjust: exact;
70
+ }
71
+ }
72
+
73
+ /* Logic fields - Fields with conditional logic or mixins */
74
+ .highlight {
75
+ border: 1px solid #ffc107;
76
+ border-radius: 2px;
77
+ padding: 3px 3px;
78
+ background-color: #f9f3df;
79
+ color: #856404;
80
+ display: inline;
81
+ vertical-align: baseline;
82
+ white-space: normal;
83
+ margin: 1px 0;
84
+ }
85
+
86
+ /* Nested highlighting */
87
+ .highlight .imported-value,
88
+ .highlight .missing-value {
89
+ margin: 0;
90
+ padding: 0 3px;
91
+ border-radius: 1px;
92
+ }
93
+
94
+ /* Print styles for logic fields */
95
+ @media print {
96
+ .highlight {
97
+ border-color: #ffc107;
98
+ background-color: #f9f3df;
99
+ color: #856404;
100
+ -webkit-print-color-adjust: exact;
101
+ print-color-adjust: exact;
102
+ }
103
+ }
104
+
105
+ /* Additional helper classes */
106
+
107
+ /* Legend for highlighting */
108
+ .highlight-legend {
109
+ margin: 20px 0;
110
+ padding: 15px;
111
+ border: 1px solid #ddd;
112
+ border-radius: 4px;
113
+ background-color: #f8f9fa;
114
+ page-break-inside: avoid;
115
+ }
116
+
117
+ .highlight-legend h3 {
118
+ margin-top: 0;
119
+ font-size: 1.1em;
120
+ }
121
+
122
+ .highlight-legend ul {
123
+ list-style: none;
124
+ padding-left: 0;
125
+ margin: 10px 0 0 0;
126
+ }
127
+
128
+ .highlight-legend li {
129
+ margin: 5px 0;
130
+ padding: 5px 10px;
131
+ border-radius: 3px;
132
+ }
133
+
134
+ .highlight-legend .imported-example {
135
+ background-color: #e6f3ff;
136
+ border: 1px solid #0066cc;
137
+ color: #004085;
138
+ }
139
+
140
+ .highlight-legend .missing-example {
141
+ background-color: #fff5f5;
142
+ border: 1px solid #dc3545;
143
+ color: #dc3545;
144
+ }
145
+
146
+ .highlight-legend .logic-example {
147
+ background-color: #f9f3df;
148
+ border: 1px solid #ffc107;
149
+ color: #856404;
150
+ }
151
+
152
+ /* Ensure visibility in different contexts */
153
+ @media screen {
154
+ .imported-value,
155
+ .missing-value,
156
+ .highlight {
157
+ transition: background-color 0.2s ease;
158
+ }
159
+
160
+ .imported-value:hover {
161
+ background-color: #cce5ff;
162
+ }
163
+
164
+ .missing-value:hover {
165
+ background-color: #ffe5e5;
166
+ }
167
+
168
+ .highlight:hover {
169
+ background-color: #fff3cd;
170
+ }
171
+ }
@@ -0,0 +1,206 @@
1
+ /**
2
+ * @fileoverview Field Tracking System for Legal Markdown Processing
3
+ *
4
+ * This module provides comprehensive field tracking functionality for Legal Markdown
5
+ * documents, including field status monitoring, highlighting support, and reporting
6
+ * capabilities. It tracks field processing state and applies appropriate CSS classes
7
+ * for visual feedback during document review.
8
+ *
9
+ * Features:
10
+ * - Field status tracking (filled, empty, logic)
11
+ * - CSS class application for field highlighting
12
+ * - Field processing state management
13
+ * - Mixin usage tracking for complex field logic
14
+ * - Reporting and analytics for field usage
15
+ * - Singleton pattern for consistent tracking across the application
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * import { fieldTracker, FieldStatus } from './field-tracker';
20
+ *
21
+ * // Track a field during processing
22
+ * fieldTracker.trackField('client.name', {
23
+ * value: 'Acme Corporation',
24
+ * status: FieldStatus.FILLED
25
+ * });
26
+ *
27
+ * // Apply field tracking to content
28
+ * const highlightedContent = fieldTracker.applyFieldTracking(processedContent);
29
+ *
30
+ * // Generate field report
31
+ * const report = fieldTracker.generateReport();
32
+ * console.log(`${report.filled} fields filled, ${report.empty} fields empty`);
33
+ * ```
34
+ */
35
+ /**
36
+ * Enumeration of possible field statuses during processing
37
+ *
38
+ * @enum {string} FieldStatus
39
+ * @example
40
+ * ```typescript
41
+ * import { FieldStatus } from './field-tracker';
42
+ *
43
+ * // Check field status
44
+ * if (field.status === FieldStatus.FILLED) {
45
+ * console.log('Field has a value');
46
+ * } else if (field.status === FieldStatus.EMPTY) {
47
+ * console.log('Field needs a value');
48
+ * } else if (field.status === FieldStatus.LOGIC) {
49
+ * console.log('Field uses conditional logic');
50
+ * }
51
+ * ```
52
+ */
53
+ export declare enum FieldStatus {
54
+ /** Field has been filled with a value */
55
+ FILLED = "filled",
56
+ /** Field is empty or missing a value */
57
+ EMPTY = "empty",
58
+ /** Field contains logic or uses mixins */
59
+ LOGIC = "logic"
60
+ }
61
+ /**
62
+ * Interface representing a tracked field in the Legal Markdown system
63
+ *
64
+ * @interface TrackedField
65
+ * @example
66
+ * ```typescript
67
+ * const field: TrackedField = {
68
+ * name: 'client.name',
69
+ * status: FieldStatus.FILLED,
70
+ * value: 'Acme Corporation',
71
+ * originalValue: '{{client.name}}',
72
+ * hasLogic: false,
73
+ * mixinUsed: undefined
74
+ * };
75
+ * ```
76
+ */
77
+ export interface TrackedField {
78
+ /** The name/identifier of the field */
79
+ name: string;
80
+ /** The current status of the field */
81
+ status: FieldStatus;
82
+ /** The processed value of the field */
83
+ value?: any;
84
+ /** The original unprocessed value of the field */
85
+ originalValue?: any;
86
+ /** Whether the field contains logical operations */
87
+ hasLogic: boolean;
88
+ /** Name of mixin used for processing this field */
89
+ mixinUsed?: string;
90
+ }
91
+ /**
92
+ * Field tracking system for Legal Markdown processing
93
+ *
94
+ * Manages field tracking throughout the document processing lifecycle,
95
+ * including status monitoring, highlighting, and reporting capabilities.
96
+ *
97
+ * @class FieldTracker
98
+ * @example
99
+ * ```typescript
100
+ * import { FieldTracker, FieldStatus } from './field-tracker';
101
+ *
102
+ * const tracker = new FieldTracker();
103
+ *
104
+ * // Track field processing
105
+ * tracker.trackField('client.name', {
106
+ * value: 'Acme Corp',
107
+ * originalValue: '{{client.name}}',
108
+ * hasLogic: false
109
+ * });
110
+ *
111
+ * // Apply tracking to content
112
+ * const highlighted = tracker.applyFieldTracking(content);
113
+ *
114
+ * // Generate report
115
+ * const report = tracker.generateReport();
116
+ * ```
117
+ */
118
+ export declare class FieldTracker {
119
+ private fields;
120
+ private processedContent;
121
+ /**
122
+ * Creates a new FieldTracker instance
123
+ *
124
+ * @constructor
125
+ */
126
+ constructor();
127
+ /**
128
+ * Track a field that has been processed
129
+ *
130
+ * Registers a field with the tracking system, determining its status based on
131
+ * the provided options and storing relevant metadata for later use.
132
+ *
133
+ * @method trackField
134
+ * @param {string} fieldName - The name/identifier of the field to track
135
+ * @param {Object} options - Options for field tracking
136
+ * @param {any} [options.value] - The processed value of the field
137
+ * @param {any} [options.originalValue] - The original unprocessed value
138
+ * @param {boolean} [options.hasLogic=false] - Whether the field contains logical operations
139
+ * @param {string} [options.mixinUsed] - Name of mixin used for processing
140
+ * @returns {void}
141
+ * @example
142
+ * ```typescript
143
+ * // Track a filled field
144
+ * tracker.trackField('client.name', {
145
+ * value: 'Acme Corporation',
146
+ * originalValue: '{{client.name}}'
147
+ * });
148
+ *
149
+ * // Track an empty field
150
+ * tracker.trackField('client.address', {
151
+ * value: '',
152
+ * originalValue: '{{client.address}}'
153
+ * });
154
+ *
155
+ * // Track a field with logic
156
+ * tracker.trackField('warranty.clause', {
157
+ * value: 'Standard warranty applies',
158
+ * originalValue: '{{#if warranty.enabled}}{{warranty.text}}{{/if}}',
159
+ * hasLogic: true,
160
+ * mixinUsed: 'warranty-mixin'
161
+ * });
162
+ * ```
163
+ */
164
+ trackField(fieldName: string, options: {
165
+ value?: any;
166
+ originalValue?: any;
167
+ hasLogic?: boolean;
168
+ mixinUsed?: string;
169
+ }): void;
170
+ /**
171
+ * Apply field tracking to processed content by wrapping fields with appropriate CSS classes
172
+ */
173
+ applyFieldTracking(content: string): string;
174
+ /**
175
+ * Get CSS class for field based on its status
176
+ */
177
+ private getFieldCssClass;
178
+ /**
179
+ * Escape special regex characters in a string
180
+ */
181
+ private escapeRegex;
182
+ /**
183
+ * Get all tracked fields
184
+ */
185
+ getFields(): Map<string, TrackedField>;
186
+ /**
187
+ * Get fields by status
188
+ */
189
+ getFieldsByStatus(status: FieldStatus): TrackedField[];
190
+ /**
191
+ * Generate a summary report of tracked fields
192
+ */
193
+ generateReport(): {
194
+ total: number;
195
+ filled: number;
196
+ empty: number;
197
+ logic: number;
198
+ fields: TrackedField[];
199
+ };
200
+ /**
201
+ * Clear all tracked fields
202
+ */
203
+ clear(): void;
204
+ }
205
+ export declare const fieldTracker: FieldTracker;
206
+ //# sourceMappingURL=field-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-tracker.d.ts","sourceRoot":"","sources":["../../src/tracking/field-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAIH;;;;;;;;;;;;;;;;;GAiBG;AACH,oBAAY,WAAW;IACrB,yCAAyC;IACzC,MAAM,WAAW;IACjB,wCAAwC;IACxC,KAAK,UAAU;IACf,0CAA0C;IAC1C,KAAK,UAAU;CAChB;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,MAAM,EAAE,WAAW,CAAC;IACpB,uCAAuC;IACvC,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,kDAAkD;IAClD,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,oDAAoD;IACpD,QAAQ,EAAE,OAAO,CAAC;IAClB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,gBAAgB,CAAc;IAEtC;;;;OAIG;;IAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;QACP,KAAK,CAAC,EAAE,GAAG,CAAC;QACZ,aAAa,CAAC,EAAE,GAAG,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GACA,IAAI;IAyBP;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAgC3C;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;IAItC;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,EAAE;IAItD;;OAEG;IACH,cAAc,IAAI;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,YAAY,EAAE,CAAC;KACxB;IAYD;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}