opkg 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -8
- package/dist/commands/add.js +11 -276
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/init.js +73 -145
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.js +26 -668
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/pack.js +10 -137
- package/dist/commands/pack.js.map +1 -1
- package/dist/commands/push.js +14 -8
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/save.js +12 -167
- package/dist/commands/save.js.map +1 -1
- package/dist/commands/status.js +2 -2
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/uninstall.js +5 -5
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/constants/index.js +18 -45
- package/dist/constants/index.js.map +1 -1
- package/dist/constants/workspace.js +9 -0
- package/dist/constants/workspace.js.map +1 -0
- package/dist/core/add/add-conflict-handler.js +68 -0
- package/dist/core/add/add-conflict-handler.js.map +1 -0
- package/dist/core/add/add-pipeline.js +137 -0
- package/dist/core/add/add-pipeline.js.map +1 -0
- package/dist/core/add/package-index-updater.js +62 -33
- package/dist/core/add/package-index-updater.js.map +1 -1
- package/dist/core/add/platform-path-transformer.js +47 -0
- package/dist/core/add/platform-path-transformer.js.map +1 -0
- package/dist/core/add/source-collector.js +57 -0
- package/dist/core/add/source-collector.js.map +1 -0
- package/dist/core/dependency-resolver.js +3 -1
- package/dist/core/dependency-resolver.js.map +1 -1
- package/dist/core/directory.js +2 -2
- package/dist/core/directory.js.map +1 -1
- package/dist/core/discovery/file-discovery.js +55 -54
- package/dist/core/discovery/file-discovery.js.map +1 -1
- package/dist/core/discovery/platform-files-discovery.js +32 -17
- package/dist/core/discovery/platform-files-discovery.js.map +1 -1
- package/dist/core/install/bulk-install-pipeline.js +199 -0
- package/dist/core/install/bulk-install-pipeline.js.map +1 -0
- package/dist/core/install/canonical-plan.js +123 -0
- package/dist/core/install/canonical-plan.js.map +1 -0
- package/dist/core/install/dry-run.js +2 -2
- package/dist/core/install/dry-run.js.map +1 -1
- package/dist/core/install/index.js +3 -0
- package/dist/core/install/index.js.map +1 -0
- package/dist/core/install/install-errors.js +41 -0
- package/dist/core/install/install-errors.js.map +1 -0
- package/dist/core/install/install-flow.js +2 -5
- package/dist/core/install/install-flow.js.map +1 -1
- package/dist/core/install/install-pipeline.js +228 -0
- package/dist/core/install/install-pipeline.js.map +1 -0
- package/dist/core/install/install-reporting.js +99 -0
- package/dist/core/install/install-reporting.js.map +1 -0
- package/dist/core/install/platform-resolution.js +6 -6
- package/dist/core/install/platform-resolution.js.map +1 -1
- package/dist/core/install/remote-flow.js +67 -1
- package/dist/core/install/remote-flow.js.map +1 -1
- package/dist/core/openpackage.js +16 -8
- package/dist/core/openpackage.js.map +1 -1
- package/dist/core/package-context.js +246 -0
- package/dist/core/package-context.js.map +1 -0
- package/dist/core/package.js +3 -2
- package/dist/core/package.js.map +1 -1
- package/dist/core/platforms.js +126 -217
- package/dist/core/platforms.js.map +1 -1
- package/dist/core/registry/registry-rename.js +2 -1
- package/dist/core/registry/registry-rename.js.map +1 -1
- package/dist/core/registry.js +10 -3
- package/dist/core/registry.js.map +1 -1
- package/dist/core/remote-pull.js +2 -1
- package/dist/core/remote-pull.js.map +1 -1
- package/dist/core/save/constants.js +4 -0
- package/dist/core/save/constants.js.map +1 -1
- package/dist/core/save/name-resolution.js +31 -0
- package/dist/core/save/name-resolution.js.map +1 -0
- package/dist/core/save/package-detection.js +147 -0
- package/dist/core/save/package-detection.js.map +1 -0
- package/dist/core/save/package-saver.js +46 -43
- package/dist/core/save/package-saver.js.map +1 -1
- package/dist/core/save/package-yml-generator.js +50 -71
- package/dist/core/save/package-yml-generator.js.map +1 -1
- package/dist/core/save/root-save-candidates.js.map +1 -1
- package/dist/core/save/save-candidate-loader.js +89 -0
- package/dist/core/save/save-candidate-loader.js.map +1 -0
- package/dist/core/save/save-conflict-resolution.js +72 -410
- package/dist/core/save/save-conflict-resolution.js.map +1 -1
- package/dist/core/save/save-conflict-resolver.js +277 -0
- package/dist/core/save/save-conflict-resolver.js.map +1 -0
- package/dist/core/save/save-pipeline.js +151 -0
- package/dist/core/save/save-pipeline.js.map +1 -0
- package/dist/core/save/save-types.js +2 -0
- package/dist/core/save/save-types.js.map +1 -0
- package/dist/core/save/save-yml-resolution.js +77 -39
- package/dist/core/save/save-yml-resolution.js.map +1 -1
- package/dist/core/save/workspace-rename.js +6 -6
- package/dist/core/save/workspace-rename.js.map +1 -1
- package/dist/core/scoping/package-scoping.js +13 -1
- package/dist/core/scoping/package-scoping.js.map +1 -1
- package/dist/core/status/status-file-discovery.js +12 -30
- package/dist/core/status/status-file-discovery.js.map +1 -1
- package/dist/core/sync/platform-sync.js +7 -4
- package/dist/core/sync/platform-sync.js.map +1 -1
- package/dist/core/sync/root-files-sync.js +59 -1
- package/dist/core/sync/root-files-sync.js.map +1 -1
- package/dist/core/uninstall/uninstall-file-discovery.js +1 -2
- package/dist/core/uninstall/uninstall-file-discovery.js.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/file-processing.js +5 -58
- package/dist/utils/file-processing.js.map +1 -1
- package/dist/utils/index-based-installer.js +15 -33
- package/dist/utils/index-based-installer.js.map +1 -1
- package/dist/utils/install-file-discovery.js +3 -3
- package/dist/utils/install-file-discovery.js.map +1 -1
- package/dist/utils/install-orchestrator.js +21 -21
- package/dist/utils/install-orchestrator.js.map +1 -1
- package/dist/utils/jsonc.js +44 -0
- package/dist/utils/jsonc.js.map +1 -0
- package/dist/utils/package-copy.js +199 -0
- package/dist/utils/package-copy.js.map +1 -0
- package/dist/utils/package-filters.js +125 -0
- package/dist/utils/package-filters.js.map +1 -0
- package/dist/utils/package-index-yml.js +15 -10
- package/dist/utils/package-index-yml.js.map +1 -1
- package/dist/utils/package-installation.js +4 -113
- package/dist/utils/package-installation.js.map +1 -1
- package/dist/utils/package-local-files.js +2 -35
- package/dist/utils/package-local-files.js.map +1 -1
- package/dist/utils/package-management.js +59 -37
- package/dist/utils/package-management.js.map +1 -1
- package/dist/utils/package-yml.js +24 -0
- package/dist/utils/package-yml.js.map +1 -1
- package/dist/utils/path-normalization.js +8 -53
- package/dist/utils/path-normalization.js.map +1 -1
- package/dist/utils/paths.js +17 -9
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/platform-file.js +16 -59
- package/dist/utils/platform-file.js.map +1 -1
- package/dist/utils/platform-mapper.js +29 -41
- package/dist/utils/platform-mapper.js.map +1 -1
- package/dist/utils/platform-specific-paths.js.map +1 -1
- package/dist/utils/platform-utils.js +28 -139
- package/dist/utils/platform-utils.js.map +1 -1
- package/dist/utils/platform-yaml-merge.js +13 -6
- package/dist/utils/platform-yaml-merge.js.map +1 -1
- package/dist/utils/registry-entry-filter.js +38 -24
- package/dist/utils/registry-entry-filter.js.map +1 -1
- package/dist/utils/registry-paths.js +10 -0
- package/dist/utils/registry-paths.js.map +1 -0
- package/dist/utils/root-file-installer.js +19 -0
- package/dist/utils/root-file-installer.js.map +1 -1
- package/dist/utils/root-file-registry.js.map +1 -1
- package/package.json +3 -2
- package/platforms.jsonc +178 -0
- package/specs/package/README.md +60 -0
- package/specs/package/nested-packages-and-parent-packages.md +79 -0
- package/specs/package/package-index-yml.md +171 -0
- package/specs/package/package-root-layout.md +78 -0
- package/specs/package/registry-payload-and-copy.md +77 -0
- package/specs/package/universal-content.md +144 -0
- package/specs/platforms.md +193 -0
- package/specs/save/README.md +40 -0
- package/specs/save/save-conflict-resolution.md +146 -0
- package/specs/save/save-file-discovery.md +101 -0
- package/specs/save/save-frontmatter-overrides.md +81 -0
- package/specs/save/save-modes-inputs.md +53 -0
- package/specs/save/save-naming-scoping.md +93 -0
- package/specs/save/save-package-detection.md +60 -0
- package/specs/save/save-registry-sync.md +126 -0
- package/dist/commands/release.js +0 -33
- package/dist/commands/release.js.map +0 -1
- package/dist/commands/tag.js +0 -311
- package/dist/commands/tag.js.map +0 -1
- package/dist/commands/update.js +0 -30
- package/dist/commands/update.js.map +0 -1
- package/dist/core/add/formula-index-updater.js +0 -290
- package/dist/core/add/formula-index-updater.js.map +0 -1
- package/dist/core/discovery/ai-files-discovery.js +0 -2
- package/dist/core/discovery/ai-files-discovery.js.map +0 -1
- package/dist/core/discovery/formula-files-discovery.js +0 -14
- package/dist/core/discovery/formula-files-discovery.js.map +0 -1
- package/dist/core/discovery/index-files-discovery.js +0 -91
- package/dist/core/discovery/index-files-discovery.js.map +0 -1
- package/dist/core/discovery/md-files-discovery.js +0 -82
- package/dist/core/discovery/md-files-discovery.js.map +0 -1
- package/dist/core/discovery/package-files-discovery.js +0 -14
- package/dist/core/discovery/package-files-discovery.js.map +0 -1
- package/dist/core/discovery/platform-discovery.js +0 -84
- package/dist/core/discovery/platform-discovery.js.map +0 -1
- package/dist/core/discovery/root-files-discovery.js +0 -2
- package/dist/core/discovery/root-files-discovery.js.map +0 -1
- package/dist/core/formula.js +0 -170
- package/dist/core/formula.js.map +0 -1
- package/dist/core/git-registry.js +0 -46
- package/dist/core/git-registry.js.map +0 -1
- package/dist/core/groundzero.js +0 -277
- package/dist/core/groundzero.js.map +0 -1
- package/dist/core/install/scenario.js +0 -11
- package/dist/core/install/scenario.js.map +0 -1
- package/dist/core/package-sync.js +0 -219
- package/dist/core/package-sync.js.map +0 -1
- package/dist/core/save/formula-file-generator.js +0 -167
- package/dist/core/save/formula-file-generator.js.map +0 -1
- package/dist/core/save/formula-saver.js +0 -52
- package/dist/core/save/formula-saver.js.map +0 -1
- package/dist/core/save/formula-yml-generator.js +0 -89
- package/dist/core/save/formula-yml-generator.js.map +0 -1
- package/dist/core/save/formula-yml-versioning.js +0 -108
- package/dist/core/save/formula-yml-versioning.js.map +0 -1
- package/dist/core/save/generic-file-sync.js +0 -38
- package/dist/core/save/generic-file-sync.js.map +0 -1
- package/dist/core/save/md-files-sync.js +0 -33
- package/dist/core/save/md-files-sync.js.map +0 -1
- package/dist/core/save/package-yml-versioning.js +0 -108
- package/dist/core/save/package-yml-versioning.js.map +0 -1
- package/dist/core/save/platform-sync.js +0 -95
- package/dist/core/save/platform-sync.js.map +0 -1
- package/dist/core/save/root-files-sync.js +0 -140
- package/dist/core/save/root-files-sync.js.map +0 -1
- package/dist/core/save/save-candidate-types.js +0 -2
- package/dist/core/save/save-candidate-types.js.map +0 -1
- package/dist/core/save/save-conflict-types.js +0 -2
- package/dist/core/save/save-conflict-types.js.map +0 -1
- package/dist/core/save/save-file-discovery.js +0 -5
- package/dist/core/save/save-file-discovery.js.map +0 -1
- package/dist/core/status-file-discovery.js +0 -175
- package/dist/core/status-file-discovery.js.map +0 -1
- package/dist/utils/discovery/file-processing.js +0 -156
- package/dist/utils/discovery/file-processing.js.map +0 -1
- package/dist/utils/discovery/formula-discovery.js +0 -211
- package/dist/utils/discovery/formula-discovery.js.map +0 -1
- package/dist/utils/discovery/platform-discovery.js +0 -2
- package/dist/utils/discovery/platform-discovery.js.map +0 -1
- package/dist/utils/formula-discovery.js +0 -102
- package/dist/utils/formula-discovery.js.map +0 -1
- package/dist/utils/formula-index-yml.js +0 -122
- package/dist/utils/formula-index-yml.js.map +0 -1
- package/dist/utils/formula-installation.js +0 -110
- package/dist/utils/formula-installation.js.map +0 -1
- package/dist/utils/formula-local-files.js +0 -38
- package/dist/utils/formula-local-files.js.map +0 -1
- package/dist/utils/formula-management.js +0 -191
- package/dist/utils/formula-management.js.map +0 -1
- package/dist/utils/formula-name.js +0 -97
- package/dist/utils/formula-name.js.map +0 -1
- package/dist/utils/formula-versioning.js +0 -109
- package/dist/utils/formula-versioning.js.map +0 -1
- package/dist/utils/formula-yml.js +0 -82
- package/dist/utils/formula-yml.js.map +0 -1
- package/dist/utils/git.js +0 -54
- package/dist/utils/git.js.map +0 -1
- package/dist/utils/id-based-discovery.js +0 -126
- package/dist/utils/id-based-discovery.js.map +0 -1
- package/dist/utils/id-based-installer.js +0 -249
- package/dist/utils/id-based-installer.js.map +0 -1
- package/dist/utils/index-yml-based-installer.js +0 -375
- package/dist/utils/index-yml-based-installer.js.map +0 -1
- package/dist/utils/index-yml.js +0 -124
- package/dist/utils/index-yml.js.map +0 -1
- package/dist/utils/md-frontmatter.js +0 -3
- package/dist/utils/md-frontmatter.js.map +0 -1
- package/dist/utils/package-link-yml.js +0 -92
- package/dist/utils/package-link-yml.js.map +0 -1
- package/dist/utils/platform-discovery.js +0 -2
- package/dist/utils/platform-discovery.js.map +0 -1
- package/dist/utils/platform-frontmatter-split.js +0 -15
- package/dist/utils/platform-frontmatter-split.js.map +0 -1
- package/dist/utils/timestamp-encoder.js +0 -13
- package/dist/utils/timestamp-encoder.js.map +0 -1
- package/dist/utils/wip-versioning.js +0 -24
- package/dist/utils/wip-versioning.js.map +0 -1
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
import { basename, join, relative } from 'path';
|
|
2
|
-
import { parseFormulaYml, writeFormulaYml } from './formula-yml.js';
|
|
3
|
-
import { exists, ensureDir, writeTextFile, walkFiles, remove } from './fs.js';
|
|
4
|
-
import { logger } from './logger.js';
|
|
5
|
-
import { getLocalOpenPackageDir, getLocalFormulaYmlPath, getLocalFormulasDir, getLocalFormulaDir } from './paths.js';
|
|
6
|
-
import { DEPENDENCY_ARRAYS } from '../constants/index.js';
|
|
7
|
-
import { createCaretRange } from './version-ranges.js';
|
|
8
|
-
import { extractBaseVersion } from './version-generator.js';
|
|
9
|
-
import { normalizeFormulaName, areFormulaNamesEquivalent } from './formula-name.js';
|
|
10
|
-
import { formulaManager } from '../core/formula.js';
|
|
11
|
-
import { FORMULA_INDEX_FILENAME } from './formula-index-yml.js';
|
|
12
|
-
/**
|
|
13
|
-
* Ensure local OpenPackage directory structure exists
|
|
14
|
-
* Shared utility for both install and save commands
|
|
15
|
-
*/
|
|
16
|
-
export async function ensureLocalOpenPackageStructure(cwd) {
|
|
17
|
-
const openpackageDir = getLocalOpenPackageDir(cwd);
|
|
18
|
-
const formulasDir = getLocalFormulasDir(cwd);
|
|
19
|
-
await Promise.all([
|
|
20
|
-
ensureDir(openpackageDir),
|
|
21
|
-
ensureDir(formulasDir)
|
|
22
|
-
]);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Create a basic formula.yml file if it doesn't exist
|
|
26
|
-
* Shared utility for both install and save commands
|
|
27
|
-
* @param force - If true, overwrite existing formula.yml
|
|
28
|
-
* @returns the formula.yml if it was created, null if it already existed and force=false
|
|
29
|
-
*/
|
|
30
|
-
export async function createBasicFormulaYml(cwd, force = false) {
|
|
31
|
-
await ensureLocalOpenPackageStructure(cwd);
|
|
32
|
-
const formulaYmlPath = getLocalFormulaYmlPath(cwd);
|
|
33
|
-
const projectName = basename(cwd);
|
|
34
|
-
const basicFormulaYml = {
|
|
35
|
-
name: projectName,
|
|
36
|
-
version: '0.1.0',
|
|
37
|
-
formulas: [],
|
|
38
|
-
'dev-formulas': []
|
|
39
|
-
};
|
|
40
|
-
if (await exists(formulaYmlPath)) {
|
|
41
|
-
if (!force) {
|
|
42
|
-
return null; // formula.yml already exists, no need to create
|
|
43
|
-
}
|
|
44
|
-
await writeFormulaYml(formulaYmlPath, basicFormulaYml);
|
|
45
|
-
logger.info(`Overwrote basic formula.yml with name: ${projectName}`);
|
|
46
|
-
console.log(`📋 Overwrote basic formula.yml in .openpackage/ with name: ${projectName}`);
|
|
47
|
-
return basicFormulaYml;
|
|
48
|
-
}
|
|
49
|
-
await writeFormulaYml(formulaYmlPath, basicFormulaYml);
|
|
50
|
-
logger.info(`Initialized workspace formula.yml`);
|
|
51
|
-
console.log(`📋 Initialized workspace formula.yml in .openpackage/`);
|
|
52
|
-
return basicFormulaYml;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Add a formula dependency to formula.yml with smart placement logic
|
|
56
|
-
* Shared utility for both install and save commands
|
|
57
|
-
*/
|
|
58
|
-
export async function addFormulaToYml(cwd, formulaName, formulaVersion, isDev = false, originalVersion, // The original version/range that was requested
|
|
59
|
-
silent = false) {
|
|
60
|
-
const formulaYmlPath = getLocalFormulaYmlPath(cwd);
|
|
61
|
-
if (!(await exists(formulaYmlPath))) {
|
|
62
|
-
return; // If no formula.yml exists, ignore this step
|
|
63
|
-
}
|
|
64
|
-
const config = await parseFormulaYml(formulaYmlPath);
|
|
65
|
-
// Determine the version to write to formula.yml
|
|
66
|
-
let versionToWrite;
|
|
67
|
-
if (originalVersion) {
|
|
68
|
-
// If we have the original version/range, use it as-is
|
|
69
|
-
versionToWrite = originalVersion;
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
// For save command, strip prerelease versioning and create caret range
|
|
73
|
-
const baseVersion = extractBaseVersion(formulaVersion);
|
|
74
|
-
versionToWrite = createCaretRange(baseVersion);
|
|
75
|
-
}
|
|
76
|
-
const dependency = {
|
|
77
|
-
name: normalizeFormulaName(formulaName),
|
|
78
|
-
version: versionToWrite
|
|
79
|
-
};
|
|
80
|
-
// Find current location and determine target location
|
|
81
|
-
const currentLocation = await findFormulaLocation(cwd, formulaName);
|
|
82
|
-
let targetArray;
|
|
83
|
-
if (currentLocation === DEPENDENCY_ARRAYS.DEV_FORMULAS && !isDev) {
|
|
84
|
-
targetArray = DEPENDENCY_ARRAYS.DEV_FORMULAS;
|
|
85
|
-
logger.info(`Keeping formula in dev-formulas: ${formulaName}@${formulaVersion}`);
|
|
86
|
-
}
|
|
87
|
-
else if (currentLocation === DEPENDENCY_ARRAYS.FORMULAS && isDev) {
|
|
88
|
-
targetArray = DEPENDENCY_ARRAYS.DEV_FORMULAS;
|
|
89
|
-
logger.info(`Moving formula from formulas to dev-formulas: ${formulaName}@${formulaVersion}`);
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
targetArray = isDev ? DEPENDENCY_ARRAYS.DEV_FORMULAS : DEPENDENCY_ARRAYS.FORMULAS;
|
|
93
|
-
}
|
|
94
|
-
// Initialize arrays if they don't exist
|
|
95
|
-
if (!config.formulas)
|
|
96
|
-
config.formulas = [];
|
|
97
|
-
if (!config[DEPENDENCY_ARRAYS.DEV_FORMULAS])
|
|
98
|
-
config[DEPENDENCY_ARRAYS.DEV_FORMULAS] = [];
|
|
99
|
-
// Remove from current location if moving between arrays
|
|
100
|
-
if (currentLocation && currentLocation !== targetArray) {
|
|
101
|
-
const currentArray = config[currentLocation];
|
|
102
|
-
const currentIndex = currentArray.findIndex(dep => areFormulaNamesEquivalent(dep.name, formulaName));
|
|
103
|
-
if (currentIndex >= 0) {
|
|
104
|
-
currentArray.splice(currentIndex, 1);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
// Update or add dependency
|
|
108
|
-
const targetArrayRef = config[targetArray];
|
|
109
|
-
const existingIndex = targetArrayRef.findIndex(dep => areFormulaNamesEquivalent(dep.name, formulaName));
|
|
110
|
-
if (existingIndex >= 0) {
|
|
111
|
-
targetArrayRef[existingIndex] = dependency;
|
|
112
|
-
if (!silent) {
|
|
113
|
-
logger.info(`Updated existing formula dependency: ${formulaName}@${formulaVersion}`);
|
|
114
|
-
console.log(`✓ Updated ${formulaName}@${formulaVersion} in main formula.yml`);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
targetArrayRef.push(dependency);
|
|
119
|
-
if (!silent) {
|
|
120
|
-
logger.info(`Added new formula dependency: ${formulaName}@${formulaVersion}`);
|
|
121
|
-
console.log(`✓ Added ${formulaName}@${formulaVersion} to main formula.yml`);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
await writeFormulaYml(formulaYmlPath, config);
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Copy the full formula directory from the local registry into the project structure
|
|
128
|
-
* Removes all existing files except formula.index.yml before writing new files
|
|
129
|
-
*/
|
|
130
|
-
export async function writeLocalFormulaFromRegistry(cwd, formulaName, version) {
|
|
131
|
-
const formula = await formulaManager.loadFormula(formulaName, version);
|
|
132
|
-
const localFormulaDir = getLocalFormulaDir(cwd, formulaName);
|
|
133
|
-
await ensureDir(localFormulaDir);
|
|
134
|
-
// Build set of files that should exist after installation
|
|
135
|
-
const filesToKeep = new Set(formula.files.map(file => file.path));
|
|
136
|
-
// Always preserve formula.index.yml
|
|
137
|
-
filesToKeep.add(FORMULA_INDEX_FILENAME);
|
|
138
|
-
// List all existing files in the directory
|
|
139
|
-
const existingFiles = [];
|
|
140
|
-
if (await exists(localFormulaDir)) {
|
|
141
|
-
for await (const filePath of walkFiles(localFormulaDir)) {
|
|
142
|
-
const relPath = relative(localFormulaDir, filePath);
|
|
143
|
-
existingFiles.push(relPath);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
// Remove files that are no longer in the formula (except formula.index.yml)
|
|
147
|
-
const filesToRemove = existingFiles.filter(file => !filesToKeep.has(file));
|
|
148
|
-
await Promise.all(filesToRemove.map(async (file) => {
|
|
149
|
-
const filePath = join(localFormulaDir, file);
|
|
150
|
-
try {
|
|
151
|
-
await remove(filePath);
|
|
152
|
-
logger.debug(`Removed residual file: ${filePath}`);
|
|
153
|
-
}
|
|
154
|
-
catch (error) {
|
|
155
|
-
logger.warn(`Failed to remove residual file ${filePath}: ${error}`);
|
|
156
|
-
}
|
|
157
|
-
}));
|
|
158
|
-
// Write all files from the formula
|
|
159
|
-
await Promise.all(formula.files.map(async (file) => {
|
|
160
|
-
const targetPath = join(localFormulaDir, file.path);
|
|
161
|
-
const encoding = (file.encoding ?? 'utf8');
|
|
162
|
-
await writeTextFile(targetPath, file.content, encoding);
|
|
163
|
-
}));
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Find formula location in formula.yml
|
|
167
|
-
* Helper function for addFormulaToYml
|
|
168
|
-
*/
|
|
169
|
-
async function findFormulaLocation(cwd, formulaName) {
|
|
170
|
-
const formulaYmlPath = getLocalFormulaYmlPath(cwd);
|
|
171
|
-
if (!(await exists(formulaYmlPath))) {
|
|
172
|
-
return null;
|
|
173
|
-
}
|
|
174
|
-
try {
|
|
175
|
-
const config = await parseFormulaYml(formulaYmlPath);
|
|
176
|
-
// Check in formulas array
|
|
177
|
-
if (config.formulas?.some(dep => areFormulaNamesEquivalent(dep.name, formulaName))) {
|
|
178
|
-
return DEPENDENCY_ARRAYS.FORMULAS;
|
|
179
|
-
}
|
|
180
|
-
// Check in dev-formulas array
|
|
181
|
-
if (config[DEPENDENCY_ARRAYS.DEV_FORMULAS]?.some(dep => areFormulaNamesEquivalent(dep.name, formulaName))) {
|
|
182
|
-
return DEPENDENCY_ARRAYS.DEV_FORMULAS;
|
|
183
|
-
}
|
|
184
|
-
return null;
|
|
185
|
-
}
|
|
186
|
-
catch (error) {
|
|
187
|
-
logger.warn(`Failed to parse formula.yml: ${error}`);
|
|
188
|
-
return null;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
//# sourceMappingURL=formula-management.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formula-management.js","sourceRoot":"","sources":["../../src/utils/formula-management.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { ValidationError } from './errors.js';
|
|
2
|
-
/**
|
|
3
|
-
* Regex pattern for scoped formula names (@scope/name)
|
|
4
|
-
*/
|
|
5
|
-
export const SCOPED_FORMULA_REGEX = /^@([^\/]+)\/(.+)$/;
|
|
6
|
-
/**
|
|
7
|
-
* Error messages for formula name validation
|
|
8
|
-
*/
|
|
9
|
-
const ERROR_MESSAGES = {
|
|
10
|
-
INVALID_FORMULA_NAME: 'Invalid formula name: %s. Formula names must be 1-214 characters, contain only letters, numbers, hyphens, underscores, and dots. Cannot start with a number, dot, or hyphen. Cannot have consecutive dots, underscores, or hyphens. Scoped names must be in format @<scope>/<name>. Formula names are case-insensitive and will be normalized to lowercase.'
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Validate formula name according to naming rules
|
|
14
|
-
* @param name - The formula name to validate
|
|
15
|
-
* @throws ValidationError if the name is invalid
|
|
16
|
-
*/
|
|
17
|
-
export function validateFormulaName(name) {
|
|
18
|
-
// Check length
|
|
19
|
-
if (name.length === 0 || name.length > 214) {
|
|
20
|
-
throw new ValidationError(ERROR_MESSAGES.INVALID_FORMULA_NAME.replace('%s', name));
|
|
21
|
-
}
|
|
22
|
-
// Check for leading/trailing spaces
|
|
23
|
-
if (name.trim() !== name) {
|
|
24
|
-
throw new ValidationError(ERROR_MESSAGES.INVALID_FORMULA_NAME.replace('%s', name));
|
|
25
|
-
}
|
|
26
|
-
// Check if it's a scoped name (@scope/name format)
|
|
27
|
-
const scopedMatch = name.match(SCOPED_FORMULA_REGEX);
|
|
28
|
-
if (scopedMatch) {
|
|
29
|
-
const [, scope, localName] = scopedMatch;
|
|
30
|
-
// Validate scope part
|
|
31
|
-
validateFormulaNamePart(scope, name);
|
|
32
|
-
// Validate local name part
|
|
33
|
-
validateFormulaNamePart(localName, name);
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
// Validate as regular name
|
|
37
|
-
validateFormulaNamePart(name, name);
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Validate a formula name part (scope or local name)
|
|
41
|
-
* @param part - The part to validate
|
|
42
|
-
* @param fullName - The full original name for error messages
|
|
43
|
-
* @throws ValidationError if the part is invalid
|
|
44
|
-
*/
|
|
45
|
-
function validateFormulaNamePart(part, fullName) {
|
|
46
|
-
// Check first character
|
|
47
|
-
if (/^[0-9.\-]/.test(part)) {
|
|
48
|
-
throw new ValidationError(ERROR_MESSAGES.INVALID_FORMULA_NAME.replace('%s', fullName));
|
|
49
|
-
}
|
|
50
|
-
// Check for consecutive special characters
|
|
51
|
-
if (/(\.\.|__|--)/.test(part)) {
|
|
52
|
-
throw new ValidationError(ERROR_MESSAGES.INVALID_FORMULA_NAME.replace('%s', fullName));
|
|
53
|
-
}
|
|
54
|
-
// Check allowed characters only
|
|
55
|
-
if (!/^[a-z0-9._-]+$/.test(part)) {
|
|
56
|
-
throw new ValidationError(ERROR_MESSAGES.INVALID_FORMULA_NAME.replace('%s', fullName));
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Parse formula input supporting both scoped names (@scope/name) and version specifications (name@version)
|
|
61
|
-
* Returns normalized name and optional version
|
|
62
|
-
*/
|
|
63
|
-
export function parseFormulaInput(formulaInput) {
|
|
64
|
-
// Formula name with optional version
|
|
65
|
-
const atIndex = formulaInput.lastIndexOf('@');
|
|
66
|
-
if (atIndex === -1 || atIndex === 0) {
|
|
67
|
-
validateFormulaName(formulaInput);
|
|
68
|
-
return {
|
|
69
|
-
name: normalizeFormulaName(formulaInput)
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
const name = formulaInput.substring(0, atIndex);
|
|
73
|
-
const version = formulaInput.substring(atIndex + 1);
|
|
74
|
-
if (!name || !version) {
|
|
75
|
-
throw new ValidationError(`Invalid formula syntax: ${formulaInput}. Use 'formula' or 'formula@version'`);
|
|
76
|
-
}
|
|
77
|
-
validateFormulaName(name);
|
|
78
|
-
return {
|
|
79
|
-
name: normalizeFormulaName(name),
|
|
80
|
-
version
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Normalize a formula name to lowercase, handling scoped names properly.
|
|
85
|
-
* Scoped names like @Scope/Name become @scope/name.
|
|
86
|
-
* Regular names like MyFormula become myformula.
|
|
87
|
-
*/
|
|
88
|
-
export function normalizeFormulaName(name) {
|
|
89
|
-
return name.toLowerCase();
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Check if two formula names are equivalent (case-insensitive).
|
|
93
|
-
*/
|
|
94
|
-
export function areFormulaNamesEquivalent(name1, name2) {
|
|
95
|
-
return normalizeFormulaName(name1) === normalizeFormulaName(name2);
|
|
96
|
-
}
|
|
97
|
-
//# sourceMappingURL=formula-name.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formula-name.js","sourceRoot":"","sources":["../../src/utils/formula-name.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import * as semver from 'semver';
|
|
2
|
-
import yaml from 'js-yaml';
|
|
3
|
-
import { extractBaseVersion } from './version-generator.js';
|
|
4
|
-
import { getFormulaVersionPath } from '../core/directory.js';
|
|
5
|
-
import { exists } from './fs.js';
|
|
6
|
-
import { FILE_PATTERNS } from '../constants/index.js';
|
|
7
|
-
/**
|
|
8
|
-
* Compute stable version from a prerelease version
|
|
9
|
-
* Example: "1.2.3-dev.abc123" -> "1.2.3"
|
|
10
|
-
*/
|
|
11
|
-
export function computeStableVersion(version) {
|
|
12
|
-
const parsed = semver.parse(version);
|
|
13
|
-
if (parsed) {
|
|
14
|
-
return `${parsed.major}.${parsed.minor}.${parsed.patch}`;
|
|
15
|
-
}
|
|
16
|
-
return extractBaseVersion(version);
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Dump YAML with proper quoting for scoped names (e.g., @scope/name)
|
|
20
|
-
*/
|
|
21
|
-
export function dumpYamlWithScopedQuoting(config, options = {}) {
|
|
22
|
-
let dumped = yaml.dump(config, { ...options, quotingType: '"' });
|
|
23
|
-
// Ensure scoped names are quoted
|
|
24
|
-
if (config.name.startsWith('@')) {
|
|
25
|
-
const lines = dumped.split('\n');
|
|
26
|
-
for (let i = 0; i < lines.length; i++) {
|
|
27
|
-
if (lines[i].trim().startsWith('name:')) {
|
|
28
|
-
const valueMatch = lines[i].match(/name:\s*(.+)$/);
|
|
29
|
-
if (valueMatch) {
|
|
30
|
-
const value = valueMatch[1].trim();
|
|
31
|
-
if (!value.startsWith('"') && !value.startsWith("'")) {
|
|
32
|
-
lines[i] = lines[i].replace(/name:\s*(.+)$/, `name: "${config.name}"`);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
break;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
dumped = lines.join('\n');
|
|
39
|
-
}
|
|
40
|
-
return dumped;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Transform formula files for version change only (no name change)
|
|
44
|
-
* Updates formula.yml version field
|
|
45
|
-
*/
|
|
46
|
-
export function transformFormulaFilesForVersionChange(files, newVersion, formulaName) {
|
|
47
|
-
return files.map((file) => {
|
|
48
|
-
if (file.path === FILE_PATTERNS.FORMULA_YML) {
|
|
49
|
-
try {
|
|
50
|
-
const parsed = yaml.load(file.content);
|
|
51
|
-
const updated = {
|
|
52
|
-
...parsed,
|
|
53
|
-
version: newVersion
|
|
54
|
-
};
|
|
55
|
-
const dumped = dumpYamlWithScopedQuoting(updated, { lineWidth: 120 });
|
|
56
|
-
return { ...file, content: dumped };
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
// Fallback: minimal rewrite if parsing fails
|
|
60
|
-
const fallback = {
|
|
61
|
-
name: formulaName,
|
|
62
|
-
version: newVersion
|
|
63
|
-
};
|
|
64
|
-
const dumped = dumpYamlWithScopedQuoting(fallback, { lineWidth: 120 });
|
|
65
|
-
return { ...file, content: dumped };
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return file;
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Transform formula files metadata for name and version changes
|
|
73
|
-
* Updates formula.yml only
|
|
74
|
-
*/
|
|
75
|
-
export function transformFormulaFilesMetadata(files, sourceName, newName, newVersion) {
|
|
76
|
-
return files.map((file) => {
|
|
77
|
-
// Update formula.yml
|
|
78
|
-
if (file.path === FILE_PATTERNS.FORMULA_YML) {
|
|
79
|
-
try {
|
|
80
|
-
const parsed = yaml.load(file.content);
|
|
81
|
-
const updated = {
|
|
82
|
-
...parsed,
|
|
83
|
-
name: newName,
|
|
84
|
-
version: newVersion
|
|
85
|
-
};
|
|
86
|
-
const dumped = dumpYamlWithScopedQuoting(updated, { lineWidth: 120 });
|
|
87
|
-
return { ...file, content: dumped };
|
|
88
|
-
}
|
|
89
|
-
catch {
|
|
90
|
-
// Fallback: minimal rewrite if parsing fails
|
|
91
|
-
const fallback = {
|
|
92
|
-
name: newName,
|
|
93
|
-
version: newVersion
|
|
94
|
-
};
|
|
95
|
-
const dumped = dumpYamlWithScopedQuoting(fallback, { lineWidth: 120 });
|
|
96
|
-
return { ...file, content: dumped };
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return file;
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Check if a formula version already exists
|
|
104
|
-
*/
|
|
105
|
-
export async function formulaVersionExists(formulaName, version) {
|
|
106
|
-
const targetPath = getFormulaVersionPath(formulaName, version);
|
|
107
|
-
return await exists(targetPath);
|
|
108
|
-
}
|
|
109
|
-
//# sourceMappingURL=formula-versioning.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formula-versioning.js","sourceRoot":"","sources":["../../src/utils/formula-versioning.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import * as yaml from 'js-yaml';
|
|
2
|
-
import { readTextFile, writeTextFile } from './fs.js';
|
|
3
|
-
/**
|
|
4
|
-
* Parse formula.yml file with validation
|
|
5
|
-
*/
|
|
6
|
-
export async function parseFormulaYml(formulaYmlPath) {
|
|
7
|
-
try {
|
|
8
|
-
const content = await readTextFile(formulaYmlPath);
|
|
9
|
-
const parsed = yaml.load(content);
|
|
10
|
-
// Validate required fields
|
|
11
|
-
if (!parsed.name || !parsed.version) {
|
|
12
|
-
throw new Error('formula.yml must contain name and version fields');
|
|
13
|
-
}
|
|
14
|
-
return parsed;
|
|
15
|
-
}
|
|
16
|
-
catch (error) {
|
|
17
|
-
throw new Error(`Failed to parse formula.yml: ${error}`);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Write formula.yml file with consistent formatting
|
|
22
|
-
*/
|
|
23
|
-
export async function writeFormulaYml(formulaYmlPath, config) {
|
|
24
|
-
// First generate YAML with default block style
|
|
25
|
-
let content = yaml.dump(config, {
|
|
26
|
-
indent: 2,
|
|
27
|
-
noArrayIndent: true,
|
|
28
|
-
sortKeys: false,
|
|
29
|
-
quotingType: '"' // Prefer double quotes for consistency
|
|
30
|
-
});
|
|
31
|
-
// Ensure scoped names (starting with @) are quoted
|
|
32
|
-
const isScopedName = config.name.startsWith('@');
|
|
33
|
-
if (isScopedName) {
|
|
34
|
-
// Split into lines and process the name line
|
|
35
|
-
const lines = content.split('\n');
|
|
36
|
-
for (let i = 0; i < lines.length; i++) {
|
|
37
|
-
if (lines[i].trim().startsWith('name:')) {
|
|
38
|
-
// Check if the name value is already quoted
|
|
39
|
-
const valueMatch = lines[i].match(/name:\s*(.+)$/);
|
|
40
|
-
if (valueMatch) {
|
|
41
|
-
const value = valueMatch[1].trim();
|
|
42
|
-
// If not quoted, add quotes
|
|
43
|
-
if (!value.startsWith('"') && !value.startsWith("'")) {
|
|
44
|
-
lines[i] = lines[i].replace(/name:\s*(.+)$/, `name: "${config.name}"`);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
break;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
content = lines.join('\n');
|
|
51
|
-
}
|
|
52
|
-
// Convert arrays from block style to flow style
|
|
53
|
-
const flowStyleArrays = ['keywords'];
|
|
54
|
-
for (const arrayField of flowStyleArrays) {
|
|
55
|
-
const arrayValue = config[arrayField];
|
|
56
|
-
if (Array.isArray(arrayValue) && arrayValue.length > 0) {
|
|
57
|
-
// Split content into lines for easier processing
|
|
58
|
-
const lines = content.split('\n');
|
|
59
|
-
const result = [];
|
|
60
|
-
let i = 0;
|
|
61
|
-
while (i < lines.length) {
|
|
62
|
-
const line = lines[i];
|
|
63
|
-
if (line.trim() === `${arrayField}:`) {
|
|
64
|
-
// Found array section, create flow style
|
|
65
|
-
const arrayFlow = `${arrayField}: [${arrayValue.join(', ')}]`;
|
|
66
|
-
result.push(arrayFlow);
|
|
67
|
-
// Skip the following dash lines
|
|
68
|
-
i++;
|
|
69
|
-
while (i < lines.length && lines[i].trim().startsWith('-')) {
|
|
70
|
-
i++;
|
|
71
|
-
}
|
|
72
|
-
continue;
|
|
73
|
-
}
|
|
74
|
-
result.push(line);
|
|
75
|
-
i++;
|
|
76
|
-
}
|
|
77
|
-
content = result.join('\n');
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
await writeTextFile(formulaYmlPath, content);
|
|
81
|
-
}
|
|
82
|
-
//# sourceMappingURL=formula-yml.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formula-yml.js","sourceRoot":"","sources":["../../src/utils/formula-yml.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/git.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { spawn } from 'child_process';
|
|
2
|
-
import { logger } from './logger.js';
|
|
3
|
-
export class GitCommandError extends Error {
|
|
4
|
-
constructor(message, args, cwd, result) {
|
|
5
|
-
super(message);
|
|
6
|
-
this.name = 'GitCommandError';
|
|
7
|
-
this.args = args;
|
|
8
|
-
this.cwd = cwd;
|
|
9
|
-
this.result = result;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
export async function runGitCommand(args, options = {}) {
|
|
13
|
-
const { cwd, env, input, allowExitCodes } = options;
|
|
14
|
-
return await new Promise((resolve, reject) => {
|
|
15
|
-
const child = spawn('git', args, {
|
|
16
|
-
cwd,
|
|
17
|
-
env,
|
|
18
|
-
stdio: ['pipe', 'pipe', 'pipe']
|
|
19
|
-
});
|
|
20
|
-
let stdout = '';
|
|
21
|
-
let stderr = '';
|
|
22
|
-
child.stdout.setEncoding('utf8');
|
|
23
|
-
child.stderr.setEncoding('utf8');
|
|
24
|
-
child.stdout.on('data', chunk => {
|
|
25
|
-
stdout += chunk;
|
|
26
|
-
});
|
|
27
|
-
child.stderr.on('data', chunk => {
|
|
28
|
-
stderr += chunk;
|
|
29
|
-
});
|
|
30
|
-
child.on('error', error => {
|
|
31
|
-
reject(error);
|
|
32
|
-
});
|
|
33
|
-
child.on('close', exitCode => {
|
|
34
|
-
const result = {
|
|
35
|
-
stdout: stdout.trim(),
|
|
36
|
-
stderr: stderr.trim(),
|
|
37
|
-
exitCode: exitCode ?? -1
|
|
38
|
-
};
|
|
39
|
-
const permittedCodes = allowExitCodes ?? [0];
|
|
40
|
-
if (!permittedCodes.includes(result.exitCode)) {
|
|
41
|
-
const message = `Git command failed (git ${args.join(' ')}${cwd ? ` in ${cwd}` : ''})`;
|
|
42
|
-
logger.debug(message, { args, cwd, result });
|
|
43
|
-
reject(new GitCommandError(message, args, cwd, result));
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
resolve(result);
|
|
47
|
-
});
|
|
48
|
-
if (input) {
|
|
49
|
-
child.stdin.write(input);
|
|
50
|
-
}
|
|
51
|
-
child.stdin.end();
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=git.js.map
|
package/dist/utils/git.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAerC,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAKxC,YAAY,OAAe,EAAE,IAAc,EAAE,GAAuB,EAAE,MAAwB;QAC5F,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAc,EACd,UAAgC,EAAE;IAElC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAEpD,OAAO,MAAM,IAAI,OAAO,CAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE;YAC/B,GAAG;YACH,GAAG;YACH,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEjC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YACxB,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;YAC3B,MAAM,MAAM,GAAqB;gBAC/B,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;gBACrB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;gBACrB,QAAQ,EAAE,QAAQ,IAAI,CAAC,CAAC;aACzB,CAAC;YAEF,MAAM,cAAc,GAAG,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9C,MAAM,OAAO,GAAG,2BAA2B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;gBACvF,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC7C,MAAM,CAAC,IAAI,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;gBACxD,OAAO;YACT,CAAC;YAED,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC"}
|