@popcraft/cli 0.5.0 → 0.6.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.
Files changed (2) hide show
  1. package/dist/popcraft.mjs +130 -289
  2. package/package.json +2 -2
package/dist/popcraft.mjs CHANGED
@@ -724,10 +724,11 @@ var init_openapi = __esm({
724
724
  connections: arr(obj({ id: str, provider: str, authKind: { type: "string", enum: ["oauth", "token"] }, account: { ...str, description: "The account at the provider" }, scopes: arr(str), createdAt: iso, lastUsedAt: { type: ["string", "null"], format: "date-time" } }, ["id", "provider", "authKind", "account", "createdAt"]))
725
725
  }, ["manifest", "available", "connections"]),
726
726
  Resource: obj({ id: str, name: str, detail: str }, ["id", "name"]),
727
+ Candidate: obj({ connectionId: str, provider: str, account: str, target: arr(ref("Resource")) }, ["connectionId", "provider", "account", "target"]),
727
728
  ResourceLevel: obj({ level: { oneOf: [{ type: "null" }, obj({ id: str, label: str }, ["id", "label"])], description: "The level these are: owner, repo, team, project. null when the path is complete" }, resources: arr(ref("Resource")), canCreate: bool }, ["level", "resources", "canCreate"]),
728
729
  DestinationDeploy: obj({ version: int, at: iso, url: str, ref: { ...str, description: "A commit sha or a deployment id" }, status: { type: "string", enum: ["ready", "building", "failed"] }, error: str }, ["version", "at", "url", "ref", "status"]),
729
730
  Destination: obj({ id: str, capability: { type: "string", enum: ["repo", "deploy"] }, target: arr(obj({ id: str, name: str }, ["id", "name"])), lastDeploy: { oneOf: [{ type: "null" }, ref("DestinationDeploy")] }, createdAt: iso, connection: obj({ id: str, provider: str, account: str }, ["id", "provider", "account"]) }, ["id", "capability", "target", "lastDeploy", "connection"]),
730
- DestinationCreate: obj({ connectionId: str, capability: { type: "string", enum: ["repo", "deploy"] }, target: { ...arr(obj({ id: str, name: str }, ["id"])), description: "One resource per level, outermost first: [owner, repository] or [team, project]" } }, ["connectionId", "capability", "target"]),
731
+ DestinationCreate: obj({ connectionId: str, capability: { type: "string", enum: ["repo", "deploy"] }, target: { ...arr(obj({ id: str, name: str }, ["id"])), description: "One resource per level, outermost first: [owner, repository] or [team, project]. Leave out with `create`" }, create: { type: "boolean", enum: [true], description: "Make a new one named after the site instead of choosing `target`" }, provider: { ...str, description: "With `create`: whose account (github, vercel), when `connectionId` is not given" } }, ["capability"]),
731
732
  SiteDatabase: obj({ database: { oneOf: [{ type: "null" }, obj({ target: arr(obj({ id: str, name: str }, ["id", "name"])), connection: obj({ id: str, provider: str, account: str }, ["id", "provider", "account"]), attachedAt: iso }, ["target", "connection", "attachedAt"])], description: "null when the site has no database" } }, ["database"]),
732
733
  Submission: obj({ id: str, form: { ...str, description: "The form's name" }, data: { type: "object", additionalProperties: str, description: "The fields as sent" }, createdAt: iso }, ["id", "form", "data", "createdAt"]),
733
734
  IntegrationList: obj({ integrations: arr(ref("Integration")), manages: { ...bool, description: "Whether you can connect and disconnect accounts (workspace owners and admins)" } }, ["integrations", "manages"]),
