appwrite-cli 18.0.1 → 18.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -35490,7 +35490,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
35490
35490
  }
35491
35491
  return positiveOption || option2;
35492
35492
  };
35493
- const getErrorMessage = (option2) => {
35493
+ const getErrorMessage2 = (option2) => {
35494
35494
  const bestOption = findBestOptionFromValue(option2);
35495
35495
  const optionKey = bestOption.attributeName();
35496
35496
  const source = this.getOptionValueSource(optionKey);
@@ -35499,7 +35499,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
35499
35499
  }
35500
35500
  return `option '${bestOption.flags}'`;
35501
35501
  };
35502
- const message = `error: ${getErrorMessage(option)} cannot be used with ${getErrorMessage(conflictingOption)}`;
35502
+ const message = `error: ${getErrorMessage2(option)} cannot be used with ${getErrorMessage2(conflictingOption)}`;
35503
35503
  this.error(message, { code: "commander.conflictingOption" });
35504
35504
  }
35505
35505
  /**
@@ -64940,6 +64940,7 @@ var import_inquirer3 = __toESM(require_inquirer(), 1);
64940
64940
  import fs4 from "fs";
64941
64941
  import path2 from "path";
64942
64942
  import readline from "node:readline";
64943
+ import { stripVTControlCharacters } from "node:util";
64943
64944
 
64944
64945
  // node_modules/commander/esm.mjs
64945
64946
  var import_index = __toESM(require_commander(), 1);
@@ -64987,7 +64988,7 @@ var id_default = ID;
64987
64988
  // lib/constants.ts
64988
64989
  var SDK_TITLE = "Appwrite";
64989
64990
  var SDK_TITLE_LOWER = "appwrite";
64990
- var SDK_VERSION = "18.0.0";
64991
+ var SDK_VERSION = "18.2.0";
64991
64992
  var SDK_LOGO = "\n _ _ _ ___ __ _____\n /_\\ _ __ _ ____ ___ __(_) |_ ___ / __\\ / / \\_ \\\n //_\\\\| '_ \\| '_ \\ \\ /\\ / / '__| | __/ _ \\ / / / / / /\\/\n / _ \\ |_) | |_) \\ V V /| | | | || __/ / /___/ /___/\\/ /_\n \\_/ \\_/ .__/| .__/ \\_/\\_/ |_| |_|\\__\\___| \\____/\\____/\\____/\n |_| |_|\n\n";
64992
64993
  var EXECUTABLE_NAME = "appwrite";
64993
64994
  var UPDATE_CHECK_INTERVAL_MS = 24 * 60 * 60 * 1e3;
@@ -65006,6 +65007,7 @@ var CONFIG_RESOURCE_KEYS = [
65006
65007
  "tablesDB",
65007
65008
  "tables",
65008
65009
  "teams",
65010
+ "webhooks",
65009
65011
  "collections"
65010
65012
  ];
65011
65013
  var TOP_LEVEL_RESOURCE_ARRAY_KEYS = new Set(
@@ -79263,6 +79265,8 @@ var getSafeDirectoryName = (value, fallback) => {
79263
79265
  var siteRequiresBuildCommand = (site) => {
79264
79266
  return !(site.framework === "other" && site.adapter === "static");
79265
79267
  };
79268
+ var WINDOWS_EXECUTABLE_NAME = `${EXECUTABLE_NAME.toLowerCase()}.exe`;
79269
+ var HOMEBREW_FORMULA_NAME = EXECUTABLE_NAME.toLowerCase();
79266
79270
  var isCloudHostname = (hostname3) => hostname3 === "cloud.appwrite.io" || hostname3.endsWith(".cloud.appwrite.io");
79267
79271
  var getConsoleBaseUrl = (endpoint) => {
79268
79272
  try {
@@ -103646,7 +103650,7 @@ var package_default = {
103646
103650
  type: "module",
103647
103651
  homepage: "https://appwrite.io/support",
103648
103652
  description: "Appwrite is an open-source self-hosted backend server that abstracts and simplifies complex and repetitive development tasks behind a very simple REST API",
103649
- version: "18.0.1",
103653
+ version: "18.2.0",
103650
103654
  license: "BSD-3-Clause",
103651
103655
  main: "dist/index.cjs",
103652
103656
  module: "dist/index.js",
@@ -103678,9 +103682,9 @@ var package_default = {
103678
103682
  "build:types": "tsc -p tsconfig.json --emitDeclarationOnly",
103679
103683
  "build:runtime": "npm run build:lib:runtime && npm run build:cli",
103680
103684
  "build:lib:runtime": "npm run build:lib:esm && npm run build:lib:cjs",
103681
- "build:lib:esm": "esbuild index.ts --bundle --platform=node --target=node18 --format=esm --loader:.hbs=text --outfile=dist/index.js",
103682
- "build:lib:cjs": "esbuild index.ts --bundle --platform=node --target=node18 --format=cjs --loader:.hbs=text --outfile=dist/index.cjs",
103683
- "build:cli": "esbuild cli.ts --bundle --platform=node --target=node18 --format=cjs --loader:.hbs=text --external:fsevents --outfile=dist/cli.cjs",
103685
+ "build:lib:esm": "esbuild index.ts --bundle --platform=node --target=node18 --format=esm --loader:.hbs=text --external:terminal-image --outfile=dist/index.js",
103686
+ "build:lib:cjs": "esbuild index.ts --bundle --platform=node --target=node18 --format=cjs --loader:.hbs=text --external:terminal-image --outfile=dist/index.cjs",
103687
+ "build:cli": "esbuild cli.ts --bundle --platform=node --target=node18 --format=cjs --loader:.hbs=text --external:fsevents --external:terminal-image --outfile=dist/cli.cjs",
103684
103688
  lint: "eslint .",
103685
103689
  format: 'prettier --write "**/*.{js,ts,json,md}"',
103686
103690
  generate: "tsx scripts/generate-commands.ts",
@@ -103691,7 +103695,7 @@ var package_default = {
103691
103695
  "mac-x64": "bun build cli.ts --compile --sourcemap=inline --target=bun-darwin-x64 --outfile build/appwrite-cli-darwin-x64",
103692
103696
  "mac-arm64": "bun build cli.ts --compile --sourcemap=inline --target=bun-darwin-arm64 --outfile build/appwrite-cli-darwin-arm64",
103693
103697
  "windows-x64": "bun build cli.ts --compile --sourcemap=inline --target=bun-windows-x64 --outfile build/appwrite-cli-win-x64.exe",
103694
- "windows-arm64": "esbuild cli.ts --bundle --loader:.hbs=text --platform=node --target=node18 --format=esm --external:fsevents --outfile=dist/bundle-win-arm64.mjs && pkg dist/bundle-win-arm64.mjs -t node18-win-arm64 -o build/appwrite-cli-win-arm64.exe"
103698
+ "windows-arm64": "esbuild cli.ts --bundle --loader:.hbs=text --platform=node --target=node18 --format=esm --external:fsevents --external:terminal-image --outfile=dist/bundle-win-arm64.mjs && pkg dist/bundle-win-arm64.mjs -t node18-win-arm64 -o build/appwrite-cli-win-arm64.exe"
103695
103699
  },
