node-appwrite
Advanced tools
Comparing version
export { Models } from './models.js'; | ||
export { Query, QueryTypes, QueryTypesList } from './query.js'; | ||
type Params = { | ||
type Payload = { | ||
[key: string]: any; | ||
@@ -121,12 +121,13 @@ }; | ||
setForwardedUserAgent(value: string): this; | ||
prepareRequest(method: string, url: URL, headers?: Headers, params?: Params): { | ||
prepareRequest(method: string, url: URL, headers?: Headers, params?: Payload): { | ||
uri: string; | ||
options: RequestInit; | ||
}; | ||
chunkedUpload(method: string, url: URL, headers: Headers | undefined, originalPayload: Params | undefined, onProgress: (progress: UploadProgress) => void): Promise<any>; | ||
redirect(method: string, url: URL, headers?: Headers, params?: Params): Promise<string>; | ||
call(method: string, url: URL, headers?: Headers, params?: Params, responseType?: string): Promise<any>; | ||
static flatten(data: Params, prefix?: string): Params; | ||
chunkedUpload(method: string, url: URL, headers: Headers | undefined, originalPayload: Payload | undefined, onProgress: (progress: UploadProgress) => void): Promise<any>; | ||
ping(): Promise<string>; | ||
redirect(method: string, url: URL, headers?: Headers, params?: Payload): Promise<string>; | ||
call(method: string, url: URL, headers?: Headers, params?: Payload, responseType?: string): Promise<any>; | ||
static flatten(data: Payload, prefix?: string): Payload; | ||
} | ||
export { AppwriteException, Client, Params, UploadProgress }; | ||
export { AppwriteException, Client, Payload, UploadProgress }; |
@@ -5,26 +5,4 @@ 'use strict'; | ||
var agent = require('node-fetch-native-with-agent/agent'); | ||
var payload = require('./payload'); | ||
var multipart = require('parse-multipart-data'); | ||
var query = require('./query'); | ||
function _interopNamespace(e) { | ||
if (e && e.__esModule) return e; | ||
var n = Object.create(null); | ||
if (e) { | ||
Object.keys(e).forEach(function (k) { | ||
if (k !== 'default') { | ||
var d = Object.getOwnPropertyDescriptor(e, k); | ||
Object.defineProperty(n, k, d.get ? d : { | ||
enumerable: true, | ||
get: function () { return e[k]; } | ||
}); | ||
} | ||
}); | ||
} | ||
n.default = e; | ||
return Object.freeze(n); | ||
} | ||
var multipart__namespace = /*#__PURE__*/_interopNamespace(multipart); | ||
class AppwriteException extends Error { | ||
@@ -41,3 +19,3 @@ constructor(message, code = 0, type = "", response = "") { | ||
function getUserAgent() { | ||
let ua = "AppwriteNodeJSSDK/15.0.0-rc1"; | ||
let ua = "AppwriteNodeJSSDK/15.0.0"; | ||
const platform = []; | ||
@@ -78,3 +56,3 @@ if (typeof process !== "undefined") { | ||
"x-sdk-language": "nodejs", | ||
"x-sdk-version": "15.0.0-rc1", | ||
"x-sdk-version": "15.0.0", | ||
"user-agent": getUserAgent(), | ||
@@ -225,4 +203,4 @@ "X-Appwrite-Response-Format": "1.6.0" | ||
for (const [key, value] of Object.entries(params)) { | ||
if (value instanceof payload.Payload) { | ||
formData.append(key, new nodeFetchNativeWithAgent.Blob([value.toBinary()]), value.filename); | ||
if (value instanceof nodeFetchNativeWithAgent.File) { | ||
formData.append(key, value, value.name); | ||
} else if (Array.isArray(value)) { | ||
@@ -238,3 +216,2 @@ for (const nestedValue of value) { | ||
delete headers["content-type"]; | ||
headers["accept"] = "multipart/form-data"; | ||
break; | ||
@@ -246,12 +223,3 @@ } | ||
async chunkedUpload(method, url, headers = {}, originalPayload = {}, onProgress) { | ||
let file; | ||
for (const value of Object.values(originalPayload)) { | ||
if (value instanceof payload.Payload) { | ||
file = value; | ||
break; | ||
} | ||
} | ||
if (!file) { | ||
throw new Error("No payload found in params"); | ||
} | ||
const file = Object.values(originalPayload).find((value) => value instanceof nodeFetchNativeWithAgent.File); | ||
if (file.size <= _Client.CHUNK_SIZE) { | ||
@@ -268,5 +236,5 @@ return await this.call(method, url, headers, originalPayload); | ||
headers["content-range"] = `bytes ${start}-${end - 1}/${file.size}`; | ||
const chunk = file.toBinary(start, end - start); | ||
let payload$1 = { ...originalPayload, file: new payload.Payload(Buffer.from(chunk), file.filename) }; | ||
response = await this.call(method, url, headers, payload$1); | ||
const chunk = file.slice(start, end); | ||
let payload = { ...originalPayload, file: new nodeFetchNativeWithAgent.File([chunk], file.name) }; | ||
response = await this.call(method, url, headers, payload); | ||
if (onProgress && typeof onProgress === "function") { | ||
@@ -288,2 +256,5 @@ onProgress({ | ||
} | ||
async ping() { | ||
return this.call("GET", new URL(this.config.endpoint + "/ping")); | ||
} | ||
async redirect(method, url, headers = {}, params = {}) { | ||
@@ -301,3 +272,3 @@ const { uri, options } = this.prepareRequest(method, url, headers, params); | ||
async call(method, url, headers = {}, params = {}, responseType = "json") { | ||
var _a, _b; | ||
var _a; | ||
const { uri, options } = this.prepareRequest(method, url, headers, params); | ||
@@ -314,34 +285,2 @@ let data = null; | ||
data = await response.arrayBuffer(); | ||
} else if ((_b = response.headers.get("content-type")) == null ? void 0 : _b.includes("multipart/form-data")) { | ||
const chunks = []; | ||
for await (const chunk of response.body) { | ||
chunks.push(chunk instanceof Buffer ? chunk : Buffer.from(chunk)); | ||
} | ||
const body = Buffer.concat(chunks); | ||
const boundary = multipart__namespace.getBoundary( | ||
response.headers.get("content-type") || "" | ||
); | ||
const parts = multipart__namespace.parse(body, boundary); | ||
const partsObject = {}; | ||
for (const part of parts) { | ||
if (!part.name) { | ||
continue; | ||
} | ||
if (part.name === "responseBody") { | ||
partsObject[part.name] = payload.Payload.fromBinary(part.data, part.filename); | ||
} else if (part.name === "responseStatusCode") { | ||
partsObject[part.name] = parseInt(part.data.toString()); | ||
} else if (part.name === "duration") { | ||
partsObject[part.name] = parseFloat(part.data.toString()); | ||
} else if (part.type === "application/json") { | ||
try { | ||
partsObject[part.name] = JSON.parse(part.data.toString()); | ||
} catch (e) { | ||
throw new Error(`Error parsing JSON for part ${part.name}: ${e instanceof Error ? e.message : "Unknown error"}`); | ||
} | ||
} else { | ||
partsObject[part.name] = part.data.toString(); | ||
} | ||
} | ||
data = partsObject; | ||
} else { | ||
@@ -348,0 +287,0 @@ data = { |
@@ -6,5 +6,7 @@ declare enum ImageFormat { | ||
Png = "png", | ||
Webp = "webp" | ||
Webp = "webp", | ||
Heic = "heic", | ||
Avif = "avif" | ||
} | ||
export { ImageFormat }; |
@@ -9,2 +9,4 @@ 'use strict'; | ||
ImageFormat2["Webp"] = "webp"; | ||
ImageFormat2["Heic"] = "heic"; | ||
ImageFormat2["Avif"] = "avif"; | ||
return ImageFormat2; | ||
@@ -11,0 +13,0 @@ })(ImageFormat || {}); |
@@ -8,2 +8,3 @@ declare enum Runtime { | ||
Node210 = "node-21.0", | ||
Node22 = "node-22", | ||
Php80 = "php-8.0", | ||
@@ -27,2 +28,4 @@ Php81 = "php-8.1", | ||
Deno140 = "deno-1.40", | ||
Deno146 = "deno-1.46", | ||
Deno20 = "deno-2.0", | ||
Dart215 = "dart-2.15", | ||
@@ -35,5 +38,6 @@ Dart216 = "dart-2.16", | ||
Dart33 = "dart-3.3", | ||
Dotnet31 = "dotnet-3.1", | ||
Dart35 = "dart-3.5", | ||
Dotnet60 = "dotnet-6.0", | ||
Dotnet70 = "dotnet-7.0", | ||
Dotnet80 = "dotnet-8.0", | ||
Java80 = "java-8.0", | ||
@@ -44,14 +48,20 @@ Java110 = "java-11.0", | ||
Java210 = "java-21.0", | ||
Java22 = "java-22", | ||
Swift55 = "swift-5.5", | ||
Swift58 = "swift-5.8", | ||
Swift59 = "swift-5.9", | ||
Swift510 = "swift-5.10", | ||
Kotlin16 = "kotlin-1.6", | ||
Kotlin18 = "kotlin-1.8", | ||
Kotlin19 = "kotlin-1.9", | ||
Kotlin20 = "kotlin-2.0", | ||
Cpp17 = "cpp-17", | ||
Cpp20 = "cpp-20", | ||
Bun10 = "bun-1.0", | ||
Go123 = "go-1.23" | ||
Bun11 = "bun-1.1", | ||
Go123 = "go-1.23", | ||
Static1 = "static-1", | ||
Flutter324 = "flutter-3.24" | ||
} | ||
export { Runtime }; |
@@ -10,2 +10,3 @@ 'use strict'; | ||
Runtime2["Node210"] = "node-21.0"; | ||
Runtime2["Node22"] = "node-22"; | ||
Runtime2["Php80"] = "php-8.0"; | ||
@@ -29,2 +30,4 @@ Runtime2["Php81"] = "php-8.1"; | ||
Runtime2["Deno140"] = "deno-1.40"; | ||
Runtime2["Deno146"] = "deno-1.46"; | ||
Runtime2["Deno20"] = "deno-2.0"; | ||
Runtime2["Dart215"] = "dart-2.15"; | ||
@@ -37,5 +40,6 @@ Runtime2["Dart216"] = "dart-2.16"; | ||
Runtime2["Dart33"] = "dart-3.3"; | ||
Runtime2["Dotnet31"] = "dotnet-3.1"; | ||
Runtime2["Dart35"] = "dart-3.5"; | ||
Runtime2["Dotnet60"] = "dotnet-6.0"; | ||
Runtime2["Dotnet70"] = "dotnet-7.0"; | ||
Runtime2["Dotnet80"] = "dotnet-8.0"; | ||
Runtime2["Java80"] = "java-8.0"; | ||
@@ -46,12 +50,18 @@ Runtime2["Java110"] = "java-11.0"; | ||
Runtime2["Java210"] = "java-21.0"; | ||
Runtime2["Java22"] = "java-22"; | ||
Runtime2["Swift55"] = "swift-5.5"; | ||
Runtime2["Swift58"] = "swift-5.8"; | ||
Runtime2["Swift59"] = "swift-5.9"; | ||
Runtime2["Swift510"] = "swift-5.10"; | ||
Runtime2["Kotlin16"] = "kotlin-1.6"; | ||
Runtime2["Kotlin18"] = "kotlin-1.8"; | ||
Runtime2["Kotlin19"] = "kotlin-1.9"; | ||
Runtime2["Kotlin20"] = "kotlin-2.0"; | ||
Runtime2["Cpp17"] = "cpp-17"; | ||
Runtime2["Cpp20"] = "cpp-20"; | ||
Runtime2["Bun10"] = "bun-1.0"; | ||
Runtime2["Bun11"] = "bun-1.1"; | ||
Runtime2["Go123"] = "go-1.23"; | ||
Runtime2["Static1"] = "static-1"; | ||
Runtime2["Flutter324"] = "flutter-3.24"; | ||
return Runtime2; | ||
@@ -58,0 +68,0 @@ })(Runtime || {}); |
@@ -1,2 +0,2 @@ | ||
export { AppwriteException, Client, Params, UploadProgress } from './client.js'; | ||
export { AppwriteException, Client, Payload, UploadProgress } from './client.js'; | ||
export { Account } from './services/account.js'; | ||
@@ -17,3 +17,2 @@ export { Avatars } from './services/avatars.js'; | ||
export { ID } from './id.js'; | ||
export { Payload } from './payload.js'; | ||
export { AuthenticatorType } from './enums/authenticator-type.js'; | ||
@@ -31,2 +30,3 @@ export { AuthenticationFactor } from './enums/authentication-factor.js'; | ||
export { Name } from './enums/name.js'; | ||
export { MessagePriority } from './enums/message-priority.js'; | ||
export { SmtpEncryption } from './enums/smtp-encryption.js'; | ||
@@ -33,0 +33,0 @@ export { Compression } from './enums/compression.js'; |
@@ -18,3 +18,2 @@ 'use strict'; | ||
var id = require('./id'); | ||
var payload = require('./payload'); | ||
var authenticatorType = require('./enums/authenticator-type'); | ||
@@ -32,2 +31,3 @@ var authenticationFactor = require('./enums/authentication-factor'); | ||
var name = require('./enums/name'); | ||
var messagePriority = require('./enums/message-priority'); | ||
var smtpEncryption = require('./enums/smtp-encryption'); | ||
@@ -110,6 +110,2 @@ var compression = require('./enums/compression'); | ||
}); | ||
Object.defineProperty(exports, 'Payload', { | ||
enumerable: true, | ||
get: function () { return payload.Payload; } | ||
}); | ||
Object.defineProperty(exports, 'AuthenticatorType', { | ||
@@ -163,2 +159,6 @@ enumerable: true, | ||
}); | ||
Object.defineProperty(exports, 'MessagePriority', { | ||
enumerable: true, | ||
get: function () { return messagePriority.MessagePriority; } | ||
}); | ||
Object.defineProperty(exports, 'SmtpEncryption', { | ||
@@ -165,0 +165,0 @@ enumerable: true, |
@@ -494,2 +494,10 @@ /** | ||
/** | ||
* Attribute creation date in ISO 8601 format. | ||
*/ | ||
$createdAt: string; | ||
/** | ||
* Attribute update date in ISO 8601 format. | ||
*/ | ||
$updatedAt: string; | ||
/** | ||
* Attribute size. | ||
@@ -532,2 +540,10 @@ */ | ||
/** | ||
* Attribute creation date in ISO 8601 format. | ||
*/ | ||
$createdAt: string; | ||
/** | ||
* Attribute update date in ISO 8601 format. | ||
*/ | ||
$updatedAt: string; | ||
/** | ||
* Minimum value to enforce for new documents. | ||
@@ -574,2 +590,10 @@ */ | ||
/** | ||
* Attribute creation date in ISO 8601 format. | ||
*/ | ||
$createdAt: string; | ||
/** | ||
* Attribute update date in ISO 8601 format. | ||
*/ | ||
$updatedAt: string; | ||
/** | ||
* Minimum value to enforce for new documents. | ||
@@ -616,2 +640,10 @@ */ | ||
/** | ||
* Attribute creation date in ISO 8601 format. | ||
*/ | ||
$createdAt: string; | ||
/** | ||
* Attribute update date in ISO 8601 format. | ||
*/ | ||
$updatedAt: string; | ||
/** | ||
* Default value for attribute when not provided. Cannot be set when attribute is required. | ||
@@ -650,2 +682,10 @@ */ | ||
/** | ||
* Attribute creation date in ISO 8601 format. | ||
*/ | ||
$createdAt: string; | ||
/** | ||
* Attribute update date in ISO 8601 format. | ||
*/ | ||
$updatedAt: string; | ||
/** | ||
* String format. | ||
@@ -688,2 +728,10 @@ */ | ||
/** | ||
* Attribute creation date in ISO 8601 format. | ||
*/ | ||
$createdAt: string; | ||
/** | ||
* Attribute update date in ISO 8601 format. | ||
*/ | ||
$updatedAt: string; | ||
/** | ||
* Array of elements in enumerated type. | ||
@@ -730,2 +778,10 @@ */ | ||
/** | ||
* Attribute creation date in ISO 8601 format. | ||
*/ | ||
$createdAt: string; | ||
/** | ||
* Attribute update date in ISO 8601 format. | ||
*/ | ||
$updatedAt: string; | ||
/** | ||
* String format. | ||
@@ -768,2 +824,10 @@ */ | ||
/** | ||
* Attribute creation date in ISO 8601 format. | ||
*/ | ||
$createdAt: string; | ||
/** | ||
* Attribute update date in ISO 8601 format. | ||
*/ | ||
$updatedAt: string; | ||
/** | ||
* String format. | ||
@@ -806,2 +870,10 @@ */ | ||
/** | ||
* Attribute creation date in ISO 8601 format. | ||
*/ | ||
$createdAt: string; | ||
/** | ||
* Attribute update date in ISO 8601 format. | ||
*/ | ||
$updatedAt: string; | ||
/** | ||
* ISO 8601 format. | ||
@@ -844,2 +916,10 @@ */ | ||
/** | ||
* Attribute creation date in ISO 8601 format. | ||
*/ | ||
$createdAt: string; | ||
/** | ||
* Attribute update date in ISO 8601 format. | ||
*/ | ||
$updatedAt: string; | ||
/** | ||
* The ID of the related collection. | ||
@@ -897,2 +977,10 @@ */ | ||
orders?: string[]; | ||
/** | ||
* Index creation date in ISO 8601 format. | ||
*/ | ||
$createdAt: string; | ||
/** | ||
* Index update date in ISO 8601 format. | ||
*/ | ||
$updatedAt: string; | ||
}; | ||
@@ -1610,7 +1698,7 @@ /** | ||
/** | ||
* User name. | ||
* User name. Hide this attribute by toggling membership privacy in the Console. | ||
*/ | ||
userName: string; | ||
/** | ||
* User email address. | ||
* User email address. Hide this attribute by toggling membership privacy in the Console. | ||
*/ | ||
@@ -1639,3 +1727,3 @@ userEmail: string; | ||
/** | ||
* Multi factor authentication status, true if the user has MFA enabled or false otherwise. | ||
* Multi factor authentication status, true if the user has MFA enabled or false otherwise. Hide this attribute by toggling membership privacy in the Console. | ||
*/ | ||
@@ -1705,3 +1793,3 @@ mfa: boolean; | ||
/** | ||
* Function execution schedult in CRON format. | ||
* Function execution schedule in CRON format. | ||
*/ | ||
@@ -2523,2 +2611,6 @@ schedule: string; | ||
identifier: string; | ||
/** | ||
* Is the target expired. | ||
*/ | ||
expired: boolean; | ||
}; | ||
@@ -2525,0 +2617,0 @@ } |
@@ -47,3 +47,3 @@ import { Client } from '../client.js'; | ||
/** | ||
* List Identities | ||
* List identities | ||
* | ||
@@ -97,3 +97,3 @@ * Get the list of identities for the currently logged in user. | ||
/** | ||
* Create Authenticator | ||
* Create authenticator | ||
* | ||
@@ -108,3 +108,3 @@ * Add an authenticator app to be used as an MFA factor. Verify the authenticator using the [verify authenticator](/docs/references/cloud/client-web/account#updateMfaAuthenticator) method. | ||
/** | ||
* Verify Authenticator | ||
* Verify authenticator | ||
* | ||
@@ -120,3 +120,3 @@ * Verify an authenticator app after adding it using the [add authenticator](/docs/references/cloud/client-web/account#createMfaAuthenticator) method. | ||
/** | ||
* Delete Authenticator | ||
* Delete authenticator | ||
* | ||
@@ -131,3 +131,3 @@ * Delete an authenticator for a user by ID. | ||
/** | ||
* Create MFA Challenge | ||
* Create MFA challenge | ||
* | ||
@@ -142,3 +142,3 @@ * Begin the process of MFA verification after sign-in. Finish the flow with [updateMfaChallenge](/docs/references/cloud/client-web/account#updateMfaChallenge) method. | ||
/** | ||
* Create MFA Challenge (confirmation) | ||
* Create MFA challenge (confirmation) | ||
* | ||
@@ -150,7 +150,7 @@ * Complete the MFA challenge by providing the one-time password. Finish the process of MFA verification by providing the one-time password. To begin the flow, use [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method. | ||
* @throws {AppwriteException} | ||
* @returns {Promise<{}>} | ||
* @returns {Promise<Models.Session>} | ||
*/ | ||
updateMfaChallenge(challengeId: string, otp: string): Promise<{}>; | ||
updateMfaChallenge(challengeId: string, otp: string): Promise<Models.Session>; | ||
/** | ||
* List Factors | ||
* List factors | ||
* | ||
@@ -164,3 +164,3 @@ * List the factors available on the account to be used as a MFA challange. | ||
/** | ||
* Get MFA Recovery Codes | ||
* Get MFA recovery codes | ||
* | ||
@@ -174,3 +174,3 @@ * Get recovery codes that can be used as backup for MFA flow. Before getting codes, they must be generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. An OTP challenge is required to read recovery codes. | ||
/** | ||
* Create MFA Recovery Codes | ||
* Create MFA recovery codes | ||
* | ||
@@ -184,3 +184,3 @@ * Generate recovery codes as backup for MFA flow. It's recommended to generate and show then immediately after user successfully adds their authehticator. Recovery codes can be used as a MFA verification type in [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method. | ||
/** | ||
* Regenerate MFA Recovery Codes | ||
* Regenerate MFA recovery codes | ||
* | ||
@@ -398,3 +398,3 @@ * Regenerate recovery codes that can be used as backup for MFA flow. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. An OTP challenge is required to regenreate recovery codes. | ||
* | ||
* Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default. | ||
* Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. | ||
@@ -401,0 +401,0 @@ A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). |
@@ -117,3 +117,3 @@ 'use strict'; | ||
/** | ||
* List Identities | ||
* List identities | ||
* | ||
@@ -247,3 +247,3 @@ * Get the list of identities for the currently logged in user. | ||
/** | ||
* Create Authenticator | ||
* Create authenticator | ||
* | ||
@@ -274,3 +274,3 @@ * Add an authenticator app to be used as an MFA factor. Verify the authenticator using the [verify authenticator](/docs/references/cloud/client-web/account#updateMfaAuthenticator) method. | ||
/** | ||
* Verify Authenticator | ||
* Verify authenticator | ||
* | ||
@@ -308,3 +308,3 @@ * Verify an authenticator app after adding it using the [add authenticator](/docs/references/cloud/client-web/account#createMfaAuthenticator) method. | ||
/** | ||
* Delete Authenticator | ||
* Delete authenticator | ||
* | ||
@@ -335,3 +335,3 @@ * Delete an authenticator for a user by ID. | ||
/** | ||
* Create MFA Challenge | ||
* Create MFA challenge | ||
* | ||
@@ -365,3 +365,3 @@ * Begin the process of MFA verification after sign-in. Finish the flow with [updateMfaChallenge](/docs/references/cloud/client-web/account#updateMfaChallenge) method. | ||
/** | ||
* Create MFA Challenge (confirmation) | ||
* Create MFA challenge (confirmation) | ||
* | ||
@@ -373,3 +373,3 @@ * Complete the MFA challenge by providing the one-time password. Finish the process of MFA verification by providing the one-time password. To begin the flow, use [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method. | ||
* @throws {AppwriteException} | ||
* @returns {Promise<{}>} | ||
* @returns {Promise<Models.Session>} | ||
*/ | ||
@@ -403,3 +403,3 @@ async updateMfaChallenge(challengeId, otp) { | ||
/** | ||
* List Factors | ||
* List factors | ||
* | ||
@@ -426,3 +426,3 @@ * List the factors available on the account to be used as a MFA challange. | ||
/** | ||
* Get MFA Recovery Codes | ||
* Get MFA recovery codes | ||
* | ||
@@ -449,3 +449,3 @@ * Get recovery codes that can be used as backup for MFA flow. Before getting codes, they must be generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. An OTP challenge is required to read recovery codes. | ||
/** | ||
* Create MFA Recovery Codes | ||
* Create MFA recovery codes | ||
* | ||
@@ -472,3 +472,3 @@ * Generate recovery codes as backup for MFA flow. It's recommended to generate and show then immediately after user successfully adds their authehticator. Recovery codes can be used as a MFA verification type in [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method. | ||
/** | ||
* Regenerate MFA Recovery Codes | ||
* Regenerate MFA recovery codes | ||
* | ||
@@ -1081,3 +1081,3 @@ * Regenerate recovery codes that can be used as backup for MFA flow. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. An OTP challenge is required to regenreate recovery codes. | ||
* | ||
* Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default. | ||
* Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. | ||
@@ -1084,0 +1084,0 @@ A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). |
import { Client, UploadProgress } from '../client.js'; | ||
import { Payload } from '../payload.js'; | ||
import { Models } from '../models.js'; | ||
@@ -141,3 +140,3 @@ import { Runtime } from '../enums/runtime.js'; | ||
* @param {string} functionId | ||
* @param {Payload} code | ||
* @param {File} code | ||
* @param {boolean} activate | ||
@@ -149,3 +148,3 @@ * @param {string} entrypoint | ||
*/ | ||
createDeployment(functionId: string, code: Payload, activate: boolean, entrypoint?: string, commands?: string, onProgress?: (progress: UploadProgress) => void): Promise<Models.Deployment>; | ||
createDeployment(functionId: string, code: File, activate: boolean, entrypoint?: string, commands?: string, onProgress?: (progress: UploadProgress) => void): Promise<Models.Deployment>; | ||
/** | ||
@@ -187,2 +186,3 @@ * Get deployment | ||
* | ||
* Create a new build for an existing function deployment. This endpoint allows you to rebuild a deployment with the updated function configuration, including its entrypoint and build commands if they have been modified The build process will be queued and executed asynchronously. The original deployment's code will be preserved and used for the new build. | ||
* | ||
@@ -199,2 +199,3 @@ * @param {string} functionId | ||
* | ||
* Cancel an ongoing function deployment build. If the build is already in progress, it will be stopped and marked as canceled. If the build hasn't started yet, it will be marked as canceled without executing. You cannot cancel builds that have already completed (status 'ready') or failed. The response includes the final build status and details. | ||
* | ||
@@ -236,3 +237,3 @@ * @param {string} functionId | ||
* @param {string} functionId | ||
* @param {Payload} body | ||
* @param {string} body | ||
* @param {boolean} async | ||
@@ -246,3 +247,3 @@ * @param {string} xpath | ||
*/ | ||
createExecution(functionId: string, body?: Payload, async?: boolean, xpath?: string, method?: ExecutionMethod, headers?: object, scheduledAt?: string, onProgress?: (progress: UploadProgress) => void): Promise<Models.Execution>; | ||
createExecution(functionId: string, body?: string, async?: boolean, xpath?: string, method?: ExecutionMethod, headers?: object, scheduledAt?: string): Promise<Models.Execution>; | ||
/** | ||
@@ -249,0 +250,0 @@ * Get execution |
@@ -396,3 +396,3 @@ 'use strict'; | ||
* @param {string} functionId | ||
* @param {Payload} code | ||
* @param {File} code | ||
* @param {boolean} activate | ||
@@ -534,2 +534,3 @@ * @param {string} entrypoint | ||
* | ||
* Create a new build for an existing function deployment. This endpoint allows you to rebuild a deployment with the updated function configuration, including its entrypoint and build commands if they have been modified The build process will be queued and executed asynchronously. The original deployment's code will be preserved and used for the new build. | ||
* | ||
@@ -568,2 +569,3 @@ * @param {string} functionId | ||
* | ||
* Cancel an ongoing function deployment build. If the build is already in progress, it will be stopped and marked as canceled. If the build hasn't started yet, it will be marked as canceled without executing. You cannot cancel builds that have already completed (status 'ready') or failed. The response includes the final build status and details. | ||
* | ||
@@ -666,3 +668,3 @@ * @param {string} functionId | ||
* @param {string} functionId | ||
* @param {Payload} body | ||
* @param {string} body | ||
* @param {boolean} async | ||
@@ -676,4 +678,3 @@ * @param {string} xpath | ||
*/ | ||
async createExecution(functionId, body, async, xpath, method, headers, scheduledAt, onProgress = (progress) => { | ||
}) { | ||
async createExecution(functionId, body, async, xpath, method, headers, scheduledAt) { | ||
if (typeof functionId === "undefined") { | ||
@@ -685,3 +686,3 @@ throw new client.AppwriteException('Missing required parameter: "functionId"'); | ||
if (typeof body !== "undefined") { | ||
payload["body"] = body.toBinary(); | ||
payload["body"] = body; | ||
} | ||
@@ -705,3 +706,3 @@ if (typeof async !== "undefined") { | ||
const apiHeaders = { | ||
"content-type": "multipart/form-data" | ||
"content-type": "application/json" | ||
}; | ||
@@ -708,0 +709,0 @@ return await this.client.call( |
@@ -20,3 +20,3 @@ import { Client } from '../client.js'; | ||
/** | ||
* List Locale Codes | ||
* List locale codes | ||
* | ||
@@ -23,0 +23,0 @@ * List of all locale codes in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes). |
@@ -32,3 +32,3 @@ 'use strict'; | ||
/** | ||
* List Locale Codes | ||
* List locale codes | ||
* | ||
@@ -35,0 +35,0 @@ * List of all locale codes in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes). |
import { Client } from '../client.js'; | ||
import { Models } from '../models.js'; | ||
import { MessagePriority } from '../enums/message-priority.js'; | ||
import { SmtpEncryption } from '../enums/smtp-encryption.js'; | ||
@@ -81,9 +82,12 @@ import '../query.js'; | ||
* @param {string} tag | ||
* @param {string} badge | ||
* @param {number} badge | ||
* @param {boolean} draft | ||
* @param {string} scheduledAt | ||
* @param {boolean} contentAvailable | ||
* @param {boolean} critical | ||
* @param {MessagePriority} priority | ||
* @throws {AppwriteException} | ||
* @returns {Promise<Models.Message>} | ||
*/ | ||
createPush(messageId: string, title: string, body: string, topics?: string[], users?: string[], targets?: string[], data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: string, draft?: boolean, scheduledAt?: string): Promise<Models.Message>; | ||
createPush(messageId: string, title?: string, body?: string, topics?: string[], users?: string[], targets?: string[], data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: number, draft?: boolean, scheduledAt?: string, contentAvailable?: boolean, critical?: boolean, priority?: MessagePriority): Promise<Models.Message>; | ||
/** | ||
@@ -111,6 +115,9 @@ * Update push notification | ||
* @param {string} scheduledAt | ||
* @param {boolean} contentAvailable | ||
* @param {boolean} critical | ||
* @param {MessagePriority} priority | ||
* @throws {AppwriteException} | ||
* @returns {Promise<Models.Message>} | ||
*/ | ||
updatePush(messageId: string, topics?: string[], users?: string[], targets?: string[], title?: string, body?: string, data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: number, draft?: boolean, scheduledAt?: string): Promise<Models.Message>; | ||
updatePush(messageId: string, topics?: string[], users?: string[], targets?: string[], title?: string, body?: string, data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: number, draft?: boolean, scheduledAt?: string, contentAvailable?: boolean, critical?: boolean, priority?: MessagePriority): Promise<Models.Message>; | ||
/** | ||
@@ -135,3 +142,3 @@ * Create SMS | ||
* | ||
* Update an email message by its unique ID. | ||
* Update an SMS message by its unique ID. | ||
@@ -138,0 +145,0 @@ * |
@@ -207,18 +207,15 @@ 'use strict'; | ||
* @param {string} tag | ||
* @param {string} badge | ||
* @param {number} badge | ||
* @param {boolean} draft | ||
* @param {string} scheduledAt | ||
* @param {boolean} contentAvailable | ||
* @param {boolean} critical | ||
* @param {MessagePriority} priority | ||
* @throws {AppwriteException} | ||
* @returns {Promise<Models.Message>} | ||
*/ | ||
async createPush(messageId, title, body, topics, users, targets, data, action, image, icon, sound, color, tag, badge, draft, scheduledAt) { | ||
async createPush(messageId, title, body, topics, users, targets, data, action, image, icon, sound, color, tag, badge, draft, scheduledAt, contentAvailable, critical, priority) { | ||
if (typeof messageId === "undefined") { | ||
throw new client.AppwriteException('Missing required parameter: "messageId"'); | ||
} | ||
if (typeof title === "undefined") { | ||
throw new client.AppwriteException('Missing required parameter: "title"'); | ||
} | ||
if (typeof body === "undefined") { | ||
throw new client.AppwriteException('Missing required parameter: "body"'); | ||
} | ||
const apiPath = "/messaging/messages/push"; | ||
@@ -274,2 +271,11 @@ const payload = {}; | ||
} | ||
if (typeof contentAvailable !== "undefined") { | ||
payload["contentAvailable"] = contentAvailable; | ||
} | ||
if (typeof critical !== "undefined") { | ||
payload["critical"] = critical; | ||
} | ||
if (typeof priority !== "undefined") { | ||
payload["priority"] = priority; | ||
} | ||
const uri = new URL(this.client.config.endpoint + apiPath); | ||
@@ -308,6 +314,9 @@ const apiHeaders = { | ||
* @param {string} scheduledAt | ||
* @param {boolean} contentAvailable | ||
* @param {boolean} critical | ||
* @param {MessagePriority} priority | ||
* @throws {AppwriteException} | ||
* @returns {Promise<Models.Message>} | ||
*/ | ||
async updatePush(messageId, topics, users, targets, title, body, data, action, image, icon, sound, color, tag, badge, draft, scheduledAt) { | ||
async updatePush(messageId, topics, users, targets, title, body, data, action, image, icon, sound, color, tag, badge, draft, scheduledAt, contentAvailable, critical, priority) { | ||
if (typeof messageId === "undefined") { | ||
@@ -363,2 +372,11 @@ throw new client.AppwriteException('Missing required parameter: "messageId"'); | ||
} | ||
if (typeof contentAvailable !== "undefined") { | ||
payload["contentAvailable"] = contentAvailable; | ||
} | ||
if (typeof critical !== "undefined") { | ||
payload["critical"] = critical; | ||
} | ||
if (typeof priority !== "undefined") { | ||
payload["priority"] = priority; | ||
} | ||
const uri = new URL(this.client.config.endpoint + apiPath); | ||
@@ -434,3 +452,3 @@ const apiHeaders = { | ||
* | ||
* Update an email message by its unique ID. | ||
* Update an SMS message by its unique ID. | ||
@@ -437,0 +455,0 @@ * |
import { Client, UploadProgress } from '../client.js'; | ||
import { Payload } from '../payload.js'; | ||
import { Models } from '../models.js'; | ||
@@ -107,3 +106,3 @@ import { Compression } from '../enums/compression.js'; | ||
* @param {string} fileId | ||
* @param {Payload} file | ||
* @param {File} file | ||
* @param {string[]} permissions | ||
@@ -113,3 +112,3 @@ * @throws {AppwriteException} | ||
*/ | ||
createFile(bucketId: string, fileId: string, file: Payload, permissions?: string[], onProgress?: (progress: UploadProgress) => void): Promise<Models.File>; | ||
createFile(bucketId: string, fileId: string, file: File, permissions?: string[], onProgress?: (progress: UploadProgress) => void): Promise<Models.File>; | ||
/** | ||
@@ -140,3 +139,3 @@ * Get file | ||
/** | ||
* Delete File | ||
* Delete file | ||
* | ||
@@ -143,0 +142,0 @@ * Delete a file by its unique ID. Only users with write permissions have access to delete this resource. |
@@ -272,3 +272,3 @@ 'use strict'; | ||
* @param {string} fileId | ||
* @param {Payload} file | ||
* @param {File} file | ||
* @param {string[]} permissions | ||
@@ -381,3 +381,3 @@ * @throws {AppwriteException} | ||
/** | ||
* Delete File | ||
* Delete file | ||
* | ||
@@ -384,0 +384,0 @@ * Delete a file by its unique ID. Only users with write permissions have access to delete this resource. |
@@ -65,3 +65,3 @@ import { Client } from '../client.js'; | ||
* | ||
* Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint. | ||
* 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. | ||
* | ||
@@ -101,3 +101,3 @@ * @param {string} teamId | ||
* | ||
* Get a team member by the membership unique id. All team members have read access for this resource. | ||
* Get a team member by the membership unique id. All team members have read access for this resource. Hide sensitive attributes from the response by toggling membership privacy in the Console. | ||
* | ||
@@ -104,0 +104,0 @@ * @param {string} teamId |
@@ -167,3 +167,3 @@ 'use strict'; | ||
* | ||
* Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint. | ||
* 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. | ||
* | ||
@@ -262,3 +262,3 @@ * @param {string} teamId | ||
* | ||
* Get a team member by the membership unique id. All team members have read access for this resource. | ||
* Get a team member by the membership unique id. All team members have read access for this resource. Hide sensitive attributes from the response by toggling membership privacy in the Console. | ||
* | ||
@@ -265,0 +265,0 @@ * @param {string} teamId |
@@ -63,3 +63,3 @@ import { Client } from '../client.js'; | ||
/** | ||
* List Identities | ||
* List identities | ||
* | ||
@@ -247,3 +247,3 @@ * Get identities for all users. | ||
/** | ||
* Delete Authenticator | ||
* Delete authenticator | ||
* | ||
@@ -255,7 +255,7 @@ * Delete an authenticator app. | ||
* @throws {AppwriteException} | ||
* @returns {Promise<Models.User<Preferences>>} | ||
* @returns {Promise<{}>} | ||
*/ | ||
deleteMfaAuthenticator<Preferences extends Models.Preferences>(userId: string, type: AuthenticatorType): Promise<Models.User<Preferences>>; | ||
deleteMfaAuthenticator(userId: string, type: AuthenticatorType): Promise<{}>; | ||
/** | ||
* List Factors | ||
* List factors | ||
* | ||
@@ -270,3 +270,3 @@ * List the factors available on the account to be used as a MFA challange. | ||
/** | ||
* Get MFA Recovery Codes | ||
* Get MFA recovery codes | ||
* | ||
@@ -281,3 +281,3 @@ * Get recovery codes that can be used as backup for MFA flow by User ID. Before getting codes, they must be generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. | ||
/** | ||
* Regenerate MFA Recovery Codes | ||
* Regenerate MFA recovery codes | ||
* | ||
@@ -292,3 +292,3 @@ * Regenerate recovery codes that can be used as backup for MFA flow by User ID. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. | ||
/** | ||
* Create MFA Recovery Codes | ||
* Create MFA recovery codes | ||
* | ||
@@ -411,3 +411,3 @@ * Generate recovery codes used as backup for MFA flow for User ID. Recovery codes can be used as a MFA verification type in [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method by client SDK. | ||
/** | ||
* List User Targets | ||
* List user targets | ||
* | ||
@@ -423,3 +423,3 @@ * List the messaging targets that are associated with a user. | ||
/** | ||
* Create User Target | ||
* Create user target | ||
* | ||
@@ -439,3 +439,3 @@ * Create a messaging target. | ||
/** | ||
* Get User Target | ||
* Get user target | ||
* | ||
@@ -451,3 +451,3 @@ * Get a user's push notification target by ID. | ||
/** | ||
* Update User target | ||
* Update user target | ||
* | ||
@@ -454,0 +454,0 @@ * Update a messaging target. |
@@ -179,3 +179,3 @@ 'use strict'; | ||
/** | ||
* List Identities | ||
* List identities | ||
* | ||
@@ -774,3 +774,3 @@ * Get identities for all users. | ||
/** | ||
* Delete Authenticator | ||
* Delete authenticator | ||
* | ||
@@ -782,3 +782,3 @@ * Delete an authenticator app. | ||
* @throws {AppwriteException} | ||
* @returns {Promise<Models.User<Preferences>>} | ||
* @returns {Promise<{}>} | ||
*/ | ||
@@ -806,3 +806,3 @@ async deleteMfaAuthenticator(userId, type) { | ||
/** | ||
* List Factors | ||
* List factors | ||
* | ||
@@ -833,3 +833,3 @@ * List the factors available on the account to be used as a MFA challange. | ||
/** | ||
* Get MFA Recovery Codes | ||
* Get MFA recovery codes | ||
* | ||
@@ -860,3 +860,3 @@ * Get recovery codes that can be used as backup for MFA flow by User ID. Before getting codes, they must be generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. | ||
/** | ||
* Regenerate MFA Recovery Codes | ||
* Regenerate MFA recovery codes | ||
* | ||
@@ -887,3 +887,3 @@ * Regenerate recovery codes that can be used as backup for MFA flow by User ID. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. | ||
/** | ||
* Create MFA Recovery Codes | ||
* Create MFA recovery codes | ||
* | ||
@@ -1215,3 +1215,3 @@ * Generate recovery codes used as backup for MFA flow for User ID. Recovery codes can be used as a MFA verification type in [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method by client SDK. | ||
/** | ||
* List User Targets | ||
* List user targets | ||
* | ||
@@ -1246,3 +1246,3 @@ * List the messaging targets that are associated with a user. | ||
/** | ||
* Create User Target | ||
* Create user target | ||
* | ||
@@ -1302,3 +1302,3 @@ * Create a messaging target. | ||
/** | ||
* Get User Target | ||
* Get user target | ||
* | ||
@@ -1333,3 +1333,3 @@ * Get a user's push notification target by ID. | ||
/** | ||
* Update User target | ||
* Update user target | ||
* | ||
@@ -1336,0 +1336,0 @@ * Update a messaging target. |
@@ -5,3 +5,3 @@ { | ||
"description": "Appwrite is an open-source self-hosted backend server that abstract and simplify complex and repetitive development tasks behind a very simple REST API", | ||
"version": "15.0.0-rc1", | ||
"version": "15.0.0", | ||
"license": "BSD-3-Clause", | ||
@@ -23,2 +23,12 @@ "main": "dist/index.js", | ||
} | ||
}, | ||
"./file": { | ||
"import": { | ||
"types": "./dist/inputFile.d.mts", | ||
"default": "./dist/inputFile.mjs" | ||
}, | ||
"require": { | ||
"types": "./dist/inputFile.d.ts", | ||
"default": "./dist/inputFile.js" | ||
} | ||
} | ||
@@ -43,5 +53,4 @@ }, | ||
"dependencies": { | ||
"node-fetch-native-with-agent": "1.7.2", | ||
"parse-multipart-data": "^1.5.0" | ||
"node-fetch-native-with-agent": "1.7.2" | ||
} | ||
} |
# Appwrite Node.js SDK | ||
 | ||
 | ||
 | ||
[](https://travis-ci.com/appwrite/sdk-generator) | ||
@@ -6,0 +6,0 @@ [](https://twitter.com/appwrite) |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
2386097
0.2%1
-50%231
2.67%29542
0.2%0
-100%3
200%- Removed
- Removed