@@ -931,6 +932,12 @@ Lists are paged: follow \`nextCursor\` (passing it as \`?cursor=\`) until it is
931
932
  parameters: [id("id", "Workspace id (from `GET /me`)")]
932
933
  })
933
934
  },
935
+ "/workspaces/{id}/integrations/candidates": {
936
+ get: op("Integrations", "Every place for one use, across connected accounts", "integrations:read", ok(obj({ candidates: arr(ref("Candidate")) }, ["candidates"])), {
937
+ description: "Every database, repository or hosting project the workspace's connected accounts hold, as one list (each a complete `target` inside a connection, ready for attaching or adding). The last-used account's come first; a large account is cut short, and the list is cached for a minute.",
938
+ parameters: [id("id", "Workspace id (from `GET /me`)"), query("capability", { type: "string", enum: ["repo", "deploy", "database"] }, "What the place is for", true)]
939
+ })
940
+ },
934
941
  "/integrations/connections/{id}/resources": {
935
942
  get: op("Integrations", "What a connected account holds, one level at a time", "integrations:read", ok(ref("ResourceLevel")), {
936
943
  description: "A connection is an account: it holds several repositories, projects or databases. Lists the level after `path` (omit `path` for the outermost).",
@@ -940,7 +947,7 @@ Lists are paged: follow \`nextCursor\` (passing it as \`?cursor=\`) until it is
940
947
  "/files/{key}/site/destinations": {
941
948
  get: op("Sites", "Where the site also goes", "files:read", ok(obj({ destinations: arr(ref("Destination")) }, ["destinations"])), { description: "The repositories and hosting projects this file's site is sent to, with what was last sent.", parameters: [key] }),
942
949
  post: op("Sites", "Add a destination", "sites:publish", null, {
943
- description: "Choose a repository (`repo`) or a hosting project (`deploy`) inside one of the workspace's connected accounts. Every level of `target` is checked against the account.",
950
+ description: "Choose a repository (`repo`) or a hosting project (`deploy`) inside one of the workspace's connected accounts. Every level of `target` is checked against the account. Or send `create: true` with `capability` (and `provider` or `connectionId`) to make a new one named after the site.",
944
951
  parameters: [key],
945
952
  requestBody: { required: true, content: { "application/json": { schema: ref("DestinationCreate") } } },
946
953
  responses: { "201": ok(obj({ destination: ref("Destination") }, ["destination"]), "Added"), "404": { description: "The connection, or a level of the target, was not found", content: errBody } }
@@ -957,9 +964,9 @@ Lists are paged: follow \`nextCursor\` (passing it as \`?cursor=\`) until it is
957
964
  "/files/{key}/site/database": {
958
965
  get: op("Sites", "The database behind the site", "files:read", ok(ref("SiteDatabase")), { description: "Which database of the user's own the site keeps its form submissions in. The connection string is never returned.", parameters: [key] }),
959
966
  put: op("Sites", "Attach a database", "sites:publish", ok(ref("SiteDatabase")), {
960
- description: "Use a database inside one of the workspace's connected accounts (`target`: organization, project, database for Neon). The site's table (`popcraft_submissions`) is made there if it is not.",
967
+ description: "Use a database inside one of the workspace's connected accounts (`target`: the levels its integration lists, e.g. organization, project, database for Neon; organization, project for Supabase). Or send `create: true` (with `provider` or `connectionId`, else the account last used) to make a new one named after the site. The site's tables are made there if they are not.",
961
968
  parameters: [key],
962
- requestBody: { required: true, content: { "application/json": { schema: obj({ connectionId: str, target: arr(obj({ id: str, name: str }, ["id"])) }, ["connectionId", "target"]) } } },
969
+ requestBody: { required: true, content: { "application/json": { schema: { oneOf: [obj({ connectionId: str, target: arr(obj({ id: str, name: str }, ["id"])) }, ["connectionId", "target"]), obj({ create: { type: "boolean", enum: [true] }, provider: str, connectionId: str }, ["create"])] } } } },
963
970
  responses: { "404": { description: "The connection, or a level of the target, was not found", content: errBody }, "502": { description: "The provider refused", content: errBody } }
964
971
  }),
965
972
  delete: op("Sites", "Detach the database", "sites:publish", ok(ref("SiteDatabase")), { description: "The site stops keeping submissions. What is in the database stays.", parameters: [key] })
@@ -1166,7 +1173,7 @@ function operations(spec = openapi) {
1166
1173
  }
1167
1174
  async function call(target2, method, path, opts = {}) {
1168
1175
  const qs = new URLSearchParams(opts.query ?? {}).toString();
1169
- const headers = { "user-agent": `popcraft-cli/${"0.5.0"}`, ...opts.headers };
1176
+ const headers = { "user-agent": `popcraft-cli/${"0.6.0"}`, ...opts.headers };
1170
1177
  if (target2.token) headers.authorization = `Bearer ${target2.token}`;
1171
1178
  if (opts.contentType) headers["content-type"] = opts.contentType;
1172
1179
  try {
@@ -32521,19 +32528,14 @@ var init_en2 = __esm({
32521
32528
  "designPanel.visibilityFollowsAVariable": "Visibility follows a variable",
32522
32529
  "designPanel.webP": "WebP",
32523
32530
  "designPanel.wrap": "Wrap",
32524
- "destinations.account": "{name} \xB7 {account}",
32525
- "destinations.accountLabel": "Account",
32526
32531
  "destinations.add": "Add destination",
32527
- "destinations.addThis": "Add",
32528
32532
  "destinations.building": "Building",
32529
32533
  "destinations.cancel": "Cancel",
32530
32534
  "destinations.commit": "Version {n} \xB7 commit {ref}",
32531
- "destinations.connectFirst": "Connect a GitHub or Vercel account first.",
32532
32535
  "destinations.deployment": "Version {n} \xB7 deployment",
32533
32536
  "destinations.failed": "Something went wrong. Try again.",
32534
- "destinations.none": "Send this site to a repository of yours on GitHub, or deploy it to a project of yours on Vercel.",
32537
+ "destinations.none": "Send this site to a repository of yours, or deploy it to a hosting project of yours: make one in a click, or use one you have.",
32535
32538
  "destinations.notSent": "Nothing sent yet",
32536
- "destinations.openIntegrations": "Integrations\u2026",
32537
32539
  "destinations.place": "{name} \xB7 {target}",
32538
32540
  "destinations.publishFirst": "Publish first",
32539
32541
  "destinations.remove": "Remove destination",
@@ -33878,6 +33880,17 @@ var init_en2 = __esm({
33878
33880
  "pixelToolbar.tileRightClickErasesPick": "Tile #{tileIndex} \xB7 Right-click erases (pick tiles in the design panel)",
33879
33881
  "pixelToolbar.tileStampT": "Tile stamp (T)",
33880
33882
  "pixelToolbar.tolerance": "Tolerance",
33883
+ "placePicker.askManager": "Ask a workspace owner or admin to connect {providers}.",
33884
+ "placePicker.connect": "Connect {provider}",
33885
+ "placePicker.connecting": "Connecting\u2026",
33886
+ "placePicker.create": "New {provider} {capability, select, database {database} repo {repository} deploy {project} other {place}}",
33887
+ "placePicker.creating": "Making it\u2026",
33888
+ "placePicker.empty": "Nothing found",
33889
+ "placePicker.existing": "Use one you have",
33890
+ "placePicker.failed": "Something went wrong. Try again.",
33891
+ "placePicker.loading": "Reading your accounts\u2026",
33892
+ "placePicker.place": "{provider} \xB7 {place}",
33893
+ "placePicker.search": "Or find one you have: {capability, select, database {a database} repo {a repository} deploy {a project} other {a repository or project}}\u2026",
33881
33894
  "planBadge.free": "Free",
33882
33895
  "planBadge.freePlan": "Free plan",
33883
33896
  "planDialog.aICredits": "AI credits",
@@ -34388,12 +34401,6 @@ var init_en2 = __esm({
34388
34401
  "resizeDialog.custom": "Custom\u2026",
34389
34402
  "resizeDialog.magicResize": "Magic resize",
34390
34403
  "resizeDialog.size": "Size",
34391
- "resourcePicker.choose": "Choose\u2026",
34392
- "resourcePicker.create": "Create",
34393
- "resourcePicker.createNew": "Create new\u2026",
34394
- "resourcePicker.failed": "Could not read the account. Try again.",
34395
- "resourcePicker.newName": "Name",
34396
- "resourcePicker.option": "{name} \xB7 {detail}",
34397
34404
  "restoreAccount.back": "Your account is back",
34398
34405
  "restoreAccount.backBody": "Your files, libraries, templates and plugins are where you left them. Teams need to invite you again.",
34399
34406
  "restoreAccount.couldNotRestore": "Your account could not be restored. Try again.",
@@ -34602,19 +34609,15 @@ var init_en2 = __esm({
34602
34609
  "showAdvanceControl.whenAnimationEnds": "When animation ends",
34603
34610
  "sidebar.overview": "Overview",
34604
34611
  "sidebarResizer.dragToResizeDoubleClick": "Drag to resize \xB7 double-click to reset",
34605
- "siteDatabase.attach": "Attach a database",
34606
- "siteDatabase.attaching": "Attaching\u2026",
34607
- "siteDatabase.attachThis": "Attach",
34608
34612
  "siteDatabase.close": "Close",
34609
- "siteDatabase.connectFirst": "Connect a Neon account first.",
34610
34613
  "siteDatabase.detach": "Detach",
34611
34614
  "siteDatabase.failed": "Something went wrong. Try again.",
34612
34615
  "siteDatabase.form": "Form",
34613
34616
  "siteDatabase.keeps": "The site's forms are saved here",
34614
34617
  "siteDatabase.loading": "Loading\u2026",
34615
- "siteDatabase.needsDatabase": "This site has accounts, and they will not work yet. Attach a database below, then turn on Visitors can sign in.",
34618
+ "siteDatabase.needsDatabase": "This site has accounts, and they will not work yet. Give it a database below: sign-in is turned on with it.",
34616
34619
  "siteDatabase.needsSignIn": "This site has accounts, and they will not work yet. Turn on Visitors can sign in.",
34617
- "siteDatabase.none": "Keep what the site's forms are sent in a database of your own.",
34620
+ "siteDatabase.none": "Keep what the site's forms are sent in a database of your own: make one in a click, or use one you have.",
34618
34621
  "siteDatabase.noSubmissions": "Nothing has been sent yet.",
34619
34622
  "siteDatabase.signIn": "Visitors can sign in",
34620
34623
  "siteDatabase.signInOff": "Turn on for a site with accounts: sign-up and sign-in forms, pages for signed-in visitors, and lists that are each visitor's own.",
@@ -36593,19 +36596,14 @@ var require_es = __commonJS({
36593
36596
  "designPanel.visibilityFollowsAVariable": "La visibilidad sigue una variable",
36594
36597
  "designPanel.webP": "WebP",
36595
36598
  "designPanel.wrap": "Ajustar",
36596
- "destinations.account": "{name} \xB7 {account}",
36597
- "destinations.accountLabel": "Cuenta",
36598
36599
  "destinations.add": "A\xF1adir destino",
36599
- "destinations.addThis": "A\xF1adir",
36600
36600
  "destinations.building": "Compilando",
36601
36601
  "destinations.cancel": "Cancelar",
36602
36602
  "destinations.commit": "Versi\xF3n {n} \xB7 commit {ref}",
36603
- "destinations.connectFirst": "Conecta primero una cuenta de GitHub o Vercel.",
36604
36603
  "destinations.deployment": "Versi\xF3n {n} \xB7 despliegue",
36605
36604
  "destinations.failed": "Algo sali\xF3 mal. Int\xE9ntalo de nuevo.",
36606
36605
  "destinations.none": "Env\xEDa este sitio a un repositorio tuyo en GitHub, o despli\xE9galo en un proyecto tuyo en Vercel.",
36607
36606
  "destinations.notSent": "Nada enviado a\xFAn",
36608
- "destinations.openIntegrations": "Integraciones\u2026",
36609
36607
  "destinations.place": "{name} \xB7 {target}",
36610
36608
  "destinations.publishFirst": "Publica primero",
36611
36609
  "destinations.remove": "Eliminar destino",
@@ -38448,12 +38446,6 @@ var require_es = __commonJS({
38448
38446
  "resizeDialog.custom": "Personalizado\u2026",
38449
38447
  "resizeDialog.magicResize": "Redimensionado m\xE1gico",
38450
38448
  "resizeDialog.size": "Tama\xF1o",
38451
- "resourcePicker.choose": "Elegir\u2026",
38452
- "resourcePicker.create": "Crear",
38453
- "resourcePicker.createNew": "Crear nuevo\u2026",
38454
- "resourcePicker.failed": "No se pudo leer la cuenta. Int\xE9ntalo de nuevo.",
38455
- "resourcePicker.newName": "Nombre",
38456
- "resourcePicker.option": "{name} \xB7 {detail}",
38457
38449
  "restoreAccount.back": "Tu cuenta ha sido recuperada",
38458
38450
  "restoreAccount.backBody": "Tus archivos, bibliotecas, plantillas y plugins est\xE1n donde los dejaste. Los equipos deber\xE1n invitarte de nuevo.",
38459
38451
  "restoreAccount.couldNotRestore": "No se pudo restaurar tu cuenta. Int\xE9ntalo de nuevo.",
@@ -38662,11 +38654,7 @@ var require_es = __commonJS({
38662
38654
  "showAdvanceControl.whenAnimationEnds": "Cuando la animaci\xF3n termina",
38663
38655
  "sidebar.overview": "Resumen",
38664
38656
  "sidebarResizer.dragToResizeDoubleClick": "Arrastra para redimensionar \xB7 doble clic para restablecer",
38665
- "siteDatabase.attach": "Conectar una base de datos",
38666
- "siteDatabase.attaching": "Conectando\u2026",
38667
- "siteDatabase.attachThis": "Conectar",
38668
38657
  "siteDatabase.close": "Cerrar",
38669
- "siteDatabase.connectFirst": "Conecta una cuenta de Neon primero.",
38670
38658
  "siteDatabase.detach": "Desconectar",
38671
38659
  "siteDatabase.failed": "Algo sali\xF3 mal. Int\xE9ntalo de nuevo.",
38672
38660
  "siteDatabase.form": "Formulario",
@@ -40652,19 +40640,14 @@ var require_fr = __commonJS({
40652
40640
  "designPanel.visibilityFollowsAVariable": "La visibilit\xE9 suit une variable",
40653
40641
  "designPanel.webP": "WebP",
40654
40642
  "designPanel.wrap": "Habillage",
40655
- "destinations.account": "{name} \xB7 {account}",
40656
- "destinations.accountLabel": "Compte",
40657
40643
  "destinations.add": "Ajouter une destination",
40658
- "destinations.addThis": "Ajouter",
40659
40644
  "destinations.building": "Construction",
40660
40645
  "destinations.cancel": "Annuler",
40661
40646
  "destinations.commit": "Version {n} \xB7 commit {ref}",
40662
- "destinations.connectFirst": "Connectez d\u2019abord un compte GitHub ou Vercel.",
40663
40647
  "destinations.deployment": "Version {n} \xB7 d\xE9ploiement",
40664
40648
  "destinations.failed": "Une erreur est survenue. Veuillez r\xE9essayer.",
40665
40649
  "destinations.none": "Envoyez ce site vers l\u2019un de vos d\xE9p\xF4ts sur GitHub, ou d\xE9ployez-le vers l\u2019un de vos projets sur Vercel.",
40666
40650
  "destinations.notSent": "Rien n\u2019a encore \xE9t\xE9 envoy\xE9",
40667
- "destinations.openIntegrations": "Int\xE9grations\u2026",
40668
40651
  "destinations.place": "{name} \xB7 {target}",
40669
40652
  "destinations.publishFirst": "Publiez d\u2019abord",
40670
40653
  "destinations.remove": "Supprimer la destination",
@@ -42507,12 +42490,6 @@ var require_fr = __commonJS({
42507
42490
  "resizeDialog.custom": "Personnalis\xE9\u2026",
42508
42491
  "resizeDialog.magicResize": "Redimensionnement magique",
42509
42492
  "resizeDialog.size": "Taille",
42510
- "resourcePicker.choose": "Choisir\u2026",
42511
- "resourcePicker.create": "Cr\xE9er",
42512
- "resourcePicker.createNew": "Cr\xE9er un nouveau\u2026",
42513
- "resourcePicker.failed": "Impossible de lire le compte. Veuillez r\xE9essayer.",
42514
- "resourcePicker.newName": "Nom",
42515
- "resourcePicker.option": "{name} \xB7 {detail}",
42516
42493
  "restoreAccount.back": "Votre compte est de retour",
42517
42494
  "restoreAccount.backBody": "Vos fichiers, biblioth\xE8ques, mod\xE8les et plugins sont l\xE0 o\xF9 vous les avez laiss\xE9s. Les \xE9quipes devront vous inviter \xE0 nouveau.",
42518
42495
  "restoreAccount.couldNotRestore": "Votre compte n\u2019a pas pu \xEAtre restaur\xE9. Veuillez r\xE9essayer.",
@@ -42721,11 +42698,7 @@ var require_fr = __commonJS({
42721
42698
  "showAdvanceControl.whenAnimationEnds": "Quand l\u2019animation se termine",
42722
42699
  "sidebar.overview": "Aper\xE7u",
42723
42700
  "sidebarResizer.dragToResizeDoubleClick": "Faites glisser pour redimensionner \xB7 double-cliquez pour r\xE9initialiser",
42724
- "siteDatabase.attach": "Connecter une base de donn\xE9es",
42725
- "siteDatabase.attaching": "Connexion en cours\u2026",
42726
- "siteDatabase.attachThis": "Connecter",
42727
42701
  "siteDatabase.close": "Fermer",
42728
- "siteDatabase.connectFirst": "Connectez d\u2019abord un compte Neon.",
42729
42702
  "siteDatabase.detach": "D\xE9connecter",
42730
42703
  "siteDatabase.failed": "Une erreur est survenue. Veuillez r\xE9essayer.",
42731
42704
  "siteDatabase.form": "Formulaire",
@@ -44711,19 +44684,14 @@ var require_de = __commonJS({
44711
44684
  "designPanel.visibilityFollowsAVariable": "Sichtbarkeit folgt einer Variable",
44712
44685
  "designPanel.webP": "WebP",
44713
44686
  "designPanel.wrap": "Umbruch",
44714
- "destinations.account": "{name} \xB7 {account}",
44715
- "destinations.accountLabel": "Konto",
44716
44687
  "destinations.add": "Ziel hinzuf\xFCgen",
44717
- "destinations.addThis": "Hinzuf\xFCgen",
44718
44688
  "destinations.building": "Wird erstellt",
44719
44689
  "destinations.cancel": "Abbrechen",
44720
44690
  "destinations.commit": "Version {n} \xB7 Commit {ref}",
44721
- "destinations.connectFirst": "Verbinde zuerst ein GitHub- oder Vercel-Konto.",
44722
44691
  "destinations.deployment": "Version {n} \xB7 Bereitstellung",
44723
44692
  "destinations.failed": "Etwas ist schiefgelaufen. Versuche es erneut.",
44724
44693
  "destinations.none": "Sende diese Website an ein Repository von dir auf GitHub oder stelle sie in einem deiner Projekte auf Vercel bereit.",
44725
44694
  "destinations.notSent": "Noch nichts gesendet",
44726
- "destinations.openIntegrations": "Integrationen\u2026",
44727
44695
  "destinations.place": "{name} \xB7 {target}",
44728
44696
  "destinations.publishFirst": "Zuerst ver\xF6ffentlichen",
44729
44697
  "destinations.remove": "Ziel entfernen",
@@ -46566,12 +46534,6 @@ var require_de = __commonJS({
46566
46534
  "resizeDialog.custom": "Benutzerdefiniert\u2026",
46567
46535
  "resizeDialog.magicResize": "Magische Gr\xF6\xDFen\xE4nderung",
46568
46536
  "resizeDialog.size": "Gr\xF6\xDFe",
46569
- "resourcePicker.choose": "Ausw\xE4hlen\u2026",
46570
- "resourcePicker.create": "Erstellen",
46571
- "resourcePicker.createNew": "Neu erstellen\u2026",
46572
- "resourcePicker.failed": "Konto konnte nicht gelesen werden. Versuche es erneut.",
46573
- "resourcePicker.newName": "Name",
46574
- "resourcePicker.option": "{name} \xB7 {detail}",
46575
46537
  "restoreAccount.back": "Dein Konto ist wiederhergestellt",
46576
46538
  "restoreAccount.backBody": "Deine Dateien, Bibliotheken, Vorlagen und Plugins sind wieder da, wo du sie verlassen hast. Teams m\xFCssen dich erneut einladen.",
46577
46539
  "restoreAccount.couldNotRestore": "Dein Konto konnte nicht wiederhergestellt werden. Versuche es erneut.",
@@ -46780,11 +46742,7 @@ var require_de = __commonJS({
46780
46742
  "showAdvanceControl.whenAnimationEnds": "Wenn Animation endet",
46781
46743
  "sidebar.overview": "\xDCbersicht",
46782
46744
  "sidebarResizer.dragToResizeDoubleClick": "Zum Anpassen ziehen \xB7 Doppelklick zum Zur\xFCcksetzen",
46783
- "siteDatabase.attach": "Datenbank anh\xE4ngen",
46784
- "siteDatabase.attaching": "Wird angeh\xE4ngt\u2026",
46785
- "siteDatabase.attachThis": "Anh\xE4ngen",
46786
46745
  "siteDatabase.close": "Schlie\xDFen",
46787
- "siteDatabase.connectFirst": "Verbinde zuerst ein Neon-Konto.",
46788
46746
  "siteDatabase.detach": "Trennen",
46789
46747
  "siteDatabase.failed": "Etwas ist schiefgelaufen. Versuche es erneut.",
46790
46748
  "siteDatabase.form": "Formular",
@@ -48770,19 +48728,14 @@ var require_it = __commonJS({
48770
48728
  "designPanel.visibilityFollowsAVariable": "La visibilit\xE0 segue una variabile",
48771
48729
  "designPanel.webP": "WebP",
48772
48730
  "designPanel.wrap": "A capo",
48773
- "destinations.account": "{name} \xB7 {account}",
48774
- "destinations.accountLabel": "Account",
48775
48731
  "destinations.add": "Aggiungi destinazione",
48776
- "destinations.addThis": "Aggiungi",
48777
48732
  "destinations.building": "In costruzione",
48778
48733
  "destinations.cancel": "Annulla",
48779
48734
  "destinations.commit": "Versione {n} \xB7 commit {ref}",
48780
- "destinations.connectFirst": "Connetti prima un account GitHub o Vercel.",
48781
48735
  "destinations.deployment": "Versione {n} \xB7 deployment",
48782
48736
  "destinations.failed": "Qualcosa \xE8 andato storto. Riprova.",
48783
48737
  "destinations.none": "Invia questo sito a un tuo repository su GitHub, o distribuiscilo a un tuo progetto su Vercel.",
48784
48738
  "destinations.notSent": "Niente ancora inviato",
48785
- "destinations.openIntegrations": "Integrazioni\u2026",
48786
48739
  "destinations.place": "{name} \xB7 {target}",
48787
48740
  "destinations.publishFirst": "Pubblica prima",
48788
48741
  "destinations.remove": "Rimuovi destinazione",
@@ -50625,12 +50578,6 @@ var require_it = __commonJS({
50625
50578
  "resizeDialog.custom": "Personalizzato\u2026",
50626
50579
  "resizeDialog.magicResize": "Ridimensionamento magico",
50627
50580
  "resizeDialog.size": "Dimensione",
50628
- "resourcePicker.choose": "Scegli\u2026",
50629
- "resourcePicker.create": "Crea",
50630
- "resourcePicker.createNew": "Crea nuovo\u2026",
50631
- "resourcePicker.failed": "Impossibile leggere l\u2019account. Riprova.",
50632
- "resourcePicker.newName": "Nome",
50633
- "resourcePicker.option": "{name} \xB7 {detail}",
50634
50581
  "restoreAccount.back": "Il tuo account \xE8 stato ripristinato",
50635
50582
  "restoreAccount.backBody": "I tuoi file, librerie, modelli e plugin sono dove li avevi lasciati. I team dovranno invitarti di nuovo.",
50636
50583
  "restoreAccount.couldNotRestore": "Impossibile ripristinare il tuo account. Riprova.",
@@ -50839,11 +50786,7 @@ var require_it = __commonJS({
50839
50786
  "showAdvanceControl.whenAnimationEnds": "Quando l\u2019animazione finisce",
50840
50787
  "sidebar.overview": "Panoramica",
50841
50788
  "sidebarResizer.dragToResizeDoubleClick": "Trascina per ridimensionare \xB7 doppio clic per reimpostare",
50842
- "siteDatabase.attach": "Collega un database",
50843
- "siteDatabase.attaching": "Collegamento in corso\u2026",
50844
- "siteDatabase.attachThis": "Collega",
50845
50789
  "siteDatabase.close": "Chiudi",
50846
- "siteDatabase.connectFirst": "Collega prima un account Neon.",
50847
50790
  "siteDatabase.detach": "Scollega",
50848
50791
  "siteDatabase.failed": "Qualcosa \xE8 andato storto. Riprova.",
50849
50792
  "siteDatabase.form": "Modulo",
@@ -52829,19 +52772,14 @@ var require_pt_BR = __commonJS({
52829
52772
  "designPanel.visibilityFollowsAVariable": "Visibilidade segue uma vari\xE1vel",
52830
52773
  "designPanel.webP": "WebP",
52831
52774
  "designPanel.wrap": "Quebrar linha",
52832
- "destinations.account": "{name} \xB7 {account}",
52833
- "destinations.accountLabel": "Conta",
52834
52775
  "destinations.add": "Adicionar destino",
52835
- "destinations.addThis": "Adicionar",
52836
52776
  "destinations.building": "Compilando",
52837
52777
  "destinations.cancel": "Cancelar",
52838
52778
  "destinations.commit": "Vers\xE3o {n} \xB7 commit {ref}",
52839
- "destinations.connectFirst": "Conecte uma conta GitHub ou Vercel primeiro.",
52840
52779
  "destinations.deployment": "Vers\xE3o {n} \xB7 implanta\xE7\xE3o",
52841
52780
  "destinations.failed": "Algo deu errado. Tente novamente.",
52842
52781
  "destinations.none": "Envie este site para um de seus reposit\xF3rios no GitHub, ou implante-o em um de seus projetos no Vercel.",
52843
52782
  "destinations.notSent": "Nada enviado ainda",
52844
- "destinations.openIntegrations": "Integra\xE7\xF5es\u2026",
52845
52783
  "destinations.place": "{name} \xB7 {target}",
52846
52784
  "destinations.publishFirst": "Publique primeiro",
52847
52785
  "destinations.remove": "Remover destino",
@@ -54684,12 +54622,6 @@ var require_pt_BR = __commonJS({
54684
54622
  "resizeDialog.custom": "Personalizado\u2026",
54685
54623
  "resizeDialog.magicResize": "Redimensionamento m\xE1gico",
54686
54624
  "resizeDialog.size": "Tamanho",
54687
- "resourcePicker.choose": "Escolher\u2026",
54688
- "resourcePicker.create": "Criar",
54689
- "resourcePicker.createNew": "Criar novo\u2026",
54690
- "resourcePicker.failed": "N\xE3o foi poss\xEDvel ler a conta. Tente novamente.",
54691
- "resourcePicker.newName": "Nome",
54692
- "resourcePicker.option": "{name} \xB7 {detail}",
54693
54625
  "restoreAccount.back": "Sua conta est\xE1 de volta",
54694
54626
  "restoreAccount.backBody": "Seus arquivos, bibliotecas, modelos e plugins est\xE3o onde voc\xEA os deixou. As equipes precisar\xE3o convid\xE1-lo novamente.",
54695
54627
  "restoreAccount.couldNotRestore": "N\xE3o foi poss\xEDvel restaurar sua conta. Tente novamente.",
@@ -54898,11 +54830,7 @@ var require_pt_BR = __commonJS({
54898
54830
  "showAdvanceControl.whenAnimationEnds": "Quando a anima\xE7\xE3o terminar",
54899
54831
  "sidebar.overview": "Vis\xE3o geral",
54900
54832
  "sidebarResizer.dragToResizeDoubleClick": "Arraste para redimensionar \xB7 clique duas vezes para redefinir",
54901
- "siteDatabase.attach": "Anexar um banco de dados",
54902
- "siteDatabase.attaching": "Anexando\u2026",
54903
- "siteDatabase.attachThis": "Anexar",
54904
54833
  "siteDatabase.close": "Fechar",
54905
- "siteDatabase.connectFirst": "Conecte uma conta Neon primeiro.",
54906
54834
  "siteDatabase.detach": "Desanexar",
54907
54835
  "siteDatabase.failed": "Algo deu errado. Tente novamente.",
54908
54836
  "siteDatabase.form": "Formul\xE1rio",
@@ -56888,19 +56816,14 @@ var require_ja = __commonJS({
56888
56816
  "designPanel.visibilityFollowsAVariable": "\u53EF\u8996\u6027\u306F\u5909\u6570\u306B\u5F93\u3046",
56889
56817
  "designPanel.webP": "WebP",
56890
56818
  "designPanel.wrap": "\u6298\u308A\u8FD4\u3057",
56891
- "destinations.account": "{name} \xB7 {account}",
56892
- "destinations.accountLabel": "\u30A2\u30AB\u30A6\u30F3\u30C8",
56893
56819
  "destinations.add": "\u9001\u4FE1\u5148\u3092\u8FFD\u52A0",
56894
- "destinations.addThis": "\u8FFD\u52A0",
56895
56820
  "destinations.building": "\u69CB\u7BC9\u4E2D",
56896
56821
  "destinations.cancel": "\u30AD\u30E3\u30F3\u30BB\u30EB",
56897
56822
  "destinations.commit": "\u30D0\u30FC\u30B8\u30E7\u30F3 {n} \xB7 \u30B3\u30DF\u30C3\u30C8 {ref}",
56898
- "destinations.connectFirst": "\u307E\u305AGitHub\u307E\u305F\u306FVercel\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u63A5\u7D9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
56899
56823
  "destinations.deployment": "\u30D0\u30FC\u30B8\u30E7\u30F3 {n} \xB7 \u30C7\u30D7\u30ED\u30A4",
56900
56824
  "destinations.failed": "\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002",
56901
56825
  "destinations.none": "\u3053\u306E\u30B5\u30A4\u30C8\u3092GitHub\u306E\u30EA\u30DD\u30B8\u30C8\u30EA\u306B\u9001\u4FE1\u3059\u308B\u304B\u3001Vercel\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u30C7\u30D7\u30ED\u30A4\u3057\u307E\u3059\u3002",
56902
56826
  "destinations.notSent": "\u307E\u3060\u9001\u4FE1\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
56903
- "destinations.openIntegrations": "\u9023\u643A\u2026",
56904
56827
  "destinations.place": "{name} \xB7 {target}",
56905
56828
  "destinations.publishFirst": "\u307E\u305A\u516C\u958B\u3057\u3066\u304F\u3060\u3055\u3044",
56906
56829
  "destinations.remove": "\u9001\u4FE1\u5148\u3092\u524A\u9664",
@@ -58743,12 +58666,6 @@ var require_ja = __commonJS({
58743
58666
  "resizeDialog.custom": "\u30AB\u30B9\u30BF\u30E0\u2026",
58744
58667
  "resizeDialog.magicResize": "\u30DE\u30B8\u30C3\u30AF\u30EA\u30B5\u30A4\u30BA",
58745
58668
  "resizeDialog.size": "\u30B5\u30A4\u30BA",
58746
- "resourcePicker.choose": "\u9078\u629E\u2026",
58747
- "resourcePicker.create": "\u4F5C\u6210",
58748
- "resourcePicker.createNew": "\u65B0\u898F\u4F5C\u6210\u2026",
58749
- "resourcePicker.failed": "\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002",
58750
- "resourcePicker.newName": "\u540D\u524D",
58751
- "resourcePicker.option": "{name} \xB7 {detail}",
58752
58669
  "restoreAccount.back": "\u30A2\u30AB\u30A6\u30F3\u30C8\u304C\u5FA9\u5143\u3055\u308C\u307E\u3057\u305F",
58753
58670
  "restoreAccount.backBody": "\u30D5\u30A1\u30A4\u30EB\u3001\u30E9\u30A4\u30D6\u30E9\u30EA\u3001\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3001\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u4EE5\u524D\u306E\u5834\u6240\u306B\u3042\u308A\u307E\u3059\u3002\u30C1\u30FC\u30E0\u306B\u306F\u518D\u5EA6\u62DB\u5F85\u3057\u3066\u3082\u3089\u3046\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002",
58754
58671
  "restoreAccount.couldNotRestore": "\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u5FA9\u5143\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002",
@@ -58957,11 +58874,7 @@ var require_ja = __commonJS({
58957
58874
  "showAdvanceControl.whenAnimationEnds": "\u30A2\u30CB\u30E1\u30FC\u30B7\u30E7\u30F3\u7D42\u4E86\u6642",
58958
58875
  "sidebar.overview": "\u6982\u8981",
58959
58876
  "sidebarResizer.dragToResizeDoubleClick": "\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u30B5\u30A4\u30BA\u5909\u66F4 \xB7 \u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3067\u30EA\u30BB\u30C3\u30C8",
58960
- "siteDatabase.attach": "\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u3092\u63A5\u7D9A",
58961
- "siteDatabase.attaching": "\u63A5\u7D9A\u4E2D\u2026",
58962
- "siteDatabase.attachThis": "\u63A5\u7D9A",
58963
58877
  "siteDatabase.close": "\u9589\u3058\u308B",
58964
- "siteDatabase.connectFirst": "\u307E\u305ANeon\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u63A5\u7D9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
58965
58878
  "siteDatabase.detach": "\u5207\u65AD",
58966
58879
  "siteDatabase.failed": "\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002",
58967
58880
  "siteDatabase.form": "\u30D5\u30A9\u30FC\u30E0",
@@ -60947,19 +60860,14 @@ var require_ko = __commonJS({
60947
60860
  "designPanel.visibilityFollowsAVariable": "\uAC00\uC2DC\uC131: \uBCC0\uC218 \uB530\uB984",
60948
60861
  "designPanel.webP": "WebP",
60949
60862
  "designPanel.wrap": "\uC904 \uBC14\uAFC8",
60950
- "destinations.account": "{name} \xB7 {account}",
60951
- "destinations.accountLabel": "\uACC4\uC815",
60952
60863
  "destinations.add": "\uB300\uC0C1 \uCD94\uAC00",
60953
- "destinations.addThis": "\uCD94\uAC00",
60954
60864
  "destinations.building": "\uBE4C\uB4DC \uC911",
60955
60865
  "destinations.cancel": "\uCDE8\uC18C",
60956
60866
  "destinations.commit": "\uBC84\uC804 {n} \xB7 \uCEE4\uBC0B {ref}",
60957
- "destinations.connectFirst": "\uBA3C\uC800 GitHub \uB610\uB294 Vercel \uACC4\uC815\uC744 \uC5F0\uACB0\uD558\uC138\uC694.",
60958
60867
  "destinations.deployment": "\uBC84\uC804 {n} \xB7 \uBC30\uD3EC",
60959
60868
  "destinations.failed": "\uBB38\uC81C\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC138\uC694.",
60960
60869
  "destinations.none": "\uC774 \uC0AC\uC774\uD2B8\uB97C GitHub \uB9AC\uD3EC\uC9C0\uD1A0\uB9AC\uB85C \uBCF4\uB0B4\uAC70\uB098 Vercel \uD504\uB85C\uC81D\uD2B8\uC5D0 \uBC30\uD3EC\uD558\uC138\uC694.",
60961
60870
  "destinations.notSent": "\uC544\uC9C1 \uC804\uC1A1\uB41C \uD56D\uBAA9 \uC5C6\uC74C",
60962
- "destinations.openIntegrations": "\uD1B5\uD569\u2026",
60963
60871
  "destinations.place": "{name} \xB7 {target}",
60964
60872
  "destinations.publishFirst": "\uBA3C\uC800 \uAC8C\uC2DC\uD558\uC138\uC694.",
60965
60873
  "destinations.remove": "\uB300\uC0C1 \uC81C\uAC70",
@@ -62802,12 +62710,6 @@ var require_ko = __commonJS({
62802
62710
  "resizeDialog.custom": "\uC0AC\uC6A9\uC790 \uC9C0\uC815\u2026",
62803
62711
  "resizeDialog.magicResize": "\uB9E4\uC9C1 \uD06C\uAE30 \uC870\uC815",
62804
62712
  "resizeDialog.size": "\uD06C\uAE30",
62805
- "resourcePicker.choose": "\uC120\uD0DD\u2026",
62806
- "resourcePicker.create": "\uC0DD\uC131",
62807
- "resourcePicker.createNew": "\uC0C8\uB85C \uC0DD\uC131\u2026",
62808
- "resourcePicker.failed": "\uACC4\uC815\uC744 \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC138\uC694.",
62809
- "resourcePicker.newName": "\uC774\uB984",
62810
- "resourcePicker.option": "{name} \xB7 {detail}",
62811
62713
  "restoreAccount.back": "\uACC4\uC815\uC774 \uBCF5\uAD6C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",
62812
62714
  "restoreAccount.backBody": "\uD30C\uC77C, \uB77C\uC774\uBE0C\uB7EC\uB9AC, \uD15C\uD50C\uB9BF \uBC0F \uD50C\uB7EC\uADF8\uC778\uC774 \uC6D0\uB798 \uC788\uB358 \uACF3\uC5D0 \uC788\uC2B5\uB2C8\uB2E4. \uD300\uC740 \uB2E4\uC2DC \uCD08\uB300\uD574\uC57C \uD569\uB2C8\uB2E4.",
62813
62715
  "restoreAccount.couldNotRestore": "\uACC4\uC815\uC744 \uBCF5\uAD6C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC138\uC694.",
@@ -63016,11 +62918,7 @@ var require_ko = __commonJS({
63016
62918
  "showAdvanceControl.whenAnimationEnds": "\uC560\uB2C8\uBA54\uC774\uC158 \uC885\uB8CC \uC2DC",
63017
62919
  "sidebar.overview": "\uAC1C\uC694",
63018
62920
  "sidebarResizer.dragToResizeDoubleClick": "\uB4DC\uB798\uADF8\uD558\uC5EC \uD06C\uAE30 \uC870\uC808 \xB7 \uB450 \uBC88 \uD074\uB9AD\uD558\uC5EC \uC7AC\uC124\uC815",
63019
- "siteDatabase.attach": "\uB370\uC774\uD130\uBCA0\uC774\uC2A4 \uC5F0\uACB0",
63020
- "siteDatabase.attaching": "\uC5F0\uACB0 \uC911\u2026",
63021
- "siteDatabase.attachThis": "\uC5F0\uACB0",
63022
62921
  "siteDatabase.close": "\uB2EB\uAE30",
63023
- "siteDatabase.connectFirst": "\uBA3C\uC800 Neon \uACC4\uC815\uC744 \uC5F0\uACB0\uD558\uC138\uC694.",
63024
62922
  "siteDatabase.detach": "\uC5F0\uACB0 \uD574\uC81C",
63025
62923
  "siteDatabase.failed": "\uBB38\uC81C\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC138\uC694.",
63026
62924
  "siteDatabase.form": "\uD3FC",
@@ -65006,19 +64904,14 @@ var require_zh_CN = __commonJS({
65006
64904
  "designPanel.visibilityFollowsAVariable": "\u53EF\u89C1\u6027\u8DDF\u968F\u53D8\u91CF",
65007
64905
  "designPanel.webP": "WebP",
65008
64906
  "designPanel.wrap": "\u5305\u88F9",
65009
- "destinations.account": "{name} \xB7 {account}",
65010
- "destinations.accountLabel": "\u8D26\u6237",
65011
64907
  "destinations.add": "\u6DFB\u52A0\u76EE\u6807",
65012
- "destinations.addThis": "\u6DFB\u52A0",
65013
64908
  "destinations.building": "\u6784\u5EFA\u4E2D",
65014
64909
  "destinations.cancel": "\u53D6\u6D88",
65015
64910
  "destinations.commit": "\u7248\u672C {n} \xB7 \u63D0\u4EA4 {ref}",
65016
- "destinations.connectFirst": "\u8BF7\u5148\u8FDE\u63A5 GitHub \u6216 Vercel \u8D26\u6237\u3002",
65017
64911
  "destinations.deployment": "\u7248\u672C {n} \xB7 \u90E8\u7F72",
65018
64912
  "destinations.failed": "\u51FA\u9519\u4E86\u3002\u8BF7\u91CD\u8BD5\u3002",
65019
64913
  "destinations.none": "\u5C06\u6B64\u7AD9\u70B9\u53D1\u9001\u5230\u60A8\u7684 GitHub \u4ED3\u5E93\uFF0C\u6216\u90E8\u7F72\u5230\u60A8\u7684 Vercel \u9879\u76EE\u3002",
65020
64914
  "destinations.notSent": "\u5C1A\u672A\u53D1\u9001\u4EFB\u4F55\u5185\u5BB9",
65021
- "destinations.openIntegrations": "\u96C6\u6210\u2026",
65022
64915
  "destinations.place": "{name} \xB7 {target}",
65023
64916
  "destinations.publishFirst": "\u8BF7\u5148\u53D1\u5E03",
65024
64917
  "destinations.remove": "\u79FB\u9664\u76EE\u6807",
@@ -66861,12 +66754,6 @@ var require_zh_CN = __commonJS({
66861
66754
  "resizeDialog.custom": "\u81EA\u5B9A\u4E49\u2026",
66862
66755
  "resizeDialog.magicResize": "\u667A\u80FD\u8C03\u6574\u5927\u5C0F",
66863
66756
  "resizeDialog.size": "\u5C3A\u5BF8",
66864
- "resourcePicker.choose": "\u9009\u62E9\u2026",
66865
- "resourcePicker.create": "\u521B\u5EFA",
66866
- "resourcePicker.createNew": "\u65B0\u5EFA\u2026",
66867
- "resourcePicker.failed": "\u65E0\u6CD5\u8BFB\u53D6\u8D26\u6237\u3002\u8BF7\u91CD\u8BD5\u3002",
66868
- "resourcePicker.newName": "\u540D\u79F0",
66869
- "resourcePicker.option": "{name} \xB7 {detail}",
66870
66757
  "restoreAccount.back": "\u60A8\u7684\u8D26\u6237\u5DF2\u6062\u590D",
66871
66758
  "restoreAccount.backBody": "\u60A8\u7684\u6587\u4EF6\u3001\u5E93\u3001\u6A21\u677F\u548C\u63D2\u4EF6\u90FD\u5728\u539F\u5904\u3002\u56E2\u961F\u9700\u8981\u518D\u6B21\u9080\u8BF7\u60A8\u3002",
66872
66759
  "restoreAccount.couldNotRestore": "\u60A8\u7684\u8D26\u6237\u65E0\u6CD5\u6062\u590D\u3002\u8BF7\u91CD\u8BD5\u3002",
@@ -67075,11 +66962,7 @@ var require_zh_CN = __commonJS({
67075
66962
  "showAdvanceControl.whenAnimationEnds": "\u52A8\u753B\u7ED3\u675F\u65F6",
67076
66963
  "sidebar.overview": "\u6982\u89C8",
67077
66964
  "sidebarResizer.dragToResizeDoubleClick": "\u62D6\u52A8\u4EE5\u8C03\u6574\u5927\u5C0F \xB7 \u53CC\u51FB\u4EE5\u91CD\u7F6E",
67078
- "siteDatabase.attach": "\u8FDE\u63A5\u6570\u636E\u5E93",
67079
- "siteDatabase.attaching": "\u6B63\u5728\u8FDE\u63A5\u2026",
67080
- "siteDatabase.attachThis": "\u8FDE\u63A5",
67081
66965
  "siteDatabase.close": "\u5173\u95ED",
67082
- "siteDatabase.connectFirst": "\u8BF7\u5148\u8FDE\u63A5 Neon \u8D26\u6237\u3002",
67083
66966
  "siteDatabase.detach": "\u65AD\u5F00\u8FDE\u63A5",
67084
66967
  "siteDatabase.failed": "\u51FA\u9519\u4E86\u3002\u8BF7\u91CD\u8BD5\u3002",
67085
66968
  "siteDatabase.form": "\u8868\u5355",
@@ -69065,19 +68948,14 @@ var require_zh_TW = __commonJS({
69065
68948
  "designPanel.visibilityFollowsAVariable": "\u53EF\u898B\u6027\u9075\u5FAA\u8B8A\u6578",
69066
68949
  "designPanel.webP": "WebP",
69067
68950
  "designPanel.wrap": "\u63DB\u884C",
69068
- "destinations.account": "{name} \xB7 {account}",
69069
- "destinations.accountLabel": "\u5E33\u6236",
69070
68951
  "destinations.add": "\u65B0\u589E\u76EE\u7684\u5730",
69071
- "destinations.addThis": "\u65B0\u589E",
69072
68952
  "destinations.building": "\u6B63\u5728\u5EFA\u7F6E",
69073
68953
  "destinations.cancel": "\u53D6\u6D88",
69074
68954
  "destinations.commit": "\u7248\u672C {n} \xB7 \u63D0\u4EA4 {ref}",
69075
- "destinations.connectFirst": "\u8ACB\u5148\u9023\u7D50 GitHub \u6216 Vercel \u5E33\u6236\u3002",
69076
68955
  "destinations.deployment": "\u7248\u672C {n} \xB7 \u90E8\u7F72",
69077
68956
  "destinations.failed": "\u767C\u751F\u932F\u8AA4\u3002\u8ACB\u518D\u8A66\u4E00\u6B21\u3002",
69078
68957
  "destinations.none": "\u5C07\u6B64\u7DB2\u7AD9\u50B3\u9001\u5230\u60A8\u5728 GitHub \u4E0A\u7684\u5132\u5B58\u5EAB\uFF0C\u6216\u90E8\u7F72\u5230\u60A8\u5728 Vercel \u4E0A\u7684\u5C08\u6848\u3002",
69079
68958
  "destinations.notSent": "\u5C1A\u672A\u50B3\u9001\u4EFB\u4F55\u5167\u5BB9",
69080
- "destinations.openIntegrations": "\u6574\u5408\u2026",
69081
68959
  "destinations.place": "{name} \xB7 {target}",
69082
68960
  "destinations.publishFirst": "\u8ACB\u5148\u767C\u4F48",
69083
68961
  "destinations.remove": "\u79FB\u9664\u76EE\u7684\u5730",
@@ -70920,12 +70798,6 @@ var require_zh_TW = __commonJS({
70920
70798
  "resizeDialog.custom": "\u81EA\u8A02\u2026",
70921
70799
  "resizeDialog.magicResize": "\u667A\u6167\u8ABF\u6574\u5927\u5C0F",
70922
70800
  "resizeDialog.size": "\u5927\u5C0F",
70923
- "resourcePicker.choose": "\u9078\u64C7\u2026",
70924
- "resourcePicker.create": "\u5EFA\u7ACB",
70925
- "resourcePicker.createNew": "\u5EFA\u7ACB\u65B0\u7684\u2026",
70926
- "resourcePicker.failed": "\u7121\u6CD5\u8B80\u53D6\u5E33\u6236\u3002\u8ACB\u518D\u8A66\u4E00\u6B21\u3002",
70927
- "resourcePicker.newName": "\u540D\u7A31",
70928
- "resourcePicker.option": "{name} \xB7 {detail}",
70929
70801
  "restoreAccount.back": "\u60A8\u7684\u5E33\u6236\u5DF2\u6062\u5FA9",
70930
70802
  "restoreAccount.backBody": "\u60A8\u7684\u6A94\u6848\u3001\u8CC7\u6599\u5EAB\u3001\u7BC4\u672C\u548C\u5916\u639B\u7A0B\u5F0F\u90FD\u5728\u60A8\u96E2\u958B\u6642\u7684\u4F4D\u7F6E\u3002\u5718\u968A\u9700\u8981\u518D\u6B21\u9080\u8ACB\u60A8\u3002",
70931
70803
  "restoreAccount.couldNotRestore": "\u60A8\u7684\u5E33\u6236\u7121\u6CD5\u6062\u5FA9\u3002\u8ACB\u518D\u8A66\u4E00\u6B21\u3002",
@@ -71134,11 +71006,7 @@ var require_zh_TW = __commonJS({
71134
71006
  "showAdvanceControl.whenAnimationEnds": "\u52D5\u756B\u7D50\u675F\u6642",
71135
71007
  "sidebar.overview": "\u6982\u89BD",
71136
71008
  "sidebarResizer.dragToResizeDoubleClick": "\u62D6\u66F3\u4EE5\u8ABF\u6574\u5927\u5C0F \xB7 \u96D9\u64CA\u4EE5\u91CD\u8A2D",
71137
- "siteDatabase.attach": "\u9023\u63A5\u8CC7\u6599\u5EAB",
71138
- "siteDatabase.attaching": "\u6B63\u5728\u9023\u63A5\u2026",
71139
- "siteDatabase.attachThis": "\u9023\u63A5",
71140
71009
  "siteDatabase.close": "\u95DC\u9589",
71141
- "siteDatabase.connectFirst": "\u8ACB\u5148\u9023\u63A5 Neon \u5E33\u6236\u3002",
71142
71010
  "siteDatabase.detach": "\u4E2D\u65B7\u9023\u63A5",
71143
71011
  "siteDatabase.failed": "\u767C\u751F\u932F\u8AA4\u3002\u8ACB\u518D\u8A66\u4E00\u6B21\u3002",
71144
71012
  "siteDatabase.form": "\u8868\u55AE",
@@ -73124,19 +72992,14 @@ var require_ru = __commonJS({
73124
72992
  "designPanel.visibilityFollowsAVariable": "\u0412\u0438\u0434\u0438\u043C\u043E\u0441\u0442\u044C \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043E\u0442 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u0439",
73125
72993
  "designPanel.webP": "WebP",
73126
72994
  "designPanel.wrap": "\u041E\u0431\u0442\u0435\u043A\u0430\u043D\u0438\u0435",
73127
- "destinations.account": "{name} \xB7 {account}",
73128
- "destinations.accountLabel": "\u0410\u043A\u043A\u0430\u0443\u043D\u0442",
73129
72995
  "destinations.add": "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435",
73130
- "destinations.addThis": "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C",
73131
72996
  "destinations.building": "\u0421\u0431\u043E\u0440\u043A\u0430",
73132
72997
  "destinations.cancel": "\u041E\u0442\u043C\u0435\u043D\u0430",
73133
72998
  "destinations.commit": "\u0412\u0435\u0440\u0441\u0438\u044F {n} \xB7 \u043A\u043E\u043C\u043C\u0438\u0442 {ref}",
73134
- "destinations.connectFirst": "\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u0435 \u0430\u043A\u043A\u0430\u0443\u043D\u0442 GitHub \u0438\u043B\u0438 Vercel.",
73135
72999
  "destinations.deployment": "\u0412\u0435\u0440\u0441\u0438\u044F {n} \xB7 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044B\u0432\u0430\u043D\u0438\u0435",
73136
73000
  "destinations.failed": "\u0427\u0442\u043E-\u0442\u043E \u043F\u043E\u0448\u043B\u043E \u043D\u0435 \u0442\u0430\u043A. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0441\u043D\u043E\u0432\u0430.",
73137
73001
  "destinations.none": "\u041E\u0442\u043F\u0440\u0430\u0432\u044C\u0442\u0435 \u044D\u0442\u043E\u0442 \u0441\u0430\u0439\u0442 \u0432 \u0441\u0432\u043E\u0439 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0439 \u043D\u0430 GitHub \u0438\u043B\u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u043D\u0438\u0442\u0435 \u0435\u0433\u043E \u0432 \u0441\u0432\u043E\u0435\u043C \u043F\u0440\u043E\u0435\u043A\u0442\u0435 \u043D\u0430 Vercel.",
73138
73002
  "destinations.notSent": "\u041F\u043E\u043A\u0430 \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E",
73139
- "destinations.openIntegrations": "\u0418\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438\u2026",
73140
73003
  "destinations.place": "{name} \xB7 {target}",
73141
73004
  "destinations.publishFirst": "\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u043E\u043F\u0443\u0431\u043B\u0438\u043A\u0443\u0439\u0442\u0435",
73142
73005
  "destinations.remove": "\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435",
@@ -74979,12 +74842,6 @@ var require_ru = __commonJS({
74979
74842
  "resizeDialog.custom": "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439\u2026",
74980
74843
  "resizeDialog.magicResize": "\u041C\u0430\u0433\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435 \u0440\u0430\u0437\u043C\u0435\u0440\u0430",
74981
74844
  "resizeDialog.size": "\u0420\u0430\u0437\u043C\u0435\u0440",
74982
- "resourcePicker.choose": "\u0412\u044B\u0431\u0440\u0430\u0442\u044C\u2026",
74983
- "resourcePicker.create": "\u0421\u043E\u0437\u0434\u0430\u0442\u044C",
74984
- "resourcePicker.createNew": "\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439\u2026",
74985
- "resourcePicker.failed": "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u0440\u043E\u0447\u0438\u0442\u0430\u0442\u044C \u0430\u043A\u043A\u0430\u0443\u043D\u0442. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0441\u043D\u043E\u0432\u0430.",
74986
- "resourcePicker.newName": "\u0418\u043C\u044F",
74987
- "resourcePicker.option": "{name} \xB7 {detail}",
74988
74845
  "restoreAccount.back": "\u0412\u0430\u0448\u0430 \u0443\u0447\u0435\u0442\u043D\u0430\u044F \u0437\u0430\u043F\u0438\u0441\u044C \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0430",
74989
74846
  "restoreAccount.backBody": "\u0412\u0430\u0448\u0438 \u0444\u0430\u0439\u043B\u044B, \u0431\u0438\u0431\u043B\u0438\u043E\u0442\u0435\u043A\u0438, \u0448\u0430\u0431\u043B\u043E\u043D\u044B \u0438 \u043F\u043B\u0430\u0433\u0438\u043D\u044B \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0442\u0430\u043C, \u0433\u0434\u0435 \u0432\u044B \u0438\u0445 \u043E\u0441\u0442\u0430\u0432\u0438\u043B\u0438. \u041A\u043E\u043C\u0430\u043D\u0434\u0430\u043C \u043F\u043E\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u043F\u0440\u0438\u0433\u043B\u0430\u0441\u0438\u0442\u044C \u0432\u0430\u0441 \u0441\u043D\u043E\u0432\u0430.",
74990
74847
  "restoreAccount.couldNotRestore": "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0432\u0430\u0448\u0443 \u0443\u0447\u0435\u0442\u043D\u0443\u044E \u0437\u0430\u043F\u0438\u0441\u044C. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437.",
@@ -75193,11 +75050,7 @@ var require_ru = __commonJS({
75193
75050
  "showAdvanceControl.whenAnimationEnds": "\u041F\u043E \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u0438 \u0430\u043D\u0438\u043C\u0430\u0446\u0438\u0438",
75194
75051
  "sidebar.overview": "\u041E\u0431\u0437\u043E\u0440",
75195
75052
  "sidebarResizer.dragToResizeDoubleClick": "\u041F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0434\u043B\u044F \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0440\u0430\u0437\u043C\u0435\u0440\u0430 \xB7 \u0434\u0432\u0430\u0436\u0434\u044B \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u0434\u043B\u044F \u0441\u0431\u0440\u043E\u0441\u0430",
75196
- "siteDatabase.attach": "\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0431\u0430\u0437\u0443 \u0434\u0430\u043D\u043D\u044B\u0445",
75197
- "siteDatabase.attaching": "\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435\u2026",
75198
- "siteDatabase.attachThis": "\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C",
75199
75053
  "siteDatabase.close": "\u0417\u0430\u043A\u0440\u044B\u0442\u044C",
75200
- "siteDatabase.connectFirst": "\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u0435 \u0430\u043A\u043A\u0430\u0443\u043D\u0442 Neon.",
75201
75054
  "siteDatabase.detach": "\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C",
75202
75055
  "siteDatabase.failed": "\u0427\u0442\u043E-\u0442\u043E \u043F\u043E\u0448\u043B\u043E \u043D\u0435 \u0442\u0430\u043A. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0441\u043D\u043E\u0432\u0430.",
75203
75056
  "siteDatabase.form": "\u0424\u043E\u0440\u043C\u0430",
@@ -77183,19 +77036,14 @@ var require_ar = __commonJS({
77183
77036
  "designPanel.visibilityFollowsAVariable": "\u0627\u0644\u0631\u0624\u064A\u0629 \u062A\u062A\u0628\u0639 \u0645\u062A\u063A\u064A\u0631\u064B\u0627",
77184
77037
  "designPanel.webP": "WebP",
77185
77038
  "designPanel.wrap": "\u0627\u0644\u062A\u0641\u0627\u0641",
77186
- "destinations.account": "{name} \xB7 {account}",
77187
- "destinations.accountLabel": "\u0627\u0644\u062D\u0633\u0627\u0628",
77188
77039
  "destinations.add": "\u0625\u0636\u0627\u0641\u0629 \u0648\u062C\u0647\u0629",
77189
- "destinations.addThis": "\u0625\u0636\u0627\u0641\u0629",
77190
77040
  "destinations.building": "\u062C\u0627\u0631\u064A \u0627\u0644\u0625\u0646\u0634\u0627\u0621",
77191
77041
  "destinations.cancel": "\u0625\u0644\u063A\u0627\u0621",
77192
77042
  "destinations.commit": "\u0627\u0644\u0625\u0635\u062F\u0627\u0631 {n} \xB7 \u0627\u0644\u062A\u0632\u0627\u0645 {ref}",
77193
- "destinations.connectFirst": "\u064A\u0631\u062C\u0649 \u0631\u0628\u0637 \u062D\u0633\u0627\u0628 GitHub \u0623\u0648 Vercel \u0623\u0648\u0644\u0627\u064B.",
77194
77043
  "destinations.deployment": "\u0627\u0644\u0625\u0635\u062F\u0627\u0631 {n} \xB7 \u0646\u0634\u0631",
77195
77044
  "destinations.failed": "\u062D\u062F\u062B \u062E\u0637\u0623 \u0645\u0627. \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",
77196
77045
  "destinations.none": "\u0623\u0631\u0633\u0644 \u0647\u0630\u0627 \u0627\u0644\u0645\u0648\u0642\u0639 \u0625\u0644\u0649 \u0645\u0633\u062A\u0648\u062F\u0639 \u062E\u0627\u0635 \u0628\u0643 \u0639\u0644\u0649 GitHub\u060C \u0623\u0648 \u0627\u0646\u0634\u0631\u0647 \u0641\u064A \u0645\u0634\u0631\u0648\u0639 \u062E\u0627\u0635 \u0628\u0643 \u0639\u0644\u0649 Vercel.",
77197
77046
  "destinations.notSent": "\u0644\u0645 \u064A\u062A\u0645 \u0627\u0644\u0625\u0631\u0633\u0627\u0644 \u0628\u0639\u062F",
77198
- "destinations.openIntegrations": "\u0627\u0644\u062A\u0643\u0627\u0645\u0644\u0627\u062A\u2026",
77199
77047
  "destinations.place": "{name} \xB7 {target}",
77200
77048
  "destinations.publishFirst": "\u0627\u0646\u0634\u0631 \u0623\u0648\u0644\u0627\u064B",
77201
77049
  "destinations.remove": "\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0648\u062C\u0647\u0629",
@@ -79038,12 +78886,6 @@ var require_ar = __commonJS({
79038
78886
  "resizeDialog.custom": "\u0645\u062E\u0635\u0635\u2026",
79039
78887
  "resizeDialog.magicResize": "\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u062D\u062C\u0645 \u0627\u0644\u0633\u062D\u0631\u064A",
79040
78888
  "resizeDialog.size": "\u0627\u0644\u062D\u062C\u0645",
79041
- "resourcePicker.choose": "\u0627\u062E\u062A\u0631\u2026",
79042
- "resourcePicker.create": "\u0625\u0646\u0634\u0627\u0621",
79043
- "resourcePicker.createNew": "\u0625\u0646\u0634\u0627\u0621 \u062C\u062F\u064A\u062F\u2026",
79044
- "resourcePicker.failed": "\u062A\u0639\u0630\u0631 \u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u062D\u0633\u0627\u0628. \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",
79045
- "resourcePicker.newName": "\u0627\u0644\u0627\u0633\u0645",
79046
- "resourcePicker.option": "{name} \xB7 {detail}",
79047
78889
  "restoreAccount.back": "\u062A\u0645\u062A \u0627\u0633\u062A\u0639\u0627\u062F\u0629 \u062D\u0633\u0627\u0628\u0643",
79048
78890
  "restoreAccount.backBody": "\u0645\u0644\u0641\u0627\u062A\u0643 \u0648\u0645\u0643\u062A\u0628\u0627\u062A\u0643 \u0648\u0642\u0648\u0627\u0644\u0628\u0643 \u0648\u0645\u0643\u0648\u0646\u0627\u062A\u0643 \u0627\u0644\u0625\u0636\u0627\u0641\u064A\u0629 \u0645\u0648\u062C\u0648\u062F\u0629 \u062D\u064A\u062B \u062A\u0631\u0643\u062A\u0647\u0627. \u062A\u062D\u062A\u0627\u062C \u0627\u0644\u0641\u0631\u0642 \u0625\u0644\u0649 \u062F\u0639\u0648\u062A\u0643 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",
79049
78891
  "restoreAccount.couldNotRestore": "\u062A\u0639\u0630\u0631 \u0627\u0633\u062A\u0639\u0627\u062F\u0629 \u062D\u0633\u0627\u0628\u0643. \u064A\u0631\u062C\u0649 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",
@@ -79252,11 +79094,7 @@ var require_ar = __commonJS({
79252
79094
  "showAdvanceControl.whenAnimationEnds": "\u0639\u0646\u062F \u0627\u0646\u062A\u0647\u0627\u0621 \u0627\u0644\u062D\u0631\u0643\u0629",
79253
79095
  "sidebar.overview": "\u0646\u0638\u0631\u0629 \u0639\u0627\u0645\u0629",
79254
79096
  "sidebarResizer.dragToResizeDoubleClick": "\u0627\u0633\u062D\u0628 \u0644\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u062D\u062C\u0645 \xB7 \u0627\u0646\u0642\u0631 \u0646\u0642\u0631\u064B\u0627 \u0645\u0632\u062F\u0648\u062C\u064B\u0627 \u0644\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0636\u0628\u0637",
79255
- "siteDatabase.attach": "\u0625\u0631\u0641\u0627\u0642 \u0642\u0627\u0639\u062F\u0629 \u0628\u064A\u0627\u0646\u0627\u062A",
79256
- "siteDatabase.attaching": "\u062C\u0627\u0631\u064D \u0627\u0644\u0625\u0631\u0641\u0627\u0642\u2026",
79257
- "siteDatabase.attachThis": "\u0625\u0631\u0641\u0627\u0642",
79258
79097
  "siteDatabase.close": "\u0625\u063A\u0644\u0627\u0642",
79259
- "siteDatabase.connectFirst": "\u0627\u0644\u0631\u062C\u0627\u0621 \u0631\u0628\u0637 \u062D\u0633\u0627\u0628 Neon \u0623\u0648\u0644\u0627\u064B.",
79260
79098
  "siteDatabase.detach": "\u0641\u0635\u0644",
79261
79099
  "siteDatabase.failed": "\u062D\u062F\u062B \u062E\u0637\u0623 \u0645\u0627. \u0627\u0644\u0631\u062C\u0627\u0621 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",
79262
79100
  "siteDatabase.form": "\u0646\u0645\u0648\u0630\u062C",
@@ -81242,19 +81080,14 @@ var require_hi = __commonJS({
81242
81080
  "designPanel.visibilityFollowsAVariable": "\u0926\u0943\u0936\u094D\u092F\u0924\u093E \u090F\u0915 \u0935\u0947\u0930\u093F\u090F\u092C\u0932 \u0915\u093E \u0905\u0928\u0941\u0938\u0930\u0923 \u0915\u0930\u0924\u0940 \u0939\u0948",
81243
81081
  "designPanel.webP": "WebP",
81244
81082
  "designPanel.wrap": "\u0930\u0948\u092A \u0915\u0930\u0947\u0902",
81245
- "destinations.account": "{name} \xB7 {account}",
81246
- "destinations.accountLabel": "\u0916\u093E\u0924\u093E",
81247
81083
  "destinations.add": "\u0917\u0902\u0924\u0935\u094D\u092F \u091C\u094B\u0921\u093C\u0947\u0902",
81248
- "destinations.addThis": "\u091C\u094B\u0921\u093C\u0947\u0902",
81249
81084
  "destinations.building": "\u0928\u093F\u0930\u094D\u092E\u093E\u0923 \u0939\u094B \u0930\u0939\u093E \u0939\u0948",
81250
81085
  "destinations.cancel": "\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902",
81251
81086
  "destinations.commit": "\u0938\u0902\u0938\u094D\u0915\u0930\u0923 {n} \xB7 \u0915\u092E\u093F\u091F {ref}",
81252
- "destinations.connectFirst": "\u092A\u0939\u0932\u0947 \u090F\u0915 GitHub \u092F\u093E Vercel \u0916\u093E\u0924\u093E \u0915\u0928\u0947\u0915\u094D\u091F \u0915\u0930\u0947\u0902\u0964",
81253
81087
  "destinations.deployment": "\u0938\u0902\u0938\u094D\u0915\u0930\u0923 {n} \xB7 \u0921\u093F\u092A\u094D\u0932\u0949\u092F\u092E\u0947\u0902\u091F",
81254
81088
  "destinations.failed": "\u0915\u0941\u091B \u0917\u0932\u0924 \u0939\u094B \u0917\u092F\u093E\u0964 \u092A\u0941\u0928\u0903 \u092A\u094D\u0930\u092F\u093E\u0938 \u0915\u0930\u0947\u0902\u0964",
81255
81089
  "destinations.none": "\u0907\u0938 \u0938\u093E\u0907\u091F \u0915\u094B GitHub \u092A\u0930 \u0905\u092A\u0928\u0947 \u0930\u093F\u092A\u0949\u091C\u093F\u091F\u0930\u0940 \u092E\u0947\u0902 \u092D\u0947\u091C\u0947\u0902, \u092F\u093E Vercel \u092A\u0930 \u0905\u092A\u0928\u0947 \u092A\u094D\u0930\u094B\u091C\u0947\u0915\u094D\u091F \u092E\u0947\u0902 \u0921\u093F\u092A\u094D\u0932\u0949\u092F \u0915\u0930\u0947\u0902\u0964",
81256
81090
  "destinations.notSent": "\u0905\u092D\u0940 \u0924\u0915 \u0915\u0941\u091B \u0928\u0939\u0940\u0902 \u092D\u0947\u091C\u093E \u0917\u092F\u093E \u0939\u0948",
81257
- "destinations.openIntegrations": "\u090F\u0915\u0940\u0915\u0930\u0923\u2026",
81258
81091
  "destinations.place": "{name} \xB7 {target}",
81259
81092
  "destinations.publishFirst": "\u092A\u0939\u0932\u0947 \u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924 \u0915\u0930\u0947\u0902",
81260
81093
  "destinations.remove": "\u0917\u0902\u0924\u0935\u094D\u092F \u0939\u091F\u093E\u090F\u0901",
@@ -83084,12 +82917,6 @@ var require_hi = __commonJS({
83084
82917
  "resizeDialog.custom": "\u0915\u0938\u094D\u091F\u092E\u2026",
83085
82918
  "resizeDialog.magicResize": "\u092E\u0948\u091C\u093F\u0915 \u0930\u0940\u0938\u093E\u0907\u091C\u093C",
83086
82919
  "resizeDialog.size": "\u0906\u0915\u093E\u0930",
83087
- "resourcePicker.choose": "\u091A\u0941\u0928\u0947\u0902\u2026",
83088
- "resourcePicker.create": "\u092C\u0928\u093E\u090F\u0901",
83089
- "resourcePicker.createNew": "\u0928\u092F\u093E \u092C\u0928\u093E\u090F\u0901\u2026",
83090
- "resourcePicker.failed": "\u0916\u093E\u0924\u093E \u092A\u0922\u093C\u093E \u0928\u0939\u0940\u0902 \u091C\u093E \u0938\u0915\u093E\u0964 \u092A\u0941\u0928\u0903 \u092A\u094D\u0930\u092F\u093E\u0938 \u0915\u0930\u0947\u0902\u0964",
83091
- "resourcePicker.newName": "\u0928\u093E\u092E",
83092
- "resourcePicker.option": "{name} \xB7 {detail}",
83093
82920
  "restoreAccount.back": "\u0906\u092A\u0915\u093E \u0916\u093E\u0924\u093E \u0935\u093E\u092A\u0938 \u0906 \u0917\u092F\u093E \u0939\u0948",
83094
82921
  "restoreAccount.backBody": "\u0906\u092A\u0915\u0940 \u092B\u093C\u093E\u0907\u0932\u0947\u0902, \u0932\u093E\u0907\u092C\u094D\u0930\u0947\u0930\u0940, \u091F\u0947\u092E\u094D\u092A\u0932\u0947\u091F \u0914\u0930 \u092A\u094D\u0932\u0917\u0907\u0928\u094D\u0938 \u0935\u0939\u0940\u0902 \u0939\u0948\u0902 \u091C\u0939\u093E\u0901 \u0906\u092A\u0928\u0947 \u0909\u0928\u094D\u0939\u0947\u0902 \u091B\u094B\u0921\u093C\u093E \u0925\u093E\u0964 \u091F\u0940\u092E\u094B\u0902 \u0915\u094B \u0906\u092A\u0915\u094B \u092B\u093F\u0930 \u0938\u0947 \u0906\u092E\u0902\u0924\u094D\u0930\u093F\u0924 \u0915\u0930\u0928\u093E \u0939\u094B\u0917\u093E\u0964",
83095
82922
  "restoreAccount.couldNotRestore": "\u0906\u092A\u0915\u093E \u0916\u093E\u0924\u093E \u092A\u0941\u0928\u0930\u094D\u0938\u094D\u0925\u093E\u092A\u093F\u0924 \u0928\u0939\u0940\u0902 \u0915\u093F\u092F\u093E \u091C\u093E \u0938\u0915\u093E\u0964 \u092A\u0941\u0928\u0903 \u092A\u094D\u0930\u092F\u093E\u0938 \u0915\u0930\u0947\u0902\u0964",
@@ -83298,11 +83125,7 @@ var require_hi = __commonJS({
83298
83125
  "showAdvanceControl.whenAnimationEnds": "\u091C\u092C \u090F\u0928\u093F\u092E\u0947\u0936\u0928 \u0938\u092E\u093E\u092A\u094D\u0924 \u0939\u094B",
83299
83126
  "sidebar.overview": "\u0905\u0935\u0932\u094B\u0915\u0928",
83300
83127
  "sidebarResizer.dragToResizeDoubleClick": "\u0906\u0915\u093E\u0930 \u092C\u0926\u0932\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0916\u0940\u0902\u091A\u0947\u0902 \xB7 \u0930\u0940\u0938\u0947\u091F \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0921\u092C\u0932-\u0915\u094D\u0932\u093F\u0915 \u0915\u0930\u0947\u0902",
83301
- "siteDatabase.attach": "\u090F\u0915 \u0921\u0947\u091F\u093E\u092C\u0947\u0938 \u091C\u094B\u0921\u093C\u0947\u0902",
83302
- "siteDatabase.attaching": "\u091C\u094B\u0921\u093C\u093E \u091C\u093E \u0930\u0939\u093E \u0939\u0948\u2026",
83303
- "siteDatabase.attachThis": "\u091C\u094B\u0921\u093C\u0947\u0902",
83304
83128
  "siteDatabase.close": "\u092C\u0902\u0926 \u0915\u0930\u0947\u0902",
83305
- "siteDatabase.connectFirst": "\u092A\u0939\u0932\u0947 \u090F\u0915 Neon \u0916\u093E\u0924\u093E \u0915\u0928\u0947\u0915\u094D\u091F \u0915\u0930\u0947\u0902\u0964",
83306
83129
  "siteDatabase.detach": "\u0905\u0932\u0917 \u0915\u0930\u0947\u0902",
83307
83130
  "siteDatabase.failed": "\u0915\u0941\u091B \u0917\u0932\u0924 \u0939\u094B \u0917\u092F\u093E\u0964 \u092B\u093F\u0930 \u0938\u0947 \u092A\u094D\u0930\u092F\u093E\u0938 \u0915\u0930\u0947\u0902\u0964",
83308
83131
  "siteDatabase.form": "\u092B\u093C\u0949\u0930\u094D\u092E",
@@ -86114,6 +85937,7 @@ function repairDocumentPaints(doc2) {
86114
85937
  var broken;
86115
85938
  var init_paint_repair = __esm({
86116
85939
  "lib/document/paint-repair.ts"() {
85940
+ "use strict";
86117
85941
  init_shader_graph();
86118
85942
  broken = (p2) => {
86119
85943
  if (!p2 || typeof p2 !== "object") return false;
@@ -87338,7 +87162,6 @@ function relinkCopies(doc2, copies) {
87338
87162
  var TEXT_PATH_SOURCE_TYPES, isPathSource;
87339
87163
  var init_text_links = __esm({
87340
87164
  "lib/document/text-links.ts"() {
87341
- "use strict";
87342
87165
  init_transform();
87343
87166
  TEXT_PATH_SOURCE_TYPES = ["VECTOR", "ELLIPSE", "RECTANGLE", "POLYGON", "STAR", "LINE", "ARROW", "FRAME"];
87344
87167
  isPathSource = (n) => !!n && TEXT_PATH_SOURCE_TYPES.includes(n.type);
@@ -88050,7 +87873,6 @@ function isAutoLayout(node2) {
88050
87873
  }
88051
87874
  var init_auto_layout = __esm({
88052
87875
  "lib/document/auto-layout.ts"() {
88053
- "use strict";
88054
87876
  init_instance_layout();
88055
87877
  setLayoutEngine(applyAutoLayout);
88056
87878
  }
@@ -90855,7 +90677,6 @@ function layerInputPatch(node2, name2, path) {
90855
90677
  var NO_RUNTIME, MAX_DEPTH, freshIndex, indexOf, isComponentLike, selfStarting, startedAt, endMemo, HOST_OWNS, rootTracksMemo, layerMemo, idle;
90856
90678
  var init_instances2 = __esm({
90857
90679
  "lib/motion/instances.ts"() {
90858
- "use strict";
90859
90680
  init_node_delta();
90860
90681
  init_instances();
90861
90682
  init_scene_graph();
@@ -91127,7 +90948,6 @@ function repairStateMachine(raw, markerIds, hasNode) {
91127
90948
  var STATE_MACHINE_INPUT_TYPES, STATE_MACHINE_GUARD_OPS, STATE_MACHINE_ACTION_TYPES, STATE_MACHINE_LISTENER_TYPES, isKeyListener, ANY_STATE, MAX_STEPS2, byId2, sortedValues, machineOf, startValue, isObj3, finite4, isValue, goodId;
91128
90949
  var init_state_machine = __esm({
91129
90950
  "lib/motion/state-machine.ts"() {
91130
- "use strict";
91131
90951
  STATE_MACHINE_INPUT_TYPES = ["boolean", "number", "string", "event"];
91132
90952
  STATE_MACHINE_GUARD_OPS = ["eq", "neq", "gt", "gte", "lt", "lte"];
91133
90953
  STATE_MACHINE_ACTION_TYPES = ["set", "toggle", "increment", "decrement", "fire", "reset"];
@@ -235308,7 +235128,6 @@ function repairCompositions(comps, nodes) {
235308
235128
  var isObj5, finite6, optFinite, isVec2, TIMELINE_COLOR_IDS, TIMELINE_COLORS, UNITS, ORDERS, PROP_KEYS, ANIMATOR_ID, MOTION_TYPES, TRANSITIONS, isFraction, MEDIA_HASH;
235309
235129
  var init_invariants = __esm({
235310
235130
  "lib/motion/invariants.ts"() {
235311
- "use strict";
235312
235131
  init_easing();
235313
235132
  init_properties();
235314
235133
  init_markers();
@@ -239833,7 +239652,6 @@ function resizeWindow(doc2, target2, rect) {
239833
239652
  }
239834
239653
  var init_crop = __esm({
239835
239654
  "lib/editor/crop.ts"() {
239836
- "use strict";
239837
239655
  init_dist_node();
239838
239656
  init_scene_graph();
239839
239657
  init_photo_frames();
@@ -243356,7 +243174,6 @@ fn shade(uv: vec2<f32>, res: vec2<f32>, tm: f32) -> vec4<f32> {
243356
243174
  var SHADER_PRESETS, shaderPreset, legacyPresetOf, DEFAULT_SHADER_PRESET, DEFAULT_TEXTURE_PARAMS, f, vec4, NOISE_LIB;
243357
243175
  var init_shader_presets = __esm({
243358
243176
  "lib/engine/shader-presets.ts"() {
243359
- "use strict";
243360
243177
  init_shader_graph();
243361
243178
  init_shader_graph_presets();
243362
243179
  init_shader_presets_legacy();
@@ -296881,6 +296698,7 @@ function startCloudSync() {
296881
296698
  var status, readOnlyDoc, activeLink, statusListeners, notice, urlArmed, opening, syncStatus, canEdit, uploaded, MEDIA_UPLOAD_PARALLEL, pushTimer, pushing, dirty, pendingMedia, collab, collabSession, collabAnonymous, uploadedThumbs, thumbCheckedAt, THUMB_EVERY_MS, putThumbnail, openingFiles, mediaHealed, started;
296882
296699
  var init_sync2 = __esm({
296883
296700
  "lib/client/cloud/sync.ts"() {
296701
+ "use strict";
296884
296702
  init_paint_repair();
296885
296703
  init_migrate();
296886
296704
  init_view();
@@ -298125,7 +297943,6 @@ function applyTextPath(layout2, path, tp, rebase = true) {
298125
297943
  var defaultCircleRadius, ownsPath, mapPoint;
298126
297944
  var init_text_path = __esm({
298127
297945
  "lib/engine/text/text-path.ts"() {
298128
- "use strict";
298129
297946
  init_scene_graph();
298130
297947
  init_transform();
298131
297948
  init_shape_to_path();
@@ -298243,7 +298060,6 @@ function areaBounds(rings) {
298243
298060
  }
298244
298061
  var init_text_area = __esm({
298245
298062
  "lib/engine/text/text-area.ts"() {
298246
- "use strict";
298247
298063
  }
298248
298064
  });
298249
298065
 
@@ -312440,10 +312256,10 @@ function serverFiles(server) {
312440
312256
  const files = [
312441
312257
  { path: "lib/popcraft-server.ts", content: lines(
312442
312258
  "// The site's own server: the forms it keeps and the lists its visitors keep records in (from the design), its",
312443
- "// database (DATABASE_URL) and its sign-in (NEON_AUTH_URL). app/api/popcraft answers the pages through it.",
312259
+ "// database (DATABASE_URL) and its sign-in (SITE_AUTH_URL). app/api/popcraft answers the pages through it.",
312444
312260
  "",
312445
312261
  "import type { Collection } from '@popcraft/runtime'",
312446
- "import { neonStore, type SiteBackend, type SiteDatabase } from '@popcraft/runtime/server'",
312262
+ "import { storeFor, type AuthKind, type SiteBackend, type SiteDatabase } from '@popcraft/runtime/server'",
312447
312263
  "import { siteUrl } from '@/lib/site'",
312448
312264
  "",
312449
312265
  `const FORMS = new Set<string>(${JSON.stringify(server.forms)})`,
@@ -312455,14 +312271,21 @@ function serverFiles(server) {
312455
312271
  "function database(): Promise<SiteDatabase | null> {",
312456
312272
  " const url = process.env.DATABASE_URL",
312457
312273
  " if (!url) return Promise.resolve(null)",
312458
- " ready ??= (async () => { const db = neonStore(url); await db.ensure(); return db })().catch((e: unknown) => { ready = null; throw e })",
312274
+ " ready ??= (async () => { const db = storeFor(url); await db.ensure(); return db })().catch((e: unknown) => { ready = null; throw e })",
312459
312275
  " return ready",
312460
312276
  "}",
312461
312277
  "",
312278
+ "/** The site's sign-in service (Neon Auth or Supabase Auth), told the site's own address. NEON_AUTH_URL is its older name. */",
312279
+ "async function auth() {",
312280
+ " const authUrl = process.env.SITE_AUTH_URL ?? process.env.NEON_AUTH_URL",
312281
+ " if (!authUrl) return null",
312282
+ " const kind = (process.env.SITE_AUTH_KIND as AuthKind | undefined) ?? 'neon-auth'",
312283
+ " return { kind, authUrl, origin: siteUrl.origin, apiKey: process.env.SITE_AUTH_KEY, adminKey: process.env.SITE_AUTH_ADMIN_KEY }",
312284
+ "}",
312285
+ "",
312462
312286
  "export const site: SiteBackend = {",
312463
312287
  " database,",
312464
- " // Neon Auth, told the site's own address (it must be one of the trusted domains in the Neon console).",
312465
- " auth: async () => (process.env.NEON_AUTH_URL ? { authUrl: process.env.NEON_AUTH_URL, origin: siteUrl.origin } : null),",
312288
+ " auth,",
312466
312289
  " hasForm: id => FORMS.has(id),",
312467
312290
  " collection: id => COLLECTIONS[id],",
312468
312291
  " // Over https in production; `next dev` serves http, where a Secure cookie would not be kept.",
@@ -312636,13 +312459,13 @@ function serverReadme(server) {
312636
312459
  return `## Forms${server.signIn ? ", accounts" : ""} and data
