### Install x-client-transaction-id via NPM Source: https://github.com/lqm1/x-client-transaction-id/blob/main/README.md Use NPM to install the library. This is a common method for Node.js projects. ```bash npm i x-client-transaction-id ``` -------------------------------- ### Install x-client-transaction-id for Bun Source: https://github.com/lqm1/x-client-transaction-id/blob/main/README.md Add the library to your Bun project using the bun add command. ```bash bun add x-client-transaction-id ``` -------------------------------- ### Install x-client-transaction-id via PNPM Source: https://github.com/lqm1/x-client-transaction-id/blob/main/README.md Use PNPM to install the library. PNPM is a fast, disk-space-efficient package manager. ```bash pnpm i x-client-transaction-id ``` -------------------------------- ### Install x-client-transaction-id for Deno Source: https://github.com/lqm1/x-client-transaction-id/blob/main/README.md Add the library to your Deno project using the deno add command. ```bash deno add npm:x-client-transaction-id ``` -------------------------------- ### Install x-client-transaction-id via Yarn Source: https://github.com/lqm1/x-client-transaction-id/blob/main/README.md Use Yarn to install the library. Yarn is another popular package manager for JavaScript. ```bash yarn add x-client-transaction-id ``` -------------------------------- ### Basic Usage of ClientTransaction Source: https://github.com/lqm1/x-client-transaction-id/blob/main/README.md Generate a transaction ID for an X API request using the ClientTransaction class. This example uses the utility function to fetch the homepage document. ```typescript import { ClientTransaction, handleXMigration } from "x-client-transaction-id"; // Get the X homepage HTML document (using utility function) const document = await handleXMigration(); // Create and initialize ClientTransaction instance const transaction = await ClientTransaction.create(document); // Generate a transaction ID const transactionId = await transaction.generateTransactionId( "GET", // HTTP method "/1.1/jot/client_event.json", // API path ); console.log("Transaction ID:", transactionId); // Use as a header in API requests const headers = { "x-client-transaction-id": transactionId, // Other required headers }; const apiResponse = await fetch( "https://api.twitter.com/1.1/jot/client_event.json", { method: "GET", headers, }, ); ``` -------------------------------- ### ClientTransaction.create Source: https://github.com/lqm1/x-client-transaction-id/blob/main/README.md Static factory method to create and initialize a ClientTransaction instance. It takes the DOM document from the X homepage as input. ```APIDOC ## ClientTransaction.create ### Description Static factory method that creates and initializes an instance of `ClientTransaction`. ### Method `static async create(homePageDocument: Document): Promise` ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example ```typescript const document = await handleXMigration(); const transaction = await ClientTransaction.create(document); ``` ### Response #### Success Response - `ClientTransaction`: An initialized instance of the `ClientTransaction` class. #### Response Example ```typescript (conceptual) // Returns an instance of ClientTransaction ``` ``` -------------------------------- ### ClientTransaction constructor and initialize Source: https://github.com/lqm1/x-client-transaction-id/blob/main/README.md Constructor for the ClientTransaction class, which requires manual initialization after creation. It takes the DOM document from the X homepage. ```APIDOC ## ClientTransaction constructor and initialize ### Description Initializes a `ClientTransaction` instance using a provided DOM document from the X homepage. The `initialize` method must be called separately after instantiation. ### Method - `constructor(homePageDocument: Document)` - `async initialize()` ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example ```typescript const response = await fetch("https://twitter.com/"); const html = await response.text(); const parser = new DOMParser(); const document = parser.parseFromString(html, "text/html"); const transaction = new ClientTransaction(document); await transaction.initialize(); ``` ### Response #### Success Response - `initialize()`: Initializes the instance. #### Response Example ```typescript (conceptual) // Initializes the transaction object in place. ``` ``` -------------------------------- ### Manual Document Retrieval for ClientTransaction Source: https://github.com/lqm1/x-client-transaction-id/blob/main/README.md Initialize ClientTransaction by manually fetching and parsing the X homepage HTML. This provides more control over the document retrieval process. ```typescript import { ClientTransaction } from "x-client-transaction-id"; // Get Twitter homepage HTML document const response = await fetch("https://twitter.com/"); const html = await response.text(); const parser = new DOMParser(); const document = parser.parseFromString(html, "text/html"); // Create and initialize ClientTransaction instance const transaction = new ClientTransaction(document); await transaction.initialize(); // Generate a transaction ID const transactionId = await transaction.generateTransactionId( "POST", // HTTP method "/graphql/abcdefg/TweetDetail", // API path ); ``` -------------------------------- ### Import ClientTransaction using Import Maps Source: https://github.com/lqm1/x-client-transaction-id/blob/main/README.md Import the ClientTransaction class using import maps for Deno or modern browsers. ```typescript import { ClientTransaction } from "jsr:@lami/x-client-transaction-id@0.1.0"; ``` -------------------------------- ### handleXMigration Source: https://github.com/lqm1/x-client-transaction-id/blob/main/README.md A utility function to fetch and parse the X (Twitter) homepage HTML into a DOM Document object, simplifying initialization for ClientTransaction. ```APIDOC ## handleXMigration ### Description Utility function that retrieves the X (Twitter) homepage, parses its HTML content, and returns a DOM `Document` object. This is useful for initializing the `ClientTransaction` class. ### Method `async function handleXMigration(): Promise` ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example ```typescript const document = await handleXMigration(); ``` ### Response #### Success Response - `Document`: A DOM `Document` object representing the X homepage. #### Response Example ```typescript (conceptual) // Returns a DOM Document object ``` ``` -------------------------------- ### ClientTransaction.generateTransactionId Source: https://github.com/lqm1/x-client-transaction-id/blob/main/README.md Generates a unique transaction ID required for X API requests based on the HTTP method and API path. ```APIDOC ## ClientTransaction.generateTransactionId ### Description Generates a transaction ID string that can be used as the `x-client-transaction-id` header for X API requests. It requires the HTTP method and API path. ### Method `async generateTransactionId(method: string, path: string, ...): Promise` ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example ```typescript const transactionId = await transaction.generateTransactionId("GET", "/1.1/jot/client_event.json"); ``` ### Response #### Success Response - `string`: The generated transaction ID. #### Response Example ```typescript (conceptual) // Returns a string like "a1b2c3d4e5f67890" ``` ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.