synthesisui 0.16.297 → 0.16.298
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/import.js +32 -0
- package/dist/wired-slugs.js +86 -0
- package/package.json +1 -1
package/dist/commands/import.js
CHANGED
|
@@ -49,6 +49,7 @@ import { phase, startProgress } from "../progress.js";
|
|
|
49
49
|
import { repoStateOf } from "../repo-state.js";
|
|
50
50
|
import { runtimeDeclaredVars, runtimeDeclaredVarsIn } from "../runtime-vars.js";
|
|
51
51
|
import { detectStack, resolveDeps, stackVersions } from "../stack.js";
|
|
52
|
+
import { wiredSlugs, wiringWarning } from "../wired-slugs.js";
|
|
52
53
|
import { placeInWorkspace } from "../workspace-place.js";
|
|
53
54
|
import { add } from "./add.js";
|
|
54
55
|
import { walk, walkAll } from "./doctor.js";
|
|
@@ -2113,6 +2114,17 @@ export async function takeCensus(root, opts) {
|
|
|
2113
2114
|
: {}),
|
|
2114
2115
|
...(animations.size > 0 ? { animations: [...animations].sort() } : {}),
|
|
2115
2116
|
...(brokenRefs.length > 0 ? { brokenRefs } : {}),
|
|
2117
|
+
/**
|
|
2118
|
+
* OS SISTEMAS QUE O CSS DELE JÁ CHAMA PELO NOME - ver `wiredSlugs`.
|
|
2119
|
+
*
|
|
2120
|
+
* Existe porque um import de 24/08 deixou o repositório do dono SEM COMPILAR: o CSS dele
|
|
2121
|
+
* carrega `_synthesisui/ds/codelevel/`, o sistema nasceu como `codelevel-ds`, e o `next build`
|
|
2122
|
+
* dele terminou em exit code 1 com `Can't resolve`. Não é cor errada - é o app parado.
|
|
2123
|
+
*
|
|
2124
|
+
* O campo é a metade medida da resposta; a outra é a pergunta do nome saber usá-lo. Aditivo e
|
|
2125
|
+
* omitido quando não há nada cabeado, que é o caso de todo primeiro import limpo.
|
|
2126
|
+
*/
|
|
2127
|
+
...(wiredSlugs(css).length > 0 ? { wiredSlugs: wiredSlugs(css) } : {}),
|
|
2116
2128
|
/**
|
|
2117
2129
|
* OS NOMES DISPUTADOS - ver `name-claim.ts`.
|
|
2118
2130
|
*
|
|
@@ -3995,6 +4007,26 @@ export async function runImport(opts) {
|
|
|
3995
4007
|
* mais longa do produto ficar mais longa no lugar onde ela já é mais difícil de ler.
|
|
3996
4008
|
*/
|
|
3997
4009
|
if (payload?.slug) {
|
|
4010
|
+
/**
|
|
4011
|
+
* A FIAÇÃO DELE CONTRA O SLUG QUE NASCEU - e este aviso sai do CLI, não da skill.
|
|
4012
|
+
*
|
|
4013
|
+
* MEDIDO em 24/08: o `globals.css` dele importa `_synthesisui/ds/codelevel/`, o nome escolhido
|
|
4014
|
+
* derivou `codelevel-ds`, ninguém mencionou, e o `next build` dele terminou em exit code 1 com
|
|
4015
|
+
* `Can't resolve`. O aplicativo do cliente parou de compilar por causa de um comando que a
|
|
4016
|
+
* plataforma conduziu do começo ao fim.
|
|
4017
|
+
*
|
|
4018
|
+
* AQUI e não só no playbook porque o playbook é conselho e isto é fato: o slug chegou do
|
|
4019
|
+
* servidor, a pasta vai ser escrita com ele, e a divergência é aritmética. Um aviso que depende
|
|
4020
|
+
* de um agente ter lido o capítulo certo é um aviso que falta exatamente quando ele não leu -
|
|
4021
|
+
* foi assim que este defeito passou.
|
|
4022
|
+
*/
|
|
4023
|
+
const warning = wiringWarning(census.wiredSlugs ?? [], payload.slug);
|
|
4024
|
+
if (warning) {
|
|
4025
|
+
console.log("");
|
|
4026
|
+
console.log(section("Your CSS points somewhere else"));
|
|
4027
|
+
for (const line of warning.split("\n"))
|
|
4028
|
+
console.log(body(line));
|
|
4029
|
+
}
|
|
3998
4030
|
try {
|
|
3999
4031
|
await add(payload.slug, {
|
|
4000
4032
|
registry: opts.registry,
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OS SISTEMAS QUE O CSS DELE JÁ CHAMA PELO NOME - e o build que quebra quando o nome não bate.
|
|
3
|
+
*
|
|
4
|
+
* O QUE ACONTECEU, medido no repositório do dono em 24/08: o `globals.css` dele carrega
|
|
5
|
+
*
|
|
6
|
+
* @import "../../../../_synthesisui/ds/codelevel/tokens.css";
|
|
7
|
+
* @import "../../../../_synthesisui/ds/codelevel/theme.css";
|
|
8
|
+
*
|
|
9
|
+
* O import daquela corrida nasceu com o slug `codelevel-ds`, então o `add` escreveu
|
|
10
|
+
* `_synthesisui/ds/codelevel-ds/` e os dois `@import` passaram a apontar para uma pasta que não
|
|
11
|
+
* existe. O `next build` dele terminou em **exit code 1**:
|
|
12
|
+
*
|
|
13
|
+
* Can't resolve '../../../../_synthesisui/ds/codelevel/tokens.css'
|
|
14
|
+
*
|
|
15
|
+
* Não é uma cor errada nem um token faltando: o aplicativo dele **não compila**. É o pior desfecho
|
|
16
|
+
* possível de uma esteira que existe para devolver o código dele funcionando, e ele sai de um
|
|
17
|
+
* comando que a plataforma conduziu do começo ao fim.
|
|
18
|
+
*
|
|
19
|
+
* POR QUE O SLUG PODE DIVERGIR: o nome é decisão dele, feita numa pergunta, e o slug deriva do
|
|
20
|
+
* nome. "CodeLevel" dá `codelevel`; "CodeLevel DS" dá `codelevel-ds`. As duas respostas são
|
|
21
|
+
* legítimas - o que não é legítimo é ninguém dizer que a segunda quebra o CSS que já está lá.
|
|
22
|
+
*
|
|
23
|
+
* ENTÃO A MEDIÇÃO VEM ANTES DA PERGUNTA. Este leitor responde "quais slugs o CSS deste repositório
|
|
24
|
+
* já espera encontrar", e o censo carrega a resposta. Com ela na mão, a pergunta do nome deixa de
|
|
25
|
+
* ser um campo em branco: existe um slug que faz a fiação resolver, e ele é dito em voz alta.
|
|
26
|
+
*
|
|
27
|
+
* DIZER, E NÃO DECIDIR. A plataforma não escolhe o nome do sistema dele nem reescreve o CSS dele -
|
|
28
|
+
* é o mesmo padrão do `add`, que imprime o `@import` e não o cola. O que ela deve é nunca deixá-lo
|
|
29
|
+
* escolher às cegas uma resposta que apaga o build.
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* O caminho que a nossa própria instalação usa. Qualquer profundidade de `../`, porque a folha dele
|
|
33
|
+
* pode estar em qualquer nível - a do dono está quatro acima.
|
|
34
|
+
*/
|
|
35
|
+
const WIRED = /_synthesisui\/ds\/([a-z0-9][a-z0-9-]*)\//gi;
|
|
36
|
+
/**
|
|
37
|
+
* Os slugs que o CSS dele já referencia, em ordem de aparição e sem repetir.
|
|
38
|
+
*
|
|
39
|
+
* Recebe o CSS já concatenado porque é isso que o censo tem em mão - uma segunda varredura de
|
|
40
|
+
* arquivos seria uma segunda medição, livre para discordar da primeira.
|
|
41
|
+
*/
|
|
42
|
+
export function wiredSlugs(css) {
|
|
43
|
+
const out = [];
|
|
44
|
+
for (const m of css.matchAll(WIRED))
|
|
45
|
+
if (!out.includes(m[1].toLowerCase()))
|
|
46
|
+
out.push(m[1].toLowerCase());
|
|
47
|
+
return out;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* O QUE DIZER A ELE QUANDO O SISTEMA JÁ NASCEU COM OUTRO NOME.
|
|
51
|
+
*
|
|
52
|
+
* Roda DEPOIS do envio, com o slug que o servidor devolveu - então não é previsão, é fato: a pasta
|
|
53
|
+
* vai ser escrita com este nome e os `@import` dele apontam para outro.
|
|
54
|
+
*
|
|
55
|
+
* `null` quando o CSS não cabeia nada (todo primeiro import limpo) e quando o slug que nasceu já é
|
|
56
|
+
* um dos cabeados. Um aviso que aparece sempre é um aviso que ninguém lê.
|
|
57
|
+
*
|
|
58
|
+
* A frase carrega as três coisas que a decisão precisa: o que o CSS espera, o que existe agora, e o
|
|
59
|
+
* que acontece se ele não fizer nada. Sem a terceira isto é trivia - e foi a terceira que faltou na
|
|
60
|
+
* corrida que parou o build dele.
|
|
61
|
+
*
|
|
62
|
+
* DIZER, E NÃO CONSERTAR. O CSS é dele; reescrevê-lo por conta própria seria a plataforma editando
|
|
63
|
+
* o repositório de alguém sem pedir. É o mesmo padrão do `add`, que imprime o `@import` e não o
|
|
64
|
+
* cola.
|
|
65
|
+
*/
|
|
66
|
+
export function wiringWarning(
|
|
67
|
+
/**
|
|
68
|
+
* A LISTA, e não o CSS - porque o censo já a carrega (`census.wiredSlugs`) e o CSS bruto não
|
|
69
|
+
* viaja nele. Recontar aqui seria uma segunda medição, livre para discordar da primeira.
|
|
70
|
+
*/
|
|
71
|
+
wired, slugThatWasBorn) {
|
|
72
|
+
if (wired.length === 0)
|
|
73
|
+
return null;
|
|
74
|
+
if (wired.includes(slugThatWasBorn.toLowerCase()))
|
|
75
|
+
return null;
|
|
76
|
+
return [
|
|
77
|
+
`Your CSS imports _synthesisui/ds/${wired[0]}/, and this system is "${slugThatWasBorn}".`,
|
|
78
|
+
`Those @import lines point at a folder that does not exist, and the build fails on them -`,
|
|
79
|
+
`not a missing colour, a build that stops. Point them at ${slugThatWasBorn} to fix it:`,
|
|
80
|
+
"",
|
|
81
|
+
` @import ".../_synthesisui/ds/${slugThatWasBorn}/tokens.css";`,
|
|
82
|
+
` @import ".../_synthesisui/ds/${slugThatWasBorn}/theme.css";`,
|
|
83
|
+
"",
|
|
84
|
+
"Yours to change - we do not edit your CSS.",
|
|
85
|
+
].join("\n");
|
|
86
|
+
}
|
package/package.json
CHANGED