dcntui 0.1.7 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +73 -19
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/config.d.ts +2 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +68 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +348 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +10 -153
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts +6 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +104 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/remove.d.ts +2 -0
- package/dist/commands/remove.d.ts.map +1 -0
- package/dist/commands/remove.js +87 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/search.d.ts +2 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +124 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/update.d.ts +6 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +247 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/index.js +24 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/banner.d.ts.map +1 -1
- package/dist/utils/banner.js.map +1 -1
- package/dist/utils/config.d.ts +2 -2
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/detect-css.d.ts +6 -6
- package/dist/utils/detect-css.d.ts.map +1 -1
- package/dist/utils/detect-css.js +16 -12
- package/dist/utils/detect-css.js.map +1 -1
- package/dist/utils/detect-framework.d.ts +1 -1
- package/dist/utils/detect-framework.d.ts.map +1 -1
- package/dist/utils/detect-package-manager.d.ts +1 -0
- package/dist/utils/detect-package-manager.d.ts.map +1 -1
- package/dist/utils/detect-package-manager.js +12 -0
- package/dist/utils/detect-package-manager.js.map +1 -1
- package/dist/utils/detect-typescript.d.ts.map +1 -1
- package/dist/utils/detect-typescript.js.map +1 -1
- package/dist/utils/helpers.d.ts +1 -1
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/helpers.js +4 -5
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/lock.d.ts +6 -0
- package/dist/utils/lock.d.ts.map +1 -0
- package/dist/utils/lock.js +30 -0
- package/dist/utils/lock.js.map +1 -0
- package/dist/utils/registry.d.ts +27 -0
- package/dist/utils/registry.d.ts.map +1 -1
- package/dist/utils/registry.js +86 -2
- package/dist/utils/registry.js.map +1 -1
- package/dist/utils/search.d.ts +21 -0
- package/dist/utils/search.d.ts.map +1 -0
- package/dist/utils/search.js +104 -0
- package/dist/utils/search.js.map +1 -0
- package/dist/utils/wizard.d.ts +12 -0
- package/dist/utils/wizard.d.ts.map +1 -0
- package/dist/utils/wizard.js +168 -0
- package/dist/utils/wizard.js.map +1 -0
- package/dist/utils/write-component.d.ts +8 -0
- package/dist/utils/write-component.d.ts.map +1 -1
- package/dist/utils/write-component.js +83 -2
- package/dist/utils/write-component.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
|
|
3
|
+
import { createHash } from 'node:crypto';
|
|
4
4
|
export function writeComponentFiles(cwd, config, metadata) {
|
|
5
5
|
const componentDir = path.join(cwd, config.componentsDir, metadata.name);
|
|
6
6
|
fs.mkdirSync(componentDir, { recursive: true });
|
|
@@ -11,9 +11,79 @@ export function writeComponentFiles(cwd, config, metadata) {
|
|
|
11
11
|
fs.writeFileSync(dest, file.content, 'utf-8');
|
|
12
12
|
written.push(path.relative(cwd, dest));
|
|
13
13
|
}
|
|
14
|
+
const dcntuiDir = path.join(cwd, '.dcntui');
|
|
15
|
+
fs.mkdirSync(dcntuiDir, { recursive: true });
|
|
16
|
+
const fileHashes = {};
|
|
17
|
+
for (const file of metadata.files) {
|
|
18
|
+
fileHashes[file.path] = hashContent(file.content);
|
|
19
|
+
}
|
|
20
|
+
fs.writeFileSync(path.join(dcntuiDir, `${metadata.name}.json`), JSON.stringify({
|
|
21
|
+
name: metadata.name,
|
|
22
|
+
version: metadata.version,
|
|
23
|
+
dependencies: metadata.dependencies,
|
|
24
|
+
fileHashes
|
|
25
|
+
}, null, 2) + '\n', 'utf-8');
|
|
14
26
|
return written;
|
|
15
27
|
}
|
|
16
|
-
|
|
28
|
+
export function hashContent(content) {
|
|
29
|
+
return createHash('sha256').update(content, 'utf-8').digest('hex');
|
|
30
|
+
}
|
|
31
|
+
export function diffComponentFiles(cwd, config, metadata) {
|
|
32
|
+
const componentDir = path.join(cwd, config.componentsDir, metadata.name);
|
|
33
|
+
const metaPath = path.join(cwd, '.dcntui', `${metadata.name}.json`);
|
|
34
|
+
let storedHashes = {};
|
|
35
|
+
if (fs.existsSync(metaPath)) {
|
|
36
|
+
try {
|
|
37
|
+
const meta = JSON.parse(fs.readFileSync(metaPath, 'utf-8'));
|
|
38
|
+
storedHashes = meta.fileHashes ?? {};
|
|
39
|
+
}
|
|
40
|
+
catch { }
|
|
41
|
+
}
|
|
42
|
+
return metadata.files.map((file) => {
|
|
43
|
+
const diskPath = path.join(componentDir, file.path);
|
|
44
|
+
const diskExists = fs.existsSync(diskPath);
|
|
45
|
+
if (!diskExists) {
|
|
46
|
+
return { filePath: file.path, locallyModified: false, diffLines: [] };
|
|
47
|
+
}
|
|
48
|
+
const diskContent = fs.readFileSync(diskPath, 'utf-8');
|
|
49
|
+
const diskHash = hashContent(diskContent);
|
|
50
|
+
const remoteHash = hashContent(file.content);
|
|
51
|
+
const installedHash = storedHashes[file.path];
|
|
52
|
+
const locallyModified = installedHash !== undefined && diskHash !== installedHash && diskHash !== remoteHash;
|
|
53
|
+
const diffLines = locallyModified ? buildDiffLines(file.path, diskContent, file.content) : [];
|
|
54
|
+
return { filePath: file.path, locallyModified, diffLines };
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function buildDiffLines(filePath, oldText, newText) {
|
|
58
|
+
const oldLines = oldText.split('\n');
|
|
59
|
+
const newLines = newText.split('\n');
|
|
60
|
+
const output = [];
|
|
61
|
+
const maxLen = Math.max(oldLines.length, newLines.length);
|
|
62
|
+
output.push(`--- ${filePath} (local)`);
|
|
63
|
+
output.push(`+++ ${filePath} (registry)`);
|
|
64
|
+
let changed = false;
|
|
65
|
+
for (let i = 0; i < maxLen; i++) {
|
|
66
|
+
const oldLine = oldLines[i];
|
|
67
|
+
const newLine = newLines[i];
|
|
68
|
+
if (oldLine === undefined) {
|
|
69
|
+
output.push(`+ ${newLine}`);
|
|
70
|
+
changed = true;
|
|
71
|
+
}
|
|
72
|
+
else if (newLine === undefined) {
|
|
73
|
+
output.push(`- ${oldLine}`);
|
|
74
|
+
changed = true;
|
|
75
|
+
}
|
|
76
|
+
else if (oldLine !== newLine) {
|
|
77
|
+
output.push(`- ${oldLine}`);
|
|
78
|
+
output.push(`+ ${newLine}`);
|
|
79
|
+
changed = true;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
output.push(` ${oldLine}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return changed ? output : [];
|
|
86
|
+
}
|
|
17
87
|
const DCNTUI_START = '/* dcntui:start */';
|
|
18
88
|
const DCNTUI_END = '/* dcntui:end */';
|
|
19
89
|
export function patchStylesFile(cwd, config, metadata) {
|
|
@@ -36,6 +106,17 @@ export function patchStylesFile(cwd, config, metadata) {
|
|
|
36
106
|
fs.writeFileSync(stylesPath, content, 'utf-8');
|
|
37
107
|
return true;
|
|
38
108
|
}
|
|
109
|
+
export function revertStylesPatch(cwd, config) {
|
|
110
|
+
const stylesPath = path.join(cwd, config.stylesFile);
|
|
111
|
+
if (!fs.existsSync(stylesPath))
|
|
112
|
+
return false;
|
|
113
|
+
let content = fs.readFileSync(stylesPath, 'utf-8');
|
|
114
|
+
if (!content.includes(DCNTUI_START))
|
|
115
|
+
return false;
|
|
116
|
+
content = content.replace(/\n*\/\* dcntui:start \*\/[\s\S]*?\/\* dcntui:end \*\/\n*/g, '\n');
|
|
117
|
+
fs.writeFileSync(stylesPath, content.trimEnd() + '\n', 'utf-8');
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
39
120
|
function buildCssBlock(config, metadata) {
|
|
40
121
|
const { tailwind } = metadata;
|
|
41
122
|
switch (config.css) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-component.js","sourceRoot":"","sources":["../../src/utils/write-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"write-component.js","sourceRoot":"","sources":["../../src/utils/write-component.ts"],"names":[],"mappings":"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"}
|