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,247 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Field Tracking System for Legal Markdown Processing
4
+ *
5
+ * This module provides comprehensive field tracking functionality for Legal Markdown
6
+ * documents, including field status monitoring, highlighting support, and reporting
7
+ * capabilities. It tracks field processing state and applies appropriate CSS classes
8
+ * for visual feedback during document review.
9
+ *
10
+ * Features:
11
+ * - Field status tracking (filled, empty, logic)
12
+ * - CSS class application for field highlighting
13
+ * - Field processing state management
14
+ * - Mixin usage tracking for complex field logic
15
+ * - Reporting and analytics for field usage
16
+ * - Singleton pattern for consistent tracking across the application
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { fieldTracker, FieldStatus } from './field-tracker';
21
+ *
22
+ * // Track a field during processing
23
+ * fieldTracker.trackField('client.name', {
24
+ * value: 'Acme Corporation',
25
+ * status: FieldStatus.FILLED
26
+ * });
27
+ *
28
+ * // Apply field tracking to content
29
+ * const highlightedContent = fieldTracker.applyFieldTracking(processedContent);
30
+ *
31
+ * // Generate field report
32
+ * const report = fieldTracker.generateReport();
33
+ * console.log(`${report.filled} fields filled, ${report.empty} fields empty`);
34
+ * ```
35
+ */
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.fieldTracker = exports.FieldTracker = exports.FieldStatus = void 0;
38
+ const logger_1 = require("../utils/logger");
39
+ /**
40
+ * Enumeration of possible field statuses during processing
41
+ *
42
+ * @enum {string} FieldStatus
43
+ * @example
44
+ * ```typescript
45
+ * import { FieldStatus } from './field-tracker';
46
+ *
47
+ * // Check field status
48
+ * if (field.status === FieldStatus.FILLED) {
49
+ * console.log('Field has a value');
50
+ * } else if (field.status === FieldStatus.EMPTY) {
51
+ * console.log('Field needs a value');
52
+ * } else if (field.status === FieldStatus.LOGIC) {
53
+ * console.log('Field uses conditional logic');
54
+ * }
55
+ * ```
56
+ */
57
+ var FieldStatus;
58
+ (function (FieldStatus) {
59
+ /** Field has been filled with a value */
60
+ FieldStatus["FILLED"] = "filled";
61
+ /** Field is empty or missing a value */
62
+ FieldStatus["EMPTY"] = "empty";
63
+ /** Field contains logic or uses mixins */
64
+ FieldStatus["LOGIC"] = "logic";
65
+ })(FieldStatus || (exports.FieldStatus = FieldStatus = {}));
66
+ /**
67
+ * Field tracking system for Legal Markdown processing
68
+ *
69
+ * Manages field tracking throughout the document processing lifecycle,
70
+ * including status monitoring, highlighting, and reporting capabilities.
71
+ *
72
+ * @class FieldTracker
73
+ * @example
74
+ * ```typescript
75
+ * import { FieldTracker, FieldStatus } from './field-tracker';
76
+ *
77
+ * const tracker = new FieldTracker();
78
+ *
79
+ * // Track field processing
80
+ * tracker.trackField('client.name', {
81
+ * value: 'Acme Corp',
82
+ * originalValue: '{{client.name}}',
83
+ * hasLogic: false
84
+ * });
85
+ *
86
+ * // Apply tracking to content
87
+ * const highlighted = tracker.applyFieldTracking(content);
88
+ *
89
+ * // Generate report
90
+ * const report = tracker.generateReport();
91
+ * ```
92
+ */
93
+ class FieldTracker {
94
+ /**
95
+ * Creates a new FieldTracker instance
96
+ *
97
+ * @constructor
98
+ */
99
+ constructor() {
100
+ this.fields = new Map();
101
+ this.processedContent = '';
102
+ }
103
+ /**
104
+ * Track a field that has been processed
105
+ *
106
+ * Registers a field with the tracking system, determining its status based on
107
+ * the provided options and storing relevant metadata for later use.
108
+ *
109
+ * @method trackField
110
+ * @param {string} fieldName - The name/identifier of the field to track
111
+ * @param {Object} options - Options for field tracking
112
+ * @param {any} [options.value] - The processed value of the field
113
+ * @param {any} [options.originalValue] - The original unprocessed value
114
+ * @param {boolean} [options.hasLogic=false] - Whether the field contains logical operations
115
+ * @param {string} [options.mixinUsed] - Name of mixin used for processing
116
+ * @returns {void}
117
+ * @example
118
+ * ```typescript
119
+ * // Track a filled field
120
+ * tracker.trackField('client.name', {
121
+ * value: 'Acme Corporation',
122
+ * originalValue: '{{client.name}}'
123
+ * });
124
+ *
125
+ * // Track an empty field
126
+ * tracker.trackField('client.address', {
127
+ * value: '',
128
+ * originalValue: '{{client.address}}'
129
+ * });
130
+ *
131
+ * // Track a field with logic
132
+ * tracker.trackField('warranty.clause', {
133
+ * value: 'Standard warranty applies',
134
+ * originalValue: '{{#if warranty.enabled}}{{warranty.text}}{{/if}}',
135
+ * hasLogic: true,
136
+ * mixinUsed: 'warranty-mixin'
137
+ * });
138
+ * ```
139
+ */
140
+ trackField(fieldName, options) {
141
+ const { value, originalValue, hasLogic = false, mixinUsed } = options;
142
+ let status;
143
+ if (hasLogic || mixinUsed) {
144
+ status = FieldStatus.LOGIC;
145
+ }
146
+ else if (value === undefined || value === null || value === '') {
147
+ status = FieldStatus.EMPTY;
148
+ }
149
+ else {
150
+ status = FieldStatus.FILLED;
151
+ }
152
+ const field = {
153
+ name: fieldName,
154
+ status,
155
+ value,
156
+ originalValue,
157
+ hasLogic,
158
+ mixinUsed,
159
+ };
160
+ this.fields.set(fieldName, field);
161
+ logger_1.logger.debug('Field tracked', { fieldName, status, hasLogic });
162
+ }
163
+ /**
164
+ * Apply field tracking to processed content by wrapping fields with appropriate CSS classes
165
+ */
166
+ applyFieldTracking(content) {
167
+ let processedContent = content;
168
+ this.fields.forEach((field, fieldName) => {
169
+ const cssClass = this.getFieldCssClass(field.status);
170
+ // Create regex to find field references in the content
171
+ // This looks for {{fieldName}} patterns that haven't been processed yet
172
+ const fieldPattern = new RegExp(`\\{\\{\\s*${fieldName}\\s*\\}\\}`, 'g');
173
+ // If the field has a value, look for the rendered value in the content
174
+ if (field.value !== undefined && field.value !== null && field.value !== '') {
175
+ const valuePattern = new RegExp(`(?<!<span[^>]*>)${this.escapeRegex(String(field.value))}(?!</span>)`, 'g');
176
+ processedContent = processedContent.replace(valuePattern, match => {
177
+ return `<span class="${cssClass}" data-field="${fieldName}">${match}</span>`;
178
+ });
179
+ }
180
+ else {
181
+ // For empty fields, wrap the placeholder or empty space
182
+ processedContent = processedContent.replace(fieldPattern, match => {
183
+ return `<span class="${cssClass}" data-field="${fieldName}">[${fieldName}]</span>`;
184
+ });
185
+ }
186
+ });
187
+ this.processedContent = processedContent;
188
+ return processedContent;
189
+ }
190
+ /**
191
+ * Get CSS class for field based on its status
192
+ */
193
+ getFieldCssClass(status) {
194
+ switch (status) {
195
+ case FieldStatus.FILLED:
196
+ return 'imported-value';
197
+ case FieldStatus.EMPTY:
198
+ return 'missing-value';
199
+ case FieldStatus.LOGIC:
200
+ return 'highlight';
201
+ default:
202
+ return '';
203
+ }
204
+ }
205
+ /**
206
+ * Escape special regex characters in a string
207
+ */
208
+ escapeRegex(str) {
209
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
210
+ }
211
+ /**
212
+ * Get all tracked fields
213
+ */
214
+ getFields() {
215
+ return new Map(this.fields);
216
+ }
217
+ /**
218
+ * Get fields by status
219
+ */
220
+ getFieldsByStatus(status) {
221
+ return Array.from(this.fields.values()).filter(field => field.status === status);
222
+ }
223
+ /**
224
+ * Generate a summary report of tracked fields
225
+ */
226
+ generateReport() {
227
+ const fields = Array.from(this.fields.values());
228
+ return {
229
+ total: fields.length,
230
+ filled: fields.filter(f => f.status === FieldStatus.FILLED).length,
231
+ empty: fields.filter(f => f.status === FieldStatus.EMPTY).length,
232
+ logic: fields.filter(f => f.status === FieldStatus.LOGIC).length,
233
+ fields,
234
+ };
235
+ }
236
+ /**
237
+ * Clear all tracked fields
238
+ */
239
+ clear() {
240
+ this.fields.clear();
241
+ this.processedContent = '';
242
+ }
243
+ }
244
+ exports.FieldTracker = FieldTracker;
245
+ // Export singleton instance
246
+ exports.fieldTracker = new FieldTracker();
247
+ //# sourceMappingURL=field-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-tracker.js","sourceRoot":"","sources":["../../src/tracking/field-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * @fileoverview Type Definitions for Legal Markdown Processing
3
+ *
4
+ * This module contains TypeScript interface definitions and type declarations
5
+ * for the Legal Markdown processing system. It defines the structure for
6
+ * configuration options, processing results, and internal data structures.
7
+ *
8
+ * Features:
9
+ * - Processing configuration interfaces
10
+ * - YAML front matter parsing result types
11
+ * - Header processing option structures
12
+ * - Import and export result definitions
13
+ * - Metadata handling type definitions
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * import { LegalMarkdownOptions, YamlParsingResult } from './types';
18
+ *
19
+ * const options: LegalMarkdownOptions = {
20
+ * basePath: './documents',
21
+ * enableFieldTracking: true,
22
+ * exportFormat: 'yaml'
23
+ * };
24
+ *
25
+ * const result: YamlParsingResult = {
26
+ * content: 'processed content',
27
+ * metadata: { title: 'Document Title' }
28
+ * };
29
+ * ```
30
+ */
31
+ /**
32
+ * Configuration options for processing Legal Markdown documents
33
+ *
34
+ * @interface LegalMarkdownOptions
35
+ */
36
+ export interface LegalMarkdownOptions {
37
+ /**
38
+ * Base path for resolving imports
39
+ */
40
+ basePath?: string;
41
+ /**
42
+ * Process only YAML front matter
43
+ */
44
+ yamlOnly?: boolean;
45
+ /**
46
+ * Skip processing headers
47
+ */
48
+ noHeaders?: boolean;
49
+ /**
50
+ * Skip processing optional clauses
51
+ */
52
+ noClauses?: boolean;
53
+ /**
54
+ * Skip processing cross references
55
+ */
56
+ noReferences?: boolean;
57
+ /**
58
+ * Skip processing imports
59
+ */
60
+ noImports?: boolean;
61
+ /**
62
+ * Skip processing mixins
63
+ */
64
+ noMixins?: boolean;
65
+ /**
66
+ * Convert output to markdown format
67
+ */
68
+ toMarkdown?: boolean;
69
+ /**
70
+ * Export metadata to a file
71
+ */
72
+ exportMetadata?: boolean;
73
+ /**
74
+ * Format for metadata export (yaml or json)
75
+ */
76
+ exportFormat?: 'yaml' | 'json';
77
+ /**
78
+ * Path for metadata export
79
+ */
80
+ exportPath?: string;
81
+ /**
82
+ * Enable debug mode
83
+ */
84
+ debug?: boolean;
85
+ /**
86
+ * Throw errors on invalid YAML instead of handling gracefully
87
+ */
88
+ throwOnYamlError?: boolean;
89
+ /**
90
+ * Disable header numbering reset (continuous numbering)
91
+ */
92
+ noReset?: boolean;
93
+ /**
94
+ * Disable header indentation (flat formatting)
95
+ */
96
+ noIndent?: boolean;
97
+ /**
98
+ * Enable field tracking for highlighting
99
+ */
100
+ enableFieldTracking?: boolean;
101
+ }
102
+ /**
103
+ * Structure for YAML Front Matter parsing result
104
+ *
105
+ * @interface YamlParsingResult
106
+ */
107
+ export interface YamlParsingResult {
108
+ /**
109
+ * Content without the YAML front matter
110
+ */
111
+ content: string;
112
+ /**
113
+ * Parsed metadata from YAML front matter
114
+ */
115
+ metadata: Record<string, any>;
116
+ }
117
+ /**
118
+ * Structure for header processing options from metadata
119
+ *
120
+ * @interface HeaderOptions
121
+ */
122
+ export interface HeaderOptions {
123
+ /**
124
+ * Format for level one headers
125
+ */
126
+ levelOne?: string;
127
+ /**
128
+ * Format for level two headers
129
+ */
130
+ levelTwo?: string;
131
+ /**
132
+ * Format for level three headers
133
+ */
134
+ levelThree?: string;
135
+ /**
136
+ * Format for level four headers
137
+ */
138
+ levelFour?: string;
139
+ /**
140
+ * Format for level five headers
141
+ */
142
+ levelFive?: string;
143
+ /**
144
+ * Indentation level for headers
145
+ */
146
+ levelIndent?: number;
147
+ /**
148
+ * Disable header numbering reset (continuous numbering)
149
+ */
150
+ noReset?: boolean;
151
+ /**
152
+ * Disable header indentation (flat formatting)
153
+ */
154
+ noIndent?: boolean;
155
+ /**
156
+ * Enable field tracking for header styling
157
+ */
158
+ enableFieldTracking?: boolean;
159
+ }
160
+ /**
161
+ * Structure for import processing result
162
+ *
163
+ * @interface ImportProcessingResult
164
+ */
165
+ export interface ImportProcessingResult {
166
+ /**
167
+ * Content with imports processed
168
+ */
169
+ content: string;
170
+ /**
171
+ * List of imported files
172
+ */
173
+ importedFiles: string[];
174
+ }
175
+ /**
176
+ * Structure for metadata export result
177
+ *
178
+ * @interface MetadataExportResult
179
+ */
180
+ export interface MetadataExportResult {
181
+ /**
182
+ * List of exported files
183
+ */
184
+ exportedFiles: string[];
185
+ }
186
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE/B;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB"}
package/dist/types.js ADDED
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Type Definitions for Legal Markdown Processing
4
+ *
5
+ * This module contains TypeScript interface definitions and type declarations
6
+ * for the Legal Markdown processing system. It defines the structure for
7
+ * configuration options, processing results, and internal data structures.
8
+ *
9
+ * Features:
10
+ * - Processing configuration interfaces
11
+ * - YAML front matter parsing result types
12
+ * - Header processing option structures
13
+ * - Import and export result definitions
14
+ * - Metadata handling type definitions
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * import { LegalMarkdownOptions, YamlParsingResult } from './types';
19
+ *
20
+ * const options: LegalMarkdownOptions = {
21
+ * basePath: './documents',
22
+ * enableFieldTracking: true,
23
+ * exportFormat: 'yaml'
24
+ * };
25
+ *
26
+ * const result: YamlParsingResult = {
27
+ * content: 'processed content',
28
+ * metadata: { title: 'Document Title' }
29
+ * };
30
+ * ```
31
+ */
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * @fileoverview Lightweight Logging Utility for Legal Markdown Processing
3
+ *
4
+ * This module provides a simple, efficient logging utility for the Legal Markdown
5
+ * processing system. It offers structured logging with different levels and
6
+ * optional data context support.
7
+ *
8
+ * Features:
9
+ * - Multiple log levels (debug, info, warn, error)
10
+ * - Debug mode controlled by environment variable
11
+ * - Structured logging with contextual data
12
+ * - Console-based output with formatted prefixes
13
+ * - Optional data parameter for detailed logging
14
+ * - Lightweight with no external dependencies
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * import { logger } from './logger';
19
+ *
20
+ * // Basic logging
21
+ * logger.info('Processing legal document');
22
+ * logger.warn('Missing field detected');
23
+ * logger.error('Failed to parse YAML');
24
+ *
25
+ * // Logging with context data
26
+ * logger.debug('Field processed', { fieldName: 'client.name', value: 'Acme Corp' });
27
+ * logger.info('Document exported', { format: 'pdf', size: '2.3MB' });
28
+ * ```
29
+ */
30
+ /**
31
+ * Simple logger utility for Legal Markdown processing
32
+ *
33
+ * Provides structured logging with different levels and optional context data.
34
+ * Debug logging is only enabled when DEBUG environment variable is set.
35
+ *
36
+ * @constant {Object} logger
37
+ * @example
38
+ * ```typescript
39
+ * import { logger } from './logger';
40
+ *
41
+ * // Set DEBUG=true in environment to see debug logs
42
+ * logger.debug('Processing started', { file: 'contract.md' });
43
+ * logger.info('Document processed successfully');
44
+ * logger.warn('Optional field missing', { field: 'client.address' });
45
+ * logger.error('Processing failed', { error: 'Invalid syntax' });
46
+ * ```
47
+ */
48
+ export declare const logger: {
49
+ /**
50
+ * Log debug messages (only shown when DEBUG environment variable is set)
51
+ *
52
+ * @method debug
53
+ * @param {string} message - The debug message to log
54
+ * @param {any} [data] - Optional contextual data to include with the log
55
+ * @returns {void}
56
+ * @example
57
+ * ```typescript
58
+ * // Enable debug mode: DEBUG=true node app.js
59
+ * logger.debug('Processing field', { name: 'client.name', type: 'string' });
60
+ * logger.debug('Import resolved', { path: './shared/header.md' });
61
+ * ```
62
+ */
63
+ debug: (message: string, data?: any) => void;
64
+ /**
65
+ * Log informational messages
66
+ *
67
+ * @method info
68
+ * @param {string} message - The informational message to log
69
+ * @param {any} [data] - Optional contextual data to include with the log
70
+ * @returns {void}
71
+ * @example
72
+ * ```typescript
73
+ * logger.info('Document processing completed');
74
+ * logger.info('Export successful', { format: 'html', path: './output.html' });
75
+ * ```
76
+ */
77
+ info: (message: string, data?: any) => void;
78
+ /**
79
+ * Log warning messages
80
+ *
81
+ * @method warn
82
+ * @param {string} message - The warning message to log
83
+ * @param {any} [data] - Optional contextual data to include with the log
84
+ * @returns {void}
85
+ * @example
86
+ * ```typescript
87
+ * logger.warn('Missing optional field', { field: 'client.phone' });
88
+ * logger.warn('Import file not found', { path: './missing.md' });
89
+ * ```
90
+ */
91
+ warn: (message: string, data?: any) => void;
92
+ /**
93
+ * Log error messages
94
+ *
95
+ * @method error
96
+ * @param {string} message - The error message to log
97
+ * @param {any} [data] - Optional contextual data to include with the log
98
+ * @returns {void}
99
+ * @example
100
+ * ```typescript
101
+ * logger.error('Failed to parse YAML frontmatter', { error: 'Invalid syntax' });
102
+ * logger.error('Document processing failed', { file: 'contract.md', reason: 'Missing imports' });
103
+ * ```
104
+ */
105
+ error: (message: string, data?: any) => void;
106
+ };
107
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,MAAM;IACjB;;;;;;;;;;;;;OAaG;qBACc,MAAM,SAAS,GAAG;IAQnC;;;;;;;;;;;;OAYG;oBACa,MAAM,SAAS,GAAG;IAIlC;;;;;;;;;;;;OAYG;oBACa,MAAM,SAAS,GAAG;IAIlC;;;;;;;;;;;;OAYG;qBACc,MAAM,SAAS,GAAG;CAGpC,CAAC"}