@noeva/analytics-core 0.3.0 → 0.3.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/CHANGELOG.md CHANGED
@@ -3,6 +3,13 @@
3
3
  Le versioni del pacchetto che i repository dei progetti installano (ADR 0005). Prima di
4
4
  `analytics upgrade` si legge cosa cambia fra la versione installata e la nuova.
5
5
 
6
+ ## 0.3.1 — 6 novembre 2026
7
+
8
+ - `analytics pubblica` non segue piu' i redirect: un contenitore senza la rotta
9
+ `/_pagine/` manda al login con un 302, e la 0.3.0 prendeva la pagina di login (200)
10
+ per una pubblicazione riuscita. Ora si ferma e dice che il contenitore va deployato;
11
+ una risposta vale solo se e' il `{ok: true}` del contenitore.
12
+
6
13
  ## 0.3.0 — 6 novembre 2026
7
14
 
8
15
  Il repository del progetto basta a se stesso (ADR 0005): pubblica pagine e modello e
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@noeva/analytics-core",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Gli strumenti di un progetto NOEVA Analytics nel suo repository: moduli di pagina, snapshot, verifica dello standard e kit dell'agente (ADR 0005).",
5
5
  "type": "module",
6
6
  "bin": {
package/pubblica.js CHANGED
@@ -145,9 +145,12 @@ export async function chiediBiglietto({ progetto, versione, workspace, tipo, env
145
145
  }
146
146
 
147
147
  async function chiama(fetchImpl, metodo, url, biglietto, corpo, tipo) {
148
+ // Niente redirect: un contenitore senza la rotta manda al login con un 302, e
149
+ // seguirlo darebbe un 200 (la pagina di login) scambiato per una pubblicazione.
148
150
  const r = await fetchImpl(url, {
149
151
  method: metodo,
150
152
  body: corpo,
153
+ redirect: 'manual',
151
154
  headers: {
152
155
  Authorization: `Bearer ${biglietto}`,
153
156
  'User-Agent': 'noeva-analytics-core',
@@ -157,9 +160,12 @@ async function chiama(fetchImpl, metodo, url, biglietto, corpo, tipo) {
157
160
  const testo = await r.text();
158
161
  let risposta;
159
162
  try { risposta = JSON.parse(testo); } catch { risposta = { errore: testo.slice(0, 200) }; }
160
- if (!r.ok) {
163
+ if (!r.ok || risposta.ok !== true) {
161
164
  const dettaglio = risposta.mancanti ? ` (${risposta.mancanti.join(', ')})` : '';
162
- throw new ErroreConfig(`${metodo} ${new URL(url).pathname}: ${r.status} ${risposta.errore ?? ''}${dettaglio}`);
165
+ const perche = r.status >= 300 && r.status < 400
166
+ ? `rimanda a ${r.headers.get('Location') ?? '?'}: il contenitore non ha questa rotta (va deployato?)`
167
+ : (risposta.errore ?? '');
168
+ throw new ErroreConfig(`${metodo} ${new URL(url).pathname}: ${r.status} ${perche}${dettaglio}`);
163
169
  }
164
170
  return risposta;
165
171
  }