mordoc 0.1.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/README.md +240 -0
- package/bin/cli.js +81 -0
- package/dist/build/Builder.d.ts +91 -0
- package/dist/build/Builder.d.ts.map +1 -0
- package/dist/build/Builder.js +391 -0
- package/dist/build/Builder.js.map +1 -0
- package/dist/build/ClientBundler.d.ts +36 -0
- package/dist/build/ClientBundler.d.ts.map +1 -0
- package/dist/build/ClientBundler.js +132 -0
- package/dist/build/ClientBundler.js.map +1 -0
- package/dist/build/HtmlGenerator.d.ts +46 -0
- package/dist/build/HtmlGenerator.d.ts.map +1 -0
- package/dist/build/HtmlGenerator.js +200 -0
- package/dist/build/HtmlGenerator.js.map +1 -0
- package/dist/build/SearchIndexer.d.ts +31 -0
- package/dist/build/SearchIndexer.d.ts.map +1 -0
- package/dist/build/SearchIndexer.js +116 -0
- package/dist/build/SearchIndexer.js.map +1 -0
- package/dist/cli/build.d.ts +20 -0
- package/dist/cli/build.d.ts.map +1 -0
- package/dist/cli/build.js +111 -0
- package/dist/cli/build.js.map +1 -0
- package/dist/cli/create-app.d.ts +14 -0
- package/dist/cli/create-app.d.ts.map +1 -0
- package/dist/cli/create-app.js +216 -0
- package/dist/cli/create-app.js.map +1 -0
- package/dist/cli/dev.d.ts +20 -0
- package/dist/cli/dev.d.ts.map +1 -0
- package/dist/cli/dev.js +169 -0
- package/dist/cli/dev.js.map +1 -0
- package/dist/client/App.d.ts +17 -0
- package/dist/client/App.d.ts.map +1 -0
- package/dist/client/App.js +94 -0
- package/dist/client/App.js.map +1 -0
- package/dist/client/contexts/ConfigContext.d.ts +22 -0
- package/dist/client/contexts/ConfigContext.d.ts.map +1 -0
- package/dist/client/contexts/ConfigContext.js +27 -0
- package/dist/client/contexts/ConfigContext.js.map +1 -0
- package/dist/client/contexts/ContentContext.d.ts +31 -0
- package/dist/client/contexts/ContentContext.d.ts.map +1 -0
- package/dist/client/contexts/ContentContext.js +46 -0
- package/dist/client/contexts/ContentContext.js.map +1 -0
- package/dist/client/contexts/SearchContext.d.ts +38 -0
- package/dist/client/contexts/SearchContext.d.ts.map +1 -0
- package/dist/client/contexts/SearchContext.js +207 -0
- package/dist/client/contexts/SearchContext.js.map +1 -0
- package/dist/client/contexts/ThemeContext.d.ts +23 -0
- package/dist/client/contexts/ThemeContext.d.ts.map +1 -0
- package/dist/client/contexts/ThemeContext.js +62 -0
- package/dist/client/contexts/ThemeContext.js.map +1 -0
- package/dist/client/hooks/useContent.d.ts +12 -0
- package/dist/client/hooks/useContent.d.ts.map +1 -0
- package/dist/client/hooks/useContent.js +74 -0
- package/dist/client/hooks/useContent.js.map +1 -0
- package/dist/client/hooks/useNavigation.d.ts +15 -0
- package/dist/client/hooks/useNavigation.d.ts.map +1 -0
- package/dist/client/hooks/useNavigation.js +101 -0
- package/dist/client/hooks/useNavigation.js.map +1 -0
- package/dist/client/hooks/useSearch.d.ts +22 -0
- package/dist/client/hooks/useSearch.d.ts.map +1 -0
- package/dist/client/hooks/useSearch.js +64 -0
- package/dist/client/hooks/useSearch.js.map +1 -0
- package/dist/client/main.d.ts +5 -0
- package/dist/client/main.d.ts.map +1 -0
- package/dist/client/main.js +66 -0
- package/dist/client/main.js.map +1 -0
- package/dist/components/Callout.d.ts +9 -0
- package/dist/components/Callout.d.ts.map +1 -0
- package/dist/components/Callout.js +24 -0
- package/dist/components/Callout.js.map +1 -0
- package/dist/components/Card.d.ts +10 -0
- package/dist/components/Card.d.ts.map +1 -0
- package/dist/components/Card.js +15 -0
- package/dist/components/Card.js.map +1 -0
- package/dist/components/CardGrid.d.ts +8 -0
- package/dist/components/CardGrid.d.ts.map +1 -0
- package/dist/components/CardGrid.js +9 -0
- package/dist/components/CardGrid.js.map +1 -0
- package/dist/components/CodeBlock.d.ts +24 -0
- package/dist/components/CodeBlock.d.ts.map +1 -0
- package/dist/components/CodeBlock.js +76 -0
- package/dist/components/CodeBlock.js.map +1 -0
- package/dist/components/ContentPage.d.ts +9 -0
- package/dist/components/ContentPage.d.ts.map +1 -0
- package/dist/components/ContentPage.js +36 -0
- package/dist/components/ContentPage.js.map +1 -0
- package/dist/components/Header.d.ts +14 -0
- package/dist/components/Header.d.ts.map +1 -0
- package/dist/components/Header.js +30 -0
- package/dist/components/Header.js.map +1 -0
- package/dist/components/Heading.d.ts +16 -0
- package/dist/components/Heading.d.ts.map +1 -0
- package/dist/components/Heading.js +31 -0
- package/dist/components/Heading.js.map +1 -0
- package/dist/components/Image.d.ts +8 -0
- package/dist/components/Image.d.ts.map +1 -0
- package/dist/components/Image.js +24 -0
- package/dist/components/Image.js.map +1 -0
- package/dist/components/Layout.d.ts +14 -0
- package/dist/components/Layout.d.ts.map +1 -0
- package/dist/components/Layout.js +32 -0
- package/dist/components/Layout.js.map +1 -0
- package/dist/components/MarkdocRenderer.d.ts +15 -0
- package/dist/components/MarkdocRenderer.d.ts.map +1 -0
- package/dist/components/MarkdocRenderer.js +73 -0
- package/dist/components/MarkdocRenderer.js.map +1 -0
- package/dist/components/MobileMenu.d.ts +14 -0
- package/dist/components/MobileMenu.d.ts.map +1 -0
- package/dist/components/MobileMenu.js +45 -0
- package/dist/components/MobileMenu.js.map +1 -0
- package/dist/components/PageNavigation.d.ts +9 -0
- package/dist/components/PageNavigation.d.ts.map +1 -0
- package/dist/components/PageNavigation.js +23 -0
- package/dist/components/PageNavigation.js.map +1 -0
- package/dist/components/SearchModal.d.ts +9 -0
- package/dist/components/SearchModal.d.ts.map +1 -0
- package/dist/components/SearchModal.js +74 -0
- package/dist/components/SearchModal.js.map +1 -0
- package/dist/components/SideNav.d.ts +9 -0
- package/dist/components/SideNav.d.ts.map +1 -0
- package/dist/components/SideNav.js +66 -0
- package/dist/components/SideNav.js.map +1 -0
- package/dist/components/TableOfContents.d.ts +10 -0
- package/dist/components/TableOfContents.d.ts.map +1 -0
- package/dist/components/TableOfContents.js +151 -0
- package/dist/components/TableOfContents.js.map +1 -0
- package/dist/config/ConfigLoader.d.ts +50 -0
- package/dist/config/ConfigLoader.d.ts.map +1 -0
- package/dist/config/ConfigLoader.js +214 -0
- package/dist/config/ConfigLoader.js.map +1 -0
- package/dist/config/StyleCompiler.d.ts +17 -0
- package/dist/config/StyleCompiler.d.ts.map +1 -0
- package/dist/config/StyleCompiler.js +116 -0
- package/dist/config/StyleCompiler.js.map +1 -0
- package/dist/config/ThemeGenerator.d.ts +14 -0
- package/dist/config/ThemeGenerator.d.ts.map +1 -0
- package/dist/config/ThemeGenerator.js +129 -0
- package/dist/config/ThemeGenerator.js.map +1 -0
- package/dist/content/ContentLoader.d.ts +70 -0
- package/dist/content/ContentLoader.d.ts.map +1 -0
- package/dist/content/ContentLoader.js +146 -0
- package/dist/content/ContentLoader.js.map +1 -0
- package/dist/content/ContentProcessor.d.ts +84 -0
- package/dist/content/ContentProcessor.d.ts.map +1 -0
- package/dist/content/ContentProcessor.js +380 -0
- package/dist/content/ContentProcessor.js.map +1 -0
- package/dist/content/RouteManager.d.ts +69 -0
- package/dist/content/RouteManager.d.ts.map +1 -0
- package/dist/content/RouteManager.js +143 -0
- package/dist/content/RouteManager.js.map +1 -0
- package/dist/styles/components/callout.d.ts +11 -0
- package/dist/styles/components/callout.d.ts.map +1 -0
- package/dist/styles/components/callout.js +83 -0
- package/dist/styles/components/callout.js.map +1 -0
- package/dist/styles/components/card.d.ts +11 -0
- package/dist/styles/components/card.d.ts.map +1 -0
- package/dist/styles/components/card.js +179 -0
- package/dist/styles/components/card.js.map +1 -0
- package/dist/styles/components/codeblock.d.ts +11 -0
- package/dist/styles/components/codeblock.d.ts.map +1 -0
- package/dist/styles/components/codeblock.js +249 -0
- package/dist/styles/components/codeblock.js.map +1 -0
- package/dist/styles/components/content.d.ts +11 -0
- package/dist/styles/components/content.d.ts.map +1 -0
- package/dist/styles/components/content.js +198 -0
- package/dist/styles/components/content.js.map +1 -0
- package/dist/styles/components/fonts.d.ts +11 -0
- package/dist/styles/components/fonts.d.ts.map +1 -0
- package/dist/styles/components/fonts.js +34 -0
- package/dist/styles/components/fonts.js.map +1 -0
- package/dist/styles/components/header.d.ts +11 -0
- package/dist/styles/components/header.d.ts.map +1 -0
- package/dist/styles/components/header.js +293 -0
- package/dist/styles/components/header.js.map +1 -0
- package/dist/styles/components/heading.d.ts +11 -0
- package/dist/styles/components/heading.d.ts.map +1 -0
- package/dist/styles/components/heading.js +115 -0
- package/dist/styles/components/heading.js.map +1 -0
- package/dist/styles/components/layout.d.ts +11 -0
- package/dist/styles/components/layout.d.ts.map +1 -0
- package/dist/styles/components/layout.js +79 -0
- package/dist/styles/components/layout.js.map +1 -0
- package/dist/styles/components/mobilemenu.d.ts +11 -0
- package/dist/styles/components/mobilemenu.d.ts.map +1 -0
- package/dist/styles/components/mobilemenu.js +112 -0
- package/dist/styles/components/mobilemenu.js.map +1 -0
- package/dist/styles/components/reset.d.ts +11 -0
- package/dist/styles/components/reset.d.ts.map +1 -0
- package/dist/styles/components/reset.js +131 -0
- package/dist/styles/components/reset.js.map +1 -0
- package/dist/styles/components/searchmodal.d.ts +11 -0
- package/dist/styles/components/searchmodal.d.ts.map +1 -0
- package/dist/styles/components/searchmodal.js +333 -0
- package/dist/styles/components/searchmodal.js.map +1 -0
- package/dist/styles/components/sidenav.d.ts +11 -0
- package/dist/styles/components/sidenav.d.ts.map +1 -0
- package/dist/styles/components/sidenav.js +209 -0
- package/dist/styles/components/sidenav.js.map +1 -0
- package/dist/styles/components/toc.d.ts +11 -0
- package/dist/styles/components/toc.d.ts.map +1 -0
- package/dist/styles/components/toc.js +112 -0
- package/dist/styles/components/toc.js.map +1 -0
- package/dist/styles/components/typography.d.ts +11 -0
- package/dist/styles/components/typography.d.ts.map +1 -0
- package/dist/styles/components/typography.js +247 -0
- package/dist/styles/components/typography.js.map +1 -0
- package/dist/styles/components/utility.d.ts +11 -0
- package/dist/styles/components/utility.d.ts.map +1 -0
- package/dist/styles/components/utility.js +231 -0
- package/dist/styles/components/utility.js.map +1 -0
- package/dist/styles/types.d.ts +79 -0
- package/dist/styles/types.d.ts.map +1 -0
- package/dist/styles/types.js +7 -0
- package/dist/styles/types.js.map +1 -0
- package/dist/styles/utils.d.ts +21 -0
- package/dist/styles/utils.d.ts.map +1 -0
- package/dist/styles/utils.js +50 -0
- package/dist/styles/utils.js.map +1 -0
- package/dist/styles/variables/main.d.ts +15 -0
- package/dist/styles/variables/main.d.ts.map +1 -0
- package/dist/styles/variables/main.js +116 -0
- package/dist/styles/variables/main.js.map +1 -0
- package/dist/types/config.d.ts +43 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +7 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/content.d.ts +46 -0
- package/dist/types/content.d.ts.map +1 -0
- package/dist/types/content.js +7 -0
- package/dist/types/content.js.map +1 -0
- package/dist/types/navigation.d.ts +45 -0
- package/dist/types/navigation.d.ts.map +1 -0
- package/dist/types/navigation.js +7 -0
- package/dist/types/navigation.js.map +1 -0
- package/dist/utils/language-utils.d.ts +41 -0
- package/dist/utils/language-utils.d.ts.map +1 -0
- package/dist/utils/language-utils.js +79 -0
- package/dist/utils/language-utils.js.map +1 -0
- package/dist/utils/slugify.d.ts +20 -0
- package/dist/utils/slugify.d.ts.map +1 -0
- package/dist/utils/slugify.js +44 -0
- package/dist/utils/slugify.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Create App command - Scaffolds a new Mordoc project
|
|
4
|
+
* Usage: createApp(projectName, options)
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.createApp = createApp;
|
|
11
|
+
const fs_1 = __importDefault(require("fs"));
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
const child_process_1 = require("child_process");
|
|
14
|
+
/**
|
|
15
|
+
* Create a new Mordoc documentation project
|
|
16
|
+
*/
|
|
17
|
+
async function createApp(projectName, options = {}) {
|
|
18
|
+
const startTime = Date.now();
|
|
19
|
+
try {
|
|
20
|
+
// Validate project name
|
|
21
|
+
validateProjectName(projectName);
|
|
22
|
+
// Determine project directory
|
|
23
|
+
const projectDir = path_1.default.resolve(process.cwd(), projectName);
|
|
24
|
+
// Check if directory already exists
|
|
25
|
+
if (fs_1.default.existsSync(projectDir)) {
|
|
26
|
+
console.error(`❌ Error: Directory "${projectName}" already exists`);
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
console.log(`\n📦 Creating new Mordoc project: ${projectName}\n`);
|
|
30
|
+
// Create project directory
|
|
31
|
+
console.log('Creating project directory...');
|
|
32
|
+
fs_1.default.mkdirSync(projectDir, { recursive: true });
|
|
33
|
+
// Copy template files
|
|
34
|
+
console.log('Copying template files...');
|
|
35
|
+
const templateName = options.template || 'default';
|
|
36
|
+
await copyTemplate(projectDir, templateName);
|
|
37
|
+
// Update package.json with project name
|
|
38
|
+
console.log('Configuring package.json...');
|
|
39
|
+
updatePackageJson(projectDir, projectName);
|
|
40
|
+
// Initialize git repository (unless --skip-git)
|
|
41
|
+
if (options.skipGit !== true) {
|
|
42
|
+
console.log('Initializing git repository...');
|
|
43
|
+
initGitRepo(projectDir);
|
|
44
|
+
}
|
|
45
|
+
// Install dependencies (unless --skip-install)
|
|
46
|
+
if (!options.skipInstall) {
|
|
47
|
+
console.log('Installing dependencies...');
|
|
48
|
+
installDependencies(projectDir);
|
|
49
|
+
}
|
|
50
|
+
// Calculate time
|
|
51
|
+
const duration = ((Date.now() - startTime) / 1000).toFixed(2);
|
|
52
|
+
// Show success message
|
|
53
|
+
showSuccessMessage(projectName, options.skipInstall || false, duration);
|
|
54
|
+
process.exit(0);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
console.error('\n❌ Failed to create project:');
|
|
58
|
+
console.error(error.message);
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Validate project name
|
|
64
|
+
*/
|
|
65
|
+
function validateProjectName(name) {
|
|
66
|
+
if (!name || name.trim() === '') {
|
|
67
|
+
throw new Error('Project name cannot be empty');
|
|
68
|
+
}
|
|
69
|
+
// Check for invalid characters
|
|
70
|
+
if (!/^[a-zA-Z0-9-_]+$/.test(name)) {
|
|
71
|
+
throw new Error('Project name can only contain letters, numbers, hyphens, and underscores');
|
|
72
|
+
}
|
|
73
|
+
// Check for reserved names
|
|
74
|
+
const reservedNames = ['node_modules', 'dist', 'build', 'public', 'src'];
|
|
75
|
+
if (reservedNames.includes(name.toLowerCase())) {
|
|
76
|
+
throw new Error(`"${name}" is a reserved name and cannot be used`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Copy template files to project directory
|
|
81
|
+
*/
|
|
82
|
+
async function copyTemplate(projectDir, templateName) {
|
|
83
|
+
// Get template directory
|
|
84
|
+
const templateDir = path_1.default.join(__dirname, '../../templates', templateName);
|
|
85
|
+
if (!fs_1.default.existsSync(templateDir)) {
|
|
86
|
+
throw new Error(`Template "${templateName}" not found`);
|
|
87
|
+
}
|
|
88
|
+
// Copy all files from template
|
|
89
|
+
copyDirectory(templateDir, projectDir);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Recursively copy directory
|
|
93
|
+
*/
|
|
94
|
+
function copyDirectory(src, dest) {
|
|
95
|
+
// Create destination directory
|
|
96
|
+
if (!fs_1.default.existsSync(dest)) {
|
|
97
|
+
fs_1.default.mkdirSync(dest, { recursive: true });
|
|
98
|
+
}
|
|
99
|
+
// Read source directory
|
|
100
|
+
const entries = fs_1.default.readdirSync(src, { withFileTypes: true });
|
|
101
|
+
for (const entry of entries) {
|
|
102
|
+
const srcPath = path_1.default.join(src, entry.name);
|
|
103
|
+
const destPath = path_1.default.join(dest, entry.name);
|
|
104
|
+
if (entry.isDirectory()) {
|
|
105
|
+
// Recursively copy subdirectory
|
|
106
|
+
copyDirectory(srcPath, destPath);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
// Copy file
|
|
110
|
+
fs_1.default.copyFileSync(srcPath, destPath);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Update package.json with project name
|
|
116
|
+
*/
|
|
117
|
+
function updatePackageJson(projectDir, projectName) {
|
|
118
|
+
const packageJsonPath = path_1.default.join(projectDir, 'package.json');
|
|
119
|
+
if (!fs_1.default.existsSync(packageJsonPath)) {
|
|
120
|
+
throw new Error('package.json not found in template');
|
|
121
|
+
}
|
|
122
|
+
// Read package.json
|
|
123
|
+
const packageJson = JSON.parse(fs_1.default.readFileSync(packageJsonPath, 'utf8'));
|
|
124
|
+
// Update name
|
|
125
|
+
packageJson.name = projectName;
|
|
126
|
+
// Write back
|
|
127
|
+
fs_1.default.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n', 'utf8');
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Initialize git repository
|
|
131
|
+
*/
|
|
132
|
+
function initGitRepo(projectDir) {
|
|
133
|
+
try {
|
|
134
|
+
(0, child_process_1.execSync)('git init', {
|
|
135
|
+
cwd: projectDir,
|
|
136
|
+
stdio: 'ignore',
|
|
137
|
+
});
|
|
138
|
+
// Create initial commit
|
|
139
|
+
(0, child_process_1.execSync)('git add .', {
|
|
140
|
+
cwd: projectDir,
|
|
141
|
+
stdio: 'ignore',
|
|
142
|
+
});
|
|
143
|
+
(0, child_process_1.execSync)('git commit -m "Initial commit"', {
|
|
144
|
+
cwd: projectDir,
|
|
145
|
+
stdio: 'ignore',
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
console.warn('Warning: Failed to initialize git repository');
|
|
150
|
+
console.warn('You can initialize it manually later with: git init');
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Install npm dependencies
|
|
155
|
+
*/
|
|
156
|
+
function installDependencies(projectDir) {
|
|
157
|
+
try {
|
|
158
|
+
console.log('\n Installing packages. This might take a moment...\n');
|
|
159
|
+
(0, child_process_1.execSync)('npm install', {
|
|
160
|
+
cwd: projectDir,
|
|
161
|
+
stdio: 'inherit', // Show npm output
|
|
162
|
+
});
|
|
163
|
+
console.log('');
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
console.warn('\nWarning: Failed to install dependencies');
|
|
167
|
+
console.warn('You can install them manually later with: npm install\n');
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Show success message with next steps
|
|
172
|
+
*/
|
|
173
|
+
function showSuccessMessage(projectName, skipInstall, duration) {
|
|
174
|
+
console.log(`\n✨ Success! Created ${projectName} in ${duration}s\n`);
|
|
175
|
+
console.log('Your documentation project is ready!\n');
|
|
176
|
+
console.log('Get started with:\n');
|
|
177
|
+
console.log(` cd ${projectName}`);
|
|
178
|
+
if (skipInstall) {
|
|
179
|
+
console.log(' npm install');
|
|
180
|
+
}
|
|
181
|
+
console.log(' npm run build');
|
|
182
|
+
console.log(' npm run dev\n');
|
|
183
|
+
console.log('Project structure:\n');
|
|
184
|
+
console.log(' content/ # Your markdown files');
|
|
185
|
+
console.log(' config/ # Configuration files');
|
|
186
|
+
console.log(' public/ # Static assets');
|
|
187
|
+
console.log(' dist/ # Generated site (after build)\n');
|
|
188
|
+
console.log('Next steps:\n');
|
|
189
|
+
console.log(' 1. Edit content in content/en/');
|
|
190
|
+
console.log(' 2. Customize navigation in config/sidenav.yaml');
|
|
191
|
+
console.log(' 3. Run npm run build to generate your site');
|
|
192
|
+
console.log(' 4. Run npm run dev to preview locally\n');
|
|
193
|
+
console.log('Happy documenting! 📚\n');
|
|
194
|
+
}
|
|
195
|
+
// Execute if run directly (not imported)
|
|
196
|
+
if (require.main === module) {
|
|
197
|
+
const args = process.argv.slice(2);
|
|
198
|
+
const projectName = args[0];
|
|
199
|
+
if (!projectName) {
|
|
200
|
+
console.error('Please specify a project name:');
|
|
201
|
+
console.error(' node dist/cli/create-app.js my-docs');
|
|
202
|
+
process.exit(1);
|
|
203
|
+
}
|
|
204
|
+
const options = {};
|
|
205
|
+
for (let i = 1; i < args.length; i++) {
|
|
206
|
+
const arg = args[i];
|
|
207
|
+
if (arg === '--skip-install') {
|
|
208
|
+
options.skipInstall = true;
|
|
209
|
+
}
|
|
210
|
+
else if (arg === '--skip-git') {
|
|
211
|
+
options.skipGit = true;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
createApp(projectName, options);
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=create-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-app.js","sourceRoot":"","sources":["../../src/cli/create-app.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dev command - Starts development server
|
|
3
|
+
* Serves the pre-built dist/ folder (MVP: no live reload, manual rebuild)
|
|
4
|
+
* Usage: mordoc dev [options]
|
|
5
|
+
*/
|
|
6
|
+
export interface DevCommandOptions {
|
|
7
|
+
projectRoot?: string;
|
|
8
|
+
port?: number;
|
|
9
|
+
host?: string;
|
|
10
|
+
open?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Execute the dev command
|
|
14
|
+
*/
|
|
15
|
+
export declare function dev(options?: DevCommandOptions): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Parse command-line arguments for dev command
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseDevArgs(args: string[]): DevCommandOptions;
|
|
20
|
+
//# sourceMappingURL=dev.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,GAAG,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyExE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAyC9D"}
|
package/dist/cli/dev.js
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Dev command - Starts development server
|
|
4
|
+
* Serves the pre-built dist/ folder (MVP: no live reload, manual rebuild)
|
|
5
|
+
* Usage: mordoc dev [options]
|
|
6
|
+
*/
|
|
7
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
+
};
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.dev = dev;
|
|
12
|
+
exports.parseDevArgs = parseDevArgs;
|
|
13
|
+
const path_1 = __importDefault(require("path"));
|
|
14
|
+
const fs_1 = __importDefault(require("fs"));
|
|
15
|
+
const http_1 = __importDefault(require("http"));
|
|
16
|
+
const sirv_1 = __importDefault(require("sirv"));
|
|
17
|
+
/**
|
|
18
|
+
* Execute the dev command
|
|
19
|
+
*/
|
|
20
|
+
async function dev(options = {}) {
|
|
21
|
+
try {
|
|
22
|
+
// Get project root
|
|
23
|
+
const projectRoot = options.projectRoot || process.cwd();
|
|
24
|
+
const distDir = path_1.default.join(projectRoot, 'dist');
|
|
25
|
+
// Check if dist/ exists
|
|
26
|
+
if (!fs_1.default.existsSync(distDir)) {
|
|
27
|
+
console.error('❌ Error: dist/ directory not found');
|
|
28
|
+
console.error('Please run "mordoc build" first to generate the static site.');
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
// Server configuration
|
|
32
|
+
const port = options.port || 3000;
|
|
33
|
+
const host = options.host || 'localhost';
|
|
34
|
+
// Create static file server using sirv
|
|
35
|
+
const serve = (0, sirv_1.default)(distDir, {
|
|
36
|
+
dev: true, // Development mode (no caching)
|
|
37
|
+
single: true, // SPA mode: serve index.html for 404s
|
|
38
|
+
etag: true,
|
|
39
|
+
});
|
|
40
|
+
// Create HTTP server
|
|
41
|
+
const server = http_1.default.createServer((req, res) => {
|
|
42
|
+
serve(req, res, () => {
|
|
43
|
+
// Fallback for 404s
|
|
44
|
+
res.statusCode = 404;
|
|
45
|
+
res.end('Not found');
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
// Start server
|
|
49
|
+
server.listen(port, host, () => {
|
|
50
|
+
console.log('\n🚀 Mordoc dev server started\n');
|
|
51
|
+
console.log(` Local: http://${host}:${port}`);
|
|
52
|
+
console.log(` Network: http://${getLocalIpAddress()}:${port}`);
|
|
53
|
+
console.log('\n📝 Note: This is serving the pre-built dist/ folder.');
|
|
54
|
+
console.log(' Run "mordoc build" to rebuild after making changes.\n');
|
|
55
|
+
console.log('Press Ctrl+C to stop the server');
|
|
56
|
+
});
|
|
57
|
+
// Handle server errors
|
|
58
|
+
server.on('error', (error) => {
|
|
59
|
+
if (error.code === 'EADDRINUSE') {
|
|
60
|
+
console.error(`❌ Error: Port ${port} is already in use`);
|
|
61
|
+
console.error(`Try a different port: mordoc dev --port ${port + 1}`);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
console.error('❌ Server error:', error.message);
|
|
65
|
+
}
|
|
66
|
+
process.exit(1);
|
|
67
|
+
});
|
|
68
|
+
// Graceful shutdown
|
|
69
|
+
process.on('SIGINT', () => {
|
|
70
|
+
console.log('\n\n👋 Shutting down dev server...');
|
|
71
|
+
server.close(() => {
|
|
72
|
+
console.log('✓ Server stopped');
|
|
73
|
+
process.exit(0);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
process.on('SIGTERM', () => {
|
|
77
|
+
server.close(() => {
|
|
78
|
+
process.exit(0);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
console.error('\n❌ Failed to start dev server:');
|
|
84
|
+
console.error(error.message);
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Parse command-line arguments for dev command
|
|
90
|
+
*/
|
|
91
|
+
function parseDevArgs(args) {
|
|
92
|
+
const options = {};
|
|
93
|
+
for (let i = 0; i < args.length; i++) {
|
|
94
|
+
const arg = args[i];
|
|
95
|
+
switch (arg) {
|
|
96
|
+
case '--port':
|
|
97
|
+
case '-p':
|
|
98
|
+
const portValue = parseInt(args[++i], 10);
|
|
99
|
+
if (isNaN(portValue)) {
|
|
100
|
+
console.error('Error: Invalid port number');
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
options.port = portValue;
|
|
104
|
+
break;
|
|
105
|
+
case '--host':
|
|
106
|
+
case '-h':
|
|
107
|
+
options.host = args[++i];
|
|
108
|
+
break;
|
|
109
|
+
case '--open':
|
|
110
|
+
case '-o':
|
|
111
|
+
options.open = true;
|
|
112
|
+
break;
|
|
113
|
+
case '--help':
|
|
114
|
+
showDevHelp();
|
|
115
|
+
process.exit(0);
|
|
116
|
+
break;
|
|
117
|
+
default:
|
|
118
|
+
if (arg.startsWith('-')) {
|
|
119
|
+
console.warn(`Warning: Unknown option ${arg}`);
|
|
120
|
+
}
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return options;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Show help text for dev command
|
|
128
|
+
*/
|
|
129
|
+
function showDevHelp() {
|
|
130
|
+
console.log(`
|
|
131
|
+
mordoc dev - Start development server
|
|
132
|
+
|
|
133
|
+
Usage:
|
|
134
|
+
mordoc dev [options]
|
|
135
|
+
|
|
136
|
+
Options:
|
|
137
|
+
-p, --port <number> Port number (default: 3000)
|
|
138
|
+
-h, --host <host> Host address (default: localhost)
|
|
139
|
+
-o, --open Open browser automatically
|
|
140
|
+
--help Show this help message
|
|
141
|
+
|
|
142
|
+
Note:
|
|
143
|
+
The dev server serves the pre-built dist/ folder.
|
|
144
|
+
Run "mordoc build" first to generate the site.
|
|
145
|
+
Rebuild manually after making changes.
|
|
146
|
+
|
|
147
|
+
Examples:
|
|
148
|
+
mordoc dev
|
|
149
|
+
mordoc dev --port 8080
|
|
150
|
+
mordoc dev --host 0.0.0.0
|
|
151
|
+
`);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get local IP address for network access
|
|
155
|
+
*/
|
|
156
|
+
function getLocalIpAddress() {
|
|
157
|
+
const { networkInterfaces } = require('os');
|
|
158
|
+
const nets = networkInterfaces();
|
|
159
|
+
for (const name of Object.keys(nets)) {
|
|
160
|
+
for (const net of nets[name]) {
|
|
161
|
+
// Skip internal and non-IPv4 addresses
|
|
162
|
+
if (net.family === 'IPv4' && !net.internal) {
|
|
163
|
+
return net.address;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return 'localhost';
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=dev.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main App component - Sets up routing and providers
|
|
3
|
+
*/
|
|
4
|
+
import { SiteConfig } from '../types/config';
|
|
5
|
+
import { ProcessedContent } from '../types/content';
|
|
6
|
+
interface AppProps {
|
|
7
|
+
siteConfig: SiteConfig;
|
|
8
|
+
initialContent: ProcessedContent | null;
|
|
9
|
+
isServerRender?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Main App component
|
|
13
|
+
* Works on both server (SSR) and client (hydration + SPA)
|
|
14
|
+
*/
|
|
15
|
+
declare function App({ siteConfig, initialContent, isServerRender }: AppProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export default App;
|
|
17
|
+
//# sourceMappingURL=App.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/client/App.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAMpD,UAAU,QAAQ;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,iBAAS,GAAG,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,cAAsB,EAAE,EAAE,QAAQ,2CAY5E;AAmDD,eAAe,GAAG,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
40
|
+
/**
|
|
41
|
+
* Main App component - Sets up routing and providers
|
|
42
|
+
*/
|
|
43
|
+
const react_1 = __importStar(require("react"));
|
|
44
|
+
const react_router_dom_1 = require("react-router-dom");
|
|
45
|
+
const ConfigContext_1 = require("./contexts/ConfigContext");
|
|
46
|
+
const ContentContext_1 = require("./contexts/ContentContext");
|
|
47
|
+
const SearchContext_1 = require("./contexts/SearchContext");
|
|
48
|
+
const ThemeContext_1 = require("./contexts/ThemeContext");
|
|
49
|
+
const useContent_1 = require("./hooks/useContent");
|
|
50
|
+
const Layout_1 = __importDefault(require("../components/Layout"));
|
|
51
|
+
const ContentPage_1 = __importDefault(require("../components/ContentPage"));
|
|
52
|
+
const SearchModal_1 = __importDefault(require("../components/SearchModal"));
|
|
53
|
+
/**
|
|
54
|
+
* Main App component
|
|
55
|
+
* Works on both server (SSR) and client (hydration + SPA)
|
|
56
|
+
*/
|
|
57
|
+
function App({ siteConfig, initialContent, isServerRender = false }) {
|
|
58
|
+
return ((0, jsx_runtime_1.jsx)(ConfigContext_1.ConfigProvider, { config: siteConfig, children: (0, jsx_runtime_1.jsx)(ThemeContext_1.ThemeProvider, { children: (0, jsx_runtime_1.jsx)(ContentContext_1.ContentProvider, { initialContent: initialContent, children: (0, jsx_runtime_1.jsx)(SearchContext_1.SearchProvider, { children: (0, jsx_runtime_1.jsx)(AppContent, { isServerRender: isServerRender }) }) }) }) }));
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* App content with routing (inside providers)
|
|
62
|
+
*/
|
|
63
|
+
function AppContent({ isServerRender }) {
|
|
64
|
+
const location = (0, react_router_dom_1.useLocation)();
|
|
65
|
+
const { fetchContent } = (0, useContent_1.useContentData)();
|
|
66
|
+
const hasHydratedRef = react_1.default.useRef(false);
|
|
67
|
+
// Scroll to top on route change (unless there's a hash)
|
|
68
|
+
(0, react_1.useEffect)(() => {
|
|
69
|
+
if (!window.location.hash) {
|
|
70
|
+
// Check if using a scroll container or window
|
|
71
|
+
const scrollContainer = document.querySelector('.layout-main');
|
|
72
|
+
if (scrollContainer) {
|
|
73
|
+
scrollContainer.scrollTo(0, 0);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
window.scrollTo(0, 0);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}, [location.pathname]); // Runs whenever the path changes
|
|
80
|
+
// Fetch content when route changes (for SPA navigation)
|
|
81
|
+
(0, react_1.useEffect)(() => {
|
|
82
|
+
// Skip on server render
|
|
83
|
+
if (isServerRender)
|
|
84
|
+
return;
|
|
85
|
+
if (!hasHydratedRef.current) {
|
|
86
|
+
hasHydratedRef.current = true; // skip only the initial hydration run
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
fetchContent(location.pathname);
|
|
90
|
+
}, [location.pathname, fetchContent, isServerRender]);
|
|
91
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Layout_1.default, { children: (0, jsx_runtime_1.jsx)(react_router_dom_1.Routes, { children: (0, jsx_runtime_1.jsx)(react_router_dom_1.Route, { path: "*", element: (0, jsx_runtime_1.jsx)(ContentPage_1.default, {}) }) }) }), !isServerRender && (0, jsx_runtime_1.jsx)(SearchModal_1.default, {})] }));
|
|
92
|
+
}
|
|
93
|
+
exports.default = App;
|
|
94
|
+
//# sourceMappingURL=App.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/client/App.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;GAEG;AAEH,+CAAyC;AACzC,uDAA8D;AAC9D,4DAA0D;AAC1D,8DAA4D;AAC5D,4DAA0D;AAC1D,0DAAwD;AAGxD,mDAAoD;AACpD,kEAA0C;AAC1C,4EAAoD;AACpD,4EAAoD;AAQpD;;;GAGG;AACH,SAAS,GAAG,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,GAAG,KAAK,EAAY;IAC3E,OAAO,CACL,uBAAC,8BAAc,IAAC,MAAM,EAAE,UAAU,YAChC,uBAAC,4BAAa,cACZ,uBAAC,gCAAe,IAAC,cAAc,EAAE,cAAc,YAC7C,uBAAC,8BAAc,cACb,uBAAC,UAAU,IAAC,cAAc,EAAE,cAAc,GAAI,GAC/B,GACD,GACJ,GACD,CAClB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,EAAE,cAAc,EAA+B;IACjE,MAAM,QAAQ,GAAG,IAAA,8BAAW,GAAE,CAAC;IAC/B,MAAM,EAAE,YAAY,EAAE,GAAG,IAAA,2BAAc,GAAE,CAAC;IAC1C,MAAM,cAAc,GAAG,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE3C,wDAAwD;IACxD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC1B,8CAA8C;YAC9C,MAAM,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAuB,CAAC;YAErF,IAAI,eAAe,EAAE,CAAC;gBACpB,eAAe,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,iCAAiC;IAE1D,wDAAwD;IACxD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,wBAAwB;QACxB,IAAI,cAAc;YAAE,OAAO;QAE3B,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAC5B,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,sCAAsC;YACrE,OAAO;QACT,CAAC;QAED,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC;IAEtD,OAAO,CACL,6DACE,uBAAC,gBAAM,cACL,uBAAC,yBAAM,cACL,uBAAC,wBAAK,IAAC,IAAI,EAAC,GAAG,EAAC,OAAO,EAAE,uBAAC,qBAAW,KAAG,GAAI,GACrC,GACF,EAGR,CAAC,cAAc,IAAI,uBAAC,qBAAW,KAAG,IAClC,CACJ,CAAC;AACJ,CAAC;AAED,kBAAe,GAAG,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConfigContext - Provides site configuration to the app
|
|
3
|
+
*/
|
|
4
|
+
import { ReactNode } from 'react';
|
|
5
|
+
import { SiteConfig } from '../../types/config';
|
|
6
|
+
interface ConfigContextValue {
|
|
7
|
+
config: SiteConfig;
|
|
8
|
+
}
|
|
9
|
+
interface ConfigProviderProps {
|
|
10
|
+
config: SiteConfig;
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* ConfigProvider - Wraps the app with site configuration
|
|
15
|
+
*/
|
|
16
|
+
export declare function ConfigProvider({ config, children }: ConfigProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
/**
|
|
18
|
+
* useConfig - Hook to access site configuration
|
|
19
|
+
*/
|
|
20
|
+
export declare function useConfig(): ConfigContextValue;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=ConfigContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigContext.d.ts","sourceRoot":"","sources":["../../../src/client/contexts/ConfigContext.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAc,EAA6B,SAAS,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,UAAU,kBAAkB;IAC1B,MAAM,EAAE,UAAU,CAAC;CACpB;AAID,UAAU,mBAAmB;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAMvE;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,kBAAkB,CAQ9C"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigProvider = ConfigProvider;
|
|
4
|
+
exports.useConfig = useConfig;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
/**
|
|
7
|
+
* ConfigContext - Provides site configuration to the app
|
|
8
|
+
*/
|
|
9
|
+
const react_1 = require("react");
|
|
10
|
+
const ConfigContext = (0, react_1.createContext)(undefined);
|
|
11
|
+
/**
|
|
12
|
+
* ConfigProvider - Wraps the app with site configuration
|
|
13
|
+
*/
|
|
14
|
+
function ConfigProvider({ config, children }) {
|
|
15
|
+
return ((0, jsx_runtime_1.jsx)(ConfigContext.Provider, { value: { config }, children: children }));
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* useConfig - Hook to access site configuration
|
|
19
|
+
*/
|
|
20
|
+
function useConfig() {
|
|
21
|
+
const context = (0, react_1.useContext)(ConfigContext);
|
|
22
|
+
if (context === undefined) {
|
|
23
|
+
throw new Error('useConfig must be used within a ConfigProvider');
|
|
24
|
+
}
|
|
25
|
+
return context;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=ConfigContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigContext.js","sourceRoot":"","sources":["../../../src/client/contexts/ConfigContext.tsx"],"names":[],"mappings":";;AAqBA,wCAMC;AAKD,8BAQC;;AAxCD;;GAEG;AAEH,iCAAoE;AAOpE,MAAM,aAAa,GAAG,IAAA,qBAAa,EAAiC,SAAS,CAAC,CAAC;AAO/E;;GAEG;AACH,SAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAuB;IACtE,OAAO,CACL,uBAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,MAAM,EAAE,YACtC,QAAQ,GACc,CAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS;IACvB,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,aAAa,CAAC,CAAC;IAE1C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ContentContext - Manages current page content and navigation state
|
|
3
|
+
*/
|
|
4
|
+
import { ReactNode } from 'react';
|
|
5
|
+
import { ProcessedContent } from '../../types/content';
|
|
6
|
+
import { NavigationContext } from '../../types/navigation';
|
|
7
|
+
interface ContentContextValue {
|
|
8
|
+
currentContent: ProcessedContent | null;
|
|
9
|
+
setCurrentContent: (content: ProcessedContent) => void;
|
|
10
|
+
navigationContext: NavigationContext | null;
|
|
11
|
+
setNavigationContext: (navContext: NavigationContext) => void;
|
|
12
|
+
isLoading: boolean;
|
|
13
|
+
setIsLoading: (loading: boolean) => void;
|
|
14
|
+
error: Error | null;
|
|
15
|
+
setError: (error: Error | null) => void;
|
|
16
|
+
}
|
|
17
|
+
interface ContentProviderProps {
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
initialContent?: ProcessedContent | null;
|
|
20
|
+
initialNavigationContext?: NavigationContext | null;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* ContentProvider - Manages content and navigation state
|
|
24
|
+
*/
|
|
25
|
+
export declare function ContentProvider({ children, initialContent, initialNavigationContext }: ContentProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
/**
|
|
27
|
+
* useContent - Hook to access content state
|
|
28
|
+
*/
|
|
29
|
+
export declare function useContent(): ContentContextValue;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=ContentContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentContext.d.ts","sourceRoot":"","sources":["../../../src/client/contexts/ContentContext.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAc,EAAuC,SAAS,EAAe,MAAM,OAAO,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAmB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,UAAU,mBAAmB;IAE3B,cAAc,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACxC,iBAAiB,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAGvD,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC5C,oBAAoB,EAAE,CAAC,UAAU,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAG9D,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAGzC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;CACzC;AAID,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB,cAAc,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACzC,wBAAwB,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACrD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,cAAqB,EACrB,wBAA+B,EAChC,EAAE,oBAAoB,2CA6BtB;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,mBAAmB,CAQhD"}
|