@voltro/cli 0.51.0 → 0.53.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/CHANGELOG.md +356 -0
- package/THIRD-PARTY-NOTICES.md +8311 -3318
- package/dist/{agentsMd-D6yD7IQv.js → agentsMd-0l980yhL.js} +4 -1
- package/dist/agentsMd-SDDSkyl4.js +2 -0
- package/dist/{apiBuild-CPDHXF72.js → apiBuild-CaPfoWku.js} +11 -5
- package/dist/apiBuild-DHtLXYx9.js +2 -0
- package/dist/bin.js +1 -1
- package/dist/build-D-OnvNMf.js +843 -0
- package/dist/{checkCommand-DNuPiWMc.js → checkCommand-C5elt0tW.js} +92 -46
- package/dist/checkCommand-D2ZduVlh.js +2 -0
- package/dist/{cloudCmd-F4YJeqM3.js → cloudCmd-QUXh-b5w.js} +1 -1
- package/dist/codegen-BWpt3VgF.js +2 -0
- package/dist/{codegen-CrMXs4hb.js → codegen-FEk8AZHb.js} +2 -2
- package/dist/{codegenCommand-BNBHcNNj.js → codegenCommand-BOiWQ5hz.js} +12 -12
- package/dist/{codemodRunner-BDVixlSw.js → codemodRunner-BjtB2lq6.js} +691 -545
- package/dist/{commands-B1OiS9bX.js → commands-DyxAmhP0.js} +36 -36
- package/dist/{dashboardCommand-C-vvPY1B.js → dashboardCommand-BdKTyT13.js} +3 -3
- package/dist/{dataCommand-C1GxXW5q.js → dataCommand-Bab9X7s8.js} +27 -27
- package/dist/{dbCommand-If4Y1xQ-.js → dbCommand-06O2finM.js} +277 -236
- package/dist/dbCommand-B1EXBC6f.js +2 -0
- package/dist/{dev-kdAg9Q7l.js → dev-C6LGF4iY.js} +2998 -2379
- package/dist/dev-GjJWAYo2.js +3 -0
- package/dist/doctorCommand-B0hX0tdz.js +2 -0
- package/dist/{doctorCommand-nKmeW78u.js → doctorCommand-etMkflRc.js} +332 -220
- package/dist/{dormancyCommand-CY3wa_SW.js → dormancyCommand-UwZ1AZzB.js} +1 -1
- package/dist/{embeddingsCommand-BDLIgje_.js → embeddingsCommand-C70zWHwo.js} +1 -1
- package/dist/{envCommand-C6V_xVlT.js → envCommand-dSyKvRkM.js} +15 -15
- package/dist/{evolveCommand-D3c4DSfN.js → evolveCommand-CG0_ebO5.js} +2 -2
- package/dist/fileConventions-DASGEmj-.js +35 -0
- package/dist/{fileTaxonomy-CJfgOllU.js → fileTaxonomy-B7uxipWS.js} +55 -55
- package/dist/fontPipeline-LxIHa1vo.js +2 -0
- package/dist/fontPipeline-Tsh8kZfA.js +152 -0
- package/dist/frameworkTableAssembly-C_7Z-rMs.js +2 -0
- package/dist/{frameworkTableAssembly-BwJVEKLr.js → frameworkTableAssembly-DKx3ba3S.js} +5 -5
- package/dist/imagePipeline-B_GVJgm6.js +2 -0
- package/dist/imagePipeline-CBZmjT4i.js +127 -0
- package/dist/index.js +1 -1
- package/dist/{infoCommand-BnRFEF1o.js → infoCommand-_53iOc_j.js} +1 -1
- package/dist/{inspect-CtL_xTbu.js → inspect-Bd8-9wsi.js} +1 -1
- package/dist/inspect-CuoDInfZ.js +2 -0
- package/dist/{inspectGateHint-BjnFubmH.js → inspectGateHint-4LxkNtrz.js} +1 -1
- package/dist/inspectMetrics-CGF94puw.js +143 -0
- package/dist/manifestBuild-C4-J1-m_.js +2 -0
- package/dist/{manifestBuild-CuU1VrSm.js → manifestBuild-Cqgsx2bM.js} +1 -1
- package/dist/{metaCommands-CfRLra0s.js → metaCommands-Cn2oboG4.js} +9 -3
- package/dist/{migrate-DehuBakM.js → migrate-Cko9rswM.js} +2 -2
- package/dist/{pageConvention-cEiRxdab.js → pageConvention-C938S8oC.js} +1 -1
- package/dist/{privacyCommand-XejDMvmu.js → privacyCommand-DWTQMC6R.js} +2 -2
- package/dist/{probeCommand-C9gazU0H.js → probeCommand-DkGGLknv.js} +83 -24
- package/dist/{projectScaffold-mIX_DpSe.js → projectScaffold-B4dmTlwT.js} +1 -1
- package/dist/{projectScaffold-BIl97_E6.js → projectScaffold-EzlErR4E.js} +1 -1
- package/dist/{renderModeScan-D7J1B7Kw.js → renderModeScan-CUbOeOAg.js} +28 -11
- package/dist/{renderProfile-1OWWAAtx.js → renderProfile-CskIgAfn.js} +2 -2
- package/dist/{runtimeTrace-ZsBU7Tkx.js → runtimeTrace-c0APJz7E.js} +1 -1
- package/dist/{sdkgen-O4XqWOjM.js → sdkgen-BiQCgIEr.js} +1 -1
- package/dist/serveCommand-CueKQgzl.js +2443 -0
- package/dist/serveCommand-DsnrVN3U.js +2 -0
- package/dist/serveEntry.js +1 -1
- package/dist/start-BJzZLbt8.js +3 -0
- package/dist/start-ekPan8BT.js +1510 -0
- package/dist/startEntry.js +1 -1
- package/dist/{staticCommand-Dr2M6tpU.js → staticCommand-xlSL-IWk.js} +1 -1
- package/dist/{test-rXFq4S76.js → test-BWPQcRoB.js} +1 -1
- package/dist/updateCommand-Bqql_rsQ.js +2 -0
- package/dist/{updateCommand-Bs322Q78.js → updateCommand-C_8I8Rzo.js} +139 -115
- package/dist/webDev-C7jWJ5dX.js +2 -0
- package/dist/{webDev-B-ubQEMX.js → webDev-oczpugbx.js} +1767 -913
- package/dist/{webhooksCommand-FLYY9IXh.js → webhooksCommand-4SVPDjKg.js} +1 -1
- package/package.json +72 -18
- package/templates/AGENTS.core.md +11 -0
- package/templates/AGENTS.md +19 -6
- package/templates/agent-docs/_index.md +8 -6
- package/templates/agent-docs/_manifest.json +31 -15
- package/templates/agent-docs/ai.md +2 -2
- package/templates/agent-docs/authentication.md +1 -1
- package/templates/agent-docs/cli.md +97 -15
- package/templates/agent-docs/configuration.md +17 -0
- package/templates/agent-docs/data.md +680 -33
- package/templates/agent-docs/database/advancedqueries.md +7 -7
- package/templates/agent-docs/database/columntypes.md +2 -2
- package/templates/agent-docs/database/querying.md +1 -1
- package/templates/agent-docs/database/schema.md +2 -2
- package/templates/agent-docs/database/seedsdialects.md +2 -2
- package/templates/agent-docs/database/transactions.md +3 -3
- package/templates/agent-docs/deployment.md +30 -3
- package/templates/agent-docs/internationalization.md +2 -2
- package/templates/agent-docs/introduction.md +52 -0
- package/templates/agent-docs/local-first-mobile.md +132 -7
- package/templates/agent-docs/observability.md +2 -0
- package/templates/agent-docs/plugins/ai-flows.md +1 -1
- package/templates/agent-docs/plugins/audit.md +5 -5
- package/templates/agent-docs/plugins/auth.md +1 -1
- package/templates/agent-docs/plugins/cdc-out.md +2 -2
- package/templates/agent-docs/plugins/comments.md +142 -0
- package/templates/agent-docs/plugins/notifications.md +47 -4
- package/templates/agent-docs/plugins/presence.md +16 -3
- package/templates/agent-docs/plugins/prometheus.md +1 -1
- package/templates/agent-docs/plugins/queue.md +129 -0
- package/templates/agent-docs/plugins/{versioning.md → row-history.md} +22 -22
- package/templates/agent-docs/plugins/storage.md +2 -2
- package/templates/agent-docs/plugins.md +38 -12
- package/templates/agent-docs/reference.md +54 -5
- package/templates/agent-docs/routing.md +868 -50
- package/templates/agent-docs/schema-driven-ui.md +292 -5
- package/templates/agent-docs/security.md +125 -8
- package/templates/agent-docs/templates/apibackends.md +14 -14
- package/templates/agent-docs/templates/overview.md +1 -1
- package/templates/agent-docs/whats-new.md +171 -54
- package/templates/apps/api-ai/package.json +6 -7
- package/templates/apps/api-ai/tests/summarize.test.ts +1 -1
- package/templates/apps/api-auth/package.json +8 -8
- package/templates/apps/api-backend/package.json +7 -7
- package/templates/apps/api-backend-deactivation/package.json +7 -7
- package/templates/apps/api-backend-mail/package.json +8 -8
- package/templates/apps/api-backend-mariadb/package.json +9 -9
- package/templates/apps/api-backend-sqlite/package.json +8 -8
- package/templates/apps/api-backend-storage/package.json +8 -8
- package/templates/apps/api-cms/package.json +9 -10
- package/templates/apps/api-collab/package.json +8 -8
- package/templates/apps/api-data-advanced/package.json +8 -8
- package/templates/apps/api-durable/package.json +8 -8
- package/templates/apps/api-feature-flags/package.json +9 -9
- package/templates/apps/api-governance/package.json +8 -8
- package/templates/apps/api-kv/package.json +8 -8
- package/templates/apps/api-moderation/package.json +8 -8
- package/templates/apps/api-observability/package.json +8 -8
- package/templates/apps/api-ratelimit/package.json +8 -8
- package/templates/apps/api-rbac/package.json +8 -8
- package/templates/apps/api-rest/package.json +7 -7
- package/templates/apps/{api-versioning → api-row-history}/README.md +3 -3
- package/templates/apps/{api-versioning → api-row-history}/actions/documents.asOf.action.server.ts +1 -1
- package/templates/apps/{api-versioning → api-row-history}/actions/documents.history.action.server.ts +1 -1
- package/templates/apps/{api-versioning → api-row-history}/app.config.ts +3 -3
- package/templates/apps/{api-versioning → api-row-history}/database/schema.ts +1 -1
- package/templates/apps/{api-versioning → api-row-history}/mutations/documents.create.mutation.server.ts +1 -1
- package/templates/apps/{api-versioning → api-row-history}/mutations/documents.create.mutation.ts +1 -1
- package/templates/apps/{api-versioning → api-row-history}/mutations/documents.update.mutation.ts +1 -1
- package/templates/apps/{api-versioning → api-row-history}/package.json +8 -8
- package/templates/apps/api-row-history/template.json +6 -0
- package/templates/apps/{api-versioning → api-row-history}/tests/documents.create.test.ts +1 -1
- package/templates/apps/api-saas/app.config.ts +1 -0
- package/templates/apps/api-saas/package.json +10 -11
- package/templates/apps/api-saas-starter/package.json +10 -10
- package/templates/apps/api-search/package.json +8 -8
- package/templates/apps/api-status/package.json +8 -8
- package/templates/apps/api-webhooks/package.json +9 -9
- package/templates/apps/changelog/app.config.ts +26 -2
- package/templates/apps/changelog/content/releases/{0.1.0.mdx → v0-1-0.mdx} +0 -1
- package/templates/apps/changelog/content/releases/{0.2.0.mdx → v0-2-0.mdx} +0 -1
- package/templates/apps/changelog/package.json +8 -8
- package/templates/apps/changelog/src/collections/releases.collection.ts +48 -0
- package/templates/apps/changelog/src/globals.d.ts +1 -1
- package/templates/apps/changelog/src/locales/de.ts +1 -1
- package/templates/apps/changelog/src/locales/en.ts +1 -1
- package/templates/apps/changelog/src/pages/[locale]/[slug]/page.tsx +7 -4
- package/templates/apps/changelog/src/pages/[locale]/mirrors.test.tsx +13 -41
- package/templates/apps/changelog/src/pages/[slug]/page.test.tsx +26 -51
- package/templates/apps/changelog/src/pages/[slug]/page.tsx +21 -19
- package/templates/apps/changelog/src/pages/page.test.tsx +14 -37
- package/templates/apps/changelog/src/pages/page.tsx +18 -12
- package/templates/apps/edge-functions/package.json +2 -2
- package/templates/apps/frontend-admin/package.json +8 -8
- package/templates/apps/frontend-app/package.json +9 -9
- package/templates/apps/frontend-auth/package.json +8 -8
- package/templates/apps/frontend-blank/package.json +7 -7
- package/templates/apps/frontend-cms/package.json +9 -9
- package/templates/apps/frontend-collab/package.json +10 -10
- package/templates/apps/frontend-collab/src/pages/page.test.tsx +10 -9
- package/templates/apps/frontend-collab/src/pages/page.tsx +42 -65
- package/templates/apps/frontend-contact/package.json +7 -7
- package/templates/apps/frontend-dashboard/package.json +7 -7
- package/templates/apps/frontend-docs/content/docs/de/guides/first-page.md +4 -0
- package/templates/apps/frontend-docs/content/docs/de/intro/getting-started.md +4 -0
- package/templates/apps/frontend-docs/content/docs/en/guides/first-page.md +4 -0
- package/templates/apps/frontend-docs/content/docs/en/intro/getting-started.md +4 -0
- package/templates/apps/frontend-docs/package.json +8 -7
- package/templates/apps/frontend-docs/src/collections/docs.collection.ts +21 -0
- package/templates/apps/frontend-docs/src/locales/de.ts +0 -5
- package/templates/apps/frontend-docs/src/locales/en.ts +0 -5
- package/templates/apps/frontend-docs/src/pages/[locale]/docs/[...slug]/page.tsx +17 -9
- package/templates/apps/frontend-docs/src/pages/[locale]/mirrors.test.tsx +10 -5
- package/templates/apps/frontend-docs/src/pages/[locale]/page.tsx +8 -0
- package/templates/apps/frontend-docs/src/pages/docs/[...slug]/page.test.tsx +53 -15
- package/templates/apps/frontend-docs/src/pages/docs/[...slug]/page.tsx +27 -33
- package/templates/apps/frontend-docs/src/pages/page.test.tsx +17 -3
- package/templates/apps/frontend-docs/src/pages/page.tsx +16 -12
- package/templates/apps/frontend-i18n/package.json +6 -6
- package/templates/apps/frontend-landing/package.json +6 -7
- package/templates/apps/frontend-portal/package.json +8 -8
- package/templates/apps/frontend-saas/package.json +8 -8
- package/templates/apps/frontend-spa/package.json +7 -7
- package/templates/apps/frontend-ssr/package.json +7 -7
- package/templates/apps/frontend-ssr-api/package.json +8 -8
- package/templates/apps/frontend-static-blog/content/posts/cms-to-ssg.md +12 -0
- package/templates/apps/frontend-static-blog/content/posts/hello-static.md +12 -0
- package/templates/apps/frontend-static-blog/content/posts/islands-not-hydration.md +14 -0
- package/templates/apps/frontend-static-blog/package.json +8 -6
- package/templates/apps/frontend-static-blog/src/collections/posts.collection.ts +27 -0
- package/templates/apps/frontend-static-blog/src/pages/[locale]/blog/[slug]/page.tsx +7 -4
- package/templates/apps/frontend-static-blog/src/pages/[locale]/mirrors.test.tsx +7 -1
- package/templates/apps/frontend-static-blog/src/pages/blog/[slug]/page.test.tsx +19 -9
- package/templates/apps/frontend-static-blog/src/pages/blog/[slug]/page.tsx +19 -21
- package/templates/apps/frontend-static-blog/src/pages/page.test.tsx +18 -5
- package/templates/apps/frontend-static-blog/src/pages/page.tsx +21 -14
- package/templates/apps/frontend-status/package.json +8 -8
- package/templates/apps/mobile-app/package.json +4 -4
- package/dist/agentsMd-Bu_XQgVf.js +0 -2
- package/dist/apiBuild-GDKuGOMV.js +0 -2
- package/dist/build-DETLZAFt.js +0 -752
- package/dist/checkCommand-CWcnDArJ.js +0 -2
- package/dist/codegen-DiMn2KkZ.js +0 -2
- package/dist/dbCommand-C27HIsGE.js +0 -2
- package/dist/dev-CK522MV5.js +0 -3
- package/dist/doctorCommand-BK4l18eG.js +0 -2
- package/dist/fileConventions-Cof68_BL.js +0 -33
- package/dist/frameworkTableAssembly-CVDB2hCq.js +0 -2
- package/dist/inspect-CuGDYES0.js +0 -2
- package/dist/inspectMetrics-CfdKLh6t.js +0 -72
- package/dist/manifestBuild-CPjhvM62.js +0 -2
- package/dist/serveCommand-BRnPCxVd.js +0 -2
- package/dist/serveCommand-DdiYNBBu.js +0 -2362
- package/dist/start-BLNmWkLa.js +0 -1154
- package/dist/start-Dzicuyw8.js +0 -3
- package/dist/updateCommand-eXB35SEv.js +0 -2
- package/dist/webDev-DposiF3j.js +0 -2
- package/templates/apps/api-versioning/template.json +0 -6
- package/templates/apps/changelog/scripts/generate-rss.mjs +0 -38
- package/templates/apps/changelog/src/lib/releases.ts +0 -21
- package/templates/apps/frontend-static-blog/src/content/posts.ts +0 -64
- /package/templates/apps/{api-versioning → api-row-history}/actions/documents.asOf.action.ts +0 -0
- /package/templates/apps/{api-versioning → api-row-history}/actions/documents.history.action.ts +0 -0
- /package/templates/apps/{api-versioning → api-row-history}/mutations/documents.update.mutation.server.ts +0 -0
- /package/templates/apps/{api-versioning → api-row-history}/tsconfig.json +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { c as e } from "./dev-
|
|
2
|
-
import {
|
|
1
|
+
import { c as e } from "./dev-C6LGF4iY.js";
|
|
2
|
+
import { Gt as t, Ht as n, Kt as r, Ut as i } from "./webDev-oczpugbx.js";
|
|
3
3
|
import { join as a } from "node:path";
|
|
4
4
|
import { promises as o } from "node:fs";
|
|
5
5
|
import { createLogger as s } from "@voltro/logger";
|
|
@@ -21,27 +21,27 @@ var u = s({ scope: "voltro:env" }), d = "# Environment for this app", f = async
|
|
|
21
21
|
}, h = async (e) => {
|
|
22
22
|
let t = await f(e);
|
|
23
23
|
if (!t) return u.error("no app.config.ts found in the current directory"), 1;
|
|
24
|
-
let
|
|
25
|
-
u.info(`env manifest — ${
|
|
26
|
-
for (let e of
|
|
24
|
+
let r = n(t.name, t.input), i = `${p("KEY", 32)} ${p("OWNER", 16)} ${p("ACCESS", 8)} ${p("REQ", 4)} SET`;
|
|
25
|
+
u.info(`env manifest — ${r.app} (${r.summary.total} vars, ${r.summary.set} set)`), m(i);
|
|
26
|
+
for (let e of r.entries) {
|
|
27
27
|
let t = e.isSet ? "✓" : e.satisfied ? "·" : "✗";
|
|
28
28
|
m(`${p(e.key, 32)} ${p(e.owner, 16)} ${p(e.access, 8)} ${p(e.required ? "yes" : "", 4)} ${t}`);
|
|
29
29
|
}
|
|
30
|
-
return
|
|
30
|
+
return r.summary.missingRequired > 0 ? (u.error(`${r.summary.missingRequired} required var(s) are unset`), 1) : 0;
|
|
31
31
|
}, g = async (e, t) => {
|
|
32
|
-
let
|
|
33
|
-
if (!
|
|
34
|
-
let
|
|
32
|
+
let n = await f(e);
|
|
33
|
+
if (!n) return u.error("no app.config.ts found in the current directory"), 1;
|
|
34
|
+
let r = i(n.input, ["Environment for this app — generated from app.config.ts `env` + plugin declarations.", "Regenerate with `voltro env sync`. Copy to `.env` and fill in the blanks."]), s = a(e, ".env.example"), c = await o.readFile(s, "utf8").catch(() => null);
|
|
35
35
|
if (c !== null && !c.startsWith(d) && !t) {
|
|
36
36
|
let t = a(e, ".env.example.generated");
|
|
37
|
-
return await o.writeFile(t,
|
|
37
|
+
return await o.writeFile(t, r, "utf8"), u.warn(".env.example exists and is not framework-generated — wrote .env.example.generated instead", { hint: "merge it by hand, or pass --force to overwrite .env.example" }), 0;
|
|
38
38
|
}
|
|
39
|
-
return await o.writeFile(s,
|
|
39
|
+
return await o.writeFile(s, r, "utf8"), u.info("wrote .env.example", { app: n.name }), 0;
|
|
40
40
|
}, _ = async (n) => {
|
|
41
|
-
let
|
|
42
|
-
if (!
|
|
43
|
-
let a = l(
|
|
44
|
-
return a ? (
|
|
41
|
+
let i = await e(n).catch(() => null);
|
|
42
|
+
if (!i) return u.error("no app.config.ts found in the current directory"), 1;
|
|
43
|
+
let a = l(i.env) ? i.env : void 0;
|
|
44
|
+
return a ? (i.type === "web" ? (await t(n, a), u.info("wrote src/voltro-env.d.ts (publicEnv augmentation)", { app: i.name ?? "app" })) : (await r(n, a), u.info("wrote env.generated.d.ts (serverEnv augmentation)", { app: i.name ?? "app" })), 0) : (u.warn("no `defineEnv` declared in app.config.ts — nothing to generate", { hint: "add `env: defineEnv({ ... })` to app.config.ts (see @voltro/env)" }), 0);
|
|
45
45
|
}, v = () => {
|
|
46
46
|
let e = c();
|
|
47
47
|
return u.info(`${e.length} framework env vars for turbo.json globalPassThroughEnv:`), m(JSON.stringify([...e].sort(), null, 2)), u.info("merge these into the workspace turbo.json `globalPassThroughEnv` array (+ your own app vars)."), 0;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as e } from "./cliOutput-D1tSBoRM.js";
|
|
2
|
-
import { t } from "./checkCommand-
|
|
3
|
-
import { i as n, n as r } from "./codemodRunner-
|
|
2
|
+
import { i as t } from "./checkCommand-C5elt0tW.js";
|
|
3
|
+
import { i as n, n as r } from "./codemodRunner-BjtB2lq6.js";
|
|
4
4
|
import { basename as i, join as a, resolve as o } from "node:path";
|
|
5
5
|
import { branchNamespaceName as s, planBranchProvision as c } from "@voltro/database";
|
|
6
6
|
import { readFile as l } from "node:fs/promises";
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
//#region src/fileConventions.ts
|
|
2
|
+
var e = /\.(query|mutation|action|stream)\.ts$/, t = /\.(query|mutation|action|stream)\.server\.ts$/, n = /\.event\.ts$/, r = /\.ws\.ts$/, i = /\.workflow\.tsx$/, a = /\.workflow\.server\.tsx$/, o = /\.workflow\.tsx?$/, s = /\.trigger\.tsx?$/, c = /\.cron\.tsx?$/, l = /\.webhook\.tsx?$/, u = /\.outbox\.tsx?$/, d = /\.consumer\.tsx?$/, f = /\.subscribe\.tsx?$/, p = /\.reaction\.tsx?$/, m = /\.aggregate\.tsx?$/, h = /\.expectation\.ts$/, g = /\.budget\.ts$/, _ = /\.experiment\.ts$/, v = /\.startup\.tsx?$/, y = /\.seed\.ts$/, b = /\.relations\.ts$/, x = /\.entity\.ts$|\.schema\.ts$|^schema\.ts$/, S = (e) => o.test(e) && !i.test(e) && !a.test(e), C = /(?:^|\/)page\.tsx$/, w = /\.island\.tsx?$/, T = /\.component\.tsx$/, E = /\.component\.ui\.tsx$/, D = /\.hook\.tsx?$/, O = /\.internal\.tsx?$/, k = /\.types\.tsx?$/, A = /\.fixture\.tsx?$/, j = /\.tracking\.tsx?$/, M = /\.store\.tsx?$/, N = /\.client\.tsx?$/, P = /\.(test|spec)\.tsx?$/, F = [
|
|
3
|
+
e,
|
|
4
|
+
t,
|
|
5
|
+
o,
|
|
6
|
+
a,
|
|
7
|
+
s,
|
|
8
|
+
c,
|
|
9
|
+
l,
|
|
10
|
+
u,
|
|
11
|
+
d,
|
|
12
|
+
f,
|
|
13
|
+
p,
|
|
14
|
+
m,
|
|
15
|
+
v,
|
|
16
|
+
h,
|
|
17
|
+
g,
|
|
18
|
+
_,
|
|
19
|
+
y,
|
|
20
|
+
b,
|
|
21
|
+
x,
|
|
22
|
+
/\.route\.tsx?$/,
|
|
23
|
+
n,
|
|
24
|
+
r,
|
|
25
|
+
M,
|
|
26
|
+
N,
|
|
27
|
+
/\.(agent|tool|email|connection|serverless|server|config|generated)\.tsx?$/
|
|
28
|
+
], I = (e) => F.some((t) => t.test(e)), L = /* @__PURE__ */ new Set([
|
|
29
|
+
"layout.tsx",
|
|
30
|
+
"error.tsx",
|
|
31
|
+
"loading.tsx",
|
|
32
|
+
"not-found.tsx"
|
|
33
|
+
]);
|
|
34
|
+
//#endregion
|
|
35
|
+
export { l as A, v as C, j as D, P as E, I as F, S as I, o as M, a as N, s as O, r as P, y as S, f as T, e as _, d as a, b, h as c, D as d, O as f, L as g, C as h, E as i, i as j, k, _ as l, u as m, g as n, c as o, w as p, T as r, n as s, m as t, A as u, t as v, M as w, x, p as y };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { D as e, E as t, d as n, f as r, g as i, h as a, i as o, k as s, r as c, u as l, w as u } from "./fileConventions-DASGEmj-.js";
|
|
2
2
|
import { n as d, t as f } from "./tsconfigPaths-BWXBWgcl.js";
|
|
3
3
|
import { dirname as p, join as m, relative as h, resolve as g, sep as _ } from "node:path";
|
|
4
4
|
import { existsSync as v, readFileSync as y, readdirSync as b, statSync as x } from "node:fs";
|
|
@@ -43,40 +43,40 @@ var T = ".voltro-vendored", E = (e, t) => {
|
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
id: "component",
|
|
46
|
-
re:
|
|
46
|
+
re: c,
|
|
47
47
|
needsTest: !0
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
50
|
id: "hook",
|
|
51
|
-
re:
|
|
51
|
+
re: n,
|
|
52
52
|
needsTest: !0
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
55
|
id: "tracking",
|
|
56
|
-
re:
|
|
56
|
+
re: e,
|
|
57
57
|
needsTest: !0
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
60
|
id: "store",
|
|
61
|
-
re:
|
|
61
|
+
re: u,
|
|
62
62
|
needsTest: !0
|
|
63
63
|
},
|
|
64
64
|
{
|
|
65
65
|
id: "internal",
|
|
66
|
-
re:
|
|
66
|
+
re: r,
|
|
67
67
|
needsTest: !0
|
|
68
68
|
},
|
|
69
69
|
{
|
|
70
70
|
id: "fixture",
|
|
71
|
-
re:
|
|
71
|
+
re: l,
|
|
72
72
|
needsTest: !1
|
|
73
73
|
},
|
|
74
74
|
{
|
|
75
75
|
id: "types",
|
|
76
|
-
re:
|
|
76
|
+
re: s,
|
|
77
77
|
needsTest: !1
|
|
78
78
|
}
|
|
79
|
-
], A = (e) => k.find((t) => t.re.test(e))?.id ?? null, j = (e) =>
|
|
79
|
+
], A = (e) => k.find((t) => t.re.test(e))?.id ?? null, j = (e) => t.test(e), M = /* @__PURE__ */ new Set([
|
|
80
80
|
"useMutation",
|
|
81
81
|
"useAction",
|
|
82
82
|
"useUpload",
|
|
@@ -244,10 +244,10 @@ var T = ".voltro-vendored", E = (e, t) => {
|
|
|
244
244
|
scanned: 0,
|
|
245
245
|
vendored: n
|
|
246
246
|
};
|
|
247
|
-
let
|
|
247
|
+
let o = new C({
|
|
248
248
|
useInMemoryFileSystem: !0,
|
|
249
249
|
skipAddingFilesFromTsConfig: !0
|
|
250
|
-
}),
|
|
250
|
+
}), s = [], c = (t) => h(e, t), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map();
|
|
251
251
|
for (let t of r) {
|
|
252
252
|
let n;
|
|
253
253
|
try {
|
|
@@ -257,7 +257,7 @@ var T = ".voltro-vendored", E = (e, t) => {
|
|
|
257
257
|
}
|
|
258
258
|
let r;
|
|
259
259
|
try {
|
|
260
|
-
r =
|
|
260
|
+
r = o.createSourceFile(t.endsWith("x") ? "/scan.tsx" : "/scan.ts", n, { overwrite: !0 });
|
|
261
261
|
} catch {
|
|
262
262
|
continue;
|
|
263
263
|
}
|
|
@@ -293,40 +293,40 @@ var T = ".voltro-vendored", E = (e, t) => {
|
|
|
293
293
|
for (let e of r) {
|
|
294
294
|
let t = A(e), n = l.get(e), r = u.get(e);
|
|
295
295
|
if (n === void 0 || r === void 0) continue;
|
|
296
|
-
let
|
|
297
|
-
t !== null && !
|
|
296
|
+
let o = j(e);
|
|
297
|
+
t !== null && !o && (g += 1);
|
|
298
298
|
let f = p.get(e) ?? [];
|
|
299
|
-
if ((t === "component" || t === "component.ui") && !
|
|
299
|
+
if ((t === "component" || t === "component.ui") && !o) {
|
|
300
300
|
let t = J(n.components);
|
|
301
|
-
(n.components.length === 0 || !t) &&
|
|
301
|
+
(n.components.length === 0 || !t) && s.push({
|
|
302
302
|
rule: "component/one-per-file",
|
|
303
|
-
file:
|
|
303
|
+
file: c(e),
|
|
304
304
|
severity: "error",
|
|
305
305
|
detail: n.components.length === 0 ? "declares a component file but exports no component" : `exports ${n.components.length} unrelated components: ${n.components.join(", ")}`,
|
|
306
306
|
fix: "a component file exports ONE component — or one NAMESPACED family sharing its name (`Card`, `CardHeader`, `CardTitle`), which is one component with parts. Types alongside are fine. Unrelated components belong in their own files"
|
|
307
|
-
}), n.hooks.length > 0 &&
|
|
307
|
+
}), n.hooks.length > 0 && s.push({
|
|
308
308
|
rule: "component/no-hook-export",
|
|
309
|
-
file:
|
|
309
|
+
file: c(e),
|
|
310
310
|
severity: "error",
|
|
311
311
|
detail: `also exports hook(s): ${n.hooks.join(", ")}`,
|
|
312
312
|
fix: "move the hook into its own *.hook.ts — a file exporting both is two files wearing one name, and neither can be reused without dragging the other"
|
|
313
313
|
});
|
|
314
314
|
}
|
|
315
|
-
if (t === "hook" && !
|
|
315
|
+
if (t === "hook" && !o && (n.hooks.length !== 1 && s.push({
|
|
316
316
|
rule: "hook/one-per-file",
|
|
317
|
-
file:
|
|
317
|
+
file: c(e),
|
|
318
318
|
severity: "error",
|
|
319
319
|
detail: n.hooks.length === 0 ? "declares a hook file but exports no use* hook" : `exports ${n.hooks.length} hooks: ${n.hooks.join(", ")}`,
|
|
320
320
|
fix: "a hook file exports exactly ONE use* hook (types alongside are fine)"
|
|
321
|
-
}), n.components.length > 0 &&
|
|
321
|
+
}), n.components.length > 0 && s.push({
|
|
322
322
|
rule: "hook/no-component-export",
|
|
323
|
-
file:
|
|
323
|
+
file: c(e),
|
|
324
324
|
severity: "error",
|
|
325
325
|
detail: `also exports component(s): ${n.components.join(", ")}`,
|
|
326
326
|
fix: "move the component into its own *.component.tsx"
|
|
327
|
-
})), t === "types" && n.hasRuntimeExport &&
|
|
327
|
+
})), t === "types" && n.hasRuntimeExport && s.push({
|
|
328
328
|
rule: "types/runtime-export",
|
|
329
|
-
file:
|
|
329
|
+
file: c(e),
|
|
330
330
|
severity: "error",
|
|
331
331
|
detail: `exports runtime value(s): ${[
|
|
332
332
|
...n.components,
|
|
@@ -336,80 +336,80 @@ var T = ".voltro-vendored", E = (e, t) => {
|
|
|
336
336
|
fix: "a *.types.ts has NO runtime export. That is what makes importing it provably free AND makes it impossible for it to sit in a runtime import cycle — the guarantee is the point, so move the value to a sibling module"
|
|
337
337
|
}), t === "internal") {
|
|
338
338
|
let t = f.filter((t) => !Y(t, e));
|
|
339
|
-
t.length > 0 &&
|
|
339
|
+
t.length > 0 && s.push({
|
|
340
340
|
rule: "internal/foreign-import",
|
|
341
|
-
file:
|
|
341
|
+
file: c(e),
|
|
342
342
|
severity: "error",
|
|
343
|
-
detail: `imported from outside its own directory by: ${t.slice(0, 5).map(
|
|
343
|
+
detail: `imported from outside its own directory by: ${t.slice(0, 5).map(c).join(", ")}${t.length > 5 ? ` (+${t.length - 5})` : ""}`,
|
|
344
344
|
fix: "export it through the feature's public module, or move the importer inside. `.internal` is the promise that refactoring within this directory breaks nobody — a foreign import revokes it silently, which is how a feature boundary rots without a single review comment"
|
|
345
345
|
});
|
|
346
346
|
}
|
|
347
347
|
if (t === "fixture") {
|
|
348
348
|
let t = f.filter((e) => !j(e) && A(e) !== "fixture");
|
|
349
|
-
t.length > 0 &&
|
|
349
|
+
t.length > 0 && s.push({
|
|
350
350
|
rule: "fixture/production-import",
|
|
351
|
-
file:
|
|
351
|
+
file: c(e),
|
|
352
352
|
severity: "error",
|
|
353
|
-
detail: `imported by non-test file(s): ${t.slice(0, 5).map(
|
|
353
|
+
detail: `imported by non-test file(s): ${t.slice(0, 5).map(c).join(", ")}`,
|
|
354
354
|
fix: "test material must not be reachable from a production path — it ships in the bundle, and it is written to be convenient rather than correct"
|
|
355
355
|
});
|
|
356
356
|
}
|
|
357
|
-
if (t === "component.ui" && !
|
|
357
|
+
if (t === "component.ui" && !o) {
|
|
358
358
|
let t = [...r.namedBindings].filter((e) => M.has(e)).sort();
|
|
359
|
-
t.length > 0 &&
|
|
359
|
+
t.length > 0 && s.push({
|
|
360
360
|
rule: "ui/no-write",
|
|
361
|
-
file:
|
|
361
|
+
file: c(e),
|
|
362
362
|
severity: "error",
|
|
363
363
|
detail: `imports write hook(s): ${t.join(", ")}`,
|
|
364
364
|
fix: "a *.component.ui.tsx renders; it does not write. Lift the mutation into the *.component.tsx that owns it and pass a handler down. Reading (useT / useCan / usePermissions) stays allowed — threading those through props is prop-drilling, not reusability"
|
|
365
365
|
});
|
|
366
|
-
let n = m(e),
|
|
366
|
+
let n = m(e), o = n.filter((e) => {
|
|
367
367
|
let t = A(e);
|
|
368
|
-
return t === "component" || t === "component.ui" ||
|
|
368
|
+
return t === "component" || t === "component.ui" || a.test(e) || i.has(e.slice(e.lastIndexOf(_) + 1));
|
|
369
369
|
});
|
|
370
|
-
n.length === 0 ?
|
|
370
|
+
n.length === 0 ? s.push({
|
|
371
371
|
rule: "ui/orphaned",
|
|
372
|
-
file:
|
|
372
|
+
file: c(e),
|
|
373
373
|
severity: "warn",
|
|
374
374
|
detail: "nothing imports it",
|
|
375
375
|
fix: "render it from a *.component.tsx or a page, or delete it — an unrendered presentational component is carried, reviewed and refactored forever without reaching a user"
|
|
376
|
-
}) :
|
|
376
|
+
}) : o.length === 0 && s.push({
|
|
377
377
|
rule: "ui/unlinked",
|
|
378
|
-
file:
|
|
378
|
+
file: c(e),
|
|
379
379
|
severity: "warn",
|
|
380
|
-
detail: `reached only by: ${n.slice(0, 5).map(
|
|
380
|
+
detail: `reached only by: ${n.slice(0, 5).map(c).join(", ")}${n.length > 5 ? ` (+${n.length - 5})` : ""} — barrels resolved through`,
|
|
381
381
|
fix: "a presentational component should be reached from a *.component.tsx, another *.component.ui.tsx, or a page"
|
|
382
382
|
});
|
|
383
383
|
}
|
|
384
|
-
if (t === "store" && !
|
|
384
|
+
if (t === "store" && !o) {
|
|
385
385
|
let t = d.get(e)?.get("defineStore") ?? 0;
|
|
386
|
-
t !== 1 &&
|
|
386
|
+
t !== 1 && s.push({
|
|
387
387
|
rule: "store/one-per-file",
|
|
388
|
-
file:
|
|
388
|
+
file: c(e),
|
|
389
389
|
severity: "error",
|
|
390
390
|
detail: t === 0 ? "declares a store file but calls no defineStore()" : `declares ${t} stores`,
|
|
391
391
|
fix: "a store file defines exactly ONE store — the SSR seed pass and devtools address stores by name, so two in a file makes both harder to find and neither easier to reason about"
|
|
392
392
|
});
|
|
393
393
|
let n = [...d.get(e)?.keys() ?? []].filter((e) => P.has(e)).sort();
|
|
394
|
-
n.length > 0 &&
|
|
394
|
+
n.length > 0 && s.push({
|
|
395
395
|
rule: "store/mirrors-server-state",
|
|
396
|
-
file:
|
|
396
|
+
file: c(e),
|
|
397
397
|
severity: "error",
|
|
398
398
|
detail: `reads server state here: ${n.join(", ")}`,
|
|
399
399
|
fix: "a store holds CLIENT state. A subscription is already live server state; copying it into a store gives you a second copy that does not live, and the page then shows the stale one — a bug that reads as \"reactivity is broken\". Read the subscription where you render it"
|
|
400
400
|
});
|
|
401
401
|
}
|
|
402
|
-
if (t !== "tracking" && !
|
|
402
|
+
if (t !== "tracking" && !o) {
|
|
403
403
|
let t = [...d.get(e)?.keys() ?? []].filter((e) => N.has(e)).sort();
|
|
404
|
-
t.length > 0 &&
|
|
404
|
+
t.length > 0 && s.push({
|
|
405
405
|
rule: "tracking/outside-tracking-file",
|
|
406
|
-
file:
|
|
406
|
+
file: c(e),
|
|
407
407
|
severity: "error",
|
|
408
408
|
detail: `calls ${t.join(", ")} outside a *.tracking.ts`,
|
|
409
409
|
fix: "move the defineTracking(...) spec into a *.tracking.ts and import it here. The event catalogue — names, property bags, the decisions about what personal data goes out — belongs in one place you can list; calling useTracking with a spec from there is fine"
|
|
410
410
|
});
|
|
411
411
|
}
|
|
412
|
-
if (k.find((e) => e.id === t)?.needsTest === !0 && !
|
|
412
|
+
if (k.find((e) => e.id === t)?.needsTest === !0 && !o) {
|
|
413
413
|
let t = e.replace(/\.tsx?$/, ""), n = e.endsWith("x") ? "tsx" : "ts";
|
|
414
414
|
["test", "spec"].flatMap((e) => [`${t}.${e}.ts`, `${t}.${e}.tsx`]).some((e) => {
|
|
415
415
|
try {
|
|
@@ -417,17 +417,17 @@ var T = ".voltro-vendored", E = (e, t) => {
|
|
|
417
417
|
} catch {
|
|
418
418
|
return !1;
|
|
419
419
|
}
|
|
420
|
-
}) ||
|
|
420
|
+
}) || s.push({
|
|
421
421
|
rule: "convention/missing-test",
|
|
422
|
-
file:
|
|
422
|
+
file: c(e),
|
|
423
423
|
severity: "warn",
|
|
424
424
|
detail: "no test beside it",
|
|
425
|
-
fix: `add ${
|
|
425
|
+
fix: `add ${c(t)}.test.${n} — the name is derivable, so write it with the file. A shallow test earns its place: what it buys is that something MOUNTS the component, and a render loop, a crashing effect or a missing provider is invisible until then. One app wrote 251 of these and the first run found a render loop that made a page take 423 s and exhaust the heap — in a browser it had looked usable`
|
|
426
426
|
});
|
|
427
427
|
}
|
|
428
428
|
}
|
|
429
|
-
return
|
|
430
|
-
findings:
|
|
429
|
+
return s.sort((e, t) => e.file === t.file ? e.rule.localeCompare(t.rule) : e.file.localeCompare(t.file)), {
|
|
430
|
+
findings: s,
|
|
431
431
|
declared: g,
|
|
432
432
|
scanned: r.length,
|
|
433
433
|
vendored: n
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { createHash as e } from "node:crypto";
|
|
2
|
+
//#region src/fontPipeline.ts
|
|
3
|
+
var t = (e) => e.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, ""), n, r = !1, i = async () => {
|
|
4
|
+
if (n !== void 0) return n;
|
|
5
|
+
try {
|
|
6
|
+
let e = await import("fontkit");
|
|
7
|
+
n = e.default ?? e;
|
|
8
|
+
} catch {
|
|
9
|
+
n = null;
|
|
10
|
+
}
|
|
11
|
+
return n;
|
|
12
|
+
}, a, o = !1, s = async () => {
|
|
13
|
+
if (a !== void 0) return a;
|
|
14
|
+
try {
|
|
15
|
+
let e = await import("subset-font");
|
|
16
|
+
a = e.default ?? e;
|
|
17
|
+
} catch {
|
|
18
|
+
a = null;
|
|
19
|
+
}
|
|
20
|
+
return a;
|
|
21
|
+
}, c = (e, t) => {
|
|
22
|
+
if (e === "fontkit") {
|
|
23
|
+
if (r) return;
|
|
24
|
+
r = !0, t.warn("font pipeline: fontkit is not loadable — fonts still self-host with @font-face + preload, but the size-adjusted fallback metrics (the CLS guard) are SKIPPED. It ships as an optional dependency of @voltro/cli; if your installer omitted optional deps, run `pnpm add -D fontkit`.");
|
|
25
|
+
} else {
|
|
26
|
+
if (o) return;
|
|
27
|
+
o = !0, t.warn("font pipeline: subset-font is not loadable — declared `subsets:` are SKIPPED and the full font files ship. Run `pnpm add -D subset-font` (optional dependency of @voltro/cli that your installer omitted).");
|
|
28
|
+
}
|
|
29
|
+
}, l = {
|
|
30
|
+
Arial: {
|
|
31
|
+
unitsPerEm: 2048,
|
|
32
|
+
ascent: 1854,
|
|
33
|
+
descent: 434,
|
|
34
|
+
lineGap: 67,
|
|
35
|
+
xWidthAvg: 913
|
|
36
|
+
},
|
|
37
|
+
"Times New Roman": {
|
|
38
|
+
unitsPerEm: 2048,
|
|
39
|
+
ascent: 1825,
|
|
40
|
+
descent: 443,
|
|
41
|
+
lineGap: 87,
|
|
42
|
+
xWidthAvg: 832
|
|
43
|
+
}
|
|
44
|
+
}, u = "etaoin shrdlu cmfwyp vbgkqj xz", d = async (e) => {
|
|
45
|
+
let t = await i();
|
|
46
|
+
if (t === null) return null;
|
|
47
|
+
try {
|
|
48
|
+
let n = t.create(Buffer.from(e)), r = n.layout(u).glyphs.map((e) => e.advanceWidth).filter((e) => Number.isFinite(e) && e > 0), i = r.length > 0 ? r.reduce((e, t) => e + t, 0) / r.length : 0;
|
|
49
|
+
return {
|
|
50
|
+
unitsPerEm: n.unitsPerEm,
|
|
51
|
+
ascent: Math.abs(n.ascent),
|
|
52
|
+
descent: Math.abs(n.descent),
|
|
53
|
+
lineGap: Math.abs(n.lineGap ?? 0),
|
|
54
|
+
xWidthAvg: i
|
|
55
|
+
};
|
|
56
|
+
} catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}, f = (e) => `${(e * 100).toFixed(4).replace(/\.?0+$/, "")}%`, p = (e, t, n) => {
|
|
60
|
+
let r = l[n];
|
|
61
|
+
if (t.xWidthAvg <= 0 || t.unitsPerEm <= 0) return null;
|
|
62
|
+
let i = t.xWidthAvg / t.unitsPerEm / (r.xWidthAvg / r.unitsPerEm);
|
|
63
|
+
if (!Number.isFinite(i) || i <= 0) return null;
|
|
64
|
+
let a = t.ascent / t.unitsPerEm / i, o = t.descent / t.unitsPerEm / i, s = t.lineGap / t.unitsPerEm / i;
|
|
65
|
+
return [
|
|
66
|
+
"@font-face {",
|
|
67
|
+
` font-family: '${e} Fallback';`,
|
|
68
|
+
` src: local('${n}');`,
|
|
69
|
+
` size-adjust: ${f(i)};`,
|
|
70
|
+
` ascent-override: ${f(a)};`,
|
|
71
|
+
` descent-override: ${f(o)};`,
|
|
72
|
+
` line-gap-override: ${f(s)};`,
|
|
73
|
+
"}"
|
|
74
|
+
].join("\n");
|
|
75
|
+
}, m = {
|
|
76
|
+
latin: "U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD",
|
|
77
|
+
"latin-ext": "U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF"
|
|
78
|
+
}, h = (e) => {
|
|
79
|
+
let t = [];
|
|
80
|
+
for (let n of e.split(",")) {
|
|
81
|
+
let e = /U\+([0-9A-F]{1,6})(?:-([0-9A-F]{1,6}))?/i.exec(n.trim());
|
|
82
|
+
if (!e) continue;
|
|
83
|
+
let r = parseInt(e[1], 16), i = e[2] === void 0 ? r : parseInt(e[2], 16);
|
|
84
|
+
for (let e = r; e <= i && e <= 65535; e += 1) t.push(String.fromCharCode(e));
|
|
85
|
+
}
|
|
86
|
+
return t.join("");
|
|
87
|
+
}, g = async (e, t) => {
|
|
88
|
+
let n = await s();
|
|
89
|
+
if (n === null) return null;
|
|
90
|
+
try {
|
|
91
|
+
let r = await n(Buffer.from(e), h(m[t]), { targetFormat: "woff2" });
|
|
92
|
+
return new Uint8Array(r);
|
|
93
|
+
} catch {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
}, _ = (t) => e("sha256").update(t).digest("hex").slice(0, 12), v = (e) => e.endsWith(".woff2") ? "woff2" : e.endsWith(".woff") ? "woff" : e.endsWith(".otf") ? "opentype" : "truetype", y = async (e, n, r = {}) => {
|
|
97
|
+
let a = r.baseUrl ?? "/", o = [], s = [], c = [], l = [], u = /* @__PURE__ */ new Set();
|
|
98
|
+
for (let r of e) {
|
|
99
|
+
let e = r.display ?? "swap", f = r.fallback ?? "Arial", h = null, y = !0;
|
|
100
|
+
for (let t of r.src) {
|
|
101
|
+
let l = await n(t.path);
|
|
102
|
+
h === null && (h = await d(l), h === null && await i() === null && u.add("fontkit"));
|
|
103
|
+
let f = t.weight ?? 400, p = t.style ?? "normal", b = (t, n, i) => {
|
|
104
|
+
let l = n === "woff2" ? "woff2" : n === "woff" ? "woff" : n === "opentype" ? "otf" : "ttf", u = `assets/fonts/${_(t)}.${l}`;
|
|
105
|
+
s.push({
|
|
106
|
+
fileName: u,
|
|
107
|
+
bytes: t,
|
|
108
|
+
preload: y
|
|
109
|
+
}), y && c.push(`${a}${u}`), y = !1, o.push([
|
|
110
|
+
"@font-face {",
|
|
111
|
+
` font-family: '${r.family}';`,
|
|
112
|
+
` font-style: ${p};`,
|
|
113
|
+
` font-weight: ${f};`,
|
|
114
|
+
` font-display: ${e};`,
|
|
115
|
+
` src: url('${a}${u}') format('${n}');`,
|
|
116
|
+
...i === void 0 ? [] : [` unicode-range: ${i};`],
|
|
117
|
+
"}"
|
|
118
|
+
].join("\n"));
|
|
119
|
+
};
|
|
120
|
+
if (r.subsets !== void 0 && r.subsets.length > 0) {
|
|
121
|
+
let e = !1;
|
|
122
|
+
for (let t of r.subsets) {
|
|
123
|
+
let n = await g(l, t);
|
|
124
|
+
if (n === null) {
|
|
125
|
+
u.add("subset-font");
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
e = !0, b(n, "woff2", m[t]);
|
|
129
|
+
}
|
|
130
|
+
e || b(l, v(t.path));
|
|
131
|
+
} else b(l, v(t.path));
|
|
132
|
+
}
|
|
133
|
+
if (h !== null) {
|
|
134
|
+
let e = p(r.family, h, f);
|
|
135
|
+
e !== null && o.push(e);
|
|
136
|
+
}
|
|
137
|
+
let b = `--font-${t(r.family)}`;
|
|
138
|
+
l.push({
|
|
139
|
+
family: r.family,
|
|
140
|
+
variable: b
|
|
141
|
+
}), o.push(`:root { ${b}: '${r.family}', '${r.family} Fallback', ${f === "Arial" ? "Arial, sans-serif" : "'Times New Roman', serif"}; }`);
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
css: o.join("\n"),
|
|
145
|
+
files: s,
|
|
146
|
+
preloads: c,
|
|
147
|
+
variables: l,
|
|
148
|
+
warnings: [...u]
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
//#endregion
|
|
152
|
+
export { _ as a, h as c, c as d, t as i, d as l, y as n, i as o, p as r, s, m as t, g as u };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as e } from "./appModuleLoader-C9r9mxZt.js";
|
|
2
2
|
import { n as t } from "./declaredSchemaGates-BlcwObhb.js";
|
|
3
|
-
import {
|
|
3
|
+
import { A as n, M as r, O as i, S as a, o } from "./fileConventions-DASGEmj-.js";
|
|
4
4
|
import { basename as s, join as c } from "node:path";
|
|
5
5
|
import { existsSync as l, promises as u } from "node:fs";
|
|
6
6
|
import { pathToFileURL as d } from "node:url";
|
|
@@ -407,20 +407,20 @@ var we = [
|
|
|
407
407
|
connections: r.map((e) => `${e.definition.id} (${e.definition.kind})`),
|
|
408
408
|
files: r.map((e) => He(s(e.file)))
|
|
409
409
|
}), r;
|
|
410
|
-
}, J = (e) =>
|
|
411
|
-
let t = !1,
|
|
410
|
+
}, J = (e) => o.test(e) || a.test(e), Y = async (e) => {
|
|
411
|
+
let t = !1, a = !1, o = !1, s = !1, l = !1, d = async (e) => {
|
|
412
412
|
let f = await u.readdir(e, { withFileTypes: !0 }).catch(() => []);
|
|
413
413
|
for (let u of f) if (u.isDirectory()) {
|
|
414
414
|
if (u.name === "node_modules" || u.name === "dist" || u.name === ".framework" || u.name.startsWith(".")) continue;
|
|
415
415
|
await d(c(e, u.name));
|
|
416
416
|
} else {
|
|
417
417
|
let e = u.name;
|
|
418
|
-
(
|
|
418
|
+
(r.test(e) || i.test(e)) && (t = !0), J(e) && (a = !0), n.test(e) && (o = !0), W.test(e) && (s = !0), q.test(e) && (l = !0);
|
|
419
419
|
}
|
|
420
420
|
};
|
|
421
421
|
return await d(e), {
|
|
422
422
|
workflows: t,
|
|
423
|
-
schedules:
|
|
423
|
+
schedules: a,
|
|
424
424
|
webhooks: o,
|
|
425
425
|
agents: s,
|
|
426
426
|
connections: l
|