312637
312460
 
312638
312461
  The site has a server of its own (\`app/api/popcraft\`, through \`@popcraft/runtime/server\`): it keeps what its forms
312639
- send${server.signIn ? ", signs visitors up and in with Neon Auth" : ""}${server.collections.length ? ", and keeps each visitor's own records" : ""}. Copy \`.env.example\` to
312462
+ send${server.signIn ? ", signs visitors up and in with the database's own sign-in (Neon Auth or Supabase Auth)" : ""}${server.collections.length ? ", and keeps each visitor's own records" : ""}. Copy \`.env.example\` to
312640
312463
  \`.env.local\` and set:
312641
312464
 
312642
312465
  | Variable | What it is |
312643
312466
  | --- | --- |
312644
- | \`DATABASE_URL\` | A Postgres connection string (a Neon project's). The site makes its two tables on first use |
312645
- ${server.signIn ? "| `NEON_AUTH_URL` | The Neon project's Auth URL (Neon console \u2192 Auth). Add the site's address to its trusted domains |\n" : ""}| \`NEXT_PUBLIC_SITE_URL\` | The site's address${server.signIn ? " (the origin Neon Auth is told visitors come from)" : ""} |
312467
+ | \`DATABASE_URL\` | A Postgres connection string (a Neon or Supabase project's). The site makes its two tables on first use |
312468
+ ${server.signIn ? "| `SITE_AUTH_KIND` | `neon-auth` or `supabase-auth` |\n| `SITE_AUTH_URL` | The sign-in service: a Neon project's Auth URL (Neon console \u2192 Auth), or `https://<project>.supabase.co/auth/v1`. Add the site's address to its trusted domains / redirect URLs |\n| `SITE_AUTH_KEY` | Supabase only: the project's anon key |\n| `SITE_AUTH_ADMIN_KEY` | Supabase only, optional: the service-role key, so visitors can delete their accounts |\n" : ""}| \`NEXT_PUBLIC_SITE_URL\` | The site's address${server.signIn ? " (the origin the sign-in service is told visitors come from)" : ""} |
312646
312469
 
312647
312470
  Without \`DATABASE_URL\` the pages still work: forms are sent and not kept${server.signIn ? ", and nobody can sign in" : ""}.
312648
312471
 
@@ -312741,7 +312564,7 @@ var init_package = __esm({
312741
312564
  "packages/runtime/package.json"() {
312742
312565
  package_default = {
312743
312566
  name: "@popcraft/runtime",
312744
- version: "0.5.0",
312567
+ version: "0.6.0",
312745
312568
  description: "What code exported from PopCraft shares: the meaning of expressions (operators and functions) and, as it grows, the parts of a design's behaviour that are common code rather than generated React.",
312746
312569
  license: "MIT",
312747
312570
  homepage: "https://popcraft.app/docs/exporting/nextjs",
@@ -312781,7 +312604,8 @@ var init_package = __esm({
312781
312604
  esbuild: "0.28.2"
312782
312605
  },
312783
312606
  dependencies: {
312784
- "@neondatabase/serverless": "^1.1.0"
312607
+ "@neondatabase/serverless": "^1.1.0",
312608
+ postgres: "^3.4.5"
312785
312609
  }
312786
312610
  };
312787
312611
  }
@@ -312955,8 +312779,8 @@ ${source3}` });
312955
312779
  "# The address the site is served from: used for its sitemap, robots.txt and social previews" + (server?.signIn ? ", and the origin" : ""),