103696
103700
  dependencies: {
103697
103701
  "@appwrite.io/console": "~9.1.0",
@@ -103710,9 +103714,13 @@ var package_default = {
103710
103714
  "string-width": "^7.2.0",
103711
103715
  tail: "^2.2.6",
103712
103716
  tar: "^7.4.3",
103717
+ "terminal-image": "^3.1.1",
103713
103718
  undici: "^6.24.0",
103714
103719
  zod: "^4.3.5"
103715
103720
  },
103721
+ overrides: {
103722
+ phin: "3.7.1"
103723
+ },
103716
103724
  devDependencies: {
103717
103725
  "@typescript-eslint/eslint-plugin": "^8.0.0",
103718
103726
  "@typescript-eslint/parser": "^8.0.0",
@@ -105022,9 +105030,9 @@ var import_chalk5 = __toESM(require_source(), 1);
105022
105030
 
105023
105031
  // lib/sdks.ts
105024
105032
  import os5 from "os";
105025
- var sdkForConsole = async (requiresAuth = true) => {
105033
+ var sdkForConsole = async (requiresAuth = true, endpointOverride) => {
105026
105034
  const client = new Client();
105027
- const endpoint = globalConfig2.getEndpoint() || DEFAULT_ENDPOINT;
105035
+ const endpoint = endpointOverride || globalConfig2.getEndpoint() || DEFAULT_ENDPOINT;
105028
105036
  const cookie = globalConfig2.getCookie();
105029
105037
  const selfSigned = globalConfig2.getSelfSigned();
105030
105038
  if (requiresAuth && cookie === "") {
@@ -105145,11 +105153,23 @@ var getWebhooksService = async (sdk) => {
105145
105153
 
105146
105154
  // lib/questions.ts
105147
105155
  var whenOverride = (answers) => answers.override === void 0 ? true : answers.override;
105156
+ var buildSelectionLabel = (name, id) => `${name} (${id})`;
105157
+ var extractSelectionId = (value) => {
105158
+ const match = value.match(/\(([^()]+)\)$/);
105159
+ return match ? match[1] : value;
105160
+ };
105161
+ var getInitProjectOverrideMessage = () => {
105162
+ const projectName = localConfig.getProject().projectName;
105163
+ if (projectName) {
105164
+ return `A project is already linked to this directory (${projectName}). Override?`;
105165
+ }
105166
+ return "A project is already linked to this directory. Override?";
105167
+ };
105148
105168
  var questionsInitProject = [
105149
105169
  {
105150
105170
  type: "confirm",
105151
105171
  name: "override",
105152
- message: `An ${SDK_TITLE} project ( ${localConfig.getProject()["projectId"]} ) is already associated with the current directory. Would you like to override it?`,
105172
+ message: getInitProjectOverrideMessage(),
105153
105173
  when() {
105154
105174
  return Object.keys(localConfig.getProject()).length !== 0;
105155
105175
  }
@@ -105158,14 +105178,14 @@ var questionsInitProject = [
105158
105178
  type: "list",
105159
105179
  name: "start",
105160
105180
  when: whenOverride,
105161
- message: "How would you like to start?",
105181
+ message: "Select a setup method:",
105162
105182
  choices: [
105163
105183
  {
105164
- name: "Create new project",
105184
+ name: "Create a new project",
105165
105185
  value: "new"
105166
105186
  },
105167
105187
  {
105168
- name: "Link directory to an existing project",
105188
+ name: "Link this directory to an existing project",
105169
105189
  value: "existing"
105170
105190
  }
105171
105191
  ]
@@ -105173,7 +105193,7 @@ var questionsInitProject = [
105173
105193
  {
105174
105194
  type: "search-list",
105175
105195
  name: "organization",
105176
- message: "Choose your organization",
105196
+ message: "Choose your organization:",
105177
105197
  choices: async () => {
105178
105198
  const client = await sdkForConsole(true);
105179
105199
  const { teams } = isCloud() ? await paginate(
@@ -105192,9 +105212,10 @@ var questionsInitProject = [
105192
105212
  "teams"
105193
105213
  );
105194
105214
  const choices = teams.map((team, _idx) => {
105215
+ const label = buildSelectionLabel(team.name, team["$id"]);
105195
105216
  return {
105196
- name: `${team.name} (${team["$id"]})`,
105197
- value: team["$id"]
105217
+ name: label,
105218
+ value: label
105198
105219
  };
105199
105220
  });
105200
105221
  if (choices.length == 0) {
@@ -105223,13 +105244,13 @@ var questionsInitProject = [
105223
105244
  {
105224
105245
  type: "search-list",
105225
105246
  name: "project",
105226
- message: `Choose your ${SDK_TITLE} project.`,
105247
+ message: "Choose your project:",
105227
105248
  choices: async (answers) => {
105228
105249
  const queries = [
105229
105250
  JSON.stringify({
105230
105251
  method: "equal",
105231
105252
  attribute: "teamId",
105232
- values: [answers.organization]
105253
+ values: [extractSelectionId(answers.organization)]
105233
105254
  }),
105234
105255
  JSON.stringify({ method: "orderDesc", attribute: "$id" })
105235
105256
  ];
@@ -105241,14 +105262,10 @@ var questionsInitProject = [
105241
105262
  queries
105242
105263
  );
105243
105264
  const choices = projects.map((project) => {
105244
- const label = `${project.name} (${project["$id"]})`;
105265
+ const label = buildSelectionLabel(project.name, project["$id"]);
105245
105266
  return {
105246
105267
  name: label,
105247
- short: label,
105248
- value: {
105249
- $id: project["$id"],
105250
- region: project.region || ""
105251
- }
105268
+ value: label
105252
105269
  };
105253
105270
  });
105254
105271
  if (choices.length === 0) {
@@ -106817,8 +106834,18 @@ var DEPLOYMENT_TIMEOUT_MS = 10 * 60 * 1e3;
106817
106834
  var DEPLOYMENT_TIMEOUT_MINUTES = Math.round(
106818
106835
  DEPLOYMENT_TIMEOUT_MS / (60 * 1e3)
106819
106836
  );
106837
+ var SITE_SCREENSHOT_FINALIZATION_TIMEOUT_MS = 30 * 1e3;
106838
+ var SITE_SCREENSHOT_BUCKET_ID = "screenshots";
106839
+ var SITE_SCREENSHOT_PREVIEW_WIDTH = 480;
106840
+ var SITE_SCREENSHOT_PREVIEW_HEIGHT = 270;
106841
+ var SITE_TERMINAL_PREVIEW_TARGET_WIDTH = 72;
106842
+ var SITE_TERMINAL_PREVIEW_MAX_WIDTH = 80;
106843
+ var SITE_TERMINAL_PREVIEW_MAX_HEIGHT = 22;
106844
+ var SITE_TERMINAL_PREVIEW_MIN_HEIGHT = 8;
106820
106845
  var WAITING_JOKE_THRESHOLD_MS = 30 * 1e3;
106821
106846
  var WAITING_JOKE_URL = "https://xkcd.com/303/";
106847
+ var ANSI_RESET = "\x1B[0m";
106848
+ var terminalImageModulePromise;
106822
106849
  function getDeploymentProgressText(status, waitingSince) {
106823
106850
  if (status === "waiting" && waitingSince !== null && Date.now() - waitingSince >= WAITING_JOKE_THRESHOLD_MS) {
106824
106851
  return `Still waiting... ${WAITING_JOKE_URL}`;
@@ -106828,6 +106855,184 @@ function getDeploymentProgressText(status, waitingSince) {
106828
106855
  function getDeploymentTimeoutErrorMessage() {
106829
106856
  return `Deployment got stuck for more than ${DEPLOYMENT_TIMEOUT_MINUTES} minutes`;
106830
106857
  }
106858
+ async function getTerminalImage() {
106859
+ terminalImageModulePromise ??= import("terminal-image").then(
106860
+ (module) => module.default
106861
+ );
106862
+ return terminalImageModulePromise;
106863
+ }
106864
+ function getErrorMessage(error49) {
106865
+ if (error49 instanceof Error && error49.message.trim().length > 0) {
106866
+ return error49.message.trim();
106867
+ }
106868
+ if (Array.isArray(error49)) {
106869
+ const messages = error49.map((entry) => getErrorMessage(entry)).filter((entry) => entry !== "Unknown error");
106870
+ if (messages.length > 0) {
106871
+ return messages.join("; ");
106872
+ }
106873
+ }
106874
+ if (typeof error49 === "string" && error49.trim().length > 0) {
106875
+ return error49.trim();
106876
+ }
106877
+ if (error49 && typeof error49 === "object") {
106878
+ const objectMessage = Reflect.get(error49, "message");
106879
+ if (typeof objectMessage === "string" && objectMessage.trim().length > 0) {
106880
+ return objectMessage.trim();
106881
+ }
106882
+ try {
106883
+ return JSON.stringify(error49);
106884
+ } catch (_serializationError) {
106885
+ }
106886
+ }
106887
+ return "Unknown error";
106888
+ }
106889
+ function getSiteDeploymentScreenshots(deployment) {
106890
+ const screenshotLight = typeof deployment["screenshotLight"] === "string" && deployment["screenshotLight"].trim().length > 0 ? deployment["screenshotLight"] : void 0;
106891
+ const screenshotDark = typeof deployment["screenshotDark"] === "string" && deployment["screenshotDark"].trim().length > 0 ? deployment["screenshotDark"] : void 0;
106892
+ return {
106893
+ screenshotLight,
106894
+ screenshotDark
106895
+ };
106896
+ }
106897
+ function hasSiteDeploymentScreenshots(deployment) {
106898
+ const { screenshotLight, screenshotDark } = getSiteDeploymentScreenshots(deployment);
106899
+ return Boolean(screenshotLight || screenshotDark);
106900
+ }
106901
+ function shouldRenderSiteTerminalPreview() {
106902
+ return Boolean(process.stdout.isTTY) && !cliConfig.json && !cliConfig.raw;
106903
+ }
106904
+ function getSiteTerminalPreviewWidth() {
106905
+ const columns = process.stdout.columns ?? 80;
106906
+ return Math.max(
106907
+ 16,
106908
+ Math.min(
106909
+ columns - 4,
106910
+ SITE_TERMINAL_PREVIEW_TARGET_WIDTH,
106911
+ SITE_TERMINAL_PREVIEW_MAX_WIDTH
106912
+ )
106913
+ );
106914
+ }
106915
+ function getSiteTerminalPreviewHeight() {
106916
+ const rows = process.stdout.rows ?? 24;
106917
+ return Math.max(
106918
+ SITE_TERMINAL_PREVIEW_MIN_HEIGHT,
106919
+ Math.min(rows - 10, SITE_TERMINAL_PREVIEW_MAX_HEIGHT)
106920
+ );
106921
+ }
106922
+ async function renderImageBufferToTerminalPreview(buffer) {
106923
+ const terminalImage = await getTerminalImage();
106924
+ const originalTermProgram = process.env.TERM_PROGRAM;
106925
+ const originalTermProgramVersion = process.env.TERM_PROGRAM_VERSION;
106926
+ const originalKonsoleVersion = process.env.KONSOLE_VERSION;
106927
+ const originalKittyWindowId = process.env.KITTY_WINDOW_ID;
106928
+ delete process.env.TERM_PROGRAM;
106929
+ delete process.env.TERM_PROGRAM_VERSION;
106930
+ delete process.env.KONSOLE_VERSION;
106931
+ delete process.env.KITTY_WINDOW_ID;
106932
+ try {
106933
+ return await terminalImage.buffer(buffer, {
106934
+ width: getSiteTerminalPreviewWidth(),
106935
+ height: getSiteTerminalPreviewHeight(),
106936
+ preserveAspectRatio: true
106937
+ });
106938
+ } finally {
106939
+ if (originalTermProgram === void 0) {
106940
+ delete process.env.TERM_PROGRAM;
106941
+ } else {
106942
+ process.env.TERM_PROGRAM = originalTermProgram;
106943
+ }
106944
+ if (originalTermProgramVersion === void 0) {
106945
+ delete process.env.TERM_PROGRAM_VERSION;
106946
+ } else {
106947
+ process.env.TERM_PROGRAM_VERSION = originalTermProgramVersion;
106948
+ }
106949
+ if (originalKonsoleVersion === void 0) {
106950
+ delete process.env.KONSOLE_VERSION;
106951
+ } else {
106952
+ process.env.KONSOLE_VERSION = originalKonsoleVersion;
106953
+ }
106954
+ if (originalKittyWindowId === void 0) {
106955
+ delete process.env.KITTY_WINDOW_ID;
106956
+ } else {
106957
+ process.env.KITTY_WINDOW_ID = originalKittyWindowId;
106958
+ }
106959
+ }
106960
+ }
106961
+ async function fetchSiteScreenshotPreview(params) {
106962
+ const previewUrl = params.renderer.storageService.getFilePreview({
106963
+ bucketId: SITE_SCREENSHOT_BUCKET_ID,
106964
+ fileId: params.fileId,
106965
+ width: SITE_SCREENSHOT_PREVIEW_WIDTH,
106966
+ height: SITE_SCREENSHOT_PREVIEW_HEIGHT,
106967
+ output: ImageFormat.Png
106968
+ });
106969
+ const imageData = await params.renderer.consoleClient.call(
106970
+ "get",
106971
+ new URL(previewUrl),
106972
+ {},
106973
+ {},
106974
+ "arrayBuffer"
106975
+ );
106976
+ if (!(imageData instanceof ArrayBuffer)) {
106977
+ throw new Error("Failed to download the site screenshot preview.");
106978
+ }
106979
+ return renderImageBufferToTerminalPreview(Buffer.from(imageData));
106980
+ }
106981
+ function frameTerminalPreview(preview) {
106982
+ const lines = preview.split("\n").map((line) => line.replace(/\s+$/, ""));
106983
+ while (lines.length > 0 && stripVTControlCharacters(lines[0]).trim().length === 0) {
106984
+ lines.shift();
106985
+ }
106986
+ while (lines.length > 0 && stripVTControlCharacters(lines[lines.length - 1]).trim().length === 0) {
106987
+ lines.pop();
106988
+ }
106989
+ if (lines.length === 0) {
106990
+ return "";
106991
+ }
106992
+ const contentWidth = Math.max(
106993
+ ...lines.map((line) => stripVTControlCharacters(line).length)
106994
+ );
106995
+ const border = `+-${"-".repeat(contentWidth)}-+`;
106996
+ return [
106997
+ border,
106998
+ ...lines.map((line) => {
106999
+ const visibleWidth = stripVTControlCharacters(line).length;
107000
+ return `| ${line}${ANSI_RESET}${" ".repeat(contentWidth - visibleWidth)} |`;
107001
+ }),
107002
+ border
107003
+ ].join("\n");
107004
+ }
107005
+ async function renderSiteTerminalPreview(params) {
107006
+ const warnings = /* @__PURE__ */ new Set();
107007
+ const candidates = [
107008
+ { fileId: params.screenshotDark, label: "dark" },
107009
+ { fileId: params.screenshotLight, label: "light" }
107010
+ ];
107011
+ for (const candidate of candidates) {
107012
+ const { fileId, label } = candidate;
107013
+ if (!fileId) {
107014
+ continue;
107015
+ }
107016
+ try {
107017
+ const preview = await fetchSiteScreenshotPreview({
107018
+ renderer: params.renderer,
107019
+ fileId
107020
+ });
107021
+ return {
107022
+ preview: frameTerminalPreview(preview),
107023
+ warnings: []
107024
+ };
107025
+ } catch (previewError) {
107026
+ warnings.add(
107027
+ `${label === "dark" ? "Dark mode" : "Light mode"} screenshot: ${getErrorMessage(previewError)}`
107028
+ );
107029
+ }
107030
+ }
107031
+ return {
107032
+ preview: void 0,
107033
+ warnings: [...warnings]
107034
+ };
107035
+ }
106831
107036
  function withDeploymentLogsHint(message, deploymentLogsController) {
106832
107037
  const hint2 = deploymentLogsController.getToggleHint();
106833
107038
  return hint2.length > 0 ? `${message} \u2022 ${hint2}` : message;
@@ -107704,7 +107909,7 @@ var Push = class {
107704
107909
  deploymentLogsController
107705
107910
  )
107706
107911
  });
107707
- const timeoutDeadline = Date.now() + DEPLOYMENT_TIMEOUT_MS;
107912
+ let timeoutDeadline = Date.now() + DEPLOYMENT_TIMEOUT_MS;
107708
107913
  while (true) {
107709
107914
  if (Date.now() > timeoutDeadline) {
107710
107915
  deploymentLogPrinter.complete();
@@ -108091,6 +108296,8 @@ var Push = class {
108091
108296
  deploymentId
108092
108297
  );
108093
108298
  let waitingSince = null;
108299
+ let readyWithoutScreenshotsSince = null;
108300
+ let activationApplied = false;
108094
108301
  const deploymentLogPrinter = createDeploymentLogPrinter({
108095
108302
  label: `site:${site.name}`,
108096
108303
  showPrefix: sites.length > 1,
@@ -108130,7 +108337,7 @@ var Push = class {
108130
108337
  deploymentLogsController
108131
108338
  )
108132
108339
  });
108133
- const timeoutDeadline = Date.now() + DEPLOYMENT_TIMEOUT_MS;
108340
+ let timeoutDeadline = Date.now() + DEPLOYMENT_TIMEOUT_MS;
108134
108341
  while (true) {
108135
108342
  if (Date.now() > timeoutDeadline) {
108136
108343
  deploymentLogPrinter.complete();
@@ -108164,7 +108371,9 @@ var Push = class {
108164
108371
  waitingSince = null;
108165
108372
  }
108166
108373
  if (status === "ready") {
108167
- if (activate) {
108374
+ const { screenshotLight, screenshotDark } = getSiteDeploymentScreenshots(response);
108375
+ const screenshotsReady = hasSiteDeploymentScreenshots(response);
108376
+ if (activate && !activationApplied) {
108168
108377
  currentDeploymentEnd = "Setting active deployment...";
108169
108378
  updaterRow.update({
108170
108379
  status: "Activating",
@@ -108180,6 +108389,28 @@ var Push = class {
108180
108389
  siteId: site["$id"],
108181
108390
  deploymentId
108182
108391
  });
108392
+ activationApplied = true;
108393
+ }
108394
+ if (!screenshotsReady) {
108395
+ readyWithoutScreenshotsSince ??= Date.now();
108396
+ timeoutDeadline = Math.max(
108397
+ timeoutDeadline,
108398
+ readyWithoutScreenshotsSince + SITE_SCREENSHOT_FINALIZATION_TIMEOUT_MS
108399
+ );
108400
+ if (Date.now() - readyWithoutScreenshotsSince < SITE_SCREENSHOT_FINALIZATION_TIMEOUT_MS) {
108401
+ currentDeploymentEnd = "Finalizing deployment preview...";
108402
+ updaterRow.update({
108403
+ status: "Finalizing",
108404
+ end: withDeploymentLogsHint(
108405
+ currentDeploymentEnd,
108406
+ deploymentLogsController
108407
+ )
108408
+ });
108409
+ await new Promise(
108410
+ (resolve3) => setTimeout(resolve3, POLL_DEBOUNCE2)
108411
+ );
108412
+ continue;
108413
+ }
108183
108414
  }
108184
108415
  successfullyDeployed++;
108185
108416
  let url2 = "";
@@ -108206,7 +108437,14 @@ var Push = class {
108206
108437
  status: activate ? "Deployed" : "Built",
108207
108438
  end: ""
108208
108439
  });
108209
- deploymentLogs.push({ url: url2, consoleUrl });
108440
+ deploymentLogs.push({
108441
+ name: site.name,
108442
+ url: url2,
108443
+ consoleUrl,
108444
+ screenshotLight,
108445
+ screenshotDark,
108446
+ screenshotsPending: !screenshotsReady
108447
+ });
108210
108448
  break;
108211
108449
  } else if (status === "failed") {
108212
108450
  deploymentLogPrinter.complete();
@@ -108261,16 +108499,76 @@ var Push = class {
108261
108499
  Spinner.stop();
108262
108500
  }
108263
108501
  if (deploymentLogs.length > 0) {
108502
+ let sitePreviewRenderer = null;
108503
+ let sitePreviewSetupWarning = null;
108504
+ const emittedPreviewWarnings = /* @__PURE__ */ new Set();
108505
+ if (shouldRenderSiteTerminalPreview() && deploymentLogs.some(
108506
+ (deploymentLog) => deploymentLog.screenshotLight || deploymentLog.screenshotDark
108507
+ )) {
108508
+ try {
108509
+ const consoleClient = await sdkForConsole(
108510
+ true,
108511
+ localConfig.getEndpoint() || globalConfig2.getEndpoint()
108512
+ );
108513
+ sitePreviewRenderer = {
108514
+ consoleClient,
108515
+ storageService: await getStorageService(consoleClient)
108516
+ };
108517
+ } catch (previewSetupError) {
108518
+ sitePreviewSetupWarning = getErrorMessage(previewSetupError);
108519
+ }
108520
+ }
108264
108521
  process.stdout.write("\n");
108265
- deploymentLogs.forEach((dl, index) => {
108522
+ for (const [index, dl] of deploymentLogs.entries()) {
108266
108523
  if (index > 0) {
108267
108524
  process.stdout.write("\n");
108268
108525
  }
108526
+ if (deploymentLogs.length > 1) {
108527
+ process.stdout.write(`${import_chalk9.default.cyan.bold(`Site: ${dl.name}`)}
108528
+ `);
108529
+ }
108530
+ if (dl.screenshotsPending) {
108531
+ hint(
108532
+ "Deployment is ready, but screenshot generation is still finalizing. Open the deployment page to view it once it is available."
108533
+ );
108534
+ }
108535
+ if (sitePreviewRenderer && (dl.screenshotLight || dl.screenshotDark)) {
108536
+ const preview = await renderSiteTerminalPreview({
108537
+ renderer: sitePreviewRenderer,
108538
+ screenshotLight: dl.screenshotLight,
108539
+ screenshotDark: dl.screenshotDark
108540
+ });
108541
+ if (preview.preview) {
108542
+ process.stdout.write(
108543
+ `
108544
+ ${import_chalk9.default.cyan.bold("Screenshot preview")}
108545
+
108546
+ `
108547
+ );
108548
+ process.stdout.write(`${preview.preview}
108549
+
108550
+ `);
108551
+ }
108552
+ for (const previewWarning of preview.warnings) {
108553
+ const warningMessage = `Screenshot preview unavailable: ${previewWarning}`;
108554
+ if (emittedPreviewWarnings.has(warningMessage)) {
108555
+ continue;
108556
+ }
108557
+ emittedPreviewWarnings.add(warningMessage);
108558
+ hint(warningMessage);
108559
+ }
108560
+ } else if (sitePreviewSetupWarning && (dl.screenshotLight || dl.screenshotDark)) {
108561
+ const warningMessage = `Screenshot preview unavailable: ${sitePreviewSetupWarning}`;
108562
+ if (!emittedPreviewWarnings.has(warningMessage)) {
108563
+ emittedPreviewWarnings.add(warningMessage);
108564
+ hint(warningMessage);
108565
+ }
108566
+ }
108269
108567
  if (dl.url) {
108270
108568
  this.log(`Preview link: ${import_chalk9.default.cyan(dl.url)}`);
108271
108569
  }
108272
108570
  this.log(`Deployment page: ${import_chalk9.default.cyan(dl.consoleUrl)}`);
108273
- });
108571
+ }
108274
108572
  process.stdout.write("\n");
108275
108573
  }
108276
108574
  return {
@@ -110521,7 +110819,7 @@ var BaseDatabasesGenerator = class {
110521
110819
  };
110522
110820
 
110523
110821
  // lib/commands/generators/typescript/templates/types.ts.hbs
110524
- var types_ts_default = "import { type Models } from '{{appwriteDep}}';\n\n{{{ENUMS}}}{{{TYPES}}}\ndeclare const __roleStringBrand: unique symbol;\nexport type RoleString = string & { readonly [__roleStringBrand]: never };\n\nexport type RoleBuilder = {\n any: () => RoleString;\n user: (userId: string, status?: string) => RoleString;\n users: (status?: string) => RoleString;\n guests: () => RoleString;\n team: (teamId: string, role?: string) => RoleString;\n member: (memberId: string) => RoleString;\n label: (label: string) => RoleString;\n}\n\nexport type PermissionBuilder = {\n read: (role: RoleString) => string;\n write: (role: RoleString) => string;\n create: (role: RoleString) => string;\n update: (role: RoleString) => string;\n delete: (role: RoleString) => string;\n}\n\nexport type PermissionCallback = (permission: PermissionBuilder, role: RoleBuilder) => string[];\n\nexport type QueryValue = string | number | boolean;\n\nexport type ExtractQueryValue<T> = T extends (infer U)[]\n ? U extends QueryValue ? U : never\n : T extends QueryValue | null ? NonNullable<T> : never;\n\nexport type QueryableKeys<T> = {\n [K in keyof T]: ExtractQueryValue<T[K]> extends never ? never : K;\n}[keyof T];\n\nexport type QueryBuilder<T> = {\n equal: <K extends QueryableKeys<T>>(field: K, value: ExtractQueryValue<T[K]>) => string;\n notEqual: <K extends QueryableKeys<T>>(field: K, value: ExtractQueryValue<T[K]>) => string;\n lessThan: <K extends QueryableKeys<T>>(field: K, value: ExtractQueryValue<T[K]>) => string;\n lessThanEqual: <K extends QueryableKeys<T>>(field: K, value: ExtractQueryValue<T[K]>) => string;\n greaterThan: <K extends QueryableKeys<T>>(field: K, value: ExtractQueryValue<T[K]>) => string;\n greaterThanEqual: <K extends QueryableKeys<T>>(field: K, value: ExtractQueryValue<T[K]>) => string;\n contains: <K extends QueryableKeys<T>>(field: K, value: ExtractQueryValue<T[K]>) => string;\n search: <K extends QueryableKeys<T>>(field: K, value: string) => string;\n isNull: <K extends QueryableKeys<T>>(field: K) => string;\n isNotNull: <K extends QueryableKeys<T>>(field: K) => string;\n startsWith: <K extends QueryableKeys<T>>(field: K, value: string) => string;\n endsWith: <K extends QueryableKeys<T>>(field: K, value: string) => string;\n between: <K extends QueryableKeys<T>>(field: K, start: ExtractQueryValue<T[K]>, end: ExtractQueryValue<T[K]>) => string;\n select: <K extends keyof T>(fields: K[]) => string;\n orderAsc: <K extends keyof T>(field: K) => string;\n orderDesc: <K extends keyof T>(field: K) => string;\n limit: (value: number) => string;\n offset: (value: number) => string;\n cursorAfter: (documentId: string) => string;\n cursorBefore: (documentId: string) => string;\n or: (...queries: string[]) => string;\n and: (...queries: string[]) => string;\n}\n\nexport type DatabaseId = {{{databaseIdType}}};\n\n{{{DATABASE_TABLES_TYPE}}}\n";
110822
+ var types_ts_default = "import { type Models } from '{{appwriteDep}}';\n\n{{{ENUMS}}}{{{TYPES}}}\ndeclare const __roleStringBrand: unique symbol;\nexport type RoleString = string & { readonly [__roleStringBrand]: never };\n\nexport type RoleBuilder = {\n any: () => RoleString;\n user: (userId: string, status?: string) => RoleString;\n users: (status?: string) => RoleString;\n guests: () => RoleString;\n team: (teamId: string, role?: string) => RoleString;\n member: (memberId: string) => RoleString;\n label: (label: string) => RoleString;\n}\n\nexport type PermissionBuilder = {\n read: (role: RoleString) => string;\n write: (role: RoleString) => string;\n create: (role: RoleString) => string;\n update: (role: RoleString) => string;\n delete: (role: RoleString) => string;\n}\n\nexport type PermissionCallback = (permission: PermissionBuilder, role: RoleBuilder) => string[];\n\nexport type QueryValue = string | number | boolean;\n\nexport type ExtractQueryValue<T> = T extends (infer U)[]\n ? U extends QueryValue ? U : never\n : T extends QueryValue | null ? NonNullable<T> : never;\n\nexport type QueryableKeys<T> = {\n [K in keyof T]: ExtractQueryValue<T[K]> extends never ? never : K;\n}[keyof T];\n\nexport type QueryableFieldValue<T, K> = K extends keyof T\n ? ExtractQueryValue<T[K]>\n : never;\n\nexport type QueryBuilder<T> = {\n equal: <K extends QueryableKeys<T>>(field: K, value: QueryableFieldValue<T, K>) => string;\n notEqual: <K extends QueryableKeys<T>>(field: K, value: QueryableFieldValue<T, K>) => string;\n lessThan: <K extends QueryableKeys<T>>(field: K, value: QueryableFieldValue<T, K>) => string;\n lessThanEqual: <K extends QueryableKeys<T>>(field: K, value: QueryableFieldValue<T, K>) => string;\n greaterThan: <K extends QueryableKeys<T>>(field: K, value: QueryableFieldValue<T, K>) => string;\n greaterThanEqual: <K extends QueryableKeys<T>>(field: K, value: QueryableFieldValue<T, K>) => string;\n contains: <K extends QueryableKeys<T>>(field: K, value: QueryableFieldValue<T, K>) => string;\n search: <K extends QueryableKeys<T>>(field: K, value: string) => string;\n isNull: <K extends QueryableKeys<T>>(field: K) => string;\n isNotNull: <K extends QueryableKeys<T>>(field: K) => string;\n startsWith: <K extends QueryableKeys<T>>(field: K, value: string) => string;\n endsWith: <K extends QueryableKeys<T>>(field: K, value: string) => string;\n between: <K extends QueryableKeys<T>>(field: K, start: QueryableFieldValue<T, K>, end: QueryableFieldValue<T, K>) => string;\n select: <K extends keyof T>(fields: K[]) => string;\n orderAsc: <K extends keyof T>(field: K) => string;\n orderDesc: <K extends keyof T>(field: K) => string;\n limit: (value: number) => string;\n offset: (value: number) => string;\n cursorAfter: (documentId: string) => string;\n cursorBefore: (documentId: string) => string;\n or: (...queries: string[]) => string;\n and: (...queries: string[]) => string;\n}\n\nexport type DatabaseId = {{{databaseIdType}}};\n\n{{{DATABASE_TABLES_TYPE}}}\n";
110525
110823
 
110526
110824
  // lib/commands/generators/typescript/templates/databases.ts.hbs
110527
110825
  var databases_ts_default = 'import { Client, TablesDB, ID, Query, type Models, Permission, Role } from \'{{appwriteDep}}\';\nimport type { DatabaseHandle, DatabaseId, DatabaseTableMap, DatabaseTables, QueryBuilder, QueryValue, PermissionBuilder, RoleBuilder, RoleString } from \'./types{{importExt}}\';\n{{#if supportsServerSide}}\nimport { PROJECT_ID, ENDPOINT, API_KEY } from \'./constants{{importExt}}\';\n{{else}}\nimport { PROJECT_ID, ENDPOINT } from \'./constants{{importExt}}\';\n{{/if}}\n\nconst createQueryBuilder = <T>(): QueryBuilder<T> => ({\n equal: (field, value) => Query.equal(String(field), value as QueryValue),\n notEqual: (field, value) => Query.notEqual(String(field), value as QueryValue),\n lessThan: (field, value) => Query.lessThan(String(field), value as QueryValue),\n lessThanEqual: (field, value) => Query.lessThanEqual(String(field), value as QueryValue),\n greaterThan: (field, value) => Query.greaterThan(String(field), value as QueryValue),\n greaterThanEqual: (field, value) => Query.greaterThanEqual(String(field), value as QueryValue),\n contains: (field, value) => Query.contains(String(field), value as string | QueryValue[]),\n search: (field, value) => Query.search(String(field), value),\n isNull: (field) => Query.isNull(String(field)),\n isNotNull: (field) => Query.isNotNull(String(field)),\n startsWith: (field, value) => Query.startsWith(String(field), value),\n endsWith: (field, value) => Query.endsWith(String(field), value),\n between: (field, start, end) => Query.between(String(field), start as string | number, end as string | number),\n select: (fields) => Query.select(fields.map(String)),\n orderAsc: (field) => Query.orderAsc(String(field)),\n orderDesc: (field) => Query.orderDesc(String(field)),\n limit: (value) => Query.limit(value),\n offset: (value) => Query.offset(value),\n cursorAfter: (documentId) => Query.cursorAfter(documentId),\n cursorBefore: (documentId) => Query.cursorBefore(documentId),\n or: (...queries) => Query.or(queries),\n and: (...queries) => Query.and(queries),\n});\n\n{{{TABLE_ID_MAP}}}\n\n{{{TABLES_WITH_RELATIONSHIPS}}}\n\nconst roleBuilder: RoleBuilder = {\n any: () => Role.any() as RoleString,\n user: (userId, status?) => Role.user(userId, status) as RoleString,\n users: (status?) => Role.users(status) as RoleString,\n guests: () => Role.guests() as RoleString,\n team: (teamId, role?) => Role.team(teamId, role) as RoleString,\n member: (memberId) => Role.member(memberId) as RoleString,\n label: (label) => Role.label(label) as RoleString,\n};\n\nconst permissionBuilder: PermissionBuilder = {\n read: (role) => Permission.read(role),\n write: (role) => Permission.write(role),\n create: (role) => Permission.create(role),\n update: (role) => Permission.update(role),\n delete: (role) => Permission.delete(role),\n};\n\nconst resolvePermissions = (callback?: (permission: { read: (role: RoleString) => string; write: (role: RoleString) => string; create: (role: RoleString) => string; update: (role: RoleString) => string; delete: (role: RoleString) => string }, role: { any: () => RoleString; user: (userId: string, status?: string) => RoleString; users: (status?: string) => RoleString; guests: () => RoleString; team: (teamId: string, role?: string) => RoleString; member: (memberId: string) => RoleString; label: (label: string) => RoleString }) => string[]): string[] | undefined =>\n callback?.(permissionBuilder, roleBuilder);\n\nfunction createTableApi<T extends Models.Row>(\n tablesDB: TablesDB,\n databaseId: string,\n tableId: string,\n) {\n return {\n create: (data: Omit<T, keyof Models.Row>, options?: { rowId?: string; permissions?: (permission: { read: (role: RoleString) => string; write: (role: RoleString) => string; create: (role: RoleString) => string; update: (role: RoleString) => string; delete: (role: RoleString) => string }, role: { any: () => RoleString; user: (userId: string, status?: string) => RoleString; users: (status?: string) => RoleString; guests: () => RoleString; team: (teamId: string, role?: string) => RoleString; member: (memberId: string) => RoleString; label: (label: string) => RoleString }) => string[]; transactionId?: string }) =>\n tablesDB.createRow<T>({\n databaseId,\n tableId,\n rowId: options?.rowId ?? ID.unique(),\n data: data as T extends Models.DefaultRow ? Partial<Models.Row> & Record<string, unknown> : Partial<Models.Row> & Omit<T, keyof Models.Row>,\n permissions: resolvePermissions(options?.permissions),\n transactionId: options?.transactionId,\n }),\n get: (id: string) =>\n tablesDB.getRow<T>({\n databaseId,\n tableId,\n rowId: id,\n }),\n update: (id: string, data: Partial<Omit<T, keyof Models.Row>>, options?: { permissions?: (permission: { read: (role: RoleString) => string; write: (role: RoleString) => string; create: (role: RoleString) => string; update: (role: RoleString) => string; delete: (role: RoleString) => string }, role: { any: () => RoleString; user: (userId: string, status?: string) => RoleString; users: (status?: string) => RoleString; guests: () => RoleString; team: (teamId: string, role?: string) => RoleString; member: (memberId: string) => RoleString; label: (label: string) => RoleString }) => string[]; transactionId?: string }) =>\n tablesDB.updateRow<T>({\n databaseId,\n tableId,\n rowId: id,\n data: data as T extends Models.DefaultRow ? Partial<Models.Row> & Record<string, unknown> : Partial<Models.Row> & Partial<Omit<T, keyof Models.Row>>,\n ...(options?.permissions ? { permissions: resolvePermissions(options.permissions) } : {}),\n transactionId: options?.transactionId,\n }),\n delete: async (id: string, options?: { transactionId?: string }) => {\n await tablesDB.deleteRow({\n databaseId,\n tableId,\n rowId: id,\n transactionId: options?.transactionId,\n });\n },\n list: (options?: { queries?: (q: QueryBuilder<T>) => string[] }) =>\n tablesDB.listRows<T>({\n databaseId,\n tableId,\n queries: options?.queries?.(createQueryBuilder<T>()),\n }),{{{BULK_METHODS}}}\n };\n}\n\n{{{BULK_CHECK}}}\nconst hasOwn = (obj: unknown, key: string): boolean =>\n obj != null && Object.prototype.hasOwnProperty.call(obj, key);\n\nfunction createDatabaseHandle<D extends DatabaseId>(\n tablesDB: TablesDB,\n databaseId: D,\n): DatabaseHandle<D> {\n const tableApiCache = new Map<string, unknown>();\n const dbMap = tableIdMap[databaseId];\n\n return {\n use: <T extends keyof DatabaseTableMap[D] & string>(tableId: T): DatabaseTableMap[D][T] => {\n if (!hasOwn(dbMap, tableId)) {\n throw new Error(`Unknown table "${tableId}" in database "${databaseId}"`);\n }\n\n if (!tableApiCache.has(tableId)) {\n const resolvedTableId = dbMap[tableId];\n const api = createTableApi(tablesDB, databaseId, resolvedTableId);\n {{{BULK_REMOVAL}}}\n tableApiCache.set(tableId, api);\n }\n return tableApiCache.get(tableId) as DatabaseTableMap[D][T];\n },\n{{#if supportsServerSide}}\n create: (tableId: string, name: string, options?: { permissions?: (permission: { read: (role: RoleString) => string; write: (role: RoleString) => string; create: (role: RoleString) => string; update: (role: RoleString) => string; delete: (role: RoleString) => string }, role: { any: () => RoleString; user: (userId: string, status?: string) => RoleString; users: (status?: string) => RoleString; guests: () => RoleString; team: (teamId: string, role?: string) => RoleString; member: (memberId: string) => RoleString; label: (label: string) => RoleString }) => string[]; rowSecurity?: boolean; enabled?: boolean; columns?: object[]; indexes?: object[] }) =>\n tablesDB.createTable({\n databaseId,\n tableId,\n name,\n permissions: resolvePermissions(options?.permissions),\n rowSecurity: options?.rowSecurity,\n enabled: options?.enabled,\n columns: options?.columns,\n indexes: options?.indexes,\n }),\n update: (tableId: string, options?: { name?: string; permissions?: (permission: { read: (role: RoleString) => string; write: (role: RoleString) => string; create: (role: RoleString) => string; update: (role: RoleString) => string; delete: (role: RoleString) => string }, role: { any: () => RoleString; user: (userId: string, status?: string) => RoleString; users: (status?: string) => RoleString; guests: () => RoleString; team: (teamId: string, role?: string) => RoleString; member: (memberId: string) => RoleString; label: (label: string) => RoleString }) => string[]; rowSecurity?: boolean; enabled?: boolean }) => {\n if (!hasOwn(dbMap, tableId)) {\n throw new Error(`Unknown table "${tableId}" in database "${databaseId}"`);\n }\n const resolvedTableId = dbMap[tableId];\n return tablesDB.updateTable({\n databaseId,\n tableId: resolvedTableId,\n name: options?.name,\n permissions: resolvePermissions(options?.permissions),\n rowSecurity: options?.rowSecurity,\n enabled: options?.enabled,\n });\n },\n delete: async (tableId: string) => {\n if (!hasOwn(dbMap, tableId)) {\n throw new Error(`Unknown table "${tableId}" in database "${databaseId}"`);\n }\n const resolvedTableId = dbMap[tableId];\n await tablesDB.deleteTable({\n databaseId,\n tableId: resolvedTableId,\n });\n },\n{{/if}}\n };\n}\n\nfunction createDatabasesApi(tablesDB: TablesDB): DatabaseTables {\n const dbCache = new Map<DatabaseId, ReturnType<typeof createDatabaseHandle>>();\n\n return {\n use: (databaseId: DatabaseId) => {\n if (!hasOwn(tableIdMap, databaseId)) {\n throw new Error(`Unknown database "${databaseId}"`);\n }\n\n if (!dbCache.has(databaseId)) {\n dbCache.set(databaseId, createDatabaseHandle(tablesDB, databaseId));\n }\n return dbCache.get(databaseId);\n },\n{{#if supportsServerSide}}\n create: (databaseId: string, name: string, options?: { enabled?: boolean }) =>\n tablesDB.create({\n databaseId,\n name,\n enabled: options?.enabled,\n }),\n update: (databaseId: DatabaseId, options?: { name?: string; enabled?: boolean }) => {\n return tablesDB.update({\n databaseId,\n name: options?.name ?? databaseId,\n enabled: options?.enabled,\n });\n },\n delete: async (databaseId: DatabaseId) => {\n await tablesDB.delete({\n databaseId,\n });\n },\n{{/if}}\n } as DatabaseTables;\n}\n\n// Initialize client\nconst client = new Client()\n .setEndpoint(ENDPOINT)\n .setProject(PROJECT_ID){{#if supportsServerSide}}\n .setKey(API_KEY){{/if}};\n\nconst tablesDB = new TablesDB(client);\n\nexport const databases: DatabaseTables = createDatabasesApi(tablesDB);\n';
@@ -110538,7 +110836,7 @@ var databasesTemplate = import_handlebars.default.compile(String(databases_ts_de
110538
110836
  var indexTemplate = import_handlebars.default.compile(String(index_ts_default));
110539
110837
  var constantsTemplate = import_handlebars.default.compile(String(constants_ts_default));
110540
110838
  var PERMISSION_CALLBACK_INLINE = `(permission: { read: (role: RoleString) => string; write: (role: RoleString) => string; create: (role: RoleString) => string; update: (role: RoleString) => string; delete: (role: RoleString) => string }, role: { any: () => RoleString; user: (userId: string, status?: string) => RoleString; users: (status?: string) => RoleString; guests: () => RoleString; team: (teamId: string, role?: string) => RoleString; member: (memberId: string) => RoleString; label: (label: string) => RoleString }) => string[]`;
110541
- var getQueryCallbackInline = (typeName) => `(q: { equal: <K extends QueryableKeys<${typeName}>>(field: K, value: ExtractQueryValue<${typeName}[K]>) => string; notEqual: <K extends QueryableKeys<${typeName}>>(field: K, value: ExtractQueryValue<${typeName}[K]>) => string; lessThan: <K extends QueryableKeys<${typeName}>>(field: K, value: ExtractQueryValue<${typeName}[K]>) => string; lessThanEqual: <K extends QueryableKeys<${typeName}>>(field: K, value: ExtractQueryValue<${typeName}[K]>) => string; greaterThan: <K extends QueryableKeys<${typeName}>>(field: K, value: ExtractQueryValue<${typeName}[K]>) => string; greaterThanEqual: <K extends QueryableKeys<${typeName}>>(field: K, value: ExtractQueryValue<${typeName}[K]>) => string; contains: <K extends QueryableKeys<${typeName}>>(field: K, value: ExtractQueryValue<${typeName}[K]>) => string; search: <K extends QueryableKeys<${typeName}>>(field: K, value: string) => string; isNull: <K extends QueryableKeys<${typeName}>>(field: K) => string; isNotNull: <K extends QueryableKeys<${typeName}>>(field: K) => string; startsWith: <K extends QueryableKeys<${typeName}>>(field: K, value: string) => string; endsWith: <K extends QueryableKeys<${typeName}>>(field: K, value: string) => string; between: <K extends QueryableKeys<${typeName}>>(field: K, start: ExtractQueryValue<${typeName}[K]>, end: ExtractQueryValue<${typeName}[K]>) => string; select: <K extends keyof ${typeName}>(fields: K[]) => string; orderAsc: <K extends keyof ${typeName}>(field: K) => string; orderDesc: <K extends keyof ${typeName}>(field: K) => string; limit: (value: number) => string; offset: (value: number) => string; cursorAfter: (documentId: string) => string; cursorBefore: (documentId: string) => string; or: (...queries: string[]) => string; and: (...queries: string[]) => string }) => string[]`;
110839
+ var getQueryCallbackInline = (typeName) => `(q: { equal: <K extends QueryableKeys<${typeName}>>(field: K, value: QueryableFieldValue<${typeName}, K>) => string; notEqual: <K extends QueryableKeys<${typeName}>>(field: K, value: QueryableFieldValue<${typeName}, K>) => string; lessThan: <K extends QueryableKeys<${typeName}>>(field: K, value: QueryableFieldValue<${typeName}, K>) => string; lessThanEqual: <K extends QueryableKeys<${typeName}>>(field: K, value: QueryableFieldValue<${typeName}, K>) => string; greaterThan: <K extends QueryableKeys<${typeName}>>(field: K, value: QueryableFieldValue<${typeName}, K>) => string; greaterThanEqual: <K extends QueryableKeys<${typeName}>>(field: K, value: QueryableFieldValue<${typeName}, K>) => string; contains: <K extends QueryableKeys<${typeName}>>(field: K, value: QueryableFieldValue<${typeName}, K>) => string; search: <K extends QueryableKeys<${typeName}>>(field: K, value: string) => string; isNull: <K extends QueryableKeys<${typeName}>>(field: K) => string; isNotNull: <K extends QueryableKeys<${typeName}>>(field: K) => string; startsWith: <K extends QueryableKeys<${typeName}>>(field: K, value: string) => string; endsWith: <K extends QueryableKeys<${typeName}>>(field: K, value: string) => string; between: <K extends QueryableKeys<${typeName}>>(field: K, start: QueryableFieldValue<${typeName}, K>, end: QueryableFieldValue<${typeName}, K>) => string; select: <K extends keyof ${typeName}>(fields: K[]) => string; orderAsc: <K extends keyof ${typeName}>(field: K) => string; orderDesc: <K extends keyof ${typeName}>(field: K) => string; limit: (value: number) => string; offset: (value: number) => string; cursorAfter: (documentId: string) => string; cursorBefore: (documentId: string) => string; or: (...queries: string[]) => string; and: (...queries: string[]) => string }) => string[]`;
110542
110840
  var TypeScriptDatabasesGenerator = class extends BaseDatabasesGenerator {
110543
110841
  language = "typescript";
110544
110842
  fileExtension = "ts";
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../lib/commands/init.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAq0BpC,eAAO,MAAM,IAAI,SAEqB,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../lib/commands/init.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAu9BpC,eAAO,MAAM,IAAI,SAEqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../lib/commands/push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../lib/commands/push.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../lib/commands/run.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8XpC,eAAO,MAAM,GAAG,SASb,CAAC"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../lib/commands/run.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgZpC,eAAO,MAAM,GAAG,SASb,CAAC"}