legal-markdown-js 2.15.0 → 2.16.1
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.
- package/dist/browser.d.ts +5 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +25 -3
- package/dist/browser.js.map +1 -1
- package/dist/cli/interactive/index.js +88 -35
- package/dist/cli/interactive/index.js.map +1 -1
- package/dist/cli/interactive/prompts/file-selector.js +5 -80
- package/dist/cli/interactive/prompts/file-selector.js.map +1 -1
- package/dist/cli/interactive/prompts/ftux-handler.d.ts +20 -0
- package/dist/cli/interactive/prompts/ftux-handler.d.ts.map +1 -0
- package/dist/cli/interactive/prompts/ftux-handler.js +356 -0
- package/dist/cli/interactive/prompts/ftux-handler.js.map +1 -0
- package/dist/cli/interactive/utils/file-input-helpers.d.ts +17 -0
- package/dist/cli/interactive/utils/file-input-helpers.d.ts.map +1 -0
- package/dist/cli/interactive/utils/file-input-helpers.js +96 -0
- package/dist/cli/interactive/utils/file-input-helpers.js.map +1 -0
- package/dist/cli/interactive/utils/installation-detector.d.ts +33 -0
- package/dist/cli/interactive/utils/installation-detector.d.ts.map +1 -0
- package/dist/cli/interactive/utils/installation-detector.js +107 -0
- package/dist/cli/interactive/utils/installation-detector.js.map +1 -0
- package/dist/examples/README.md +267 -0
- package/dist/examples/advanced/complex-nda/README.md +40 -0
- package/dist/examples/advanced/complex-nda/examples/output/nda-metadata.yaml +16 -0
- package/dist/examples/advanced/complex-nda/nda-data.json +71 -0
- package/dist/examples/advanced/complex-nda/nda-template.md +52 -0
- package/dist/examples/advanced/complex-nda/nda-with-data.md +107 -0
- package/dist/examples/advanced/complex-nda/run.sh +59 -0
- package/dist/examples/advanced/office-lease-complete/README.md +41 -0
- package/dist/examples/advanced/office-lease-complete/lease-agreement.md +217 -0
- package/dist/examples/advanced/office-lease-complete/lease-data.json +123 -0
- package/dist/examples/advanced/office-lease-complete/lease-with-data.md +283 -0
- package/dist/examples/advanced/office-lease-complete/run.sh +62 -0
- package/dist/examples/basic-processing/simple-document/README.md +39 -0
- package/dist/examples/basic-processing/simple-document/example.html +64 -0
- package/dist/examples/basic-processing/simple-document/example.md +92 -0
- package/dist/examples/basic-processing/simple-document/example.output.md +64 -0
- package/dist/examples/basic-processing/simple-document/examples/output/metadata.json +20 -0
- package/dist/examples/basic-processing/simple-document/input.html +34 -0
- package/dist/examples/basic-processing/simple-document/input.md +12 -0
- package/dist/examples/basic-processing/simple-document/input.output.md +6 -0
- package/dist/examples/basic-processing/simple-document/run.sh +46 -0
- package/dist/examples/basic-processing/yaml-frontmatter/README.md +37 -0
- package/dist/examples/basic-processing/yaml-frontmatter/document.md +72 -0
- package/dist/examples/basic-processing/yaml-frontmatter/run.sh +45 -0
- package/dist/examples/cross-references/basic-references/README.md +37 -0
- package/dist/examples/cross-references/basic-references/agreement.md +111 -0
- package/dist/examples/cross-references/basic-references/correct-example.md +60 -0
- package/dist/examples/cross-references/basic-references/internal-references.md +48 -0
- package/dist/examples/cross-references/basic-references/run.sh +46 -0
- package/dist/examples/cross-references/complex-references/agreement-data.json +24 -0
- package/dist/examples/data/advanced-metadata.json +8 -0
- package/dist/examples/data/agreement-metadata.json +24 -0
- package/dist/examples/data/ticket-data.json +71 -0
- package/dist/examples/force-commands/README.md +164 -0
- package/dist/examples/force-commands/contract-with-forced-options.md +75 -0
- package/dist/examples/headers/header-tracking/README.md +35 -0
- package/dist/examples/headers/header-tracking/run.sh +40 -0
- package/dist/examples/headers/header-tracking/tracked-document.md +32 -0
- package/dist/examples/headers/mixed-header-styles/README.md +35 -0
- package/dist/examples/headers/mixed-header-styles/document.md +48 -0
- package/dist/examples/headers/mixed-header-styles/run.sh +40 -0
- package/dist/examples/headers/multiple-headers/README.md +35 -0
- package/dist/examples/headers/multiple-headers/contract.md +61 -0
- package/dist/examples/headers/multiple-headers/run.sh +40 -0
- package/dist/examples/imports/frontmatter-merging/README.md +268 -0
- package/dist/examples/imports/frontmatter-merging/components/client-info.md +139 -0
- package/dist/examples/imports/frontmatter-merging/components/service-levels.md +178 -0
- package/dist/examples/imports/frontmatter-merging/components/standard-terms.md +100 -0
- package/dist/examples/imports/frontmatter-merging/main-contract.md +169 -0
- package/dist/examples/imports/frontmatter-merging/output/contract-metadata.json +220 -0
- package/dist/examples/imports/frontmatter-merging/output/contract-metadata.yaml +182 -0
- package/dist/examples/imports/frontmatter-merging/run.sh +274 -0
- package/dist/examples/imports/frontmatter-merging/templates/basic-service-agreement.md +83 -0
- package/dist/examples/imports/frontmatter-merging/templates/complex-enterprise-contract.md +260 -0
- package/dist/examples/imports/frontmatter-merging/templates/output/enterprise-contract-metadata.json +226 -0
- package/dist/examples/imports/frontmatter-merging/templates/output/enterprise-contract-metadata.yaml +188 -0
- package/dist/examples/imports/partial-imports/README.md +38 -0
- package/dist/examples/imports/partial-imports/clauses/confidentiality.md +12 -0
- package/dist/examples/imports/partial-imports/main-contract.md +52 -0
- package/dist/examples/imports/partial-imports/partials/footer.md +3 -0
- package/dist/examples/imports/partial-imports/partials/header.md +3 -0
- package/dist/examples/imports/partial-imports/partials/terms.md +3 -0
- package/dist/examples/imports/partial-imports/run.sh +48 -0
- package/dist/examples/input/README.md +66 -0
- package/dist/examples/input/demo-contract.md +60 -0
- package/dist/examples/input/example.md +92 -0
- package/dist/examples/input/examples/output/metadata.json +20 -0
- package/dist/examples/input/metadata-example.md +94 -0
- package/dist/examples/input/office-lease-with-data.md +297 -0
- package/dist/examples/input/purchase-ticket.md +94 -0
- package/dist/examples/input/simple-contract.md +61 -0
- package/dist/examples/input/ticket-with-data.md +92 -0
- package/dist/examples/input/ticket.md +52 -0
- package/dist/examples/integration/cli-usage/README.md +40 -0
- package/dist/examples/integration/cli-usage/demo-contract.md +60 -0
- package/dist/examples/integration/cli-usage/run.sh +62 -0
- package/dist/examples/integration/cli-usage/simple-contract.md +61 -0
- package/dist/examples/mixins/helper-functions/README.md +36 -0
- package/dist/examples/mixins/helper-functions/contract-data.json +8 -0
- package/dist/examples/mixins/helper-functions/formatted-contract.md +45 -0
- package/dist/examples/mixins/helper-functions/run.sh +55 -0
- package/dist/examples/mixins/template-loops/README.md +34 -0
- package/dist/examples/mixins/template-loops/items-list.md +56 -0
- package/dist/examples/mixins/template-loops/run.sh +40 -0
- package/dist/examples/optional-clauses/boolean-logic/README.md +34 -0
- package/dist/examples/optional-clauses/boolean-logic/complex-conditions.md +101 -0
- package/dist/examples/optional-clauses/boolean-logic/examples/output/nda-metadata.yaml +10 -0
- package/dist/examples/optional-clauses/boolean-logic/run.sh +40 -0
- package/dist/examples/optional-clauses/conditional-content/README.md +35 -0
- package/dist/examples/optional-clauses/conditional-content/nda-template.md +82 -0
- package/dist/examples/optional-clauses/conditional-content/run.sh +40 -0
- package/dist/examples/output/demo-contract-simple.md +44 -0
- package/dist/examples/output-formats/metadata-export/README.md +36 -0
- package/dist/examples/output-formats/metadata-export/document-with-meta.md +94 -0
- package/dist/examples/output-formats/metadata-export/run.sh +44 -0
- package/dist/examples/output-formats/pdf-generation/README.md +36 -0
- package/dist/examples/output-formats/pdf-generation/printable-agreement.md +200 -0
- package/dist/examples/output-formats/pdf-generation/run.sh +44 -0
- package/dist/examples/run-all.sh +105 -0
- package/dist/examples/styles/contract.css +346 -0
- package/dist/examples/styles/ticket.css +100 -0
- package/dist/examples/templates/README.md +30 -0
- package/dist/examples/templates/run.sh +101 -0
- package/dist/legal-markdown.umd.min.js +1 -1
- package/dist/legal-markdown.umd.min.js.map +1 -1
- package/dist/web/index.html +37 -1
- package/dist/web/legal-markdown.umd.min.js +1 -1
- package/dist/web/standalone.html +1 -1
- package/package.json +3 -2
package/dist/browser.d.ts
CHANGED
|
@@ -34,6 +34,8 @@
|
|
|
34
34
|
*/
|
|
35
35
|
import { fieldTracker } from './extensions/tracking/field-tracker';
|
|
36
36
|
import { LegalMarkdownOptions } from './types';
|
|
37
|
+
declare function processLegalMarkdownWithRemark(content: string, options?: any): Promise<any>;
|
|
38
|
+
declare function processLegalMarkdownWithRemarkSync(content: string, options?: any): any;
|
|
37
39
|
/**
|
|
38
40
|
* Browser-compatible version of Legal Markdown processing
|
|
39
41
|
*
|
|
@@ -85,5 +87,8 @@ export declare function processLegalMarkdown(content: string, options?: Omit<Leg
|
|
|
85
87
|
*/
|
|
86
88
|
export declare const LegalMarkdown: {
|
|
87
89
|
processLegalMarkdown: typeof processLegalMarkdown;
|
|
90
|
+
processLegalMarkdownWithRemark: typeof processLegalMarkdownWithRemark;
|
|
91
|
+
processLegalMarkdownWithRemarkSync: typeof processLegalMarkdownWithRemarkSync;
|
|
88
92
|
};
|
|
93
|
+
export {};
|
|
89
94
|
//# sourceMappingURL=browser.d.ts.map
|
package/dist/browser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AA6CH,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AA6CH,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAG/C,iBAAS,8BAA8B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAKxF;AAED,iBAAS,kCAAkC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ,GAAG,GAAG,CAKnF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,IAAI,CAAC,oBAAoB,EAAE,UAAU,GAAG,YAAY,CAAM,GAClE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,cAAc,CAAC,CAAC;CAC9D,CAkGA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,aAAa;;;;CAIzB,CAAC"}
|
package/dist/browser.js
CHANGED
|
@@ -75,6 +75,16 @@ if (typeof window === 'undefined') {
|
|
|
75
75
|
}
|
|
76
76
|
import { fieldTracker } from './extensions/tracking/field-tracker.js';
|
|
77
77
|
import { logger } from './utils/logger.js';
|
|
78
|
+
// Placeholder functions for Remark processing - will be replaced with actual implementations
|
|
79
|
+
// These are fallback implementations that use the basic processor
|
|
80
|
+
function processLegalMarkdownWithRemark(content, options = {}) {
|
|
81
|
+
console.warn('Using fallback processor - Remark functions not fully implemented in browser bundle');
|
|
82
|
+
return Promise.resolve(processLegalMarkdown(content, options));
|
|
83
|
+
}
|
|
84
|
+
function processLegalMarkdownWithRemarkSync(content, options = {}) {
|
|
85
|
+
console.warn('Using fallback processor - Remark functions not fully implemented in browser bundle');
|
|
86
|
+
return processLegalMarkdown(content, options);
|
|
87
|
+
}
|
|
78
88
|
/**
|
|
79
89
|
* Browser-compatible version of Legal Markdown processing
|
|
80
90
|
*
|
|
@@ -203,11 +213,23 @@ export function processLegalMarkdown(content, options = {}) {
|
|
|
203
213
|
* ```
|
|
204
214
|
*/
|
|
205
215
|
export const LegalMarkdown = {
|
|
206
|
-
processLegalMarkdown,
|
|
216
|
+
processLegalMarkdown: processLegalMarkdown,
|
|
217
|
+
processLegalMarkdownWithRemark: processLegalMarkdownWithRemark,
|
|
218
|
+
processLegalMarkdownWithRemarkSync: processLegalMarkdownWithRemarkSync,
|
|
207
219
|
};
|
|
208
|
-
// Create global window object for script tag usage
|
|
220
|
+
// Create global window object for script tag usage with explicit assignments
|
|
209
221
|
if (typeof window !== 'undefined') {
|
|
210
222
|
// eslint-disable-next-line no-undef
|
|
211
|
-
window.LegalMarkdown =
|
|
223
|
+
window.LegalMarkdown = {
|
|
224
|
+
processLegalMarkdown: processLegalMarkdown,
|
|
225
|
+
processLegalMarkdownWithRemark: processLegalMarkdownWithRemark,
|
|
226
|
+
processLegalMarkdownWithRemarkSync: processLegalMarkdownWithRemarkSync,
|
|
227
|
+
};
|
|
228
|
+
// Debug logging to see what's being assigned
|
|
229
|
+
console.log('Browser bundle loaded - functions available:');
|
|
230
|
+
console.log(' processLegalMarkdown:', typeof processLegalMarkdown, processLegalMarkdown);
|
|
231
|
+
console.log(' processLegalMarkdownWithRemark:', typeof processLegalMarkdownWithRemark, processLegalMarkdownWithRemark);
|
|
232
|
+
console.log(' processLegalMarkdownWithRemarkSync:', typeof processLegalMarkdownWithRemarkSync, processLegalMarkdownWithRemarkSync);
|
|
233
|
+
console.log('Final window.LegalMarkdown:', window.LegalMarkdown);
|
|
212
234
|
}
|
|
213
235
|
//# sourceMappingURL=browser.js.map
|
package/dist/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,gDAAgD;AAChD,IAAI,6BAA0D,CAAC;AAC/D,IAAI,+BAA4D,CAAC;AAEjE,wCAAwC;AACxC,gGAAgG;AAChG,6BAA6B,GAAG,CAAC,OAAe,EAAE,EAAE;IAClD,uFAAuF;IACvF,uCAAuC;IACvC,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,+BAA+B,GAAG,CAAC,OAAe,EAAE,EAAE;IACpD,yFAAyF;IACzF,uCAAuC;IACvC,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,qEAAqE;AACrE,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IAClC,mDAAmD;IACnD,IAAI,CAAC;QACH,8DAA8D;QAC9D,MAAM,SAAS,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACrD,6BAA6B,GAAG,SAAS,CAAC,6BAA6B,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gBAAgB;IAClB,CAAC;IAED,IAAI,CAAC;QACH,8DAA8D;QAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;QACzD,+BAA+B,GAAG,WAAW,CAAC,+BAA+B,CAAC;IAChF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gBAAgB;IAClB,CAAC;AACH,CAAC;AACD,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,8 +29,85 @@ import { selectCssFile } from './prompts/css-selector.js';
|
|
|
29
29
|
import { promptOutputFilename } from './prompts/filename.js';
|
|
30
30
|
import { promptArchiveOptions } from './prompts/archive-options.js';
|
|
31
31
|
import { confirmConfiguration } from './prompts/confirmation.js';
|
|
32
|
+
import { handleFirstTimeUserExperience } from './prompts/ftux-handler.js';
|
|
32
33
|
import { InteractiveService } from './service.js';
|
|
33
34
|
import { formatSuccessMessage, formatErrorMessage } from './utils/format-helpers.js';
|
|
35
|
+
/**
|
|
36
|
+
* Run FTUX (First-Time User Experience) mode
|
|
37
|
+
*
|
|
38
|
+
* Provides a guided onboarding experience for new users with options to:
|
|
39
|
+
* - Set up configuration files
|
|
40
|
+
* - Try demo examples
|
|
41
|
+
* - Get help and tutorials
|
|
42
|
+
* - Browse for files manually
|
|
43
|
+
*
|
|
44
|
+
* @returns Promise that resolves when FTUX completes
|
|
45
|
+
* @throws Error when FTUX fails or user cancels
|
|
46
|
+
*/
|
|
47
|
+
async function runFtuxMode() {
|
|
48
|
+
try {
|
|
49
|
+
console.log(chalk.bold.blue('\n🌟 Legal Markdown - First-Time User Experience\n'));
|
|
50
|
+
console.log(chalk.gray("Welcome! Let's get you started with Legal Markdown processing.\n"));
|
|
51
|
+
// Run the FTUX flow
|
|
52
|
+
const selectedFile = await handleFirstTimeUserExperience();
|
|
53
|
+
// If a file was selected from FTUX, continue with normal processing
|
|
54
|
+
if (selectedFile) {
|
|
55
|
+
console.log(chalk.green(`\n✅ Selected: ${selectedFile}`));
|
|
56
|
+
console.log(chalk.gray('Continuing with normal processing flow...\n'));
|
|
57
|
+
// Continue with the normal interactive flow starting from step 2
|
|
58
|
+
await continueInteractiveFlow(selectedFile);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
if (error instanceof Error && error.message.includes('User force closed')) {
|
|
63
|
+
console.log(chalk.yellow('\n👋 Thanks for trying Legal Markdown!\n'));
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
console.log(formatErrorMessage(error instanceof Error ? error.message : String(error)));
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Continue interactive flow from a selected file (used after FTUX)
|
|
72
|
+
*
|
|
73
|
+
* @param inputFile - The file selected from FTUX
|
|
74
|
+
*/
|
|
75
|
+
async function continueInteractiveFlow(inputFile) {
|
|
76
|
+
// Step 2: Select output formats
|
|
77
|
+
const outputFormats = await selectOutputFormats();
|
|
78
|
+
// Step 3: Configure processing options
|
|
79
|
+
const processingOptions = await promptProcessingOptions(outputFormats);
|
|
80
|
+
// Step 4: Select CSS file (if needed)
|
|
81
|
+
const cssFile = await selectCssFile(outputFormats);
|
|
82
|
+
// Step 5: Enter output filename
|
|
83
|
+
const outputFilename = await promptOutputFilename(inputFile);
|
|
84
|
+
// Step 6: Configure archive options
|
|
85
|
+
const archiveResult = await promptArchiveOptions();
|
|
86
|
+
const archiveOptions = {
|
|
87
|
+
enabled: archiveResult.enableArchiving,
|
|
88
|
+
directory: archiveResult.archiveDirectory,
|
|
89
|
+
};
|
|
90
|
+
// Build configuration
|
|
91
|
+
const config = {
|
|
92
|
+
inputFile,
|
|
93
|
+
outputFilename,
|
|
94
|
+
outputFormats,
|
|
95
|
+
processingOptions,
|
|
96
|
+
archiveOptions,
|
|
97
|
+
cssFile,
|
|
98
|
+
};
|
|
99
|
+
// Step 7: Confirm configuration
|
|
100
|
+
const confirmed = await confirmConfiguration(config);
|
|
101
|
+
if (!confirmed) {
|
|
102
|
+
console.log(chalk.yellow('\n❌ Operation cancelled.\n'));
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
// Step 8: Process files
|
|
106
|
+
const service = new InteractiveService(config);
|
|
107
|
+
const result = await service.processFile(inputFile);
|
|
108
|
+
// Step 9: Show results
|
|
109
|
+
console.log(formatSuccessMessage(result.outputFiles, result.archiveResult));
|
|
110
|
+
}
|
|
34
111
|
/**
|
|
35
112
|
* Main interactive flow that guides users through the complete Legal Markdown processing workflow
|
|
36
113
|
*
|
|
@@ -53,40 +130,8 @@ async function runInteractiveMode() {
|
|
|
53
130
|
console.log(chalk.gray('Follow the prompts to configure your document processing.\n'));
|
|
54
131
|
// Step 1: Select input file
|
|
55
132
|
const inputFile = await selectInputFile();
|
|
56
|
-
//
|
|
57
|
-
|
|
58
|
-
// Step 3: Configure processing options
|
|
59
|
-
const processingOptions = await promptProcessingOptions(outputFormats);
|
|
60
|
-
// Step 4: Select CSS file (if needed)
|
|
61
|
-
const cssFile = await selectCssFile(outputFormats);
|
|
62
|
-
// Step 5: Enter output filename
|
|
63
|
-
const outputFilename = await promptOutputFilename(inputFile);
|
|
64
|
-
// Step 6: Configure archive options
|
|
65
|
-
const archiveResult = await promptArchiveOptions();
|
|
66
|
-
const archiveOptions = {
|
|
67
|
-
enabled: archiveResult.enableArchiving,
|
|
68
|
-
directory: archiveResult.archiveDirectory,
|
|
69
|
-
};
|
|
70
|
-
// Build configuration
|
|
71
|
-
const config = {
|
|
72
|
-
inputFile,
|
|
73
|
-
outputFilename,
|
|
74
|
-
outputFormats,
|
|
75
|
-
processingOptions,
|
|
76
|
-
archiveOptions,
|
|
77
|
-
cssFile,
|
|
78
|
-
};
|
|
79
|
-
// Step 7: Confirm configuration
|
|
80
|
-
const confirmed = await confirmConfiguration(config);
|
|
81
|
-
if (!confirmed) {
|
|
82
|
-
console.log(chalk.yellow('\n❌ Operation cancelled.\n'));
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
// Step 8: Process files
|
|
86
|
-
const service = new InteractiveService(config);
|
|
87
|
-
const result = await service.processFile(inputFile);
|
|
88
|
-
// Step 9: Show results
|
|
89
|
-
console.log(formatSuccessMessage(result.outputFiles, result.archiveResult));
|
|
133
|
+
// Continue with the rest of the flow
|
|
134
|
+
await continueInteractiveFlow(inputFile);
|
|
90
135
|
}
|
|
91
136
|
catch (error) {
|
|
92
137
|
if (error instanceof Error && error.message.includes('User force closed')) {
|
|
@@ -104,7 +149,15 @@ program
|
|
|
104
149
|
.name('legal-md-ui')
|
|
105
150
|
.description('Interactive CLI for Legal Markdown document processing')
|
|
106
151
|
.version('0.1.0')
|
|
107
|
-
.
|
|
152
|
+
.option('--ftux', 'Launch First-Time User Experience (setup wizard)')
|
|
153
|
+
.action(async (options) => {
|
|
154
|
+
if (options.ftux) {
|
|
155
|
+
await runFtuxMode();
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
await runInteractiveMode();
|
|
159
|
+
}
|
|
160
|
+
});
|
|
108
161
|
// Parse command line arguments
|
|
109
162
|
program.parse();
|
|
110
163
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/interactive/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAElF
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/interactive/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @module
|
|
9
9
|
*/
|
|
10
|
-
import { select
|
|
11
|
-
import * as path from 'path';
|
|
12
|
-
import * as fs from 'fs';
|
|
10
|
+
import { select } from '@inquirer/prompts';
|
|
13
11
|
import chalk from 'chalk';
|
|
14
12
|
import { RESOLVED_PATHS } from '../../../constants/index.js';
|
|
15
|
-
import { scanDirectory
|
|
13
|
+
import { scanDirectory } from '../utils/file-scanner.js';
|
|
16
14
|
import { formatWarningMessage } from '../utils/format-helpers.js';
|
|
15
|
+
import { handleFirstTimeUserExperience } from './ftux-handler.js';
|
|
16
|
+
import { handleBrowseFolder, handleManualInput } from '../utils/file-input-helpers.js';
|
|
17
17
|
/** Option for browsing alternative directories */
|
|
18
18
|
const BROWSE_OPTION = '📁 Browse other folder...';
|
|
19
19
|
/** Option for manual path entry */
|
|
@@ -35,7 +35,7 @@ export async function selectInputFile() {
|
|
|
35
35
|
const files = scanDirectory(RESOLVED_PATHS.DEFAULT_INPUT_DIR);
|
|
36
36
|
if (files.length === 0) {
|
|
37
37
|
console.log(formatWarningMessage('No supported files found in the default directory.'));
|
|
38
|
-
return await
|
|
38
|
+
return await handleFirstTimeUserExperience();
|
|
39
39
|
}
|
|
40
40
|
const choices = [
|
|
41
41
|
...files.map(file => ({
|
|
@@ -63,79 +63,4 @@ export async function selectInputFile() {
|
|
|
63
63
|
return selectedFile;
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
/**
|
|
67
|
-
* Handle browsing to a different folder
|
|
68
|
-
*/
|
|
69
|
-
async function handleBrowseFolder() {
|
|
70
|
-
const folderPath = await input({
|
|
71
|
-
message: 'Enter folder path to browse:',
|
|
72
|
-
default: RESOLVED_PATHS.DEFAULT_INPUT_DIR,
|
|
73
|
-
validate: (value) => {
|
|
74
|
-
const resolvedPath = path.resolve(value);
|
|
75
|
-
try {
|
|
76
|
-
if (!fs.existsSync(resolvedPath)) {
|
|
77
|
-
return 'Folder does not exist';
|
|
78
|
-
}
|
|
79
|
-
if (!fs.statSync(resolvedPath).isDirectory()) {
|
|
80
|
-
return 'Path is not a directory';
|
|
81
|
-
}
|
|
82
|
-
return true;
|
|
83
|
-
}
|
|
84
|
-
catch {
|
|
85
|
-
return 'Invalid folder path';
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
});
|
|
89
|
-
const resolvedPath = path.resolve(folderPath);
|
|
90
|
-
console.log(chalk.cyan(`🔍 Searching for files in: ${resolvedPath}\n`));
|
|
91
|
-
const files = scanDirectory(resolvedPath);
|
|
92
|
-
if (files.length === 0) {
|
|
93
|
-
console.log(formatWarningMessage('No supported files found in this directory.'));
|
|
94
|
-
return await handleManualInput();
|
|
95
|
-
}
|
|
96
|
-
const choices = [
|
|
97
|
-
...files.map(file => ({
|
|
98
|
-
name: file.name,
|
|
99
|
-
value: file.path,
|
|
100
|
-
})),
|
|
101
|
-
{ name: MANUAL_OPTION, value: MANUAL_OPTION },
|
|
102
|
-
{ name: EXIT_OPTION, value: EXIT_OPTION },
|
|
103
|
-
];
|
|
104
|
-
const selectedFile = await select({
|
|
105
|
-
message: 'Select an input file:',
|
|
106
|
-
choices,
|
|
107
|
-
});
|
|
108
|
-
if (selectedFile === MANUAL_OPTION) {
|
|
109
|
-
return await handleManualInput();
|
|
110
|
-
}
|
|
111
|
-
if (selectedFile === EXIT_OPTION) {
|
|
112
|
-
console.log(chalk.yellow('👋 Goodbye!'));
|
|
113
|
-
process.exit(0);
|
|
114
|
-
}
|
|
115
|
-
return selectedFile;
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Handle manual file path input
|
|
119
|
-
*/
|
|
120
|
-
async function handleManualInput() {
|
|
121
|
-
const filePath = await input({
|
|
122
|
-
message: 'Enter file path:',
|
|
123
|
-
validate: (value) => {
|
|
124
|
-
if (!value.trim()) {
|
|
125
|
-
return 'File path is required';
|
|
126
|
-
}
|
|
127
|
-
const resolvedPath = path.resolve(value.trim());
|
|
128
|
-
if (!isValidFile(resolvedPath)) {
|
|
129
|
-
return 'File does not exist or is not readable';
|
|
130
|
-
}
|
|
131
|
-
const ext = path.extname(resolvedPath).toLowerCase();
|
|
132
|
-
const supportedExts = ['.md', '.markdown', '.rst', '.tex', '.latex', '.txt'];
|
|
133
|
-
if (!supportedExts.includes(ext)) {
|
|
134
|
-
return `Unsupported file type. Supported: ${supportedExts.join(', ')}`;
|
|
135
|
-
}
|
|
136
|
-
return true;
|
|
137
|
-
},
|
|
138
|
-
});
|
|
139
|
-
return path.resolve(filePath.trim());
|
|
140
|
-
}
|
|
141
66
|
//# sourceMappingURL=file-selector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-selector.js","sourceRoot":"","sources":["../../../../src/cli/interactive/prompts/file-selector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"file-selector.js","sourceRoot":"","sources":["../../../../src/cli/interactive/prompts/file-selector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEpF,kDAAkD;AAClD,MAAM,aAAa,GAAG,2BAA2B,CAAC;AAClD,mCAAmC;AACnC,MAAM,aAAa,GAAG,2BAA2B,CAAC;AAClD,yCAAyC;AACzC,MAAM,WAAW,GAAG,QAAQ,CAAC;AAE7B;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,cAAc,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC;IAE5F,MAAM,KAAK,GAAG,aAAa,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAE9D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,oDAAoD,CAAC,CAAC,CAAC;QACxF,OAAO,MAAM,6BAA6B,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,OAAO,GAAG;QACd,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,IAAI;SACjB,CAAC,CAAC;QACH,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;QAC7C,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;QAC7C,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;KAC1C,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC;QAChC,OAAO,EAAE,uBAAuB;QAChC,OAAO;KACR,CAAC,CAAC;IAEH,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,aAAa;YAChB,OAAO,MAAM,kBAAkB,EAAE,CAAC;QACpC,KAAK,aAAa;YAChB,OAAO,MAAM,iBAAiB,EAAE,CAAC;QACnC,KAAK,WAAW;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM;QACR;YACE,OAAO,YAAY,CAAC;IACxB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* First Time User Experience (FTUX) handler for Interactive CLI
|
|
3
|
+
*
|
|
4
|
+
* This module provides an improved onboarding experience for new users
|
|
5
|
+
* when no files are found in the default directory, offering setup
|
|
6
|
+
* assistance, demo examples, and guided configuration.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Handle first-time user experience when no files are found
|
|
12
|
+
*
|
|
13
|
+
* Provides a friendly onboarding flow with multiple options to help
|
|
14
|
+
* new users get started with Legal Markdown processing.
|
|
15
|
+
*
|
|
16
|
+
* @returns Promise resolving to the selected input file path
|
|
17
|
+
* @throws Error when user cancels or no valid option is selected
|
|
18
|
+
*/
|
|
19
|
+
export declare function handleFirstTimeUserExperience(): Promise<string>;
|
|
20
|
+
//# sourceMappingURL=ftux-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ftux-handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/interactive/prompts/ftux-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAwCH;;;;;;;;GAQG;AACH,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,MAAM,CAAC,CAuCrE"}
|