312956
312780
  ...server?.signIn ? ["# its sign-in service is told visitors come from."] : [],
312957
312781
  "NEXT_PUBLIC_SITE_URL=https://example.com",
312958
- ...server ? ["", "# The Postgres database the site keeps its forms and its visitors' records in (Neon: the project's connection string).", "# Two tables of its own are made on first use. Unset, forms are not kept and nobody can sign in.", "DATABASE_URL=postgresql://user:password@host/db?sslmode=require"] : [],
312959
- ...server?.signIn ? ["", "# Neon Auth: the project's Auth URL (Neon console \u2192 Auth). Add NEXT_PUBLIC_SITE_URL to its trusted domains.", "NEON_AUTH_URL=https://ep-example.neonauth.us-east-2.aws.neon.build/neondb/auth"] : [],
312782
+ ...server ? ["", "# The Postgres database the site keeps its forms and its visitors' records in (a Neon or Supabase project's connection string).", "# Two tables of its own are made on first use. Unset, forms are not kept and nobody can sign in.", "DATABASE_URL=postgresql://user:password@host/db?sslmode=require"] : [],
312783
+ ...server?.signIn ? ["", "# Sign-in: neon-auth (the Neon project's Auth URL, Neon console \u2192 Auth) or supabase-auth", "# (https://<project>.supabase.co/auth/v1 and its anon key). Add NEXT_PUBLIC_SITE_URL to its trusted domains.", "SITE_AUTH_KIND=neon-auth", "SITE_AUTH_URL=https://ep-example.neonauth.us-east-2.aws.neon.build/neondb/auth", "SITE_AUTH_KEY=", "SITE_AUTH_ADMIN_KEY="] : [],
312960
312784
  ""
