appwrite-cli 22.3.0 → 22.4.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/README.md CHANGED
@@ -29,7 +29,7 @@ Once the installation is complete, you can verify the install using
29
29
 
30
30
  ```sh
31
31
  $ appwrite -v
32
- 22.3.0
32
+ 22.4.0
33
33
  ```
34
34
 
35
35
  ### Install using prebuilt binaries
@@ -83,7 +83,7 @@ $ scoop install https://raw.githubusercontent.com/appwrite/sdk-for-cli/master/sc
83
83
  Once the installation completes, you can verify your install using
84
84
  ```
85
85
  $ appwrite -v
86
- 22.3.0
86
+ 22.4.0
87
87
  ```
88
88
 
89
89
  ## Getting Started
@@ -97,7 +97,7 @@ $ appwrite login
97
97
  ? Enter your password ********
98
98
  ✓ Success
99
99
  ```
100
- This will also prompt you to enter your Appwrite endpoint ( default: http://localhost/v1 )
100
+ This will also prompt you to enter your Appwrite endpoint ( default: http://localhost:9520/v1 )
101
101
 
102
102
  * ### Initialising your project
103
103
  Once logged in, the CLI needs to be initialised before you can use it with your Appwrite project. You can do this with the `appwrite init project` command.
@@ -227,7 +227,7 @@ $ appwrite client --reset
227
227
  The Appwrite CLI can also work in a CI environment. The initialisation of the CLI works a bit differently in CI. In CI, you set your `endpoint`, `projectId` and `API Key` using
228
228
 
229
229
  ```sh
230
- appwrite client --endpoint http://localhost/v1 --projectId <PROJECT_ID> --key <API KEY>
230
+ appwrite client --endpoint http://localhost:9520/v1 --projectId <PROJECT_ID> --key <API KEY>
231
231
  ```
232
232
 
233
233
 
package/dist/cli.cjs CHANGED
@@ -86539,7 +86539,7 @@ var package_default = {
86539
86539
  type: "module",
86540
86540
  homepage: "https://appwrite.io/support",
86541
86541
  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",
86542
- version: "22.3.0",
86542
+ version: "22.4.0",
86543
86543
  license: "BSD-3-Clause",
86544
86544
  main: "dist/index.cjs",
86545
86545
  module: "dist/index.js",
@@ -101271,7 +101271,7 @@ var validateCrossDatabase = (data, ctx) => {
101271
101271
  // lib/constants.ts
101272
101272
  var SDK_TITLE = "Appwrite";
101273
101273
  var SDK_TITLE_LOWER = "appwrite";
101274
- var SDK_VERSION = "22.3.0";
101274
+ var SDK_VERSION = "22.4.0";
101275
101275
  var SDK_NAME = "Command Line";
101276
101276
  var SDK_PLATFORM = "console";
101277
101277
  var SDK_LANGUAGE = "cli";
@@ -101286,7 +101286,7 @@ var GITHUB_REPO = "appwrite/sdk-for-cli";
101286
101286
  var GITHUB_RELEASES_URL = `https://github.com/${GITHUB_REPO}/releases`;
101287
101287
  var DEFAULT_ENDPOINT = "https://cloud.appwrite.io/v1";
101288
101288
  var OAUTH2_CLIENT_ID = "appwrite-cli";
