pwa-sv 1.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/AGENTS-for-pwa.md +211 -0
- package/AGENTS.md +141 -0
- package/README.md +182 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +58 -0
- package/dist/cli.js.map +1 -0
- package/dist/deps-manager.d.ts.map +1 -0
- package/dist/deps-manager.js +119 -0
- package/dist/deps-manager.js.map +1 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +229 -0
- package/dist/engine.js.map +1 -0
- package/dist/process-fs-handler.d.ts.map +1 -0
- package/dist/process-fs-handler.js +1199 -0
- package/dist/process-fs-handler.js.map +1 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +50 -0
- package/pnpm-workspace.yaml +2 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { execa } from 'execa';
|
|
2
|
+
import { Either } from 'effect';
|
|
3
|
+
// Core dependencies that are always installed (as per technical specifications)
|
|
4
|
+
const CORE_DEPENDENCIES = [
|
|
5
|
+
'@vite-pwa/sveltekit', // PWA plugin for Vite
|
|
6
|
+
'@lucide/svelte', // Icon library
|
|
7
|
+
'effect', // Functional programming library
|
|
8
|
+
'@effect/platform', // Effect platform utilities
|
|
9
|
+
'@fontsource-variable/roboto' // Variable version of roboto font
|
|
10
|
+
];
|
|
11
|
+
// Conditional dependencies based on flags
|
|
12
|
+
const CONDITIONAL_DEPENDENCIES = {
|
|
13
|
+
dexie: ['dexie'],
|
|
14
|
+
skeleton: ['@skeletonlabs/skeleton', '@skeletonlabs/skeleton-svelte'],
|
|
15
|
+
i18n: ['svelte-i18n']
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Creates the complete list of dependencies based on configuration
|
|
19
|
+
* @param config Configuration object containing dependency preferences
|
|
20
|
+
* @returns Array of dependency strings to install
|
|
21
|
+
*/
|
|
22
|
+
const buildDependencyList = (config) => {
|
|
23
|
+
// Start with core dependencies
|
|
24
|
+
let dependenciesToInstall = [...CORE_DEPENDENCIES];
|
|
25
|
+
// Add conditional dependencies based on configuration
|
|
26
|
+
if (config.useDexie) {
|
|
27
|
+
const dexieDeps = CONDITIONAL_DEPENDENCIES.dexie;
|
|
28
|
+
if (dexieDeps) {
|
|
29
|
+
dependenciesToInstall = [...dependenciesToInstall, ...dexieDeps];
|
|
30
|
+
}
|
|
31
|
+
console.log('Including Dexie IndexedDB wrapper');
|
|
32
|
+
}
|
|
33
|
+
if (config.useSkeleton) {
|
|
34
|
+
const skeletonDeps = CONDITIONAL_DEPENDENCIES.skeleton;
|
|
35
|
+
if (skeletonDeps) {
|
|
36
|
+
dependenciesToInstall = [...dependenciesToInstall, ...skeletonDeps];
|
|
37
|
+
}
|
|
38
|
+
console.log('Including Skeleton UI framework');
|
|
39
|
+
}
|
|
40
|
+
if (config.useI18n) {
|
|
41
|
+
const i18nDeps = CONDITIONAL_DEPENDENCIES.i18n;
|
|
42
|
+
if (i18nDeps) {
|
|
43
|
+
dependenciesToInstall = [...dependenciesToInstall, ...i18nDeps];
|
|
44
|
+
}
|
|
45
|
+
console.log('Including internationalization support');
|
|
46
|
+
}
|
|
47
|
+
return dependenciesToInstall;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Creates the complete list of dependencies based on configuration
|
|
51
|
+
* @param config Configuration object containing dependency preferences
|
|
52
|
+
* @returns Array of dependency strings to install
|
|
53
|
+
*/
|
|
54
|
+
export { buildDependencyList };
|
|
55
|
+
/**
|
|
56
|
+
* Determines if dependencies should be installed as dev dependencies based on the package name
|
|
57
|
+
* Following the technical specifications to properly categorize dependencies
|
|
58
|
+
* @param deps Array of dependency strings
|
|
59
|
+
* @returns Object with devDeps and runtimeDeps arrays
|
|
60
|
+
*/
|
|
61
|
+
export const categorizeDependencies = (deps) => {
|
|
62
|
+
const devDeps = [];
|
|
63
|
+
const runtimeDeps = [];
|
|
64
|
+
deps.forEach(dep => {
|
|
65
|
+
// Dev dependencies according to typical usage and architecture
|
|
66
|
+
if (dep.includes('vite') || // Vite and related tools are dev dependencies
|
|
67
|
+
dep.includes('sveltekit') || // SvelteKit build tools are dev dependencies
|
|
68
|
+
dep.includes('@sveltejs/') || // Svelte.js official packages are dev dependencies
|
|
69
|
+
dep.includes('svelte-') || // Svelte-specific dev tools are dev dependencies
|
|
70
|
+
dep.includes('skeleton') || // UI framework dev dependencies
|
|
71
|
+
dep.includes('i18n') // i18n tools are typically dev dependencies
|
|
72
|
+
) {
|
|
73
|
+
devDeps.push(dep);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
// Runtime dependencies
|
|
77
|
+
runtimeDeps.push(dep);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
return { devDeps, runtimeDeps };
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Installs dependencies based on the provided configuration using functional error handling
|
|
84
|
+
* @param config Configuration object containing dependency preferences
|
|
85
|
+
*/
|
|
86
|
+
export const installDependencies = async (config) => {
|
|
87
|
+
console.log('Installing dependencies...');
|
|
88
|
+
const dependenciesToInstall = buildDependencyList(config);
|
|
89
|
+
// Install all dependencies using pnpm
|
|
90
|
+
try {
|
|
91
|
+
const projectDir = config.projectName;
|
|
92
|
+
console.log(`Installing dependencies in ${projectDir}:`, dependenciesToInstall);
|
|
93
|
+
// Categorize dependencies into dev and runtime dependencies
|
|
94
|
+
const { devDeps, runtimeDeps } = categorizeDependencies(dependenciesToInstall);
|
|
95
|
+
// Install runtime dependencies first
|
|
96
|
+
if (runtimeDeps.length > 0) {
|
|
97
|
+
console.log(`Installing runtime dependencies:`, runtimeDeps);
|
|
98
|
+
await execa('pnpm', ['add', ...runtimeDeps], {
|
|
99
|
+
cwd: projectDir,
|
|
100
|
+
stdio: 'inherit'
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
// Install dev dependencies
|
|
104
|
+
if (devDeps.length > 0) {
|
|
105
|
+
console.log(`Installing dev dependencies:`, devDeps);
|
|
106
|
+
await execa('pnpm', ['add', '-D', ...devDeps], {
|
|
107
|
+
cwd: projectDir,
|
|
108
|
+
stdio: 'inherit'
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
console.log('Dependencies installed successfully');
|
|
112
|
+
return Either.right(undefined);
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
console.error('Failed to install dependencies:', error);
|
|
116
|
+
return Either.left(new Error(`Dependency installation failed: ${error.message}`));
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=deps-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deps-manager.js","sourceRoot":"","sources":["../src/deps-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGrC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAgChC;;GAEG;AACH,UAAU,aAAa;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,QAAA,MAAM,kBAAkB,GAAI,QAAQ,OAAO,KAAG,aAY5C,CAAC;AAEH;;;;GAIG;AACH,QAAA,MAAM,eAAe,GAAU,OAAO,aAAa,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CA6DvF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GAAU,QAAQ,OAAO,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAkHnG,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAU,QAAQ,OAAO,KAAG,OAAO,CAAC,IAAI,CAOjE,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAAC"}
|
package/dist/engine.js
ADDED
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { installDependencies } from './deps-manager.js';
|
|
2
|
+
import { createSvelteProject, createPWAConfig, updatePackageJsonWithPWAScripts, validateProjectStructure, createSkeletonUIConfig, createI18nConfig, createPWAAssetConfig, createAgentsFileAndDocsFolder } from './process-fs-handler.js';
|
|
3
|
+
import { Either } from 'effect';
|
|
4
|
+
// Import chalk for color formatting
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
/**
|
|
7
|
+
* Formats step messages with color for better readability
|
|
8
|
+
* @param message The message to format
|
|
9
|
+
* @returns Formatted message with color
|
|
10
|
+
*/
|
|
11
|
+
const formatStepMessage = (message) => {
|
|
12
|
+
return chalk.cyan(message);
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Formats success messages with color
|
|
16
|
+
* @param message The message to format
|
|
17
|
+
* @returns Formatted message with color
|
|
18
|
+
*/
|
|
19
|
+
const formatSuccessMessage = (message) => {
|
|
20
|
+
return chalk.green(message);
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Formats error messages with color
|
|
24
|
+
* @param message The message to format
|
|
25
|
+
* @returns Formatted message with color
|
|
26
|
+
*/
|
|
27
|
+
const formatErrorMessage = (message) => {
|
|
28
|
+
return chalk.red(message);
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Creates an initial pipeline state
|
|
32
|
+
* @param config Configuration object
|
|
33
|
+
* @returns Initial pipeline state
|
|
34
|
+
*/
|
|
35
|
+
const createInitialState = (config) => ({
|
|
36
|
+
projectName: config.projectName,
|
|
37
|
+
projectCreated: false,
|
|
38
|
+
dependenciesInstalled: false,
|
|
39
|
+
pwaConfigCreated: false,
|
|
40
|
+
pwaAssetConfigCreated: false,
|
|
41
|
+
packageJsonUpdated: false,
|
|
42
|
+
structureValidated: false,
|
|
43
|
+
skeletonConfigCreated: false,
|
|
44
|
+
i18nConfigCreated: false,
|
|
45
|
+
agentsFileCreated: false,
|
|
46
|
+
rollbackPerformed: false,
|
|
47
|
+
});
|
|
48
|
+
/**
|
|
49
|
+
* Performs cleanup/rollback operations when something fails in the pipeline
|
|
50
|
+
* @param state Current pipeline state
|
|
51
|
+
* @returns Result of the rollback operation
|
|
52
|
+
*/
|
|
53
|
+
const performRollback = async (state) => {
|
|
54
|
+
console.log(`Performing rollback for project: ${state.projectName}`);
|
|
55
|
+
try {
|
|
56
|
+
// If i18n configuration was created but something failed after that,
|
|
57
|
+
// we might need to handle any state changes made during i18n configuration
|
|
58
|
+
if (state.i18nConfigCreated) {
|
|
59
|
+
console.log('Rolling back internationalization configuration...');
|
|
60
|
+
// In a more sophisticated implementation, we would remove the generated files
|
|
61
|
+
// For now, we'll just log the rollback
|
|
62
|
+
}
|
|
63
|
+
// If skeleton configuration was created but something failed after that,
|
|
64
|
+
// we might need to handle any state changes made during skeleton configuration
|
|
65
|
+
if (state.skeletonConfigCreated) {
|
|
66
|
+
console.log('Rolling back Skeleton UI configuration...');
|
|
67
|
+
// In a more sophisticated implementation, we would remove the generated files
|
|
68
|
+
// For now, we'll just log the rollback
|
|
69
|
+
}
|
|
70
|
+
// If structure validation was performed but something failed after that,
|
|
71
|
+
// we might need to handle any state changes made during validation
|
|
72
|
+
if (state.structureValidated) {
|
|
73
|
+
console.log('Rolling back after structure validation...');
|
|
74
|
+
// In this case, validation passed but something else failed later
|
|
75
|
+
// For now, we'll just log the rollback
|
|
76
|
+
}
|
|
77
|
+
// If package.json was updated but something failed after that,
|
|
78
|
+
// we might want to restore the original as part of the rollback
|
|
79
|
+
if (state.packageJsonUpdated) {
|
|
80
|
+
console.log('Rolling back package.json changes...');
|
|
81
|
+
// In a more sophisticated implementation, we would restore the original package.json
|
|
82
|
+
// For now, we'll just log the rollback
|
|
83
|
+
}
|
|
84
|
+
// If PWA asset config was created but something failed after that,
|
|
85
|
+
// we might want to delete it as part of the rollback
|
|
86
|
+
if (state.pwaAssetConfigCreated) {
|
|
87
|
+
console.log('Rolling back PWA asset configuration file...');
|
|
88
|
+
// In a more sophisticated implementation, we would remove the generated file
|
|
89
|
+
// For now, we'll just log the rollback
|
|
90
|
+
}
|
|
91
|
+
// If PWA config was created but something failed after that,
|
|
92
|
+
// we might want to delete it as part of the rollback
|
|
93
|
+
if (state.pwaConfigCreated) {
|
|
94
|
+
console.log('Rolling back PWA configuration file...');
|
|
95
|
+
// In a more sophisticated implementation, we would remove the generated file
|
|
96
|
+
// For now, we'll just log the rollback
|
|
97
|
+
}
|
|
98
|
+
// If dependencies were installed but something failed after that,
|
|
99
|
+
// we might want to implement more sophisticated cleanup here if needed
|
|
100
|
+
// For now, we'll just log the rollback
|
|
101
|
+
console.log(`Rollback completed for project: ${state.projectName}`);
|
|
102
|
+
state.rollbackPerformed = true;
|
|
103
|
+
return Either.right(undefined);
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
return Either.left(new Error(`Rollback failed: ${error.message}`));
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* Main automation pipeline that coordinates the entire project creation process
|
|
111
|
+
* with transactional integrity and error handling
|
|
112
|
+
* @param config Configuration object containing all necessary parameters
|
|
113
|
+
*/
|
|
114
|
+
export const executeAutomationPipeline = async (config) => {
|
|
115
|
+
console.log(formatStepMessage(`Creating SvelteKit PWA project: ${config.projectName}`));
|
|
116
|
+
// Initialize state for this pipeline run
|
|
117
|
+
const state = createInitialState(config);
|
|
118
|
+
try {
|
|
119
|
+
// Step 1: Create the base SvelteKit project
|
|
120
|
+
console.log(formatStepMessage('Step 1: Creating base SvelteKit project...'));
|
|
121
|
+
const projectResult = await createSvelteProject(config);
|
|
122
|
+
if (Either.isLeft(projectResult)) {
|
|
123
|
+
console.log(formatErrorMessage('Step 1 failed, performing rollback...'));
|
|
124
|
+
await performRollback(state);
|
|
125
|
+
return projectResult;
|
|
126
|
+
}
|
|
127
|
+
state.projectCreated = true;
|
|
128
|
+
// Step 2: Install dependencies based on configuration
|
|
129
|
+
console.log(formatStepMessage('Step 2: Installing dependencies...'));
|
|
130
|
+
const depsResult = await installDependencies(config);
|
|
131
|
+
if (Either.isLeft(depsResult)) {
|
|
132
|
+
console.log(formatErrorMessage('Step 2 failed, performing rollback...'));
|
|
133
|
+
await performRollback(state);
|
|
134
|
+
return depsResult;
|
|
135
|
+
}
|
|
136
|
+
state.dependenciesInstalled = true;
|
|
137
|
+
// Step 3: Create PWA configuration
|
|
138
|
+
console.log(formatStepMessage('Step 3: Creating PWA configuration...'));
|
|
139
|
+
const pwaConfigResult = await createPWAConfig(config.projectName);
|
|
140
|
+
if (Either.isLeft(pwaConfigResult)) {
|
|
141
|
+
console.log(formatErrorMessage('Step 3 failed, performing rollback...'));
|
|
142
|
+
await performRollback(state);
|
|
143
|
+
return pwaConfigResult;
|
|
144
|
+
}
|
|
145
|
+
state.pwaConfigCreated = true;
|
|
146
|
+
// Step 4: Create Skeleton UI configuration if requested
|
|
147
|
+
if (config.useSkeleton) {
|
|
148
|
+
console.log(formatStepMessage('Step 4: Creating Skeleton UI configuration...'));
|
|
149
|
+
const skeletonConfigResult = await createSkeletonUIConfig(config.projectName);
|
|
150
|
+
if (Either.isLeft(skeletonConfigResult)) {
|
|
151
|
+
console.log(formatErrorMessage('Step 4 failed, performing rollback...'));
|
|
152
|
+
await performRollback(state);
|
|
153
|
+
return skeletonConfigResult;
|
|
154
|
+
}
|
|
155
|
+
state.skeletonConfigCreated = true;
|
|
156
|
+
}
|
|
157
|
+
// Step 5: Create Internationalization configuration if requested
|
|
158
|
+
if (config.useI18n) {
|
|
159
|
+
console.log(formatStepMessage('Step 5: Creating internationalization configuration...'));
|
|
160
|
+
const i18nConfigResult = await createI18nConfig(config.projectName);
|
|
161
|
+
if (Either.isLeft(i18nConfigResult)) {
|
|
162
|
+
console.log(formatErrorMessage('Step 5 failed, performing rollback...'));
|
|
163
|
+
await performRollback(state);
|
|
164
|
+
return i18nConfigResult;
|
|
165
|
+
}
|
|
166
|
+
state.i18nConfigCreated = true;
|
|
167
|
+
}
|
|
168
|
+
// Step 6: Create pwa-asset-generator configuration for Android and web only
|
|
169
|
+
console.log(formatStepMessage('Step 6: Creating pwa-asset-generator configuration...'));
|
|
170
|
+
const pwaAssetConfigResult = await createPWAAssetConfig(config.projectName);
|
|
171
|
+
if (Either.isLeft(pwaAssetConfigResult)) {
|
|
172
|
+
console.log(formatErrorMessage('Step 6 failed, performing rollback...'));
|
|
173
|
+
await performRollback(state);
|
|
174
|
+
return pwaAssetConfigResult;
|
|
175
|
+
}
|
|
176
|
+
state.pwaAssetConfigCreated = true;
|
|
177
|
+
// Step 7: Update package.json with PWA scripts
|
|
178
|
+
console.log(formatStepMessage('Step 7: Updating package.json with PWA scripts...'));
|
|
179
|
+
const packageJsonResult = await updatePackageJsonWithPWAScripts(config.projectName);
|
|
180
|
+
if (Either.isLeft(packageJsonResult)) {
|
|
181
|
+
console.log(formatErrorMessage('Step 7 failed, performing rollback...'));
|
|
182
|
+
await performRollback(state);
|
|
183
|
+
return packageJsonResult;
|
|
184
|
+
}
|
|
185
|
+
state.packageJsonUpdated = true;
|
|
186
|
+
// Step 8: Create AGENTS.md file and docs folder
|
|
187
|
+
console.log(formatStepMessage('Step 8: Creating AGENTS.md file and docs folder...'));
|
|
188
|
+
const agentsResult = await createAgentsFileAndDocsFolder(config.projectName);
|
|
189
|
+
if (Either.isLeft(agentsResult)) {
|
|
190
|
+
console.log(formatErrorMessage('Step 8 failed, performing rollback...'));
|
|
191
|
+
await performRollback(state);
|
|
192
|
+
return agentsResult;
|
|
193
|
+
}
|
|
194
|
+
state.agentsFileCreated = true;
|
|
195
|
+
// Step 9: Validate project structure
|
|
196
|
+
console.log(formatStepMessage('Step 9: Validating project structure...'));
|
|
197
|
+
const validationResult = await validateProjectStructure(config.projectName);
|
|
198
|
+
if (Either.isLeft(validationResult)) {
|
|
199
|
+
console.log(formatErrorMessage('Step 9 failed, performing rollback...'));
|
|
200
|
+
await performRollback(state);
|
|
201
|
+
return validationResult;
|
|
202
|
+
}
|
|
203
|
+
state.structureValidated = true;
|
|
204
|
+
console.log(formatSuccessMessage(`Project ${config.projectName} created successfully!`));
|
|
205
|
+
console.log(formatStepMessage('To enhance your development experience, run: npx bmad-method install'));
|
|
206
|
+
return Either.right(undefined);
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
console.error('Pipeline execution failed:', error);
|
|
210
|
+
// Perform rollback if needed
|
|
211
|
+
if (!state.rollbackPerformed) {
|
|
212
|
+
await performRollback(state);
|
|
213
|
+
}
|
|
214
|
+
return Either.left(new Error(`Pipeline execution failed: ${error.message}`));
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
/**
|
|
218
|
+
* Creates a new project based on the provided configuration
|
|
219
|
+
* @param config Configuration object for the project
|
|
220
|
+
*/
|
|
221
|
+
export const createProject = async (config) => {
|
|
222
|
+
const result = await executeAutomationPipeline(config);
|
|
223
|
+
if (Either.isLeft(result)) {
|
|
224
|
+
console.error('Project creation failed:', result.left);
|
|
225
|
+
throw result.left;
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
export { createInitialState, performRollback };
|
|
229
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-fs-handler.d.ts","sourceRoot":"","sources":["../src/process-fs-handler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAU,QAAQ,OAAO,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAwE7F,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAU,aAAa,MAAM,EAAE,SAAS,MAAM,EAAE,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAU1H,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAU,aAAa,MAAM,EAAE,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAS1G,CAAC;AAOF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAyI7F,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,+BAA+B,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CA2C7G,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAkClG,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAoCtG,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAkJpG,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CA4K9F,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,6BAA6B,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAoT3G,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAkO7F,CAAC"}
|