312961
312785
  ].join("\n") });
312962
312786
  files.push({ path: "README.md", content: readme(site, { tailwind, fonts, routes, code: moduleFile.size > 0, server }) });
@@ -338538,7 +338362,6 @@ function routesOf(screens) {
338538
338362
  var slug2;
338539
338363
  var init_routes = __esm({
338540
338364
  "lib/document/routes.ts"() {
338541
- "use strict";
338542
338365
  slug2 = (s) => s.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
338543
338366
  }
338544
338367
  });
@@ -344469,11 +344292,14 @@ __export(integrations_exports, {
344469
344292
  attachDatabase: () => attachDatabase,
344470
344293
  connectWithOAuth: () => connectWithOAuth,
344471
344294
  connectWithToken: () => connectWithToken,
344295
+ createDatabase: () => createDatabase,
344296
+ createDestination: () => createDestination,
344472
344297
  createResource: () => createResource,
344473
344298
  deployDestination: () => deployDestination,
344474
344299
  detachDatabase: () => detachDatabase,
344475
344300
  disconnect: () => disconnect,
344476
344301
  integrationsWorkspaceId: () => integrationsWorkspaceId,
344302
+ listCandidates: () => listCandidates,
344477
344303
  listDestinations: () => listDestinations,
344478
344304
  listResources: () => listResources,
344479
344305
  listSubmissions: () => listSubmissions,
@@ -344513,7 +344339,7 @@ function connectWithOAuth(workspaceId, provider2) {
344513
344339
  });
344514
344340
  });
