youiyoux 0.1.19 → 0.1.20
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 +2 -0
- package/dist/chunks/{chunk-75LXBAYB.js → chunk-3SXAQHHJ.js} +44 -5
- package/dist/chunks/{chunk-AFEQZT2N.js → chunk-6UHSXSS6.js} +1 -1
- package/dist/chunks/{chunk-DHZDMZXE.js → chunk-K2W23VI3.js} +30 -12
- package/dist/chunks/{chunk-OE4RYJOS.js → chunk-TI3G57PX.js} +1 -1
- package/dist/chunks/{chunk-NG73FB4O.js → chunk-WBU7YJGZ.js} +1 -1
- package/dist/chunks/{chunk-2F2HM7FE.js → chunk-YQS2VF65.js} +3 -3
- package/dist/chunks/{ingest-X4MIF5F6.js → ingest-IOFHL5VG.js} +3 -3
- package/dist/chunks/{src-Q3ZJHEUQ.js → src-CCB3D7EM.js} +1 -1
- package/dist/chunks/{src-VSWKGVFT.js → src-LESGEHOC.js} +2 -2
- package/dist/chunks/{src-LGHUKRL2.js → src-Z3LZMTHC.js} +2 -2
- package/dist/hub-previews.js +2 -2
- package/dist/hub-server.js +2 -2
- package/dist/hub-snapshot.js +1 -1
- package/dist/youi.js +3 -3
- package/dist/youiyoux.js +3 -3
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -16,6 +16,8 @@ No config, no account. You get:
|
|
|
16
16
|
- `youiyoux-card.png`: a 1200×630 card with the headline numbers.
|
|
17
17
|
- `youiyoux-summary.md`: paste it into a PR or issue.
|
|
18
18
|
|
|
19
|
+
New to it? [Getting started](https://github.com/ap9000/youiyoux/blob/main/docs/getting-started.md): the report, the top fix, your agent and CI, in five steps.
|
|
20
|
+
|
|
19
21
|
## For your agent
|
|
20
22
|
|
|
21
23
|
```sh
|
|
@@ -1224,13 +1224,16 @@ var Theme = class {
|
|
|
1224
1224
|
/** Project declarations only: excludes implicit Tailwind defaults. */
|
|
1225
1225
|
declared;
|
|
1226
1226
|
forms;
|
|
1227
|
+
/** Declared variables Tailwind makes utilities from (`--color-muted` → `text-muted`): an `@theme` block's, or the Tailwind config's. */
|
|
1228
|
+
utilities;
|
|
1227
1229
|
vars;
|
|
1228
|
-
constructor(vars, tailwind, warnings, declared = /* @__PURE__ */ new Map(), forms = null) {
|
|
1230
|
+
constructor(vars, tailwind, warnings, declared = /* @__PURE__ */ new Map(), forms = null, utilities = /* @__PURE__ */ new Set()) {
|
|
1229
1231
|
this.vars = vars;
|
|
1230
1232
|
this.declared = declared;
|
|
1231
1233
|
this.tailwind = tailwind;
|
|
1232
1234
|
this.warnings = warnings;
|
|
1233
1235
|
this.forms = forms;
|
|
1236
|
+
this.utilities = utilities;
|
|
1234
1237
|
}
|
|
1235
1238
|
variable(name) {
|
|
1236
1239
|
return this.vars.get(name);
|
|
@@ -1399,17 +1402,20 @@ async function buildTheme(root, sheets, usesTailwindPackage) {
|
|
|
1399
1402
|
const version = v4 ? 4 : v3 || usesTailwindPackage ? 3 : null;
|
|
1400
1403
|
const vars = version ? defaults(version) : /* @__PURE__ */ new Map();
|
|
1401
1404
|
const declared = new Map(config.vars);
|
|
1405
|
+
const utilities = new Set(version ? config.vars.keys() : []);
|
|
1402
1406
|
for (const [name, value] of config.vars) vars.set(name, value);
|
|
1403
1407
|
for (const sheet of sheets) {
|
|
1404
1408
|
for (const rule of sheet.rules) {
|
|
1405
|
-
|
|
1409
|
+
const scope = rule.preludes.length === 1 ? rule.preludes[0].replace(/\s+/g, " ") : null;
|
|
1410
|
+
if (!scope || !THEME_SCOPES.has(scope)) continue;
|
|
1406
1411
|
for (const declaration of rule.declarations) if (declaration.property.startsWith("--")) {
|
|
1407
1412
|
vars.set(declaration.property, declaration.value);
|
|
1408
1413
|
declared.set(declaration.property, declaration.value);
|
|
1414
|
+
if (version === 4 && scope.startsWith("@theme")) utilities.add(declaration.property);
|
|
1409
1415
|
}
|
|
1410
1416
|
}
|
|
1411
1417
|
}
|
|
1412
|
-
return new Theme(vars, version, config.warnings, declared, version ? await formsPluginOf(root, sheets, config.file) : null);
|
|
1418
|
+
return new Theme(vars, version, config.warnings, declared, version ? await formsPluginOf(root, sheets, config.file) : null, utilities);
|
|
1413
1419
|
}
|
|
1414
1420
|
|
|
1415
1421
|
// ../scanner/src/inventory/style.ts
|
|
@@ -1900,7 +1906,6 @@ function nearDuplicates(input) {
|
|
|
1900
1906
|
const { inventory, added, importOf } = input;
|
|
1901
1907
|
const definitions = new Map(inventory.definitions.map((d) => [d.id, d]));
|
|
1902
1908
|
const fresh = inventory.definitions.filter((d) => added(d.file, d.line));
|
|
1903
|
-
if (fresh.length === 0) return [];
|
|
1904
1909
|
const freshIds = new Set(fresh.map((d) => d.id));
|
|
1905
1910
|
const ends = /* @__PURE__ */ new Map();
|
|
1906
1911
|
for (const definition of fresh) {
|
|
@@ -1921,7 +1926,8 @@ function nearDuplicates(input) {
|
|
|
1921
1926
|
if (root?.kind === "primitive" || root?.kind === "definition" && definitions.has(root.id) && !freshIds.has(root.id)) continue;
|
|
1922
1927
|
const own = inventory.looks.filter((l) => hasShape(l.shape) && inside(l, definition) && l.definition !== definition.id);
|
|
1923
1928
|
const roots = inventory.looks.filter((l) => hasShape(l.shape) && inside(l, definition) && l.definition === definition.id);
|
|
1924
|
-
|
|
1929
|
+
if (roots.length === 0 && own.length > 0) continue;
|
|
1930
|
+
const looks = roots.length > 0 ? roots : inventory.looks.filter((l) => hasShape(l.shape) && l.definition === definition.id);
|
|
1925
1931
|
let best = null;
|
|
1926
1932
|
for (const mine of looks) {
|
|
1927
1933
|
const shape = clusterShapeOf(mine);
|
|
@@ -1944,6 +1950,39 @@ function nearDuplicates(input) {
|
|
|
1944
1950
|
fix: reuse.fix
|
|
1945
1951
|
});
|
|
1946
1952
|
}
|
|
1953
|
+
const reported = fresh.filter((d) => findings.some((f) => f.file === d.file && f.line === d.line));
|
|
1954
|
+
const componentOf = (look) => look.recipe?.kind === "component" ? `${look.recipe.file}#${look.recipe.export}` : null;
|
|
1955
|
+
const uses = /* @__PURE__ */ new Map();
|
|
1956
|
+
for (const look of inventory.looks) if (look.recipe?.kind === "component" && look.file !== look.recipe.file && !look.story) uses.set(componentOf(look), (uses.get(componentOf(look)) ?? 0) + 1);
|
|
1957
|
+
const components = inventory.looks.filter((l) => hasShape(l.shape) && uses.has(componentOf(l) ?? "") && !(l.definition !== null && freshIds.has(l.definition)));
|
|
1958
|
+
const linkRoot = (look) => {
|
|
1959
|
+
const root = definitions.get(look.definition ?? "")?.root;
|
|
1960
|
+
return root?.kind === "intrinsic" ? root.tag === "a" : root?.kind === "primitive" ? /link/i.test(root.name === "default" ? root.module : root.name) : false;
|
|
1961
|
+
};
|
|
1962
|
+
for (const mine of inventory.looks) {
|
|
1963
|
+
if (mine.source !== "intrinsic" || mine.definition !== null || mine.story || !hasShape(mine.shape) || !added(mine.file, mine.line)) continue;
|
|
1964
|
+
if ([mine.shape.height, mine.shape.paddingX || null, mine.shape.radius, mine.shape.fontSize].filter((v) => v !== null).length < 3) continue;
|
|
1965
|
+
if (reported.some((d) => inside(mine, d))) continue;
|
|
1966
|
+
const shape = clusterShapeOf(mine);
|
|
1967
|
+
const mineClasses = classesOf(mine.recipe);
|
|
1968
|
+
let best = null;
|
|
1969
|
+
for (const other of components) {
|
|
1970
|
+
if (other.role !== mine.role || mine.tag === "a" !== linkRoot(other) || !compatible(shape, clusterShapeOf(other))) continue;
|
|
1971
|
+
const rank = [shapeDistance(shape, clusterShapeOf(other)), -uses.get(componentOf(other)), -overlap(mineClasses, classesOf(other.recipe))];
|
|
1972
|
+
if (!best || before(rank, best.rank)) best = { look: other, rank };
|
|
1973
|
+
}
|
|
1974
|
+
if (!best) continue;
|
|
1975
|
+
const reuse = reuseOf(best.look, definitions, importOf, mine.file);
|
|
1976
|
+
findings.push({
|
|
1977
|
+
kind: "near-duplicate",
|
|
1978
|
+
file: mine.file,
|
|
1979
|
+
line: mine.line,
|
|
1980
|
+
column: mine.column,
|
|
1981
|
+
text: `<${mine.tag}>`,
|
|
1982
|
+
message: `A hand-styled <${mine.tag}> that looks like the existing ${reuse.name} (${best.look.file}:${best.look.line}): ${describeShape(mine)}. Confirm it is the same role; if so, render ${reuse.name} instead.`,
|
|
1983
|
+
fix: reuse.fix
|
|
1984
|
+
});
|
|
1985
|
+
}
|
|
1947
1986
|
return findings.sort(byPosition);
|
|
1948
1987
|
}
|
|
1949
1988
|
function importedNames(statement) {
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
startRuleEditor,
|
|
10
10
|
style,
|
|
11
11
|
truncate
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-YQS2VF65.js";
|
|
13
13
|
import {
|
|
14
14
|
BASELINE_FILE,
|
|
15
15
|
DEFAULT_EXCLUDE,
|
|
@@ -64,7 +64,7 @@ import {
|
|
|
64
64
|
vendoredPath,
|
|
65
65
|
whereUsed,
|
|
66
66
|
withFile
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-3SXAQHHJ.js";
|
|
68
68
|
import {
|
|
69
69
|
escapingLinks,
|
|
70
70
|
within
|
|
@@ -1382,6 +1382,8 @@ async function themeTokens(root, modules) {
|
|
|
1382
1382
|
const theme = await buildTheme(root, sheets, false);
|
|
1383
1383
|
const tokens = [];
|
|
1384
1384
|
const byVar = /* @__PURE__ */ new Map();
|
|
1385
|
+
const themeKeys = /* @__PURE__ */ new Map();
|
|
1386
|
+
const ids = /* @__PURE__ */ new Set();
|
|
1385
1387
|
for (const [name, raw] of theme.declared) {
|
|
1386
1388
|
const value = substituteVars(raw, (key2) => theme.variable(key2));
|
|
1387
1389
|
if (value === null) continue;
|
|
@@ -1390,11 +1392,16 @@ async function themeTokens(root, modules) {
|
|
|
1390
1392
|
const px = kind ? theme.length(value) : null;
|
|
1391
1393
|
if (!color && px === null) continue;
|
|
1392
1394
|
const light = color ?? { value: px, unit: "px" };
|
|
1393
|
-
const
|
|
1395
|
+
const group = color ? "color" : kind;
|
|
1396
|
+
const short = `${group}.${name.slice(2).replace(new RegExp(`^${group}-`), "")}`;
|
|
1397
|
+
const id = ids.has(short) ? `${group}.${name.slice(2)}` : short;
|
|
1398
|
+
ids.add(id);
|
|
1399
|
+
const token = { id, type: color ? "color" : "dimension", cssName: name.slice(2), light, dark: light };
|
|
1394
1400
|
tokens.push(token);
|
|
1395
1401
|
byVar.set(name, token);
|
|
1402
|
+
if (theme.utilities.has(name)) themeKeys.set(id, [name.slice(2)]);
|
|
1396
1403
|
}
|
|
1397
|
-
return { prefix: "", tokens, byVar, themeKeys
|
|
1404
|
+
return { prefix: "", tokens, byVar, themeKeys };
|
|
1398
1405
|
}
|
|
1399
1406
|
async function runRepoCheck(project2, change) {
|
|
1400
1407
|
const target = await loadInventoryTarget(project2.root);
|
|
@@ -3409,7 +3416,7 @@ async function projectStatus(project2, cwd = process.cwd()) {
|
|
|
3409
3416
|
const comparison = check.baseline?.comparison;
|
|
3410
3417
|
const counted = comparison ? [...comparison.new, ...comparison.regressed] : check.violations;
|
|
3411
3418
|
const usages = check.scan.report.usages;
|
|
3412
|
-
const { RequestStore } = await import("./src-
|
|
3419
|
+
const { RequestStore } = await import("./src-LESGEHOC.js");
|
|
3413
3420
|
const requests = await new RequestStore(project2.root, project2.config.id).list();
|
|
3414
3421
|
const status = {
|
|
3415
3422
|
id: project2.config.id,
|
|
@@ -4735,17 +4742,23 @@ async function modulesOf(project2, target, failed3) {
|
|
|
4735
4742
|
}
|
|
4736
4743
|
return modules;
|
|
4737
4744
|
}
|
|
4745
|
+
function groupKey(finding3) {
|
|
4746
|
+
if (finding3.kind === "off-library") return finding3.message;
|
|
4747
|
+
if (finding3.kind !== "hardcoded-value") return finding3.fix;
|
|
4748
|
+
const { word, value, tokens } = hardcodedValue(finding3);
|
|
4749
|
+
return `${word}\0${value}\0${tokens}`;
|
|
4750
|
+
}
|
|
4738
4751
|
async function grouped(project2, found, lines, describe) {
|
|
4739
4752
|
const groups = /* @__PURE__ */ new Map();
|
|
4740
4753
|
for (const finding3 of found) {
|
|
4741
|
-
const key2 = `${finding3.kind}\0${finding3
|
|
4754
|
+
const key2 = `${finding3.kind}\0${groupKey(finding3)}`;
|
|
4742
4755
|
groups.set(key2, [...groups.get(key2) ?? [], finding3]);
|
|
4743
4756
|
}
|
|
4744
4757
|
const findings2 = [];
|
|
4745
4758
|
for (const list of groups.values()) {
|
|
4746
4759
|
const first = list[0];
|
|
4747
4760
|
const sites = await Promise.all(list.slice(0, SITES_PER_FINDING).map((f) => lines.site(`${repoPath(project2.dir, f.file)}:${f.line}`, repoPath(project2.dir, f.file), f.line)));
|
|
4748
|
-
const { title, next: next2 } = describe(first, list.length);
|
|
4761
|
+
const { title, next: next2 } = describe(first, list.length, list);
|
|
4749
4762
|
findings2.push({ kind: first.kind, project: project2.dir, count: list.length, sites, title, detail: null, next: next2 });
|
|
4750
4763
|
}
|
|
4751
4764
|
return findings2.sort((a, b) => b.count - a.count || a.title.localeCompare(b.title));
|
|
@@ -4812,9 +4825,14 @@ async function analyseProject(project2, index, inventory, inventoryError, worksp
|
|
|
4812
4825
|
if (tokens.tokens.length === 0) notes.push("No theme variables (CSS custom properties or Tailwind @theme) were found, so hardcoded values had nothing to be compared with");
|
|
4813
4826
|
const usage = tokenUsage(modules);
|
|
4814
4827
|
const found = (await Promise.all(modules.map((module) => reportTokens(module, tokens, usage)))).flat();
|
|
4815
|
-
hardcoded = await grouped(project2, found, lines, (first, count) => {
|
|
4828
|
+
hardcoded = await grouped(project2, found, lines, (first, count, list) => {
|
|
4816
4829
|
const { word, value, tokens: names } = hardcodedValue(first);
|
|
4817
|
-
|
|
4830
|
+
const fixes = [...new Map(list.map((f) => [f.fix, f.text]))];
|
|
4831
|
+
const tail = / \([^()]*\)$/.exec(first.fix)?.[0] ?? "";
|
|
4832
|
+
const shared = tail !== "" && fixes.every(([fix]) => fix.endsWith(tail));
|
|
4833
|
+
const each = fixes.slice(0, 3).map(([fix, text], i) => `${(shared ? fix.slice(0, -tail.length) : fix).replace(i > 0 ? /^use / : /^$/, "")} for ${text}`);
|
|
4834
|
+
const next2 = fixes.length === 1 ? `${sentence(first.fix)} in each place` : `${sentence(each.join(", "))}${fixes.length > 3 ? ", \u2026" : ""}${shared ? tail : ""}`;
|
|
4835
|
+
return { title: `${sentence(word)} ${value} is hardcoded in ${plural(count, "place")}; the theme already has it as ${names}`, next: next2 };
|
|
4818
4836
|
});
|
|
4819
4837
|
} catch (error) {
|
|
4820
4838
|
incomplete.push(`Hardcoded values were not checked (${errorText(error)}); run ${NPX} check --diff to see why`);
|
|
@@ -6048,7 +6066,7 @@ async function cmdLibrary(values, positionals) {
|
|
|
6048
6066
|
return 0;
|
|
6049
6067
|
}
|
|
6050
6068
|
if (action === "ingest" && query && positionals.length === 2) {
|
|
6051
|
-
const { fileIngestDraft, readLink, renderIngest } = await import("./ingest-
|
|
6069
|
+
const { fileIngestDraft, readLink, renderIngest } = await import("./ingest-IOFHL5VG.js");
|
|
6052
6070
|
const p = values.draft ? await project(values) : null;
|
|
6053
6071
|
const reading = await readLink(query, { allowLocal: true });
|
|
6054
6072
|
const filed = p ? await fileIngestDraft(p, reading, values.state) : null;
|
|
@@ -6507,7 +6525,7 @@ async function cmdRequests(values, positionals) {
|
|
|
6507
6525
|
const usage = "youiyoux requests [--status open|addressed|closed|all] [--route r] or youiyoux requests show <id> | reply <id> --message <text> | addressed <id> --message <what you changed>";
|
|
6508
6526
|
const [action, id, ...rest] = positionals;
|
|
6509
6527
|
if (rest.length > 0) throw new UsageError(usage);
|
|
6510
|
-
const { RequestStore, requestBrief } = await import("./src-
|
|
6528
|
+
const { RequestStore, requestBrief } = await import("./src-LESGEHOC.js");
|
|
6511
6529
|
const { project: project2, root } = await product(values);
|
|
6512
6530
|
const store = new RequestStore(root, project2?.config.id ?? basename5(root));
|
|
6513
6531
|
const agent = { kind: "agent", name: "youiyoux CLI" };
|
|
@@ -6606,7 +6624,7 @@ async function cmdReport(values, positionals, io) {
|
|
|
6606
6624
|
return result.code;
|
|
6607
6625
|
}
|
|
6608
6626
|
async function cmdMcp(values) {
|
|
6609
|
-
const { startStdioServer } = await import("./src-
|
|
6627
|
+
const { startStdioServer } = await import("./src-Z3LZMTHC.js");
|
|
6610
6628
|
await startStdioServer({ projectRoot: values.project ?? process.cwd(), ...loadOptions(values), ...values.cache ? { discoverCache: values.cache } : {} });
|
|
6611
6629
|
return -1;
|
|
6612
6630
|
}
|
|
@@ -3,7 +3,7 @@ import { createRequire as __youiRequire } from "node:module"; import { dirname a
|
|
|
3
3
|
// src/hub-packages.js
|
|
4
4
|
var PACKAGES = {
|
|
5
5
|
core: () => import("./src-AXF5XUQE.js"),
|
|
6
|
-
scanner: () => import("./src-
|
|
6
|
+
scanner: () => import("./src-CCB3D7EM.js"),
|
|
7
7
|
discover: () => import("./src-ULAQV67E.js"),
|
|
8
8
|
tokens: () => import("./src-HBKEBCH6.js")
|
|
9
9
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __youiRequire } from "node:module"; import { dirname as __youiDir } from "node:path"; import { fileURLToPath as __youiPath } from "node:url"; const require = __youiRequire(import.meta.url); const __youiDirname = __youiDir(__youiPath(import.meta.url));
|
|
2
2
|
import {
|
|
3
3
|
loadProject
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-3SXAQHHJ.js";
|
|
5
5
|
import {
|
|
6
6
|
shortHash
|
|
7
7
|
} from "./chunk-M56633DV.js";
|
|
@@ -79,11 +79,11 @@ function workflowStateDir(project, state) {
|
|
|
79
79
|
return resolve(state ?? join(homedir(), ".youi", "workflow", shortHash(`${project.repo.root}\0${project.root}`)));
|
|
80
80
|
}
|
|
81
81
|
async function ingest(link) {
|
|
82
|
-
const { readLink } = await import("./ingest-
|
|
82
|
+
const { readLink } = await import("./ingest-IOFHL5VG.js");
|
|
83
83
|
return readLink(link, { allowLocal: false });
|
|
84
84
|
}
|
|
85
85
|
async function startRuleEditor(options) {
|
|
86
|
-
const { FileStore, RuleWorkflow, serveWorkflow } = await import("./src-
|
|
86
|
+
const { FileStore, RuleWorkflow, serveWorkflow } = await import("./src-LESGEHOC.js");
|
|
87
87
|
const projectRoot = resolve(options.project);
|
|
88
88
|
const load = { ...options.config ? { configPath: resolve(options.config) } : {}, ...options.design ? { designRoot: resolve(options.design) } : {}, ...options.root ? { productRoot: resolve(options.root) } : {} };
|
|
89
89
|
const project = await loadProject(projectRoot, load);
|
|
@@ -4,8 +4,8 @@ import {
|
|
|
4
4
|
plural,
|
|
5
5
|
style,
|
|
6
6
|
workflowStateDir
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-YQS2VF65.js";
|
|
8
|
+
import "./chunk-3SXAQHHJ.js";
|
|
9
9
|
import "./chunk-42YJX3W5.js";
|
|
10
10
|
import "./chunk-4BQPCZLL.js";
|
|
11
11
|
import "./chunk-M56633DV.js";
|
|
@@ -23,7 +23,7 @@ async function readLink(link, options) {
|
|
|
23
23
|
return { link: result.link, source: result.source, license: result.license, fetchedAt: result.fetchedAt, entries: result.entries, skipped: result.skipped, notes: result.notes };
|
|
24
24
|
}
|
|
25
25
|
async function fileIngestDraft(project, reading, state) {
|
|
26
|
-
const { FileStore, RuleWorkflow } = await import("./src-
|
|
26
|
+
const { FileStore, RuleWorkflow } = await import("./src-LESGEHOC.js");
|
|
27
27
|
const workflow = new RuleWorkflow({ projectRoot: project.root, store: new FileStore(workflowStateDir(project, state)), ...project.configFile ? { configPath: project.configFile } : {}, ...project.designOverride ? { designRoot: project.repo.root } : {}, ...project.rootOverride ? { productRoot: project.root } : {}, ingest: async () => reading });
|
|
28
28
|
const draft = await workflow.create({ kind: "person", name: userInfo().username }, { kind: "ingest", link: reading.link });
|
|
29
29
|
return { id: draft.id, problems: draft.problems };
|
|
@@ -64,8 +64,8 @@ import {
|
|
|
64
64
|
validateIngestContent,
|
|
65
65
|
validateLibraryContent,
|
|
66
66
|
validateStyleContent
|
|
67
|
-
} from "./chunk-
|
|
68
|
-
import "./chunk-
|
|
67
|
+
} from "./chunk-TI3G57PX.js";
|
|
68
|
+
import "./chunk-3SXAQHHJ.js";
|
|
69
69
|
import "./chunk-42YJX3W5.js";
|
|
70
70
|
import "./chunk-4BQPCZLL.js";
|
|
71
71
|
import "./chunk-M56633DV.js";
|
|
@@ -2,7 +2,7 @@ import { createRequire as __youiRequire } from "node:module"; import { dirname a
|
|
|
2
2
|
import {
|
|
3
3
|
RequestStore,
|
|
4
4
|
requestBrief
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-TI3G57PX.js";
|
|
6
6
|
import {
|
|
7
7
|
PROJECT_FILE,
|
|
8
8
|
ScanCache,
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
shotsText,
|
|
31
31
|
tokenRows,
|
|
32
32
|
whereUsed
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-3SXAQHHJ.js";
|
|
34
34
|
import "./chunk-42YJX3W5.js";
|
|
35
35
|
import {
|
|
36
36
|
SHADCN_SLOTS,
|
package/dist/hub-previews.js
CHANGED
|
@@ -17,8 +17,8 @@ import {
|
|
|
17
17
|
selectCandidates,
|
|
18
18
|
thumbsDir,
|
|
19
19
|
writeThumbIndex
|
|
20
|
-
} from "./chunks/chunk-
|
|
21
|
-
import "./chunks/chunk-
|
|
20
|
+
} from "./chunks/chunk-6UHSXSS6.js";
|
|
21
|
+
import "./chunks/chunk-WBU7YJGZ.js";
|
|
22
22
|
import "./chunks/chunk-FVVL5JCY.js";
|
|
23
23
|
import "./chunks/chunk-M56633DV.js";
|
|
24
24
|
import "./chunks/chunk-WNTS7ZO4.js";
|
package/dist/hub-server.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { createRequire as __youiRequire } from "node:module"; import { dirname as __youiDir } from "node:path"; import { fileURLToPath as __youiPath } from "node:url"; const require = __youiRequire(import.meta.url); const __youiDirname = __youiDir(__youiPath(import.meta.url));
|
|
3
3
|
import {
|
|
4
4
|
discoverThumbsMiddleware
|
|
5
|
-
} from "./chunks/chunk-
|
|
5
|
+
} from "./chunks/chunk-6UHSXSS6.js";
|
|
6
6
|
import {
|
|
7
7
|
isLocalHost,
|
|
8
8
|
loadPackage,
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
readTryIndex,
|
|
11
11
|
send,
|
|
12
12
|
tryMiddleware
|
|
13
|
-
} from "./chunks/chunk-
|
|
13
|
+
} from "./chunks/chunk-WBU7YJGZ.js";
|
|
14
14
|
import "./chunks/chunk-FVVL5JCY.js";
|
|
15
15
|
import "./chunks/chunk-M56633DV.js";
|
|
16
16
|
import "./chunks/chunk-WNTS7ZO4.js";
|
package/dist/hub-snapshot.js
CHANGED
|
@@ -3,7 +3,7 @@ import { createRequire as __youiRequire } from "node:module"; import { dirname a
|
|
|
3
3
|
import {
|
|
4
4
|
loadPackage,
|
|
5
5
|
tryProject
|
|
6
|
-
} from "./chunks/chunk-
|
|
6
|
+
} from "./chunks/chunk-WBU7YJGZ.js";
|
|
7
7
|
import "./chunks/chunk-FVVL5JCY.js";
|
|
8
8
|
import "./chunks/chunk-WNTS7ZO4.js";
|
|
9
9
|
|
package/dist/youi.js
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
import { createRequire as __youiRequire } from "node:module"; import { dirname as __youiDir } from "node:path"; import { fileURLToPath as __youiPath } from "node:url"; const require = __youiRequire(import.meta.url); const __youiDirname = __youiDir(__youiPath(import.meta.url));
|
|
3
3
|
import {
|
|
4
4
|
main
|
|
5
|
-
} from "./chunks/chunk-
|
|
6
|
-
import "./chunks/chunk-
|
|
7
|
-
import "./chunks/chunk-
|
|
5
|
+
} from "./chunks/chunk-K2W23VI3.js";
|
|
6
|
+
import "./chunks/chunk-YQS2VF65.js";
|
|
7
|
+
import "./chunks/chunk-3SXAQHHJ.js";
|
|
8
8
|
import "./chunks/chunk-42YJX3W5.js";
|
|
9
9
|
import "./chunks/chunk-5D7PLY7A.js";
|
|
10
10
|
import "./chunks/chunk-UJMXSTUF.js";
|
package/dist/youiyoux.js
CHANGED
|
@@ -3,9 +3,9 @@ import { createRequire as __youiRequire } from "node:module"; import { dirname a
|
|
|
3
3
|
import {
|
|
4
4
|
COMMAND_NAMES,
|
|
5
5
|
main
|
|
6
|
-
} from "./chunks/chunk-
|
|
7
|
-
import "./chunks/chunk-
|
|
8
|
-
import "./chunks/chunk-
|
|
6
|
+
} from "./chunks/chunk-K2W23VI3.js";
|
|
7
|
+
import "./chunks/chunk-YQS2VF65.js";
|
|
8
|
+
import "./chunks/chunk-3SXAQHHJ.js";
|
|
9
9
|
import "./chunks/chunk-42YJX3W5.js";
|
|
10
10
|
import "./chunks/chunk-5D7PLY7A.js";
|
|
11
11
|
import "./chunks/chunk-UJMXSTUF.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "youiyoux",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.20",
|
|
4
4
|
"description": "Your agent rebuilds components you already have. youiyoux catches it: npx youiyoux turns any repo into a shareable report of near-duplicate components, hardcoded token values and off-library imports, with the fixes.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -46,9 +46,9 @@
|
|
|
46
46
|
"typescript": "6.0.3"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@youiyoux/cli": "0.1.
|
|
50
|
-
"@youiyoux/core": "0.1.
|
|
51
|
-
"@youiyoux/scanner": "0.1.
|
|
49
|
+
"@youiyoux/cli": "0.1.20",
|
|
50
|
+
"@youiyoux/core": "0.1.20",
|
|
51
|
+
"@youiyoux/scanner": "0.1.20"
|
|
52
52
|
},
|
|
53
53
|
"exports": {
|
|
54
54
|
"./package.json": "./package.json"
|