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,97 @@
1
+ import { PandocParser, PandocOptions } from './pandoc-parser';
2
+ /**
3
+ * @fileoverview Pandoc Parser Factory for Cross-Platform Document Processing
4
+ *
5
+ * This module provides a factory pattern implementation for creating appropriate
6
+ * Pandoc parser instances based on the runtime environment. It automatically
7
+ * selects between native Pandoc (Node.js) and WASM-based Pandoc (browser)
8
+ * implementations to enable document conversion across platforms.
9
+ *
10
+ * Features:
11
+ * - Environment-aware parser selection (Node.js vs Browser)
12
+ * - Native Pandoc integration for server-side processing
13
+ * - WASM Pandoc support for client-side processing
14
+ * - Graceful fallback handling when Pandoc is unavailable
15
+ * - Lazy loading of WASM modules for performance
16
+ * - Unified interface across different implementations
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { PandocFactory } from './pandoc-factory';
21
+ *
22
+ * // Create a parser instance appropriate for the environment
23
+ * const parser = await PandocFactory.create({
24
+ * from: 'rst',
25
+ * to: 'json'
26
+ * });
27
+ *
28
+ * if (parser) {
29
+ * const result = await parser.parse(content);
30
+ * }
31
+ * ```
32
+ */
33
+ /**
34
+ * Factory class for creating appropriate Pandoc parser instances
35
+ *
36
+ * Provides static methods to create Pandoc parser instances based on the
37
+ * runtime environment, automatically choosing between native and WASM
38
+ * implementations for optimal performance and compatibility.
39
+ *
40
+ * @class PandocFactory
41
+ * @example
42
+ * ```typescript
43
+ * // Server-side usage (Node.js)
44
+ * const nodeParser = await PandocFactory.create({ from: 'latex' });
45
+ *
46
+ * // Client-side usage (Browser)
47
+ * const wasmParser = await PandocFactory.create({ from: 'rst' });
48
+ * ```
49
+ */
50
+ export declare class PandocFactory {
51
+ /**
52
+ * Creates a Pandoc parser instance based on the runtime environment
53
+ *
54
+ * Automatically selects the appropriate implementation:
55
+ * - Node.js: Uses native Pandoc binary via child process
56
+ * - Browser: Uses Pandoc WASM module for client-side processing
57
+ * Returns null if no suitable parser can be created.
58
+ *
59
+ * @static
60
+ * @async
61
+ * @param {PandocOptions} [options={}] - Configuration options for the parser
62
+ * @returns {Promise<PandocParser | null>} A promise that resolves to a parser instance or null
63
+ * @example
64
+ * ```typescript
65
+ * // Create parser for RST to JSON conversion
66
+ * const parser = await PandocFactory.create({
67
+ * from: 'rst',
68
+ * to: 'json'
69
+ * });
70
+ *
71
+ * if (parser) {
72
+ * const ast = await parser.parse(rstContent);
73
+ * console.log('Parsed AST:', ast);
74
+ * } else {
75
+ * console.log('Pandoc not available in this environment');
76
+ * }
77
+ * ```
78
+ */
79
+ static create(options?: PandocOptions): Promise<PandocParser | null>;
80
+ /**
81
+ * Create parser for specific content if pandoc is available
82
+ */
83
+ static createForContent(content: string, options?: PandocOptions): Promise<PandocParser | null>;
84
+ /**
85
+ * Check if pandoc is available in current environment
86
+ */
87
+ static isAvailable(): Promise<boolean>;
88
+ /**
89
+ * Get environment info for debugging
90
+ */
91
+ static getEnvironmentInfo(): {
92
+ environment: 'node' | 'browser';
93
+ pandocWasmLoaded: boolean;
94
+ pandocWasmInstance: any;
95
+ };
96
+ }
97
+ //# sourceMappingURL=pandoc-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pandoc-factory.d.ts","sourceRoot":"","sources":["../../src/parsers/pandoc-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAK9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,aAAa;IACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;WACU,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAwB9E;;OAEG;WACU,gBAAgB,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAW/B;;OAEG;WACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS5C;;OAEG;IACH,MAAM,CAAC,kBAAkB,IAAI;QAC3B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;QAChC,gBAAgB,EAAE,OAAO,CAAC;QAC1B,kBAAkB,EAAE,GAAG,CAAC;KACzB;CAWF"}
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PandocFactory = void 0;
4
+ const pandoc_loader_1 = require("./pandoc-loader");
5
+ const pandoc_native_1 = require("./implementations/pandoc-native");
6
+ const pandoc_wasm_1 = require("./implementations/pandoc-wasm");
7
+ /**
8
+ * @fileoverview Pandoc Parser Factory for Cross-Platform Document Processing
9
+ *
10
+ * This module provides a factory pattern implementation for creating appropriate
11
+ * Pandoc parser instances based on the runtime environment. It automatically
12
+ * selects between native Pandoc (Node.js) and WASM-based Pandoc (browser)
13
+ * implementations to enable document conversion across platforms.
14
+ *
15
+ * Features:
16
+ * - Environment-aware parser selection (Node.js vs Browser)
17
+ * - Native Pandoc integration for server-side processing
18
+ * - WASM Pandoc support for client-side processing
19
+ * - Graceful fallback handling when Pandoc is unavailable
20
+ * - Lazy loading of WASM modules for performance
21
+ * - Unified interface across different implementations
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * import { PandocFactory } from './pandoc-factory';
26
+ *
27
+ * // Create a parser instance appropriate for the environment
28
+ * const parser = await PandocFactory.create({
29
+ * from: 'rst',
30
+ * to: 'json'
31
+ * });
32
+ *
33
+ * if (parser) {
34
+ * const result = await parser.parse(content);
35
+ * }
36
+ * ```
37
+ */
38
+ /**
39
+ * Factory class for creating appropriate Pandoc parser instances
40
+ *
41
+ * Provides static methods to create Pandoc parser instances based on the
42
+ * runtime environment, automatically choosing between native and WASM
43
+ * implementations for optimal performance and compatibility.
44
+ *
45
+ * @class PandocFactory
46
+ * @example
47
+ * ```typescript
48
+ * // Server-side usage (Node.js)
49
+ * const nodeParser = await PandocFactory.create({ from: 'latex' });
50
+ *
51
+ * // Client-side usage (Browser)
52
+ * const wasmParser = await PandocFactory.create({ from: 'rst' });
53
+ * ```
54
+ */
55
+ class PandocFactory {
56
+ /**
57
+ * Creates a Pandoc parser instance based on the runtime environment
58
+ *
59
+ * Automatically selects the appropriate implementation:
60
+ * - Node.js: Uses native Pandoc binary via child process
61
+ * - Browser: Uses Pandoc WASM module for client-side processing
62
+ * Returns null if no suitable parser can be created.
63
+ *
64
+ * @static
65
+ * @async
66
+ * @param {PandocOptions} [options={}] - Configuration options for the parser
67
+ * @returns {Promise<PandocParser | null>} A promise that resolves to a parser instance or null
68
+ * @example
69
+ * ```typescript
70
+ * // Create parser for RST to JSON conversion
71
+ * const parser = await PandocFactory.create({
72
+ * from: 'rst',
73
+ * to: 'json'
74
+ * });
75
+ *
76
+ * if (parser) {
77
+ * const ast = await parser.parse(rstContent);
78
+ * console.log('Parsed AST:', ast);
79
+ * } else {
80
+ * console.log('Pandoc not available in this environment');
81
+ * }
82
+ * ```
83
+ */
84
+ static async create(options = {}) {
85
+ if (typeof window === 'undefined') {
86
+ // Node.js environment - use native pandoc
87
+ return new pandoc_native_1.PandocNative(options);
88
+ }
89
+ else {
90
+ // Browser environment - try to load pandoc-wasm
91
+ const pandocWasm = pandoc_loader_1.PandocLoader.getPandocWasm();
92
+ if (pandocWasm) {
93
+ return new pandoc_wasm_1.PandocWasm(pandocWasm, options);
94
+ }
95
+ else {
96
+ // Try to load pandoc-wasm if not already loaded
97
+ const loaded = await pandoc_loader_1.PandocLoader.loadIfNeeded('# dummy content to trigger loading');
98
+ if (loaded) {
99
+ const wasmInstance = pandoc_loader_1.PandocLoader.getPandocWasm();
100
+ if (wasmInstance) {
101
+ return new pandoc_wasm_1.PandocWasm(wasmInstance, options);
102
+ }
103
+ }
104
+ return null;
105
+ }
106
+ }
107
+ }
108
+ /**
109
+ * Create parser for specific content if pandoc is available
110
+ */
111
+ static async createForContent(content, options = {}) {
112
+ // Try to load pandoc only if content needs it
113
+ const loaded = await pandoc_loader_1.PandocLoader.loadIfNeeded(content);
114
+ if (!loaded) {
115
+ return null;
116
+ }
117
+ return this.create(options);
118
+ }
119
+ /**
120
+ * Check if pandoc is available in current environment
121
+ */
122
+ static async isAvailable() {
123
+ try {
124
+ const parser = await this.create();
125
+ return parser !== null;
126
+ }
127
+ catch (error) {
128
+ return false;
129
+ }
130
+ }
131
+ /**
132
+ * Get environment info for debugging
133
+ */
134
+ static getEnvironmentInfo() {
135
+ const environment = typeof window === 'undefined' ? 'node' : 'browser';
136
+ const pandocWasmInstance = pandoc_loader_1.PandocLoader.getPandocWasm();
137
+ const pandocWasmLoaded = pandocWasmInstance !== null;
138
+ return {
139
+ environment,
140
+ pandocWasmLoaded,
141
+ pandocWasmInstance,
142
+ };
143
+ }
144
+ }
145
+ exports.PandocFactory = PandocFactory;
146
+ //# sourceMappingURL=pandoc-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pandoc-factory.js","sourceRoot":"","sources":["../../src/parsers/pandoc-factory.ts"],"names":[],"mappings":";;;AACA,mDAA+C;AAC/C,mEAA+D;AAC/D,+DAA2D;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAa,aAAa;IACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAyB,EAAE;QAC7C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,0CAA0C;YAC1C,OAAO,IAAI,4BAAY,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,gDAAgD;YAChD,MAAM,UAAU,GAAG,4BAAY,CAAC,aAAa,EAAE,CAAC;YAEhD,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,IAAI,wBAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,gDAAgD;gBAChD,MAAM,MAAM,GAAG,MAAM,4BAAY,CAAC,YAAY,CAAC,oCAAoC,CAAC,CAAC;gBACrF,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,YAAY,GAAG,4BAAY,CAAC,aAAa,EAAE,CAAC;oBAClD,IAAI,YAAY,EAAE,CAAC;wBACjB,OAAO,IAAI,wBAAU,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;oBAC/C,CAAC;gBACH,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC3B,OAAe,EACf,UAAyB,EAAE;QAE3B,8CAA8C;QAC9C,MAAM,MAAM,GAAG,MAAM,4BAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW;QACtB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACnC,OAAO,MAAM,KAAK,IAAI,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,kBAAkB;QAKvB,MAAM,WAAW,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,MAAM,kBAAkB,GAAG,4BAAY,CAAC,aAAa,EAAE,CAAC;QACxD,MAAM,gBAAgB,GAAG,kBAAkB,KAAK,IAAI,CAAC;QAErD,OAAO;YACL,WAAW;YACX,gBAAgB;YAChB,kBAAkB;SACnB,CAAC;IACJ,CAAC;CACF;AApGD,sCAoGC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Dynamic pandoc loader with conditional loading
3
+ */
4
+ export declare class PandocLoader {
5
+ private static pandocWasm;
6
+ private static loadingPromise;
7
+ /**
8
+ * Loads pandoc only if content needs it
9
+ */
10
+ static loadIfNeeded(content: string): Promise<boolean>;
11
+ /**
12
+ * Get loaded pandoc instance
13
+ */
14
+ static getPandocWasm(): any;
15
+ /**
16
+ * Load pandoc-wasm module
17
+ */
18
+ private static loadPandocWasm;
19
+ /**
20
+ * Reset loader state (mainly for testing)
21
+ */
22
+ static reset(): void;
23
+ }
24
+ //# sourceMappingURL=pandoc-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pandoc-loader.d.ts","sourceRoot":"","sources":["../../src/parsers/pandoc-loader.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,UAAU,CAAa;IACtC,OAAO,CAAC,MAAM,CAAC,cAAc,CAA6B;IAE1D;;OAEG;WACU,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuC5D;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,GAAG;IAI3B;;OAEG;mBACkB,cAAc;IAuBnC;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;CAIrB"}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.PandocLoader = void 0;
37
+ const content_detector_1 = require("./content-detector");
38
+ /**
39
+ * Dynamic pandoc loader with conditional loading
40
+ */
41
+ class PandocLoader {
42
+ /**
43
+ * Loads pandoc only if content needs it
44
+ */
45
+ static async loadIfNeeded(content) {
46
+ if (!content_detector_1.ContentDetector.needsPandoc(content)) {
47
+ return false; // No necesita pandoc
48
+ }
49
+ if (typeof window === 'undefined') {
50
+ // Node.js environment - assume pandoc is available
51
+ return true;
52
+ }
53
+ // Browser environment - load pandoc-wasm
54
+ if (this.pandocWasm) {
55
+ return true; // Already loaded
56
+ }
57
+ if (this.loadingPromise) {
58
+ // Loading in progress, wait for it
59
+ try {
60
+ await this.loadingPromise;
61
+ return this.pandocWasm !== null;
62
+ }
63
+ catch (error) {
64
+ return false;
65
+ }
66
+ }
67
+ // Start loading
68
+ this.loadingPromise = this.loadPandocWasm();
69
+ try {
70
+ this.pandocWasm = await this.loadingPromise;
71
+ return true;
72
+ }
73
+ catch (error) {
74
+ console.warn('Failed to load pandoc-wasm:', error);
75
+ return false;
76
+ }
77
+ finally {
78
+ this.loadingPromise = null;
79
+ }
80
+ }
81
+ /**
82
+ * Get loaded pandoc instance
83
+ */
84
+ static getPandocWasm() {
85
+ return this.pandocWasm;
86
+ }
87
+ /**
88
+ * Load pandoc-wasm module
89
+ */
90
+ static async loadPandocWasm() {
91
+ try {
92
+ // Dynamic import for pandoc-wasm
93
+ const pandocModule = await Promise.resolve().then(() => __importStar(require('pandoc-wasm')));
94
+ // Initialize pandoc-wasm - different pandoc-wasm versions have different APIs
95
+ if (typeof pandocModule.init === 'function') {
96
+ return await pandocModule.init();
97
+ }
98
+ else if (typeof pandocModule.default === 'function') {
99
+ return await pandocModule.default();
100
+ }
101
+ else if (typeof pandocModule.default === 'object' &&
102
+ pandocModule.default.convert) {
103
+ return pandocModule.default;
104
+ }
105
+ else {
106
+ return pandocModule;
107
+ }
108
+ }
109
+ catch (error) {
110
+ throw new Error(`Failed to load pandoc-wasm: ${error.message}`);
111
+ }
112
+ }
113
+ /**
114
+ * Reset loader state (mainly for testing)
115
+ */
116
+ static reset() {
117
+ this.pandocWasm = null;
118
+ this.loadingPromise = null;
119
+ }
120
+ }
121
+ exports.PandocLoader = PandocLoader;
122
+ PandocLoader.pandocWasm = null;
123
+ PandocLoader.loadingPromise = null;
124
+ //# sourceMappingURL=pandoc-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pandoc-loader.js","sourceRoot":"","sources":["../../src/parsers/pandoc-loader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAAqD;AAErD;;GAEG;AACH,MAAa,YAAY;IAIvB;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAe;QACvC,IAAI,CAAC,kCAAe,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC,CAAC,qBAAqB;QACrC,CAAC;QAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,mDAAmD;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yCAAyC;QACzC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,CAAC,iBAAiB;QAChC,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,mCAAmC;YACnC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,cAAc,CAAC;gBAC1B,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC;YAClC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5C,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,KAAK,CAAC;QACf,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,cAAc;QACjC,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,YAAY,GAAG,wDAAa,aAAa,GAAC,CAAC;YAEjD,8EAA8E;YAC9E,IAAI,OAAQ,YAAoB,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACrD,OAAO,MAAO,YAAoB,CAAC,IAAI,EAAE,CAAC;YAC5C,CAAC;iBAAM,IAAI,OAAQ,YAAoB,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC/D,OAAO,MAAO,YAAoB,CAAC,OAAO,EAAE,CAAC;YAC/C,CAAC;iBAAM,IACL,OAAQ,YAAoB,CAAC,OAAO,KAAK,QAAQ;gBAChD,YAAoB,CAAC,OAAO,CAAC,OAAO,EACrC,CAAC;gBACD,OAAQ,YAAoB,CAAC,OAAO,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,OAAO,YAAY,CAAC;YACtB,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK;QACV,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,CAAC;;AArFH,oCAsFC;AArFgB,uBAAU,GAAQ,IAAI,CAAC;AACvB,2BAAc,GAAwB,IAAI,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Common interface for pandoc parsers
3
+ */
4
+ export interface PandocParser {
5
+ /**
6
+ * Convert content from one format to another
7
+ */
8
+ convert(content: string, from: 'rst' | 'latex', to: 'markdown'): Promise<string>;
9
+ }
10
+ /**
11
+ * Parser configuration options
12
+ */
13
+ export interface PandocOptions {
14
+ /**
15
+ * Additional pandoc arguments
16
+ */
17
+ args?: string[];
18
+ /**
19
+ * Timeout for conversion in milliseconds
20
+ */
21
+ timeout?: number;
22
+ /**
23
+ * Enable verbose output
24
+ */
25
+ verbose?: boolean;
26
+ }
27
+ //# sourceMappingURL=pandoc-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pandoc-parser.d.ts","sourceRoot":"","sources":["../../src/parsers/pandoc-parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,OAAO,EAAE,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAClF;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=pandoc-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pandoc-parser.js","sourceRoot":"","sources":["../../src/parsers/pandoc-parser.ts"],"names":[],"mappings":""}
@@ -0,0 +1,125 @@
1
+ /* Default CSS for Legal Markdown HTML Generation */
2
+
3
+ /* Base styles */
4
+ body {
5
+ font-family: -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
6
+ line-height: 1.6;
7
+ color: #333;
8
+ max-width: 800px;
9
+ margin: 0 auto;
10
+ padding: 20px;
11
+ }
12
+
13
+ /* Print styles */
14
+ @media print {
15
+ body {
16
+ max-width: 100%;
17
+ margin: 0;
18
+ padding: 0;
19
+ }
20
+ .no-break {
21
+ page-break-inside: avoid;
22
+ }
23
+ .page-break-before {
24
+ page-break-before: always;
25
+ }
26
+ }
27
+
28
+ /* Table responsiveness */
29
+ .table-responsive {
30
+ overflow-x: auto;
31
+ -webkit-overflow-scrolling: touch;
32
+ }
33
+
34
+ table {
35
+ border-collapse: collapse;
36
+ width: 100%;
37
+ margin: 1em 0;
38
+ }
39
+
40
+ th,
41
+ td {
42
+ border: 1px solid #ddd;
43
+ padding: 8px;
44
+ text-align: left;
45
+ }
46
+
47
+ th {
48
+ background-color: #f5f5f5;
49
+ font-weight: bold;
50
+ }
51
+
52
+ /* Code blocks */
53
+ pre {
54
+ background-color: #f5f5f5;
55
+ padding: 1em;
56
+ border-radius: 4px;
57
+ overflow-x: auto;
58
+ }
59
+
60
+ code {
61
+ background-color: #f5f5f5;
62
+ padding: 0.2em 0.4em;
63
+ border-radius: 3px;
64
+ font-size: 0.9em;
65
+ }
66
+
67
+ /* Lists */
68
+ ul,
69
+ ol {
70
+ margin: 1em 0;
71
+ padding-left: 2em;
72
+ }
73
+
74
+ /* Links */
75
+ a {
76
+ color: #0066cc;
77
+ text-decoration: none;
78
+ }
79
+
80
+ a:hover {
81
+ text-decoration: underline;
82
+ }
83
+
84
+ /* Headings */
85
+ h1,
86
+ h2,
87
+ h3,
88
+ h4,
89
+ h5,
90
+ h6,
91
+ .legal-header-level-1,
92
+ .legal-header-level-2,
93
+ .legal-header-level-3,
94
+ .legal-header-level-4,
95
+ .legal-header-level-5,
96
+ .legal-header-level-6 {
97
+ margin-top: 1.5em;
98
+ margin-bottom: 0.5em;
99
+ font-weight: 600;
100
+ }
101
+
102
+ h1,
103
+ .legal-header-level-1 {
104
+ font-size: 2em;
105
+ }
106
+ h2,
107
+ .legal-header-level-2 {
108
+ font-size: 1.5em;
109
+ }
110
+ h3,
111
+ .legal-header-level-3 {
112
+ font-size: 1.25em;
113
+ }
114
+ h4,
115
+ .legal-header-level-4 {
116
+ font-size: 1.1em;
117
+ }
118
+ h5,
119
+ .legal-header-level-5 {
120
+ font-size: 1em;
121
+ }
122
+ h6,
123
+ .legal-header-level-6 {
124
+ font-size: 0.9em;
125
+ }