344515
344341
  }
344516
- var integrationsWorkspaceId, listWorkspaceIntegrations, connectWithToken, disconnect, listResources, createResource, listDestinations, addDestination, removeDestination, deployDestination, siteBackend, attachDatabase, setSignIn, detachDatabase, listSubmissions;
344342
+ var integrationsWorkspaceId, listWorkspaceIntegrations, connectWithToken, disconnect, listResources, createResource, listDestinations, addDestination, removeDestination, deployDestination, siteBackend, attachDatabase, setSignIn, detachDatabase, listSubmissions, listCandidates, createDatabase, createDestination;
344517
344343
  var init_integrations = __esm({
344518
344344
  "lib/client/cloud/integrations.ts"() {
344519
344345
  init_api4();
@@ -344533,6 +344359,9 @@ var init_integrations = __esm({
344533
344359
  setSignIn = (key5, signIn) => api(`/api/sites/${key5}/backend`, { method: "PATCH", json: { signIn } });
344534
344360
  detachDatabase = (key5) => api(`/api/sites/${key5}/backend`, { method: "DELETE" });
344535
344361
  listSubmissions = async (key5, opts = {}) => (await api(`/api/sites/${key5}/backend/submissions?limit=${opts.limit ?? 100}${opts.form ? `&form=${encodeURIComponent(opts.form)}` : ""}`)).submissions;
344362
+ listCandidates = async (workspaceId, capability2) => (await api(`/api/workspaces/${encodeURIComponent(workspaceId)}/integrations/candidates?capability=${capability2}`)).candidates;
344363
+ createDatabase = (key5, provider2, connectionId) => api(`/api/sites/${key5}/backend`, { method: "PUT", json: { create: true, ...provider2 ? { provider: provider2 } : {}, ...connectionId ? { connectionId } : {} } });
344364
+ createDestination = async (key5, capability2, provider2, connectionId) => (await api(`/api/sites/${key5}/destinations`, { method: "POST", json: { create: true, capability: capability2, ...provider2 ? { provider: provider2 } : {}, ...connectionId ? { connectionId } : {} } })).destination;
344536
344365
  }
344537
344366
  });
344538
344367
 
@@ -344863,7 +344692,6 @@ function designRecorder() {
344863
344692
  var installed;
344864
344693
  var init_recorders = __esm({
344865
344694
  "lib/agent/design-script/recorders.ts"() {
344866
- "use strict";
344867
344695
  installed = null;
344868
344696
  }
344869
344697
  });
@@ -344890,7 +344718,6 @@ function designFrameOf(doc2, id3) {
344890
344718
  }
344891
344719
  var init_locate = __esm({
344892
344720
  "lib/agent/design-script/locate.ts"() {
344893
- "use strict";
344894
344721
  }
344895
344722
  });
344896
344723
 
@@ -345129,7 +344956,6 @@ function placeDesign(doc2, built, source3, size6, name2, at3) {
345129
344956
  var DESIGN_NAMESPACES, DERIVED2, templateOfBuild;
345130
344957
  var init_build3 = __esm({
345131
344958
  "lib/agent/design-script/build.ts"() {
345132
- "use strict";
345133
344959
  init_hash();
345134
344960
  init_scene_graph();
345135
344961
  init_libraries();
@@ -346340,6 +346166,12 @@ async function openFile() {
346340
346166
  if (!key5) throw new CommandError("This file is not saved to the cloud yet. Publish it first (publish_site).", "failed");
346341
346167
  return key5;
346342
346168
  }
346169
+ function attached(done, ctx2) {
346170
+ const db3 = done.database;
346171
+ const where = db3.target.slice(1).map((t3) => t3.name).join(" / ");
346172
+ ctx2.notice(`Database attached: ${where}`);
346173
+ return { summary: `Attached ${where} (${db3.connection.provider}, ${db3.connection.account}): the site's forms are saved there once it is published`, data: { provider: db3.connection.provider, account: db3.connection.account, target: db3.target } };
346174
+ }
346343
346175
  var integrationList, integrationOpen, asPath2, integrationListResources, place2, integrationAddDestination, integrationDeploy, integrationAttachDatabase, integrationSubmissions, integrationSetSignIn, integrationConfirmCommands;
346344
346176
  var init_integration = __esm({
346345
346177
  "lib/commands/integration.ts"() {
@@ -346432,7 +346264,7 @@ var init_integration = __esm({
346432
346264
  };
346433
346265
  }
346434
346266
  });
346435
- place2 = (p2) => `${p2.capability === "repo" ? "the repository" : "the hosting project"} ${[...p2.target, ...p2.createNamed ? [`${p2.createNamed} (new)`] : []].join(" / ")}`;
346267
+ place2 = (p2) => p2.create ? `a new ${p2.capability === "repo" ? "repository" : "hosting project"} named after the site` : `${p2.capability === "repo" ? "the repository" : "the hosting project"} ${[...p2.target ?? [], ...p2.createNamed ? [`${p2.createNamed} (new)`] : []].join(" / ")}`;
346436
346268
  integrationAddDestination = defineCommand({
346437
346269
  id: "integration.addDestination",
346438
346270
  title: "Add a destination for the site",
@@ -346440,28 +346272,34 @@ var init_integration = __esm({
346440
346272
  effect: "none",
346441
346273
  permission: null,
346442
346274
  params: external_exports.object({
346443
- connectionId: external_exports.string().describe("The connected account, from list_integrations."),
346444
- capability: external_exports.enum(["repo", "deploy"]).describe("repo: a GitHub repository to commit the site to. deploy: a Vercel project to deploy it to."),
346445
- target: external_exports.array(external_exports.string()).min(1).max(6).describe("The ids of the place, outermost first, from list_integration_resources: [owner, repository] or [team, project]. When creating a new one, everything but the last level."),
346446
- createNamed: external_exports.string().trim().min(1).max(100).optional().describe("Make a new repository or project with this name under target, and use it.")
346275
+ connectionId: external_exports.string().optional().describe("The connected account, from list_integrations. With create, optional: the account last used."),
346276
+ capability: external_exports.enum(["repo", "deploy"]).describe("repo: a repository to commit the site to (GitHub). deploy: a hosting project to deploy it to (Vercel)."),
346277
+ target: external_exports.array(external_exports.string()).min(1).max(6).optional().describe("The ids of the place, outermost first, from list_integration_resources: [owner, repository] or [team, project]. When creating a new one with createNamed, everything but the last level."),
346278
+ createNamed: external_exports.string().trim().min(1).max(100).optional().describe("Make a new repository or project with this name under target, and use it."),
346279
+ create: external_exports.boolean().optional().describe("The short way: make a new one named after the site in the account (connectionId, else the one last used, in its personal space) and use it. No target needed.")
346447
346280
  }),
346448
346281
  confirm: {
346449
346282
  level: "confirm",
346450
346283
  summary: (p2) => `${p2.createNamed ? "Create and use" : "Use"} ${place2(p2)} as a destination for this file's site`,
346451
- detail: (p2) => p2.createNamed ? "A new one is made in the connected account (a private repository, or a project), which may count toward that account's plan. Nothing is sent to it until the site is deployed there." : "Nothing is sent until the site is deployed there. Files PopCraft did not write are left as they are."
346284
+ detail: (p2) => p2.createNamed || p2.create ? "A new one is made in the connected account (a private repository, or a project), which may count toward that account's plan. Nothing is sent to it until the site is deployed there." : "Nothing is sent until the site is deployed there. Files PopCraft did not write are left as they are."
346452
346285
  },
346453
346286
  expose: {
346454
346287
  agent: {
346455
346288
  name: "add_site_destination",
346456
- description: "Choose where this file's site also goes: a GitHub repository (repo) or a Vercel project (deploy) inside a connected account, or a new one made there (createNamed). It only records the choice; deploy_site sends the site. The user approves every call."
346289
+ description: "Choose where this file's site also goes: a repository (repo, GitHub) or a hosting project (deploy, Vercel) inside a connected account. create: true makes a new one named after the site in one step (prefer it when the user has no place in mind); otherwise pick one with list_integration_resources, or createNamed under a target. It only records the choice; deploy_site sends the site. The user approves every call."
346457
346290
  }
346458
346291
  },
346459
346292
  run: async (p2, ctx2) => {
346460
346293
  const key5 = await openFile();
346461
- const { addDestination: addDestination2, createResource: createResource2 } = await Promise.resolve().then(() => (init_integrations(), integrations_exports));
346462
- const path = asPath2(p2.target);
346463
- const target2 = p2.createNamed ? [...path, await createResource2(p2.connectionId, p2.capability, path, p2.createNamed)] : path;
346464
- const made = await addDestination2(key5, p2.connectionId, p2.capability, target2);
346294
+ const { addDestination: addDestination2, createDestination: createDestination2, createResource: createResource2 } = await Promise.resolve().then(() => (init_integrations(), integrations_exports));
346295
+ let made;
346296
+ if (p2.create) made = await createDestination2(key5, p2.capability, void 0, p2.connectionId);
346297
+ else {
346298
+ if (!p2.connectionId || !p2.target) throw new CommandError("Say connectionId and target, or create: true.", "invalid_params");
346299
+ const path = asPath2(p2.target);
346300
+ const target2 = p2.createNamed ? [...path, await createResource2(p2.connectionId, p2.capability, path, p2.createNamed)] : path;
346301
+ made = await addDestination2(key5, p2.connectionId, p2.capability, target2);
346302
+ }
346465
346303
  const where = made.target.map((t3) => t3.name).join(" / ");
346466
346304
  ctx2.notice(`Destination added: ${where}`);
346467
346305
  return { summary: `Added ${where} (${made.connection.provider}, ${made.connection.account}) as a destination`, data: { destinationId: made.id, provider: made.connection.provider, account: made.connection.account, target: made.target } };
@@ -346506,24 +346344,27 @@ var init_integration = __esm({
346506
346344
  effect: "none",
346507
346345
  permission: null,
346508
346346
  params: external_exports.object({
346509
- connectionId: external_exports.string().describe("The connected database account (Neon), from list_integrations."),
346510
- target: external_exports.array(external_exports.string()).min(1).max(6).describe("The ids of the database, outermost first, from list_integration_resources (capability database): [organization, project, database]. When creating, everything above the new one."),
346347
+ connectionId: external_exports.string().optional().describe("The connected database account (Neon, Supabase), from list_integrations. With create, optional: the account last used."),
346348
+ target: external_exports.array(external_exports.string()).min(1).max(6).optional().describe("The ids of the database, outermost first, from list_integration_resources (capability database): Neon [organization, project, database], Supabase [organization, project]. When creating with createNamed, everything above the new one."),
346349
+ create: external_exports.boolean().optional().describe("The short way: make a new database named after the site in the account (connectionId, else the one last used) and attach it. No target needed."),
346511
346350
  createNamed: external_exports.string().trim().min(1).max(100).optional().describe("Make a new one with this name under target and use it: a project when target is [organization] (its first database is then used), a database when target is [organization, project].")
346512
346351
  }),
346513
346352
  confirm: {
346514
346353
  level: "confirm",
346515
- summary: (p2) => `${p2.createNamed ? "Create and attach" : "Attach"} the database ${[...p2.target, ...p2.createNamed ? [`${p2.createNamed} (new)`] : []].join(" / ")} to this file's site`,
346516
- detail: (p2) => `${p2.createNamed ? "A new one is made in the connected account, which may count toward that account's plan. " : ""}What visitors send through the site's forms is kept there from then on, in a table PopCraft makes (popcraft_submissions). Nothing else in the database is touched.`
346354
+ summary: (p2) => p2.create ? "Create a new database named after the site and attach it to this file's site" : `${p2.createNamed ? "Create and attach" : "Attach"} the database ${[...p2.target ?? [], ...p2.createNamed ? [`${p2.createNamed} (new)`] : []].join(" / ")} to this file's site`,
346355
+ detail: (p2) => `${p2.createNamed || p2.create ? "A new one is made in the connected account, which may count toward that account's plan. " : ""}What visitors send through the site's forms is kept there from then on, in a table PopCraft makes (popcraft_submissions). Nothing else in the database is touched.`
346517
346356
  },
346518
346357
  expose: {
346519
346358
  agent: {
346520
346359
  name: "attach_database",
346521
- description: "Give this file's site a database of the user's own (in a connected Neon account), or a new one made there (createNamed): what visitors send through the site's forms is saved in it once the site is published. Find the place with list_integration_resources (capability database); with several candidates ask the user. The user approves every call."
346360
+ description: "Give this file's site a database of the user's own (in a connected Neon or Supabase account): what visitors send through the site's forms is saved in it once the site is published. create: true makes a new one named after the site in one step (prefer it when the user has no database in mind); otherwise find one with list_integration_resources (capability database) and ask the user when there are several, or createNamed under a target. The user approves every call."
346522
346361
  }
346523
346362
  },
346524
346363
  run: async (p2, ctx2) => {
346525
346364
  const key5 = await openFile();
346526
- const { attachDatabase: attachDatabase2, createResource: createResource2, listResources: listResources3 } = await Promise.resolve().then(() => (init_integrations(), integrations_exports));
346365
+ const { attachDatabase: attachDatabase2, createDatabase: createDatabase2, createResource: createResource2, listResources: listResources3 } = await Promise.resolve().then(() => (init_integrations(), integrations_exports));
346366
+ if (p2.create) return attached(await createDatabase2(key5, void 0, p2.connectionId), ctx2);
346367
+ if (!p2.connectionId || !p2.target) throw new CommandError("Say connectionId and target, or create: true.", "invalid_params");
346527
346368
  let target2 = asPath2(p2.target);
346528
346369
  if (p2.createNamed) {
346529
346370
  target2 = [...target2, await createResource2(p2.connectionId, "database", target2, p2.createNamed)];
@@ -346532,10 +346373,7 @@ var init_integration = __esm({
346532
346373
  target2 = [...target2, next2.resources[0]];
346533
346374
  }
346534
346375
  }
346535
- const done = await attachDatabase2(key5, p2.connectionId, target2);
346536
- const where = done.database.target.slice(1).map((t3) => t3.name).join(" / ");
346537
- ctx2.notice(`Database attached: ${where}`);
346538
- return { summary: `Attached ${where} (${done.database.connection.provider}, ${done.database.connection.account}): the site's forms are saved there once it is published`, data: { provider: done.database.connection.provider, account: done.database.connection.account, target: done.database.target } };
346376
+ return attached(await attachDatabase2(key5, p2.connectionId, target2), ctx2);
346539
346377
  }
346540
346378
  });
346541
346379
  integrationSubmissions = defineCommand({
@@ -346572,7 +346410,7 @@ var init_integration = __esm({
346572
346410
  confirm: {
346573
346411
  level: "confirm",
346574
346412
  summary: (p2) => p2.on ? "Let this site's visitors create accounts and sign in" : "Stop signing this site's visitors in",
346575
- detail: (p2) => p2.on ? "Sign-in (Neon Auth) is turned on for the site's database and told the site's address. Strangers can then make accounts on the site; their accounts, and the records that are each visitor's own, are kept in that database." : "Visitors can no longer sign in from the site. Their accounts and records stay in the database."
346413
+ detail: (p2) => p2.on ? "Sign-in (the database's own: Neon Auth, Supabase Auth) is turned on for the site's database and told the site's address. Strangers can then make accounts on the site; their accounts, and the records that are each visitor's own, are kept in that database." : "Visitors can no longer sign in from the site. Their accounts and records stay in the database."
346576
346414
  },
346577
346415
  expose: {
346578
346416
  agent: {
@@ -392622,6 +392460,7 @@ var init_pictures = __esm({
392622
392460
  var template_exports = {};
392623
392461
  __export(template_exports, {
392624
392462
  ownCopy: () => ownCopy,
392463
+ rankOfficial: () => rankOfficial,
392625
392464
  runTemplate: () => runTemplate,
392626
392465
  sourceFiles: () => sourceFiles
392627
392466
  });
@@ -392648,32 +392487,27 @@ function sourceFiles(paths) {
392648
392487
  });
392649
392488
  }
392650
392489
  async function loadSource(file2) {
392651
- let mod;
392652
- try {
392653
- mod = await import(pathToFileURL2(file2).href);
392654
- } catch (e) {
392655
- throw new CliError(`${relative4(process.cwd(), file2)}: ${e.message}`);
392656
- }
392490
+ const mod = await import(pathToFileURL2(file2).href);
392657
392491
  const s = mod.default;
392658
392492
  return s && typeof s === "object" && typeof s.id === "string" && s.meta && typeof s.build === "function" ? s : null;
392659
392493
  }
392660
392494
  async function buildAll(files, out, appUrl, o) {
392661
392495
  if (!files.length) throw usage("No template sources (files whose default export is `defineTemplate({ \u2026 })`).");
392496
+ process.env.POPCRAFT_APP_URL ??= appUrl;
392662
392497
  const { kit } = await projectKit(dirname3(files[0]));
392663
392498
  await kit.prepareFonts(files.map((f2) => readFileSync11(f2, "utf8")));
392664
392499
  const built = [];
392500
+ let broken2 = 0;
392665
392501
  for (const file2 of files) {
392666
- const source3 = await loadSource(file2);
392667
- if (!source3) continue;
392668
- let template2;
392669
- for (let tries = 0; !template2; tries++) {
392670
- try {
392671
- template2 = kit.buildTemplateSource(source3);
392672
- } catch (e) {
392673
- const hash3 = e.hash;
392674
- if (!hash3 || tries > 64) throw new CliError(`${relative4(process.cwd(), file2)}: ${e.message}`);
392675
- await fetchShippedMedia(appUrl, hash3, o);
392676
- }
392502
+ let source3, template2;
392503
+ try {
392504
+ source3 = await loadSource(file2);
392505
+ if (!source3) continue;
392506
+ template2 = await kit.buildFromSource(source3, { appUrl });
392507
+ } catch (e) {
392508
+ o.info(`\u2716 ${relative4(process.cwd(), file2)}: ${e.message}`);
392509
+ broken2++;
392510
+ continue;
392677
392511
  }
392678
392512
  const dir = resolve4(out, source3.id);
392679
392513
  mkdirSync7(join10(dir, "media"), { recursive: true });
@@ -392683,15 +392517,7 @@ async function buildAll(files, out, appUrl, o) {
392683
392517
  o.info(`\u2713 ${relative4(process.cwd(), file2)} \u2192 ${relative4(process.cwd(), dir)} ${template2.meta.sizes ? template2.meta.sizes.join(", ") : ""}`);
392684
392518
  built.push({ file: file2, source: source3, template: template2, dir });
392685
392519
  }
392686
- return built;
392687
- }
392688
- async function fetchShippedMedia(appUrl, hash3, o) {
392689
- const dir = process.env.POPCRAFT_MEDIA_DIR ?? join10((await import("node:os")).homedir(), ".cache", "popcraft", "media");
392690
- o.info(` fetching PopCraft media ${hash3}\u2026`);
392691
- const res = await fetch(`${appUrl}/templates/media/${hash3}`).catch(() => null);
392692
- if (!res?.ok) throw new CliError(`Could not fetch ${appUrl}/templates/media/${hash3}`);
392693
- mkdirSync7(dir, { recursive: true });
392694
- writeFileSync8(join10(dir, hash3), new Uint8Array(await res.arrayBuffer()));
392520
+ return Object.assign(built, { broken: broken2 });
392695
392521
  }
392696
392522
  async function checkAll(built, o) {
392697
392523
  const { kit } = await projectKit(dirname3(built[0].file));
@@ -392708,6 +392534,16 @@ async function checkAll(built, o) {
392708
392534
  }
392709
392535
  return ok2;
392710
392536
  }
392537
+ function rankOfficial(index2, query2, f2 = {}) {
392538
+ const words = query2.toLowerCase().split(/\s+/).filter(Boolean);
392539
+ const one = (text, w) => new RegExp(`(^|[^a-z0-9])${w.replace(/[^a-z0-9]/g, "")}(e?s)?([^a-z0-9]|$)`).test(text);
392540
+ const has = (text, w) => one(text, w) || w.length > 3 && (one(text, w.replace(/es$/, "")) || one(text, w.replace(/s$/, "")));
392541
+ return Object.entries(index2).filter(([, e]) => (!f2.platform || e.platforms.includes(f2.platform)) && (!f2.format || e.formats.includes(f2.format)) && (!f2.useCase || e.useCases.includes(f2.useCase)) && (!f2.category || e.category === f2.category) && (!f2.kind || e.kind === f2.kind.toUpperCase()) && (!f2.animated || !!e.animated)).map(([id3, e]) => {
392542
+ const name2 = `${id3} ${e.name}`.toLowerCase(), tags = [...e.tags, ...e.formats, ...e.platforms, ...e.useCases, e.category].join(" ").toLowerCase(), about = e.description.toLowerCase();
392543
+ const per = words.map((w) => (has(name2, w) ? 3 : 0) + (has(tags, w) ? 2 : 0) + (has(about, w) ? 1 : 0));
392544
+ return { id: id3, e, matched: per.filter(Boolean).length, score: per.reduce((a, b) => a + b, 0) };
392545
+ }).filter((r) => !words.length || r.score > 0).sort((a, b) => b.matched - a.matched || b.score - a.score || a.id.localeCompare(b.id)).map(({ matched: _m, ...r }) => r);
392546
+ }
392711
392547
  function ownCopy(text, path, officialId, id3) {
392712
392548
  const from2 = ["src", ...path.split("/").slice(0, -1)];
392713
392549
  const kitPath = (rel) => {
@@ -392752,6 +392588,7 @@ async function runTemplate(argv, flags, ctx2) {
392752
392588
  if (!file2) throw usage("popcraft template new <file.ts> [--from <official id>]");
392753
392589
  if (existsSync11(file2)) throw usage(`${file2} exists`);
392754
392590
  const id3 = basename2(file2).replace(/\.(ts|js|mjs)$/, "");
392591
+ if (!/^[a-z0-9][a-z0-9-]{2,63}$/.test(id3)) throw usage(`The file name is the template's id: 3\u201364 lowercase letters, digits and dashes (${JSON.stringify(id3)} is not one). Try templates/spring-sale.ts`);
392755
392592
  const from2 = flagString(flags, "from");
392756
392593
  mkdirSync7(dirname3(resolve4(file2)), { recursive: true });
392757
392594
  writeFileSync8(file2, from2 ? copyOfficial((await projectKit(dirname3(resolve4(file2)))).root, from2, id3) : BLANK(id3));
@@ -392760,14 +392597,16 @@ async function runTemplate(argv, flags, ctx2) {
392760
392597
  }
392761
392598
  case "list": {
392762
392599
  const index2 = officialIndex((await projectKit(process.cwd())).root);
392763
- const words = paths.join(" ").toLowerCase().split(/\s+/).filter(Boolean);
392764
- const facet = (k2, v) => (e) => !v || [].concat(e[k2]).includes(v);
392765
- const rows = Object.entries(index2).filter(([, e]) => facet("platforms", flagString(flags, "platform"))(e) && facet("formats", flagString(flags, "format"))(e) && facet("useCases", flagString(flags, "useCase"))(e) && facet("category", flagString(flags, "category"))(e)).filter(([, e]) => (!flagBool(flags, "animated") || !!e.animated) && (!flagString(flags, "kind") || e.kind === flagString(flags, "kind").toUpperCase())).map(([id3, e]) => {
392766
- const hay = [id3, e.name, e.description, ...e.tags, ...e.formats, ...e.platforms, ...e.useCases].join(" ").toLowerCase();
392767
- return { id: id3, e, score: words.reduce((n, w) => n + (hay.includes(w) ? 1 : 0), 0) };
392768
- }).filter((r) => !words.length || r.score > 0).sort((a, b) => b.score - a.score || a.id.localeCompare(b.id)).slice(0, Number(flagString(flags, "limit") ?? 30));
392600
+ const rows = rankOfficial(index2, paths.join(" "), {
392601
+ platform: flagString(flags, "platform"),
392602
+ format: flagString(flags, "format"),
392603
+ useCase: flagString(flags, "useCase"),
392604
+ category: flagString(flags, "category"),
392605
+ kind: flagString(flags, "kind"),
392606
+ animated: flagBool(flags, "animated")
392607
+ }).slice(0, Number(flagString(flags, "limit") ?? 30));
392769
392608
  if (o.json) o.result(`${rows.length} templates`, rows.map((r) => ({ id: r.id, ...r.e })));
392770
- else for (const r of rows) o.line(`${r.id.padEnd(44)} ${r.e.name}${r.e.animated ? " (animated)" : ""}
392609
+ else for (const r of rows) o.line(`${r.id.padEnd(44)} ${r.e.name}${r.e.animated && !/animated/i.test(r.e.name) ? " (animated)" : ""}
392771
392610
  ${"".padEnd(44)} ${r.e.formats.join(", ")} \xB7 ${r.e.platforms.join(", ")}`);
392772
392611
  return 0;
392773
392612
  }
@@ -392791,15 +392630,17 @@ ${"".padEnd(44)} ${r.e.formats.join(", ")} \xB7 ${r.e.platforms.join(", ")}`);
392791
392630
  return 0;
392792
392631
  }
392793
392632
  case "build": {
392794
- await buildAll(sourceFiles(paths), out, ctx2.appUrl, o);
392633
+ const built = await buildAll(sourceFiles(paths), out, ctx2.appUrl, o);
392634
+ if (built.broken) throw new CliError(`${built.broken} source${built.broken === 1 ? "" : "s"} did not build`);
392795
392635
  return 0;
392796
392636
  }
392797
392637
  case "check":
392798
392638
  case "pictures":
392799
392639
  case "publish": {
392800
392640
  const built = await buildAll(sourceFiles(paths), out, ctx2.appUrl, o);
392801
- if (!built.length) throw usage("No template sources found.");
392802
- if (!await checkAll(built, o)) throw new CliError("Fix what the checks say, then run it again.");
392641
+ if (!built.length && !built.broken) throw usage("No template sources found.");
392642
+ const passed = built.length ? await checkAll(built, o) : true;
392643
+ if (built.broken || !passed) throw new CliError(`${built.broken ? `${built.broken} did not build. ` : ""}Fix what it says, then run it again.`);
392803
392644
  if (verb === "check") return 0;
392804
392645
  if (verb === "pictures" || !flagBool(flags, "noPictures")) {
392805
392646
  for (const b of built) await runPictures(b.dir, ctx2.appUrl, o);
@@ -392808,7 +392649,7 @@ ${"".padEnd(44)} ${r.e.formats.join(", ")} \xB7 ${r.e.platforms.join(", ")}`);
392808
392649
  return 0;
392809
392650
  }
392810
392651
  default:
392811
- throw usage("popcraft template new|build|check|pictures|publish \u2014 see `popcraft --help`");
392652
+ throw usage("popcraft template list|new|build|check|look|pictures|publish \u2014 see `popcraft --help`");
392812
392653
  }
392813
392654
  }
392814
392655
  var BLANK, officialIndex;
@@ -393178,7 +393019,7 @@ init_resources();
393178
393019
  init_desktop();
393179
393020
  init_hypery();
393180
393021
  import { createInterface } from "node:readline";
393181
- var VERSION2 = "0.5.0";
393022
+ var VERSION2 = "0.6.0";
393182
393023
  var HELP = `popcraft ${VERSION2} \u2014 the PopCraft command line
393183
393024
 
393184
393025
  Files (headless, on .popcraft files):
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@popcraft/cli",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "The PopCraft command line: edit .popcraft files headlessly, call the REST API, publish to the marketplace and manage the desktop app's local plugins, themes, fonts, skills and agents.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://popcraft.app/docs/api/cli",
@@ -34,7 +34,7 @@
34
34
  "esbuild": "0.28.2"
35
35
  },
36
36
  "dependencies": {
37
- "@popcraft/kit": "0.5.0"
37
+ "@popcraft/kit": "0.6.0"
38
38
  },
39
39
  "scripts": {
40
40
  "build": "node build.mjs",