tempest-react-sdk 0.18.0 → 0.19.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/bin/tempest.mjs +445 -35
- package/dist/AC-Brw7ZrEs.cjs +2 -0
- package/dist/AC-Brw7ZrEs.cjs.map +1 -0
- package/dist/AC-DLl3Z4oj.js +12 -0
- package/dist/AC-DLl3Z4oj.js.map +1 -0
- package/dist/AL-DPGoZjht.cjs +2 -0
- package/dist/AL-DPGoZjht.cjs.map +1 -0
- package/dist/AL-gswGaWlj.js +12 -0
- package/dist/AL-gswGaWlj.js.map +1 -0
- package/dist/AM-QN1eL4Tn.js +12 -0
- package/dist/AM-QN1eL4Tn.js.map +1 -0
- package/dist/AM-VqNWvsI-.cjs +2 -0
- package/dist/AM-VqNWvsI-.cjs.map +1 -0
- package/dist/AP-CPvBa_FK.cjs +2 -0
- package/dist/AP-CPvBa_FK.cjs.map +1 -0
- package/dist/AP-CRAbh1js.js +12 -0
- package/dist/AP-CRAbh1js.js.map +1 -0
- package/dist/BA-CKy_HnnV.js +12 -0
- package/dist/BA-CKy_HnnV.js.map +1 -0
- package/dist/BA-DoMQ6slK.cjs +2 -0
- package/dist/BA-DoMQ6slK.cjs.map +1 -0
- package/dist/CE-Ca-XMDFW.js +12 -0
- package/dist/CE-Ca-XMDFW.js.map +1 -0
- package/dist/CE-as-pGPQa.cjs +2 -0
- package/dist/CE-as-pGPQa.cjs.map +1 -0
- package/dist/DF-8kzFoovF.js +12 -0
- package/dist/DF-8kzFoovF.js.map +1 -0
- package/dist/DF-Wr8WNxSX.cjs +2 -0
- package/dist/DF-Wr8WNxSX.cjs.map +1 -0
- package/dist/ES-B4uWNG6s.js +12 -0
- package/dist/ES-B4uWNG6s.js.map +1 -0
- package/dist/ES-wKVjD_TM.cjs +2 -0
- package/dist/ES-wKVjD_TM.cjs.map +1 -0
- package/dist/GO-D4m4rOqy.cjs +2 -0
- package/dist/GO-D4m4rOqy.cjs.map +1 -0
- package/dist/GO-DuaAgIfo.js +12 -0
- package/dist/GO-DuaAgIfo.js.map +1 -0
- package/dist/MA-BmaUZZKe.cjs +2 -0
- package/dist/MA-BmaUZZKe.cjs.map +1 -0
- package/dist/MA-wOyPxG_M.js +12 -0
- package/dist/MA-wOyPxG_M.js.map +1 -0
- package/dist/MG-BYsqJd-S.js +12 -0
- package/dist/MG-BYsqJd-S.js.map +1 -0
- package/dist/MG-BchdfJXp.cjs +2 -0
- package/dist/MG-BchdfJXp.cjs.map +1 -0
- package/dist/MS-DZkgtN_7.js +12 -0
- package/dist/MS-DZkgtN_7.js.map +1 -0
- package/dist/MS-Dz9lDw37.cjs +2 -0
- package/dist/MS-Dz9lDw37.cjs.map +1 -0
- package/dist/MT-BkVchoah.cjs +2 -0
- package/dist/MT-BkVchoah.cjs.map +1 -0
- package/dist/MT-GmMwFWw2.js +12 -0
- package/dist/MT-GmMwFWw2.js.map +1 -0
- package/dist/PA-C2FpT6Ew.cjs +2 -0
- package/dist/PA-C2FpT6Ew.cjs.map +1 -0
- package/dist/PA-DgyDzDFi.js +12 -0
- package/dist/PA-DgyDzDFi.js.map +1 -0
- package/dist/PB-BGkzbQup.cjs +2 -0
- package/dist/PB-BGkzbQup.cjs.map +1 -0
- package/dist/PB-D-6NE6KM.js +12 -0
- package/dist/PB-D-6NE6KM.js.map +1 -0
- package/dist/PE-D8V7gWY-.cjs +2 -0
- package/dist/PE-D8V7gWY-.cjs.map +1 -0
- package/dist/PE-vqm-t7Nh.js +12 -0
- package/dist/PE-vqm-t7Nh.js.map +1 -0
- package/dist/PI-CILuGJlW.js +12 -0
- package/dist/PI-CILuGJlW.js.map +1 -0
- package/dist/PI-dJYCbXQM.cjs +2 -0
- package/dist/PI-dJYCbXQM.cjs.map +1 -0
- package/dist/PR-DN8AV__r.js +12 -0
- package/dist/PR-DN8AV__r.js.map +1 -0
- package/dist/PR-P17oBdNH.cjs +2 -0
- package/dist/PR-P17oBdNH.cjs.map +1 -0
- package/dist/RJ-Bccz05Em.js +12 -0
- package/dist/RJ-Bccz05Em.js.map +1 -0
- package/dist/RJ-Budqx7QP.cjs +2 -0
- package/dist/RJ-Budqx7QP.cjs.map +1 -0
- package/dist/RN-DLcJBxo3.cjs +2 -0
- package/dist/RN-DLcJBxo3.cjs.map +1 -0
- package/dist/RN-DTqFP-Nm.js +12 -0
- package/dist/RN-DTqFP-Nm.js.map +1 -0
- package/dist/RO-BCC54UTU.js +12 -0
- package/dist/RO-BCC54UTU.js.map +1 -0
- package/dist/RO-B_IDyci4.cjs +2 -0
- package/dist/RO-B_IDyci4.cjs.map +1 -0
- package/dist/RR-CDGUEyla.cjs +2 -0
- package/dist/RR-CDGUEyla.cjs.map +1 -0
- package/dist/RR-OCnI_XpU.js +12 -0
- package/dist/RR-OCnI_XpU.js.map +1 -0
- package/dist/RS-DiBeY_u5.cjs +2 -0
- package/dist/RS-DiBeY_u5.cjs.map +1 -0
- package/dist/RS-Dy7gBbbH.js +12 -0
- package/dist/RS-Dy7gBbbH.js.map +1 -0
- package/dist/SC-CEMoj8g2.cjs +2 -0
- package/dist/SC-CEMoj8g2.cjs.map +1 -0
- package/dist/SC-trCqQDXz.js +12 -0
- package/dist/SC-trCqQDXz.js.map +1 -0
- package/dist/SE-DAfFbZcK.cjs +2 -0
- package/dist/SE-DAfFbZcK.cjs.map +1 -0
- package/dist/SE-DBdfSrGk.js +12 -0
- package/dist/SE-DBdfSrGk.js.map +1 -0
- package/dist/SP-Cse4d68i.cjs +2 -0
- package/dist/SP-Cse4d68i.cjs.map +1 -0
- package/dist/SP-qPZjJDOT.js +12 -0
- package/dist/SP-qPZjJDOT.js.map +1 -0
- package/dist/TO-CZtMDVug.js +12 -0
- package/dist/TO-CZtMDVug.js.map +1 -0
- package/dist/TO-Dwi5zIyF.cjs +2 -0
- package/dist/TO-Dwi5zIyF.cjs.map +1 -0
- package/dist/br-centroids--O7-1KXz.cjs +2 -0
- package/dist/br-centroids--O7-1KXz.cjs.map +1 -0
- package/dist/br-centroids-IHN7PIzD.js +10 -0
- package/dist/br-centroids-IHN7PIzD.js.map +1 -0
- package/dist/br-geo-BYynYOwK.cjs +2 -0
- package/dist/br-geo-BYynYOwK.cjs.map +1 -0
- package/dist/br-geo-DFRuvjuU.js +8 -0
- package/dist/br-geo-DFRuvjuU.js.map +1 -0
- package/dist/br.cjs +1 -1
- package/dist/br.cjs.map +1 -1
- package/dist/br.d.ts +334 -6
- package/dist/br.js +769 -368
- package/dist/br.js.map +1 -1
- package/dist/projection-CILVBdpd.cjs +2 -0
- package/dist/projection-CILVBdpd.cjs.map +1 -0
- package/dist/projection-Wnqr_svy.js +215 -0
- package/dist/projection-Wnqr_svy.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/tempest-react-sdk.cjs +3 -3
- package/dist/tempest-react-sdk.cjs.map +1 -1
- package/dist/tempest-react-sdk.d.ts +21 -1
- package/dist/tempest-react-sdk.js +2790 -2848
- package/dist/tempest-react-sdk.js.map +1 -1
- package/package.json +2 -1
- package/dist/AC-BQUmmKrw.cjs +0 -2
- package/dist/AC-BQUmmKrw.cjs.map +0 -1
- package/dist/AC-DOvYXax1.js +0 -12
- package/dist/AC-DOvYXax1.js.map +0 -1
- package/dist/AL-DH1wKIxj.js +0 -12
- package/dist/AL-DH1wKIxj.js.map +0 -1
- package/dist/AL-oN2X02DP.cjs +0 -2
- package/dist/AL-oN2X02DP.cjs.map +0 -1
- package/dist/AM-Cn_JOc_u.cjs +0 -2
- package/dist/AM-Cn_JOc_u.cjs.map +0 -1
- package/dist/AM-D-l4ioxq.js +0 -12
- package/dist/AM-D-l4ioxq.js.map +0 -1
- package/dist/AP-B8H3590m.cjs +0 -2
- package/dist/AP-B8H3590m.cjs.map +0 -1
- package/dist/AP-pl_IXUrz.js +0 -12
- package/dist/AP-pl_IXUrz.js.map +0 -1
- package/dist/BA-DsPuESbp.cjs +0 -2
- package/dist/BA-DsPuESbp.cjs.map +0 -1
- package/dist/BA-HvFNaSvC.js +0 -12
- package/dist/BA-HvFNaSvC.js.map +0 -1
- package/dist/CE-BhzlM8v8.cjs +0 -2
- package/dist/CE-BhzlM8v8.cjs.map +0 -1
- package/dist/CE-C4VCDB2_.js +0 -12
- package/dist/CE-C4VCDB2_.js.map +0 -1
- package/dist/DF-CdR_I7qu.cjs +0 -2
- package/dist/DF-CdR_I7qu.cjs.map +0 -1
- package/dist/DF-DCepvNQG.js +0 -12
- package/dist/DF-DCepvNQG.js.map +0 -1
- package/dist/ES-BNECOgN8.js +0 -12
- package/dist/ES-BNECOgN8.js.map +0 -1
- package/dist/ES-CzZdWdcw.cjs +0 -2
- package/dist/ES-CzZdWdcw.cjs.map +0 -1
- package/dist/GO-CTgkFwbh.js +0 -12
- package/dist/GO-CTgkFwbh.js.map +0 -1
- package/dist/GO-VqQUIkMG.cjs +0 -2
- package/dist/GO-VqQUIkMG.cjs.map +0 -1
- package/dist/MA-CwpNlEs4.cjs +0 -2
- package/dist/MA-CwpNlEs4.cjs.map +0 -1
- package/dist/MA-DC3zmbpX.js +0 -12
- package/dist/MA-DC3zmbpX.js.map +0 -1
- package/dist/MG-DLTyPn6U.js +0 -12
- package/dist/MG-DLTyPn6U.js.map +0 -1
- package/dist/MG-P3ePmTdM.cjs +0 -2
- package/dist/MG-P3ePmTdM.cjs.map +0 -1
- package/dist/MS-Crc916be.js +0 -12
- package/dist/MS-Crc916be.js.map +0 -1
- package/dist/MS-MikLSXO-.cjs +0 -2
- package/dist/MS-MikLSXO-.cjs.map +0 -1
- package/dist/MT-BzUTgqTr.cjs +0 -2
- package/dist/MT-BzUTgqTr.cjs.map +0 -1
- package/dist/MT-DEqs4lmz.js +0 -12
- package/dist/MT-DEqs4lmz.js.map +0 -1
- package/dist/PA-BmFg98qS.cjs +0 -2
- package/dist/PA-BmFg98qS.cjs.map +0 -1
- package/dist/PA-DCJkLLiT.js +0 -12
- package/dist/PA-DCJkLLiT.js.map +0 -1
- package/dist/PB-_6qWqUQe.js +0 -12
- package/dist/PB-_6qWqUQe.js.map +0 -1
- package/dist/PB-cCwnP4jh.cjs +0 -2
- package/dist/PB-cCwnP4jh.cjs.map +0 -1
- package/dist/PE-BCeDGzmC.cjs +0 -2
- package/dist/PE-BCeDGzmC.cjs.map +0 -1
- package/dist/PE-DhAJD50w.js +0 -12
- package/dist/PE-DhAJD50w.js.map +0 -1
- package/dist/PI-8mJVmMWn.cjs +0 -2
- package/dist/PI-8mJVmMWn.cjs.map +0 -1
- package/dist/PI-BBpuVgnF.js +0 -12
- package/dist/PI-BBpuVgnF.js.map +0 -1
- package/dist/PR-Ck8PsNQr.cjs +0 -2
- package/dist/PR-Ck8PsNQr.cjs.map +0 -1
- package/dist/PR-DIU_pEzX.js +0 -12
- package/dist/PR-DIU_pEzX.js.map +0 -1
- package/dist/RJ-BM_31L8v.js +0 -12
- package/dist/RJ-BM_31L8v.js.map +0 -1
- package/dist/RJ-RO2nzm45.cjs +0 -2
- package/dist/RJ-RO2nzm45.cjs.map +0 -1
- package/dist/RN-CGDsj5y7.cjs +0 -2
- package/dist/RN-CGDsj5y7.cjs.map +0 -1
- package/dist/RN-Cb6kQMBf.js +0 -12
- package/dist/RN-Cb6kQMBf.js.map +0 -1
- package/dist/RO-DQlMmLkh.js +0 -12
- package/dist/RO-DQlMmLkh.js.map +0 -1
- package/dist/RO-bBzN2q3e.cjs +0 -2
- package/dist/RO-bBzN2q3e.cjs.map +0 -1
- package/dist/RR-27xmMYjp.cjs +0 -2
- package/dist/RR-27xmMYjp.cjs.map +0 -1
- package/dist/RR-DT5Iz7pA.js +0 -12
- package/dist/RR-DT5Iz7pA.js.map +0 -1
- package/dist/RS-Ax08xnx2.cjs +0 -2
- package/dist/RS-Ax08xnx2.cjs.map +0 -1
- package/dist/RS-Be6-eibq.js +0 -12
- package/dist/RS-Be6-eibq.js.map +0 -1
- package/dist/SC-CR4B6n9K.js +0 -12
- package/dist/SC-CR4B6n9K.js.map +0 -1
- package/dist/SC-D7CvUmBl.cjs +0 -2
- package/dist/SC-D7CvUmBl.cjs.map +0 -1
- package/dist/SE-DYnzRCQV.js +0 -12
- package/dist/SE-DYnzRCQV.js.map +0 -1
- package/dist/SE-fXsuEuvK.cjs +0 -2
- package/dist/SE-fXsuEuvK.cjs.map +0 -1
- package/dist/SP-Cks7QGPk.cjs +0 -2
- package/dist/SP-Cks7QGPk.cjs.map +0 -1
- package/dist/SP-D7R54yvO.js +0 -12
- package/dist/SP-D7R54yvO.js.map +0 -1
- package/dist/TO-CWXJNpx2.js +0 -12
- package/dist/TO-CWXJNpx2.js.map +0 -1
- package/dist/TO-DyvJcNhT.cjs +0 -2
- package/dist/TO-DyvJcNhT.cjs.map +0 -1
- package/dist/br-geo-Q_VQpVMX.js +0 -8
- package/dist/br-geo-Q_VQpVMX.js.map +0 -1
- package/dist/br-geo-rADqOFQL.cjs +0 -2
- package/dist/br-geo-rADqOFQL.cjs.map +0 -1
- package/dist/projection-C2VXUKZJ.js +0 -124
- package/dist/projection-C2VXUKZJ.js.map +0 -1
- package/dist/projection-CkMNK7HA.cjs +0 -2
- package/dist/projection-CkMNK7HA.cjs.map +0 -1
package/bin/tempest.mjs
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// tempest format [paths…] Prettier --write
|
|
8
8
|
// tempest --help | --version
|
|
9
9
|
import { spawnSync } from "node:child_process";
|
|
10
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
10
|
+
import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
11
11
|
import { mkdir, writeFile } from "node:fs/promises";
|
|
12
12
|
import { dirname, join, resolve } from "node:path";
|
|
13
13
|
import { fileURLToPath } from "node:url";
|
|
@@ -81,11 +81,175 @@ function firstExisting(paths) {
|
|
|
81
81
|
return paths.find((p) => existsSync(join(ROOT, p))) ?? null;
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
+
/** Version string from an installed package's package.json, or null. */
|
|
85
|
+
function installedVersion(name) {
|
|
86
|
+
return readJSON(join(ROOT, "node_modules", name, "package.json"))?.version ?? null;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/** Major version number from a semver string, or null. */
|
|
90
|
+
function major(version) {
|
|
91
|
+
if (!version) return null;
|
|
92
|
+
const m = /(\d+)\./.exec(String(version).replace(/^[^\d]*/, ""));
|
|
93
|
+
return m ? Number(m[1]) : null;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* True when `name` has a **nested** copy under tempest-react-sdk — meaning two
|
|
98
|
+
* physical instances load at runtime. Silent killer for React (invalid-hook /
|
|
99
|
+
* dispatcher null) and for context-based libs (react-query, zustand, RHF,
|
|
100
|
+
* router): providers and consumers end up in different module instances.
|
|
101
|
+
*/
|
|
102
|
+
function nestedDupe(name) {
|
|
103
|
+
return existsSync(join(ROOT, "node_modules", "tempest-react-sdk", "node_modules", name));
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Recursively collect source text (bounded) to scan for import usage, and note
|
|
108
|
+
* whether any test file exists. Returns `{ text, hasTests }`.
|
|
109
|
+
*/
|
|
110
|
+
function scanSources() {
|
|
111
|
+
const roots = ["src", "app"].map((d) => join(ROOT, d)).filter(existsSync);
|
|
112
|
+
let text = "";
|
|
113
|
+
let hasTests = false;
|
|
114
|
+
let budget = 4000; // file cap — keep the doctor fast on big trees
|
|
115
|
+
const exts = new Set([".ts", ".tsx", ".js", ".jsx", ".mjs"]);
|
|
116
|
+
const walk = (dir) => {
|
|
117
|
+
if (budget <= 0) return;
|
|
118
|
+
let entries;
|
|
119
|
+
try {
|
|
120
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
121
|
+
} catch {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
for (const e of entries) {
|
|
125
|
+
if (budget <= 0) return;
|
|
126
|
+
if (e.name === "node_modules" || e.name.startsWith(".")) continue;
|
|
127
|
+
const full = join(dir, e.name);
|
|
128
|
+
if (e.isDirectory()) walk(full);
|
|
129
|
+
else if (exts.has(e.name.slice(e.name.lastIndexOf(".")))) {
|
|
130
|
+
budget -= 1;
|
|
131
|
+
if (/\.(test|spec)\./.test(e.name)) hasTests = true;
|
|
132
|
+
try {
|
|
133
|
+
text += readFileSync(full, "utf8");
|
|
134
|
+
} catch {
|
|
135
|
+
/* ignore */
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
roots.forEach(walk);
|
|
141
|
+
return { text, hasTests };
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/** File mtime in ms, or 0 if unreadable. */
|
|
145
|
+
function mtimeMs(path) {
|
|
146
|
+
try {
|
|
147
|
+
return statSync(path).mtimeMs;
|
|
148
|
+
} catch {
|
|
149
|
+
return 0;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/** npm's published latest for a package (best-effort, short timeout). */
|
|
154
|
+
function npmLatest(name) {
|
|
155
|
+
try {
|
|
156
|
+
const res = spawnSync("npm", ["view", name, "version"], {
|
|
157
|
+
encoding: "utf8",
|
|
158
|
+
timeout: 2500,
|
|
159
|
+
});
|
|
160
|
+
const v = (res.stdout ?? "").trim();
|
|
161
|
+
return /^\d+\.\d+\.\d+/.test(v) ? v : null;
|
|
162
|
+
} catch {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/** Matches a real `import … from "tempest-react-sdk/<sub>"` (any quote style). */
|
|
168
|
+
function importsSubpath(src, sub) {
|
|
169
|
+
return new RegExp(`from\\s*["']tempest-react-sdk/${sub}["']`).test(src);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Vite's built-in `import.meta.env` keys — these don't need the VITE_ prefix.
|
|
173
|
+
const BUILTIN_ENV = new Set(["MODE", "DEV", "PROD", "BASE_URL", "SSR"]);
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* `import.meta.env.X` references in source that are neither built-ins nor
|
|
177
|
+
* `VITE_`-prefixed — Vite strips them, so they're `undefined` in the browser.
|
|
178
|
+
*/
|
|
179
|
+
function envPrefixIssues(src) {
|
|
180
|
+
const found = new Set();
|
|
181
|
+
const re = /import\.meta\.env\.([A-Za-z_$][\w$]*)/g;
|
|
182
|
+
let m;
|
|
183
|
+
while ((m = re.exec(src))) {
|
|
184
|
+
const key = m[1];
|
|
185
|
+
if (!BUILTIN_ENV.has(key) && !key.startsWith("VITE_")) found.add(key);
|
|
186
|
+
}
|
|
187
|
+
return [...found];
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/** Package-manager lockfiles present in the project root. */
|
|
191
|
+
function lockfiles() {
|
|
192
|
+
return [
|
|
193
|
+
["package-lock.json", "npm"],
|
|
194
|
+
["yarn.lock", "yarn"],
|
|
195
|
+
["pnpm-lock.yaml", "pnpm"],
|
|
196
|
+
["bun.lockb", "bun"],
|
|
197
|
+
].filter(([f]) => existsSync(join(ROOT, f)));
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/** Declared deps whose folder is missing from node_modules (install drift). */
|
|
201
|
+
function missingInstalled(deps) {
|
|
202
|
+
return Object.keys(deps).filter((name) => {
|
|
203
|
+
const spec = String(deps[name]);
|
|
204
|
+
if (spec.startsWith("workspace:")) return false;
|
|
205
|
+
return !existsSync(join(ROOT, "node_modules", name));
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/** True when `.gitignore` has a line that ignores `.env`. */
|
|
210
|
+
function envIsGitignored() {
|
|
211
|
+
try {
|
|
212
|
+
const lines = readFileSync(join(ROOT, ".gitignore"), "utf8").split(/\r?\n/);
|
|
213
|
+
return lines.some((l) => {
|
|
214
|
+
const s = l.trim();
|
|
215
|
+
return s === ".env" || s === ".env*" || s === "*.local" || s === ".env.local";
|
|
216
|
+
});
|
|
217
|
+
} catch {
|
|
218
|
+
return false;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// Optional peer deps required only when the matching subpath/feature is used.
|
|
223
|
+
// Matchers target real import statements / JSX props, not incidental mentions.
|
|
224
|
+
const OPTIONAL_PEERS = [
|
|
225
|
+
{ peer: "recharts", used: (s) => importsSubpath(s, "charts"), why: "charts" },
|
|
226
|
+
{ peer: "@tiptap/react", used: (s) => importsSubpath(s, "editor"), why: "editor" },
|
|
227
|
+
{ peer: "onnxruntime-web", used: (s) => importsSubpath(s, "vision"), why: "vision" },
|
|
228
|
+
{
|
|
229
|
+
peer: "leaflet",
|
|
230
|
+
// Only when a TrajectoryMap actually receives a tileUrl prop.
|
|
231
|
+
used: (s) => /<TrajectoryMap[^>]*\stileUrl\s*=/.test(s),
|
|
232
|
+
why: "TrajectoryMap tiles",
|
|
233
|
+
},
|
|
234
|
+
];
|
|
235
|
+
|
|
236
|
+
// SDK child-deps that hold module-level state / React context — a second
|
|
237
|
+
// instance silently breaks them (two QueryClients, two RHF contexts, etc.).
|
|
238
|
+
const STATEFUL_DEPS = [
|
|
239
|
+
"react",
|
|
240
|
+
"react-dom",
|
|
241
|
+
"@tanstack/react-query",
|
|
242
|
+
"zustand",
|
|
243
|
+
"react-hook-form",
|
|
244
|
+
"react-router-dom",
|
|
245
|
+
];
|
|
246
|
+
|
|
84
247
|
function doctor() {
|
|
85
248
|
const checks = [];
|
|
86
249
|
const pkg = readJSON(join(ROOT, "package.json"));
|
|
87
250
|
|
|
88
|
-
//
|
|
251
|
+
// ── Environment ─────────────────────────────────────────────────────────
|
|
252
|
+
checks.push(["section", "Environment"]);
|
|
89
253
|
const [maj, min] = process.versions.node.split(".").map(Number);
|
|
90
254
|
const nodeOk = maj > 20 || (maj === 20 && min >= 19);
|
|
91
255
|
checks.push([
|
|
@@ -93,40 +257,215 @@ function doctor() {
|
|
|
93
257
|
`Node ${process.versions.node}`,
|
|
94
258
|
nodeOk ? "" : "requires >= 20.19",
|
|
95
259
|
]);
|
|
260
|
+
// Even majors are Node LTS lines; odd majors (21, 23…) aren't — avoid in prod.
|
|
261
|
+
if (nodeOk && maj % 2 === 1) {
|
|
262
|
+
checks.push([
|
|
263
|
+
"warn",
|
|
264
|
+
`Node ${maj} is not an LTS line`,
|
|
265
|
+
"odd majors aren't LTS — prefer an even major (20, 22…) for production",
|
|
266
|
+
]);
|
|
267
|
+
}
|
|
268
|
+
checks.push(["info", `tempest CLI v${selfVersion()}`]);
|
|
96
269
|
|
|
97
|
-
// package.json
|
|
98
270
|
if (!pkg) {
|
|
99
271
|
checks.push(["fail", "package.json", "not found — run inside your project root"]);
|
|
100
272
|
return report(checks);
|
|
101
273
|
}
|
|
102
|
-
checks.push(["ok", "package.json found"]);
|
|
103
274
|
|
|
104
|
-
// SDK dependency + installed
|
|
105
275
|
const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };
|
|
276
|
+
const { text: src, hasTests } = scanSources();
|
|
277
|
+
|
|
278
|
+
// Toolchain versions.
|
|
279
|
+
const tsV = installedVersion("typescript");
|
|
280
|
+
if (tsV)
|
|
281
|
+
checks.push(
|
|
282
|
+
(major(tsV) ?? 0) >= 5
|
|
283
|
+
? ["ok", "TypeScript", `v${tsV}`]
|
|
284
|
+
: ["warn", "TypeScript", `v${tsV} — SDK targets 5.x`],
|
|
285
|
+
);
|
|
286
|
+
const viteV = installedVersion("vite");
|
|
287
|
+
if (viteV)
|
|
288
|
+
checks.push(
|
|
289
|
+
(major(viteV) ?? 0) >= 5
|
|
290
|
+
? ["ok", "Vite", `v${viteV}`]
|
|
291
|
+
: ["warn", "Vite", `v${viteV} — SDK targets 5/6/7`],
|
|
292
|
+
);
|
|
293
|
+
|
|
294
|
+
// Node satisfies package.json engines.node's lower bound, if declared.
|
|
295
|
+
const engineNode = pkg.engines?.node;
|
|
296
|
+
const reqMajor = engineNode ? major(engineNode) : null;
|
|
297
|
+
if (reqMajor !== null && maj < reqMajor) {
|
|
298
|
+
checks.push([
|
|
299
|
+
"warn",
|
|
300
|
+
"engines.node",
|
|
301
|
+
`package.json wants "${engineNode}" but you're on ${process.versions.node}`,
|
|
302
|
+
]);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
// ── Project ─────────────────────────────────────────────────────────────
|
|
306
|
+
checks.push(["section", "Project"]);
|
|
307
|
+
checks.push(["ok", "package.json found"]);
|
|
308
|
+
const sdkInstalled = installedVersion("tempest-react-sdk");
|
|
106
309
|
checks.push(
|
|
107
310
|
deps["tempest-react-sdk"]
|
|
108
311
|
? ["ok", "tempest-react-sdk in dependencies", deps["tempest-react-sdk"]]
|
|
109
|
-
: [
|
|
110
|
-
"fail",
|
|
111
|
-
"tempest-react-sdk in dependencies",
|
|
112
|
-
"add it: npm install tempest-react-sdk",
|
|
113
|
-
],
|
|
312
|
+
: ["fail", "tempest-react-sdk in dependencies", "npm install tempest-react-sdk"],
|
|
114
313
|
);
|
|
115
314
|
checks.push(
|
|
116
|
-
|
|
117
|
-
? ["ok", "tempest-react-sdk installed"]
|
|
315
|
+
sdkInstalled
|
|
316
|
+
? ["ok", "tempest-react-sdk installed", `v${sdkInstalled}`]
|
|
118
317
|
: ["fail", "tempest-react-sdk installed", "run npm install"],
|
|
119
318
|
);
|
|
120
|
-
|
|
121
|
-
// React peers
|
|
122
|
-
const hasReact = deps.react && deps["react-dom"];
|
|
319
|
+
const reactV = installedVersion("react");
|
|
123
320
|
checks.push(
|
|
124
|
-
|
|
125
|
-
? ["ok", "react + react-dom present"]
|
|
321
|
+
deps.react && deps["react-dom"]
|
|
322
|
+
? ["ok", "react + react-dom present", reactV ? `v${reactV}` : ""]
|
|
126
323
|
: ["fail", "react + react-dom present", "install react react-dom"],
|
|
127
324
|
);
|
|
325
|
+
if (reactV && (major(reactV) ?? 0) < 18) {
|
|
326
|
+
checks.push(["warn", "react version", `v${reactV} — SDK requires React 18 or 19`]);
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
// ── Dependency health (silent bugs) ──────────────────────────────────────
|
|
330
|
+
checks.push(["section", "Dependency health"]);
|
|
331
|
+
|
|
332
|
+
// Duplicate / nested instances. Skipped when the SDK is a local file:/link:
|
|
333
|
+
// dependency — its dev node_modules is expected and not shipped to real installs.
|
|
334
|
+
const sdkSpec = String(deps["tempest-react-sdk"] ?? "");
|
|
335
|
+
const linked = sdkSpec.startsWith("file:") || sdkSpec.startsWith("link:");
|
|
336
|
+
if (linked) {
|
|
337
|
+
checks.push(["info", "SDK is a local link", "skipping duplicate-instance check"]);
|
|
338
|
+
} else {
|
|
339
|
+
const dupes = STATEFUL_DEPS.filter(nestedDupe);
|
|
340
|
+
checks.push(
|
|
341
|
+
dupes.length === 0
|
|
342
|
+
? ["ok", "single instance of React & stateful deps"]
|
|
343
|
+
: [
|
|
344
|
+
"warn",
|
|
345
|
+
`duplicate instance: ${dupes.join(", ")}`,
|
|
346
|
+
"nested copy under tempest-react-sdk — run `npm dedupe` or align versions; two instances break hooks/context",
|
|
347
|
+
],
|
|
348
|
+
);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
// Declared-but-not-installed (package.json ↔ node_modules drift).
|
|
352
|
+
const missing = missingInstalled(deps);
|
|
353
|
+
if (missing.length > 0) {
|
|
354
|
+
const shown = missing.slice(0, 8).join(", ");
|
|
355
|
+
checks.push([
|
|
356
|
+
"warn",
|
|
357
|
+
`${missing.length} dependency(ies) not installed`,
|
|
358
|
+
`${shown}${missing.length > 8 ? ", …" : ""} — run npm install`,
|
|
359
|
+
]);
|
|
360
|
+
} else {
|
|
361
|
+
checks.push(["ok", "all declared dependencies installed"]);
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
// App's own peerDependencies unmet.
|
|
365
|
+
const peerDeps = Object.keys(pkg.peerDependencies ?? {});
|
|
366
|
+
const unmetPeers = peerDeps.filter((name) => !installedVersion(name));
|
|
367
|
+
if (unmetPeers.length > 0) {
|
|
368
|
+
checks.push([
|
|
369
|
+
"warn",
|
|
370
|
+
`${unmetPeers.length} peerDependency(ies) unmet`,
|
|
371
|
+
`${unmetPeers.slice(0, 8).join(", ")} — install them or document as optional`,
|
|
372
|
+
]);
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
// @types/react major vs react major.
|
|
376
|
+
const typesReact = installedVersion("@types/react");
|
|
377
|
+
if (typesReact && reactV) {
|
|
378
|
+
checks.push(
|
|
379
|
+
major(typesReact) === major(reactV)
|
|
380
|
+
? ["ok", "@types/react matches react", `v${major(reactV)}`]
|
|
381
|
+
: [
|
|
382
|
+
"warn",
|
|
383
|
+
"@types/react mismatch",
|
|
384
|
+
`@types/react v${major(typesReact)} vs react v${major(reactV)} — align them`,
|
|
385
|
+
],
|
|
386
|
+
);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
// Optional peers for used subpaths.
|
|
390
|
+
for (const { peer, used, why } of OPTIONAL_PEERS) {
|
|
391
|
+
if (used(src) && !installedVersion(peer)) {
|
|
392
|
+
checks.push([
|
|
393
|
+
"warn",
|
|
394
|
+
`${peer} missing (used by ${why})`,
|
|
395
|
+
`you import ${why} but ${peer} isn't installed — npm i ${peer}`,
|
|
396
|
+
]);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
// SDK up to date (online, best-effort).
|
|
401
|
+
if (sdkInstalled) {
|
|
402
|
+
const latest = npmLatest("tempest-react-sdk");
|
|
403
|
+
if (latest && latest !== sdkInstalled) {
|
|
404
|
+
const behind = (major(latest) ?? 0) > (major(sdkInstalled) ?? 0);
|
|
405
|
+
checks.push([
|
|
406
|
+
behind ? "warn" : "info",
|
|
407
|
+
"tempest-react-sdk update available",
|
|
408
|
+
`installed v${sdkInstalled} · latest v${latest}`,
|
|
409
|
+
]);
|
|
410
|
+
} else if (latest) {
|
|
411
|
+
checks.push(["ok", "tempest-react-sdk up to date", `v${latest}`]);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
// ── TypeScript ────────────────────────────────────────────────────────────
|
|
416
|
+
const tsc = readJSON(join(ROOT, "tsconfig.json"));
|
|
417
|
+
if (tsc) {
|
|
418
|
+
checks.push(["section", "TypeScript"]);
|
|
419
|
+
const co = tsc.compilerOptions ?? {};
|
|
420
|
+
checks.push(
|
|
421
|
+
co.paths?.["@/*"]
|
|
422
|
+
? ["ok", 'tsconfig "@/*" alias']
|
|
423
|
+
: ["warn", 'tsconfig "@/*" alias', 'add "paths": { "@/*": ["./src/*"] }'],
|
|
424
|
+
);
|
|
425
|
+
const mr = String(co.moduleResolution ?? "").toLowerCase();
|
|
426
|
+
checks.push(
|
|
427
|
+
["bundler", "node16", "nodenext"].includes(mr)
|
|
428
|
+
? ["ok", `moduleResolution: ${co.moduleResolution}`]
|
|
429
|
+
: [
|
|
430
|
+
"warn",
|
|
431
|
+
`moduleResolution: ${co.moduleResolution ?? "(unset)"}`,
|
|
432
|
+
'use "bundler" — otherwise subpath types (tempest-react-sdk/br, /charts…) won\'t resolve',
|
|
433
|
+
],
|
|
434
|
+
);
|
|
435
|
+
checks.push(
|
|
436
|
+
String(co.jsx ?? "").toLowerCase() === "react-jsx"
|
|
437
|
+
? ["ok", 'jsx: "react-jsx"']
|
|
438
|
+
: ["warn", `jsx: ${co.jsx ?? "(unset)"}`, 'set "jsx": "react-jsx"'],
|
|
439
|
+
);
|
|
440
|
+
checks.push(
|
|
441
|
+
co.strict === true
|
|
442
|
+
? ["ok", "strict mode on"]
|
|
443
|
+
: ["warn", "strict mode off", 'enable "strict": true to catch silent type bugs'],
|
|
444
|
+
);
|
|
445
|
+
if (co.skipLibCheck === false) {
|
|
446
|
+
checks.push([
|
|
447
|
+
"warn",
|
|
448
|
+
"skipLibCheck disabled",
|
|
449
|
+
'set "skipLibCheck": true — avoids type errors leaking from dependencies',
|
|
450
|
+
]);
|
|
451
|
+
}
|
|
452
|
+
// Tests present but tsconfig restricts `types` and omits vitest globals.
|
|
453
|
+
if (
|
|
454
|
+
hasTests &&
|
|
455
|
+
installedVersion("vitest") &&
|
|
456
|
+
Array.isArray(co.types) &&
|
|
457
|
+
!co.types.some((t) => /vitest/.test(t))
|
|
458
|
+
) {
|
|
459
|
+
checks.push([
|
|
460
|
+
"warn",
|
|
461
|
+
"vitest globals not in tsconfig types",
|
|
462
|
+
'tests exist but "types" omits vitest — add "vitest/globals" so tsc sees describe/it/expect',
|
|
463
|
+
]);
|
|
464
|
+
}
|
|
465
|
+
}
|
|
128
466
|
|
|
129
|
-
//
|
|
467
|
+
// ── Integration ───────────────────────────────────────────────────────────
|
|
468
|
+
checks.push(["section", "Integration"]);
|
|
130
469
|
const viteCfg = firstExisting(["vite.config.ts", "vite.config.js", "vite.config.mjs"]);
|
|
131
470
|
if (!viteCfg) {
|
|
132
471
|
checks.push(["warn", "vite config", "no vite.config.* found"]);
|
|
@@ -136,18 +475,17 @@ function doctor() {
|
|
|
136
475
|
? ["ok", `${viteCfg} uses createViteConfig`]
|
|
137
476
|
: ["warn", `${viteCfg}`, "not using createViteConfig from tempest-react-sdk/vite"],
|
|
138
477
|
);
|
|
478
|
+
// React plugin is required for JSX/Fast Refresh in a Vite React app.
|
|
479
|
+
checks.push(
|
|
480
|
+
installedVersion("@vitejs/plugin-react")
|
|
481
|
+
? ["ok", "@vitejs/plugin-react installed"]
|
|
482
|
+
: [
|
|
483
|
+
"warn",
|
|
484
|
+
"@vitejs/plugin-react",
|
|
485
|
+
"not installed — Vite needs it for JSX/Fast Refresh (npm i -D @vitejs/plugin-react)",
|
|
486
|
+
],
|
|
487
|
+
);
|
|
139
488
|
}
|
|
140
|
-
|
|
141
|
-
// tsconfig @ alias
|
|
142
|
-
const tsc = readJSON(join(ROOT, "tsconfig.json"));
|
|
143
|
-
const paths = tsc?.compilerOptions?.paths ?? {};
|
|
144
|
-
checks.push(
|
|
145
|
-
paths["@/*"]
|
|
146
|
-
? ["ok", 'tsconfig "@/*" alias']
|
|
147
|
-
: ["warn", 'tsconfig "@/*" alias', 'add "paths": { "@/*": ["./src/*"] }'],
|
|
148
|
-
);
|
|
149
|
-
|
|
150
|
-
// styles.css imported at entry
|
|
151
489
|
const entry = firstExisting(["src/main.tsx", "src/main.ts", "src/index.tsx", "src/index.ts"]);
|
|
152
490
|
if (entry) {
|
|
153
491
|
checks.push(
|
|
@@ -158,8 +496,18 @@ function doctor() {
|
|
|
158
496
|
} else {
|
|
159
497
|
checks.push(["warn", "app entry", "no src/main.tsx found"]);
|
|
160
498
|
}
|
|
499
|
+
// styles.css should be imported once — duplicates re-inject the whole sheet.
|
|
500
|
+
const stylesImports = (src.match(/tempest-react-sdk\/styles\.css/g) ?? []).length;
|
|
501
|
+
if (stylesImports > 1) {
|
|
502
|
+
checks.push([
|
|
503
|
+
"warn",
|
|
504
|
+
`styles.css imported ${stylesImports}×`,
|
|
505
|
+
"import it once at the app entry — duplicate imports ship the stylesheet repeatedly",
|
|
506
|
+
]);
|
|
507
|
+
}
|
|
161
508
|
|
|
162
|
-
//
|
|
509
|
+
// ── Tooling ────────────────────────────────────────────────────────────────
|
|
510
|
+
checks.push(["section", "Tooling"]);
|
|
163
511
|
checks.push(
|
|
164
512
|
firstExisting(["eslint.config.js", "eslint.config.mjs", ".eslintrc.cjs", ".eslintrc.json"])
|
|
165
513
|
? ["ok", "ESLint config present"]
|
|
@@ -176,17 +524,79 @@ function doctor() {
|
|
|
176
524
|
: ["warn", "prettier installed", "npm i -D prettier"],
|
|
177
525
|
);
|
|
178
526
|
|
|
179
|
-
// .
|
|
180
|
-
|
|
181
|
-
|
|
527
|
+
// Lockfile / package manager.
|
|
528
|
+
const locks = lockfiles();
|
|
529
|
+
if (locks.length === 0) {
|
|
530
|
+
checks.push([
|
|
531
|
+
"warn",
|
|
532
|
+
"no lockfile",
|
|
533
|
+
"commit a lockfile (package-lock.json) for reproducible installs",
|
|
534
|
+
]);
|
|
535
|
+
} else if (locks.length > 1) {
|
|
536
|
+
checks.push([
|
|
537
|
+
"warn",
|
|
538
|
+
`multiple lockfiles: ${locks.map(([, pm]) => pm).join(", ")}`,
|
|
539
|
+
"pick one package manager — mixed lockfiles drift out of sync",
|
|
540
|
+
]);
|
|
541
|
+
} else {
|
|
542
|
+
checks.push(["ok", `lockfile (${locks[0][1]})`]);
|
|
543
|
+
// package.json edited after the lockfile → likely out of sync.
|
|
544
|
+
const lockFile = locks[0][0];
|
|
545
|
+
if (mtimeMs(join(ROOT, "package.json")) > mtimeMs(join(ROOT, lockFile)) + 1000) {
|
|
546
|
+
checks.push([
|
|
547
|
+
"warn",
|
|
548
|
+
"lockfile may be stale",
|
|
549
|
+
`package.json is newer than ${lockFile} — run npm install to sync it`,
|
|
550
|
+
]);
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
// ── Env & secrets ────────────────────────────────────────────────────────
|
|
555
|
+
checks.push(["section", "Env & secrets"]);
|
|
556
|
+
const hasEnv = existsSync(join(ROOT, ".env"));
|
|
557
|
+
if (hasEnv) {
|
|
558
|
+
checks.push(
|
|
559
|
+
envIsGitignored()
|
|
560
|
+
? ["ok", ".env is git-ignored"]
|
|
561
|
+
: [
|
|
562
|
+
"warn",
|
|
563
|
+
".env NOT git-ignored",
|
|
564
|
+
"secrets can be committed — add `.env` to .gitignore now",
|
|
565
|
+
],
|
|
566
|
+
);
|
|
567
|
+
} else if (existsSync(join(ROOT, ".env.example"))) {
|
|
182
568
|
checks.push(["warn", ".env", "only .env.example — copy it: cp .env.example .env"]);
|
|
569
|
+
}
|
|
570
|
+
const envIssues = envPrefixIssues(src);
|
|
571
|
+
if (envIssues.length > 0) {
|
|
572
|
+
const shown = envIssues.slice(0, 6).join(", ");
|
|
573
|
+
checks.push([
|
|
574
|
+
"warn",
|
|
575
|
+
"client env without VITE_ prefix",
|
|
576
|
+
`${shown}${envIssues.length > 6 ? ", …" : ""} — Vite only exposes VITE_* to the browser; these are undefined at runtime`,
|
|
577
|
+
]);
|
|
578
|
+
} else {
|
|
579
|
+
checks.push(["ok", "client env vars use the VITE_ prefix"]);
|
|
580
|
+
}
|
|
183
581
|
|
|
184
582
|
return report(checks);
|
|
185
583
|
}
|
|
186
584
|
|
|
187
585
|
function report(checks) {
|
|
188
|
-
console.log(`\n${c.bold}${c.cyan}tempest doctor${c.reset} ${c.dim}(${ROOT})${c.reset}
|
|
189
|
-
for (const
|
|
586
|
+
console.log(`\n${c.bold}${c.cyan}tempest doctor${c.reset} ${c.dim}(${ROOT})${c.reset}`);
|
|
587
|
+
for (const entry of checks) {
|
|
588
|
+
if (entry[0] === "section") {
|
|
589
|
+
console.log(`\n${c.bold}${entry[1]}${c.reset}`);
|
|
590
|
+
continue;
|
|
591
|
+
}
|
|
592
|
+
if (entry[0] === "info") {
|
|
593
|
+
console.log(
|
|
594
|
+
` [${c.cyan}i${c.reset}] ${entry[1]}${entry[2] ? ` ${c.dim}— ${entry[2]}${c.reset}` : ""}`,
|
|
595
|
+
);
|
|
596
|
+
continue;
|
|
597
|
+
}
|
|
598
|
+
console.log(fmt(entry[0], entry[1], entry[2]));
|
|
599
|
+
}
|
|
190
600
|
const fails = checks.filter((x) => x[0] === "fail").length;
|
|
191
601
|
const warns = checks.filter((x) => x[0] === "warn").length;
|
|
192
602
|
console.log("");
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="FeatureCollection",o="AC",t=JSON.parse('[{"type":"Feature","properties":{"id":"1200013","name":"Acrelândia","centroid":[-66.9475,-9.9347]},"geometry":{"type":"Polygon","coordinates":[[[-67.133,-9.676],[-66.619,-9.894],[-66.638,-9.952],[-66.657,-9.936],[-66.838,-10.083],[-66.873,-10.081],[-66.998,-10.232],[-67.076,-10.196],[-67.077,-10.091],[-67.099,-10.103],[-67.125,-9.971],[-67.091,-9.957],[-67.193,-9.704],[-67.133,-9.676]]]}},{"type":"Feature","properties":{"id":"1200054","name":"Assis Brasil","centroid":[-70.0041,-10.781]},"geometry":{"type":"Polygon","coordinates":[[[-69.588,-10.371],[-69.542,-10.418],[-69.511,-10.557],[-69.671,-10.731],[-69.757,-10.743],[-69.778,-10.782],[-69.657,-10.863],[-69.552,-10.873],[-69.485,-10.794],[-69.498,-10.7],[-69.422,-10.691],[-69.39,-10.826],[-69.428,-10.937],[-69.737,-10.974],[-69.769,-10.93],[-69.934,-10.922],[-70.159,-11.041],[-70.307,-11.07],[-70.437,-11.039],[-70.53,-10.935],[-70.621,-11],[-70.602,-10.697],[-70.381,-10.73],[-70.282,-10.691],[-70.255,-10.713],[-70.224,-10.676],[-70.207,-10.703],[-69.992,-10.57],[-69.832,-10.538],[-69.785,-10.461],[-69.687,-10.435],[-69.682,-10.41],[-69.648,-10.428],[-69.588,-10.371]]]}},{"type":"Feature","properties":{"id":"1200104","name":"Brasiléia","centroid":[-69.2092,-10.7465]},"geometry":{"type":"Polygon","coordinates":[[[-69.129,-10.402],[-69.165,-10.502],[-69.081,-10.579],[-68.904,-10.58],[-68.975,-10.771],[-68.907,-10.777],[-68.835,-10.74],[-68.784,-10.869],[-68.687,-10.937],[-68.743,-11.016],[-68.788,-11.015],[-68.792,-10.991],[-68.912,-11.022],[-69.072,-10.966],[-69.413,-10.938],[-69.393,-10.732],[-69.422,-10.691],[-69.498,-10.7],[-69.485,-10.794],[-69.552,-10.873],[-69.657,-10.863],[-69.778,-10.782],[-69.757,-10.743],[-69.671,-10.731],[-69.55,-10.614],[-69.508,-10.505],[-69.342,-10.485],[-69.149,-10.385],[-69.129,-10.402]]]}},{"type":"Feature","properties":{"id":"1200138","name":"Bujari","centroid":[-68.1755,-9.6136]},"geometry":{"type":"Polygon","coordinates":[[[-68.22,-9.242],[-67.974,-9.353],[-68.048,-9.352],[-68.059,-9.417],[-68.019,-9.47],[-68.089,-9.554],[-67.909,-9.709],[-67.804,-9.747],[-67.83,-9.87],[-67.867,-9.841],[-67.976,-9.847],[-68.152,-9.96],[-68.3,-9.794],[-68.38,-9.782],[-68.442,-9.827],[-68.427,-9.711],[-68.455,-9.624],[-68.411,-9.521],[-68.33,-9.44],[-68.401,-9.324],[-68.22,-9.242]]]}},{"type":"Feature","properties":{"id":"1200179","name":"Capixaba","centroid":[-67.8337,-10.4752]},"geometry":{"type":"Polygon","coordinates":[[[-67.773,-10.242],[-67.689,-10.354],[-67.637,-10.363],[-67.68,-10.391],[-67.696,-10.453],[-67.587,-10.51],[-67.729,-10.713],[-67.864,-10.641],[-68.002,-10.648],[-68.016,-10.602],[-67.983,-10.593],[-68.064,-10.425],[-67.999,-10.316],[-67.847,-10.287],[-67.804,-10.198],[-67.773,-10.242]]]}},{"type":"Feature","properties":{"id":"1200203","name":"Cruzeiro do Sul","centroid":[-72.7626,-7.9748]},"geometry":{"type":"Polygon","coordinates":[[[-71.989,-7.673],[-72.017,-7.798],[-72.219,-7.974],[-72.265,-8.222],[-72.302,-8.208],[-72.408,-8.258],[-72.556,-8.187],[-72.634,-8.185],[-72.68,-8.226],[-72.794,-8.2],[-72.808,-8.122],[-72.999,-8.223],[-73.101,-8.341],[-73.331,-8.474],[-73.39,-8.469],[-73.413,-8.411],[-73.517,-8.37],[-73.537,-8.27],[-73.594,-8.206],[-73.583,-8.128],[-73.63,-8.051],[-73.397,-8.029],[-73.374,-7.987],[-73.321,-7.992],[-73.169,-7.893],[-73.092,-7.884],[-73.116,-7.923],[-73.097,-7.941],[-72.948,-7.943],[-72.616,-7.813],[-72.646,-7.786],[-72.609,-7.78],[-72.642,-7.772],[-72.644,-7.676],[-72.731,-7.724],[-72.86,-7.675],[-72.783,-7.661],[-72.862,-7.58],[-72.901,-7.437],[-72.584,-7.552],[-71.957,-7.625],[-71.989,-7.673]]]}},{"type":"Feature","properties":{"id":"1200252","name":"Epitaciolândia","centroid":[-68.6216,-10.889]},"geometry":{"type":"Polygon","coordinates":[[[-68.648,-10.614],[-68.644,-10.654],[-68.532,-10.721],[-68.558,-10.778],[-68.403,-10.857],[-68.423,-10.934],[-68.389,-11.041],[-68.432,-11.031],[-68.543,-11.11],[-68.716,-11.145],[-68.766,-11.049],[-68.687,-10.937],[-68.784,-10.869],[-68.835,-10.74],[-68.808,-10.671],[-68.648,-10.614]]]}},{"type":"Feature","properties":{"id":"1200302","name":"Feijó","centroid":[-70.7452,-8.928]},"geometry":{"type":"Polygon","coordinates":[[[-69.989,-7.901],[-69.444,-8.366],[-69.575,-8.636],[-69.758,-8.782],[-69.847,-8.948],[-70.365,-8.982],[-70.439,-9.088],[-70.54,-9.16],[-70.677,-9.373],[-70.791,-9.449],[-70.863,-9.457],[-71.045,-9.642],[-71.1,-9.749],[-71.077,-9.828],[-71.163,-9.876],[-71.211,-9.967],[-71.308,-9.992],[-71.349,-9.974],[-71.376,-10.001],[-72.199,-10],[-72.154,-9.884],[-72.178,-9.822],[-72.111,-9.763],[-71.929,-9.722],[-71.836,-9.622],[-71.792,-9.486],[-71.724,-9.426],[-71.7,-9.267],[-71.615,-9.188],[-71.598,-9.024],[-71.527,-8.909],[-71.459,-8.867],[-71.373,-8.895],[-71.29,-8.84],[-71.242,-8.855],[-71.122,-8.764],[-71.078,-8.778],[-70.921,-8.6],[-70.858,-8.67],[-70.742,-8.609],[-70.688,-8.523],[-70.702,-8.477],[-70.653,-8.466],[-70.68,-8.383],[-70.625,-8.341],[-70.633,-8.311],[-70.564,-8.215],[-70.567,-8.043],[-70.586,-7.997],[-70.636,-7.976],[-70.645,-7.911],[-70.6,-7.894],[-70.547,-7.809],[-70.052,-7.847],[-69.989,-7.901]]]}},{"type":"Feature","properties":{"id":"1200328","name":"Jordão","centroid":[-71.9048,-9.2422]},"geometry":{"type":"Polygon","coordinates":[[[-71.559,-8.656],[-71.542,-8.738],[-71.616,-8.858],[-71.482,-8.883],[-71.574,-8.962],[-71.615,-9.188],[-71.7,-9.267],[-71.724,-9.426],[-71.792,-9.486],[-71.836,-9.622],[-71.929,-9.722],[-71.992,-9.717],[-72.039,-9.767],[-72.035,-9.743],[-72.153,-9.797],[-72.244,-9.766],[-72.271,-9.743],[-72.246,-9.654],[-72.254,-9.612],[-72.288,-9.601],[-72.283,-9.54],[-72.345,-9.545],[-72.371,-9.509],[-72.299,-9.504],[-72.156,-9.383],[-72.045,-9.203],[-72.063,-9.179],[-72.028,-8.973],[-72.081,-8.854],[-71.968,-8.778],[-71.811,-8.83],[-71.713,-8.722],[-71.559,-8.656]]]}},{"type":"Feature","properties":{"id":"1200336","name":"Mâncio Lima","centroid":[-73.4359,-7.5051]},"geometry":{"type":"Polygon","coordinates":[[[-73.12,-7.358],[-72.901,-7.437],[-72.862,-7.58],[-72.783,-7.661],[-72.946,-7.689],[-73.039,-7.665],[-73.183,-7.725],[-73.256,-7.791],[-73.307,-7.778],[-73.331,-7.711],[-73.443,-7.772],[-73.544,-7.715],[-73.675,-7.74],[-73.692,-7.768],[-73.822,-7.718],[-73.991,-7.536],[-73.948,-7.527],[-73.92,-7.466],[-73.959,-7.346],[-73.87,-7.379],[-73.83,-7.337],[-73.756,-7.347],[-73.7,-7.304],[-73.714,-7.234],[-73.801,-7.111],[-73.12,-7.358]]]}},{"type":"Feature","properties":{"id":"1200344","name":"Manoel Urbano","centroid":[-69.855,-9.3816]},"geometry":{"type":"Polygon","coordinates":[[[-68.941,-8.836],[-69.082,-8.905],[-69.111,-8.955],[-69.201,-8.956],[-69.256,-9.053],[-69.349,-9.046],[-69.458,-9.145],[-69.691,-9.23],[-69.77,-9.339],[-69.797,-9.334],[-69.784,-9.38],[-69.861,-9.439],[-69.977,-9.782],[-70.039,-9.866],[-70.043,-9.99],[-70.136,-10.194],[-70.227,-10.292],[-70.256,-10.425],[-70.625,-10.425],[-70.624,-10.075],[-70.445,-9.942],[-70.153,-9.558],[-70.028,-9.523],[-70.331,-9.396],[-70.299,-9.338],[-70.21,-9.276],[-70.051,-9.289],[-69.957,-9.23],[-69.91,-9.246],[-69.904,-9.213],[-69.85,-9.196],[-69.848,-9.14],[-69.796,-9.112],[-69.865,-8.957],[-69.758,-8.782],[-69.575,-8.636],[-69.444,-8.366],[-68.922,-8.813],[-68.941,-8.836]]]}},{"type":"Feature","properties":{"id":"1200351","name":"Marechal Thaumaturgo","centroid":[-72.5543,-9.1]},"geometry":{"type":"Polygon","coordinates":[[[-72.693,-8.696],[-72.683,-8.749],[-72.637,-8.773],[-72.495,-8.778],[-72.466,-8.754],[-72.36,-8.782],[-72.214,-8.701],[-72.144,-8.712],[-72.125,-8.828],[-72.044,-8.9],[-72.045,-9.203],[-72.156,-9.383],[-72.299,-9.504],[-72.437,-9.476],[-72.546,-9.491],[-72.75,-9.41],[-73.212,-9.411],[-73.102,-9.306],[-73.078,-9.237],[-73.008,-9.215],[-73.018,-9.177],[-72.944,-9.097],[-72.942,-8.987],[-73.022,-8.893],[-73.045,-8.903],[-73.111,-8.758],[-72.924,-8.762],[-72.75,-8.717],[-72.728,-8.672],[-72.693,-8.696]]]}},{"type":"Feature","properties":{"id":"1200385","name":"Plácido de Castro","centroid":[-67.3421,-10.2474]},"geometry":{"type":"Polygon","coordinates":[[[-67.125,-9.971],[-67.099,-10.103],[-67.077,-10.091],[-67.076,-10.196],[-67.002,-10.217],[-67.011,-10.254],[-67.131,-10.293],[-67.169,-10.337],[-67.315,-10.319],[-67.311,-10.376],[-67.407,-10.374],[-67.413,-10.427],[-67.518,-10.491],[-67.597,-10.51],[-67.696,-10.453],[-67.612,-10.298],[-67.502,-10.26],[-67.425,-10.096],[-67.125,-9.971]]]}},{"type":"Feature","properties":{"id":"1200807","name":"Porto Acre","centroid":[-67.6976,-9.6319]},"geometry":{"type":"Polygon","coordinates":[[[-68.021,-9.349],[-67.517,-9.56],[-67.324,-9.592],[-67.335,-9.724],[-67.436,-9.837],[-67.447,-9.914],[-67.517,-9.906],[-67.53,-9.855],[-67.581,-9.824],[-67.601,-9.865],[-67.71,-9.836],[-67.703,-9.787],[-67.744,-9.74],[-67.796,-9.779],[-68.089,-9.554],[-68.022,-9.481],[-68.062,-9.39],[-68.021,-9.349]]]}},{"type":"Feature","properties":{"id":"1200393","name":"Porto Walter","centroid":[-72.7188,-8.4884]},"geometry":{"type":"Polygon","coordinates":[[[-72.808,-8.122],[-72.794,-8.2],[-72.68,-8.226],[-72.634,-8.185],[-72.556,-8.187],[-72.408,-8.258],[-72.302,-8.208],[-72.265,-8.222],[-72.266,-8.261],[-72.226,-8.281],[-72.266,-8.391],[-72.232,-8.41],[-72.201,-8.552],[-72.23,-8.599],[-72.214,-8.701],[-72.36,-8.782],[-72.466,-8.754],[-72.495,-8.778],[-72.637,-8.773],[-72.728,-8.672],[-72.773,-8.727],[-73.06,-8.765],[-73.111,-8.758],[-73.15,-8.684],[-73.24,-8.666],[-73.287,-8.619],[-73.306,-8.472],[-73.331,-8.474],[-73.101,-8.341],[-72.999,-8.223],[-72.808,-8.122]]]}},{"type":"Feature","properties":{"id":"1200401","name":"Rio Branco","centroid":[-68.3686,-10.0666]},"geometry":{"type":"Polygon","coordinates":[[[-68.584,-9.539],[-68.514,-9.589],[-68.418,-9.545],[-68.455,-9.624],[-68.427,-9.711],[-68.442,-9.827],[-68.38,-9.782],[-68.3,-9.794],[-68.152,-9.96],[-67.976,-9.847],[-67.867,-9.841],[-67.83,-9.87],[-67.827,-9.782],[-67.744,-9.74],[-67.703,-9.787],[-67.71,-9.836],[-67.601,-9.865],[-67.581,-9.824],[-67.53,-9.855],[-67.482,-9.927],[-67.49,-9.997],[-67.581,-10.069],[-67.62,-10.048],[-67.671,-10.102],[-67.82,-10.089],[-67.818,-10.267],[-67.999,-10.316],[-68.041,-10.389],[-68.097,-10.364],[-68.207,-10.375],[-68.314,-10.418],[-68.388,-10.38],[-68.351,-10.332],[-68.416,-10.307],[-68.453,-10.183],[-68.496,-10.254],[-68.642,-10.306],[-68.713,-10.384],[-69.149,-10.385],[-69.342,-10.485],[-69.364,-10.463],[-69.311,-10.364],[-69.121,-10.269],[-69.037,-10.164],[-68.694,-9.887],[-68.667,-9.841],[-68.7,-9.679],[-68.673,-9.56],[-68.608,-9.505],[-68.584,-9.539]]]}},{"type":"Feature","properties":{"id":"1200427","name":"Rodrigues Alves","centroid":[-73.2258,-7.8422]},"geometry":{"type":"Polygon","coordinates":[[[-72.78,-7.693],[-72.731,-7.724],[-72.644,-7.676],[-72.642,-7.772],[-72.609,-7.78],[-72.646,-7.786],[-72.616,-7.813],[-72.948,-7.943],[-73.097,-7.941],[-73.116,-7.923],[-73.092,-7.884],[-73.169,-7.893],[-73.321,-7.992],[-73.374,-7.987],[-73.397,-8.029],[-73.63,-8.051],[-73.64,-8.008],[-73.678,-8.005],[-73.698,-7.961],[-73.732,-7.968],[-73.772,-7.902],[-73.762,-7.858],[-73.713,-7.876],[-73.69,-7.854],[-73.675,-7.74],[-73.544,-7.715],[-73.451,-7.773],[-73.331,-7.711],[-73.307,-7.778],[-73.256,-7.791],[-73.183,-7.725],[-73.039,-7.665],[-72.78,-7.693]]]}},{"type":"Feature","properties":{"id":"1200435","name":"Santa Rosa do Purus","centroid":[-70.3998,-9.4163]},"geometry":{"type":"Polygon","coordinates":[[[-69.865,-8.957],[-69.796,-9.112],[-69.848,-9.14],[-69.85,-9.196],[-69.904,-9.213],[-69.91,-9.246],[-69.957,-9.23],[-70.051,-9.289],[-70.21,-9.276],[-70.331,-9.396],[-70.028,-9.523],[-70.153,-9.558],[-70.445,-9.942],[-70.624,-10.075],[-70.622,-9.822],[-70.546,-9.777],[-70.525,-9.714],[-70.584,-9.638],[-70.598,-9.552],[-70.556,-9.571],[-70.57,-9.53],[-70.505,-9.504],[-70.523,-9.46],[-70.493,-9.426],[-70.594,-9.441],[-70.663,-9.524],[-70.75,-9.559],[-70.799,-9.641],[-70.963,-9.748],[-70.995,-9.817],[-71.077,-9.828],[-71.1,-9.749],[-71.045,-9.642],[-70.863,-9.457],[-70.791,-9.449],[-70.677,-9.373],[-70.54,-9.16],[-70.439,-9.088],[-70.365,-8.982],[-69.865,-8.957]]]}},{"type":"Feature","properties":{"id":"1200500","name":"Sena Madureira","centroid":[-69.3812,-9.7704]},"geometry":{"type":"Polygon","coordinates":[[[-68.922,-8.813],[-68.647,-9.049],[-68.22,-9.242],[-68.401,-9.324],[-68.33,-9.44],[-68.411,-9.541],[-68.514,-9.589],[-68.601,-9.538],[-68.608,-9.505],[-68.673,-9.56],[-68.7,-9.679],[-68.667,-9.841],[-68.694,-9.887],[-69.037,-10.164],[-69.121,-10.269],[-69.311,-10.364],[-69.364,-10.463],[-69.342,-10.485],[-69.508,-10.505],[-69.592,-10.37],[-69.648,-10.428],[-69.682,-10.41],[-69.687,-10.435],[-69.785,-10.461],[-69.832,-10.538],[-69.992,-10.57],[-70.207,-10.703],[-70.224,-10.676],[-70.255,-10.713],[-70.282,-10.691],[-70.368,-10.73],[-70.462,-10.701],[-70.51,-10.727],[-70.555,-10.688],[-70.623,-10.711],[-70.625,-10.425],[-70.256,-10.425],[-70.227,-10.292],[-70.136,-10.194],[-70.043,-9.99],[-70.039,-9.866],[-69.977,-9.782],[-69.861,-9.439],[-69.784,-9.38],[-69.797,-9.334],[-69.77,-9.339],[-69.691,-9.23],[-69.458,-9.145],[-69.349,-9.046],[-69.234,-9.04],[-69.201,-8.956],[-69.111,-8.955],[-69.082,-8.905],[-68.922,-8.813]]]}},{"type":"Feature","properties":{"id":"1200450","name":"Senador Guiomard","centroid":[-67.432,-9.9987]},"geometry":{"type":"Polygon","coordinates":[[[-67.139,-9.683],[-67.193,-9.704],[-67.091,-9.957],[-67.425,-10.096],[-67.51,-10.268],[-67.612,-10.298],[-67.637,-10.363],[-67.689,-10.354],[-67.81,-10.199],[-67.82,-10.089],[-67.671,-10.102],[-67.62,-10.048],[-67.581,-10.069],[-67.501,-10.02],[-67.436,-9.837],[-67.335,-9.724],[-67.324,-9.592],[-67.139,-9.683]]]}},{"type":"Feature","properties":{"id":"1200609","name":"Tarauacá","centroid":[-71.4446,-8.2381]},"geometry":{"type":"Polygon","coordinates":[[[-71.381,-7.692],[-70.515,-7.792],[-70.645,-7.911],[-70.636,-7.976],[-70.573,-8.022],[-70.555,-8.161],[-70.625,-8.341],[-70.68,-8.383],[-70.653,-8.466],[-70.702,-8.477],[-70.688,-8.523],[-70.784,-8.64],[-70.858,-8.67],[-70.921,-8.6],[-71.078,-8.778],[-71.122,-8.764],[-71.242,-8.855],[-71.29,-8.84],[-71.373,-8.895],[-71.616,-8.858],[-71.542,-8.738],[-71.555,-8.647],[-71.713,-8.722],[-71.811,-8.83],[-71.968,-8.778],[-72.079,-8.867],[-72.125,-8.828],[-72.144,-8.712],[-72.214,-8.701],[-72.23,-8.599],[-72.201,-8.552],[-72.232,-8.41],[-72.266,-8.391],[-72.226,-8.281],[-72.266,-8.261],[-72.258,-8.085],[-72.214,-7.965],[-72.017,-7.798],[-71.957,-7.625],[-71.381,-7.692]]]}},{"type":"Feature","properties":{"id":"1200708","name":"Xapuri","centroid":[-68.5061,-10.5772]},"geometry":{"type":"Polygon","coordinates":[[[-68.452,-10.248],[-68.412,-10.268],[-68.416,-10.307],[-68.351,-10.332],[-68.388,-10.38],[-68.314,-10.418],[-68.207,-10.375],[-68.048,-10.383],[-68.064,-10.425],[-68.031,-10.536],[-67.983,-10.593],[-68.016,-10.602],[-68.002,-10.648],[-68.1,-10.709],[-68.103,-10.775],[-68.196,-10.859],[-68.237,-10.956],[-68.389,-11.041],[-68.423,-10.934],[-68.403,-10.857],[-68.558,-10.778],[-68.532,-10.721],[-68.644,-10.654],[-68.637,-10.619],[-68.808,-10.671],[-68.806,-10.716],[-68.854,-10.758],[-68.975,-10.771],[-68.904,-10.58],[-69.06,-10.59],[-69.169,-10.481],[-69.132,-10.385],[-68.713,-10.384],[-68.642,-10.306],[-68.496,-10.254],[-68.453,-10.183],[-68.452,-10.248]]]}}]'),r={type:e,uf:o,features:t};exports.default=r;exports.features=t;exports.type=e;exports.uf=o;
|
|
2
|
+
//# sourceMappingURL=AC-Brw7ZrEs.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AC-Brw7ZrEs.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const e = "FeatureCollection", t = "AC", o = /* @__PURE__ */ JSON.parse('[{"type":"Feature","properties":{"id":"1200013","name":"Acrelândia","centroid":[-66.9475,-9.9347]},"geometry":{"type":"Polygon","coordinates":[[[-67.133,-9.676],[-66.619,-9.894],[-66.638,-9.952],[-66.657,-9.936],[-66.838,-10.083],[-66.873,-10.081],[-66.998,-10.232],[-67.076,-10.196],[-67.077,-10.091],[-67.099,-10.103],[-67.125,-9.971],[-67.091,-9.957],[-67.193,-9.704],[-67.133,-9.676]]]}},{"type":"Feature","properties":{"id":"1200054","name":"Assis Brasil","centroid":[-70.0041,-10.781]},"geometry":{"type":"Polygon","coordinates":[[[-69.588,-10.371],[-69.542,-10.418],[-69.511,-10.557],[-69.671,-10.731],[-69.757,-10.743],[-69.778,-10.782],[-69.657,-10.863],[-69.552,-10.873],[-69.485,-10.794],[-69.498,-10.7],[-69.422,-10.691],[-69.39,-10.826],[-69.428,-10.937],[-69.737,-10.974],[-69.769,-10.93],[-69.934,-10.922],[-70.159,-11.041],[-70.307,-11.07],[-70.437,-11.039],[-70.53,-10.935],[-70.621,-11],[-70.602,-10.697],[-70.381,-10.73],[-70.282,-10.691],[-70.255,-10.713],[-70.224,-10.676],[-70.207,-10.703],[-69.992,-10.57],[-69.832,-10.538],[-69.785,-10.461],[-69.687,-10.435],[-69.682,-10.41],[-69.648,-10.428],[-69.588,-10.371]]]}},{"type":"Feature","properties":{"id":"1200104","name":"Brasiléia","centroid":[-69.2092,-10.7465]},"geometry":{"type":"Polygon","coordinates":[[[-69.129,-10.402],[-69.165,-10.502],[-69.081,-10.579],[-68.904,-10.58],[-68.975,-10.771],[-68.907,-10.777],[-68.835,-10.74],[-68.784,-10.869],[-68.687,-10.937],[-68.743,-11.016],[-68.788,-11.015],[-68.792,-10.991],[-68.912,-11.022],[-69.072,-10.966],[-69.413,-10.938],[-69.393,-10.732],[-69.422,-10.691],[-69.498,-10.7],[-69.485,-10.794],[-69.552,-10.873],[-69.657,-10.863],[-69.778,-10.782],[-69.757,-10.743],[-69.671,-10.731],[-69.55,-10.614],[-69.508,-10.505],[-69.342,-10.485],[-69.149,-10.385],[-69.129,-10.402]]]}},{"type":"Feature","properties":{"id":"1200138","name":"Bujari","centroid":[-68.1755,-9.6136]},"geometry":{"type":"Polygon","coordinates":[[[-68.22,-9.242],[-67.974,-9.353],[-68.048,-9.352],[-68.059,-9.417],[-68.019,-9.47],[-68.089,-9.554],[-67.909,-9.709],[-67.804,-9.747],[-67.83,-9.87],[-67.867,-9.841],[-67.976,-9.847],[-68.152,-9.96],[-68.3,-9.794],[-68.38,-9.782],[-68.442,-9.827],[-68.427,-9.711],[-68.455,-9.624],[-68.411,-9.521],[-68.33,-9.44],[-68.401,-9.324],[-68.22,-9.242]]]}},{"type":"Feature","properties":{"id":"1200179","name":"Capixaba","centroid":[-67.8337,-10.4752]},"geometry":{"type":"Polygon","coordinates":[[[-67.773,-10.242],[-67.689,-10.354],[-67.637,-10.363],[-67.68,-10.391],[-67.696,-10.453],[-67.587,-10.51],[-67.729,-10.713],[-67.864,-10.641],[-68.002,-10.648],[-68.016,-10.602],[-67.983,-10.593],[-68.064,-10.425],[-67.999,-10.316],[-67.847,-10.287],[-67.804,-10.198],[-67.773,-10.242]]]}},{"type":"Feature","properties":{"id":"1200203","name":"Cruzeiro do Sul","centroid":[-72.7626,-7.9748]},"geometry":{"type":"Polygon","coordinates":[[[-71.989,-7.673],[-72.017,-7.798],[-72.219,-7.974],[-72.265,-8.222],[-72.302,-8.208],[-72.408,-8.258],[-72.556,-8.187],[-72.634,-8.185],[-72.68,-8.226],[-72.794,-8.2],[-72.808,-8.122],[-72.999,-8.223],[-73.101,-8.341],[-73.331,-8.474],[-73.39,-8.469],[-73.413,-8.411],[-73.517,-8.37],[-73.537,-8.27],[-73.594,-8.206],[-73.583,-8.128],[-73.63,-8.051],[-73.397,-8.029],[-73.374,-7.987],[-73.321,-7.992],[-73.169,-7.893],[-73.092,-7.884],[-73.116,-7.923],[-73.097,-7.941],[-72.948,-7.943],[-72.616,-7.813],[-72.646,-7.786],[-72.609,-7.78],[-72.642,-7.772],[-72.644,-7.676],[-72.731,-7.724],[-72.86,-7.675],[-72.783,-7.661],[-72.862,-7.58],[-72.901,-7.437],[-72.584,-7.552],[-71.957,-7.625],[-71.989,-7.673]]]}},{"type":"Feature","properties":{"id":"1200252","name":"Epitaciolândia","centroid":[-68.6216,-10.889]},"geometry":{"type":"Polygon","coordinates":[[[-68.648,-10.614],[-68.644,-10.654],[-68.532,-10.721],[-68.558,-10.778],[-68.403,-10.857],[-68.423,-10.934],[-68.389,-11.041],[-68.432,-11.031],[-68.543,-11.11],[-68.716,-11.145],[-68.766,-11.049],[-68.687,-10.937],[-68.784,-10.869],[-68.835,-10.74],[-68.808,-10.671],[-68.648,-10.614]]]}},{"type":"Feature","properties":{"id":"1200302","name":"Feijó","centroid":[-70.7452,-8.928]},"geometry":{"type":"Polygon","coordinates":[[[-69.989,-7.901],[-69.444,-8.366],[-69.575,-8.636],[-69.758,-8.782],[-69.847,-8.948],[-70.365,-8.982],[-70.439,-9.088],[-70.54,-9.16],[-70.677,-9.373],[-70.791,-9.449],[-70.863,-9.457],[-71.045,-9.642],[-71.1,-9.749],[-71.077,-9.828],[-71.163,-9.876],[-71.211,-9.967],[-71.308,-9.992],[-71.349,-9.974],[-71.376,-10.001],[-72.199,-10],[-72.154,-9.884],[-72.178,-9.822],[-72.111,-9.763],[-71.929,-9.722],[-71.836,-9.622],[-71.792,-9.486],[-71.724,-9.426],[-71.7,-9.267],[-71.615,-9.188],[-71.598,-9.024],[-71.527,-8.909],[-71.459,-8.867],[-71.373,-8.895],[-71.29,-8.84],[-71.242,-8.855],[-71.122,-8.764],[-71.078,-8.778],[-70.921,-8.6],[-70.858,-8.67],[-70.742,-8.609],[-70.688,-8.523],[-70.702,-8.477],[-70.653,-8.466],[-70.68,-8.383],[-70.625,-8.341],[-70.633,-8.311],[-70.564,-8.215],[-70.567,-8.043],[-70.586,-7.997],[-70.636,-7.976],[-70.645,-7.911],[-70.6,-7.894],[-70.547,-7.809],[-70.052,-7.847],[-69.989,-7.901]]]}},{"type":"Feature","properties":{"id":"1200328","name":"Jordão","centroid":[-71.9048,-9.2422]},"geometry":{"type":"Polygon","coordinates":[[[-71.559,-8.656],[-71.542,-8.738],[-71.616,-8.858],[-71.482,-8.883],[-71.574,-8.962],[-71.615,-9.188],[-71.7,-9.267],[-71.724,-9.426],[-71.792,-9.486],[-71.836,-9.622],[-71.929,-9.722],[-71.992,-9.717],[-72.039,-9.767],[-72.035,-9.743],[-72.153,-9.797],[-72.244,-9.766],[-72.271,-9.743],[-72.246,-9.654],[-72.254,-9.612],[-72.288,-9.601],[-72.283,-9.54],[-72.345,-9.545],[-72.371,-9.509],[-72.299,-9.504],[-72.156,-9.383],[-72.045,-9.203],[-72.063,-9.179],[-72.028,-8.973],[-72.081,-8.854],[-71.968,-8.778],[-71.811,-8.83],[-71.713,-8.722],[-71.559,-8.656]]]}},{"type":"Feature","properties":{"id":"1200336","name":"Mâncio Lima","centroid":[-73.4359,-7.5051]},"geometry":{"type":"Polygon","coordinates":[[[-73.12,-7.358],[-72.901,-7.437],[-72.862,-7.58],[-72.783,-7.661],[-72.946,-7.689],[-73.039,-7.665],[-73.183,-7.725],[-73.256,-7.791],[-73.307,-7.778],[-73.331,-7.711],[-73.443,-7.772],[-73.544,-7.715],[-73.675,-7.74],[-73.692,-7.768],[-73.822,-7.718],[-73.991,-7.536],[-73.948,-7.527],[-73.92,-7.466],[-73.959,-7.346],[-73.87,-7.379],[-73.83,-7.337],[-73.756,-7.347],[-73.7,-7.304],[-73.714,-7.234],[-73.801,-7.111],[-73.12,-7.358]]]}},{"type":"Feature","properties":{"id":"1200344","name":"Manoel Urbano","centroid":[-69.855,-9.3816]},"geometry":{"type":"Polygon","coordinates":[[[-68.941,-8.836],[-69.082,-8.905],[-69.111,-8.955],[-69.201,-8.956],[-69.256,-9.053],[-69.349,-9.046],[-69.458,-9.145],[-69.691,-9.23],[-69.77,-9.339],[-69.797,-9.334],[-69.784,-9.38],[-69.861,-9.439],[-69.977,-9.782],[-70.039,-9.866],[-70.043,-9.99],[-70.136,-10.194],[-70.227,-10.292],[-70.256,-10.425],[-70.625,-10.425],[-70.624,-10.075],[-70.445,-9.942],[-70.153,-9.558],[-70.028,-9.523],[-70.331,-9.396],[-70.299,-9.338],[-70.21,-9.276],[-70.051,-9.289],[-69.957,-9.23],[-69.91,-9.246],[-69.904,-9.213],[-69.85,-9.196],[-69.848,-9.14],[-69.796,-9.112],[-69.865,-8.957],[-69.758,-8.782],[-69.575,-8.636],[-69.444,-8.366],[-68.922,-8.813],[-68.941,-8.836]]]}},{"type":"Feature","properties":{"id":"1200351","name":"Marechal Thaumaturgo","centroid":[-72.5543,-9.1]},"geometry":{"type":"Polygon","coordinates":[[[-72.693,-8.696],[-72.683,-8.749],[-72.637,-8.773],[-72.495,-8.778],[-72.466,-8.754],[-72.36,-8.782],[-72.214,-8.701],[-72.144,-8.712],[-72.125,-8.828],[-72.044,-8.9],[-72.045,-9.203],[-72.156,-9.383],[-72.299,-9.504],[-72.437,-9.476],[-72.546,-9.491],[-72.75,-9.41],[-73.212,-9.411],[-73.102,-9.306],[-73.078,-9.237],[-73.008,-9.215],[-73.018,-9.177],[-72.944,-9.097],[-72.942,-8.987],[-73.022,-8.893],[-73.045,-8.903],[-73.111,-8.758],[-72.924,-8.762],[-72.75,-8.717],[-72.728,-8.672],[-72.693,-8.696]]]}},{"type":"Feature","properties":{"id":"1200385","name":"Plácido de Castro","centroid":[-67.3421,-10.2474]},"geometry":{"type":"Polygon","coordinates":[[[-67.125,-9.971],[-67.099,-10.103],[-67.077,-10.091],[-67.076,-10.196],[-67.002,-10.217],[-67.011,-10.254],[-67.131,-10.293],[-67.169,-10.337],[-67.315,-10.319],[-67.311,-10.376],[-67.407,-10.374],[-67.413,-10.427],[-67.518,-10.491],[-67.597,-10.51],[-67.696,-10.453],[-67.612,-10.298],[-67.502,-10.26],[-67.425,-10.096],[-67.125,-9.971]]]}},{"type":"Feature","properties":{"id":"1200807","name":"Porto Acre","centroid":[-67.6976,-9.6319]},"geometry":{"type":"Polygon","coordinates":[[[-68.021,-9.349],[-67.517,-9.56],[-67.324,-9.592],[-67.335,-9.724],[-67.436,-9.837],[-67.447,-9.914],[-67.517,-9.906],[-67.53,-9.855],[-67.581,-9.824],[-67.601,-9.865],[-67.71,-9.836],[-67.703,-9.787],[-67.744,-9.74],[-67.796,-9.779],[-68.089,-9.554],[-68.022,-9.481],[-68.062,-9.39],[-68.021,-9.349]]]}},{"type":"Feature","properties":{"id":"1200393","name":"Porto Walter","centroid":[-72.7188,-8.4884]},"geometry":{"type":"Polygon","coordinates":[[[-72.808,-8.122],[-72.794,-8.2],[-72.68,-8.226],[-72.634,-8.185],[-72.556,-8.187],[-72.408,-8.258],[-72.302,-8.208],[-72.265,-8.222],[-72.266,-8.261],[-72.226,-8.281],[-72.266,-8.391],[-72.232,-8.41],[-72.201,-8.552],[-72.23,-8.599],[-72.214,-8.701],[-72.36,-8.782],[-72.466,-8.754],[-72.495,-8.778],[-72.637,-8.773],[-72.728,-8.672],[-72.773,-8.727],[-73.06,-8.765],[-73.111,-8.758],[-73.15,-8.684],[-73.24,-8.666],[-73.287,-8.619],[-73.306,-8.472],[-73.331,-8.474],[-73.101,-8.341],[-72.999,-8.223],[-72.808,-8.122]]]}},{"type":"Feature","properties":{"id":"1200401","name":"Rio Branco","centroid":[-68.3686,-10.0666]},"geometry":{"type":"Polygon","coordinates":[[[-68.584,-9.539],[-68.514,-9.589],[-68.418,-9.545],[-68.455,-9.624],[-68.427,-9.711],[-68.442,-9.827],[-68.38,-9.782],[-68.3,-9.794],[-68.152,-9.96],[-67.976,-9.847],[-67.867,-9.841],[-67.83,-9.87],[-67.827,-9.782],[-67.744,-9.74],[-67.703,-9.787],[-67.71,-9.836],[-67.601,-9.865],[-67.581,-9.824],[-67.53,-9.855],[-67.482,-9.927],[-67.49,-9.997],[-67.581,-10.069],[-67.62,-10.048],[-67.671,-10.102],[-67.82,-10.089],[-67.818,-10.267],[-67.999,-10.316],[-68.041,-10.389],[-68.097,-10.364],[-68.207,-10.375],[-68.314,-10.418],[-68.388,-10.38],[-68.351,-10.332],[-68.416,-10.307],[-68.453,-10.183],[-68.496,-10.254],[-68.642,-10.306],[-68.713,-10.384],[-69.149,-10.385],[-69.342,-10.485],[-69.364,-10.463],[-69.311,-10.364],[-69.121,-10.269],[-69.037,-10.164],[-68.694,-9.887],[-68.667,-9.841],[-68.7,-9.679],[-68.673,-9.56],[-68.608,-9.505],[-68.584,-9.539]]]}},{"type":"Feature","properties":{"id":"1200427","name":"Rodrigues Alves","centroid":[-73.2258,-7.8422]},"geometry":{"type":"Polygon","coordinates":[[[-72.78,-7.693],[-72.731,-7.724],[-72.644,-7.676],[-72.642,-7.772],[-72.609,-7.78],[-72.646,-7.786],[-72.616,-7.813],[-72.948,-7.943],[-73.097,-7.941],[-73.116,-7.923],[-73.092,-7.884],[-73.169,-7.893],[-73.321,-7.992],[-73.374,-7.987],[-73.397,-8.029],[-73.63,-8.051],[-73.64,-8.008],[-73.678,-8.005],[-73.698,-7.961],[-73.732,-7.968],[-73.772,-7.902],[-73.762,-7.858],[-73.713,-7.876],[-73.69,-7.854],[-73.675,-7.74],[-73.544,-7.715],[-73.451,-7.773],[-73.331,-7.711],[-73.307,-7.778],[-73.256,-7.791],[-73.183,-7.725],[-73.039,-7.665],[-72.78,-7.693]]]}},{"type":"Feature","properties":{"id":"1200435","name":"Santa Rosa do Purus","centroid":[-70.3998,-9.4163]},"geometry":{"type":"Polygon","coordinates":[[[-69.865,-8.957],[-69.796,-9.112],[-69.848,-9.14],[-69.85,-9.196],[-69.904,-9.213],[-69.91,-9.246],[-69.957,-9.23],[-70.051,-9.289],[-70.21,-9.276],[-70.331,-9.396],[-70.028,-9.523],[-70.153,-9.558],[-70.445,-9.942],[-70.624,-10.075],[-70.622,-9.822],[-70.546,-9.777],[-70.525,-9.714],[-70.584,-9.638],[-70.598,-9.552],[-70.556,-9.571],[-70.57,-9.53],[-70.505,-9.504],[-70.523,-9.46],[-70.493,-9.426],[-70.594,-9.441],[-70.663,-9.524],[-70.75,-9.559],[-70.799,-9.641],[-70.963,-9.748],[-70.995,-9.817],[-71.077,-9.828],[-71.1,-9.749],[-71.045,-9.642],[-70.863,-9.457],[-70.791,-9.449],[-70.677,-9.373],[-70.54,-9.16],[-70.439,-9.088],[-70.365,-8.982],[-69.865,-8.957]]]}},{"type":"Feature","properties":{"id":"1200500","name":"Sena Madureira","centroid":[-69.3812,-9.7704]},"geometry":{"type":"Polygon","coordinates":[[[-68.922,-8.813],[-68.647,-9.049],[-68.22,-9.242],[-68.401,-9.324],[-68.33,-9.44],[-68.411,-9.541],[-68.514,-9.589],[-68.601,-9.538],[-68.608,-9.505],[-68.673,-9.56],[-68.7,-9.679],[-68.667,-9.841],[-68.694,-9.887],[-69.037,-10.164],[-69.121,-10.269],[-69.311,-10.364],[-69.364,-10.463],[-69.342,-10.485],[-69.508,-10.505],[-69.592,-10.37],[-69.648,-10.428],[-69.682,-10.41],[-69.687,-10.435],[-69.785,-10.461],[-69.832,-10.538],[-69.992,-10.57],[-70.207,-10.703],[-70.224,-10.676],[-70.255,-10.713],[-70.282,-10.691],[-70.368,-10.73],[-70.462,-10.701],[-70.51,-10.727],[-70.555,-10.688],[-70.623,-10.711],[-70.625,-10.425],[-70.256,-10.425],[-70.227,-10.292],[-70.136,-10.194],[-70.043,-9.99],[-70.039,-9.866],[-69.977,-9.782],[-69.861,-9.439],[-69.784,-9.38],[-69.797,-9.334],[-69.77,-9.339],[-69.691,-9.23],[-69.458,-9.145],[-69.349,-9.046],[-69.234,-9.04],[-69.201,-8.956],[-69.111,-8.955],[-69.082,-8.905],[-68.922,-8.813]]]}},{"type":"Feature","properties":{"id":"1200450","name":"Senador Guiomard","centroid":[-67.432,-9.9987]},"geometry":{"type":"Polygon","coordinates":[[[-67.139,-9.683],[-67.193,-9.704],[-67.091,-9.957],[-67.425,-10.096],[-67.51,-10.268],[-67.612,-10.298],[-67.637,-10.363],[-67.689,-10.354],[-67.81,-10.199],[-67.82,-10.089],[-67.671,-10.102],[-67.62,-10.048],[-67.581,-10.069],[-67.501,-10.02],[-67.436,-9.837],[-67.335,-9.724],[-67.324,-9.592],[-67.139,-9.683]]]}},{"type":"Feature","properties":{"id":"1200609","name":"Tarauacá","centroid":[-71.4446,-8.2381]},"geometry":{"type":"Polygon","coordinates":[[[-71.381,-7.692],[-70.515,-7.792],[-70.645,-7.911],[-70.636,-7.976],[-70.573,-8.022],[-70.555,-8.161],[-70.625,-8.341],[-70.68,-8.383],[-70.653,-8.466],[-70.702,-8.477],[-70.688,-8.523],[-70.784,-8.64],[-70.858,-8.67],[-70.921,-8.6],[-71.078,-8.778],[-71.122,-8.764],[-71.242,-8.855],[-71.29,-8.84],[-71.373,-8.895],[-71.616,-8.858],[-71.542,-8.738],[-71.555,-8.647],[-71.713,-8.722],[-71.811,-8.83],[-71.968,-8.778],[-72.079,-8.867],[-72.125,-8.828],[-72.144,-8.712],[-72.214,-8.701],[-72.23,-8.599],[-72.201,-8.552],[-72.232,-8.41],[-72.266,-8.391],[-72.226,-8.281],[-72.266,-8.261],[-72.258,-8.085],[-72.214,-7.965],[-72.017,-7.798],[-71.957,-7.625],[-71.381,-7.692]]]}},{"type":"Feature","properties":{"id":"1200708","name":"Xapuri","centroid":[-68.5061,-10.5772]},"geometry":{"type":"Polygon","coordinates":[[[-68.452,-10.248],[-68.412,-10.268],[-68.416,-10.307],[-68.351,-10.332],[-68.388,-10.38],[-68.314,-10.418],[-68.207,-10.375],[-68.048,-10.383],[-68.064,-10.425],[-68.031,-10.536],[-67.983,-10.593],[-68.016,-10.602],[-68.002,-10.648],[-68.1,-10.709],[-68.103,-10.775],[-68.196,-10.859],[-68.237,-10.956],[-68.389,-11.041],[-68.423,-10.934],[-68.403,-10.857],[-68.558,-10.778],[-68.532,-10.721],[-68.644,-10.654],[-68.637,-10.619],[-68.808,-10.671],[-68.806,-10.716],[-68.854,-10.758],[-68.975,-10.771],[-68.904,-10.58],[-69.06,-10.59],[-69.169,-10.481],[-69.132,-10.385],[-68.713,-10.384],[-68.642,-10.306],[-68.496,-10.254],[-68.453,-10.183],[-68.452,-10.248]]]}}]'), r = {
|
|
2
|
+
type: e,
|
|
3
|
+
uf: "AC",
|
|
4
|
+
features: o
|
|
5
|
+
};
|
|
6
|
+
export {
|
|
7
|
+
r as default,
|
|
8
|
+
o as features,
|
|
9
|
+
e as type,
|
|
10
|
+
t as uf
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=AC-DLl3Z4oj.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AC-DLl3Z4oj.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|