101289
- var OAUTH2_SCOPES = "openid email profile account.admin";
101289
+ var OAUTH2_SCOPES = "openid email profile all";
101290
101290
  var CONFIG_RESOURCE_KEYS = [
101291
101291
  "databases",
101292
101292
  "functions",
@@ -131693,7 +131693,15 @@ var siteRequiresBuildCommand = (site) => {
131693
131693
  };
131694
131694
  var getErrorMessage = (error52) => {
131695
131695
  if (error52 instanceof Error) {
131696
- return error52.message;
131696
+ const message = typeof error52.message === "string" ? error52.message.trim() : "";
131697
+ if (message) {
131698
+ return message;
131699
+ }
131700
+ const response = error52.response;
131701
+ if (typeof response === "string" && response.trim() !== "") {
131702
+ return response.trim();
131703
+ }
131704
+ return "An unknown error occurred.";
131697
131705
  }
131698
131706
  return String(error52);
131699
131707
  };
@@ -132218,7 +132226,7 @@ function isCloud() {
132218
132226
  const hostname3 = new URL(endpoint).hostname;
132219
132227
  return hostname3.endsWith("appwrite.io");
132220
132228
  }
132221
- var SKILLS_REPO = "https://github.com/appwrite/agent-skills";
132229
+ var SKILLS_REPO = "https://github.com/appwrite/skills";
132222
132230
  var LANGUAGE_MARKERS = {
132223
132231
  typescript: [
132224
132232
  "package.json",
@@ -134510,26 +134518,51 @@ var printQueryErrorHint = (err) => {
134510
134518
  );
134511
134519
  };
134512
134520
  var ERROR_DETAIL_KEYS = ["code", "type", "response"];
134521
+ var ERROR_DETAIL_INDENT = " ";
134522
+ var ERROR_DETAIL_LABEL_WIDTH = Math.max(...ERROR_DETAIL_KEYS.map((key) => key.length)) + 2;
134523
+ var formatErrorDetail = (value) => {
134524
+ if (typeof value === "string") {
134525
+ const text = value;
134526
+ try {
134527
+ const parsed = JSON.parse(text);
134528
+ if (parsed && typeof parsed === "object") {
134529
+ value = parsed;
134530
+ }
134531
+ } catch {
134532
+ return text;
134533
+ }
134534
+ }
134535
+ try {
134536
+ const json2 = JSON.stringify(value, null, 2) ?? String(value);
134537
+ return json2.split("\n").map((line, index) => index === 0 ? line : ERROR_DETAIL_INDENT + line).join("\n");
134538
+ } catch {
134539
+ return String(value);
134540
+ }
134541
+ };
134513
134542
  var formatErrorForLog = (err) => {
134514
- const stack = err.stack || `${err.name}: ${err.message}`;
134515
- const detailLines = ERROR_DETAIL_KEYS.flatMap((key) => {
134543
+ const lines = [
134544
+ `${import_chalk2.default.red.bold(err.name || "Error")}${import_chalk2.default.red(`: ${getErrorMessage(err)}`)}`
134545
+ ];
134546
+ for (const key of ERROR_DETAIL_KEYS) {
134516
134547
  if (!Object.prototype.hasOwnProperty.call(err, key)) {
134517
- return [];
134548
+ continue;
134518
134549
  }
134519
134550
  const value = err[key];
134520
- let detail = "undefined";
134521
- try {
134522
- detail = typeof value === "string" ? JSON.stringify(value) : JSON.stringify(value) ?? String(value);
134523
- } catch {
134524
- detail = String(value);
134525
- }
134526
- return [`${key}: ${detail}`];
134527
- });
134528
- if (detailLines.length === 0) {
134529
- return stack;
134551
+ lines.push(
134552
+ `${ERROR_DETAIL_INDENT}${import_chalk2.default.cyan(`${key}:`.padEnd(ERROR_DETAIL_LABEL_WIDTH))}${formatErrorDetail(value)}`
134553
+ );
134554
+ }
134555
+ const frames = (err.stack ?? "").split("\n").filter((line) => line.trim().startsWith("at "));
134556
+ if (frames.length > 0) {
134557
+ lines.push(
134558
+ "",
134559
+ import_chalk2.default.dim(`${ERROR_DETAIL_INDENT}Stack trace:`),
134560
+ ...frames.map(
134561
+ (frame) => import_chalk2.default.dim(`${ERROR_DETAIL_INDENT.repeat(2)}${frame.trim()}`)
134562
+ )
134563
+ );
134530
134564
  }
134531
- const [summary, ...frames] = stack.split("\n");
134532
- return [summary, ...detailLines, ...frames].join("\n");
134565
+ return lines.join("\n");
134533
134566
  };
134534
134567
  var parseError = (err) => {
134535
134568
  if (cliConfig.report) {
@@ -134560,7 +134593,7 @@ Is Cloud: ${isCloud()}`;
134560
134593
  githubIssueUrl.searchParams.append("template", "bug.yaml");
134561
134594
  githubIssueUrl.searchParams.append(
134562
134595
  "title",
134563
- `\u{1F41B} Bug Report: ${err.message}`
134596
+ `\u{1F41B} Bug Report: ${getErrorMessage(err)}`
134564
134597
  );
134565
134598
  githubIssueUrl.searchParams.append(
134566
134599
  "actual-behavior",
@@ -134590,7 +134623,7 @@ ${stack}`
134590
134623
  printQueryErrorHint(err);
134591
134624
  } else {
134592
134625
  log("For detailed error pass the --verbose or --report flag");
134593
- error51(err.message);
134626
+ error51(getErrorMessage(err));
134594
134627
  printQueryErrorHint(err);
134595
134628
  }
134596
134629
  process.exit(1);
@@ -134659,7 +134692,7 @@ var commandDescriptions = {
134659
134692
  avatars: `The avatars command aims to help you complete everyday tasks related to your app image, icons, and avatars.`,
134660
134693
  databases: `(Legacy) The databases command allows you to create structured collections of documents and query and filter lists of documents.`,
134661
134694
  "tables-db": `The tables-db command allows you to create structured tables of columns and query and filter lists of rows.`,
134662
- init: `The init command provides a convenient wrapper for creating and initializing projects, functions, collections, buckets, teams, messaging-topics, and agent skills in ${SDK_TITLE}.`,
134695
+ init: `The init command provides a convenient wrapper for creating and initializing projects, functions, collections, buckets, teams, messaging-topics, and skills in ${SDK_TITLE}.`,
134663
134696
  push: `The push command provides a convenient wrapper for pushing your functions, collections, buckets, teams, and messaging-topics.`,
134664
134697
  run: `The run command allows you to run the project locally to allow easy development and quick debugging.`,
134665
134698
  functions: `The functions command allows you to view, create, and manage your Cloud Functions.`,
@@ -137015,7 +137048,7 @@ var deleteServerSession = async (sessionId) => {
137015
137048
  } catch (e) {
137016
137049
  return {
137017
137050
  deleted: false,
137018
- error: e instanceof Error ? e.message : String(e)
137051
+ error: getErrorMessage(e)
137019
137052
  };
137020
137053
  }
137021
137054
  };
@@ -137565,10 +137598,8 @@ var logout = new Command("logout").description(commandDescriptions["logout"]).co
137565
137598
  } else if (remainingSessions.length > 0) {
137566
137599
  const nextSession = remainingSessions.find((session) => session.email) ?? remainingSessions[0];
137567
137600
  globalConfig2.setCurrentSession(nextSession.id);
137568
- if (!logoutFailed) {
137569
- success2(
137570
- nextSession.email ? `Switched to ${nextSession.email}` : `Switched to session at ${nextSession.endpoint}`
137571
- );
137601
+ if (!logoutFailed && nextSession.email) {
137602
+ success2(`Switched to ${nextSession.email}`);
137572
137603
  }
137573
137604
  } else if (remainingSessions.length === 0) {
137574
137605
  globalConfig2.setCurrentSession("");
@@ -141206,7 +141237,7 @@ async function downloadDeploymentCode(params) {
141206
141237
  }
141207
141238
  } catch (e) {
141208
141239
  if (e instanceof AppwriteException) {
141209
- error51(e.message);
141240
+ error51(getErrorMessage(e));
141210
141241
  return;
141211
141242
  } else {
141212
141243
  throw e;
@@ -142353,7 +142384,7 @@ var installInitProjectSkills = async () => {
142353
142384
  }
142354
142385
  } catch (e) {
142355
142386
  const msg = e instanceof Error ? e.message : String(e);
142356
- error51(`Failed to install agent skills: ${msg}`);
142387
+ error51(`Failed to install skills: ${msg}`);
142357
142388
  hint(`You can install them later with '${EXECUTABLE_NAME} init skill'.`);
142358
142389
  }
142359
142390
  };
@@ -142615,7 +142646,7 @@ var initTopic = async () => {
142615
142646
  var initSkill = async () => {
142616
142647
  process.chdir(localConfig.configDirectoryPath);
142617
142648
  const cwd = process.cwd();
142618
- log("Fetching available Appwrite agent skills ...");
142649
+ log("Fetching available Appwrite skills ...");
142619
142650
  const { skills, tempDir } = fetchAvailableSkills();
142620
142651
  try {
142621
142652
  const { selectedSkills } = await import_inquirer5.default.prompt([
@@ -143030,7 +143061,7 @@ var init = new Command("init").description(commandDescriptions["init"]).action(a
143030
143061
  init.command("project").description("Init a new Appwrite project").option("--organization-id <organization-id>", "Appwrite organization ID").option("--project-id <project-id>", "Appwrite project ID").option("--project-name <project-name>", "Appwrite project ID").action(actionRunner(initProject));
143031
143062
  init.command("function").alias("functions").description("Init a new Appwrite function").action(actionRunner(initFunction));
143032
143063
  init.command("site").alias("sites").description("Init a new Appwrite site").action(actionRunner(initSite));
143033
- init.command("skill").alias("skills").description("Install Appwrite agent skills for AI coding agents").action(actionRunner(initSkill));
143064
+ init.command("skill").alias("skills").description("Install Appwrite skills for AI coding agents").action(actionRunner(initSkill));
143034
143065
  init.command("bucket").alias("buckets").description("Init a new Appwrite bucket").action(actionRunner(initBucket));
143035
143066
  init.command("team").alias("teams").description("Init a new Appwrite team").action(actionRunner(initTeam));
143036
143067
  init.command("collection").alias("collections").description("Init a new Appwrite collection").action(actionRunner(initCollection));
@@ -151206,7 +151237,7 @@ var accountListKeysCommand = account.command(`list-keys`).description(`Get a lis
151206
151237
  async ({ total }) => parse3(await (await getAccountClient()).listKeys(total))
151207
151238
  )
151208
151239
  );
151209
- var accountCreateKeyCommand = account.command(`create-key`).description(`Create a new account API key.`).requiredOption(`--name <name>`, `Key name. Max length: 128 chars.`).requiredOption(`--scopes [scopes...]`, `Key scopes list. Maximum of 100 scopes are allowed.`).option(`--expire <expire>`, `Expiration time in ISO 8601 (https://www.iso.org/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.`).action(
151240
+ var accountCreateKeyCommand = account.command(`create-key`).description(`Create a new account API key.`).requiredOption(`--name <name>`, `Key name. Max length: 128 chars.`).requiredOption(`--scopes [scopes...]`, `Key scopes list. Maximum of 200 scopes are allowed.`).option(`--expire <expire>`, `Expiration time in ISO 8601 (https://www.iso.org/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.`).action(
151210
151241
  actionRunner(
151211
151242
  async ({ name, scopes, expire }) => parse3(await (await getAccountClient()).createKey(name, scopes, expire))
151212
151243
  )
@@ -151216,7 +151247,7 @@ var accountGetKeyCommand = account.command(`get-key`).description(`Get a key by
151216
151247
  async ({ keyId }) => parse3(await (await getAccountClient()).getKey(keyId))
151217
151248
  )
151218
151249
  );
151219
- var accountUpdateKeyCommand = account.command(`update-key`).description(`Update a key by its unique ID. Use this endpoint to update the name, scopes, or expiration time of an API key.`).requiredOption(`--key-id <key-id>`, `Key unique ID.`).requiredOption(`--name <name>`, `Key name. Max length: 128 chars.`).requiredOption(`--scopes [scopes...]`, `Key scopes list. Maximum of 100 scopes are allowed.`).option(`--expire <expire>`, `Expiration time in ISO 8601 (https://www.iso.org/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.`).action(
151250
+ var accountUpdateKeyCommand = account.command(`update-key`).description(`Update a key by its unique ID. Use this endpoint to update the name, scopes, or expiration time of an API key.`).requiredOption(`--key-id <key-id>`, `Key unique ID.`).requiredOption(`--name <name>`, `Key name. Max length: 128 chars.`).requiredOption(`--scopes [scopes...]`, `Key scopes list. Maximum of 200 scopes are allowed.`).option(`--expire <expire>`, `Expiration time in ISO 8601 (https://www.iso.org/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.`).action(
151220
151251
  actionRunner(
151221
151252
  async ({ keyId, name, scopes, expire }) => parse3(await (await getAccountClient()).updateKey(keyId, name, scopes, expire))
151222
151253
  )
@@ -151226,15 +151257,6 @@ var accountDeleteKeyCommand = account.command(`delete-key`).description(`Delete
151226
151257
  async ({ keyId }) => parse3(await (await getAccountClient()).deleteKey(keyId))
151227
151258
  )
151228
151259
  );
151229
- var accountListLogsCommand = account.command(`list-logs`).description(`Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common pagination prefer --limit and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Only supported methods are limit and offset`).option(
151230
- `--total [value]`,
151231
- `When set to false, the total count returned will be 0 and will not be calculated.`,
151232
- (value) => value === void 0 ? true : parseBool(value)
151233
- ).option(`--limit <limit>`, `Maximum number of results to return.`, parseInteger).option(`--offset <offset>`, `Number of results to skip.`, parseInteger).action(
151234
- actionRunner(
151235
- async ({ queries, total, limit, offset }) => parse3(await (await getAccountClient()).listLogs(buildQueries({ queries, limit, offset }), total))
151236
- )
151237
- );
151238
151260
  var accountUpdateMFACommand = account.command(`update-mfa`).description(`Enable or disable MFA on an account.`).requiredOption(`--mfa <mfa>`, `Enable or disable MFA.`, parseBool).action(
151239
151261
  actionRunner(
151240
151262
  async ({ mfa }) => parse3(await (await getAccountClient()).updateMFA(mfa))
@@ -152099,11 +152121,6 @@ var databasesDeleteDocumentCommand = databases.command(`delete-document`).descri
152099
152121
  async ({ databaseId, collectionId, documentId, transactionId }) => parse3(await (await getDatabasesClient()).deleteDocument(databaseId, collectionId, documentId, transactionId))
152100
152122
  )
152101
152123
  );
152102
- var databasesListDocumentLogsCommand = databases.command(`list-document-logs`).description(`Get the document activity logs list by its unique ID.`).requiredOption(`--database-id <database-id>`, `Database ID.`).requiredOption(`--collection-id <collection-id>`, `Collection ID.`).requiredOption(`--document-id <document-id>`, `Document ID.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common pagination prefer --limit and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Only supported methods are limit and offset`).option(`--limit <limit>`, `Maximum number of results to return.`, parseInteger).option(`--offset <offset>`, `Number of results to skip.`, parseInteger).action(
152103
- actionRunner(
152104
- async ({ databaseId, collectionId, documentId, queries, limit, offset }) => parse3(await (await getDatabasesClient()).listDocumentLogs(databaseId, collectionId, documentId, buildQueries({ queries, limit, offset })))
152105
- )
152106
- );
152107
152124
  var databasesDecrementDocumentAttributeCommand = databases.command(`decrement-document-attribute`).description(`Decrement a specific attribute of a document by a given value.`).requiredOption(`--database-id <database-id>`, `Database ID.`).requiredOption(`--collection-id <collection-id>`, `Collection ID.`).requiredOption(`--document-id <document-id>`, `Document ID.`).requiredOption(`--attribute <attribute>`, `Attribute key.`).option(`--value <value>`, `Value to increment the attribute by. The value must be a number.`, parseInteger).option(`--min <min>`, `Minimum value for the attribute. If the current value is lesser than this value, an exception will be thrown.`, parseInteger).option(`--transaction-id <transaction-id>`, `Transaction ID for staging the operation.`).action(
152108
152125
  actionRunner(
152109
152126
  async ({ databaseId, collectionId, documentId, attribute, value, min, transactionId }) => parse3(await (await getDatabasesClient()).decrementDocumentAttribute(databaseId, collectionId, documentId, attribute, value, min, transactionId))
@@ -152139,21 +152156,11 @@ var databasesDeleteIndexCommand = databases.command(`delete-index`).description(
152139
152156
  async ({ databaseId, collectionId, key }) => parse3(await (await getDatabasesClient()).deleteIndex(databaseId, collectionId, key))
152140
152157
  )
152141
152158
  );
152142
- var databasesListCollectionLogsCommand = databases.command(`list-collection-logs`).description(`Get the collection activity logs list by its unique ID.`).requiredOption(`--database-id <database-id>`, `Database ID.`).requiredOption(`--collection-id <collection-id>`, `Collection ID.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common pagination prefer --limit and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Only supported methods are limit and offset`).option(`--limit <limit>`, `Maximum number of results to return.`, parseInteger).option(`--offset <offset>`, `Number of results to skip.`, parseInteger).action(
152143
- actionRunner(
152144
- async ({ databaseId, collectionId, queries, limit, offset }) => parse3(await (await getDatabasesClient()).listCollectionLogs(databaseId, collectionId, buildQueries({ queries, limit, offset })))
152145
- )
152146
- );
152147
152159
  var databasesGetCollectionUsageCommand = databases.command(`get-collection-usage`).description(`Get usage metrics and statistics for a collection. Returning the total number of documents. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.`).requiredOption(`--database-id <database-id>`, `Database ID.`).requiredOption(`--collection-id <collection-id>`, `Collection ID.`).option(`--range <range>`, `Date range.`).action(
152148
152160
  actionRunner(
152149
152161
  async ({ databaseId, collectionId, range }) => parse3(await (await getDatabasesClient()).getCollectionUsage(databaseId, collectionId, range))
152150
152162
  )
152151
152163
  );
152152
- var databasesListLogsCommand = databases.command(`list-logs`).description(`Get the database activity logs list by its unique ID.`).requiredOption(`--database-id <database-id>`, `Database ID.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common pagination prefer --limit and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Only supported methods are limit and offset`).option(`--limit <limit>`, `Maximum number of results to return.`, parseInteger).option(`--offset <offset>`, `Number of results to skip.`, parseInteger).action(
152153
- actionRunner(
152154
- async ({ databaseId, queries, limit, offset }) => parse3(await (await getDatabasesClient()).listLogs(databaseId, buildQueries({ queries, limit, offset })))
152155
- )
152156
- );
152157
152164
  var databasesGetUsageCommand = databases.command(`get-usage`).description(`Get usage metrics and statistics for a database. You can view the total number of collections, documents, and storage usage. The response includes both current totals and historical data over time. Use the optional range parameter to specify the time window for historical data: 24h (last 24 hours), 30d (last 30 days), or 90d (last 90 days). If not specified, range defaults to 30 days.`).requiredOption(`--database-id <database-id>`, `Database ID.`).option(`--range <range>`, `Date range.`).action(
152158
152165
  actionRunner(
152159
152166
  async ({ databaseId, range }) => parse3(await (await getDatabasesClient()).getUsage(databaseId, range))
@@ -152190,7 +152197,7 @@ var functionsCreateCommand = functions.command(`create`).description(`Create a n
152190
152197
  `--logging [value]`,
152191
152198
  `When disabled, executions will exclude logs and errors, and will be slightly faster.`,
152192
152199
  (value) => value === void 0 ? true : parseBool(value)
152193
- ).option(`--entrypoint <entrypoint>`, `Entrypoint File. This path is relative to the "providerRootDirectory".`).option(`--commands <commands>`, `Build Commands.`).option(`--scopes [scopes...]`, `List of scopes allowed for API key auto-generated for every execution. Maximum of 100 scopes are allowed.`).option(`--installation-id <installation-id>`, `Appwrite Installation ID for VCS (Version Control System) deployment.`).option(`--provider-repository-id <provider-repository-id>`, `Repository ID of the repo linked to the function.`).option(`--provider-branch <provider-branch>`, `Production branch for the repo linked to the function.`).option(
152200
+ ).option(`--entrypoint <entrypoint>`, `Entrypoint File. This path is relative to the "providerRootDirectory".`).option(`--commands <commands>`, `Build Commands.`).option(`--scopes [scopes...]`, `List of scopes allowed for API key auto-generated for every execution. Maximum of 200 scopes are allowed.`).option(`--installation-id <installation-id>`, `Appwrite Installation ID for VCS (Version Control System) deployment.`).option(`--provider-repository-id <provider-repository-id>`, `Repository ID of the repo linked to the function.`).option(`--provider-branch <provider-branch>`, `Production branch for the repo linked to the function.`).option(
152194
152201
  `--provider-silent-mode [value]`,
152195
152202
  `Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.`,
152196
152203
  (value) => value === void 0 ? true : parseBool(value)
@@ -152241,7 +152248,7 @@ var functionsUpdateCommand = functions.command(`update`).description(`Update fun
152241
152248
  `--logging [value]`,
152242
152249
  `When disabled, executions will exclude logs and errors, and will be slightly faster.`,
152243
152250
  (value) => value === void 0 ? true : parseBool(value)
152244
- ).option(`--entrypoint <entrypoint>`, `Entrypoint File. This path is relative to the "providerRootDirectory".`).option(`--commands <commands>`, `Build Commands.`).option(`--scopes [scopes...]`, `List of scopes allowed for API Key auto-generated for every execution. Maximum of 100 scopes are allowed.`).option(`--installation-id <installation-id>`, `Appwrite Installation ID for VCS (Version Controle System) deployment.`).option(`--provider-repository-id <provider-repository-id>`, `Repository ID of the repo linked to the function`).option(`--provider-branch <provider-branch>`, `Production branch for the repo linked to the function`).option(
152251
+ ).option(`--entrypoint <entrypoint>`, `Entrypoint File. This path is relative to the "providerRootDirectory".`).option(`--commands <commands>`, `Build Commands.`).option(`--scopes [scopes...]`, `List of scopes allowed for API Key auto-generated for every execution. Maximum of 200 scopes are allowed.`).option(`--installation-id <installation-id>`, `Appwrite Installation ID for VCS (Version Controle System) deployment.`).option(`--provider-repository-id <provider-repository-id>`, `Repository ID of the repo linked to the function`).option(`--provider-branch <provider-branch>`, `Production branch for the repo linked to the function`).option(
152245
152252
  `--provider-silent-mode [value]`,
152246
152253
  `Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.`,
152247
152254
  (value) => value === void 0 ? true : parseBool(value)
@@ -152726,15 +152733,6 @@ var messagingDeleteCommand = messaging.command(`delete`).description(`Delete a m
152726
152733
  async ({ messageId }) => parse3(await (await getMessagingClient()).delete(messageId))
152727
152734
  )
152728
152735
  );
152729
- var messagingListMessageLogsCommand = messaging.command(`list-message-logs`).description(`Get the message activity logs listed by its unique ID.`).requiredOption(`--message-id <message-id>`, `Message ID.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common pagination prefer --limit and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Only supported methods are limit and offset`).option(
152730
- `--total [value]`,
152731
- `When set to false, the total count returned will be 0 and will not be calculated.`,
152732
- (value) => value === void 0 ? true : parseBool(value)
152733
- ).option(`--limit <limit>`, `Maximum number of results to return.`, parseInteger).option(`--offset <offset>`, `Number of results to skip.`, parseInteger).action(
152734
- actionRunner(
152735
- async ({ messageId, queries, total, limit, offset }) => parse3(await (await getMessagingClient()).listMessageLogs(messageId, buildQueries({ queries, limit, offset }), total))
152736
- )
152737
- );
152738
152736
  var messagingListTargetsCommand = messaging.command(`list-targets`).description(`Get a list of the targets associated with a message.`).requiredOption(`--message-id <message-id>`, `Message ID.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common filtering, sorting, and pagination prefer --filter, --sort-asc, --sort-desc, --limit, and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType`).option(
152739
152737
  `--total [value]`,
152740
152738
  `When set to false, the total count returned will be 0 and will not be calculated.`,
@@ -153004,24 +153002,6 @@ var messagingDeleteProviderCommand = messaging.command(`delete-provider`).descri
153004
153002
  async ({ providerId }) => parse3(await (await getMessagingClient()).deleteProvider(providerId))
153005
153003
  )
153006
153004
  );
153007
- var messagingListProviderLogsCommand = messaging.command(`list-provider-logs`).description(`Get the provider activity logs listed by its unique ID.`).requiredOption(`--provider-id <provider-id>`, `Provider ID.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common pagination prefer --limit and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Only supported methods are limit and offset`).option(
153008
- `--total [value]`,
153009
- `When set to false, the total count returned will be 0 and will not be calculated.`,
153010
- (value) => value === void 0 ? true : parseBool(value)
153011
- ).option(`--limit <limit>`, `Maximum number of results to return.`, parseInteger).option(`--offset <offset>`, `Number of results to skip.`, parseInteger).action(
153012
- actionRunner(
153013
- async ({ providerId, queries, total, limit, offset }) => parse3(await (await getMessagingClient()).listProviderLogs(providerId, buildQueries({ queries, limit, offset }), total))
153014
- )
153015
- );
153016
- var messagingListSubscriberLogsCommand = messaging.command(`list-subscriber-logs`).description(`Get the subscriber activity logs listed by its unique ID.`).requiredOption(`--subscriber-id <subscriber-id>`, `Subscriber ID.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common pagination prefer --limit and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Only supported methods are limit and offset`).option(
153017
- `--total [value]`,
153018
- `When set to false, the total count returned will be 0 and will not be calculated.`,
153019
- (value) => value === void 0 ? true : parseBool(value)
153020
- ).option(`--limit <limit>`, `Maximum number of results to return.`, parseInteger).option(`--offset <offset>`, `Number of results to skip.`, parseInteger).action(
153021
- actionRunner(
153022
- async ({ subscriberId, queries, total, limit, offset }) => parse3(await (await getMessagingClient()).listSubscriberLogs(subscriberId, buildQueries({ queries, limit, offset }), total))
153023
- )
153024
- );
153025
153005
  var messagingListTopicsCommand = messaging.command(`list-topics`).description(`Get a list of all topics from the current Appwrite project.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common filtering, sorting, and pagination prefer --filter, --sort-asc, --sort-desc, --limit, and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, emailTotal, smsTotal, pushTotal`).option(`--search <search>`, `Search term to filter your list results. Max length: 256 chars.`).option(
153026
153006
  `--total [value]`,
153027
153007
  `When set to false, the total count returned will be 0 and will not be calculated.`,
@@ -153053,15 +153033,6 @@ var messagingDeleteTopicCommand = messaging.command(`delete-topic`).description(
153053
153033
  async ({ topicId }) => parse3(await (await getMessagingClient()).deleteTopic(topicId))
153054
153034
  )
153055
153035
  );
153056
- var messagingListTopicLogsCommand = messaging.command(`list-topic-logs`).description(`Get the topic activity logs listed by its unique ID.`).requiredOption(`--topic-id <topic-id>`, `Topic ID.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common pagination prefer --limit and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Only supported methods are limit and offset`).option(
153057
- `--total [value]`,
153058
- `When set to false, the total count returned will be 0 and will not be calculated.`,
153059
- (value) => value === void 0 ? true : parseBool(value)
153060
- ).option(`--limit <limit>`, `Maximum number of results to return.`, parseInteger).option(`--offset <offset>`, `Number of results to skip.`, parseInteger).action(
153061
- actionRunner(
153062
- async ({ topicId, queries, total, limit, offset }) => parse3(await (await getMessagingClient()).listTopicLogs(topicId, buildQueries({ queries, limit, offset }), total))
153063
- )
153064
- );
153065
153036
  var messagingListSubscribersCommand = messaging.command(`list-subscribers`).description(`Get a list of all subscribers from the current Appwrite project.`).requiredOption(`--topic-id <topic-id>`, `Topic ID. The topic ID subscribed to.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common filtering, sorting, and pagination prefer --filter, --sort-asc, --sort-desc, --limit, and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: targetId, topicId, userId, providerType`).option(`--search <search>`, `Search term to filter your list results. Max length: 256 chars.`).option(
153066
153037
  `--total [value]`,
153067
153038
  `When set to false, the total count returned will be 0 and will not be calculated.`,
@@ -153219,12 +153190,7 @@ var getOauth2Client = async () => {
153219
153190
  var oauth2 = new Command("oauth-2").description(commandDescriptions["oauth2"] ?? "").configureHelp({
153220
153191
  helpWidth: process.stdout.columns || 80
153221
153192
  });
153222
- var oauth2ApproveCommand = oauth2.command(`approve`).description(`Approve an OAuth2 grant after the user gives consent. Returns the \`redirectUrl\` the end user should be sent to. The consent screen may optionally pass enriched \`authorization_details\` to record the concrete resources the user selected. You can pass Accept header of \`application/json\` to receive a JSON response instead of a redirect.`).requiredOption(`--grant-_id <grant-_id>`, `Grant ID made during authorization, provided to consent screen in URL search params.`).option(`--authorization-_details <authorization-_details>`, `Enriched \`authorization_details\` the user consented to, replacing what the client requested. Each entry must use a \`type\` the project accepts. Optional; omit to keep the originally requested details.`).action(
153223
- actionRunner(
153224
- async ({ grant_id, authorization_details }) => parse3(await (await getOauth2Client()).approve(grant_id, authorization_details))
153225
- )
153226
- );
153227
- var oauth2AuthorizeCommand = oauth2.command(`authorize`).description(`Begin the OAuth2 authorization flow. When called without a session, the user is redirected to the consent screen without grant ID. When called with a session, the redirect URL includes param for grant ID. You can pass Accept header of \`application/json\` to receive a JSON response instead of a redirect.`).requiredOption(`--client-_id <client-_id>`, `OAuth2 client ID.`).requiredOption(`--redirect-_uri <redirect-_uri>`, `Redirect URI where visitor will be redirected after authorization, whether successful or not.`).requiredOption(`--response-_type <response-_type>`, `OAuth2 / OIDC response type. One of \`code\` (Authorization Code Flow), \`id_token\` (Implicit Flow, OIDC login only), or \`code id_token\` (Hybrid Flow).`).requiredOption(`--scope <scope>`, `Space-separated OAuth2 scopes. Can include project scopes, and built-in scopes: \`openid\`, \`email\`, \`profile\`.`).option(`--state <state>`, `OAuth2 state. You receive this back in the redirect URI.`).option(`--nonce <nonce>`, `OIDC nonce parameter to prevent replay attacks. Required when response_type includes \`id_token\`.`).option(`--code-_challenge <code-_challenge>`, `PKCE code challenge. Required when OAuth2 app is public.`).option(`--code-_challenge-_method <code-_challenge-_method>`, `PKCE code challenge method. Required when OAuth2 app is public.`).option(`--prompt <prompt>`, `OIDC prompt parameter for customization of consent screen. Space-separated list of: none, login, consent, select_account.`).option(`--max-_age <max-_age>`, `OIDC max_age paraleter for customization of consent screen. Maximum allowable elapsed time in seconds since the user last authenticated. If exceeded, re-authentication is required.`, parseInteger).option(`--authorization-_details <authorization-_details>`, `Rich authorization request. JSON array of objects, each with a \`type\` and project-defined fields`).option(`--resource <resource>`, `RFC 8707 resource indicator URI or URI list. Each value must be an absolute URI without a fragment.`).action(
153193
+ var oauth2AuthorizeCommand = oauth2.command(`authorize`).description(`Begin the OAuth2 authorization flow. When called without a session, the user is redirected to the consent screen without grant ID. When called with a session, the redirect URL includes param for grant ID. You can pass Accept header of \`application/json\` to receive a JSON response instead of a redirect.`).requiredOption(`--client-_id <client-_id>`, `OAuth2 client ID.`).requiredOption(`--redirect-_uri <redirect-_uri>`, `Redirect URI where visitor will be redirected after authorization, whether successful or not.`).requiredOption(`--response-_type <response-_type>`, `OAuth2 / OIDC response type. One of \`code\` (Authorization Code Flow), \`id_token\` (Implicit Flow, OIDC login only), or \`code id_token\` (Hybrid Flow).`).option(`--scope <scope>`, `Space-separated OAuth2 scopes. Can include project scopes, and built-in scopes: \`openid\`, \`email\`, \`profile\`, \`phone\`.`).option(`--state <state>`, `OAuth2 state. You receive this back in the redirect URI.`).option(`--nonce <nonce>`, `OIDC nonce parameter to prevent replay attacks. Required when response_type includes \`id_token\`.`).option(`--code-_challenge <code-_challenge>`, `PKCE code challenge. Required when OAuth2 app is public.`).option(`--code-_challenge-_method <code-_challenge-_method>`, `PKCE code challenge method. Required when OAuth2 app is public.`).option(`--prompt <prompt>`, `OIDC prompt parameter for customization of consent screen. Space-separated list of: none, login, consent, select_account.`).option(`--max-_age <max-_age>`, `OIDC max_age paraleter for customization of consent screen. Maximum allowable elapsed time in seconds since the user last authenticated. If exceeded, re-authentication is required.`, parseInteger).option(`--authorization-_details <authorization-_details>`, `Rich authorization request. JSON array of objects, each with a \`type\` and project-defined fields`).option(`--resource <resource>`, `RFC 8707 resource indicator URI or URI list. Each value must be an absolute URI without a fragment.`).action(
153228
153194
  actionRunner(
153229
153195
  async ({ client_id, redirect_uri, response_type, scope, state, nonce, code_challenge, code_challenge_method, prompt, max_age, authorization_details, resource }) => parse3(await (await getOauth2Client()).authorize(client_id, redirect_uri, response_type, scope, state, nonce, code_challenge, code_challenge_method, prompt, max_age, authorization_details, resource))
153230
153196
  )
@@ -153286,7 +153252,7 @@ var organizationListKeysCommand = organization.command(`list-keys`).description(
153286
153252
  async ({ queries, total, filter, where, sortAsc, sortDesc, cursorAfter, cursorBefore, limit, offset }) => parse3(await (await getOrganizationClient()).listKeys(buildQueries({ queries, filter, where, sortAsc, sortDesc, cursorAfter, cursorBefore, limit, offset }), total))
153287
153253
  )
153288
153254
  );
153289
- var organizationCreateKeyCommand = organization.command(`create-key`).description(`Create a new organization API key.`).requiredOption(`--key-id <key-id>`, `Key ID. Choose a custom ID or generate a random ID with \`ID.unique()\`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.`).requiredOption(`--name <name>`, `Key name. Max length: 128 chars.`).requiredOption(`--scopes [scopes...]`, `Key scopes list. Maximum of 100 scopes are allowed.`).option(`--expire <expire>`, `Expiration time in ISO 8601 (https://www.iso.org/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.`).action(
153255
+ var organizationCreateKeyCommand = organization.command(`create-key`).description(`Create a new organization API key.`).requiredOption(`--key-id <key-id>`, `Key ID. Choose a custom ID or generate a random ID with \`ID.unique()\`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.`).requiredOption(`--name <name>`, `Key name. Max length: 128 chars.`).requiredOption(`--scopes [scopes...]`, `Key scopes list. Maximum of 200 scopes are allowed.`).option(`--expire <expire>`, `Expiration time in ISO 8601 (https://www.iso.org/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.`).action(
153290
153256
  actionRunner(
153291
153257
  async ({ keyId, name, scopes, expire }) => parse3(await (await getOrganizationClient()).createKey(keyId, name, scopes, expire))
153292
153258
  )
@@ -153296,7 +153262,7 @@ var organizationGetKeyCommand = organization.command(`get-key`).description(`Get
153296
153262
  async ({ keyId }) => parse3(await (await getOrganizationClient()).getKey(keyId))
153297
153263
  )
153298
153264
  );
153299
- var organizationUpdateKeyCommand = organization.command(`update-key`).description(`Update a key by its unique ID. Use this endpoint to update the name, scopes, or expiration time of an API key.`).requiredOption(`--key-id <key-id>`, `Key unique ID.`).requiredOption(`--name <name>`, `Key name. Max length: 128 chars.`).requiredOption(`--scopes [scopes...]`, `Key scopes list. Maximum of 100 scopes are allowed.`).option(`--expire <expire>`, `Expiration time in ISO 8601 (https://www.iso.org/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.`).action(
153265
+ var organizationUpdateKeyCommand = organization.command(`update-key`).description(`Update a key by its unique ID. Use this endpoint to update the name, scopes, or expiration time of an API key.`).requiredOption(`--key-id <key-id>`, `Key unique ID.`).requiredOption(`--name <name>`, `Key name. Max length: 128 chars.`).requiredOption(`--scopes [scopes...]`, `Key scopes list. Maximum of 200 scopes are allowed.`).option(`--expire <expire>`, `Expiration time in ISO 8601 (https://www.iso.org/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.`).action(
153300
153266
  actionRunner(
153301
153267
  async ({ keyId, name, scopes, expire }) => parse3(await (await getOrganizationClient()).updateKey(keyId, name, scopes, expire))
153302
153268
  )
@@ -153306,7 +153272,7 @@ var organizationDeleteKeyCommand = organization.command(`delete-key`).descriptio
153306
153272
  async ({ keyId }) => parse3(await (await getOrganizationClient()).deleteKey(keyId))
153307
153273
  )
153308
153274
  );
153309
- var organizationListProjectsCommand = organization.command(`list-projects`).description(`Get a list of all projects. You can use the query params to filter your results.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common filtering, sorting, and pagination prefer --filter, --sort-asc, --sort-desc, --limit, and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId, labels, search`).option(`--search <search>`, `Search term to filter your list results. Max length: 256 chars.`).option(
153275
+ var organizationListProjectsCommand = organization.command(`list-projects`).description(`Get a list of all projects. You can use the query params to filter your results.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common filtering, sorting, and pagination prefer --filter, --sort-asc, --sort-desc, --limit, and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId, labels, search, accessedAt`).option(`--search <search>`, `Search term to filter your list results. Max length: 256 chars.`).option(
153310
153276
  `--total [value]`,
153311
153277
  `When set to false, the total count returned will be 0 and will not be calculated.`,
153312
153278
  (value) => value === void 0 ? true : parseBool(value)
@@ -153668,14 +153634,14 @@ var projectListKeysCommand = project.command(`list-keys`).description(`Get a lis
153668
153634
  );
153669
153635
  var projectCreateKeyCommand = project.command(`create-key`).description(`Create a new API key. It's recommended to have multiple API keys with strict scopes for separate functions within your project.
153670
153636
 
153671
- You can also create an ephemeral API key if you need a short-lived key instead.`).requiredOption(`--key-id <key-id>`, `Key ID. Choose a custom ID or generate a random ID with \`ID.unique()\`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.`).requiredOption(`--name <name>`, `Key name. Max length: 128 chars.`).requiredOption(`--scopes [scopes...]`, `Key scopes list. Maximum of 100 scopes are allowed.`).option(`--expire <expire>`, `Expiration time in ISO 8601 (https://www.iso.org/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.`).action(
153637
+ You can also create an ephemeral API key if you need a short-lived key instead.`).requiredOption(`--key-id <key-id>`, `Key ID. Choose a custom ID or generate a random ID with \`ID.unique()\`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.`).requiredOption(`--name <name>`, `Key name. Max length: 128 chars.`).requiredOption(`--scopes [scopes...]`, `Key scopes list. Maximum of 200 scopes are allowed.`).option(`--expire <expire>`, `Expiration time in ISO 8601 (https://www.iso.org/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.`).action(
153672
153638
  actionRunner(
153673
153639
  async ({ keyId, name, scopes, expire }) => parse3(await (await getProjectClient()).createKey(keyId, name, scopes, expire))
153674
153640
  )
153675
153641
  );
153676
153642
  var projectCreateEphemeralKeyCommand = project.command(`create-ephemeral-key`).description(`Create a new ephemeral API key. It's recommended to have multiple API keys with strict scopes for separate functions within your project.
153677
153643
 
153678
- You can also create a standard API key if you need a longer-lived key instead.`).requiredOption(`--scopes [scopes...]`, `Key scopes list. Maximum of 100 scopes are allowed.`).requiredOption(`--duration <duration>`, `Time in seconds before ephemeral key expires. Maximum duration is 3600 seconds.`, parseInteger).action(
153644
+ You can also create a standard API key if you need a longer-lived key instead.`).requiredOption(`--scopes [scopes...]`, `Key scopes list. Maximum of 200 scopes are allowed.`).requiredOption(`--duration <duration>`, `Time in seconds before ephemeral key expires. Maximum duration is 3600 seconds.`, parseInteger).action(
153679
153645
  actionRunner(
153680
153646
  async ({ scopes, duration: duration3 }) => parse3(await (await getProjectClient()).createEphemeralKey(scopes, duration3))
153681
153647
  )
@@ -153685,7 +153651,7 @@ var projectGetKeyCommand = project.command(`get-key`).description(`Get a key by
153685
153651
  async ({ keyId }) => parse3(await (await getProjectClient()).getKey(keyId))
153686
153652
  )
153687
153653
  );
153688
- var projectUpdateKeyCommand = project.command(`update-key`).description(`Update a key by its unique ID. Use this endpoint to update the name, scopes, or expiration time of an API key.`).requiredOption(`--key-id <key-id>`, `Key ID.`).requiredOption(`--name <name>`, `Key name. Max length: 128 chars.`).requiredOption(`--scopes [scopes...]`, `Key scopes list. Maximum of 100 scopes are allowed.`).option(`--expire <expire>`, `Expiration time in ISO 8601 (https://www.iso.org/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.`).action(
153654
+ var projectUpdateKeyCommand = project.command(`update-key`).description(`Update a key by its unique ID. Use this endpoint to update the name, scopes, or expiration time of an API key.`).requiredOption(`--key-id <key-id>`, `Key ID.`).requiredOption(`--name <name>`, `Key name. Max length: 128 chars.`).requiredOption(`--scopes [scopes...]`, `Key scopes list. Maximum of 200 scopes are allowed.`).option(`--expire <expire>`, `Expiration time in ISO 8601 (https://www.iso.org/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.`).action(
153689
153655
  actionRunner(
153690
153656
  async ({ keyId, name, scopes, expire }) => parse3(await (await getProjectClient()).updateKey(keyId, name, scopes, expire))
153691
153657
  )
@@ -154979,7 +154945,7 @@ var tablesDBCreateCommand = tablesDB.command(`create`).description(`Create a new
154979
154945
  `--enabled [value]`,
154980
154946
  `Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.`,
154981
154947
  (value) => value === void 0 ? true : parseBool(value)
154982
- ).option(`--dedicated-database-id <dedicated-database-id>`, `Optional dedicated database (compute) ID to attach this database to. Leave empty to create a database on the shared pool.`).action(
154948
+ ).option(`--dedicated-database-id <dedicated-database-id>`, `Optional dedicated database ID to attach this database to. Leave empty to create a database on the shared pool.`).action(
154983
154949
  actionRunner(
154984
154950
  async ({ databaseId, name, enabled, dedicatedDatabaseId }) => parse3(await (await getTablesDBClient()).create(databaseId, name, enabled, dedicatedDatabaseId))
154985
154951
  )
@@ -155429,11 +155395,6 @@ var tablesDBDeleteIndexCommand = tablesDB.command(`delete-index`).description(`D
155429
155395
  async ({ databaseId, tableId, key }) => parse3(await (await getTablesDBClient()).deleteIndex(databaseId, tableId, key))
155430
155396
  )
155431
155397
  );
155432
- var tablesDBListTableLogsCommand = tablesDB.command(`list-table-logs`).description(`Get the table activity logs list by its unique ID.`).requiredOption(`--database-id <database-id>`, `Database ID.`).requiredOption(`--table-id <table-id>`, `Table ID.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common pagination prefer --limit and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Only supported methods are limit and offset`).option(`--limit <limit>`, `Maximum number of results to return.`, parseInteger).option(`--offset <offset>`, `Number of results to skip.`, parseInteger).action(
155433
- actionRunner(
155434
- async ({ databaseId, tableId, queries, limit, offset }) => parse3(await (await getTablesDBClient()).listTableLogs(databaseId, tableId, buildQueries({ queries, limit, offset })))
155435
- )
155436
- );
155437
155398
  var tablesDBListRowsCommand = tablesDB.command(`list-rows`).description(`Get a list of all the user's rows in a given table. You can use the query params to filter your results.`).requiredOption(`--database-id <database-id>`, `Database ID.`).requiredOption(`--table-id <table-id>`, `Table ID. You can create a new table using the TablesDB service server integration (https://appwrite.io/docs/products/databases/tables#create-table).`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common filtering, sorting, pagination, and selection prefer --filter, --sort-asc, --sort-desc, --limit, --offset, and --select. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long.`).option(`--transaction-id <transaction-id>`, `Transaction ID to read uncommitted changes within the transaction.`).option(
155438
155399
  `--total [value]`,
155439
155400
  `When set to false, the total count returned will be 0 and will not be calculated.`,
@@ -155489,11 +155450,6 @@ var tablesDBDeleteRowCommand = tablesDB.command(`delete-row`).description(`Delet
155489
155450
  async ({ databaseId, tableId, rowId, transactionId }) => parse3(await (await getTablesDBClient()).deleteRow(databaseId, tableId, rowId, transactionId))
155490
155451
  )
155491
155452
  );
155492
- var tablesDBListRowLogsCommand = tablesDB.command(`list-row-logs`).description(`Get the row activity logs list by its unique ID.`).requiredOption(`--database-id <database-id>`, `Database ID.`).requiredOption(`--table-id <table-id>`, `Table ID.`).requiredOption(`--row-id <row-id>`, `Row ID.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common pagination prefer --limit and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Only supported methods are limit and offset`).option(`--limit <limit>`, `Maximum number of results to return.`, parseInteger).option(`--offset <offset>`, `Number of results to skip.`, parseInteger).action(
155493
- actionRunner(
155494
- async ({ databaseId, tableId, rowId, queries, limit, offset }) => parse3(await (await getTablesDBClient()).listRowLogs(databaseId, tableId, rowId, buildQueries({ queries, limit, offset })))
155495
- )
155496
- );
155497
155453
  var tablesDBDecrementRowColumnCommand = tablesDB.command(`decrement-row-column`).description(`Decrement a specific column of a row by a given value.`).requiredOption(`--database-id <database-id>`, `Database ID.`).requiredOption(`--table-id <table-id>`, `Table ID.`).requiredOption(`--row-id <row-id>`, `Row ID.`).requiredOption(`--column <column>`, `Column key.`).option(`--value <value>`, `Value to increment the column by. The value must be a number.`, parseInteger).option(`--min <min>`, `Minimum value for the column. If the current value is lesser than this value, an exception will be thrown.`, parseInteger).option(`--transaction-id <transaction-id>`, `Transaction ID for staging the operation.`).action(
155498
155454
  actionRunner(
155499
155455
  async ({ databaseId, tableId, rowId, column, value, min, transactionId }) => parse3(await (await getTablesDBClient()).decrementRowColumn(databaseId, tableId, rowId, column, value, min, transactionId))
@@ -155564,15 +155520,6 @@ var teamsDeleteCommand = teams.command(`delete`).description(`Delete a team usin
155564
155520
  async ({ teamId }) => parse3(await (await getTeamsClient()).delete(teamId))
155565
155521
  )
155566
155522
  );
155567
- var teamsListLogsCommand = teams.command(`list-logs`).description(`Get the team activity logs list by its unique ID.`).requiredOption(`--team-id <team-id>`, `Team ID.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common pagination prefer --limit and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Only supported methods are limit and offset`).option(
155568
- `--total [value]`,
155569
- `When set to false, the total count returned will be 0 and will not be calculated.`,
155570
- (value) => value === void 0 ? true : parseBool(value)
155571
- ).option(`--limit <limit>`, `Maximum number of results to return.`, parseInteger).option(`--offset <offset>`, `Number of results to skip.`, parseInteger).action(
155572
- actionRunner(
155573
- async ({ teamId, queries, total, limit, offset }) => parse3(await (await getTeamsClient()).listLogs(teamId, buildQueries({ queries, limit, offset }), total))
155574
- )
155575
- );
155576
155523
  var teamsListMembershipsCommand = teams.command(`list-memberships`).description(`Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint. Hide sensitive attributes from the response by toggling membership privacy in the Console.`).requiredOption(`--team-id <team-id>`, `Team ID.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common filtering, sorting, and pagination prefer --filter, --sort-asc, --sort-desc, --limit, and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm, roles`).option(`--search <search>`, `Search term to filter your list results. Max length: 256 chars.`).option(
155577
155524
  `--total [value]`,
155578
155525
  `When set to false, the total count returned will be 0 and will not be calculated.`,
@@ -155683,7 +155630,7 @@ var getUsersClient = async () => {
155683
155630
  var users = new Command("users").description(commandDescriptions["users"] ?? "").configureHelp({
155684
155631
  helpWidth: process.stdout.columns || 80
155685
155632
  });
155686
- var usersListCommand = users.command(`list`).description(`Get a list of all the project's users. You can use the query params to filter your results.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common filtering, sorting, and pagination prefer --filter, --sort-asc, --sort-desc, --limit, and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels, impersonator`).option(`--search <search>`, `Search term to filter your list results. Max length: 256 chars.`).option(
155633
+ var usersListCommand = users.command(`list`).description(`Get a list of all the project's users. You can use the query params to filter your results.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common filtering, sorting, and pagination prefer --filter, --sort-asc, --sort-desc, --limit, and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels, impersonator, accessedAt`).option(`--search <search>`, `Search term to filter your list results. Max length: 256 chars.`).option(
155687
155634
  `--total [value]`,
155688
155635
  `When set to false, the total count returned will be 0 and will not be calculated.`,
155689
155636
  (value) => value === void 0 ? true : parseBool(value)
@@ -155785,15 +155732,6 @@ Labels can be used to grant access to resources. While teams are a way for user'
155785
155732
  async ({ userId, labels }) => parse3(await (await getUsersClient()).updateLabels(userId, labels))
155786
155733
  )
155787
155734
  );
155788
- var usersListLogsCommand = users.command(`list-logs`).description(`Get the user activity logs list by its unique ID.`).requiredOption(`--user-id <user-id>`, `User ID.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common pagination prefer --limit and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Only supported methods are limit and offset`).option(
155789
- `--total [value]`,
155790
- `When set to false, the total count returned will be 0 and will not be calculated.`,
155791
- (value) => value === void 0 ? true : parseBool(value)
155792
- ).option(`--limit <limit>`, `Maximum number of results to return.`, parseInteger).option(`--offset <offset>`, `Number of results to skip.`, parseInteger).action(
155793
- actionRunner(
155794
- async ({ userId, queries, total, limit, offset }) => parse3(await (await getUsersClient()).listLogs(userId, buildQueries({ queries, limit, offset }), total))
155795
- )
155796
- );
155797
155735
  var usersListMembershipsCommand = users.command(`list-memberships`).description(`Get the user membership list by its unique ID.`).requiredOption(`--user-id <user-id>`, `User ID.`).option(`--queries [queries...]`, `Raw Appwrite JSON query strings (legacy). Use this for advanced queries or automation; for common filtering, sorting, and pagination prefer --filter, --sort-asc, --sort-desc, --limit, and --offset. When mixed, raw --queries are sent before generated flag queries. Array of query strings generated using the Query class provided by the SDK. Learn more about queries (https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm, roles`).option(`--search <search>`, `Search term to filter your list results. Max length: 256 chars.`).option(
155798
155736
  `--total [value]`,
155799
155737
  `When set to false, the total count returned will be 0 and will not be calculated.`,
package/dist/index.cjs CHANGED
@@ -35929,7 +35929,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
35929
35929
  }
35930
35930
  return positiveOption || option2;
35931
35931
  };
35932
- const getErrorMessage2 = (option2) => {
35932
+ const getErrorMessage3 = (option2) => {
35933
35933
  const bestOption = findBestOptionFromValue(option2);
35934
35934
  const optionKey = bestOption.attributeName();
35935
35935
  const source = this.getOptionValueSource(optionKey);
@@ -35938,7 +35938,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
35938
35938
  }
35939
35939
  return `option '${bestOption.flags}'`;
35940
35940
  };
35941
- const message = `error: ${getErrorMessage2(option)} cannot be used with ${getErrorMessage2(conflictingOption)}`;
35941
+ const message = `error: ${getErrorMessage3(option)} cannot be used with ${getErrorMessage3(conflictingOption)}`;
35942
35942
  this.error(message, { code: "commander.conflictingOption" });
35943
35943
  }
35944
35944
  /**
@@ -65565,7 +65565,7 @@ var id_default = ID;
65565
65565
  // lib/constants.ts
65566
65566
  var SDK_TITLE = "Appwrite";
65567
65567
  var SDK_TITLE_LOWER = "appwrite";
65568
- var SDK_VERSION = "22.3.0";
65568
+ var SDK_VERSION = "22.4.0";
65569
65569
  var SDK_LOGO = "\n _ _ _ ___ __ _____\n /_\\ _ __ _ ____ ___ __(_) |_ ___ / __\\ / / \\_ \\\n //_\\\\| '_ \\| '_ \\ \\ /\\ / / '__| | __/ _ \\ / / / / / /\\/\n / _ \\ |_) | |_) \\ V V /| | | | || __/ / /___/ /___/\\/ /_\n \\_/ \\_/ .__/| .__/ \\_/\\_/ |_| |_|\\__\\___| \\____/\\____/\\____/\n |_| |_|\n\n";
65570
65570
  var EXECUTABLE_NAME = "appwrite";
65571
65571
  var UPDATE_CHECK_INTERVAL_MS = 24 * 60 * 60 * 1e3;
@@ -103718,6 +103718,20 @@ var getSafeDirectoryName = (value, fallback) => {
103718
103718
  var siteRequiresBuildCommand = (site) => {
103719
103719
  return !(site.framework === "other" && site.adapter === "static");
103720
103720
  };
103721
+ var getErrorMessage = (error52) => {
103722
+ if (error52 instanceof Error) {
103723
+ const message = typeof error52.message === "string" ? error52.message.trim() : "";
103724
+ if (message) {
103725
+ return message;
103726
+ }
103727
+ const response = error52.response;
103728
+ if (typeof response === "string" && response.trim() !== "") {
103729
+ return response.trim();
103730
+ }
103731
+ return "An unknown error occurred.";
103732
+ }
103733
+ return String(error52);
103734
+ };
103721
103735
  var WINDOWS_EXECUTABLE_NAME = `${EXECUTABLE_NAME.toLowerCase()}.exe`;
103722
103736
  var CLOUD_REGION_CODES = /* @__PURE__ */ new Set(["fra", "nyc", "syd", "sfo", "sgp", "tor"]);
103723
103737
  var CLOUD_LOGIN_ENVIRONMENTS = /* @__PURE__ */ new Set(["stage"]);
@@ -104945,7 +104959,7 @@ var package_default = {
104945
104959
  type: "module",
104946
104960
  homepage: "https://appwrite.io/support",
104947
104961
  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",
104948
- version: "22.3.0",
104962
+ version: "22.4.0",
104949
104963
  license: "BSD-3-Clause",
104950
104964
  main: "dist/index.cjs",
104951
104965
  module: "dist/index.js",
@@ -105945,26 +105959,51 @@ var printQueryErrorHint = (err) => {
105945
105959
  );
105946
105960
  };
105947
105961
  var ERROR_DETAIL_KEYS = ["code", "type", "response"];
105962
+ var ERROR_DETAIL_INDENT = " ";
105963
+ var ERROR_DETAIL_LABEL_WIDTH = Math.max(...ERROR_DETAIL_KEYS.map((key) => key.length)) + 2;
105964
+ var formatErrorDetail = (value) => {
105965
+ if (typeof value === "string") {
105966
+ const text = value;
105967
+ try {
105968
+ const parsed = JSON.parse(text);
105969
+ if (parsed && typeof parsed === "object") {
105970
+ value = parsed;
105971
+ }
105972
+ } catch {
105973
+ return text;
105974
+ }
105975
+ }
105976
+ try {
105977
+ const json2 = JSON.stringify(value, null, 2) ?? String(value);
105978
+ return json2.split("\n").map((line, index) => index === 0 ? line : ERROR_DETAIL_INDENT + line).join("\n");
105979
+ } catch {
105980
+ return String(value);
105981
+ }
105982
+ };
105948
105983
  var formatErrorForLog = (err) => {
105949
- const stack = err.stack || `${err.name}: ${err.message}`;
105950
- const detailLines = ERROR_DETAIL_KEYS.flatMap((key) => {
105984
+ const lines = [
105985
+ `${import_chalk2.default.red.bold(err.name || "Error")}${import_chalk2.default.red(`: ${getErrorMessage(err)}`)}`
105986
+ ];
105987
+ for (const key of ERROR_DETAIL_KEYS) {
105951
105988
  if (!Object.prototype.hasOwnProperty.call(err, key)) {
105952
- return [];
105989
+ continue;
105953
105990
  }
105954
105991
  const value = err[key];
105955
- let detail = "undefined";
105956
- try {
105957
- detail = typeof value === "string" ? JSON.stringify(value) : JSON.stringify(value) ?? String(value);
105958
- } catch {
105959
- detail = String(value);
105960
- }
105961
- return [`${key}: ${detail}`];
105962
- });
105963
- if (detailLines.length === 0) {
105964
- return stack;
105992
+ lines.push(
105993
+ `${ERROR_DETAIL_INDENT}${import_chalk2.default.cyan(`${key}:`.padEnd(ERROR_DETAIL_LABEL_WIDTH))}${formatErrorDetail(value)}`
105994
+ );
105965
105995
  }
105966
- const [summary, ...frames] = stack.split("\n");
105967
- return [summary, ...detailLines, ...frames].join("\n");
105996
+ const frames = (err.stack ?? "").split("\n").filter((line) => line.trim().startsWith("at "));
105997
+ if (frames.length > 0) {
105998
+ lines.push(
105999
+ "",
106000
+ import_chalk2.default.dim(`${ERROR_DETAIL_INDENT}Stack trace:`),
106001
+ ...frames.map(
106002
+ (frame) => import_chalk2.default.dim(`${ERROR_DETAIL_INDENT.repeat(2)}${frame.trim()}`)
106003
+ )
106004
+ );
106005
+ }
106006
+ return lines.join("\n");
105968
106007
  };
105969
106008
  var parseError = (err) => {
105970
106009
  if (cliConfig.report) {
@@ -105995,7 +106034,7 @@ Is Cloud: ${isCloud()}`;
105995
106034
  githubIssueUrl.searchParams.append("template", "bug.yaml");
105996
106035
  githubIssueUrl.searchParams.append(
105997
106036
  "title",
105998
- `\u{1F41B} Bug Report: ${err.message}`
106037
+ `\u{1F41B} Bug Report: ${getErrorMessage(err)}`
105999
106038
  );
106000
106039
  githubIssueUrl.searchParams.append(
106001
106040
  "actual-behavior",
@@ -106025,7 +106064,7 @@ ${stack}`
106025
106064
  printQueryErrorHint(err);
106026
106065
  } else {
106027
106066
  log("For detailed error pass the --verbose or --report flag");
106028
- error51(err.message);
106067
+ error51(getErrorMessage(err));
106029
106068
  printQueryErrorHint(err);
106030
106069
  }
106031
106070
  process.exit(1);
@@ -106071,7 +106110,7 @@ var commandDescriptions = {
106071
106110
  avatars: `The avatars command aims to help you complete everyday tasks related to your app image, icons, and avatars.`,
106072
106111
  databases: `(Legacy) The databases command allows you to create structured collections of documents and query and filter lists of documents.`,
106073
106112
  "tables-db": `The tables-db command allows you to create structured tables of columns and query and filter lists of rows.`,
106074
- init: `The init command provides a convenient wrapper for creating and initializing projects, functions, collections, buckets, teams, messaging-topics, and agent skills in ${SDK_TITLE}.`,
106113
+ init: `The init command provides a convenient wrapper for creating and initializing projects, functions, collections, buckets, teams, messaging-topics, and skills in ${SDK_TITLE}.`,
106075
106114
  push: `The push command provides a convenient wrapper for pushing your functions, collections, buckets, teams, and messaging-topics.`,
106076
106115
  run: `The run command allows you to run the project locally to allow easy development and quick debugging.`,
106077
106116
  functions: `The functions command allows you to view, create, and manage your Cloud Functions.`,
@@ -110154,7 +110193,7 @@ async function downloadDeploymentCode(params) {
110154
110193
  }
110155
110194
  } catch (e) {
110156
110195
  if (e instanceof AppwriteException) {
110157
- error51(e.message);
110196
+ error51(getErrorMessage(e));
110158
110197
  return;
110159
110198
  } else {
110160
110199
  throw e;
@@ -112077,12 +112116,12 @@ async function getTerminalImage() {
112077
112116
  );
112078
112117
  return terminalImageModulePromise;
112079
112118
  }
112080
- function getErrorMessage(error52) {
112119
+ function getErrorMessage2(error52) {
112081
112120
  if (error52 instanceof Error && error52.message.trim().length > 0) {
112082
112121
  return error52.message.trim();
112083
112122
  }
112084
112123
  if (Array.isArray(error52)) {
112085
- const messages = error52.map((entry) => getErrorMessage(entry)).filter((entry) => entry !== "Unknown error");
112124
+ const messages = error52.map((entry) => getErrorMessage2(entry)).filter((entry) => entry !== "Unknown error");
112086
112125
  if (messages.length > 0) {
112087
112126
  return messages.join("; ");
112088
112127
  }
@@ -112240,7 +112279,7 @@ async function renderSiteTerminalPreview(params) {
112240
112279
  };
112241
112280
  } catch (previewError) {
112242
112281
  warnings.add(
112243
- `${label === "dark" ? "Dark mode" : "Light mode"} screenshot: ${getErrorMessage(previewError)}`
112282
+ `${label === "dark" ? "Dark mode" : "Light mode"} screenshot: ${getErrorMessage2(previewError)}`
112244
112283
  );
112245
112284
  }
112246
112285
  }
@@ -113966,7 +114005,7 @@ var Push = class {
113966
114005
  storageService: await getStorageService(consoleClient)
113967
114006
  };
113968
114007
  } catch (previewSetupError) {
113969
- sitePreviewSetupWarning = getErrorMessage(previewSetupError);
114008
+ sitePreviewSetupWarning = getErrorMessage2(previewSetupError);
113970
114009
  }
113971
114010
  }
113972
114011
  process.stdout.write("\n");
package/dist/index.js CHANGED
@@ -35934,7 +35934,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
35934
35934
  }
35935
35935
  return positiveOption || option2;
35936
35936
  };
35937
- const getErrorMessage2 = (option2) => {
35937
+ const getErrorMessage3 = (option2) => {
35938
35938
  const bestOption = findBestOptionFromValue(option2);
35939
35939
  const optionKey = bestOption.attributeName();
35940
35940
  const source = this.getOptionValueSource(optionKey);
@@ -35943,7 +35943,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
35943
35943
  }
35944
35944
  return `option '${bestOption.flags}'`;
35945
35945
  };
35946
- const message = `error: ${getErrorMessage2(option)} cannot be used with ${getErrorMessage2(conflictingOption)}`;
35946
+ const message = `error: ${getErrorMessage3(option)} cannot be used with ${getErrorMessage3(conflictingOption)}`;
35947
35947
  this.error(message, { code: "commander.conflictingOption" });
35948
35948
  }
35949
35949
  /**
@@ -65545,7 +65545,7 @@ var id_default = ID;
65545
65545
  // lib/constants.ts
65546
65546
  var SDK_TITLE = "Appwrite";
65547
65547
  var SDK_TITLE_LOWER = "appwrite";
65548
- var SDK_VERSION = "22.3.0";
65548
+ var SDK_VERSION = "22.4.0";
65549
65549
  var SDK_LOGO = "\n _ _ _ ___ __ _____\n /_\\ _ __ _ ____ ___ __(_) |_ ___ / __\\ / / \\_ \\\n //_\\\\| '_ \\| '_ \\ \\ /\\ / / '__| | __/ _ \\ / / / / / /\\/\n / _ \\ |_) | |_) \\ V V /| | | | || __/ / /___/ /___/\\/ /_\n \\_/ \\_/ .__/| .__/ \\_/\\_/ |_| |_|\\__\\___| \\____/\\____/\\____/\n |_| |_|\n\n";
65550
65550
  var EXECUTABLE_NAME = "appwrite";
65551
65551
  var UPDATE_CHECK_INTERVAL_MS = 24 * 60 * 60 * 1e3;
@@ -103698,6 +103698,20 @@ var getSafeDirectoryName = (value, fallback) => {
103698
103698
  var siteRequiresBuildCommand = (site) => {
103699
103699
  return !(site.framework === "other" && site.adapter === "static");
103700
103700
  };
103701
+ var getErrorMessage = (error52) => {
103702
+ if (error52 instanceof Error) {
103703
+ const message = typeof error52.message === "string" ? error52.message.trim() : "";
103704
+ if (message) {
103705
+ return message;
103706
+ }
103707
+ const response = error52.response;
103708
+ if (typeof response === "string" && response.trim() !== "") {
103709
+ return response.trim();
103710
+ }
103711
+ return "An unknown error occurred.";
103712
+ }
103713
+ return String(error52);
103714
+ };
103701
103715
  var WINDOWS_EXECUTABLE_NAME = `${EXECUTABLE_NAME.toLowerCase()}.exe`;
103702
103716
  var CLOUD_REGION_CODES = /* @__PURE__ */ new Set(["fra", "nyc", "syd", "sfo", "sgp", "tor"]);
103703
103717
  var CLOUD_LOGIN_ENVIRONMENTS = /* @__PURE__ */ new Set(["stage"]);
@@ -104925,7 +104939,7 @@ var package_default = {
104925
104939
  type: "module",
104926
104940
  homepage: "https://appwrite.io/support",
104927
104941
  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",
104928
- version: "22.3.0",
104942
+ version: "22.4.0",
104929
104943
  license: "BSD-3-Clause",
104930
104944
  main: "dist/index.cjs",
104931
104945
  module: "dist/index.js",
@@ -105925,26 +105939,51 @@ var printQueryErrorHint = (err) => {
105925
105939
  );
105926
105940
  };
105927
105941
  var ERROR_DETAIL_KEYS = ["code", "type", "response"];
105942
+ var ERROR_DETAIL_INDENT = " ";
105943
+ var ERROR_DETAIL_LABEL_WIDTH = Math.max(...ERROR_DETAIL_KEYS.map((key) => key.length)) + 2;
105944
+ var formatErrorDetail = (value) => {
105945
+ if (typeof value === "string") {
105946
+ const text = value;
105947
+ try {
105948
+ const parsed = JSON.parse(text);
105949
+ if (parsed && typeof parsed === "object") {
105950
+ value = parsed;
105951
+ }
105952
+ } catch {
105953
+ return text;
105954
+ }
105955
+ }
105956
+ try {
105957
+ const json2 = JSON.stringify(value, null, 2) ?? String(value);
105958
+ return json2.split("\n").map((line, index) => index === 0 ? line : ERROR_DETAIL_INDENT + line).join("\n");
105959
+ } catch {
105960
+ return String(value);
105961
+ }
105962
+ };
105928
105963
  var formatErrorForLog = (err) => {
105929
- const stack = err.stack || `${err.name}: ${err.message}`;
105930
- const detailLines = ERROR_DETAIL_KEYS.flatMap((key) => {
105964
+ const lines = [
105965
+ `${import_chalk2.default.red.bold(err.name || "Error")}${import_chalk2.default.red(`: ${getErrorMessage(err)}`)}`
105966
+ ];
105967
+ for (const key of ERROR_DETAIL_KEYS) {
105931
105968
  if (!Object.prototype.hasOwnProperty.call(err, key)) {
105932
- return [];
105969
+ continue;
105933
105970
  }
105934
105971
  const value = err[key];
105935
- let detail = "undefined";
105936
- try {
105937
- detail = typeof value === "string" ? JSON.stringify(value) : JSON.stringify(value) ?? String(value);
105938
- } catch {
105939
- detail = String(value);
105940
- }
105941
- return [`${key}: ${detail}`];
105942
- });
105943
- if (detailLines.length === 0) {
105944
- return stack;
105972
+ lines.push(
105973
+ `${ERROR_DETAIL_INDENT}${import_chalk2.default.cyan(`${key}:`.padEnd(ERROR_DETAIL_LABEL_WIDTH))}${formatErrorDetail(value)}`
105974
+ );
105945
105975
  }
105946
- const [summary, ...frames] = stack.split("\n");
105947
- return [summary, ...detailLines, ...frames].join("\n");
105976
+ const frames = (err.stack ?? "").split("\n").filter((line) => line.trim().startsWith("at "));
105977
+ if (frames.length > 0) {
105978
+ lines.push(
105979
+ "",
105980
+ import_chalk2.default.dim(`${ERROR_DETAIL_INDENT}Stack trace:`),
105981
+ ...frames.map(
105982
+ (frame) => import_chalk2.default.dim(`${ERROR_DETAIL_INDENT.repeat(2)}${frame.trim()}`)
105983
+ )
105984
+ );
105985
+ }
105986
+ return lines.join("\n");
105948
105987
  };
105949
105988
  var parseError = (err) => {
105950
105989
  if (cliConfig.report) {
@@ -105975,7 +106014,7 @@ Is Cloud: ${isCloud()}`;
105975
106014
  githubIssueUrl.searchParams.append("template", "bug.yaml");
105976
106015
  githubIssueUrl.searchParams.append(
105977
106016
  "title",
105978
- `\u{1F41B} Bug Report: ${err.message}`
106017
+ `\u{1F41B} Bug Report: ${getErrorMessage(err)}`
105979
106018
  );
105980
106019
  githubIssueUrl.searchParams.append(
105981
106020
  "actual-behavior",
@@ -106005,7 +106044,7 @@ ${stack}`
106005
106044
  printQueryErrorHint(err);
106006
106045
  } else {
106007
106046
  log("For detailed error pass the --verbose or --report flag");
106008
- error51(err.message);
106047
+ error51(getErrorMessage(err));
106009
106048
  printQueryErrorHint(err);
106010
106049
  }
106011
106050
  process.exit(1);
@@ -106051,7 +106090,7 @@ var commandDescriptions = {
106051
106090
  avatars: `The avatars command aims to help you complete everyday tasks related to your app image, icons, and avatars.`,
106052
106091
  databases: `(Legacy) The databases command allows you to create structured collections of documents and query and filter lists of documents.`,
106053
106092
  "tables-db": `The tables-db command allows you to create structured tables of columns and query and filter lists of rows.`,
106054
- init: `The init command provides a convenient wrapper for creating and initializing projects, functions, collections, buckets, teams, messaging-topics, and agent skills in ${SDK_TITLE}.`,
106093
+ init: `The init command provides a convenient wrapper for creating and initializing projects, functions, collections, buckets, teams, messaging-topics, and skills in ${SDK_TITLE}.`,
106055
106094
  push: `The push command provides a convenient wrapper for pushing your functions, collections, buckets, teams, and messaging-topics.`,
106056
106095
  run: `The run command allows you to run the project locally to allow easy development and quick debugging.`,
106057
106096
  functions: `The functions command allows you to view, create, and manage your Cloud Functions.`,
@@ -110134,7 +110173,7 @@ async function downloadDeploymentCode(params) {
110134
110173
  }
110135
110174
  } catch (e) {
110136
110175
  if (e instanceof AppwriteException) {
110137
- error51(e.message);
110176
+ error51(getErrorMessage(e));
110138
110177
  return;
110139
110178
  } else {
110140
110179
  throw e;
@@ -112057,12 +112096,12 @@ async function getTerminalImage() {
112057
112096
  );
112058
112097
  return terminalImageModulePromise;
112059
112098
  }
112060
- function getErrorMessage(error52) {
112099
+ function getErrorMessage2(error52) {
112061
112100
  if (error52 instanceof Error && error52.message.trim().length > 0) {
112062
112101
  return error52.message.trim();
112063
112102
  }
112064
112103
  if (Array.isArray(error52)) {
112065
- const messages = error52.map((entry) => getErrorMessage(entry)).filter((entry) => entry !== "Unknown error");
112104
+ const messages = error52.map((entry) => getErrorMessage2(entry)).filter((entry) => entry !== "Unknown error");
112066
112105
  if (messages.length > 0) {
112067
112106
  return messages.join("; ");
112068
112107
  }
@@ -112220,7 +112259,7 @@ async function renderSiteTerminalPreview(params) {
112220
112259
  };
112221
112260
  } catch (previewError) {
112222
112261
  warnings.add(
112223
- `${label === "dark" ? "Dark mode" : "Light mode"} screenshot: ${getErrorMessage(previewError)}`
112262
+ `${label === "dark" ? "Dark mode" : "Light mode"} screenshot: ${getErrorMessage2(previewError)}`
112224
112263
  );
112225
112264
  }
112226
112265
  }
@@ -113946,7 +113985,7 @@ var Push = class {
113946
113985
  storageService: await getStorageService(consoleClient)
113947
113986
  };
113948
113987
  } catch (previewSetupError) {
113949
- sitePreviewSetupWarning = getErrorMessage(previewSetupError);
113988
+ sitePreviewSetupWarning = getErrorMessage2(previewSetupError);
113950
113989
  }
113951
113990
  }
113952
113991
  process.stdout.write("\n");
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../lib/auth/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,YAAY,MAAM,cAAc,CAAC;AASxC;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,WAAW,MAAM,KAAG,WAAW,GAAG,SACL,CAAC;AAEzD,eAAO,MAAM,yBAAyB,GACpC,UAAU,MAAM,EAChB,aAAY,OAAsC,KACjD,YAQF,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,OACuC,CAAC;AAE1E;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,WAAW,MAAM,KAAG,OAGtD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,WAAW,MAAM,KAAG,OAGnD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,WAAW,MAAM,KAAG,MAAM,GAAG,SAMjE,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,WAAW,MAAM,KAAG,IAIzD,CAAC;AAEF,eAAO,MAAM,6BAA6B,GACxC,oBAAoB,MAAM,EAC1B,oBAAoB,MAAM,EAAE,KAC3B,IAOF,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAO,IAKvC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,WAAW,MAAM,KAChB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAuC9C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACzB,YAAY,MAAM,EAAE,KACnB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CA2BnE,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,iBAAiB,MAAM,KACtB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAoB7C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,oBAAoB,MAAM,EAAE,KAAG,MAAM,EAwBtE,CAAC"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../lib/auth/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,YAAY,MAAM,cAAc,CAAC;AAUxC;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,WAAW,MAAM,KAAG,WAAW,GAAG,SACL,CAAC;AAEzD,eAAO,MAAM,yBAAyB,GACpC,UAAU,MAAM,EAChB,aAAY,OAAsC,KACjD,YAQF,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,OACuC,CAAC;AAE1E;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,WAAW,MAAM,KAAG,OAGtD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,WAAW,MAAM,KAAG,OAGnD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,WAAW,MAAM,KAAG,MAAM,GAAG,SAMjE,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,WAAW,MAAM,KAAG,IAIzD,CAAC;AAEF,eAAO,MAAM,6BAA6B,GACxC,oBAAoB,MAAM,EAC1B,oBAAoB,MAAM,EAAE,KAC3B,IAOF,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAO,IAKvC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,WAAW,MAAM,KAChB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAuC9C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACzB,YAAY,MAAM,EAAE,KACnB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CA2BnE,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,iBAAiB,MAAM,KACtB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAoB7C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,oBAAoB,MAAM,EAAE,KAAG,MAAM,EAwBtE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"generic.d.ts","sourceRoot":"","sources":["../../../lib/commands/generic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,OAAO,EAAqB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAQnE,OAAO,EAAE,YAAY,EAAE,CAAC;AAaxB,eAAO,MAAM,MAAM,SAgChB,CAAC;AAEJ,eAAO,MAAM,QAAQ,SAMlB,CAAC;AAEJ,eAAO,MAAM,KAAK,SAkBmB,CAAC;AAEtC,eAAO,MAAM,MAAM,SA0EhB,CAAC;AAWJ,eAAO,MAAM,MAAM,SAuIhB,CAAC;AAEJ,eAAO,MAAM,OAAO,QAAa,OAAO,CAAC,IAAI,CAmB5C,CAAC"}
1
+ {"version":3,"file":"generic.d.ts","sourceRoot":"","sources":["../../../lib/commands/generic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,OAAO,EAAqB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAQnE,OAAO,EAAE,YAAY,EAAE,CAAC;AAaxB,eAAO,MAAM,MAAM,SAgChB,CAAC;AAEJ,eAAO,MAAM,QAAQ,SAMlB,CAAC;AAEJ,eAAO,MAAM,KAAK,SAkBmB,CAAC;AAEtC,eAAO,MAAM,MAAM,SAsEhB,CAAC;AAWJ,eAAO,MAAM,MAAM,SAuIhB,CAAC;AAEJ,eAAO,MAAM,OAAO,QAAa,OAAO,CAAC,IAAI,CAmB5C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../../../lib/commands/utils/deployment.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAqB,MAAM,sBAAsB,CAAC;AAgBjE,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,KAAK,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC,CAAC;CACJ;AAED,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAWD,UAAU,4BAA4B;IACpC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,UAAU,4BAA4B;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,EAAE,CAAC,UAAU,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC5D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,UAAU,oBAAoB;IAC5B,MAAM,EAAE,CAAC,UAAU,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAChD,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,OAAO,CAAC;CAC/B;AAED,UAAU,2BAA2B;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;CAC3B;AAoGD,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,2BAAgC,GACxC,oBAAoB,CAwFtB;AAaD,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAmI9C;AAoJD;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWtE;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrD,cAAc,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6EhB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,CAAC,QAAQ,EAAE,IAAI,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACrE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CA8C/B"}
1
+ {"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../../../lib/commands/utils/deployment.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAqB,MAAM,sBAAsB,CAAC;AAiBjE,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,KAAK,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC,CAAC;CACJ;AAED,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAWD,UAAU,4BAA4B;IACpC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,UAAU,4BAA4B;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,EAAE,CAAC,UAAU,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC5D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,UAAU,oBAAoB;IAC5B,MAAM,EAAE,CAAC,UAAU,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAChD,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,OAAO,CAAC;CAC/B;AAED,UAAU,2BAA2B;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;CAC3B;AAoGD,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,2BAAgC,GACxC,oBAAoB,CAwFtB;AAaD,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAmI9C;AAoJD;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWtE;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrD,cAAc,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6EhB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,CAAC,QAAQ,EAAE,IAAI,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACrE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CA8C/B"}
@@ -1,6 +1,6 @@
1
1
  export declare const SDK_TITLE = "Appwrite";
2
2
  export declare const SDK_TITLE_LOWER = "appwrite";
3
- export declare const SDK_VERSION = "22.3.0";
3
+ export declare const SDK_VERSION = "22.4.0";
4
4
  export declare const SDK_NAME = "Command Line";
5
5
  export declare const SDK_PLATFORM = "console";
6
6
  export declare const SDK_LANGUAGE = "cli";
@@ -15,7 +15,7 @@ export declare const GITHUB_REPO = "appwrite/sdk-for-cli";
15
15
  export declare const GITHUB_RELEASES_URL = "https://github.com/appwrite/sdk-for-cli/releases";
16
16
  export declare const DEFAULT_ENDPOINT = "https://cloud.appwrite.io/v1";
17
17
  export declare const OAUTH2_CLIENT_ID = "appwrite-cli";
18
- export declare const OAUTH2_SCOPES = "openid email profile account.admin";
18
+ export declare const OAUTH2_SCOPES = "openid email profile all";
19
19
  export declare const CONFIG_RESOURCE_KEYS: readonly ["databases", "functions", "topics", "messages", "sites", "buckets", "tablesDB", "tables", "teams", "webhooks", "collections"];
20
20
  export declare const TOP_LEVEL_RESOURCE_ARRAY_KEYS: Set<string>;
21
21
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,SAAS,aAAa,CAAC;AACpC,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,WAAW,WAAW,CAAC;AACpC,eAAO,MAAM,QAAQ,iBAAiB,CAAC;AACvC,eAAO,MAAM,YAAY,YAAY,CAAC;AACtC,eAAO,MAAM,YAAY,QAAQ,CAAC;AAClC,eAAO,MAAM,QAAQ,wXAA4Z,CAAC;AAGlb,eAAO,MAAM,eAAe,aAAa,CAAC;AAE1C,eAAO,MAAM,wBAAwB,QAAsB,CAAC;AAG5D,eAAO,MAAM,YAAY,sBAAsB,CAAC;AAChD,eAAO,MAAM,gBAAgB,+BAA6B,CAAC;AAG3D,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAC/C,eAAO,MAAM,gBAAgB,mDAA0D,CAAC;AAGxF,eAAO,MAAM,WAAW,yBAAyB,CAAC;AAClD,eAAO,MAAM,mBAAmB,qDAA+C,CAAC;AAGhF,eAAO,MAAM,gBAAgB,iCAAiC,CAAC;AAG/D,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAC/C,eAAO,MAAM,aAAa,uCAAuC,CAAC;AAGlE,eAAO,MAAM,oBAAoB,yIAYvB,CAAC;AAEX,eAAO,MAAM,6BAA6B,aAEzC,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,SAAS,aAAa,CAAC;AACpC,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,WAAW,WAAW,CAAC;AACpC,eAAO,MAAM,QAAQ,iBAAiB,CAAC;AACvC,eAAO,MAAM,YAAY,YAAY,CAAC;AACtC,eAAO,MAAM,YAAY,QAAQ,CAAC;AAClC,eAAO,MAAM,QAAQ,wXAA4Z,CAAC;AAGlb,eAAO,MAAM,eAAe,aAAa,CAAC;AAE1C,eAAO,MAAM,wBAAwB,QAAsB,CAAC;AAG5D,eAAO,MAAM,YAAY,sBAAsB,CAAC;AAChD,eAAO,MAAM,gBAAgB,+BAA6B,CAAC;AAG3D,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAC/C,eAAO,MAAM,gBAAgB,mDAA0D,CAAC;AAGxF,eAAO,MAAM,WAAW,yBAAyB,CAAC;AAClD,eAAO,MAAM,mBAAmB,qDAA+C,CAAC;AAGhF,eAAO,MAAM,gBAAgB,iCAAiC,CAAC;AAG/D,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAC/C,eAAO,MAAM,aAAa,6BAA6B,CAAC;AAGxD,eAAO,MAAM,oBAAoB,yIAYvB,CAAC;AAEX,eAAO,MAAM,6BAA6B,aAEzC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../lib/parser.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAS5C,QAAA,MAAM,SAAS,EAAE,SAWhB,CAAC;AAEF,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAkO1C,eAAO,MAAM,KAAK,GAAI,MAAM,OAAO,KAAG,IAsGrC,CAAC;AAKF,KAAK,iBAAiB,GAAG;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAyLF,eAAO,MAAM,SAAS,GACpB,MAAM,KAAK,CAAC,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC,EAC1C,UAAS,iBAAsB,KAC9B,IAqFF,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,MAAM,OAAO,KAAG,IAExC,CAAC;AAkBF,eAAO,MAAM,iBAAiB,GAAI,KAAK,KAAK,KAAG,MA4B9C,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,KAAK,KAAK,KAAG,IA+DvC,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EAElD,IAAI,CAAC,KACJ,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAc5C,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,MAM5C,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,OAIzC,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,OAAO,MAAM,GAAG,SAAS,EACzB,YAAY,MAAM,KACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAkB5B,CAAC;AAEF,eAAO,MAAM,GAAG,GAAI,UAAU,MAAM,KAAG,IAEtC,CAAC;AAEF,eAAO,MAAM,IAAI,GAAI,UAAU,MAAM,KAAG,IAIvC,CAAC;AAEF,eAAO,MAAM,IAAI,GAAI,UAAU,MAAM,KAAG,IAEvC,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,UAAU,MAAM,KAAG,IAI1C,CAAC;AAEF,eAAO,MAAM,KAAK,GAAI,UAAU,MAAM,KAAG,IAExC,CAAC;AAEF,eAAO,MAAM,IAAI,wXAAW,CAAC;AAE7B,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAgCtD,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../lib/parser.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAS5C,QAAA,MAAM,SAAS,EAAE,SAWhB,CAAC;AAEF,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAkO1C,eAAO,MAAM,KAAK,GAAI,MAAM,OAAO,KAAG,IAsGrC,CAAC;AAKF,KAAK,iBAAiB,GAAG;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAyLF,eAAO,MAAM,SAAS,GACpB,MAAM,KAAK,CAAC,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC,EAC1C,UAAS,iBAAsB,KAC9B,IAqFF,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,MAAM,OAAO,KAAG,IAExC,CAAC;AA6CF,eAAO,MAAM,iBAAiB,GAAI,KAAK,KAAK,KAAG,MA8B9C,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,KAAK,KAAK,KAAG,IA+DvC,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EAElD,IAAI,CAAC,KACJ,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAc5C,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,MAM5C,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,OAIzC,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,OAAO,MAAM,GAAG,SAAS,EACzB,YAAY,MAAM,KACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAkB5B,CAAC;AAEF,eAAO,MAAM,GAAG,GAAI,UAAU,MAAM,KAAG,IAEtC,CAAC;AAEF,eAAO,MAAM,IAAI,GAAI,UAAU,MAAM,KAAG,IAIvC,CAAC;AAEF,eAAO,MAAM,IAAI,GAAI,UAAU,MAAM,KAAG,IAEvC,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,UAAU,MAAM,KAAG,IAI1C,CAAC;AAEF,eAAO,MAAM,KAAK,GAAI,UAAU,MAAM,KAAG,IAExC,CAAC;AAEF,eAAO,MAAM,IAAI,wXAAW,CAAC;AAE7B,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAgCtD,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAczD,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,CAAC,OAAO,EACvB,WAAW,MAAM,CAAC,UAAU,EAC5B,cAAc,MAAM,CAAC,UAAU,EAAE,KAChC,YAqFF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,OAAO,MAAM,EACb,UAAU,MAAM,KACf,MASF,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,MAAM,eAAe,KAAG,OAEhE,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,MAMhD,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,UAAU,GAAG,YAAY,CAAC;AAEnE,KAAK,oBAAoB,GAAG;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAuGF,eAAO,MAAM,wBAAwB,QAAO,kBAAkB,GAAG,IAchE,CAAC;AAcF,eAAO,MAAM,2BAA2B,GACtC,UAAS;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,KACnC,MAAM,GAAG,IAsCX,CAAC;AAkDF,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,KAAG,OAUlD,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,UAAU,MAAM,KAAG,OAO1D,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,UAAU,MAAM,KAAG,MAAM,GAAG,IAalE,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,UAAU,MAAM,KAAG,OACuB,CAAC;AAgC/E,eAAO,MAAM,oBAAoB,GAAI,UAAU,MAAM,KAAG,OAWvD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,KAAG,MAiBpD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,UAAU,MAAM,EAChB,WAAW,MAAM,EACjB,gBAAgB,MAAM,KACrB,MAmBF,CAAC;AAEF,eAAO,MAAM,+BAA+B,GAC1C,UAAU,MAAM,EAChB,WAAW,MAAM,EACjB,YAAY,MAAM,EAClB,cAAc,MAAM,EACpB,gBAAgB,MAAM,KACrB,MAGF,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,UAAU,MAAM,EAChB,WAAW,MAAM,EACjB,QAAQ,MAAM,EACd,cAAc,MAAM,EACpB,gBAAgB,MAAM,KACrB,MAGF,CAAC;AAqIF,eAAO,MAAM,qBAAqB,GAChC,gBAAgB,MAAM,EACtB,eAAe,MAAM,KACpB,IAeF,CAAC;AAEF;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,kBAAkB,GAAG,IAAI,EACjC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED,wBAAsB,sCAAsC,CAC1D,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAavE;AAED,wBAAsB,2BAA2B,CAC/C,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsExB;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBpD;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBhE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAqBzD;AAKD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CA6B7C;AAED,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,MAAM,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,aAAa,iBAAiB,KAAG,IAMtE,CAAC;AAEF,wBAAgB,OAAO,IAAI,OAAO,CAIjC;AAwBD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAkBD,wBAAgB,kBAAkB,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAWvE;AAED,wBAAgB,oBAAoB,IAAI;IACtC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAgEA;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,SAAS,EAAE,GAClB,SAAS,EAAE,CA6Bb;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,EAAE,EAC1B,cAAc,EAAE,MAAM,EAAE,EACxB,WAAW,EAAE,OAAO,GACnB,IAAI,CAiEN;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAa3E;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,EACjE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,CAAC,GACR,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAWZ"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "type": "module",
4
4
  "homepage": "https://appwrite.io/support",
5
5
  "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",
6
- "version": "22.3.0",
6
+ "version": "22.4.0",
7
7
  "license": "BSD-3-Clause",
8
8
  "main": "dist/index.cjs",
9
9
  "module": "dist/index.js",