diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz index 39578bbf..68277500 100644 Binary files a/.yarn/install-state.gz and b/.yarn/install-state.gz differ diff --git a/docs/assets/analytics/engagement-analytics.png b/docs/assets/analytics/engagement-analytics.png new file mode 100644 index 00000000..720619fe Binary files /dev/null and b/docs/assets/analytics/engagement-analytics.png differ diff --git a/docs/assets/analytics/engagement.png b/docs/assets/analytics/engagement.png new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/docs/assets/analytics/engagement.png @@ -0,0 +1 @@ + diff --git a/docs/assets/analytics/journeys-1.png b/docs/assets/analytics/journeys-1.png new file mode 100644 index 00000000..1eadcdd8 Binary files /dev/null and b/docs/assets/analytics/journeys-1.png differ diff --git a/docs/assets/analytics/journeys-2.png b/docs/assets/analytics/journeys-2.png new file mode 100644 index 00000000..d100910a Binary files /dev/null and b/docs/assets/analytics/journeys-2.png differ diff --git a/docs/assets/analytics/journeys-3.png b/docs/assets/analytics/journeys-3.png new file mode 100644 index 00000000..4846469d Binary files /dev/null and b/docs/assets/analytics/journeys-3.png differ diff --git a/docs/assets/analytics/journeys-4.png b/docs/assets/analytics/journeys-4.png new file mode 100644 index 00000000..08d0098a Binary files /dev/null and b/docs/assets/analytics/journeys-4.png differ diff --git a/docs/assets/analytics/login-screen.png b/docs/assets/analytics/login-screen.png new file mode 100644 index 00000000..80fe24bb Binary files /dev/null and b/docs/assets/analytics/login-screen.png differ diff --git a/docs/assets/analytics/syllo-logo.png b/docs/assets/analytics/syllo-logo.png new file mode 100644 index 00000000..72d1bdbb Binary files /dev/null and b/docs/assets/analytics/syllo-logo.png differ diff --git a/docs/assets/analytics/syllo-play-2.png b/docs/assets/analytics/syllo-play-2.png new file mode 100644 index 00000000..07a37a93 Binary files /dev/null and b/docs/assets/analytics/syllo-play-2.png differ diff --git a/docs/assets/analytics/syllo-sharesheet.png b/docs/assets/analytics/syllo-sharesheet.png new file mode 100644 index 00000000..3f59f903 Binary files /dev/null and b/docs/assets/analytics/syllo-sharesheet.png differ diff --git a/docs/assets/notifications/component-examples.png b/docs/assets/notifications/component-examples.png new file mode 100644 index 00000000..33b8dd79 Binary files /dev/null and b/docs/assets/notifications/component-examples.png differ diff --git a/docs/assets/notifications/layer-urgency.png b/docs/assets/notifications/layer-urgency.png new file mode 100644 index 00000000..0046a348 Binary files /dev/null and b/docs/assets/notifications/layer-urgency.png differ diff --git a/docs/assets/notifications/syllo-pn-examples.png b/docs/assets/notifications/syllo-pn-examples.png new file mode 100644 index 00000000..9b0a0c8d Binary files /dev/null and b/docs/assets/notifications/syllo-pn-examples.png differ diff --git a/docs/assets/notifications/tangible-benefits.png b/docs/assets/notifications/tangible-benefits.png new file mode 100644 index 00000000..cff319bd Binary files /dev/null and b/docs/assets/notifications/tangible-benefits.png differ diff --git a/docs/assets/notifications/visible-progress.png b/docs/assets/notifications/visible-progress.png new file mode 100644 index 00000000..c721c9e3 Binary files /dev/null and b/docs/assets/notifications/visible-progress.png differ diff --git a/docs/capabilities/analytics/analytics-overview.md b/docs/capabilities/analytics/analytics-overview.md new file mode 100644 index 00000000..c9252fae --- /dev/null +++ b/docs/capabilities/analytics/analytics-overview.md @@ -0,0 +1,18 @@ +# Overview + +Devvit Journeys is an experimental telemetry feature that captures the full lifecycle of a gameplay session. It provides visibility into how players enter, progress through, abandon, and complete experiences within your game. + +This data can help identify friction points, analyze player behavior, inform product decisions, and surface opportunities to improve onboarding, progression, and overall engagement. + +## Beta requirements + +Devvit Journeys is a **gated beta**, which means that you’ll need to apply to unlock the ability to use it in your app. Current eligibility is aimed at established, already-engaged games rather than brand-new launches, and push notification partners are selected from active games with traction and predictable cadence. Check out our [featured games](https://www.reddit.com/r/GamesOnReddit/comments/1rydlny/games_launchpad/) to get an idea of what we’re looking for. + +## How to apply + +If you meet the beta requirements, fill out [this form](https://docs.google.com/forms/d/e/1FAIpQLScB3eXHVCBf3kyHueyf3G_raxH9_BsCGiXyGjQOOmPxWz6fEg/viewform?usp=publish-editor) for consideration, and be sure to include: + +- The app identifier. +- Your push notification copy. We’ll do a quick review to ensure that it complies with our [Reddit Rules](https://redditinc.com/policies/reddit-rules). + +Note that spaces are limited, and not all apps that meet the criteria will be accepted. diff --git a/docs/capabilities/analytics/devvit-journeys.md b/docs/capabilities/analytics/devvit-journeys.md new file mode 100644 index 00000000..08399211 --- /dev/null +++ b/docs/capabilities/analytics/devvit-journeys.md @@ -0,0 +1,233 @@ +# Devvit Journeys + +Devvit Journeys adds a telemetry stream to your app that tracks the entire lifecycle of a user session. With journeys, you can: + +- Boost your game’s visibility and reach through richer gameplay insights. +- Make design and feature decisions based on real user data. +- Identify friction points and optimize for better user retention. + +A journey has a defined start and end point. Progress is tracked throughout and ends with a completion status. You can also attach optional game-specific data (like win/loss results or scores) at the end. + +:::note +This is currently an experimental feature, and you'll need to [apply](https://docs.google.com/forms/d/e/1FAIpQLScB3eXHVCBf3kyHueyf3G_raxH9_BsCGiXyGjQOOmPxWz6fEg/viewform?usp=publish-editor) for a spot in our beta program to implement Devvit Journeys. +::: + +## Journey map + +A journey map is a structured, instrumented flow that tracks a player’s progression through a specific experience in your game. Think of your journey map as a series of checkpoints (events) in your game, with: + +- A clear **start condition** (e.g., game begins) +- Defined **end conditions** (e.g., game ends, player quits, or player fails) +- Optional **metadata** you can attach along the way (score, outcome, time spent, etc.) + +All journey maps must be reviewed and approved prior to activation to ensure they align with Reddit’s platform guidelines. + +## Core events and API structure + +The SDK provides a telemetry client via `@devvit/analytics/client/reddit`. + +### Events + +All events sent from the client are forwarded to the server, where they are enriched with standard metadata (such as app, installation, user, and post context) before being emitted as analytics events. You should set each event to fire with the corresponding trigger. + +| Event Type | Trigger | Required Fields | Optional Fields | +| ------------------------- | ----------------------------------------------------------------- | -------------------- | --------------------------------- | +| **`App.Ready`** | Fire when the game has finished loading and is interactive. | None | None | +| **`Journey.Start`** | Fire when the user explicitly begins a session (not on app load). | None | None | +| **`Journey.Progress`** | Fire when the user reaches a meaningful milestone. | `progress` (0.0–1.0) | `action`, `actionDetails` | +| **`Journey.Interaction`** | Fire for granular, stateless user interactions. | `action` | `actionDetails` | +| **`Journey.End`** | Fire when the session concludes. | None | `complete`, `game { win, score }` | + +### Journey ID handling + +The client automatically manages the `journeyId`. You do **not** need to pass it to any method. + +- A journey ID is generated server-side when `startJourney()` is called +- The client stores it in `sessionStorage` for the duration of the browser session +- Calls to `progress()`, `interaction(),` and `end()` automatically include the active journey ID + +### Auto-start behavior + +If `progress()` or `interaction()` is called before a journey has started, the client will automatically start a new journey. + +### Ending a journey + +Calling `endJourney()`: + +- Sends a `Journey.End` event +- Clears the stored journey ID from `sessionStorage` + +This allows a new journey to begin within the same session. + +## Game-specific use cases + +This example shows how a simple word game session can be represented as a Journey using four key events: `app.ready`, `journey.start`, `journey.interaction`, and `journey.end`. Together, these events capture the full lifecycle of a single play session, from when the game finishes loading to when the player completes the puzzle. + +The screenshots illustrate a typical flow: + +1. The game loads and signals it’s ready (`app.ready`). + +![Journeys-1](../../assets/analytics/journeys-1.png) + +2. The player begins playing a new word challenge (`journey.start`). + +![Journeys-2](../../assets/analytics/journeys-2.png) + +3. The player pauses mid-game (`journey.interaction`). + +![Journeys-3](../../assets/analytics/journeys-3.png) + +4. The player completes the puzzle (`journey.end`). + +![Journeys-4](../../assets/analytics/journeys-4.png) + +By instrumenting these moments, you can track session boundaries, understand player behavior during gameplay, and measure completion outcomes for the word game experience. See more example scenarios below. + +### Scenario 1: standard level-based game + +| Step | Player Action | Event Fired | Notes | +| :---: | ------------------------------------- | ----------------------- | ----------------------------- | +| **1** | Game loads | **App.Ready** | Game is fully interactive | +| **2** | Player clicks “Start Game” | **Journey.Start** | Begins a new session | +| **3** | Player completes Level 1 (of 5 levels) | **Journey.Progress** | `progress: 0.2` | +| **4** | Player opens inventory | **Journey.Interaction** | `action: "menu_opened"` | +| **5** | Player completes Level 2 | **Journey.Progress** | `progress: 0.4` | +| **6** | Player reaches final level | **Journey.Progress** | `progress: 0.9` | +| **7** | Player defeats final boss | **Journey.End** | `complete: true`, `win: true` | + +### Scenario 2: player fails mid-game + +| Step | Player Action | Event Fired | Notes | +| :---: | ---------------------------- | -------------------- | ------------------------------- | +| **1** | Game loads | **App.Ready** | Game is fully interactive | +| **2** | Player clicks “Start Game” | **Journey.Start** | Begins a new session | +| **3** | Player completes early level | **Journey.Progress** | `progress: 0.3` | +| **4** | Player dies | **Journey.End** | `complete: false`, `win: false` | + +### Scenario 3: early exit / abandonment + +| Step | Player Action | Event Fired | Notes | +| :---: | -------------------------- | ----------------------- | ------------------------- | +| **1** | Game loads | **App.Ready** | Game is fully interactive | +| **2** | Player clicks “Start Game” | **Journey.Start** | Begins a new session | +| **3** | Player pauses | **Journey.Interaction** | `action: "pause_clicked"` | +| **4** | Player quits game | **Journey.End** | `complete: false` | + +## Guidelines + +To ensure the integrity and quality of the telemetry stream, developers must follow these guidelines. + +The platform may enforce validation checks to detect anomalous or exploitative event patterns. Failure to comply may result in delayed app approval or, in severe cases, removal from the platform. + +### Event triggering + +Events must reflect **intentional, committed user actions**. + +- **Trigger on final commitment**. + + - Fire events only after a user has completed an action. + - For interactions, this typically means using `mouseUp` or `touchEnd` (not initial input). + +- **Avoid passive triggers** + - Do not track views as journeys. + - Do not use `Journey.Start` to record page or app views. + - `Journey.Start` must represent an explicit user action (like pressing “Play”) + - **Do not fire on pre-commitment input** + - Avoid early input events such as `mouseDown` or `touchStart` + - These interactions may be accidental or canceled before completion + +### App allowlist + +Telemetry is restricted by a server-side allowlist. Only approved apps can emit journey events. Requests from non-allowlisted apps will get a message that the event was dropped. + +### Platform constraints + +- **Devvit Web only**: Telemetry is only supported in Devvit Web apps (WebView). +- **Privacy**: Do **not** include PII (Personally Identifiable Information) in any user-defined fields (including `action` and `actionDetails`). You are responsible for ensuring all emitted data complies with privacy standards. + +## Getting started + +Follow these steps to implement journey tracking in your app. + +### Server events + +You can send events solely on the backend and use the front‑end only to establish and pass along the journeyId. To do this, thread the active `journey ID` from your front‑end to your backend routes. + +``` +import { telemetry } from '@devvit/analytics/client/reddit'; + +export async function submitScore(score: number): Promise { + const journeyId = telemetry.getActiveJourneyId(); + + const response = await fetch('/api/score', { + method: 'POST', + headers: { + 'content-type': 'application/json', + ...(journeyId ? { 'x-devvit-journey-id': journeyId } : {}), + }, + body: JSON.stringify({ score }), + }); + + const data = (await response.json()) as { journeyId?: string }; + + if (data.journeyId) { + telemetry.setJourneyId(data.journeyId); + } +} +``` + +On the server, read the incoming `journeyId` and use it for correlation in your own route. + +``` +import express from 'express'; +import { telemetry } from '@devvit/analytics/server/reddit'; + +const app = express(); + +app.use(express.json()); + +app.post('/api/score', async (req, res) => { + const journeyIdHeader = req.header('x-devvit-journey-id'); + const journeyId = typeof journeyIdHeader === 'string' ? journeyIdHeader : ''; + + console.log('score event', { + journeyId, + score: req.body.score, + }); + + await telemetry.endJourney({ + journeyId, + complete: true, + game: { win: true, score: req.body.score }, + }); + + res.json({ ok: true }); +}); + +``` + +### Client events + +If you don’t want to manually send server-events, you can use the generic client side events. In this case, the `JourneyId` is handled. In this case, you won’t need to pass a `JourneyId` when calling progress and so forth. You also won’t need `telemetry.getActiveJourneyId()` unless you’re curious about that data. + +Note: This also requires using the route adapters provided in `@devvit/analytics/server/reddit` + +``` +// client +import { telemetry } from '@devvit/analytics/client/reddit'; + +const activeJourneyId = telemetry.getActiveJourneyId(); + +await telemetry.progress({ + progress: 0.5, + action: 'level_progress', +}); + +``` + +``` +// server +import { createTelemetryRouter } from '@devvit/analytics/server/reddit'; +app.use(createTelemetryRouter()); + +``` diff --git a/docs/capabilities/notifications/adding-streaks.md b/docs/capabilities/notifications/adding-streaks.md new file mode 100644 index 00000000..b8d17776 --- /dev/null +++ b/docs/capabilities/notifications/adding-streaks.md @@ -0,0 +1,768 @@ +# Adding Streaks + +Streaks are valuable to app developers because they turn occasional use into habitual behavior. By rewarding consecutive days of activity, streaks increase retention, strengthen user identity and investment in the app, and make push notifications more effective through loss aversion (“don’t break your streak”). For devs, that usually translates into higher engagement, lower churn, and better long-term monetization. + +![Streak PN](../../assets/notifications/visible-progress.png) + +:::note +This is currently an experimental feature, and you'll need to [apply](https://docs.google.com/forms/d/e/1FAIpQLScB3eXHVCBf3kyHueyf3G_raxH9_BsCGiXyGjQOOmPxWz6fEg/viewform?usp=publish-editor) for a spot in our beta program to implement push notifications in your app. +::: + +## **Recommended streak logic** + +This section explains how streaks work in [Syllo](https://www.reddit.com/r/syllo/) in a practical, implementation-focused way. + +### TL;DR + +- A streak is tracked as one bit per day in Redis. +- The bit is set when a logged-in user completes a puzzle and the server receives `completionTimeMs`. +- The streak day is based on the puzzle post's creation date in UTC, not the client device clock. +- The current streak is calculated by walking backward through consecutive completed days. + +### Mental model + +You can think of streaks as a yearly attendance sheet: + +- one Redis key per user per year: `streaks::` +- each day in the year maps to an index, where `0 = Jan 1` +- `1` means the user completed at least one eligible puzzle that day +- `0` means they did not + +### End-to-end flow + +#### 1\. User finishes a puzzle in the client + +When all words are solved, the client sends a completion call: + +```ts +// src/client/Game.tsx +verifyWordsMutation.mutate({ + problemId: problemData.problemId, + sessionId: problemData.analyticsSessionId, + submissions: [], + completionTimeMs: timerState.elapsedTime, +}); +``` + +#### 2\. Server records completion and updates streak state + +`verifyWords` handles completion, updates related stats, and then calls `setStreakCompletion`: + +```ts +// src/server/routes/trpc.ts (verifyWords mutation) +if (completionTimeMs && typeof completionTimeMs === "number" && userId) { + const now = new Date(); + await setUserCompletion(userId, postId, completionTimeMs); + await incrementPlayerCount(postId); + await addToLeaderboard(postId, userId, completionTimeMs); + await updateAverageCompletionTime(postId, completionTimeMs); + await setStreakCompletion({ userId, date: now, postId }); +} +``` + +#### 3\. Streak service maps completion to a day bit + +The service looks up the Reddit post and uses the post creation date to determine the year and day index: + +```ts +// src/server/services/streakService.ts +const post = await reddit.getPostById(postId); +const postCreatedAtDate = new Date(post.createdAt); +const year = postCreatedAtDate.getUTCFullYear(); +const dayOfYear = getDayOfYear(postCreatedAtDate); +await setStreakCompletionBit(userId, dayOfYear, year, completed); +``` + +#### 4\. Bit is written in Redis + +```ts +// src/server/redisService.ts +const streaksKey = (userId: string, year: number) => + `streaks:${userId}:${year}`; + +export async function setStreakCompletionBit( + userId: string, + offset: number, + year: number, + completed: boolean, +) { + UserIdSchema.parse(userId); + const key = streaksKey(userId, year); + await redis.bitfield(key, "set", "u1", offset, completed ? 1 : 0); +} +``` + +#### 5\. Client reads and displays the streak + +```ts +// src/client/Game.tsx +const { data: streakData } = useQuery( + trpc.getStreak.queryOptions(undefined, { enabled: !!context.userId }) +); + +
+ +``` + +### How current streak is calculated + +`getCurrentStreak(userId)` in `src/server/services/streakService.ts` works like this: + +1. Load the current year's bitset. +2. Start from today if today is completed; otherwise start from yesterday. +3. Count backward until the first day that is not completed. +4. If needed, continue into the previous year. + +Core loop: + +```ts +for (let i = dayToStartChecking; i >= 0; i--) { + if (isBitSet(currentYearBuffer, i)) { + currentStreak++; + } else { + break; + } +} +``` + +#### Full code for `getCurrentStreak()` + +```ts +/** + * Calculates the current streak using your custom client's getBuffer method. + */ +export async function getCurrentStreak(userId: string): Promise { + const today = new Date(); + const year = today.getUTCFullYear(); + const dayOfYear = getDayOfYear(today); + + // Call your client's getBuffer method. The result is `Buffer | undefined`. + const currentYearData = await getYearStreakBuffer(userId, year); + // The isBitSet helper expects `Buffer | null`, so we convert `undefined` to `null`. + const currentYearBuffer = currentYearData ?? null; + + let currentStreak = 0; + let dayToStartChecking = dayOfYear; + + if (!isBitSet(currentYearBuffer, dayOfYear)) { + dayToStartChecking = dayOfYear - 1; + } + + for (let i = dayToStartChecking; i >= 0; i--) { + if (isBitSet(currentYearBuffer, i)) { + currentStreak++; + } else { + break; + } + } + + // Handle cross-year streaks + // Case A: It's Jan 1 and user hasn't played today -> continue into prior year directly + if (dayToStartChecking < 0) { + const priorYear = year - 1; + const priorYearData = await getYearStreakBuffer(userId, priorYear); + const priorYearBuffer = priorYearData ?? null; + + if (priorYearBuffer) { + const isLeap = new Date(priorYear, 1, 29).getDate() === 29; + const lastDayOfPriorYear = isLeap ? 365 : 364; + + for (let i = lastDayOfPriorYear; i >= 0; i--) { + if (isBitSet(priorYearBuffer, i)) { + currentStreak++; + } else { + break; + } + } + } + } + // Case B: Current year is fully contiguous from day 0 to dayToStartChecking + else if (currentStreak > 0 && currentStreak === dayToStartChecking + 1) { + const priorYear = year - 1; + const priorYearData = await getYearStreakBuffer(userId, priorYear); + const priorYearBuffer = priorYearData ?? null; + + if (priorYearBuffer) { + const isLeap = new Date(priorYear, 1, 29).getDate() === 29; + const lastDayOfPriorYear = isLeap ? 365 : 364; + + for (let i = lastDayOfPriorYear; i >= 0; i--) { + if (isBitSet(priorYearBuffer, i)) { + currentStreak++; + } else { + break; + } + } + } + } + + return currentStreak; +} +``` + +### Important edge cases + +#### Multiple posts on the same day + +If one post is completed and another is not, the day should not be accidentally cleared. + +The service avoids clearing an already completed day in this mixed-result scenario: + +```ts +if (completed === false) { + return; +} +``` + +#### Old posts should not affect today's streak + +Updates for older posts are skipped during normal gameplay: + +```ts +const diffTime = Math.abs(now.getTime() - postCreatedAtDate.getTime()); +const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 26)); +if (diffDays > 1) { + return; +} +``` + +#### Cross-year streak continuity + +Streaks can continue from Dec 31 into Jan 1 in two cases: + +- Jan 1 is unplayed, so counting continues from the prior year tail. +- The current year is contiguous from day 0 through the current check day. + +```ts +if (dayToStartChecking < 0) { + // Jan 1 not played -> continue into prior year +} else if (currentStreak > 0 && currentStreak === dayToStartChecking + 1) { + // current year contiguous from day 0 -> continue into prior year +} +``` + +### API surface + +#### `getStreak` + +- Route: `src/server/routes/trpc.ts` +- Returns: current streak number for the logged-in user +- Used by: header and splash in the client + + #### `getStreakDetails` + +- Route: `src/server/routes/trpc.ts` +- Returns: + - `streak`: current streak + - `bestStreak`: longest streak in the current year + - `totalSolved`: number of completed days in the current year + +### Recommended test coverage + +Cover at least the following streak scenarios: + +- user has not played and returns `0` +- standard backward counting from today or yesterday +- Jan 1 cross-year behavior +- same-day multi-post safety behavior +- completion-day set behavior +- total solved days and longest streak calculations + Example: + +```ts +const year = now.getUTCFullYear(); +const today = getDayOfYear(now); +await setStreakCompletionBit(userId, today, year, true); +await setStreakCompletionBit(userId, today - 1, year, true); + +const streak = await getCurrentStreak(userId); +expect(streak).toBe(2); +``` + +### Practical summary + +- A streak day is represented by a single bit in a yearly Redis bitset. +- Completion writes happen in `verifyWords` when the puzzle is fully solved. +- Day identity is tied to the puzzle post date in UTC, not the client device day. +- Current streak is calculated from backward-consecutive completed days, with explicit cross-year handling. + +### Troubleshooting checklist + +If a streak looks wrong, check these in order: + +1. Did completion reach `verifyWords` with both `completionTimeMs` and `userId`? +2. Did `setStreakCompletion` run with a valid `postId`? +3. What is the post's `createdAt` value? This determines the day and year. +4. Does the Redis key `streaks::` have the expected bit set? +5. Is the issue near Jan 1, where cross-year logic applies, or from an old post attempt? + +## **LLM prompt** + +This is exciting new ground for us\! You can try out this prompt as a flexible starting point for implementing streak systems in your app. However, because implementations vary widely across games and backends, **we aren’t able to provide integration support or troubleshooting for custom setups**. + + + +
+Copy-paste the prompt + +\--- START COPY-PASTE PROMPT \--- + +You are a senior Devvit engineer. Add a robust daily streak system and a streak-aware push notification campaign to this Devvit app. + +The goal is to implement the feature in this repo's existing style, not to copy file names or UI from another app. Be opinionated about the underlying mechanics: + +- Use Redis as the source of truth for daily streak days. +- Use server-side completion as the only authority for awarding streak credit. +- Use Devvit's notifications API for all push notification behavior. Do not implement a custom push provider, browser push subscription, webhook-based sender, or parallel notification system. +- Use Devvit's notification opt-in APIs as the only source of truth for push subscription state. +- Use a batched scheduler job for push campaigns so large recipient lists do not run in one request. +- Keep the notification UX app-specific: expose methods that the client can call, but do not invent a full opt-in screen unless this app already has an obvious place for it. + +**First Inspect The Target Repo** + +Before writing code, inspect the target app and identify: + +- Server entrypoint and router setup. +- Existing Redis helper module, if any. +- Existing tRPC, REST, or server action layer used by the webview. +- Existing game/content completion mutation or event. +- Existing scheduler configuration in `devvit.json`. +- Existing tests and test style. +- Existing client API utilities. +- Existing notification usage, if any. + +After inspection, implement using the repo's local patterns. Suggested module names are `streakService`, `notificationService`, `schedulerRoutes`, and `redisService`, but only use them if they fit the repo. + +Before coding, produce a short implementation mapping in your working notes or response: + +- `COMPLETION_EVENT`: where completion is validated server-side. +- `CONTENT_ID`: the newly created daily Reddit post id, if this app creates daily posts. Use this as the notification link target. If the app does not create daily posts, use the stable content id or route that opens today's playable item. +- `CONTENT_CREATED_AT`: the daily Reddit post's `createdAt`, if this app creates daily posts. Fetch it server-side or persist it when the post is created. If the app does not create daily posts, use a server-written `createdAt` timestamp stored with the daily content metadata. +- `COUNT_ARCHIVE_COMPLETIONS_FOR_STREAK`: ask the developer before coding whether completions of older/archive content should count for streaks. Do not assume this value. +- `REDIS_HELPERS`: where Redis access should live. +- `STREAK_APIS`: where `getStreak` and optional `getStreakDetails` should be exposed. +- `PUSH_OPT_IN_APIS`: where `getPushState` and `setPushState` should be exposed. +- `SCHEDULER_CONFIG`: where the `pn` scheduler task should be registered. +- `SCHEDULER_ENDPOINT`: where the push campaign endpoint should live. +- `TEST_LOCATIONS`: where streak, notification, and scheduler tests should be added. + +If the completion event cannot be identified with high confidence, stop and ask for clarification before editing. Before writing code, also ask the developer to choose `COUNT_ARCHIVE_COMPLETIONS_FOR_STREAK: true` or `false` unless they already provided that answer. For content id and timestamp, use the defaults above before asking. + +**App-Specific Values To Fill In** + +Use these defaults unless the target app clearly works differently: + +- `COMPLETION_EVENT`: the server-side event/mutation that means a user completed a playable daily item. +- `CONTENT_ID`: default to the Reddit post id for the newly created daily content. This should be a runtime value that changes whenever new daily content is created. In Syllo, each newly posted puzzle schedules its notification with that new Reddit post id. +- `CONTENT_CREATED_AT`: default to that Reddit post's `createdAt`. When recording streak completion, fetch the post by `CONTENT_ID` server-side and use `post.createdAt`, or use the same `createdAt` value persisted during post creation. Do not use the client clock or completion request timestamp. +- `COUNT_ARCHIVE_COMPLETIONS_FOR_STREAK`: ask before starting. If `true`, completing older/archive content records the streak bit for that content's UTC day. If `false`, only current daily content can award streak credit. +- `NEW_CONTENT_NOTIFICATION_DELAY_MS`: default to 60 minutes after content is posted unless the app has a better time. +- `STREAK_NOTIFICATION_TITLE`: example, `Today's challenge is ready!`. +- `STREAK_NOTIFICATION_BODY`: example, `Play now to keep your {{streak}}-day streak alive.` +- `NON_STREAK_NOTIFICATION_BODY`: example, `Jump back in and play today's challenge.` + +**Default Content Identity Rules** + +For most Devvit games, the notification target and streak day should come from the same daily content object: + +- If the app creates one Reddit post per daily game/challenge, use that post id as `CONTENT_ID`. +- Schedule the notification immediately after creating that post, passing `params: { link: post.id }`. +- When a user completes the game, use the current `postId`/`CONTENT_ID` to fetch the post server-side and anchor the streak bit to `post.createdAt`. +- If the app stores daily content metadata in Redis when it posts content, it is also fine to persist `{ contentId, createdAt }` then reuse that server-written `createdAt`. +- Only if the app has no per-day Reddit post should you fall back to a stable app route or stored daily-content id, with a server-written `createdAt` timestamp. + +**Architecture To Implement** + +Implementation flow: + +1. When daily content is created, schedule a `pn` job for the new-content notification. +2. When a user completes content, validate completion server-side. +3. Record the streak bit for the content's canonical UTC day. +4. When the `pn` job runs, page opted-in users. +5. For each opted-in user, compute current streak from Redis. +6. Split recipients into streak and non-streak groups. +7. Enqueue templated notifications with the content link. + +**Redis Data Model** + +Implement daily streak storage as one Redis bitmap per user per UTC calendar year. This is the same storage shape Syllo uses: a key is scoped to both `userId` and `year`, and each bit in that year's value represents whether the user completed the canonical content for one UTC day. + +Use the repo's existing Redis naming style, but default to a versioned key: + +```ts +const STREAK_VERSION = 1; +const streaksKey = (userId: string, year: number) => + `${STREAK_VERSION}:streaks:${userId}:${year}`; +``` + +Store one bit per UTC day-of-year: + +- Jan 1 is bit `0`. +- Dec 31 is bit `364` in non-leap years. +- Dec 31 is bit `365` in leap years. +- Use Redis `BITFIELD` with `u1` values. +- Read full-year state as a `Buffer` for efficient streak calculation. + +Implement helpers equivalent to: + +```ts +export function getDayOfYear(date: Date): number { + const year = date.getUTCFullYear(); + const start = Date.UTC(year, 0, 1); + const current = Date.UTC(year, date.getUTCMonth(), date.getUTCDate()); + return Math.floor((current - start) / 86_400_000); +} + +export function isBitSet(buffer: Buffer | null, bitIndex: number): boolean { + if (!buffer || bitIndex < 0) return false; + const byteIndex = Math.floor(bitIndex / 8); + if (byteIndex >= buffer.length) return false; + const bitWithinByte = bitIndex % 8; + const byte = buffer[byteIndex]!; + return (byte & (1 << (7 - bitWithinByte))) !== 0; +} +``` + +Implement Redis helpers: + +- `setStreakCompletionBit(userId, dayIndex, year, completed)`. +- `getStreakCompletionBit(userId, dayIndex, year)`. +- `getYearStreakBuffer(userId, year)`. + +Validate `userId`, `year`, and `dayIndex` according to the target repo's validation style before touching Redis. + +**Streak Service Behavior** + +Implement a streak service with these behaviors. + +`recordStreakCompletion` + +Record streak credit only from the server-side completion path. + +Recommended signature: + +```ts +type RecordStreakCompletionInput = { + userId: string; + contentId: string; + contentCreatedAt: Date; + completed?: boolean; + force?: boolean; +}; +``` + +Rules: + +- Default `completed` to `true`. +- If `force !== true` and `completed === false`, do nothing. A failed/incomplete action must not clear a day that was already earned. +- Anchor the streak day to `contentCreatedAt` in UTC, not to the user's device clock or request timestamp. +- Make the write idempotent. Setting the same bit to `1` multiple times must be safe and must not create duplicate counts. +- Respect `COUNT_ARCHIVE_COMPLETIONS_FOR_STREAK`. If `true`, completing content from three days ago sets the bit for that content's UTC day. If `false`, older/archive content should not award streak credit. +- `force` should be reserved for admin/backfill/repair paths. + +`getCurrentStreak` + +Current streak should be forgiving for daily content: + +- A user with no completed streak-worthy days must have streak `0`. Do not initialize new users to `1`. +- After the user's first streak-worthy completion, the streak should become `1`. +- If the user has played today, count backward from today. +- If the user has not played today, count backward from yesterday. This lets a user keep a visible streak alive during the day before they play. +- Continue counting through contiguous set bits. +- Bridge from Jan 1 into the prior year's bitmap when the current-year prefix is contiguous. +- Correctly handle leap years. + +`getTotalPlaysForYear` and `getLongestStreakForYear` + +Implement these if the app displays profile stats: + +- `getTotalPlaysForYear(userId, year = currentUTCYear)`. +- `getLongestStreakForYear(userId, year = currentUTCYear)`. + +Do not overbuild all-time stats unless the app needs them. + +**Completion Hook** + +Find the target app's server-side completion mutation/event. After the app has verified that the user truly completed streak-worthy content, call `recordStreakCompletion`. + +The streak write should happen near the app's existing completion writes, such as progress, score, leaderboard, or analytics updates. + +Recommended order: + +1. Validate `userId` and content id. +2. Validate completion server-side. +3. Persist the app's normal completion state. +4. Record the streak completion. +5. Return the updated state or allow the client to refetch streak state. + +Do not record streaks from a client-only event. + +**Streak APIs** + +Expose server APIs in the target app's API style: + +- `getStreak`: returns the current user's numeric streak. +- `getStreakDetails`: returns `{ streak, bestStreak, totalSolved }` if the app needs profile stats. + +The client can display these wherever appropriate, but do not create app-specific UI unless requested. + +**Push Opt-In API Wrappers** + +Use Devvit notifications as the source of truth. This implementation must use Devvit's notifications API from the Devvit SDK, not a custom push system. If the target repo imports directly from `@devvit/notifications`, use that package. In Devvit web server apps, the same API is commonly exposed as `notifications` from `@devvit/web/server`: + +```ts +import { notifications } from "@devvit/web/server"; + +export async function setPushNotificationState(input: { pushState: boolean }) { + if (input.pushState) { + await notifications.optInCurrentUser(); + } else { + await notifications.optOutCurrentUser(); + } +} +``` + +Expose API methods in the target app's style: + +- `getPushState`: calls `notifications.isOptedIn(userId)` and returns `{ pushState: boolean }`. +- `setPushState`: calls `notifications.optInCurrentUser()` or `notifications.optOutCurrentUser()`. + +Do not store a separate Redis opt-in boolean. The app can build any opt-in UX around these methods: post-win prompt, settings toggle, onboarding prompt, profile button, or menu action. + +**Streak-Aware Push Campaign** + +Implement one campaign for new daily content or "play again" notifications. + +Use only Devvit's notifications API for sending: + +- `notifications.listOptedInUsers` to page the Devvit opted-in audience. +- `notifications.enqueue` to send push notifications. +- Per-recipient `data` for template placeholders. + +Do not add service workers, browser Push API subscriptions, external push vendors, custom device-token storage, custom Redis opt-in lists, or app-owned notification delivery queues. + +Behavior: + +- Page opted-in users with `notifications.listOptedInUsers`. +- For each recipient, compute `getCurrentStreak(userId)` server-side. +- Split recipients into two groups: + - `streak > 0`: receive streak-preserving copy with template data `{ streak: String(streak) }`. + - `streak === 0`: receive generic return-to-play copy. +- Enqueue with `notifications.enqueue`. +- Use per-recipient `data` for template placeholders like `{{streak}}`. +- Include the canonical content/post link in each recipient. + +Recommended campaign handler shape: + +```ts +type CampaignResult = { + done: boolean; + cursor: string; +}; + +async function sendNewContentNotification(input: { + cursor: string; + count: number; + link: string; +}): Promise { + const results = await notifications.listOptedInUsers({ + after: + input.cursor.trim() === "" || input.cursor === "0" + ? undefined + : input.cursor, + limit: Math.min(1000, Math.max(1, input.count)), + }); + + const streakRecipients = []; + const freshRecipients = []; + + for (const userId of results.userIds) { + const streak = await getCurrentStreak(userId); + if (streak > 0) { + streakRecipients.push({ + userId, + link: input.link, + data: { streak: String(streak) }, + }); + } else { + freshRecipients.push({ + userId, + link: input.link, + data: {}, + }); + } + } + + await Promise.allSettled([ + streakRecipients.length > 0 && + notifications.enqueue({ + title: STREAK_NOTIFICATION_TITLE, + body: STREAK_NOTIFICATION_BODY, + recipients: streakRecipients, + }), + freshRecipients.length > 0 && + notifications.enqueue({ + title: STREAK_NOTIFICATION_TITLE, + body: NON_STREAK_NOTIFICATION_BODY, + recipients: freshRecipients, + }), + ]); + + return { done: !results.next, cursor: results.next ?? "" }; +} +``` + +Adapt types for the target repo, especially typed Reddit ids like `T2`, `T3`, or `T1` if used. + +**Scheduler Job** + +Add or reuse one generic push scheduler job. In `devvit.json`, register a task similar to: + +```json +{ + "scheduler": { + "tasks": { + "pn": { + "endpoint": "/internal/scheduler/pn" + } + } + } +} +``` + +If the app already has scheduler routes, use the existing pattern. + +The scheduler endpoint should: + +- Validate the job body with the repo's validation tool, preferably Zod if already used. +- Accept a discriminated campaign payload, even if the first implementation only supports `new-content`. +- Read push batch config from Redis: `batchSize` and `batchDelayMs`. +- Process one batch. +- If not done, call `scheduler.runJob` again with the same campaign, updated cursor, same params, and `runAt = now + batchDelayMs`. +- Log campaign start, enqueue result, next cursor, and validation failures. + +Default batch config: + +```ts +const DEFAULT_PN_CONFIG = { + batchDelayMs: 1_500, + batchSize: 200, +}; +``` + +Store it in Redis using a versioned config key, for example `v1:config:pn`, and self-heal missing values. + +**Scheduling A New-Content Push** + +When new daily content is posted or becomes available, schedule: + +```ts +await scheduler.runJob({ + name: "pn", + data: { + campaign: "new-content", + cursor: "", + params: { link: contentId }, + }, + runAt: new Date(Date.now() + NEW_CONTENT_NOTIFICATION_DELAY_MS), +}); +``` + +Use the app's canonical content id as `link`. If the app has a daily content cron, schedule the push from that content creation path. If content is created manually, schedule it from that path too. + +**Robustness Requirements** + +- Validate all inputs before Redis writes or notification sends. +- Never trust client-reported completion for streak credit. +- Use the daily post's `createdAt` for the streak day, or the server-written daily content `createdAt` if the app does not use per-day Reddit posts. +- Keep completion writes idempotent. +- Keep opt-in state in Devvit notifications, not Redis. +- Cap notification batch size. +- Use scheduler continuation for pagination. +- Avoid private or surprising personalization in notification copy. +- Add enough logging to debug campaign progress. +- If historical completions exist, add a backfill script/job or leave a clear TODO with instructions. + +**Tests To Add** + +Add tests in the target repo's test style. Cover these cases: + +Streak Storage + +- Setting a streak bit for one user/year does not affect another user/year. +- `getDayOfYear` returns `0` for Jan 1, `364` for Dec 31 in non-leap years, and `365` for Dec 31 in leap years. +- `isBitSet` reads bits consistently with Redis bitmap ordering. + +Current Streak + +- Returns `0` when there are no plays. +- Returns `1` only after the first streak-worthy completion. +- Counts backward from today when today is set. +- Counts backward from yesterday when today is not set. +- Stops at the first missing day. +- Bridges from Jan 1 into the previous year when contiguous. +- Handles leap-year prior-year endings. + +Completion Writes + +- Recording the same completion twice is safe. +- Non-forced `completed: false` does not clear an existing day. +- Forced admin/backfill write can set or clear a bit if that behavior is implemented. +- Completion uses the content timestamp, not the request timestamp. +- If `COUNT_ARCHIVE_COMPLETIONS_FOR_STREAK` is `true`, completing an archive item sets the streak bit for that archive item's UTC content day. +- If `COUNT_ARCHIVE_COMPLETIONS_FOR_STREAK` is `false`, completing an archive item does not award streak credit. + +Push Opt-In Wrappers + +- `setPushState(true)` calls `notifications.optInCurrentUser`. +- `setPushState(false)` calls `notifications.optOutCurrentUser`. +- `getPushState` calls `notifications.isOptedIn`. +- No custom push provider, browser Push API subscription, or Redis opt-in source of truth is created. + +Notification Campaign + +- Opted-in users with `currentStreak > 0` receive streak copy with `data.streak`. +- Opted-in users with `currentStreak === 0` receive generic copy. +- Non-opted-in users are not sent notifications. +- Pagination returns the next cursor and marks done when no next page exists. + +Scheduler + +- The scheduler endpoint validates campaign payloads. +- It processes one batch using configured `batchSize`. +- It schedules a continuation job when `done === false`. +- It does not schedule a continuation when `done === true`. + +**Manual Verification Checklist** + +After implementation: + +- Complete today's content as a logged-in user and confirm the streak increments. +- Start as a new user and confirm the displayed/API streak is `0` before completing any streak-worthy content. +- Complete one streak-worthy item and confirm the displayed/API streak becomes `1`. +- If `COUNT_ARCHIVE_COMPLETIONS_FOR_STREAK` is `true`, complete an archive item as a logged-in user and confirm the app records the streak bit for that archive item's content day. +- If `COUNT_ARCHIVE_COMPLETIONS_FOR_STREAK` is `false`, complete an archive item as a logged-in user and confirm it does not award streak credit. +- Refresh the client and confirm `getStreak` returns the same value. +- Complete the same content again and confirm the streak does not double-count. +- Set up an opted-in test user with a streak and run the new-content campaign; confirm streak copy is sent. +- Set up an opted-in test user without a streak and run the campaign; confirm generic copy is sent. +- Confirm the notification link opens the intended content. +- Confirm a non-opted-in user does not receive a push. +- Confirm scheduler continuation works with a small batch size like `1`. + +**Expected Final Response From The Implementing Agent** + +When finished, report: + +- Files changed and why. +- The target repo's completion path that now records streaks. +- The Redis keys/data model used. +- The scheduler task and campaign payload shape. +- The push opt-in API methods exposed. +- Tests added and test command results. +- Manual verification steps completed or not completed. +- Remaining app-specific TODOs, if any. + +\--- END COPY-PASTE PROMPT \--- + +
diff --git a/docs/capabilities/notifications/notifications-overview.md b/docs/capabilities/notifications/notifications-overview.md new file mode 100644 index 00000000..8026af37 --- /dev/null +++ b/docs/capabilities/notifications/notifications-overview.md @@ -0,0 +1,18 @@ +# Overview + +Push notifications are an experimental engagement feature designed to help bring players back into your game at the right moments. + +Push notifications can help drive engagement, increase player retention, and build habit loops for players—all good things for your game. You can trigger opt-in reminders around high-value events such as streaks, rewards availability, milestones, and live activities. + +## Beta requirements + +This is a **gated beta**, which means that you’ll need to apply to unlock the ability to use push notifications in your app. Current eligibility is aimed at established, already-engaged games rather than brand-new launches, and push notification partners are selected from active games with traction and predictable cadence. Check out our [featured games](https://www.reddit.com/r/GamesOnReddit/comments/1rydlny/games_launchpad/) to get an idea of what we’re looking for. + +## How to apply + +If you meet the beta requirements, fill out [this form](https://docs.google.com/forms/d/e/1FAIpQLScB3eXHVCBf3kyHueyf3G_raxH9_BsCGiXyGjQOOmPxWz6fEg/viewform?usp=publish-editor) for consideration, and be sure to include: + +- The app identifier. +- Your push notification copy. We’ll do a quick review to ensure that it complies with our [Reddit Rules](https://redditinc.com/policies/reddit-rules). + +Note that spaces are limited, and not all apps that meet the criteria will be accepted. diff --git a/docs/capabilities/notifications/pn-best-practices.md b/docs/capabilities/notifications/pn-best-practices.md new file mode 100644 index 00000000..f351af31 --- /dev/null +++ b/docs/capabilities/notifications/pn-best-practices.md @@ -0,0 +1,226 @@ +# Best Practices + +Push notifications can help drive engagement, increase player retention, and build habit loops for players—all good things for your game. The examples below are from [Syllo](https://www.reddit.com/r/syllo/), a word game that integrated Push Notifications into the game experience. + +![PN Examples](../../assets/notifications/syllo-pn-examples.png) + +This guide provides instructions for implementing developer-authored push notifications for Reddit games. + +:::note +This is currently an experimental feature, and you'll need to [apply](https://docs.google.com/forms/d/e/1FAIpQLScB3eXHVCBf3kyHueyf3G_raxH9_BsCGiXyGjQOOmPxWz6fEg/viewform?usp=publish-editor) for a spot in our beta program to implement push notifications in your app. +::: + +## How it works + +### Push notification copy review + +All push notifications in this Beta must be pre-approved by Devvit admins to ensure alignment with Reddit’s notification standards and content policy (see [Effective Copy](#write-effective-copy) for tips\!). + +The Devvit team will review and approve all submissions before activation to ensure a safe and consistent experience across games. + +Notifications should be: + +- **Time-sensitive or highly important** (e.g., a new puzzle is available, a live event is starting, a challenge has ended). +- **Respectful and Reddit-appropriate**, avoiding spammy, click-bait, or overly promotional language. +- **Short and clear** — titles ≤ 60 characters, body ≤ 100 characters. +- **Transparent** about the context of the notification (what the user will see when they tap). + +You can send a maximum of two push notifications per day per user. + +### Opt-in / opt-out UX + +Push notifications are opt-in only. and this is enforced at the API level. In the future, additional opt-out controls will also be available in Reddit settings. + +Games must provide an in-game notifications control that: + +- Allows users to explicitly turn notifications on and off +- Clear text indicating the user’s current state (on or off) on the initial screen + +#### UX best practices + +- Use Reddit’s notification-on and notification-off icons +- Clearly indicate if game notifications are on or off +- Always provide an easy way to toggle on or off notifications from your initial app view or a settings page +- Show visual confirmation of actions, like adding a “Notifications enabled” toast or change to the button styling + +#### Component examples + +![Components](../../assets/notifications/component-examples.png) + +## Designing high-quality notifications + +Push notifications are most effective when strong content and strong copy work together. High-quality messages start with meaningful in-game events and use clear, motivating language to bring that value to life. + +### Create meaningful events + +Your push notifications should deliver clear, immediate value to players. + +- **Make player progress visible**. Streaks make player progress tangible and gives players a clear, low-effort goal: show up, keep the streak alive, and continue progressing. **Make sure to include the number of days in the streak**. This makes the player’s progress concrete and strengthens their motivation to return to keep it going. + +![PN Examples](../../assets/notifications/visible-progress.png) + +- **Provide tangible player benefits**. Tie notifications to real outcomes, like rewards ready to claim, streak milestones, live games, or limited-time challenges. Give the user a clear payoff for returning to the game. High-value events drive high conversion. If there’s no clear payoff, it’s better not to send the notification at all. + +![PN Examples](../../assets/notifications/tangible-benefits.png) + +- **Layer urgency onto broadly relevant moments**. Create momentum by promoting events that are time-sensitive (“happening now” or “ending soon”) and matter to a wide audience, like a daily puzzle going live or the final hour of a tournament. + +![PN Examples](../../assets/notifications/layer-urgency.png) + +- **Treat pushes as a limited resource**. Use notifications selectively for moments where value is obvious at a glance, like completing a weekly challenge, collecting a reward, joining a live match, or entering a newly unlocked mode. These are the moments most likely to drive immediate play and long-term retention. + +### Optimize timing + +Send push notifications when players are most likely to engage with your game. + +- **Localize delivery by user time zone** + + - Schedule sends using the player’s local time, not a single global batch time. + - Treat night-time sends as disallowed by default; players are more likely to mute or opt out if they’re woken up or interrupted late. + +- **Aim for late afternoon to early evening** + + - Platform data shows peak PN opens in late afternoon and early evening by GEO. Use this as the default window if you don’t have game-specific signals. + - Start with a conservative window like **16:00–21:00 local time**, then refine based on your game’s metrics (CTR and disable rates). + +- **Align timing to moments of natural intent** + + - For streak reminders, send close to when players typically play (e.g., a few hours before their usual daily play time), not as a “last second” midnight panic. + - For event and reward PNs, send: + - Shortly before the value becomes available (e.g., event starting soon, reward about to unlock), or + - When the value is immediately redeemable and you can deeplink straight into the relevant screen. + - Avoid “just because it’s morning” or daily cron-style sends; timing should always correspond to a clear in-game reason to come back right now. + +- **Use timing metrics to iterate** + - Track **CTR by hour-of-day and day-of-week** in local time buckets for your game. + - Watch **notification disable rates** after bursts of sends; spikes usually mean you’re hitting players at the wrong time (too early, too late, or too often). + - If you don’t have enough volume for fine-grained experiments, stick to: + - No night-time delivery + - Late afternoon/evening windows + - Only sending when a concrete, time-bound value is available (streak, event, reward). + +### Write effective copy {#write-effective-copy} + +Push notifications act as **motivational nudges** that get to the crux of why users are playing your game. Here are some ways you can incorporate these nudges into your game. + +- **Add behavioral triggers**. Behavioral triggers respond to real user actions, like completing tasks, returning after a break, or reaching milestones. This makes each message feel timely and personal. Examples might include: + + - “You’re 1 game away from finishing your weekly challenge\!” + - “You were in the top 5% last week—can you do it again?” + - “You have 2 new puzzles waiting for you\!” + +- **Engage with social dynamics**. Highlighting status changes and community milestones inspire connection and friendly competition. Examples might include: + + - “Your team just moved up a division\! Jump in to keep the momentum going\!” + - “Someone just stole your place on the leaderboard. Want it back?” + +- **Leverage personal motivation.** The user’s history with the game reinforces progress. Examples might include: + - “Your crops are thriving\! Come collect your rewards\!” + - “You’re close to genius rank\! Solve 3 more puzzles to claim your crown\!” + - “You’re one mission away from unlocking your next rank\! Time to jump back into action\!” + +To learn more about creating deeper engagement loops, check out the best practices for [building community games](https://developers.reddit.com/docs/guides/best-practices/community_games). + +## Adding push notifications to your app + +### Step 1: Update the push notification module + +In your terminal, navigate to your project directory and run this command to update the push notification to the latest release. + +``` +npm install @devvit/notifications +``` + +### Step 2: Import the push notification module + +``` +import { notifications } from '@devvit/notifications'; +``` + +**Note**: If you already have the PN module, enter +`npm install @devvit/notifications@next` to get the latest version. + +### Step 3: Use bulk push notification endpoint with templating + +To send a push notification to a group of users, you can use the double curly brackets ( { { } } ) to reference variables in a Mustache template. + +``` +await notifications.enqueue({ + title: 'Hello {{name}}!', + body: 'You have {{score}} new points.', + recipients: [ + { + userId: 't2_abc123', + link: 't3_xyz987', + data: { + name: 'Alex', + score: '42', + }, + }, + { + userId: 't2_def456', + link: 't3_xyz987', + data: { + name: 'Jordan', + score: '7', + }, + }, + { + userId: 't2_ghi789', + link: 't3_xyz987', + data: { + name: 'Sam', + score: '13', + }, + }, + ], +}); +``` + +**Note:** Mustache templating is optional. Here's a simplified example without it: + +``` +await notifications.enqueue({ + title: 'Winner!', + body: 'Congrats on your win', + recipients: [ + { + userId: 't2_abc123', + link: 't3_xyz987', + }, + ], +``` + +**Note**: If the app hasn’t been published, you can only send push notifications to yourself for testing. **Pre-release apps in testing are not subject to the rate-limits below**. + +Once your app is published, you can pass different data per user for the same template. For each app, you can send: + +- 2 push notifications per user per day\* +- Up to 25K per app per day + +If you need higher limits, let us know. + +### Step 4: opt-in / opt-out + +Users will be able to opt in or out of receiving notifications triggered by a button in your UI: + +``` +await notifications.optInCurrentUser(); +await notifications.optOutCurrentUser(); +``` + +You will also be able to retrieve a list of users who have opted in (if not managing it manually): + +``` +//This will just return the first 1000 users +const recipients = await notifications.listOptedInUsers(); + +const recipients = await notifications.listOptedInUsers({ + after: '1764876078573:t2_ltrlsg7l', + limit: 100, +}); +``` + +The default and maximum limit is 1,000. + +Usernames are returned in chronological order according to opt-in time, starting after the specified cursor. If the cursor is not found, results begin from the earliest opt-in time. diff --git a/docs/capabilities/server/cache-helper.md b/docs/capabilities/server/cache-helper.md new file mode 100644 index 00000000..44ce10a1 --- /dev/null +++ b/docs/capabilities/server/cache-helper.md @@ -0,0 +1,207 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Cache Helper + +Cache helper lets you build a more performant app by reducing the number of server side calls for the same data. You can create a short-term cache that stores JSON objects in your Devvit app for a limited amount of time. This is valuable when you have many clients trying to get the same data, for example a stock ticker value or a sports score. + +Under the covers, it's Redis plus a local in-memory write-through cache. This provides a pattern for fetching data without involving a scheduler and allows small time-to-live (TTL, ~1 second). Cache helper lets the app make one request for the data, save the response, and provide this response to all users requesting the same data. + +:::warning +**Do not cache sensitive information**. Cache helper randomly selects one user to make the real request and saves the response to the cache for others to use. You should only use cache helper for non-personalized fetches, since the same response is available to all users. +::: + +## Usage + +You can import cache helper from `@devvit/web/server` in your server source files. The cache helper is not available client-side, so you will see an error if you try to import it in client source files. + +```tsx +import { cache } from "@devvit/web/server"; +``` + +## Parameters + +The cache takes a key and a TTL: + +| **Parameters** | **Description** | +| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `key` | This is a string that identifies a cached response. Instead of making a real request, the app gets the cached response with the key you provide. Make sure to use different keys for different data. For example, if you’re saving post-specific data, add the postId to the cache key, like this: `post_data_${postId})`. | +| `ttl` | Time to live is the number of **seconds** the cached response is expected to be relevant. Once the cached response expires, it will be voided and a real request is made to populate the cache again. You can treat it as a threshold, where ttl of 30 would mean that a request is done no more than once per 30 seconds. | + +## Example + +Here’s a way to set up in-app caching instead of using scheduler or interval to fetch. + + + + +```tsx title="server/index.ts" +import { Hono } from "hono"; +import { + cache, + context, + createServer, + getServerPort, + reddit, +} from "@devvit/web/server"; + +type SubredditResponse = { + type: "subreddit"; + subreddit: string; +}; + +type SubredditErrorResponse = { + status: "error"; + message: string; +}; + +const app = new Hono(); + +app.get("/api/subreddit", async (c) => { + const { postId } = context; + + if (!postId) { + console.error("API Subreddit Error: postId not found in devvit context"); + return c.json( + { + status: "error", + message: "postId is required but missing from context", + }, + 400, + ); + } + + try { + const subredditName = await cache( + async () => { + const subreddit = await reddit.getCurrentSubreddit(); + if (!subreddit) { + throw new Error("Subreddit is required but missing from context"); + } + return subreddit.name; + }, + { + key: "current_subreddit", + ttl: 24 * 60 * 60, // expire after one day. + }, + ); + console.log(`Current subreddit: ${subredditName}`); + + return c.json({ + type: "subreddit", + subreddit: subredditName, + }); + } catch (error) { + console.error(`API Subreddit Error for post ${postId}:`, error); + let errorMessage = "Unknown error during subreddit retrieval"; + if (error instanceof Error) { + errorMessage = `Subreddit retrieval failed: ${error.message}`; + } + return c.json( + { status: "error", message: errorMessage }, + 400, + ); + } +}); + +const server = createServer(app); +server.on("error", (err) => console.error(`server error; ${err.stack}`)); +server.listen(getServerPort()); +``` + + + + +````tsx title="server/index.ts" + import express from "express"; + import { + cache, + createServer, + context, + getServerPort, + reddit, + } from "@devvit/web/server"; + + type SubredditResponse = { + type: "subreddit"; + subreddit: string; + }; + + type SubredditErrorResponse = { + status: "error"; + message: string; + }; + + const app = express(); + + // Middleware for JSON body parsing + app.use(express.json()); + // Middleware for URL-encoded body parsing + app.use(express.urlencoded({ extended: true })); + // Middleware for plain text body parsing + app.use(express.text()); + + const router = express.Router(); + + router.get( + "/api/subreddit", + async (_req, res): Promise => { + const { postId } = context; + + if (!postId) { + console.error("API Subreddit Error: postId not found in devvit context"); + res.status(400).json({ + status: "error", + message: "postId is required but missing from context", + }); + return; + } + + try { + const subredditName = await cache( + async () => { + const subreddit = await reddit.getCurrentSubreddit(); + if (!subreddit) { + throw new Error("Subreddit is required but missing from context"); + } + return subreddit.name; + }, + { + key: `current_subreddit`, + ttl: 24 * 60 * 60 // expire after one day. + } + ); + console.log(`Current subreddit: ${subredditName}`); + + res.json({ + type: "subreddit", + subreddit: subredditName, + }); + } catch (error) { + console.error(`API Subreddit Error for post ${postId}:`, error); + let errorMessage = "Unknown error during subreddit retrieval"; + if (error instanceof Error) { + errorMessage = `Subreddit retrieval failed: ${error.message}`; + } + res.status(400).json({ status: "error", message: errorMessage }); + } + } + ); + + app.use(router); + + const server = createServer(app); + server.on("error", (err) => console.error(`server error; ${err.stack}`)); + server.listen(getServerPort()); + ``` + + + +```` diff --git a/docs/capabilities/server/launch_screen_and_entry_points/view_modes_entry_points.md b/docs/capabilities/server/launch_screen_and_entry_points/view_modes_entry_points.md index d43dc440..1954acb5 100644 --- a/docs/capabilities/server/launch_screen_and_entry_points/view_modes_entry_points.md +++ b/docs/capabilities/server/launch_screen_and_entry_points/view_modes_entry_points.md @@ -1,17 +1,17 @@ -# Setting up view modes and entry points +# View Modes & Entry Points ## View modes Devvit apps support two view modes: -**Inline Mode** +**Inline mode** - **What it is**: Your app loads directly within the post unit - **User experience**: Users see your app content immediately without clicking - **Use case**: Preview screens, game menus, leaderboards, or any content that works well in a post-sized container - **Requirements**: Only respond to taps and clicks, load quickly, and respect post boundaries -**Expanded Mode** +**Expanded mode** - **What it is**: Your app displays in a larger modal (web) or full screen (mobile) - **User experience**: Users click to enter a dedicated experience @@ -83,16 +83,16 @@ The `dir` property specifies where your built client files are located. With the Use the `entry` parameter when creating posts to specify which entry point from your `devvit.json` configuration to use. The entry value must match one of the keys defined in `post.entrypoints`. ```tsx title="server/index.ts" -import { reddit } from '@devvit/web/server'; +import { reddit } from "@devvit/web/server"; // Create a post using the default entrypoint async function createDefaultPost(context: any) { return await reddit.submitCustomPost({ subredditName: context.subredditName!, - title: 'Adventure Game', - entry: 'default', + title: "Adventure Game", + entry: "default", postData: { - gameState: 'menu', + gameState: "menu", }, }); } @@ -101,10 +101,10 @@ async function createDefaultPost(context: any) { async function createGamePost(context: any) { return await reddit.submitCustomPost({ subredditName: context.subredditName!, - title: 'Adventure Game', - entry: 'game', // Must match a key in devvit.json entrypoints + title: "Adventure Game", + entry: "game", // Must match a key in devvit.json entrypoints postData: { - gameState: 'active', + gameState: "active", initialized: true, }, }); @@ -123,14 +123,14 @@ async function createGamePost(context: any) { You can transition from inline mode to expanded mode with a different entry point, like this: ```tsx -import { requestExpandedMode } from '@devvit/web/client'; +import { requestExpandedMode } from "@devvit/web/client"; // Switch to the 'game' entrypoint in expanded mode const handleStartGame = async (event: React.MouseEvent) => { try { - await requestExpandedMode(event.nativeEvent, 'game'); + await requestExpandedMode(event.nativeEvent, "game"); } catch (error) { - console.error('Failed to enter expanded mode:', error); + console.error("Failed to enter expanded mode:", error); } }; ``` diff --git a/docs/capabilities/server/overview.md b/docs/capabilities/server/overview.md index fdd17182..7ef66695 100644 --- a/docs/capabilities/server/overview.md +++ b/docs/capabilities/server/overview.md @@ -40,6 +40,6 @@ Allows you to execute some actions, like posting or commenting, on behalf of the Allows you to specify how your interactive post is displayed on platforms that don't support Devvit, for example old.reddit.com -## [Cache helper](./cache-helper.mdx) +## [Cache helper](./cache-helper.md) Allows you to cache fetch requests on the server side, reducing the number of requests made to external APIs and improving performance. diff --git a/docs/capabilities/server/post-data.mdx b/docs/capabilities/server/post-data.mdx index dfcc117c..b94f5ebb 100644 --- a/docs/capabilities/server/post-data.mdx +++ b/docs/capabilities/server/post-data.mdx @@ -1,8 +1,7 @@ +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Post data +# Post Data You can attach small amounts of data (2KB) to a post when creating it and update this data using the `postData` capability. This enables dynamic, stateful experiences available on posts without a server call. Post data is scoped to the post, not users. @@ -15,6 +14,7 @@ Post data is sent to the client. Never store secrets or sensitive information. ::: ## Creating posts with data + When creating a post, include the `postData` parameter with your custom data object. ```ts title="server/index.ts" -import { context, reddit } from '@devvit/web/server'; -import type { JsonObject } from '@devvit/web/shared'; +import { context, reddit } from "@devvit/web/server"; +import type { JsonObject } from "@devvit/web/shared"; type CreatePostResponse = { postId: string; @@ -40,17 +40,17 @@ type ErrorResponse = { error: string; }; -app.post('/api/create-post', async (c) => { +app.post("/api/create-post", async (c) => { const { subredditName } = context; if (!subredditName) { - return c.json({ error: 'Subreddit name is required' }, 400); + return c.json({ error: "Subreddit name is required" }, 400); } const postData: JsonObject = { challengeNumber: 42, totalGuesses: 0, - gameState: 'active', + gameState: "active", pixels: [ [0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0], [0, 0, 0, 0, 2, 2, 1, 0, 0, 0, 0], @@ -62,20 +62,20 @@ app.post('/api/create-post', async (c) => { [0, 0, 2, 2, 1, 1, 1, 1, 1, 0, 0], [0, 0, 0, 2, 2, 1, 1, 1, 0, 0, 0], [0, 0, 0, 0, 2, 2, 1, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0] + [0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0], ], }; const post = await reddit.submitCustomPost({ subredditName, - title: 'Post with custom data', - entry: 'default', + title: "Post with custom data", + entry: "default", postData, }); return c.json({ postId: post.id, - message: 'Post created successfully', + message: "Post created successfully", }); }); ``` @@ -84,8 +84,8 @@ app.post('/api/create-post', async (c) => { ```ts title="server/index.ts" -import { context, reddit } from '@devvit/web/server'; -import type { JsonObject } from '@devvit/web/shared'; +import { context, reddit } from "@devvit/web/server"; +import type { JsonObject } from "@devvit/web/shared"; type CreatePostResponse = { postId: string; @@ -97,20 +97,20 @@ type ErrorResponse = { }; router.post( - '/api/create-post', + "/api/create-post", async (_req, res) => { const { subredditName } = context; if (!subredditName) { return res.status(400).json({ - error: 'Subreddit name is required' + error: "Subreddit name is required", }); } const postData: JsonObject = { challengeNumber: 42, totalGuesses: 0, - gameState: 'active', + gameState: "active", pixels: [ [0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0], [0, 0, 0, 0, 2, 2, 1, 0, 0, 0, 0], @@ -122,20 +122,20 @@ router.post( [0, 0, 2, 2, 1, 1, 1, 1, 1, 0, 0], [0, 0, 0, 2, 2, 1, 1, 1, 0, 0, 0], [0, 0, 0, 0, 2, 2, 1, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0] + [0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0], ], }; const post = await reddit.submitCustomPost({ subredditName, - title: 'Post with custom data', - entry: 'default', + title: "Post with custom data", + entry: "default", postData, }); res.json({ postId: post.id, - message: 'Post created successfully' + message: "Post created successfully", }); }, ); @@ -145,6 +145,7 @@ router.post( ## Updating post data + To update post data after creation, fetch the post and use the `setPostData()` method. ```ts title="server/index.ts" -import { context, reddit } from '@devvit/web/server'; -import type { JsonObject } from '@devvit/web/shared'; +import { context, reddit } from "@devvit/web/server"; +import type { JsonObject } from "@devvit/web/shared"; type UpdatePostDataRequest = { favoriteColor?: string; @@ -175,12 +176,12 @@ type ErrorResponse = { error: string; }; -app.post('/api/update-post-data', async (c) => { +app.post("/api/update-post-data", async (c) => { const { postId } = context; const { favoriteColor, username } = await c.req.json(); if (!postId) { - return c.json({ error: 'Post ID is required' }, 400); + return c.json({ error: "Post ID is required" }, 400); } try { @@ -191,18 +192,18 @@ app.post('/api/update-post-data', async (c) => { await post.setPostData({ ...currentData, - favoriteColor: favoriteColor || 'unknown', - lastUpdatedBy: username || 'anonymous', + favoriteColor: favoriteColor || "unknown", + lastUpdatedBy: username || "anonymous", lastUpdatedAt: new Date().toISOString(), }); return c.json({ success: true, - message: 'Post data updated successfully', + message: "Post data updated successfully", }); } catch (error) { - console.error('Error updating post data:', error); - return c.json({ error: 'Failed to update post data' }, 500); + console.error("Error updating post data:", error); + return c.json({ error: "Failed to update post data" }, 500); } }); ``` @@ -211,8 +212,8 @@ app.post('/api/update-post-data', async (c) => { ```ts title="server/index.ts" -import { context, reddit } from '@devvit/web/server'; -import type { JsonObject } from '@devvit/web/shared'; +import { context, reddit } from "@devvit/web/server"; +import type { JsonObject } from "@devvit/web/shared"; type UpdatePostDataRequest = { favoriteColor?: string; @@ -228,43 +229,45 @@ type ErrorResponse = { error: string; }; -router.post( - '/api/update-post-data', - async (req, res) => { - const { postId } = context; - const { favoriteColor, username } = req.body; +router.post< + string, + never, + UpdatePostDataResponse | ErrorResponse, + UpdatePostDataRequest +>("/api/update-post-data", async (req, res) => { + const { postId } = context; + const { favoriteColor, username } = req.body; - if (!postId) { - return res.status(400).json({ - error: 'Post ID is required' - }); - } + if (!postId) { + return res.status(400).json({ + error: "Post ID is required", + }); + } - try { - const post = await reddit.getPostById(postId); + try { + const post = await reddit.getPostById(postId); - // Get existing post data to merge with updates - const currentData = (context.postData || {}) as JsonObject; + // Get existing post data to merge with updates + const currentData = (context.postData || {}) as JsonObject; - await post.setPostData({ - ...currentData, - favoriteColor: favoriteColor || 'unknown', - lastUpdatedBy: username || 'anonymous', - lastUpdatedAt: new Date().toISOString(), - }); + await post.setPostData({ + ...currentData, + favoriteColor: favoriteColor || "unknown", + lastUpdatedBy: username || "anonymous", + lastUpdatedAt: new Date().toISOString(), + }); - res.json({ - success: true, - message: 'Post data updated successfully' - }); - } catch (error) { - console.error('Error updating post data:', error); - res.status(500).json({ - error: 'Failed to update post data' - }); - } - }, -); + res.json({ + success: true, + message: "Post data updated successfully", + }); + } catch (error) { + console.error("Error updating post data:", error); + res.status(500).json({ + error: "Failed to update post data", + }); + } +}); ``` @@ -275,23 +278,26 @@ router.post { return (
-
Post Data:
-
{JSON.stringify(context.postData, null, 2) ?? 'undefined'}
+
Post Data:
+
{JSON.stringify(context.postData, null, 2) ?? "undefined"}
); -} +}; ``` ## Limitations + Post data supports: + - JSON-serializable objects only - Maximum size of 2KB - Data persists with the post lifecycle (deleted when post is deleted) diff --git a/docs/capabilities/server/settings-and-secrets.mdx b/docs/capabilities/server/settings-and-secrets.mdx index 818fc1a6..47118e7f 100644 --- a/docs/capabilities/server/settings-and-secrets.mdx +++ b/docs/capabilities/server/settings-and-secrets.mdx @@ -1,11 +1,12 @@ -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; -# Settings and Secrets +# Settings & Secrets Configure your app with settings that can be customized per subreddit or globally across all installations. Settings allow moderators to customize app behavior for their subreddit, while secrets enable secure storage of sensitive data like API keys. Settings come in two scopes: + - **Subreddit settings**: Configurable by moderators for each installation - **Global settings & Secrets**: Set by developers and shared across all installations @@ -137,29 +138,29 @@ Settings can be retrieved from within your app. ```tsx title="server/index.ts" -import { settings } from '@devvit/web/server'; +import { settings } from "@devvit/web/server"; type ProcessResponse = { success: true }; // Get a single setting -const apiKey = await settings.get('apiKey'); +const apiKey = await settings.get("apiKey"); // Get multiple settings const [welcomeMessage, features] = await Promise.all([ - settings.get('welcomeMessage'), - settings.get('enabledFeatures') + settings.get("welcomeMessage"), + settings.get("enabledFeatures"), ]); // Use in an endpoint -app.post('/api/process', async (c) => { - const apiKey = await settings.get('apiKey'); - const environment = await settings.get('environment'); +app.post("/api/process", async (c) => { + const apiKey = await settings.get("apiKey"); + const environment = await settings.get("environment"); - const response = await fetch('https://api.example.com/endpoint', { + const response = await fetch("https://api.example.com/endpoint", { headers: { - 'Authorization': `Bearer ${apiKey}`, - 'X-Environment': environment - } + Authorization: `Bearer ${apiKey}`, + "X-Environment": environment, + }, }); return c.json({ success: true }); @@ -170,33 +171,36 @@ app.post('/api/process', async (c) => { ```tsx title="server/index.ts" -import { settings } from '@devvit/web/server'; +import { settings } from "@devvit/web/server"; type ProcessResponse = { success: true }; // Get a single setting -const apiKey = await settings.get('apiKey'); +const apiKey = await settings.get("apiKey"); // Get multiple settings const [welcomeMessage, features] = await Promise.all([ - settings.get('welcomeMessage'), - settings.get('enabledFeatures') + settings.get("welcomeMessage"), + settings.get("enabledFeatures"), ]); // Use in an endpoint -router.post('/api/process', async (req, res) => { - const apiKey = await settings.get('apiKey'); - const environment = await settings.get('environment'); - - const response = await fetch('https://api.example.com/endpoint', { - headers: { - 'Authorization': `Bearer ${apiKey}`, - 'X-Environment': environment - } - }); +router.post( + "/api/process", + async (req, res) => { + const apiKey = await settings.get("apiKey"); + const environment = await settings.get("environment"); + + const response = await fetch("https://api.example.com/endpoint", { + headers: { + Authorization: `Bearer ${apiKey}`, + "X-Environment": environment, + }, + }); - res.json({ success: true }); -}); + res.json({ success: true }); + }, +); ``` @@ -232,22 +236,25 @@ Validate user input to ensure it meets your requirements before saving. Define a ```tsx title="server/index.ts" -import type { SettingsValidationRequest, SettingsValidationResponse } from '@devvit/web/shared'; +import type { + SettingsValidationRequest, + SettingsValidationResponse, +} from "@devvit/web/shared"; -app.post('/internal/settings/validate-age', async (c) => { +app.post("/internal/settings/validate-age", async (c) => { const { value } = await c.req.json>(); if (!value || value < 0) { return c.json({ success: false, - error: 'Age must be a positive number', + error: "Age must be a positive number", }); } if (value > 365) { return c.json({ success: false, - error: 'Maximum age is 365 days', + error: "Maximum age is 365 days", }); } @@ -259,32 +266,37 @@ app.post('/internal/settings/validate-age', async (c) => { ```tsx title="server/index.ts" -import type { SettingsValidationRequest, SettingsValidationResponse } from '@devvit/web/shared'; - -router.post>( - '/internal/settings/validate-age', - async (req, res): Promise => { - const { value } = req.body; - - if (!value || value < 0) { - res.json({ - success: false, - error: 'Age must be a positive number', - }); - return; - } +import type { + SettingsValidationRequest, + SettingsValidationResponse, +} from "@devvit/web/shared"; + +router.post< + string, + never, + SettingsValidationResponse, + SettingsValidationRequest +>("/internal/settings/validate-age", async (req, res): Promise => { + const { value } = req.body; - if (value > 365) { - res.json({ - success: false, - error: 'Maximum age is 365 days', - }); - return; - } + if (!value || value < 0) { + res.json({ + success: false, + error: "Age must be a positive number", + }); + return; + } - res.json({ success: true }); + if (value > 365) { + res.json({ + success: false, + error: "Maximum age is 365 days", + }); + return; } -); + + res.json({ success: true }); +}); ``` @@ -345,25 +357,25 @@ Here's a complete example showing both secrets and subreddit settings in action: ```tsx title="server/index.ts" -import type { JsonObject, JsonValue } from '@devvit/web/shared'; -import { settings } from '@devvit/web/server'; +import type { JsonObject, JsonValue } from "@devvit/web/shared"; +import { settings } from "@devvit/web/server"; type GenerateRequest = { messages: JsonValue }; type GenerateResponse = JsonObject; -app.post('/api/generate', async (c) => { +app.post("/api/generate", async (c) => { const [apiKey, model, maxTokens] = await Promise.all([ - settings.get('openaiApiKey'), - settings.get('aiModel'), - settings.get('maxTokens') + settings.get("openaiApiKey"), + settings.get("aiModel"), + settings.get("maxTokens"), ]); const { messages } = await c.req.json(); - const response = await fetch('https://api.openai.com/v1/chat/completions', { - method: 'POST', + const response = await fetch("https://api.openai.com/v1/chat/completions", { + method: "POST", headers: { - 'Content-Type': 'application/json', - 'Authorization': `Bearer ${apiKey}`, + "Content-Type": "application/json", + Authorization: `Bearer ${apiKey}`, }, body: JSON.stringify({ model, @@ -381,35 +393,38 @@ app.post('/api/generate', async (c) => { ```tsx title="server/index.ts" -import type { JsonObject, JsonValue } from '@devvit/web/shared'; -import { settings } from '@devvit/web/server'; +import type { JsonObject, JsonValue } from "@devvit/web/shared"; +import { settings } from "@devvit/web/server"; type GenerateRequest = { messages: JsonValue }; type GenerateResponse = JsonObject; -router.post('/api/generate', async (req, res) => { - const [apiKey, model, maxTokens] = await Promise.all([ - settings.get('openaiApiKey'), - settings.get('aiModel'), - settings.get('maxTokens') - ]); - - const response = await fetch('https://api.openai.com/v1/chat/completions', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'Authorization': `Bearer ${apiKey}`, - }, - body: JSON.stringify({ - model, - max_tokens: maxTokens, - messages: req.body.messages, - }), - }); +router.post( + "/api/generate", + async (req, res) => { + const [apiKey, model, maxTokens] = await Promise.all([ + settings.get("openaiApiKey"), + settings.get("aiModel"), + settings.get("maxTokens"), + ]); + + const response = await fetch("https://api.openai.com/v1/chat/completions", { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${apiKey}`, + }, + body: JSON.stringify({ + model, + max_tokens: maxTokens, + messages: req.body.messages, + }), + }); - const data = (await response.json()) as GenerateResponse; - res.json(data); -}); + const data = (await response.json()) as GenerateResponse; + res.json(data); + }, +); ``` diff --git a/docs/changelog.md b/docs/changelog.md index da594556..6c9051fb 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -9,410 +9,76 @@ To use the latest version of Devvit: **Please note**: you may see features available across Devvit packages that are not documented or noted in our changelog. These are experimental features that are not stable and are subject to change, or removal, from the platform. Please use caution when testing or implementing experimental features. -## Release 0.12.24: App Profile Icons +## Release 0.13.0: Logged Out Users, Push Notifications, App Telemetry, and More! -**Release Date: May 18, 2026** +**Release Date: May 26, 2026** -You can now upload an [app icon](./guides/faq.mdx#AppFeatures) that appears both in Dev Portal and on the app’s Reddit profile, once your app has been approved and published. This helps your app maintain a consistent identity across surfaces. - -Other improvements in this release include: -- **Post URL handling**: improved post URL resolution for media posts (e.g. image and video posts), where the url field may point directly to the asset. If the url pathname differs from the post permalink, the canonical post URL is now resolved as `reddit.com + permalink` to handle edge cases. Otherwise, the existing url field continues to be used. -- **Playtest command stability improvements**, including: - - Waiting for `scripts.dev` to produce its first complete output before continuing - - Always uploading a fresh playtest build on startup - - Running `scripts.dev` as a killable process group for more reliable cleanup and shutdown behavior - - -## Release 0.12.23 - -**Release Date: May 11, 2026** - -This release doesn't present any developer-facing changes, and just includes stability, performance and code quality improvements for internal Devvit tools and packages. - -## Release 0.12.22: Profile Settings and Community Contributions - -**Release Date: May 1, 2026** - -This release adds support for editing your [app’s profile settings](./guides/faq.mdx#AppFeatures). You can now update your display name, public description, and NSFW flag directly from the **Developer Settings** tab, then save your changes in the Developer Portal to update the profile. - -**Bug Fixes** - -- Fixed a bug causing apps to throw `undefined undefined: undefined error` when making plugin calls. - -**Community Updates** -Shoutout to **fsvreddit** for these udpates: - -- `User.nsfw` now correctly reports whether the user profile is NSFW. -- `User.showNsfw` reports whether the user is over 18 and wishes to see NSFW content. -- `User.hasRedditPremium` reports whether the user is enrolled in Reddit Premium/Reddit Gold. - -## Release 0.12.21: Stability and Performance Improvements for Portal - -**Release Date: Apr 27, 2026** - -In this release, Portal now retrieves data directly from reliable backend services and no longer depends on GraphQL. This means: - -- Faster responses — average request time reduced by 40% (from 364ms → 216ms) -- Fewer errors — 62% reduction in server errors -- Improved reliability — Portal is no longer affected by GraphQL outages - -Also added: a `Filter()` method to the Reddit API (similar to AutoMod) that removes content from public view, sends it to ModQueue/Removed, and logs the action in ModLog. - -## Release 0.12.20: Maintenance Release - -**Release Date: Apr 20, 2026** - -This release contains a few internal fixes and improvements only. - -## Release 0.12.19: Minor Updates - -**Release Date: Apr 13, 2026** - -This release includes the following updates: - -- Clarified that when `requestExpandedMode()` navigates to the same entrypoint, it may (but not always) trigger a reload. - -- Added a `post` parameter to the `shareSheet` effect to allow sharing links to other posts. - -## Release 0.12.18: Custom Post Styling, Video Comments, and Cache - -**Release Date: Apr 6, 2026** - -This release adds support for post styles, which lets you customize how your app posts look within Reddit. We’ve added [Creating a custom post](./capabilities/creating_custom_post.md) documentation to walk you through building custom posts and configuring post styles. This includes options for setting background colors before your app loads, adjusting post height, and enabling custom share images when your app is shared. - -**Other fixes** - -- Added `video` to the `CommentMediaTypes` type. This fixes an issue where apps on subreddits with video comments crashed due to `getCurrentSubreddit()` throwing `invalid comment media type: video` error. -- Fixed an issue where in-memory cache data was unintentionally shared across subreddits. Cache is now partitioned per subreddit, which ensures you’ll get accurate data for each subreddit. - -## Release 0.12.17 Redis Update and Minor Fixes - -**Release Date: Mar 30, 2026** - -This release included updated Redis transaction support. `hSetNX` was available on `RedisClient` but missing from transaction interfaces, preventing atomic hash set-if-not-exists operations within transactions. Updates include: - -- Added `hSetNX` to the `TxClientLike` type -- Implemented `hSetNX` in the Redis transaction class, following the existing `hSet` pattern -- Added `hSetNX` and lowercase `hsetnx` alias to the public API transaction class, consistent with other hash method aliases - -**Other Fixes** - -- Fixed an issue where editing a post or comment with an image in the rich text builder triggered an `INVALID_SELFPOST: richtext_json` error. - -- Fixed an issue where SVG files containing XML declarations or `DOCTYPE` tags produced broken icons in `devvit create icons` by stripping content before the `` tag. - -## Release 0.12.16 Subreddit APIs and Poll Post Updates - -**Release Date: Mar 23, 2026** - -This release adds new APIs for smoother subreddit management, a unified rules model, and shared proto endpoints. Also included: new poll post functionality. - -**Subreddit Management** - -- `subreddit.updateSettings()` updates subreddit settings (this method only supports the settings currently exposed in the `SubredditSettings` type). -- `subreddit.updateRemovalReasons()` updates subreddit removal reasons. -- `subreddit.deleteRemovalReasons()` deletes a subreddit removal reason. - -**Subreddit Rules** - -- `subreddit.getRules()` (or `reddit.getRules()`) retrieves rules. -- `subreddit.createRule()` (or `reddit.createRule()`) creates rules. -- `subreddit.reorderRules()` (or `reddit.reorderRules()`) reorders rules. -- `rule.updateRule()` updates an existing rule. -- `rule.removeRule()` deletes a rule. - -Note: methods available on `reddit` provide the same functionality as their `subreddit` counterparts but do not require a subreddit instance. - -**Proto APIs** - -- `reddit.getBestPosts` returns a list of posts from the authenticated user’s front page. By default this runs as the app account, but it can be overridden on a per-app basis to always run as the user. -- `reddit.getDuplicatesForPosts` returns a list of other posts containing the same link as the input post. -- `reddit.showComment` unhides a comment that was hidden due to crowd control. Comments hidden for other reasons remain hidden. -- `comment.snoozeReports` and `post.snoozeReports` prevent reports for the input comment or post with the given reason from escalating to subreddit moderators for 7 days. -- `comment.unsnoozeReports` and `post.unsnoozeReports` remove the snooze applied by snoozeReports for the input comment or post. -- `comment.updateCrowdControlLevel` and `post.updateCrowdControlLevel` update the crowd control level for the comment or post (OFF, LENIENT, MEDIUM, or STRICT). -- `user.getTrophies` returns a list of trophies the user has earned. - -**Poll Post Enhancements** - -- Introduces a `pollOption` field on the `Post` object to access poll options. -- Adds a `getCurrentUserPollOption()` method to retrieve the option selected by the current user (if any). This method needs `runAs` permission to work, so please contact us if you intend to use it. - -## Devvit 0.12.15: The Nothing-To-See-Here Release - -**Release Date: Mar 16, 2026** - -This release contains internal improvements and infrastructure updates to improve stability and support future development. - -## Devvit 0.12.14: Community Game Pro Tips, Platform Changes, and Fixes - -**Release Date: Mar 9, 2026** - -This release brings new guidance to help you build more engaging community games, along with important platform updates and several developer experience improvements. - -**Level Up Your Community Games** - -The newly updated [Building Community Games](https://developers.reddit.com/docs/guides/best-practices/community_games#player-retention) guide includes new tips for creating engaging gameplay that thrives on Reddit! Learn which mechanics drive long-term engagement and how to improve your chances of [getting featured](https://developers.reddit.com/docs/guides/launch/feature-guide). - -**Other Fixes** - -- **Improved modmail validation and logging**: Added subreddit ID validation for Reddit Modmail requests and improved error logging. -- **Fixed image uploads in comments created with RichTextBuilder**: Resolved an issue where comment creation failed when adding images due to media processing conflicts. RichTextBuilder now accepts media URLs instead of media IDs, and the Devvit runtime converts them during processing to ensure compatibility with native post and comment media handling. -- **Custom Post styles support**: You can now pass an optional `styles` parameter to `submitCustomPost()`, and use the new `getPostStyles()` and `setPostStyles()` methods available on both the Reddit API and Post objects. - -## Devvit 0.12.13: Minor Tweaks - -**Release Date: Feb 17, 2026** - -This release has a few minor tweaks to make your life easier: - -- **CLI update**: By developer request, `publish` now bumps the patch version by default instead of the minor version. -- **Playtest fix**: Live reloading for apps during playtests is working again. -- **General clean-up**: We removed outdated templates that were previously used in CLI mode. - -## Devvit 0.12.12: New Templates, Vite Plugin, and Test Harness - -**Release Date: February 9, 2026** - -Release 0.12.12 is all about streamlining the developer experience. This release includes: - -- **Updated templates**. All templates now use the Vite plugin and a simplified structure, which includes: - - - Vite plugin support - - `agents.md` replacing `.kiro` and `.cursor` files - - Simpler dev workflow with clearer playtest logs - - No `.env` required for playtests - - Hono replaces Express as the default server (but you can still use any web framework you prefer!) - - Typed endpoints - - A bare template (formerly “hello world”) that now uses esbuild with no server framework - - New React + tRPC vibe coding template - -- **New Vite plugin**. This is an **optional plugin** that provides simpler console output, clearer logs, and unified build commands. The plugin hides the protobuf warning and automatically bundles entrypoints based on `devvit.json`, making multi-entrypoint apps easier to manage. - -- **Scripts field in devvit.json**. Enables you to provide a command to run during `devvit upload` and `devvit playtest`. You’ll notice a big difference in the level of noise your logs emit during playtest by using this instead of the `concurrently` script that templates previously used. - -- **Devvit test harness.** Adds an easy way to write integration tests for Devvit plugins using Vitest, supporting a more test-driven workflow. - -- **Standardized image upload limits**. GIF uploads are now all limited to 20 MB across all upload paths, aligning them with existing upload limits for a more consistent developer experience. - -## Devvit 0.12.11: App Review Update - -**Release Date: Feb 2, 2026** - -In this release, we’re cleaning up the app review process (literally). The CLI now uploads a clean, unbundled source zip (respecting .gitignore) for app review. This will help our human reviewers see properly formatted TypeScript and clearer diffs. - -## Devvit 0.12.10: Good Karma - -**Release Date: Jan 26, 2026** - -We've updated getUserKarmaForCurrentSubreddit() to allow users to fetch their own subreddit karma, even if they're not moderators. - -## Devvit 0.12.9: Gaming Templates and Error Handling - -**Release Date: Jan 20, 2026** - -In this release, we introduced a **Game Engines** tab on [developers.reddit.com/new](http://developers.reddit.com/new) to help you get started faster with gaming-specific templates. - -You’ll also see **improved error handling** in submitCustomPost() that correctly decodes and surfaces messages when the post data size limit is exceeded. - -## Devvit 0.12.8: Simplified Playtest Logs - -**Release Date: Jan 12, 2026** - -In our first release of the year, we present to you simplified playtest logs. The playtest command now produces cleaner, less verbose output by default. Detailed logs, including webview asset uploads, are now hidden behind the `--verbose flag` for easier reading. - -## Devvit 0.12.7: The REAL End-of-Year Updates - -**Release Date: Dec 22, 2025** - -It turns out that we couldn't end the year without a couple more upgrades: - -- Added an `authorFlair` field to `Post` and `Comment` objects in `@devvit/public-api` and `@devvit/reddit` (a community contribution from u/PitchforkAssistant). - -- Added `getUserKarmaFromCurrentSubreddit` to the public API, which returns a user's subreddit karma instead of their total Reddit karma. - -And now that's a wrap! - -## Devvit 0.12.6: End-of-the-Year Updates - -**Release Date: Dec 15, 2025** - -In the last release of 2025, we’ve made a slew of minor updates (they're still cool, though!). - -- **Added explicit version flag:** You can now specify an exact version number (e.g., `--version 1.2.3`) when publishing. -- **Deprecated `webViewModeListener`:** Now you can use the `"focus"` event on the inline view to reliably detect when control returns from the expanded view. -- **Fixed inconsistent casing:** The `Subreddit` type was previously printed in all lowercase for `getCurrentSubreddit()`, but in all uppercase for `getSubredditInfoByName()` and `getSubredditInfoById()`. This inconsistency has now been resolved. -- **Clarified non-functional fields:** The Payments plugin does not currently support filtering, so specifying `start` or `end` has no effect. This will be supported in a later release. -- **Added new User fields:** The `User` object now includes `displayName` and `about` to streamline user data experience. -- **Bug fixes** - - Corrected post height for Devvit Web apps to prevent layout jumps on the initial web view render. - - Fixed an issue with the `reddit.reorderWidgets` method. - - Resolved an issue where fetching image widgets without a linked URL would throw an error. +We’re very excited to introduce Release 0.13.0, which introduces new features to attract logged out users, drive user engagement, and provide telemetry data to your game. We also have some breaking changes, which are going to be really important if your app currently uses Blocks functionality. Read on… :::note -**2025 is a wrap!** All of us on the Dev Platform team wish you and yours the absolute best holiday season, and we can’t wait to create with you in 2026! +Upgrading to 0.13.0 is not required, but you should be aware that Blocks UI support will be removed from all clients (web, Android, iOS) on June 30, 2026. ::: -## Devvit 0.12.5: Payments for Devvit Web - -**Release Date: Dec 1, 2025** - -In this release, we’re excited to bring payment support to Devvit Web. If you’re looking to add payments to your app, check out our [updated docs](./earn-money/payments/payments_overview.md). - -## Devvit 0.12.4: Ins and Outs +### Breaking Changes -**Release Date: Nov 24, 2025** +_**Devvit Web**_ -Devvit 0.12.4 is packed with payments (experimental) polish, and new tooling for monitoring WebView traffic +If you use **Devvit Web** (`@devvit/web`), there’s only one breaking change: -**Devvit Web Payments (experimental) bugfixes and improvements** +- The `splash` and `loading` screen support has been removed from `submitCustomPost()`. Please use a dedicated splash entrypoint HTML page instead as shown in the [project templates](../docs/examples/template-library.md). -- Fixed a bug with payments refunds hitting incorrect backend endpoint -- Fixed a bug where duplicate “Get Payments Help” menu items were showing -- The CLI’s `playtest` command watches your products file for live reloads, and `devvit products add` understands both legacy JSON files and the new config block so Devvit Web apps stay in sync. -- Payments types are re-exported from `@devvit/payments/shared`to `@devvit/web/shared`, preventing mismatched product/order typings downstream. +Old method: -**WebView analytics and APIs** +```tsx +return await reddit.submitCustomPost({ + // Show platform splash screen inline and foo entrypoint in expanded mode. + splash: { + appDisplayName: "appDisplayName", + entry: "foo", + }, + title: "hello", +}); +``` -- Improved accuracy of clicks measurement for App Directory Analytics -- Bundle size improvements -- Deprecated remaining splash screen APIs (`setSplash` and `SubmitCustomPostSplashOptions` fields) +New method: -## Devvit 0.12.3: Odds and Ends +```bash +return await reddit.submitCustomPost({ + // Show foo entrypoint inline. Change this to a splash entrypoint if wanted. + entry: 'foo' + title: 'hello', +}); +``` -**Release Date: Nov 17, 2025** +And we did a little housekeeping: -This release focuses on Reddit data access and instrumenting WebView clients +- Deprecated `inline` for post entrypoints in `devvit.json`. This property has no effect, and is always implied for post entrypoints. There are no built in splash screens, and any entrypoint may be opened in expanded mode. -**Reddit data & proto updates** +_**@devvit/public-api**_ -- `@devvit/reddit` now exposes `getUserKarmaForSubreddit()` (later renamed to `getUserKarmaFromCurrentSubreddit()). -- `ModAction` trigger payloads now carries a stable `id` field for downstream tooling. +If you use the old `@devvit/public-api`, **Blocks UI is no longer supported** in v0.13.0. These are the breaking changes: -**Web client & realtime instrumentation** +- Removed all custom post features from the Devvit singleton. This specifically includes `addCustomPostType()`, but also the ability to `submit()` custom posts and other Reddit API calls that operate on custom posts (`setPostData()`, `setCustomPostPreview()`, etc.). -- `@devvit/realtime` now publishes separate `client/` and `server/` entry points, preventing accidental server-only imports in browser bundles. -- Bundle size improvements -- Web clients now annotate the request `Context` with the user’s client name/version -- Improved accuracy of clicks measurement for App Directory Analytics + - Notably, menu actions and forms remain intact; apps can continue to provide interactivity through these mechanisms without porting to Devvit Web yet. (But this is deprecated, and support will be dropped in the future!). + - Removed Blocks support from `@devvit/payments`. The `usePayments()` hook was removed, and payments now only supports Devvit Web apps. + - Removed `realtime` and `useChannel` from the public-api. There is no UI to communicate with. -**Payments status** +- Removed `Devvit.Context`. You can import the context type from the public API package and should use that instead. +- Removed obsolete` @devvit/security` and `@devvit/pushnotif` packages. +- Remove obsolete key-value (`Context.kvStore`) plugin which had `List()` disabled for more than a year. Please use Redis directly. -- `@devvit/payments` now tagged as `experimental` +### Reddit API Changes +- Added a new `crosspostParentId` field in the `Post` object to identify the original post for a crosspost. -## Devvit 0.12.2: Inline Mode, Launch Screens,Expanded App Experiences, and Developer Logs - -**Release Date: Nov 10, 2025** - -Release 0.12.2 delivers a major evolution in how interactive Devvit apps load, display, and engage users. With this update, you can now leverage inline web views, in addition to expanded mode, to build your interactive posts with Devvit Web. We’re also deprecating [Splash Screens](./capabilities/server/launch_screen_and_entry_points/splash_migration.mdx) in favor of more customizable HTML inline launch screens. - -**Inline Mode** - -Your app's web view can now load directly inside the post unit—right in the feed or on the post details page. Users can start interacting immediately, with no extra taps or page loads. - -Inline experiences blend smoothly into Reddit’s native post layout, which means that inline apps must meet performance standards and avoid conflicting with Reddit gestures for a native-quality experience. We encourage developers to read the guidance and rules around inline carefully before building with this feature. - -Check out [r/HotAndCold](https://www.reddit.com/r/HotAndCold/) and [r/Honk](https://www.reddit.com/r/honk/) for examples, and learn how to add [inline mode](./capabilities/server/launch_screen_and_entry_points/view_modes_entry_points.md#view-modes) to your app. - -:::note -Devvit apps using inline web views are currently seeing inflated metrics in their App Analytics Dashboard. We're working on improving these estimations. -::: +### New Features -**Improved Inline Launch Screens** +- **Building for Logged Out Users**. Reddit has an untapped resource for your apps: [logged out users](../docs/guides/logged-out-users.mdx). We’ve given you a guide to design your game so that it can be played and shared with anyone, and you can prompt logged out users to subscribe to your game. -Splash screens are yesterday’s news. The improved inline launch screens are now fully customizable, HTML-based entry points for your interactive posts. This update gives you control over design, animation, and loading behavior and uses the same tools and styles as the rest of your app. +- **Push Notifications (experimental)**. [Push notifications](../docs/capabilities/notifications/notifications-overview.md) help drive engagement, increase player retention, and build habit loops for players by bringing players back into your game at the right moments. We’ve also included detailed support for adding streaks to your game to encourage daily play! -The new first screen automatically loads before your app’s main entry point. Read the docs to learn how to [upgrade your app](./capabilities/server/launch_screen_and_entry_points/splash_migration.mdx) and [customize your launch screen](./capabilities/server/launch_screen_and_entry_points/launch_screen_customization.md). +- **Devvit Journeys (experimental)**. We’ve added a new telemetry feature that tracks the full lifecycle of a user session. [Devvit Journeys](../docs/capabilities/analytics/analytics-overview.md) gives you a new way to understand how players move through your game session from start to finish, making it easier to see where users engage, where they drop off, and which moments lead to completion. :::note -**Deprecation notice**: We're deprecating the splash parameter in submitCustomPost() and removing it in the next major version update. Learn how to [update your app](./capabilities/server/launch_screen_and_entry_points/splash_migration.mdx). +Experimental features are gated beta programs. Access to Push Notifications and Devvit Journeys is currently limited and requires approval before it can be functional in your app. ::: - -**Multiple App Entry Points** - -[Entry points](./capabilities/server/launch_screen_and_entry_points/view_modes_entry_points.md#multiple-entry-points) act as a router that organizes your app across different view modes. Each entry point specifies the initial HTML file for the specific context. A user might experience your app inline, when it’s embedded in a post, or launch it in expanded mode for a larger, full-screen mobile experience. - -**Expanded Mode** - -Expanded Mode lets users open your app or game in a full-screen experience, which is perfect for mobile devices. This feature works hand-in-hand with multiple entry points, letting users start small (interacting inline in the feed) and then expanding into a full experience. - -Learn how to add [Expanded Mode](./capabilities/server/launch_screen_and_entry_points/view_modes_entry_points.md#view-modes) functionality to your app. - -**Developer Logs** - -We’ve also shipped our first installation-level developer permissions. Developer logs read permission lets mods share read-only logs and install history of an installation with you. This is useful for debugging issues with a particular installation without having to be added as a mod to the subreddit. - -![Developer permissions](./assets/developer_permissions.png) - -We’re really excited about these updates and can’t wait to hear what you think! - -## Devvit 0.12.1: Cache Helper, Analytics dashboard for developers, and smaller fixes - -**Release Date: October 10, 2025** - -In this release, we’ve added back the cache helper for Devvit Web and also included an App Analytics tab for you to track your app’s engagement metrics. - -**Cache Helper** -The cache helper helps your app reduce the number of server side calls by caching the response for all users. This is great for any data that you plan to share across users, like a global leaderboard or consistent data from an external source like the score of a sports game. We now have this feature available in Devvit Web, and you can look up how to use it in the [cache helper docs](./capabilities/server/cache-helper.mdx). - -**App Analytics** -There’s a new App Analytics tab in your app settings that lets you track your progress against Reddit Developer Funds. - -![App Analytics](./assets/app_analytics.png) - -**Other fixes** -This release also includes a handful of other fixes including: - -- Added a method mergePostData() to append to postData. -- Fixed reddit.setPostFlair() method. -- Added a new triggers field that fixed an entrypoint triggers issue. -- Added error handling when trying to `devvit new`on an already existing app name. -- Added disconnectRealtime() and isRealtimeConnected() as helper methods for the realtime plugin. - -## Devvit 0.12.0: Devvit Web - -**Release Date: August 13, 2025** - -We're excited to introduce [Devvit Web](./capabilities/devvit-web/devvit_web_overview.mdx), a new way to build [games](./quickstart/quickstart.md) and [apps](./quickstart/quickstart-mod-tool.md) on Reddit using standard web technologies you already know and love. This release brings the power of modern web development to the Reddit platform, letting you build with React, Three.js, Phaser, and other industry-standard frameworks while maintaining access to all the Devvit capabilities you rely on. Moving forward, this will be the preferred way of building interactive post apps. - -**What's New** - -Devvit Web transforms how you build Reddit apps: - -- **Standard web development**: Build apps just like you would for the web, using familiar frameworks and tools -- **Server endpoints**: Define /api/ endpoints using Node.js frameworks like Express.js or Koa -- **New configuration system**: devvit.json provides a clean, declarative way to configure your app -- **Unified SDK**: @devvit/web package with clear client/server separation - Better AI compatibility: Standard web technologies work seamlessly with AI coding tools - -There's also a new [web-based creation flow](https://developers.reddit.com/new/) that makes creating new apps faster: - -- A step-by-step UI guides you through the initial steps to create an app -- Automatically builds a playtest subreddit for testing -- Gives you the code you need to access your new app via the terminal - -**Key Features** - -- **Client/server architecture**: Clear separation between frontend (@devvit/web/client) and backend (@devvit/web/server) -- **Full platform access**: Continued access to Redis, Reddit API, and Devvit's hosting services - **Current Limitations** - -- Serverless endpoints only (no long-running connections or streaming) -- Package restrictions (no fs or external native packages) -- Single request/response model (no websockets) -- Client-side fetch is limited to app domain (enforced via CSP) - -**Getting Started** - -- **New apps**: Go to developers.reddit.com/new to start building new apps - -**Support & Feedback** - -We'd love to hear about your experience with Devvit Web! Join the conversation in #devvit-web on Discord to share feedback, report issues, and connect with other developers building with Devvit Web. - -**Even More Features** - -In addition to Devvit Web, release 0.12 also adds: - -- **Post data** - [Post data](./capabilities/server/post-data.mdx) allows you to add data to your post when you submit it so that you can retrieve and use in your app without an additional Redis call. -- **Splash screen** - Having a compelling first screen of your app is one of the most important indicators of good post engagement. Every submitPost will come with a default per-post splash screen. diff --git a/docs/earn-money/payments/payments_add.mdx b/docs/earn-money/payments/payments_add.mdx index 8db52d08..e3b775c5 100644 --- a/docs/earn-money/payments/payments_add.mdx +++ b/docs/earn-money/payments/payments_add.mdx @@ -1,7 +1,7 @@ import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; -# Add payments +# Add Payments The Devvit payments API is available in Devvit Web. Keep reading to learn how to configure your products and accept payments. @@ -176,14 +176,14 @@ The JSON schema for the file format is available at
  • `INSTANT` for purchased items that are used immediately and disappear.
  • `DURABLE` for purchased items that are permanently applied to the account and can be used any number of times
  • `CONSUMABLE` for items that can be used at a later date but are removed once they are used.
  • `VALID_FOR_` values indicate a product can be used throughout a period of time after it is purchased.
  • | @@ -284,10 +284,16 @@ const GOD_MODE_SKU = "god_mode"; app.post("/internal/payments/fulfill", async (c) => { const order = await c.req.json(); if (!order.products.some((p) => p.sku === GOD_MODE_SKU)) { - return c.json({ success: false, reason: "Unable to fulfill order: sku not found" }); + return c.json({ + success: false, + reason: "Unable to fulfill order: sku not found", + }); } if (order.status !== "PAID") { - return c.json({ success: false, reason: "Becoming a god has a cost (in Reddit Gold)" }); + return c.json({ + success: false, + reason: "Becoming a god has a cost (in Reddit Gold)", + }); } const redisKey = `post:${order.postId}:user:${order.userId}:god_mode`; diff --git a/docs/earn-money/payments/payments_overview.md b/docs/earn-money/payments/payments_overview.md index 2b8b47af..c1c0bee8 100644 --- a/docs/earn-money/payments/payments_overview.md +++ b/docs/earn-money/payments/payments_overview.md @@ -1,4 +1,4 @@ -# In-App Purchases Overview +# Overview Add products to your app and get paid for what you sell. The payments plugin lets you prompt users to buy premium features that you build into your app, like in-game items, additional lives, or exclusive features into your app. diff --git a/docs/earn-money/payments/payments_publish.md b/docs/earn-money/payments/payments_publish.md index 3bea9c52..9b7ab0ca 100644 --- a/docs/earn-money/payments/payments_publish.md +++ b/docs/earn-money/payments/payments_publish.md @@ -1,4 +1,4 @@ -# Publish your app +# Publish Your App :::note The Developer Platform team reviews and approves apps and their products before products can be sold. diff --git a/docs/earn-money/payments/support_this_app.md b/docs/earn-money/payments/support_this_app.md index cc26a0a5..f1d66cd5 100644 --- a/docs/earn-money/payments/support_this_app.md +++ b/docs/earn-money/payments/support_this_app.md @@ -1,4 +1,4 @@ -# Support this app +# Support This App You can ask users to contribute to your app’s development by adding the “support this app” feature. This allows users to support your app with Reddit Gold in exchange for some kind of award or recognition. @@ -31,7 +31,10 @@ app.post("/internal/payments/fulfill", async (c) => { const order = await c.req.json(); const username = order.userId; // or the username field on the order if (!username) { - return c.json({ success: false, reason: "User not found" }); + return c.json({ + success: false, + reason: "User not found", + }); } const subredditName = order.subredditName ?? order.subredditId; diff --git a/docs/guides/logged-out-users.mdx b/docs/guides/logged-out-users.mdx new file mode 100644 index 00000000..58ec3338 --- /dev/null +++ b/docs/guides/logged-out-users.mdx @@ -0,0 +1,380 @@ +# Building for Logged Out Players + +Reddit has a large base of logged out users who arrive through SEO, shared links, or directly on reddit.com. Your game should support logged out users so that you can reach a larger audience, and you can create a path to convert those users into Reddit accounts who can subscribe to your game and come back to play more. + +This guide shows you how to design a Devvit game for logged-out traffic: + +- Make your game playable for logged out users: don't gate the core experience behind a login wall. +- Prompt users to log in at the right moment so they can subscribe to or follow your game. +- Optimize sharing so shared links and previews attract new players. +- Save the game state across the login boundary so logged out users who create an account can continue seamlessly after signing up. + +## Design for logged out users + +![Syllo Play Screen](../assets/analytics/syllo-play-2.png) + +### Create "just play" sessions + +Logged-out users: + +- Often arrive via search or shared links +- Lack context (no comments, subscriptions, or community cues) + +Recommended patterns: + +- Make the entry point obvious (e.g., a clear "Play" button) +- Provide in-game instructions (don't rely on external UI) +- Don't require login to start gameplay +- Reserve advanced features (saved progress, leaderboards, social) for logged-in users + +### Detect user state + +Distinguish between logged-in and logged-out users in your app logic. In Devvit, use the context: + +- `context.userId` is present only when the user is logged in +- `context.appSlug`, `context.postId`, etc. are available in both cases + +```ts +import type { Context } from "@devvit/public-api"; + +export async function onPlay(context: Context) { + const isLoggedIn = Boolean(context.userId); + + if (!isLoggedIn) { + // Logged-out experience: ie, no comments or "run as user" actions + // Keep the focus on playing the level. + } else { + // Enable richer features for logged-in players. + } +} +``` + +This pattern is especially important once you start using the login effect to gate certain actions (saving progress, sharing, etc.) behind a login flow. + +**Analytics and RDF** + +Your app's analytics dashboard distinguishes logged-in vs logged-out users. + +Note: logged out traffic does not count towards qualified engagement for Reddit Developer Funds. + +![Syllo Play Screen](../assets/analytics/engagement-analytics.png) + +## Prompt users to log in + +The biggest reason to convert a logged-out player into a logged-in user is retention: a logged-in user can subscribe to your subreddit, follow your game, and receive notifications that bring them back. A logged-out player who closes the tab is gone. + +Use `showLoginPrompt` to trigger Reddit's login/sign-up flow at a moment you choose. After the user creates or logs into their account, they return to your game. + +![Reddit Login Screen](../assets/analytics/login-screen.png) + +### When to prompt + +Trigger `showLoginPrompt()` during user actions where logging in unlocks something the player already wants, such as: + +- Subscribing to your game's subreddit (highest-leverage moment for retention) +- Following your game for updates or notifications +- Saving progress +- Sharing results +- Accessing social features (leaderboards, comments) + +### Best practices + +#### Only prompt logged-out users + +Check if the user is already logged in. If so, don't trigger the login effect. + +```ts +import type { Context } from "@devvit/public-api"; +import { showLoginPrompt } from "@devvit/client"; + +export async function onLoginButtonClick(context: Context) { + if (context.userId) { + return; + } + + showLoginPrompt(); +} +``` + +#### + +#### Trigger at natural breakpoints + +The login/sign-up flow reloads the page, so any in-memory game state will be lost unless you s[ave the logged-out game state](#save-the-logged-out-game-state). + +Recommendations: + +- Trigger `showLoginPrompt()` only at natural stopping points, e.g.: + - After a level is completed + - On a results or summary screen + - Before starting a new game +- Avoid prompting: + - Mid-puzzle or in the middle of an action that can't easily be resumed + - Repeatedly on every play; repeated prompts are likely to be ignored + +#### Pair the prompt with a clear value proposition + +Before triggering the prompt, show in-game messaging that tells the user _why_ they should log in. "Sign in to save game data and subscribe" converts better than a bare login dialog. + +:::note + +Your CTA must let the user know their game data will be saved when they subscribe. + +::: + +**Example: gating a "save progress" feature** + +```ts +import type { Context } from "@devvit/public-api"; +import { showLoginPrompt } from "@devvit/client"; + +export async function onSaveProgress(context: Context) { + const isLoggedIn = Boolean(context.userId); + + if (!isLoggedIn) { + // Optional: show in-game messaging before the prompt. + // e.g. render "Sign in to save your progress" in your own UI. + + showLoginPrompt(); + return; + } + + // User is logged in; proceed with your normal save logic. + await saveProgressForUser(context); +} +``` + +## Customize sharing to attract new players + +Shares are one of the main ways logged-out users arrive at your game. A well-customized share gives the recipient a clear reason to play and a clean landing experience, instead of a generic Reddit preview. + +There are three pieces: + +1. `showShareSheet` to trigger sharing from inside your app +2. **Deeplinks** to attach up to 1024 characters of data to a shared link +3. **Share previews** to set the image and text shown when links unfurl off-platform + +### Trigger sharing from your app + +Use `showShareSheet` to invoke Reddit's share behavior from your app. + +Example: display an invite banner + +![Syllo Sharesheet](../assets/analytics/syllo-sharesheet.png) + +```ts +import { showShareSheet } from "@devvit/web/client"; + +await showShareSheet({ + title: "Play today's puzzle", // optional title + text: "I solved the puzzle in 30s. Can you beat my time?", // optional body message + data: JSON.stringify({ + // optional share data (≤ 1024 chars) + type: "puzzle_challenge", + from: "userA", + message: "userA challenged you to solve this puzzle", + }), +}); +``` + +Parameters: + +- `data?: string` + - Arbitrary payload (invite code, JSON, etc.) + - Must be **≤ 1024 characters** + - Becomes the shared "user data" you can read when the link is opened +- `title?: string` + - Optional title for the share sheet or message +- `text?: string` + - Optional pre-filled message body +- `post?: T3` (on some platforms) + - Optional; if omitted, the current Devvit post is used + +You don't need to build your own share URLs for the standard "share this post" flow. `showShareSheet` handles that for you. + +### Share data and deeplinks + +Attach extra `data` to shared links and read it back when a recipient opens them using `getShareData()`. + +**Writing share data** + +Best practices: + +- Keep it short (≤ 1024 characters) +- Treat share data as untrusted input (users can tamper with links). Do **not** trust share data as an identity or authorization token +- Validate before using the payload + +**Reading share data when the page loads** + +```ts +import { getShareData } from "@devvit/web/client"; + +const raw = getShareData(); +const shared = raw ? JSON.parse(raw) : undefined; + +if (shared?.type === "puzzle_challenge") { + // Render challenge UI for the recipient. +} +``` + +### Customize share previews + +Set custom share images and text for each post instead of showing the default Reddit branding. This image is used for the thumbnail preview in compact subreddit feeds and for off-platform link unfurls. + +![Custom Share Image](../assets/analytics/syllo-logo.png) + +**Set share image when creating a post** + +```ts +// 1. Upload your image to Reddit via the media API. +import { media } from "@devvit/web/server"; + +async function uploadShareImageUrl(): Promise { + try { + const uploadResult = await media.upload({ + url: "https://example.com/share-preview.png", + type: "image", + }); + return uploadResult.mediaUrl; + } catch (error) { + console.error(`Failed to upload share image: ${error}`); + return undefined; + } +} + +// 2. Use the returned mediaUrl in submitCustomPost. +const shareImageUrl = await uploadShareImageUrl(); +const post = await reddit.submitCustomPost({ + title: "Daily Post", + subredditName: subreddit.name, + ...(shareImageUrl ? { shareImageUrl } : {}), +}); +``` + +**Update share image for an existing post** + +```ts +const post = await context.reddit.getPostById(context.postId); + +await post.setShareImageUrl("https://example.com/new-share-image.png"); +``` + +Notes: + +- Use a **static image URL** with appropriate resolution and aspect ratio +- The same image is used across major destinations (iMessage, WhatsApp, SMS, Slack, etc.) +- If you don't set a share image, Reddit uses a default app or post-level preview + +## Save the logged-out game state + +To make this a good experience for logged-out users who convert to logged-in users, you can save their game state across the login boundary. This example shows how to save a simplified completed game state (`score`) using the browser’s localStorage. + +:::note + +You should only collect and retain data strictly necessary for gameplay engagement and continuity. Game engagement data must not be used for advertising, profiling, personalization outside the gameplay experience, or any unrelated secondary purposes. + +::: + +Saving game state to localStorage comes with some limitations: localStorage resets whenever you install a new app version, and it does not persist across different browsers. + +### Set up localStorage helpers + +```javascript +type LoggedOutScore = { + postId: string; + score: number; +}; + +const loggedOutScoreKey = (postId: string) => `mygame:loggedOutScore:${postId}`; + +export function writeLoggedOutScoreToLocalStorage(value: LoggedOutScore): void { + try { + window.localStorage.setItem( + loggedOutScoreKey(value.postId), + JSON.stringify(value) + ); + } catch { + // Add error handling + } +} + +export function readLoggedOutScore(postId: string): LoggedOutScore | null { + try { + const raw = window.localStorage.getItem(loggedOutScoreKey(postId)); + if (!raw) return null; + + const parsed: unknown = JSON.parse(raw); + if ( + !parsed || + typeof parsed !== "object" || + typeof (parsed as LoggedOutScore).postId !== "string" || + typeof (parsed as PendingScore).score !== "number" + ) { + return null; + } + + return parsed as LoggedOutScore; + } catch { + return null; + } +} + +export function clearLoggedOutScore(postId: string): void { + window.localStorage.removeItem(loggedOutScoreKey(postId)); +} +``` + +### Game ends: save the score from this logged-out game + +- If the user is logged in: send the data to Redis using `username` / `userId` from the session. +- If not logged in: `JSON.stringify` the score and `localStorage.setItem` under a key that includes postId (or some other unique identifier, ie `gameId`, depending on your app setup) so different posts don't get mixed up. + +```javascript +async function onGameEnd(postId: string, userLoggedIn: boolean, score: number) { + if (userLoggedIn) { + await saveScore(postId, score); + clearLoggedOutScore(postId); + } else { + writeLoggedOutScoreToLocalStorage(postId, score); + } +} + +async function saveScore( + input: { postId: string; score: number }, + context: { userId: string } +) { + const { userId } = context; + if (!userId ) throw new Error("userId required"); + if (!postId) throw new Error("postId required"); + + await redis.hSet(`scores:${input.postId}`, { + [userId]: String(input.score), + }); + + return { status: "ok" }; +} +``` + +### Migrate logged-out user scores to their userId when they log in + +- Next time the app runs and userId is present, save the score from localStorage to the user’s id in redis so that they get the credit for completing the game + +```javascript +async function migrateLoggedOutScoreOnAppInit(params: { + userId?: string; + postId?: string; +}): Promise { + const { userId, postId } = params; + if (!userId || !postId) return; + + const loggedOutScore = readLoggedOutScore(postId); + if (!loggedOutScore) return; + + await saveScore({ + postId: loggedOutScore.postId, + score: loggedOutScore.score, + }); + + clearLoggedOutScore(postId); +} +``` diff --git a/docs/guides/migrate/public-api.md b/docs/guides/migrate/public-api.md index 886d3259..2f9646cf 100644 --- a/docs/guides/migrate/public-api.md +++ b/docs/guides/migrate/public-api.md @@ -1,17 +1,18 @@ -# Migrating your PRAW App to Devvit Web +# Migrating Your PRAW App to Devvit Web -If you have built Reddit bots or moderation tools using PRAW (Python Reddit API Wrapper) and the standard Reddit API, you can port them directly into Reddit using Devvit Web. Devvit Web represents Reddit's modern client/server architecture for applications, allowing you to build rich moderation tools and automated bots utilizing familiar web frameworks (like Hono and Vite). -This guide shows you how to transition your Python/PRAW app to a Devvit Web app, utilizing concepts and logic structures you are already familiar with. +If you have built Reddit bots or moderation tools using PRAW (Python Reddit API Wrapper) and the standard Reddit API, you can port them directly into Reddit using Devvit Web. Devvit Web is Reddit's modern client/server architecture for applications, allowing you to build rich moderation tools and automated bots using familiar web frameworks (like Hono and Vite). -## **1\. Creating a Devvit App** +This guide shows you how to transition your Python/PRAW app to a Devvit Web app with concepts and logic structures you're already familiar with. -Unlike standard Python scripts, a Devvit Web application is structurally split into a front-end client and a back-end server, tied together by a configuration file. To jumpstart your migration, you can utilize official Reddit templates. +## Creating a Devvit app -### **Using the Mod Tool Template** +Unlike standard Python scripts, a Devvit Web app is structurally split into a front-end client and a back-end server and tied together by a configuration file. To jumpstart your migration, you can use official Devvit templates. -A highly recommended starting point for migrating PRAW moderation tools is the **Mod Tool Template**. Simply navigate to [developers.reddit.com/new](http://developers.reddit.com/new), select the Mod Tool Template and follow the instructions. The project created for you provides a complete foundation with a lightweight web framework (Hono) for backend logic, Vite for web components, and TypeScript for type safety. +### Mod tool template -### **The Architecture** +A highly recommended starting point for migrating PRAW moderation tools is the **Mod Tool Template**. Go to [developers.reddit.com/new](http://developers.reddit.com/new), select the Mod Tool Template, and follow the instructions. The project created for you provides a complete foundation with a lightweight web framework (Hono) for backend logic, Vite for web components, and TypeScript for type safety. + +### Architecture A typical Devvit Web template will generate the following file structure: @@ -19,7 +20,7 @@ A typical Devvit Web template will generate the following file structure: - **src/client/**: This directory holds your webview code (HTML/CSS/JS or React components built with Vite). For Mod Tools it's common to not use the client folder - **src/server/**: This directory contains your backend API logic. Here, a Node server framework (like Hono) processes requests, interacts with the Reddit API, and handles triggers. All server endpoints typically start with /internal/ or /api/. -## **2\. Python to TypeScript: Server Concepts** +## Python to TypeScript: Server Concepts In PRAW, you managed state in a continuous Python loop. In Devvit Web, your application acts as an API server responding to specific incoming webhook requests (handled seamlessly by Hono). Here are the key analogies: @@ -27,9 +28,10 @@ In PRAW, you managed state in a continuous Python loop. In Devvit Web, your appl - **pip install vs. npm install:** Instead of managing a requirements.txt file, Devvit uses a package.json file to track dependencies. - **Continuous Polling vs. Webhooks:** Instead of polling Reddit in a while True: loop, Devvit automatically sends a POST request to your Hono server whenever an event occurs. -## **3\. Triggers (Replacing Continuous Polling)** +## Triggers (replacing continuous polling) + +In Devvit Web, triggers are configured in your devvit.json. When an event happens (like a new comment), Devvit sends a payload to the designated endpoint on your server. -In Devvit Web, you configure Triggers in your devvit.json. When an event happens (like a new comment), Devvit sends a payload to the designated endpoint on your server. **Step 1: Configuration (devvit.json)** ```json @@ -45,45 +47,48 @@ In Devvit Web, you configure Triggers in your devvit.json. When an event happens ```ts // Hono is a small web framework used to define HTTP routes. -import { Hono } from 'hono'; +import { Hono } from "hono"; // TriggerResponse is the expected JSON response shape for trigger endpoints. -import type { TriggerResponse } from '@devvit/web/shared'; +import type { TriggerResponse } from "@devvit/web/shared"; // Create a web server app instance. const app = new Hono(); // Listen for the onCommentSubmit trigger endpoint configured in devvit.json. -app.post('/internal/triggers/on-comment-submit', async (c) => { +app.post("/internal/triggers/on-comment-submit", async (c) => { // Parse the incoming JSON body from Devvit. // The <...> part is a TypeScript type hint for what fields we expect. - const input = await c.req.json<{ author?: { username?: string; name?: string } }>(); + const input = await c.req.json<{ + author?: { username?: string; name?: string }; + }>(); // Pick a display name safely: // - ?. means "if this exists, read it" // - ?? means "if left side is null/undefined, use right side" - const authorName = input.author?.username ?? input.author?.name ?? 'unknown user'; + const authorName = + input.author?.username ?? input.author?.name ?? "unknown user"; console.log(`New comment created by ${authorName}!`); // Return a standard "ok" response with HTTP 200 status. - return c.json({ status: 'ok' }, 200); + return c.json({ status: "ok" }, 200); }); export default app; ``` -## **4\. Adding and Removing Comments** +## Adding and removing comments -To moderate content in Devvit Web, you use the Reddit API client accessible within your server logic. This behaves similarly to comment.mod.remove() in PRAW but relies on asynchronous function calls. +To moderate content in Devvit Web, use the Reddit API client accessible within your server logic. This behaves similarly to `comment.mod.remove()` in PRAW but relies on asynchronous function calls. ```ts // Hono handles incoming HTTP requests from Devvit. -import { Hono } from 'hono'; +import { Hono } from "hono"; // reddit is the Devvit Reddit API client for moderation/content actions. -import { reddit } from '@devvit/web/server'; +import { reddit } from "@devvit/web/server"; // TriggerResponse is the response type expected by trigger handlers. -import type { TriggerResponse } from '@devvit/web/shared'; +import type { TriggerResponse } from "@devvit/web/shared"; const app = new Hono(); -app.post('/internal/triggers/on-comment-submit', async (c) => { +app.post("/internal/triggers/on-comment-submit", async (c) => { // Parse request JSON and describe expected fields with a TypeScript type. const input = await c.req.json<{ author?: { id?: string }; @@ -92,13 +97,13 @@ app.post('/internal/triggers/on-comment-submit', async (c) => { // Get the comment ID if it exists. const commentId = input.comment?.id; // If we cannot find the comment ID, we cannot moderate the comment. - if (!commentId) return c.json({ status: 'ignored' }, 200); + if (!commentId) return c.json({ status: "ignored" }, 200); // Normalize text to lowercase so our keyword check is case-insensitive. - const body = input.comment?.body?.toLowerCase() ?? ''; + const body = input.comment?.body?.toLowerCase() ?? ""; // Check if the comment matches a specific moderation rule - if (body.includes('rule-breaking string')) { + if (body.includes("rule-breaking string")) { // 1. Remove the comment natively await reddit.remove(commentId, true); // true = flag as spam @@ -106,39 +111,39 @@ app.post('/internal/triggers/on-comment-submit', async (c) => { await reddit.submitComment({ // Reply to the removed comment itself. id: commentId, - text: 'Your comment was removed automatically for violating our community guidelines.', + text: "Your comment was removed automatically for violating our community guidelines.", // Run as the app account rather than a user account. - runAs: 'APP', + runAs: "APP", }); } - return c.json({ status: 'ok' }, 200); + return c.json({ status: "ok" }, 200); }); export default app; ``` -## **5\. Using Redis for Storage (Replacing SQLite/JSON)** +## Using Redis for storage (replacing SQLite/JSON) Instead of maintaining a local SQLite database for tracking user warnings or config states, Devvit Web gives you direct access to a managed Redis instance. ```ts // Hono handles HTTP routes. -import { Hono } from 'hono'; +import { Hono } from "hono"; // Redis client for key-value storage. -import { redis } from '@devvit/redis'; +import { redis } from "@devvit/redis"; // Standard trigger response type. -import type { TriggerResponse } from '@devvit/web/shared'; +import type { TriggerResponse } from "@devvit/web/shared"; const app = new Hono(); -app.post('/internal/triggers/on-post-submit', async (c) => { +app.post("/internal/triggers/on-post-submit", async (c) => { // Read trigger payload JSON. const input = await c.req.json<{ author?: { id?: string } }>(); // Extract the submitting user's ID. const authorId = input.author?.id; // If author is missing, skip this event safely. - if (!authorId) return c.json({ status: 'ignored' }, 200); + if (!authorId) return c.json({ status: "ignored" }, 200); // Build a per-user counter key, for example: post_count:t2_abc123 const redisKey = `post_count:${authorId}`; @@ -147,15 +152,16 @@ app.post('/internal/triggers/on-post-submit', async (c) => { const newCount = await redis.incrBy(redisKey, 1); console.log(`User ${authorId} has submitted ${newCount} posts.`); - return c.json({ status: 'ok' }, 200); + return c.json({ status: "ok" }, 200); }); export default app; ``` -## **6\. Using Schedulers (Replacing cron jobs or time.sleep)** +## Using schedulers (replacing cron jobs or time.sleep) + +PRAW bots frequently rely on time.sleep() for delayed tasks. In Devvit Web, you define Scheduled Tasks in devvit.json and map them to internal Hono endpoints. You can schedule recurring jobs (like cron) or one-off tasks. -PRAW bots frequently rely on time.sleep() for delayed tasks. In Devvit Web, you define Scheduled Tasks in devvit.json and map them to internal Hono endpoints. You can schedule recurring jobs (like cron) or one-off tasks. **Step 1: Configuration (devvit.json)** ```json @@ -168,25 +174,24 @@ PRAW bots frequently rely on time.sleep() for delayed tasks. In Devvit Web, you } } } - ``` -**Step 2: Scheduling and Handling (src/server/index.ts)** +**Step 2: Scheduling and handling (src/server/index.ts)** ```ts // Hono handles incoming webhook/scheduler HTTP requests. -import { Hono } from 'hono'; +import { Hono } from "hono"; // scheduler queues delayed jobs, reddit sends private messages. -import { scheduler, reddit } from '@devvit/web/server'; +import { scheduler, reddit } from "@devvit/web/server"; // Types for scheduler request/response payloads. -import type { TaskRequest, TaskResponse } from '@devvit/web/server'; +import type { TaskRequest, TaskResponse } from "@devvit/web/server"; // Type for standard trigger responses. -import type { TriggerResponse } from '@devvit/web/shared'; +import type { TriggerResponse } from "@devvit/web/shared"; const app = new Hono(); // 1. Triggering the scheduled job (e.g., from a comment trigger) -app.post('/internal/triggers/on-comment-submit', async (c) => { +app.post("/internal/triggers/on-comment-submit", async (c) => { // Parse incoming trigger JSON. // This generic type describes what data shape we expect from the payload. const input = await c.req.json<{ @@ -194,13 +199,13 @@ app.post('/internal/triggers/on-comment-submit', async (c) => { comment?: { body?: string }; }>(); // Normalize body text so command checks are case-insensitive. - const body = input.comment?.body?.toLowerCase() ?? ''; + const body = input.comment?.body?.toLowerCase() ?? ""; - if (body.includes('!remindme')) { + if (body.includes("!remindme")) { // Use username when available, otherwise fall back to name. const username = input.author?.username ?? input.author?.name; // If we still do not have a recipient, skip this event. - if (!username) return c.json({ status: 'ignored' }, 200); + if (!username) return c.json({ status: "ignored" }, 200); // Create a timestamp one hour in the future. const oneHourFromNow = new Date(Date.now() + 60 * 60 * 1000); @@ -210,40 +215,42 @@ app.post('/internal/triggers/on-comment-submit', async (c) => { // A unique job ID (useful for debugging/canceling). id: `remind-user-${username}-${Date.now()}`, // Must match a task name declared in devvit.json. - name: 'remind-user-job', + name: "remind-user-job", // Custom payload delivered later to the scheduler endpoint. - data: { username, message: 'Your 1-hour reminder!' }, + data: { username, message: "Your 1-hour reminder!" }, // Time when this job should run. runAt: oneHourFromNow, }); } - return c.json({ status: 'ok' }, 200); + return c.json({ status: "ok" }, 200); }); // 2. The endpoint that executes when the timer concludes -app.post('/internal/scheduler/remind-user-job', async (c) => { +app.post("/internal/scheduler/remind-user-job", async (c) => { // Parse scheduler payload JSON. // TaskRequest<{ ... }> means "TaskRequest whose data looks like this object". - const req = await c.req.json>(); + const req = + await c.req.json>(); // Read values from req.data safely; default to empty object if data is missing. const { username, message } = req.data ?? {}; // Guard clause: ensure required fields exist before continuing. - if (!username || !message) return c.json({ status: 'ignored' }, 200); + if (!username || !message) + return c.json({ status: "ignored" }, 200); // Send a Reddit private message to the user. await reddit.sendPrivateMessage({ to: username, - subject: 'Automated Reminder', + subject: "Automated Reminder", text: message, }); - return c.json({ status: 'ok' }, 200); + return c.json({ status: "ok" }, 200); }); export default app; ``` -## **Summary of Concepts** +## Concept Summary | Concept | PRAW (Python) | Devvit Web (Hono \+ TypeScript) | | :------------------- | :-------------------------- | :-------------------------------------------------- | @@ -252,8 +259,6 @@ export default app; | Database Storage | SQLite, JSON, external DBs | import { redis } from '@devvit/redis' | | Delayed Actions | time.sleep() | scheduler.runJob() \+ Server Endpoint | -### --- - **References** 1. [Mod Tools Template - GitHub](https://github.com/reddit/devvit-template-mod-tool-devvit-web) diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 21f0ab87..228c91d3 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -4,7 +4,7 @@ import { themes as prismThemes } from "prism-react-renderer"; const baseUrl = process.env.DOCUSAURUS_BASE_URL ?? "/docs/"; -const LATEST_DEVVIT_VERSION = '0.12'; // update-versioned-docs.mjs sets this automatically +const LATEST_DEVVIT_VERSION = '0.13'; // update-versioned-docs.mjs sets this automatically const config: Config = { future: { @@ -89,6 +89,9 @@ const config: Config = { "current": { // This refers to "/docs/next/" noIndex: true, }, + "0.12": { + noIndex: true, + }, "0.11": { noIndex: true, }, diff --git a/sidebars.ts b/sidebars.ts index d381ccdb..a29fdebd 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -149,6 +149,11 @@ const sidebars: SidebarsConfig = { }, ], }, + { + type: "category", + label: "Analytics", + items: ["capabilities/analytics/analytics-overview", "capabilities/analytics/devvit-journeys"], + }, { type: "category", label: "Automation & Triggers", @@ -171,6 +176,14 @@ const sidebars: SidebarsConfig = { "earn-money/payments/support_this_app", ], }, + { + type: "category", + label: "Notifications", + items: [ + "capabilities/notifications/notifications-overview", + "capabilities/notifications/pn-best-practices", + "capabilities/notifications/adding-streaks"], + }, { type: "category", label: "Post Creation & Navigation", @@ -297,6 +310,11 @@ const sidebars: SidebarsConfig = { "guides/migrate/public-api", ], }, + { + type: "doc", + label: "Building for Logged Out Players", + id: "guides/logged-out-users", + }, { type: "doc", label: "Template Library", diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/README.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/README.md new file mode 100644 index 00000000..bb1a4087 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/README.md @@ -0,0 +1,24 @@ +[**@devvit/public-api v0.13.0-dev**](../../../README.md) + +*** + +# Devvit + +## Namespaces + +- [Blocks](namespaces/Blocks/README.md) + +## Type Aliases + +- [BlockComponent](type-aliases/BlockComponent.md) +- [BlockComponentProps](type-aliases/BlockComponentProps.md) +- [Context](type-aliases/Context.md) +- [CustomPostComponent](type-aliases/CustomPostComponent.md) +- [ElementChildren](type-aliases/ElementChildren.md) +- [Fragment](type-aliases/Fragment.md) +- [StringChild](type-aliases/StringChild.md) +- [StringChildren](type-aliases/StringChildren.md) + +## Functions + +- [createElement](functions/createElement.md) diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/functions/createElement.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/functions/createElement.md new file mode 100644 index 00000000..e91783ab --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/functions/createElement.md @@ -0,0 +1,25 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Function: createElement() + +> **createElement**(`type`, `props`, ...`children`): [`BlockElement`](../../../../type-aliases/BlockElement.md) + +## Parameters + +### type + +keyof [`IntrinsicElements`](../namespaces/Blocks/interfaces/IntrinsicElements.md) + +### props + +`undefined` | \{\} + +### children + +...`Children`[] + +## Returns + +[`BlockElement`](../../../../type-aliases/BlockElement.md) diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/README.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/README.md new file mode 100644 index 00000000..16373929 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/README.md @@ -0,0 +1,57 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../README.md) + +*** + +# Blocks + +## Interfaces + +- [IntrinsicElements](interfaces/IntrinsicElements.md) + +## Type Aliases + +- [Actionable](type-aliases/Actionable.md) +- [ActionHandlers](type-aliases/ActionHandlers.md) +- [Alignment](type-aliases/Alignment.md) +- [AvatarBackground](type-aliases/AvatarBackground.md) +- [AvatarFacing](type-aliases/AvatarFacing.md) +- [AvatarProps](type-aliases/AvatarProps.md) +- [AvatarSize](type-aliases/AvatarSize.md) +- [BaseProps](type-aliases/BaseProps.md) +- [ButtonAppearance](type-aliases/ButtonAppearance.md) +- [ButtonProps](type-aliases/ButtonProps.md) +- [ButtonSize](type-aliases/ButtonSize.md) +- [ColorString](type-aliases/ColorString.md) +- [ContainerBorderWidth](type-aliases/ContainerBorderWidth.md) +- [ContainerCornerRadius](type-aliases/ContainerCornerRadius.md) +- [ContainerGap](type-aliases/ContainerGap.md) +- [ContainerPadding](type-aliases/ContainerPadding.md) +- [HasElementChildren](type-aliases/HasElementChildren.md) +- [HasStringChildren](type-aliases/HasStringChildren.md) +- [HorizontalAlignment](type-aliases/HorizontalAlignment.md) +- [IconProps](type-aliases/IconProps.md) +- [IconSize](type-aliases/IconSize.md) +- [ImageProps](type-aliases/ImageProps.md) +- [ImageResizeMode](type-aliases/ImageResizeMode.md) +- [IntrinsicElementsType](type-aliases/IntrinsicElementsType.md) +- [OnPressEventHandler](type-aliases/OnPressEventHandler.md) +- [OnWebViewEventHandler](type-aliases/OnWebViewEventHandler.md) +- [RootHeight](type-aliases/RootHeight.md) +- [RootProps](type-aliases/RootProps.md) +- [SizePercent](type-aliases/SizePercent.md) +- [SizePixels](type-aliases/SizePixels.md) +- [SizeString](type-aliases/SizeString.md) +- [SpacerProps](type-aliases/SpacerProps.md) +- [SpacerShape](type-aliases/SpacerShape.md) +- [SpacerSize](type-aliases/SpacerSize.md) +- [StackProps](type-aliases/StackProps.md) +- [TextOutline](type-aliases/TextOutline.md) +- [TextOverflow](type-aliases/TextOverflow.md) +- [TextProps](type-aliases/TextProps.md) +- [TextSize](type-aliases/TextSize.md) +- [TextStyle](type-aliases/TextStyle.md) +- [TextWeight](type-aliases/TextWeight.md) +- [Thickness](type-aliases/Thickness.md) +- [VerticalAlignment](type-aliases/VerticalAlignment.md) +- [WebViewActionable](type-aliases/WebViewActionable.md) +- [WebViewProps](type-aliases/WebViewProps.md) diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/interfaces/IntrinsicElements.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/interfaces/IntrinsicElements.md new file mode 100644 index 00000000..4f94e663 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/interfaces/IntrinsicElements.md @@ -0,0 +1,93 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Interface: IntrinsicElements + +## Properties + + + +### avatar + +> **avatar**: [`AvatarProps`](../type-aliases/AvatarProps.md) + +*** + + + +### blocks + +> **blocks**: [`RootProps`](../type-aliases/RootProps.md) + +*** + + + +### button + +> **button**: [`ButtonProps`](../type-aliases/ButtonProps.md) + +*** + + + +### hstack + +> **hstack**: [`StackProps`](../type-aliases/StackProps.md) + +*** + + + +### icon + +> **icon**: [`IconProps`](../type-aliases/IconProps.md) + +*** + + + +### image + +> **image**: [`ImageProps`](../type-aliases/ImageProps.md) + +*** + + + +### spacer + +> **spacer**: [`SpacerProps`](../type-aliases/SpacerProps.md) + +*** + + + +### text + +> **text**: [`TextProps`](../type-aliases/TextProps.md) + +*** + + + +### vstack + +> **vstack**: [`StackProps`](../type-aliases/StackProps.md) + +*** + + + +### webview + +> **webview**: [`WebViewProps`](../type-aliases/WebViewProps.md) + +*** + + + +### zstack + +> **zstack**: [`StackProps`](../type-aliases/StackProps.md) diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ActionHandlers.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ActionHandlers.md new file mode 100644 index 00000000..299c0ddc --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ActionHandlers.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: ActionHandlers + +> **ActionHandlers** = keyof [`Actionable`](Actionable.md) & [`WebViewActionable`](WebViewActionable.md) diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/Actionable.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/Actionable.md new file mode 100644 index 00000000..72f0f39e --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/Actionable.md @@ -0,0 +1,15 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: Actionable + +> **Actionable** = `object` + +## Properties + + + +### onPress? + +> `optional` **onPress**: [`OnPressEventHandler`](OnPressEventHandler.md) diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/Alignment.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/Alignment.md new file mode 100644 index 00000000..eb4cdc37 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/Alignment.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: Alignment + +> **Alignment** = `` `${VerticalAlignment}` `` \| `` `${HorizontalAlignment}` `` \| `` `${VerticalAlignment} ${HorizontalAlignment}` `` \| `` `${HorizontalAlignment} ${VerticalAlignment}` `` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/AvatarBackground.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/AvatarBackground.md new file mode 100644 index 00000000..c3fee158 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/AvatarBackground.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: AvatarBackground + +> **AvatarBackground** = `"light"` \| `"dark"` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/AvatarFacing.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/AvatarFacing.md new file mode 100644 index 00000000..0c803fc0 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/AvatarFacing.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: AvatarFacing + +> **AvatarFacing** = `"left"` \| `"right"` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/AvatarProps.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/AvatarProps.md new file mode 100644 index 00000000..eb23f99c --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/AvatarProps.md @@ -0,0 +1,25 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: AvatarProps + +> **AvatarProps** = [`BaseProps`](BaseProps.md) & [`Actionable`](Actionable.md) & `object` + +## Type declaration + +### background? + +> `optional` **background**: [`AvatarBackground`](AvatarBackground.md) + +### facing? + +> `optional` **facing**: [`AvatarFacing`](AvatarFacing.md) + +### size? + +> `optional` **size**: [`AvatarSize`](AvatarSize.md) + +### thingId + +> **thingId**: `string` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/AvatarSize.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/AvatarSize.md new file mode 100644 index 00000000..4f1ffa5d --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/AvatarSize.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: AvatarSize + +> **AvatarSize** = `"xxsmall"` \| `"xsmall"` \| `"small"` \| `"medium"` \| `"large"` \| `"xlarge"` \| `"xxlarge"` \| `"xxxlarge"` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/BaseProps.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/BaseProps.md new file mode 100644 index 00000000..c6233fc1 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/BaseProps.md @@ -0,0 +1,96 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: BaseProps + +> **BaseProps** = `object` + +## Properties + + + +### grow? + +> `optional` **grow**: `boolean` + +*** + + + +### height? + +> `optional` **height**: [`SizeString`](SizeString.md) + +*** + + + +### id? + +> `optional` **id**: `string` + +This optional field provides a unique identifier for the element. This is useful for ensuring +re-use of elements across renders. See the `key` field for more information. Unlike key, id +is global. You cannot have two elements with the same id in the same tree. + +*** + + + +### key? + +> `optional` **key**: `string` + +This optional field provides some efficiencies around re-ordering elements in a list. Rather +Than re-rendering the entire list, the client can use the key to determine if the element has +changed. In the example below, if a and b were swapped, the client would know to reuse the +existing elements from b, rather than re-creating an expensive tree of elements. + +Unlike id, key is local to the parent element. This means that the same key can be used in different +parts of the tree without conflict. + + + hi world + ...deeply nested content... + + +*** + + + +### maxHeight? + +> `optional` **maxHeight**: [`SizeString`](SizeString.md) + +*** + + + +### maxWidth? + +> `optional` **maxWidth**: [`SizeString`](SizeString.md) + +*** + + + +### minHeight? + +> `optional` **minHeight**: [`SizeString`](SizeString.md) + +*** + + + +### minWidth? + +> `optional` **minWidth**: [`SizeString`](SizeString.md) + +*** + + + +### width? + +> `optional` **width**: [`SizeString`](SizeString.md) diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ButtonAppearance.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ButtonAppearance.md new file mode 100644 index 00000000..1bd91653 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ButtonAppearance.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: ButtonAppearance + +> **ButtonAppearance** = `"secondary"` \| `"primary"` \| `"plain"` \| `"bordered"` \| `"media"` \| `"destructive"` \| `"caution"` \| `"success"` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ButtonProps.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ButtonProps.md new file mode 100644 index 00000000..d5b9db73 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ButtonProps.md @@ -0,0 +1,37 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: ButtonProps + +> **ButtonProps** = [`BaseProps`](BaseProps.md) & [`HasStringChildren`](HasStringChildren.md) & [`Actionable`](Actionable.md) & `object` + +## Type declaration + +### appearance? + +> `optional` **appearance**: [`ButtonAppearance`](ButtonAppearance.md) + +### darkTextColor? + +> `optional` **darkTextColor**: [`ColorString`](ColorString.md) + +### disabled? + +> `optional` **disabled**: `boolean` + +### icon? + +> `optional` **icon**: [`IconName`](../../../../../../type-aliases/IconName.md) + +### lightTextColor? + +> `optional` **lightTextColor**: [`ColorString`](ColorString.md) + +### size? + +> `optional` **size**: [`ButtonSize`](ButtonSize.md) + +### textColor? + +> `optional` **textColor**: [`ColorString`](ColorString.md) diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ButtonSize.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ButtonSize.md new file mode 100644 index 00000000..40b2875a --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ButtonSize.md @@ -0,0 +1,12 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: ButtonSize + +> **ButtonSize** = `"small"` \| `"medium"` \| `"large"` + +Affects the button height. +small = 32px; +medium = 40px; +large = 48px; diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ColorString.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ColorString.md new file mode 100644 index 00000000..00ed3b52 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ColorString.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: ColorString + +> **ColorString** = `string` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ContainerBorderWidth.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ContainerBorderWidth.md new file mode 100644 index 00000000..e76ce28e --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ContainerBorderWidth.md @@ -0,0 +1,10 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: ContainerBorderWidth + +> **ContainerBorderWidth** = [`Thickness`](Thickness.md) + +thin = 1px; +thick = 2px; diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ContainerCornerRadius.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ContainerCornerRadius.md new file mode 100644 index 00000000..baf9b9e6 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ContainerCornerRadius.md @@ -0,0 +1,11 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: ContainerCornerRadius + +> **ContainerCornerRadius** = `"none"` \| `"small"` \| `"medium"` \| `"large"` \| `"full"` + +small = 8px; +medium = 16px; +large = 24px; diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ContainerGap.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ContainerGap.md new file mode 100644 index 00000000..4a8fe558 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ContainerGap.md @@ -0,0 +1,11 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: ContainerGap + +> **ContainerGap** = `"none"` \| `"small"` \| `"medium"` \| `"large"` + +small = 8px; +medium = 16px; +large = 32px; diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ContainerPadding.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ContainerPadding.md new file mode 100644 index 00000000..6d17c451 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ContainerPadding.md @@ -0,0 +1,12 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: ContainerPadding + +> **ContainerPadding** = `"none"` \| `"xsmall"` \| `"small"` \| `"medium"` \| `"large"` + +xsmall = 4px; +small = 8px; +medium = 16px; +large = 32px; diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/HasElementChildren.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/HasElementChildren.md new file mode 100644 index 00000000..221fba54 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/HasElementChildren.md @@ -0,0 +1,15 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: HasElementChildren + +> **HasElementChildren** = `object` + +## Properties + + + +### children? + +> `optional` **children**: [`ElementChildren`](../../../type-aliases/ElementChildren.md) diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/HasStringChildren.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/HasStringChildren.md new file mode 100644 index 00000000..a0f815de --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/HasStringChildren.md @@ -0,0 +1,15 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: HasStringChildren + +> **HasStringChildren** = `object` + +## Properties + + + +### children? + +> `optional` **children**: [`StringChildren`](../../../type-aliases/StringChildren.md) diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/HorizontalAlignment.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/HorizontalAlignment.md new file mode 100644 index 00000000..23cede82 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/HorizontalAlignment.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: HorizontalAlignment + +> **HorizontalAlignment** = `"start"` \| `"center"` \| `"end"` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/IconProps.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/IconProps.md new file mode 100644 index 00000000..82509638 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/IconProps.md @@ -0,0 +1,29 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: IconProps + +> **IconProps** = [`BaseProps`](BaseProps.md) & [`HasStringChildren`](HasStringChildren.md) & [`Actionable`](Actionable.md) & `object` + +## Type declaration + +### color? + +> `optional` **color**: [`ColorString`](ColorString.md) + +### darkColor? + +> `optional` **darkColor**: [`ColorString`](ColorString.md) + +### lightColor? + +> `optional` **lightColor**: [`ColorString`](ColorString.md) + +### name + +> **name**: [`IconName`](../../../../../../type-aliases/IconName.md) + +### size? + +> `optional` **size**: [`IconSize`](IconSize.md) diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/IconSize.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/IconSize.md new file mode 100644 index 00000000..8139906b --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/IconSize.md @@ -0,0 +1,12 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: IconSize + +> **IconSize** = `"xsmall"` \| `"small"` \| `"medium"` \| `"large"` + +xsmall = 12px; +small = 16px; +medium = 20px; +large = 24px; diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ImageProps.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ImageProps.md new file mode 100644 index 00000000..fec90d20 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ImageProps.md @@ -0,0 +1,29 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: ImageProps + +> **ImageProps** = [`BaseProps`](BaseProps.md) & [`Actionable`](Actionable.md) & `object` + +## Type declaration + +### description? + +> `optional` **description**: `string` + +### imageHeight + +> **imageHeight**: [`SizePixels`](SizePixels.md) \| `number` + +### imageWidth + +> **imageWidth**: [`SizePixels`](SizePixels.md) \| `number` + +### resizeMode? + +> `optional` **resizeMode**: [`ImageResizeMode`](ImageResizeMode.md) + +### url + +> **url**: `string` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ImageResizeMode.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ImageResizeMode.md new file mode 100644 index 00000000..2c9887f1 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/ImageResizeMode.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: ImageResizeMode + +> **ImageResizeMode** = `"none"` \| `"fit"` \| `"fill"` \| `"cover"` \| `"scale-down"` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/IntrinsicElementsType.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/IntrinsicElementsType.md new file mode 100644 index 00000000..7c1873a0 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/IntrinsicElementsType.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: IntrinsicElementsType + +> **IntrinsicElementsType** = keyof [`IntrinsicElements`](../interfaces/IntrinsicElements.md) diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/OnPressEventHandler.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/OnPressEventHandler.md new file mode 100644 index 00000000..b5fc7d75 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/OnPressEventHandler.md @@ -0,0 +1,17 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: OnPressEventHandler() + +> **OnPressEventHandler** = (`data`) => `void` \| `Promise`\<`void`\> + +## Parameters + +### data + +[`JSONObject`](../../../../../../type-aliases/JSONObject.md) + +## Returns + +`void` \| `Promise`\<`void`\> diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/OnWebViewEventHandler.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/OnWebViewEventHandler.md new file mode 100644 index 00000000..c21b2136 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/OnWebViewEventHandler.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: OnWebViewEventHandler() + +> **OnWebViewEventHandler** = \<`T`\>(`message`) => `void` \| `Promise`\<`void`\> + +## Type Parameters + +### T + +`T` *extends* [`JSONValue`](../../../../../../type-aliases/JSONValue.md) + +## Parameters + +### message + +`T` + +## Returns + +`void` \| `Promise`\<`void`\> diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/RootHeight.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/RootHeight.md new file mode 100644 index 00000000..d9056758 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/RootHeight.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: RootHeight + +> **RootHeight** = `"regular"` \| `"tall"` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/RootProps.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/RootProps.md new file mode 100644 index 00000000..ebc8b509 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/RootProps.md @@ -0,0 +1,13 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: RootProps + +> **RootProps** = [`HasElementChildren`](HasElementChildren.md) & `object` + +## Type declaration + +### height? + +> `optional` **height**: [`RootHeight`](RootHeight.md) diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/SizePercent.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/SizePercent.md new file mode 100644 index 00000000..3b2c219f --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/SizePercent.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: SizePercent + +> **SizePercent** = `` `${number}%` `` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/SizePixels.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/SizePixels.md new file mode 100644 index 00000000..91f095b3 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/SizePixels.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: SizePixels + +> **SizePixels** = `` `${number}px` `` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/SizeString.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/SizeString.md new file mode 100644 index 00000000..9917e050 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/SizeString.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: SizeString + +> **SizeString** = [`SizePixels`](SizePixels.md) \| [`SizePercent`](SizePercent.md) \| `number` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/SpacerProps.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/SpacerProps.md new file mode 100644 index 00000000..3d7e7068 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/SpacerProps.md @@ -0,0 +1,17 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: SpacerProps + +> **SpacerProps** = [`BaseProps`](BaseProps.md) & `object` + +## Type declaration + +### shape? + +> `optional` **shape**: [`SpacerShape`](SpacerShape.md) + +### size? + +> `optional` **size**: [`SpacerSize`](SpacerSize.md) diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/SpacerShape.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/SpacerShape.md new file mode 100644 index 00000000..d2b5ca1b --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/SpacerShape.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: SpacerShape + +> **SpacerShape** = `"invisible"` \| `"thin"` \| `"square"` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/SpacerSize.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/SpacerSize.md new file mode 100644 index 00000000..ac73754a --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/SpacerSize.md @@ -0,0 +1,12 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: SpacerSize + +> **SpacerSize** = `"xsmall"` \| `"small"` \| `"medium"` \| `"large"` + +xsmall = 4px; +small = 8px; +medium = 16px; +large = 32px; diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/StackProps.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/StackProps.md new file mode 100644 index 00000000..2c641150 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/StackProps.md @@ -0,0 +1,57 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: StackProps + +> **StackProps** = [`BaseProps`](BaseProps.md) & [`HasElementChildren`](HasElementChildren.md) & [`Actionable`](Actionable.md) & `object` + +## Type declaration + +### alignment? + +> `optional` **alignment**: [`Alignment`](Alignment.md) + +### backgroundColor? + +> `optional` **backgroundColor**: [`ColorString`](ColorString.md) + +### border? + +> `optional` **border**: [`ContainerBorderWidth`](ContainerBorderWidth.md) + +### borderColor? + +> `optional` **borderColor**: [`ColorString`](ColorString.md) + +### cornerRadius? + +> `optional` **cornerRadius**: [`ContainerCornerRadius`](ContainerCornerRadius.md) + +### darkBackgroundColor? + +> `optional` **darkBackgroundColor**: [`ColorString`](ColorString.md) + +### darkBorderColor? + +> `optional` **darkBorderColor**: [`ColorString`](ColorString.md) + +### gap? + +> `optional` **gap**: [`ContainerGap`](ContainerGap.md) + +### lightBackgroundColor? + +> `optional` **lightBackgroundColor**: [`ColorString`](ColorString.md) + +### lightBorderColor? + +> `optional` **lightBorderColor**: [`ColorString`](ColorString.md) + +### padding? + +> `optional` **padding**: [`ContainerPadding`](ContainerPadding.md) + +### reverse? + +> `optional` **reverse**: `boolean` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/TextOutline.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/TextOutline.md new file mode 100644 index 00000000..5042bfa2 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/TextOutline.md @@ -0,0 +1,10 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: TextOutline + +> **TextOutline** = [`Thickness`](Thickness.md) + +thin = 1px; +thick = 2px; diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/TextOverflow.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/TextOverflow.md new file mode 100644 index 00000000..82d12033 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/TextOverflow.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: TextOverflow + +> **TextOverflow** = `"clip"` \| `"ellipsis"` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/TextProps.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/TextProps.md new file mode 100644 index 00000000..c65b1ae2 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/TextProps.md @@ -0,0 +1,53 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: TextProps + +> **TextProps** = [`BaseProps`](BaseProps.md) & [`HasStringChildren`](HasStringChildren.md) & [`Actionable`](Actionable.md) & `object` + +## Type declaration + +### alignment? + +> `optional` **alignment**: [`Alignment`](Alignment.md) + +### color? + +> `optional` **color**: [`ColorString`](ColorString.md) + +### darkColor? + +> `optional` **darkColor**: [`ColorString`](ColorString.md) + +### lightColor? + +> `optional` **lightColor**: [`ColorString`](ColorString.md) + +### outline? + +> `optional` **outline**: [`TextOutline`](TextOutline.md) + +### overflow? + +> `optional` **overflow**: [`TextOverflow`](TextOverflow.md) + +### selectable? + +> `optional` **selectable**: `boolean` + +### size? + +> `optional` **size**: [`TextSize`](TextSize.md) + +### style? + +> `optional` **style**: [`TextStyle`](TextStyle.md) + +### weight? + +> `optional` **weight**: [`TextWeight`](TextWeight.md) + +### wrap? + +> `optional` **wrap**: `boolean` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/TextSize.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/TextSize.md new file mode 100644 index 00000000..26862800 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/TextSize.md @@ -0,0 +1,14 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: TextSize + +> **TextSize** = `"xsmall"` \| `"small"` \| `"medium"` \| `"large"` \| `"xlarge"` \| `"xxlarge"` + +xsmall = 10px; +small = 12px; +medium = 14px; +large = 16px; +xlarge = 18px; +xxlarge = 24px; diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/TextStyle.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/TextStyle.md new file mode 100644 index 00000000..d3842230 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/TextStyle.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: TextStyle + +> **TextStyle** = `"body"` \| `"metadata"` \| `"heading"` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/TextWeight.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/TextWeight.md new file mode 100644 index 00000000..beb0cf53 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/TextWeight.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: TextWeight + +> **TextWeight** = `"regular"` \| `"bold"` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/Thickness.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/Thickness.md new file mode 100644 index 00000000..d228d3af --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/Thickness.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: Thickness + +> **Thickness** = `"none"` \| `"thin"` \| `"thick"` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/VerticalAlignment.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/VerticalAlignment.md new file mode 100644 index 00000000..1c037859 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/VerticalAlignment.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: VerticalAlignment + +> **VerticalAlignment** = `"top"` \| `"middle"` \| `"bottom"` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/WebViewActionable.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/WebViewActionable.md new file mode 100644 index 00000000..1c3749dc --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/WebViewActionable.md @@ -0,0 +1,15 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: WebViewActionable + +> **WebViewActionable** = `object` + +## Properties + + + +### onMessage? + +> `optional` **onMessage**: [`OnWebViewEventHandler`](OnWebViewEventHandler.md) diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/WebViewProps.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/WebViewProps.md new file mode 100644 index 00000000..c1786063 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/WebViewProps.md @@ -0,0 +1,13 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../../../README.md) + +*** + +# Type Alias: WebViewProps + +> **WebViewProps** = [`BaseProps`](BaseProps.md) & [`WebViewActionable`](WebViewActionable.md) & `object` + +## Type declaration + +### url + +> **url**: `string` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/BlockComponent.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/BlockComponent.md new file mode 100644 index 00000000..d045ef08 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/BlockComponent.md @@ -0,0 +1,27 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Type Alias: BlockComponent()\ + +> **BlockComponent**\<`P`\> = (`props`, `context`) => `JSX.Element` + +## Type Parameters + +### P + +`P` = \{\} + +## Parameters + +### props + +[`BlockComponentProps`](BlockComponentProps.md)\<`P`\> + +### context + +[`Context`](Context.md) + +## Returns + +`JSX.Element` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/BlockComponentProps.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/BlockComponentProps.md new file mode 100644 index 00000000..44d15c20 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/BlockComponentProps.md @@ -0,0 +1,19 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Type Alias: BlockComponentProps\ + +> **BlockComponentProps**\<`P`\> = `P` & `object` + +## Type declaration + +### children? + +> `optional` **children**: `JSX.Children` + +## Type Parameters + +### P + +`P` = \{\} diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/Context.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/Context.md new file mode 100644 index 00000000..fea60e96 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/Context.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Type Alias: Context + +> **Context** = [`ContextAPIClients`](../../../../type-aliases/ContextAPIClients.md) & [`BaseContext`](../../../../type-aliases/BaseContext.md) + +The current app context of the event or render. diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/CustomPostComponent.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/CustomPostComponent.md new file mode 100644 index 00000000..73d28e00 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/CustomPostComponent.md @@ -0,0 +1,17 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Type Alias: CustomPostComponent() + +> **CustomPostComponent** = (`context`) => `JSX.Element` + +## Parameters + +### context + +[`Context`](Context.md) + +## Returns + +`JSX.Element` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/ElementChildren.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/ElementChildren.md new file mode 100644 index 00000000..45e9696d --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/ElementChildren.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Type Alias: ElementChildren + +> **ElementChildren** = `JSX.Element` \| `JSX.Children` \| `undefined` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/Fragment.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/Fragment.md new file mode 100644 index 00000000..fe00fa5f --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/Fragment.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Type Alias: Fragment + +> **Fragment** = `JSX.Fragment` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/StringChild.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/StringChild.md new file mode 100644 index 00000000..d59c8e23 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/StringChild.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Type Alias: StringChild + +> **StringChild** = [`Fragment`](Fragment.md) \| `string` \| `number` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/StringChildren.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/StringChildren.md new file mode 100644 index 00000000..6aacd561 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/Devvit/type-aliases/StringChildren.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Type Alias: StringChildren + +> **StringChildren** = [`StringChild`](StringChild.md) \| ([`StringChild`](StringChild.md) \| [`StringChild`](StringChild.md)[])[] \| `undefined` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/README.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/README.md new file mode 100644 index 00000000..3f6a5d27 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/README.md @@ -0,0 +1,82 @@ +[**@devvit/public-api v0.13.0-dev**](../../../README.md) + +*** + +# EventTypes + +#events.ts + +Code generated by ts-proto. DO NOT EDIT. + +## Interfaces + +- [AccountDelete](interfaces/AccountDelete.md) +- [AppInstall](interfaces/AppInstall.md) +- [AppUpgrade](interfaces/AppUpgrade.md) +- [AutomoderatorFilterComment](interfaces/AutomoderatorFilterComment.md) +- [AutomoderatorFilterPost](interfaces/AutomoderatorFilterPost.md) +- [CommentApprove](interfaces/CommentApprove.md) +- [CommentCreate](interfaces/CommentCreate.md) +- [CommentDelete](interfaces/CommentDelete.md) +- [CommentReport](interfaces/CommentReport.md) +- [CommentSubmit](interfaces/CommentSubmit.md) +- [CommentUpdate](interfaces/CommentUpdate.md) +- [PostApprove](interfaces/PostApprove.md) +- [PostCreate](interfaces/PostCreate.md) +- [PostDelete](interfaces/PostDelete.md) +- [PostFlairUpdate](interfaces/PostFlairUpdate.md) +- [PostNsfwUpdate](interfaces/PostNsfwUpdate.md) +- [PostReport](interfaces/PostReport.md) +- [PostSpoilerUpdate](interfaces/PostSpoilerUpdate.md) +- [PostSubmit](interfaces/PostSubmit.md) +- [PostUpdate](interfaces/PostUpdate.md) +- [SubredditSubscribe](interfaces/SubredditSubscribe.md) +- [Vote](interfaces/Vote.md) + +## Variables + +- [AccountDelete](variables/AccountDelete.md) +- [AppInstall](variables/AppInstall.md) +- [AppUpgrade](variables/AppUpgrade.md) +- [AutomoderatorFilterComment](variables/AutomoderatorFilterComment.md) +- [AutomoderatorFilterPost](variables/AutomoderatorFilterPost.md) +- [CommentApprove](variables/CommentApprove.md) +- [CommentCreate](variables/CommentCreate.md) +- [CommentDelete](variables/CommentDelete.md) +- [CommentReport](variables/CommentReport.md) +- [CommentSubmit](variables/CommentSubmit.md) +- [CommentUpdate](variables/CommentUpdate.md) +- [PostApprove](variables/PostApprove.md) +- [PostCreate](variables/PostCreate.md) +- [PostDelete](variables/PostDelete.md) +- [PostFlairUpdate](variables/PostFlairUpdate.md) +- [PostNsfwUpdate](variables/PostNsfwUpdate.md) +- [PostReport](variables/PostReport.md) +- [PostSpoilerUpdate](variables/PostSpoilerUpdate.md) +- [PostSubmit](variables/PostSubmit.md) +- [PostUpdate](variables/PostUpdate.md) +- [SubredditSubscribe](variables/SubredditSubscribe.md) +- [Vote](variables/Vote.md) + +## Functions + +- [deletionReasonFromJSON](functions/deletionReasonFromJSON.md) +- [deletionReasonToJSON](functions/deletionReasonToJSON.md) +- [eventSourceFromJSON](functions/eventSourceFromJSON.md) +- [eventSourceToJSON](functions/eventSourceToJSON.md) + +## References + + + +### DeletionReason + +Re-exports [DeletionReason](../../../enumerations/DeletionReason.md) + +*** + + + +### EventSource + +Re-exports [EventSource](../../../enumerations/EventSource.md) diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/functions/deletionReasonFromJSON.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/functions/deletionReasonFromJSON.md new file mode 100644 index 00000000..4f277c83 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/functions/deletionReasonFromJSON.md @@ -0,0 +1,17 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Function: deletionReasonFromJSON() + +> **deletionReasonFromJSON**(`object`): [`DeletionReason`](../../../../enumerations/DeletionReason.md) + +## Parameters + +### object + +`any` + +## Returns + +[`DeletionReason`](../../../../enumerations/DeletionReason.md) diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/functions/deletionReasonToJSON.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/functions/deletionReasonToJSON.md new file mode 100644 index 00000000..181e56e0 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/functions/deletionReasonToJSON.md @@ -0,0 +1,17 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Function: deletionReasonToJSON() + +> **deletionReasonToJSON**(`object`): `number` + +## Parameters + +### object + +[`DeletionReason`](../../../../enumerations/DeletionReason.md) + +## Returns + +`number` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/functions/eventSourceFromJSON.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/functions/eventSourceFromJSON.md new file mode 100644 index 00000000..3808a778 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/functions/eventSourceFromJSON.md @@ -0,0 +1,17 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Function: eventSourceFromJSON() + +> **eventSourceFromJSON**(`object`): [`EventSource`](../../../../enumerations/EventSource.md) + +## Parameters + +### object + +`any` + +## Returns + +[`EventSource`](../../../../enumerations/EventSource.md) diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/functions/eventSourceToJSON.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/functions/eventSourceToJSON.md new file mode 100644 index 00000000..35a546fe --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/functions/eventSourceToJSON.md @@ -0,0 +1,17 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Function: eventSourceToJSON() + +> **eventSourceToJSON**(`object`): `number` + +## Parameters + +### object + +[`EventSource`](../../../../enumerations/EventSource.md) + +## Returns + +`number` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/AccountDelete.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/AccountDelete.md new file mode 100644 index 00000000..6c424f37 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/AccountDelete.md @@ -0,0 +1,29 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: AccountDelete + +## Properties + + + +### deletedAt? + +> `optional` **deletedAt**: `Date` + +*** + + + +### user? + +> `optional` **user**: `UserV2` + +*** + + + +### userId + +> **userId**: `string` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/AppInstall.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/AppInstall.md new file mode 100644 index 00000000..1131edda --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/AppInstall.md @@ -0,0 +1,21 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: AppInstall + +## Properties + + + +### installer? + +> `optional` **installer**: `UserV2` + +*** + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/AppUpgrade.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/AppUpgrade.md new file mode 100644 index 00000000..7d8080b2 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/AppUpgrade.md @@ -0,0 +1,21 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: AppUpgrade + +## Properties + + + +### installer? + +> `optional` **installer**: `UserV2` + +*** + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/AutomoderatorFilterComment.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/AutomoderatorFilterComment.md new file mode 100644 index 00000000..10d39b67 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/AutomoderatorFilterComment.md @@ -0,0 +1,45 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: AutomoderatorFilterComment + +## Properties + + + +### author + +> **author**: `string` + +*** + + + +### comment? + +> `optional` **comment**: `CommentV2` + +*** + + + +### reason + +> **reason**: `string` + +*** + + + +### removedAt? + +> `optional` **removedAt**: `Date` + +*** + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/AutomoderatorFilterPost.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/AutomoderatorFilterPost.md new file mode 100644 index 00000000..68d4b467 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/AutomoderatorFilterPost.md @@ -0,0 +1,45 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: AutomoderatorFilterPost + +## Properties + + + +### author + +> **author**: `string` + +*** + + + +### post? + +> `optional` **post**: `PostV2` + +*** + + + +### reason + +> **reason**: `string` + +*** + + + +### removedAt? + +> `optional` **removedAt**: `Date` + +*** + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/CommentApprove.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/CommentApprove.md new file mode 100644 index 00000000..2ed18565 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/CommentApprove.md @@ -0,0 +1,53 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: CommentApprove + +## Properties + + + +### approvedAt? + +> `optional` **approvedAt**: `Date` + +*** + + + +### author? + +> `optional` **author**: `UserV2` + +*** + + + +### comment? + +> `optional` **comment**: `CommentV2` + +*** + + + +### post? + +> `optional` **post**: `PostV2` + +*** + + + +### source + +> **source**: [`EventSource`](../../../../enumerations/EventSource.md) + +*** + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/CommentCreate.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/CommentCreate.md new file mode 100644 index 00000000..0d3cdacd --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/CommentCreate.md @@ -0,0 +1,37 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: CommentCreate + +## Properties + + + +### author? + +> `optional` **author**: `UserV2` + +*** + + + +### comment? + +> `optional` **comment**: `CommentV2` + +*** + + + +### post? + +> `optional` **post**: `PostV2` + +*** + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/CommentDelete.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/CommentDelete.md new file mode 100644 index 00000000..d3f278d1 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/CommentDelete.md @@ -0,0 +1,77 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: CommentDelete + +## Properties + + + +### author? + +> `optional` **author**: `UserV2` + +*** + + + +### commentId + +> **commentId**: `string` + +*** + + + +### createdAt? + +> `optional` **createdAt**: `Date` + +*** + + + +### deletedAt? + +> `optional` **deletedAt**: `Date` + +*** + + + +### parentId + +> **parentId**: `string` + +*** + + + +### postId + +> **postId**: `string` + +*** + + + +### reason + +> **reason**: [`DeletionReason`](../../../../enumerations/DeletionReason.md) + +*** + + + +### source + +> **source**: [`EventSource`](../../../../enumerations/EventSource.md) + +*** + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/CommentReport.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/CommentReport.md new file mode 100644 index 00000000..a25ad23d --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/CommentReport.md @@ -0,0 +1,29 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: CommentReport + +## Properties + + + +### comment? + +> `optional` **comment**: `CommentV2` + +*** + + + +### reason + +> **reason**: `string` + +*** + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/CommentSubmit.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/CommentSubmit.md new file mode 100644 index 00000000..faaab9bc --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/CommentSubmit.md @@ -0,0 +1,37 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: CommentSubmit + +## Properties + + + +### author? + +> `optional` **author**: `UserV2` + +*** + + + +### comment? + +> `optional` **comment**: `CommentV2` + +*** + + + +### post? + +> `optional` **post**: `PostV2` + +*** + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/CommentUpdate.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/CommentUpdate.md new file mode 100644 index 00000000..d640a0c4 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/CommentUpdate.md @@ -0,0 +1,45 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: CommentUpdate + +## Properties + + + +### author? + +> `optional` **author**: `UserV2` + +*** + + + +### comment? + +> `optional` **comment**: `CommentV2` + +*** + + + +### post? + +> `optional` **post**: `PostV2` + +*** + + + +### previousBody + +> **previousBody**: `string` + +*** + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostApprove.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostApprove.md new file mode 100644 index 00000000..8b156879 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostApprove.md @@ -0,0 +1,45 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: PostApprove + +## Properties + + + +### approvedAt? + +> `optional` **approvedAt**: `Date` + +*** + + + +### author? + +> `optional` **author**: `UserV2` + +*** + + + +### post? + +> `optional` **post**: `PostV2` + +*** + + + +### source + +> **source**: [`EventSource`](../../../../enumerations/EventSource.md) + +*** + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostCreate.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostCreate.md new file mode 100644 index 00000000..9097a9d1 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostCreate.md @@ -0,0 +1,29 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: PostCreate + +## Properties + + + +### author? + +> `optional` **author**: `UserV2` + +*** + + + +### post? + +> `optional` **post**: `PostV2` + +*** + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostDelete.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostDelete.md new file mode 100644 index 00000000..b38ba495 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostDelete.md @@ -0,0 +1,61 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: PostDelete + +## Properties + + + +### author? + +> `optional` **author**: `UserV2` + +*** + + + +### createdAt? + +> `optional` **createdAt**: `Date` + +*** + + + +### deletedAt? + +> `optional` **deletedAt**: `Date` + +*** + + + +### postId + +> **postId**: `string` + +*** + + + +### reason + +> **reason**: [`DeletionReason`](../../../../enumerations/DeletionReason.md) + +*** + + + +### source + +> **source**: [`EventSource`](../../../../enumerations/EventSource.md) + +*** + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostFlairUpdate.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostFlairUpdate.md new file mode 100644 index 00000000..1fc3c71e --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostFlairUpdate.md @@ -0,0 +1,29 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: PostFlairUpdate + +## Properties + + + +### author? + +> `optional` **author**: `UserV2` + +*** + + + +### post? + +> `optional` **post**: `PostV2` + +*** + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostNsfwUpdate.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostNsfwUpdate.md new file mode 100644 index 00000000..80870825 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostNsfwUpdate.md @@ -0,0 +1,37 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: PostNsfwUpdate + +## Properties + + + +### author? + +> `optional` **author**: `UserV2` + +*** + + + +### isNsfw + +> **isNsfw**: `boolean` + +*** + + + +### post? + +> `optional` **post**: `PostV2` + +*** + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostReport.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostReport.md new file mode 100644 index 00000000..8d0f174d --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostReport.md @@ -0,0 +1,29 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: PostReport + +## Properties + + + +### post? + +> `optional` **post**: `PostV2` + +*** + + + +### reason + +> **reason**: `string` + +*** + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostSpoilerUpdate.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostSpoilerUpdate.md new file mode 100644 index 00000000..7f1ff1fa --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostSpoilerUpdate.md @@ -0,0 +1,37 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: PostSpoilerUpdate + +## Properties + + + +### author? + +> `optional` **author**: `UserV2` + +*** + + + +### isSpoiler + +> **isSpoiler**: `boolean` + +*** + + + +### post? + +> `optional` **post**: `PostV2` + +*** + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostSubmit.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostSubmit.md new file mode 100644 index 00000000..730f87da --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostSubmit.md @@ -0,0 +1,29 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: PostSubmit + +## Properties + + + +### author? + +> `optional` **author**: `UserV2` + +*** + + + +### post? + +> `optional` **post**: `PostV2` + +*** + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostUpdate.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostUpdate.md new file mode 100644 index 00000000..f69e1143 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/PostUpdate.md @@ -0,0 +1,37 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: PostUpdate + +## Properties + + + +### author? + +> `optional` **author**: `UserV2` + +*** + + + +### post? + +> `optional` **post**: `PostV2` + +*** + + + +### previousBody + +> **previousBody**: `string` + +*** + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/SubredditSubscribe.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/SubredditSubscribe.md new file mode 100644 index 00000000..eed5eb1c --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/SubredditSubscribe.md @@ -0,0 +1,21 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: SubredditSubscribe + +## Properties + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` + +*** + + + +### subscriber? + +> `optional` **subscriber**: `UserV2` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/Vote.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/Vote.md new file mode 100644 index 00000000..75133489 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/interfaces/Vote.md @@ -0,0 +1,53 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Interface: Vote + +## Properties + + + +### comment? + +> `optional` **comment**: `CommentV2` + +*** + + + +### post? + +> `optional` **post**: `PostV2` + +*** + + + +### score + +> **score**: `number` + +*** + + + +### subreddit? + +> `optional` **subreddit**: `SubredditV2` + +*** + + + +### updatedAt? + +> `optional` **updatedAt**: `Date` + +*** + + + +### upvoteRatio + +> **upvoteRatio**: `number` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/AccountDelete.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/AccountDelete.md new file mode 100644 index 00000000..4c17b646 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/AccountDelete.md @@ -0,0 +1,287 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: AccountDelete + +> **AccountDelete**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.AccountDelete"` + + + +### create() + +#### Parameters + +##### base? + +###### deletedAt? + +`Date` + +###### user? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### user.banned? + +`boolean` + +###### user.description? + +`string` + +###### user.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### user.flair.backgroundColor? + +`string` + +###### user.flair.cssClass? + +`string` + +###### user.flair.enabled? + +`boolean` + +###### user.flair.subredditId? + +`string` + +###### user.flair.templateId? + +`string` + +###### user.flair.text? + +`string` + +###### user.flair.textColor? + +`string` + +###### user.flair.userId? + +`string` + +###### user.iconImage? + +`string` + +###### user.id? + +`string` + +###### user.isGold? + +`boolean` + +###### user.karma? + +`number` + +###### user.name? + +`string` + +###### user.snoovatarImage? + +`string` + +###### user.spam? + +`boolean` + +###### user.suspended? + +`boolean` + +###### user.url? + +`string` + +###### userId? + +`string` + +#### Returns + +[`AccountDelete`](../interfaces/AccountDelete.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`AccountDelete`](../interfaces/AccountDelete.md) + + + +### encode() + +#### Parameters + +##### message + +[`AccountDelete`](../interfaces/AccountDelete.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`AccountDelete`](../interfaces/AccountDelete.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### deletedAt? + +`Date` + +###### user? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### user.banned? + +`boolean` + +###### user.description? + +`string` + +###### user.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### user.flair.backgroundColor? + +`string` + +###### user.flair.cssClass? + +`string` + +###### user.flair.enabled? + +`boolean` + +###### user.flair.subredditId? + +`string` + +###### user.flair.templateId? + +`string` + +###### user.flair.text? + +`string` + +###### user.flair.textColor? + +`string` + +###### user.flair.userId? + +`string` + +###### user.iconImage? + +`string` + +###### user.id? + +`string` + +###### user.isGold? + +`boolean` + +###### user.karma? + +`number` + +###### user.name? + +`string` + +###### user.snoovatarImage? + +`string` + +###### user.spam? + +`boolean` + +###### user.suspended? + +`boolean` + +###### user.url? + +`string` + +###### userId? + +`string` + +#### Returns + +[`AccountDelete`](../interfaces/AccountDelete.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`AccountDelete`](../interfaces/AccountDelete.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/AppInstall.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/AppInstall.md new file mode 100644 index 00000000..cce0475f --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/AppInstall.md @@ -0,0 +1,375 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: AppInstall + +> **AppInstall**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.AppInstall"` + + + +### create() + +#### Parameters + +##### base? + +###### installer? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### installer.banned? + +`boolean` + +###### installer.description? + +`string` + +###### installer.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### installer.flair.backgroundColor? + +`string` + +###### installer.flair.cssClass? + +`string` + +###### installer.flair.enabled? + +`boolean` + +###### installer.flair.subredditId? + +`string` + +###### installer.flair.templateId? + +`string` + +###### installer.flair.text? + +`string` + +###### installer.flair.textColor? + +`string` + +###### installer.flair.userId? + +`string` + +###### installer.iconImage? + +`string` + +###### installer.id? + +`string` + +###### installer.isGold? + +`boolean` + +###### installer.karma? + +`number` + +###### installer.name? + +`string` + +###### installer.snoovatarImage? + +`string` + +###### installer.spam? + +`boolean` + +###### installer.suspended? + +`boolean` + +###### installer.url? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`AppInstall`](../interfaces/AppInstall.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`AppInstall`](../interfaces/AppInstall.md) + + + +### encode() + +#### Parameters + +##### message + +[`AppInstall`](../interfaces/AppInstall.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`AppInstall`](../interfaces/AppInstall.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### installer? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### installer.banned? + +`boolean` + +###### installer.description? + +`string` + +###### installer.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### installer.flair.backgroundColor? + +`string` + +###### installer.flair.cssClass? + +`string` + +###### installer.flair.enabled? + +`boolean` + +###### installer.flair.subredditId? + +`string` + +###### installer.flair.templateId? + +`string` + +###### installer.flair.text? + +`string` + +###### installer.flair.textColor? + +`string` + +###### installer.flair.userId? + +`string` + +###### installer.iconImage? + +`string` + +###### installer.id? + +`string` + +###### installer.isGold? + +`boolean` + +###### installer.karma? + +`number` + +###### installer.name? + +`string` + +###### installer.snoovatarImage? + +`string` + +###### installer.spam? + +`boolean` + +###### installer.suspended? + +`boolean` + +###### installer.url? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`AppInstall`](../interfaces/AppInstall.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`AppInstall`](../interfaces/AppInstall.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/AppUpgrade.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/AppUpgrade.md new file mode 100644 index 00000000..b39619bc --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/AppUpgrade.md @@ -0,0 +1,375 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: AppUpgrade + +> **AppUpgrade**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.AppUpgrade"` + + + +### create() + +#### Parameters + +##### base? + +###### installer? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### installer.banned? + +`boolean` + +###### installer.description? + +`string` + +###### installer.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### installer.flair.backgroundColor? + +`string` + +###### installer.flair.cssClass? + +`string` + +###### installer.flair.enabled? + +`boolean` + +###### installer.flair.subredditId? + +`string` + +###### installer.flair.templateId? + +`string` + +###### installer.flair.text? + +`string` + +###### installer.flair.textColor? + +`string` + +###### installer.flair.userId? + +`string` + +###### installer.iconImage? + +`string` + +###### installer.id? + +`string` + +###### installer.isGold? + +`boolean` + +###### installer.karma? + +`number` + +###### installer.name? + +`string` + +###### installer.snoovatarImage? + +`string` + +###### installer.spam? + +`boolean` + +###### installer.suspended? + +`boolean` + +###### installer.url? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`AppUpgrade`](../interfaces/AppUpgrade.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`AppUpgrade`](../interfaces/AppUpgrade.md) + + + +### encode() + +#### Parameters + +##### message + +[`AppUpgrade`](../interfaces/AppUpgrade.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`AppUpgrade`](../interfaces/AppUpgrade.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### installer? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### installer.banned? + +`boolean` + +###### installer.description? + +`string` + +###### installer.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### installer.flair.backgroundColor? + +`string` + +###### installer.flair.cssClass? + +`string` + +###### installer.flair.enabled? + +`boolean` + +###### installer.flair.subredditId? + +`string` + +###### installer.flair.templateId? + +`string` + +###### installer.flair.text? + +`string` + +###### installer.flair.textColor? + +`string` + +###### installer.flair.userId? + +`string` + +###### installer.iconImage? + +`string` + +###### installer.id? + +`string` + +###### installer.isGold? + +`boolean` + +###### installer.karma? + +`number` + +###### installer.name? + +`string` + +###### installer.snoovatarImage? + +`string` + +###### installer.spam? + +`boolean` + +###### installer.suspended? + +`boolean` + +###### installer.url? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`AppUpgrade`](../interfaces/AppUpgrade.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`AppUpgrade`](../interfaces/AppUpgrade.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/AutomoderatorFilterComment.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/AutomoderatorFilterComment.md new file mode 100644 index 00000000..fa1cd56e --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/AutomoderatorFilterComment.md @@ -0,0 +1,407 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: AutomoderatorFilterComment + +> **AutomoderatorFilterComment**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.AutomoderatorFilterComment"` + + + +### create() + +#### Parameters + +##### base? + +###### author? + +`string` + +###### comment? + +\{ `author`: `string`; `body`: `string`; `collapsedBecauseCrowdControl`: `boolean`; `createdAt`: `number`; `deleted`: `boolean`; `downvotes`: `number`; `elementTypes`: `string`[]; `gilded`: `boolean`; `hasMedia`: `boolean`; `id`: `string`; `languageCode`: `string`; `lastModifiedAt`: `number`; `mediaUrls`: `string`[]; `numReports`: `number`; `parentId`: `string`; `permalink`: `string`; `postId`: `string`; `score`: `number`; `spam`: `boolean`; `subredditId`: `string`; `upvotes`: `number`; \} + +###### comment.author? + +`string` + +###### comment.body? + +`string` + +###### comment.collapsedBecauseCrowdControl? + +`boolean` + +###### comment.createdAt? + +`number` + +###### comment.deleted? + +`boolean` + +###### comment.downvotes? + +`number` + +###### comment.elementTypes? + +`string`[] + +###### comment.gilded? + +`boolean` + +###### comment.hasMedia? + +`boolean` + +###### comment.id? + +`string` + +###### comment.languageCode? + +`string` + +###### comment.lastModifiedAt? + +`number` + +###### comment.mediaUrls? + +`string`[] + +###### comment.numReports? + +`number` + +###### comment.parentId? + +`string` + +###### comment.permalink? + +`string` + +###### comment.postId? + +`string` + +###### comment.score? + +`number` + +###### comment.spam? + +`boolean` + +###### comment.subredditId? + +`string` + +###### comment.upvotes? + +`number` + +###### reason? + +`string` + +###### removedAt? + +`Date` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`AutomoderatorFilterComment`](../interfaces/AutomoderatorFilterComment.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`AutomoderatorFilterComment`](../interfaces/AutomoderatorFilterComment.md) + + + +### encode() + +#### Parameters + +##### message + +[`AutomoderatorFilterComment`](../interfaces/AutomoderatorFilterComment.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`AutomoderatorFilterComment`](../interfaces/AutomoderatorFilterComment.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### author? + +`string` + +###### comment? + +\{ `author`: `string`; `body`: `string`; `collapsedBecauseCrowdControl`: `boolean`; `createdAt`: `number`; `deleted`: `boolean`; `downvotes`: `number`; `elementTypes`: `string`[]; `gilded`: `boolean`; `hasMedia`: `boolean`; `id`: `string`; `languageCode`: `string`; `lastModifiedAt`: `number`; `mediaUrls`: `string`[]; `numReports`: `number`; `parentId`: `string`; `permalink`: `string`; `postId`: `string`; `score`: `number`; `spam`: `boolean`; `subredditId`: `string`; `upvotes`: `number`; \} + +###### comment.author? + +`string` + +###### comment.body? + +`string` + +###### comment.collapsedBecauseCrowdControl? + +`boolean` + +###### comment.createdAt? + +`number` + +###### comment.deleted? + +`boolean` + +###### comment.downvotes? + +`number` + +###### comment.elementTypes? + +`string`[] + +###### comment.gilded? + +`boolean` + +###### comment.hasMedia? + +`boolean` + +###### comment.id? + +`string` + +###### comment.languageCode? + +`string` + +###### comment.lastModifiedAt? + +`number` + +###### comment.mediaUrls? + +`string`[] + +###### comment.numReports? + +`number` + +###### comment.parentId? + +`string` + +###### comment.permalink? + +`string` + +###### comment.postId? + +`string` + +###### comment.score? + +`number` + +###### comment.spam? + +`boolean` + +###### comment.subredditId? + +`string` + +###### comment.upvotes? + +`number` + +###### reason? + +`string` + +###### removedAt? + +`Date` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`AutomoderatorFilterComment`](../interfaces/AutomoderatorFilterComment.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`AutomoderatorFilterComment`](../interfaces/AutomoderatorFilterComment.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/AutomoderatorFilterPost.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/AutomoderatorFilterPost.md new file mode 100644 index 00000000..5b2995da --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/AutomoderatorFilterPost.md @@ -0,0 +1,927 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: AutomoderatorFilterPost + +> **AutomoderatorFilterPost**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.AutomoderatorFilterPost"` + + + +### create() + +#### Parameters + +##### base? + +###### author? + +`string` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### reason? + +`string` + +###### removedAt? + +`Date` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`AutomoderatorFilterPost`](../interfaces/AutomoderatorFilterPost.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`AutomoderatorFilterPost`](../interfaces/AutomoderatorFilterPost.md) + + + +### encode() + +#### Parameters + +##### message + +[`AutomoderatorFilterPost`](../interfaces/AutomoderatorFilterPost.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`AutomoderatorFilterPost`](../interfaces/AutomoderatorFilterPost.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### author? + +`string` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### reason? + +`string` + +###### removedAt? + +`Date` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`AutomoderatorFilterPost`](../interfaces/AutomoderatorFilterPost.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`AutomoderatorFilterPost`](../interfaces/AutomoderatorFilterPost.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/CommentApprove.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/CommentApprove.md new file mode 100644 index 00000000..6f1e839d --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/CommentApprove.md @@ -0,0 +1,1263 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: CommentApprove + +> **CommentApprove**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.CommentApprove"` + + + +### create() + +#### Parameters + +##### base? + +###### approvedAt? + +`Date` + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### comment? + +\{ `author`: `string`; `body`: `string`; `collapsedBecauseCrowdControl`: `boolean`; `createdAt`: `number`; `deleted`: `boolean`; `downvotes`: `number`; `elementTypes`: `string`[]; `gilded`: `boolean`; `hasMedia`: `boolean`; `id`: `string`; `languageCode`: `string`; `lastModifiedAt`: `number`; `mediaUrls`: `string`[]; `numReports`: `number`; `parentId`: `string`; `permalink`: `string`; `postId`: `string`; `score`: `number`; `spam`: `boolean`; `subredditId`: `string`; `upvotes`: `number`; \} + +###### comment.author? + +`string` + +###### comment.body? + +`string` + +###### comment.collapsedBecauseCrowdControl? + +`boolean` + +###### comment.createdAt? + +`number` + +###### comment.deleted? + +`boolean` + +###### comment.downvotes? + +`number` + +###### comment.elementTypes? + +`string`[] + +###### comment.gilded? + +`boolean` + +###### comment.hasMedia? + +`boolean` + +###### comment.id? + +`string` + +###### comment.languageCode? + +`string` + +###### comment.lastModifiedAt? + +`number` + +###### comment.mediaUrls? + +`string`[] + +###### comment.numReports? + +`number` + +###### comment.parentId? + +`string` + +###### comment.permalink? + +`string` + +###### comment.postId? + +`string` + +###### comment.score? + +`number` + +###### comment.spam? + +`boolean` + +###### comment.subredditId? + +`string` + +###### comment.upvotes? + +`number` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### source? + +[`EventSource`](../../../../enumerations/EventSource.md) + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`CommentApprove`](../interfaces/CommentApprove.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`CommentApprove`](../interfaces/CommentApprove.md) + + + +### encode() + +#### Parameters + +##### message + +[`CommentApprove`](../interfaces/CommentApprove.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`CommentApprove`](../interfaces/CommentApprove.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### approvedAt? + +`Date` + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### comment? + +\{ `author`: `string`; `body`: `string`; `collapsedBecauseCrowdControl`: `boolean`; `createdAt`: `number`; `deleted`: `boolean`; `downvotes`: `number`; `elementTypes`: `string`[]; `gilded`: `boolean`; `hasMedia`: `boolean`; `id`: `string`; `languageCode`: `string`; `lastModifiedAt`: `number`; `mediaUrls`: `string`[]; `numReports`: `number`; `parentId`: `string`; `permalink`: `string`; `postId`: `string`; `score`: `number`; `spam`: `boolean`; `subredditId`: `string`; `upvotes`: `number`; \} + +###### comment.author? + +`string` + +###### comment.body? + +`string` + +###### comment.collapsedBecauseCrowdControl? + +`boolean` + +###### comment.createdAt? + +`number` + +###### comment.deleted? + +`boolean` + +###### comment.downvotes? + +`number` + +###### comment.elementTypes? + +`string`[] + +###### comment.gilded? + +`boolean` + +###### comment.hasMedia? + +`boolean` + +###### comment.id? + +`string` + +###### comment.languageCode? + +`string` + +###### comment.lastModifiedAt? + +`number` + +###### comment.mediaUrls? + +`string`[] + +###### comment.numReports? + +`number` + +###### comment.parentId? + +`string` + +###### comment.permalink? + +`string` + +###### comment.postId? + +`string` + +###### comment.score? + +`number` + +###### comment.spam? + +`boolean` + +###### comment.subredditId? + +`string` + +###### comment.upvotes? + +`number` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### source? + +[`EventSource`](../../../../enumerations/EventSource.md) + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`CommentApprove`](../interfaces/CommentApprove.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`CommentApprove`](../interfaces/CommentApprove.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/CommentCreate.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/CommentCreate.md new file mode 100644 index 00000000..df8b318e --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/CommentCreate.md @@ -0,0 +1,1247 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: CommentCreate + +> **CommentCreate**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.CommentCreate"` + + + +### create() + +#### Parameters + +##### base? + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### comment? + +\{ `author`: `string`; `body`: `string`; `collapsedBecauseCrowdControl`: `boolean`; `createdAt`: `number`; `deleted`: `boolean`; `downvotes`: `number`; `elementTypes`: `string`[]; `gilded`: `boolean`; `hasMedia`: `boolean`; `id`: `string`; `languageCode`: `string`; `lastModifiedAt`: `number`; `mediaUrls`: `string`[]; `numReports`: `number`; `parentId`: `string`; `permalink`: `string`; `postId`: `string`; `score`: `number`; `spam`: `boolean`; `subredditId`: `string`; `upvotes`: `number`; \} + +###### comment.author? + +`string` + +###### comment.body? + +`string` + +###### comment.collapsedBecauseCrowdControl? + +`boolean` + +###### comment.createdAt? + +`number` + +###### comment.deleted? + +`boolean` + +###### comment.downvotes? + +`number` + +###### comment.elementTypes? + +`string`[] + +###### comment.gilded? + +`boolean` + +###### comment.hasMedia? + +`boolean` + +###### comment.id? + +`string` + +###### comment.languageCode? + +`string` + +###### comment.lastModifiedAt? + +`number` + +###### comment.mediaUrls? + +`string`[] + +###### comment.numReports? + +`number` + +###### comment.parentId? + +`string` + +###### comment.permalink? + +`string` + +###### comment.postId? + +`string` + +###### comment.score? + +`number` + +###### comment.spam? + +`boolean` + +###### comment.subredditId? + +`string` + +###### comment.upvotes? + +`number` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`CommentCreate`](../interfaces/CommentCreate.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`CommentCreate`](../interfaces/CommentCreate.md) + + + +### encode() + +#### Parameters + +##### message + +[`CommentCreate`](../interfaces/CommentCreate.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`CommentCreate`](../interfaces/CommentCreate.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### comment? + +\{ `author`: `string`; `body`: `string`; `collapsedBecauseCrowdControl`: `boolean`; `createdAt`: `number`; `deleted`: `boolean`; `downvotes`: `number`; `elementTypes`: `string`[]; `gilded`: `boolean`; `hasMedia`: `boolean`; `id`: `string`; `languageCode`: `string`; `lastModifiedAt`: `number`; `mediaUrls`: `string`[]; `numReports`: `number`; `parentId`: `string`; `permalink`: `string`; `postId`: `string`; `score`: `number`; `spam`: `boolean`; `subredditId`: `string`; `upvotes`: `number`; \} + +###### comment.author? + +`string` + +###### comment.body? + +`string` + +###### comment.collapsedBecauseCrowdControl? + +`boolean` + +###### comment.createdAt? + +`number` + +###### comment.deleted? + +`boolean` + +###### comment.downvotes? + +`number` + +###### comment.elementTypes? + +`string`[] + +###### comment.gilded? + +`boolean` + +###### comment.hasMedia? + +`boolean` + +###### comment.id? + +`string` + +###### comment.languageCode? + +`string` + +###### comment.lastModifiedAt? + +`number` + +###### comment.mediaUrls? + +`string`[] + +###### comment.numReports? + +`number` + +###### comment.parentId? + +`string` + +###### comment.permalink? + +`string` + +###### comment.postId? + +`string` + +###### comment.score? + +`number` + +###### comment.spam? + +`boolean` + +###### comment.subredditId? + +`string` + +###### comment.upvotes? + +`number` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`CommentCreate`](../interfaces/CommentCreate.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`CommentCreate`](../interfaces/CommentCreate.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/CommentDelete.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/CommentDelete.md new file mode 100644 index 00000000..225fcd80 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/CommentDelete.md @@ -0,0 +1,431 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: CommentDelete + +> **CommentDelete**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.CommentDelete"` + + + +### create() + +#### Parameters + +##### base? + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### commentId? + +`string` + +###### createdAt? + +`Date` + +###### deletedAt? + +`Date` + +###### parentId? + +`string` + +###### postId? + +`string` + +###### reason? + +[`DeletionReason`](../../../../enumerations/DeletionReason.md) + +###### source? + +[`EventSource`](../../../../enumerations/EventSource.md) + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`CommentDelete`](../interfaces/CommentDelete.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`CommentDelete`](../interfaces/CommentDelete.md) + + + +### encode() + +#### Parameters + +##### message + +[`CommentDelete`](../interfaces/CommentDelete.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`CommentDelete`](../interfaces/CommentDelete.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### commentId? + +`string` + +###### createdAt? + +`Date` + +###### deletedAt? + +`Date` + +###### parentId? + +`string` + +###### postId? + +`string` + +###### reason? + +[`DeletionReason`](../../../../enumerations/DeletionReason.md) + +###### source? + +[`EventSource`](../../../../enumerations/EventSource.md) + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`CommentDelete`](../interfaces/CommentDelete.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`CommentDelete`](../interfaces/CommentDelete.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/CommentReport.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/CommentReport.md new file mode 100644 index 00000000..e9d74f2b --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/CommentReport.md @@ -0,0 +1,391 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: CommentReport + +> **CommentReport**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.CommentReport"` + + + +### create() + +#### Parameters + +##### base? + +###### comment? + +\{ `author`: `string`; `body`: `string`; `collapsedBecauseCrowdControl`: `boolean`; `createdAt`: `number`; `deleted`: `boolean`; `downvotes`: `number`; `elementTypes`: `string`[]; `gilded`: `boolean`; `hasMedia`: `boolean`; `id`: `string`; `languageCode`: `string`; `lastModifiedAt`: `number`; `mediaUrls`: `string`[]; `numReports`: `number`; `parentId`: `string`; `permalink`: `string`; `postId`: `string`; `score`: `number`; `spam`: `boolean`; `subredditId`: `string`; `upvotes`: `number`; \} + +###### comment.author? + +`string` + +###### comment.body? + +`string` + +###### comment.collapsedBecauseCrowdControl? + +`boolean` + +###### comment.createdAt? + +`number` + +###### comment.deleted? + +`boolean` + +###### comment.downvotes? + +`number` + +###### comment.elementTypes? + +`string`[] + +###### comment.gilded? + +`boolean` + +###### comment.hasMedia? + +`boolean` + +###### comment.id? + +`string` + +###### comment.languageCode? + +`string` + +###### comment.lastModifiedAt? + +`number` + +###### comment.mediaUrls? + +`string`[] + +###### comment.numReports? + +`number` + +###### comment.parentId? + +`string` + +###### comment.permalink? + +`string` + +###### comment.postId? + +`string` + +###### comment.score? + +`number` + +###### comment.spam? + +`boolean` + +###### comment.subredditId? + +`string` + +###### comment.upvotes? + +`number` + +###### reason? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`CommentReport`](../interfaces/CommentReport.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`CommentReport`](../interfaces/CommentReport.md) + + + +### encode() + +#### Parameters + +##### message + +[`CommentReport`](../interfaces/CommentReport.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`CommentReport`](../interfaces/CommentReport.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### comment? + +\{ `author`: `string`; `body`: `string`; `collapsedBecauseCrowdControl`: `boolean`; `createdAt`: `number`; `deleted`: `boolean`; `downvotes`: `number`; `elementTypes`: `string`[]; `gilded`: `boolean`; `hasMedia`: `boolean`; `id`: `string`; `languageCode`: `string`; `lastModifiedAt`: `number`; `mediaUrls`: `string`[]; `numReports`: `number`; `parentId`: `string`; `permalink`: `string`; `postId`: `string`; `score`: `number`; `spam`: `boolean`; `subredditId`: `string`; `upvotes`: `number`; \} + +###### comment.author? + +`string` + +###### comment.body? + +`string` + +###### comment.collapsedBecauseCrowdControl? + +`boolean` + +###### comment.createdAt? + +`number` + +###### comment.deleted? + +`boolean` + +###### comment.downvotes? + +`number` + +###### comment.elementTypes? + +`string`[] + +###### comment.gilded? + +`boolean` + +###### comment.hasMedia? + +`boolean` + +###### comment.id? + +`string` + +###### comment.languageCode? + +`string` + +###### comment.lastModifiedAt? + +`number` + +###### comment.mediaUrls? + +`string`[] + +###### comment.numReports? + +`number` + +###### comment.parentId? + +`string` + +###### comment.permalink? + +`string` + +###### comment.postId? + +`string` + +###### comment.score? + +`number` + +###### comment.spam? + +`boolean` + +###### comment.subredditId? + +`string` + +###### comment.upvotes? + +`number` + +###### reason? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`CommentReport`](../interfaces/CommentReport.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`CommentReport`](../interfaces/CommentReport.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/CommentSubmit.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/CommentSubmit.md new file mode 100644 index 00000000..ceece224 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/CommentSubmit.md @@ -0,0 +1,1247 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: CommentSubmit + +> **CommentSubmit**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.CommentSubmit"` + + + +### create() + +#### Parameters + +##### base? + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### comment? + +\{ `author`: `string`; `body`: `string`; `collapsedBecauseCrowdControl`: `boolean`; `createdAt`: `number`; `deleted`: `boolean`; `downvotes`: `number`; `elementTypes`: `string`[]; `gilded`: `boolean`; `hasMedia`: `boolean`; `id`: `string`; `languageCode`: `string`; `lastModifiedAt`: `number`; `mediaUrls`: `string`[]; `numReports`: `number`; `parentId`: `string`; `permalink`: `string`; `postId`: `string`; `score`: `number`; `spam`: `boolean`; `subredditId`: `string`; `upvotes`: `number`; \} + +###### comment.author? + +`string` + +###### comment.body? + +`string` + +###### comment.collapsedBecauseCrowdControl? + +`boolean` + +###### comment.createdAt? + +`number` + +###### comment.deleted? + +`boolean` + +###### comment.downvotes? + +`number` + +###### comment.elementTypes? + +`string`[] + +###### comment.gilded? + +`boolean` + +###### comment.hasMedia? + +`boolean` + +###### comment.id? + +`string` + +###### comment.languageCode? + +`string` + +###### comment.lastModifiedAt? + +`number` + +###### comment.mediaUrls? + +`string`[] + +###### comment.numReports? + +`number` + +###### comment.parentId? + +`string` + +###### comment.permalink? + +`string` + +###### comment.postId? + +`string` + +###### comment.score? + +`number` + +###### comment.spam? + +`boolean` + +###### comment.subredditId? + +`string` + +###### comment.upvotes? + +`number` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`CommentSubmit`](../interfaces/CommentSubmit.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`CommentSubmit`](../interfaces/CommentSubmit.md) + + + +### encode() + +#### Parameters + +##### message + +[`CommentSubmit`](../interfaces/CommentSubmit.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`CommentSubmit`](../interfaces/CommentSubmit.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### comment? + +\{ `author`: `string`; `body`: `string`; `collapsedBecauseCrowdControl`: `boolean`; `createdAt`: `number`; `deleted`: `boolean`; `downvotes`: `number`; `elementTypes`: `string`[]; `gilded`: `boolean`; `hasMedia`: `boolean`; `id`: `string`; `languageCode`: `string`; `lastModifiedAt`: `number`; `mediaUrls`: `string`[]; `numReports`: `number`; `parentId`: `string`; `permalink`: `string`; `postId`: `string`; `score`: `number`; `spam`: `boolean`; `subredditId`: `string`; `upvotes`: `number`; \} + +###### comment.author? + +`string` + +###### comment.body? + +`string` + +###### comment.collapsedBecauseCrowdControl? + +`boolean` + +###### comment.createdAt? + +`number` + +###### comment.deleted? + +`boolean` + +###### comment.downvotes? + +`number` + +###### comment.elementTypes? + +`string`[] + +###### comment.gilded? + +`boolean` + +###### comment.hasMedia? + +`boolean` + +###### comment.id? + +`string` + +###### comment.languageCode? + +`string` + +###### comment.lastModifiedAt? + +`number` + +###### comment.mediaUrls? + +`string`[] + +###### comment.numReports? + +`number` + +###### comment.parentId? + +`string` + +###### comment.permalink? + +`string` + +###### comment.postId? + +`string` + +###### comment.score? + +`number` + +###### comment.spam? + +`boolean` + +###### comment.subredditId? + +`string` + +###### comment.upvotes? + +`number` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`CommentSubmit`](../interfaces/CommentSubmit.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`CommentSubmit`](../interfaces/CommentSubmit.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/CommentUpdate.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/CommentUpdate.md new file mode 100644 index 00000000..6056a022 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/CommentUpdate.md @@ -0,0 +1,1255 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: CommentUpdate + +> **CommentUpdate**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.CommentUpdate"` + + + +### create() + +#### Parameters + +##### base? + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### comment? + +\{ `author`: `string`; `body`: `string`; `collapsedBecauseCrowdControl`: `boolean`; `createdAt`: `number`; `deleted`: `boolean`; `downvotes`: `number`; `elementTypes`: `string`[]; `gilded`: `boolean`; `hasMedia`: `boolean`; `id`: `string`; `languageCode`: `string`; `lastModifiedAt`: `number`; `mediaUrls`: `string`[]; `numReports`: `number`; `parentId`: `string`; `permalink`: `string`; `postId`: `string`; `score`: `number`; `spam`: `boolean`; `subredditId`: `string`; `upvotes`: `number`; \} + +###### comment.author? + +`string` + +###### comment.body? + +`string` + +###### comment.collapsedBecauseCrowdControl? + +`boolean` + +###### comment.createdAt? + +`number` + +###### comment.deleted? + +`boolean` + +###### comment.downvotes? + +`number` + +###### comment.elementTypes? + +`string`[] + +###### comment.gilded? + +`boolean` + +###### comment.hasMedia? + +`boolean` + +###### comment.id? + +`string` + +###### comment.languageCode? + +`string` + +###### comment.lastModifiedAt? + +`number` + +###### comment.mediaUrls? + +`string`[] + +###### comment.numReports? + +`number` + +###### comment.parentId? + +`string` + +###### comment.permalink? + +`string` + +###### comment.postId? + +`string` + +###### comment.score? + +`number` + +###### comment.spam? + +`boolean` + +###### comment.subredditId? + +`string` + +###### comment.upvotes? + +`number` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### previousBody? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`CommentUpdate`](../interfaces/CommentUpdate.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`CommentUpdate`](../interfaces/CommentUpdate.md) + + + +### encode() + +#### Parameters + +##### message + +[`CommentUpdate`](../interfaces/CommentUpdate.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`CommentUpdate`](../interfaces/CommentUpdate.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### comment? + +\{ `author`: `string`; `body`: `string`; `collapsedBecauseCrowdControl`: `boolean`; `createdAt`: `number`; `deleted`: `boolean`; `downvotes`: `number`; `elementTypes`: `string`[]; `gilded`: `boolean`; `hasMedia`: `boolean`; `id`: `string`; `languageCode`: `string`; `lastModifiedAt`: `number`; `mediaUrls`: `string`[]; `numReports`: `number`; `parentId`: `string`; `permalink`: `string`; `postId`: `string`; `score`: `number`; `spam`: `boolean`; `subredditId`: `string`; `upvotes`: `number`; \} + +###### comment.author? + +`string` + +###### comment.body? + +`string` + +###### comment.collapsedBecauseCrowdControl? + +`boolean` + +###### comment.createdAt? + +`number` + +###### comment.deleted? + +`boolean` + +###### comment.downvotes? + +`number` + +###### comment.elementTypes? + +`string`[] + +###### comment.gilded? + +`boolean` + +###### comment.hasMedia? + +`boolean` + +###### comment.id? + +`string` + +###### comment.languageCode? + +`string` + +###### comment.lastModifiedAt? + +`number` + +###### comment.mediaUrls? + +`string`[] + +###### comment.numReports? + +`number` + +###### comment.parentId? + +`string` + +###### comment.permalink? + +`string` + +###### comment.postId? + +`string` + +###### comment.score? + +`number` + +###### comment.spam? + +`boolean` + +###### comment.subredditId? + +`string` + +###### comment.upvotes? + +`number` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### previousBody? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`CommentUpdate`](../interfaces/CommentUpdate.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`CommentUpdate`](../interfaces/CommentUpdate.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostApprove.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostApprove.md new file mode 100644 index 00000000..dbe9f556 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostApprove.md @@ -0,0 +1,1087 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: PostApprove + +> **PostApprove**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.PostApprove"` + + + +### create() + +#### Parameters + +##### base? + +###### approvedAt? + +`Date` + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### source? + +[`EventSource`](../../../../enumerations/EventSource.md) + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`PostApprove`](../interfaces/PostApprove.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`PostApprove`](../interfaces/PostApprove.md) + + + +### encode() + +#### Parameters + +##### message + +[`PostApprove`](../interfaces/PostApprove.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`PostApprove`](../interfaces/PostApprove.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### approvedAt? + +`Date` + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### source? + +[`EventSource`](../../../../enumerations/EventSource.md) + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`PostApprove`](../interfaces/PostApprove.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`PostApprove`](../interfaces/PostApprove.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostCreate.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostCreate.md new file mode 100644 index 00000000..252a9fda --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostCreate.md @@ -0,0 +1,1071 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: PostCreate + +> **PostCreate**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.PostCreate"` + + + +### create() + +#### Parameters + +##### base? + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`PostCreate`](../interfaces/PostCreate.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`PostCreate`](../interfaces/PostCreate.md) + + + +### encode() + +#### Parameters + +##### message + +[`PostCreate`](../interfaces/PostCreate.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`PostCreate`](../interfaces/PostCreate.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`PostCreate`](../interfaces/PostCreate.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`PostCreate`](../interfaces/PostCreate.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostDelete.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostDelete.md new file mode 100644 index 00000000..ad4face9 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostDelete.md @@ -0,0 +1,415 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: PostDelete + +> **PostDelete**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.PostDelete"` + + + +### create() + +#### Parameters + +##### base? + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### createdAt? + +`Date` + +###### deletedAt? + +`Date` + +###### postId? + +`string` + +###### reason? + +[`DeletionReason`](../../../../enumerations/DeletionReason.md) + +###### source? + +[`EventSource`](../../../../enumerations/EventSource.md) + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`PostDelete`](../interfaces/PostDelete.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`PostDelete`](../interfaces/PostDelete.md) + + + +### encode() + +#### Parameters + +##### message + +[`PostDelete`](../interfaces/PostDelete.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`PostDelete`](../interfaces/PostDelete.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### createdAt? + +`Date` + +###### deletedAt? + +`Date` + +###### postId? + +`string` + +###### reason? + +[`DeletionReason`](../../../../enumerations/DeletionReason.md) + +###### source? + +[`EventSource`](../../../../enumerations/EventSource.md) + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`PostDelete`](../interfaces/PostDelete.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`PostDelete`](../interfaces/PostDelete.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostFlairUpdate.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostFlairUpdate.md new file mode 100644 index 00000000..2c0decc6 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostFlairUpdate.md @@ -0,0 +1,1071 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: PostFlairUpdate + +> **PostFlairUpdate**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.PostFlairUpdate"` + + + +### create() + +#### Parameters + +##### base? + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`PostFlairUpdate`](../interfaces/PostFlairUpdate.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`PostFlairUpdate`](../interfaces/PostFlairUpdate.md) + + + +### encode() + +#### Parameters + +##### message + +[`PostFlairUpdate`](../interfaces/PostFlairUpdate.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`PostFlairUpdate`](../interfaces/PostFlairUpdate.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`PostFlairUpdate`](../interfaces/PostFlairUpdate.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`PostFlairUpdate`](../interfaces/PostFlairUpdate.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostNsfwUpdate.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostNsfwUpdate.md new file mode 100644 index 00000000..d9642b9c --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostNsfwUpdate.md @@ -0,0 +1,1079 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: PostNsfwUpdate + +> **PostNsfwUpdate**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.PostNsfwUpdate"` + + + +### create() + +#### Parameters + +##### base? + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### isNsfw? + +`boolean` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`PostNsfwUpdate`](../interfaces/PostNsfwUpdate.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`PostNsfwUpdate`](../interfaces/PostNsfwUpdate.md) + + + +### encode() + +#### Parameters + +##### message + +[`PostNsfwUpdate`](../interfaces/PostNsfwUpdate.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`PostNsfwUpdate`](../interfaces/PostNsfwUpdate.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### isNsfw? + +`boolean` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`PostNsfwUpdate`](../interfaces/PostNsfwUpdate.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`PostNsfwUpdate`](../interfaces/PostNsfwUpdate.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostReport.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostReport.md new file mode 100644 index 00000000..3e165767 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostReport.md @@ -0,0 +1,911 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: PostReport + +> **PostReport**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.PostReport"` + + + +### create() + +#### Parameters + +##### base? + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### reason? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`PostReport`](../interfaces/PostReport.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`PostReport`](../interfaces/PostReport.md) + + + +### encode() + +#### Parameters + +##### message + +[`PostReport`](../interfaces/PostReport.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`PostReport`](../interfaces/PostReport.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### reason? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`PostReport`](../interfaces/PostReport.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`PostReport`](../interfaces/PostReport.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostSpoilerUpdate.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostSpoilerUpdate.md new file mode 100644 index 00000000..5ae908ef --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostSpoilerUpdate.md @@ -0,0 +1,1079 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: PostSpoilerUpdate + +> **PostSpoilerUpdate**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.PostSpoilerUpdate"` + + + +### create() + +#### Parameters + +##### base? + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### isSpoiler? + +`boolean` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`PostSpoilerUpdate`](../interfaces/PostSpoilerUpdate.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`PostSpoilerUpdate`](../interfaces/PostSpoilerUpdate.md) + + + +### encode() + +#### Parameters + +##### message + +[`PostSpoilerUpdate`](../interfaces/PostSpoilerUpdate.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`PostSpoilerUpdate`](../interfaces/PostSpoilerUpdate.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### isSpoiler? + +`boolean` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`PostSpoilerUpdate`](../interfaces/PostSpoilerUpdate.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`PostSpoilerUpdate`](../interfaces/PostSpoilerUpdate.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostSubmit.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostSubmit.md new file mode 100644 index 00000000..92a37319 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostSubmit.md @@ -0,0 +1,1071 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: PostSubmit + +> **PostSubmit**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.PostSubmit"` + + + +### create() + +#### Parameters + +##### base? + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`PostSubmit`](../interfaces/PostSubmit.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`PostSubmit`](../interfaces/PostSubmit.md) + + + +### encode() + +#### Parameters + +##### message + +[`PostSubmit`](../interfaces/PostSubmit.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`PostSubmit`](../interfaces/PostSubmit.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`PostSubmit`](../interfaces/PostSubmit.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`PostSubmit`](../interfaces/PostSubmit.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostUpdate.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostUpdate.md new file mode 100644 index 00000000..2cf8730c --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/PostUpdate.md @@ -0,0 +1,1079 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: PostUpdate + +> **PostUpdate**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.PostUpdate"` + + + +### create() + +#### Parameters + +##### base? + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### previousBody? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`PostUpdate`](../interfaces/PostUpdate.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`PostUpdate`](../interfaces/PostUpdate.md) + + + +### encode() + +#### Parameters + +##### message + +[`PostUpdate`](../interfaces/PostUpdate.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`PostUpdate`](../interfaces/PostUpdate.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### author? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### author.banned? + +`boolean` + +###### author.description? + +`string` + +###### author.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### author.flair.backgroundColor? + +`string` + +###### author.flair.cssClass? + +`string` + +###### author.flair.enabled? + +`boolean` + +###### author.flair.subredditId? + +`string` + +###### author.flair.templateId? + +`string` + +###### author.flair.text? + +`string` + +###### author.flair.textColor? + +`string` + +###### author.flair.userId? + +`string` + +###### author.iconImage? + +`string` + +###### author.id? + +`string` + +###### author.isGold? + +`boolean` + +###### author.karma? + +`number` + +###### author.name? + +`string` + +###### author.snoovatarImage? + +`string` + +###### author.spam? + +`boolean` + +###### author.suspended? + +`boolean` + +###### author.url? + +`string` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### previousBody? + +`string` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +#### Returns + +[`PostUpdate`](../interfaces/PostUpdate.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`PostUpdate`](../interfaces/PostUpdate.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/SubredditSubscribe.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/SubredditSubscribe.md new file mode 100644 index 00000000..b61eba02 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/SubredditSubscribe.md @@ -0,0 +1,375 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: SubredditSubscribe + +> **SubredditSubscribe**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.SubredditSubscribe"` + + + +### create() + +#### Parameters + +##### base? + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +###### subscriber? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### subscriber.banned? + +`boolean` + +###### subscriber.description? + +`string` + +###### subscriber.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### subscriber.flair.backgroundColor? + +`string` + +###### subscriber.flair.cssClass? + +`string` + +###### subscriber.flair.enabled? + +`boolean` + +###### subscriber.flair.subredditId? + +`string` + +###### subscriber.flair.templateId? + +`string` + +###### subscriber.flair.text? + +`string` + +###### subscriber.flair.textColor? + +`string` + +###### subscriber.flair.userId? + +`string` + +###### subscriber.iconImage? + +`string` + +###### subscriber.id? + +`string` + +###### subscriber.isGold? + +`boolean` + +###### subscriber.karma? + +`number` + +###### subscriber.name? + +`string` + +###### subscriber.snoovatarImage? + +`string` + +###### subscriber.spam? + +`boolean` + +###### subscriber.suspended? + +`boolean` + +###### subscriber.url? + +`string` + +#### Returns + +[`SubredditSubscribe`](../interfaces/SubredditSubscribe.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`SubredditSubscribe`](../interfaces/SubredditSubscribe.md) + + + +### encode() + +#### Parameters + +##### message + +[`SubredditSubscribe`](../interfaces/SubredditSubscribe.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`SubredditSubscribe`](../interfaces/SubredditSubscribe.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +###### subscriber? + +\{ `banned`: `boolean`; `description`: `string`; `flair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `iconImage`: `string`; `id`: `string`; `isGold`: `boolean`; `karma`: `number`; `name`: `string`; `snoovatarImage`: `string`; `spam`: `boolean`; `suspended`: `boolean`; `url`: `string`; \} + +###### subscriber.banned? + +`boolean` + +###### subscriber.description? + +`string` + +###### subscriber.flair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### subscriber.flair.backgroundColor? + +`string` + +###### subscriber.flair.cssClass? + +`string` + +###### subscriber.flair.enabled? + +`boolean` + +###### subscriber.flair.subredditId? + +`string` + +###### subscriber.flair.templateId? + +`string` + +###### subscriber.flair.text? + +`string` + +###### subscriber.flair.textColor? + +`string` + +###### subscriber.flair.userId? + +`string` + +###### subscriber.iconImage? + +`string` + +###### subscriber.id? + +`string` + +###### subscriber.isGold? + +`boolean` + +###### subscriber.karma? + +`number` + +###### subscriber.name? + +`string` + +###### subscriber.snoovatarImage? + +`string` + +###### subscriber.spam? + +`boolean` + +###### subscriber.suspended? + +`boolean` + +###### subscriber.url? + +`string` + +#### Returns + +[`SubredditSubscribe`](../interfaces/SubredditSubscribe.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`SubredditSubscribe`](../interfaces/SubredditSubscribe.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/Vote.md b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/Vote.md new file mode 100644 index 00000000..92e5b58a --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/@devvit/namespaces/EventTypes/variables/Vote.md @@ -0,0 +1,1103 @@ +[**@devvit/public-api v0.13.0-dev**](../../../../README.md) + +*** + +# Variable: Vote + +> **Vote**: `object` + +## Type declaration + + + +### $type + +> **$type**: `"devvit.events.v1alpha.Vote"` + + + +### create() + +#### Parameters + +##### base? + +###### comment? + +\{ `author`: `string`; `body`: `string`; `collapsedBecauseCrowdControl`: `boolean`; `createdAt`: `number`; `deleted`: `boolean`; `downvotes`: `number`; `elementTypes`: `string`[]; `gilded`: `boolean`; `hasMedia`: `boolean`; `id`: `string`; `languageCode`: `string`; `lastModifiedAt`: `number`; `mediaUrls`: `string`[]; `numReports`: `number`; `parentId`: `string`; `permalink`: `string`; `postId`: `string`; `score`: `number`; `spam`: `boolean`; `subredditId`: `string`; `upvotes`: `number`; \} + +###### comment.author? + +`string` + +###### comment.body? + +`string` + +###### comment.collapsedBecauseCrowdControl? + +`boolean` + +###### comment.createdAt? + +`number` + +###### comment.deleted? + +`boolean` + +###### comment.downvotes? + +`number` + +###### comment.elementTypes? + +`string`[] + +###### comment.gilded? + +`boolean` + +###### comment.hasMedia? + +`boolean` + +###### comment.id? + +`string` + +###### comment.languageCode? + +`string` + +###### comment.lastModifiedAt? + +`number` + +###### comment.mediaUrls? + +`string`[] + +###### comment.numReports? + +`number` + +###### comment.parentId? + +`string` + +###### comment.permalink? + +`string` + +###### comment.postId? + +`string` + +###### comment.score? + +`number` + +###### comment.spam? + +`boolean` + +###### comment.subredditId? + +`string` + +###### comment.upvotes? + +`number` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### score? + +`number` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +###### updatedAt? + +`Date` + +###### upvoteRatio? + +`number` + +#### Returns + +[`Vote`](../interfaces/Vote.md) + + + +### decode() + +#### Parameters + +##### input + +`Uint8Array`\<`ArrayBufferLike`\> | `Reader` + +##### length? + +`number` + +#### Returns + +[`Vote`](../interfaces/Vote.md) + + + +### encode() + +#### Parameters + +##### message + +[`Vote`](../interfaces/Vote.md) + +##### writer? + +`Writer` + +#### Returns + +`Writer` + + + +### fromJSON() + +#### Parameters + +##### object + +`any` + +#### Returns + +[`Vote`](../interfaces/Vote.md) + + + +### fromPartial() + +#### Parameters + +##### object + +###### comment? + +\{ `author`: `string`; `body`: `string`; `collapsedBecauseCrowdControl`: `boolean`; `createdAt`: `number`; `deleted`: `boolean`; `downvotes`: `number`; `elementTypes`: `string`[]; `gilded`: `boolean`; `hasMedia`: `boolean`; `id`: `string`; `languageCode`: `string`; `lastModifiedAt`: `number`; `mediaUrls`: `string`[]; `numReports`: `number`; `parentId`: `string`; `permalink`: `string`; `postId`: `string`; `score`: `number`; `spam`: `boolean`; `subredditId`: `string`; `upvotes`: `number`; \} + +###### comment.author? + +`string` + +###### comment.body? + +`string` + +###### comment.collapsedBecauseCrowdControl? + +`boolean` + +###### comment.createdAt? + +`number` + +###### comment.deleted? + +`boolean` + +###### comment.downvotes? + +`number` + +###### comment.elementTypes? + +`string`[] + +###### comment.gilded? + +`boolean` + +###### comment.hasMedia? + +`boolean` + +###### comment.id? + +`string` + +###### comment.languageCode? + +`string` + +###### comment.lastModifiedAt? + +`number` + +###### comment.mediaUrls? + +`string`[] + +###### comment.numReports? + +`number` + +###### comment.parentId? + +`string` + +###### comment.permalink? + +`string` + +###### comment.postId? + +`string` + +###### comment.score? + +`number` + +###### comment.spam? + +`boolean` + +###### comment.subredditId? + +`string` + +###### comment.upvotes? + +`number` + +###### post? + +\{ `authorFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \}; `authorId`: `string`; `createdAt`: `number`; `crosspostParentId`: `string`; `crowdControlLevel`: `CrowdControlLevel`; `deleted`: `boolean`; `distinguished`: `DistinguishType`; `downvotes`: `number`; `galleryImages`: `string`[]; `gildings`: `number`; `id`: `string`; `ignoreReports`: `boolean`; `isApproved`: `boolean`; `isArchived`: `boolean`; `isClubContent`: `boolean`; `isGallery`: `boolean`; `isImage`: `boolean`; `isLocked`: `boolean`; `isMeta`: `boolean`; `isMultiMedia`: `boolean`; `isPoll`: `boolean`; `isPromoted`: `boolean`; `isSelf`: `boolean`; `isSpoiler`: `boolean`; `isSticky`: `boolean`; `isVideo`: `boolean`; `languageCode`: `string`; `linkFlair`: \{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \}; `media`: \{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \}; `mediaUrls`: `string`[]; `nsfw`: `boolean`; `numComments`: `number`; `numReports`: `number`; `permalink`: `string`; `score`: `number`; `selftext`: `string`; `spam`: `boolean`; `subredditId`: `string`; `thumbnail`: `string`; `title`: `string`; `type`: `string`; `unlisted`: `boolean`; `updatedAt`: `number`; `upvotes`: `number`; `url`: `string`; \} + +###### post.authorFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `enabled`: `boolean`; `subredditId`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; `userId`: `string`; \} + +###### post.authorFlair.backgroundColor? + +`string` + +###### post.authorFlair.cssClass? + +`string` + +###### post.authorFlair.enabled? + +`boolean` + +###### post.authorFlair.subredditId? + +`string` + +###### post.authorFlair.templateId? + +`string` + +###### post.authorFlair.text? + +`string` + +###### post.authorFlair.textColor? + +`string` + +###### post.authorFlair.userId? + +`string` + +###### post.authorId? + +`string` + +###### post.createdAt? + +`number` + +###### post.crosspostParentId? + +`string` + +###### post.crowdControlLevel? + +`CrowdControlLevel` + +###### post.deleted? + +`boolean` + +###### post.distinguished? + +`DistinguishType` + +###### post.downvotes? + +`number` + +###### post.galleryImages? + +`string`[] + +###### post.gildings? + +`number` + +###### post.id? + +`string` + +###### post.ignoreReports? + +`boolean` + +###### post.isApproved? + +`boolean` + +###### post.isArchived? + +`boolean` + +###### post.isClubContent? + +`boolean` + +###### post.isGallery? + +`boolean` + +###### post.isImage? + +`boolean` + +Indicates if the post contains a single image rather than a gallery of multiple images, which is indicated by the is_gallery field. + +###### post.isLocked? + +`boolean` + +###### post.isMeta? + +`boolean` + +###### post.isMultiMedia? + +`boolean` + +###### post.isPoll? + +`boolean` + +###### post.isPromoted? + +`boolean` + +###### post.isSelf? + +`boolean` + +###### post.isSpoiler? + +`boolean` + +###### post.isSticky? + +`boolean` + +###### post.isVideo? + +`boolean` + +###### post.languageCode? + +`string` + +###### post.linkFlair? + +\{ `backgroundColor`: `string`; `cssClass`: `string`; `templateId`: `string`; `text`: `string`; `textColor`: `string`; \} + +###### post.linkFlair.backgroundColor? + +`string` + +###### post.linkFlair.cssClass? + +`string` + +###### post.linkFlair.templateId? + +`string` + +###### post.linkFlair.text? + +`string` + +###### post.linkFlair.textColor? + +`string` + +###### post.media? + +\{ `oembed`: \{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \}; `redditVideo`: \{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \}; `type`: `string`; \} + +###### post.media.oembed? + +\{ `authorName`: `string`; `authorUrl`: `string`; `description`: `string`; `height`: `number`; `html`: `string`; `providerName`: `string`; `providerUrl`: `string`; `thumbnailHeight`: `number`; `thumbnailUrl`: `string`; `thumbnailWidth`: `number`; `title`: `string`; `type`: `string`; `version`: `string`; `width`: `number`; \} + +###### post.media.oembed.authorName? + +`string` + +###### post.media.oembed.authorUrl? + +`string` + +###### post.media.oembed.description? + +`string` + +###### post.media.oembed.height? + +`number` + +###### post.media.oembed.html? + +`string` + +###### post.media.oembed.providerName? + +`string` + +###### post.media.oembed.providerUrl? + +`string` + +###### post.media.oembed.thumbnailHeight? + +`number` + +###### post.media.oembed.thumbnailUrl? + +`string` + +###### post.media.oembed.thumbnailWidth? + +`number` + +###### post.media.oembed.title? + +`string` + +###### post.media.oembed.type? + +`string` + +###### post.media.oembed.version? + +`string` + +###### post.media.oembed.width? + +`number` + +###### post.media.redditVideo? + +\{ `bitrateKbps`: `number`; `dashUrl`: `string`; `duration`: `number`; `fallbackUrl`: `string`; `height`: `number`; `hlsUrl`: `string`; `isGif`: `boolean`; `scrubberMediaUrl`: `string`; `transcodingStatus`: `string`; `width`: `number`; \} + +###### post.media.redditVideo.bitrateKbps? + +`number` + +###### post.media.redditVideo.dashUrl? + +`string` + +###### post.media.redditVideo.duration? + +`number` + +###### post.media.redditVideo.fallbackUrl? + +`string` + +###### post.media.redditVideo.height? + +`number` + +###### post.media.redditVideo.hlsUrl? + +`string` + +###### post.media.redditVideo.isGif? + +`boolean` + +###### post.media.redditVideo.scrubberMediaUrl? + +`string` + +###### post.media.redditVideo.transcodingStatus? + +`string` + +###### post.media.redditVideo.width? + +`number` + +###### post.media.type? + +`string` + +###### post.mediaUrls? + +`string`[] + +###### post.nsfw? + +`boolean` + +###### post.numComments? + +`number` + +###### post.numReports? + +`number` + +###### post.permalink? + +`string` + +###### post.score? + +`number` + +###### post.selftext? + +`string` + +rename to text? + +###### post.spam? + +`boolean` + +###### post.subredditId? + +`string` + +###### post.thumbnail? + +`string` + +###### post.title? + +`string` + +###### post.type? + +`string` + +###### post.unlisted? + +`boolean` + +###### post.updatedAt? + +`number` + +###### post.upvotes? + +`number` + +###### post.url? + +`string` + +###### score? + +`number` + +###### subreddit? + +\{ `description`: `string`; `id`: `string`; `name`: `string`; `nsfw`: `boolean`; `permalink`: `string`; `quarantined`: `boolean`; `rating`: `SubredditRating`; `spam`: `boolean`; `subscribersCount`: `number`; `title`: `string`; `topics`: `string`[]; `type`: `SubredditType`; \} + +###### subreddit.description? + +`string` + +###### subreddit.id? + +`string` + +###### subreddit.name? + +`string` + +###### subreddit.nsfw? + +`boolean` + +###### subreddit.permalink? + +`string` + +###### subreddit.quarantined? + +`boolean` + +###### subreddit.rating? + +`SubredditRating` + +###### subreddit.spam? + +`boolean` + +###### subreddit.subscribersCount? + +`number` + +###### subreddit.title? + +`string` + +###### subreddit.topics? + +`string`[] + +###### subreddit.type? + +`SubredditType` + +###### updatedAt? + +`Date` + +###### upvoteRatio? + +`number` + +#### Returns + +[`Vote`](../interfaces/Vote.md) + + + +### toJSON() + +#### Parameters + +##### message + +[`Vote`](../interfaces/Vote.md) + +#### Returns + +`unknown` diff --git a/versioned_docs/version-0.13/api/public-api/README.md b/versioned_docs/version-0.13/api/public-api/README.md new file mode 100644 index 00000000..ac8a85e3 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/README.md @@ -0,0 +1,181 @@ +**@devvit/public-api v0.13.0-dev** + +*** + +# @devvit/public-api v0.13.0-dev + +## Namespaces + +- [Devvit](@devvit/namespaces/Devvit/README.md) +- [EventTypes](@devvit/namespaces/EventTypes/README.md) + +## Enumerations + +- [DeletionReason](enumerations/DeletionReason.md) +- [EventSource](enumerations/EventSource.md) +- [SettingScope](enumerations/SettingScope.md) + +## Classes + +- [Devvit](classes/Devvit.md) +- [RichTextBuilder](classes/RichTextBuilder.md) + +## Type Aliases + +- [AllIconName](type-aliases/AllIconName.md) +- [AppInstall](type-aliases/AppInstall.md) +- [AppInstallDefinition](type-aliases/AppInstallDefinition.md) +- [AppUpgrade](type-aliases/AppUpgrade.md) +- [AppUpgradeDefinition](type-aliases/AppUpgradeDefinition.md) +- [AsyncError](type-aliases/AsyncError.md) +- [AsyncUseStateInitializer](type-aliases/AsyncUseStateInitializer.md) +- [AutomoderatorFilterComment](type-aliases/AutomoderatorFilterComment.md) +- [AutomoderatorFilterPost](type-aliases/AutomoderatorFilterPost.md) +- [BaseContext](type-aliases/BaseContext.md) +- [BaseField](type-aliases/BaseField.md) +- [BitfieldCommand](type-aliases/BitfieldCommand.md) +- [BlockElement](type-aliases/BlockElement.md) +- [BooleanField](type-aliases/BooleanField.md) +- [CancelJob](type-aliases/CancelJob.md) +- [CommentCreate](type-aliases/CommentCreate.md) +- [CommentCreateDefinition](type-aliases/CommentCreateDefinition.md) +- [CommentDelete](type-aliases/CommentDelete.md) +- [CommentDeleteDefinition](type-aliases/CommentDeleteDefinition.md) +- [CommentReport](type-aliases/CommentReport.md) +- [CommentReportDefinition](type-aliases/CommentReportDefinition.md) +- [CommentSubmit](type-aliases/CommentSubmit.md) +- [CommentSubmitDefinition](type-aliases/CommentSubmitDefinition.md) +- [CommentUpdate](type-aliases/CommentUpdate.md) +- [CommentUpdateDefinition](type-aliases/CommentUpdateDefinition.md) +- [Configuration](type-aliases/Configuration.md) +- [Context](type-aliases/Context.md) +- [ContextAPIClients](type-aliases/ContextAPIClients.md) +- [ContextDebugInfo](type-aliases/ContextDebugInfo.md) +- [CustomPostType](type-aliases/CustomPostType.md) +- [~~Data~~](type-aliases/Data.md) +- [DevvitDebug](type-aliases/DevvitDebug.md) +- [Dispatch](type-aliases/Dispatch.md) +- [Form](type-aliases/Form.md) +- [FormDefinition](type-aliases/FormDefinition.md) +- [FormField](type-aliases/FormField.md) +- [FormFieldGroup](type-aliases/FormFieldGroup.md) +- [FormFunction](type-aliases/FormFunction.md) +- [FormKey](type-aliases/FormKey.md) +- [FormOnSubmitEvent](type-aliases/FormOnSubmitEvent.md) +- [FormOnSubmitEventHandler](type-aliases/FormOnSubmitEventHandler.md) +- [FormToFormValues](type-aliases/FormToFormValues.md) +- [FormValues](type-aliases/FormValues.md) +- [IconName](type-aliases/IconName.md) +- [ImageField](type-aliases/ImageField.md) +- [JobContext](type-aliases/JobContext.md) +- [JSONArray](type-aliases/JSONArray.md) +- [JSONObject](type-aliases/JSONObject.md) +- [JSONPrimitive](type-aliases/JSONPrimitive.md) +- [JSONValue](type-aliases/JSONValue.md) +- [KVStore](type-aliases/KVStore.md) +- [MediaAsset](type-aliases/MediaAsset.md) +- [MediaPlugin](type-aliases/MediaPlugin.md) +- [MenuItem](type-aliases/MenuItem.md) +- [MenuItemLocation](type-aliases/MenuItemLocation.md) +- [MenuItemOnPressEvent](type-aliases/MenuItemOnPressEvent.md) +- [MenuItemPostFilter](type-aliases/MenuItemPostFilter.md) +- [MenuItemUserType](type-aliases/MenuItemUserType.md) +- [Metadata](type-aliases/Metadata.md) +- [ModActionDefinition](type-aliases/ModActionDefinition.md) +- [ModActionTrigger](type-aliases/ModActionTrigger.md) +- [ModMailDefinition](type-aliases/ModMailDefinition.md) +- [ModMailTrigger](type-aliases/ModMailTrigger.md) +- [MultiTriggerDefinition](type-aliases/MultiTriggerDefinition.md) +- [NumberField](type-aliases/NumberField.md) +- [OnAutomoderatorFilterCommentDefinition](type-aliases/OnAutomoderatorFilterCommentDefinition.md) +- [OnAutomoderatorFilterPostDefinition](type-aliases/OnAutomoderatorFilterPostDefinition.md) +- [OnTriggerRequest](type-aliases/OnTriggerRequest.md) +- [OnValidateHandler](type-aliases/OnValidateHandler.md) +- [ParagraphField](type-aliases/ParagraphField.md) +- [PartialJSONArray](type-aliases/PartialJSONArray.md) +- [PartialJSONObject](type-aliases/PartialJSONObject.md) +- [PartialJSONPrimitive](type-aliases/PartialJSONPrimitive.md) +- [PartialJSONValue](type-aliases/PartialJSONValue.md) +- [PluginSettings](type-aliases/PluginSettings.md) +- [PostCreate](type-aliases/PostCreate.md) +- [PostCreateDefinition](type-aliases/PostCreateDefinition.md) +- [PostDelete](type-aliases/PostDelete.md) +- [PostDeleteDefinition](type-aliases/PostDeleteDefinition.md) +- [PostFlairUpdate](type-aliases/PostFlairUpdate.md) +- [PostFlairUpdateDefinition](type-aliases/PostFlairUpdateDefinition.md) +- [PostNsfwUpdate](type-aliases/PostNsfwUpdate.md) +- [PostNsfwUpdateDefinition](type-aliases/PostNsfwUpdateDefinition.md) +- [PostReport](type-aliases/PostReport.md) +- [PostReportDefinition](type-aliases/PostReportDefinition.md) +- [PostSpoilerUpdate](type-aliases/PostSpoilerUpdate.md) +- [PostSpoilerUpdateDefinition](type-aliases/PostSpoilerUpdateDefinition.md) +- [PostSubmit](type-aliases/PostSubmit.md) +- [PostSubmitDefinition](type-aliases/PostSubmitDefinition.md) +- [PostUpdate](type-aliases/PostUpdate.md) +- [PostUpdateDefinition](type-aliases/PostUpdateDefinition.md) +- [RedisClient](type-aliases/RedisClient.md) +- [RunJob](type-aliases/RunJob.md) +- [ScheduledCronJob](type-aliases/ScheduledCronJob.md) +- [ScheduledCronJobOptions](type-aliases/ScheduledCronJobOptions.md) +- [ScheduledJob](type-aliases/ScheduledJob.md) +- [ScheduledJobEvent](type-aliases/ScheduledJobEvent.md) +- [ScheduledJobHandler](type-aliases/ScheduledJobHandler.md) +- [ScheduledJobOptions](type-aliases/ScheduledJobOptions.md) +- [ScheduledJobType](type-aliases/ScheduledJobType.md) +- [Scheduler](type-aliases/Scheduler.md) +- [SelectField](type-aliases/SelectField.md) +- [SetOptions](type-aliases/SetOptions.md) +- [SetStateAction](type-aliases/SetStateAction.md) +- [SettingsClient](type-aliases/SettingsClient.md) +- [SettingScopeType](type-aliases/SettingScopeType.md) +- [SettingsFormField](type-aliases/SettingsFormField.md) +- [SettingsFormFieldGroup](type-aliases/SettingsFormFieldGroup.md) +- [SettingsFormFieldValidatorEvent](type-aliases/SettingsFormFieldValidatorEvent.md) +- [SettingsValues](type-aliases/SettingsValues.md) +- [StateSetter](type-aliases/StateSetter.md) +- [StringField](type-aliases/StringField.md) +- [Toast](type-aliases/Toast.md) +- [TriggerContext](type-aliases/TriggerContext.md) +- [TriggerDefinition](type-aliases/TriggerDefinition.md) +- [TriggerEvent](type-aliases/TriggerEvent.md) +- [TriggerEventType](type-aliases/TriggerEventType.md) +- [TriggerOnEventHandler](type-aliases/TriggerOnEventHandler.md) +- [TxClientLike](type-aliases/TxClientLike.md) +- [UIClient](type-aliases/UIClient.md) +- [UploadMediaOptions](type-aliases/UploadMediaOptions.md) +- [UseAsyncResult](type-aliases/UseAsyncResult.md) +- [UseChannelHook](type-aliases/UseChannelHook.md) +- [UseChannelResult](type-aliases/UseChannelResult.md) +- [UseFormHook](type-aliases/UseFormHook.md) +- [UseIntervalHook](type-aliases/UseIntervalHook.md) +- [UseIntervalResult](type-aliases/UseIntervalResult.md) +- [UseStateHook](type-aliases/UseStateHook.md) +- [UseStateInitializer](type-aliases/UseStateInitializer.md) +- [UseStateResult](type-aliases/UseStateResult.md) +- [UseWebViewOnMessage](type-aliases/UseWebViewOnMessage.md) +- [UseWebViewOptions](type-aliases/UseWebViewOptions.md) +- [UseWebViewResult](type-aliases/UseWebViewResult.md) +- [ValidatedBooleanField](type-aliases/ValidatedBooleanField.md) +- [ValidatedFormField](type-aliases/ValidatedFormField.md) +- [ValidatedNumberField](type-aliases/ValidatedNumberField.md) +- [ValidatedParagraphField](type-aliases/ValidatedParagraphField.md) +- [ValidatedSelectField](type-aliases/ValidatedSelectField.md) +- [ValidatedStringField](type-aliases/ValidatedStringField.md) +- [ZMember](type-aliases/ZMember.md) +- [ZRangeByScoreOptions](type-aliases/ZRangeByScoreOptions.md) +- [ZRangeOptions](type-aliases/ZRangeOptions.md) + +## Variables + +- [ALL\_ICON\_NAMES](variables/ALL_ICON_NAMES.md) + +## Functions + +- [fetchDevvitWeb](functions/fetchDevvitWeb.md) +- [svg](functions/svg.md) +- [useAsync](functions/useAsync.md) +- [useChannel](functions/useChannel.md) +- [useForm](functions/useForm.md) +- [useInterval](functions/useInterval.md) +- [useState](functions/useState.md) +- [useWebView](functions/useWebView.md) diff --git a/versioned_docs/version-0.13/api/public-api/classes/Devvit.md b/versioned_docs/version-0.13/api/public-api/classes/Devvit.md new file mode 100644 index 00000000..298f4b97 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/classes/Devvit.md @@ -0,0 +1,413 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Class: Devvit + +## Extends + +- `Actor` + +## Properties + + + +### debug + +> `static` **debug**: [`DevvitDebug`](../type-aliases/DevvitDebug.md) = `{}` + +## Methods + + + +### ~~addCustomPostType()~~ + +> `static` **addCustomPostType**(`customPostType`): `void` + +#### Parameters + +##### customPostType + +[`CustomPostType`](../type-aliases/CustomPostType.md) + +The custom post type to add. + +#### Returns + +`void` + +#### Deprecated + +Blocks is deprecated. Use [Web](https://developers.reddit.com/docs/capabilities/devvit-web/devvit_web_overview|Devvit) instead + +Add a custom post type for your app. + +#### Example + +```ts +import { Devvit, useState } from '@devvit/public-api'; + +Devvit.addCustomPostType({ + name: 'Counter', + description: 'A simple click counter post.', + render: (context) => { + const [counter, setCounter] = useState(); + + return ( + + {counter} + + + ); + }, +}); +``` + +*** + + + +### addMenuItem() + +> `static` **addMenuItem**(`item`): `void` + +Add a menu item to the Reddit UI. + +#### Parameters + +##### item + +[`MenuItem`](../type-aliases/MenuItem.md) + +#### Returns + +`void` + +#### Example + +```ts +Devvit.addMenuItem({ + label: 'My Menu Item', + location: 'subreddit', + onPress: (event, context) => { + const location = event.location; + const targetId = event.targetId; + context.ui.showToast(`You clicked on ${location} ${targetId}`); + } +}); +``` + +*** + + + +### addSchedulerJob() + +> `static` **addSchedulerJob**\<`T`\>(`job`): `void` + +Add a scheduled job type for your app. This will allow you to schedule jobs using the `scheduler` API. + +#### Type Parameters + +##### T + +`T` *extends* `undefined` \| [`JSONObject`](../type-aliases/JSONObject.md) + +#### Parameters + +##### job + +[`ScheduledJobType`](../type-aliases/ScheduledJobType.md)\<`T`\> + +The scheduled job type to add. + +#### Returns + +`void` + +#### Example + +```ts +Devvit.addSchedulerJob({ + name: 'checkNewPosts', + onRun: async (event, context) => { + const newPosts = await context.reddit.getNewPosts({ limit: 5 }).all(); + for (const post of newPosts) { + if (post.title.includes('bad word')) { + await post.remove(); + } + } + } +}); + +Devvit.addMenuItem({ + label: 'Check for new posts', + location: 'location', + onPress: (event, context) => { + const = await context.scheduler.runJob({ + name: 'checkNewPosts', + when: new Date(Date.now() + 5000) // in 5 seconds + }); + } +}); +``` + +*** + + + +### addSettings() + +> `static` **addSettings**(`fields`): `void` + +Add settings that can be configured to customize the behavior of your app. + +There are two levels of settings: +- App settings (scope: 'app') +- Installation settings (scope: 'installation' or unspecified scope). + +Installation settings are meant to be configured by the user that installs your app. +This is a good place to add anything that a user might want to change to personalize the app (e.g. the default city to show the weather for or a +specific sport team that a subreddit follows). Note that these are good for subreddit level customization but not necessarily good for things +that might be different for two users in a subreddit (e.g. setting the default city to show the weather for is only useful at a sub level if +the sub is for a specific city or region). +Installation settings can be viewed and configured here: https://developers.reddit.com/r/subreddit-name/apps/app-name. + +App settings can be accessed and consumed by all installations of the app. This is mainly useful for developer secrets/API keys that your +app needs to function. They can only be changed/viewed by you via the CLI (devvit settings set and devvit settings list). This ensures secrets +are persisted in an encrypted store and don't get committed in the source code. + +Warning: You should never paste your actual key into any fields passed into Devvit.addSettings - this is merely where you state what your API key's name and description are. You will be able to set the actual value of the key via CLI. + +Note: setting names must be unique across all settings. + +#### Parameters + +##### fields + +Fields for the app and installation settings. + +[`SettingsFormField`](../type-aliases/SettingsFormField.md) | [`SettingsFormField`](../type-aliases/SettingsFormField.md)[] + +#### Returns + +`void` + +#### Examples + +```ts +Devvit.addSettings([ + { + type: 'string', + name: 'weather-api-key', + label: 'My weather.com API key', + scope: SettingScope.App, + isSecret: true + }, + { + type: 'string', + name: 'Default City', + label: 'Default city to show the weather for by default', + scope: SettingScope.Installation, + onValidate: ({ value }) => { + if (!isValidCity(value)) { + return 'You must ender a valid city: ${validCities.join(", ")}'; + } + } + }, + { + type: 'number', + name: 'Default Forecast Window (in days)', + label: 'The number of days to show for forecast for by default', + scope: SettingScope.Installation, + onValidate: ({ value }) => { + if (value > 10 || value < 1) { + return 'Forecast window must be from 1 to 10 days'; + } + } + }, +]); +``` + +```ts +Devvit.addSettings({ + type: 'string', + name: 'weather-api-key', + label: 'My weather.com API key', + scope: SettingScope.App, + isSecret: true +}); +``` + +*** + + + +### addTrigger() + +#### Call Signature + +> `static` **addTrigger**\<`T`\>(`definition`): *typeof* [`Devvit`](../@devvit/namespaces/Devvit/README.md) + +Add a trigger handler that will be invoked when the given event +occurs in a subreddit where the app is installed. + +##### Type Parameters + +###### T + +`T` *extends* keyof [`TriggerEventType`](../type-aliases/TriggerEventType.md) + +##### Parameters + +###### definition + +###### event + +`T` + +###### onEvent + +[`TriggerOnEventHandler`](../type-aliases/TriggerOnEventHandler.md)\<[`TriggerEventType`](../type-aliases/TriggerEventType.md)\[`T`\]\> + +##### Returns + +*typeof* [`Devvit`](../@devvit/namespaces/Devvit/README.md) + +##### Example + +```ts +Devvit.addTrigger({ + event: 'PostSubmit', + async onEvent(event, context) { + console.log("a new post was created!") + } +}); + +Devvit.addTrigger({ + events: ['PostSubmit', 'PostReport'], + async onEvent(event, context){ + if (event.type === 'PostSubmit') { + console.log("a new post was created!") + } else if (event.type === 'PostReport') { + console.log("a post was reported!") + } + } +}); +``` + +#### Call Signature + +> `static` **addTrigger**\<`Event`\>(`triggerDefinition`): *typeof* [`Devvit`](../@devvit/namespaces/Devvit/README.md) + +Add a trigger handler that will be invoked when the given event +occurs in a subreddit where the app is installed. + +##### Type Parameters + +###### Event + +`Event` *extends* [`TriggerEvent`](../type-aliases/TriggerEvent.md) + +##### Parameters + +###### triggerDefinition + +[`MultiTriggerDefinition`](../type-aliases/MultiTriggerDefinition.md)\<`Event`\> + +The trigger definition. + +##### Returns + +*typeof* [`Devvit`](../@devvit/namespaces/Devvit/README.md) + +##### Example + +```ts +Devvit.addTrigger({ + event: 'PostSubmit', + async onEvent(event, context) { + console.log("a new post was created!") + } +}); + +Devvit.addTrigger({ + events: ['PostSubmit', 'PostReport'], + async onEvent(event, context){ + if (event.type === 'PostSubmit') { + console.log("a new post was created!") + } else if (event.type === 'PostReport') { + console.log("a post was reported!") + } + } +}); +``` + +*** + + + +### configure() + +> `static` **configure**(`config`): `void` + +To use certain APIs and features of Devvit, you must enable them using this function. + +#### Parameters + +##### config + +[`Configuration`](../type-aliases/Configuration.md) + +The configuration object. + +#### Returns + +`void` + +#### Example + +```ts +Devvit.configure({ + http: true, + redditAPI: true, + redis: true, + media: true +}); +``` + +*** + + + +### createForm() + +> `static` **createForm**\<`T`\>(`form`, `onSubmit`): [`FormKey`](../type-aliases/FormKey.md) + +Create a form that can be opened from menu items and custom posts. + +#### Type Parameters + +##### T + +`T` *extends* [`Form`](../type-aliases/Form.md) \| [`FormFunction`](../type-aliases/FormFunction.md) + +#### Parameters + +##### form + +`T` + +The form or a function that returns the form. + +##### onSubmit + +[`FormOnSubmitEventHandler`](../type-aliases/FormOnSubmitEventHandler.md)\<[`FormToFormValues`](../type-aliases/FormToFormValues.md)\<`T`\>\> + +The function to call when the form is submitted. + +#### Returns + +[`FormKey`](../type-aliases/FormKey.md) + +A unique key for the form that can used with `ui.showForm`. diff --git a/versioned_docs/version-0.13/api/public-api/classes/RichTextBuilder.md b/versioned_docs/version-0.13/api/public-api/classes/RichTextBuilder.md new file mode 100644 index 00000000..0ea6cc09 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/classes/RichTextBuilder.md @@ -0,0 +1,358 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Class: RichTextBuilder + +## Mixes + +ParagraphContainer + +## Mixes + +HeadingContainer + +## Mixes + +HorizontalRuleContainer + +## Mixes + +BlockQuoteContainer + +## Mixes + +CodeBlockContainer + +## Mixes + +EmbedContainer + +## Mixes + +ListContainer + +## Mixes + +TableContainer + +## Mixes + +ImageContainer + +## Mixes + +VideoContainer + +## Implements + +- `ParagraphContainer`\<`RichTextBuilder`\> +- `HeadingContainer`\<`RichTextBuilder`\> +- `HorizontalRuleContainer`\<`RichTextBuilder`\> +- `BlockQuoteContainer`\<`RichTextBuilder`\> +- `CodeBlockContainer`\<`RichTextBuilder`\> +- `EmbedContainer`\<`RichTextBuilder`\> +- `ListContainer`\<`RichTextBuilder`\> +- `TableContainer`\<`RichTextBuilder`\> +- `ImageContainer`\<`RichTextBuilder`\> +- `VideoContainer`\<`RichTextBuilder`\> + +## Constructors + + + +### new RichTextBuilder() + +> **new RichTextBuilder**(): `RichTextBuilder` + +#### Returns + +`RichTextBuilder` + +## Methods + + + +### animatedImage() + +> **animatedImage**(`_opts`): `RichTextBuilder` + +Append an Animated Image + +#### Parameters + +##### \_opts + +`MediaOptions` + +#### Returns + +`RichTextBuilder` + +#### Implementation of + +`ImageContainer.animatedImage` + +*** + + + +### blockQuote() + +> **blockQuote**(`_opts`, `_cb`): `RichTextBuilder` + +Append a Block Quote element + +#### Parameters + +##### \_opts + +`BlockQuoteOptions` + +##### \_cb + +(`blockQuote`) => `void` + +#### Returns + +`RichTextBuilder` + +#### Implementation of + +`BlockQuoteContainer.blockQuote` + +*** + + + +### build() + +> **build**(): `string` + +Serializes the document to a JSON string + +#### Returns + +`string` + +*** + + + +### codeBlock() + +> **codeBlock**(`_opts`, `_cb`): `RichTextBuilder` + +Append a Code Block element + +#### Parameters + +##### \_opts + +`CodeBlockOptions` + +##### \_cb + +(`codeBlock`) => `void` + +#### Returns + +`RichTextBuilder` + +#### Implementation of + +`CodeBlockContainer.codeBlock` + +*** + + + +### embed() + +> **embed**(`_opts`): `RichTextBuilder` + +Append an embedded iframe + +#### Parameters + +##### \_opts + +`EmbedOptions` + +#### Returns + +`RichTextBuilder` + +#### Implementation of + +`EmbedContainer.embed` + +*** + + + +### heading() + +> **heading**(`_opts`, `_cb`): `RichTextBuilder` + +Append a Heading + +#### Parameters + +##### \_opts + +`HeadingOptions` + +##### \_cb + +(`heading`) => `void` + +#### Returns + +`RichTextBuilder` + +#### Implementation of + +`HeadingContainer.heading` + +*** + + + +### horizontalRule() + +> **horizontalRule**(): `RichTextBuilder` + +Append a Horizontal Rule + +#### Returns + +`RichTextBuilder` + +#### Implementation of + +`HorizontalRuleContainer.horizontalRule` + +*** + + + +### image() + +> **image**(`_opts`): `RichTextBuilder` + +Append an Image + +#### Parameters + +##### \_opts + +`MediaOptions` + +#### Returns + +`RichTextBuilder` + +#### Implementation of + +`ImageContainer.image` + +*** + + + +### list() + +> **list**(`_opts`, `_cb`): `RichTextBuilder` + +Append a List + +#### Parameters + +##### \_opts + +`ListOptions` + +##### \_cb + +(`list`) => `void` + +#### Returns + +`RichTextBuilder` + +#### Implementation of + +`ListContainer.list` + +*** + + + +### paragraph() + +> **paragraph**(`_cb`): `RichTextBuilder` + +Append a Paragraph + +#### Parameters + +##### \_cb + +(`paragraph`) => `void` + +#### Returns + +`RichTextBuilder` + +#### Implementation of + +`ParagraphContainer.paragraph` + +*** + + + +### table() + +> **table**(`_cb`): `RichTextBuilder` + +Append a Table + +#### Parameters + +##### \_cb + +(`table`) => `void` + +#### Returns + +`RichTextBuilder` + +#### Implementation of + +`TableContainer.table` + +*** + + + +### video() + +> **video**(`_opts`): `RichTextBuilder` + +Append a Video + +#### Parameters + +##### \_opts + +`VideoOptions` + +#### Returns + +`RichTextBuilder` + +#### Implementation of + +`VideoContainer.video` diff --git a/versioned_docs/version-0.13/api/public-api/enumerations/DeletionReason.md b/versioned_docs/version-0.13/api/public-api/enumerations/DeletionReason.md new file mode 100644 index 00000000..35c552aa --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/enumerations/DeletionReason.md @@ -0,0 +1,61 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Enumeration: DeletionReason + +## Enumeration Members + + + +### EXPLICIT\_CONTENT + +> **EXPLICIT\_CONTENT**: `5` + +*** + + + +### LEGAL + +> **LEGAL**: `2` + +*** + + + +### OTHER + +> **OTHER**: `3` + +*** + + + +### SPAM + +> **SPAM**: `1` + +*** + + + +### UNKNOWN + +> **UNKNOWN**: `4` + +*** + + + +### UNRECOGNIZED + +> **UNRECOGNIZED**: `-1` + +*** + + + +### UNSPECIFIED\_DELETION\_REASON + +> **UNSPECIFIED\_DELETION\_REASON**: `0` diff --git a/versioned_docs/version-0.13/api/public-api/enumerations/EventSource.md b/versioned_docs/version-0.13/api/public-api/enumerations/EventSource.md new file mode 100644 index 00000000..27c7f51b --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/enumerations/EventSource.md @@ -0,0 +1,45 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Enumeration: EventSource + +## Enumeration Members + + + +### ADMIN + +> **ADMIN**: `2` + +*** + + + +### MODERATOR + +> **MODERATOR**: `3` + +*** + + + +### UNKNOWN\_EVENT\_SOURCE + +> **UNKNOWN\_EVENT\_SOURCE**: `0` + +*** + + + +### UNRECOGNIZED + +> **UNRECOGNIZED**: `-1` + +*** + + + +### USER + +> **USER**: `1` diff --git a/versioned_docs/version-0.13/api/public-api/enumerations/SettingScope.md b/versioned_docs/version-0.13/api/public-api/enumerations/SettingScope.md new file mode 100644 index 00000000..d8cc0193 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/enumerations/SettingScope.md @@ -0,0 +1,21 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Enumeration: SettingScope + +## Enumeration Members + + + +### App + +> **App**: `"app"` + +*** + + + +### Installation + +> **Installation**: `"installation"` diff --git a/versioned_docs/version-0.13/api/public-api/functions/fetchDevvitWeb.md b/versioned_docs/version-0.13/api/public-api/functions/fetchDevvitWeb.md new file mode 100644 index 00000000..af31c75b --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/functions/fetchDevvitWeb.md @@ -0,0 +1,36 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Function: fetchDevvitWeb() + +> **fetchDevvitWeb**(`ctx`, `endpoint`, `init`?): `Promise`\<`Response`\> + +Makes a fetch request to the devvit web backend server from your block app +This is a migration tool to help you migrate your block app to the new Devvit Web architecture. + +## Parameters + +### ctx + +[`BaseContext`](../type-aliases/BaseContext.md) + +the devvit context + +### endpoint + +`string` + +the endpoint to make the request to + +### init? + +`RequestInit` + +the request init options + +## Returns + +`Promise`\<`Response`\> + +a promise that resolves to the fetch response diff --git a/versioned_docs/version-0.13/api/public-api/functions/svg.md b/versioned_docs/version-0.13/api/public-api/functions/svg.md new file mode 100644 index 00000000..c22caa4c --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/functions/svg.md @@ -0,0 +1,45 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Function: svg() + +> **svg**(`strings`, ...`args`): `""` \| `` `data:image/svg+xml;charset=UTF-8,${string}` `` + +**`Experimental`** + +A helper to allow SVG functionality within image tags. + +## Parameters + +### strings + +`TemplateStringsArray` + +### args + +...(`string` \| `number`)[] + +## Returns + +`""` \| `` `data:image/svg+xml;charset=UTF-8,${string}` `` + +## Example + +```ts +import { Devvit, svg } from '@devvit/public-api'; +const App = () => { + const color = 'gold' + return ( + + + + `} + imageHeight={100} + imageWidth={100} + /> + + ) +} +``` diff --git a/versioned_docs/version-0.13/api/public-api/functions/useAsync.md b/versioned_docs/version-0.13/api/public-api/functions/useAsync.md new file mode 100644 index 00000000..6cdf4139 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/functions/useAsync.md @@ -0,0 +1,33 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Function: useAsync() + +> **useAsync**\<`S`\>(`initializer`, `options`): [`UseAsyncResult`](../type-aliases/UseAsyncResult.md)\<`S`\> + +This is the preferred way to handle async state in Devvit. + +## Type Parameters + +### S + +`S` *extends* [`JSONValue`](../type-aliases/JSONValue.md) + +## Parameters + +### initializer + +[`AsyncUseStateInitializer`](../type-aliases/AsyncUseStateInitializer.md)\<`S`\> + +any async function that returns a JSONValue + +### options + +`AsyncOptions`\<`S`\> = `{}` + +## Returns + +[`UseAsyncResult`](../type-aliases/UseAsyncResult.md)\<`S`\> + +UseAsyncResult diff --git a/versioned_docs/version-0.13/api/public-api/functions/useChannel.md b/versioned_docs/version-0.13/api/public-api/functions/useChannel.md new file mode 100644 index 00000000..7bce9e80 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/functions/useChannel.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Function: useChannel() + +> **useChannel**\<`Message`\>(`opts`): [`UseChannelResult`](../type-aliases/UseChannelResult.md)\<`Message`\> + +## Type Parameters + +### Message + +`Message` *extends* [`JSONValue`](../type-aliases/JSONValue.md) + +## Parameters + +### opts + +`Readonly`\<`ChannelOptions`\<`Message`\>\> + +## Returns + +[`UseChannelResult`](../type-aliases/UseChannelResult.md)\<`Message`\> diff --git a/versioned_docs/version-0.13/api/public-api/functions/useForm.md b/versioned_docs/version-0.13/api/public-api/functions/useForm.md new file mode 100644 index 00000000..02215bc0 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/functions/useForm.md @@ -0,0 +1,27 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Function: useForm() + +> **useForm**\<`T`\>(`form`, `onSubmit`): [`FormKey`](../type-aliases/FormKey.md) + +## Type Parameters + +### T + +`T` *extends* [`Form`](../type-aliases/Form.md) \| [`FormFunction`](../type-aliases/FormFunction.md) + +## Parameters + +### form + +`T` + +### onSubmit + +(`values`) => `void` \| `Promise`\<`void`\> + +## Returns + +[`FormKey`](../type-aliases/FormKey.md) diff --git a/versioned_docs/version-0.13/api/public-api/functions/useInterval.md b/versioned_docs/version-0.13/api/public-api/functions/useInterval.md new file mode 100644 index 00000000..14a623ed --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/functions/useInterval.md @@ -0,0 +1,21 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Function: useInterval() + +> **useInterval**(`callback`, `requestedDelayMs`): [`UseIntervalResult`](../type-aliases/UseIntervalResult.md) + +## Parameters + +### callback + +() => `void` \| `Promise`\<`void`\> + +### requestedDelayMs + +`number` + +## Returns + +[`UseIntervalResult`](../type-aliases/UseIntervalResult.md) diff --git a/versioned_docs/version-0.13/api/public-api/functions/useState.md b/versioned_docs/version-0.13/api/public-api/functions/useState.md new file mode 100644 index 00000000..6cea20f0 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/functions/useState.md @@ -0,0 +1,67 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Function: useState() + +## Call Signature + +> **useState**(`initialState`): [`UseStateResult`](../type-aliases/UseStateResult.md)\<`boolean`\> + +### Parameters + +#### initialState + +[`UseStateInitializer`](../type-aliases/UseStateInitializer.md)\<`boolean`\> + +### Returns + +[`UseStateResult`](../type-aliases/UseStateResult.md)\<`boolean`\> + +## Call Signature + +> **useState**(`initialState`): [`UseStateResult`](../type-aliases/UseStateResult.md)\<`number`\> + +### Parameters + +#### initialState + +[`UseStateInitializer`](../type-aliases/UseStateInitializer.md)\<`number`\> + +### Returns + +[`UseStateResult`](../type-aliases/UseStateResult.md)\<`number`\> + +## Call Signature + +> **useState**(`initialState`): [`UseStateResult`](../type-aliases/UseStateResult.md)\<`string`\> + +### Parameters + +#### initialState + +[`UseStateInitializer`](../type-aliases/UseStateInitializer.md)\<`string`\> + +### Returns + +[`UseStateResult`](../type-aliases/UseStateResult.md)\<`string`\> + +## Call Signature + +> **useState**\<`S`\>(`initialState`): [`UseStateResult`](../type-aliases/UseStateResult.md)\<`S`\> + +### Type Parameters + +#### S + +`S` *extends* [`JSONValue`](../type-aliases/JSONValue.md) + +### Parameters + +#### initialState + +[`UseStateInitializer`](../type-aliases/UseStateInitializer.md)\<`S`\> + +### Returns + +[`UseStateResult`](../type-aliases/UseStateResult.md)\<`S`\> diff --git a/versioned_docs/version-0.13/api/public-api/functions/useWebView.md b/versioned_docs/version-0.13/api/public-api/functions/useWebView.md new file mode 100644 index 00000000..742a92ef --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/functions/useWebView.md @@ -0,0 +1,29 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Function: useWebView() + +> **useWebView**\<`From`, `To`\>(`options`): [`UseWebViewResult`](../type-aliases/UseWebViewResult.md)\<`To`\> + +Use this hook to handle a web view's visibility state and any messages sent to your app. + +## Type Parameters + +### From + +`From` *extends* [`JSONValue`](../type-aliases/JSONValue.md) = [`JSONValue`](../type-aliases/JSONValue.md) + +### To + +`To` *extends* [`JSONValue`](../type-aliases/JSONValue.md) = [`JSONValue`](../type-aliases/JSONValue.md) + +## Parameters + +### options + +[`UseWebViewOptions`](../type-aliases/UseWebViewOptions.md)\<`From`, `To`\> + +## Returns + +[`UseWebViewResult`](../type-aliases/UseWebViewResult.md)\<`To`\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/AllIconName.md b/versioned_docs/version-0.13/api/public-api/type-aliases/AllIconName.md new file mode 100644 index 00000000..a1399ff4 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/AllIconName.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: AllIconName + +> **AllIconName** = *typeof* [`ALL_ICON_NAMES`](../variables/ALL_ICON_NAMES.md)\[`number`\] diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/AppInstall.md b/versioned_docs/version-0.13/api/public-api/type-aliases/AppInstall.md new file mode 100644 index 00000000..38e757ad --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/AppInstall.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: AppInstall + +> **AppInstall** = `"AppInstall"` + +The event name for when your app is installed diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/AppInstallDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/AppInstallDefinition.md new file mode 100644 index 00000000..8dbb7637 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/AppInstallDefinition.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: AppInstallDefinition + +> **AppInstallDefinition** = `object` + +## Properties + + + +### event + +> **event**: [`AppInstall`](AppInstall.md) + +*** + + + +### onEvent + +> **onEvent**: [`TriggerOnEventHandler`](TriggerOnEventHandler.md)\<[`AppInstall`](../@devvit/namespaces/EventTypes/interfaces/AppInstall.md)\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/AppUpgrade.md b/versioned_docs/version-0.13/api/public-api/type-aliases/AppUpgrade.md new file mode 100644 index 00000000..06a05f14 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/AppUpgrade.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: AppUpgrade + +> **AppUpgrade** = `"AppUpgrade"` + +The event name for when your app is upgraded diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/AppUpgradeDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/AppUpgradeDefinition.md new file mode 100644 index 00000000..23bec8d5 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/AppUpgradeDefinition.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: AppUpgradeDefinition + +> **AppUpgradeDefinition** = `object` + +## Properties + + + +### event + +> **event**: [`AppUpgrade`](AppUpgrade.md) + +*** + + + +### onEvent + +> **onEvent**: [`TriggerOnEventHandler`](TriggerOnEventHandler.md)\<[`AppUpgrade`](../@devvit/namespaces/EventTypes/interfaces/AppUpgrade.md)\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/AsyncError.md b/versioned_docs/version-0.13/api/public-api/type-aliases/AsyncError.md new file mode 100644 index 00000000..a449bf07 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/AsyncError.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: AsyncError + +> **AsyncError** = `object` + +## Properties + + + +### details + +> **details**: `string` \| `null` + +*** + + + +### message + +> **message**: `string` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/AsyncUseStateInitializer.md b/versioned_docs/version-0.13/api/public-api/type-aliases/AsyncUseStateInitializer.md new file mode 100644 index 00000000..6ffd0483 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/AsyncUseStateInitializer.md @@ -0,0 +1,17 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: AsyncUseStateInitializer()\ + +> **AsyncUseStateInitializer**\<`S`\> = () => `Promise`\<`S`\> + +## Type Parameters + +### S + +`S` + +## Returns + +`Promise`\<`S`\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/AutomoderatorFilterComment.md b/versioned_docs/version-0.13/api/public-api/type-aliases/AutomoderatorFilterComment.md new file mode 100644 index 00000000..32bc9111 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/AutomoderatorFilterComment.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: AutomoderatorFilterComment + +> **AutomoderatorFilterComment** = `"AutomoderatorFilterComment"` + +The event name for when a comment is filtered by automoderator diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/AutomoderatorFilterPost.md b/versioned_docs/version-0.13/api/public-api/type-aliases/AutomoderatorFilterPost.md new file mode 100644 index 00000000..c00cdbf7 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/AutomoderatorFilterPost.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: AutomoderatorFilterPost + +> **AutomoderatorFilterPost** = `"AutomoderatorFilterPost"` + +The event name for when a post is filtered by automoderator diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/BaseContext.md b/versioned_docs/version-0.13/api/public-api/type-aliases/BaseContext.md new file mode 100644 index 00000000..41327273 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/BaseContext.md @@ -0,0 +1,184 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: BaseContext + +> **BaseContext** = `object` + +## Properties + + + +### ~~appAccountId~~ + +> **appAccountId**: `string` + +The ID of the current app's account + +#### Deprecated + +Use [BaseContext.appSlug](#appslug) instead to get the app's username + +*** + + + +### ~~appName~~ + +> **appName**: `string` + +The slug of the app that is running + +#### Deprecated + +Use [BaseContext.appSlug](#appslug) instead. + +*** + + + +### appSlug + +> **appSlug**: `string` + +The slug of the app that is running + +*** + + + +### appVersion + +> **appVersion**: `string` + +The version of the app that is running + +*** + + + +### commentId? + +> `optional` **commentId**: `string` + +The ID of the current comment + +*** + + + +### debug + +> **debug**: [`ContextDebugInfo`](ContextDebugInfo.md) + +More useful things, but probably not for the average developer + +*** + + + +### loid? + +> `optional` **loid**: `string` + +**`Experimental`** + +LOID (logged-out ID) is a token assigned on first visit and persists across sessions, account creation, and sign-in. +Logged-in users retain a LOID for attribution, analytics, and cross-session tracking. + +*** + + + +### metadata + +> **metadata**: [`Metadata`](Metadata.md) + +Request headers. + +*** + + + +### postData + +> **postData**: `PostData` \| `undefined` + +*** + + + +### postId? + +> `optional` **postId**: `string` + +The ID of the current post + +*** + + + +### snoovatar? + +> `optional` **snoovatar**: `string` + +**`Experimental`** + +The current user's snoovtar URL if logged in + +*** + + + +### subredditId + +> **subredditId**: `string` + +The ID of the current subreddit + +*** + + + +### subredditName? + +> `optional` **subredditName**: `string` + +The name of the current subreddit + +*** + + + +### userId? + +> `optional` **userId**: `string` + +The current user's ID if this event was triggered by a logged in user + +*** + + + +### username? + +> `optional` **username**: `string` + +**`Experimental`** + +The current user's handle if logged in + +## Methods + + + +### toJSON() + +> **toJSON**(): `Omit`\<`BaseContext`, `"toJSON"`\> + +Returns a JSON representation of the context + +#### Returns + +`Omit`\<`BaseContext`, `"toJSON"`\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/BaseField.md b/versioned_docs/version-0.13/api/public-api/type-aliases/BaseField.md new file mode 100644 index 00000000..a0b48146 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/BaseField.md @@ -0,0 +1,86 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: BaseField\ + +> **BaseField**\<`ValueType`\> = `object` + +## Type Parameters + +### ValueType + +`ValueType` + +## Properties + + + +### defaultValue? + +> `optional` **defaultValue**: `ValueType` + +The default value of the field + +*** + + + +### disabled? + +> `optional` **disabled**: `boolean` + +If true the field will be disabled + +*** + + + +### helpText? + +> `optional` **helpText**: `string` + +An optional help text that will be displayed below the field + +*** + + + +### label + +> **label**: `string` + +The label of the field. This will be displayed to the user + +*** + + + +### name + +> **name**: `string` + +The name of the field. This will be used as the key in the `values` object +when the form is submitted. + +*** + + + +### required? + +> `optional` **required**: `boolean` + +If true the field will be required and the user will not be able to submit +the form without filling it in. + +*** + + + +### scope? + +> `optional` **scope**: [`SettingScopeType`](SettingScopeType.md) + +This indicates whether the field (setting) is an app level or install level +setting. App setting values can be used by any installation. diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/BitfieldCommand.md b/versioned_docs/version-0.13/api/public-api/type-aliases/BitfieldCommand.md new file mode 100644 index 00000000..92522253 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/BitfieldCommand.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: BitfieldCommand + +> **BitfieldCommand** = `BitfieldGet` \| `BitfieldSet` \| `BitfieldIncrBy` \| `BitfieldOverflow` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/BlockElement.md b/versioned_docs/version-0.13/api/public-api/type-aliases/BlockElement.md new file mode 100644 index 00000000..d68757df --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/BlockElement.md @@ -0,0 +1,31 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: BlockElement + +> **BlockElement** = `object` + +## Properties + + + +### children + +> **children**: `JSX.Element`[] + +*** + + + +### props + +> **props**: \{\} \| `undefined` + +*** + + + +### type + +> **type**: `JSX.ComponentFunction` \| `string` \| `undefined` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/BooleanField.md b/versioned_docs/version-0.13/api/public-api/type-aliases/BooleanField.md new file mode 100644 index 00000000..073117d0 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/BooleanField.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: BooleanField + +> **BooleanField** = `Prettify`\<`Omit`\<[`BaseField`](BaseField.md)\<`boolean`\>, `"required"`\> & `FieldConfig_Boolean` & `object`\> + +A boolean field displayed as a toggle diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/CancelJob.md b/versioned_docs/version-0.13/api/public-api/type-aliases/CancelJob.md new file mode 100644 index 00000000..6cc4c87c --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/CancelJob.md @@ -0,0 +1,21 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: CancelJob() + +> **CancelJob** = (`jobId`) => `Promise`\<`void`\> + +Cancel a scheduled job + +## Parameters + +### jobId + +`string` + +The id of the job to cancel + +## Returns + +`Promise`\<`void`\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/CommentCreate.md b/versioned_docs/version-0.13/api/public-api/type-aliases/CommentCreate.md new file mode 100644 index 00000000..876d5d17 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/CommentCreate.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: CommentCreate + +> **CommentCreate** = `"CommentCreate"` + +The event name for when a comment is created, after safety delay diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/CommentCreateDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/CommentCreateDefinition.md new file mode 100644 index 00000000..747d9b56 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/CommentCreateDefinition.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: CommentCreateDefinition + +> **CommentCreateDefinition** = `object` + +## Properties + + + +### event + +> **event**: [`CommentCreate`](CommentCreate.md) + +*** + + + +### onEvent + +> **onEvent**: [`TriggerOnEventHandler`](TriggerOnEventHandler.md)\<[`CommentCreate`](../@devvit/namespaces/EventTypes/interfaces/CommentCreate.md)\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/CommentDelete.md b/versioned_docs/version-0.13/api/public-api/type-aliases/CommentDelete.md new file mode 100644 index 00000000..32bd414c --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/CommentDelete.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: CommentDelete + +> **CommentDelete** = `"CommentDelete"` + +The event name for when a comment is deleted diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/CommentDeleteDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/CommentDeleteDefinition.md new file mode 100644 index 00000000..363c31dd --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/CommentDeleteDefinition.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: CommentDeleteDefinition + +> **CommentDeleteDefinition** = `object` + +## Properties + + + +### event + +> **event**: [`CommentDelete`](CommentDelete.md) + +*** + + + +### onEvent + +> **onEvent**: [`TriggerOnEventHandler`](TriggerOnEventHandler.md)\<[`CommentDelete`](../@devvit/namespaces/EventTypes/interfaces/CommentDelete.md)\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/CommentReport.md b/versioned_docs/version-0.13/api/public-api/type-aliases/CommentReport.md new file mode 100644 index 00000000..dc8f7bf1 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/CommentReport.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: CommentReport + +> **CommentReport** = `"CommentReport"` + +The event name for when a comment is reported diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/CommentReportDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/CommentReportDefinition.md new file mode 100644 index 00000000..927a0f33 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/CommentReportDefinition.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: CommentReportDefinition + +> **CommentReportDefinition** = `object` + +## Properties + + + +### event + +> **event**: [`CommentReport`](CommentReport.md) + +*** + + + +### onEvent + +> **onEvent**: [`TriggerOnEventHandler`](TriggerOnEventHandler.md)\<[`CommentReport`](../@devvit/namespaces/EventTypes/interfaces/CommentReport.md)\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/CommentSubmit.md b/versioned_docs/version-0.13/api/public-api/type-aliases/CommentSubmit.md new file mode 100644 index 00000000..5a985cc0 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/CommentSubmit.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: CommentSubmit + +> **CommentSubmit** = `"CommentSubmit"` + +The event name for when a comment is submitted diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/CommentSubmitDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/CommentSubmitDefinition.md new file mode 100644 index 00000000..e758d85d --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/CommentSubmitDefinition.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: CommentSubmitDefinition + +> **CommentSubmitDefinition** = `object` + +## Properties + + + +### event + +> **event**: [`CommentSubmit`](CommentSubmit.md) + +*** + + + +### onEvent + +> **onEvent**: [`TriggerOnEventHandler`](TriggerOnEventHandler.md)\<[`CommentSubmit`](../@devvit/namespaces/EventTypes/interfaces/CommentSubmit.md)\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/CommentUpdate.md b/versioned_docs/version-0.13/api/public-api/type-aliases/CommentUpdate.md new file mode 100644 index 00000000..b4096feb --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/CommentUpdate.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: CommentUpdate + +> **CommentUpdate** = `"CommentUpdate"` + +The event name for when a comment is updated diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/CommentUpdateDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/CommentUpdateDefinition.md new file mode 100644 index 00000000..93eb65e3 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/CommentUpdateDefinition.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: CommentUpdateDefinition + +> **CommentUpdateDefinition** = `object` + +## Properties + + + +### event + +> **event**: [`CommentUpdate`](CommentUpdate.md) + +*** + + + +### onEvent + +> **onEvent**: [`TriggerOnEventHandler`](TriggerOnEventHandler.md)\<[`CommentUpdate`](../@devvit/namespaces/EventTypes/interfaces/CommentUpdate.md)\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/Configuration.md b/versioned_docs/version-0.13/api/public-api/type-aliases/Configuration.md new file mode 100644 index 00000000..844020d1 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/Configuration.md @@ -0,0 +1,105 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: Configuration + +> **Configuration** = `object` + +## Properties + + + +### blob? + +> `optional` **blob**: [`PluginSettings`](PluginSettings.md) \| `boolean` + +Allows your app to use the Blob Plugin + +*** + + + +### http? + +> `optional` **http**: [`PluginSettings`](PluginSettings.md) \| `boolean` \| \{ `domains`: `string`[]; \} + +Allows your app to use the HTTP/Fetch API + +*** + + + +### kvStore? + +> `optional` **kvStore**: [`PluginSettings`](PluginSettings.md) \| `boolean` + +Allows your app to use the Key-Value Store + +*** + + + +### media? + +> `optional` **media**: [`PluginSettings`](PluginSettings.md) \| `boolean` + +Allows media uploads from apps + +*** + + + +### realtime? + +> `optional` **realtime**: [`PluginSettings`](PluginSettings.md) \| `boolean` + +Allows your app to use the Realtime Plugin + +*** + + + +### redditAPI? + +> `optional` **redditAPI**: [`PluginSettings`](PluginSettings.md) \| `boolean` + +Allows your app to use the reddit API + +*** + + + +### redis? + +> `optional` **redis**: [`PluginSettings`](PluginSettings.md) \| `boolean` + +Allows your app to use the Redis Plugin + +*** + + + +### userActions? + +> `optional` **userActions**: `boolean` \| \{ `enabled`: `boolean`; \} \| \{ `scopes`: `Scope`[]; \} + +Allows your app to call Reddit APIs on behalf of the User. Passing a boolean allows you to submit post/comments on behalf of the user. + +#### Type declaration + +`boolean` + +\{ `enabled`: `boolean`; \} + +#### enabled + +> **enabled**: `boolean` + +Defaults to SUBMIT_POST and SUBMIT_COMMENT. + +\{ `scopes`: `Scope`[]; \} + +#### scopes + +> **scopes**: `Scope`[] diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/Context.md b/versioned_docs/version-0.13/api/public-api/type-aliases/Context.md new file mode 100644 index 00000000..73655c8c --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/Context.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: Context + +> **Context** = [`ContextAPIClients`](ContextAPIClients.md) & [`BaseContext`](BaseContext.md) + +The current app context of the event or render diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ContextAPIClients.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ContextAPIClients.md new file mode 100644 index 00000000..91a919dd --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ContextAPIClients.md @@ -0,0 +1,450 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ContextAPIClients + +> **ContextAPIClients** = `object` + +## Properties + + + +### assets + +> **assets**: `AssetsClient` + +A client for resolving static assets to public URLs + +*** + + + +### cache + +> **cache**: `CacheHelper` + +**`Experimental`** + +The cache helper will let you cache JSON-able objects in your devvit apps for a limited amount of time. + +Under the covers, It's just Redis, so you do need to enable the redis feature. This provides a pattern for e.g. fetching +remote calls without overwhelming someone's server. + +```ts +Devvit.configure({ + redis: true, // Enable access to Redis +}); + +/// ... + +let component = (context) => { + let cached = context.cache(async () => { + let rsp = await fetch("https://google.com") + return rsp.body + }, + { + key: "some-fetch", + ttl: 10_000 // millis + } + doSomethingWith(cached); + return yay +} +``` + +*** + + + +### dimensions? + +> `optional` **dimensions**: `UIDimensions` + +**`Experimental`** + +Information about about a custom post's layout. Will be undefined +for non custom post surface areas such as menu items and task schedulers. + +*** + + + +### kvStore + +> **kvStore**: [`KVStore`](KVStore.md) + +A client for the Key Value Store + +*** + + + +### media + +> **media**: [`MediaPlugin`](MediaPlugin.md) + +A client for media API + +*** + + + +### realtime + +> **realtime**: `RealtimeClient` + +A client for Realtime API + +*** + + + +### reddit + +> **reddit**: `RedditAPIClient` + +A client for the Reddit API + +*** + + + +### redis + +> **redis**: [`RedisClient`](RedisClient.md) + +A client for the Redis API + +*** + + + +### scheduler + +> **scheduler**: [`Scheduler`](Scheduler.md) + +A client for the Scheduler API + +*** + + + +### settings + +> **settings**: [`SettingsClient`](SettingsClient.md) + +A client for the Settings API + +*** + + + +### ui + +> **ui**: [`UIClient`](UIClient.md) + +A client for the User Interface API + +*** + + + +### uiEnvironment? + +> `optional` **uiEnvironment**: `UIEnvironment` + +**`Experimental`** + +Additional information about client environment. +Will be undefined for non-ui contexts such as task schedulers or triggers. + +*** + + + +### ~~useChannel()~~ + +> **useChannel**: \<`Message`\>(`options`) => [`UseChannelResult`](UseChannelResult.md)\<`Message`\> + +A hook for managing a realtime pubsub channel between Block renders. +This is only available within a Block Component. + +#### Type Parameters + +##### Message + +`Message` *extends* [`JSONValue`](JSONValue.md) = [`JSONValue`](JSONValue.md) + +#### Parameters + +##### options + +`ChannelOptions`\<`Message`\> + +#### Returns + +[`UseChannelResult`](UseChannelResult.md)\<`Message`\> + +#### Deprecated + +Using hooks from context is deprecated and will be removed in a future release. Import and use hooks directly from the public-api. +```ts +// Old: +const channel = context.useChannel(...); + +// New: +import { useChannel } from '@devvit/public-api' + +const channel = useChannel(...); +``` + +*** + + + +### ~~useForm()~~ + +> **useForm**: \<`T`\>(`form`, `onSubmit`) => [`FormKey`](FormKey.md) + +A hook for managing a form between Block renders. +This is only available within a Block Component. + +#### Type Parameters + +##### T + +`T` *extends* [`Form`](Form.md) \| [`FormFunction`](FormFunction.md) = [`Form`](Form.md) \| [`FormFunction`](FormFunction.md) + +#### Parameters + +##### form + +`T` + +##### onSubmit + +(`values`) => `void` \| `Promise`\<`void`\> + +#### Returns + +[`FormKey`](FormKey.md) + +#### Deprecated + +Using hooks from context is deprecated and will be removed in a future release. Import and use hooks directly from the public-api. +```ts +// Old: +const myForm = context.useForm(...); + +// New: +import { useForm } from '@devvit/public-api' + +const myForm = useForm(...); +``` + +*** + + + +### ~~useInterval~~ + +> **useInterval**: [`UseIntervalHook`](UseIntervalHook.md) + +A hook for managing a callback that runs on an interval between Block renders. +This is only available within a Block Component. + +#### Deprecated + +Using hooks from context is deprecated and will be removed in a future release. Import and use hooks directly from the public-api. +```ts +// Old: +const interval = context.useInterval(() => {}, 1000); + +// New: +import { useInterval } from '@devvit/public-api' + +const interval = useInterval(() => {}, 1000); +``` + +## Methods + + + +### ~~useState()~~ + +#### Call Signature + +> **useState**(`initialState`): [`UseStateResult`](UseStateResult.md)\<`boolean`\> + +A hook for managing a state between Block renders. This is only available +within a Block Component. Returns a tuple containing the current state and +a function to update it. + +```ts +const [counter, setCounter] = useState(0); +setCounter(1); // counter = 1 +setCounter((count) => count + 1) // counter = 2 +``` + +##### Parameters + +###### initialState + +`boolean` | () => `boolean` \| `Promise`\<`boolean`\> + +##### Returns + +[`UseStateResult`](UseStateResult.md)\<`boolean`\> + +##### Deprecated + +Using hooks from context is deprecated and will be removed in a future release. Import and use hooks directly from the public-api. +```ts +// Old: +const [counter, setCounter] = context.useState(0); + +// New: +import { useState } from '@devvit/public-api' + +const [counter, setCounter] = useState(0); +``` + +#### Call Signature + +> **useState**(`initialState`): [`UseStateResult`](UseStateResult.md)\<`number`\> + +A hook for managing a state between Block renders. This is only available +within a Block Component. Returns a tuple containing the current state and +a function to update it. + +```ts +const [counter, setCounter] = useState(0); +setCounter(1); // counter = 1 +setCounter((count) => count + 1) // counter = 2 +``` + +##### Parameters + +###### initialState + +`number` | () => `number` \| `Promise`\<`number`\> + +##### Returns + +[`UseStateResult`](UseStateResult.md)\<`number`\> + +##### Deprecated + +Using hooks from context is deprecated and will be removed in a future release. Import and use hooks directly from the public-api. +```ts +// Old: +const [counter, setCounter] = context.useState(0); + +// New: +import { useState } from '@devvit/public-api' + +const [counter, setCounter] = useState(0); +``` + +#### Call Signature + +> **useState**(`initialState`): [`UseStateResult`](UseStateResult.md)\<`string`\> + +A hook for managing a state between Block renders. This is only available +within a Block Component. Returns a tuple containing the current state and +a function to update it. + +```ts +const [counter, setCounter] = useState(0); +setCounter(1); // counter = 1 +setCounter((count) => count + 1) // counter = 2 +``` + +##### Parameters + +###### initialState + +`string` | () => `string` \| `Promise`\<`string`\> + +##### Returns + +[`UseStateResult`](UseStateResult.md)\<`string`\> + +##### Deprecated + +Using hooks from context is deprecated and will be removed in a future release. Import and use hooks directly from the public-api. +```ts +// Old: +const [counter, setCounter] = context.useState(0); + +// New: +import { useState } from '@devvit/public-api' + +const [counter, setCounter] = useState(0); +``` + +#### Call Signature + +> **useState**\<`S`\>(`initialState`): [`UseStateResult`](UseStateResult.md)\<`S`\> + +A hook for managing a state between Block renders. This is only available +within a Block Component. Returns a tuple containing the current state and +a function to update it. + +```ts +const [counter, setCounter] = useState(0); +setCounter(1); // counter = 1 +setCounter((count) => count + 1) // counter = 2 +``` + +##### Type Parameters + +###### S + +`S` *extends* `undefined` \| `void` \| [`JSONValue`](JSONValue.md) + +##### Parameters + +###### initialState + +A hook for managing a state between Block renders. This is only available +within a Block Component. Returns a tuple containing the current state and +a function to update it. + +```ts +const [counter, setCounter] = useState(0); +setCounter(1); // counter = 1 +setCounter((count) => count + 1) // counter = 2 +``` + +**Deprecated** + +Using hooks from context is deprecated and will be removed in a future release. Import and use hooks directly from the public-api. +```ts +// Old: +const [counter, setCounter] = context.useState(0); + +// New: +import { useState } from '@devvit/public-api' + +const [counter, setCounter] = useState(0); +``` + +`S` | () => `S` \| `Promise`\<`S`\> + +##### Returns + +[`UseStateResult`](UseStateResult.md)\<`S`\> + +##### Deprecated + +Using hooks from context is deprecated and will be removed in a future release. Import and use hooks directly from the public-api. +```ts +// Old: +const [counter, setCounter] = context.useState(0); + +// New: +import { useState } from '@devvit/public-api' + +const [counter, setCounter] = useState(0); +``` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ContextDebugInfo.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ContextDebugInfo.md new file mode 100644 index 00000000..58c76abd --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ContextDebugInfo.md @@ -0,0 +1,21 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ContextDebugInfo + +> **ContextDebugInfo** = `object` & `{ [key in AppDebug]?: string }` + +## Type declaration + +### effects? + +> `optional` **effects**: `EffectEmitter` + +### ~~metadata~~ + +> **metadata**: [`Metadata`](Metadata.md) + +#### Deprecated + +Use Context.metadata. diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/CustomPostType.md b/versioned_docs/version-0.13/api/public-api/type-aliases/CustomPostType.md new file mode 100644 index 00000000..3e25678a --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/CustomPostType.md @@ -0,0 +1,47 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: CustomPostType + +> **CustomPostType** = `object` + +## Properties + + + +### description? + +> `optional` **description**: `string` + +A description of the custom post type + +*** + + + +### height? + +> `optional` **height**: [`RootHeight`](../@devvit/namespaces/Devvit/namespaces/Blocks/type-aliases/RootHeight.md) + +The fixed height of the post, defaults to 'regular' + +*** + + + +### name + +> **name**: `string` + +The name of the custom post type + +*** + + + +### render + +> **render**: [`CustomPostComponent`](../@devvit/namespaces/Devvit/type-aliases/CustomPostComponent.md) + +A function component that renders the custom post diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/Data.md b/versioned_docs/version-0.13/api/public-api/type-aliases/Data.md new file mode 100644 index 00000000..32e3f3c3 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/Data.md @@ -0,0 +1,11 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ~~Data~~ + +> **Data** = [`JSONObject`](JSONObject.md) + +## Deprecated + +Use JSONObject instead. diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/DevvitDebug.md b/versioned_docs/version-0.13/api/public-api/type-aliases/DevvitDebug.md new file mode 100644 index 00000000..070e3ec1 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/DevvitDebug.md @@ -0,0 +1,34 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: DevvitDebug + +> **DevvitDebug** = `object` + +Home for debug flags, settings, and other information. Any type removals +may cause type errors but not runtime errors. + +**Favor ContextDebugInfo since request-based state is preferred.** + +## Properties + + + +### emitSnapshots? + +> `optional` **emitSnapshots**: `boolean` + +Should debug block rendering in console.log according to the reified JSX/XML output. Example: + + hi world + +*** + + + +### emitState? + +> `optional` **emitState**: `boolean` + +Should console.log the state of the app after every event. diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/Dispatch.md b/versioned_docs/version-0.13/api/public-api/type-aliases/Dispatch.md new file mode 100644 index 00000000..de7e4f55 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/Dispatch.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: Dispatch()\ + +> **Dispatch**\<`A`\> = (`value`) => `void` + +## Type Parameters + +### A + +`A` + +## Parameters + +### value + +`A` + +## Returns + +`void` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/Form.md b/versioned_docs/version-0.13/api/public-api/type-aliases/Form.md new file mode 100644 index 00000000..ddc2aee3 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/Form.md @@ -0,0 +1,57 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: Form + +> **Form** = `object` + +## Properties + + + +### acceptLabel? + +> `optional` **acceptLabel**: `string` + +An optional label for the submit button + +*** + + + +### cancelLabel? + +> `optional` **cancelLabel**: `string` + +An optional label for the cancel button + +*** + + + +### description? + +> `optional` **description**: `string` + +An optional description for the form + +*** + + + +### fields + +> **fields**: [`FormField`](FormField.md)[] + +The fields that will be displayed in the form + +*** + + + +### title? + +> `optional` **title**: `string` + +An optional title for the form diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/FormDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/FormDefinition.md new file mode 100644 index 00000000..0a7ca6e8 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/FormDefinition.md @@ -0,0 +1,33 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: FormDefinition\ + +> **FormDefinition**\<`T`\> = `object` + +## Type Parameters + +### T + +`T` *extends* [`Form`](Form.md) \| [`FormFunction`](FormFunction.md) = [`Form`](Form.md) \| [`FormFunction`](FormFunction.md) + +## Properties + + + +### form + +> **form**: `T` + +A form or a function that returns a form + +*** + + + +### onSubmit + +> **onSubmit**: [`FormOnSubmitEventHandler`](FormOnSubmitEventHandler.md)\<[`FormToFormValues`](FormToFormValues.md)\<`T`\>\> + +A callback that will be invoked when the form is submitted diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/FormField.md b/versioned_docs/version-0.13/api/public-api/type-aliases/FormField.md new file mode 100644 index 00000000..b56bf18f --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/FormField.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: FormField + +> **FormField** = [`StringField`](StringField.md) \| [`ImageField`](ImageField.md) \| [`ParagraphField`](ParagraphField.md) \| [`NumberField`](NumberField.md) \| [`BooleanField`](BooleanField.md) \| [`SelectField`](SelectField.md) \| [`FormFieldGroup`](FormFieldGroup.md) diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/FormFieldGroup.md b/versioned_docs/version-0.13/api/public-api/type-aliases/FormFieldGroup.md new file mode 100644 index 00000000..487cd790 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/FormFieldGroup.md @@ -0,0 +1,55 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: FormFieldGroup + +> **FormFieldGroup** = `object` + +A grouping of fields + +## Properties + + + +### fields + +> **fields**: [`FormField`](FormField.md)[] + +The fields that will be displayed in the group + +*** + + + +### helpText? + +> `optional` **helpText**: `string` + +An optional help text that will be displayed below the group + +*** + + + +### label + +> **label**: `string` + +The label of the group that will be displayed to the user + +*** + + + +### required? + +> `optional` **required**: `never` + +*** + + + +### type + +> **type**: `"group"` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/FormFunction.md b/versioned_docs/version-0.13/api/public-api/type-aliases/FormFunction.md new file mode 100644 index 00000000..b48bea89 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/FormFunction.md @@ -0,0 +1,41 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: FormFunction()\ + +> **FormFunction**\<`T`\> = (`data`) => [`Form`](Form.md) + +A function that returns a form. You can use this to dynamically generate a form. + +## Type Parameters + +### T + +`T` *extends* `object` = \{\} + +## Parameters + +### data + +`T` + +## Returns + +[`Form`](Form.md) + +## Example + +```ts +const formKey = Devvit.createForm((data) => ({ + fields: data.fields, + title: data.title, +}), callback); + +... + +ui.showForm(formKey, { + fields: [{ type: 'string', name: 'title', label: 'Title' }] + title: 'My dynamic form' +}); +``` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/FormKey.md b/versioned_docs/version-0.13/api/public-api/type-aliases/FormKey.md new file mode 100644 index 00000000..5891edce --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/FormKey.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: FormKey + +> **FormKey** = `` `form.${number}` `` \| `` `form.hook.${string}.${number}` `` + +A unique key generated by `Devvit.createForm` or the `useForm` hook. diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/FormOnSubmitEvent.md b/versioned_docs/version-0.13/api/public-api/type-aliases/FormOnSubmitEvent.md new file mode 100644 index 00000000..6f9c3e14 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/FormOnSubmitEvent.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: FormOnSubmitEvent\ + +> **FormOnSubmitEvent**\<`T`\> = `object` + +## Type Parameters + +### T + +`T` *extends* `Partial`\<[`JSONObject`](JSONObject.md)\> + +## Properties + + + +### values + +> **values**: `T` + +The form values that were submitted diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/FormOnSubmitEventHandler.md b/versioned_docs/version-0.13/api/public-api/type-aliases/FormOnSubmitEventHandler.md new file mode 100644 index 00000000..ae713148 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/FormOnSubmitEventHandler.md @@ -0,0 +1,27 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: FormOnSubmitEventHandler()\ + +> **FormOnSubmitEventHandler**\<`Data`\> = (`event`, `context`) => `void` \| `Promise`\<`void`\> + +## Type Parameters + +### Data + +`Data` *extends* `Partial`\<[`JSONObject`](JSONObject.md)\> + +## Parameters + +### event + +[`FormOnSubmitEvent`](FormOnSubmitEvent.md)\<`Data`\> + +### context + +[`Context`](../@devvit/namespaces/Devvit/type-aliases/Context.md) + +## Returns + +`void` \| `Promise`\<`void`\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/FormToFormValues.md b/versioned_docs/version-0.13/api/public-api/type-aliases/FormToFormValues.md new file mode 100644 index 00000000..0aa4386f --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/FormToFormValues.md @@ -0,0 +1,13 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: FormToFormValues\ + +> **FormToFormValues**\<`T`\> = `FormFieldsToFormValues`\<`T` *extends* [`FormFunction`](FormFunction.md) ? `ReturnType`\<`T`\> : `T`\[`"fields"`\]\> + +## Type Parameters + +### T + +`T` *extends* [`Form`](Form.md) \| [`FormFunction`](FormFunction.md) = [`Form`](Form.md) \| [`FormFunction`](FormFunction.md) diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/FormValues.md b/versioned_docs/version-0.13/api/public-api/type-aliases/FormValues.md new file mode 100644 index 00000000..7b074211 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/FormValues.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: FormValues + +> **FormValues** = `FormValuesTyped`\<[`JSONObject`](JSONObject.md)\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/IconName.md b/versioned_docs/version-0.13/api/public-api/type-aliases/IconName.md new file mode 100644 index 00000000..a062aa05 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/IconName.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: IconName + +> **IconName** = `` `${AllIconName}` `` \| `` `${AllIconName}-outline` `` \| `` `${AllIconName}-fill` `` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ImageField.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ImageField.md new file mode 100644 index 00000000..1ca068b3 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ImageField.md @@ -0,0 +1,18 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ImageField + +> **ImageField** = `Omit`\<[`BaseField`](BaseField.md)\<`string`\>, `"defaultValue"`\> & `object` + +**`Experimental`** + +Allows a user to upload an image as part of submitting the form. The string value that's +given back is the URL of the image. + +## Type declaration + +### type + +> **type**: `"image"` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/JSONArray.md b/versioned_docs/version-0.13/api/public-api/type-aliases/JSONArray.md new file mode 100644 index 00000000..4caeffee --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/JSONArray.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: JSONArray + +> **JSONArray** = [`JSONValue`](JSONValue.md)[] diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/JSONObject.md b/versioned_docs/version-0.13/api/public-api/type-aliases/JSONObject.md new file mode 100644 index 00000000..4c83a032 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/JSONObject.md @@ -0,0 +1,11 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: JSONObject + +> **JSONObject** = `object` + +## Index Signature + +\[`key`: `string`\]: [`JSONValue`](JSONValue.md) diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/JSONPrimitive.md b/versioned_docs/version-0.13/api/public-api/type-aliases/JSONPrimitive.md new file mode 100644 index 00000000..f276c0e5 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/JSONPrimitive.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: JSONPrimitive + +> **JSONPrimitive** = `boolean` \| `null` \| `number` \| `string` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/JSONValue.md b/versioned_docs/version-0.13/api/public-api/type-aliases/JSONValue.md new file mode 100644 index 00000000..4342d1c9 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/JSONValue.md @@ -0,0 +1,19 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: JSONValue + +> **JSONValue** = [`JSONPrimitive`](JSONPrimitive.md) \| [`JSONArray`](JSONArray.md) \| [`JSONObject`](JSONObject.md) + +Any JSON type. Ie, a string, number, boolean, null, an array of these JSON +types, or an object with JSON type values, recursively. + +This type is often used to type-check attempts to serialize and deserialize +classes, functions, and other _JavaScript_-only types that cannot be +represented losslessly in plain JSON. + +## See + + - https://github.com/microsoft/TypeScript/issues/1897 + - https://www.json.org diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/JobContext.md b/versioned_docs/version-0.13/api/public-api/type-aliases/JobContext.md new file mode 100644 index 00000000..856a728d --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/JobContext.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: JobContext + +> **JobContext** = `Omit`\<[`Context`](../@devvit/namespaces/Devvit/type-aliases/Context.md), `"ui"` \| `"dimensions"` \| `"modLog"` \| `"uiEnvironment"`\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/KVStore.md b/versioned_docs/version-0.13/api/public-api/type-aliases/KVStore.md new file mode 100644 index 00000000..0267dc5e --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/KVStore.md @@ -0,0 +1,91 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: KVStore + +> **KVStore** = `object` + +## Methods + + + +### delete() + +> **delete**(`key`): `Promise`\<`void`\> + +Deletes a key from the store if present + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### get() + +> **get**\<`T`\>(`key`): `Promise`\<`undefined` \| `T`\> + +Retrieves a value from the store at the given key + +#### Type Parameters + +##### T + +`T` *extends* [`JSONValue`](JSONValue.md) = [`JSONValue`](JSONValue.md) + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`undefined` \| `T`\> + +*** + + + +### list() + +> **list**(): `Promise`\<`string`[]\> + +Returns a list of keys in the store + +#### Returns + +`Promise`\<`string`[]\> + +*** + + + +### put() + +> **put**(`key`, `value`): `Promise`\<`void`\> + +Assigns a value to a key in the store + +#### Parameters + +##### key + +`string` + +##### value + +[`JSONValue`](JSONValue.md) + +#### Returns + +`Promise`\<`void`\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/MediaAsset.md b/versioned_docs/version-0.13/api/public-api/type-aliases/MediaAsset.md new file mode 100644 index 00000000..c64c8e88 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/MediaAsset.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: MediaAsset + +> **MediaAsset** = `object` + +## Properties + + + +### mediaId + +> **mediaId**: `string` + +*** + + + +### mediaUrl + +> **mediaUrl**: `string` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/MediaPlugin.md b/versioned_docs/version-0.13/api/public-api/type-aliases/MediaPlugin.md new file mode 100644 index 00000000..e9cbfdfd --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/MediaPlugin.md @@ -0,0 +1,41 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: MediaPlugin + +> **MediaPlugin** = `object` + +## Methods + + + +### upload() + +> **upload**(`opts`): `Promise`\<[`MediaAsset`](MediaAsset.md)\> + +Uploads media from external URL to Reddit + +#### Parameters + +##### opts + +[`UploadMediaOptions`](UploadMediaOptions.md) + +#### Returns + +`Promise`\<[`MediaAsset`](MediaAsset.md)\> + +A Promise that resolves to a MediaAsset object. + +#### Example + +```ts + const response = await context.media.upload({ + url: "https://media2.giphy.com/media/xTiN0CNHgoRf1Ha7CM/giphy.gif", + type: "gif" + }); + res.json({ + imageUrl: response.mediaUrl // This reddit hosted URL can be displayed by your client + }); +``` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/MenuItem.md b/versioned_docs/version-0.13/api/public-api/type-aliases/MenuItem.md new file mode 100644 index 00000000..0b132437 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/MenuItem.md @@ -0,0 +1,83 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: MenuItem + +> **MenuItem** = `object` + +## Properties + + + +### description? + +> `optional` **description**: `string` + +An optional description for the menu item + +*** + + + +### forUserType? + +> `optional` **forUserType**: [`MenuItemUserType`](MenuItemUserType.md) \| [`MenuItemUserType`](MenuItemUserType.md)[] + +The user type(s) that the menu item should be displayed for + +*** + + + +### label + +> **label**: `string` + +The label of the menu item + +*** + + + +### location + +> **location**: [`MenuItemLocation`](MenuItemLocation.md) \| [`MenuItemLocation`](MenuItemLocation.md)[] + +The location(s) where the menu item should be displayed + +*** + + + +### onPress() + +> **onPress**: (`event`, `context`) => `void` \| `Promise`\<`void`\> + +A function that is called when the menu item is pressed + +#### Parameters + +##### event + +[`MenuItemOnPressEvent`](MenuItemOnPressEvent.md) + +##### context + +[`Context`](../@devvit/namespaces/Devvit/type-aliases/Context.md) + +#### Returns + +`void` \| `Promise`\<`void`\> + +*** + + + +### postFilter? + +> `optional` **postFilter**: [`MenuItemPostFilter`](MenuItemPostFilter.md) + +**`Experimental`** + +The filter that applies to post menu items and has no effect on non-post actions diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/MenuItemLocation.md b/versioned_docs/version-0.13/api/public-api/type-aliases/MenuItemLocation.md new file mode 100644 index 00000000..7ee13103 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/MenuItemLocation.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: MenuItemLocation + +> **MenuItemLocation** = `"subreddit"` \| `"post"` \| `"comment"` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/MenuItemOnPressEvent.md b/versioned_docs/version-0.13/api/public-api/type-aliases/MenuItemOnPressEvent.md new file mode 100644 index 00000000..22d351eb --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/MenuItemOnPressEvent.md @@ -0,0 +1,31 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: MenuItemOnPressEvent + +> **MenuItemOnPressEvent** = `object` + +## Properties + + + +### location + +> **location**: [`MenuItemLocation`](MenuItemLocation.md) + +The location where the menu item was pressed + +*** + + + +### targetId + +> **targetId**: `string` + +The ID of subreddit, post, or comment that the menu item was pressed; +includes Thing ID prefix: +- t1_ - comment +- t5_ - subreddit +- t3_ - post diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/MenuItemPostFilter.md b/versioned_docs/version-0.13/api/public-api/type-aliases/MenuItemPostFilter.md new file mode 100644 index 00000000..d721eb65 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/MenuItemPostFilter.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: MenuItemPostFilter + +> **MenuItemPostFilter** = `"currentApp"` + +You can use the "currentApp" filter to only display the menu item on custom posts that were created by your app. diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/MenuItemUserType.md b/versioned_docs/version-0.13/api/public-api/type-aliases/MenuItemUserType.md new file mode 100644 index 00000000..d48f821c --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/MenuItemUserType.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: MenuItemUserType + +> **MenuItemUserType** = `"loggedOut"` \| `"moderator"` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/Metadata.md b/versioned_docs/version-0.13/api/public-api/type-aliases/Metadata.md new file mode 100644 index 00000000..5bf37487 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/Metadata.md @@ -0,0 +1,13 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: Metadata + +> **Metadata** = `object` + +Optional RPC metadata passed with every request. + +## Index Signature + +\[`key`: `string`\]: `Strings` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ModActionDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ModActionDefinition.md new file mode 100644 index 00000000..c9cbe442 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ModActionDefinition.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ModActionDefinition + +> **ModActionDefinition** = `object` + +## Properties + + + +### event + +> **event**: [`ModActionTrigger`](ModActionTrigger.md) + +*** + + + +### onEvent + +> **onEvent**: [`TriggerOnEventHandler`](TriggerOnEventHandler.md)\<`protos.ModAction`\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ModActionTrigger.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ModActionTrigger.md new file mode 100644 index 00000000..0c0dd8d6 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ModActionTrigger.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ModActionTrigger + +> **ModActionTrigger** = `"ModAction"` + +The event name for when a moderator action is recorded to a subreddit's modlog diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ModMailDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ModMailDefinition.md new file mode 100644 index 00000000..699f0cb0 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ModMailDefinition.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ModMailDefinition + +> **ModMailDefinition** = `object` + +## Properties + + + +### event + +> **event**: [`ModMailTrigger`](ModMailTrigger.md) + +*** + + + +### onEvent + +> **onEvent**: [`TriggerOnEventHandler`](TriggerOnEventHandler.md)\<`protos.ModMail`\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ModMailTrigger.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ModMailTrigger.md new file mode 100644 index 00000000..8669cf02 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ModMailTrigger.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ModMailTrigger + +> **ModMailTrigger** = `"ModMail"` + +The event name for when a mod mail is sent/received diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/MultiTriggerDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/MultiTriggerDefinition.md new file mode 100644 index 00000000..6e8db7fd --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/MultiTriggerDefinition.md @@ -0,0 +1,29 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: MultiTriggerDefinition\ + +> **MultiTriggerDefinition**\<`Event`\> = `object` + +## Type Parameters + +### Event + +`Event` *extends* [`TriggerEvent`](TriggerEvent.md) + +## Properties + + + +### events + +> **events**: readonly `Event`[] + +*** + + + +### onEvent + +> **onEvent**: [`TriggerOnEventHandler`](TriggerOnEventHandler.md)\<[`TriggerEventType`](TriggerEventType.md)\[`Event`\]\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/NumberField.md b/versioned_docs/version-0.13/api/public-api/type-aliases/NumberField.md new file mode 100644 index 00000000..3089fc44 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/NumberField.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: NumberField + +> **NumberField** = `Prettify`\<[`BaseField`](BaseField.md)\<`number`\> & `Omit`\<`FieldConfig_Number`, `"min"` \| `"max"` \| `"step"`\> & `object`\> + +A number field diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/OnAutomoderatorFilterCommentDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/OnAutomoderatorFilterCommentDefinition.md new file mode 100644 index 00000000..af49cca7 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/OnAutomoderatorFilterCommentDefinition.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: OnAutomoderatorFilterCommentDefinition + +> **OnAutomoderatorFilterCommentDefinition** = `object` + +## Properties + + + +### event + +> **event**: [`AutomoderatorFilterComment`](AutomoderatorFilterComment.md) + +*** + + + +### onEvent + +> **onEvent**: [`TriggerOnEventHandler`](TriggerOnEventHandler.md)\<[`AutomoderatorFilterComment`](../@devvit/namespaces/EventTypes/interfaces/AutomoderatorFilterComment.md)\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/OnAutomoderatorFilterPostDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/OnAutomoderatorFilterPostDefinition.md new file mode 100644 index 00000000..f90d426a --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/OnAutomoderatorFilterPostDefinition.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: OnAutomoderatorFilterPostDefinition + +> **OnAutomoderatorFilterPostDefinition** = `object` + +## Properties + + + +### event + +> **event**: [`AutomoderatorFilterPost`](AutomoderatorFilterPost.md) + +*** + + + +### onEvent + +> **onEvent**: [`TriggerOnEventHandler`](TriggerOnEventHandler.md)\<[`AutomoderatorFilterPost`](../@devvit/namespaces/EventTypes/interfaces/AutomoderatorFilterPost.md)\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/OnTriggerRequest.md b/versioned_docs/version-0.13/api/public-api/type-aliases/OnTriggerRequest.md new file mode 100644 index 00000000..bc2d8181 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/OnTriggerRequest.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: OnTriggerRequest + +> **OnTriggerRequest** = [`PostFlairUpdate`](../@devvit/namespaces/EventTypes/interfaces/PostFlairUpdate.md) \| [`PostSubmit`](../@devvit/namespaces/EventTypes/interfaces/PostSubmit.md) \| [`PostCreate`](../@devvit/namespaces/EventTypes/interfaces/PostCreate.md) \| [`PostUpdate`](../@devvit/namespaces/EventTypes/interfaces/PostUpdate.md) \| [`PostReport`](../@devvit/namespaces/EventTypes/interfaces/PostReport.md) \| [`PostDelete`](../@devvit/namespaces/EventTypes/interfaces/PostDelete.md) \| [`CommentSubmit`](../@devvit/namespaces/EventTypes/interfaces/CommentSubmit.md) \| [`CommentCreate`](../@devvit/namespaces/EventTypes/interfaces/CommentCreate.md) \| [`CommentUpdate`](../@devvit/namespaces/EventTypes/interfaces/CommentUpdate.md) \| [`CommentReport`](../@devvit/namespaces/EventTypes/interfaces/CommentReport.md) \| [`CommentDelete`](../@devvit/namespaces/EventTypes/interfaces/CommentDelete.md) \| [`AppInstall`](../@devvit/namespaces/EventTypes/interfaces/AppInstall.md) \| [`AppUpgrade`](../@devvit/namespaces/EventTypes/interfaces/AppUpgrade.md) \| `protos.ModAction` \| `protos.ModMail` \| [`PostNsfwUpdate`](../@devvit/namespaces/EventTypes/interfaces/PostNsfwUpdate.md) \| [`PostSpoilerUpdate`](../@devvit/namespaces/EventTypes/interfaces/PostSpoilerUpdate.md) \| [`AutomoderatorFilterPost`](../@devvit/namespaces/EventTypes/interfaces/AutomoderatorFilterPost.md) \| [`AutomoderatorFilterComment`](../@devvit/namespaces/EventTypes/interfaces/AutomoderatorFilterComment.md) diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/OnValidateHandler.md b/versioned_docs/version-0.13/api/public-api/type-aliases/OnValidateHandler.md new file mode 100644 index 00000000..4359f312 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/OnValidateHandler.md @@ -0,0 +1,27 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: OnValidateHandler()\ + +> **OnValidateHandler**\<`ValueType`\> = (`event`, `context`) => `void` \| `string` \| `Promise`\<`void` \| `string`\> + +## Type Parameters + +### ValueType + +`ValueType` + +## Parameters + +### event + +[`SettingsFormFieldValidatorEvent`](SettingsFormFieldValidatorEvent.md)\<`ValueType`\> + +### context + +[`Context`](../@devvit/namespaces/Devvit/type-aliases/Context.md) + +## Returns + +`void` \| `string` \| `Promise`\<`void` \| `string`\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ParagraphField.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ParagraphField.md new file mode 100644 index 00000000..87b9ecf6 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ParagraphField.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ParagraphField + +> **ParagraphField** = `Prettify`\<[`BaseField`](BaseField.md)\<`string`\> & `Omit`\<`FieldConfig_Paragraph`, `"maxCharacters"`\> & `object`\> + +A paragraph or textarea field diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PartialJSONArray.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PartialJSONArray.md new file mode 100644 index 00000000..fb3596f8 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PartialJSONArray.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PartialJSONArray + +> **PartialJSONArray** = [`PartialJSONValue`](PartialJSONValue.md)[] diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PartialJSONObject.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PartialJSONObject.md new file mode 100644 index 00000000..76f8b13b --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PartialJSONObject.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PartialJSONObject + +> **PartialJSONObject** = `Partial`\<\{\}\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PartialJSONPrimitive.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PartialJSONPrimitive.md new file mode 100644 index 00000000..cc172e86 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PartialJSONPrimitive.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PartialJSONPrimitive + +> **PartialJSONPrimitive** = `boolean` \| `null` \| `number` \| `string` \| `undefined` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PartialJSONValue.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PartialJSONValue.md new file mode 100644 index 00000000..b92ce734 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PartialJSONValue.md @@ -0,0 +1,25 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PartialJSONValue + +> **PartialJSONValue** = [`PartialJSONPrimitive`](PartialJSONPrimitive.md) \| [`PartialJSONArray`](PartialJSONArray.md) \| [`PartialJSONObject`](PartialJSONObject.md) + +Like JSONValue but deeply allow lossy undefined values that are easier to +type but may de/serialize differently or incorrectly. For example: + +- `JSON.stringify({a: 1, b: 2, c: undefined, d: 3})`: `'{"a":1,"b":2,"d":3}'`. +- `JSON.stringify([1, 2, undefined, 3])`: `'[1,2,null,3]'`. +- `JSON.stringify(undefined)`: `undefined`. + +JSON.stringify() accepts an `any` input so there are no typing guards. Prefer +plain JSONValue when possible. + +One mostly only cares about stringify since creating a JSON string with +undefineds in it would require deliberate effort. These all throw errors: + +- `JSON.parse('{a: 1, b: 2, c: undefined, d: 3}')`. +- `JSON.parse('[1, 2, undefined, 3]')`. +- `JSON.parse('undefined')`. +- `JSON.parse(undefined)` (also a typing error). diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PluginSettings.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PluginSettings.md new file mode 100644 index 00000000..ce9d9500 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PluginSettings.md @@ -0,0 +1,17 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PluginSettings + +> **PluginSettings** = `object` + +## Properties + + + +### enabled + +> **enabled**: `boolean` + +Whether the plugin is enabled diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PostCreate.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PostCreate.md new file mode 100644 index 00000000..afa3c702 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PostCreate.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PostCreate + +> **PostCreate** = `"PostCreate"` + +The event name for when a post is created, after safety delay diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PostCreateDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PostCreateDefinition.md new file mode 100644 index 00000000..24715595 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PostCreateDefinition.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PostCreateDefinition + +> **PostCreateDefinition** = `object` + +## Properties + + + +### event + +> **event**: [`PostCreate`](PostCreate.md) + +*** + + + +### onEvent + +> **onEvent**: [`TriggerOnEventHandler`](TriggerOnEventHandler.md)\<[`PostCreate`](../@devvit/namespaces/EventTypes/interfaces/PostCreate.md)\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PostDelete.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PostDelete.md new file mode 100644 index 00000000..ce910333 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PostDelete.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PostDelete + +> **PostDelete** = `"PostDelete"` + +The event name for when a post is deleted diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PostDeleteDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PostDeleteDefinition.md new file mode 100644 index 00000000..d78341e5 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PostDeleteDefinition.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PostDeleteDefinition + +> **PostDeleteDefinition** = `object` + +## Properties + + + +### event + +> **event**: [`PostDelete`](PostDelete.md) + +*** + + + +### onEvent + +> **onEvent**: [`TriggerOnEventHandler`](TriggerOnEventHandler.md)\<[`PostDelete`](../@devvit/namespaces/EventTypes/interfaces/PostDelete.md)\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PostFlairUpdate.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PostFlairUpdate.md new file mode 100644 index 00000000..79f47c7a --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PostFlairUpdate.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PostFlairUpdate + +> **PostFlairUpdate** = `"PostFlairUpdate"` + +The event name for when the flair of a post is updated diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PostFlairUpdateDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PostFlairUpdateDefinition.md new file mode 100644 index 00000000..b17ad5ce --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PostFlairUpdateDefinition.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PostFlairUpdateDefinition + +> **PostFlairUpdateDefinition** = `object` + +## Properties + + + +### event + +> **event**: [`PostFlairUpdate`](PostFlairUpdate.md) + +*** + + + +### onEvent + +> **onEvent**: [`TriggerOnEventHandler`](TriggerOnEventHandler.md)\<[`PostFlairUpdate`](../@devvit/namespaces/EventTypes/interfaces/PostFlairUpdate.md)\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PostNsfwUpdate.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PostNsfwUpdate.md new file mode 100644 index 00000000..32f7214b --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PostNsfwUpdate.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PostNsfwUpdate + +> **PostNsfwUpdate** = `"PostNsfwUpdate"` + +The event name for when a post is marked/unmarked as nsfw diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PostNsfwUpdateDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PostNsfwUpdateDefinition.md new file mode 100644 index 00000000..717ecb9c --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PostNsfwUpdateDefinition.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PostNsfwUpdateDefinition + +> **PostNsfwUpdateDefinition** = `object` + +## Properties + + + +### event + +> **event**: [`PostNsfwUpdate`](PostNsfwUpdate.md) + +*** + + + +### onEvent + +> **onEvent**: [`TriggerOnEventHandler`](TriggerOnEventHandler.md)\<[`PostNsfwUpdate`](../@devvit/namespaces/EventTypes/interfaces/PostNsfwUpdate.md)\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PostReport.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PostReport.md new file mode 100644 index 00000000..2a010c7b --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PostReport.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PostReport + +> **PostReport** = `"PostReport"` + +The event name for when a post is reported diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PostReportDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PostReportDefinition.md new file mode 100644 index 00000000..22589e02 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PostReportDefinition.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PostReportDefinition + +> **PostReportDefinition** = `object` + +## Properties + + + +### event + +> **event**: [`PostReport`](PostReport.md) + +*** + + + +### onEvent + +> **onEvent**: [`TriggerOnEventHandler`](TriggerOnEventHandler.md)\<[`PostReport`](../@devvit/namespaces/EventTypes/interfaces/PostReport.md)\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PostSpoilerUpdate.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PostSpoilerUpdate.md new file mode 100644 index 00000000..679706ff --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PostSpoilerUpdate.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PostSpoilerUpdate + +> **PostSpoilerUpdate** = `"PostSpoilerUpdate"` + +The event name for when a post is marked/unmarked as spoiler diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PostSpoilerUpdateDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PostSpoilerUpdateDefinition.md new file mode 100644 index 00000000..491ba212 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PostSpoilerUpdateDefinition.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PostSpoilerUpdateDefinition + +> **PostSpoilerUpdateDefinition** = `object` + +## Properties + + + +### event + +> **event**: [`PostSpoilerUpdate`](PostSpoilerUpdate.md) + +*** + + + +### onEvent + +> **onEvent**: [`TriggerOnEventHandler`](TriggerOnEventHandler.md)\<[`PostSpoilerUpdate`](../@devvit/namespaces/EventTypes/interfaces/PostSpoilerUpdate.md)\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PostSubmit.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PostSubmit.md new file mode 100644 index 00000000..4825f6fc --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PostSubmit.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PostSubmit + +> **PostSubmit** = `"PostSubmit"` + +The event name for when a post is submitted diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PostSubmitDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PostSubmitDefinition.md new file mode 100644 index 00000000..c2d109ae --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PostSubmitDefinition.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PostSubmitDefinition + +> **PostSubmitDefinition** = `object` + +## Properties + + + +### event + +> **event**: [`PostSubmit`](PostSubmit.md) + +*** + + + +### onEvent + +> **onEvent**: [`TriggerOnEventHandler`](TriggerOnEventHandler.md)\<[`PostSubmit`](../@devvit/namespaces/EventTypes/interfaces/PostSubmit.md)\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PostUpdate.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PostUpdate.md new file mode 100644 index 00000000..e293d4f7 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PostUpdate.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PostUpdate + +> **PostUpdate** = `"PostUpdate"` + +The event name for when a post is updated diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/PostUpdateDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/PostUpdateDefinition.md new file mode 100644 index 00000000..0cf90261 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/PostUpdateDefinition.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: PostUpdateDefinition + +> **PostUpdateDefinition** = `object` + +## Properties + + + +### event + +> **event**: [`PostUpdate`](PostUpdate.md) + +*** + + + +### onEvent + +> **onEvent**: [`TriggerOnEventHandler`](TriggerOnEventHandler.md)\<[`PostUpdate`](../@devvit/namespaces/EventTypes/interfaces/PostUpdate.md)\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/RedisClient.md b/versioned_docs/version-0.13/api/public-api/type-aliases/RedisClient.md new file mode 100644 index 00000000..ceaf598f --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/RedisClient.md @@ -0,0 +1,2212 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: RedisClient + +> **RedisClient** = `object` + +## Properties + + + +### global + +> **global**: `Omit`\<`RedisClient`, `"global"`\> + +Allows read/write operations to global keys in Redis +Global redis enables apps to persist and access state across subreddit installations + +## Methods + + + +### bitfield() + +> **bitfield**(`key`, ...`cmds`): `Promise`\<`number`[]\> + +Performs operations on a redis string treating it as an array of bits. +Operations available: + - get -- Returns the specified bit field. + - set -- Sets the specified bit field and returns its old value. + - incrBy -- Increments or decrements (if a negative increment is given) the specified bit field and returns the new value. + - overflow [wrap|sat|fail] -- Alters the overflow behavior of subsequent set's and incrBy's until the next overflow command +https://redis.io/docs/latest/commands/bitfield/ + +#### Parameters + +##### key + +`string` + +##### cmds + +\[\] | [`BitfieldCommand`](BitfieldCommand.md) | \[`"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`\] | \[`"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``\] | \[`"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``\] | \[`"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`\] | \[`"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`\] | \[`"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``\] | \[`"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``\] | \[`"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`\] | \[`"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`\] | \[`"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``\] | \[`"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``\] | \[`"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`\] | \[`"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`\] | \[`"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``\] | \[`"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``\] | \[`"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`\] | \[`"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, ...(string \| number)\[\]\] | \[`"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, ...(string \| number)\[\]\] | \[`"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, ...(string \| number)\[\]\] | \[`"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, ...(string \| number)\[\]\] | \[`"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, ...(string \| number)\[\]\] | \[`"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, ...(string \| number)\[\]\] | \[`"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, ...(string \| number)\[\]\] | \[`"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, ...(string \| number)\[\]\] | \[`"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, ...(string \| number)\[\]\] | \[`"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, ...(string \| number)\[\]\] | \[`"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, ...(string \| number)\[\]\] | \[`"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"set"`, `` `i${number}` `` \| `` `u${number}` ``\] | \[`"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``\] | \[`"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, ...(string \| number)\[\]\] | \[`"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, ...(string \| number)\[\]\] | \[`"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"set"`, `` `i${number}` `` \| `` `u${number}` ``\] | \[`"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``\] | \[`"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, ...(string \| number)\[\]\] | \[`"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, ...(string \| number)\[\]\] | \[`"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, ...(string \| number)\[\]\] | \[`"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, ...(string \| number)\[\]\] | \[`"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, ...(string \| number)\[\]\] | \[`"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, ...(string \| number)\[\]\] | \[`"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"set"`, `` `i${number}` `` \| `` `u${number}` ``\] | \[`"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``\] | \[`"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, ...(string \| number)\[\]\] | \[`"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, ...(string \| number)\[\]\] | \[`"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"set"`, `` `i${number}` `` \| `` `u${number}` ``\] | \[`"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``\] | \[`"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, ...(string \| number)\[\]\] | \[`"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, ...(string \| number)\[\]\] | \[`"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, ...(string \| number)\[\]\] | \[`"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, ...(string \| number)\[\]\] | \[`"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, ...(string \| number)\[\]\] | \[`"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, ...(string \| number)\[\]\] | \[`"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, ...(string \| number)\[\]\] | \[`"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, ...(string \| number)\[\]\] | \[`"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, ...(string \| number)\[\]\] | \[`"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"get"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, ...(string \| number)\[\]\] | \[`"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"set"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"incrBy"`, `` `i${number}` `` \| `` `u${number}` ``, `BitfieldOffset`, `number` \| `` `${number}` ``, ...(string \| number)\[\]\] | \[`"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, `"overflow"`, `"wrap"` \| `"sat"` \| `"fail"`, ...(string \| number)\[\]\] + +#### Returns + +`Promise`\<`number`[]\> + +an array with the result of each command, in order + +#### Arg + +key the redis key containing the string to operate on + +#### Arg + +cmds the commands to perform on the string + +#### Example + +```ts +async function bitfieldExample(context: Devvit.Context) { + const fooResults : number[] = + await context.redis.bitfield('foo', 'incrBy', 'i5', 100, 1, 'get', 'u4', 0); + console.log("fooResults: " + fooResults); // [1, 0] + + const barResults : number[] = + await context.redis.bitfield('bar', + 'set', 'u2', 0, 3, + 'get', 'u2', 0, + 'incrBy', 'u2', 0, 1, + 'overflow', 'sat', + 'get', 'u2', 0, + 'set', 'u2', 0, 3, + 'incrBy', 'u2', 0, 1); + console.log("barResults: " + barResults); // [0, 3, 0, 0, 3, 3] +} +``` + +*** + + + +### del() + +> **del**(...`keys`): `Promise`\<`void`\> + +Removes the specified keys. A key is ignored if it does not exist. +https://redis.io/commands/del/ + +#### Parameters + +##### keys + +...`string`[] + +#### Returns + +`Promise`\<`void`\> + +#### Arg + +keys + +#### Example + +```ts +async function delExample(context: Devvit.Context) { + await context.redis.set("quantity", "5"); + await context.redis.del("quantity"); +} +``` + +*** + + + +### exists() + +> **exists**(...`keys`): `Promise`\<`number`\> + +Returns number of given keys that exists +https://redis.io/commands/exists/ + +#### Parameters + +##### keys + +...`string`[] + +#### Returns + +`Promise`\<`number`\> + +number of keys in the list of keys that exist (note: double counts if an existing key is passed twice) + +#### Arg + +keys Keys to check for existence + +#### Example + +```ts +async function existsExample(context: Devvit.Context) { + const exists : number = await context.redis.exists("someKey"); + console.log("Exists: " + exists); // 0 + + await context.redis.set("someKey", "someValue"); + const exists2 : number = await context.redis.exists("someKey", "someOtherKey"); + console.log("Exists2: " + exists2); // 1 + + await context.redis.set("someOtherKey", "someOtherValue"); + const exists3 : number = await context.redis.exists("someKey", "someKey", "someOtherKey"); + console.log("Exists3: " + exists3); // 3, since "someKey" is counted twice +} +``` + +*** + + + +### expire() + +> **expire**(`key`, `seconds`): `Promise`\<`void`\> + +Set a timeout on key. +https://redis.io/commands/expire/ + +#### Parameters + +##### key + +`string` + +##### seconds + +`number` + +#### Returns + +`Promise`\<`void`\> + +#### Arg + +key + +#### Arg + +seconds + +#### Example + +```ts +async function expireExample(context: Devvit.Context) { + await context.redis.set("product", "milk"); + await context.redis.expire("product", 60); // Set the product to expire in 60 seconds +} +``` + +*** + + + +### expireTime() + +> **expireTime**(`key`): `Promise`\<`number`\> + +Returns the absolute Unix timestamp in seconds at which the given key will expire +https://redis.io/commands/expiretime/ + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`number`\> + +expiration Unix timestamp in seconds, or a negative value in order to signal an error + +#### Arg + +key + +#### Example + +```ts +async function expireTimeExample(context: Devvit.Context) { + await context.redis.set("product", "milk"); + const expireTime : number = await context.redis.expireTime("product"); + console.log("Expire time: " + expireTime); +} +``` + +*** + + + +### get() + +> **get**(`key`): `Promise`\<`undefined` \| `string`\> + +Get the value of key. If the key does not exist the special value nil is returned. +An exception will be raised if the value of key is not a valid utf-8 encoding. +https://redis.io/commands/get/ + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`undefined` \| `string`\> + +value of key or null when key does not exist. + +#### Arg + +key + +#### Example + +```ts +async function getExample(context: Devvit.Context) { + await context.redis.set("quantity", "5"); + const quantity : string | undefined = await context.redis.get("quantity"); + console.log("Quantity: " + quantity); +} +``` + +*** + + + +### getBuffer() + +> **getBuffer**(`key`): `Promise`\<`undefined` \| `Buffer`\> + +Get the value of key and return it as a buffer. +Use getBytes instead of get if you need to tolerate values that are not valid utf-8. +If the key does not exist the special value nil is returned. +https://redis.io/commands/get/ + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`undefined` \| `Buffer`\> + +value of key or null when key does not exist. + +#### Arg + +key + +#### Example + +```ts +async function getExample(context: Devvit.Context) { + await context.redis.bitfield("nonutf8", "set", "u8", "0", "192"); + const buf : string | undefined = await context.redis.getBuffer("nonutf8"); + console.log("Bytes: " + JSON.stringify(buf)); +} +``` + +*** + + + +### getRange() + +> **getRange**(`key`, `start`, `end`): `Promise`\<`string`\> + +Returns the substring of the string value stored at key, determined by +the offsets start and end (both are inclusive). +https://redis.io/commands/getrange/ + +#### Parameters + +##### key + +`string` + +##### start + +`number` + +##### end + +`number` + +#### Returns + +`Promise`\<`string`\> + +substring determined by offsets [start, end] + +#### Arg + +key + +#### Arg + +start + +#### Arg + +end + +#### Example + +```ts +async function getRangeExample(context: Devvit.Context) { + await context.redis.set("word", "tacocat"); + const range : string = await context.redis.getRange("word", 0, 3) + console.log("Range from index 0 to 3: " + range); +} +``` + +*** + + + +### ~~hdel()~~ + +> **hdel**(`key`, `fields`): `Promise`\<`number`\> + +Removes the specified fields from the hash stored at key. +https://redis.io/commands/hdel/ + +#### Parameters + +##### key + +`string` + +##### fields + +`string`[] + +#### Returns + +`Promise`\<`number`\> + +number of fields that were removed from the hash + +#### Deprecated + +Use [RedisClient.hDel](#hdel-2) instead. + +#### Arg + +key + +#### Arg + +fields + +*** + + + +### hDel() + +> **hDel**(`key`, `fields`): `Promise`\<`number`\> + +Removes the specified fields from the hash stored at key. +https://redis.io/commands/hdel/ + +#### Parameters + +##### key + +`string` + +##### fields + +`string`[] + +#### Returns + +`Promise`\<`number`\> + +number of fields that were removed from the hash + +#### Arg + +key + +#### Arg + +fields + +#### Example + +```ts +async function hDelExample(context: Devvit.Context) { + await context.redis.hSet("fruits", {"apple": "5", "orange": "7", "kiwi": "9"}); + const numFieldsRemoved = await context.redis.hDel("fruits", ["apple", "kiwi"]); + console.log("Number of fields removed: " + numFieldsRemoved); +} +``` + +*** + + + +### ~~hget()~~ + +> **hget**(`key`, `field`): `Promise`\<`undefined` \| `string`\> + +Returns the value associated with field in the hash stored at key. +https://redis.io/commands/hget + +#### Parameters + +##### key + +`string` + +##### field + +`string` + +#### Returns + +`Promise`\<`undefined` \| `string`\> + +value associated with field + +#### Deprecated + +Use [RedisClient.hGet](#hget-2) instead. + +#### Arg + +key + +#### Arg + +field + +*** + + + +### hGet() + +> **hGet**(`key`, `field`): `Promise`\<`undefined` \| `string`\> + +Returns the value associated with field in the hash stored at key. +https://redis.io/commands/hget + +#### Parameters + +##### key + +`string` + +##### field + +`string` + +#### Returns + +`Promise`\<`undefined` \| `string`\> + +value associated with field + +#### Arg + +key + +#### Arg + +field + +#### Example + +```ts +async function hGetExample(context: Devvit.Context) { + await context.redis.hSet("fruits", {"apple": "5", "orange": "7", "kiwi": "9"}); + const result : string | undefined = await context.redis.hGet("fruits", "orange"); + console.log("Value of orange: " + result); +} +``` + +*** + + + +### ~~hgetall()~~ + +> **hgetall**(`key`): `Promise`\<`Record`\<`string`, `string`\>\> + +Returns all fields and values of the hash stored at key +https://redis.io/commands/hgetall + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`Record`\<`string`, `string`\>\> + +a map of fields and their values stored in the hash, + +#### Deprecated + +Use [RedisClient.hGetAll](#hgetall-2) instead. + +#### Arg + +key + +*** + + + +### hGetAll() + +> **hGetAll**(`key`): `Promise`\<`Record`\<`string`, `string`\>\> + +Returns all fields and values of the hash stored at key +https://redis.io/commands/hgetall + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`Record`\<`string`, `string`\>\> + +a map of fields and their values stored in the hash, + +#### Arg + +key + +#### Example + +``` +async function hGetAllExample(context: Devvit.Context) { + await context.redis.hSet("groceryList", { + "eggs": "12", + "apples": "3", + "milk": "1" + }); + + const record : Record = await context.redis.hGetAll("groceryList"); + + if (record.eggs !== undefined) { + console.log(`Eggs: ${record.eggs}`); + } +} +``` + +*** + + + +### ~~hincrby()~~ + +> **hincrby**(`key`, `field`, `value`): `Promise`\<`number`\> + +Increments the number stored at field in the hash stored at key by increment. +https://redis.io/commands/hincrby/ + +#### Parameters + +##### key + +`string` + +##### field + +`string` + +##### value + +`number` + +#### Returns + +`Promise`\<`number`\> + +value of key after the increment + +#### Deprecated + +Use [RedisClient.hIncrBy](#hincrby-2) instead. + +#### Arg + +key + +#### Arg + +field + +#### Arg + +value + +*** + + + +### hIncrBy() + +> **hIncrBy**(`key`, `field`, `value`): `Promise`\<`number`\> + +Increments the number stored at field in the hash stored at key by increment. +https://redis.io/commands/hincrby/ + +#### Parameters + +##### key + +`string` + +##### field + +`string` + +##### value + +`number` + +#### Returns + +`Promise`\<`number`\> + +value of key after the increment + +#### Arg + +key + +#### Arg + +field + +#### Arg + +value + +#### Example + +```ts +async function hIncrByExample(context: Devvit.Context) { + await context.redis.hSet("user123", { "karma": "100" }); + await context.redis.hIncrBy("user123", "karma", 5); +} +``` + +*** + + + +### ~~hkeys()~~ + +> **hkeys**(`key`): `Promise`\<`string`[]\> + +Returns all field names in the hash stored at key. + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`string`[]\> + +#### Deprecated + +Use [RedisClient.hKeys](#hkeys-2) instead. + +#### Arg + +key + +*** + + + +### hKeys() + +> **hKeys**(`key`): `Promise`\<`string`[]\> + +Returns all field names in the hash stored at key. + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`string`[]\> + +#### Arg + +key + +#### Example + +```ts +async function hKeysExample(context: Devvit.Context) { + await context.redis.hSet("prices", { + "chair": "48", + "desk": "95", + "whiteboard": "23" + }); + const keys : string[] = await context.redis.hKeys("prices"); + console.log("Keys: " + keys); +} +``` + +*** + + + +### ~~hlen()~~ + +> **hlen**(`key`): `Promise`\<`number`\> + +Returns the number of fields contained in the hash stored at key. + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`number`\> + +the number of fields in the hash, or 0 when the key does not exist. + +#### Deprecated + +Use [RedisClient.hLen](#hlen-2) instead. + +#### Arg + +key + +*** + + + +### hLen() + +> **hLen**(`key`): `Promise`\<`number`\> + +Returns the number of fields contained in the hash stored at key. + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`number`\> + +the number of fields in the hash, or 0 when the key does not exist. + +#### Arg + +key + +#### Example + +```ts +async function hLenExample(context: Devvit.Context) { + await context.redis.hSet("supplies", { + "paperclips": "25", + "pencils": "10", + "erasers": "5", + "pens": "7" + }); + const numberOfFields : number = await context.redis.hLen("supplies"); + console.log("Number of fields: " + numberOfFields); +} +``` + +*** + + + +### hMGet() + +> **hMGet**(`key`, `fields`): `Promise`\<(`null` \| `string`)[]\> + +Returns the values associated with fields in the hash stored at key. +https://redis.io/commands/hmget + +#### Parameters + +##### key + +`string` + +##### fields + +`string`[] + +#### Returns + +`Promise`\<(`null` \| `string`)[]\> + +values associated with each field in the order they appear in fields + +#### Arg + +key + +#### Arg + +fields + +#### Example + +```ts +async function hMGetExample(context: Devvit.Context) { + await context.redis.hSet("fruits", {"apple": "5", "orange": "7", "kiwi": "9"}); + const result : string[] | undefined = await context.redis.hMGet("fruits", ["orange", "grape", "apple"]); + console.log("Value of fields: " + result); // "Value of fields: ["7", undefined, "5"] +} +``` + +*** + + + +### ~~hscan()~~ + +> **hscan**(`key`, `cursor`, `pattern`?, `count`?): `Promise`\<`HScanResponse`\> + +Iterates fields of Hash types and their associated values. + +#### Parameters + +##### key + +`string` + +##### cursor + +`number` + +##### pattern? + +`string` + +##### count? + +`number` + +#### Returns + +`Promise`\<`HScanResponse`\> + +#### Deprecated + +Use [RedisClient.hScan](#hscan-2) instead. + +#### Arg + +key + +#### Arg + +cursor + +#### Arg + +pattern + +#### Arg + +count + +*** + + + +### hScan() + +> **hScan**(`key`, `cursor`, `pattern`?, `count`?): `Promise`\<`HScanResponse`\> + +Iterates fields of Hash types and their associated values. + +#### Parameters + +##### key + +`string` + +##### cursor + +`number` + +##### pattern? + +`string` + +##### count? + +`number` + +#### Returns + +`Promise`\<`HScanResponse`\> + +#### Arg + +key + +#### Arg + +cursor + +#### Arg + +pattern + +#### Arg + +count + +#### Example + +```ts +async function hScanExample(context: Devvit.Context) { + await context.redis.hSet("userInfo", { + "name": "Bob", + "startDate": "01-05-20", + "totalAwards": "12" + }); + + const hScanResponse = await context.redis.hScan("userInfo", 0); + + hScanResponse.fieldValues.forEach(x => { + console.log("Field: '" + x.field + "', Value: '" + x.value + "'"); + }); +} +``` + +*** + + + +### ~~hset()~~ + +> **hset**(`key`, `fieldValues`): `Promise`\<`number`\> + +Sets the specified fields to their respective values in the hash stored at key. +https://redis.io/commands/hset + +#### Parameters + +##### key + +`string` + +##### fieldValues + +#### Returns + +`Promise`\<`number`\> + +number of fields that were added + +#### Deprecated + +Use [RedisClient.hSet](#hset-2) instead. + +#### Arg + +key + +#### Arg + +fieldValues + +*** + + + +### hSet() + +> **hSet**(`key`, `fieldValues`): `Promise`\<`number`\> + +Sets the specified fields to their respective values in the hash stored at key. +https://redis.io/commands/hset + +#### Parameters + +##### key + +`string` + +##### fieldValues + +#### Returns + +`Promise`\<`number`\> + +number of fields that were added + +#### Arg + +key + +#### Arg + +fieldValues + +#### Example + +```ts +async function hSetExample(context: Devvit.Context) { + const numFieldsAdded = await context.redis.hSet("fruits", {"apple": "5", "orange": "7", "kiwi": "9"}); + console.log("Number of fields added: " + numFieldsAdded); +} +``` + +*** + + + +### hSetNX() + +> **hSetNX**(`key`, `field`, `value`): `Promise`\<`number`\> + +Sets field in the hash stored at key to value, only if field does not yet exist. +https://redis.io/commands/hsetnx/ + +#### Parameters + +##### key + +`string` + +##### field + +`string` + +##### value + +`string` + +#### Returns + +`Promise`\<`number`\> + +1 if field is a new field in the hash and value was set, 0 if field already exists in the hash and no operation was performed. + +#### Example + +```ts +async function hSetNXExample(context: Devvit.Context) { + const result : number = await context.redis.hSetNX("myhash", "field1", "value1"); + console.log("HSETNX result: " + result); +} +``` + +*** + + + +### incrBy() + +> **incrBy**(`key`, `value`): `Promise`\<`number`\> + +Increments the number stored at key by increment. +https://redis.io/commands/incrby/ + +#### Parameters + +##### key + +`string` + +##### value + +`number` + +#### Returns + +`Promise`\<`number`\> + +value of key after the increment + +#### Arg + +key + +#### Arg + +value + +#### Example + +```ts +async function incrByExample(context: Devvit.Context) { + await context.redis.set("totalPoints", "53") + const updatedPoints : number = await context.redis.incrBy("totalPoints", 100); + console.log("Updated points: " + updatedPoints); +} +``` + +*** + + + +### ~~mget()~~ + +> **mget**(`keys`): `Promise`\<(`null` \| `string`)[]\> + +Returns the values of all specified keys. +https://redis.io/commands/mget/ + +#### Parameters + +##### keys + +`string`[] + +#### Returns + +`Promise`\<(`null` \| `string`)[]\> + +list of values at the specified keys + +#### Deprecated + +Use [RedisClient.mGet](#mget-2) instead. + +#### Arg + +keys + +*** + + + +### mGet() + +> **mGet**(`keys`): `Promise`\<(`null` \| `string`)[]\> + +Returns the values of all specified keys. +https://redis.io/commands/mget/ + +#### Parameters + +##### keys + +`string`[] + +#### Returns + +`Promise`\<(`null` \| `string`)[]\> + +list of values at the specified keys + +#### Arg + +keys + +#### Example + +```ts +async function mGetExample(context: Devvit.Context) { + await context.redis.mSet({"name": "Zeek", "occupation": "Developer"}); + const result : (string | null)[] = await context.redis.mGet(["name", "occupation"]); + result.forEach(x => { + console.log(x); + }); +} +``` + +*** + + + +### ~~mset()~~ + +> **mset**(`keyValues`): `Promise`\<`void`\> + +Sets the given keys to their respective values. +https://redis.io/commands/mset/ + +#### Parameters + +##### keyValues + +#### Returns + +`Promise`\<`void`\> + +#### Deprecated + +Use [RedisClient.mSet](#mset-2) instead. + +#### Arg + +keyValues + +*** + + + +### mSet() + +> **mSet**(`keyValues`): `Promise`\<`void`\> + +Sets the given keys to their respective values. +https://redis.io/commands/mset/ + +#### Parameters + +##### keyValues + +#### Returns + +`Promise`\<`void`\> + +#### Arg + +keyValues + +#### Example + +```ts +async function mSetExample(context: Devvit.Context) { + await context.redis.mSet({"name": "Zeek", "occupation": "Developer"}); +} +``` + +*** + + + +### rename() + +> **rename**(`key`, `newKey`): `Promise`\<`string`\> + +Renames key to newKey. It returns an error when key does not exist. +https://redis.io/commands/rename/ + +#### Parameters + +##### key + +`string` + +##### newKey + +`string` + +#### Returns + +`Promise`\<`string`\> + +string returns "OK" if the key was renamed successfully + +#### Arg + +key key to be renamed + +#### Arg + +newKey new key name + +#### Example + +```ts +async function renameExample(context: Devvit.Context) { + await context.redis.set("quantity", "5"); + await context.redis.rename("quantity", "amount"); + const value : string = await context.redis.get("amount"); + console.log("Value: " + value); +} +``` + +*** + + + +### set() + +> **set**(`key`, `value`, `options`?): `Promise`\<`string`\> + +Set key to hold the string value. If key already holds a value, it is overwritten +https://redis.io/commands/set/ + +#### Parameters + +##### key + +`string` + +##### value + +`string` + +##### options? + +[`SetOptions`](SetOptions.md) + +#### Returns + +`Promise`\<`string`\> + +#### Arg + +key + +#### Arg + +value + +#### Arg + +options + +#### Example + +```ts +async function setExample(context: Devvit.Context) { + await context.redis.set("quantity", "5"); +} +``` + +*** + + + +### setRange() + +> **setRange**(`key`, `offset`, `value`): `Promise`\<`number`\> + +Overwrites part of the string stored at key, starting at the +specified offset, for the entire length of value. +https://redis.io/commands/setrange/ + +#### Parameters + +##### key + +`string` + +##### offset + +`number` + +##### value + +`string` + +#### Returns + +`Promise`\<`number`\> + +length of the string after it was modified by the command + +#### Arg + +key + +#### Arg + +offset + +#### Example + +```ts +async function setRangeExample(context: Devvit.Context) { + await context.redis.set("word", "tacocat"); + await context.redis.setRange("word", 0, "blue"); +} +``` + +*** + + + +### ~~strlen()~~ + +> **strlen**(`key`): `Promise`\<`number`\> + +Returns the length of the string value stored at key. +An error is returned when key holds a non-string value. +https://redis.io/commands/strlen/ + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`number`\> + +length of the string stored at key + +#### Deprecated + +Use [RedisClient.strLen](#strlen-2) instead. + +#### Arg + +key + +*** + + + +### strLen() + +> **strLen**(`key`): `Promise`\<`number`\> + +Returns the length of the string value stored at key. +An error is returned when key holds a non-string value. +https://redis.io/commands/strlen/ + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`number`\> + +length of the string stored at key + +#### Arg + +key + +#### Example + +```ts +async function strLenExample(context: Devvit.Context) { + await context.redis.set("word", "tacocat"); + const length : number = await context.redis.strLen("word"); + console.log("Length of word: " + length); +} +``` + +*** + + + +### type() + +> **type**(`key`): `Promise`\<`string`\> + +Returns the string representation of the type of the value stored at key +https://redis.io/commands/type/ + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`string`\> + +string representation of the type + +#### Arg + +key + +#### Example + +```ts +async function typeExample(context: Devvit.Context) { + await context.redis.set("quantity", "5"); + const type : string = await context.redis.type("quantity"); + console.log("Key type: " + type); +} +``` + +*** + + + +### watch() + +> **watch**(...`keys`): `Promise`\<[`TxClientLike`](TxClientLike.md)\> + +Marks the given keys to be watched for conditional execution of a transaction. +https://redis.io/commands/watch/ + +#### Parameters + +##### keys + +...`string`[] + +#### Returns + +`Promise`\<[`TxClientLike`](TxClientLike.md)\> + +#### Arg + +keys - given keys to be watched + +#### Example + +```ts +async function watchExample(context: Devvit.Context) { + await context.redis.set("karma", "32"); + + const txn = await context.redis.watch("quantity"); + + await txn.multi(); // Begin a transaction + await txn.incrBy("karma", 10); + await txn.exec(); // Execute the commands in the transaction +} +``` + +*** + + + +### zAdd() + +> **zAdd**(`key`, ...`members`): `Promise`\<`number`\> + +Adds all the specified members with the specified scores to the sorted set stored at key. +https://redis.io/commands/zadd/ + +#### Parameters + +##### key + +`string` + +##### members + +...[`ZMember`](ZMember.md)[] + +#### Returns + +`Promise`\<`number`\> + +number of elements added to the sorted set + +#### Arg + +key + +#### Example + +```ts +async function zAddExample(context: Devvit.Context) { + const numMembersAdded : number = await context.redis.zAdd("leaderboard", + {member: "louis", score: 37}, + {member: "fernando", score: 10}, + {member: "caesar", score: 20}, + {member: "alexander", score: 25}, + ); + console.log("Number of members added: " + numMembersAdded); +} +``` + +*** + + + +### zCard() + +> **zCard**(`key`): `Promise`\<`number`\> + +Returns the cardinality (number of elements) of the sorted set stored at key. +https://redis.io/commands/zcard/ + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`number`\> + +cardinality of the sorted set + +#### Arg + +key + +#### Example + +```ts +async function zCardExample(context: Devvit.Context) { + await context.redis.zAdd("leaderboard", + {member: "louis", score: 37}, + {member: "fernando", score: 10}, + {member: "caesar", score: 20}, + {member: "alexander", score: 25}, + ); + const cardinality : number = await context.redis.zCard("leaderboard"); + console.log("Cardinality: " + cardinality); +} +``` + +*** + + + +### zIncrBy() + +> **zIncrBy**(`key`, `member`, `value`): `Promise`\<`number`\> + +Increments the score of member in the sorted set stored at key by value +https://redis.io/commands/zincrby/ + +#### Parameters + +##### key + +`string` + +##### member + +`string` + +##### value + +`number` + +#### Returns + +`Promise`\<`number`\> + +the new score of member as a double precision floating point number + +#### Arg + +key + +#### Arg + +member + +#### Arg + +value + +#### Example + +```ts +async function zIncrByExample(context: Devvit.Context) { + await context.redis.zAdd("animals", + {member: "zebra", score: 92}, + {member: "cat", score: 100}, + {member: "dog", score: 95}, + {member: "elephant", score: 97} + ); + const updatedScore : number = await context.redis.zIncrBy("animals", "dog", 10); + console.log("Dog's updated score: " + updatedScore); +} +``` + +*** + + + +### zRange() + +> **zRange**(`key`, `start`, `stop`, `options`?): `Promise`\<`object`[]\> + +Returns the specified range of elements in the sorted set stored at key. +https://redis.io/commands/zrange/ + +When using `by: 'lex'`, the start and stop inputs will be prepended with `[` by default, unless they already begin with `[`, `(` or are one of the special values `+` or `-`. + +#### Parameters + +##### key + +`string` + +##### start + +`string` | `number` + +##### stop + +`string` | `number` + +##### options? + +[`ZRangeOptions`](ZRangeOptions.md) + +#### Returns + +`Promise`\<`object`[]\> + +list of elements in the specified range + +#### Arg + +key + +#### Arg + +start + +#### Arg + +stop + +#### Arg + +options + +#### Example + +```ts +async function zRangeExample(context: Devvit.Context) { + await context.redis.zAdd("leaderboard", + {member: "louis", score: 37}, + {member: "fernando", score: 10}, + {member: "caesar", score: 20}, + {member: "alexander", score: 25}, + ); + + // View elements with scores between 0 and 30 inclusive, sorted by score + const scores : {member : string, score : number}[] = await context.redis.zRange("leaderboard", 0, 30, { by: "score" }); + + scores.forEach(x => { + console.log("Member: " + x.member, ", Score: " + x.score); + }); +} +``` + +*** + + + +### zRank() + +> **zRank**(`key`, `member`): `Promise`\<`undefined` \| `number`\> + +Returns the rank of member in the sorted set stored at key +https://redis.io/commands/zrank/ + +#### Parameters + +##### key + +`string` + +##### member + +`string` + +#### Returns + +`Promise`\<`undefined` \| `number`\> + +rank of the member if opts is undefined or opts.withScore = false, +or returns { rank, score } of the member if opts.withScore = true. The rank (or index) +is 0-based which means that the member with the lowest score has rank 0 + +#### Arg + +key + +#### Arg + +member + +#### Example + +```ts +async function zRankExample(context: Devvit.Context) { + await context.redis.zAdd("animals", + {member: "zebra", score: 92}, + {member: "cat", score: 100}, + {member: "dog", score: 95}, + {member: "elephant", score: 97} + ); + const rank : number | undefined = await context.redis.zRank("animals", "dog"); + if(rank !== undefined) { + console.log("Dog's rank: " + rank); + } +} +``` + +*** + + + +### zRem() + +> **zRem**(`key`, `members`): `Promise`\<`number`\> + +Removes the specified members from the sorted set stored at key. +https://redis.io/commands/zrem/ + +#### Parameters + +##### key + +`string` + +##### members + +`string`[] + +#### Returns + +`Promise`\<`number`\> + +number of members removed from the sorted set + +#### Arg + +key + +#### Arg + +members + +#### Example + +```ts +async function zRemExample(context: Devvit.Context) { + await context.redis.zAdd("leaderboard", + {member: "louis", score: 37}, + {member: "fernando", score: 10}, + {member: "caesar", score: 20}, + {member: "alexander", score: 25}, + ); + const numberOfMembersRemoved : number = await context.redis.zRem("leaderboard", ["fernando", "alexander"]); + console.log("Number of members removed: " + numberOfMembersRemoved); +} +``` + +*** + + + +### zRemRangeByLex() + +> **zRemRangeByLex**(`key`, `min`, `max`): `Promise`\<`number`\> + +removes all elements in the sorted set stored at key between the +lexicographical range specified by min and max +https://redis.io/commands/zremrangebylex/ + +#### Parameters + +##### key + +`string` + +##### min + +`string` + +##### max + +`string` + +#### Returns + +`Promise`\<`number`\> + +number of members removed from the sorted set + +#### Arg + +key + +#### Arg + +min + +#### Arg + +max + +#### Example + +```ts +async function zRemRangeByLexExample(context: Devvit.Context) { + await context.redis.zAdd("fruits", + {member: "kiwi", score: 0}, + {member: "mango", score: 0}, + {member: "banana", score: 0}, + {member: "orange", score: 0}, + {member: "apple", score: 0}, + ); + + // Remove fruits alphabetically ordered between 'kiwi' inclusive and 'orange' exclusive + // Note: The symbols '[' and '(' indicate inclusive or exclusive, respectively. These must be included in the call to zRemRangeByLex(). + const numFieldsRemoved : number = await context.redis.zRemRangeByLex("fruits", "[kiwi", "(orange"); + console.log("Number of fields removed: " + numFieldsRemoved); +} +``` + +*** + + + +### zRemRangeByRank() + +> **zRemRangeByRank**(`key`, `start`, `stop`): `Promise`\<`number`\> + +Removes all elements in the sorted set stored at key with rank between start and stop. +https://redis.io/commands/zremrangebyrank/ + +#### Parameters + +##### key + +`string` + +##### start + +`number` + +##### stop + +`number` + +#### Returns + +`Promise`\<`number`\> + +number of members removed from the sorted set + +#### Arg + +key + +#### Arg + +start + +#### Arg + +stop + +#### Example + +``` +async function zRemRangeByRankExample(context: Devvit.Context) { + await context.redis.zAdd("fruits", + {member: "kiwi", score: 10}, + {member: "mango", score: 20}, + {member: "banana", score: 30}, + {member: "orange", score: 40}, + {member: "apple", score: 50}, + ); + + // Remove fruits ranked 1 through 3 inclusive + const numFieldsRemoved : number = await context.redis.zRemRangeByRank("fruits", 1, 3); + console.log("Number of fields removed: " + numFieldsRemoved); +} +``` + +*** + + + +### zRemRangeByScore() + +> **zRemRangeByScore**(`key`, `min`, `max`): `Promise`\<`number`\> + +Removes all elements in the sorted set stored at key with a score between min and max +https://redis.io/commands/zremrangebyscore/ + +#### Parameters + +##### key + +`string` + +##### min + +`number` + +##### max + +`number` + +#### Returns + +`Promise`\<`number`\> + +number of members removed from the sorted set + +#### Arg + +key + +#### Arg + +min + +#### Arg + +max + +#### Example + +```ts +async function zRemRangeByScoreExample(context: Devvit.Context) { + await context.redis.zAdd("fruits", + {member: "kiwi", score: 10}, + {member: "mango", score: 20}, + {member: "banana", score: 30}, + {member: "orange", score: 40}, + {member: "apple", score: 50}, + ); + // Remove fruits scored between 30 and 50 inclusive + const numFieldsRemoved : number = await context.redis.zRemRangeByScore("fruits", 30, 50); + console.log("Number of fields removed: " + numFieldsRemoved); +} +``` + +*** + + + +### zScan() + +> **zScan**(`key`, `cursor`, `pattern`?, `count`?): `Promise`\<`ZScanResponse`\> + +Iterates elements of Sorted Set types and their associated scores. + +#### Parameters + +##### key + +`string` + +##### cursor + +`number` + +##### pattern? + +`string` + +##### count? + +`number` + +#### Returns + +`Promise`\<`ZScanResponse`\> + +#### Arg + +key + +#### Arg + +cursor + +#### Arg + +pattern + +#### Arg + +count + +#### Example + +```ts +async function zScanExample(context: Devvit.Context) { + await context.redis.zAdd("fruits", + {member: "kiwi", score: 0}, + {member: "mango", score: 0}, + {member: "banana", score: 0}, + {member: "orange", score: 0}, + {member: "apple", score: 0}, + ); + const zScanResponse = await context.redis.zScan("fruits", 0); + console.log("zScanResponse: " + JSON.stringify(zScanResponse)); +} +``` + +*** + + + +### zScore() + +> **zScore**(`key`, `member`): `Promise`\<`undefined` \| `number`\> + +Returns the score of member in the sorted set at key. +https://redis.io/commands/zscore/ + +#### Parameters + +##### key + +`string` + +##### member + +`string` + +#### Returns + +`Promise`\<`undefined` \| `number`\> + +the score of the member (a double-precision floating point number). + +#### Arg + +key + +#### Arg + +member + +#### Example + +```ts +async function zScoreExample(context: Devvit.Context) { + await context.redis.zAdd("leaderboard", + {member: "louis", score: 37}, + {member: "fernando", score: 10}, + {member: "caesar", score: 20}, + {member: "alexander", score: 25}, + ); + const score : number = await context.redis.zScore("leaderboard", "caesar"); + console.log("Caesar's score: " + score); +} +``` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/RunJob.md b/versioned_docs/version-0.13/api/public-api/type-aliases/RunJob.md new file mode 100644 index 00000000..985f1d2c --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/RunJob.md @@ -0,0 +1,29 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: RunJob()\ + +> **RunJob**\<`Data`\> = (`job`) => `Promise`\<`string`\> + +Schedule a new job to run at a specific time or on a cron schedule + +## Type Parameters + +### Data + +`Data` *extends* [`JSONObject`](JSONObject.md) \| `undefined` + +## Parameters + +### job + +The job to schedule + +[`ScheduledJobOptions`](ScheduledJobOptions.md)\<`Data`\> | [`ScheduledCronJobOptions`](ScheduledCronJobOptions.md)\<`Data`\> + +## Returns + +`Promise`\<`string`\> + +The id of the scheduled job diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledCronJob.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledCronJob.md new file mode 100644 index 00000000..1f3d2ff7 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledCronJob.md @@ -0,0 +1,47 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ScheduledCronJob + +> **ScheduledCronJob** = `object` + +## Properties + + + +### cron + +> **cron**: `string` + +The cron string of when this job should run + +*** + + + +### data? + +> `optional` **data**: [`JSONObject`](JSONObject.md) + +Additional data passed in by the scheduler client + +*** + + + +### id + +> **id**: `string` + +ID of the scheduled job. Use this with scheduler.cancelJob to cancel the job. + +*** + + + +### name + +> **name**: `string` + +The name of the scheduled job type diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledCronJobOptions.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledCronJobOptions.md new file mode 100644 index 00000000..ed44191d --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledCronJobOptions.md @@ -0,0 +1,43 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ScheduledCronJobOptions\ + +> **ScheduledCronJobOptions**\<`T`\> = `object` + +## Type Parameters + +### T + +`T` *extends* [`JSONObject`](JSONObject.md) \| `undefined` = [`JSONObject`](JSONObject.md) \| `undefined` + +## Properties + + + +### cron + +> **cron**: `string` + +The cron string of when this job should run + +*** + + + +### data? + +> `optional` **data**: `T` + +Additional data passed in by the scheduler client + +*** + + + +### name + +> **name**: `string` + +The name of the scheduled job type diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledJob.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledJob.md new file mode 100644 index 00000000..fec045c7 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledJob.md @@ -0,0 +1,47 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ScheduledJob + +> **ScheduledJob** = `object` + +## Properties + + + +### data + +> **data**: [`JSONObject`](JSONObject.md) \| `undefined` + +Additional data passed in by the scheduler client + +*** + + + +### id + +> **id**: `string` + +ID of the scheduled job. Use this with scheduler.cancelJob to cancel the job. + +*** + + + +### name + +> **name**: `string` + +The name of the scheduled job type + +*** + + + +### runAt + +> **runAt**: `Date` + +The Date of when this job should run diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledJobEvent.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledJobEvent.md new file mode 100644 index 00000000..30fe7249 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledJobEvent.md @@ -0,0 +1,33 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ScheduledJobEvent\ + +> **ScheduledJobEvent**\<`T`\> = `object` + +## Type Parameters + +### T + +`T` *extends* [`JSONObject`](JSONObject.md) \| `undefined` + +## Properties + + + +### data + +> **data**: `T` + +Additional data passed in by the scheduler client + +*** + + + +### name + +> **name**: `string` + +The name of the scheduled job diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledJobHandler.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledJobHandler.md new file mode 100644 index 00000000..59b5e7c3 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledJobHandler.md @@ -0,0 +1,27 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ScheduledJobHandler()\ + +> **ScheduledJobHandler**\<`Data`\> = (`event`, `context`) => `void` \| `Promise`\<`void`\> + +## Type Parameters + +### Data + +`Data` *extends* [`JSONObject`](JSONObject.md) \| `undefined` = [`JSONObject`](JSONObject.md) \| `undefined` + +## Parameters + +### event + +[`ScheduledJobEvent`](ScheduledJobEvent.md)\<`Data`\> + +### context + +[`JobContext`](JobContext.md) + +## Returns + +`void` \| `Promise`\<`void`\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledJobOptions.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledJobOptions.md new file mode 100644 index 00000000..613ce458 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledJobOptions.md @@ -0,0 +1,43 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ScheduledJobOptions\ + +> **ScheduledJobOptions**\<`T`\> = `object` + +## Type Parameters + +### T + +`T` *extends* [`JSONObject`](JSONObject.md) \| `undefined` = [`JSONObject`](JSONObject.md) \| `undefined` + +## Properties + + + +### data? + +> `optional` **data**: `T` + +Additional data passed in by the scheduler client + +*** + + + +### name + +> **name**: `string` + +The name of the scheduled job type + +*** + + + +### runAt + +> **runAt**: `Date` + +The Date of when this job should run diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledJobType.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledJobType.md new file mode 100644 index 00000000..b5bef68f --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ScheduledJobType.md @@ -0,0 +1,33 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ScheduledJobType\ + +> **ScheduledJobType**\<`Data`\> = `object` + +## Type Parameters + +### Data + +`Data` *extends* [`JSONObject`](JSONObject.md) \| `undefined` + +## Properties + + + +### name + +> **name**: `string` + +The name of the scheduled job type + +*** + + + +### onRun + +> **onRun**: [`ScheduledJobHandler`](ScheduledJobHandler.md)\<`Data`\> + +The function that will be called when the job is scheduled to run diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/Scheduler.md b/versioned_docs/version-0.13/api/public-api/type-aliases/Scheduler.md new file mode 100644 index 00000000..74af794a --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/Scheduler.md @@ -0,0 +1,68 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: Scheduler + +> **Scheduler** = `object` + +The Scheduler client lets you schedule new jobs or cancel existing jobs. +You must have the `scheduler` enabled in `Devvit.configure` to use this client. + +## Properties + + + +### cancelJob + +> **cancelJob**: [`CancelJob`](CancelJob.md) + +Cancel a scheduled job + +#### Param + +The id of the job to cancel + +*** + + + +### listJobs() + +> **listJobs**: () => `Promise`\<([`ScheduledJob`](ScheduledJob.md) \| [`ScheduledCronJob`](ScheduledCronJob.md))[]\> + +Gets the list of all scheduled jobs. + +#### Returns + +`Promise`\<([`ScheduledJob`](ScheduledJob.md) \| [`ScheduledCronJob`](ScheduledCronJob.md))[]\> + +*** + + + +### runJob() + +> **runJob**: \<`Data`\>(`job`) => `Promise`\<`string`\> + +Schedule a new job to run at a specific time or on a cron schedule + +#### Type Parameters + +##### Data + +`Data` *extends* [`JSONObject`](JSONObject.md) \| `undefined` + +#### Parameters + +##### job + +The job to schedule + +[`ScheduledJobOptions`](ScheduledJobOptions.md)\<`Data`\> | [`ScheduledCronJobOptions`](ScheduledCronJobOptions.md)\<`Data`\> + +#### Returns + +`Promise`\<`string`\> + +The id of the scheduled job diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/SelectField.md b/versioned_docs/version-0.13/api/public-api/type-aliases/SelectField.md new file mode 100644 index 00000000..f6a7c4a2 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/SelectField.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: SelectField + +> **SelectField** = `Prettify`\<[`BaseField`](BaseField.md)\<`string`[]\> & `Omit`\<`FieldConfig_Selection`, `"choices"` \| `"renderAsList"` \| `"minSelections"` \| `"maxSelections"`\> & `object`\> + +A dropdown field that allows users to pick from a list of options diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/SetOptions.md b/versioned_docs/version-0.13/api/public-api/type-aliases/SetOptions.md new file mode 100644 index 00000000..960c2c05 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/SetOptions.md @@ -0,0 +1,35 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: SetOptions + +> **SetOptions** = `object` + +## Properties + + + +### expiration? + +> `optional` **expiration**: `Date` + +*** + + + +### nx? + +> `optional` **nx**: `boolean` + +Only set the key if it does not already exist. + +*** + + + +### xx? + +> `optional` **xx**: `boolean` + +Only set the key if it already exists. diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/SetStateAction.md b/versioned_docs/version-0.13/api/public-api/type-aliases/SetStateAction.md new file mode 100644 index 00000000..c1a77407 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/SetStateAction.md @@ -0,0 +1,13 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: SetStateAction\ + +> **SetStateAction**\<`S`\> = `S` \| (`prevState`) => `S` + +## Type Parameters + +### S + +`S` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/SettingScopeType.md b/versioned_docs/version-0.13/api/public-api/type-aliases/SettingScopeType.md new file mode 100644 index 00000000..ea1196ab --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/SettingScopeType.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: SettingScopeType + +> **SettingScopeType** = `"installation"` \| `"app"` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/SettingsClient.md b/versioned_docs/version-0.13/api/public-api/type-aliases/SettingsClient.md new file mode 100644 index 00000000..dadfbda5 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/SettingsClient.md @@ -0,0 +1,62 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: SettingsClient + +> **SettingsClient** = `object` + +The Settings API Client lets you retrieve the settings values for your app set by the installer. +Use this in conjunction with `Devvit.addSettings`. + +## Methods + + + +### get() + +> **get**\<`T`\>(`name`): `Promise`\<`undefined` \| `T`\> + +Get a single setting value by name. + +#### Type Parameters + +##### T + +`T` = `string` \| `number` \| `boolean` \| `string`[] + +#### Parameters + +##### name + +`string` + +The name of the setting to retrieve. + +#### Returns + +`Promise`\<`undefined` \| `T`\> + +A promise that resolves to the setting value, or undefined if the setting doesn't exist. + +*** + + + +### getAll() + +> **getAll**\<`T`\>(): `Promise`\<`T`\> + +Get all settings values. + +#### Type Parameters + +##### T + +`T` *extends* `object` = [`SettingsValues`](SettingsValues.md) + +#### Returns + +`Promise`\<`T`\> + +A promise that resolves to an object containing all settings values. diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/SettingsFormField.md b/versioned_docs/version-0.13/api/public-api/type-aliases/SettingsFormField.md new file mode 100644 index 00000000..88d0631a --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/SettingsFormField.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: SettingsFormField + +> **SettingsFormField** = [`ValidatedStringField`](ValidatedStringField.md) \| [`ValidatedParagraphField`](ValidatedParagraphField.md) \| [`ValidatedNumberField`](ValidatedNumberField.md) \| [`ValidatedBooleanField`](ValidatedBooleanField.md) \| [`ValidatedSelectField`](ValidatedSelectField.md) \| [`SettingsFormFieldGroup`](SettingsFormFieldGroup.md) diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/SettingsFormFieldGroup.md b/versioned_docs/version-0.13/api/public-api/type-aliases/SettingsFormFieldGroup.md new file mode 100644 index 00000000..f9356397 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/SettingsFormFieldGroup.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: SettingsFormFieldGroup + +> **SettingsFormFieldGroup** = `Prettify`\<`Omit`\<[`FormFieldGroup`](FormFieldGroup.md), `"fields"`\> & `object`\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/SettingsFormFieldValidatorEvent.md b/versioned_docs/version-0.13/api/public-api/type-aliases/SettingsFormFieldValidatorEvent.md new file mode 100644 index 00000000..3d3df2eb --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/SettingsFormFieldValidatorEvent.md @@ -0,0 +1,29 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: SettingsFormFieldValidatorEvent\ + +> **SettingsFormFieldValidatorEvent**\<`ValueType`\> = `object` + +## Type Parameters + +### ValueType + +`ValueType` + +## Properties + + + +### isEditing + +> **isEditing**: `boolean` + +*** + + + +### value + +> **value**: `ValueType` \| `undefined` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/SettingsValues.md b/versioned_docs/version-0.13/api/public-api/type-aliases/SettingsValues.md new file mode 100644 index 00000000..83d72428 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/SettingsValues.md @@ -0,0 +1,11 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: SettingsValues + +> **SettingsValues** = `object` + +## Index Signature + +\[`key`: `string`\]: `undefined` \| `string` \| `number` \| `boolean` \| `string`[] diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/StateSetter.md b/versioned_docs/version-0.13/api/public-api/type-aliases/StateSetter.md new file mode 100644 index 00000000..70f095db --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/StateSetter.md @@ -0,0 +1,13 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: StateSetter\ + +> **StateSetter**\<`S`\> = [`Dispatch`](Dispatch.md)\<[`SetStateAction`](SetStateAction.md)\<`S`\>\> + +## Type Parameters + +### S + +`S` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/StringField.md b/versioned_docs/version-0.13/api/public-api/type-aliases/StringField.md new file mode 100644 index 00000000..05cc6b4a --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/StringField.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: StringField + +> **StringField** = `Prettify`\<[`BaseField`](BaseField.md)\<`string`\> & `Omit`\<`FieldConfig_String`, `"minLength"` \| `"maxLength"`\> & `object`\> + +A text field diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/Toast.md b/versioned_docs/version-0.13/api/public-api/type-aliases/Toast.md new file mode 100644 index 00000000..7163e98f --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/Toast.md @@ -0,0 +1,27 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: Toast + +> **Toast** = `object` + +## Properties + + + +### appearance? + +> `optional` **appearance**: `"neutral"` \| `"success"` + +The appearance of the toast + +*** + + + +### text + +> **text**: `string` + +The message shown within the toast diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/TriggerContext.md b/versioned_docs/version-0.13/api/public-api/type-aliases/TriggerContext.md new file mode 100644 index 00000000..41250262 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/TriggerContext.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: TriggerContext + +> **TriggerContext** = `Omit`\<[`Context`](../@devvit/namespaces/Devvit/type-aliases/Context.md), `"ui"` \| `"dimensions"` \| `"modLog"` \| `"uiEnvironment"`\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/TriggerDefinition.md b/versioned_docs/version-0.13/api/public-api/type-aliases/TriggerDefinition.md new file mode 100644 index 00000000..83f59fef --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/TriggerDefinition.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: TriggerDefinition + +> **TriggerDefinition** = [`PostSubmitDefinition`](PostSubmitDefinition.md) \| [`PostCreateDefinition`](PostCreateDefinition.md) \| [`PostUpdateDefinition`](PostUpdateDefinition.md) \| [`PostFlairUpdateDefinition`](PostFlairUpdateDefinition.md) \| [`PostReportDefinition`](PostReportDefinition.md) \| [`PostDeleteDefinition`](PostDeleteDefinition.md) \| [`CommentSubmitDefinition`](CommentSubmitDefinition.md) \| [`CommentCreateDefinition`](CommentCreateDefinition.md) \| [`CommentUpdateDefinition`](CommentUpdateDefinition.md) \| [`CommentReportDefinition`](CommentReportDefinition.md) \| [`CommentDeleteDefinition`](CommentDeleteDefinition.md) \| [`AppInstallDefinition`](AppInstallDefinition.md) \| [`AppUpgradeDefinition`](AppUpgradeDefinition.md) \| [`ModActionDefinition`](ModActionDefinition.md) \| [`ModMailDefinition`](ModMailDefinition.md) \| [`PostSpoilerUpdateDefinition`](PostSpoilerUpdateDefinition.md) \| [`PostNsfwUpdateDefinition`](PostNsfwUpdateDefinition.md) \| [`OnAutomoderatorFilterPostDefinition`](OnAutomoderatorFilterPostDefinition.md) \| [`OnAutomoderatorFilterCommentDefinition`](OnAutomoderatorFilterCommentDefinition.md) diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/TriggerEvent.md b/versioned_docs/version-0.13/api/public-api/type-aliases/TriggerEvent.md new file mode 100644 index 00000000..f43a173c --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/TriggerEvent.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: TriggerEvent + +> **TriggerEvent** = [`PostSubmit`](PostSubmit.md) \| [`PostCreate`](PostCreate.md) \| [`PostUpdate`](PostUpdate.md) \| [`PostReport`](PostReport.md) \| [`PostDelete`](PostDelete.md) \| [`PostFlairUpdate`](PostFlairUpdate.md) \| [`CommentSubmit`](CommentSubmit.md) \| [`CommentCreate`](CommentCreate.md) \| [`CommentUpdate`](CommentUpdate.md) \| [`CommentReport`](CommentReport.md) \| [`CommentDelete`](CommentDelete.md) \| [`AppInstall`](AppInstall.md) \| [`AppUpgrade`](AppUpgrade.md) \| [`ModActionTrigger`](ModActionTrigger.md) \| [`ModMailTrigger`](ModMailTrigger.md) \| [`PostNsfwUpdate`](PostNsfwUpdate.md) \| [`PostSpoilerUpdate`](PostSpoilerUpdate.md) \| [`AutomoderatorFilterPost`](AutomoderatorFilterPost.md) \| [`AutomoderatorFilterComment`](AutomoderatorFilterComment.md) diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/TriggerEventType.md b/versioned_docs/version-0.13/api/public-api/type-aliases/TriggerEventType.md new file mode 100644 index 00000000..1c2dc7c8 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/TriggerEventType.md @@ -0,0 +1,275 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: TriggerEventType + +> **TriggerEventType** = `object` + +Maps a TriggerEvent to a Protobuf message and type. + +## Properties + + + +### AppInstall + +> **AppInstall**: `object` & [`AppInstall`](../@devvit/namespaces/EventTypes/interfaces/AppInstall.md) + +#### Type declaration + +##### type + +> **type**: `"AppInstall"` + +*** + + + +### AppUpgrade + +> **AppUpgrade**: `object` & [`AppUpgrade`](../@devvit/namespaces/EventTypes/interfaces/AppUpgrade.md) + +#### Type declaration + +##### type + +> **type**: `"AppUpgrade"` + +*** + + + +### AutomoderatorFilterComment + +> **AutomoderatorFilterComment**: `object` & [`AutomoderatorFilterComment`](../@devvit/namespaces/EventTypes/interfaces/AutomoderatorFilterComment.md) + +#### Type declaration + +##### type + +> **type**: `"AutomoderatorFilterComment"` + +*** + + + +### AutomoderatorFilterPost + +> **AutomoderatorFilterPost**: `object` & [`AutomoderatorFilterPost`](../@devvit/namespaces/EventTypes/interfaces/AutomoderatorFilterPost.md) + +#### Type declaration + +##### type + +> **type**: `"AutomoderatorFilterPost"` + +*** + + + +### CommentCreate + +> **CommentCreate**: `object` & [`CommentCreate`](../@devvit/namespaces/EventTypes/interfaces/CommentCreate.md) + +#### Type declaration + +##### type + +> **type**: `"CommentCreate"` + +*** + + + +### CommentDelete + +> **CommentDelete**: `object` & [`CommentDelete`](../@devvit/namespaces/EventTypes/interfaces/CommentDelete.md) + +#### Type declaration + +##### type + +> **type**: `"CommentDelete"` + +*** + + + +### CommentReport + +> **CommentReport**: `object` & [`CommentReport`](../@devvit/namespaces/EventTypes/interfaces/CommentReport.md) + +#### Type declaration + +##### type + +> **type**: `"CommentReport"` + +*** + + + +### CommentSubmit + +> **CommentSubmit**: `object` & [`CommentSubmit`](../@devvit/namespaces/EventTypes/interfaces/CommentSubmit.md) + +#### Type declaration + +##### type + +> **type**: `"CommentSubmit"` + +*** + + + +### CommentUpdate + +> **CommentUpdate**: `object` & [`CommentUpdate`](../@devvit/namespaces/EventTypes/interfaces/CommentUpdate.md) + +#### Type declaration + +##### type + +> **type**: `"CommentUpdate"` + +*** + + + +### ModAction + +> **ModAction**: `object` & `protos.ModAction` + +#### Type declaration + +##### type + +> **type**: `"ModAction"` + +*** + + + +### ModMail + +> **ModMail**: `object` & `protos.ModMail` + +#### Type declaration + +##### type + +> **type**: `"ModMail"` + +*** + + + +### PostCreate + +> **PostCreate**: `object` & [`PostCreate`](../@devvit/namespaces/EventTypes/interfaces/PostCreate.md) + +#### Type declaration + +##### type + +> **type**: `"PostCreate"` + +*** + + + +### PostDelete + +> **PostDelete**: `object` & [`PostDelete`](../@devvit/namespaces/EventTypes/interfaces/PostDelete.md) + +#### Type declaration + +##### type + +> **type**: `"PostDelete"` + +*** + + + +### PostFlairUpdate + +> **PostFlairUpdate**: `object` & [`PostFlairUpdate`](../@devvit/namespaces/EventTypes/interfaces/PostFlairUpdate.md) + +#### Type declaration + +##### type + +> **type**: `"PostFlairUpdate"` + +*** + + + +### PostNsfwUpdate + +> **PostNsfwUpdate**: `object` & [`PostNsfwUpdate`](../@devvit/namespaces/EventTypes/interfaces/PostNsfwUpdate.md) + +#### Type declaration + +##### type + +> **type**: `"PostNsfwUpdate"` + +*** + + + +### PostReport + +> **PostReport**: `object` & [`PostReport`](../@devvit/namespaces/EventTypes/interfaces/PostReport.md) + +#### Type declaration + +##### type + +> **type**: `"PostReport"` + +*** + + + +### PostSpoilerUpdate + +> **PostSpoilerUpdate**: `object` & [`PostSpoilerUpdate`](../@devvit/namespaces/EventTypes/interfaces/PostSpoilerUpdate.md) + +#### Type declaration + +##### type + +> **type**: `"PostSpoilerUpdate"` + +*** + + + +### PostSubmit + +> **PostSubmit**: `object` & [`PostSubmit`](../@devvit/namespaces/EventTypes/interfaces/PostSubmit.md) + +#### Type declaration + +##### type + +> **type**: `"PostSubmit"` + +*** + + + +### PostUpdate + +> **PostUpdate**: `object` & [`PostUpdate`](../@devvit/namespaces/EventTypes/interfaces/PostUpdate.md) + +#### Type declaration + +##### type + +> **type**: `"PostUpdate"` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/TriggerOnEventHandler.md b/versioned_docs/version-0.13/api/public-api/type-aliases/TriggerOnEventHandler.md new file mode 100644 index 00000000..19462e2c --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/TriggerOnEventHandler.md @@ -0,0 +1,27 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: TriggerOnEventHandler()\ + +> **TriggerOnEventHandler**\<`RequestType`\> = (`event`, `context`) => `TriggerResult` + +## Type Parameters + +### RequestType + +`RequestType` + +## Parameters + +### event + +`RequestType` + +### context + +[`TriggerContext`](TriggerContext.md) + +## Returns + +`TriggerResult` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/TxClientLike.md b/versioned_docs/version-0.13/api/public-api/type-aliases/TxClientLike.md new file mode 100644 index 00000000..b49979a0 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/TxClientLike.md @@ -0,0 +1,2094 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: TxClientLike + +> **TxClientLike** = `object` + +## Methods + + + +### del() + +> **del**(...`keys`): `Promise`\<`TxClientLike`\> + +Removes the specified keys. A key is ignored if it does not exist. +https://redis.io/commands/del/ + +#### Parameters + +##### keys + +...`string`[] + +#### Returns + +`Promise`\<`TxClientLike`\> + +#### Arg + +keys + +#### Example + +```ts +async function delExample(context: Devvit.Context) { + await context.redis.set("quantity", "5"); + await context.redis.del("quantity"); +} +``` + +*** + + + +### discard() + +> **discard**(): `Promise`\<`void`\> + +Flushes all previously queued commands in a transaction and restores the connection state to normal. +If WATCH was used, DISCARD unwatches all keys watched by the connection. https://redis.io/docs/latest/commands/discard/ + +#### Returns + +`Promise`\<`void`\> + +#### Example + +```ts +async function discardExample(context: Devvit.Context) { + await context.redis.set("price", "25"); + + const txn = await context.redis.watch("price"); + + await txn.multi(); // Begin a transaction + await txn.incrBy("price", 5); + await txn.discard(); // Discard the commands in the transaction +} +``` + +*** + + + +### exec() + +> **exec**(): `Promise`\<`any`[]\> + +Executes all previously queued commands in a transaction and +restores the connection state to normal. https://redis.io/commands/exec/ + +#### Returns + +`Promise`\<`any`[]\> + +array, each element being the reply to each of the commands in the atomic transaction. + +#### Example + +```ts +async function execExample(context: Devvit.Context) { + await context.redis.set("karma", "32"); + + const txn = await context.redis.watch("quantity"); + + await txn.multi(); // Begin a transaction + await txn.incrBy("karma", 10); + await txn.exec(); // Execute the commands in the transaction +} +``` + +*** + + + +### expire() + +> **expire**(`key`, `seconds`): `Promise`\<`TxClientLike`\> + +Set a timeout on key. +https://redis.io/commands/expire/ + +#### Parameters + +##### key + +`string` + +##### seconds + +`number` + +#### Returns + +`Promise`\<`TxClientLike`\> + +#### Arg + +key + +#### Arg + +seconds + +#### Example + +```ts +async function expireExample(context: Devvit.Context) { + await context.redis.set("product", "milk"); + await context.redis.expire("product", 60); // Set the product to expire in 60 seconds +} +``` + +*** + + + +### expireTime() + +> **expireTime**(`key`): `Promise`\<`TxClientLike`\> + +Returns the absolute Unix timestamp in seconds at which the given key will expire +https://redis.io/commands/expiretime/ + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`TxClientLike`\> + +expiration Unix timestamp in seconds, or a negative value in order to signal an error + +#### Arg + +key + +#### Example + +```ts +async function expireTimeExample(context: Devvit.Context) { + await context.redis.set("product", "milk"); + const expireTime : number = await context.redis.expireTime("product"); + console.log("Expire time: " + expireTime); +} +``` + +*** + + + +### get() + +> **get**(`key`): `Promise`\<`TxClientLike`\> + +Get the value of key. If the key does not exist the special value nil is returned. +https://redis.io/commands/get/ + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`TxClientLike`\> + +value of key or null when key does not exist. + +#### Arg + +key + +#### Example + +```ts +async function getExample(context: Devvit.Context) { + await context.redis.set("quantity", "5"); + const quantity : string | undefined = await context.redis.get("quantity"); + console.log("Quantity: " + quantity); +} +``` + +*** + + + +### getRange() + +> **getRange**(`key`, `start`, `end`): `Promise`\<`TxClientLike`\> + +Returns the substring of the string value stored at key, determined by +the offsets start and end (both are inclusive). +https://redis.io/commands/getrange/ + +#### Parameters + +##### key + +`string` + +##### start + +`number` + +##### end + +`number` + +#### Returns + +`Promise`\<`TxClientLike`\> + +substring determined by offsets [start, end] + +#### Arg + +key + +#### Arg + +start + +#### Arg + +end + +#### Example + +```ts +async function getRangeExample(context: Devvit.Context) { + await context.redis.set("word", "tacocat"); + const range : string = await context.redis.getRange("word", 0, 3) + console.log("Range from index 0 to 3: " + range); +} +``` + +*** + + + +### ~~hdel()~~ + +> **hdel**(`key`, `fields`): `Promise`\<`TxClientLike`\> + +Removes the specified fields from the hash stored at key. +https://redis.io/commands/hdel/ + +#### Parameters + +##### key + +`string` + +##### fields + +`string`[] + +#### Returns + +`Promise`\<`TxClientLike`\> + +number of fields that were removed from the hash + +#### Deprecated + +Use [TxClientLike.hDel](#hdel-2) instead. + +#### Arg + +key + +#### Arg + +fields + +*** + + + +### hDel() + +> **hDel**(`key`, `fields`): `Promise`\<`TxClientLike`\> + +Removes the specified fields from the hash stored at key. +https://redis.io/commands/hdel/ + +#### Parameters + +##### key + +`string` + +##### fields + +`string`[] + +#### Returns + +`Promise`\<`TxClientLike`\> + +number of fields that were removed from the hash + +#### Arg + +key + +#### Arg + +fields + +#### Example + +```ts +async function hDelExample(context: Devvit.Context) { + await context.redis.hSet("fruits", {"apple": "5", "orange": "7", "kiwi": "9"}); + const numFieldsRemoved = await context.redis.hDel("fruits", ["apple", "kiwi"]); + console.log("Number of fields removed: " + numFieldsRemoved); +} +``` + +*** + + + +### ~~hget()~~ + +> **hget**(`key`, `field`): `Promise`\<`TxClientLike`\> + +Returns the value associated with field in the hash stored at key. +https://redis.io/commands/hget + +#### Parameters + +##### key + +`string` + +##### field + +`string` + +#### Returns + +`Promise`\<`TxClientLike`\> + +value associated with field + +#### Deprecated + +Use [TxClientLike.hGet](#hget-2) instead. + +#### Arg + +key + +#### Arg + +field + +*** + + + +### hGet() + +> **hGet**(`key`, `field`): `Promise`\<`TxClientLike`\> + +Returns the value associated with field in the hash stored at key. +https://redis.io/commands/hget + +#### Parameters + +##### key + +`string` + +##### field + +`string` + +#### Returns + +`Promise`\<`TxClientLike`\> + +value associated with field + +#### Arg + +key + +#### Arg + +field + +#### Example + +```ts +async function hGetExample(context: Devvit.Context) { + await context.redis.hSet("fruits", {"apple": "5", "orange": "7", "kiwi": "9"}); + const result : string | undefined = await context.redis.hGet("fruits", "orange"); + console.log("Value of orange: " + result); +} +``` + +*** + + + +### ~~hgetall()~~ + +> **hgetall**(`key`): `Promise`\<`TxClientLike`\> + +Returns all fields and values of the hash stored at key +https://redis.io/commands/hgetall + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`TxClientLike`\> + +a map of fields and their values stored in the hash, + +#### Deprecated + +Use [TxClientLike.hGetAll](#hgetall-2) instead. + +#### Arg + +key + +*** + + + +### hGetAll() + +> **hGetAll**(`key`): `Promise`\<`TxClientLike`\> + +Returns all fields and values of the hash stored at key +https://redis.io/commands/hgetall + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`TxClientLike`\> + +a map of fields and their values stored in the hash, + +#### Arg + +key + +#### Example + +``` +async function hGetAllExample(context: Devvit.Context) { + await context.redis.hSet("groceryList", { + "eggs": "12", + "apples": "3", + "milk": "1" + }); + + const record : Record | undefined = await context.redis.hGetAll("groceryList"); + + if (record != undefined) { + console.log("Eggs: " + record.eggs + ", Apples: " + record.apples + ", Milk: " + record.milk); + } +} +``` + +*** + + + +### ~~hincrby()~~ + +> **hincrby**(`key`, `field`, `value`): `Promise`\<`TxClientLike`\> + +Increments the number stored at field in the hash stored at key by increment. +https://redis.io/commands/hincrby/ + +#### Parameters + +##### key + +`string` + +##### field + +`string` + +##### value + +`number` + +#### Returns + +`Promise`\<`TxClientLike`\> + +value of key after the increment + +#### Deprecated + +Use [TxClientLike.hIncrBy](#hincrby-2) instead. + +#### Arg + +key + +#### Arg + +field + +#### Arg + +value + +*** + + + +### hIncrBy() + +> **hIncrBy**(`key`, `field`, `value`): `Promise`\<`TxClientLike`\> + +Increments the number stored at field in the hash stored at key by increment. +https://redis.io/commands/hincrby/ + +#### Parameters + +##### key + +`string` + +##### field + +`string` + +##### value + +`number` + +#### Returns + +`Promise`\<`TxClientLike`\> + +value of key after the increment + +#### Arg + +key + +#### Arg + +field + +#### Arg + +value + +#### Example + +```ts +async function hIncrByExample(context: Devvit.Context) { + await context.redis.hSet("user123", { "karma": "100" }); + await context.redis.hIncrBy("user123", "karma", 5); +} +``` + +*** + + + +### ~~hkeys()~~ + +> **hkeys**(`key`): `Promise`\<`TxClientLike`\> + +Returns all field names in the hash stored at key. + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`TxClientLike`\> + +#### Deprecated + +Use [TxClientLike.hKeys](#hkeys-2) instead. + +#### Arg + +key + +*** + + + +### hKeys() + +> **hKeys**(`key`): `Promise`\<`TxClientLike`\> + +Returns all field names in the hash stored at key. + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`TxClientLike`\> + +#### Arg + +key + +#### Example + +```ts +async function hKeysExample(context: Devvit.Context) { + await context.redis.hSet("prices", { + "chair": "48", + "desk": "95", + "whiteboard": "23" + }); + const keys : string[] = await context.redis.hKeys("prices"); + console.log("Keys: " + keys); +} +``` + +*** + + + +### ~~hlen()~~ + +> **hlen**(`key`): `Promise`\<`TxClientLike`\> + +Returns the number of fields contained in the hash stored at key. + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`TxClientLike`\> + +the number of fields in the hash, or 0 when the key does not exist. + +#### Deprecated + +Use [TxClientLike.hLen](#hlen-2) instead. + +#### Arg + +key + +*** + + + +### hLen() + +> **hLen**(`key`): `Promise`\<`TxClientLike`\> + +Returns the number of fields contained in the hash stored at key. + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`TxClientLike`\> + +the number of fields in the hash, or 0 when the key does not exist. + +#### Arg + +key + +#### Example + +```ts +async function hLenExample(context: Devvit.Context) { + await context.redis.hSet("supplies", { + "paperclips": "25", + "pencils": "10", + "erasers": "5", + "pens": "7" + }); + const numberOfFields : number = await context.redis.hLen("supplies"); + console.log("Number of fields: " + numberOfFields); +} +``` + +*** + + + +### hMGet() + +> **hMGet**(`key`, `fields`): `Promise`\<`TxClientLike`\> + +Returns the values associated with fields in the hash stored at key. +https://redis.io/commands/hmget + +#### Parameters + +##### key + +`string` + +##### fields + +`string`[] + +#### Returns + +`Promise`\<`TxClientLike`\> + +values associated with each field in the order they appear in fields + +#### Arg + +key + +#### Arg + +fields + +#### Example + +```ts +async function hMGetExample(context: Devvit.Context) { + await context.redis.hSet("fruits", {"apple": "5", "orange": "7", "kiwi": "9"}); + const result : string[] | undefined = await context.redis.hMGet("fruits", ["orange", "grape", "apple"]); + console.log("Value of fields: " + result); // "Value of fields: ["7", undefined, "5"] +} +``` + +*** + + + +### ~~hscan()~~ + +> **hscan**(`key`, `cursor`, `pattern`?, `count`?): `Promise`\<`TxClientLike`\> + +Iterates fields of Hash types and their associated values. + +#### Parameters + +##### key + +`string` + +##### cursor + +`number` + +##### pattern? + +`string` + +##### count? + +`number` + +#### Returns + +`Promise`\<`TxClientLike`\> + +#### Deprecated + +Use [TxClientLike.hScan](#hscan-2) instead. + +#### Arg + +key + +#### Arg + +cursor + +#### Arg + +pattern + +#### Arg + +count + +*** + + + +### hScan() + +> **hScan**(`key`, `cursor`, `pattern`?, `count`?): `Promise`\<`TxClientLike`\> + +Iterates fields of Hash types and their associated values. + +#### Parameters + +##### key + +`string` + +##### cursor + +`number` + +##### pattern? + +`string` + +##### count? + +`number` + +#### Returns + +`Promise`\<`TxClientLike`\> + +#### Arg + +key + +#### Arg + +cursor + +#### Arg + +pattern + +#### Arg + +count + +#### Example + +```ts +async function hScanExample(context: Devvit.Context) { + await context.redis.hSet("userInfo", { + "name": "Bob", + "startDate": "01-05-20", + "totalAwards": "12" + }); + + const hScanResponse = await context.redis.hScan("userInfo", 0); + + hScanResponse.fieldValues.forEach(x => { + console.log("Field: '" + x.field + "', Value: '" + x.value + "'"); + }); +} +``` + +*** + + + +### ~~hset()~~ + +> **hset**(`key`, `fieldValues`): `Promise`\<`TxClientLike`\> + +Sets the specified fields to their respective values in the hash stored at key. +https://redis.io/commands/hset + +#### Parameters + +##### key + +`string` + +##### fieldValues + +#### Returns + +`Promise`\<`TxClientLike`\> + +number of fields that were added + +#### Deprecated + +Use [TxClientLike.hSet](#hset-2) instead. + +#### Arg + +key + +#### Arg + +fieldValues + +*** + + + +### hSet() + +> **hSet**(`key`, `fieldValues`): `Promise`\<`TxClientLike`\> + +Sets the specified fields to their respective values in the hash stored at key. +https://redis.io/commands/hset + +#### Parameters + +##### key + +`string` + +##### fieldValues + +#### Returns + +`Promise`\<`TxClientLike`\> + +number of fields that were added + +#### Arg + +key + +#### Arg + +fieldValues + +#### Example + +```ts +async function hSetExample(context: Devvit.Context) { + const numFieldsAdded = await context.redis.hSet("fruits", {"apple": "5", "orange": "7", "kiwi": "9"}); + console.log("Number of fields added: " + numFieldsAdded); +} +``` + +*** + + + +### incrBy() + +> **incrBy**(`key`, `value`): `Promise`\<`TxClientLike`\> + +Increments the number stored at key by increment. +https://redis.io/commands/incrby/ + +#### Parameters + +##### key + +`string` + +##### value + +`number` + +#### Returns + +`Promise`\<`TxClientLike`\> + +#### Arg + +key + +#### Arg + +value + +#### Example + +```ts +async function incrByExample(context: Devvit.Context) { + await context.redis.set("totalPoints", "53") + const updatedPoints : number = await context.redis.incrBy("totalPoints", 100); + console.log("Updated points: " + updatedPoints); +} +``` + +*** + + + +### ~~mget()~~ + +> **mget**(`keys`): `Promise`\<`TxClientLike`\> + +Returns the values of all specified keys. +https://redis.io/commands/mget/ + +#### Parameters + +##### keys + +`string`[] + +#### Returns + +`Promise`\<`TxClientLike`\> + +list of values at the specified keys + +#### Deprecated + +Use [TxClientLike.mGet](#mget-2) instead. + +#### Arg + +keys + +*** + + + +### mGet() + +> **mGet**(`keys`): `Promise`\<`TxClientLike`\> + +Returns the values of all specified keys. +https://redis.io/commands/mget/ + +#### Parameters + +##### keys + +`string`[] + +#### Returns + +`Promise`\<`TxClientLike`\> + +list of values at the specified keys + +#### Arg + +keys + +#### Example + +```ts +async function mGetExample(context: Devvit.Context) { + await context.redis.mSet({"name": "Zeek", "occupation": "Developer"}); + const result : (string | null)[] = await context.redis.mGet(["name", "occupation"]); + result.forEach(x => { + console.log(x); + }); +} +``` + +*** + + + +### ~~mset()~~ + +> **mset**(`keyValues`): `Promise`\<`TxClientLike`\> + +Sets the given keys to their respective values. +https://redis.io/commands/mset/ + +#### Parameters + +##### keyValues + +#### Returns + +`Promise`\<`TxClientLike`\> + +#### Deprecated + +Use [TxClientLike.mSet](#mset-2) instead. + +#### Arg + +keyValues + +*** + + + +### mSet() + +> **mSet**(`keyValues`): `Promise`\<`TxClientLike`\> + +Sets the given keys to their respective values. +https://redis.io/commands/mset/ + +#### Parameters + +##### keyValues + +#### Returns + +`Promise`\<`TxClientLike`\> + +#### Arg + +keyValues + +#### Example + +```ts +async function mSetExample(context: Devvit.Context) { + await context.redis.mSet({"name": "Zeek", "occupation": "Developer"}); +} +``` + +*** + + + +### multi() + +> **multi**(): `Promise`\<`void`\> + +Marks the start of a transaction block. Subsequent commands will be +queued for atomic execution using EXEC. https://redis.io/commands/multi/ + +#### Returns + +`Promise`\<`void`\> + +#### Example + +```ts +async function multiExample(context: Devvit.Context) { + await context.redis.set("karma", "32"); + + const txn = await context.redis.watch("quantity"); + + await txn.multi(); // Begin a transaction + await txn.incrBy("karma", 10); + await txn.exec(); // Execute the commands in the transaction +} +``` + +*** + + + +### set() + +> **set**(`key`, `value`, `options`?): `Promise`\<`TxClientLike`\> + +Set key to hold the string value. If key already holds a value, it is overwritten +https://redis.io/commands/set/ + +#### Parameters + +##### key + +`string` + +##### value + +`string` + +##### options? + +[`SetOptions`](SetOptions.md) + +#### Returns + +`Promise`\<`TxClientLike`\> + +#### Arg + +key + +#### Arg + +value + +#### Arg + +options + +#### Example + +```ts +async function setExample(context: Devvit.Context) { + await context.redis.set("quantity", "5"); +} +``` + +*** + + + +### setRange() + +> **setRange**(`key`, `offset`, `value`): `Promise`\<`TxClientLike`\> + +Overwrites part of the string stored at key, starting at the +specified offset, for the entire length of value. +https://redis.io/commands/setrange/ + +#### Parameters + +##### key + +`string` + +##### offset + +`number` + +##### value + +`string` + +#### Returns + +`Promise`\<`TxClientLike`\> + +length of the string after it was modified by the command + +#### Arg + +key + +#### Arg + +offset + +#### Example + +```ts +async function setRangeExample(context: Devvit.Context) { + await context.redis.set("word", "tacocat"); + await context.redis.setRange("word", 0, "blue"); +} +``` + +*** + + + +### ~~strlen()~~ + +> **strlen**(`key`): `Promise`\<`TxClientLike`\> + +Returns the length of the string value stored at key. +An error is returned when key holds a non-string value. +https://redis.io/commands/strlen/ + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`TxClientLike`\> + +length of the string stored at key + +#### Deprecated + +Use [TxClientLike.strLen](#strlen-2) instead. + +#### Arg + +key + +*** + + + +### strLen() + +> **strLen**(`key`): `Promise`\<`TxClientLike`\> + +Returns the length of the string value stored at key. +An error is returned when key holds a non-string value. +https://redis.io/commands/strlen/ + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`TxClientLike`\> + +length of the string stored at key + +#### Arg + +key + +#### Example + +```ts +async function strLenExample(context: Devvit.Context) { + await context.redis.set("word", "tacocat"); + const length : number = await context.redis.strLen("word"); + console.log("Length of word: " + length); +} +``` + +*** + + + +### type() + +> **type**(`key`): `Promise`\<`TxClientLike`\> + +Returns the string representation of the type of the value stored at key +https://redis.io/commands/type/ + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`TxClientLike`\> + +string representation of the type + +#### Arg + +key + +#### Example + +```ts +async function typeExample(context: Devvit.Context) { + await context.redis.set("quantity", "5"); + const type : string = await context.redis.type("quantity"); + console.log("Key type: " + type); +} +``` + +*** + + + +### unwatch() + +> **unwatch**(): `Promise`\<`TxClientLike`\> + +Flushes all the previously watched keys for a transaction. +If you call EXEC or DISCARD, there's no need to manually call UNWATCH. +https://redis.io/commands/unwatch/ + +#### Returns + +`Promise`\<`TxClientLike`\> + +#### Example + +```ts +async function unwatchExample(context: Devvit.Context) { + await context.redis.set("gold", "50"); + + const txn = await context.redis.watch("gold"); + + await txn.multi(); // Begin a transaction + await txn.incrBy("gold", 30); + await txn.unwatch(); // Unwatch "gold" + + // Now that "gold" has been unwatched, we can increment its value + // outside the transaction without canceling the transaction + await context.redis.incrBy("gold", -20); + + await txn.exec(); // Execute the commands in the transaction + + console.log("Gold value: " + await context.redis.get("gold")); // The value of 'gold' should be 50 + 30 - 20 = 60 +} +``` + +*** + + + +### watch() + +> **watch**(...`keys`): `Promise`\<`TxClientLike`\> + +Marks the given keys to be watched for conditional execution of a transaction. +https://redis.io/commands/watch/ + +#### Parameters + +##### keys + +...`string`[] + +#### Returns + +`Promise`\<`TxClientLike`\> + +#### Arg + +keys - given keys to be watched + +#### Example + +```ts +async function watchExample(context: Devvit.Context) { + await context.redis.set("karma", "32"); + + const txn = await context.redis.watch("quantity"); + + await txn.multi(); // Begin a transaction + await txn.incrBy("karma", 10); + await txn.exec(); // Execute the commands in the transaction +} +``` + +*** + + + +### zAdd() + +> **zAdd**(`key`, ...`members`): `Promise`\<`TxClientLike`\> + +Adds all the specified members with the specified scores to the sorted set stored at key. +https://redis.io/commands/zadd/ + +#### Parameters + +##### key + +`string` + +##### members + +...[`ZMember`](ZMember.md)[] + +#### Returns + +`Promise`\<`TxClientLike`\> + +number of elements added to the sorted set + +#### Arg + +key + +#### Example + +```ts +async function zAddExample(context: Devvit.Context) { + const numMembersAdded : number = await context.redis.zAdd("leaderboard", + {member: "louis", score: 37}, + {member: "fernando", score: 10}, + {member: "caesar", score: 20}, + {member: "alexander", score: 25}, + ); + console.log("Number of members added: " + numMembersAdded); +} +``` + +*** + + + +### zCard() + +> **zCard**(`key`): `Promise`\<`TxClientLike`\> + +Returns the cardinality (number of elements) of the sorted set stored at key. +https://redis.io/commands/zcard/ + +#### Parameters + +##### key + +`string` + +#### Returns + +`Promise`\<`TxClientLike`\> + +cardinality of the sorted set + +#### Arg + +key + +#### Example + +```ts +async function zCardExample(context: Devvit.Context) { + await context.redis.zAdd("leaderboard", + {member: "louis", score: 37}, + {member: "fernando", score: 10}, + {member: "caesar", score: 20}, + {member: "alexander", score: 25}, + ); + const cardinality : number = await context.redis.zCard("leaderboard"); + console.log("Cardinality: " + cardinality); +} +``` + +*** + + + +### zIncrBy() + +> **zIncrBy**(`key`, `member`, `value`): `Promise`\<`TxClientLike`\> + +Increments the score of member in the sorted set stored at key by value +https://redis.io/commands/zincrby/ + +#### Parameters + +##### key + +`string` + +##### member + +`string` + +##### value + +`number` + +#### Returns + +`Promise`\<`TxClientLike`\> + +the new score of member as a double precision floating point number + +#### Arg + +key + +#### Arg + +member + +#### Arg + +value + +#### Example + +```ts +async function zIncrByExample(context: Devvit.Context) { + await context.redis.zAdd("animals", + {member: "zebra", score: 92}, + {member: "cat", score: 100}, + {member: "dog", score: 95}, + {member: "elephant", score: 97} + ); + const updatedScore : number = await context.redis.zIncrBy("animals", "dog", 10); + console.log("Dog's updated score: " + updatedScore); +} +``` + +*** + + + +### zRange() + +> **zRange**(`key`, `start`, `stop`, `options`?): `Promise`\<`TxClientLike`\> + +Returns the specified range of elements in the sorted set stored at key. +https://redis.io/commands/zrange/ + +When using `by: 'lex'`, the start and stop inputs will be prepended with `[` by default, unless they already begin with `[`, `(` or are one of the special values `+` or `-`. + +#### Parameters + +##### key + +`string` + +##### start + +`string` | `number` + +##### stop + +`string` | `number` + +##### options? + +[`ZRangeOptions`](ZRangeOptions.md) + +#### Returns + +`Promise`\<`TxClientLike`\> + +list of elements in the specified range + +#### Arg + +key + +#### Arg + +start + +#### Arg + +stop + +#### Arg + +options + +#### Example + +```ts +async function zRangeExample(context: Devvit.Context) { + await context.redis.zAdd("leaderboard", + {member: "louis", score: 37}, + {member: "fernando", score: 10}, + {member: "caesar", score: 20}, + {member: "alexander", score: 25}, + ); + + // View elements with scores between 0 and 30 inclusive, sorted by score + const scores : {member : string, score : number}[] = await context.redis.zRange("leaderboard", 0, 30, { by: "score" }); + + scores.forEach(x => { + console.log("Member: " + x.member, ", Score: " + x.score); + }); +} +``` + +*** + + + +### zRank() + +> **zRank**(`key`, `member`): `Promise`\<`TxClientLike`\> + +Returns the rank of member in the sorted set stored at key +https://redis.io/commands/zrank/ + +#### Parameters + +##### key + +`string` + +##### member + +`string` + +#### Returns + +`Promise`\<`TxClientLike`\> + +rank of the member. The rank (or index) is 0-based +which means that the member with the lowest score has rank 0 + +#### Arg + +key + +#### Arg + +member + +#### Example + +```ts +async function zRankExample(context: Devvit.Context) { + await context.redis.zAdd("animals", + {member: "zebra", score: 92}, + {member: "cat", score: 100}, + {member: "dog", score: 95}, + {member: "elephant", score: 97} + ); + const rank : number = await context.redis.zRank("animals", "dog"); + console.log("Dog's rank: " + rank); +} +``` + +*** + + + +### zRem() + +> **zRem**(`key`, `members`): `Promise`\<`TxClientLike`\> + +Removes the specified members from the sorted set stored at key. +https://redis.io/commands/zrem/ + +#### Parameters + +##### key + +`string` + +##### members + +`string`[] + +#### Returns + +`Promise`\<`TxClientLike`\> + +number of members removed from the sorted set + +#### Arg + +key + +#### Arg + +members + +#### Example + +```ts +async function zRemExample(context: Devvit.Context) { + await context.redis.zAdd("leaderboard", + {member: "louis", score: 37}, + {member: "fernando", score: 10}, + {member: "caesar", score: 20}, + {member: "alexander", score: 25}, + ); + const numberOfMembersRemoved : number = await context.redis.zRem("leaderboard", ["fernando", "alexander"]); + console.log("Number of members removed: " + numberOfMembersRemoved); +} +``` + +*** + + + +### zRemRangeByLex() + +> **zRemRangeByLex**(`key`, `min`, `max`): `Promise`\<`TxClientLike`\> + +removes all elements in the sorted set stored at key between the +lexicographical range specified by min and max +https://redis.io/commands/zremrangebylex/ + +#### Parameters + +##### key + +`string` + +##### min + +`string` + +##### max + +`string` + +#### Returns + +`Promise`\<`TxClientLike`\> + +number of members removed from the sorted set + +#### Arg + +key + +#### Arg + +min + +#### Arg + +max + +#### Example + +```ts +async function zRemRangeByLexExample(context: Devvit.Context) { + await context.redis.zAdd("fruits", + {member: "kiwi", score: 0}, + {member: "mango", score: 0}, + {member: "banana", score: 0}, + {member: "orange", score: 0}, + {member: "apple", score: 0}, + ); + + // Remove fruits alphabetically ordered between 'kiwi' inclusive and 'orange' exclusive + // Note: The symbols '[' and '(' indicate inclusive or exclusive, respectively. These must be included in the call to zRemRangeByLex(). + const numFieldsRemoved : number = await context.redis.zRemRangeByLex("fruits", "[kiwi", "(orange"); + console.log("Number of fields removed: " + numFieldsRemoved); +} +``` + +*** + + + +### zRemRangeByRank() + +> **zRemRangeByRank**(`key`, `start`, `stop`): `Promise`\<`TxClientLike`\> + +Removes all elements in the sorted set stored at key with rank between start and stop. +https://redis.io/commands/zremrangebyrank/ + +#### Parameters + +##### key + +`string` + +##### start + +`number` + +##### stop + +`number` + +#### Returns + +`Promise`\<`TxClientLike`\> + +number of members removed from the sorted set + +#### Arg + +key + +#### Arg + +start + +#### Arg + +stop + +#### Example + +``` +async function zRemRangeByRankExample(context: Devvit.Context) { + await context.redis.zAdd("fruits", + {member: "kiwi", score: 10}, + {member: "mango", score: 20}, + {member: "banana", score: 30}, + {member: "orange", score: 40}, + {member: "apple", score: 50}, + ); + + // Remove fruits ranked 1 through 3 inclusive + const numFieldsRemoved : number = await context.redis.zRemRangeByRank("fruits", 1, 3); + console.log("Number of fields removed: " + numFieldsRemoved); +} +``` + +*** + + + +### zRemRangeByScore() + +> **zRemRangeByScore**(`key`, `min`, `max`): `Promise`\<`TxClientLike`\> + +Removes all elements in the sorted set stored at key with a score between min and max +https://redis.io/commands/zremrangebyscore/ + +#### Parameters + +##### key + +`string` + +##### min + +`number` + +##### max + +`number` + +#### Returns + +`Promise`\<`TxClientLike`\> + +number of members removed from the sorted set + +#### Arg + +key + +#### Arg + +min + +#### Arg + +max + +#### Example + +```ts +async function zRemRangeByScoreExample(context: Devvit.Context) { + await context.redis.zAdd("fruits", + {member: "kiwi", score: 10}, + {member: "mango", score: 20}, + {member: "banana", score: 30}, + {member: "orange", score: 40}, + {member: "apple", score: 50}, + ); + // Remove fruits scored between 30 and 50 inclusive + const numFieldsRemoved : number = await context.redis.zRemRangeByScore("fruits", 30, 50); + console.log("Number of fields removed: " + numFieldsRemoved); +} +``` + +*** + + + +### zScan() + +> **zScan**(`key`, `cursor`, `pattern`?, `count`?): `Promise`\<`TxClientLike`\> + +Iterates elements of Sorted Set types and their associated scores. + +#### Parameters + +##### key + +`string` + +##### cursor + +`number` + +##### pattern? + +`string` + +##### count? + +`number` + +#### Returns + +`Promise`\<`TxClientLike`\> + +#### Arg + +key + +#### Arg + +cursor + +#### Arg + +pattern + +#### Arg + +count + +#### Example + +```ts +async function zScanExample(context: Devvit.Context) { + await context.redis.zAdd("fruits", + {member: "kiwi", score: 0}, + {member: "mango", score: 0}, + {member: "banana", score: 0}, + {member: "orange", score: 0}, + {member: "apple", score: 0}, + ); + const zScanResponse = await context.redis.zScan("fruits", 0); + console.log("zScanResponse: " + JSON.stringify(zScanResponse)); +} +``` + +*** + + + +### zScore() + +> **zScore**(`key`, `member`): `Promise`\<`TxClientLike`\> + +Returns the score of member in the sorted set at key. +https://redis.io/commands/zscore/ + +#### Parameters + +##### key + +`string` + +##### member + +`string` + +#### Returns + +`Promise`\<`TxClientLike`\> + +the score of the member (a double-precision floating point number). + +#### Arg + +key + +#### Arg + +member + +#### Example + +```ts +async function zScoreExample(context: Devvit.Context) { + await context.redis.zAdd("leaderboard", + {member: "louis", score: 37}, + {member: "fernando", score: 10}, + {member: "caesar", score: 20}, + {member: "alexander", score: 25}, + ); + const score : number | undefined = await context.redis.zScore("leaderboard", "caesar"); + if(score !== undefined) { + console.log("Caesar's score: " + score); + } +} +``` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/UIClient.md b/versioned_docs/version-0.13/api/public-api/type-aliases/UIClient.md new file mode 100644 index 00000000..3fcd0c55 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/UIClient.md @@ -0,0 +1,216 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: UIClient + +> **UIClient** = `object` + +The UI client lets your app interact with the Reddit frontend. +This client will only be available for capabilities that have +a frontend component, such as within the Custom Post component's +event handlers, a Form's `onSubmit` handler, and Menu items. + +## Properties + + + +### webView + +> **webView**: `WebViewUIClient` + +Interact with WebView blocks + +## Methods + + + +### navigateTo() + +#### Call Signature + +> **navigateTo**(`url`): `void` + +Navigate to a URL + +##### Parameters + +###### url + +`string` + +##### Returns + +`void` + +#### Call Signature + +> **navigateTo**(`subreddit`): `void` + +##### Parameters + +###### subreddit + +`Pick`\<`Subreddit`, `"permalink"` \| `"url"`\> + +##### Returns + +`void` + +#### Call Signature + +> **navigateTo**(`post`): `void` + +##### Parameters + +###### post + +`Pick`\<`Post`, `"permalink"` \| `"url"`\> + +##### Returns + +`void` + +#### Call Signature + +> **navigateTo**(`comment`): `void` + +##### Parameters + +###### comment + +`Pick`\<`Comment`, `"permalink"` \| `"url"`\> + +##### Returns + +`void` + +#### Call Signature + +> **navigateTo**(`user`): `void` + +##### Parameters + +###### user + +`Pick`\<`User`, `"permalink"` \| `"url"`\> + +##### Returns + +`void` + +#### Call Signature + +> **navigateTo**(`urlOrThing`): `void` + +##### Parameters + +###### urlOrThing + +`string` | \{ `permalink`: `string`; `url`: `string`; \} + +##### Returns + +`void` + +*** + + + +### showForm() + +> **showForm**(`formKey`, `data`?): `void` + +Open a form in a modal + +#### Parameters + +##### formKey + +[`FormKey`](FormKey.md) + +##### data? + +[`JSONObject`](JSONObject.md) + +#### Returns + +`void` + +*** + + + +### showFormInternal() + +> **showFormInternal**(`formKey`, `data`?, `formDataOverride`?): `void` + +Internal use only. + +#### Parameters + +##### formKey + +[`FormKey`](FormKey.md) + +##### data? + +[`JSONObject`](JSONObject.md) + +##### formDataOverride? + +[`Form`](Form.md) + +#### Returns + +`void` + +*** + + + +### showToast() + +#### Call Signature + +> **showToast**(`text`): `void` + +Show a message in a toast. + +##### Parameters + +###### text + +`string` + +##### Returns + +`void` + +#### Call Signature + +> **showToast**(`toast`): `void` + +##### Parameters + +###### toast + +[`Toast`](Toast.md) + +##### Returns + +`void` + +#### Call Signature + +> **showToast**(`textOrToast`): `void` + +##### Parameters + +###### textOrToast + +`string` | [`Toast`](Toast.md) + +##### Returns + +`void` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/UploadMediaOptions.md b/versioned_docs/version-0.13/api/public-api/type-aliases/UploadMediaOptions.md new file mode 100644 index 00000000..22a3f92c --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/UploadMediaOptions.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: UploadMediaOptions + +> **UploadMediaOptions** = `object` + +## Properties + + + +### type + +> **type**: `"image"` \| `"gif"` \| `"video"` + +*** + + + +### url + +> **url**: `string` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/UseAsyncResult.md b/versioned_docs/version-0.13/api/public-api/type-aliases/UseAsyncResult.md new file mode 100644 index 00000000..31b5c5fa --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/UseAsyncResult.md @@ -0,0 +1,37 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: UseAsyncResult\ + +> **UseAsyncResult**\<`S`\> = `object` + +## Type Parameters + +### S + +`S` + +## Properties + + + +### data + +> **data**: `S` \| `null` + +*** + + + +### error + +> **error**: [`AsyncError`](AsyncError.md) \| `null` + +*** + + + +### loading + +> **loading**: `boolean` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/UseChannelHook.md b/versioned_docs/version-0.13/api/public-api/type-aliases/UseChannelHook.md new file mode 100644 index 00000000..cc307e25 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/UseChannelHook.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: UseChannelHook()\ + +> **UseChannelHook**\<`Message`\> = (`options`) => [`UseChannelResult`](UseChannelResult.md)\<`Message`\> + +## Type Parameters + +### Message + +`Message` *extends* [`JSONValue`](JSONValue.md) = [`JSONValue`](JSONValue.md) + +## Parameters + +### options + +`ChannelOptions`\<`Message`\> + +## Returns + +[`UseChannelResult`](UseChannelResult.md)\<`Message`\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/UseChannelResult.md b/versioned_docs/version-0.13/api/public-api/type-aliases/UseChannelResult.md new file mode 100644 index 00000000..07a0532e --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/UseChannelResult.md @@ -0,0 +1,71 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: UseChannelResult\ + +> **UseChannelResult**\<`Message`\> = `object` + +## Type Parameters + +### Message + +`Message` *extends* [`JSONValue`](JSONValue.md) = [`JSONValue`](JSONValue.md) + +## Properties + + + +### status + +> **status**: `ChannelStatus` + +Current subscription status + +## Methods + + + +### send() + +> **send**(`msg`): `Promise`\<`void`\> + +Publish a message to the channel + +#### Parameters + +##### msg + +`Message` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### subscribe() + +> **subscribe**(): `void` + +Subscribe to the channel + +#### Returns + +`void` + +*** + + + +### unsubscribe() + +> **unsubscribe**(): `void` + +Unsubscribe from the channel + +#### Returns + +`void` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/UseFormHook.md b/versioned_docs/version-0.13/api/public-api/type-aliases/UseFormHook.md new file mode 100644 index 00000000..fa3f6239 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/UseFormHook.md @@ -0,0 +1,29 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: UseFormHook()\ + +> **UseFormHook**\<`T`\> = (`form`, `onSubmit`) => [`FormKey`](FormKey.md) + +A hook that returns a form key that can be used in the `ui.showForm` + +## Type Parameters + +### T + +`T` *extends* [`Form`](Form.md) \| [`FormFunction`](FormFunction.md) = [`Form`](Form.md) \| [`FormFunction`](FormFunction.md) + +## Parameters + +### form + +`T` + +### onSubmit + +(`values`) => `void` \| `Promise`\<`void`\> + +## Returns + +[`FormKey`](FormKey.md) diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/UseIntervalHook.md b/versioned_docs/version-0.13/api/public-api/type-aliases/UseIntervalHook.md new file mode 100644 index 00000000..77452c24 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/UseIntervalHook.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: UseIntervalHook() + +> **UseIntervalHook** = (`callback`, `delay`) => [`UseIntervalResult`](UseIntervalResult.md) + +A hook that can used to run a callback on an interval between Block renders. Only one useInterval hook may be running at a time. + +## Parameters + +### callback + +() => `void` \| `Promise`\<`void`\> + +### delay + +`number` + +## Returns + +[`UseIntervalResult`](UseIntervalResult.md) diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/UseIntervalResult.md b/versioned_docs/version-0.13/api/public-api/type-aliases/UseIntervalResult.md new file mode 100644 index 00000000..19ebb11f --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/UseIntervalResult.md @@ -0,0 +1,37 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: UseIntervalResult + +> **UseIntervalResult** = `object` + +An object that contains functions to start and stop the interval created by the `useInterval` hook + +## Properties + + + +### start() + +> **start**: () => `void` + +Start the interval + +#### Returns + +`void` + +*** + + + +### stop() + +> **stop**: () => `void` + +Stop the interval + +#### Returns + +`void` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/UseStateHook.md b/versioned_docs/version-0.13/api/public-api/type-aliases/UseStateHook.md new file mode 100644 index 00000000..17b16f9d --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/UseStateHook.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: UseStateHook + +> **UseStateHook** = [`Context`](Context.md)\[`"useState"`\] diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/UseStateInitializer.md b/versioned_docs/version-0.13/api/public-api/type-aliases/UseStateInitializer.md new file mode 100644 index 00000000..f454554c --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/UseStateInitializer.md @@ -0,0 +1,13 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: UseStateInitializer\ + +> **UseStateInitializer**\<`S`\> = `S` \| () => `S` \| [`AsyncUseStateInitializer`](AsyncUseStateInitializer.md)\<`S`\> + +## Type Parameters + +### S + +`S` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/UseStateResult.md b/versioned_docs/version-0.13/api/public-api/type-aliases/UseStateResult.md new file mode 100644 index 00000000..8a87f432 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/UseStateResult.md @@ -0,0 +1,15 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: UseStateResult\ + +> **UseStateResult**\<`S`\> = \[`S`, [`StateSetter`](StateSetter.md)\<`S`\>\] + +A tuple containing the current state and a function to update it + +## Type Parameters + +### S + +`S` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/UseWebViewOnMessage.md b/versioned_docs/version-0.13/api/public-api/type-aliases/UseWebViewOnMessage.md new file mode 100644 index 00000000..3217f7ef --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/UseWebViewOnMessage.md @@ -0,0 +1,35 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: UseWebViewOnMessage()\ + +> **UseWebViewOnMessage**\<`From`, `To`\> = (`message`, `hook`) => `void` \| `Promise`\<`void`\> + +## Type Parameters + +### From + +`From` *extends* [`JSONValue`](JSONValue.md) = [`JSONValue`](JSONValue.md) + +Message from web view to Devvit Blocks app. + +### To + +`To` *extends* [`JSONValue`](JSONValue.md) = [`JSONValue`](JSONValue.md) + +Message from Devvit Blocks app to web view. + +## Parameters + +### message + +`From` + +### hook + +[`UseWebViewResult`](UseWebViewResult.md)\<`To`\> + +## Returns + +`void` \| `Promise`\<`void`\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/UseWebViewOptions.md b/versioned_docs/version-0.13/api/public-api/type-aliases/UseWebViewOptions.md new file mode 100644 index 00000000..7dd693b8 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/UseWebViewOptions.md @@ -0,0 +1,66 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: UseWebViewOptions\ + +> **UseWebViewOptions**\<`From`, `To`\> = `object` + +## Type Parameters + +### From + +`From` *extends* [`JSONValue`](JSONValue.md) = [`JSONValue`](JSONValue.md) + +Message from web view to Devvit Blocks app. + +### To + +`To` *extends* [`JSONValue`](JSONValue.md) = [`JSONValue`](JSONValue.md) + +Message from Devvit Blocks app to web view. + +## Properties + + + +### onMessage + +> **onMessage**: [`UseWebViewOnMessage`](UseWebViewOnMessage.md)\<`From`, `To`\> + +Handle UI events originating from the web view to be handled by a Devvit app + +*** + + + +### ~~onUnmount()?~~ + +> `optional` **onUnmount**: (`hook`) => `void` \| `Promise`\<`void`\> + +The callback to run when the web view has been unmounted. Might be used to +set state, stop or resume timers, or perform other tasks now that the web view is no longer visible. + +#### Parameters + +##### hook + +[`UseWebViewResult`](UseWebViewResult.md)\<`To`\> + +#### Returns + +`void` \| `Promise`\<`void`\> + +#### Deprecated + +use the page visibility API for now. + +*** + + + +### url? + +> `optional` **url**: `string` + +Relative HTML asset filename like `foo/bar.html`. Defaults to index.html if omitted. diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/UseWebViewResult.md b/versioned_docs/version-0.13/api/public-api/type-aliases/UseWebViewResult.md new file mode 100644 index 00000000..b81293a5 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/UseWebViewResult.md @@ -0,0 +1,63 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: UseWebViewResult\ + +> **UseWebViewResult**\<`To`\> = `object` + +## Type Parameters + +### To + +`To` *extends* [`JSONValue`](JSONValue.md) = [`JSONValue`](JSONValue.md) + +Message from Devvit Blocks app to web view. + +## Methods + + + +### mount() + +> **mount**(): `void` + +Initiate a request for the web view to open + +#### Returns + +`void` + +*** + + + +### postMessage() + +> **postMessage**(`message`): `void` + +Send a message to the web view + +#### Parameters + +##### message + +`To` + +#### Returns + +`void` + +*** + + + +### unmount() + +> **unmount**(): `void` + +Initiate a request for the web view to be closed + +#### Returns + +`void` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ValidatedBooleanField.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ValidatedBooleanField.md new file mode 100644 index 00000000..aee08ff8 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ValidatedBooleanField.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ValidatedBooleanField + +> **ValidatedBooleanField** = `Prettify`\<[`ValidatedFormField`](ValidatedFormField.md)\<[`BooleanField`](BooleanField.md), `boolean`\>\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ValidatedFormField.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ValidatedFormField.md new file mode 100644 index 00000000..e043ecd3 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ValidatedFormField.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ValidatedFormField\ + +> **ValidatedFormField**\<`Field`, `ValueType`\> = `Omit`\<`Field`, `"required"`\> & `object` + +## Type declaration + +### onValidate? + +> `optional` **onValidate**: [`OnValidateHandler`](OnValidateHandler.md)\<`ValueType`\> + +## Type Parameters + +### Field + +`Field` + +### ValueType + +`ValueType` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ValidatedNumberField.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ValidatedNumberField.md new file mode 100644 index 00000000..64ad1631 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ValidatedNumberField.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ValidatedNumberField + +> **ValidatedNumberField** = `Prettify`\<[`ValidatedFormField`](ValidatedFormField.md)\<[`NumberField`](NumberField.md), `number`\>\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ValidatedParagraphField.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ValidatedParagraphField.md new file mode 100644 index 00000000..8f19d00a --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ValidatedParagraphField.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ValidatedParagraphField + +> **ValidatedParagraphField** = `Prettify`\<[`ValidatedFormField`](ValidatedFormField.md)\<[`ParagraphField`](ParagraphField.md), `string`\>\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ValidatedSelectField.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ValidatedSelectField.md new file mode 100644 index 00000000..28b8f084 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ValidatedSelectField.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ValidatedSelectField + +> **ValidatedSelectField** = `Prettify`\<[`ValidatedFormField`](ValidatedFormField.md)\<[`SelectField`](SelectField.md), `string`[]\>\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ValidatedStringField.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ValidatedStringField.md new file mode 100644 index 00000000..d38e8dca --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ValidatedStringField.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ValidatedStringField + +> **ValidatedStringField** = `Prettify`\<[`ValidatedFormField`](ValidatedFormField.md)\<[`StringField`](StringField.md), `string`\>\> diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ZMember.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ZMember.md new file mode 100644 index 00000000..73ccb3da --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ZMember.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ZMember + +> **ZMember** = `object` + +## Properties + + + +### member + +> **member**: `string` + +*** + + + +### score + +> **score**: `number` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ZRangeByScoreOptions.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ZRangeByScoreOptions.md new file mode 100644 index 00000000..8cf035d3 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ZRangeByScoreOptions.md @@ -0,0 +1,31 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ZRangeByScoreOptions + +> **ZRangeByScoreOptions** = `object` + +## Properties + + + +### limit? + +> `optional` **limit**: `object` + +#### count + +> **count**: `number` + +#### offset + +> **offset**: `number` + +*** + + + +### withScores? + +> `optional` **withScores**: `boolean` diff --git a/versioned_docs/version-0.13/api/public-api/type-aliases/ZRangeOptions.md b/versioned_docs/version-0.13/api/public-api/type-aliases/ZRangeOptions.md new file mode 100644 index 00000000..857946d8 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/type-aliases/ZRangeOptions.md @@ -0,0 +1,42 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Type Alias: ZRangeOptions + +> **ZRangeOptions** = `object` + +## Properties + + + +### by + +> **by**: `"score"` \| `"lex"` \| `"rank"` + +*** + + + +### limit? + +> `optional` **limit**: `object` + +#### count + +> **count**: `number` + +#### offset + +> **offset**: `number` + +*** + + + +### reverse? + +> `optional` **reverse**: `boolean` + +Reverses the sorted set, with index 0 as the element with the highest +score. diff --git a/versioned_docs/version-0.13/api/public-api/variables/ALL_ICON_NAMES.md b/versioned_docs/version-0.13/api/public-api/variables/ALL_ICON_NAMES.md new file mode 100644 index 00000000..b7a16738 --- /dev/null +++ b/versioned_docs/version-0.13/api/public-api/variables/ALL_ICON_NAMES.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# Variable: ALL\_ICON\_NAMES + +> `const` **ALL\_ICON\_NAMES**: readonly \[`"3rd-party"`, `"a11y"`, `"activity"`, `"add-emoji"`, `"add"`, `"add-filter"`, `"add-media"`, `"add-to-feed"`, `"admin"`, `"ads"`, `"ai"`, `"align-center"`, `"align-left"`, `"align-right"`, `"all"`, `"ama"`, `"answers"`, `"appearance"`, `"approve"`, `"archived"`, `"aspect-ratio-12"`, `"aspect-ratio"`, `"aspect-rectangle"`, `"attach"`, `"audience"`, `"audio"`, `"author"`, `"automod"`, `"avatar-style"`, `"award"`, `"back"`, `"backup"`, `"ban"`, `"best"`, `"beta-advertise-2"`, `"beta-advertise-3"`, `"beta-advertise-4"`, `"beta-advertise-5"`, `"binoculars"`, `"block"`, `"blockchain"`, `"bold"`, `"boost"`, `"bot"`, `"bounce"`, `"brand-awareness"`, `"browse"`, `"browser"`, `"business"`, `"cake"`, `"calendar"`, `"camera"`, `"campaign"`, `"caret-down"`, `"caret-left"`, `"caret-right"`, `"caret-up"`, `"caret-updown"`, `"chat"`, `"chat-group"`, `"chat-new"`, `"chat-private"`, `"checkbox-dismiss"`, `"checkbox"`, `"checkmark"`, `"chrome"`, `"clear"`, `"client-list"`, `"close"`, `"closed-captioning"`, `"club-12"`, `"club"`, `"code-block"`, `"code-inline"`, `"coins-color-old"`, `"coins"`, `"collapse-left"`, `"collapse-right"`, `"collectible-expressions"`, `"collection"`, `"comment"`, `"comments"`, `"communities"`, `"community"`, `"confidence"`, `"confidence-outline-null"`, `"contest"`, `"controversial"`, `"conversion"`, `"copy-clipboard"`, `"crop"`, `"crosspost"`, `"crowd-control"`, `"custom-feed"`, `"customize"`, `"dashboard"`, `"day"`, `"delete-column"`, `"delete"`, `"delete-row"`, `"devvit"`, `"discover"`, `"dismiss-all"`, `"distinguish"`, `"down-arrow"`, `"down"`, `"download"`, `"downvote"`, `"downvotes"`, `"drag"`, `"drugs"`, `"duplicate"`, `"edit"`, `"effect"`, `"embed"`, `"emoji"`, `"end-live-chat"`, `"error"`, `"expand-left-12"`, `"expand-left"`, `"expand-right-12"`, `"expand-right"`, `"external"`, `"feed-video"`, `"filter"`, `"fork"`, `"format"`, `"forward"`, `"funnel"`, `"gif-post"`, `"gold"`, `"happy-face"`, `"hashtag"`, `"heart"`, `"help"`, `"hide"`, `"history"`, `"home"`, `"hot"`, `"ignore-reports"`, `"image-post"`, `"inbox"`, `"infinity-12"`, `"infinity"`, `"info"`, `"insert-column-left"`, `"insert-column-right"`, `"insert-row-above"`, `"insert-row-below"`, `"internet"`, `"invite"`, `"italic"`, `"join"`, `"joined"`, `"jump-down"`, `"jump-up"`, `"karma"`, `"keyboard"`, `"keyword"`, `"kick"`, `"language"`, `"leave"`, `"left"`, `"line-graph"`, `"link"`, `"link-post"`, `"list-bulleted"`, `"list-numbered"`, `"live-chat"`, `"live"`, `"load"`, `"location"`, `"lock"`, `"logout"`, `"loop"`, `"macro"`, `"mark-read"`, `"marketplace"`, `"mask"`, `"media-gallery"`, `"meme"`, `"menu"`, `"merge"`, `"message"`, `"mic"`, `"mic-mute"`, `"mod"`, `"mod-mail"`, `"mod-mode"`, `"mod-mute"`, `"mod-overflow"`, `"mod-queue"`, `"mod-unmute"`, `"music"`, `"mute"`, `"neutral-face"`, `"new"`, `"new-guide"`, `"night"`, `"no-internet"`, `"notification"`, `"notification-frequent"`, `"notification-off"`, `"nsfw-alt"`, `"nsfw"`, `"nsfw-language"`, `"nsfw-violence"`, `"official"`, `"original"`, `"overflow-caret"`, `"overflow-horizontal"`, `"overflow-vertical"`, `"partner-community"`, `"pause"`, `"payment"`, `"peace"`, `"pending-posts"`, `"phone"`, `"pin"`, `"planet"`, `"play"`, `"poll-post"`, `"popular"`, `"posts"`, `"powerup"`, `"predictions"`, `"premium"`, `"privacy"`, `"profile"`, `"qa"`, `"qr-code"`, `"quarantined"`, `"quote"`, `"r-slash"`, `"radar"`, `"radio-button"`, `"raise-hand"`, `"random"`, `"ratings-everyone"`, `"ratings-mature"`, `"ratings-nsfw"`, `"ratings-violence"`, `"recovery-phrase"`, `"refresh"`, `"removal-reasons"`, `"remove"`, `"reply"`, `"report"`, `"reverse"`, `"rich-text"`, `"right"`, `"rising"`, `"rotate"`, `"rotate-image"`, `"rpan"`, `"rules"`, `"sad-face"`, `"safari"`, `"save"`, `"save-view"`, `"saved"`, `"saved-response"`, `"search"`, `"self"`, `"send"`, `"settings"`, `"severity"`, `"share-android"`, `"share"`, `"share-ios"`, `"share-new"`, `"show"`, `"side-menu"`, `"skipback10"`, `"skipforward10"`, `"sort-az"`, `"sort"`, `"sort-price"`, `"sort-za"`, `"spam"`, `"spoiler"`, `"sponsored"`, `"spreadsheet"`, `"star"`, `"statistics"`, `"status-live"`, `"sticker"`, `"strikethrough"`, `"subtract"`, `"superscript"`, `"swap-camera"`, `"swipe-back"`, `"swipe-down"`, `"swipe"`, `"swipe-up"`, `"table"`, `"tag"`, `"tap"`, `"telescope"`, `"text"`, `"text-post"`, `"text-size"`, `"thumbs-down"`, `"thumbs-up"`, `"toggle"`, `"tools"`, `"top"`, `"topic-activism"`, `"topic-addictionsupport"`, `"topic-advice"`, `"topic-animals"`, `"topic-anime"`, `"topic-art"`, `"topic-beauty"`, `"topic-business"`, `"topic-careers"`, `"topic-cars"`, `"topic-celebrity"`, `"topic-craftsdiy"`, `"topic-crypto"`, `"topic-culture"`, `"topic-diy"`, `"topic-entertainment"`, `"topic-ethics"`, `"topic-family"`, `"topic-fashion"`, `"topic"`, `"topic-fitness"`, `"topic-food"`, `"topic-funny"`, `"topic-gender"`, `"topic-health"`, `"topic-help"`, `"topic-history"`, `"topic-hobbies"`, `"topic-homegarden"`, `"topic-internet"`, `"topic-law"`, `"topic-learning"`, `"topic-lifestyle"`, `"topic-marketplace"`, `"topic-mature"`, `"topic-mensfashion"`, `"topic-menshealth"`, `"topic-meta"`, `"topic-military"`, `"topic-movies"`, `"topic-music"`, `"topic-news"`, `"topic-other"`, `"topic-outdoors"`, `"topic-pets"`, `"topic-photography"`, `"topic-places"`, `"topic-podcasts"`, `"topic-politics"`, `"topic-programming"`, `"topic-reading"`, `"topic-religion"`, `"topic-science"`, `"topic-sexorientation"`, `"topic-sports"`, `"topic-style"`, `"topic-tabletop"`, `"topic-technology"`, `"topic-television"`, `"topic-traumasupport"`, `"topic-travel"`, `"topic-videogaming"`, `"topic-womensfashion"`, `"topic-womenshealth"`, `"translate"`, `"translation-off"`, `"trim"`, `"u-slash"`, `"unban"`, `"undo"`, `"unheart"`, `"unlock"`, `"unmod"`, `"unpin"`, `"unstar"`, `"unverified"`, `"up-arrow"`, `"up"`, `"upload"`, `"upvote"`, `"upvotes"`, `"user"`, `"user-note"`, `"users"`, `"vault"`, `"verified"`, `"video-camera"`, `"video-feed"`, `"video-live"`, `"video-post"`, `"video-thread"`, `"video-transcription"`, `"view-card"`, `"view-classic"`, `"view-compact"`, `"view-grid"`, `"view-sort"`, `"views"`, `"voiceover"`, `"volume"`, `"wallet"`, `"warning"`, `"webhook"`, `"whale"`, `"wiki-ban"`, `"wiki"`, `"wiki-unban"`, `"world"`, `"coins-color"`, `"powerup-color"`, `"powerup-fill-color"`, `"video-live-1"`, `"video-live-fill-1"`\] diff --git a/versioned_docs/version-0.13/api/redditapi/README.md b/versioned_docs/version-0.13/api/redditapi/README.md new file mode 100644 index 00000000..4535c84e --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/README.md @@ -0,0 +1,10 @@ +**@devvit/public-api v0.13.0-dev** + +*** + +# @devvit/public-api v0.13.0-dev + +## Modules + +- [models](models/README.md) +- [RedditAPIClient](RedditAPIClient/README.md) diff --git a/versioned_docs/version-0.13/api/redditapi/RedditAPIClient/README.md b/versioned_docs/version-0.13/api/redditapi/RedditAPIClient/README.md new file mode 100644 index 00000000..87fddbc4 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/RedditAPIClient/README.md @@ -0,0 +1,14 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# RedditAPIClient + +## Classes + +- [RedditAPIClient](classes/RedditAPIClient.md) + +## Type Aliases + +- [InviteModeratorOptions](type-aliases/InviteModeratorOptions.md) +- [MuteUserOptions](type-aliases/MuteUserOptions.md) diff --git a/versioned_docs/version-0.13/api/redditapi/RedditAPIClient/classes/RedditAPIClient.md b/versioned_docs/version-0.13/api/redditapi/RedditAPIClient/classes/RedditAPIClient.md new file mode 100644 index 00000000..768e02c6 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/RedditAPIClient/classes/RedditAPIClient.md @@ -0,0 +1,3280 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: RedditAPIClient + +The Reddit API Client + +To use the Reddit API Client, add it to the plugin configuration at the top of the file. + +## Example + +```ts + +Devvit.configure({ + redditAPI: true, + // other plugins +}) + +// use within one of our capability handlers e.g. Menu Actions, Triggers, Scheduled Job Type, etc +async (event, context) => { + const subreddit = await context.reddit.getSubredditById(context.subredditId); + context.reddit.submitPost({ + subredditName: subreddit.name, + title: 'test post', + text: 'test body', + }) + // additional code +} +``` + +## Constructors + + + +### new RedditAPIClient() + +> **new RedditAPIClient**(`metadata`): `RedditAPIClient` + +#### Parameters + +##### metadata + +`Metadata` + +#### Returns + +`RedditAPIClient` + +## Accessors + + + +### modMail + +#### Get Signature + +> **get** **modMail**(): [`ModMailService`](../../models/classes/ModMailService.md) + +Get ModMail API object + +##### Example + +```ts +await reddit.modMail.reply({ + body: "Here is my message", + conversationId: "abcd42"; +}) +``` + +##### Returns + +[`ModMailService`](../../models/classes/ModMailService.md) + +## Methods + + + +### addEditorToWikiPage() + +> **addEditorToWikiPage**(`subredditName`, `page`, `username`): `Promise`\<`void`\> + +Add an editor to a wiki page. + +#### Parameters + +##### subredditName + +`string` + +The name of the subreddit the wiki is in. + +##### page + +`string` + +The name of the wiki page to add the editor to. + +##### username + +`string` + +The username of the user to add as an editor. + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### addModNote() + +> **addModNote**(`options`): `Promise`\<[`ModNote`](../../models/classes/ModNote.md)\> + +Add a mod note. + +#### Parameters + +##### options + +`Prettify` + +Options for the request + +#### Returns + +`Promise`\<[`ModNote`](../../models/classes/ModNote.md)\> + +A Promise that resolves if the mod note was successfully added. + +*** + + + +### addRemovalNote() + +> **addRemovalNote**(`options`): `Promise`\<`void`\> + +Add a mod note for why a post or comment was removed + +#### Parameters + +##### options + +`Prettify` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### addSubredditRemovalReason() + +> **addSubredditRemovalReason**(`subredditName`, `options`): `Promise`\<`string`\> + +Add a removal reason to a subreddit. + +#### Parameters + +##### subredditName + +`string` + +Name of the subreddit (e.g. `askReddit` or `r/askReddit`). + +##### options + +Options. + +###### message + +`string` + +The message associated with the removal reason. + +###### title + +`string` + +The title of the removal reason. + +#### Returns + +`Promise`\<`string`\> + +Removal Reason ID + +#### Example + +```ts +const newReason = await reddit.addSubredditRemovalReasons( + 'askReddit', + { + title: 'Spam', + message: 'This is spam!' + } +); +console.log(newReason.id) +``` + +*** + + + +### addWidget() + +> **addWidget**(`widgetData`): `Promise`\<[`Widget`](../../models/classes/Widget.md)\> + +Add a widget to a subreddit. + +#### Parameters + +##### widgetData + +[`AddWidgetData`](../../models/type-aliases/AddWidgetData.md) + +The data for the widget to add. + +#### Returns + +`Promise`\<[`Widget`](../../models/classes/Widget.md)\> + +- The added Widget object. + +*** + + + +### addWikiContributor() + +> **addWikiContributor**(`username`, `subredditName`): `Promise`\<`void`\> + +Add a user as a wiki contributor for a subreddit. + +#### Parameters + +##### username + +`string` + +The username of the user to add as a wiki contributor. e.g. 'spez' + +##### subredditName + +`string` + +The name of the subreddit to add the user as a wiki contributor. e.g. 'memes' + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### approve() + +> **approve**(`id`): `Promise`\<`void`\> + +Approve a post or comment. + +#### Parameters + +##### id + +`string` + +The id of the post (t3_) or comment (t1_) to approve. + +#### Returns + +`Promise`\<`void`\> + +#### Example + +```ts +await reddit.approve('t3_123456'); +await reddit.approve('t1_123456'); +``` + +*** + + + +### approveUser() + +> **approveUser**(`username`, `subredditName`): `Promise`\<`void`\> + +Approve a user to post in a subreddit. + +#### Parameters + +##### username + +`string` + +The username of the user to approve. e.g. 'spez' + +##### subredditName + +`string` + +The name of the subreddit to approve the user in. e.g. 'memes' + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### banUser() + +> **banUser**(`options`): `Promise`\<`void`\> + +Ban a user from a subreddit. + +#### Parameters + +##### options + +[`BanUserOptions`](../../models/type-aliases/BanUserOptions.md) + +Options for the request + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### banWikiContributor() + +> **banWikiContributor**(`options`): `Promise`\<`void`\> + +Ban a user from contributing to the wiki on a subreddit. + +#### Parameters + +##### options + +[`BanWikiContributorOptions`](../../models/type-aliases/BanWikiContributorOptions.md) + +Options for the request + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### createPostFlairTemplate() + +> **createPostFlairTemplate**(`options`): `Promise`\<[`FlairTemplate`](../../models/classes/FlairTemplate.md)\> + +Create a post flair template for a subreddit. + +#### Parameters + +##### options + +[`CreateFlairTemplateOptions`](../../models/type-aliases/CreateFlairTemplateOptions.md) + +Options for the request + +#### Returns + +`Promise`\<[`FlairTemplate`](../../models/classes/FlairTemplate.md)\> + +The created FlairTemplate object. + +*** + + + +### createRule() + +> **createRule**(`subredditName`, `options`): `Promise`\<`void`\> + +Create a new rule in a subreddit. + +#### Parameters + +##### subredditName + +`string` + +The name of the subreddit to add the rule to. + +##### options + +[`CreateRuleOptions`](../../models/type-aliases/CreateRuleOptions.md) + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### createUserFlairTemplate() + +> **createUserFlairTemplate**(`options`): `Promise`\<[`FlairTemplate`](../../models/classes/FlairTemplate.md)\> + +Create a user flair template for a subreddit. + +#### Parameters + +##### options + +[`CreateFlairTemplateOptions`](../../models/type-aliases/CreateFlairTemplateOptions.md) + +Options for the request + +#### Returns + +`Promise`\<[`FlairTemplate`](../../models/classes/FlairTemplate.md)\> + +The created FlairTemplate object. + +*** + + + +### createWikiPage() + +> **createWikiPage**(`options`): `Promise`\<[`WikiPage`](../../models/classes/WikiPage.md)\> + +Create a new wiki page for a subreddit. + +#### Parameters + +##### options + +[`CreateWikiPageOptions`](../../models/type-aliases/CreateWikiPageOptions.md) + +Options for the request + +#### Returns + +`Promise`\<[`WikiPage`](../../models/classes/WikiPage.md)\> + +- The created WikiPage object. + +*** + + + +### crosspost() + +> **crosspost**(`options`): `Promise`\<[`Post`](../../models/classes/Post.md)\> + +Crossposts a post to a subreddit. + +#### Parameters + +##### options + +[`CrosspostOptions`](../../models/type-aliases/CrosspostOptions.md) + +Options for crossposting a post + +#### Returns + +`Promise`\<[`Post`](../../models/classes/Post.md)\> + +- A Promise that resolves to a Post object. + +*** + + + +### deleteFlairTemplate() + +> **deleteFlairTemplate**(`subredditName`, `flairTemplateId`): `Promise`\<`void`\> + +Delete a flair template from a subreddit. + +#### Parameters + +##### subredditName + +`string` + +The name of the subreddit to delete the flair template from. + +##### flairTemplateId + +`string` + +The ID of the flair template to delete. + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### deleteModNote() + +> **deleteModNote**(`options`): `Promise`\<`boolean`\> + +Delete a mod note. + +#### Parameters + +##### options + +`Prettify` + +Options for the request + +#### Returns + +`Promise`\<`boolean`\> + +True if it was deleted successfully; false otherwise. + +*** + + + +### deleteSubredditRemovalReason() + +> **deleteSubredditRemovalReason**(`subredditName`, `reasonId`): `Promise`\<`void`\> + +Delete a removal reason from a subreddit. + +#### Parameters + +##### subredditName + +`string` + +Name of the subreddit (e.g. `askReddit` or `r/askReddit`). + +##### reasonId + +`string` + +ID of the removal reason (from get or add). + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### deleteWidget() + +> **deleteWidget**(`subredditName`, `widgetId`): `Promise`\<`void`\> + +Delete a widget from a subreddit. + +#### Parameters + +##### subredditName + +`string` + +The name of the subreddit to delete the widget from. + +##### widgetId + +`string` + +The ID of the widget to delete. + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### editFlairTemplate() + +> **editFlairTemplate**(`options`): `Promise`\<[`FlairTemplate`](../../models/classes/FlairTemplate.md)\> + +Edit a flair template for a subreddit. This can be either a post or user flair template. +Note: If you leave any of the options fields as undefined, they will reset to their default values. + +#### Parameters + +##### options + +[`EditFlairTemplateOptions`](../../models/type-aliases/EditFlairTemplateOptions.md) + +Options for the request + +#### Returns + +`Promise`\<[`FlairTemplate`](../../models/classes/FlairTemplate.md)\> + +The edited FlairTemplate object. + +*** + + + +### getApprovedUsers() + +> **getApprovedUsers**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`User`](../../models/classes/User.md)\> + +Get a list of users who have been approved to post in a subreddit. + +#### Parameters + +##### options + +`GetSubredditUsersOptions` + +Options for the request + +#### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`User`](../../models/classes/User.md)\> + +A Listing of User objects. + +*** + + + +### getAppUser() + +> **getAppUser**(): `Promise`\<[`User`](../../models/classes/User.md)\> + +Get the user that the app runs as on the provided metadata. + +#### Returns + +`Promise`\<[`User`](../../models/classes/User.md)\> + +A Promise that resolves to a User object. + +#### Example + +```ts +const user = await reddit.getAppUser(metadata); +``` + +*** + + + +### getBannedUsers() + +> **getBannedUsers**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`User`](../../models/classes/User.md)\> + +Get a list of users who are banned from a subreddit. + +#### Parameters + +##### options + +`GetSubredditUsersOptions` + +Options for the request + +#### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`User`](../../models/classes/User.md)\> + +A Listing of User objects. + +*** + + + +### getBannedWikiContributors() + +> **getBannedWikiContributors**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`User`](../../models/classes/User.md)\> + +Get a list of users who are banned from contributing to the wiki on a subreddit. + +#### Parameters + +##### options + +`GetSubredditUsersOptions` + +Options for the request + +#### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`User`](../../models/classes/User.md)\> + +A Listing of User objects. + +*** + + + +### getBestPosts() + +> **getBestPosts**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +Get a list of best posts from the front page. +This method will get the front page for the app account by default. +To get the front page for a user, please contact Reddit. + +#### Parameters + +##### options + +[`ListingFetchOptions`](../../models/type-aliases/ListingFetchOptions.md) + +Options for the request + +#### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +A Listing of Post objects. + +#### Example + +```ts +const posts = await reddit.getBestPosts({ + limit: 1000, + pageSize: 100 +}).all(); +``` + +*** + + + +### getCommentById() + +> **getCommentById**(`id`): `Promise`\<[`Comment`](../../models/classes/Comment.md)\> + +Get a [Comment](../../models/classes/Comment.md) object by ID + +#### Parameters + +##### id + +`string` + +The ID (starting with t1_) of the comment to retrieve. e.g. t1_1qjpg + +#### Returns + +`Promise`\<[`Comment`](../../models/classes/Comment.md)\> + +A Promise that resolves to a Comment object. + +#### Example + +```ts +const comment = await reddit.getCommentById('t1_1qjpg'); +``` + +*** + + + +### getComments() + +> **getComments**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Comment`](../../models/classes/Comment.md)\> + +Get a list of comments from a specific post or comment. + +#### Parameters + +##### options + +[`GetCommentsOptions`](../../models/type-aliases/GetCommentsOptions.md) + +Options for the request + +#### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Comment`](../../models/classes/Comment.md)\> + +A Listing of Comment objects. + +#### Example + +```ts +const comments = await reddit.getComments({ + postId: 't3_1qjpg', + limit: 1000, + pageSize: 100 +}).all(); +``` + +*** + + + +### getCommentsAndPostsByUser() + +> **getCommentsAndPostsByUser**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md) \| [`Comment`](../../models/classes/Comment.md)\> + +Get a list of posts and comments from a specific user. + +#### Parameters + +##### options + +[`GetUserOverviewOptions`](../../models/type-aliases/GetUserOverviewOptions.md) + +Options for the request + +#### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md) \| [`Comment`](../../models/classes/Comment.md)\> + +A Listing of `Post` and `Comment` objects. + +*** + + + +### getCommentsByUser() + +> **getCommentsByUser**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Comment`](../../models/classes/Comment.md)\> + +Get a list of comments by a specific user. + +#### Parameters + +##### options + +[`GetCommentsByUserOptions`](../../models/type-aliases/GetCommentsByUserOptions.md) + +Options for the request + +#### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Comment`](../../models/classes/Comment.md)\> + +A Listing of Comment objects. + +*** + + + +### getControversialPosts() + +> **getControversialPosts**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +Get a list of controversial posts from a specific subreddit. + +#### Parameters + +##### options + +[`GetPostsOptionsWithTimeframe`](../../models/type-aliases/GetPostsOptionsWithTimeframe.md) + +Options for the request + +#### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +A Listing of Post objects. + +#### Example + +```ts +const posts = await reddit.getControversialPosts({ + subredditName: 'memes', + timeframe: 'day', + limit: 1000, + pageSize: 100 +}).all(); +``` + +*** + + + +### getCurrentSubreddit() + +> **getCurrentSubreddit**(): `Promise`\<[`Subreddit`](../../models/classes/Subreddit.md)\> + +Retrieves the current subreddit. + +#### Returns + +`Promise`\<[`Subreddit`](../../models/classes/Subreddit.md)\> + +A Promise that resolves a Subreddit object. + +#### Example + +```ts +const currentSubreddit = await reddit.getCurrentSubreddit(); +``` + +*** + + + +### getCurrentSubredditName() + +> **getCurrentSubredditName**(): `Promise`\<`string`\> + +Retrieves the name of the current subreddit. + +#### Returns + +`Promise`\<`string`\> + +A Promise that resolves a string representing the current subreddit's name. + +#### Example + +```ts +const currentSubredditName = await reddit.getCurrentSubredditName(); +``` + +*** + + + +### getCurrentUser() + +> **getCurrentUser**(): `Promise`\<`undefined` \| [`User`](../../models/classes/User.md)\> + +Get the current calling user. +Resolves to undefined for logged-out custom post renders. + +#### Returns + +`Promise`\<`undefined` \| [`User`](../../models/classes/User.md)\> + +A Promise that resolves to a User object or undefined + +#### Example + +```ts +const user = await reddit.getCurrentUser(); +``` + +*** + + + +### getCurrentUsername() + +> **getCurrentUsername**(): `Promise`\<`undefined` \| `string`\> + +Get the current calling user's username. +Resolves to undefined for logged-out custom post renders. + +#### Returns + +`Promise`\<`undefined` \| `string`\> + +A Promise that resolves to a string representing the username or undefined + +#### Example + +```ts +const username = await reddit.getCurrentUsername(); +``` + +*** + + + +### getDuplicatesForPost() + +> **getDuplicatesForPost**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +Get posts that shared the same link as the given post. + +#### Parameters + +##### options + +[`GetDuplicatesOptions`](../../models/type-aliases/GetDuplicatesOptions.md) + +Options for the request. Post ID is required, eveything else is optional. + +#### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +A Listing of Post objects. + +#### Example + +```ts +const duplicates = await reddit.getDuplicatesForPost({ + postId: 't3_abc123', + sort: 'num_comments', + limit: 100 +}).all(); +``` + +*** + + + +### getEdited() + +#### Call Signature + +> **getEdited**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Comment`](../../models/classes/Comment.md)\> + +Return a listing of things that have been edited recently. + +##### Parameters + +###### options + +[`ModLogOptions`](../../models/type-aliases/ModLogOptions.md)\<`"comment"`\> + +##### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Comment`](../../models/classes/Comment.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getEdited(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getEdited({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +#### Call Signature + +> **getEdited**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +Return a listing of things that have been edited recently. + +##### Parameters + +###### options + +[`ModLogOptions`](../../models/type-aliases/ModLogOptions.md)\<`"post"`\> + +##### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getEdited(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getEdited({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +#### Call Signature + +> **getEdited**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md) \| [`Comment`](../../models/classes/Comment.md)\> + +Return a listing of things that have been edited recently. + +##### Parameters + +###### options + +[`ModLogOptions`](../../models/type-aliases/ModLogOptions.md)\<`"all"`\> + +##### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md) \| [`Comment`](../../models/classes/Comment.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getEdited(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getEdited({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +*** + + + +### getHotPosts() + +> **getHotPosts**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +Get a list of hot posts from a specific subreddit. + +#### Parameters + +##### options + +[`GetHotPostsOptions`](../../models/type-aliases/GetHotPostsOptions.md) + +Options for the request + +#### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +A Listing of Post objects. + +#### Example + +```ts +const posts = await reddit.getHotPosts({ + subredditName: 'memes', + timeframe: 'day', + limit: 1000, + pageSize: 100 +}).all(); +``` + +*** + + + +### getMessages() + +> **getMessages**(`options`): `Promise`\<[`Listing`](../../models/classes/Listing.md)\<[`PrivateMessage`](../../models/classes/PrivateMessage.md)\>\> + +Get private messages sent to the currently authenticated user. + +#### Parameters + +##### options + +`Prettify` + +Options for the request + +#### Returns + +`Promise`\<[`Listing`](../../models/classes/Listing.md)\<[`PrivateMessage`](../../models/classes/PrivateMessage.md)\>\> + +*** + + + +### getModerationLog() + +> **getModerationLog**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`ModAction`](../../models/interfaces/ModAction.md)\> + +Get the moderation log for a subreddit. + +#### Parameters + +##### options + +[`GetModerationLogOptions`](../../models/type-aliases/GetModerationLogOptions.md) + +Options for the request + +#### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`ModAction`](../../models/interfaces/ModAction.md)\> + +A Listing of ModAction objects. + +#### Example + +```ts +const modActions = await reddit.getModerationLog({ + subredditName: 'memes', + moderatorUsernames: ['spez'], + type: 'banuser', + limit: 1000, + pageSize: 100 +}).all(); +``` + +*** + + + +### getModerators() + +> **getModerators**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`User`](../../models/classes/User.md)\> + +Get a list of users who are moderators for a subreddit. + +#### Parameters + +##### options + +`GetSubredditUsersOptions` + +Options for the request + +#### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`User`](../../models/classes/User.md)\> + +A Listing of User objects. + +*** + + + +### getModNotes() + +> **getModNotes**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`ModNote`](../../models/classes/ModNote.md)\> + +Get a list of mod notes related to a user in a subreddit. + +#### Parameters + +##### options + +`Prettify` + +Options for the request + +#### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`ModNote`](../../models/classes/ModNote.md)\> + +A listing of ModNote objects. + +*** + + + +### getModQueue() + +#### Call Signature + +> **getModQueue**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Comment`](../../models/classes/Comment.md)\> + +Return a listing of things requiring moderator review, such as reported things and items. + +##### Parameters + +###### options + +[`ModLogOptions`](../../models/type-aliases/ModLogOptions.md)\<`"comment"`\> + +##### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Comment`](../../models/classes/Comment.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getModQueue(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getModQueue({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +#### Call Signature + +> **getModQueue**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +Return a listing of things requiring moderator review, such as reported things and items. + +##### Parameters + +###### options + +[`ModLogOptions`](../../models/type-aliases/ModLogOptions.md)\<`"post"`\> + +##### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getModQueue(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getModQueue({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +#### Call Signature + +> **getModQueue**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md) \| [`Comment`](../../models/classes/Comment.md)\> + +Return a listing of things requiring moderator review, such as reported things and items. + +##### Parameters + +###### options + +[`ModLogOptions`](../../models/type-aliases/ModLogOptions.md)\<`"all"`\> + +##### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md) \| [`Comment`](../../models/classes/Comment.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getModQueue(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getModQueue({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +*** + + + +### getMutedUsers() + +> **getMutedUsers**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`User`](../../models/classes/User.md)\> + +Get a list of users who are muted in a subreddit. + +#### Parameters + +##### options + +`GetSubredditUsersOptions` + +Options for the request + +#### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`User`](../../models/classes/User.md)\> + +A listing of User objects. + +*** + + + +### getNewPosts() + +> **getNewPosts**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +Get a list of new posts from a specific subreddit. + +#### Parameters + +##### options + +[`GetPostsOptions`](../../models/type-aliases/GetPostsOptions.md) + +Options for the request + +#### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +A Listing of Post objects. + +#### Example + +```ts +const posts = await reddit.getNewPosts({ + subredditName: 'memes', + limit: 1000, + pageSize: 100 +}).all(); +``` + +*** + + + +### getPostById() + +> **getPostById**(`id`): `Promise`\<[`Post`](../../models/classes/Post.md)\> + +Gets a [Post](../../models/classes/Post.md) object by ID + +#### Parameters + +##### id + +`string` + +#### Returns + +`Promise`\<[`Post`](../../models/classes/Post.md)\> + +A Promise that resolves to a Post object. + +*** + + + +### getPostFlairTemplates() + +> **getPostFlairTemplates**(`subredditName`): `Promise`\<[`FlairTemplate`](../../models/classes/FlairTemplate.md)[]\> + +Get the list of post flair templates for a subreddit. + +#### Parameters + +##### subredditName + +`string` + +The name of the subreddit to get the post flair templates for. + +#### Returns + +`Promise`\<[`FlairTemplate`](../../models/classes/FlairTemplate.md)[]\> + +A Promise that resolves with an array of FlairTemplate objects. + +*** + + + +### getPostsByUser() + +> **getPostsByUser**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +Get a list of posts from a specific user. + +#### Parameters + +##### options + +[`GetPostsByUserOptions`](../../models/type-aliases/GetPostsByUserOptions.md) + +Options for the request + +#### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +A Listing of Post objects. + +*** + + + +### getReports() + +#### Call Signature + +> **getReports**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Comment`](../../models/classes/Comment.md)\> + +Return a listing of things that have been reported. + +##### Parameters + +###### options + +[`ModLogOptions`](../../models/type-aliases/ModLogOptions.md)\<`"comment"`\> + +##### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Comment`](../../models/classes/Comment.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getReports(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getReports({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +#### Call Signature + +> **getReports**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +Return a listing of things that have been reported. + +##### Parameters + +###### options + +[`ModLogOptions`](../../models/type-aliases/ModLogOptions.md)\<`"post"`\> + +##### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getReports(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getReports({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +#### Call Signature + +> **getReports**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md) \| [`Comment`](../../models/classes/Comment.md)\> + +Return a listing of things that have been reported. + +##### Parameters + +###### options + +[`ModLogOptions`](../../models/type-aliases/ModLogOptions.md)\<`"all"`\> + +##### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md) \| [`Comment`](../../models/classes/Comment.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getReports(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getReports({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +*** + + + +### getRisingPosts() + +> **getRisingPosts**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +Get a list of hot posts from a specific subreddit. + +#### Parameters + +##### options + +[`GetPostsOptions`](../../models/type-aliases/GetPostsOptions.md) + +Options for the request + +#### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +A Listing of Post objects. + +#### Example + +```ts +const posts = await reddit.getRisingPosts({ + subredditName: 'memes', + timeframe: 'day', + limit: 1000, + pageSize: 100 +}).all(); +``` + +*** + + + +### getRules() + +> **getRules**(`subredditName`): `Promise`\<[`Rule`](../../models/classes/Rule.md)[]\> + +Get the rules for a subreddit. + +#### Parameters + +##### subredditName + +`string` + +The name of the subreddit to get the rules for. + +#### Returns + +`Promise`\<[`Rule`](../../models/classes/Rule.md)[]\> + +An array of Rule objects. + +*** + + + +### getSnoovatarUrl() + +> **getSnoovatarUrl**(`username`): `Promise`\<`undefined` \| `string`\> + +Get the snoovatar URL for a given username. + +#### Parameters + +##### username + +`string` + +The username of the snoovatar to retrieve + +#### Returns + +`Promise`\<`undefined` \| `string`\> + +A Promise that resolves to a URL of the snoovatar image if it exists. + +*** + + + +### getSpam() + +#### Call Signature + +> **getSpam**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Comment`](../../models/classes/Comment.md)\> + +Return a listing of things that have been marked as spam or otherwise removed. + +##### Parameters + +###### options + +[`ModLogOptions`](../../models/type-aliases/ModLogOptions.md)\<`"comment"`\> + +##### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Comment`](../../models/classes/Comment.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getSpam(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getSpam({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +#### Call Signature + +> **getSpam**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +Return a listing of things that have been marked as spam or otherwise removed. + +##### Parameters + +###### options + +[`ModLogOptions`](../../models/type-aliases/ModLogOptions.md)\<`"post"`\> + +##### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getSpam(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getSpam({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +#### Call Signature + +> **getSpam**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md) \| [`Comment`](../../models/classes/Comment.md)\> + +Return a listing of things that have been marked as spam or otherwise removed. + +##### Parameters + +###### options + +[`ModLogOptions`](../../models/type-aliases/ModLogOptions.md)\<`"all"`\> + +##### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md) \| [`Comment`](../../models/classes/Comment.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getSpam(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getSpam({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +*** + + + +### ~~getSubredditById()~~ + +> **getSubredditById**(`id`): `Promise`\<`undefined` \| [`Subreddit`](../../models/classes/Subreddit.md)\> + +Gets a [Subreddit](../../models/classes/Subreddit.md) object by ID + +#### Parameters + +##### id + +`string` + +The ID (starting with t5_) of the subreddit to retrieve. e.g. t5_2qjpg + +#### Returns + +`Promise`\<`undefined` \| [`Subreddit`](../../models/classes/Subreddit.md)\> + +A Promise that resolves a Subreddit object. + +#### Deprecated + +Use [getSubredditInfoById](../../models/functions/getSubredditInfoById.md) instead. + +#### Example + +```ts +const memes = await reddit.getSubredditById('t5_2qjpg'); +``` + +*** + + + +### ~~getSubredditByName()~~ + +> **getSubredditByName**(`name`): `Promise`\<[`Subreddit`](../../models/classes/Subreddit.md)\> + +Gets a [Subreddit](../../models/classes/Subreddit.md) object by name + +#### Parameters + +##### name + +`string` + +The name of a subreddit omitting the r/. This is case insensitive. + +#### Returns + +`Promise`\<[`Subreddit`](../../models/classes/Subreddit.md)\> + +A Promise that resolves a Subreddit object. + +#### Deprecated + +Use [getSubredditInfoByName](../../models/functions/getSubredditInfoByName.md) instead. + +#### Example + +```ts +const askReddit = await reddit.getSubredditByName('askReddit'); +``` + +*** + + + +### getSubredditInfoById() + +> **getSubredditInfoById**(`id`): `Promise`\<[`SubredditInfo`](../../models/type-aliases/SubredditInfo.md)\> + +Gets a [SubredditInfo](../../models/type-aliases/SubredditInfo.md) object by ID + +#### Parameters + +##### id + +`string` + +The ID (starting with t5_) of the subreddit to retrieve. e.g. t5_2qjpg + +#### Returns + +`Promise`\<[`SubredditInfo`](../../models/type-aliases/SubredditInfo.md)\> + +A Promise that resolves a SubredditInfo object. + +#### Example + +```ts +const memes = await reddit.getSubredditInfoById('t5_2qjpg'); +``` + +*** + + + +### getSubredditInfoByName() + +> **getSubredditInfoByName**(`name`): `Promise`\<[`SubredditInfo`](../../models/type-aliases/SubredditInfo.md)\> + +Gets a [SubredditInfo](../../models/type-aliases/SubredditInfo.md) object by name + +#### Parameters + +##### name + +`string` + +The name of a subreddit omitting the r/. This is case insensitive. + +#### Returns + +`Promise`\<[`SubredditInfo`](../../models/type-aliases/SubredditInfo.md)\> + +A Promise that resolves a SubredditInfo object. + +#### Example + +```ts +const askReddit = await reddit.getSubredditInfoByName('askReddit'); +``` + +*** + + + +### getSubredditLeaderboard() + +> **getSubredditLeaderboard**(`subredditId`): `Promise`\<[`SubredditLeaderboard`](../../models/type-aliases/SubredditLeaderboard.md)\> + +Returns a leaderboard for a given subreddit ID. + +#### Parameters + +##### subredditId + +`string` + +ID of the subreddit for which the leaderboard is being queried. + +#### Returns + +`Promise`\<[`SubredditLeaderboard`](../../models/type-aliases/SubredditLeaderboard.md)\> + +Leaderboard for the given subreddit. + +*** + + + +### getSubredditRemovalReasons() + +> **getSubredditRemovalReasons**(`subredditName`): `Promise`\<[`RemovalReason`](../../models/type-aliases/RemovalReason.md)[]\> + +Get the list of subreddit's removal reasons (ordered). + +#### Parameters + +##### subredditName + +`string` + +Name of the subreddit (e.g. `askReddit` or `r/askReddit`). + +#### Returns + +`Promise`\<[`RemovalReason`](../../models/type-aliases/RemovalReason.md)[]\> + +Ordered array of plain removal reason objects. + +#### Example + +```ts +const reasons = await reddit.getSubredditRemovalReasons('askReddit'); +const sub = await reddit.getSubredditByName('askReddit'); +for (const reason of reasons) { + console.log(reason.id, reason.message, reason.title); + await sub.updateRemovalReason(reason.id, { title: 'Spam', message: 'Updated.' }); + await sub.deleteRemovalReason(reason.id); +} +``` + +*** + + + +### getSubredditStyles() + +> **getSubredditStyles**(`subredditId`): `Promise`\<[`SubredditStyles`](../../models/type-aliases/SubredditStyles.md)\> + +Returns the styles for a given subreddit ID. + +#### Parameters + +##### subredditId + +`string` + +ID of the subreddit from which to retrieve the styles. + +#### Returns + +`Promise`\<[`SubredditStyles`](../../models/type-aliases/SubredditStyles.md)\> + +Styles for the given subreddit. + +*** + + + +### getTopPosts() + +> **getTopPosts**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +Get a list of controversial posts from a specific subreddit. + +#### Parameters + +##### options + +[`GetPostsOptionsWithTimeframe`](../../models/type-aliases/GetPostsOptionsWithTimeframe.md) + +Options for the request + +#### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +A Listing of Post objects. + +#### Example + +```ts +const posts = await reddit.getControversialPosts({ + subredditName: 'memes', + timeframe: 'day', + limit: 1000, + pageSize: 100 +}).all(); +``` + +*** + + + +### getUnmoderated() + +#### Call Signature + +> **getUnmoderated**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Comment`](../../models/classes/Comment.md)\> + +Return a listing of things that have yet to be approved/removed by a mod. + +##### Parameters + +###### options + +[`ModLogOptions`](../../models/type-aliases/ModLogOptions.md)\<`"comment"`\> + +##### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Comment`](../../models/classes/Comment.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getUnmoderated(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getUnmoderated({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +#### Call Signature + +> **getUnmoderated**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +Return a listing of things that have yet to be approved/removed by a mod. + +##### Parameters + +###### options + +[`ModLogOptions`](../../models/type-aliases/ModLogOptions.md)\<`"post"`\> + +##### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getUnmoderated(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getUnmoderated({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +#### Call Signature + +> **getUnmoderated**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md) \| [`Comment`](../../models/classes/Comment.md)\> + +Return a listing of things that have yet to be approved/removed by a mod. + +##### Parameters + +###### options + +[`ModLogOptions`](../../models/type-aliases/ModLogOptions.md)\<`"all"`\> + +##### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`Post`](../../models/classes/Post.md) \| [`Comment`](../../models/classes/Comment.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getUnmoderated(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getUnmoderated({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +*** + + + +### getUserById() + +> **getUserById**(`id`): `Promise`\<`undefined` \| [`User`](../../models/classes/User.md)\> + +Gets a [User](../../models/classes/User.md) object by ID + +#### Parameters + +##### id + +`string` + +The ID (starting with t2_) of the user to retrieve. e.g. t2_1qjpg + +#### Returns + +`Promise`\<`undefined` \| [`User`](../../models/classes/User.md)\> + +A Promise that resolves to a User object. + +#### Example + +```ts +const user = await reddit.getUserById('t2_1qjpg'); +``` + +*** + + + +### getUserByUsername() + +> **getUserByUsername**(`username`): `Promise`\<`undefined` \| [`User`](../../models/classes/User.md)\> + +Gets a [User](../../models/classes/User.md) object by username + +#### Parameters + +##### username + +`string` + +The username of the user omitting the u/. e.g. 'devvit' + +#### Returns + +`Promise`\<`undefined` \| [`User`](../../models/classes/User.md)\> + +A Promise that resolves to a User object or undefined if user is + not found (user doesn't exist, account suspended, etc). + +#### Example + +```ts +const user = await reddit.getUserByUsername('devvit'); +if (user) { + console.log(user) +} +``` + +*** + + + +### getUserFlairTemplates() + +> **getUserFlairTemplates**(`subredditName`): `Promise`\<[`FlairTemplate`](../../models/classes/FlairTemplate.md)[]\> + +Get the list of user flair templates for a subreddit. + +#### Parameters + +##### subredditName + +`string` + +The name of the subreddit to get the user flair templates for. + +#### Returns + +`Promise`\<[`FlairTemplate`](../../models/classes/FlairTemplate.md)[]\> + +A Promise that resolves with an array of FlairTemplate objects. + +*** + + + +### getUserKarmaFromCurrentSubreddit() + +> **getUserKarmaFromCurrentSubreddit**(`username`): `Promise`\<`GetUserKarmaForSubredditResponse`\> + +Returns the karma for a given user in the current subreddit. +The user making the request must be a moderator of the subreddit to read another user's karma in the subreddit. +An exception is if the specified user is the same as the user making the request. + +#### Parameters + +##### username + +`string` + +The username of the user to get the karma for. e.g. 'spez' + +#### Returns + +`Promise`\<`GetUserKarmaForSubredditResponse`\> + +The GetUserKarmaForSubredditResponse, containing the user's karma for posts and comments in the subreddit. + +*** + + + +### getVaultByAddress() + +> **getVaultByAddress**(`address`): `Promise`\<[`Vault`](../../models/type-aliases/Vault.md)\> + +Gets a [Vault](../../models/type-aliases/Vault.md) for the specified address. + +#### Parameters + +##### address + +`string` + +The address (starting with 0x) of the Vault. + +#### Returns + +`Promise`\<[`Vault`](../../models/type-aliases/Vault.md)\> + +#### Example + +```ts +const vault = await reddit.getVaultByAddress('0x205ee28744456bDBf180A0Fa7De51e0F116d54Ed'); +``` + +*** + + + +### getVaultByUserId() + +> **getVaultByUserId**(`userId`): `Promise`\<[`Vault`](../../models/type-aliases/Vault.md)\> + +Gets a [Vault](../../models/type-aliases/Vault.md) for the specified user. + +#### Parameters + +##### userId + +`string` + +The ID (starting with t2_) of the Vault owner. + +#### Returns + +`Promise`\<[`Vault`](../../models/type-aliases/Vault.md)\> + +#### Example + +```ts +const vault = await reddit.getVaultByUserId('t2_1w72'); +``` + +*** + + + +### getWidgets() + +> **getWidgets**(`subredditName`): `Promise`\<[`Widget`](../../models/classes/Widget.md)[]\> + +Get the widgets for a subreddit. + +#### Parameters + +##### subredditName + +`string` + +The name of the subreddit to get the widgets for. + +#### Returns + +`Promise`\<[`Widget`](../../models/classes/Widget.md)[]\> + +- An array of Widget objects. + +*** + + + +### getWikiContributors() + +> **getWikiContributors**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`User`](../../models/classes/User.md)\> + +Get a list of users who are wiki contributors of a subreddit. + +#### Parameters + +##### options + +`GetSubredditUsersOptions` + +Options for the request + +#### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`User`](../../models/classes/User.md)\> + +A Listing of User objects. + +*** + + + +### getWikiPage() + +> **getWikiPage**(`subredditName`, `page`, `revisionId`?): `Promise`\<[`WikiPage`](../../models/classes/WikiPage.md)\> + +Get a wiki page from a subreddit. + +#### Parameters + +##### subredditName + +`string` + +The name of the subreddit to get the wiki page from. + +##### page + +`string` + +The name of the wiki page to get. + +##### revisionId? + +`` `${string}-${string}-${string}-${string}-${string}` `` + +The revision ID of the wiki page version to get. Setting this value will return the wiki page +version at that revision, and leaving it empty will return the latest version. + +#### Returns + +`Promise`\<[`WikiPage`](../../models/classes/WikiPage.md)\> + +The requested WikiPage object. + +*** + + + +### getWikiPageRevisions() + +> **getWikiPageRevisions**(`options`): [`Listing`](../../models/classes/Listing.md)\<[`WikiPageRevision`](../../models/classes/WikiPageRevision.md)\> + +Get the revisions for a wiki page. + +#### Parameters + +##### options + +[`GetPageRevisionsOptions`](../../models/type-aliases/GetPageRevisionsOptions.md) + +Options for the request + +#### Returns + +[`Listing`](../../models/classes/Listing.md)\<[`WikiPageRevision`](../../models/classes/WikiPageRevision.md)\> + +A Listing of WikiPageRevision objects. + +*** + + + +### getWikiPages() + +> **getWikiPages**(`subredditName`): `Promise`\<`string`[]\> + +Get the wiki pages for a subreddit. + +#### Parameters + +##### subredditName + +`string` + +The name of the subreddit to get the wiki pages from. + +#### Returns + +`Promise`\<`string`[]\> + +A list of the wiki page names for the subreddit. + +*** + + + +### getWikiPageSettings() + +> **getWikiPageSettings**(`subredditName`, `page`): `Promise`\<[`WikiPageSettings`](../../models/classes/WikiPageSettings.md)\> + +Get the settings for a wiki page. + +#### Parameters + +##### subredditName + +`string` + +The name of the subreddit the wiki is in. + +##### page + +`string` + +The name of the wiki page to get the settings for. + +#### Returns + +`Promise`\<[`WikiPageSettings`](../../models/classes/WikiPageSettings.md)\> + +A WikiPageSettings object. + +*** + + + +### inviteModerator() + +> **inviteModerator**(`options`): `Promise`\<`void`\> + +Invite a user to become a moderator of a subreddit. + +#### Parameters + +##### options + +[`InviteModeratorOptions`](../type-aliases/InviteModeratorOptions.md) + +Options for the request + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### markAllMessagesAsRead() + +> **markAllMessagesAsRead**(): `Promise`\<`void`\> + +Mark all private messages as read. + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### muteUser() + +> **muteUser**(`options`): `Promise`\<`void`\> + +Mute a user in a subreddit. Muting a user prevents them from sending modmail. + +#### Parameters + +##### options + +[`MuteUserOptions`](../type-aliases/MuteUserOptions.md) + +Options for the request + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### remove() + +> **remove**(`id`, `isSpam`): `Promise`\<`void`\> + +Remove a post or comment. + +#### Parameters + +##### id + +`string` + +The id of the post (t3_) or comment (t1_) to remove. + +##### isSpam + +`boolean` + +Is the post or comment being removed because it's spam? + +#### Returns + +`Promise`\<`void`\> + +#### Example + +```ts +await reddit.remove('t3_123456', false); +await reddit.remove('t1_123456', true); +``` + +*** + + + +### removeEditorFromWikiPage() + +> **removeEditorFromWikiPage**(`subredditName`, `page`, `username`): `Promise`\<`void`\> + +Remove an editor from a wiki page. + +#### Parameters + +##### subredditName + +`string` + +The name of the subreddit the wiki is in. + +##### page + +`string` + +The name of the wiki page to remove the editor from. + +##### username + +`string` + +The username of the user to remove as an editor. + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### removeModerator() + +> **removeModerator**(`username`, `subredditName`): `Promise`\<`void`\> + +Remove a user as a moderator of a subreddit. + +#### Parameters + +##### username + +`string` + +The username of the user to remove as a moderator. e.g. 'spez' + +##### subredditName + +`string` + +The name of the subreddit to remove the user as a moderator from. e.g. 'memes' + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### removePostFlair() + +> **removePostFlair**(`subredditName`, `postId`): `Promise`\<`void`\> + +Remove the flair for a post in a subreddit. + +#### Parameters + +##### subredditName + +`string` + +The name of the subreddit to remove the flair from. + +##### postId + +`string` + +The ID of the post to remove the flair from. + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### removeUser() + +> **removeUser**(`username`, `subredditName`): `Promise`\<`void`\> + +Remove a user's approval to post in a subreddit. + +#### Parameters + +##### username + +`string` + +The username of the user to remove approval from. e.g. 'spez' + +##### subredditName + +`string` + +The name of the subreddit to remove the user's approval from. e.g. 'memes' + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### removeUserFlair() + +> **removeUserFlair**(`subredditName`, `username`): `Promise`\<`void`\> + +Remove the flair for a user in a subreddit. + +#### Parameters + +##### subredditName + +`string` + +The name of the subreddit to remove the flair from. + +##### username + +`string` + +The username of the user to remove the flair from. + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### removeWikiContributor() + +> **removeWikiContributor**(`username`, `subredditName`): `Promise`\<`void`\> + +Remove a user's wiki contributor status for a subreddit. + +#### Parameters + +##### username + +`string` + +The username of the user to remove wiki contributor status from. e.g. 'spez' + +##### subredditName + +`string` + +The name of the subreddit to remove the user's wiki contributor status from. e.g. 'memes' + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### reorderRules() + +> **reorderRules**(`subredditName`, `rules`): `Promise`\<`void`\> + +Reorder the rules in a subreddit. + +#### Parameters + +##### subredditName + +`string` + +The name of the subreddit to reorder the rules for. + +##### rules + +[`Rule`](../../models/classes/Rule.md)[] + +Array of Rule objects in the desired order (order is determined by array position). + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### reorderWidgets() + +> **reorderWidgets**(`subredditName`, `orderByIds`): `Promise`\<`void`\> + +Reorder the widgets for a subreddit. + +#### Parameters + +##### subredditName + +`string` + +The name of the subreddit to reorder the widgets for. + +##### orderByIds + +`string`[] + +An array of widget IDs in the order that they should be displayed. + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### report() + +> **report**(`thing`, `options`): `Promise`\<`JsonStatus`\> + +Report a Post or Comment + +The report is sent to the moderators of the subreddit for review. + +#### Parameters + +##### thing + +Post or Comment + +[`Post`](../../models/classes/Post.md) | [`Comment`](../../models/classes/Comment.md) + +##### options + +Options + +###### reason + +`string` + +Why the thing is reported + +#### Returns + +`Promise`\<`JsonStatus`\> + +#### Example + +```ts +await reddit.report(post, { + reason: 'This is spam!', +}) +``` + +*** + + + +### revertWikiPage() + +> **revertWikiPage**(`subredditName`, `page`, `revisionId`): `Promise`\<`void`\> + +Revert a wiki page to a previous revision. + +#### Parameters + +##### subredditName + +`string` + +The name of the subreddit the wiki is in. + +##### page + +`string` + +The name of the wiki page to revert. + +##### revisionId + +`string` + +The ID of the revision to revert to. + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### revokeModeratorInvite() + +> **revokeModeratorInvite**(`username`, `subredditName`): `Promise`\<`void`\> + +Revoke a moderator invite for a user to a subreddit. + +#### Parameters + +##### username + +`string` + +The username of the user to revoke the invite for. e.g. 'spez' + +##### subredditName + +`string` + +The name of the subreddit to revoke the invite for. e.g. 'memes' + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### sendPrivateMessage() + +> **sendPrivateMessage**(`options`): `Promise`\<`void`\> + +Sends a private message to a user. + +#### Parameters + +##### options + +[`SendPrivateMessageOptions`](../../models/type-aliases/SendPrivateMessageOptions.md) + +The options for sending the message. + +#### Returns + +`Promise`\<`void`\> + +A Promise that resolves if the private message was successfully sent. + +*** + + + +### ~~sendPrivateMessageAsSubreddit()~~ + +> **sendPrivateMessageAsSubreddit**(`options`): `Promise`\<`void`\> + +Sends a private message to a user on behalf of a subreddit. + +#### Parameters + +##### options + +[`SendPrivateMessageAsSubredditOptions`](../../models/type-aliases/SendPrivateMessageAsSubredditOptions.md) + +The options for sending the message as a subreddit. + +#### Returns + +`Promise`\<`void`\> + +A Promise that resolves if the private message was successfully sent. + +#### Deprecated + +No longer working as expected. Use modMail.createConversation with `isAuthorHidden: true` instead + +*** + + + +### setModeratorPermissions() + +> **setModeratorPermissions**(`username`, `subredditName`, `permissions`): `Promise`\<`void`\> + +Update the permissions of a moderator of a subreddit. + +#### Parameters + +##### username + +`string` + +The username of the user to update the permissions for. e.g. 'spez' + +##### subredditName + +`string` + +The name of the subreddit. e.g. 'memes' + +##### permissions + +[`ModeratorPermission`](../../models/type-aliases/ModeratorPermission.md)[] + +The permissions to give the user. e.g ['posts', 'wiki'] + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### setPostFlair() + +> **setPostFlair**(`options`): `Promise`\<`void`\> + +Set the flair for a post in a subreddit. + +#### Parameters + +##### options + +[`SetPostFlairOptions`](../../models/type-aliases/SetPostFlairOptions.md) + +Options for the request + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### setUserFlair() + +> **setUserFlair**(`options`): `Promise`\<`void`\> + +Set the flair for a user in a subreddit. + +#### Parameters + +##### options + +[`SetUserFlairOptions`](../../models/type-aliases/SetUserFlairOptions.md) + +Options for the request + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### setUserFlairBatch() + +> **setUserFlairBatch**(`subredditName`, `flairs`): `Promise`\<`FlairCsvResult`[]\> + +Set the flair of multiple users in the same subreddit with a single API call. +Can process up to 100 entries at once. + +#### Parameters + +##### subredditName + +`string` + +The name of the subreddit to edit flairs in. + +##### flairs + +[`SetUserFlairBatchConfig`](../../models/type-aliases/SetUserFlairBatchConfig.md)[] + +Array of user flair configuration objects. If both text and cssClass are empty for a given user the flair will be cleared. + +#### Returns + +`Promise`\<`FlairCsvResult`[]\> + +- Array of statuses for each entry provided. + +*** + + + +### submitComment() + +> **submitComment**(`options`): `Promise`\<[`Comment`](../../models/classes/Comment.md)\> + +Submit a new comment to a post or comment. + +#### Parameters + +##### options + +[`CommentSubmissionOptions`](../../models/type-aliases/CommentSubmissionOptions.md) & `object` + +You must provide either `options.text` or `options.richtext` but not both. + +#### Returns + +`Promise`\<[`Comment`](../../models/classes/Comment.md)\> + +A Promise that resolves to a Comment object. + +#### Example + +```ts +import { RunAs } from '@devvit/public-api'; + +const comment = await reddit.submitComment({ + id: 't1_1qgif', + text: 'Hello world!', + runAs: RunAs.APP, +}) +``` + +*** + + + +### submitPost() + +> **submitPost**(`options`): `Promise`\<[`Post`](../../models/classes/Post.md)\> + +Submits a new post to a subreddit. + +#### Parameters + +##### options + +[`SubmitPostOptions`](../../models/type-aliases/SubmitPostOptions.md) + +Either a self post or a link post. + +#### Returns + +`Promise`\<[`Post`](../../models/classes/Post.md)\> + +A Promise that resolves to a Post object. + +#### Examples + +```ts +const post = await reddit.submitPost({ + subredditName: 'devvit', + title: 'Hello World', + richtext: new RichTextBuilder() + .heading({ level: 1 }, (h) => { + h.rawText('Hello world'); + }) + .codeBlock({}, (cb) => cb.rawText('This post was created via the Devvit API')) + .build() +}); +``` + +By default, `submitPost()` creates a Post on behalf of the App account, but it may be called on behalf of the User making the request by setting the option `runAs: RunAs.USER`. +When using `runAs: RunAs.USER` to create an experience Post, you must specify the `userGeneratedContent` option. For example: + +```ts +import { RunAs } from '@devvit/public-api'; + +const post = await reddit.submitPost({ + title: 'My Devvit Post', + runAs: RunAs.USER, + userGeneratedContent: { + text: "hello there", + imageUrls: ["https://styles.redditmedia.com/t5_5wa5ww/styles/communityIcon_wyopomb2xb0a1.png", "https://styles.redditmedia.com/t5_49fkib/styles/bannerBackgroundImage_5a4axis7cku61.png"] + }, + subredditName: await reddit.getCurrentSubredditName(), + textFallback: { + text: 'This is a Devvit post!', + }, + preview: ( + + Loading... + + ), +}); +``` + +*** + + + +### subscribeToCurrentSubreddit() + +> **subscribeToCurrentSubreddit**(): `Promise`\<`void`\> + +Subscribes to the subreddit in which the app is installed. No-op if the user is already subscribed. +This method will execute as the app account by default. +To subscribe on behalf of a user, please contact Reddit. + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### unbanUser() + +> **unbanUser**(`username`, `subredditName`): `Promise`\<`void`\> + +Unban a user from a subreddit. + +#### Parameters + +##### username + +`string` + +The username of the user to unban. e.g. 'spez' + +##### subredditName + +`string` + +The name of the subreddit to unban the user from. e.g. 'memes' + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### unbanWikiContributor() + +> **unbanWikiContributor**(`username`, `subredditName`): `Promise`\<`void`\> + +#### Parameters + +##### username + +`string` + +The username of the user to unban. e.g. 'spez' + +##### subredditName + +`string` + +The name of the subreddit to unban the user from contributing to the wiki on. e.g. 'memes' + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### unmuteUser() + +> **unmuteUser**(`username`, `subredditName`): `Promise`\<`void`\> + +Unmute a user in a subreddit. Unmuting a user allows them to send modmail. + +#### Parameters + +##### username + +`string` + +The username of the user to unmute. e.g. 'spez' + +##### subredditName + +`string` + +The name of the subreddit to unmute the user in. e.g. 'memes' + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### unsubscribeFromCurrentSubreddit() + +> **unsubscribeFromCurrentSubreddit**(): `Promise`\<`void`\> + +Unsubscribes from the subreddit in which the app is installed. No-op if the user isn't subscribed. +This method will execute as the app account by default. +To unsubscribe on behalf of a user, please contact Reddit. + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### updateSubredditRemovalReason() + +> **updateSubredditRemovalReason**(`subredditName`, `reasonId`, `options`): `Promise`\<`void`\> + +Update an existing removal reason in a subreddit. + +#### Parameters + +##### subredditName + +`string` + +Name of the subreddit (e.g. `askReddit` or `r/askReddit`). + +##### reasonId + +`string` + +ID of the removal reason (from get or add). + +##### options + +###### message + +`string` + +The message associated with the removal reason. + +###### title + +`string` + +The title of the removal reason. + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### updateWidget() + +> **updateWidget**(`widgetData`): `Promise`\<[`Widget`](../../models/classes/Widget.md)\> + +Update a widget for a subreddit. + +#### Parameters + +##### widgetData + +[`UpdateWidgetData`](../../models/type-aliases/UpdateWidgetData.md) + +The data for the widget to update. + +#### Returns + +`Promise`\<[`Widget`](../../models/classes/Widget.md)\> + +- The updated Widget object. + +*** + + + +### updateWikiPage() + +> **updateWikiPage**(`options`): `Promise`\<[`WikiPage`](../../models/classes/WikiPage.md)\> + +Update a wiki page. + +#### Parameters + +##### options + +[`UpdateWikiPageOptions`](../../models/type-aliases/UpdateWikiPageOptions.md) + +Options for the request + +#### Returns + +`Promise`\<[`WikiPage`](../../models/classes/WikiPage.md)\> + +The updated WikiPage object. + +*** + + + +### updateWikiPageSettings() + +> **updateWikiPageSettings**(`options`): `Promise`\<[`WikiPageSettings`](../../models/classes/WikiPageSettings.md)\> + +Update the settings for a wiki page. + +#### Parameters + +##### options + +[`UpdatePageSettingsOptions`](../../models/type-aliases/UpdatePageSettingsOptions.md) + +Options for the request + +#### Returns + +`Promise`\<[`WikiPageSettings`](../../models/classes/WikiPageSettings.md)\> + +A WikiPageSettings object. diff --git a/versioned_docs/version-0.13/api/redditapi/RedditAPIClient/type-aliases/InviteModeratorOptions.md b/versioned_docs/version-0.13/api/redditapi/RedditAPIClient/type-aliases/InviteModeratorOptions.md new file mode 100644 index 00000000..27d387aa --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/RedditAPIClient/type-aliases/InviteModeratorOptions.md @@ -0,0 +1,37 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: InviteModeratorOptions + +> **InviteModeratorOptions** = `object` + +## Properties + + + +### permissions? + +> `optional` **permissions**: [`ModeratorPermission`](../../models/type-aliases/ModeratorPermission.md)[] + +The permissions to grant the user + +*** + + + +### subredditName + +> **subredditName**: `string` + +The name of the subreddit to invite the user to moderate + +*** + + + +### username + +> **username**: `string` + +The name of the user to invite as a moderator diff --git a/versioned_docs/version-0.13/api/redditapi/RedditAPIClient/type-aliases/MuteUserOptions.md b/versioned_docs/version-0.13/api/redditapi/RedditAPIClient/type-aliases/MuteUserOptions.md new file mode 100644 index 00000000..4a00457f --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/RedditAPIClient/type-aliases/MuteUserOptions.md @@ -0,0 +1,37 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: MuteUserOptions + +> **MuteUserOptions** = `object` + +## Properties + + + +### note? + +> `optional` **note**: `string` + +A mod note on why the user was muted. (optional) + +*** + + + +### subredditName + +> **subredditName**: `string` + +The name of the subreddit to mute the user in + +*** + + + +### username + +> **username**: `string` + +The name of the user to mute diff --git a/versioned_docs/version-0.13/api/redditapi/models/README.md b/versioned_docs/version-0.13/api/redditapi/models/README.md new file mode 100644 index 00000000..8eca2230 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/README.md @@ -0,0 +1,189 @@ +[**@devvit/public-api v0.13.0-dev**](../README.md) + +*** + +# models + +## Enumerations + +- [AboutLocations](enumerations/AboutLocations.md) +- [FlairType](enumerations/FlairType.md) +- [ModMailActionType](enumerations/ModMailActionType.md) +- [ModMailConversationState](enumerations/ModMailConversationState.md) +- [SocialLinkType](enumerations/SocialLinkType.md) +- [WikiPagePermissionLevel](enumerations/WikiPagePermissionLevel.md) + +## Classes + +- [AuthorFlairSettings](classes/AuthorFlairSettings.md) +- [ButtonWidget](classes/ButtonWidget.md) +- [CalendarWidget](classes/CalendarWidget.md) +- [Comment](classes/Comment.md) +- [CommunityListWidget](classes/CommunityListWidget.md) +- [CustomWidget](classes/CustomWidget.md) +- [Flair](classes/Flair.md) +- [FlairTemplate](classes/FlairTemplate.md) +- [ImageWidget](classes/ImageWidget.md) +- [Listing](classes/Listing.md) +- [ModMailService](classes/ModMailService.md) +- [ModNote](classes/ModNote.md) +- [Post](classes/Post.md) +- [PostFlairSettings](classes/PostFlairSettings.md) +- [PostFlairWidget](classes/PostFlairWidget.md) +- [PrivateMessage](classes/PrivateMessage.md) +- [Rule](classes/Rule.md) +- [Subreddit](classes/Subreddit.md) +- [SubredditDescription](classes/SubredditDescription.md) +- [SubredditRulesWidget](classes/SubredditRulesWidget.md) +- [SubredditWikiSettings](classes/SubredditWikiSettings.md) +- [TextAreaWidget](classes/TextAreaWidget.md) +- [User](classes/User.md) +- [Widget](classes/Widget.md) +- [WikiPage](classes/WikiPage.md) +- [WikiPageRevision](classes/WikiPageRevision.md) +- [WikiPageSettings](classes/WikiPageSettings.md) + +## Interfaces + +- [ModAction](interfaces/ModAction.md) + +## Type Aliases + +- [AboutSubredditTypes](type-aliases/AboutSubredditTypes.md) +- [AddRemovalNoteOptions](type-aliases/AddRemovalNoteOptions.md) +- [AddWidgetData](type-aliases/AddWidgetData.md) +- [AllowableFlairContent](type-aliases/AllowableFlairContent.md) +- [BackgroundImagePosition](type-aliases/BackgroundImagePosition.md) +- [BannerHeight](type-aliases/BannerHeight.md) +- [BanUserOptions](type-aliases/BanUserOptions.md) +- [BanWikiContributorOptions](type-aliases/BanWikiContributorOptions.md) +- [CommentMediaTypes](type-aliases/CommentMediaTypes.md) +- [CommentSort](type-aliases/CommentSort.md) +- [CommentSubmissionOptions](type-aliases/CommentSubmissionOptions.md) +- [CommonFlair](type-aliases/CommonFlair.md) +- [CommonSubmitPostOptions](type-aliases/CommonSubmitPostOptions.md) +- [CommunityNameFormat](type-aliases/CommunityNameFormat.md) +- [ConversationData](type-aliases/ConversationData.md) +- [ConversationResponse](type-aliases/ConversationResponse.md) +- [ConversationStateFilter](type-aliases/ConversationStateFilter.md) +- [ConversationUserData](type-aliases/ConversationUserData.md) +- [CreateFlairTemplateOptions](type-aliases/CreateFlairTemplateOptions.md) +- [CreateModNoteOptions](type-aliases/CreateModNoteOptions.md) +- [CreateRelationshipOptions](type-aliases/CreateRelationshipOptions.md) +- [CreateRuleOptions](type-aliases/CreateRuleOptions.md) +- [CreateWikiPageOptions](type-aliases/CreateWikiPageOptions.md) +- [CrosspostOptions](type-aliases/CrosspostOptions.md) +- [CrowdControlLevel](type-aliases/CrowdControlLevel.md) +- [CustomizationFlag](type-aliases/CustomizationFlag.md) +- [CustomPostRichTextFallback](type-aliases/CustomPostRichTextFallback.md) +- [CustomPostTextFallbackOptions](type-aliases/CustomPostTextFallbackOptions.md) +- [DeleteNotesOptions](type-aliases/DeleteNotesOptions.md) +- [EditCommentOptions](type-aliases/EditCommentOptions.md) +- [EditFlairTemplateOptions](type-aliases/EditFlairTemplateOptions.md) +- [EnrichedThumbnail](type-aliases/EnrichedThumbnail.md) +- [FlairBackgroundColor](type-aliases/FlairBackgroundColor.md) +- [FlairSettings](type-aliases/FlairSettings.md) +- [FlairTextColor](type-aliases/FlairTextColor.md) +- [GalleryMedia](type-aliases/GalleryMedia.md) +- [GalleryMediaStatus](type-aliases/GalleryMediaStatus.md) +- [GetBestPostsOptions](type-aliases/GetBestPostsOptions.md) +- [GetCommentsByUserOptions](type-aliases/GetCommentsByUserOptions.md) +- [GetCommentsOptions](type-aliases/GetCommentsOptions.md) +- [GetConversationResponse](type-aliases/GetConversationResponse.md) +- [GetConversationsRequest](type-aliases/GetConversationsRequest.md) +- [GetConversationsResponse](type-aliases/GetConversationsResponse.md) +- [GetDuplicatesOptions](type-aliases/GetDuplicatesOptions.md) +- [GetHotPostsOptions](type-aliases/GetHotPostsOptions.md) +- [GetModerationLogOptions](type-aliases/GetModerationLogOptions.md) +- [GetModNotesOptions](type-aliases/GetModNotesOptions.md) +- [GetPageRevisionsOptions](type-aliases/GetPageRevisionsOptions.md) +- [GetPostsByUserOptions](type-aliases/GetPostsByUserOptions.md) +- [GetPostsOptions](type-aliases/GetPostsOptions.md) +- [GetPostsOptionsWithTimeframe](type-aliases/GetPostsOptionsWithTimeframe.md) +- [GetPrivateMessagesOptions](type-aliases/GetPrivateMessagesOptions.md) +- [GetSortedPostsOptions](type-aliases/GetSortedPostsOptions.md) +- [GetSubredditUsersByTypeOptions](type-aliases/GetSubredditUsersByTypeOptions.md) +- [GetUserFlairBySubredditOptions](type-aliases/GetUserFlairBySubredditOptions.md) +- [GetUserFlairBySubredditResponse](type-aliases/GetUserFlairBySubredditResponse.md) +- [GetUserFlairOptions](type-aliases/GetUserFlairOptions.md) +- [GetUserOverviewOptions](type-aliases/GetUserOverviewOptions.md) +- [ImagePosition](type-aliases/ImagePosition.md) +- [InternalSetPostFlairOptions](type-aliases/InternalSetPostFlairOptions.md) +- [~~LinkFlair~~](type-aliases/LinkFlair.md) +- [ListingFetchOptions](type-aliases/ListingFetchOptions.md) +- [ListingFetchResponse](type-aliases/ListingFetchResponse.md) +- [MenuPosition](type-aliases/MenuPosition.md) +- [MessageData](type-aliases/MessageData.md) +- [ModActionData](type-aliases/ModActionData.md) +- [ModActionTarget](type-aliases/ModActionTarget.md) +- [ModActionType](type-aliases/ModActionType.md) +- [ModeratorPermission](type-aliases/ModeratorPermission.md) +- [ModLogOptions](type-aliases/ModLogOptions.md) +- [ModNoteType](type-aliases/ModNoteType.md) +- [MoreObject](type-aliases/MoreObject.md) +- [OEmbed](type-aliases/OEmbed.md) +- [Participant](type-aliases/Participant.md) +- [PollData](type-aliases/PollData.md) +- [PollOption](type-aliases/PollOption.md) +- [PositionedImagePosition](type-aliases/PositionedImagePosition.md) +- [PostCapabilities](type-aliases/PostCapabilities.md) +- [PostSuggestedCommentSort](type-aliases/PostSuggestedCommentSort.md) +- [PostTextOptions](type-aliases/PostTextOptions.md) +- [PostType](type-aliases/PostType.md) +- [RedditVideo](type-aliases/RedditVideo.md) +- [RelationshipType](type-aliases/RelationshipType.md) +- [RemovalReason](type-aliases/RemovalReason.md) +- [RemoveRelationshipOptions](type-aliases/RemoveRelationshipOptions.md) +- [ReplyToCommentOptions](type-aliases/ReplyToCommentOptions.md) +- [SecureMedia](type-aliases/SecureMedia.md) +- [SendPrivateMessageAsSubredditOptions](type-aliases/SendPrivateMessageAsSubredditOptions.md) +- [SendPrivateMessageOptions](type-aliases/SendPrivateMessageOptions.md) +- [SetFlairOptions](type-aliases/SetFlairOptions.md) +- [SetPostFlairOptions](type-aliases/SetPostFlairOptions.md) +- [SetUserFlairBatchConfig](type-aliases/SetUserFlairBatchConfig.md) +- [SetUserFlairOptions](type-aliases/SetUserFlairOptions.md) +- [SubmitCustomPostOptions](type-aliases/SubmitCustomPostOptions.md) +- [SubmitCustomPostTextFallbackOptions](type-aliases/SubmitCustomPostTextFallbackOptions.md) +- [SubmitLinkOptions](type-aliases/SubmitLinkOptions.md) +- [SubmitMediaOptions](type-aliases/SubmitMediaOptions.md) +- [SubmitPostOptions](type-aliases/SubmitPostOptions.md) +- [SubmitSelfPostOptions](type-aliases/SubmitSelfPostOptions.md) +- [SubredditData](type-aliases/SubredditData.md) +- [SubredditInfo](type-aliases/SubredditInfo.md) +- [SubredditLeaderboard](type-aliases/SubredditLeaderboard.md) +- [SubredditLeaderboardSummary](type-aliases/SubredditLeaderboardSummary.md) +- [SubredditLeaderboardSummaryRow](type-aliases/SubredditLeaderboardSummaryRow.md) +- [SubredditSettings](type-aliases/SubredditSettings.md) +- [SubredditSettingsOptions](type-aliases/SubredditSettingsOptions.md) +- [SubredditStyles](type-aliases/SubredditStyles.md) +- [SubredditType](type-aliases/SubredditType.md) +- [Trophy](type-aliases/Trophy.md) +- [UnreadCountResponse](type-aliases/UnreadCountResponse.md) +- [UpdatePageSettingsOptions](type-aliases/UpdatePageSettingsOptions.md) +- [UpdateRuleOptions](type-aliases/UpdateRuleOptions.md) +- [UpdateWidgetData](type-aliases/UpdateWidgetData.md) +- [UpdateWikiPageOptions](type-aliases/UpdateWikiPageOptions.md) +- [UserFlair](type-aliases/UserFlair.md) +- [UserFlairPageOptions](type-aliases/UserFlairPageOptions.md) +- [UserNote](type-aliases/UserNote.md) +- [UserNoteLabel](type-aliases/UserNoteLabel.md) +- [UserSocialLink](type-aliases/UserSocialLink.md) +- [Vault](type-aliases/Vault.md) +- [Visibility](type-aliases/Visibility.md) +- [WikiEditMode](type-aliases/WikiEditMode.md) +- [WikiPageRevisionId](type-aliases/WikiPageRevisionId.md) +- [WithUserData](type-aliases/WithUserData.md) + +## Variables + +- [GalleryMediaStatus](variables/GalleryMediaStatus.md) + +## Functions + +- [getModerationLog](functions/getModerationLog.md) +- [getSubredditInfoById](functions/getSubredditInfoById.md) +- [getSubredditInfoByName](functions/getSubredditInfoByName.md) +- [getSubredditLeaderboard](functions/getSubredditLeaderboard.md) +- [getSubredditStyles](functions/getSubredditStyles.md) +- [getVaultByAddress](functions/getVaultByAddress.md) +- [getVaultByUserId](functions/getVaultByUserId.md) diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/AuthorFlairSettings.md b/versioned_docs/version-0.13/api/redditapi/models/classes/AuthorFlairSettings.md new file mode 100644 index 00000000..0735bcb5 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/AuthorFlairSettings.md @@ -0,0 +1,33 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: AuthorFlairSettings + +## Constructors + + + +### new AuthorFlairSettings() + +> **new AuthorFlairSettings**(): `AuthorFlairSettings` + +#### Returns + +`AuthorFlairSettings` + +## Properties + + + +### isEnabled? + +> `optional` **isEnabled**: `boolean` + +*** + + + +### isSelfAssignabled? + +> `optional` **isSelfAssignabled**: `boolean` diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/ButtonWidget.md b/versioned_docs/version-0.13/api/redditapi/models/classes/ButtonWidget.md new file mode 100644 index 00000000..15e17d7b --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/ButtonWidget.md @@ -0,0 +1,167 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: ButtonWidget + +## Extends + +- [`Widget`](Widget.md) + +## Constructors + + + +### new ButtonWidget() + +> **new ButtonWidget**(`widgetData`, `subredditName`, `metadata`): `ButtonWidget` + +#### Parameters + +##### widgetData + +`GetWidgetsResponse_WidgetItem` + +##### subredditName + +`string` + +##### metadata + +`undefined` | `Metadata` + +#### Returns + +`ButtonWidget` + +#### Overrides + +[`Widget`](Widget.md).[`constructor`](Widget.md#constructor) + +## Accessors + + + +### buttons + +#### Get Signature + +> **get** **buttons**(): `WidgetButton`[] + +##### Returns + +`WidgetButton`[] + +*** + + + +### description + +#### Get Signature + +> **get** **description**(): `string` + +##### Returns + +`string` + +*** + + + +### id + +#### Get Signature + +> **get** **id**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`id`](Widget.md#id) + +*** + + + +### name + +#### Get Signature + +> **get** **name**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`name`](Widget.md#name) + +*** + + + +### styles + +#### Get Signature + +> **get** **styles**(): `WidgetStyles` + +##### Returns + +`WidgetStyles` + +*** + + + +### subredditName + +#### Get Signature + +> **get** **subredditName**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`subredditName`](Widget.md#subredditname) + +## Methods + + + +### delete() + +> **delete**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +#### Inherited from + +[`Widget`](Widget.md).[`delete`](Widget.md#delete) + +*** + + + +### toJSON() + +> **toJSON**(): `Pick`\<[`Widget`](Widget.md), `"subredditName"` \| `"id"` \| `"name"`\> & `Pick`\<`ButtonWidget`, `"description"` \| `"styles"` \| `"buttons"`\> + +#### Returns + +`Pick`\<[`Widget`](Widget.md), `"subredditName"` \| `"id"` \| `"name"`\> & `Pick`\<`ButtonWidget`, `"description"` \| `"styles"` \| `"buttons"`\> + +#### Overrides + +[`Widget`](Widget.md).[`toJSON`](Widget.md#tojson) diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/CalendarWidget.md b/versioned_docs/version-0.13/api/redditapi/models/classes/CalendarWidget.md new file mode 100644 index 00000000..fa085814 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/CalendarWidget.md @@ -0,0 +1,167 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: CalendarWidget + +## Extends + +- [`Widget`](Widget.md) + +## Constructors + + + +### new CalendarWidget() + +> **new CalendarWidget**(`widgetData`, `subredditName`, `metadata`): `CalendarWidget` + +#### Parameters + +##### widgetData + +`GetWidgetsResponse_WidgetItem` + +##### subredditName + +`string` + +##### metadata + +`undefined` | `Metadata` + +#### Returns + +`CalendarWidget` + +#### Overrides + +[`Widget`](Widget.md).[`constructor`](Widget.md#constructor) + +## Accessors + + + +### configuration + +#### Get Signature + +> **get** **configuration**(): `CalendarWidgetConfiguration` + +##### Returns + +`CalendarWidgetConfiguration` + +*** + + + +### googleCalendarId + +#### Get Signature + +> **get** **googleCalendarId**(): `string` + +##### Returns + +`string` + +*** + + + +### id + +#### Get Signature + +> **get** **id**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`id`](Widget.md#id) + +*** + + + +### name + +#### Get Signature + +> **get** **name**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`name`](Widget.md#name) + +*** + + + +### styles + +#### Get Signature + +> **get** **styles**(): `WidgetStyles` + +##### Returns + +`WidgetStyles` + +*** + + + +### subredditName + +#### Get Signature + +> **get** **subredditName**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`subredditName`](Widget.md#subredditname) + +## Methods + + + +### delete() + +> **delete**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +#### Inherited from + +[`Widget`](Widget.md).[`delete`](Widget.md#delete) + +*** + + + +### toJSON() + +> **toJSON**(): `Pick`\<[`Widget`](Widget.md), `"subredditName"` \| `"id"` \| `"name"`\> & `Pick`\<`CalendarWidget`, `"googleCalendarId"` \| `"configuration"` \| `"styles"`\> + +#### Returns + +`Pick`\<[`Widget`](Widget.md), `"subredditName"` \| `"id"` \| `"name"`\> & `Pick`\<`CalendarWidget`, `"googleCalendarId"` \| `"configuration"` \| `"styles"`\> + +#### Overrides + +[`Widget`](Widget.md).[`toJSON`](Widget.md#tojson) diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/Comment.md b/versioned_docs/version-0.13/api/redditapi/models/classes/Comment.md new file mode 100644 index 00000000..b51952fa --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/Comment.md @@ -0,0 +1,784 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: Comment + +## Accessors + + + +### approved + +#### Get Signature + +> **get** **approved**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### approvedAtUtc + +#### Get Signature + +> **get** **approvedAtUtc**(): `number` + +A number representing the UTC timestamp in seconds, or 0 if its not approved. + +##### Returns + +`number` + +*** + + + +### authorFlair + +#### Get Signature + +> **get** **authorFlair**(): `undefined` \| [`CommonFlair`](../type-aliases/CommonFlair.md) + +##### Returns + +`undefined` \| [`CommonFlair`](../type-aliases/CommonFlair.md) + +*** + + + +### authorId + +#### Get Signature + +> **get** **authorId**(): `undefined` \| `` `t2_${string}` `` + +##### Returns + +`undefined` \| `` `t2_${string}` `` + +*** + + + +### authorName + +#### Get Signature + +> **get** **authorName**(): `string` + +##### Returns + +`string` + +*** + + + +### bannedAtUtc + +#### Get Signature + +> **get** **bannedAtUtc**(): `number` + +##### Returns + +`number` + +*** + + + +### body + +#### Get Signature + +> **get** **body**(): `string` + +##### Returns + +`string` + +*** + + + +### collapsedBecauseCrowdControl + +#### Get Signature + +> **get** **collapsedBecauseCrowdControl**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### createdAt + +#### Get Signature + +> **get** **createdAt**(): `Date` + +##### Returns + +`Date` + +*** + + + +### distinguishedBy + +#### Get Signature + +> **get** **distinguishedBy**(): `undefined` \| `string` + +##### Returns + +`undefined` \| `string` + +*** + + + +### edited + +#### Get Signature + +> **get** **edited**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### id + +#### Get Signature + +> **get** **id**(): `` `t1_${string}` `` + +##### Returns + +`` `t1_${string}` `` + +*** + + + +### ignoringReports + +#### Get Signature + +> **get** **ignoringReports**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### locked + +#### Get Signature + +> **get** **locked**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### modReportReasons + +#### Get Signature + +> **get** **modReportReasons**(): `string`[] + +##### Returns + +`string`[] + +*** + + + +### numReports + +#### Get Signature + +> **get** **numReports**(): `number` + +##### Returns + +`number` + +*** + + + +### parentId + +#### Get Signature + +> **get** **parentId**(): `` `t1_${string}` `` \| `` `t3_${string}` `` + +##### Returns + +`` `t1_${string}` `` \| `` `t3_${string}` `` + +*** + + + +### permalink + +#### Get Signature + +> **get** **permalink**(): `string` + +##### Returns + +`string` + +*** + + + +### postId + +#### Get Signature + +> **get** **postId**(): `` `t3_${string}` `` + +##### Returns + +`` `t3_${string}` `` + +*** + + + +### removed + +#### Get Signature + +> **get** **removed**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### replies + +#### Get Signature + +> **get** **replies**(): [`Listing`](Listing.md)\<`Comment`\> + +##### Returns + +[`Listing`](Listing.md)\<`Comment`\> + +*** + + + +### score + +#### Get Signature + +> **get** **score**(): `number` + +##### Returns + +`number` + +*** + + + +### spam + +#### Get Signature + +> **get** **spam**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### stickied + +#### Get Signature + +> **get** **stickied**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### subredditId + +#### Get Signature + +> **get** **subredditId**(): `` `t5_${string}` `` + +##### Returns + +`` `t5_${string}` `` + +*** + + + +### subredditName + +#### Get Signature + +> **get** **subredditName**(): `string` + +##### Returns + +`string` + +*** + + + +### url + +#### Get Signature + +> **get** **url**(): `string` + +##### Returns + +`string` + +*** + + + +### userReportReasons + +#### Get Signature + +> **get** **userReportReasons**(): `string`[] + +##### Returns + +`string`[] + +## Methods + + + +### addRemovalNote() + +> **addRemovalNote**(`options`): `Promise`\<`void`\> + +Add a mod note for why the comment was removed + +#### Parameters + +##### options + +###### modNote? + +`string` + +the reason for removal (maximum 100 characters) (optional) + +###### reasonId + +`string` + +id of a Removal Reason - you can leave this as an empty string if you don't have one + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### approve() + +> **approve**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### delete() + +> **delete**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### distinguish() + +> **distinguish**(`makeSticky`): `Promise`\<`void`\> + +#### Parameters + +##### makeSticky + +`boolean` = `false` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### distinguishAsAdmin() + +> **distinguishAsAdmin**(`makeSticky`): `Promise`\<`void`\> + +#### Parameters + +##### makeSticky + +`boolean` = `false` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### edit() + +> **edit**(`options`): `Promise`\<`Comment`\> + +#### Parameters + +##### options + +[`CommentSubmissionOptions`](../type-aliases/CommentSubmissionOptions.md) + +#### Returns + +`Promise`\<`Comment`\> + +*** + + + +### getAuthor() + +> **getAuthor**(): `Promise`\<`undefined` \| [`User`](User.md)\> + +#### Returns + +`Promise`\<`undefined` \| [`User`](User.md)\> + +*** + + + +### ignoreReports() + +> **ignoreReports**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### isApproved() + +> **isApproved**(): `boolean` + +#### Returns + +`boolean` + +*** + + + +### isDistinguished() + +> **isDistinguished**(): `boolean` + +#### Returns + +`boolean` + +*** + + + +### isEdited() + +> **isEdited**(): `boolean` + +#### Returns + +`boolean` + +*** + + + +### isIgnoringReports() + +> **isIgnoringReports**(): `boolean` + +#### Returns + +`boolean` + +*** + + + +### isLocked() + +> **isLocked**(): `boolean` + +#### Returns + +`boolean` + +*** + + + +### isRemoved() + +> **isRemoved**(): `boolean` + +#### Returns + +`boolean` + +*** + + + +### isSpam() + +> **isSpam**(): `boolean` + +#### Returns + +`boolean` + +*** + + + +### isStickied() + +> **isStickied**(): `boolean` + +#### Returns + +`boolean` + +*** + + + +### lock() + +> **lock**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### remove() + +> **remove**(`isSpam`): `Promise`\<`void`\> + +#### Parameters + +##### isSpam + +`boolean` = `false` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### reply() + +> **reply**(`options`): `Promise`\<`Comment`\> + +#### Parameters + +##### options + +[`CommentSubmissionOptions`](../type-aliases/CommentSubmissionOptions.md) + +#### Returns + +`Promise`\<`Comment`\> + +*** + + + +### showComment() + +> **showComment**(): `Promise`\<`void`\> + +Marks that this comment should not be collapsed by the crowd control system. +It can still be collapsed for other reasons. + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### snoozeReports() + +> **snoozeReports**(`reason`): `Promise`\<`void`\> + +Snooze subsequent reports with the given reason from the same users for the next 7 days. +Only works for free-form reports. + +#### Parameters + +##### reason + +`string` + +The report reason to snooze. + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### toJSON() + +> **toJSON**(): `Pick`\<`Comment`, `"subredditName"` \| `"id"` \| `"score"` \| `"subredditId"` \| `"postId"` \| `"permalink"` \| `"url"` \| `"createdAt"` \| `"authorName"` \| `"body"` \| `"approved"` \| `"spam"` \| `"stickied"` \| `"removed"` \| `"edited"` \| `"locked"` \| `"ignoringReports"` \| `"distinguishedBy"` \| `"authorFlair"` \| `"userReportReasons"` \| `"modReportReasons"` \| `"parentId"` \| `"replies"` \| `"numReports"` \| `"collapsedBecauseCrowdControl"`\> + +#### Returns + +`Pick`\<`Comment`, `"subredditName"` \| `"id"` \| `"score"` \| `"subredditId"` \| `"postId"` \| `"permalink"` \| `"url"` \| `"createdAt"` \| `"authorName"` \| `"body"` \| `"approved"` \| `"spam"` \| `"stickied"` \| `"removed"` \| `"edited"` \| `"locked"` \| `"ignoringReports"` \| `"distinguishedBy"` \| `"authorFlair"` \| `"userReportReasons"` \| `"modReportReasons"` \| `"parentId"` \| `"replies"` \| `"numReports"` \| `"collapsedBecauseCrowdControl"`\> + +*** + + + +### undistinguish() + +> **undistinguish**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### unignoreReports() + +> **unignoreReports**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### unlock() + +> **unlock**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### unsnoozeReports() + +> **unsnoozeReports**(`reason`): `Promise`\<`void`\> + +Unsnooze reports with the given reason. +Only works for free-form reports. + +#### Parameters + +##### reason + +`string` + +The report reason to unsnooze. + +#### Returns + +`Promise`\<`void`\> diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/CommunityListWidget.md b/versioned_docs/version-0.13/api/redditapi/models/classes/CommunityListWidget.md new file mode 100644 index 00000000..0c4410a8 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/CommunityListWidget.md @@ -0,0 +1,153 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: CommunityListWidget + +## Extends + +- [`Widget`](Widget.md) + +## Constructors + + + +### new CommunityListWidget() + +> **new CommunityListWidget**(`widgetData`, `subredditName`, `metadata`): `CommunityListWidget` + +#### Parameters + +##### widgetData + +`GetWidgetsResponse_WidgetItem` + +##### subredditName + +`string` + +##### metadata + +`undefined` | `Metadata` + +#### Returns + +`CommunityListWidget` + +#### Overrides + +[`Widget`](Widget.md).[`constructor`](Widget.md#constructor) + +## Accessors + + + +### communities + +#### Get Signature + +> **get** **communities**(): `CommunityListWidget_CommunityData`[] + +##### Returns + +`CommunityListWidget_CommunityData`[] + +*** + + + +### id + +#### Get Signature + +> **get** **id**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`id`](Widget.md#id) + +*** + + + +### name + +#### Get Signature + +> **get** **name**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`name`](Widget.md#name) + +*** + + + +### styles + +#### Get Signature + +> **get** **styles**(): `WidgetStyles` + +##### Returns + +`WidgetStyles` + +*** + + + +### subredditName + +#### Get Signature + +> **get** **subredditName**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`subredditName`](Widget.md#subredditname) + +## Methods + + + +### delete() + +> **delete**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +#### Inherited from + +[`Widget`](Widget.md).[`delete`](Widget.md#delete) + +*** + + + +### toJSON() + +> **toJSON**(): `Pick`\<[`Widget`](Widget.md), `"subredditName"` \| `"id"` \| `"name"`\> & `Pick`\<`CommunityListWidget`, `"communities"` \| `"styles"`\> + +#### Returns + +`Pick`\<[`Widget`](Widget.md), `"subredditName"` \| `"id"` \| `"name"`\> & `Pick`\<`CommunityListWidget`, `"communities"` \| `"styles"`\> + +#### Overrides + +[`Widget`](Widget.md).[`toJSON`](Widget.md#tojson) diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/CustomWidget.md b/versioned_docs/version-0.13/api/redditapi/models/classes/CustomWidget.md new file mode 100644 index 00000000..6cbcda2b --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/CustomWidget.md @@ -0,0 +1,195 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: CustomWidget + +## Extends + +- [`Widget`](Widget.md) + +## Constructors + + + +### new CustomWidget() + +> **new CustomWidget**(`widgetData`, `subredditName`, `metadata`): `CustomWidget` + +#### Parameters + +##### widgetData + +`GetWidgetsResponse_WidgetItem` + +##### subredditName + +`string` + +##### metadata + +`undefined` | `Metadata` + +#### Returns + +`CustomWidget` + +#### Overrides + +[`Widget`](Widget.md).[`constructor`](Widget.md#constructor) + +## Accessors + + + +### css + +#### Get Signature + +> **get** **css**(): `string` + +##### Returns + +`string` + +*** + + + +### height + +#### Get Signature + +> **get** **height**(): `number` + +##### Returns + +`number` + +*** + + + +### id + +#### Get Signature + +> **get** **id**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`id`](Widget.md#id) + +*** + + + +### images + +#### Get Signature + +> **get** **images**(): `WidgetImage`[] + +##### Returns + +`WidgetImage`[] + +*** + + + +### name + +#### Get Signature + +> **get** **name**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`name`](Widget.md#name) + +*** + + + +### stylesheetUrl + +#### Get Signature + +> **get** **stylesheetUrl**(): `string` + +##### Returns + +`string` + +*** + + + +### subredditName + +#### Get Signature + +> **get** **subredditName**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`subredditName`](Widget.md#subredditname) + +*** + + + +### text + +#### Get Signature + +> **get** **text**(): `string` + +##### Returns + +`string` + +## Methods + + + +### delete() + +> **delete**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +#### Inherited from + +[`Widget`](Widget.md).[`delete`](Widget.md#delete) + +*** + + + +### toJSON() + +> **toJSON**(): `Pick`\<[`Widget`](Widget.md), `"subredditName"` \| `"id"` \| `"name"`\> & `Pick`\<`CustomWidget`, `"text"` \| `"height"` \| `"images"` \| `"stylesheetUrl"` \| `"css"`\> + +#### Returns + +`Pick`\<[`Widget`](Widget.md), `"subredditName"` \| `"id"` \| `"name"`\> & `Pick`\<`CustomWidget`, `"text"` \| `"height"` \| `"images"` \| `"stylesheetUrl"` \| `"css"`\> + +#### Overrides + +[`Widget`](Widget.md).[`toJSON`](Widget.md#tojson) diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/Flair.md b/versioned_docs/version-0.13/api/redditapi/models/classes/Flair.md new file mode 100644 index 00000000..6b3458de --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/Flair.md @@ -0,0 +1,17 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: Flair + +## Constructors + + + +### new Flair() + +> **new Flair**(): `Flair` + +#### Returns + +`Flair` diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/FlairTemplate.md b/versioned_docs/version-0.13/api/redditapi/models/classes/FlairTemplate.md new file mode 100644 index 00000000..bb582cbe --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/FlairTemplate.md @@ -0,0 +1,167 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: FlairTemplate + +## Accessors + + + +### allowableContent + +#### Get Signature + +> **get** **allowableContent**(): [`AllowableFlairContent`](../type-aliases/AllowableFlairContent.md) + +The flair template's allowable content. Either 'all', 'emoji', or 'text'. + +##### Returns + +[`AllowableFlairContent`](../type-aliases/AllowableFlairContent.md) + +*** + + + +### allowUserEdits + +#### Get Signature + +> **get** **allowUserEdits**(): `boolean` + +Does the flair template allow users to edit their flair? + +##### Returns + +`boolean` + +*** + + + +### backgroundColor + +#### Get Signature + +> **get** **backgroundColor**(): [`FlairBackgroundColor`](../type-aliases/FlairBackgroundColor.md) + +The flair template's background color. Either 'transparent' or a hex color code. e.g. #FFC0CB + +##### Returns + +[`FlairBackgroundColor`](../type-aliases/FlairBackgroundColor.md) + +*** + + + +### id + +#### Get Signature + +> **get** **id**(): `string` + +The flair template's ID + +##### Returns + +`string` + +*** + + + +### maxEmojis + +#### Get Signature + +> **get** **maxEmojis**(): `number` + +The flair template's maximum number of emojis. + +##### Returns + +`number` + +*** + + + +### modOnly + +#### Get Signature + +> **get** **modOnly**(): `boolean` + +Is the flair template only available to moderators? + +##### Returns + +`boolean` + +*** + + + +### text + +#### Get Signature + +> **get** **text**(): `string` + +The flair template's text + +##### Returns + +`string` + +*** + + + +### textColor + +#### Get Signature + +> **get** **textColor**(): [`FlairTextColor`](../type-aliases/FlairTextColor.md) + +The flair template's text color. Either 'dark' or 'light'. + +##### Returns + +[`FlairTextColor`](../type-aliases/FlairTextColor.md) + +## Methods + + + +### delete() + +> **delete**(): `Promise`\<`void`\> + +Delete this flair template + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### edit() + +> **edit**(`options`): `Promise`\<`FlairTemplate`\> + +Edit this flair template + +#### Parameters + +##### options + +`Partial`\<`Omit`\<[`EditFlairTemplateOptions`](../type-aliases/EditFlairTemplateOptions.md), `"subredditName"` \| `"id"`\>\> + +#### Returns + +`Promise`\<`FlairTemplate`\> diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/ImageWidget.md b/versioned_docs/version-0.13/api/redditapi/models/classes/ImageWidget.md new file mode 100644 index 00000000..1c592629 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/ImageWidget.md @@ -0,0 +1,139 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: ImageWidget + +## Extends + +- [`Widget`](Widget.md) + +## Constructors + + + +### new ImageWidget() + +> **new ImageWidget**(`widgetData`, `subredditName`, `metadata`): `ImageWidget` + +#### Parameters + +##### widgetData + +`GetWidgetsResponse_WidgetItem` + +##### subredditName + +`string` + +##### metadata + +`undefined` | `Metadata` + +#### Returns + +`ImageWidget` + +#### Overrides + +[`Widget`](Widget.md).[`constructor`](Widget.md#constructor) + +## Accessors + + + +### id + +#### Get Signature + +> **get** **id**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`id`](Widget.md#id) + +*** + + + +### images + +#### Get Signature + +> **get** **images**(): `WidgetImage`[] + +##### Returns + +`WidgetImage`[] + +*** + + + +### name + +#### Get Signature + +> **get** **name**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`name`](Widget.md#name) + +*** + + + +### subredditName + +#### Get Signature + +> **get** **subredditName**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`subredditName`](Widget.md#subredditname) + +## Methods + + + +### delete() + +> **delete**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +#### Inherited from + +[`Widget`](Widget.md).[`delete`](Widget.md#delete) + +*** + + + +### toJSON() + +> **toJSON**(): `Pick`\<[`Widget`](Widget.md), `"subredditName"` \| `"id"` \| `"name"`\> & `Pick`\<`ImageWidget`, `"images"`\> + +#### Returns + +`Pick`\<[`Widget`](Widget.md), `"subredditName"` \| `"id"` \| `"name"`\> & `Pick`\<`ImageWidget`, `"images"`\> + +#### Overrides + +[`Widget`](Widget.md).[`toJSON`](Widget.md#tojson) diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/Listing.md b/versioned_docs/version-0.13/api/redditapi/models/classes/Listing.md new file mode 100644 index 00000000..760c5286 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/Listing.md @@ -0,0 +1,113 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: Listing\ + +## Type Parameters + +### T + +`T` + +## Properties + + + +### limit + +> **limit**: `number` = `DEFAULT_LIMIT` + +*** + + + +### pageSize + +> **pageSize**: `number` = `DEFAULT_PAGE_SIZE` + +## Accessors + + + +### hasMore + +#### Get Signature + +> **get** **hasMore**(): `boolean` + +##### Returns + +`boolean` + +## Methods + + + +### \[asyncIterator\]() + +> **\[asyncIterator\]**(): `AsyncIterator`\<`T`\> + +#### Returns + +`AsyncIterator`\<`T`\> + +*** + + + +### all() + +> **all**(): `Promise`\<`T`[]\> + +#### Returns + +`Promise`\<`T`[]\> + +*** + + + +### get() + +> **get**(`count`): `Promise`\<`T`[]\> + +#### Parameters + +##### count + +`number` + +#### Returns + +`Promise`\<`T`[]\> + +*** + + + +### preventInitialFetch() + +> **preventInitialFetch**(): `void` + +#### Returns + +`void` + +*** + + + +### setMore() + +> **setMore**(`more`): `void` + +#### Parameters + +##### more + +`undefined` | [`MoreObject`](../type-aliases/MoreObject.md) + +#### Returns + +`void` diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/ModMailService.md b/versioned_docs/version-0.13/api/redditapi/models/classes/ModMailService.md new file mode 100644 index 00000000..b93a3d6f --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/ModMailService.md @@ -0,0 +1,808 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: ModMailService + +Class providing the methods for working with Mod Mail + +## Properties + + + +### notificationSubjectPrefix + +> `readonly` **notificationSubjectPrefix**: `"[notification]"` = `'[notification]'` + +## Methods + + + +### approveConversation() + +> **approveConversation**(`conversationId`): `Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md) & [`WithUserData`](../type-aliases/WithUserData.md)\> + +Approve the non mod user associated with a particular conversation. + +#### Parameters + +##### conversationId + +`string` + +Id of a modmail conversation + +#### Returns + +`Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md) & [`WithUserData`](../type-aliases/WithUserData.md)\> + +#### Example + +```ts +await reddit.modMail.approveConversation('abcdef'); +``` + +*** + + + +### archiveConversation() + +> **archiveConversation**(`conversationId`): `Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md)\> + +Marks a conversation as archived + +#### Parameters + +##### conversationId + +`string` + +Id of a modmail conversation + +#### Returns + +`Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md)\> + +#### Example + +```ts +await reddit.modMail.archive('abcdef'); +``` + +*** + + + +### bulkReadConversations() + +> **bulkReadConversations**(`subreddits`, `state`): `Promise`\<`string`[]\> + +Marks all conversations read for a particular conversation state within the passed list of subreddits. + +#### Parameters + +##### subreddits + +`string`[] + +Array of subreddit names + +##### state + +[`ConversationStateFilter`](../type-aliases/ConversationStateFilter.md) + +One of the possible conversation states ('all' to read all conversations) + +#### Returns + +`Promise`\<`string`[]\> + +conversationIds + +#### Example + +```ts +const conversationIds = await reddit.modMail.bulkReadConversations( + ['askReddit', 'myAwesomeSubreddit'], + 'filtered' +); +``` + +*** + + + +### createConversation() + +> **createConversation**(`params`): `Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md) & [`WithUserData`](../type-aliases/WithUserData.md)\> + +Creates a new conversation for a particular SR. + +This endpoint will create a ModmailConversation object +as well as the first ModmailMessage within the ModmailConversation object. + +#### Parameters + +##### params + +###### body + +`string` + +markdown text + +###### isAuthorHidden? + +`boolean` + +is author hidden? (default: false) + +###### subject + +`string` + +subject of the conversation. max 100 characters + +###### subredditName + +`string` + +subreddit name + +###### to? + +`null` \| `string` + +a user (e.g. u/username), a subreddit (e.g. r/subreddit) or null + +#### Returns + +`Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md) & [`WithUserData`](../type-aliases/WithUserData.md)\> + +#### Note + +Note on {param.to}: +The to field for this endpoint is somewhat confusing. It can be: +- A User, passed like "username" or "u/username" +- A Subreddit, passed like "r/subreddit" +- null, meaning an internal moderator discussion + +In this way to is a bit of a misnomer in modmail conversations. +What it really means is the participant of the conversation who is not a mod of the subreddit. + +If you plan to send a message to the app-account or a moderator of the subreddit, use [ModMailService.createModDiscussionConversation](#createmoddiscussionconversation), [ModMailService.createModInboxConversation](#createmodinboxconversation), or [ModMailService.createModNotification](#createmodnotification) instead. +Otherwise, messages sent to the app-account or moderator will automatically be routed to Mod Discussions. + +#### Example + +```ts +const { conversation, messages, modActions } = await reddit.modMail.createConversation({ + subredditName: 'askReddit', + subject: 'Test conversation', + body: 'Lorem ipsum sit amet', + to: null, +}); +``` + +*** + + + +### createModDiscussionConversation() + +> **createModDiscussionConversation**(`params`): `Promise`\<`string`\> + +Creates a conversation in Mod Discussions with the moderators of the given subredditId. + +Note: The app must be installed in the subreddit in order to create a conversation in Mod Discussions. + +#### Parameters + +##### params + +###### bodyMarkdown + +`string` + +###### subject + +`string` + +###### subredditId + +`string` + +#### Returns + +`Promise`\<`string`\> + +A Promise that resolves a string representing the conversationId of the message. + +#### Example + +```ts +const conversationId = await reddit.modMail.createModDiscussionConversation({ + subject: 'Test conversation', + bodyMarkdown: '**Hello there** \n\n _Have a great day!_', + subredditId: context.subredditId +}); +``` + +*** + + + +### createModInboxConversation() + +> **createModInboxConversation**(`params`): `Promise`\<`string`\> + +Creates a conversation in the Modmail Inbox with the moderators of the given subredditId. + +#### Parameters + +##### params + +###### bodyMarkdown + +`string` + +###### subject + +`string` + +###### subredditId + +`string` + +#### Returns + +`Promise`\<`string`\> + +A Promise that resolves a string representing the conversationId of the message. + +#### Example + +```ts +const conversationId = await reddit.modMail.createModInboxConversation({ + subject: 'Test conversation', + bodyMarkdown: '**Hello there** \n\n _Have a great day!_', + subredditId: context.subredditId +}); +``` + +*** + + + +### createModNotification() + +> **createModNotification**(`params`): `Promise`\<`string`\> + +Creates a notification in the Modmail Inbox. +This function is different from [ModMailService.createModInboxConversation](#createmodinboxconversation) in that the conversation also appears in the "Notifications" section of Modmail. + +#### Parameters + +##### params + +###### bodyMarkdown + +`string` + +###### subject + +`string` + +###### subredditId + +`string` + +#### Returns + +`Promise`\<`string`\> + +A Promise that resolves a string representing the conversationId of the message. + +#### Example + +```ts +const conversationId = await reddit.modMail.createModNotification({ + subject: 'Test notification', + bodyMarkdown: '**Hello there** \n\n _This is a notification!_', + subredditId: context.subredditId +}); +``` + +*** + + + +### disapproveConversation() + +> **disapproveConversation**(`conversationId`): `Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md) & [`WithUserData`](../type-aliases/WithUserData.md)\> + +Disapprove the non mod user associated with a particular conversation. + +#### Parameters + +##### conversationId + +`string` + +Id of a modmail conversation + +#### Returns + +`Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md) & [`WithUserData`](../type-aliases/WithUserData.md)\> + +#### Example + +```ts +await reddit.modMail.disapproveConversation('abcdef'); +``` + +*** + + + +### getConversation() + +> **getConversation**(`params`): `Promise`\<[`GetConversationResponse`](../type-aliases/GetConversationResponse.md)\> + +Returns all messages, mod actions and conversation metadata for a given conversation id + +#### Parameters + +##### params + +###### conversationId + +`string` + +a modmail conversation id + +###### markRead? + +`boolean` + +mark read? + +#### Returns + +`Promise`\<[`GetConversationResponse`](../type-aliases/GetConversationResponse.md)\> + +#### Example + +```ts +const { conversation, messages, modActions, user } = await reddit.modMail.getConversation({ conversationId: 'abcdef', markRead: true }); +``` + +*** + + + +### getConversations() + +> **getConversations**(`params`): `Promise`\<[`GetConversationsResponse`](../type-aliases/GetConversationsResponse.md)\> + +Get conversations for a logged in user or subreddits + +#### Parameters + +##### params + +[`GetConversationsRequest`](../type-aliases/GetConversationsRequest.md) + +#### Returns + +`Promise`\<[`GetConversationsResponse`](../type-aliases/GetConversationsResponse.md)\> + +#### Example + +```ts +const {viewerId, conversations} = await reddit.modMail.getConversations({ + after: 'abcdef', + limit: 42 +}); + +const arrayOfConversations = Object.values(conversations); +``` + +*** + + + +### getSubreddits() + +> **getSubreddits**(): `Promise`\<\{\}\> + +Returns a list of Subreddits that the user moderates with mail permission + +#### Returns + +`Promise`\<\{\}\> + +#### Example + +```ts +const subredditsData = await reddit.modMail.getSubreddits(); + +for (const subreddit of Object.values(subreddits)) { + console.log(subreddit.id); + console.log(subreddit.name); +} +``` + +*** + + + +### getUnreadCount() + +> **getUnreadCount**(): `Promise`\<[`UnreadCountResponse`](../type-aliases/UnreadCountResponse.md)\> + +Endpoint to retrieve the unread conversation count by conversation state. + +#### Returns + +`Promise`\<[`UnreadCountResponse`](../type-aliases/UnreadCountResponse.md)\> + +#### Example + +```ts +const response = await reddit.modMail.getUnreadCount(); + +console.log(response.highlighted); +console.log(response.new); +``` + +*** + + + +### getUserConversations() + +> **getUserConversations**(`conversationId`): `Promise`\<[`ConversationUserData`](../type-aliases/ConversationUserData.md)\> + +Returns recent posts, comments and modmail conversations for a given user. + +#### Parameters + +##### conversationId + +`string` + +Id of a modmail conversation + +#### Returns + +`Promise`\<[`ConversationUserData`](../type-aliases/ConversationUserData.md)\> + +#### Example + +```ts +const data = await reddit.modMail.getUserConversations('abcdef'); + +console.log(data.recentComments); +console.log(data.recentPosts); +``` + +*** + + + +### highlightConversation() + +> **highlightConversation**(`conversationId`): `Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md)\> + +Marks a conversation as highlighted. + +#### Parameters + +##### conversationId + +`string` + +Id of a modmail conversation + +#### Returns + +`Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md)\> + +#### Example + +```ts +await reddit.modMail.highlightConversation('abcdef'); +``` + +*** + + + +### muteConversation() + +> **muteConversation**(`params`): `Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md) & [`WithUserData`](../type-aliases/WithUserData.md)\> + +Marks a conversation as read for the user. + +#### Parameters + +##### params + +###### conversationId + +`string` + +Id of a modmail conversation + +###### numHours + +`72` \| `168` \| `672` + +For how many hours the conversation needs to be muted. Must be one of 72, 168, or 672 hours + +#### Returns + +`Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md) & [`WithUserData`](../type-aliases/WithUserData.md)\> + +#### Example + +```ts +await reddit.modMail.muteConversation({ conversationId: 'abcdef', numHours: 72 }); +``` + +*** + + + +### readConversations() + +> **readConversations**(`conversationIds`): `Promise`\<`void`\> + +Marks a conversations as read for the user. + +#### Parameters + +##### conversationIds + +`string`[] + +An array of ids + +#### Returns + +`Promise`\<`void`\> + +#### Example + +```ts +await reddit.modMail.readConversations(['abcdef', 'qwerty']); +``` + +*** + + + +### reply() + +> **reply**(`params`): `Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md) & [`WithUserData`](../type-aliases/WithUserData.md)\> + +Creates a new message for a particular conversation. + +#### Parameters + +##### params + +###### body + +`string` + +markdown text + +###### conversationId + +`string` + +Id of a modmail conversation + +###### isAuthorHidden? + +`boolean` + +is author hidden? (default: false) + +###### isInternal? + +`boolean` + +is internal message? (default: false) + +#### Returns + +`Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md) & [`WithUserData`](../type-aliases/WithUserData.md)\> + +#### Example + +```ts +await reddit.modMail.reply({ + body: 'Lorem ipsum sit amet', + conversationId: 'abcdef', +}); +``` + +*** + + + +### tempBanConversation() + +> **tempBanConversation**(`params`): `Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md) & [`WithUserData`](../type-aliases/WithUserData.md)\> + +Temporary ban (switch from permanent to temporary ban) the non mod user associated with a particular conversation. + +#### Parameters + +##### params + +###### conversationId + +`string` + +a modmail conversation id + +###### duration + +`number` + +duration in days, max 999 + +#### Returns + +`Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md) & [`WithUserData`](../type-aliases/WithUserData.md)\> + +#### Example + +```ts +await reddit.modMail.tempBanConversation({ conversationId: 'abcdef', duration: 42 }); +``` + +*** + + + +### unarchiveConversation() + +> **unarchiveConversation**(`conversationId`): `Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md)\> + +Marks conversation as unarchived. + +#### Parameters + +##### conversationId + +`string` + +Id of a modmail conversation + +#### Returns + +`Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md)\> + +#### Example + +```ts +await reddit.modMail.unarchiveConversation('abcdef'); +``` + +*** + + + +### unbanConversation() + +> **unbanConversation**(`conversationId`): `Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md) & [`WithUserData`](../type-aliases/WithUserData.md)\> + +Unban the non mod user associated with a particular conversation. + +#### Parameters + +##### conversationId + +`string` + +a modmail conversation id + +#### Returns + +`Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md) & [`WithUserData`](../type-aliases/WithUserData.md)\> + +#### Example + +```ts +await reddit.modMail.unbanConversation('abcdef'); +``` + +*** + + + +### unhighlightConversation() + +> **unhighlightConversation**(`conversationId`): `Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md)\> + +Removes a highlight from a conversation. + +#### Parameters + +##### conversationId + +`string` + +Id of a modmail conversation + +#### Returns + +`Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md)\> + +#### Example + +```ts +await reddit.modMail.unhighlightConversation('abcdef'); +``` + +*** + + + +### unmuteConversation() + +> **unmuteConversation**(`conversationId`): `Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md) & [`WithUserData`](../type-aliases/WithUserData.md)\> + +Unmutes the non mod user associated with a particular conversation. + +#### Parameters + +##### conversationId + +`string` + +Id of a modmail conversation + +#### Returns + +`Promise`\<[`ConversationResponse`](../type-aliases/ConversationResponse.md) & [`WithUserData`](../type-aliases/WithUserData.md)\> + +#### Example + +```ts +await reddit.modMail.unmuteConversation('abcdef'); +``` + +*** + + + +### unreadConversations() + +> **unreadConversations**(`conversationIds`): `Promise`\<`void`\> + +Marks conversations as unread for the user. + +#### Parameters + +##### conversationIds + +`string`[] + +An array of ids + +#### Returns + +`Promise`\<`void`\> + +#### Example + +```ts +await reddit.modMail.unreadConversations(['abcdef', 'qwerty']); +``` diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/ModNote.md b/versioned_docs/version-0.13/api/redditapi/models/classes/ModNote.md new file mode 100644 index 00000000..cdd8a16e --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/ModNote.md @@ -0,0 +1,93 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: ModNote + +## Properties + + + +### createdAt + +> **createdAt**: `Date` + +*** + + + +### id + +> **id**: `string` + +*** + + + +### modAction? + +> `optional` **modAction**: [`ModAction`](../interfaces/ModAction.md) + +*** + + + +### operator + +> **operator**: `object` + +#### id? + +> `optional` **id**: `` `t2_${string}` `` + +#### name? + +> `optional` **name**: `string` + +*** + + + +### subreddit + +> **subreddit**: `object` + +#### id? + +> `optional` **id**: `` `t5_${string}` `` + +#### name? + +> `optional` **name**: `string` + +*** + + + +### type + +> **type**: [`ModNoteType`](../type-aliases/ModNoteType.md) + +*** + + + +### user + +> **user**: `object` + +#### id? + +> `optional` **id**: `` `t2_${string}` `` + +#### name? + +> `optional` **name**: `string` + +*** + + + +### userNote? + +> `optional` **userNote**: [`UserNote`](../type-aliases/UserNote.md) diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/Post.md b/versioned_docs/version-0.13/api/redditapi/models/classes/Post.md new file mode 100644 index 00000000..de5bbaca --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/Post.md @@ -0,0 +1,1368 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: Post + +## Accessors + + + +### approved + +#### Get Signature + +> **get** **approved**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### approvedAtUtc + +#### Get Signature + +> **get** **approvedAtUtc**(): `number` + +##### Returns + +`number` + +*** + + + +### archived + +#### Get Signature + +> **get** **archived**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### authorFlair + +#### Get Signature + +> **get** **authorFlair**(): `undefined` \| [`CommonFlair`](../type-aliases/CommonFlair.md) + +##### Returns + +`undefined` \| [`CommonFlair`](../type-aliases/CommonFlair.md) + +*** + + + +### authorId + +#### Get Signature + +> **get** **authorId**(): `undefined` \| `` `t2_${string}` `` + +##### Returns + +`undefined` \| `` `t2_${string}` `` + +*** + + + +### authorName + +#### Get Signature + +> **get** **authorName**(): `string` + +##### Returns + +`string` + +*** + + + +### bannedAtUtc + +#### Get Signature + +> **get** **bannedAtUtc**(): `number` + +##### Returns + +`number` + +*** + + + +### body + +#### Get Signature + +> **get** **body**(): `undefined` \| `string` + +##### Returns + +`undefined` \| `string` + +*** + + + +### bodyHtml + +#### Get Signature + +> **get** **bodyHtml**(): `undefined` \| `string` + +##### Returns + +`undefined` \| `string` + +*** + + + +### comments + +#### Get Signature + +> **get** **comments**(): [`Listing`](Listing.md)\<[`Comment`](Comment.md)\> + +##### Returns + +[`Listing`](Listing.md)\<[`Comment`](Comment.md)\> + +*** + + + +### createdAt + +#### Get Signature + +> **get** **createdAt**(): `Date` + +##### Returns + +`Date` + +*** + + + +### distinguishedBy + +#### Get Signature + +> **get** **distinguishedBy**(): `undefined` \| `string` + +##### Returns + +`undefined` \| `string` + +*** + + + +### edited + +#### Get Signature + +> **get** **edited**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### flair + +#### Get Signature + +> **get** **flair**(): `undefined` \| [`CommonFlair`](../type-aliases/CommonFlair.md) + +##### Returns + +`undefined` \| [`CommonFlair`](../type-aliases/CommonFlair.md) + +*** + + + +### gallery + +#### Get Signature + +> **get** **gallery**(): [`GalleryMedia`](../type-aliases/GalleryMedia.md)[] + +Get the media in the post. Empty if the post doesn't have any media. + +##### Returns + +[`GalleryMedia`](../type-aliases/GalleryMedia.md)[] + +*** + + + +### hidden + +#### Get Signature + +> **get** **hidden**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### id + +#### Get Signature + +> **get** **id**(): `` `t3_${string}` `` + +##### Returns + +`` `t3_${string}` `` + +*** + + + +### ignoringReports + +#### Get Signature + +> **get** **ignoringReports**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### locked + +#### Get Signature + +> **get** **locked**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### modReportReasons + +#### Get Signature + +> **get** **modReportReasons**(): `string`[] + +##### Returns + +`string`[] + +*** + + + +### nsfw + +#### Get Signature + +> **get** **nsfw**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### numberOfComments + +#### Get Signature + +> **get** **numberOfComments**(): `number` + +##### Returns + +`number` + +*** + + + +### numberOfReports + +#### Get Signature + +> **get** **numberOfReports**(): `number` + +##### Returns + +`number` + +*** + + + +### permalink + +#### Get Signature + +> **get** **permalink**(): `string` + +##### Returns + +`string` + +*** + + + +### pollData + +#### Get Signature + +> **get** **pollData**(): `undefined` \| [`PollData`](../type-aliases/PollData.md) + +Poll data for the post, if the post is a poll. Undefined otherwise. + +##### Returns + +`undefined` \| [`PollData`](../type-aliases/PollData.md) + +*** + + + +### quarantined + +#### Get Signature + +> **get** **quarantined**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### removed + +#### Get Signature + +> **get** **removed**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### removedBy + +#### Get Signature + +> **get** **removedBy**(): `undefined` \| `string` + +Who removed this object (username) + +##### Returns + +`undefined` \| `string` + +*** + + + +### removedByCategory + +#### Get Signature + +> **get** **removedByCategory**(): `undefined` \| `string` + +who/what removed this object. It will return one of the following: +- "anti_evil_ops": object is removed by a aeops member +- "author": object is removed by author of the post +- "automod_filtered": object is filtered by automod +- "community_ops": object is removed by a community team member +- "content_takedown": object is removed due to content violation +- "copyright_takedown": object is removed due to copyright violation +- "deleted": object is deleted +- "moderator": object is removed by a mod of the sub +- "reddit": object is removed by anyone else +- undefined: object is not removed + +##### Returns + +`undefined` \| `string` + +*** + + + +### score + +#### Get Signature + +> **get** **score**(): `number` + +##### Returns + +`number` + +*** + + + +### secureMedia + +#### Get Signature + +> **get** **secureMedia**(): `undefined` \| [`SecureMedia`](../type-aliases/SecureMedia.md) + +##### Returns + +`undefined` \| [`SecureMedia`](../type-aliases/SecureMedia.md) + +*** + + + +### spam + +#### Get Signature + +> **get** **spam**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### spoiler + +#### Get Signature + +> **get** **spoiler**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### stickied + +#### Get Signature + +> **get** **stickied**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### subredditId + +#### Get Signature + +> **get** **subredditId**(): `` `t5_${string}` `` + +##### Returns + +`` `t5_${string}` `` + +*** + + + +### subredditName + +#### Get Signature + +> **get** **subredditName**(): `string` + +##### Returns + +`string` + +*** + + + +### thumbnail + +#### Get Signature + +> **get** **thumbnail**(): `undefined` \| \{ `height`: `number`; `url`: `string`; `width`: `number`; \} + +##### Returns + +`undefined` \| \{ `height`: `number`; `url`: `string`; `width`: `number`; \} + +*** + + + +### title + +#### Get Signature + +> **get** **title**(): `string` + +##### Returns + +`string` + +*** + + + +### url + +#### Get Signature + +> **get** **url**(): `string` + +##### Returns + +`string` + +*** + + + +### userReportReasons + +#### Get Signature + +> **get** **userReportReasons**(): `string`[] + +##### Returns + +`string`[] + +## Methods + + + +### addComment() + +> **addComment**(`options`): `Promise`\<[`Comment`](Comment.md)\> + +#### Parameters + +##### options + +[`CommentSubmissionOptions`](../type-aliases/CommentSubmissionOptions.md) + +#### Returns + +`Promise`\<[`Comment`](Comment.md)\> + +*** + + + +### addRemovalNote() + +> **addRemovalNote**(`options`): `Promise`\<`void`\> + +Add a mod note for why the post was removed + +#### Parameters + +##### options + +###### modNote? + +`string` + +the reason for removal (maximum 100 characters) (optional) + +###### reasonId + +`string` + +id of a Removal Reason - you can leave this as an empty string if you don't have one + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### approve() + +> **approve**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### crosspost() + +> **crosspost**(`options`): `Promise`\<`Post`\> + +#### Parameters + +##### options + +`Omit`\<[`CrosspostOptions`](../type-aliases/CrosspostOptions.md), `"postId"`\> + +#### Returns + +`Promise`\<`Post`\> + +*** + + + +### delete() + +> **delete**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### distinguish() + +> **distinguish**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### distinguishAsAdmin() + +> **distinguishAsAdmin**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### edit() + +> **edit**(`options`): `Promise`\<`void`\> + +#### Parameters + +##### options + +[`PostTextOptions`](../type-aliases/PostTextOptions.md) + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### getAuthor() + +> **getAuthor**(): `Promise`\<`undefined` \| [`User`](User.md)\> + +#### Returns + +`Promise`\<`undefined` \| [`User`](User.md)\> + +*** + + + +### getCurrentUserPollOption() + +> **getCurrentUserPollOption**(): `Promise`\<`undefined` \| [`PollOption`](../type-aliases/PollOption.md)\> + +Get the poll option the authenticated user selected for this post. +Returns undefined if the post is not a poll or the user has not voted. + +This method will get the poll option for the app account by default. +To get the poll option for a user, please contact Reddit. + +#### Returns + +`Promise`\<`undefined` \| [`PollOption`](../type-aliases/PollOption.md)\> + +*** + + + +### getDuplicates() + +> **getDuplicates**(`options`): [`Listing`](Listing.md)\<`Post`\> + +#### Parameters + +##### options + +`Omit`\<[`GetDuplicatesOptions`](../type-aliases/GetDuplicatesOptions.md), `"postId"`\> = `{}` + +#### Returns + +[`Listing`](Listing.md)\<`Post`\> + +*** + + + +### getEnrichedThumbnail() + +> **getEnrichedThumbnail**(): `Promise`\<`undefined` \| [`EnrichedThumbnail`](../type-aliases/EnrichedThumbnail.md)\> + +Get a thumbnail that contains a preview image and also contains a blurred preview for +NSFW images. The thumbnail returned has higher resolution than Post.thumbnail. +Returns undefined if the post doesn't have a thumbnail + +#### Returns + +`Promise`\<`undefined` \| [`EnrichedThumbnail`](../type-aliases/EnrichedThumbnail.md)\> + +#### Throws + +Throws an error if the thumbnail could not be fetched + +#### Example + +```ts +// from a menu action, form, scheduler, trigger, custom post click event, etc +const post = await context.reddit.getPostById(context.postId); +const enrichedThumbnail = await post.getEnrichedThumbnail(); +``` + +*** + + + +### getPostData() + +> **getPostData**(): `Promise`\<`undefined` \| `JsonObject`\> + +Get the postData for the post. + +#### Returns + +`Promise`\<`undefined` \| `JsonObject`\> + +#### Example + +```ts +const post = await context.reddit.getPostById(context.postId); +const postData = await post.getPostData(); +``` + +*** + + + +### hide() + +> **hide**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### ignoreReports() + +> **ignoreReports**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### isApproved() + +> **isApproved**(): `boolean` + +#### Returns + +`boolean` + +*** + + + +### isArchived() + +> **isArchived**(): `boolean` + +#### Returns + +`boolean` + +*** + + + +### isDistinguishedBy() + +> **isDistinguishedBy**(): `undefined` \| `string` + +#### Returns + +`undefined` \| `string` + +*** + + + +### isEdited() + +> **isEdited**(): `boolean` + +#### Returns + +`boolean` + +*** + + + +### isHidden() + +> **isHidden**(): `boolean` + +#### Returns + +`boolean` + +*** + + + +### isIgnoringReports() + +> **isIgnoringReports**(): `boolean` + +#### Returns + +`boolean` + +*** + + + +### isLocked() + +> **isLocked**(): `boolean` + +#### Returns + +`boolean` + +*** + + + +### isNsfw() + +> **isNsfw**(): `boolean` + +#### Returns + +`boolean` + +*** + + + +### isQuarantined() + +> **isQuarantined**(): `boolean` + +#### Returns + +`boolean` + +*** + + + +### isRemoved() + +> **isRemoved**(): `boolean` + +#### Returns + +`boolean` + +*** + + + +### isSpam() + +> **isSpam**(): `boolean` + +#### Returns + +`boolean` + +*** + + + +### isSpoiler() + +> **isSpoiler**(): `boolean` + +#### Returns + +`boolean` + +*** + + + +### isStickied() + +> **isStickied**(): `boolean` + +#### Returns + +`boolean` + +*** + + + +### lock() + +> **lock**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### markAsNsfw() + +> **markAsNsfw**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### markAsSpoiler() + +> **markAsSpoiler**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### remove() + +> **remove**(`isSpam`): `Promise`\<`void`\> + +#### Parameters + +##### isSpam + +`boolean` = `false` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### setCustomPostPreview() + +> **setCustomPostPreview**(`ui`): `Promise`\<`void`\> + +Set a lightweight UI that shows while the custom post renders + +#### Parameters + +##### ui + +`ComponentFunction` + +A JSX component function that returns a simple ui to be rendered. + +#### Returns + +`Promise`\<`void`\> + +#### Throws + +Throws an error if the preview could not be set. + +#### Example + +```ts +const preview = ( + + An updated preview! + +); +const post = await reddit.getPostById(context.postId); +await post.setCustomPostPreview(() => preview); +``` + +*** + + + +### setPostData() + +> **setPostData**(`postData`): `Promise`\<`void`\> + +Set the postData on a custom post. + +#### Parameters + +##### postData + +`JsonObject` + +Represents the postData to be set, eg: { currentScore: 55, secretWord: 'barbeque' } + +#### Returns + +`Promise`\<`void`\> + +#### Throws + +Throws an error if the postData could not be set. + +#### Example + +```ts +const post = await reddit.getPostById(context.postId); +await post.setPostData({ + currentScore: 55, + secretWord: 'barbeque', +}); +``` + +*** + + + +### setSuggestedCommentSort() + +> **setSuggestedCommentSort**(`suggestedSort`): `Promise`\<`void`\> + +Set the suggested sort for comments on a Post. + +#### Parameters + +##### suggestedSort + +[`PostSuggestedCommentSort`](../type-aliases/PostSuggestedCommentSort.md) + +#### Returns + +`Promise`\<`void`\> + +#### Throws + +Throws an error if the suggested sort could not be set. + +#### Example + +```ts +const post = await reddit.getPostById(context.postId); +await post.setSuggestedCommentSort("NEW"); +``` + +*** + + + +### setTextFallback() + +> **setTextFallback**(`options`): `Promise`\<`void`\> + +Set a text fallback for the custom post + +#### Parameters + +##### options + +[`CustomPostTextFallbackOptions`](../type-aliases/CustomPostTextFallbackOptions.md) + +A text or a richtext to render in a fallback + +#### Returns + +`Promise`\<`void`\> + +#### Throws + +Throws an error if the fallback could not be set. + +#### Example + +```ts +// from a menu action, form, scheduler, trigger, custom post click event, etc +const newTextFallback = { text: 'This is an updated text fallback' }; +const post = await context.reddit.getPostById(context.postId); +await post.setTextFallback(newTextFallback); +``` + +*** + + + +### snoozeReports() + +> **snoozeReports**(`reason`): `Promise`\<`void`\> + +Snooze subsequent reports with the given reason from the same users for the next 7 days. +Only works for free-form reports. + +#### Parameters + +##### reason + +`string` + +The report reason to snooze. + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### sticky() + +> **sticky**(`position`?): `Promise`\<`void`\> + +#### Parameters + +##### position? + +`1` | `2` | `3` | `4` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### toJSON() + +> **toJSON**(): `Pick`\<`Post`, `"subredditName"` \| `"flair"` \| `"id"` \| `"score"` \| `"title"` \| `"subredditId"` \| `"permalink"` \| `"url"` \| `"createdAt"` \| `"nsfw"` \| `"authorId"` \| `"authorName"` \| `"body"` \| `"bodyHtml"` \| `"thumbnail"` \| `"numberOfComments"` \| `"numberOfReports"` \| `"approved"` \| `"spam"` \| `"stickied"` \| `"removed"` \| `"removedBy"` \| `"removedByCategory"` \| `"archived"` \| `"edited"` \| `"locked"` \| `"quarantined"` \| `"spoiler"` \| `"hidden"` \| `"ignoringReports"` \| `"distinguishedBy"` \| `"authorFlair"` \| `"secureMedia"` \| `"userReportReasons"` \| `"modReportReasons"`\> + +#### Returns + +`Pick`\<`Post`, `"subredditName"` \| `"flair"` \| `"id"` \| `"score"` \| `"title"` \| `"subredditId"` \| `"permalink"` \| `"url"` \| `"createdAt"` \| `"nsfw"` \| `"authorId"` \| `"authorName"` \| `"body"` \| `"bodyHtml"` \| `"thumbnail"` \| `"numberOfComments"` \| `"numberOfReports"` \| `"approved"` \| `"spam"` \| `"stickied"` \| `"removed"` \| `"removedBy"` \| `"removedByCategory"` \| `"archived"` \| `"edited"` \| `"locked"` \| `"quarantined"` \| `"spoiler"` \| `"hidden"` \| `"ignoringReports"` \| `"distinguishedBy"` \| `"authorFlair"` \| `"secureMedia"` \| `"userReportReasons"` \| `"modReportReasons"`\> + +*** + + + +### undistinguish() + +> **undistinguish**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### unhide() + +> **unhide**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### unignoreReports() + +> **unignoreReports**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### unlock() + +> **unlock**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### unmarkAsNsfw() + +> **unmarkAsNsfw**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### unmarkAsSpoiler() + +> **unmarkAsSpoiler**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### unsnoozeReports() + +> **unsnoozeReports**(`reason`): `Promise`\<`void`\> + +Unsnooze reports with the given reason. +Only works for free-form reports. + +#### Parameters + +##### reason + +`string` + +The report reason to unsnooze. + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### unsticky() + +> **unsticky**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### updateCrowdControlLevel() + +> **updateCrowdControlLevel**(`level`): `Promise`\<`void`\> + +Updates the crowd control level of the post to hide comments accordingly. + +#### Parameters + +##### level + +[`CrowdControlLevel`](../type-aliases/CrowdControlLevel.md) + +The crowd control level to set. See [CrowdControlLevel](../type-aliases/CrowdControlLevel.md) for more information. + +#### Returns + +`Promise`\<`void`\> diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/PostFlairSettings.md b/versioned_docs/version-0.13/api/redditapi/models/classes/PostFlairSettings.md new file mode 100644 index 00000000..d6dc7989 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/PostFlairSettings.md @@ -0,0 +1,33 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: PostFlairSettings + +## Constructors + + + +### new PostFlairSettings() + +> **new PostFlairSettings**(): `PostFlairSettings` + +#### Returns + +`PostFlairSettings` + +## Properties + + + +### isEnabled? + +> `optional` **isEnabled**: `boolean` + +*** + + + +### isSelfAssignabled? + +> `optional` **isSelfAssignabled**: `boolean` diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/PostFlairWidget.md b/versioned_docs/version-0.13/api/redditapi/models/classes/PostFlairWidget.md new file mode 100644 index 00000000..e014c7f3 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/PostFlairWidget.md @@ -0,0 +1,167 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: PostFlairWidget + +## Extends + +- [`Widget`](Widget.md) + +## Constructors + + + +### new PostFlairWidget() + +> **new PostFlairWidget**(`widgetData`, `subredditName`, `metadata`): `PostFlairWidget` + +#### Parameters + +##### widgetData + +`GetWidgetsResponse_WidgetItem` + +##### subredditName + +`string` + +##### metadata + +`undefined` | `Metadata` + +#### Returns + +`PostFlairWidget` + +#### Overrides + +[`Widget`](Widget.md).[`constructor`](Widget.md#constructor) + +## Accessors + + + +### display + +#### Get Signature + +> **get** **display**(): `"list"` \| `"cloud"` + +##### Returns + +`"list"` \| `"cloud"` + +*** + + + +### id + +#### Get Signature + +> **get** **id**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`id`](Widget.md#id) + +*** + + + +### name + +#### Get Signature + +> **get** **name**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`name`](Widget.md#name) + +*** + + + +### styles + +#### Get Signature + +> **get** **styles**(): `WidgetStyles` + +##### Returns + +`WidgetStyles` + +*** + + + +### subredditName + +#### Get Signature + +> **get** **subredditName**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`subredditName`](Widget.md#subredditname) + +*** + + + +### templates + +#### Get Signature + +> **get** **templates**(): `GetWidgetsResponse_WidgetItem_PostFlairTemplate`[] + +##### Returns + +`GetWidgetsResponse_WidgetItem_PostFlairTemplate`[] + +## Methods + + + +### delete() + +> **delete**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +#### Inherited from + +[`Widget`](Widget.md).[`delete`](Widget.md#delete) + +*** + + + +### toJSON() + +> **toJSON**(): `Pick`\<[`Widget`](Widget.md), `"subredditName"` \| `"id"` \| `"name"`\> & `Pick`\<`PostFlairWidget`, `"styles"` \| `"templates"` \| `"display"`\> + +#### Returns + +`Pick`\<[`Widget`](Widget.md), `"subredditName"` \| `"id"` \| `"name"`\> & `Pick`\<`PostFlairWidget`, `"styles"` \| `"templates"` \| `"display"`\> + +#### Overrides + +[`Widget`](Widget.md).[`toJSON`](Widget.md#tojson) diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/PrivateMessage.md b/versioned_docs/version-0.13/api/redditapi/models/classes/PrivateMessage.md new file mode 100644 index 00000000..33a51330 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/PrivateMessage.md @@ -0,0 +1,87 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: PrivateMessage + +## Accessors + + + +### body + +#### Get Signature + +> **get** **body**(): `string` + +##### Returns + +`string` + +*** + + + +### bodyHtml + +#### Get Signature + +> **get** **bodyHtml**(): `string` + +##### Returns + +`string` + +*** + + + +### created + +#### Get Signature + +> **get** **created**(): `Date` + +##### Returns + +`Date` + +*** + + + +### from + +#### Get Signature + +> **get** **from**(): `PrivateMessageAuthor` + +##### Returns + +`PrivateMessageAuthor` + +*** + + + +### id + +#### Get Signature + +> **get** **id**(): `TID` + +##### Returns + +`TID` + +## Methods + + + +### markAsRead() + +> **markAsRead**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/Rule.md b/versioned_docs/version-0.13/api/redditapi/models/classes/Rule.md new file mode 100644 index 00000000..a5431739 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/Rule.md @@ -0,0 +1,303 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: Rule + +## Constructors + + + +### new Rule() + +> **new Rule**(`ruleData`, `subredditName`, `metadata`): `Rule` + +#### Parameters + +##### ruleData + +`SubredditAboutRulesResponse_SubredditRule` + +##### subredditName + +`string` + +##### metadata + +`undefined` | `Metadata` + +#### Returns + +`Rule` + +## Accessors + + + +### createdUtc + +#### Get Signature + +> **get** **createdUtc**(): `number` + +The Unix timestamp of when the rule was created. + +##### Returns + +`number` + +*** + + + +### description + +#### Get Signature + +> **get** **description**(): `string` + +The full description of the rule. This appears on your subreddit's sidebar. + +##### Returns + +`string` + +*** + + + +### descriptionHtml + +#### Get Signature + +> **get** **descriptionHtml**(): `undefined` \| `string` + +##### Returns + +`undefined` \| `string` + +*** + + + +### kind + +#### Get Signature + +> **get** **kind**(): `"all"` \| `"link"` \| `"comment"` + +Which Reddit objects this rule applies to. One of "all", "link" (AKA posts), "comment". + +##### Returns + +`"all"` \| `"link"` \| `"comment"` + +*** + + + +### priority + +#### Get Signature + +> **get** **priority**(): `number` + +The zero-indexed rank of the rule on the subreddit sidebar. Lower numbers appear on top. + +##### Returns + +`number` + +*** + + + +### shortName + +#### Get Signature + +> **get** **shortName**(): `string` + +The name for the rule. + +##### Returns + +`string` + +*** + + + +### subredditName + +#### Get Signature + +> **get** **subredditName**(): `string` + +The name (without r/ prefix) of the subreddit the rule belongs to. + +##### Returns + +`string` + +*** + + + +### violationReason + +#### Get Signature + +> **get** **violationReason**(): `string` + +Text to show users when reporting content due to this rule. Defaults to the shortName. + +##### Returns + +`string` + +## Methods + + + +### delete() + +> **delete**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### toJSON() + +> **toJSON**(): `Pick`\<`Rule`, `"subredditName"` \| `"kind"` \| `"violationReason"` \| `"shortName"` \| `"description"` \| `"createdUtc"` \| `"priority"`\> & `object` + +#### Returns + +`Pick`\<`Rule`, `"subredditName"` \| `"kind"` \| `"violationReason"` \| `"shortName"` \| `"description"` \| `"createdUtc"` \| `"priority"`\> & `object` + +*** + + + +### update() + +> **update**(`options`): `Promise`\<`void`\> + +Update an existing rule. + +#### Parameters + +##### options + +`Readonly`\<[`UpdateRuleOptions`](../type-aliases/UpdateRuleOptions.md)\> + +New values for an existing rule. All fields are optional. If a field is not provided, the existing value will not be changed. + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### createRule() + +> `static` **createRule**(`subredditName`, `options`, `metadata`): `Promise`\<`void`\> + +#### Parameters + +##### subredditName + +`string` + +##### options + +`Readonly`\<[`CreateRuleOptions`](../type-aliases/CreateRuleOptions.md)\> + +##### metadata + +`undefined` | `Metadata` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### delete() + +> `static` **delete**(`subredditName`, `shortName`, `metadata`): `Promise`\<`void`\> + +#### Parameters + +##### subredditName + +`string` + +##### shortName + +`string` + +##### metadata + +`undefined` | `Metadata` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### getRules() + +> `static` **getRules**(`subredditName`, `metadata`): `Promise`\<`Rule`[]\> + +#### Parameters + +##### subredditName + +`string` + +##### metadata + +`undefined` | `Metadata` + +#### Returns + +`Promise`\<`Rule`[]\> + +*** + + + +### reorderRules() + +> `static` **reorderRules**(`subredditName`, `rules`, `metadata`): `Promise`\<`void`\> + +#### Parameters + +##### subredditName + +`string` + +##### rules + +`Rule`[] + +##### metadata + +`undefined` | `Metadata` + +#### Returns + +`Promise`\<`void`\> diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/Subreddit.md b/versioned_docs/version-0.13/api/redditapi/models/classes/Subreddit.md new file mode 100644 index 00000000..d18dbcf5 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/Subreddit.md @@ -0,0 +1,1475 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: Subreddit + +A class representing a subreddit. + +## Accessors + + + +### createdAt + +#### Get Signature + +> **get** **createdAt**(): `Date` + +The creation date of the subreddit. + +##### Returns + +`Date` + +*** + + + +### description + +#### Get Signature + +> **get** **description**(): `undefined` \| `string` + +The description of the subreddit. + +##### Returns + +`undefined` \| `string` + +*** + + + +### id + +#### Get Signature + +> **get** **id**(): `` `t5_${string}` `` + +The ID (starting with t5_) of the subreddit to retrieve. e.g. t5_2qjpg + +##### Returns + +`` `t5_${string}` `` + +*** + + + +### language + +#### Get Signature + +> **get** **language**(): `string` + +The language of the subreddit. + +##### Returns + +`string` + +*** + + + +### name + +#### Get Signature + +> **get** **name**(): `string` + +The name of a subreddit omitting the r/. + +##### Returns + +`string` + +*** + + + +### nsfw + +#### Get Signature + +> **get** **nsfw**(): `boolean` + +Whether the subreddit is marked as NSFW (Not Safe For Work). + +##### Returns + +`boolean` + +*** + + + +### numberOfActiveUsers + +#### Get Signature + +> **get** **numberOfActiveUsers**(): `number` + +The number of active users of the subreddit. + +##### Returns + +`number` + +*** + + + +### numberOfSubscribers + +#### Get Signature + +> **get** **numberOfSubscribers**(): `number` + +The number of subscribers of the subreddit. + +##### Returns + +`number` + +*** + + + +### permalink + +#### Get Signature + +> **get** **permalink**(): `string` + +Returns a permalink path +(R2 bug: subreddit.url is a permalink, and does not have a subreddit.permalink field) + +##### Returns + +`string` + +*** + + + +### postFlairsEnabled + +#### Get Signature + +> **get** **postFlairsEnabled**(): `boolean` + +Whether the post flairs are enabled for this subreddit. + +##### Returns + +`boolean` + +*** + + + +### settings + +#### Get Signature + +> **get** **settings**(): [`SubredditSettings`](../type-aliases/SubredditSettings.md) + +The settings of the subreddit. + +##### Returns + +[`SubredditSettings`](../type-aliases/SubredditSettings.md) + +*** + + + +### title + +#### Get Signature + +> **get** **title**(): `undefined` \| `string` + +The title of the subreddit. + +##### Returns + +`undefined` \| `string` + +*** + + + +### type + +#### Get Signature + +> **get** **type**(): [`SubredditType`](../type-aliases/SubredditType.md) + +The type of subreddit (public, private, etc.). + +##### Returns + +[`SubredditType`](../type-aliases/SubredditType.md) + +*** + + + +### url + +#### Get Signature + +> **get** **url**(): `string` + +Returns the HTTP URL for the subreddit. +(R2 bug: subreddit.url is a permalink path and does not return a fully qualified URL in subreddit.url) + +##### Returns + +`string` + +*** + + + +### userFlairsEnabled + +#### Get Signature + +> **get** **userFlairsEnabled**(): `boolean` + +Whether the user flairs are enabled for this subreddit. + +##### Returns + +`boolean` + +*** + + + +### usersCanAssignPostFlairs + +#### Get Signature + +> **get** **usersCanAssignPostFlairs**(): `boolean` + +Whether the user can assign post flairs. +This is only true if the post flairs are enabled. + +##### Returns + +`boolean` + +*** + + + +### usersCanAssignUserFlairs + +#### Get Signature + +> **get** **usersCanAssignUserFlairs**(): `boolean` + +Whether the user can assign user flairs. +This is only true if the user flairs are enabled. + +##### Returns + +`boolean` + +## Methods + + + +### addRemovalReason() + +> **addRemovalReason**(`options`): `Promise`\<`string`\> + +Add a removal reason to this subreddit. + +#### Parameters + +##### options + +###### message + +`string` + +The message associated with the removal reason. + +###### title + +`string` + +The title of the removal reason. + +#### Returns + +`Promise`\<`string`\> + +The new removal reason ID. + +*** + + + +### addWikiContributor() + +> **addWikiContributor**(`username`): `Promise`\<`void`\> + +#### Parameters + +##### username + +`string` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### approveUser() + +> **approveUser**(`username`): `Promise`\<`void`\> + +#### Parameters + +##### username + +`string` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### banUser() + +> **banUser**(`options`): `Promise`\<`void`\> + +#### Parameters + +##### options + +`Omit`\<[`BanUserOptions`](../type-aliases/BanUserOptions.md), `"subredditName"`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### banWikiContributor() + +> **banWikiContributor**(`options`): `Promise`\<`void`\> + +#### Parameters + +##### options + +`Omit`\<[`BanWikiContributorOptions`](../type-aliases/BanWikiContributorOptions.md), `"subredditName"`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### createPostFlairTemplate() + +> **createPostFlairTemplate**(`options`): `Promise`\<[`FlairTemplate`](FlairTemplate.md)\> + +#### Parameters + +##### options + +`Omit`\<[`CreateFlairTemplateOptions`](../type-aliases/CreateFlairTemplateOptions.md), `"subredditName"`\> + +#### Returns + +`Promise`\<[`FlairTemplate`](FlairTemplate.md)\> + +*** + + + +### createRule() + +> **createRule**(`options`): `Promise`\<`void`\> + +Create a new subreddit rule. + +#### Parameters + +##### options + +`Readonly`\<[`CreateRuleOptions`](../type-aliases/CreateRuleOptions.md)\> + +Options for creating a new subreddit rule. + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### createUserFlairTemplate() + +> **createUserFlairTemplate**(`options`): `Promise`\<[`FlairTemplate`](FlairTemplate.md)\> + +#### Parameters + +##### options + +`Omit`\<[`CreateFlairTemplateOptions`](../type-aliases/CreateFlairTemplateOptions.md), `"subredditName"`\> + +#### Returns + +`Promise`\<[`FlairTemplate`](FlairTemplate.md)\> + +*** + + + +### deleteRemovalReason() + +> **deleteRemovalReason**(`reasonId`): `Promise`\<`void`\> + +Delete a removal reason from this subreddit. + +#### Parameters + +##### reasonId + +`string` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### getApprovedUsers() + +> **getApprovedUsers**(`options`): [`Listing`](Listing.md)\<[`User`](User.md)\> + +#### Parameters + +##### options + +`GetUsersOptions` = `{}` + +#### Returns + +[`Listing`](Listing.md)\<[`User`](User.md)\> + +*** + + + +### getBannedUsers() + +> **getBannedUsers**(`options`): [`Listing`](Listing.md)\<[`User`](User.md)\> + +#### Parameters + +##### options + +`GetUsersOptions` = `{}` + +#### Returns + +[`Listing`](Listing.md)\<[`User`](User.md)\> + +*** + + + +### getBannedWikiContributors() + +> **getBannedWikiContributors**(`options`): [`Listing`](Listing.md)\<[`User`](User.md)\> + +#### Parameters + +##### options + +`GetUsersOptions` = `{}` + +#### Returns + +[`Listing`](Listing.md)\<[`User`](User.md)\> + +*** + + + +### getCommentsAndPostsByIds() + +> **getCommentsAndPostsByIds**(`ids`): [`Listing`](Listing.md)\<[`Post`](Post.md) \| [`Comment`](Comment.md)\> + +Return a listing of things specified by their fullnames. + +#### Parameters + +##### ids + +`string`[] + +Array of thing full ids (e.g. t3_abc123) + +#### Returns + +[`Listing`](Listing.md)\<[`Post`](Post.md) \| [`Comment`](Comment.md)\> + +#### Example + +```ts +const subreddit = await reddit.getSubredditByName('askReddit'); +const listing = subreddit.getCommentsAndPostsByIds(['t3_abc123', 't1_xyz123']); +const items = await listing.all(); +console.log(items) // [Post, Comment] +``` + +*** + + + +### getControversialPosts() + +> **getControversialPosts**(`options`): [`Listing`](Listing.md)\<[`Post`](Post.md)\> + +#### Parameters + +##### options + +`Omit`\<[`GetPostsOptionsWithTimeframe`](../type-aliases/GetPostsOptionsWithTimeframe.md), `"subredditName"`\> = `{}` + +#### Returns + +[`Listing`](Listing.md)\<[`Post`](Post.md)\> + +*** + + + +### getEdited() + +#### Call Signature + +> **getEdited**(`options`): [`Listing`](Listing.md)\<[`Comment`](Comment.md)\> + +Return a listing of things that have been edited recently. + +##### Parameters + +###### options + +`AboutSubredditOptions`\<`"comment"`\> + +##### Returns + +[`Listing`](Listing.md)\<[`Comment`](Comment.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getEdited(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getEdited({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +#### Call Signature + +> **getEdited**(`options`): [`Listing`](Listing.md)\<[`Post`](Post.md)\> + +Return a listing of things that have been edited recently. + +##### Parameters + +###### options + +`AboutSubredditOptions`\<`"post"`\> + +##### Returns + +[`Listing`](Listing.md)\<[`Post`](Post.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getEdited(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getEdited({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +#### Call Signature + +> **getEdited**(`options`?): [`Listing`](Listing.md)\<[`Post`](Post.md) \| [`Comment`](Comment.md)\> + +Return a listing of things that have been edited recently. + +##### Parameters + +###### options? + +`AboutSubredditOptions`\<`"all"`\> + +##### Returns + +[`Listing`](Listing.md)\<[`Post`](Post.md) \| [`Comment`](Comment.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getEdited(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getEdited({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +*** + + + +### getModerationLog() + +> **getModerationLog**(`options`): [`Listing`](Listing.md)\<[`ModAction`](../interfaces/ModAction.md)\> + +#### Parameters + +##### options + +`GetModerationLogOptions` + +#### Returns + +[`Listing`](Listing.md)\<[`ModAction`](../interfaces/ModAction.md)\> + +*** + + + +### getModerators() + +> **getModerators**(`options`): [`Listing`](Listing.md)\<[`User`](User.md)\> + +#### Parameters + +##### options + +`GetUsersOptions` = `{}` + +#### Returns + +[`Listing`](Listing.md)\<[`User`](User.md)\> + +*** + + + +### getModQueue() + +#### Call Signature + +> **getModQueue**(`options`): [`Listing`](Listing.md)\<[`Comment`](Comment.md)\> + +Return a listing of things requiring moderator review, such as reported things and items. + +##### Parameters + +###### options + +`AboutSubredditOptions`\<`"comment"`\> + +##### Returns + +[`Listing`](Listing.md)\<[`Comment`](Comment.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getModQueue(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getModQueue({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +#### Call Signature + +> **getModQueue**(`options`): [`Listing`](Listing.md)\<[`Post`](Post.md)\> + +Return a listing of things requiring moderator review, such as reported things and items. + +##### Parameters + +###### options + +`AboutSubredditOptions`\<`"post"`\> + +##### Returns + +[`Listing`](Listing.md)\<[`Post`](Post.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getModQueue(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getModQueue({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +#### Call Signature + +> **getModQueue**(`options`?): [`Listing`](Listing.md)\<[`Post`](Post.md) \| [`Comment`](Comment.md)\> + +Return a listing of things requiring moderator review, such as reported things and items. + +##### Parameters + +###### options? + +`AboutSubredditOptions`\<`"all"`\> + +##### Returns + +[`Listing`](Listing.md)\<[`Post`](Post.md) \| [`Comment`](Comment.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getModQueue(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getModQueue({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +*** + + + +### getMutedUsers() + +> **getMutedUsers**(`options`): [`Listing`](Listing.md)\<[`User`](User.md)\> + +#### Parameters + +##### options + +`GetUsersOptions` = `{}` + +#### Returns + +[`Listing`](Listing.md)\<[`User`](User.md)\> + +*** + + + +### getPostFlairTemplates() + +> **getPostFlairTemplates**(): `Promise`\<[`FlairTemplate`](FlairTemplate.md)[]\> + +#### Returns + +`Promise`\<[`FlairTemplate`](FlairTemplate.md)[]\> + +*** + + + +### getRemovalReasons() + +> **getRemovalReasons**(): `Promise`\<[`RemovalReason`](../type-aliases/RemovalReason.md)[]\> + +Get the list of this subreddit's removal reasons (ordered). + +#### Returns + +`Promise`\<[`RemovalReason`](../type-aliases/RemovalReason.md)[]\> + +*** + + + +### getReports() + +#### Call Signature + +> **getReports**(`options`): [`Listing`](Listing.md)\<[`Comment`](Comment.md)\> + +Return a listing of things that have been reported. + +##### Parameters + +###### options + +`AboutSubredditOptions`\<`"comment"`\> + +##### Returns + +[`Listing`](Listing.md)\<[`Comment`](Comment.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getReports(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getReports({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +#### Call Signature + +> **getReports**(`options`): [`Listing`](Listing.md)\<[`Post`](Post.md)\> + +Return a listing of things that have been reported. + +##### Parameters + +###### options + +`AboutSubredditOptions`\<`"post"`\> + +##### Returns + +[`Listing`](Listing.md)\<[`Post`](Post.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getReports(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getReports({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +#### Call Signature + +> **getReports**(`options`?): [`Listing`](Listing.md)\<[`Post`](Post.md) \| [`Comment`](Comment.md)\> + +Return a listing of things that have been reported. + +##### Parameters + +###### options? + +`AboutSubredditOptions`\<`"all"`\> + +##### Returns + +[`Listing`](Listing.md)\<[`Post`](Post.md) \| [`Comment`](Comment.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getReports(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getReports({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +*** + + + +### getRules() + +> **getRules**(): `Promise`\<[`Rule`](Rule.md)[]\> + +#### Returns + +`Promise`\<[`Rule`](Rule.md)[]\> + +*** + + + +### getSpam() + +#### Call Signature + +> **getSpam**(`options`): [`Listing`](Listing.md)\<[`Comment`](Comment.md)\> + +Return a listing of things that have been marked as spam or otherwise removed. + +##### Parameters + +###### options + +`AboutSubredditOptions`\<`"comment"`\> + +##### Returns + +[`Listing`](Listing.md)\<[`Comment`](Comment.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getSpam(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getSpam({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +#### Call Signature + +> **getSpam**(`options`): [`Listing`](Listing.md)\<[`Post`](Post.md)\> + +Return a listing of things that have been marked as spam or otherwise removed. + +##### Parameters + +###### options + +`AboutSubredditOptions`\<`"post"`\> + +##### Returns + +[`Listing`](Listing.md)\<[`Post`](Post.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getSpam(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getSpam({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +#### Call Signature + +> **getSpam**(`options`?): [`Listing`](Listing.md)\<[`Post`](Post.md) \| [`Comment`](Comment.md)\> + +Return a listing of things that have been marked as spam or otherwise removed. + +##### Parameters + +###### options? + +`AboutSubredditOptions`\<`"all"`\> + +##### Returns + +[`Listing`](Listing.md)\<[`Post`](Post.md) \| [`Comment`](Comment.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getSpam(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getSpam({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +*** + + + +### getTopPosts() + +> **getTopPosts**(`options`): [`Listing`](Listing.md)\<[`Post`](Post.md)\> + +#### Parameters + +##### options + +`Omit`\<[`GetPostsOptionsWithTimeframe`](../type-aliases/GetPostsOptionsWithTimeframe.md), `"subredditName"`\> = `{}` + +#### Returns + +[`Listing`](Listing.md)\<[`Post`](Post.md)\> + +*** + + + +### getUnmoderated() + +#### Call Signature + +> **getUnmoderated**(`options`): [`Listing`](Listing.md)\<[`Comment`](Comment.md)\> + +Return a listing of things that have yet to be approved/removed by a mod. + +##### Parameters + +###### options + +`AboutSubredditOptions`\<`"comment"`\> + +##### Returns + +[`Listing`](Listing.md)\<[`Comment`](Comment.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getUnmoderated(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getUnmoderated({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +#### Call Signature + +> **getUnmoderated**(`options`): [`Listing`](Listing.md)\<[`Post`](Post.md)\> + +Return a listing of things that have yet to be approved/removed by a mod. + +##### Parameters + +###### options + +`AboutSubredditOptions`\<`"post"`\> + +##### Returns + +[`Listing`](Listing.md)\<[`Post`](Post.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getUnmoderated(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getUnmoderated({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +#### Call Signature + +> **getUnmoderated**(`options`?): [`Listing`](Listing.md)\<[`Post`](Post.md) \| [`Comment`](Comment.md)\> + +Return a listing of things that have yet to be approved/removed by a mod. + +##### Parameters + +###### options? + +`AboutSubredditOptions`\<`"all"`\> + +##### Returns + +[`Listing`](Listing.md)\<[`Post`](Post.md) \| [`Comment`](Comment.md)\> + +##### Example + +```ts +const subreddit = await reddit.getSubredditByName("mysubreddit") +let listing = await subreddit.getUnmoderated(); +console.log("Posts and Comments: ", await listing.all()) +listing = await subreddit.getUnmoderated({ type: "post"}); +console.log("Posts: ", await listing.all()) +``` + +*** + + + +### getUserFlair() + +> **getUserFlair**(`options`?): `Promise`\<[`GetUserFlairBySubredditResponse`](../type-aliases/GetUserFlairBySubredditResponse.md)\> + +Get the user flair for the given subreddit. If `usernames` is provided then it will return only the +flair for the specified users. If retrieving the list of flair for a given subreddit and the list is long +then this method will return a `next` field which can be passed into the `after` field on the next call to +retrieve the next slice of data. To retrieve the previous slice of data pass the `prev` field into the `before` field +during the subsequent call. + +#### Parameters + +##### options? + +[`GetUserFlairOptions`](../type-aliases/GetUserFlairOptions.md) + +See interface + +#### Returns + +`Promise`\<[`GetUserFlairBySubredditResponse`](../type-aliases/GetUserFlairBySubredditResponse.md)\> + +#### Examples + +```ts +const subredditName = "mysubreddit" +const subreddit = await reddit.getSubredditByName(subredditName) +const response = await subreddit.getUserFlair(); +const userFlairList = response.users +``` + +```ts +const response = await subreddit.getUserFlair({ after: "t2_awefae"}); +const userFlairList = response.users +``` + +```ts +const response = await subreddit.getUserFlair({ usernames: ['toxictoad', 'badapple']}); +const userFlairList = response.users +``` + +*** + + + +### getUserFlairTemplates() + +> **getUserFlairTemplates**(): `Promise`\<[`FlairTemplate`](FlairTemplate.md)[]\> + +#### Returns + +`Promise`\<[`FlairTemplate`](FlairTemplate.md)[]\> + +*** + + + +### getWikiContributors() + +> **getWikiContributors**(`options`): [`Listing`](Listing.md)\<[`User`](User.md)\> + +#### Parameters + +##### options + +`GetUsersOptions` = `{}` + +#### Returns + +[`Listing`](Listing.md)\<[`User`](User.md)\> + +*** + + + +### inviteModerator() + +> **inviteModerator**(`username`, `permissions`?): `Promise`\<`void`\> + +#### Parameters + +##### username + +`string` + +##### permissions? + +[`ModeratorPermission`](../type-aliases/ModeratorPermission.md)[] + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### muteUser() + +> **muteUser**(`username`, `note`?): `Promise`\<`void`\> + +#### Parameters + +##### username + +`string` + +##### note? + +`string` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### removeModerator() + +> **removeModerator**(`username`): `Promise`\<`void`\> + +#### Parameters + +##### username + +`string` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### removeUser() + +> **removeUser**(`username`): `Promise`\<`void`\> + +#### Parameters + +##### username + +`string` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### removeWikiContributor() + +> **removeWikiContributor**(`username`): `Promise`\<`void`\> + +#### Parameters + +##### username + +`string` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### reorderRules() + +> **reorderRules**(`rules`): `Promise`\<`void`\> + +#### Parameters + +##### rules + +[`Rule`](Rule.md)[] + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### revokeModeratorInvite() + +> **revokeModeratorInvite**(`username`): `Promise`\<`void`\> + +#### Parameters + +##### username + +`string` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### setModeratorPermissions() + +> **setModeratorPermissions**(`username`, `permissions`): `Promise`\<`void`\> + +#### Parameters + +##### username + +`string` + +##### permissions + +[`ModeratorPermission`](../type-aliases/ModeratorPermission.md)[] + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### submitPost() + +> **submitPost**(`options`): `Promise`\<[`Post`](Post.md)\> + +#### Parameters + +##### options + +[`SubmitLinkOptions`](../type-aliases/SubmitLinkOptions.md) | [`SubmitSelfPostOptions`](../type-aliases/SubmitSelfPostOptions.md) + +#### Returns + +`Promise`\<[`Post`](Post.md)\> + +*** + + + +### toJSON() + +> **toJSON**(): `Pick`\<`Subreddit`, `"type"` \| `"description"` \| `"id"` \| `"name"` \| `"title"` \| `"settings"` \| `"createdAt"` \| `"language"` \| `"numberOfSubscribers"` \| `"numberOfActiveUsers"` \| `"nsfw"`\> + +#### Returns + +`Pick`\<`Subreddit`, `"type"` \| `"description"` \| `"id"` \| `"name"` \| `"title"` \| `"settings"` \| `"createdAt"` \| `"language"` \| `"numberOfSubscribers"` \| `"numberOfActiveUsers"` \| `"nsfw"`\> + +*** + + + +### unbanUser() + +> **unbanUser**(`username`): `Promise`\<`void`\> + +#### Parameters + +##### username + +`string` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### unbanWikiContributor() + +> **unbanWikiContributor**(`username`): `Promise`\<`void`\> + +#### Parameters + +##### username + +`string` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### unmuteUser() + +> **unmuteUser**(`username`): `Promise`\<`void`\> + +#### Parameters + +##### username + +`string` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### updateRemovalReason() + +> **updateRemovalReason**(`reasonId`, `options`): `Promise`\<`void`\> + +Update a removal reason's title and message in this subreddit. + +#### Parameters + +##### reasonId + +`string` + +##### options + +###### message + +`string` + +###### title + +`string` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### updateSettings() + +> **updateSettings**(`options`): `Promise`\<`void`\> + +Updates subreddit settings via the SiteAdmin API. Current settings are used as the base; +only provided options are applied. In order to reset a field to its default value, +pass the default value as the option value. + +#### Parameters + +##### options + +[`SubredditSettingsOptions`](../type-aliases/SubredditSettingsOptions.md) + +Optional settings to apply. Omitted fields are left unchanged. + +#### Returns + +`Promise`\<`void`\> + +#### Example + +```ts +const subreddit = await reddit.getSubredditByName('mysubreddit'); +await subreddit.updateSettings({ restrictPosting: true, allowImages: false }); +await subreddit.updateSettings({ type: 'restricted', title: 'New Title', description: 'Sidebar text' }); +``` diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/SubredditDescription.md b/versioned_docs/version-0.13/api/redditapi/models/classes/SubredditDescription.md new file mode 100644 index 00000000..6112eda1 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/SubredditDescription.md @@ -0,0 +1,25 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: SubredditDescription + +## Constructors + + + +### new SubredditDescription() + +> **new SubredditDescription**(): `SubredditDescription` + +#### Returns + +`SubredditDescription` + +## Properties + + + +### markdown? + +> `optional` **markdown**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/SubredditRulesWidget.md b/versioned_docs/version-0.13/api/redditapi/models/classes/SubredditRulesWidget.md new file mode 100644 index 00000000..a63ca60a --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/SubredditRulesWidget.md @@ -0,0 +1,143 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: SubredditRulesWidget + +## Extends + +- [`Widget`](Widget.md) + +## Constructors + + + +### new SubredditRulesWidget() + +> **new SubredditRulesWidget**(`subredditAboutRulesRsp`, `widgetData`, `subredditName`, `metadata`): `SubredditRulesWidget` + +#### Parameters + +##### subredditAboutRulesRsp + +`SubredditAboutRulesResponse` + +##### widgetData + +`GetWidgetsResponse_WidgetItem` + +##### subredditName + +`string` + +##### metadata + +`undefined` | `Metadata` + +#### Returns + +`SubredditRulesWidget` + +#### Overrides + +[`Widget`](Widget.md).[`constructor`](Widget.md#constructor) + +## Accessors + + + +### id + +#### Get Signature + +> **get** **id**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`id`](Widget.md#id) + +*** + + + +### name + +#### Get Signature + +> **get** **name**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`name`](Widget.md#name) + +*** + + + +### rules + +#### Get Signature + +> **get** **rules**(): `SubredditRule`[] + +##### Returns + +`SubredditRule`[] + +*** + + + +### subredditName + +#### Get Signature + +> **get** **subredditName**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`subredditName`](Widget.md#subredditname) + +## Methods + + + +### delete() + +> **delete**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +#### Inherited from + +[`Widget`](Widget.md).[`delete`](Widget.md#delete) + +*** + + + +### toJSON() + +> **toJSON**(): `Pick`\<[`Widget`](Widget.md), `"subredditName"` \| `"id"` \| `"name"`\> & `Pick`\<`SubredditRulesWidget`, `"rules"`\> + +#### Returns + +`Pick`\<[`Widget`](Widget.md), `"subredditName"` \| `"id"` \| `"name"`\> & `Pick`\<`SubredditRulesWidget`, `"rules"`\> + +#### Overrides + +[`Widget`](Widget.md).[`toJSON`](Widget.md#tojson) diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/SubredditWikiSettings.md b/versioned_docs/version-0.13/api/redditapi/models/classes/SubredditWikiSettings.md new file mode 100644 index 00000000..9ca8d93d --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/SubredditWikiSettings.md @@ -0,0 +1,25 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: SubredditWikiSettings + +## Constructors + + + +### new SubredditWikiSettings() + +> **new SubredditWikiSettings**(): `SubredditWikiSettings` + +#### Returns + +`SubredditWikiSettings` + +## Properties + + + +### wikiEditMode? + +> `optional` **wikiEditMode**: [`WikiEditMode`](../type-aliases/WikiEditMode.md) diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/TextAreaWidget.md b/versioned_docs/version-0.13/api/redditapi/models/classes/TextAreaWidget.md new file mode 100644 index 00000000..7e16bc00 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/TextAreaWidget.md @@ -0,0 +1,153 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: TextAreaWidget + +## Extends + +- [`Widget`](Widget.md) + +## Constructors + + + +### new TextAreaWidget() + +> **new TextAreaWidget**(`widgetData`, `subredditName`, `metadata`): `TextAreaWidget` + +#### Parameters + +##### widgetData + +`GetWidgetsResponse_WidgetItem` + +##### subredditName + +`string` + +##### metadata + +`undefined` | `Metadata` + +#### Returns + +`TextAreaWidget` + +#### Overrides + +[`Widget`](Widget.md).[`constructor`](Widget.md#constructor) + +## Accessors + + + +### id + +#### Get Signature + +> **get** **id**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`id`](Widget.md#id) + +*** + + + +### name + +#### Get Signature + +> **get** **name**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`name`](Widget.md#name) + +*** + + + +### styles + +#### Get Signature + +> **get** **styles**(): `WidgetStyles` + +##### Returns + +`WidgetStyles` + +*** + + + +### subredditName + +#### Get Signature + +> **get** **subredditName**(): `string` + +##### Returns + +`string` + +#### Inherited from + +[`Widget`](Widget.md).[`subredditName`](Widget.md#subredditname) + +*** + + + +### text + +#### Get Signature + +> **get** **text**(): `string` + +##### Returns + +`string` + +## Methods + + + +### delete() + +> **delete**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +#### Inherited from + +[`Widget`](Widget.md).[`delete`](Widget.md#delete) + +*** + + + +### toJSON() + +> **toJSON**(): `Pick`\<[`Widget`](Widget.md), `"subredditName"` \| `"id"` \| `"name"`\> & `Pick`\<`TextAreaWidget`, `"text"` \| `"styles"`\> + +#### Returns + +`Pick`\<[`Widget`](Widget.md), `"subredditName"` \| `"id"` \| `"name"`\> & `Pick`\<`TextAreaWidget`, `"text"` \| `"styles"`\> + +#### Overrides + +[`Widget`](Widget.md).[`toJSON`](Widget.md#tojson) diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/User.md b/versioned_docs/version-0.13/api/redditapi/models/classes/User.md new file mode 100644 index 00000000..28da8ed5 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/User.md @@ -0,0 +1,458 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: User + +A class representing a user. + +## Accessors + + + +### about + +#### Get Signature + +> **get** **about**(): `string` + +The user's public description about themselves. May be empty. + +##### Returns + +`string` + +*** + + + +### commentKarma + +#### Get Signature + +> **get** **commentKarma**(): `number` + +The amount of comment karma the user has. + +##### Returns + +`number` + +*** + + + +### createdAt + +#### Get Signature + +> **get** **createdAt**(): `Date` + +The date the user was created. + +##### Returns + +`Date` + +*** + + + +### displayName + +#### Get Signature + +> **get** **displayName**(): `string` + +The display name of the user. May be different from their username. + +##### Returns + +`string` + +*** + + + +### hasRedditPremium + +#### Get Signature + +> **get** **hasRedditPremium**(): `boolean` + +Whether the user has Reddit Premium. + +##### Returns + +`boolean` + +*** + + + +### hasVerifiedEmail + +#### Get Signature + +> **get** **hasVerifiedEmail**(): `boolean` + +Indicates whether or not the user has verified their email address. + +##### Returns + +`boolean` + +*** + + + +### id + +#### Get Signature + +> **get** **id**(): `` `t2_${string}` `` + +The ID (starting with t2_) of the user to retrieve. + +##### Example + +```ts +'t2_1w72' +``` + +##### Returns + +`` `t2_${string}` `` + +*** + + + +### isAdmin + +#### Get Signature + +> **get** **isAdmin**(): `boolean` + +Whether the user is admin. + +##### Returns + +`boolean` + +*** + + + +### isModerator + +#### Get Signature + +> **get** **isModerator**(): `boolean` + +Whether the user is a moderator of any subreddit. + +##### Returns + +`boolean` + +*** + + + +### linkKarma + +#### Get Signature + +> **get** **linkKarma**(): `number` + +The amount of link karma the user has. + +##### Returns + +`number` + +*** + + + +### modPermissions + +#### Get Signature + +> **get** **modPermissions**(): `Map`\<`string`, [`ModeratorPermission`](../type-aliases/ModeratorPermission.md)[]\> + +The permissions the user has on the subreddit. + +##### Returns + +`Map`\<`string`, [`ModeratorPermission`](../type-aliases/ModeratorPermission.md)[]\> + +*** + + + +### nsfw + +#### Get Signature + +> **get** **nsfw**(): `boolean` + +Whether the user's profile is marked as NSFW (Not Safe For Work). + +##### Returns + +`boolean` + +*** + + + +### permalink + +#### Get Signature + +> **get** **permalink**(): `string` + +Returns a permalink path relative to https://www.reddit.com + +##### Returns + +`string` + +*** + + + +### showNsfw + +#### Get Signature + +> **get** **showNsfw**(): `boolean` + +Whether the user is over 18 and wishes to see NSFW content. + +##### Returns + +`boolean` + +*** + + + +### url + +#### Get Signature + +> **get** **url**(): `string` + +Returns the HTTP URL for the user + +##### Returns + +`string` + +*** + + + +### username + +#### Get Signature + +> **get** **username**(): `string` + +The username of the user omitting the u/. + +##### Example + +```ts +'spez' +``` + +##### Returns + +`string` + +## Methods + + + +### getComments() + +> **getComments**(`options`): [`Listing`](Listing.md)\<[`Comment`](Comment.md)\> + +Get the user's comments. + +#### Parameters + +##### options + +`Omit`\<[`GetCommentsByUserOptions`](../type-aliases/GetCommentsByUserOptions.md), `"username"`\> + +Options for the request + +#### Returns + +[`Listing`](Listing.md)\<[`Comment`](Comment.md)\> + +A Listing of Comment objects. + +*** + + + +### getModPermissionsForSubreddit() + +> **getModPermissionsForSubreddit**(`subredditName`): `Promise`\<[`ModeratorPermission`](../type-aliases/ModeratorPermission.md)[]\> + +Get the mod permissions the user has on the subreddit if they are a moderator. + +#### Parameters + +##### subredditName + +`string` + +name of the subreddit + +#### Returns + +`Promise`\<[`ModeratorPermission`](../type-aliases/ModeratorPermission.md)[]\> + +the moderator permissions the user has on the subreddit + +*** + + + +### getPosts() + +> **getPosts**(`options`): [`Listing`](Listing.md)\<[`Post`](Post.md)\> + +Get the user's posts. + +#### Parameters + +##### options + +`Omit`\<[`GetPostsByUserOptions`](../type-aliases/GetPostsByUserOptions.md), `"username"`\> + +Options for the request + +#### Returns + +[`Listing`](Listing.md)\<[`Post`](Post.md)\> + +A Listing of Post objects. + +*** + + + +### getSnoovatarUrl() + +> **getSnoovatarUrl**(): `Promise`\<`undefined` \| `string`\> + +#### Returns + +`Promise`\<`undefined` \| `string`\> + +*** + + + +### getSocialLinks() + +> **getSocialLinks**(): `Promise`\<[`UserSocialLink`](../type-aliases/UserSocialLink.md)[]\> + +Gets social links of the user + +#### Returns + +`Promise`\<[`UserSocialLink`](../type-aliases/UserSocialLink.md)[]\> + +A Promise that resolves an Array of UserSocialLink objects + +#### Example + +```ts +const socialLinks = await user.getSocialLinks(); +``` + +*** + + + +### getTrophies() + +> **getTrophies**(): `Promise`\<[`Trophy`](../type-aliases/Trophy.md)[]\> + +Get the trophies displayed on this user's profile. + +#### Returns + +`Promise`\<[`Trophy`](../type-aliases/Trophy.md)[]\> + +A Promise that resolves to an array of Trophy objects. + +*** + + + +### getUserFlairBySubreddit() + +> **getUserFlairBySubreddit**(`subreddit`): `Promise`\<`undefined` \| [`UserFlair`](../type-aliases/UserFlair.md)\> + +Retrieve the user's flair for the subreddit. + +#### Parameters + +##### subreddit + +`string` + +The name of the subreddit associated with the user's flair. + +#### Returns + +`Promise`\<`undefined` \| [`UserFlair`](../type-aliases/UserFlair.md)\> + +#### Example + +```ts +const username = "badapple" +const subredditName = "mysubreddit" +const user = await reddit.getUserByUsername(username); +const userFlair = await user.getUserFlairBySubreddit(subredditName); +``` + +*** + + + +### getUserKarmaFromCurrentSubreddit() + +> **getUserKarmaFromCurrentSubreddit**(): `Promise`\<`GetUserKarmaForSubredditResponse`\> + +Returns the karma for this User in the current subreddit. +The user making the request must be a moderator of the subreddit to read another user's karma in the subreddit. +An exception is if the specified user is the same as the user making the request. + +#### Returns + +`Promise`\<`GetUserKarmaForSubredditResponse`\> + +The GetUserKarmaForSubredditResponse, containing the user's karma for comments and posts in the subreddit. + +*** + + + +### toJSON() + +> **toJSON**(): `Pick`\<`User`, `"username"` \| `"id"` \| `"createdAt"` \| `"nsfw"` \| `"linkKarma"` \| `"commentKarma"`\> & `object` + +#### Returns + +`Pick`\<`User`, `"username"` \| `"id"` \| `"createdAt"` \| `"nsfw"` \| `"linkKarma"` \| `"commentKarma"`\> & `object` diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/Widget.md b/versioned_docs/version-0.13/api/redditapi/models/classes/Widget.md new file mode 100644 index 00000000..ca9bf848 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/Widget.md @@ -0,0 +1,108 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: Widget + +## Extended by + +- [`ImageWidget`](ImageWidget.md) +- [`CalendarWidget`](CalendarWidget.md) +- [`TextAreaWidget`](TextAreaWidget.md) +- [`ButtonWidget`](ButtonWidget.md) +- [`CommunityListWidget`](CommunityListWidget.md) +- [`PostFlairWidget`](PostFlairWidget.md) +- [`CustomWidget`](CustomWidget.md) +- [`SubredditRulesWidget`](SubredditRulesWidget.md) + +## Constructors + + + +### new Widget() + +> **new Widget**(`widgetData`, `subredditName`, `metadata`): `Widget` + +#### Parameters + +##### widgetData + +`GetWidgetsResponse_WidgetItem` + +##### subredditName + +`string` + +##### metadata + +`undefined` | `Metadata` + +#### Returns + +`Widget` + +## Accessors + + + +### id + +#### Get Signature + +> **get** **id**(): `string` + +##### Returns + +`string` + +*** + + + +### name + +#### Get Signature + +> **get** **name**(): `string` + +##### Returns + +`string` + +*** + + + +### subredditName + +#### Get Signature + +> **get** **subredditName**(): `string` + +##### Returns + +`string` + +## Methods + + + +### delete() + +> **delete**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### toJSON() + +> **toJSON**(): `Pick`\<`Widget`, `"subredditName"` \| `"id"` \| `"name"`\> + +#### Returns + +`Pick`\<`Widget`, `"subredditName"` \| `"id"` \| `"name"`\> diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/WikiPage.md b/versioned_docs/version-0.13/api/redditapi/models/classes/WikiPage.md new file mode 100644 index 00000000..b067d0d4 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/WikiPage.md @@ -0,0 +1,283 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: WikiPage + +## Accessors + + + +### content + +#### Get Signature + +> **get** **content**(): `string` + +The Markdown content of the page. + +##### Returns + +`string` + +*** + + + +### contentHtml + +#### Get Signature + +> **get** **contentHtml**(): `string` + +The HTML content of the page. + +##### Returns + +`string` + +*** + + + +### name + +#### Get Signature + +> **get** **name**(): `string` + +The name of the page. + +##### Returns + +`string` + +*** + + + +### revisionAuthor + +#### Get Signature + +> **get** **revisionAuthor**(): `undefined` \| [`User`](User.md) + +The author of this revision. + +##### Returns + +`undefined` \| [`User`](User.md) + +*** + + + +### revisionDate + +#### Get Signature + +> **get** **revisionDate**(): `Date` + +The date of the revision. + +##### Returns + +`Date` + +*** + + + +### revisionId + +#### Get Signature + +> **get** **revisionId**(): `` `${string}-${string}-${string}-${string}-${string}` `` + +The ID of the revision. + +##### Returns + +`` `${string}-${string}-${string}-${string}-${string}` `` + +*** + + + +### revisionReason + +#### Get Signature + +> **get** **revisionReason**(): `string` + +The reason for the revision. + +##### Returns + +`string` + +*** + + + +### subredditName + +#### Get Signature + +> **get** **subredditName**(): `string` + +The name of the subreddit the page is in. + +##### Returns + +`string` + +## Methods + + + +### addEditor() + +> **addEditor**(`username`): `Promise`\<`void`\> + +Add an editor to this page. + +#### Parameters + +##### username + +`string` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### getRevisions() + +> **getRevisions**(`options`): `Promise`\<[`Listing`](Listing.md)\<[`WikiPageRevision`](WikiPageRevision.md)\>\> + +Get the revisions for this page. + +#### Parameters + +##### options + +`Omit`\<[`GetPageRevisionsOptions`](../type-aliases/GetPageRevisionsOptions.md), `"subredditName"` \| `"page"`\> + +#### Returns + +`Promise`\<[`Listing`](Listing.md)\<[`WikiPageRevision`](WikiPageRevision.md)\>\> + +*** + + + +### getSettings() + +> **getSettings**(): `Promise`\<[`WikiPageSettings`](WikiPageSettings.md)\> + +Get the settings for this page. + +#### Returns + +`Promise`\<[`WikiPageSettings`](WikiPageSettings.md)\> + +*** + + + +### removeEditor() + +> **removeEditor**(`username`): `Promise`\<`void`\> + +Remove an editor from this page. + +#### Parameters + +##### username + +`string` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### revertTo() + +> **revertTo**(`revisionId`): `Promise`\<`void`\> + +Revert this page to a previous revision. + +#### Parameters + +##### revisionId + +`` `${string}-${string}-${string}-${string}-${string}` `` + +#### Returns + +`Promise`\<`void`\> + +*** + + + +### toJSON() + +> **toJSON**(): `Pick`\<`WikiPage`, `"subredditName"` \| `"name"` \| `"content"` \| `"contentHtml"` \| `"revisionId"` \| `"revisionDate"` \| `"revisionReason"`\> & `object` + +#### Returns + +`Pick`\<`WikiPage`, `"subredditName"` \| `"name"` \| `"content"` \| `"contentHtml"` \| `"revisionId"` \| `"revisionDate"` \| `"revisionReason"`\> & `object` + +*** + + + +### update() + +> **update**(`content`, `reason`?): `Promise`\<`WikiPage`\> + +Update this page. + +#### Parameters + +##### content + +`string` + +##### reason? + +`string` + +#### Returns + +`Promise`\<`WikiPage`\> + +*** + + + +### updateSettings() + +> **updateSettings**(`options`): `Promise`\<[`WikiPageSettings`](WikiPageSettings.md)\> + +Update the settings for this page. + +#### Parameters + +##### options + +`Omit`\<[`UpdatePageSettingsOptions`](../type-aliases/UpdatePageSettingsOptions.md), `"subredditName"` \| `"page"`\> + +#### Returns + +`Promise`\<[`WikiPageSettings`](WikiPageSettings.md)\> diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/WikiPageRevision.md b/versioned_docs/version-0.13/api/redditapi/models/classes/WikiPageRevision.md new file mode 100644 index 00000000..fa6610b2 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/WikiPageRevision.md @@ -0,0 +1,123 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: WikiPageRevision + +## Constructors + + + +### new WikiPageRevision() + +> **new WikiPageRevision**(`data`, `metadata`): `WikiPageRevision` + +#### Parameters + +##### data + +`WikiPageRevision` + +##### metadata + +`undefined` | `Metadata` + +#### Returns + +`WikiPageRevision` + +## Accessors + + + +### author + +#### Get Signature + +> **get** **author**(): [`User`](User.md) + +##### Returns + +[`User`](User.md) + +*** + + + +### date + +#### Get Signature + +> **get** **date**(): `Date` + +##### Returns + +`Date` + +*** + + + +### hidden + +#### Get Signature + +> **get** **hidden**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### id + +#### Get Signature + +> **get** **id**(): `` `${string}-${string}-${string}-${string}-${string}` `` + +##### Returns + +`` `${string}-${string}-${string}-${string}-${string}` `` + +*** + + + +### page + +#### Get Signature + +> **get** **page**(): `string` + +##### Returns + +`string` + +*** + + + +### reason + +#### Get Signature + +> **get** **reason**(): `string` + +##### Returns + +`string` + +## Methods + + + +### toJSON() + +> **toJSON**(): `Pick`\<`WikiPageRevision`, `"id"` \| `"hidden"` \| `"reason"` \| `"page"` \| `"date"`\> & `object` + +#### Returns + +`Pick`\<`WikiPageRevision`, `"id"` \| `"hidden"` \| `"reason"` \| `"page"` \| `"date"`\> & `object` diff --git a/versioned_docs/version-0.13/api/redditapi/models/classes/WikiPageSettings.md b/versioned_docs/version-0.13/api/redditapi/models/classes/WikiPageSettings.md new file mode 100644 index 00000000..01912b27 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/classes/WikiPageSettings.md @@ -0,0 +1,81 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Class: WikiPageSettings + +## Constructors + + + +### new WikiPageSettings() + +> **new WikiPageSettings**(`data`, `metadata`): `WikiPageSettings` + +#### Parameters + +##### data + +`WikiPageSettings_Data` + +##### metadata + +`undefined` | `Metadata` + +#### Returns + +`WikiPageSettings` + +## Accessors + + + +### editors + +#### Get Signature + +> **get** **editors**(): [`User`](User.md)[] + +##### Returns + +[`User`](User.md)[] + +*** + + + +### listed + +#### Get Signature + +> **get** **listed**(): `boolean` + +##### Returns + +`boolean` + +*** + + + +### permLevel + +#### Get Signature + +> **get** **permLevel**(): [`WikiPagePermissionLevel`](../enumerations/WikiPagePermissionLevel.md) + +##### Returns + +[`WikiPagePermissionLevel`](../enumerations/WikiPagePermissionLevel.md) + +## Methods + + + +### toJSON() + +> **toJSON**(): `Pick`\<`WikiPageSettings`, `"listed"` \| `"permLevel"`\> & `object` + +#### Returns + +`Pick`\<`WikiPageSettings`, `"listed"` \| `"permLevel"`\> & `object` diff --git a/versioned_docs/version-0.13/api/redditapi/models/enumerations/AboutLocations.md b/versioned_docs/version-0.13/api/redditapi/models/enumerations/AboutLocations.md new file mode 100644 index 00000000..9e1507af --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/enumerations/AboutLocations.md @@ -0,0 +1,45 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Enumeration: AboutLocations + +## Enumeration Members + + + +### Edited + +> **Edited**: `"edited"` + +*** + + + +### Modqueue + +> **Modqueue**: `"modqueue"` + +*** + + + +### Reports + +> **Reports**: `"reports"` + +*** + + + +### Spam + +> **Spam**: `"spam"` + +*** + + + +### Unmoderated + +> **Unmoderated**: `"unmoderated"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/enumerations/FlairType.md b/versioned_docs/version-0.13/api/redditapi/models/enumerations/FlairType.md new file mode 100644 index 00000000..59083863 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/enumerations/FlairType.md @@ -0,0 +1,21 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Enumeration: FlairType + +## Enumeration Members + + + +### Post + +> **Post**: `"LINK_FLAIR"` + +*** + + + +### User + +> **User**: `"USER_FLAIR"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/enumerations/ModMailActionType.md b/versioned_docs/version-0.13/api/redditapi/models/enumerations/ModMailActionType.md new file mode 100644 index 00000000..8a90c482 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/enumerations/ModMailActionType.md @@ -0,0 +1,113 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Enumeration: ModMailActionType + +An ActionType describes a particular logged action within a conversation. For example, +if a mod highlights a conversation, a ModerationAction record with the type `Highlighted` +would be created. + +## Enumeration Members + + + +### Approved + +> **Approved**: `"Approved"` + +*** + + + +### Archived + +> **Archived**: `"Archived"` + +*** + + + +### Banned + +> **Banned**: `"Banned"` + +*** + + + +### Disapproved + +> **Disapproved**: `"Disapproved"` + +*** + + + +### Filtered + +> **Filtered**: `"Filtered"` + +*** + + + +### Highlighted + +> **Highlighted**: `"Highlighted"` + +*** + + + +### Muted + +> **Muted**: `"Muted"` + +*** + + + +### ReportedToAdmins + +> **ReportedToAdmins**: `"ReportedToAdmins"` + +*** + + + +### Unarchived + +> **Unarchived**: `"Unarchived"` + +*** + + + +### Unbanned + +> **Unbanned**: `"Unbanned"` + +*** + + + +### Unfiltered + +> **Unfiltered**: `"Unfiltered"` + +*** + + + +### Unhighlighted + +> **Unhighlighted**: `"Unhighlighted"` + +*** + + + +### Unmuted + +> **Unmuted**: `"Unmuted"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/enumerations/ModMailConversationState.md b/versioned_docs/version-0.13/api/redditapi/models/enumerations/ModMailConversationState.md new file mode 100644 index 00000000..6994ca7b --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/enumerations/ModMailConversationState.md @@ -0,0 +1,53 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Enumeration: ModMailConversationState + +## Enumeration Members + + + +### Appeals + +> **Appeals**: `"Appeals"` + +*** + + + +### Archived + +> **Archived**: `"Archived"` + +*** + + + +### Filtered + +> **Filtered**: `"Filtered"` + +*** + + + +### InProgress + +> **InProgress**: `"InProgress"` + +*** + + + +### JoinRequests + +> **JoinRequests**: `"JoinRequests"` + +*** + + + +### New + +> **New**: `"New"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/enumerations/SocialLinkType.md b/versioned_docs/version-0.13/api/redditapi/models/enumerations/SocialLinkType.md new file mode 100644 index 00000000..9852415a --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/enumerations/SocialLinkType.md @@ -0,0 +1,213 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Enumeration: SocialLinkType + +## Enumeration Members + + + +### Beacons + +> **Beacons**: `"BEACONS"` + +*** + + + +### BuyMeACoffee + +> **BuyMeACoffee**: `"BUY_ME_A_COFFEE"` + +*** + + + +### Cameo + +> **Cameo**: `"CAMEO"` + +*** + + + +### CashApp + +> **CashApp**: `"CASH_APP"` + +*** + + + +### Custom + +> **Custom**: `"CUSTOM"` + +*** + + + +### Discord + +> **Discord**: `"DISCORD"` + +*** + + + +### Facebook + +> **Facebook**: `"FACEBOOK"` + +*** + + + +### Indiegogo + +> **Indiegogo**: `"INDIEGOGO"` + +*** + + + +### Instagram + +> **Instagram**: `"INSTAGRAM"` + +*** + + + +### Kickstarter + +> **Kickstarter**: `"KICKSTARTER"` + +*** + + + +### Kofi + +> **Kofi**: `"KOFI"` + +*** + + + +### Linktree + +> **Linktree**: `"LINKTREE"` + +*** + + + +### Onlyfans + +> **Onlyfans**: `"ONLYFANS"` + +*** + + + +### Patreon + +> **Patreon**: `"PATREON"` + +*** + + + +### Paypal + +> **Paypal**: `"PAYPAL"` + +*** + + + +### Reddit + +> **Reddit**: `"REDDIT"` + +*** + + + +### Shopify + +> **Shopify**: `"SHOPIFY"` + +*** + + + +### Soundcloud + +> **Soundcloud**: `"SOUNDCLOUD"` + +*** + + + +### Spotify + +> **Spotify**: `"SPOTIFY"` + +*** + + + +### Substack + +> **Substack**: `"SUBSTACK"` + +*** + + + +### Tiktok + +> **Tiktok**: `"TIKTOK"` + +*** + + + +### Tumblr + +> **Tumblr**: `"TUMBLR"` + +*** + + + +### Twitch + +> **Twitch**: `"TWITCH"` + +*** + + + +### Twitter + +> **Twitter**: `"TWITTER"` + +*** + + + +### Venmo + +> **Venmo**: `"VENMO"` + +*** + + + +### Youtube + +> **Youtube**: `"YOUTUBE"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/enumerations/WikiPagePermissionLevel.md b/versioned_docs/version-0.13/api/redditapi/models/enumerations/WikiPagePermissionLevel.md new file mode 100644 index 00000000..1803d9af --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/enumerations/WikiPagePermissionLevel.md @@ -0,0 +1,35 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Enumeration: WikiPagePermissionLevel + +## Enumeration Members + + + +### APPROVED\_CONTRIBUTORS\_ONLY + +> **APPROVED\_CONTRIBUTORS\_ONLY**: `1` + +Only approved wiki contributors for this page may edit + +*** + + + +### MODS\_ONLY + +> **MODS\_ONLY**: `2` + +Only mods may edit and view + +*** + + + +### SUBREDDIT\_PERMISSIONS + +> **SUBREDDIT\_PERMISSIONS**: `0` + +Use subreddit wiki permissions diff --git a/versioned_docs/version-0.13/api/redditapi/models/functions/getModerationLog.md b/versioned_docs/version-0.13/api/redditapi/models/functions/getModerationLog.md new file mode 100644 index 00000000..53e4c60d --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/functions/getModerationLog.md @@ -0,0 +1,21 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Function: getModerationLog() + +> **getModerationLog**(`options`, `metadata`): [`Listing`](../classes/Listing.md)\<[`ModAction`](../interfaces/ModAction.md)\> + +## Parameters + +### options + +[`GetModerationLogOptions`](../type-aliases/GetModerationLogOptions.md) + +### metadata + +`undefined` | `Metadata` + +## Returns + +[`Listing`](../classes/Listing.md)\<[`ModAction`](../interfaces/ModAction.md)\> diff --git a/versioned_docs/version-0.13/api/redditapi/models/functions/getSubredditInfoById.md b/versioned_docs/version-0.13/api/redditapi/models/functions/getSubredditInfoById.md new file mode 100644 index 00000000..7f58e6cd --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/functions/getSubredditInfoById.md @@ -0,0 +1,27 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Function: getSubredditInfoById() + +> **getSubredditInfoById**(`subredditId`, `metadata`): `Promise`\<[`SubredditInfo`](../type-aliases/SubredditInfo.md)\> + +Gets a [SubredditInfo](../type-aliases/SubredditInfo.md) object by ID + +## Parameters + +### subredditId + +`string` + +### metadata + +Optional RPC metadata passed with every request. + +`undefined` | `Metadata` + +## Returns + +`Promise`\<[`SubredditInfo`](../type-aliases/SubredditInfo.md)\> + +A Promise that resolves a SubredditInfo object. diff --git a/versioned_docs/version-0.13/api/redditapi/models/functions/getSubredditInfoByName.md b/versioned_docs/version-0.13/api/redditapi/models/functions/getSubredditInfoByName.md new file mode 100644 index 00000000..9d8ef0cd --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/functions/getSubredditInfoByName.md @@ -0,0 +1,27 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Function: getSubredditInfoByName() + +> **getSubredditInfoByName**(`subredditName`, `metadata`): `Promise`\<[`SubredditInfo`](../type-aliases/SubredditInfo.md)\> + +Gets a [SubredditInfo](../type-aliases/SubredditInfo.md) object by name + +## Parameters + +### subredditName + +`string` + +### metadata + +Optional RPC metadata passed with every request. + +`undefined` | `Metadata` + +## Returns + +`Promise`\<[`SubredditInfo`](../type-aliases/SubredditInfo.md)\> + +A Promise that resolves a SubredditInfo object. diff --git a/versioned_docs/version-0.13/api/redditapi/models/functions/getSubredditLeaderboard.md b/versioned_docs/version-0.13/api/redditapi/models/functions/getSubredditLeaderboard.md new file mode 100644 index 00000000..5f230348 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/functions/getSubredditLeaderboard.md @@ -0,0 +1,21 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Function: getSubredditLeaderboard() + +> **getSubredditLeaderboard**(`subredditId`, `metadata`): `Promise`\<[`SubredditLeaderboard`](../type-aliases/SubredditLeaderboard.md)\> + +## Parameters + +### subredditId + +`string` + +### metadata + +`undefined` | `Metadata` + +## Returns + +`Promise`\<[`SubredditLeaderboard`](../type-aliases/SubredditLeaderboard.md)\> diff --git a/versioned_docs/version-0.13/api/redditapi/models/functions/getSubredditStyles.md b/versioned_docs/version-0.13/api/redditapi/models/functions/getSubredditStyles.md new file mode 100644 index 00000000..cf79fd76 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/functions/getSubredditStyles.md @@ -0,0 +1,21 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Function: getSubredditStyles() + +> **getSubredditStyles**(`subredditId`, `metadata`): `Promise`\<[`SubredditStyles`](../type-aliases/SubredditStyles.md)\> + +## Parameters + +### subredditId + +`string` + +### metadata + +`undefined` | `Metadata` + +## Returns + +`Promise`\<[`SubredditStyles`](../type-aliases/SubredditStyles.md)\> diff --git a/versioned_docs/version-0.13/api/redditapi/models/functions/getVaultByAddress.md b/versioned_docs/version-0.13/api/redditapi/models/functions/getVaultByAddress.md new file mode 100644 index 00000000..48223b79 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/functions/getVaultByAddress.md @@ -0,0 +1,21 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Function: getVaultByAddress() + +> **getVaultByAddress**(`address`, `metadata`): `Promise`\<[`Vault`](../type-aliases/Vault.md)\> + +## Parameters + +### address + +`string` + +### metadata + +`undefined` | `Metadata` + +## Returns + +`Promise`\<[`Vault`](../type-aliases/Vault.md)\> diff --git a/versioned_docs/version-0.13/api/redditapi/models/functions/getVaultByUserId.md b/versioned_docs/version-0.13/api/redditapi/models/functions/getVaultByUserId.md new file mode 100644 index 00000000..26c9d797 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/functions/getVaultByUserId.md @@ -0,0 +1,21 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Function: getVaultByUserId() + +> **getVaultByUserId**(`userId`, `metadata`): `Promise`\<[`Vault`](../type-aliases/Vault.md)\> + +## Parameters + +### userId + +`` `t2_${string}` `` + +### metadata + +`undefined` | `Metadata` + +## Returns + +`Promise`\<[`Vault`](../type-aliases/Vault.md)\> diff --git a/versioned_docs/version-0.13/api/redditapi/models/interfaces/ModAction.md b/versioned_docs/version-0.13/api/redditapi/models/interfaces/ModAction.md new file mode 100644 index 00000000..b5684355 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/interfaces/ModAction.md @@ -0,0 +1,113 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Interface: ModAction + +## Properties + + + +### createdAt + +> **createdAt**: `Date` + +When the action took place. + +*** + + + +### description? + +> `optional` **description**: `string` + +The string "Page modmail-stats edited: Daily update of the +modmail-stats (Wed Jul 02 2025 08:05:47 UTC+0200 (Europe/Amsterdam))" is +made up of `description` and `details`. The "Page modmail-stats edited" is +the "description". + +*** + + + +### details? + +> `optional` **details**: `string` + +The string "Page modmail-stats edited: Daily update of the +modmail-stats (Wed Jul 02 2025 08:05:47 UTC+0200 (Europe/Amsterdam))" is +made up of `description` and `details`. The "Daily update of the +modmail-stats (Wed Jul 02 2025 08:05:47 UTC+0200 (Europe/Amsterdam))" is +the "details". + +*** + + + +### id + +> **id**: `string` + +A string like `"ModAction_1b1af634-5b87-11f0-a4f1-4ddd27626cc4"` +identifying the ModAction. + +*** + + + +### moderatorId + +> **moderatorId**: `string` + +The t2_ id of the moderator. + +*** + + + +### moderatorName + +> **moderatorName**: `string` + +The username of the moderator. + +*** + + + +### subredditId + +> **subredditId**: `string` + +The ID of the subreddit the action took place. + +*** + + + +### subredditName + +> **subredditName**: `string` + +The name of the subreddit the action took place. + +*** + + + +### target? + +> `optional` **target**: [`ModActionTarget`](../type-aliases/ModActionTarget.md) + +Some context of the affected item of the modaction. + +*** + + + +### type + +> **type**: [`ModActionType`](../type-aliases/ModActionType.md) + +The type of the action. Think of what happened. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/AboutSubredditTypes.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/AboutSubredditTypes.md new file mode 100644 index 00000000..9a7f552c --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/AboutSubredditTypes.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: AboutSubredditTypes + +> **AboutSubredditTypes** = `"comment"` \| `"post"` \| `"all"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/AddRemovalNoteOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/AddRemovalNoteOptions.md new file mode 100644 index 00000000..7b147be9 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/AddRemovalNoteOptions.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: AddRemovalNoteOptions + +> **AddRemovalNoteOptions** = `Prettify`\<`PostRemovalNoteRequest`\> diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/AddWidgetData.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/AddWidgetData.md new file mode 100644 index 00000000..b1f9b82f --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/AddWidgetData.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: AddWidgetData + +> **AddWidgetData** = `AddImageWidgetRequest` & `object` \| `AddCalendarWidgetRequest` & `object` \| `AddTextAreaWidgetRequest` & `object` \| `AddButtonWidgetRequest` & `object` \| `AddCommunityListWidgetRequest` & `object` \| `AddPostFlairWidgetRequest` & `object` \| `AddCustomWidgetRequest` & `object` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/AllowableFlairContent.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/AllowableFlairContent.md new file mode 100644 index 00000000..5ad52c1d --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/AllowableFlairContent.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: AllowableFlairContent + +> **AllowableFlairContent** = `"all"` \| `"emoji"` \| `"text"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/BackgroundImagePosition.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/BackgroundImagePosition.md new file mode 100644 index 00000000..967e263b --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/BackgroundImagePosition.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: BackgroundImagePosition + +> **BackgroundImagePosition** = `"cover"` \| `"tiled"` \| `"centered"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/BanUserOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/BanUserOptions.md new file mode 100644 index 00000000..1aa8b8a0 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/BanUserOptions.md @@ -0,0 +1,77 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: BanUserOptions + +> **BanUserOptions** = `object` + +## Properties + + + +### context? + +> `optional` **context**: `string` + +The id of the post or comment you want to cite as rule breaking. + +*** + + + +### duration? + +> `optional` **duration**: `number` + +The duration of the ban, in days. Use 0 for permanent; otherwise, it must be in the range of 1 to 999. + +*** + + + +### message? + +> `optional` **message**: `string` + +The message to display to the user. (The "Note from the moderators:" in the ban message modmail.) + +*** + + + +### note? + +> `optional` **note**: `string` + +The reason to show in the modlog, and the UI's user notes. This isn't show to the user, just other moderators. + +*** + + + +### reason? + +> `optional` **reason**: `string` + +The reason for the ban. This shows up in the Banned Users Menu. + +*** + + + +### subredditName + +> **subredditName**: `string` + +The name of the subreddit you want to ban the user from. + +*** + + + +### username + +> **username**: `string` + +The username of the user you want to ban. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/BanWikiContributorOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/BanWikiContributorOptions.md new file mode 100644 index 00000000..79bbfb6d --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/BanWikiContributorOptions.md @@ -0,0 +1,47 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: BanWikiContributorOptions + +> **BanWikiContributorOptions** = `object` + +## Properties + + + +### duration? + +> `optional` **duration**: `number` + +*** + + + +### note? + +> `optional` **note**: `string` + +*** + + + +### reason? + +> `optional` **reason**: `string` + +*** + + + +### subredditName + +> **subredditName**: `string` + +*** + + + +### username + +> **username**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/BannerHeight.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/BannerHeight.md new file mode 100644 index 00000000..9173a05b --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/BannerHeight.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: BannerHeight + +> **BannerHeight** = `"small"` \| `"medium"` \| `"large"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CommentMediaTypes.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CommentMediaTypes.md new file mode 100644 index 00000000..d17f4d22 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CommentMediaTypes.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: CommentMediaTypes + +> **CommentMediaTypes** = `"giphy"` \| `"static"` \| `"animated"` \| `"expression"` \| `"video"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CommentSort.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CommentSort.md new file mode 100644 index 00000000..b79a48f7 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CommentSort.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: CommentSort + +> **CommentSort** = `"confidence"` \| `"top"` \| `"new"` \| `"controversial"` \| `"old"` \| `"random"` \| `"qa"` \| `"live"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CommentSubmissionOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CommentSubmissionOptions.md new file mode 100644 index 00000000..ecdcd462 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CommentSubmissionOptions.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: CommentSubmissionOptions + +> **CommentSubmissionOptions** = \{ `runAs`: `"USER"` \| `"APP"`; `text`: `string`; \} \| \{ `richtext`: `object` \| `RichTextBuilder`; `runAs`: `"USER"` \| `"APP"`; \} diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CommonFlair.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CommonFlair.md new file mode 100644 index 00000000..9828711f --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CommonFlair.md @@ -0,0 +1,109 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: CommonFlair + +> **CommonFlair** = `object` + +This type is used for both the link and author flairs on Post and Comment objects. + +## Properties + + + +### backgroundColor? + +> `optional` **backgroundColor**: `string` + +Flair background color as a hex color string (# prefixed) or transparent + +#### Example + +```ts +"#FF4500" +``` + +*** + + + +### cssClass? + +> `optional` **cssClass**: `string` + +Custom CSS classes from the subreddit's stylesheet to apply to the flair if rendered as HTML + +*** + + + +### richtext + +> **richtext**: `object`[] + +RichText object representation of the flair + +#### elementType? + +> `optional` **elementType**: `string` + +Enum of element types. e.g. emoji or text + +#### emojiRef? + +> `optional` **emojiRef**: `string` + +Emoji references, e.g. ":rainbow:" + +#### text? + +> `optional` **text**: `string` + +Text to show up in the flair, e.g. "Need Advice" + +#### url? + +> `optional` **url**: `string` + +url string, e.g. "https://reddit.com/" + +*** + + + +### templateId? + +> `optional` **templateId**: `string` + +Flair template ID to use when rendering this flair + +*** + + + +### text? + +> `optional` **text**: `string` + +Plain text representation of the flair + +*** + + + +### textColor? + +> `optional` **textColor**: `string` + +One of: "light", "dark" + +*** + + + +### type? + +> `optional` **type**: `string` + +One of: "text", "richtext" diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CommonSubmitPostOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CommonSubmitPostOptions.md new file mode 100644 index 00000000..5a679933 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CommonSubmitPostOptions.md @@ -0,0 +1,63 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: CommonSubmitPostOptions + +> **CommonSubmitPostOptions** = `object` + +## Properties + + + +### flairId? + +> `optional` **flairId**: `string` + +*** + + + +### flairText? + +> `optional` **flairText**: `string` + +*** + + + +### nsfw? + +> `optional` **nsfw**: `boolean` + +*** + + + +### runAs? + +> `optional` **runAs**: `"USER"` \| `"APP"` + +*** + + + +### sendreplies? + +> `optional` **sendreplies**: `boolean` + +*** + + + +### spoiler? + +> `optional` **spoiler**: `boolean` + +*** + + + +### title + +> **title**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CommunityNameFormat.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CommunityNameFormat.md new file mode 100644 index 00000000..e0979845 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CommunityNameFormat.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: CommunityNameFormat + +> **CommunityNameFormat** = `"slashtag"` \| `"pretty"` \| `"hide"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ConversationData.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ConversationData.md new file mode 100644 index 00000000..e795e195 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ConversationData.md @@ -0,0 +1,218 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: ConversationData + +> **ConversationData** = `object` + +## Properties + + + +### authors + +> **authors**: [`Participant`](Participant.md)[] + +The authors of each message in the modmail conversation. + +*** + + + +### conversationType? + +> `optional` **conversationType**: `string` + +A ConversationType specifies whether a conversation is with a subreddit +itself, with another user, or with another subreddit entirely. +- `sr_user` - This is a conversation with another user outside of the + subreddit. The participant ID is that user's ID. +- `internal` - This is a Mod Discussion, internal to the subreddit. There + is no other participant. +- `sr_sr` - This is a conversation is with another subreddit. The + participant will have a subreddit ID. + +*** + + + +### id? + +> `optional` **id**: `string` + +Conversation ID + +*** + + + +### isAuto? + +> `optional` **isAuto**: `boolean` + +Is the conversation automatically generated e.g. from automod, u/reddit + +*** + + + +### isHighlighted? + +> `optional` **isHighlighted**: `boolean` + +Is the conversation highlighted + +*** + + + +### isInternal? + +> `optional` **isInternal**: `boolean` + +Is the conversation internal (i.e. mod only) + +*** + + + +### lastModUpdate? + +> `optional` **lastModUpdate**: `string` + +The last datetime a mod from the owning subreddit made any interaction +with the conversation. + +(Note that if this is a subreddit to subreddit conversation, the mods of +the participant subreddit are irrelevant and do not affect this field.) + +*** + + + +### lastUnread? + +> `optional` **lastUnread**: `string` + +The datetime of the last unread message within this conversation for the current viewer. + +*** + + + +### lastUpdated? + +> `optional` **lastUpdated**: `string` + +The datetime of the last time the conversation was update. + +*** + + + +### lastUserUpdate? + +> `optional` **lastUserUpdate**: `string` + +The last datetime a user made any interaction with the conversation + +*** + + + +### messages + +> **messages**: `object` + +Conversation messages + +#### Index Signature + +\[`id`: `string`\]: [`MessageData`](MessageData.md) + +#### Example + +```ts +const arrayOfMessages = Object.values(conversation.messages); +const messageById = conversation.messages[messageId]; +``` + +*** + + + +### modActions + +> **modActions**: `object` + +Conversation mod actions + +#### Index Signature + +\[`id`: `string`\]: [`ModActionData`](ModActionData.md) + +#### Example + +```ts +const arrayOfModActions = Object.values(conversation.modActions); +const modActionById = conversation.modActions[modActionId]; +``` + +*** + + + +### numMessages? + +> `optional` **numMessages**: `number` + +Number of messages (not actions) in the conversation + +*** + + + +### participant? + +> `optional` **participant**: [`Participant`](Participant.md) + +Participant. Is absent for mod discussions + +*** + + + +### state? + +> `optional` **state**: [`ModMailConversationState`](../enumerations/ModMailConversationState.md) + +State of the conversation + +*** + + + +### subject? + +> `optional` **subject**: `string` + +Suject of the conversation + +*** + + + +### subreddit? + +> `optional` **subreddit**: `object` + +Subreddit owning the modmail conversation + +#### displayName? + +> `optional` **displayName**: `string` + +#### id? + +> `optional` **id**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ConversationResponse.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ConversationResponse.md new file mode 100644 index 00000000..01da96f6 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ConversationResponse.md @@ -0,0 +1,15 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: ConversationResponse + +> **ConversationResponse** = `object` + +## Properties + + + +### conversation + +> **conversation**: [`ConversationData`](ConversationData.md) diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ConversationStateFilter.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ConversationStateFilter.md new file mode 100644 index 00000000..9dd968c7 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ConversationStateFilter.md @@ -0,0 +1,12 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: ConversationStateFilter + +> **ConversationStateFilter** = `"all"` \| `"new"` \| `"inprogress"` \| `"archived"` \| `"appeals"` \| `"join_requests"` \| `"highlighted"` \| `"mod"` \| `"notifications"` \| `"inbox"` \| `"filtered"` \| `"default"` + +A Conversation State is a way in which conversations may be filtered within the UI. + +A conversation can be in more than one state. +For example, a conversation may be both 'highlighted' and 'inprogress'. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ConversationUserData.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ConversationUserData.md new file mode 100644 index 00000000..92a74c61 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ConversationUserData.md @@ -0,0 +1,155 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: ConversationUserData + +> **ConversationUserData** = `object` + +## Properties + + + +### approveStatus? + +> `optional` **approveStatus**: `object` + +#### isApproved? + +> `optional` **isApproved**: `boolean` + +*** + + + +### banStatus? + +> `optional` **banStatus**: `object` + +#### endDate? + +> `optional` **endDate**: `string` + +#### isBanned? + +> `optional` **isBanned**: `boolean` + +#### isPermanent? + +> `optional` **isPermanent**: `boolean` + +#### reason? + +> `optional` **reason**: `string` + +*** + + + +### created? + +> `optional` **created**: `string` + +When was created + +*** + + + +### id? + +> `optional` **id**: `string` + +User ID + +*** + + + +### isShadowBanned? + +> `optional` **isShadowBanned**: `boolean` + +*** + + + +### isSuspended? + +> `optional` **isSuspended**: `boolean` + +*** + + + +### muteStatus? + +> `optional` **muteStatus**: `object` + +#### endDate? + +> `optional` **endDate**: `string` + +#### isMuted? + +> `optional` **isMuted**: `boolean` + +#### muteCount? + +> `optional` **muteCount**: `number` + +#### reason? + +> `optional` **reason**: `string` + +*** + + + +### name? + +> `optional` **name**: `string` + +Username + +*** + + + +### recentComments + +> **recentComments**: `object` + +Recent comments + +#### Index Signature + +\[`id`: `string`\]: `object` + +*** + + + +### recentConvos + +> **recentConvos**: `object` + +Recent conversations + +#### Index Signature + +\[`id`: `string`\]: `object` + +*** + + + +### recentPosts + +> **recentPosts**: `object` + +Recent posts + +#### Index Signature + +\[`id`: `string`\]: `object` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CreateFlairTemplateOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CreateFlairTemplateOptions.md new file mode 100644 index 00000000..b79c8e4e --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CreateFlairTemplateOptions.md @@ -0,0 +1,85 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: CreateFlairTemplateOptions + +> **CreateFlairTemplateOptions** = `object` + +## Properties + + + +### allowableContent? + +> `optional` **allowableContent**: [`AllowableFlairContent`](AllowableFlairContent.md) + +The flair template's allowable content. Either 'all', 'emoji', or 'text'. + +*** + + + +### allowUserEdits? + +> `optional` **allowUserEdits**: `boolean` + +Whether or not users are allowed to edit this flair template before using it. + +*** + + + +### backgroundColor? + +> `optional` **backgroundColor**: `string` + +The background color of the flair. Either 'transparent' or a hex color code. e.g. #FFC0CB + +*** + + + +### maxEmojis? + +> `optional` **maxEmojis**: `number` + +*** + + + +### modOnly? + +> `optional` **modOnly**: `boolean` + +Whether or not this flair template is only available to moderators. + +*** + + + +### subredditName + +> **subredditName**: `string` + +The name of the subreddit to create the flair template in. + +*** + + + +### text + +> **text**: `string` + +The text to display in the flair. + +*** + + + +### textColor? + +> `optional` **textColor**: [`FlairTextColor`](FlairTextColor.md) + +Either 'dark' or 'light'. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CreateModNoteOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CreateModNoteOptions.md new file mode 100644 index 00000000..ab23a7a4 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CreateModNoteOptions.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: CreateModNoteOptions + +> **CreateModNoteOptions** = `Prettify`\<`PostNotesRequest` & `object`\> diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CreateRelationshipOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CreateRelationshipOptions.md new file mode 100644 index 00000000..3a32b6d1 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CreateRelationshipOptions.md @@ -0,0 +1,81 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: CreateRelationshipOptions + +> **CreateRelationshipOptions** = `object` + +## Properties + + + +### banContext? + +> `optional` **banContext**: `string` + +The ID of the post or comment that caused the ban. + +*** + + + +### banMessage? + +> `optional` **banMessage**: `string` + +*** + + + +### banReason? + +> `optional` **banReason**: `string` + +*** + + + +### duration? + +> `optional` **duration**: `number` + +*** + + + +### note? + +> `optional` **note**: `string` + +*** + + + +### permissions? + +> `optional` **permissions**: [`ModeratorPermission`](ModeratorPermission.md)[] + +*** + + + +### subredditName + +> **subredditName**: `string` + +*** + + + +### type + +> **type**: [`RelationshipType`](RelationshipType.md) + +*** + + + +### username + +> **username**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CreateRuleOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CreateRuleOptions.md new file mode 100644 index 00000000..1cb184d2 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CreateRuleOptions.md @@ -0,0 +1,19 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: CreateRuleOptions + +> **CreateRuleOptions** = `Omit`\<`AddSubredditRuleRequest`, `"r"` \| `"kind"` \| `"violationReason"`\> & `object` + +Options for creating a new subreddit rule. + +## Type declaration + +### kind + +> **kind**: `"all"` \| `"link"` \| `"comment"` + +### violationReason? + +> `optional` **violationReason**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CreateWikiPageOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CreateWikiPageOptions.md new file mode 100644 index 00000000..96092683 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CreateWikiPageOptions.md @@ -0,0 +1,47 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: CreateWikiPageOptions + +> **CreateWikiPageOptions** = `object` + +## Properties + + + +### content + +> **content**: `string` + +The content of the page. + +*** + + + +### page + +> **page**: `string` + +The name of the page to create. + +*** + + + +### reason? + +> `optional` **reason**: `string` + +The reason for creating the page. + +*** + + + +### subredditName + +> **subredditName**: `string` + +The name of the subreddit to create the page in. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CrosspostOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CrosspostOptions.md new file mode 100644 index 00000000..2f5b209b --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CrosspostOptions.md @@ -0,0 +1,17 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: CrosspostOptions + +> **CrosspostOptions** = [`CommonSubmitPostOptions`](CommonSubmitPostOptions.md) & `object` + +## Type declaration + +### postId + +> **postId**: `string` + +### subredditName + +> **subredditName**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CrowdControlLevel.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CrowdControlLevel.md new file mode 100644 index 00000000..e2c75eed --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CrowdControlLevel.md @@ -0,0 +1,13 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: CrowdControlLevel + +> **CrowdControlLevel** = `"OFF"` \| `"LENIENT"` \| `"MEDIUM"` \| `"STRICT"` + +Crowd control level for posts. Determines which comments should be collapsed due to crowd control. +OFF: Anyone with a Reddit account can comment freely. +LENIENT: Collapse comments from people who have negative karma in your community. +MEDIUM: Collapse comments from new Reddit users and people with negative karma in your community. +STRICT: Collapse comments from people who haven’t joined your community, new Reddit users, and people with negative karma in your community diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CustomPostRichTextFallback.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CustomPostRichTextFallback.md new file mode 100644 index 00000000..6591abc9 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CustomPostRichTextFallback.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: CustomPostRichTextFallback + +> **CustomPostRichTextFallback** = `RichTextBuilder` \| `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CustomPostTextFallbackOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CustomPostTextFallbackOptions.md new file mode 100644 index 00000000..3e830420 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CustomPostTextFallbackOptions.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: CustomPostTextFallbackOptions + +> **CustomPostTextFallbackOptions** = \{ `text`: `string`; \} \| \{ `richtext`: [`CustomPostRichTextFallback`](CustomPostRichTextFallback.md); \} + +## Type declaration + +\{ `text`: `string`; \} + +### text + +> **text**: `string` + +May also include markdown. See https://www.reddit.com/r/reddit.com/wiki/markdown/ + +\{ `richtext`: [`CustomPostRichTextFallback`](CustomPostRichTextFallback.md); \} + +### richtext + +> **richtext**: [`CustomPostRichTextFallback`](CustomPostRichTextFallback.md) diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CustomizationFlag.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CustomizationFlag.md new file mode 100644 index 00000000..e4ef035d --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/CustomizationFlag.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: CustomizationFlag + +> **CustomizationFlag** = `"default"` \| `"custom"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/DeleteNotesOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/DeleteNotesOptions.md new file mode 100644 index 00000000..3b626e64 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/DeleteNotesOptions.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: DeleteNotesOptions + +> **DeleteNotesOptions** = `Prettify`\<`DeleteNotesRequest`\> diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/EditCommentOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/EditCommentOptions.md new file mode 100644 index 00000000..4313d470 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/EditCommentOptions.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: EditCommentOptions + +> **EditCommentOptions** = [`CommentSubmissionOptions`](CommentSubmissionOptions.md) diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/EditFlairTemplateOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/EditFlairTemplateOptions.md new file mode 100644 index 00000000..abdd60a9 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/EditFlairTemplateOptions.md @@ -0,0 +1,13 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: EditFlairTemplateOptions + +> **EditFlairTemplateOptions** = [`CreateFlairTemplateOptions`](CreateFlairTemplateOptions.md) & `object` + +## Type declaration + +### id + +> **id**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/EnrichedThumbnail.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/EnrichedThumbnail.md new file mode 100644 index 00000000..721010c3 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/EnrichedThumbnail.md @@ -0,0 +1,73 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: EnrichedThumbnail + +> **EnrichedThumbnail** = `object` + +Contains data about a post's thumbnail. Also contains a blurred version if the thumbnail is NSFW. + +## Properties + + + +### attribution? + +> `optional` **attribution**: `string` + +Attribution text for the thumbnail + +*** + + + +### image + +> **image**: `object` + +The image used for the thumbnail. May have different resolution from Post.thumbnail + +#### height + +> **height**: `number` + +#### url + +> **url**: `string` + +#### width + +> **width**: `number` + +*** + + + +### isObfuscatedDefault + +> **isObfuscatedDefault**: `boolean` + +Whether this thumbnail appears blurred by default + +*** + + + +### obfuscatedImage? + +> `optional` **obfuscatedImage**: `object` + +The blurred image for NSFW thumbnails + +#### height + +> **height**: `number` + +#### url + +> **url**: `string` + +#### width + +> **width**: `number` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/FlairBackgroundColor.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/FlairBackgroundColor.md new file mode 100644 index 00000000..d5608d19 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/FlairBackgroundColor.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: FlairBackgroundColor + +> **FlairBackgroundColor** = `` `#${string}` `` \| `"transparent"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/FlairSettings.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/FlairSettings.md new file mode 100644 index 00000000..0aa3c317 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/FlairSettings.md @@ -0,0 +1,39 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: FlairSettings + +> **FlairSettings** = `object` + +## Properties + + + +### enabled + +> **enabled**: `boolean` + +*** + + + +### userFlairBackgroundColor? + +> `optional` **userFlairBackgroundColor**: `string` + +*** + + + +### userFlairTextColor? + +> `optional` **userFlairTextColor**: `string` + +*** + + + +### usersCanAssign + +> **usersCanAssign**: `boolean` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/FlairTextColor.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/FlairTextColor.md new file mode 100644 index 00000000..73ad4d10 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/FlairTextColor.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: FlairTextColor + +> **FlairTextColor** = `"light"` \| `"dark"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GalleryMedia.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GalleryMedia.md new file mode 100644 index 00000000..f4335987 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GalleryMedia.md @@ -0,0 +1,43 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GalleryMedia + +> **GalleryMedia** = `object` + +Represents media that the post may contain. + +## Properties + + + +### height + +> **height**: `number` + +*** + + + +### status + +> **status**: [`GalleryMediaStatus`](GalleryMediaStatus.md) + +Status of the media. Media that were successfully uplaoded will have GalleryMediaStatus.VALID status + +*** + + + +### url + +> **url**: `string` + +*** + + + +### width + +> **width**: `number` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GalleryMediaStatus.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GalleryMediaStatus.md new file mode 100644 index 00000000..5d0de639 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GalleryMediaStatus.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GalleryMediaStatus + +> **GalleryMediaStatus** = *typeof* `GalleryMediaStatusProto`\[keyof *typeof* `GalleryMediaStatusProto`\] diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetBestPostsOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetBestPostsOptions.md new file mode 100644 index 00000000..f1ece267 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetBestPostsOptions.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetBestPostsOptions + +> **GetBestPostsOptions** = [`ListingFetchOptions`](ListingFetchOptions.md) diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetCommentsByUserOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetCommentsByUserOptions.md new file mode 100644 index 00000000..876170db --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetCommentsByUserOptions.md @@ -0,0 +1,63 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetCommentsByUserOptions + +> **GetCommentsByUserOptions** = `object` + +## Properties + + + +### after? + +> `optional` **after**: `string` + +*** + + + +### before? + +> `optional` **before**: `string` + +*** + + + +### limit? + +> `optional` **limit**: `number` + +*** + + + +### pageSize? + +> `optional` **pageSize**: `number` + +*** + + + +### sort? + +> `optional` **sort**: `"hot"` \| `"new"` \| `"top"` \| `"controversial"` + +*** + + + +### timeframe? + +> `optional` **timeframe**: `"hour"` \| `"day"` \| `"week"` \| `"month"` \| `"year"` \| `"all"` + +*** + + + +### username + +> **username**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetCommentsOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetCommentsOptions.md new file mode 100644 index 00000000..f719c8f1 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetCommentsOptions.md @@ -0,0 +1,55 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetCommentsOptions + +> **GetCommentsOptions** = `object` + +## Properties + + + +### commentId? + +> `optional` **commentId**: `string` + +*** + + + +### depth? + +> `optional` **depth**: `number` + +*** + + + +### limit? + +> `optional` **limit**: `number` + +*** + + + +### pageSize? + +> `optional` **pageSize**: `number` + +*** + + + +### postId + +> **postId**: `string` + +*** + + + +### sort? + +> `optional` **sort**: [`CommentSort`](CommentSort.md) diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetConversationResponse.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetConversationResponse.md new file mode 100644 index 00000000..d2df7c95 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetConversationResponse.md @@ -0,0 +1,19 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetConversationResponse + +> **GetConversationResponse** = `object` & [`WithUserData`](WithUserData.md) + +## Type declaration + +### conversation? + +> `optional` **conversation**: [`ConversationData`](ConversationData.md) + +### participantSubreddit? + +> `optional` **participantSubreddit**: `ParticipantSubreddit` + +If the conversation is with another subreddit, what subreddit we are communicating with. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetConversationsRequest.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetConversationsRequest.md new file mode 100644 index 00000000..c13636c4 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetConversationsRequest.md @@ -0,0 +1,64 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetConversationsRequest + +> **GetConversationsRequest** = `object` + +## Properties + + + +### after? + +> `optional` **after**: `string` + +modmail conversation id + +*** + + + +### limit? + +> `optional` **limit**: `number` + +an integer between 1 and 100 (default: 25) + +*** + + + +### sort? + +> `optional` **sort**: `"recent"` \| `"mod"` \| `"user"` \| `"unread"` + +Sort by: +- `recent` - Order by whenever anyone last updated the conversation, mod or participant +- `mod` - Order by the last time a mod updated the conversation +- `user` - Order by the last time a participant user updated the conversation +- `unread` - Order by the most recent unread message in the conversation for this mod + +*** + + + +### state? + +> `optional` **state**: [`ConversationStateFilter`](ConversationStateFilter.md) + +Filter by conversation state + +A conversation can be in more than one state. +For example, a conversation may be both 'highlighted' and 'inprogress'. + +*** + + + +### subreddits? + +> `optional` **subreddits**: `string`[] + +array of subreddit names diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetConversationsResponse.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetConversationsResponse.md new file mode 100644 index 00000000..0fdce0df --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetConversationsResponse.md @@ -0,0 +1,39 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetConversationsResponse + +> **GetConversationsResponse** = `object` + +## Properties + + + +### conversationIds + +> **conversationIds**: `string`[] + +Array of conversation ids, ordered by the sort parameter specified in [GetConversationsRequest](GetConversationsRequest.md). + +*** + + + +### conversations + +> **conversations**: `object` + +Conversations key-value map + +#### Index Signature + +\[`id`: `string`\]: [`ConversationData`](ConversationData.md) + +*** + + + +### viewerId? + +> `optional` **viewerId**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetDuplicatesOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetDuplicatesOptions.md new file mode 100644 index 00000000..3b41c174 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetDuplicatesOptions.md @@ -0,0 +1,39 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetDuplicatesOptions + +> **GetDuplicatesOptions** = [`ListingFetchOptions`](ListingFetchOptions.md) & `object` + +## Type declaration + +### crosspostsOnly? + +> `optional` **crosspostsOnly**: `boolean` + +Only return duplicates that are crossposting this post. + +### postId + +> **postId**: `T3ID` + +Post ID with t3_ prefix (e.g. `t3_abc123`). The prefix is stripped internally. + +### show? + +> `optional` **show**: `string` + +Adding the string "all" will show all results regardless of user preferences. + +### sort? + +> `optional` **sort**: `"num_comments"` \| `"new"` + +One of: "num_comments", "new" + +### subredditName? + +> `optional` **subredditName**: `string` + +Limit search to the given subreddit name. The r/ prefix is optional. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetHotPostsOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetHotPostsOptions.md new file mode 100644 index 00000000..996aec86 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetHotPostsOptions.md @@ -0,0 +1,13 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetHotPostsOptions + +> **GetHotPostsOptions** = [`GetPostsOptions`](GetPostsOptions.md) & `object` + +## Type declaration + +### location? + +> `optional` **location**: `"GLOBAL"` \| `"US"` \| `"AR"` \| `"AU"` \| `"BG"` \| `"CA"` \| `"CL"` \| `"CO"` \| `"HR"` \| `"CZ"` \| `"FI"` \| `"FR"` \| `"DE"` \| `"GR"` \| `"HU"` \| `"IS"` \| `"IN"` \| `"IE"` \| `"IT"` \| `"JP"` \| `"MY"` \| `"MX"` \| `"NZ"` \| `"PH"` \| `"PL"` \| `"PT"` \| `"PR"` \| `"RO"` \| `"RS"` \| `"SG"` \| `"ES"` \| `"SE"` \| `"TW"` \| `"TH"` \| `"TR"` \| `"GB"` \| `"US_WA"` \| `"US_DE"` \| `"US_DC"` \| `"US_WI"` \| `"US_WV"` \| `"US_HI"` \| `"US_FL"` \| `"US_WY"` \| `"US_NH"` \| `"US_NJ"` \| `"US_NM"` \| `"US_TX"` \| `"US_LA"` \| `"US_NC"` \| `"US_ND"` \| `"US_NE"` \| `"US_TN"` \| `"US_NY"` \| `"US_PA"` \| `"US_CA"` \| `"US_NV"` \| `"US_VA"` \| `"US_CO"` \| `"US_AK"` \| `"US_AL"` \| `"US_AR"` \| `"US_VT"` \| `"US_IL"` \| `"US_GA"` \| `"US_IN"` \| `"US_IA"` \| `"US_OK"` \| `"US_AZ"` \| `"US_ID"` \| `"US_CT"` \| `"US_ME"` \| `"US_MD"` \| `"US_MA"` \| `"US_OH"` \| `"US_UT"` \| `"US_MO"` \| `"US_MN"` \| `"US_MI"` \| `"US_RI"` \| `"US_KS"` \| `"US_MT"` \| `"US_MS"` \| `"US_SC"` \| `"US_KY"` \| `"US_OR"` \| `"US_SD"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetModNotesOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetModNotesOptions.md new file mode 100644 index 00000000..cb92502b --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetModNotesOptions.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetModNotesOptions + +> **GetModNotesOptions** = `Prettify`\<`Pick`\<`GetNotesRequest`, `"subreddit"` \| `"user"`\> & `object` & `Pick`\<[`ListingFetchOptions`](ListingFetchOptions.md), `"limit"` \| `"before"`\>\> diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetModerationLogOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetModerationLogOptions.md new file mode 100644 index 00000000..241426ae --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetModerationLogOptions.md @@ -0,0 +1,27 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetModerationLogOptions + +> **GetModerationLogOptions** = [`ListingFetchOptions`](ListingFetchOptions.md) & `object` + +## Type declaration + +### moderatorUsernames? + +> `optional` **moderatorUsernames**: `string`[] + +(optional) A moderator filter. Accepts an array of usernames + +### subredditName + +> **subredditName**: `string` + +Subreddit name + +### type? + +> `optional` **type**: [`ModActionType`](ModActionType.md) + +Type of the Moderator action diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetPageRevisionsOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetPageRevisionsOptions.md new file mode 100644 index 00000000..ed9e074c --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetPageRevisionsOptions.md @@ -0,0 +1,21 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetPageRevisionsOptions + +> **GetPageRevisionsOptions** = `Omit`\<[`ListingFetchOptions`](ListingFetchOptions.md), `"more"`\> & `object` + +## Type declaration + +### page? + +> `optional` **page**: `string` + +The name of the page to get revisions for. + +### subredditName + +> **subredditName**: `string` + +The name of the subreddit the page is in. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetPostsByUserOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetPostsByUserOptions.md new file mode 100644 index 00000000..5e2c44a1 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetPostsByUserOptions.md @@ -0,0 +1,63 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetPostsByUserOptions + +> **GetPostsByUserOptions** = `object` + +## Properties + + + +### after? + +> `optional` **after**: `string` + +*** + + + +### before? + +> `optional` **before**: `string` + +*** + + + +### limit? + +> `optional` **limit**: `number` + +*** + + + +### pageSize? + +> `optional` **pageSize**: `number` + +*** + + + +### sort? + +> `optional` **sort**: `"hot"` \| `"new"` \| `"top"` \| `"controversial"` + +*** + + + +### timeframe? + +> `optional` **timeframe**: `"hour"` \| `"day"` \| `"week"` \| `"month"` \| `"year"` \| `"all"` + +*** + + + +### username + +> **username**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetPostsOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetPostsOptions.md new file mode 100644 index 00000000..a29df03e --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetPostsOptions.md @@ -0,0 +1,13 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetPostsOptions + +> **GetPostsOptions** = [`ListingFetchOptions`](ListingFetchOptions.md) & `object` + +## Type declaration + +### subredditName? + +> `optional` **subredditName**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetPostsOptionsWithTimeframe.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetPostsOptionsWithTimeframe.md new file mode 100644 index 00000000..75745ed2 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetPostsOptionsWithTimeframe.md @@ -0,0 +1,13 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetPostsOptionsWithTimeframe + +> **GetPostsOptionsWithTimeframe** = [`GetPostsOptions`](GetPostsOptions.md) & `object` + +## Type declaration + +### timeframe? + +> `optional` **timeframe**: `"hour"` \| `"day"` \| `"week"` \| `"month"` \| `"year"` \| `"all"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetPrivateMessagesOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetPrivateMessagesOptions.md new file mode 100644 index 00000000..27faf7d2 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetPrivateMessagesOptions.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetPrivateMessagesOptions + +> **GetPrivateMessagesOptions** = `Prettify`\<`object` & [`ListingFetchOptions`](ListingFetchOptions.md)\> diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetSortedPostsOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetSortedPostsOptions.md new file mode 100644 index 00000000..2d085c89 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetSortedPostsOptions.md @@ -0,0 +1,13 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetSortedPostsOptions + +> **GetSortedPostsOptions** = [`GetPostsOptionsWithTimeframe`](GetPostsOptionsWithTimeframe.md) & `object` + +## Type declaration + +### sort + +> **sort**: `"top"` \| `"controversial"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetSubredditUsersByTypeOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetSubredditUsersByTypeOptions.md new file mode 100644 index 00000000..dbbfc4a2 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetSubredditUsersByTypeOptions.md @@ -0,0 +1,21 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetSubredditUsersByTypeOptions + +> **GetSubredditUsersByTypeOptions** = [`ListingFetchOptions`](ListingFetchOptions.md) & `object` + +## Type declaration + +### subredditName + +> **subredditName**: `string` + +### type + +> **type**: `"banned"` \| `"muted"` \| `"wikibanned"` \| `"contributors"` \| `"wikicontributors"` \| `"moderators"` + +### username? + +> `optional` **username**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetUserFlairBySubredditOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetUserFlairBySubredditOptions.md new file mode 100644 index 00000000..19ece061 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetUserFlairBySubredditOptions.md @@ -0,0 +1,21 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetUserFlairBySubredditOptions + +> **GetUserFlairBySubredditOptions** = [`UserFlairPageOptions`](UserFlairPageOptions.md) & `object` + +## Type declaration + +### name? + +> `optional` **name**: `string` + +The username associated with the flair being retrieved. + +### subreddit + +> **subreddit**: `string` + +The subreddit associated with the flair being retrieved. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetUserFlairBySubredditResponse.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetUserFlairBySubredditResponse.md new file mode 100644 index 00000000..cb76db4d --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetUserFlairBySubredditResponse.md @@ -0,0 +1,41 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetUserFlairBySubredditResponse + +> **GetUserFlairBySubredditResponse** = `object` + +## Properties + + + +### next? + +> `optional` **next**: `string` + +The user id of the last user flair in this slice. Its presence indicates +that there are more items that can be fetched. Pass this into the "after" parameter +in the next call to get the next slice of data + +*** + + + +### prev? + +> `optional` **prev**: `string` + +The user id of the first user flair in this slice. Its presence indicates +that there are items before this item that can be fetched. Pass this into the "before" parameter +in the next call to get the previous slice of data + +*** + + + +### users + +> **users**: [`UserFlair`](UserFlair.md)[] + +The list of user flair diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetUserFlairOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetUserFlairOptions.md new file mode 100644 index 00000000..f1dc73b3 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetUserFlairOptions.md @@ -0,0 +1,16 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetUserFlairOptions + +> **GetUserFlairOptions** = [`UserFlairPageOptions`](UserFlairPageOptions.md) & `object` + +## Type declaration + +### usernames? + +> `optional` **usernames**: `string`[] + +If provide the method will return the flairs for the provided users, if not provided +it will return a list of all users assigned flairs in the subreddit diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetUserOverviewOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetUserOverviewOptions.md new file mode 100644 index 00000000..69b13fc8 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/GetUserOverviewOptions.md @@ -0,0 +1,63 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: GetUserOverviewOptions + +> **GetUserOverviewOptions** = `object` + +## Properties + + + +### after? + +> `optional` **after**: `string` + +*** + + + +### before? + +> `optional` **before**: `string` + +*** + + + +### limit? + +> `optional` **limit**: `number` + +*** + + + +### pageSize? + +> `optional` **pageSize**: `number` + +*** + + + +### sort? + +> `optional` **sort**: `"hot"` \| `"new"` \| `"top"` \| `"controversial"` + +*** + + + +### timeframe? + +> `optional` **timeframe**: `"hour"` \| `"day"` \| `"week"` \| `"month"` \| `"year"` \| `"all"` + +*** + + + +### username + +> **username**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ImagePosition.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ImagePosition.md new file mode 100644 index 00000000..266f2068 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ImagePosition.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: ImagePosition + +> **ImagePosition** = `"cover"` \| `"tiled"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/InternalSetPostFlairOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/InternalSetPostFlairOptions.md new file mode 100644 index 00000000..e10aabe7 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/InternalSetPostFlairOptions.md @@ -0,0 +1,13 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: InternalSetPostFlairOptions + +> **InternalSetPostFlairOptions** = [`SetFlairOptions`](SetFlairOptions.md) & `object` + +## Type declaration + +### postId + +> **postId**: `T3ID` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/LinkFlair.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/LinkFlair.md new file mode 100644 index 00000000..1e976403 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/LinkFlair.md @@ -0,0 +1,11 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: ~~LinkFlair~~ + +> **LinkFlair** = [`CommonFlair`](CommonFlair.md) + +## Deprecated + +Use [CommonFlair](CommonFlair.md). diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ListingFetchOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ListingFetchOptions.md new file mode 100644 index 00000000..0af4a7c9 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ListingFetchOptions.md @@ -0,0 +1,55 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: ListingFetchOptions + +> **ListingFetchOptions** = `object` + +## Properties + + + +### after? + +> `optional` **after**: `string` + +The ID of the object to start at. + +*** + + + +### before? + +> `optional` **before**: `string` + +The ID of the object to end at. + +*** + + + +### limit? + +> `optional` **limit**: `number` + +The maximum number of objects to get. + +*** + + + +### more? + +> `optional` **more**: [`MoreObject`](MoreObject.md) + +*** + + + +### pageSize? + +> `optional` **pageSize**: `number` + +The number of objects to get per request. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ListingFetchResponse.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ListingFetchResponse.md new file mode 100644 index 00000000..a30da2a4 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ListingFetchResponse.md @@ -0,0 +1,45 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: ListingFetchResponse\ + +> **ListingFetchResponse**\<`T`\> = `object` + +## Type Parameters + +### T + +`T` + +## Properties + + + +### after? + +> `optional` **after**: `string` + +*** + + + +### before? + +> `optional` **before**: `string` + +*** + + + +### children + +> **children**: `T`[] + +*** + + + +### more? + +> `optional` **more**: [`MoreObject`](MoreObject.md) diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/MenuPosition.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/MenuPosition.md new file mode 100644 index 00000000..d9e7efdc --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/MenuPosition.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: MenuPosition + +> **MenuPosition** = `"default"` \| `"overlay"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/MessageData.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/MessageData.md new file mode 100644 index 00000000..11cb7d10 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/MessageData.md @@ -0,0 +1,69 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: MessageData + +> **MessageData** = `object` + +## Properties + + + +### author? + +> `optional` **author**: [`Participant`](Participant.md) + +*** + + + +### body? + +> `optional` **body**: `string` + +Message body + +*** + + + +### bodyMarkdown? + +> `optional` **bodyMarkdown**: `string` + +*** + + + +### date? + +> `optional` **date**: `string` + +When was created + +*** + + + +### id? + +> `optional` **id**: `string` + +Message ID + +*** + + + +### isInternal? + +> `optional` **isInternal**: `boolean` + +*** + + + +### participatingAs? + +> `optional` **participatingAs**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ModActionData.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ModActionData.md new file mode 100644 index 00000000..ca320742 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ModActionData.md @@ -0,0 +1,75 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: ModActionData + +> **ModActionData** = `object` + +## Properties + + + +### actionType + +> **actionType**: [`ModMailActionType`](../enumerations/ModMailActionType.md) + +Type of the action + +*** + + + +### author? + +> `optional` **author**: `object` + +Action author + +#### id? + +> `optional` **id**: `number` + +User id + +#### isAdmin? + +> `optional` **isAdmin**: `boolean` + +#### isDeleted? + +> `optional` **isDeleted**: `boolean` + +#### isHidden? + +> `optional` **isHidden**: `boolean` + +#### isMod? + +> `optional` **isMod**: `boolean` + +#### name? + +> `optional` **name**: `string` + +User name + +*** + + + +### date? + +> `optional` **date**: `string` + +When the action happened + +*** + + + +### id? + +> `optional` **id**: `string` + +Action id diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ModActionTarget.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ModActionTarget.md new file mode 100644 index 00000000..f31d458b --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ModActionTarget.md @@ -0,0 +1,47 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: ModActionTarget + +> **ModActionTarget** = `object` + +## Properties + + + +### author? + +> `optional` **author**: `string` + +*** + + + +### body? + +> `optional` **body**: `string` + +*** + + + +### id + +> **id**: `string` + +*** + + + +### permalink? + +> `optional` **permalink**: `string` + +*** + + + +### title? + +> `optional` **title**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ModActionType.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ModActionType.md new file mode 100644 index 00000000..33e9b088 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ModActionType.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: ModActionType + +> **ModActionType** = `"banuser"` \| `"unbanuser"` \| `"spamlink"` \| `"removelink"` \| `"approvelink"` \| `"spamcomment"` \| `"removecomment"` \| `"approvecomment"` \| `"addmoderator"` \| `"showcomment"` \| `"invitemoderator"` \| `"uninvitemoderator"` \| `"acceptmoderatorinvite"` \| `"removemoderator"` \| `"addcontributor"` \| `"removecontributor"` \| `"editsettings"` \| `"editflair"` \| `"distinguish"` \| `"marknsfw"` \| `"wikibanned"` \| `"wikicontributor"` \| `"wikiunbanned"` \| `"wikipagelisted"` \| `"removewikicontributor"` \| `"wikirevise"` \| `"wikipermlevel"` \| `"ignorereports"` \| `"unignorereports"` \| `"setpermissions"` \| `"setsuggestedsort"` \| `"sticky"` \| `"unsticky"` \| `"setcontestmode"` \| `"unsetcontestmode"` \| `"lock"` \| `"unlock"` \| `"muteuser"` \| `"unmuteuser"` \| `"createrule"` \| `"editrule"` \| `"reorderrules"` \| `"deleterule"` \| `"spoiler"` \| `"unspoiler"` \| `"modmail_enrollment"` \| `"community_styling"` \| `"community_widgets"` \| `"markoriginalcontent"` \| `"collections"` \| `"events"` \| `"create_award"` \| `"disable_award"` \| `"delete_award"` \| `"enable_award"` \| `"mod_award_given"` \| `"hidden_award"` \| `"add_community_topics"` \| `"remove_community_topics"` \| `"create_scheduled_post"` \| `"edit_scheduled_post"` \| `"delete_scheduled_post"` \| `"submit_scheduled_post"` \| `"edit_post_requirements"` \| `"invitesubscriber"` \| `"submit_content_rating_survey"` \| `"adjust_post_crowd_control_level"` \| `"enable_post_crowd_control_filter"` \| `"disable_post_crowd_control_filter"` \| `"deleteoverriddenclassification"` \| `"overrideclassification"` \| `"reordermoderators"` \| `"snoozereports"` \| `"unsnoozereports"` \| `"addnote"` \| `"deletenote"` \| `"addremovalreason"` \| `"createremovalreason"` \| `"updateremovalreason"` \| `"deleteremovalreason"` \| `"reorderremovalreason"` \| `"dev_platform_app_changed"` \| `"dev_platform_app_disabled"` \| `"dev_platform_app_enabled"` \| `"dev_platform_app_installed"` \| `"dev_platform_app_uninstalled"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ModLogOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ModLogOptions.md new file mode 100644 index 00000000..f08fce4e --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ModLogOptions.md @@ -0,0 +1,13 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: ModLogOptions\ + +> **ModLogOptions**\<`T`\> = `Omit`\<`AboutSubredditHelperOptions`\<`T`\>, `"location"`\> + +## Type Parameters + +### T + +`T` *extends* [`AboutSubredditTypes`](AboutSubredditTypes.md) diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ModNoteType.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ModNoteType.md new file mode 100644 index 00000000..314a4c75 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ModNoteType.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: ModNoteType + +> **ModNoteType** = `"NOTE"` \| `"APPROVAL"` \| `"REMOVAL"` \| `"BAN"` \| `"MUTE"` \| `"INVITE"` \| `"SPAM"` \| `"CONTENT_CHANGE"` \| `"MOD_ACTION"` \| `"ALL"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ModeratorPermission.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ModeratorPermission.md new file mode 100644 index 00000000..444c3fd7 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ModeratorPermission.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: ModeratorPermission + +> **ModeratorPermission** = `"all"` \| `"wiki"` \| `"posts"` \| `"access"` \| `"mail"` \| `"config"` \| `"flair"` \| `"chat_operator"` \| `"chat_config"` \| `"channels"` \| `"community_chat"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/MoreObject.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/MoreObject.md new file mode 100644 index 00000000..8f44247e --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/MoreObject.md @@ -0,0 +1,31 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: MoreObject + +> **MoreObject** = `object` + +## Properties + + + +### children + +> **children**: `T1ID`[] + +*** + + + +### depth + +> **depth**: `number` + +*** + + + +### parentId + +> **parentId**: `T1ID` \| `T3ID` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/OEmbed.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/OEmbed.md new file mode 100644 index 00000000..f12b1690 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/OEmbed.md @@ -0,0 +1,142 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: OEmbed + +> **OEmbed** = `object` + +oEmbed is a format for allowing an embedded representation of a URL on third party sites. +The simple API allows a website to display embedded content (such as photos or videos) +when a user posts a link to that resource, without having to parse the resource directly. +See: https://oembed.com/ + +## Properties + + + +### authorName? + +> `optional` **authorName**: `string` + +The name of the author/owner of the resource. E.g. "Reddit" + +*** + + + +### authorUrl? + +> `optional` **authorUrl**: `string` + +A URL for the author/owner of the resource. E.g. "https://www.youtube.com/@Reddit" + +*** + + + +### height? + +> `optional` **height**: `number` + +The width in pixels required to display the HTML. + +*** + + + +### html + +> **html**: `string` + +The HTML required to embed a video player. The HTML should have no padding or margins. Consumers may wish to load the HTML in an off-domain iframe to avoid XSS vulnerabilities. + +*** + + + +### providerName? + +> `optional` **providerName**: `string` + +A URL for the author/owner of the resource. E.g. "YouTube" + +*** + + + +### providerUrl? + +> `optional` **providerUrl**: `string` + +The name of the resource provider. E.g "https://www.youtube.com/" + +*** + + + +### thumbnailHeight? + +> `optional` **thumbnailHeight**: `number` + +The height of the optional thumbnail in pixels + +*** + + + +### thumbnailUrl? + +> `optional` **thumbnailUrl**: `string` + +A URL to a thumbnail image representing the resource. + +*** + + + +### thumbnailWidth? + +> `optional` **thumbnailWidth**: `number` + +The width of the optional thumbnail in pixels + +*** + + + +### title? + +> `optional` **title**: `string` + +A text title, describing the resource. + +*** + + + +### type + +> **type**: `string` + +The resource type. Valid values, along with value-specific parameters, are described below. E.g. "video" + +*** + + + +### version + +> **version**: `string` + +The oEmbed version number. This must be 1.0. + +*** + + + +### width? + +> `optional` **width**: `number` + +The height in pixels required to display the HTML. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/Participant.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/Participant.md new file mode 100644 index 00000000..91c62147 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/Participant.md @@ -0,0 +1,81 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: Participant + +> **Participant** = `object` + +Conversation participant + +## Properties + + + +### id? + +> `optional` **id**: `number` + +*** + + + +### isAdmin? + +> `optional` **isAdmin**: `boolean` + +*** + + + +### isApproved? + +> `optional` **isApproved**: `boolean` + +*** + + + +### isDeleted? + +> `optional` **isDeleted**: `boolean` + +*** + + + +### isHidden? + +> `optional` **isHidden**: `boolean` + +*** + + + +### isMod? + +> `optional` **isMod**: `boolean` + +*** + + + +### isOp? + +> `optional` **isOp**: `boolean` + +*** + + + +### isParticipant? + +> `optional` **isParticipant**: `boolean` + +*** + + + +### name? + +> `optional` **name**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PollData.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PollData.md new file mode 100644 index 00000000..3c821ff5 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PollData.md @@ -0,0 +1,39 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: PollData + +> **PollData** = `object` + +Aggregated poll data for a poll post. + +## Properties + + + +### options + +> **options**: [`PollOption`](PollOption.md)[] + +Options in the poll. + +*** + + + +### totalVoteCount + +> **totalVoteCount**: `number` + +Total number of votes cast in the poll. Aggregated across all PollOption objects. + +*** + + + +### votingEndTimestamp + +> **votingEndTimestamp**: `number` + +Time the poll voting closes, in Unix milliseconds. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PollOption.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PollOption.md new file mode 100644 index 00000000..0d92fb05 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PollOption.md @@ -0,0 +1,39 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: PollOption + +> **PollOption** = `object` + +Poll option on a poll post. + +## Properties + + + +### id + +> **id**: `string` + +ID of the poll option. + +*** + + + +### text + +> **text**: `string` + +The text of the poll option. + +*** + + + +### voteCount + +> **voteCount**: `number` + +The number of votes this poll option has received. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PositionedImagePosition.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PositionedImagePosition.md new file mode 100644 index 00000000..9a5e9b32 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PositionedImagePosition.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: PositionedImagePosition + +> **PositionedImagePosition** = `"left"` \| `"right"` \| `"centered"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PostCapabilities.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PostCapabilities.md new file mode 100644 index 00000000..733f0bf8 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PostCapabilities.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: PostCapabilities + +> **PostCapabilities** = `"ama"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PostSuggestedCommentSort.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PostSuggestedCommentSort.md new file mode 100644 index 00000000..a796a330 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PostSuggestedCommentSort.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: PostSuggestedCommentSort + +> **PostSuggestedCommentSort** = `"BLANK"` \| `"CONFIDENCE"` \| `"CONTROVERSIAL"` \| `"LIVE"` \| `"NEW"` \| `"OLD"` \| `"QA"` \| `"RANDOM"` \| `"TOP"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PostTextOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PostTextOptions.md new file mode 100644 index 00000000..75d7819b --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PostTextOptions.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: PostTextOptions + +> **PostTextOptions** = \{ `text`: `string`; \} \| \{ `richtext`: `object` \| `RichTextBuilder`; \} diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PostType.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PostType.md new file mode 100644 index 00000000..813fd85b --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/PostType.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: PostType + +> **PostType** = `"link"` \| `"image"` \| `"video"` \| `"text"` \| `"spoiler"` \| `"poll"` \| `"gallery"` \| `"talk"` \| `"prediction"` \| `"videogif"` \| `"streaming"` \| `"crosspost"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/RedditVideo.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/RedditVideo.md new file mode 100644 index 00000000..cfde1437 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/RedditVideo.md @@ -0,0 +1,109 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: RedditVideo + +> **RedditVideo** = `object` + +Contains the data for a video hosted on Reddit that is in a post + +## Properties + + + +### bitrateKbps? + +> `optional` **bitrateKbps**: `number` + +The bitrate of the video in kilobits per second. E.g. 450 + +*** + + + +### dashUrl? + +> `optional` **dashUrl**: `string` + +The URL to the DASH playlist file. E.g. "https://v.redd.it/abc123/DASHPlaylist.mpd" + +*** + + + +### duration? + +> `optional` **duration**: `number` + +The duration of the video in seconds. E.g. 30 + +*** + + + +### fallbackUrl? + +> `optional` **fallbackUrl**: `string` + +The direct URL to the video. E.g. "https://v.redd.it/abc123/DASH_1080.mp4?source=fallback" + +*** + + + +### height? + +> `optional` **height**: `number` + +The height of the video in pixels. E.g. 1080 + +*** + + + +### hlsUrl? + +> `optional` **hlsUrl**: `string` + +The URL to the HLS playlist file. E.g. "https://v.redd.it/abc123/HLSPlaylist.m3u8" + +*** + + + +### isGif? + +> `optional` **isGif**: `boolean` + +If `true`, the video is a GIF + +*** + + + +### scrubberMediaUrl? + +> `optional` **scrubberMediaUrl**: `string` + +The URL to the scrubber media file. E.g. "https://v.redd.it/abc123/DASH_96.mp4" + +*** + + + +### transcodingStatus? + +> `optional` **transcodingStatus**: `string` + +The status of the transcoding process. E.g. "completed" + +*** + + + +### width? + +> `optional` **width**: `number` + +The width of the video in pixels. E.g. 1920 diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/RelationshipType.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/RelationshipType.md new file mode 100644 index 00000000..8261513d --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/RelationshipType.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: RelationshipType + +> **RelationshipType** = `"moderator_invite"` \| `"contributor"` \| `"banned"` \| `"muted"` \| `"wikibanned"` \| `"wikicontributor"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/RemovalReason.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/RemovalReason.md new file mode 100644 index 00000000..7b91fafc --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/RemovalReason.md @@ -0,0 +1,41 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: RemovalReason + +> **RemovalReason** = `object` + +Plain data for a subreddit removal reason. Use [Subreddit.updateRemovalReason](../classes/Subreddit.md#updateremovalreason), +[Subreddit.deleteRemovalReason](../classes/Subreddit.md#deleteremovalreason), or the matching [RedditAPIClient](../../RedditAPIClient/README.md) methods to change +or remove it. + +## Properties + + + +### id + +> **id**: `string` + +The ID of the removal reason. + +*** + + + +### message + +> **message**: `string` + +The message associated with the removal reason. + +*** + + + +### title + +> **title**: `string` + +The title of the removal reason. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/RemoveRelationshipOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/RemoveRelationshipOptions.md new file mode 100644 index 00000000..85305bd3 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/RemoveRelationshipOptions.md @@ -0,0 +1,31 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: RemoveRelationshipOptions + +> **RemoveRelationshipOptions** = `object` + +## Properties + + + +### subredditName + +> **subredditName**: `string` + +*** + + + +### type + +> **type**: [`RelationshipType`](RelationshipType.md) \| `"moderator"` + +*** + + + +### username + +> **username**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ReplyToCommentOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ReplyToCommentOptions.md new file mode 100644 index 00000000..84ea7f00 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/ReplyToCommentOptions.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: ReplyToCommentOptions + +> **ReplyToCommentOptions** = [`CommentSubmissionOptions`](CommentSubmissionOptions.md) diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SecureMedia.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SecureMedia.md new file mode 100644 index 00000000..dcf52159 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SecureMedia.md @@ -0,0 +1,33 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SecureMedia + +> **SecureMedia** = `object` + +## Properties + + + +### oembed? + +> `optional` **oembed**: [`OEmbed`](OEmbed.md) + +*** + + + +### redditVideo? + +> `optional` **redditVideo**: [`RedditVideo`](RedditVideo.md) + +*** + + + +### type? + +> `optional` **type**: `string` + +The type of the OEmbed media, if present (e.g. "youtube.com") diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SendPrivateMessageAsSubredditOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SendPrivateMessageAsSubredditOptions.md new file mode 100644 index 00000000..a92572fc --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SendPrivateMessageAsSubredditOptions.md @@ -0,0 +1,15 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SendPrivateMessageAsSubredditOptions + +> **SendPrivateMessageAsSubredditOptions** = [`SendPrivateMessageOptions`](SendPrivateMessageOptions.md) & `object` + +## Type declaration + +### fromSubredditName + +> **fromSubredditName**: `string` + +The name of the subreddit the message is being sent from (without the leading r/) diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SendPrivateMessageOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SendPrivateMessageOptions.md new file mode 100644 index 00000000..c25520d5 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SendPrivateMessageOptions.md @@ -0,0 +1,37 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SendPrivateMessageOptions + +> **SendPrivateMessageOptions** = `object` + +## Properties + + + +### subject + +> **subject**: `string` + +The subject of the message. + +*** + + + +### text + +> **text**: `string` + +The body of the message in markdown text format. + +*** + + + +### to + +> **to**: `string` + +Recipient username (without the leading u/), or /r/name for that subreddit's moderators. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SetFlairOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SetFlairOptions.md new file mode 100644 index 00000000..3399c7be --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SetFlairOptions.md @@ -0,0 +1,67 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SetFlairOptions + +> **SetFlairOptions** = `object` + +## Properties + + + +### backgroundColor? + +> `optional` **backgroundColor**: `string` + +The flair background color. Either 'transparent' or a hex color code. e.g. #FFC0CB + +*** + + + +### cssClass? + +> `optional` **cssClass**: `string` + +The flair CSS class + +*** + + + +### flairTemplateId? + +> `optional` **flairTemplateId**: `string` + +The flair template's ID + +*** + + + +### subredditName + +> **subredditName**: `string` + +The name of the subreddit of the item to set the flair on + +*** + + + +### text? + +> `optional` **text**: `string` + +The flair text + +*** + + + +### textColor? + +> `optional` **textColor**: [`FlairTextColor`](FlairTextColor.md) + +The flair text color. Either 'dark' or 'light'. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SetPostFlairOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SetPostFlairOptions.md new file mode 100644 index 00000000..0735701d --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SetPostFlairOptions.md @@ -0,0 +1,15 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SetPostFlairOptions + +> **SetPostFlairOptions** = [`SetFlairOptions`](SetFlairOptions.md) & `object` + +## Type declaration + +### postId + +> **postId**: `string` + +The ID of the post to set the flair on diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SetUserFlairBatchConfig.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SetUserFlairBatchConfig.md new file mode 100644 index 00000000..9812d8ec --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SetUserFlairBatchConfig.md @@ -0,0 +1,37 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SetUserFlairBatchConfig + +> **SetUserFlairBatchConfig** = `object` + +## Properties + + + +### cssClass? + +> `optional` **cssClass**: `string` + +The flair CSS class + +*** + + + +### text? + +> `optional` **text**: `string` + +The flair text. Can't contain the comma character (",") + +*** + + + +### username + +> **username**: `string` + +The username of the user to edit the flair on diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SetUserFlairOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SetUserFlairOptions.md new file mode 100644 index 00000000..2dbd28cb --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SetUserFlairOptions.md @@ -0,0 +1,15 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SetUserFlairOptions + +> **SetUserFlairOptions** = [`SetFlairOptions`](SetFlairOptions.md) & `object` + +## Type declaration + +### username + +> **username**: `string` + +The username of the user to set the flair on diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubmitCustomPostOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubmitCustomPostOptions.md new file mode 100644 index 00000000..f879507b --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubmitCustomPostOptions.md @@ -0,0 +1,21 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SubmitCustomPostOptions + +> **SubmitCustomPostOptions** = [`CommonSubmitPostOptions`](CommonSubmitPostOptions.md) & [`SubmitCustomPostTextFallbackOptions`](SubmitCustomPostTextFallbackOptions.md) & `object` + +## Type declaration + +### postData? + +> `optional` **postData**: `PostData` + +### preview + +> **preview**: `JSX.Element` + +### userGeneratedContent? + +> `optional` **userGeneratedContent**: `UserGeneratedContent` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubmitCustomPostTextFallbackOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubmitCustomPostTextFallbackOptions.md new file mode 100644 index 00000000..8415fe9f --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubmitCustomPostTextFallbackOptions.md @@ -0,0 +1,15 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SubmitCustomPostTextFallbackOptions + +> **SubmitCustomPostTextFallbackOptions** = `object` + +## Properties + + + +### textFallback? + +> `optional` **textFallback**: [`CustomPostTextFallbackOptions`](CustomPostTextFallbackOptions.md) diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubmitLinkOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubmitLinkOptions.md new file mode 100644 index 00000000..07788e32 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubmitLinkOptions.md @@ -0,0 +1,23 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SubmitLinkOptions + +> **SubmitLinkOptions** = [`CommonSubmitPostOptions`](CommonSubmitPostOptions.md) & `object` + +## Type declaration + +### ~~resubmit?~~ + +> `optional` **resubmit**: `boolean` + +#### Deprecated + +Unsupported. This property is for backwards compatibility and +has no effect. It will removed in a future version. New code should not +use it. + +### url + +> **url**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubmitMediaOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubmitMediaOptions.md new file mode 100644 index 00000000..60d4e861 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubmitMediaOptions.md @@ -0,0 +1,21 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SubmitMediaOptions + +> **SubmitMediaOptions** = [`CommonSubmitPostOptions`](CommonSubmitPostOptions.md) & `object` + +## Type declaration + +### imageUrls? + +> `optional` **imageUrls**: \[`string`\] + +### kind + +> **kind**: `"image"` \| `"video"` \| `"videogif"` + +### videoPosterUrl? + +> `optional` **videoPosterUrl**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubmitPostOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubmitPostOptions.md new file mode 100644 index 00000000..fb71fa2f --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubmitPostOptions.md @@ -0,0 +1,13 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SubmitPostOptions + +> **SubmitPostOptions** = [`SubmitLinkOptions`](SubmitLinkOptions.md) \| [`SubmitSelfPostOptions`](SubmitSelfPostOptions.md) \| [`SubmitCustomPostOptions`](SubmitCustomPostOptions.md) \| [`SubmitMediaOptions`](SubmitMediaOptions.md) & `object` + +## Type declaration + +### subredditName + +> **subredditName**: `string` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubmitSelfPostOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubmitSelfPostOptions.md new file mode 100644 index 00000000..6c81fa36 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubmitSelfPostOptions.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SubmitSelfPostOptions + +> **SubmitSelfPostOptions** = [`PostTextOptions`](PostTextOptions.md) & [`CommonSubmitPostOptions`](CommonSubmitPostOptions.md) diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditData.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditData.md new file mode 100644 index 00000000..cdd53cdb --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditData.md @@ -0,0 +1,79 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SubredditData + +> **SubredditData** = `object` + +## Properties + + + +### communityIcon? + +> `optional` **communityIcon**: `string` + +*** + + + +### displayName? + +> `optional` **displayName**: `string` + +*** + + + +### icon? + +> `optional` **icon**: `string` + +*** + + + +### id? + +> `optional` **id**: `string` + +*** + + + +### keyColor? + +> `optional` **keyColor**: `string` + +*** + + + +### lastUpdated? + +> `optional` **lastUpdated**: `string` + +*** + + + +### name? + +> `optional` **name**: `string` + +*** + + + +### primaryColor? + +> `optional` **primaryColor**: `string` + +*** + + + +### subscribers? + +> `optional` **subscribers**: `number` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditInfo.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditInfo.md new file mode 100644 index 00000000..20b4feeb --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditInfo.md @@ -0,0 +1,241 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SubredditInfo + +> **SubredditInfo** = `object` + +A class representing information about a Subreddit. + +## Properties + + + +### activeCount? + +> `optional` **activeCount**: `number` + +*** + + + +### allAllowedPostTypes? + +> `optional` **allAllowedPostTypes**: [`PostType`](PostType.md)[] + +*** + + + +### allowedMediaInComments? + +> `optional` **allowedMediaInComments**: [`CommentMediaTypes`](CommentMediaTypes.md)[] + +*** + + + +### allowedPostCapabilities? + +> `optional` **allowedPostCapabilities**: [`PostCapabilities`](PostCapabilities.md)[] + +*** + + + +### authorFlairSettings? + +> `optional` **authorFlairSettings**: [`AuthorFlairSettings`](../classes/AuthorFlairSettings.md) + +*** + + + +### createdAt? + +> `optional` **createdAt**: `Date` + +*** + + + +### description? + +> `optional` **description**: [`SubredditDescription`](../classes/SubredditDescription.md) + +*** + + + +### detectedLanguage? + +> `optional` **detectedLanguage**: `string` + +*** + + + +### id? + +> `optional` **id**: `T5ID` + +*** + + + +### isArchivePostsEnabled? + +> `optional` **isArchivePostsEnabled**: `boolean` + +*** + + + +### isChatPostCreationAllowed? + +> `optional` **isChatPostCreationAllowed**: `boolean` + +*** + + + +### isChatPostFeatureEnabled? + +> `optional` **isChatPostFeatureEnabled**: `boolean` + +*** + + + +### isCommentingRestricted? + +> `optional` **isCommentingRestricted**: `boolean` + +*** + + + +### isCrosspostingAllowed? + +> `optional` **isCrosspostingAllowed**: `boolean` + +*** + + + +### isDiscoveryAllowed? + +> `optional` **isDiscoveryAllowed**: `boolean` + +*** + + + +### isEmojisEnabled? + +> `optional` **isEmojisEnabled**: `boolean` + +*** + + + +### isNsfw? + +> `optional` **isNsfw**: `boolean` + +*** + + + +### isPostingRestricted? + +> `optional` **isPostingRestricted**: `boolean` + +*** + + + +### isPredictionAllowed? + +> `optional` **isPredictionAllowed**: `boolean` + +*** + + + +### isPredictionContributorsAllowed? + +> `optional` **isPredictionContributorsAllowed**: `boolean` + +*** + + + +### isPredictionsTournamentAllowed? + +> `optional` **isPredictionsTournamentAllowed**: `boolean` + +*** + + + +### isQuarantined? + +> `optional` **isQuarantined**: `boolean` + +*** + + + +### isSpoilerAvailable? + +> `optional` **isSpoilerAvailable**: `boolean` + +*** + + + +### name? + +> `optional` **name**: `string` + +*** + + + +### postFlairSettings? + +> `optional` **postFlairSettings**: [`PostFlairSettings`](../classes/PostFlairSettings.md) + +*** + + + +### subscribersCount? + +> `optional` **subscribersCount**: `number` + +*** + + + +### title? + +> `optional` **title**: `string` + +*** + + + +### type? + +> `optional` **type**: [`SubredditType`](SubredditType.md) + +*** + + + +### wikiSettings? + +> `optional` **wikiSettings**: [`SubredditWikiSettings`](../classes/SubredditWikiSettings.md) diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditLeaderboard.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditLeaderboard.md new file mode 100644 index 00000000..2ab008c3 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditLeaderboard.md @@ -0,0 +1,25 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SubredditLeaderboard + +> **SubredditLeaderboard** = `object` + +An individual Leaderboard object. + +## Properties + + + +### id + +> **id**: `string` + +*** + + + +### summary + +> **summary**: [`SubredditLeaderboardSummary`](SubredditLeaderboardSummary.md) diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditLeaderboardSummary.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditLeaderboardSummary.md new file mode 100644 index 00000000..2080b349 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditLeaderboardSummary.md @@ -0,0 +1,15 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SubredditLeaderboardSummary + +> **SubredditLeaderboardSummary** = `object` + +## Properties + + + +### data + +> **data**: [`SubredditLeaderboardSummaryRow`](SubredditLeaderboardSummaryRow.md)[] diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditLeaderboardSummaryRow.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditLeaderboardSummaryRow.md new file mode 100644 index 00000000..deee2b0f --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditLeaderboardSummaryRow.md @@ -0,0 +1,31 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SubredditLeaderboardSummaryRow + +> **SubredditLeaderboardSummaryRow** = `object` + +## Properties + + + +### key + +> **key**: `string` + +*** + + + +### title + +> **title**: `string` + +*** + + + +### value + +> **value**: `number` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditSettings.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditSettings.md new file mode 100644 index 00000000..51b66fca --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditSettings.md @@ -0,0 +1,387 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SubredditSettings + +> **SubredditSettings** = `object` + +## Properties + + + +### acceptFollowers + +> **acceptFollowers**: `boolean` + +Whether the subreddit accepts followers or not. + +*** + + + +### allOriginalContent + +> **allOriginalContent**: `boolean` + +Whether all content posted on the subreddit is original. + +*** + + + +### allowChatPostCreation + +> **allowChatPostCreation**: `boolean` + +Whether users are allowed to create chat posts on the subreddit. + +*** + + + +### allowDiscovery + +> **allowDiscovery**: `boolean` + +Whether the subreddit can be discovered through search. + +*** + + + +### allowedMediaInComments + +> **allowedMediaInComments**: [`CommentMediaTypes`](CommentMediaTypes.md)[] + +List of allowed media types in the comments made in the subreddit. + +*** + + + +### allowedPostType + +> **allowedPostType**: `"any"` \| `"link"` \| `"self"` \| `"other"` + +The types of post allowed in this subreddit. Either "any", "link", "self", or "other". + +*** + + + +### allowGalleries + +> **allowGalleries**: `boolean` + +Whether the subreddit allows galleries. + +*** + + + +### allowImages + +> **allowImages**: `boolean` + +Whether the subreddit allows images. + +*** + + + +### allowPolls + +> **allowPolls**: `boolean` + +Whether the subreddit allows polls. + +*** + + + +### allowPredictionContributors + +> **allowPredictionContributors**: `boolean` + +Whether contributors are allowed to make predictions on the subreddit. + +*** + + + +### allowPredictions + +> **allowPredictions**: `boolean` + +Whether predictions are allowed on the subreddit. + +*** + + + +### allowPredictionsTournament + +> **allowPredictionsTournament**: `boolean` + +Whether prediction tournaments are allowed on the subreddit. + +*** + + + +### allowTalks + +> **allowTalks**: `boolean` + +Whether talks are allowed on the subreddit. + +*** + + + +### allowVideoGifs + +> **allowVideoGifs**: `boolean` + +Whether video GIFs are allowed on the subreddit. + +*** + + + +### allowVideos + +> **allowVideos**: `boolean` + +Whether videos are allowed on the subreddit. + +*** + + + +### bannerBackgroundColor? + +> `optional` **bannerBackgroundColor**: `string` + +a 6-digit rgb hex color of the banner e.g. `#AABBCC`, + +*** + + + +### bannerBackgroundImage? + +> `optional` **bannerBackgroundImage**: `string` + +The background image of the banner. + +*** + + + +### bannerImage? + +> `optional` **bannerImage**: `string` + +The URL of the banner image. + +*** + + + +### chatPostEnabled + +> **chatPostEnabled**: `boolean` + +Whether chat posts are enabled on the subreddit. + +*** + + + +### collectionsEnabled + +> **collectionsEnabled**: `boolean` + +Whether collections are enabled on the subreddit. + +*** + + + +### communityIcon? + +> `optional` **communityIcon**: `string` + +The URL of the community icon. + +*** + + + +### crosspostable + +> **crosspostable**: `boolean` + +Whether crossposts can be made to this subreddit. + +*** + + + +### emojisEnabled + +> **emojisEnabled**: `boolean` + +Whether emojis are enabled on the subreddit. + +*** + + + +### eventPostsEnabled + +> **eventPostsEnabled**: `boolean` + +Whether event posts are enabled on the subreddit. + +*** + + + +### headerTitle? + +> `optional` **headerTitle**: `string` + +The header title. + +*** + + + +### keyColor? + +> `optional` **keyColor**: `string` + +The 6-digit rgb hex color of the subreddit's key color, e.g. `#AABBCC`, + +*** + + + +### linkFlairEnabled + +> **linkFlairEnabled**: `boolean` + +Whether link flairs are enabled on the subreddit. + +*** + + + +### mobileBannerImage? + +> `optional` **mobileBannerImage**: `string` + +Banner image used on mobile apps. + +*** + + + +### originalContentTagEnabled + +> **originalContentTagEnabled**: `boolean` + +Whether the Original Content tag is enabled. + +*** + + + +### postFlairs + +> **postFlairs**: [`FlairSettings`](FlairSettings.md) + +The post flair settings for the subreddit. + +*** + + + +### primaryColor? + +> `optional` **primaryColor**: `string` + +The 6-digit rgb hex color of the subreddit's primary color, e.g. `#AABBCC`, + +*** + + + +### restrictCommenting + +> **restrictCommenting**: `boolean` + +Whether commenting is restricted in the subreddit. + +*** + + + +### restrictPosting + +> **restrictPosting**: `boolean` + +Whether posting is restricted in the subreddit. + +*** + + + +### shouldArchivePosts + +> **shouldArchivePosts**: `boolean` + +Whether posts in the subreddit should be automatically archived after 6 months. + +*** + + + +### spoilersEnabled + +> **spoilersEnabled**: `boolean` + +Whether the Spoiler tag is enabled. + +*** + + + +### url + +> **url**: `string` + +HTTP URL to the subreddit + +*** + + + +### userFlairs + +> **userFlairs**: [`FlairSettings`](FlairSettings.md) + +The user flair settings for the subreddit. + +*** + + + +### wikiEnabled + +> **wikiEnabled**: `boolean` + +Whether the wiki is enabled for the subreddit. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditSettingsOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditSettingsOptions.md new file mode 100644 index 00000000..95e50355 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditSettingsOptions.md @@ -0,0 +1,30 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SubredditSettingsOptions + +> **SubredditSettingsOptions** = `Partial`\<[`SubredditSettings`](SubredditSettings.md)\> & `object` + +Optional overrides for subreddit settings. Only provided fields are applied; +the rest remain unchanged when calling [Subreddit.updateSettings](../classes/Subreddit.md#updatesettings). + +## Type declaration + +### description? + +> `optional` **description**: `string` + +Subreddit description (raw markdown). Appears in the sidebar of the subreddit. + +### title? + +> `optional` **title**: `string` + +Subreddit title. + +### type? + +> `optional` **type**: [`SubredditType`](SubredditType.md) + +Subreddit type (e.g. public, private, restricted). diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditStyles.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditStyles.md new file mode 100644 index 00000000..ace4e6fc --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditStyles.md @@ -0,0 +1,377 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SubredditStyles + +> **SubredditStyles** = `object` + +A class representing the styles of a Subreddit. + +## Properties + + + +### backgroundColor? + +> `optional` **backgroundColor**: `string` + +*** + + + +### backgroundImage? + +> `optional` **backgroundImage**: `string` + +*** + + + +### backgroundImagePosition? + +> `optional` **backgroundImagePosition**: [`BackgroundImagePosition`](BackgroundImagePosition.md) + +*** + + + +### bannerBackgroundColor? + +> `optional` **bannerBackgroundColor**: `string` + +*** + + + +### bannerBackgroundImage? + +> `optional` **bannerBackgroundImage**: `string` + +*** + + + +### bannerBackgroundImagePosition? + +> `optional` **bannerBackgroundImagePosition**: [`ImagePosition`](ImagePosition.md) + +*** + + + +### bannerCommunityName? + +> `optional` **bannerCommunityName**: `string` + +*** + + + +### bannerCommunityNameFormat? + +> `optional` **bannerCommunityNameFormat**: [`CommunityNameFormat`](CommunityNameFormat.md) + +*** + + + +### bannerHeight? + +> `optional` **bannerHeight**: [`BannerHeight`](BannerHeight.md) + +*** + + + +### bannerOverlayColor? + +> `optional` **bannerOverlayColor**: `string` + +*** + + + +### bannerPositionedImage? + +> `optional` **bannerPositionedImage**: `string` + +*** + + + +### bannerPositionedImagePosition? + +> `optional` **bannerPositionedImagePosition**: [`PositionedImagePosition`](PositionedImagePosition.md) + +*** + + + +### bannerShowCommunityIcon? + +> `optional` **bannerShowCommunityIcon**: [`Visibility`](Visibility.md) + +*** + + + +### highlightColor? + +> `optional` **highlightColor**: `string` + +*** + + + +### icon? + +> `optional` **icon**: `string` + +*** + + + +### legacyBannerBackgroundImage? + +> `optional` **legacyBannerBackgroundImage**: `string` + +*** + + + +### legacyPrimaryColor? + +> `optional` **legacyPrimaryColor**: `string` + +*** + + + +### menuBackgroundBlur? + +> `optional` **menuBackgroundBlur**: `number` + +*** + + + +### menuBackgroundColor? + +> `optional` **menuBackgroundColor**: `string` + +*** + + + +### menuBackgroundImage? + +> `optional` **menuBackgroundImage**: `string` + +*** + + + +### menuBackgroundOpacity? + +> `optional` **menuBackgroundOpacity**: `number` + +*** + + + +### menuLinkColorActive? + +> `optional` **menuLinkColorActive**: `string` + +*** + + + +### menuLinkColorHover? + +> `optional` **menuLinkColorHover**: `string` + +*** + + + +### menuLinkColorInactive? + +> `optional` **menuLinkColorInactive**: `string` + +*** + + + +### menuPosition? + +> `optional` **menuPosition**: [`MenuPosition`](MenuPosition.md) + +*** + + + +### mobileBannerImage? + +> `optional` **mobileBannerImage**: `string` + +*** + + + +### mobileKeyColor? + +> `optional` **mobileKeyColor**: `string` + +*** + + + +### postBackgroundColor? + +> `optional` **postBackgroundColor**: `string` + +*** + + + +### postBackgroundImage? + +> `optional` **postBackgroundImage**: `string` + +*** + + + +### postBackgroundImagePosition? + +> `optional` **postBackgroundImagePosition**: [`ImagePosition`](ImagePosition.md) + +*** + + + +### postDownvoteCountColor? + +> `optional` **postDownvoteCountColor**: `string` + +*** + + + +### postDownvoteIconActive? + +> `optional` **postDownvoteIconActive**: `string` + +*** + + + +### postDownvoteIconInactive? + +> `optional` **postDownvoteIconInactive**: `string` + +*** + + + +### postPlaceholderImage? + +> `optional` **postPlaceholderImage**: `string` + +*** + + + +### postPlaceholderImagePosition? + +> `optional` **postPlaceholderImagePosition**: [`ImagePosition`](ImagePosition.md) + +*** + + + +### postTitleColor? + +> `optional` **postTitleColor**: `string` + +*** + + + +### postUpvoteCountColor? + +> `optional` **postUpvoteCountColor**: `string` + +*** + + + +### postUpvoteIconActive? + +> `optional` **postUpvoteIconActive**: `string` + +*** + + + +### postUpvoteIconInactive? + +> `optional` **postUpvoteIconInactive**: `string` + +*** + + + +### postVoteIcons? + +> `optional` **postVoteIcons**: [`CustomizationFlag`](CustomizationFlag.md) + +*** + + + +### primaryColor? + +> `optional` **primaryColor**: `string` + +*** + + + +### secondaryBannerPositionedImage? + +> `optional` **secondaryBannerPositionedImage**: `string` + +*** + + + +### sidebarWidgetBackgroundColor? + +> `optional` **sidebarWidgetBackgroundColor**: `string` + +*** + + + +### sidebarWidgetHeaderColor? + +> `optional` **sidebarWidgetHeaderColor**: `string` + +*** + + + +### submenuBackgroundColor? + +> `optional` **submenuBackgroundColor**: `string` + +*** + + + +### submenuBackgroundStyle? + +> `optional` **submenuBackgroundStyle**: [`CustomizationFlag`](CustomizationFlag.md) diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditType.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditType.md new file mode 100644 index 00000000..d33aba5c --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/SubredditType.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: SubredditType + +> **SubredditType** = `"public"` \| `"private"` \| `"restricted"` \| `"employees_only"` \| `"gold_only"` \| `"gold_restricted"` \| `"archived"` \| `"user"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/Trophy.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/Trophy.md new file mode 100644 index 00000000..0b2da249 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/Trophy.md @@ -0,0 +1,89 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: Trophy + +> **Trophy** = `object` + +A trophy displayed on a user's profile. + +## Properties + + + +### awardId + +> **awardId**: `T6ID` \| `undefined` + +Award ID. + +*** + + + +### description + +> **description**: `string` \| `undefined` + +Description. + +*** + + + +### grantedAt + +> **grantedAt**: `number` \| `undefined` + +When the trophy was granted (Unix timestamp). + +*** + + + +### iconSmallUrl + +> **iconSmallUrl**: `string` \| `undefined` + +URL of the small icon. Currently 40x40. + +*** + + + +### iconUrl + +> **iconUrl**: `string` \| `undefined` + +URL of the trophy icon. Currently 70x70. + +*** + + + +### id + +> **id**: `T6ID` \| `undefined` + +Trophy ID. + +*** + + + +### name + +> **name**: `string` \| `undefined` + +Display name of the trophy. + +*** + + + +### url + +> **url**: `string` \| `undefined` + +URL to redirect to when the trophy is clicked. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UnreadCountResponse.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UnreadCountResponse.md new file mode 100644 index 00000000..31dbb9b8 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UnreadCountResponse.md @@ -0,0 +1,79 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: UnreadCountResponse + +> **UnreadCountResponse** = `object` + +## Properties + + + +### appeals? + +> `optional` **appeals**: `number` + +*** + + + +### archived? + +> `optional` **archived**: `number` + +*** + + + +### filtered? + +> `optional` **filtered**: `number` + +*** + + + +### highlighted? + +> `optional` **highlighted**: `number` + +*** + + + +### inprogress? + +> `optional` **inprogress**: `number` + +*** + + + +### joinRequests? + +> `optional` **joinRequests**: `number` + +*** + + + +### mod? + +> `optional` **mod**: `number` + +*** + + + +### new? + +> `optional` **new**: `number` + +*** + + + +### notifications? + +> `optional` **notifications**: `number` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UpdatePageSettingsOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UpdatePageSettingsOptions.md new file mode 100644 index 00000000..4f6d363d --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UpdatePageSettingsOptions.md @@ -0,0 +1,47 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: UpdatePageSettingsOptions + +> **UpdatePageSettingsOptions** = `object` + +## Properties + + + +### listed + +> **listed**: `boolean` + +Whether the page should be listed in the wiki index. + +*** + + + +### page + +> **page**: `string` + +The name of the page to update settings for. + +*** + + + +### permLevel + +> **permLevel**: [`WikiPagePermissionLevel`](../enumerations/WikiPagePermissionLevel.md) + +The permission level for the page. + +*** + + + +### subredditName + +> **subredditName**: `string` + +The name of the subreddit the page is in. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UpdateRuleOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UpdateRuleOptions.md new file mode 100644 index 00000000..2c79a3ac --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UpdateRuleOptions.md @@ -0,0 +1,15 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: UpdateRuleOptions + +> **UpdateRuleOptions** = `Partial`\<`Omit`\<`UpdateSubredditRuleRequest`, `"r"` \| `"oldShortName"`\>\> & `object` + +New values for an existing rule. All fields are optional. If a field is not provided, the existing value will not be changed. + +## Type declaration + +### kind? + +> `optional` **kind**: `"all"` \| `"link"` \| `"comment"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UpdateWidgetData.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UpdateWidgetData.md new file mode 100644 index 00000000..2f554cbc --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UpdateWidgetData.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: UpdateWidgetData + +> **UpdateWidgetData** = `UpdateImageWidgetRequest` & `object` \| `UpdateCalendarWidgetRequest` & `object` \| `UpdateTextAreaWidgetRequest` & `object` \| `UpdateButtonWidgetRequest` & `object` \| `UpdateCommunityListWidgetRequest` & `object` \| `UpdatePostFlairWidgetRequest` & `object` \| `UpdateCustomWidgetRequest` & `object` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UpdateWikiPageOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UpdateWikiPageOptions.md new file mode 100644 index 00000000..f8cd52c0 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UpdateWikiPageOptions.md @@ -0,0 +1,47 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: UpdateWikiPageOptions + +> **UpdateWikiPageOptions** = `object` + +## Properties + + + +### content + +> **content**: `string` + +The new content of the page. + +*** + + + +### page + +> **page**: `string` + +The name of the page to update. + +*** + + + +### reason? + +> `optional` **reason**: `string` + +The reason for updating the page. + +*** + + + +### subredditName + +> **subredditName**: `string` + +The name of the subreddit the page is in. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UserFlair.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UserFlair.md new file mode 100644 index 00000000..6e15bace --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UserFlair.md @@ -0,0 +1,37 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: UserFlair + +> **UserFlair** = `object` + +## Properties + + + +### flairCssClass? + +> `optional` **flairCssClass**: `string` + +The CSS class applied to this flair in the UI. + +*** + + + +### flairText? + +> `optional` **flairText**: `string` + +The text displayed in the UI for this flair. + +*** + + + +### user? + +> `optional` **user**: `string` + +The username of the user to which this flair is assigned. diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UserFlairPageOptions.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UserFlairPageOptions.md new file mode 100644 index 00000000..6bf554f5 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UserFlairPageOptions.md @@ -0,0 +1,37 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: UserFlairPageOptions + +> **UserFlairPageOptions** = `object` + +## Properties + + + +### after? + +> `optional` **after**: `string` + +A user id optionally provided which will result in a slice of user flairs, starting after this user, to be returned. + +*** + + + +### before? + +> `optional` **before**: `string` + +A user id optionally provided which will result in a slice of user flairs, starting before this user, to be returned. + +*** + + + +### limit? + +> `optional` **limit**: `number` + +A limit to the number of flairs that will be returned. Default: 25, Max: 1000 diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UserNote.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UserNote.md new file mode 100644 index 00000000..6e7fc270 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UserNote.md @@ -0,0 +1,31 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: UserNote + +> **UserNote** = `object` + +## Properties + + + +### label? + +> `optional` **label**: [`UserNoteLabel`](UserNoteLabel.md) + +*** + + + +### note? + +> `optional` **note**: `string` + +*** + + + +### redditId? + +> `optional` **redditId**: `T1ID` \| `T3ID` \| `T5ID` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UserNoteLabel.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UserNoteLabel.md new file mode 100644 index 00000000..8bc357bc --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UserNoteLabel.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: UserNoteLabel + +> **UserNoteLabel** = `"BOT_BAN"` \| `"PERMA_BAN"` \| `"BAN"` \| `"ABUSE_WARNING"` \| `"SPAM_WARNING"` \| `"SPAM_WATCH"` \| `"SOLID_CONTRIBUTOR"` \| `"HELPFUL_USER"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UserSocialLink.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UserSocialLink.md new file mode 100644 index 00000000..d31a528a --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/UserSocialLink.md @@ -0,0 +1,67 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: UserSocialLink + +> **UserSocialLink** = `object` + +## Field + +id: ID of the social link. + +## Field + +handle: Display name of social media link. + +## Field + +outboundUrl: Outbound url of social media link. + +## Field + +type: Type of social media link i.e. Instagram, YouTube. + +## Field + +title: Title or name of social media link. + +## Properties + + + +### handle? + +> `optional` **handle**: `string` + +*** + + + +### id + +> **id**: `string` + +*** + + + +### outboundUrl + +> **outboundUrl**: `string` + +*** + + + +### title + +> **title**: `string` + +*** + + + +### type + +> **type**: [`SocialLinkType`](../enumerations/SocialLinkType.md) diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/Vault.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/Vault.md new file mode 100644 index 00000000..1ad0cd6a --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/Vault.md @@ -0,0 +1,77 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: Vault + +> **Vault** = `object` + +A type representing a Vault (crypto wallet). + +## Properties + + + +### address + +> **address**: `string` + +The address of the Vault. + +#### Example + +```ts +'0x205ee28744456bDBf180A0Fa7De51e0F116d54Ed' +``` + +*** + + + +### createdAt + +> **createdAt**: `string` + +The date the Vault was created. + +*** + + + +### isActive + +> **isActive**: `boolean` + +Whether the Vault is active. + +*** + + + +### provider + +> **provider**: `string` + +The provider of the Vault address. + +#### Example + +```ts +'ethereum' +``` + +*** + + + +### userId + +> **userId**: `T2ID` + +The ID (starting with t2_) of the user owning the Vault. + +#### Example + +```ts +'t2_1w72' +``` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/Visibility.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/Visibility.md new file mode 100644 index 00000000..b62cda2b --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/Visibility.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: Visibility + +> **Visibility** = `"show"` \| `"hide"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/WikiEditMode.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/WikiEditMode.md new file mode 100644 index 00000000..f1f95f02 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/WikiEditMode.md @@ -0,0 +1,7 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: WikiEditMode + +> **WikiEditMode** = `"disabled"` \| `"modonly"` \| `"anyone"` diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/WikiPageRevisionId.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/WikiPageRevisionId.md new file mode 100644 index 00000000..8531614c --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/WikiPageRevisionId.md @@ -0,0 +1,9 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: WikiPageRevisionId + +> **WikiPageRevisionId** = `` `${string}-${string}-${string}-${string}-${string}` `` + +The revision ID is a v4 UUID diff --git a/versioned_docs/version-0.13/api/redditapi/models/type-aliases/WithUserData.md b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/WithUserData.md new file mode 100644 index 00000000..ffac5e3f --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/type-aliases/WithUserData.md @@ -0,0 +1,15 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Type Alias: WithUserData + +> **WithUserData** = `object` + +## Properties + + + +### user? + +> `optional` **user**: [`ConversationUserData`](ConversationUserData.md) diff --git a/versioned_docs/version-0.13/api/redditapi/models/variables/GalleryMediaStatus.md b/versioned_docs/version-0.13/api/redditapi/models/variables/GalleryMediaStatus.md new file mode 100644 index 00000000..9e05f267 --- /dev/null +++ b/versioned_docs/version-0.13/api/redditapi/models/variables/GalleryMediaStatus.md @@ -0,0 +1,27 @@ +[**@devvit/public-api v0.13.0-dev**](../../README.md) + +*** + +# Variable: GalleryMediaStatus + +> `const` **GalleryMediaStatus**: `object` + +## Type declaration + + + +### FAILED + +> `readonly` **FAILED**: `2` = `2` + + + +### UNKNOWN + +> `readonly` **UNKNOWN**: `0` = `0` + + + +### VALID + +> `readonly` **VALID**: `1` = `1` diff --git a/versioned_docs/version-0.13/assets/ai-tools/hackathon-logo.png b/versioned_docs/version-0.13/assets/ai-tools/hackathon-logo.png new file mode 100644 index 00000000..0ce6dcaa Binary files /dev/null and b/versioned_docs/version-0.13/assets/ai-tools/hackathon-logo.png differ diff --git a/versioned_docs/version-0.13/assets/ai-tools/open-in-bolt-2x.png b/versioned_docs/version-0.13/assets/ai-tools/open-in-bolt-2x.png new file mode 100644 index 00000000..9f440b47 Binary files /dev/null and b/versioned_docs/version-0.13/assets/ai-tools/open-in-bolt-2x.png differ diff --git a/versioned_docs/version-0.13/assets/analytics/engagement-analytics.png b/versioned_docs/version-0.13/assets/analytics/engagement-analytics.png new file mode 100644 index 00000000..720619fe Binary files /dev/null and b/versioned_docs/version-0.13/assets/analytics/engagement-analytics.png differ diff --git a/versioned_docs/version-0.13/assets/analytics/journeys-1.png b/versioned_docs/version-0.13/assets/analytics/journeys-1.png new file mode 100644 index 00000000..1eadcdd8 Binary files /dev/null and b/versioned_docs/version-0.13/assets/analytics/journeys-1.png differ diff --git a/versioned_docs/version-0.13/assets/analytics/journeys-2.png b/versioned_docs/version-0.13/assets/analytics/journeys-2.png new file mode 100644 index 00000000..d100910a Binary files /dev/null and b/versioned_docs/version-0.13/assets/analytics/journeys-2.png differ diff --git a/versioned_docs/version-0.13/assets/analytics/journeys-3.png b/versioned_docs/version-0.13/assets/analytics/journeys-3.png new file mode 100644 index 00000000..4846469d Binary files /dev/null and b/versioned_docs/version-0.13/assets/analytics/journeys-3.png differ diff --git a/versioned_docs/version-0.13/assets/analytics/journeys-4.png b/versioned_docs/version-0.13/assets/analytics/journeys-4.png new file mode 100644 index 00000000..08d0098a Binary files /dev/null and b/versioned_docs/version-0.13/assets/analytics/journeys-4.png differ diff --git a/versioned_docs/version-0.13/assets/analytics/login-screen.png b/versioned_docs/version-0.13/assets/analytics/login-screen.png new file mode 100644 index 00000000..80fe24bb Binary files /dev/null and b/versioned_docs/version-0.13/assets/analytics/login-screen.png differ diff --git a/versioned_docs/version-0.13/assets/analytics/syllo-logo.png b/versioned_docs/version-0.13/assets/analytics/syllo-logo.png new file mode 100644 index 00000000..72d1bdbb Binary files /dev/null and b/versioned_docs/version-0.13/assets/analytics/syllo-logo.png differ diff --git a/versioned_docs/version-0.13/assets/analytics/syllo-play-2.png b/versioned_docs/version-0.13/assets/analytics/syllo-play-2.png new file mode 100644 index 00000000..07a37a93 Binary files /dev/null and b/versioned_docs/version-0.13/assets/analytics/syllo-play-2.png differ diff --git a/versioned_docs/version-0.13/assets/analytics/syllo-sharesheet.png b/versioned_docs/version-0.13/assets/analytics/syllo-sharesheet.png new file mode 100644 index 00000000..3f59f903 Binary files /dev/null and b/versioned_docs/version-0.13/assets/analytics/syllo-sharesheet.png differ diff --git a/versioned_docs/version-0.13/assets/app-details-5.png b/versioned_docs/version-0.13/assets/app-details-5.png new file mode 100644 index 00000000..cbaab15a Binary files /dev/null and b/versioned_docs/version-0.13/assets/app-details-5.png differ diff --git a/versioned_docs/version-0.13/assets/app-details-install-modal.png b/versioned_docs/version-0.13/assets/app-details-install-modal.png new file mode 100644 index 00000000..85be9796 Binary files /dev/null and b/versioned_docs/version-0.13/assets/app-details-install-modal.png differ diff --git a/versioned_docs/version-0.13/assets/app-details.png b/versioned_docs/version-0.13/assets/app-details.png new file mode 100644 index 00000000..049e5d9f Binary files /dev/null and b/versioned_docs/version-0.13/assets/app-details.png differ diff --git a/versioned_docs/version-0.13/assets/app-image-cover.png b/versioned_docs/version-0.13/assets/app-image-cover.png new file mode 100644 index 00000000..c3a4ac02 Binary files /dev/null and b/versioned_docs/version-0.13/assets/app-image-cover.png differ diff --git a/versioned_docs/version-0.13/assets/app-image-fill.png b/versioned_docs/version-0.13/assets/app-image-fill.png new file mode 100644 index 00000000..4b531d9e Binary files /dev/null and b/versioned_docs/version-0.13/assets/app-image-fill.png differ diff --git a/versioned_docs/version-0.13/assets/app-image-fit.png b/versioned_docs/version-0.13/assets/app-image-fit.png new file mode 100644 index 00000000..d37a95fc Binary files /dev/null and b/versioned_docs/version-0.13/assets/app-image-fit.png differ diff --git a/versioned_docs/version-0.13/assets/app-image-fixed-size.png b/versioned_docs/version-0.13/assets/app-image-fixed-size.png new file mode 100644 index 00000000..4497894a Binary files /dev/null and b/versioned_docs/version-0.13/assets/app-image-fixed-size.png differ diff --git a/versioned_docs/version-0.13/assets/app-image-relative-size.png b/versioned_docs/version-0.13/assets/app-image-relative-size.png new file mode 100644 index 00000000..6289cab2 Binary files /dev/null and b/versioned_docs/version-0.13/assets/app-image-relative-size.png differ diff --git a/versioned_docs/version-0.13/assets/app-install-2.png b/versioned_docs/version-0.13/assets/app-install-2.png new file mode 100644 index 00000000..8c15e66d Binary files /dev/null and b/versioned_docs/version-0.13/assets/app-install-2.png differ diff --git a/versioned_docs/version-0.13/assets/app-update.png b/versioned_docs/version-0.13/assets/app-update.png new file mode 100644 index 00000000..498c440b Binary files /dev/null and b/versioned_docs/version-0.13/assets/app-update.png differ diff --git a/versioned_docs/version-0.13/assets/app_account_everything_permissions.png b/versioned_docs/version-0.13/assets/app_account_everything_permissions.png new file mode 100644 index 00000000..a6d87f39 Binary files /dev/null and b/versioned_docs/version-0.13/assets/app_account_everything_permissions.png differ diff --git a/versioned_docs/version-0.13/assets/app_analytics.png b/versioned_docs/version-0.13/assets/app_analytics.png new file mode 100644 index 00000000..1a04a174 Binary files /dev/null and b/versioned_docs/version-0.13/assets/app_analytics.png differ diff --git a/versioned_docs/version-0.13/assets/app_config_screen.png b/versioned_docs/version-0.13/assets/app_config_screen.png new file mode 100644 index 00000000..0bc1afa9 Binary files /dev/null and b/versioned_docs/version-0.13/assets/app_config_screen.png differ diff --git a/versioned_docs/version-0.13/assets/app_details.png b/versioned_docs/version-0.13/assets/app_details.png new file mode 100644 index 00000000..260522ab Binary files /dev/null and b/versioned_docs/version-0.13/assets/app_details.png differ diff --git a/versioned_docs/version-0.13/assets/app_failed_build_error.png b/versioned_docs/version-0.13/assets/app_failed_build_error.png new file mode 100644 index 00000000..af542820 Binary files /dev/null and b/versioned_docs/version-0.13/assets/app_failed_build_error.png differ diff --git a/versioned_docs/version-0.13/assets/app_install.png b/versioned_docs/version-0.13/assets/app_install.png new file mode 100644 index 00000000..c7e4527c Binary files /dev/null and b/versioned_docs/version-0.13/assets/app_install.png differ diff --git a/versioned_docs/version-0.13/assets/app_permissions.png b/versioned_docs/version-0.13/assets/app_permissions.png new file mode 100644 index 00000000..a308d4fd Binary files /dev/null and b/versioned_docs/version-0.13/assets/app_permissions.png differ diff --git a/versioned_docs/version-0.13/assets/app_upgrade.png b/versioned_docs/version-0.13/assets/app_upgrade.png new file mode 100644 index 00000000..28e41adb Binary files /dev/null and b/versioned_docs/version-0.13/assets/app_upgrade.png differ diff --git a/versioned_docs/version-0.13/assets/app_upgrade_confirm.png b/versioned_docs/version-0.13/assets/app_upgrade_confirm.png new file mode 100644 index 00000000..8722b1c9 Binary files /dev/null and b/versioned_docs/version-0.13/assets/app_upgrade_confirm.png differ diff --git a/versioned_docs/version-0.13/assets/app_versions_panel.png b/versioned_docs/version-0.13/assets/app_versions_panel.png new file mode 100644 index 00000000..bea6fa36 Binary files /dev/null and b/versioned_docs/version-0.13/assets/app_versions_panel.png differ diff --git a/versioned_docs/version-0.13/assets/ask_ai_icon.png b/versioned_docs/version-0.13/assets/ask_ai_icon.png new file mode 100644 index 00000000..830c3ca0 Binary files /dev/null and b/versioned_docs/version-0.13/assets/ask_ai_icon.png differ diff --git a/versioned_docs/version-0.13/assets/ask_ai_start_project.png b/versioned_docs/version-0.13/assets/ask_ai_start_project.png new file mode 100644 index 00000000..fd320fa2 Binary files /dev/null and b/versioned_docs/version-0.13/assets/ask_ai_start_project.png differ diff --git a/versioned_docs/version-0.13/assets/ask_ai_troubleshoot.png b/versioned_docs/version-0.13/assets/ask_ai_troubleshoot.png new file mode 100644 index 00000000..85cd754f Binary files /dev/null and b/versioned_docs/version-0.13/assets/ask_ai_troubleshoot.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-button-appearance.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-button-appearance.png new file mode 100644 index 00000000..aaeaa5a1 Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-button-appearance.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-button-disabled.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-button-disabled.png new file mode 100644 index 00000000..7fe9159f Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-button-disabled.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-button-icon-label.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-button-icon-label.png new file mode 100644 index 00000000..14efdb9c Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-button-icon-label.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-button-sizes.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-button-sizes.png new file mode 100644 index 00000000..30ec19b0 Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-button-sizes.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-alienblue.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-alienblue.png new file mode 100644 index 00000000..312d6c79 Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-alienblue.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-berrypurple.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-berrypurple.png new file mode 100644 index 00000000..c80c7975 Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-berrypurple.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-brown.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-brown.png new file mode 100644 index 00000000..0892f8b6 Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-brown.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-coolgray.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-coolgray.png new file mode 100644 index 00000000..d2480c24 Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-coolgray.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-kiwigreen.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-kiwigreen.png new file mode 100644 index 00000000..806b0512 Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-kiwigreen.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-lightblue.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-lightblue.png new file mode 100644 index 00000000..b260a918 Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-lightblue.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-lime.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-lime.png new file mode 100644 index 00000000..eb3abec7 Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-lime.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-mintgreen.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-mintgreen.png new file mode 100644 index 00000000..76fad270 Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-mintgreen.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-orangered.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-orangered.png new file mode 100644 index 00000000..436d6b70 Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-orangered.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-periwinkle.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-periwinkle.png new file mode 100644 index 00000000..10bddd8b Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-periwinkle.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-puregray.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-puregray.png new file mode 100644 index 00000000..e528ba04 Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-puregray.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-red.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-red.png new file mode 100644 index 00000000..9f4c7bde Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-red.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-sakurapink.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-sakurapink.png new file mode 100644 index 00000000..37b138df Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-sakurapink.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-yellow.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-yellow.png new file mode 100644 index 00000000..d473be2a Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-yellow.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-yelloworange.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-yelloworange.png new file mode 100644 index 00000000..bf4d5945 Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-colors-yelloworange.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-stacks-alignment.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-stacks-alignment.png new file mode 100644 index 00000000..e270da2d Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-stacks-alignment.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-stacks-border-width.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-stacks-border-width.png new file mode 100644 index 00000000..ed4f3669 Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-stacks-border-width.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-stacks-corner-radius.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-stacks-corner-radius.png new file mode 100644 index 00000000..cc3e6a57 Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-stacks-corner-radius.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-stacks-gap.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-stacks-gap.png new file mode 100644 index 00000000..9999f283 Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-stacks-gap.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-stacks-padding.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-stacks-padding.png new file mode 100644 index 00000000..a7dbe692 Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-stacks-padding.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-stacks-reverse.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-stacks-reverse.png new file mode 100644 index 00000000..d2210806 Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-stacks-reverse.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-text-size.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-text-size.png new file mode 100644 index 00000000..456ef23d Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-text-size.png differ diff --git a/versioned_docs/version-0.13/assets/blocks/docs-blocks-text-weights.png b/versioned_docs/version-0.13/assets/blocks/docs-blocks-text-weights.png new file mode 100644 index 00000000..fd3651d6 Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks/docs-blocks-text-weights.png differ diff --git a/versioned_docs/version-0.13/assets/blocks_post_example.png b/versioned_docs/version-0.13/assets/blocks_post_example.png new file mode 100644 index 00000000..8a5adcd9 Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks_post_example.png differ diff --git a/versioned_docs/version-0.13/assets/blocks_post_menu.png b/versioned_docs/version-0.13/assets/blocks_post_menu.png new file mode 100644 index 00000000..41d373fb Binary files /dev/null and b/versioned_docs/version-0.13/assets/blocks_post_menu.png differ diff --git a/versioned_docs/version-0.13/assets/capabilities/adding-links/adding-links-external-link-dialog.png b/versioned_docs/version-0.13/assets/capabilities/adding-links/adding-links-external-link-dialog.png new file mode 100644 index 00000000..cfb9e946 Binary files /dev/null and b/versioned_docs/version-0.13/assets/capabilities/adding-links/adding-links-external-link-dialog.png differ diff --git a/versioned_docs/version-0.13/assets/capabilities/app-configurations/app-configurations-all-types.png b/versioned_docs/version-0.13/assets/capabilities/app-configurations/app-configurations-all-types.png new file mode 100644 index 00000000..294e141a Binary files /dev/null and b/versioned_docs/version-0.13/assets/capabilities/app-configurations/app-configurations-all-types.png differ diff --git a/versioned_docs/version-0.13/assets/capabilities/app-configurations/app-configurations-data-toast.png b/versioned_docs/version-0.13/assets/capabilities/app-configurations/app-configurations-data-toast.png new file mode 100644 index 00000000..7899fa2a Binary files /dev/null and b/versioned_docs/version-0.13/assets/capabilities/app-configurations/app-configurations-data-toast.png differ diff --git a/versioned_docs/version-0.13/assets/capabilities/app-configurations/app-configurations-validation.png b/versioned_docs/version-0.13/assets/capabilities/app-configurations/app-configurations-validation.png new file mode 100644 index 00000000..c2c093fc Binary files /dev/null and b/versioned_docs/version-0.13/assets/capabilities/app-configurations/app-configurations-validation.png differ diff --git a/versioned_docs/version-0.13/assets/capabilities/app_permissions.png b/versioned_docs/version-0.13/assets/capabilities/app_permissions.png new file mode 100644 index 00000000..523c13d6 Binary files /dev/null and b/versioned_docs/version-0.13/assets/capabilities/app_permissions.png differ diff --git a/versioned_docs/version-0.13/assets/capabilities/forms/forms-boolean.png b/versioned_docs/version-0.13/assets/capabilities/forms/forms-boolean.png new file mode 100644 index 00000000..7b4f93d9 Binary files /dev/null and b/versioned_docs/version-0.13/assets/capabilities/forms/forms-boolean.png differ diff --git a/versioned_docs/version-0.13/assets/capabilities/forms/forms-dialog.png b/versioned_docs/version-0.13/assets/capabilities/forms/forms-dialog.png new file mode 100644 index 00000000..99cf1bdd Binary files /dev/null and b/versioned_docs/version-0.13/assets/capabilities/forms/forms-dialog.png differ diff --git a/versioned_docs/version-0.13/assets/capabilities/forms/forms-image.png b/versioned_docs/version-0.13/assets/capabilities/forms/forms-image.png new file mode 100644 index 00000000..8f714bd8 Binary files /dev/null and b/versioned_docs/version-0.13/assets/capabilities/forms/forms-image.png differ diff --git a/versioned_docs/version-0.13/assets/capabilities/forms/forms-number.png b/versioned_docs/version-0.13/assets/capabilities/forms/forms-number.png new file mode 100644 index 00000000..fae216de Binary files /dev/null and b/versioned_docs/version-0.13/assets/capabilities/forms/forms-number.png differ diff --git a/versioned_docs/version-0.13/assets/capabilities/forms/forms-paragraph.png b/versioned_docs/version-0.13/assets/capabilities/forms/forms-paragraph.png new file mode 100644 index 00000000..a3a0d19c Binary files /dev/null and b/versioned_docs/version-0.13/assets/capabilities/forms/forms-paragraph.png differ diff --git a/versioned_docs/version-0.13/assets/capabilities/forms/forms-select.png b/versioned_docs/version-0.13/assets/capabilities/forms/forms-select.png new file mode 100644 index 00000000..c92fa319 Binary files /dev/null and b/versioned_docs/version-0.13/assets/capabilities/forms/forms-select.png differ diff --git a/versioned_docs/version-0.13/assets/capabilities/forms/forms-string.png b/versioned_docs/version-0.13/assets/capabilities/forms/forms-string.png new file mode 100644 index 00000000..8fc3fe94 Binary files /dev/null and b/versioned_docs/version-0.13/assets/capabilities/forms/forms-string.png differ diff --git a/versioned_docs/version-0.13/assets/capabilities/http-fetch/http-fetch-legal-links.png b/versioned_docs/version-0.13/assets/capabilities/http-fetch/http-fetch-legal-links.png new file mode 100644 index 00000000..fe5659a9 Binary files /dev/null and b/versioned_docs/version-0.13/assets/capabilities/http-fetch/http-fetch-legal-links.png differ diff --git a/versioned_docs/version-0.13/assets/capabilities/menu-actions/menu-actions-subreddit.png b/versioned_docs/version-0.13/assets/capabilities/menu-actions/menu-actions-subreddit.png new file mode 100644 index 00000000..c5d63135 Binary files /dev/null and b/versioned_docs/version-0.13/assets/capabilities/menu-actions/menu-actions-subreddit.png differ diff --git a/versioned_docs/version-0.13/assets/clock-plugin.png b/versioned_docs/version-0.13/assets/clock-plugin.png new file mode 100644 index 00000000..a5319e8c Binary files /dev/null and b/versioned_docs/version-0.13/assets/clock-plugin.png differ diff --git a/versioned_docs/version-0.13/assets/communities-install-list.png b/versioned_docs/version-0.13/assets/communities-install-list.png new file mode 100644 index 00000000..9fd1f43d Binary files /dev/null and b/versioned_docs/version-0.13/assets/communities-install-list.png differ diff --git a/versioned_docs/version-0.13/assets/communities_install.png b/versioned_docs/version-0.13/assets/communities_install.png new file mode 100644 index 00000000..24241213 Binary files /dev/null and b/versioned_docs/version-0.13/assets/communities_install.png differ diff --git a/versioned_docs/version-0.13/assets/community-games/bubbleshooterpro.png b/versioned_docs/version-0.13/assets/community-games/bubbleshooterpro.png new file mode 100644 index 00000000..82df4cff Binary files /dev/null and b/versioned_docs/version-0.13/assets/community-games/bubbleshooterpro.png differ diff --git a/versioned_docs/version-0.13/assets/community-games/farmmergevalley.png b/versioned_docs/version-0.13/assets/community-games/farmmergevalley.png new file mode 100644 index 00000000..85d98806 Binary files /dev/null and b/versioned_docs/version-0.13/assets/community-games/farmmergevalley.png differ diff --git a/versioned_docs/version-0.13/assets/community-games/hotandcold.jpg b/versioned_docs/version-0.13/assets/community-games/hotandcold.jpg new file mode 100644 index 00000000..a1d01bb9 Binary files /dev/null and b/versioned_docs/version-0.13/assets/community-games/hotandcold.jpg differ diff --git a/versioned_docs/version-0.13/assets/community-games/syllo_leaderboard.jpg b/versioned_docs/version-0.13/assets/community-games/syllo_leaderboard.jpg new file mode 100644 index 00000000..5366b9e9 Binary files /dev/null and b/versioned_docs/version-0.13/assets/community-games/syllo_leaderboard.jpg differ diff --git a/versioned_docs/version-0.13/assets/custom-posts/custom-posts-dimensions.png b/versioned_docs/version-0.13/assets/custom-posts/custom-posts-dimensions.png new file mode 100644 index 00000000..7aaed307 Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom-posts/custom-posts-dimensions.png differ diff --git a/versioned_docs/version-0.13/assets/custom-posts/custom-posts-overview.png b/versioned_docs/version-0.13/assets/custom-posts/custom-posts-overview.png new file mode 100644 index 00000000..cbd62206 Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom-posts/custom-posts-overview.png differ diff --git a/versioned_docs/version-0.13/assets/custom-posts/custom-posts-useinterval.png b/versioned_docs/version-0.13/assets/custom-posts/custom-posts-useinterval.png new file mode 100644 index 00000000..c49ea89d Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom-posts/custom-posts-useinterval.png differ diff --git a/versioned_docs/version-0.13/assets/custom-posts/templates/template-app-settings-alt.png b/versioned_docs/version-0.13/assets/custom-posts/templates/template-app-settings-alt.png new file mode 100644 index 00000000..0a2cd1c7 Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom-posts/templates/template-app-settings-alt.png differ diff --git a/versioned_docs/version-0.13/assets/custom-posts/templates/template-app-settings.png b/versioned_docs/version-0.13/assets/custom-posts/templates/template-app-settings.png new file mode 100644 index 00000000..9c48595f Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom-posts/templates/template-app-settings.png differ diff --git a/versioned_docs/version-0.13/assets/custom-posts/templates/template-custom-experience-pro.png b/versioned_docs/version-0.13/assets/custom-posts/templates/template-custom-experience-pro.png new file mode 100644 index 00000000..b3368b24 Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom-posts/templates/template-custom-experience-pro.png differ diff --git a/versioned_docs/version-0.13/assets/custom-posts/templates/template-custom-experience.png b/versioned_docs/version-0.13/assets/custom-posts/templates/template-custom-experience.png new file mode 100644 index 00000000..cfc78b5c Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom-posts/templates/template-custom-experience.png differ diff --git a/versioned_docs/version-0.13/assets/custom-posts/templates/template-empty.png b/versioned_docs/version-0.13/assets/custom-posts/templates/template-empty.png new file mode 100644 index 00000000..1042adcb Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom-posts/templates/template-empty.png differ diff --git a/versioned_docs/version-0.13/assets/custom-posts/templates/template-forms.png b/versioned_docs/version-0.13/assets/custom-posts/templates/template-forms.png new file mode 100644 index 00000000..f2aec204 Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom-posts/templates/template-forms.png differ diff --git a/versioned_docs/version-0.13/assets/custom-posts/templates/template-image-uploads.png b/versioned_docs/version-0.13/assets/custom-posts/templates/template-image-uploads.png new file mode 100644 index 00000000..567e71ab Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom-posts/templates/template-image-uploads.png differ diff --git a/versioned_docs/version-0.13/assets/custom-posts/templates/template-intro-to-devvit.png b/versioned_docs/version-0.13/assets/custom-posts/templates/template-intro-to-devvit.png new file mode 100644 index 00000000..6c7df8e2 Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom-posts/templates/template-intro-to-devvit.png differ diff --git a/versioned_docs/version-0.13/assets/custom-posts/templates/template-menu-action.png b/versioned_docs/version-0.13/assets/custom-posts/templates/template-menu-action.png new file mode 100644 index 00000000..b3e1b2e7 Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom-posts/templates/template-menu-action.png differ diff --git a/versioned_docs/version-0.13/assets/custom-posts/templates/template-redis.png b/versioned_docs/version-0.13/assets/custom-posts/templates/template-redis.png new file mode 100644 index 00000000..65e69adb Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom-posts/templates/template-redis.png differ diff --git a/versioned_docs/version-0.13/assets/custom-posts/templates/template-triggers.png b/versioned_docs/version-0.13/assets/custom-posts/templates/template-triggers.png new file mode 100644 index 00000000..a1a3360e Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom-posts/templates/template-triggers.png differ diff --git a/versioned_docs/version-0.13/assets/custom_action.png b/versioned_docs/version-0.13/assets/custom_action.png new file mode 100644 index 00000000..8456a516 Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom_action.png differ diff --git a/versioned_docs/version-0.13/assets/custom_post_form_example_1.png b/versioned_docs/version-0.13/assets/custom_post_form_example_1.png new file mode 100644 index 00000000..caa778ef Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom_post_form_example_1.png differ diff --git a/versioned_docs/version-0.13/assets/custom_post_form_example_2.png b/versioned_docs/version-0.13/assets/custom_post_form_example_2.png new file mode 100644 index 00000000..bdfa90bc Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom_post_form_example_2.png differ diff --git a/versioned_docs/version-0.13/assets/custom_post_menu_item.png b/versioned_docs/version-0.13/assets/custom_post_menu_item.png new file mode 100644 index 00000000..e564fee5 Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom_post_menu_item.png differ diff --git a/versioned_docs/version-0.13/assets/custom_post_new_window.png b/versioned_docs/version-0.13/assets/custom_post_new_window.png new file mode 100644 index 00000000..77d23d09 Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom_post_new_window.png differ diff --git a/versioned_docs/version-0.13/assets/custom_post_poll_example_1.png b/versioned_docs/version-0.13/assets/custom_post_poll_example_1.png new file mode 100644 index 00000000..1b96bd7a Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom_post_poll_example_1.png differ diff --git a/versioned_docs/version-0.13/assets/custom_post_poll_example_2.png b/versioned_docs/version-0.13/assets/custom_post_poll_example_2.png new file mode 100644 index 00000000..60d8327c Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom_post_poll_example_2.png differ diff --git a/versioned_docs/version-0.13/assets/custom_post_poll_example_3.png b/versioned_docs/version-0.13/assets/custom_post_poll_example_3.png new file mode 100644 index 00000000..7395d418 Binary files /dev/null and b/versioned_docs/version-0.13/assets/custom_post_poll_example_3.png differ diff --git a/versioned_docs/version-0.13/assets/default_product_image.png b/versioned_docs/version-0.13/assets/default_product_image.png new file mode 100644 index 00000000..90888788 Binary files /dev/null and b/versioned_docs/version-0.13/assets/default_product_image.png differ diff --git a/versioned_docs/version-0.13/assets/developer_permissions.png b/versioned_docs/version-0.13/assets/developer_permissions.png new file mode 100644 index 00000000..18aad5fe Binary files /dev/null and b/versioned_docs/version-0.13/assets/developer_permissions.png differ diff --git a/versioned_docs/version-0.13/assets/devvit-flair.png b/versioned_docs/version-0.13/assets/devvit-flair.png new file mode 100644 index 00000000..e9d73983 Binary files /dev/null and b/versioned_docs/version-0.13/assets/devvit-flair.png differ diff --git a/versioned_docs/version-0.13/assets/devvit_web/clone_repo.png b/versioned_docs/version-0.13/assets/devvit_web/clone_repo.png new file mode 100644 index 00000000..1f761b48 Binary files /dev/null and b/versioned_docs/version-0.13/assets/devvit_web/clone_repo.png differ diff --git a/versioned_docs/version-0.13/assets/devvit_web/create_playtest_post.png b/versioned_docs/version-0.13/assets/devvit_web/create_playtest_post.png new file mode 100644 index 00000000..56ed69f3 Binary files /dev/null and b/versioned_docs/version-0.13/assets/devvit_web/create_playtest_post.png differ diff --git a/versioned_docs/version-0.13/assets/devvit_web/create_repo.png b/versioned_docs/version-0.13/assets/devvit_web/create_repo.png new file mode 100644 index 00000000..e5d61218 Binary files /dev/null and b/versioned_docs/version-0.13/assets/devvit_web/create_repo.png differ diff --git a/versioned_docs/version-0.13/assets/devvit_web/devvit_web_arch.png b/versioned_docs/version-0.13/assets/devvit_web/devvit_web_arch.png new file mode 100644 index 00000000..dc5e4015 Binary files /dev/null and b/versioned_docs/version-0.13/assets/devvit_web/devvit_web_arch.png differ diff --git a/versioned_docs/version-0.13/assets/devvit_web/playtest_app.png b/versioned_docs/version-0.13/assets/devvit_web/playtest_app.png new file mode 100644 index 00000000..e15753ac Binary files /dev/null and b/versioned_docs/version-0.13/assets/devvit_web/playtest_app.png differ diff --git a/versioned_docs/version-0.13/assets/devvit_web/set_up_repo.png b/versioned_docs/version-0.13/assets/devvit_web/set_up_repo.png new file mode 100644 index 00000000..b0fb9534 Binary files /dev/null and b/versioned_docs/version-0.13/assets/devvit_web/set_up_repo.png differ diff --git a/versioned_docs/version-0.13/assets/docs-app-image-assets-1.png b/versioned_docs/version-0.13/assets/docs-app-image-assets-1.png new file mode 100644 index 00000000..e7aa477e Binary files /dev/null and b/versioned_docs/version-0.13/assets/docs-app-image-assets-1.png differ diff --git a/versioned_docs/version-0.13/assets/docs-app-image-assets-2.png b/versioned_docs/version-0.13/assets/docs-app-image-assets-2.png new file mode 100644 index 00000000..a8bfd131 Binary files /dev/null and b/versioned_docs/version-0.13/assets/docs-app-image-assets-2.png differ diff --git a/versioned_docs/version-0.13/assets/domain_exceptions.png b/versioned_docs/version-0.13/assets/domain_exceptions.png new file mode 100644 index 00000000..fe7bd18e Binary files /dev/null and b/versioned_docs/version-0.13/assets/domain_exceptions.png differ diff --git a/versioned_docs/version-0.13/assets/examples/app-bingo.png b/versioned_docs/version-0.13/assets/examples/app-bingo.png new file mode 100644 index 00000000..f74c9147 Binary files /dev/null and b/versioned_docs/version-0.13/assets/examples/app-bingo.png differ diff --git a/versioned_docs/version-0.13/assets/examples/app-blocks-gallery.png b/versioned_docs/version-0.13/assets/examples/app-blocks-gallery.png new file mode 100644 index 00000000..9238ae7a Binary files /dev/null and b/versioned_docs/version-0.13/assets/examples/app-blocks-gallery.png differ diff --git a/versioned_docs/version-0.13/assets/examples/app-capture-the-flag.png b/versioned_docs/version-0.13/assets/examples/app-capture-the-flag.png new file mode 100644 index 00000000..b11225ad Binary files /dev/null and b/versioned_docs/version-0.13/assets/examples/app-capture-the-flag.png differ diff --git a/versioned_docs/version-0.13/assets/examples/app-chess-quizzes.png b/versioned_docs/version-0.13/assets/examples/app-chess-quizzes.png new file mode 100644 index 00000000..15593e65 Binary files /dev/null and b/versioned_docs/version-0.13/assets/examples/app-chess-quizzes.png differ diff --git a/versioned_docs/version-0.13/assets/examples/app-feed-me.png b/versioned_docs/version-0.13/assets/examples/app-feed-me.png new file mode 100644 index 00000000..a400a3ed Binary files /dev/null and b/versioned_docs/version-0.13/assets/examples/app-feed-me.png differ diff --git a/versioned_docs/version-0.13/assets/examples/app-icon-gallery.png b/versioned_docs/version-0.13/assets/examples/app-icon-gallery.png new file mode 100644 index 00000000..9982303e Binary files /dev/null and b/versioned_docs/version-0.13/assets/examples/app-icon-gallery.png differ diff --git a/versioned_docs/version-0.13/assets/examples/app-live-scores-soccer.png b/versioned_docs/version-0.13/assets/examples/app-live-scores-soccer.png new file mode 100644 index 00000000..4f35be77 Binary files /dev/null and b/versioned_docs/version-0.13/assets/examples/app-live-scores-soccer.png differ diff --git a/versioned_docs/version-0.13/assets/examples/app-live-scores-taylor-version.png b/versioned_docs/version-0.13/assets/examples/app-live-scores-taylor-version.png new file mode 100644 index 00000000..da6c6d2c Binary files /dev/null and b/versioned_docs/version-0.13/assets/examples/app-live-scores-taylor-version.png differ diff --git a/versioned_docs/version-0.13/assets/examples/app-livescores-ts-desktop.png b/versioned_docs/version-0.13/assets/examples/app-livescores-ts-desktop.png new file mode 100644 index 00000000..164e2793 Binary files /dev/null and b/versioned_docs/version-0.13/assets/examples/app-livescores-ts-desktop.png differ diff --git a/versioned_docs/version-0.13/assets/examples/app-livescores-ts-mobile.png b/versioned_docs/version-0.13/assets/examples/app-livescores-ts-mobile.png new file mode 100644 index 00000000..cea03de2 Binary files /dev/null and b/versioned_docs/version-0.13/assets/examples/app-livescores-ts-mobile.png differ diff --git a/versioned_docs/version-0.13/assets/examples/app-minesweeper.png b/versioned_docs/version-0.13/assets/examples/app-minesweeper.png new file mode 100644 index 00000000..3503c641 Binary files /dev/null and b/versioned_docs/version-0.13/assets/examples/app-minesweeper.png differ diff --git a/versioned_docs/version-0.13/assets/examples/app-mtg.png b/versioned_docs/version-0.13/assets/examples/app-mtg.png new file mode 100644 index 00000000..1dc7f1fe Binary files /dev/null and b/versioned_docs/version-0.13/assets/examples/app-mtg.png differ diff --git a/versioned_docs/version-0.13/assets/examples/app-pixelary.png b/versioned_docs/version-0.13/assets/examples/app-pixelary.png new file mode 100644 index 00000000..0cc45d8c Binary files /dev/null and b/versioned_docs/version-0.13/assets/examples/app-pixelary.png differ diff --git a/versioned_docs/version-0.13/assets/experience-post-example.png b/versioned_docs/version-0.13/assets/experience-post-example.png new file mode 100644 index 00000000..619814e5 Binary files /dev/null and b/versioned_docs/version-0.13/assets/experience-post-example.png differ diff --git a/versioned_docs/version-0.13/assets/fallback_markdown.png b/versioned_docs/version-0.13/assets/fallback_markdown.png new file mode 100644 index 00000000..7c271276 Binary files /dev/null and b/versioned_docs/version-0.13/assets/fallback_markdown.png differ diff --git a/versioned_docs/version-0.13/assets/fallback_richtext.png b/versioned_docs/version-0.13/assets/fallback_richtext.png new file mode 100644 index 00000000..1e247c30 Binary files /dev/null and b/versioned_docs/version-0.13/assets/fallback_richtext.png differ diff --git a/versioned_docs/version-0.13/assets/fallback_text_string.png b/versioned_docs/version-0.13/assets/fallback_text_string.png new file mode 100644 index 00000000..06e05e21 Binary files /dev/null and b/versioned_docs/version-0.13/assets/fallback_text_string.png differ diff --git a/versioned_docs/version-0.13/assets/featured_cd_mobile.png b/versioned_docs/version-0.13/assets/featured_cd_mobile.png new file mode 100644 index 00000000..15bdd76a Binary files /dev/null and b/versioned_docs/version-0.13/assets/featured_cd_mobile.png differ diff --git a/versioned_docs/version-0.13/assets/featured_cd_web.png b/versioned_docs/version-0.13/assets/featured_cd_web.png new file mode 100644 index 00000000..66352d30 Binary files /dev/null and b/versioned_docs/version-0.13/assets/featured_cd_web.png differ diff --git a/versioned_docs/version-0.13/assets/featured_games.png b/versioned_docs/version-0.13/assets/featured_games.png new file mode 100644 index 00000000..91c5c435 Binary files /dev/null and b/versioned_docs/version-0.13/assets/featured_games.png differ diff --git a/versioned_docs/version-0.13/assets/form.png b/versioned_docs/version-0.13/assets/form.png new file mode 100644 index 00000000..58519c1c Binary files /dev/null and b/versioned_docs/version-0.13/assets/form.png differ diff --git a/versioned_docs/version-0.13/assets/form_popup.png b/versioned_docs/version-0.13/assets/form_popup.png new file mode 100644 index 00000000..003f53d0 Binary files /dev/null and b/versioned_docs/version-0.13/assets/form_popup.png differ diff --git a/versioned_docs/version-0.13/assets/get_settings_toast_output.png b/versioned_docs/version-0.13/assets/get_settings_toast_output.png new file mode 100644 index 00000000..0b5fe885 Binary files /dev/null and b/versioned_docs/version-0.13/assets/get_settings_toast_output.png differ diff --git a/versioned_docs/version-0.13/assets/hello_block.png b/versioned_docs/version-0.13/assets/hello_block.png new file mode 100644 index 00000000..e6f3bf6c Binary files /dev/null and b/versioned_docs/version-0.13/assets/hello_block.png differ diff --git a/versioned_docs/version-0.13/assets/hello_blocks_v2.png b/versioned_docs/version-0.13/assets/hello_blocks_v2.png new file mode 100644 index 00000000..f71c4fed Binary files /dev/null and b/versioned_docs/version-0.13/assets/hello_blocks_v2.png differ diff --git a/versioned_docs/version-0.13/assets/icon_examples_changelog.png b/versioned_docs/version-0.13/assets/icon_examples_changelog.png new file mode 100644 index 00000000..fbb920ae Binary files /dev/null and b/versioned_docs/version-0.13/assets/icon_examples_changelog.png differ diff --git a/versioned_docs/version-0.13/assets/icons/icon-3rd-party-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-3rd-party-fill.svg new file mode 100644 index 00000000..8a17b83f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-3rd-party-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-3rd-party-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-3rd-party-outline.svg new file mode 100644 index 00000000..543f46a2 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-3rd-party-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-activity-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-activity-fill.svg new file mode 100644 index 00000000..b075118e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-activity-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-activity-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-activity-outline.svg new file mode 100644 index 00000000..e0dd0fd3 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-activity-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-add-emoji-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-add-emoji-fill.svg new file mode 100644 index 00000000..1e258d8e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-add-emoji-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-add-emoji-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-add-emoji-outline.svg new file mode 100644 index 00000000..c0fb7077 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-add-emoji-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-add-fill-24.svg b/versioned_docs/version-0.13/assets/icons/icon-add-fill-24.svg new file mode 100644 index 00000000..99b2b25b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-add-fill-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-add-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-add-fill.svg new file mode 100644 index 00000000..59f84598 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-add-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-add-media-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-add-media-fill.svg new file mode 100644 index 00000000..cdfe2808 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-add-media-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-add-media-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-add-media-outline.svg new file mode 100644 index 00000000..5a928518 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-add-media-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-add-outline-24.svg b/versioned_docs/version-0.13/assets/icons/icon-add-outline-24.svg new file mode 100644 index 00000000..6d1c0b17 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-add-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-add-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-add-outline.svg new file mode 100644 index 00000000..ae3492c1 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-add-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-add-to-feed-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-add-to-feed-fill.svg new file mode 100644 index 00000000..f0e9ff51 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-add-to-feed-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-add-to-feed-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-add-to-feed-outline.svg new file mode 100644 index 00000000..810f0f92 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-add-to-feed-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-admin-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-admin-fill.svg new file mode 100644 index 00000000..6499db27 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-admin-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-admin-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-admin-outline.svg new file mode 100644 index 00000000..67a6ec72 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-admin-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-ads-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-ads-fill.svg new file mode 100644 index 00000000..a65520ab --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-ads-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-ads-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-ads-outline.svg new file mode 100644 index 00000000..7e422927 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-ads-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-align-center-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-align-center-fill.svg new file mode 100644 index 00000000..a1b8363f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-align-center-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-align-center-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-align-center-outline.svg new file mode 100644 index 00000000..b71c9264 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-align-center-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-align-left-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-align-left-fill.svg new file mode 100644 index 00000000..846f7cc7 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-align-left-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-align-left-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-align-left-outline.svg new file mode 100644 index 00000000..c85dc5fa --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-align-left-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-align-right-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-align-right-fill.svg new file mode 100644 index 00000000..0a6ba952 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-align-right-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-align-right-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-align-right-outline.svg new file mode 100644 index 00000000..9b9b0a2c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-align-right-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-all-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-all-fill.svg new file mode 100644 index 00000000..5ab79216 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-all-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-all-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-all-outline.svg new file mode 100644 index 00000000..eea5d15d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-all-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-appearance-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-appearance-fill.svg new file mode 100644 index 00000000..016c52f2 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-appearance-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-appearance-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-appearance-outline.svg new file mode 100644 index 00000000..d90839ac --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-appearance-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-approve-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-approve-fill.svg new file mode 100644 index 00000000..ad45b4ef --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-approve-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-approve-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-approve-outline.svg new file mode 100644 index 00000000..9d4f2563 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-approve-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-archived-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-archived-fill.svg new file mode 100644 index 00000000..ad770c5a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-archived-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-archived-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-archived-outline.svg new file mode 100644 index 00000000..a1daf995 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-archived-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-aspect-ratio-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-aspect-ratio-fill.svg new file mode 100644 index 00000000..df78ddb3 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-aspect-ratio-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-aspect-ratio-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-aspect-ratio-outline.svg new file mode 100644 index 00000000..0253c370 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-aspect-ratio-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-aspect-rectangle-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-aspect-rectangle-fill.svg new file mode 100644 index 00000000..bc66cefa --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-aspect-rectangle-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-aspect-rectangle-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-aspect-rectangle-outline.svg new file mode 100644 index 00000000..6e6c59af --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-aspect-rectangle-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-attach-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-attach-fill.svg new file mode 100644 index 00000000..34fe8250 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-attach-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-attach-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-attach-outline.svg new file mode 100644 index 00000000..d0e5403c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-attach-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-audience-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-audience-fill.svg new file mode 100644 index 00000000..0fcc5b8f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-audience-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-audience-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-audience-outline.svg new file mode 100644 index 00000000..867df736 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-audience-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-audio-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-audio-fill.svg new file mode 100644 index 00000000..81370bea --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-audio-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-audio-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-audio-outline.svg new file mode 100644 index 00000000..fa373832 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-audio-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-author-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-author-fill.svg new file mode 100644 index 00000000..3324936e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-author-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-author-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-author-outline.svg new file mode 100644 index 00000000..a15b5af6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-author-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-automod-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-automod-fill.svg new file mode 100644 index 00000000..d852bc09 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-automod-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-automod-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-automod-outline.svg new file mode 100644 index 00000000..a560282d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-automod-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-avatar-style-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-avatar-style-fill.svg new file mode 100644 index 00000000..5870f91a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-avatar-style-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-avatar-style-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-avatar-style-outline.svg new file mode 100644 index 00000000..2b31769c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-avatar-style-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-award-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-award-fill.svg new file mode 100644 index 00000000..0cc0b178 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-award-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-award-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-award-outline.svg new file mode 100644 index 00000000..a9c9b118 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-award-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-back-fill-24.svg b/versioned_docs/version-0.13/assets/icons/icon-back-fill-24.svg new file mode 100644 index 00000000..8d752726 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-back-fill-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-back-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-back-fill.svg new file mode 100644 index 00000000..9915841e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-back-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-back-outline-24.svg b/versioned_docs/version-0.13/assets/icons/icon-back-outline-24.svg new file mode 100644 index 00000000..24f38490 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-back-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-back-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-back-outline.svg new file mode 100644 index 00000000..e0a29588 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-back-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-backup-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-backup-fill.svg new file mode 100644 index 00000000..ff5e9bbc --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-backup-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-backup-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-backup-outline.svg new file mode 100644 index 00000000..9eacf619 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-backup-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-ban-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-ban-fill.svg new file mode 100644 index 00000000..536b7ca1 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-ban-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-ban-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-ban-outline.svg new file mode 100644 index 00000000..209e5d98 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-ban-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-basketball-color-24.svg b/versioned_docs/version-0.13/assets/icons/icon-basketball-color-24.svg new file mode 100644 index 00000000..34f2d20f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-basketball-color-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-basketball-fill-24.svg b/versioned_docs/version-0.13/assets/icons/icon-basketball-fill-24.svg new file mode 100644 index 00000000..3188dfe9 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-basketball-fill-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-basketball-outline-24.svg b/versioned_docs/version-0.13/assets/icons/icon-basketball-outline-24.svg new file mode 100644 index 00000000..83894d13 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-basketball-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-best-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-best-fill.svg new file mode 100644 index 00000000..435ef82d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-best-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-best-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-best-outline.svg new file mode 100644 index 00000000..55643001 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-best-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-beta-binoculars-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-beta-binoculars-fill.svg new file mode 100644 index 00000000..40620bfb --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-beta-binoculars-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-beta-binoculars-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-beta-binoculars-outline.svg new file mode 100644 index 00000000..0e2c2a4c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-beta-binoculars-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-beta-caret-updown-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-beta-caret-updown-fill.svg new file mode 100644 index 00000000..9ebc2d1a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-beta-caret-updown-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-beta-caret-updown-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-beta-caret-updown-outline.svg new file mode 100644 index 00000000..1f546702 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-beta-caret-updown-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-beta-latest-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-beta-latest-fill.svg new file mode 100644 index 00000000..19a21bde --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-beta-latest-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-beta-latest-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-beta-latest-outline.svg new file mode 100644 index 00000000..d4d0ba1d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-beta-latest-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-beta-planet-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-beta-planet-fill.svg new file mode 100644 index 00000000..de9f2875 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-beta-planet-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-beta-planet-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-beta-planet-outline.svg new file mode 100644 index 00000000..1191ec27 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-beta-planet-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-beta-talk-01-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-beta-talk-01-outline.svg new file mode 100644 index 00000000..f0320473 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-beta-talk-01-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-beta-talk-02-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-beta-talk-02-outline.svg new file mode 100644 index 00000000..a9ffbf13 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-beta-talk-02-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-beta-talk-add-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-beta-talk-add-fill.svg new file mode 100644 index 00000000..02417667 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-beta-talk-add-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-beta-talk-add-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-beta-talk-add-outline.svg new file mode 100644 index 00000000..238d0b2d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-beta-talk-add-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-beta-telescope-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-beta-telescope-fill.svg new file mode 100644 index 00000000..1d33e54e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-beta-telescope-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-beta-telescope-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-beta-telescope-outline.svg new file mode 100644 index 00000000..f6d80314 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-beta-telescope-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-block-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-block-fill.svg new file mode 100644 index 00000000..3dc16c9d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-block-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-block-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-block-outline.svg new file mode 100644 index 00000000..5573cbd6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-block-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-blockchain-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-blockchain-fill.svg new file mode 100644 index 00000000..2f44aebf --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-blockchain-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-blockchain-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-blockchain-outline.svg new file mode 100644 index 00000000..f9692627 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-blockchain-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-bold-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-bold-fill.svg new file mode 100644 index 00000000..3ac8e479 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-bold-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-bold-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-bold-outline.svg new file mode 100644 index 00000000..4821692e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-bold-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-bot-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-bot-fill.svg new file mode 100644 index 00000000..a368bf22 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-bot-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-bot-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-bot-outline.svg new file mode 100644 index 00000000..b83870f9 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-bot-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-bounce-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-bounce-fill.svg new file mode 100644 index 00000000..702f7dec --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-bounce-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-bounce-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-bounce-outline.svg new file mode 100644 index 00000000..4e90c6e9 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-bounce-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-brand-awareness-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-brand-awareness-fill.svg new file mode 100644 index 00000000..f295907a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-brand-awareness-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-brand-awareness-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-brand-awareness-outline.svg new file mode 100644 index 00000000..630501d5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-brand-awareness-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-browse-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-browse-fill.svg new file mode 100644 index 00000000..4c59d268 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-browse-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-browse-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-browse-outline.svg new file mode 100644 index 00000000..56235f72 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-browse-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-browser-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-browser-fill.svg new file mode 100644 index 00000000..7992f73f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-browser-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-browser-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-browser-outline.svg new file mode 100644 index 00000000..c62d27d7 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-browser-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-cake-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-cake-fill.svg new file mode 100644 index 00000000..598e5314 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-cake-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-cake-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-cake-outline.svg new file mode 100644 index 00000000..345098d0 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-cake-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-calendar-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-calendar-fill.svg new file mode 100644 index 00000000..1ce757d1 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-calendar-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-calendar-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-calendar-outline.svg new file mode 100644 index 00000000..3334631b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-calendar-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-camera-fill-24.svg b/versioned_docs/version-0.13/assets/icons/icon-camera-fill-24.svg new file mode 100644 index 00000000..b7fae92c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-camera-fill-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-camera-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-camera-fill.svg new file mode 100644 index 00000000..2dd491c4 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-camera-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-camera-outline-24.svg b/versioned_docs/version-0.13/assets/icons/icon-camera-outline-24.svg new file mode 100644 index 00000000..6a5e003f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-camera-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-camera-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-camera-outline.svg new file mode 100644 index 00000000..8641d11d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-camera-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-campaign-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-campaign-fill.svg new file mode 100644 index 00000000..7223b7d5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-campaign-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-campaign-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-campaign-outline.svg new file mode 100644 index 00000000..c6e1bc94 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-campaign-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-caret-down-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-caret-down-fill.svg new file mode 100644 index 00000000..c02ba9c7 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-caret-down-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-caret-down-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-caret-down-outline.svg new file mode 100644 index 00000000..6450b6a6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-caret-down-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-caret-left-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-caret-left-fill.svg new file mode 100644 index 00000000..b9526918 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-caret-left-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-caret-left-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-caret-left-outline.svg new file mode 100644 index 00000000..a108c3c2 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-caret-left-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-caret-right-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-caret-right-fill.svg new file mode 100644 index 00000000..16597e50 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-caret-right-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-caret-right-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-caret-right-outline.svg new file mode 100644 index 00000000..c90909f4 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-caret-right-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-caret-up-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-caret-up-fill.svg new file mode 100644 index 00000000..6404217c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-caret-up-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-caret-up-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-caret-up-outline.svg new file mode 100644 index 00000000..4b0f9a78 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-caret-up-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-chat-fill-24.svg b/versioned_docs/version-0.13/assets/icons/icon-chat-fill-24.svg new file mode 100644 index 00000000..ddec741f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-chat-fill-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-chat-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-chat-fill.svg new file mode 100644 index 00000000..3a482240 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-chat-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-chat-group-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-chat-group-fill.svg new file mode 100644 index 00000000..4eaac310 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-chat-group-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-chat-group-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-chat-group-outline.svg new file mode 100644 index 00000000..d2bdf29f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-chat-group-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-chat-new-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-chat-new-fill.svg new file mode 100644 index 00000000..79ec3040 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-chat-new-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-chat-new-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-chat-new-outline.svg new file mode 100644 index 00000000..32f1bbf5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-chat-new-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-chat-outline-24.svg b/versioned_docs/version-0.13/assets/icons/icon-chat-outline-24.svg new file mode 100644 index 00000000..0a479099 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-chat-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-chat-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-chat-outline.svg new file mode 100644 index 00000000..c1292da5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-chat-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-chat-private-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-chat-private-fill.svg new file mode 100644 index 00000000..8394f0df --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-chat-private-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-chat-private-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-chat-private-outline.svg new file mode 100644 index 00000000..d7e24cea --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-chat-private-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-checkbox-dismiss-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-checkbox-dismiss-fill.svg new file mode 100644 index 00000000..017df15b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-checkbox-dismiss-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-checkbox-dismiss-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-checkbox-dismiss-outline.svg new file mode 100644 index 00000000..475aa619 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-checkbox-dismiss-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-checkbox-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-checkbox-fill.svg new file mode 100644 index 00000000..13d4fb4c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-checkbox-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-checkbox-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-checkbox-outline.svg new file mode 100644 index 00000000..30d5c6fa --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-checkbox-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-checkmark-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-checkmark-fill.svg new file mode 100644 index 00000000..bd746f3a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-checkmark-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-checkmark-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-checkmark-outline.svg new file mode 100644 index 00000000..51b95142 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-checkmark-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-chrome-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-chrome-fill.svg new file mode 100644 index 00000000..861618f2 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-chrome-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-chrome-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-chrome-outline.svg new file mode 100644 index 00000000..3fbbc47e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-chrome-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-clear-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-clear-fill.svg new file mode 100644 index 00000000..130cee20 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-clear-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-clear-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-clear-outline.svg new file mode 100644 index 00000000..5ca3b18e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-clear-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-client-list-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-client-list-fill.svg new file mode 100644 index 00000000..de9438d9 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-client-list-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-client-list-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-client-list-outline.svg new file mode 100644 index 00000000..c2025eb5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-client-list-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-close-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-close-fill.svg new file mode 100644 index 00000000..7457383e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-close-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-close-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-close-outline.svg new file mode 100644 index 00000000..3dbfadbc --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-close-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-closed-captioning-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-closed-captioning-fill.svg new file mode 100644 index 00000000..e6e81eee --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-closed-captioning-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-closed-captioning-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-closed-captioning-outline.svg new file mode 100644 index 00000000..b33b9dcd --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-closed-captioning-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-code-block-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-code-block-fill.svg new file mode 100644 index 00000000..fe8f70de --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-code-block-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-code-block-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-code-block-outline.svg new file mode 100644 index 00000000..0659b3a0 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-code-block-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-code-inline-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-code-inline-fill.svg new file mode 100644 index 00000000..40d8b284 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-code-inline-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-code-inline-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-code-inline-outline.svg new file mode 100644 index 00000000..b16e54b9 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-code-inline-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-coins-color-old.svg b/versioned_docs/version-0.13/assets/icons/icon-coins-color-old.svg new file mode 100644 index 00000000..c26dfd23 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-coins-color-old.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-coins-color.svg b/versioned_docs/version-0.13/assets/icons/icon-coins-color.svg new file mode 100644 index 00000000..9eee1fe3 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-coins-color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-coins-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-coins-fill.svg new file mode 100644 index 00000000..5295b847 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-coins-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-coins-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-coins-outline.svg new file mode 100644 index 00000000..0635d06a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-coins-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-collapse-left-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-collapse-left-fill.svg new file mode 100644 index 00000000..94ced469 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-collapse-left-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-collapse-left-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-collapse-left-outline.svg new file mode 100644 index 00000000..571e6666 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-collapse-left-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-collapse-right-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-collapse-right-fill.svg new file mode 100644 index 00000000..d1a6ec06 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-collapse-right-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-collapse-right-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-collapse-right-outline.svg new file mode 100644 index 00000000..762313e8 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-collapse-right-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-collectible-expressions-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-collectible-expressions-fill.svg new file mode 100644 index 00000000..f48e0f71 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-collectible-expressions-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-collectible-expressions-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-collectible-expressions-outline.svg new file mode 100644 index 00000000..842276e4 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-collectible-expressions-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-collection-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-collection-fill.svg new file mode 100644 index 00000000..063d0294 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-collection-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-collection-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-collection-outline.svg new file mode 100644 index 00000000..2bf8ade0 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-collection-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-comment-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-comment-fill.svg new file mode 100644 index 00000000..64caddb5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-comment-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-comment-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-comment-outline.svg new file mode 100644 index 00000000..ca549202 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-comment-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-comments-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-comments-fill.svg new file mode 100644 index 00000000..c7e198b3 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-comments-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-comments-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-comments-outline.svg new file mode 100644 index 00000000..aead6ad2 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-comments-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-communities-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-communities-fill.svg new file mode 100644 index 00000000..7a89db20 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-communities-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-communities-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-communities-outline.svg new file mode 100644 index 00000000..21b1de32 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-communities-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-community-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-community-fill.svg new file mode 100644 index 00000000..5e996d59 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-community-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-community-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-community-outline.svg new file mode 100644 index 00000000..f2c48d9d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-community-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-confidence-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-confidence-fill.svg new file mode 100644 index 00000000..907e7490 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-confidence-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-confidence-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-confidence-outline.svg new file mode 100644 index 00000000..2c0841fa --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-confidence-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-contest-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-contest-fill.svg new file mode 100644 index 00000000..f5ee8261 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-contest-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-contest-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-contest-outline.svg new file mode 100644 index 00000000..b9b18066 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-contest-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-controversial-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-controversial-fill.svg new file mode 100644 index 00000000..0d10d0fa --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-controversial-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-controversial-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-controversial-outline.svg new file mode 100644 index 00000000..d9f13ba6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-controversial-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-conversion-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-conversion-fill.svg new file mode 100644 index 00000000..f341451d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-conversion-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-conversion-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-conversion-outline.svg new file mode 100644 index 00000000..f1aaecb5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-conversion-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-copy-clipboard-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-copy-clipboard-fill.svg new file mode 100644 index 00000000..b66a0d37 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-copy-clipboard-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-copy-clipboard-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-copy-clipboard-outline.svg new file mode 100644 index 00000000..4345cc6c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-copy-clipboard-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-cricket-fill-outline-24.svg b/versioned_docs/version-0.13/assets/icons/icon-cricket-fill-outline-24.svg new file mode 100644 index 00000000..bba0bff1 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-cricket-fill-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-cricket-outline-24.svg b/versioned_docs/version-0.13/assets/icons/icon-cricket-outline-24.svg new file mode 100644 index 00000000..d7e95702 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-cricket-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-crop-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-crop-fill.svg new file mode 100644 index 00000000..8dea1c3e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-crop-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-crop-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-crop-outline.svg new file mode 100644 index 00000000..927c77e7 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-crop-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-crosspost-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-crosspost-fill.svg new file mode 100644 index 00000000..e8871467 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-crosspost-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-crosspost-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-crosspost-outline.svg new file mode 100644 index 00000000..34e2bc39 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-crosspost-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-crowd-control-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-crowd-control-fill.svg new file mode 100644 index 00000000..82eff220 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-crowd-control-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-crowd-control-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-crowd-control-outline.svg new file mode 100644 index 00000000..44fc0779 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-crowd-control-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-custom-feed-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-custom-feed-fill.svg new file mode 100644 index 00000000..2fc20489 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-custom-feed-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-custom-feed-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-custom-feed-outline.svg new file mode 100644 index 00000000..4fe08a0e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-custom-feed-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-customize-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-customize-fill.svg new file mode 100644 index 00000000..11c082bb --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-customize-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-customize-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-customize-outline.svg new file mode 100644 index 00000000..60fcb5a8 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-customize-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-dashboard-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-dashboard-fill.svg new file mode 100644 index 00000000..164bbc6f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-dashboard-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-dashboard-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-dashboard-outline.svg new file mode 100644 index 00000000..7bcc395f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-dashboard-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-day-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-day-fill.svg new file mode 100644 index 00000000..60076123 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-day-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-day-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-day-outline.svg new file mode 100644 index 00000000..42e19da8 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-day-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-delete-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-delete-fill.svg new file mode 100644 index 00000000..090d5fa4 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-delete-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-delete-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-delete-outline.svg new file mode 100644 index 00000000..f21a44b5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-delete-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-discover-fill-24.svg b/versioned_docs/version-0.13/assets/icons/icon-discover-fill-24.svg new file mode 100644 index 00000000..3db7366a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-discover-fill-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-discover-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-discover-fill.svg new file mode 100644 index 00000000..a4558664 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-discover-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-discover-outline-24.svg b/versioned_docs/version-0.13/assets/icons/icon-discover-outline-24.svg new file mode 100644 index 00000000..5f2814a9 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-discover-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-discover-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-discover-outline.svg new file mode 100644 index 00000000..d45c3aa9 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-discover-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-dismiss-all-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-dismiss-all-fill.svg new file mode 100644 index 00000000..04d7747b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-dismiss-all-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-dismiss-all-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-dismiss-all-outline.svg new file mode 100644 index 00000000..77b35add --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-dismiss-all-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-distinguish-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-distinguish-fill.svg new file mode 100644 index 00000000..2e837d40 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-distinguish-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-distinguish-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-distinguish-outline.svg new file mode 100644 index 00000000..11656e89 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-distinguish-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-down-arrow-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-down-arrow-outline.svg new file mode 100644 index 00000000..f11339cf --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-down-arrow-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-down-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-down-fill.svg new file mode 100644 index 00000000..04d79cc5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-down-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-down-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-down-outline.svg new file mode 100644 index 00000000..cb801921 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-down-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-download-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-download-fill.svg new file mode 100644 index 00000000..22873612 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-download-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-download-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-download-outline.svg new file mode 100644 index 00000000..8a9dace4 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-download-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-downvote-fill-mask.svg b/versioned_docs/version-0.13/assets/icons/icon-downvote-fill-mask.svg new file mode 100644 index 00000000..770e75e7 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-downvote-fill-mask.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-downvote-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-downvote-fill.svg new file mode 100644 index 00000000..362c529b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-downvote-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-downvote-offsetmask.svg b/versioned_docs/version-0.13/assets/icons/icon-downvote-offsetmask.svg new file mode 100644 index 00000000..770e75e7 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-downvote-offsetmask.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-downvote-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-downvote-outline.svg new file mode 100644 index 00000000..851f1b2e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-downvote-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-downvotes-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-downvotes-fill.svg new file mode 100644 index 00000000..e7b8054e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-downvotes-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-downvotes-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-downvotes-outline.svg new file mode 100644 index 00000000..5fb64734 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-downvotes-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-drag-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-drag-outline.svg new file mode 100644 index 00000000..fa395bab --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-drag-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-drugs-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-drugs-fill.svg new file mode 100644 index 00000000..dd31eefd --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-drugs-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-drugs-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-drugs-outline.svg new file mode 100644 index 00000000..dd83cdba --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-drugs-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-duplicate-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-duplicate-fill.svg new file mode 100644 index 00000000..7b04b793 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-duplicate-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-duplicate-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-duplicate-outline.svg new file mode 100644 index 00000000..3113be7c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-duplicate-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-edit-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-edit-fill.svg new file mode 100644 index 00000000..4d2b4cb0 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-edit-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-edit-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-edit-outline.svg new file mode 100644 index 00000000..be2f8741 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-edit-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-effect-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-effect-fill.svg new file mode 100644 index 00000000..ef14838c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-effect-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-effect-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-effect-outline.svg new file mode 100644 index 00000000..158c8072 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-effect-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-embed-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-embed-fill.svg new file mode 100644 index 00000000..e48f5245 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-embed-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-embed-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-embed-outline.svg new file mode 100644 index 00000000..04dd5ea2 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-embed-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-emoji-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-emoji-fill.svg new file mode 100644 index 00000000..75cccf76 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-emoji-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-emoji-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-emoji-outline.svg new file mode 100644 index 00000000..251ffd34 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-emoji-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-end-live-chat-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-end-live-chat-fill.svg new file mode 100644 index 00000000..156b5404 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-end-live-chat-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-end-live-chat-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-end-live-chat-outline.svg new file mode 100644 index 00000000..e734d5bf --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-end-live-chat-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-error-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-error-fill.svg new file mode 100644 index 00000000..fd31f05f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-error-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-error-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-error-outline.svg new file mode 100644 index 00000000..44acd06e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-error-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-expand-left-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-expand-left-fill.svg new file mode 100644 index 00000000..bb1bd749 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-expand-left-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-expand-left-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-expand-left-outline.svg new file mode 100644 index 00000000..0425ba50 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-expand-left-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-expand-right-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-expand-right-fill.svg new file mode 100644 index 00000000..74352973 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-expand-right-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-expand-right-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-expand-right-outline.svg new file mode 100644 index 00000000..92ab7ecd --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-expand-right-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-external-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-external-fill.svg new file mode 100644 index 00000000..f7f0187f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-external-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-external-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-external-outline.svg new file mode 100644 index 00000000..e7c5cfab --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-external-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-feed-video-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-feed-video-fill.svg new file mode 100644 index 00000000..a10e7ba6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-feed-video-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-feed-video-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-feed-video-outline.svg new file mode 100644 index 00000000..51c13c0f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-feed-video-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-filter-fill-24.svg b/versioned_docs/version-0.13/assets/icons/icon-filter-fill-24.svg new file mode 100644 index 00000000..dfee079e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-filter-fill-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-filter-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-filter-fill.svg new file mode 100644 index 00000000..ec4bb3d7 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-filter-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-filter-outline-24.svg b/versioned_docs/version-0.13/assets/icons/icon-filter-outline-24.svg new file mode 100644 index 00000000..bac30dde --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-filter-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-filter-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-filter-outline.svg new file mode 100644 index 00000000..5006950f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-filter-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-football-fill-24.svg b/versioned_docs/version-0.13/assets/icons/icon-football-fill-24.svg new file mode 100644 index 00000000..87eaed64 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-football-fill-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-football-outline-24.svg b/versioned_docs/version-0.13/assets/icons/icon-football-outline-24.svg new file mode 100644 index 00000000..f80eaede --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-football-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-format-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-format-fill.svg new file mode 100644 index 00000000..fb58cba0 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-format-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-format-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-format-outline.svg new file mode 100644 index 00000000..c67d21ac --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-format-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-forward-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-forward-fill.svg new file mode 100644 index 00000000..6cfb1af0 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-forward-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-forward-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-forward-outline.svg new file mode 100644 index 00000000..7cd531c2 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-forward-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-funnel-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-funnel-fill.svg new file mode 100644 index 00000000..c6ed3533 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-funnel-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-funnel-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-funnel-outline.svg new file mode 100644 index 00000000..18d1a624 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-funnel-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-gif-post-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-gif-post-fill.svg new file mode 100644 index 00000000..827178c2 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-gif-post-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-gif-post-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-gif-post-outline.svg new file mode 100644 index 00000000..dfeb11e9 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-gif-post-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-hashtag-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-hashtag-fill.svg new file mode 100644 index 00000000..b476fac0 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-hashtag-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-hashtag-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-hashtag-outline.svg new file mode 100644 index 00000000..2bf939ee --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-hashtag-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-heart-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-heart-fill.svg new file mode 100644 index 00000000..c8c3917c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-heart-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-heart-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-heart-outline.svg new file mode 100644 index 00000000..39c25eb5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-heart-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-help-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-help-fill.svg new file mode 100644 index 00000000..fb9356cf --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-help-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-help-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-help-outline.svg new file mode 100644 index 00000000..f5b4ccdd --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-help-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-hide-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-hide-fill.svg new file mode 100644 index 00000000..90caafca --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-hide-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-hide-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-hide-outline.svg new file mode 100644 index 00000000..e616adb0 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-hide-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-history-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-history-fill.svg new file mode 100644 index 00000000..ad5025e1 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-history-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-history-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-history-outline.svg new file mode 100644 index 00000000..14f8fa65 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-history-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-hockey-fill-24.svg b/versioned_docs/version-0.13/assets/icons/icon-hockey-fill-24.svg new file mode 100644 index 00000000..a8a5510c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-hockey-fill-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-hockey-outline-24.svg b/versioned_docs/version-0.13/assets/icons/icon-hockey-outline-24.svg new file mode 100644 index 00000000..8112f60d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-hockey-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-home-fill-24.svg b/versioned_docs/version-0.13/assets/icons/icon-home-fill-24.svg new file mode 100644 index 00000000..f0ed1780 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-home-fill-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-home-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-home-fill.svg new file mode 100644 index 00000000..9f4149fc --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-home-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-home-outline-24.svg b/versioned_docs/version-0.13/assets/icons/icon-home-outline-24.svg new file mode 100644 index 00000000..1ef79ad0 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-home-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-home-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-home-outline.svg new file mode 100644 index 00000000..9058fc9f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-home-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-hot-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-hot-fill.svg new file mode 100644 index 00000000..ff4581da --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-hot-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-hot-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-hot-outline.svg new file mode 100644 index 00000000..0bd5e91d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-hot-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-ignore-reports-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-ignore-reports-fill.svg new file mode 100644 index 00000000..acdc10dc --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-ignore-reports-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-ignore-reports-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-ignore-reports-outline.svg new file mode 100644 index 00000000..4232ad15 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-ignore-reports-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-image-post-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-image-post-fill.svg new file mode 100644 index 00000000..074a343c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-image-post-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-image-post-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-image-post-outline.svg new file mode 100644 index 00000000..db1ecf0c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-image-post-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-inbox-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-inbox-fill.svg new file mode 100644 index 00000000..bf6e5dfe --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-inbox-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-inbox-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-inbox-outline.svg new file mode 100644 index 00000000..779a551d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-inbox-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-india-independence-24-color.svg b/versioned_docs/version-0.13/assets/icons/icon-india-independence-24-color.svg new file mode 100644 index 00000000..8eea6f0d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-india-independence-24-color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-india-independence-color.svg b/versioned_docs/version-0.13/assets/icons/icon-india-independence-color.svg new file mode 100644 index 00000000..8eea6f0d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-india-independence-color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-india-independence-outline-24.svg b/versioned_docs/version-0.13/assets/icons/icon-india-independence-outline-24.svg new file mode 100644 index 00000000..934f6a68 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-india-independence-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-info-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-info-fill.svg new file mode 100644 index 00000000..25b91054 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-info-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-info-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-info-outline.svg new file mode 100644 index 00000000..2d63f79e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-info-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-invite-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-invite-fill.svg new file mode 100644 index 00000000..73c016b2 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-invite-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-invite-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-invite-outline.svg new file mode 100644 index 00000000..43d8b715 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-invite-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-italic-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-italic-fill.svg new file mode 100644 index 00000000..9978e417 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-italic-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-italic-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-italic-outline.svg new file mode 100644 index 00000000..12575e17 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-italic-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-join-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-join-fill.svg new file mode 100644 index 00000000..942ed803 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-join-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-join-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-join-outline.svg new file mode 100644 index 00000000..ae4c3048 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-join-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-joined-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-joined-fill.svg new file mode 100644 index 00000000..b03349b6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-joined-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-joined-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-joined-outline.svg new file mode 100644 index 00000000..5dbb4ce8 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-joined-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-jump-down-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-jump-down-fill.svg new file mode 100644 index 00000000..32646b50 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-jump-down-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-jump-down-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-jump-down-outline.svg new file mode 100644 index 00000000..a76193f5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-jump-down-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-jump-up-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-jump-up-fill.svg new file mode 100644 index 00000000..8de1dd13 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-jump-up-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-jump-up-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-jump-up-outline.svg new file mode 100644 index 00000000..156471d0 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-jump-up-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-karma-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-karma-fill.svg new file mode 100644 index 00000000..b182869a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-karma-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-karma-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-karma-outline.svg new file mode 100644 index 00000000..36543fda --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-karma-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-keyboard-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-keyboard-fill.svg new file mode 100644 index 00000000..fbb222ee --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-keyboard-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-keyboard-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-keyboard-outline.svg new file mode 100644 index 00000000..7763e8eb --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-keyboard-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-kick-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-kick-fill.svg new file mode 100644 index 00000000..539d91b5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-kick-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-kick-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-kick-outline.svg new file mode 100644 index 00000000..6e508580 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-kick-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-language-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-language-fill.svg new file mode 100644 index 00000000..43e3dde4 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-language-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-language-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-language-outline.svg new file mode 100644 index 00000000..9e9f57e1 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-language-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-leave-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-leave-fill.svg new file mode 100644 index 00000000..d29be345 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-leave-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-leave-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-leave-outline.svg new file mode 100644 index 00000000..9e96def3 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-leave-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-left-fill-24.svg b/versioned_docs/version-0.13/assets/icons/icon-left-fill-24.svg new file mode 100644 index 00000000..2839379a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-left-fill-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-left-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-left-fill.svg new file mode 100644 index 00000000..080d2714 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-left-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-left-outline-24.svg b/versioned_docs/version-0.13/assets/icons/icon-left-outline-24.svg new file mode 100644 index 00000000..509a1843 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-left-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-left-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-left-outline.svg new file mode 100644 index 00000000..ffc206b5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-left-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-link-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-link-fill.svg new file mode 100644 index 00000000..a777ba34 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-link-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-link-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-link-outline.svg new file mode 100644 index 00000000..71d3657c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-link-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-link-post-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-link-post-fill.svg new file mode 100644 index 00000000..a777ba34 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-link-post-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-link-post-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-link-post-outline.svg new file mode 100644 index 00000000..71d3657c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-link-post-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-list-bulleted-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-list-bulleted-fill.svg new file mode 100644 index 00000000..0ded6919 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-list-bulleted-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-list-bulleted-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-list-bulleted-outline.svg new file mode 100644 index 00000000..10b57c77 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-list-bulleted-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-list-numbered-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-list-numbered-fill.svg new file mode 100644 index 00000000..2fa2f9df --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-list-numbered-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-list-numbered-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-list-numbered-outline.svg new file mode 100644 index 00000000..cb85ac03 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-list-numbered-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-live-chat-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-live-chat-fill.svg new file mode 100644 index 00000000..63bae6d9 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-live-chat-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-live-chat-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-live-chat-outline.svg new file mode 100644 index 00000000..cbd60c93 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-live-chat-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-live-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-live-fill.svg new file mode 100644 index 00000000..c3d8fa8b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-live-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-live-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-live-outline.svg new file mode 100644 index 00000000..b8aff72d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-live-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-load-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-load-outline.svg new file mode 100644 index 00000000..2498bb69 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-load-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-location-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-location-fill.svg new file mode 100644 index 00000000..3a02508d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-location-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-location-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-location-outline.svg new file mode 100644 index 00000000..a93fa330 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-location-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-lock-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-lock-fill.svg new file mode 100644 index 00000000..0acaf024 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-lock-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-lock-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-lock-outline.svg new file mode 100644 index 00000000..2d2ba761 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-lock-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-logout-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-logout-fill.svg new file mode 100644 index 00000000..aece4455 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-logout-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-logout-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-logout-outline.svg new file mode 100644 index 00000000..18f43dcc --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-logout-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-loop-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-loop-fill.svg new file mode 100644 index 00000000..d407bc1d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-loop-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-loop-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-loop-outline.svg new file mode 100644 index 00000000..057ae18f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-loop-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-macro-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-macro-fill.svg new file mode 100644 index 00000000..fed9fc68 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-macro-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-macro-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-macro-outline.svg new file mode 100644 index 00000000..e0fcc990 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-macro-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mark-read-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-mark-read-fill.svg new file mode 100644 index 00000000..8cd0d2bc --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mark-read-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mark-read-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-mark-read-outline.svg new file mode 100644 index 00000000..a67ce2f6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mark-read-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-marketplace-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-marketplace-fill.svg new file mode 100644 index 00000000..85253c42 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-marketplace-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-marketplace-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-marketplace-outline.svg new file mode 100644 index 00000000..ddcf924b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-marketplace-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mask-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-mask-fill.svg new file mode 100644 index 00000000..c1614d16 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mask-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mask-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-mask-outline.svg new file mode 100644 index 00000000..948d95be --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mask-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-media-gallery-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-media-gallery-fill.svg new file mode 100644 index 00000000..b4c09cbd --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-media-gallery-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-media-gallery-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-media-gallery-outline.svg new file mode 100644 index 00000000..8cefd4cc --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-media-gallery-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-meme-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-meme-fill.svg new file mode 100644 index 00000000..8e07d53a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-meme-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-meme-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-meme-outline.svg new file mode 100644 index 00000000..d0161712 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-meme-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-menu-fill-24.svg b/versioned_docs/version-0.13/assets/icons/icon-menu-fill-24.svg new file mode 100644 index 00000000..a4b11bcf --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-menu-fill-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-menu-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-menu-fill.svg new file mode 100644 index 00000000..e3a48d72 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-menu-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-menu-outline-24.svg b/versioned_docs/version-0.13/assets/icons/icon-menu-outline-24.svg new file mode 100644 index 00000000..cd101a91 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-menu-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-menu-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-menu-outline.svg new file mode 100644 index 00000000..c277d63a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-menu-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-message-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-message-fill.svg new file mode 100644 index 00000000..bf6e5dfe --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-message-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-message-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-message-outline.svg new file mode 100644 index 00000000..779a551d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-message-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mic-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-mic-fill.svg new file mode 100644 index 00000000..23b42265 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mic-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mic-mute-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-mic-mute-fill.svg new file mode 100644 index 00000000..f309e349 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mic-mute-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mic-mute-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-mic-mute-outline.svg new file mode 100644 index 00000000..c4b36eef --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mic-mute-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mic-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-mic-outline.svg new file mode 100644 index 00000000..d9174bcf --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mic-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mod-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-mod-fill.svg new file mode 100644 index 00000000..3d4e15bd --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mod-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mod-mail-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-mod-mail-fill.svg new file mode 100644 index 00000000..a994d73e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mod-mail-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mod-mail-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-mod-mail-outline.svg new file mode 100644 index 00000000..add3fc29 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mod-mail-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mod-mode-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-mod-mode-fill.svg new file mode 100644 index 00000000..0a3b61d2 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mod-mode-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mod-mode-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-mod-mode-outline.svg new file mode 100644 index 00000000..783794c2 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mod-mode-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mod-mute-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-mod-mute-fill.svg new file mode 100644 index 00000000..0405eb39 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mod-mute-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mod-mute-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-mod-mute-outline.svg new file mode 100644 index 00000000..0f00cbd0 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mod-mute-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mod-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-mod-outline.svg new file mode 100644 index 00000000..3c34d75e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mod-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mod-overflow-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-mod-overflow-fill.svg new file mode 100644 index 00000000..a27ddc1c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mod-overflow-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mod-overflow-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-mod-overflow-outline.svg new file mode 100644 index 00000000..40d581e8 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mod-overflow-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mod-queue-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-mod-queue-fill.svg new file mode 100644 index 00000000..c24794c6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mod-queue-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mod-queue-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-mod-queue-outline.svg new file mode 100644 index 00000000..f501bb50 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mod-queue-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mod-unmute-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-mod-unmute-fill.svg new file mode 100644 index 00000000..4fe5e323 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mod-unmute-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mod-unmute-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-mod-unmute-outline.svg new file mode 100644 index 00000000..fc66aec9 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mod-unmute-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-music-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-music-fill.svg new file mode 100644 index 00000000..572bbb39 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-music-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-music-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-music-outline.svg new file mode 100644 index 00000000..a5727ff3 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-music-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mute-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-mute-fill.svg new file mode 100644 index 00000000..832479a5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mute-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-mute-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-mute-outline.svg new file mode 100644 index 00000000..e3020eaf --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-mute-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-new-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-new-fill.svg new file mode 100644 index 00000000..b663a159 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-new-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-new-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-new-outline.svg new file mode 100644 index 00000000..fbbf8adc --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-new-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-night-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-night-fill.svg new file mode 100644 index 00000000..c266c32d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-night-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-night-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-night-outline.svg new file mode 100644 index 00000000..da392e61 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-night-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-notification-fill-24.svg b/versioned_docs/version-0.13/assets/icons/icon-notification-fill-24.svg new file mode 100644 index 00000000..21899eb1 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-notification-fill-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-notification-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-notification-fill.svg new file mode 100644 index 00000000..ee584c12 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-notification-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-notification-frequent-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-notification-frequent-fill.svg new file mode 100644 index 00000000..cdb5cc57 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-notification-frequent-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-notification-frequent-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-notification-frequent-outline.svg new file mode 100644 index 00000000..8ef14b28 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-notification-frequent-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-notification-off-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-notification-off-fill.svg new file mode 100644 index 00000000..8ec456fc --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-notification-off-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-notification-off-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-notification-off-outline.svg new file mode 100644 index 00000000..9fff79d6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-notification-off-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-notification-outline-24.svg b/versioned_docs/version-0.13/assets/icons/icon-notification-outline-24.svg new file mode 100644 index 00000000..80641815 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-notification-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-notification-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-notification-outline.svg new file mode 100644 index 00000000..7308b277 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-notification-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-nsfw-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-nsfw-fill.svg new file mode 100644 index 00000000..c586800d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-nsfw-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-nsfw-language-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-nsfw-language-fill.svg new file mode 100644 index 00000000..18329ee2 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-nsfw-language-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-nsfw-language-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-nsfw-language-outline.svg new file mode 100644 index 00000000..b33c2979 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-nsfw-language-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-nsfw-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-nsfw-outline.svg new file mode 100644 index 00000000..9a4de5cc --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-nsfw-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-nsfw-violence-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-nsfw-violence-fill.svg new file mode 100644 index 00000000..8bd10746 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-nsfw-violence-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-nsfw-violence-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-nsfw-violence-outline.svg new file mode 100644 index 00000000..b094986b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-nsfw-violence-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-official-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-official-fill.svg new file mode 100644 index 00000000..e168285b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-official-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-official-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-official-outline.svg new file mode 100644 index 00000000..598e67f9 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-official-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-original-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-original-fill.svg new file mode 100644 index 00000000..4ca68cd6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-original-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-original-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-original-outline.svg new file mode 100644 index 00000000..30a44e12 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-original-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-overflow-caret-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-overflow-caret-fill.svg new file mode 100644 index 00000000..f66f72dc --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-overflow-caret-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-overflow-caret-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-overflow-caret-outline.svg new file mode 100644 index 00000000..26a891eb --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-overflow-caret-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-overflow-horizontal-fill-24.svg b/versioned_docs/version-0.13/assets/icons/icon-overflow-horizontal-fill-24.svg new file mode 100644 index 00000000..663e67ac --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-overflow-horizontal-fill-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-overflow-horizontal-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-overflow-horizontal-fill.svg new file mode 100644 index 00000000..eef8a3f1 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-overflow-horizontal-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-overflow-horizontal-outline-24.svg b/versioned_docs/version-0.13/assets/icons/icon-overflow-horizontal-outline-24.svg new file mode 100644 index 00000000..d9c8f021 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-overflow-horizontal-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-overflow-horizontal-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-overflow-horizontal-outline.svg new file mode 100644 index 00000000..8e0f71ca --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-overflow-horizontal-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-overflow-vertical-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-overflow-vertical-fill.svg new file mode 100644 index 00000000..bba12847 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-overflow-vertical-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-overflow-vertical-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-overflow-vertical-outline.svg new file mode 100644 index 00000000..42e98cb8 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-overflow-vertical-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-pause-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-pause-fill.svg new file mode 100644 index 00000000..2893f421 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-pause-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-pause-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-pause-outline.svg new file mode 100644 index 00000000..4aae6725 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-pause-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-payment-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-payment-fill.svg new file mode 100644 index 00000000..f47242b9 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-payment-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-payment-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-payment-outline.svg new file mode 100644 index 00000000..11bb1569 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-payment-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-peace-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-peace-fill.svg new file mode 100644 index 00000000..73afbd4a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-peace-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-peace-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-peace-outline.svg new file mode 100644 index 00000000..f59fa853 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-peace-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-pending-posts-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-pending-posts-fill.svg new file mode 100644 index 00000000..eeae35fd --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-pending-posts-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-pending-posts-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-pending-posts-outline.svg new file mode 100644 index 00000000..f52af44f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-pending-posts-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-phone-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-phone-fill.svg new file mode 100644 index 00000000..2fe1fe6d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-phone-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-phone-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-phone-outline.svg new file mode 100644 index 00000000..d061ef94 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-phone-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-pin-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-pin-fill.svg new file mode 100644 index 00000000..ffbb5ca6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-pin-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-pin-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-pin-outline.svg new file mode 100644 index 00000000..5468381d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-pin-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-play-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-play-fill.svg new file mode 100644 index 00000000..1fde6b1f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-play-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-play-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-play-outline.svg new file mode 100644 index 00000000..44072b5c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-play-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-poll-post-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-poll-post-fill.svg new file mode 100644 index 00000000..b5ef83c7 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-poll-post-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-poll-post-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-poll-post-outline.svg new file mode 100644 index 00000000..f96a5866 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-poll-post-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-popular-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-popular-fill.svg new file mode 100644 index 00000000..4c9f39b0 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-popular-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-popular-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-popular-outline.svg new file mode 100644 index 00000000..94697c6e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-popular-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-posts-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-posts-fill.svg new file mode 100644 index 00000000..f8e2ef7a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-posts-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-posts-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-posts-outline.svg new file mode 100644 index 00000000..8bbdf583 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-posts-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-powerup-color.svg b/versioned_docs/version-0.13/assets/icons/icon-powerup-color.svg new file mode 100644 index 00000000..0c8e798b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-powerup-color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-powerup-fill-color.svg b/versioned_docs/version-0.13/assets/icons/icon-powerup-fill-color.svg new file mode 100644 index 00000000..02b99781 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-powerup-fill-color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-powerup-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-powerup-fill.svg new file mode 100644 index 00000000..bc5d965a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-powerup-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-powerup-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-powerup-outline.svg new file mode 100644 index 00000000..5dc7da1d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-powerup-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-predictions-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-predictions-fill.svg new file mode 100644 index 00000000..7c8be073 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-predictions-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-predictions-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-predictions-outline.svg new file mode 100644 index 00000000..6ce3f850 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-predictions-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-premium-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-premium-fill.svg new file mode 100644 index 00000000..b0e88393 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-premium-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-premium-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-premium-outline.svg new file mode 100644 index 00000000..36ff985d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-premium-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-privacy-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-privacy-fill.svg new file mode 100644 index 00000000..7c5ce2de --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-privacy-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-privacy-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-privacy-outline.svg new file mode 100644 index 00000000..37c9aa4e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-privacy-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-profile-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-profile-fill.svg new file mode 100644 index 00000000..9d9f41e7 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-profile-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-profile-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-profile-outline.svg new file mode 100644 index 00000000..d428dccc --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-profile-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-qa-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-qa-fill.svg new file mode 100644 index 00000000..3324936e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-qa-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-qa-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-qa-outline.svg new file mode 100644 index 00000000..a15b5af6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-qa-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-qr-code-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-qr-code-fill.svg new file mode 100644 index 00000000..5c4e4e63 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-qr-code-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-qr-code-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-qr-code-outline.svg new file mode 100644 index 00000000..db71b109 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-qr-code-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-quarantined-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-quarantined-fill.svg new file mode 100644 index 00000000..d422850c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-quarantined-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-quarantined-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-quarantined-outline.svg new file mode 100644 index 00000000..bd0fe499 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-quarantined-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-quote-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-quote-fill.svg new file mode 100644 index 00000000..2e16b66e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-quote-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-quote-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-quote-outline.svg new file mode 100644 index 00000000..138fdede --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-quote-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-r-slash-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-r-slash-fill.svg new file mode 100644 index 00000000..8ea867a5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-r-slash-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-r-slash-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-r-slash-outline.svg new file mode 100644 index 00000000..d53e0d81 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-r-slash-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-radio-button-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-radio-button-fill.svg new file mode 100644 index 00000000..17634cc6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-radio-button-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-radio-button-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-radio-button-outline.svg new file mode 100644 index 00000000..61ab9d15 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-radio-button-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-raise-hand-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-raise-hand-fill.svg new file mode 100644 index 00000000..c2ee6b51 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-raise-hand-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-raise-hand-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-raise-hand-outline.svg new file mode 100644 index 00000000..ca88b8d6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-raise-hand-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-random-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-random-fill.svg new file mode 100644 index 00000000..aaf21bd5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-random-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-random-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-random-outline.svg new file mode 100644 index 00000000..8328568b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-random-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-ratings-everyone-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-ratings-everyone-fill.svg new file mode 100644 index 00000000..79d5e207 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-ratings-everyone-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-ratings-everyone-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-ratings-everyone-outline.svg new file mode 100644 index 00000000..958cfaab --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-ratings-everyone-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-ratings-mature-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-ratings-mature-fill.svg new file mode 100644 index 00000000..adebf06f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-ratings-mature-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-ratings-mature-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-ratings-mature-outline.svg new file mode 100644 index 00000000..7375df49 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-ratings-mature-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-ratings-nsfw-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-ratings-nsfw-fill.svg new file mode 100644 index 00000000..8ae101a9 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-ratings-nsfw-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-ratings-nsfw-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-ratings-nsfw-outline.svg new file mode 100644 index 00000000..5efaece2 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-ratings-nsfw-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-ratings-violence-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-ratings-violence-fill.svg new file mode 100644 index 00000000..4b130fc8 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-ratings-violence-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-ratings-violence-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-ratings-violence-outline.svg new file mode 100644 index 00000000..209cb32b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-ratings-violence-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-recovery-phrase-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-recovery-phrase-fill.svg new file mode 100644 index 00000000..59912fcc --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-recovery-phrase-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-recovery-phrase-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-recovery-phrase-outline.svg new file mode 100644 index 00000000..f030d4a3 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-recovery-phrase-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-refresh-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-refresh-fill.svg new file mode 100644 index 00000000..145af422 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-refresh-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-refresh-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-refresh-outline.svg new file mode 100644 index 00000000..fd337e0a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-refresh-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-removal-reasons-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-removal-reasons-fill.svg new file mode 100644 index 00000000..f449e496 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-removal-reasons-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-removal-reasons-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-removal-reasons-outline.svg new file mode 100644 index 00000000..2959171f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-removal-reasons-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-remove-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-remove-fill.svg new file mode 100644 index 00000000..77c90322 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-remove-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-remove-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-remove-outline.svg new file mode 100644 index 00000000..427a0ba3 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-remove-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-reply-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-reply-fill.svg new file mode 100644 index 00000000..f9ed4ea8 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-reply-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-reply-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-reply-outline.svg new file mode 100644 index 00000000..1005ebc7 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-reply-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-report-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-report-fill.svg new file mode 100644 index 00000000..c8b2f953 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-report-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-report-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-report-outline.svg new file mode 100644 index 00000000..f93c4531 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-report-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-reverse-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-reverse-fill.svg new file mode 100644 index 00000000..713bb978 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-reverse-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-reverse-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-reverse-outline.svg new file mode 100644 index 00000000..ba71dd17 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-reverse-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-rich-text-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-rich-text-fill.svg new file mode 100644 index 00000000..61f7c5e3 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-rich-text-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-rich-text-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-rich-text-outline.svg new file mode 100644 index 00000000..a9994e67 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-rich-text-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-right-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-right-fill.svg new file mode 100644 index 00000000..0e9f2b18 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-right-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-right-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-right-outline.svg new file mode 100644 index 00000000..ae126ddc --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-right-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-rising-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-rising-fill.svg new file mode 100644 index 00000000..0d6fab40 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-rising-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-rising-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-rising-outline.svg new file mode 100644 index 00000000..afeb048f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-rising-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-rotate-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-rotate-fill.svg new file mode 100644 index 00000000..aca5fa54 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-rotate-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-rotate-image-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-rotate-image-fill.svg new file mode 100644 index 00000000..ab5f6139 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-rotate-image-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-rotate-image-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-rotate-image-outline.svg new file mode 100644 index 00000000..a93edc39 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-rotate-image-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-rotate-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-rotate-outline.svg new file mode 100644 index 00000000..e2a51d26 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-rotate-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-rpan-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-rpan-fill.svg new file mode 100644 index 00000000..3025d96c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-rpan-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-rpan-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-rpan-outline.svg new file mode 100644 index 00000000..6aa88a84 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-rpan-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-rules-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-rules-fill.svg new file mode 100644 index 00000000..03736796 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-rules-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-rules-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-rules-outline.svg new file mode 100644 index 00000000..c3d5a8f7 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-rules-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-safari-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-safari-fill.svg new file mode 100644 index 00000000..dd0c0ece --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-safari-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-safari-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-safari-outline.svg new file mode 100644 index 00000000..48579946 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-safari-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-save-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-save-fill.svg new file mode 100644 index 00000000..2baccb02 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-save-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-save-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-save-outline.svg new file mode 100644 index 00000000..52649a6f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-save-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-save-view-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-save-view-fill.svg new file mode 100644 index 00000000..d468e142 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-save-view-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-save-view-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-save-view-outline.svg new file mode 100644 index 00000000..c8e183a0 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-save-view-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-saved-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-saved-fill.svg new file mode 100644 index 00000000..b2943480 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-saved-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-saved-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-saved-outline.svg new file mode 100644 index 00000000..11249fd5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-saved-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-search-fill-24.svg b/versioned_docs/version-0.13/assets/icons/icon-search-fill-24.svg new file mode 100644 index 00000000..4a0be7ea --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-search-fill-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-search-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-search-fill.svg new file mode 100644 index 00000000..78b88b44 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-search-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-search-outline-24.svg b/versioned_docs/version-0.13/assets/icons/icon-search-outline-24.svg new file mode 100644 index 00000000..1a1e609f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-search-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-search-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-search-outline.svg new file mode 100644 index 00000000..b7aa3d09 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-search-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-self-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-self-fill.svg new file mode 100644 index 00000000..f068b2af --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-self-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-self-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-self-outline.svg new file mode 100644 index 00000000..b97bc765 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-self-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-send-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-send-fill.svg new file mode 100644 index 00000000..1e68239e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-send-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-send-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-send-outline.svg new file mode 100644 index 00000000..0ecf0928 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-send-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-settings-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-settings-fill.svg new file mode 100644 index 00000000..88958da9 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-settings-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-settings-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-settings-outline.svg new file mode 100644 index 00000000..6214933f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-settings-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-severity-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-severity-fill.svg new file mode 100644 index 00000000..1511481d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-severity-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-severity-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-severity-outline.svg new file mode 100644 index 00000000..f6b3d29a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-severity-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-share-android-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-share-android-fill.svg new file mode 100644 index 00000000..0ec0c822 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-share-android-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-share-android-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-share-android-outline.svg new file mode 100644 index 00000000..d1339270 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-share-android-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-share-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-share-fill.svg new file mode 100644 index 00000000..03797d3b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-share-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-share-ios-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-share-ios-fill.svg new file mode 100644 index 00000000..670c7700 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-share-ios-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-share-ios-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-share-ios-outline.svg new file mode 100644 index 00000000..8691190d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-share-ios-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-share-new-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-share-new-fill.svg new file mode 100644 index 00000000..8d106475 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-share-new-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-share-new-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-share-new-outline.svg new file mode 100644 index 00000000..7afb960c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-share-new-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-share-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-share-outline.svg new file mode 100644 index 00000000..fec2ce94 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-share-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-show-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-show-fill.svg new file mode 100644 index 00000000..9a7b85e0 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-show-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-show-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-show-outline.svg new file mode 100644 index 00000000..d9a33518 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-show-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-side-menu-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-side-menu-fill.svg new file mode 100644 index 00000000..85b29e7e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-side-menu-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-side-menu-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-side-menu-outline.svg new file mode 100644 index 00000000..4b472ed8 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-side-menu-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-skipback10-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-skipback10-fill.svg new file mode 100644 index 00000000..57df13c1 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-skipback10-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-skipback10-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-skipback10-outline.svg new file mode 100644 index 00000000..f131d573 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-skipback10-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-skipforward10-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-skipforward10-fill.svg new file mode 100644 index 00000000..d964433c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-skipforward10-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-skipforward10-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-skipforward10-outline.svg new file mode 100644 index 00000000..f47d6d90 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-skipforward10-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-sort-az-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-sort-az-fill.svg new file mode 100644 index 00000000..5f5fd6e9 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-sort-az-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-sort-az-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-sort-az-outline.svg new file mode 100644 index 00000000..80227b5b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-sort-az-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-sort-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-sort-fill.svg new file mode 100644 index 00000000..a79532e6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-sort-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-sort-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-sort-outline.svg new file mode 100644 index 00000000..4ab41138 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-sort-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-sort-price-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-sort-price-fill.svg new file mode 100644 index 00000000..63ad6e40 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-sort-price-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-sort-price-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-sort-price-outline.svg new file mode 100644 index 00000000..f9d6ea3f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-sort-price-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-sort-za-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-sort-za-fill.svg new file mode 100644 index 00000000..bd45e10d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-sort-za-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-sort-za-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-sort-za-outline.svg new file mode 100644 index 00000000..1f42dcce --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-sort-za-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-spam-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-spam-fill.svg new file mode 100644 index 00000000..3bc472a5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-spam-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-spam-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-spam-outline.svg new file mode 100644 index 00000000..8514736f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-spam-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-spoiler-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-spoiler-fill.svg new file mode 100644 index 00000000..6c304dbd --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-spoiler-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-spoiler-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-spoiler-outline.svg new file mode 100644 index 00000000..495fa935 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-spoiler-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-sponsored-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-sponsored-fill.svg new file mode 100644 index 00000000..c78dae8a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-sponsored-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-sponsored-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-sponsored-outline.svg new file mode 100644 index 00000000..6391547a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-sponsored-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-spreadsheet-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-spreadsheet-fill.svg new file mode 100644 index 00000000..a0629949 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-spreadsheet-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-spreadsheet-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-spreadsheet-outline.svg new file mode 100644 index 00000000..8e2b4b75 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-spreadsheet-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-star-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-star-fill.svg new file mode 100644 index 00000000..b931cd8d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-star-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-star-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-star-outline.svg new file mode 100644 index 00000000..7bdede73 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-star-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-statistics-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-statistics-fill.svg new file mode 100644 index 00000000..84d38f20 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-statistics-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-statistics-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-statistics-outline.svg new file mode 100644 index 00000000..13461b3c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-statistics-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-status-live-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-status-live-fill.svg new file mode 100644 index 00000000..56d9bbb3 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-status-live-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-status-live-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-status-live-outline.svg new file mode 100644 index 00000000..b8aff72d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-status-live-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-sticker-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-sticker-fill.svg new file mode 100644 index 00000000..41f9a5b0 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-sticker-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-sticker-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-sticker-outline.svg new file mode 100644 index 00000000..9dd44eac --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-sticker-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-strikethrough-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-strikethrough-fill.svg new file mode 100644 index 00000000..1286dc10 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-strikethrough-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-strikethrough-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-strikethrough-outline.svg new file mode 100644 index 00000000..bc1c8d8d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-strikethrough-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-subtract-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-subtract-fill.svg new file mode 100644 index 00000000..9e61d296 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-subtract-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-subtract-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-subtract-outline.svg new file mode 100644 index 00000000..486bae28 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-subtract-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-superscript-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-superscript-fill.svg new file mode 100644 index 00000000..066edd7e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-superscript-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-superscript-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-superscript-outline.svg new file mode 100644 index 00000000..b89a494f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-superscript-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-swap-camera-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-swap-camera-fill.svg new file mode 100644 index 00000000..a0280361 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-swap-camera-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-swap-camera-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-swap-camera-outline.svg new file mode 100644 index 00000000..13fbd6bb --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-swap-camera-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-swipe-back-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-swipe-back-fill.svg new file mode 100644 index 00000000..a46bcfdf --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-swipe-back-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-swipe-back-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-swipe-back-outline.svg new file mode 100644 index 00000000..15ee5dbe --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-swipe-back-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-swipe-down-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-swipe-down-fill.svg new file mode 100644 index 00000000..8f9ed518 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-swipe-down-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-swipe-down-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-swipe-down-outline.svg new file mode 100644 index 00000000..cbf2938d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-swipe-down-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-swipe-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-swipe-fill.svg new file mode 100644 index 00000000..b5a9e954 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-swipe-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-swipe-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-swipe-outline.svg new file mode 100644 index 00000000..af90e56a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-swipe-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-swipe-up-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-swipe-up-fill.svg new file mode 100644 index 00000000..eb0bd66c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-swipe-up-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-swipe-up-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-swipe-up-outline.svg new file mode 100644 index 00000000..4452a13b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-swipe-up-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-table-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-table-fill.svg new file mode 100644 index 00000000..51863d31 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-table-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-table-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-table-outline.svg new file mode 100644 index 00000000..3954ec7c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-table-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-tag-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-tag-fill.svg new file mode 100644 index 00000000..d0f560bf --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-tag-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-tag-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-tag-outline.svg new file mode 100644 index 00000000..5bd945c4 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-tag-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-tap-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-tap-fill.svg new file mode 100644 index 00000000..4340b0ab --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-tap-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-tap-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-tap-outline.svg new file mode 100644 index 00000000..3b127eb3 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-tap-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-text-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-text-fill.svg new file mode 100644 index 00000000..de25cee6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-text-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-text-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-text-outline.svg new file mode 100644 index 00000000..4f84f7ae --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-text-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-text-post-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-text-post-fill.svg new file mode 100644 index 00000000..e3b7f3ad --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-text-post-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-text-post-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-text-post-outline.svg new file mode 100644 index 00000000..f10bd33e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-text-post-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-text-size-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-text-size-fill.svg new file mode 100644 index 00000000..646b098f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-text-size-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-text-size-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-text-size-outline.svg new file mode 100644 index 00000000..86fef49c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-text-size-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-toggle-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-toggle-fill.svg new file mode 100644 index 00000000..d63fa127 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-toggle-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-toggle-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-toggle-outline.svg new file mode 100644 index 00000000..1ca151d9 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-toggle-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-tools-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-tools-fill.svg new file mode 100644 index 00000000..eceee5ce --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-tools-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-tools-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-tools-outline.svg new file mode 100644 index 00000000..56877724 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-tools-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-top-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-top-fill.svg new file mode 100644 index 00000000..0cfae2ea --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-top-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-top-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-top-outline.svg new file mode 100644 index 00000000..cb9f7e8b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-top-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-activism-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-activism-fill.svg new file mode 100644 index 00000000..c3675ad3 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-activism-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-activism-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-activism-outline.svg new file mode 100644 index 00000000..c42d6c20 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-activism-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-addictionsupport-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-addictionsupport-fill.svg new file mode 100644 index 00000000..b7a7b0f1 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-addictionsupport-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-addictionsupport-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-addictionsupport-outline.svg new file mode 100644 index 00000000..fc2fd080 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-addictionsupport-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-advice-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-advice-fill.svg new file mode 100644 index 00000000..1ba8c71f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-advice-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-advice-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-advice-outline.svg new file mode 100644 index 00000000..29e43dbf --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-advice-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-animals-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-animals-fill.svg new file mode 100644 index 00000000..71351a8b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-animals-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-animals-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-animals-outline.svg new file mode 100644 index 00000000..4a82a54d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-animals-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-anime-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-anime-fill.svg new file mode 100644 index 00000000..c7ff0ba7 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-anime-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-anime-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-anime-outline.svg new file mode 100644 index 00000000..a241a303 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-anime-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-art-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-art-fill.svg new file mode 100644 index 00000000..fbba9107 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-art-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-art-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-art-outline.svg new file mode 100644 index 00000000..ecc4b6d8 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-art-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-beauty-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-beauty-fill.svg new file mode 100644 index 00000000..004643f6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-beauty-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-beauty-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-beauty-outline.svg new file mode 100644 index 00000000..b2417d94 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-beauty-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-business-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-business-fill.svg new file mode 100644 index 00000000..0522d991 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-business-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-business-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-business-outline.svg new file mode 100644 index 00000000..dae62414 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-business-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-careers-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-careers-fill.svg new file mode 100644 index 00000000..3cad68a9 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-careers-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-careers-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-careers-outline.svg new file mode 100644 index 00000000..c7ee219b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-careers-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-cars-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-cars-fill.svg new file mode 100644 index 00000000..93b0ab88 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-cars-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-cars-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-cars-outline.svg new file mode 100644 index 00000000..4f6c148d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-cars-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-celebrity-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-celebrity-fill.svg new file mode 100644 index 00000000..113e268c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-celebrity-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-celebrity-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-celebrity-outline.svg new file mode 100644 index 00000000..75f14147 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-celebrity-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-craftsdiy-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-craftsdiy-fill.svg new file mode 100644 index 00000000..a8d157ea --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-craftsdiy-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-craftsdiy-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-craftsdiy-outline.svg new file mode 100644 index 00000000..f4374ccc --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-craftsdiy-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-crypto-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-crypto-fill.svg new file mode 100644 index 00000000..04c38e1d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-crypto-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-crypto-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-crypto-outline.svg new file mode 100644 index 00000000..80bea825 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-crypto-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-culture-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-culture-fill.svg new file mode 100644 index 00000000..04e61567 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-culture-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-culture-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-culture-outline.svg new file mode 100644 index 00000000..d17024a6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-culture-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-diy-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-diy-fill.svg new file mode 100644 index 00000000..a6cf0ac3 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-diy-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-diy-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-diy-outline.svg new file mode 100644 index 00000000..ea4df4ac --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-diy-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-entertainment-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-entertainment-fill.svg new file mode 100644 index 00000000..871dd103 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-entertainment-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-entertainment-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-entertainment-outline.svg new file mode 100644 index 00000000..0db261d1 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-entertainment-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-ethics-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-ethics-fill.svg new file mode 100644 index 00000000..0e02041b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-ethics-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-ethics-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-ethics-outline.svg new file mode 100644 index 00000000..4a37fcbc --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-ethics-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-family-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-family-fill.svg new file mode 100644 index 00000000..73c79905 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-family-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-family-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-family-outline.svg new file mode 100644 index 00000000..2d294481 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-family-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-fashion-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-fashion-fill.svg new file mode 100644 index 00000000..408fb6fe --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-fashion-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-fashion-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-fashion-outline.svg new file mode 100644 index 00000000..ee96a048 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-fashion-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-fill.svg new file mode 100644 index 00000000..d634b1a3 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-fitness-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-fitness-fill.svg new file mode 100644 index 00000000..47024c3f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-fitness-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-fitness-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-fitness-outline.svg new file mode 100644 index 00000000..e95e8595 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-fitness-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-food-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-food-fill.svg new file mode 100644 index 00000000..1ff72304 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-food-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-food-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-food-outline.svg new file mode 100644 index 00000000..5888d4bb --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-food-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-funny-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-funny-fill.svg new file mode 100644 index 00000000..c15cd164 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-funny-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-funny-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-funny-outline.svg new file mode 100644 index 00000000..b5f6c7d0 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-funny-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-gender-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-gender-fill.svg new file mode 100644 index 00000000..0d9370fa --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-gender-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-gender-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-gender-outline.svg new file mode 100644 index 00000000..44e545b7 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-gender-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-health-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-health-fill.svg new file mode 100644 index 00000000..05006ff0 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-health-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-health-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-health-outline.svg new file mode 100644 index 00000000..eb6e5608 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-health-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-help-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-help-fill.svg new file mode 100644 index 00000000..f57f24af --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-help-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-help-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-help-outline.svg new file mode 100644 index 00000000..5c411b85 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-help-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-history-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-history-fill.svg new file mode 100644 index 00000000..401874ee --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-history-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-history-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-history-outline.svg new file mode 100644 index 00000000..311512fa --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-history-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-hobbies-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-hobbies-fill.svg new file mode 100644 index 00000000..a8d157ea --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-hobbies-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-hobbies-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-hobbies-outline.svg new file mode 100644 index 00000000..f4374ccc --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-hobbies-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-homegarden-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-homegarden-fill.svg new file mode 100644 index 00000000..680d7089 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-homegarden-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-homegarden-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-homegarden-outline.svg new file mode 100644 index 00000000..eac91b5a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-homegarden-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-internet-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-internet-fill.svg new file mode 100644 index 00000000..4a81cbf1 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-internet-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-internet-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-internet-outline.svg new file mode 100644 index 00000000..ad5c324c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-internet-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-law-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-law-fill.svg new file mode 100644 index 00000000..c4b75bab --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-law-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-law-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-law-outline.svg new file mode 100644 index 00000000..bc6599f1 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-law-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-learning-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-learning-fill.svg new file mode 100644 index 00000000..e10e7522 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-learning-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-learning-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-learning-outline.svg new file mode 100644 index 00000000..a7816add --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-learning-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-lifestyle-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-lifestyle-fill.svg new file mode 100644 index 00000000..680d7089 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-lifestyle-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-lifestyle-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-lifestyle-outline.svg new file mode 100644 index 00000000..eac91b5a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-lifestyle-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-marketplace-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-marketplace-fill.svg new file mode 100644 index 00000000..7fe6a22b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-marketplace-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-marketplace-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-marketplace-outline.svg new file mode 100644 index 00000000..37099243 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-marketplace-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-mature-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-mature-fill.svg new file mode 100644 index 00000000..ef789954 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-mature-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-mature-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-mature-outline.svg new file mode 100644 index 00000000..0e1129c8 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-mature-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-mensfashion-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-mensfashion-fill.svg new file mode 100644 index 00000000..51dfc67f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-mensfashion-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-mensfashion-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-mensfashion-outline.svg new file mode 100644 index 00000000..be2bfa2a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-mensfashion-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-menshealth-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-menshealth-fill.svg new file mode 100644 index 00000000..bd52fdea --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-menshealth-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-menshealth-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-menshealth-outline.svg new file mode 100644 index 00000000..742b91f7 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-menshealth-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-meta-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-meta-fill.svg new file mode 100644 index 00000000..a27c630a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-meta-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-meta-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-meta-outline.svg new file mode 100644 index 00000000..a484465f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-meta-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-military-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-military-fill.svg new file mode 100644 index 00000000..14c6c871 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-military-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-military-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-military-outline.svg new file mode 100644 index 00000000..102de829 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-military-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-movies-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-movies-fill.svg new file mode 100644 index 00000000..0dc83cf2 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-movies-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-movies-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-movies-outline.svg new file mode 100644 index 00000000..dd5ae8eb --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-movies-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-music-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-music-fill.svg new file mode 100644 index 00000000..ff6cd386 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-music-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-music-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-music-outline.svg new file mode 100644 index 00000000..e1e84136 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-music-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-news-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-news-fill.svg new file mode 100644 index 00000000..c7bbee98 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-news-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-news-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-news-outline.svg new file mode 100644 index 00000000..b31f0261 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-news-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-other-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-other-fill.svg new file mode 100644 index 00000000..d8127231 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-other-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-other-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-other-outline.svg new file mode 100644 index 00000000..5bb2b2e7 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-other-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-outdoors-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-outdoors-fill.svg new file mode 100644 index 00000000..bfad1ccd --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-outdoors-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-outdoors-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-outdoors-outline.svg new file mode 100644 index 00000000..1245dcef --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-outdoors-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-outline.svg new file mode 100644 index 00000000..535eddce --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-pets-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-pets-fill.svg new file mode 100644 index 00000000..3e49be62 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-pets-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-pets-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-pets-outline.svg new file mode 100644 index 00000000..7c5469f5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-pets-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-photography-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-photography-fill.svg new file mode 100644 index 00000000..79861fdb --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-photography-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-photography-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-photography-outline.svg new file mode 100644 index 00000000..3edd37ac --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-photography-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-places-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-places-fill.svg new file mode 100644 index 00000000..d14a5db1 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-places-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-places-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-places-outline.svg new file mode 100644 index 00000000..cec875d5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-places-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-podcasts-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-podcasts-fill.svg new file mode 100644 index 00000000..d518f7a5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-podcasts-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-podcasts-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-podcasts-outline.svg new file mode 100644 index 00000000..16d82269 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-podcasts-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-politics-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-politics-fill.svg new file mode 100644 index 00000000..a8740b3d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-politics-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-politics-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-politics-outline.svg new file mode 100644 index 00000000..229b4ff5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-politics-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-programming-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-programming-fill.svg new file mode 100644 index 00000000..fe0725ef --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-programming-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-programming-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-programming-outline.svg new file mode 100644 index 00000000..2f27731a --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-programming-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-reading-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-reading-fill.svg new file mode 100644 index 00000000..dde14f5d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-reading-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-reading-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-reading-outline.svg new file mode 100644 index 00000000..5108620d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-reading-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-religion-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-religion-fill.svg new file mode 100644 index 00000000..91ec5a64 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-religion-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-religion-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-religion-outline.svg new file mode 100644 index 00000000..b0accebe --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-religion-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-science-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-science-fill.svg new file mode 100644 index 00000000..df8f3714 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-science-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-science-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-science-outline.svg new file mode 100644 index 00000000..97415741 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-science-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-sexorientation-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-sexorientation-fill.svg new file mode 100644 index 00000000..162116cf --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-sexorientation-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-sexorientation-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-sexorientation-outline.svg new file mode 100644 index 00000000..8924df4c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-sexorientation-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-sports-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-sports-fill.svg new file mode 100644 index 00000000..158480aa --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-sports-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-sports-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-sports-outline.svg new file mode 100644 index 00000000..896064fe --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-sports-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-style-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-style-fill.svg new file mode 100644 index 00000000..7fe6a22b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-style-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-style-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-style-outline.svg new file mode 100644 index 00000000..37099243 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-style-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-tabletop-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-tabletop-fill.svg new file mode 100644 index 00000000..e45fd3a4 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-tabletop-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-tabletop-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-tabletop-outline.svg new file mode 100644 index 00000000..09f3772f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-tabletop-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-technology-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-technology-fill.svg new file mode 100644 index 00000000..1b53ccd7 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-technology-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-technology-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-technology-outline.svg new file mode 100644 index 00000000..f2a7d1b0 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-technology-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-television-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-television-fill.svg new file mode 100644 index 00000000..4129dbfd --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-television-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-television-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-television-outline.svg new file mode 100644 index 00000000..f600f5f5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-television-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-traumasupport-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-traumasupport-fill.svg new file mode 100644 index 00000000..f8d2c26e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-traumasupport-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-traumasupport-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-traumasupport-outline.svg new file mode 100644 index 00000000..6640e5fb --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-traumasupport-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-travel-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-travel-fill.svg new file mode 100644 index 00000000..b82de9b7 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-travel-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-travel-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-travel-outline.svg new file mode 100644 index 00000000..52c5c102 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-travel-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-videogaming-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-videogaming-fill.svg new file mode 100644 index 00000000..28f773fe --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-videogaming-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-videogaming-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-videogaming-outline.svg new file mode 100644 index 00000000..e3fe9745 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-videogaming-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-womensfashion-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-womensfashion-fill.svg new file mode 100644 index 00000000..408fb6fe --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-womensfashion-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-womensfashion-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-womensfashion-outline.svg new file mode 100644 index 00000000..ee96a048 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-womensfashion-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-womenshealth-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-womenshealth-fill.svg new file mode 100644 index 00000000..7f10515e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-womenshealth-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-topic-womenshealth-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-topic-womenshealth-outline.svg new file mode 100644 index 00000000..dcff3a6b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-topic-womenshealth-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-translate-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-translate-fill.svg new file mode 100644 index 00000000..7f62733d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-translate-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-translate-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-translate-outline.svg new file mode 100644 index 00000000..4372abbe --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-translate-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-translation-off-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-translation-off-fill.svg new file mode 100644 index 00000000..40f2fa0f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-translation-off-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-translation-off-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-translation-off-outline.svg new file mode 100644 index 00000000..547198d7 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-translation-off-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-trim-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-trim-fill.svg new file mode 100644 index 00000000..fc1e10fc --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-trim-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-trim-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-trim-outline.svg new file mode 100644 index 00000000..5f8912c7 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-trim-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-u-slash-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-u-slash-fill.svg new file mode 100644 index 00000000..15097b6d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-u-slash-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-u-slash-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-u-slash-outline.svg new file mode 100644 index 00000000..d1eed992 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-u-slash-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-unban-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-unban-fill.svg new file mode 100644 index 00000000..1a084b3f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-unban-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-unban-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-unban-outline.svg new file mode 100644 index 00000000..0a3a4481 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-unban-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-undo-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-undo-fill.svg new file mode 100644 index 00000000..08657ccb --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-undo-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-undo-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-undo-outline.svg new file mode 100644 index 00000000..ccb96b1d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-undo-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-unheart-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-unheart-fill.svg new file mode 100644 index 00000000..4dded3cd --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-unheart-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-unheart-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-unheart-outline.svg new file mode 100644 index 00000000..6d500d40 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-unheart-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-unlock-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-unlock-fill.svg new file mode 100644 index 00000000..bc0813e3 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-unlock-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-unlock-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-unlock-outline.svg new file mode 100644 index 00000000..01ab0584 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-unlock-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-unmod-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-unmod-fill.svg new file mode 100644 index 00000000..0809038c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-unmod-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-unmod-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-unmod-outline.svg new file mode 100644 index 00000000..b81e7fa8 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-unmod-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-unpin-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-unpin-fill.svg new file mode 100644 index 00000000..9fa6cf9f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-unpin-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-unpin-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-unpin-outline.svg new file mode 100644 index 00000000..a68c68af --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-unpin-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-unstar-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-unstar-fill.svg new file mode 100644 index 00000000..c677f6cf --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-unstar-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-unstar-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-unstar-outline.svg new file mode 100644 index 00000000..622e02cb --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-unstar-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-unverified-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-unverified-fill.svg new file mode 100644 index 00000000..5c8df14c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-unverified-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-unverified-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-unverified-outline.svg new file mode 100644 index 00000000..324732e6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-unverified-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-up-arrow-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-up-arrow-fill.svg new file mode 100644 index 00000000..384381fd --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-up-arrow-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-up-arrow-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-up-arrow-outline.svg new file mode 100644 index 00000000..b7ca0fdd --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-up-arrow-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-up-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-up-fill.svg new file mode 100644 index 00000000..ad4c5606 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-up-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-up-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-up-outline.svg new file mode 100644 index 00000000..ae663b96 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-up-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-upload-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-upload-fill.svg new file mode 100644 index 00000000..33d634d6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-upload-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-upload-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-upload-outline.svg new file mode 100644 index 00000000..ad6c2a32 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-upload-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-upvote-fill-mask.svg b/versioned_docs/version-0.13/assets/icons/icon-upvote-fill-mask.svg new file mode 100644 index 00000000..e1426e72 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-upvote-fill-mask.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-upvote-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-upvote-fill.svg new file mode 100644 index 00000000..595a3d02 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-upvote-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-upvote-offsetmask.svg b/versioned_docs/version-0.13/assets/icons/icon-upvote-offsetmask.svg new file mode 100644 index 00000000..e1426e72 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-upvote-offsetmask.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-upvote-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-upvote-outline.svg new file mode 100644 index 00000000..a76c67a0 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-upvote-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-upvotes-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-upvotes-fill.svg new file mode 100644 index 00000000..3997bbeb --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-upvotes-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-upvotes-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-upvotes-outline.svg new file mode 100644 index 00000000..d7546dc2 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-upvotes-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-user-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-user-fill.svg new file mode 100644 index 00000000..f985f7b6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-user-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-user-note-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-user-note-fill.svg new file mode 100644 index 00000000..ff02bfa8 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-user-note-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-user-note-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-user-note-outline.svg new file mode 100644 index 00000000..342f7f4e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-user-note-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-user-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-user-outline.svg new file mode 100644 index 00000000..a22cf50d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-user-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-users-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-users-fill.svg new file mode 100644 index 00000000..d08ddd23 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-users-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-users-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-users-outline.svg new file mode 100644 index 00000000..bab7c79b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-users-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-valentines-day-fill-24.svg b/versioned_docs/version-0.13/assets/icons/icon-valentines-day-fill-24.svg new file mode 100644 index 00000000..63439411 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-valentines-day-fill-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-valentines-day-outline-24.svg b/versioned_docs/version-0.13/assets/icons/icon-valentines-day-outline-24.svg new file mode 100644 index 00000000..a4d0bf13 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-valentines-day-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-vault-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-vault-fill.svg new file mode 100644 index 00000000..4898c7ff --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-vault-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-vault-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-vault-outline.svg new file mode 100644 index 00000000..fde80156 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-vault-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-verified-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-verified-fill.svg new file mode 100644 index 00000000..ea8c68fd --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-verified-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-verified-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-verified-outline.svg new file mode 100644 index 00000000..3bf0c796 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-verified-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-video-camera-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-video-camera-fill.svg new file mode 100644 index 00000000..385aa065 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-video-camera-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-video-camera-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-video-camera-outline.svg new file mode 100644 index 00000000..95249051 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-video-camera-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-video-feed-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-video-feed-fill.svg new file mode 100644 index 00000000..c20356c8 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-video-feed-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-video-feed-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-video-feed-outline.svg new file mode 100644 index 00000000..ed5575f5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-video-feed-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-video-live-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-video-live-fill.svg new file mode 100644 index 00000000..c48003f0 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-video-live-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-video-live-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-video-live-outline.svg new file mode 100644 index 00000000..8bcf5726 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-video-live-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-video-post-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-video-post-fill.svg new file mode 100644 index 00000000..1197e193 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-video-post-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-video-post-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-video-post-outline.svg new file mode 100644 index 00000000..5938a474 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-video-post-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-video-thread-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-video-thread-fill.svg new file mode 100644 index 00000000..a1b48d3d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-video-thread-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-video-thread-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-video-thread-outline.svg new file mode 100644 index 00000000..cb658fc6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-video-thread-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-video-transcription-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-video-transcription-fill.svg new file mode 100644 index 00000000..326c9c9d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-video-transcription-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-video-transcription-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-video-transcription-outline.svg new file mode 100644 index 00000000..47eb76dc --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-video-transcription-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-view-card-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-view-card-fill.svg new file mode 100644 index 00000000..10902ea2 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-view-card-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-view-card-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-view-card-outline.svg new file mode 100644 index 00000000..f7e06246 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-view-card-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-view-classic-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-view-classic-fill.svg new file mode 100644 index 00000000..ab40766f --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-view-classic-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-view-classic-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-view-classic-outline.svg new file mode 100644 index 00000000..83c04650 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-view-classic-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-view-compact-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-view-compact-fill.svg new file mode 100644 index 00000000..637a4f79 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-view-compact-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-view-compact-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-view-compact-outline.svg new file mode 100644 index 00000000..70a117c5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-view-compact-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-view-grid-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-view-grid-fill.svg new file mode 100644 index 00000000..dba59b28 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-view-grid-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-view-grid-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-view-grid-outline.svg new file mode 100644 index 00000000..42b21e23 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-view-grid-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-views-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-views-fill.svg new file mode 100644 index 00000000..ffba9b26 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-views-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-views-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-views-outline.svg new file mode 100644 index 00000000..778e3a5b --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-views-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-volume-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-volume-fill.svg new file mode 100644 index 00000000..31aa48d1 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-volume-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-volume-mute-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-volume-mute-fill.svg new file mode 100644 index 00000000..832479a5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-volume-mute-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-volume-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-volume-outline.svg new file mode 100644 index 00000000..931b01c7 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-volume-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-wallet-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-wallet-fill.svg new file mode 100644 index 00000000..696468da --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-wallet-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-wallet-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-wallet-outline.svg new file mode 100644 index 00000000..9711b60d --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-wallet-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-warning-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-warning-fill.svg new file mode 100644 index 00000000..49715087 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-warning-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-warning-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-warning-outline.svg new file mode 100644 index 00000000..54ab4ea3 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-warning-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-webhook-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-webhook-fill.svg new file mode 100644 index 00000000..8b023d5c --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-webhook-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-webhook-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-webhook-outline.svg new file mode 100644 index 00000000..c902ca46 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-webhook-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-whale-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-whale-fill.svg new file mode 100644 index 00000000..0de436b2 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-whale-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-whale-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-whale-outline.svg new file mode 100644 index 00000000..fc9a33be --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-whale-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-wiki-ban-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-wiki-ban-fill.svg new file mode 100644 index 00000000..a41801ce --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-wiki-ban-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-wiki-ban-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-wiki-ban-outline.svg new file mode 100644 index 00000000..9d3108c9 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-wiki-ban-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-wiki-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-wiki-fill.svg new file mode 100644 index 00000000..c6bd15d6 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-wiki-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-wiki-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-wiki-outline.svg new file mode 100644 index 00000000..008710c2 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-wiki-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-wiki-unban-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-wiki-unban-fill.svg new file mode 100644 index 00000000..ddcf8d78 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-wiki-unban-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-wiki-unban-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-wiki-unban-outline.svg new file mode 100644 index 00000000..fdb42f64 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-wiki-unban-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-world-fill.svg b/versioned_docs/version-0.13/assets/icons/icon-world-fill.svg new file mode 100644 index 00000000..5694453e --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-world-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/icons/icon-world-outline.svg b/versioned_docs/version-0.13/assets/icons/icon-world-outline.svg new file mode 100644 index 00000000..099be4c5 --- /dev/null +++ b/versioned_docs/version-0.13/assets/icons/icon-world-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-0.13/assets/install-app-button.png b/versioned_docs/version-0.13/assets/install-app-button.png new file mode 100644 index 00000000..aa21ad0a Binary files /dev/null and b/versioned_docs/version-0.13/assets/install-app-button.png differ diff --git a/versioned_docs/version-0.13/assets/install.png b/versioned_docs/version-0.13/assets/install.png new file mode 100644 index 00000000..8227c6d0 Binary files /dev/null and b/versioned_docs/version-0.13/assets/install.png differ diff --git a/versioned_docs/version-0.13/assets/intro-to-devvit-mod-action.png b/versioned_docs/version-0.13/assets/intro-to-devvit-mod-action.png new file mode 100644 index 00000000..03e9e063 Binary files /dev/null and b/versioned_docs/version-0.13/assets/intro-to-devvit-mod-action.png differ diff --git a/versioned_docs/version-0.13/assets/intro-to-devvit-playtesting.png b/versioned_docs/version-0.13/assets/intro-to-devvit-playtesting.png new file mode 100644 index 00000000..5344d9aa Binary files /dev/null and b/versioned_docs/version-0.13/assets/intro-to-devvit-playtesting.png differ diff --git a/versioned_docs/version-0.13/assets/intro-to-devvit-sub-action.png b/versioned_docs/version-0.13/assets/intro-to-devvit-sub-action.png new file mode 100644 index 00000000..a24b6ed1 Binary files /dev/null and b/versioned_docs/version-0.13/assets/intro-to-devvit-sub-action.png differ diff --git a/versioned_docs/version-0.13/assets/introduction/SnooToolboxClipboard.webp b/versioned_docs/version-0.13/assets/introduction/SnooToolboxClipboard.webp new file mode 100644 index 00000000..e030f01c Binary files /dev/null and b/versioned_docs/version-0.13/assets/introduction/SnooToolboxClipboard.webp differ diff --git a/versioned_docs/version-0.13/assets/introduction/SpotIllustration_Color_PartyHorn.webp b/versioned_docs/version-0.13/assets/introduction/SpotIllustration_Color_PartyHorn.webp new file mode 100644 index 00000000..a8e10079 Binary files /dev/null and b/versioned_docs/version-0.13/assets/introduction/SpotIllustration_Color_PartyHorn.webp differ diff --git a/versioned_docs/version-0.13/assets/introduction/SpotIllustration_Color_Toolbox.webp b/versioned_docs/version-0.13/assets/introduction/SpotIllustration_Color_Toolbox.webp new file mode 100644 index 00000000..68f65bc5 Binary files /dev/null and b/versioned_docs/version-0.13/assets/introduction/SpotIllustration_Color_Toolbox.webp differ diff --git a/versioned_docs/version-0.13/assets/introduction/SpotIllustration_RetroController_B.webp b/versioned_docs/version-0.13/assets/introduction/SpotIllustration_RetroController_B.webp new file mode 100644 index 00000000..93c98b20 Binary files /dev/null and b/versioned_docs/version-0.13/assets/introduction/SpotIllustration_RetroController_B.webp differ diff --git a/versioned_docs/version-0.13/assets/introduction/SpotIllustration_Rocket.webp b/versioned_docs/version-0.13/assets/introduction/SpotIllustration_Rocket.webp new file mode 100644 index 00000000..5d093c0c Binary files /dev/null and b/versioned_docs/version-0.13/assets/introduction/SpotIllustration_Rocket.webp differ diff --git a/versioned_docs/version-0.13/assets/lighthouse-score.gif b/versioned_docs/version-0.13/assets/lighthouse-score.gif new file mode 100644 index 00000000..df8f1a4a Binary files /dev/null and b/versioned_docs/version-0.13/assets/lighthouse-score.gif differ diff --git a/versioned_docs/version-0.13/assets/manage_uninstall.png b/versioned_docs/version-0.13/assets/manage_uninstall.png new file mode 100644 index 00000000..94775a2f Binary files /dev/null and b/versioned_docs/version-0.13/assets/manage_uninstall.png differ diff --git a/versioned_docs/version-0.13/assets/menu_app_comment.png b/versioned_docs/version-0.13/assets/menu_app_comment.png new file mode 100644 index 00000000..3deda6c0 Binary files /dev/null and b/versioned_docs/version-0.13/assets/menu_app_comment.png differ diff --git a/versioned_docs/version-0.13/assets/menu_app_error.png b/versioned_docs/version-0.13/assets/menu_app_error.png new file mode 100644 index 00000000..34d0829c Binary files /dev/null and b/versioned_docs/version-0.13/assets/menu_app_error.png differ diff --git a/versioned_docs/version-0.13/assets/menu_app_mod.png b/versioned_docs/version-0.13/assets/menu_app_mod.png new file mode 100644 index 00000000..52e0e04a Binary files /dev/null and b/versioned_docs/version-0.13/assets/menu_app_mod.png differ diff --git a/versioned_docs/version-0.13/assets/menu_app_post.png b/versioned_docs/version-0.13/assets/menu_app_post.png new file mode 100644 index 00000000..9566c1c0 Binary files /dev/null and b/versioned_docs/version-0.13/assets/menu_app_post.png differ diff --git a/versioned_docs/version-0.13/assets/menu_app_studio.png b/versioned_docs/version-0.13/assets/menu_app_studio.png new file mode 100644 index 00000000..d456ed6c Binary files /dev/null and b/versioned_docs/version-0.13/assets/menu_app_studio.png differ diff --git a/versioned_docs/version-0.13/assets/menu_app_subreddit.png b/versioned_docs/version-0.13/assets/menu_app_subreddit.png new file mode 100644 index 00000000..c037bc70 Binary files /dev/null and b/versioned_docs/version-0.13/assets/menu_app_subreddit.png differ diff --git a/versioned_docs/version-0.13/assets/menu_app_success.png b/versioned_docs/version-0.13/assets/menu_app_success.png new file mode 100644 index 00000000..69c0afc2 Binary files /dev/null and b/versioned_docs/version-0.13/assets/menu_app_success.png differ diff --git a/versioned_docs/version-0.13/assets/mod_community_settings.png b/versioned_docs/version-0.13/assets/mod_community_settings.png new file mode 100644 index 00000000..c40b1af8 Binary files /dev/null and b/versioned_docs/version-0.13/assets/mod_community_settings.png differ diff --git a/versioned_docs/version-0.13/assets/my-apps-5.png b/versioned_docs/version-0.13/assets/my-apps-5.png new file mode 100644 index 00000000..d5584322 Binary files /dev/null and b/versioned_docs/version-0.13/assets/my-apps-5.png differ diff --git a/versioned_docs/version-0.13/assets/my_apps.png b/versioned_docs/version-0.13/assets/my_apps.png new file mode 100644 index 00000000..2c5d85e9 Binary files /dev/null and b/versioned_docs/version-0.13/assets/my_apps.png differ diff --git a/versioned_docs/version-0.13/assets/notifications/component-examples.png b/versioned_docs/version-0.13/assets/notifications/component-examples.png new file mode 100644 index 00000000..33b8dd79 Binary files /dev/null and b/versioned_docs/version-0.13/assets/notifications/component-examples.png differ diff --git a/versioned_docs/version-0.13/assets/notifications/layer-urgency b/versioned_docs/version-0.13/assets/notifications/layer-urgency new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/versioned_docs/version-0.13/assets/notifications/layer-urgency @@ -0,0 +1 @@ + diff --git a/versioned_docs/version-0.13/assets/notifications/layer-urgency.png b/versioned_docs/version-0.13/assets/notifications/layer-urgency.png new file mode 100644 index 00000000..0046a348 Binary files /dev/null and b/versioned_docs/version-0.13/assets/notifications/layer-urgency.png differ diff --git a/versioned_docs/version-0.13/assets/notifications/syllo-pn-examples.png b/versioned_docs/version-0.13/assets/notifications/syllo-pn-examples.png new file mode 100644 index 00000000..9b0a0c8d Binary files /dev/null and b/versioned_docs/version-0.13/assets/notifications/syllo-pn-examples.png differ diff --git a/versioned_docs/version-0.13/assets/notifications/tangible-benefits.png b/versioned_docs/version-0.13/assets/notifications/tangible-benefits.png new file mode 100644 index 00000000..cff319bd Binary files /dev/null and b/versioned_docs/version-0.13/assets/notifications/tangible-benefits.png differ diff --git a/versioned_docs/version-0.13/assets/notifications/visible-progress.png b/versioned_docs/version-0.13/assets/notifications/visible-progress.png new file mode 100644 index 00000000..c721c9e3 Binary files /dev/null and b/versioned_docs/version-0.13/assets/notifications/visible-progress.png differ diff --git a/versioned_docs/version-0.13/assets/oauth-login.png b/versioned_docs/version-0.13/assets/oauth-login.png new file mode 100644 index 00000000..7676537f Binary files /dev/null and b/versioned_docs/version-0.13/assets/oauth-login.png differ diff --git a/versioned_docs/version-0.13/assets/oauth-perms.png b/versioned_docs/version-0.13/assets/oauth-perms.png new file mode 100644 index 00000000..0607a4f4 Binary files /dev/null and b/versioned_docs/version-0.13/assets/oauth-perms.png differ diff --git a/versioned_docs/version-0.13/assets/oauth-revoke.png b/versioned_docs/version-0.13/assets/oauth-revoke.png new file mode 100644 index 00000000..55e68f4a Binary files /dev/null and b/versioned_docs/version-0.13/assets/oauth-revoke.png differ diff --git a/versioned_docs/version-0.13/assets/oauth-success.png b/versioned_docs/version-0.13/assets/oauth-success.png new file mode 100644 index 00000000..3bf41e4a Binary files /dev/null and b/versioned_docs/version-0.13/assets/oauth-success.png differ diff --git a/versioned_docs/version-0.13/assets/payment_simulation.png b/versioned_docs/version-0.13/assets/payment_simulation.png new file mode 100644 index 00000000..f7863a6a Binary files /dev/null and b/versioned_docs/version-0.13/assets/payment_simulation.png differ diff --git a/versioned_docs/version-0.13/assets/payments_button_purchase.png b/versioned_docs/version-0.13/assets/payments_button_purchase.png new file mode 100644 index 00000000..2b111ee0 Binary files /dev/null and b/versioned_docs/version-0.13/assets/payments_button_purchase.png differ diff --git a/versioned_docs/version-0.13/assets/payments_component_button.png b/versioned_docs/version-0.13/assets/payments_component_button.png new file mode 100644 index 00000000..9d491530 Binary files /dev/null and b/versioned_docs/version-0.13/assets/payments_component_button.png differ diff --git a/versioned_docs/version-0.13/assets/payments_component_list.png b/versioned_docs/version-0.13/assets/payments_component_list.png new file mode 100644 index 00000000..88b0d7f0 Binary files /dev/null and b/versioned_docs/version-0.13/assets/payments_component_list.png differ diff --git a/versioned_docs/version-0.13/assets/payments_component_tile.png b/versioned_docs/version-0.13/assets/payments_component_tile.png new file mode 100644 index 00000000..7fa79241 Binary files /dev/null and b/versioned_docs/version-0.13/assets/payments_component_tile.png differ diff --git a/versioned_docs/version-0.13/assets/payments_example.png b/versioned_docs/version-0.13/assets/payments_example.png new file mode 100644 index 00000000..d7b6eff5 Binary files /dev/null and b/versioned_docs/version-0.13/assets/payments_example.png differ diff --git a/versioned_docs/version-0.13/assets/payments_order_flow.jpg b/versioned_docs/version-0.13/assets/payments_order_flow.jpg new file mode 100644 index 00000000..2ba04a1a Binary files /dev/null and b/versioned_docs/version-0.13/assets/payments_order_flow.jpg differ diff --git a/versioned_docs/version-0.13/assets/payments_order_flow_diagram.png b/versioned_docs/version-0.13/assets/payments_order_flow_diagram.png new file mode 100644 index 00000000..e9cb9961 Binary files /dev/null and b/versioned_docs/version-0.13/assets/payments_order_flow_diagram.png differ diff --git a/versioned_docs/version-0.13/assets/play/code_completion.png b/versioned_docs/version-0.13/assets/play/code_completion.png new file mode 100644 index 00000000..c6e8c9cb Binary files /dev/null and b/versioned_docs/version-0.13/assets/play/code_completion.png differ diff --git a/versioned_docs/version-0.13/assets/play/collaborate.png b/versioned_docs/version-0.13/assets/play/collaborate.png new file mode 100644 index 00000000..dc6cd83f Binary files /dev/null and b/versioned_docs/version-0.13/assets/play/collaborate.png differ diff --git a/versioned_docs/version-0.13/assets/play/example_clock.png b/versioned_docs/version-0.13/assets/play/example_clock.png new file mode 100644 index 00000000..2a86e638 Binary files /dev/null and b/versioned_docs/version-0.13/assets/play/example_clock.png differ diff --git a/versioned_docs/version-0.13/assets/play/example_hello_blocks.png b/versioned_docs/version-0.13/assets/play/example_hello_blocks.png new file mode 100644 index 00000000..fe22b6e5 Binary files /dev/null and b/versioned_docs/version-0.13/assets/play/example_hello_blocks.png differ diff --git a/versioned_docs/version-0.13/assets/play/example_polls.png b/versioned_docs/version-0.13/assets/play/example_polls.png new file mode 100644 index 00000000..1df7550f Binary files /dev/null and b/versioned_docs/version-0.13/assets/play/example_polls.png differ diff --git a/versioned_docs/version-0.13/assets/play/example_progress_bar.png b/versioned_docs/version-0.13/assets/play/example_progress_bar.png new file mode 100644 index 00000000..bca5da40 Binary files /dev/null and b/versioned_docs/version-0.13/assets/play/example_progress_bar.png differ diff --git a/versioned_docs/version-0.13/assets/play/export.png b/versioned_docs/version-0.13/assets/play/export.png new file mode 100644 index 00000000..82e8e111 Binary files /dev/null and b/versioned_docs/version-0.13/assets/play/export.png differ diff --git a/versioned_docs/version-0.13/assets/play/preview.png b/versioned_docs/version-0.13/assets/play/preview.png new file mode 100644 index 00000000..0c85b21b Binary files /dev/null and b/versioned_docs/version-0.13/assets/play/preview.png differ diff --git a/versioned_docs/version-0.13/assets/play/screenshot.png b/versioned_docs/version-0.13/assets/play/screenshot.png new file mode 100644 index 00000000..053e7285 Binary files /dev/null and b/versioned_docs/version-0.13/assets/play/screenshot.png differ diff --git a/versioned_docs/version-0.13/assets/play/type-check.png b/versioned_docs/version-0.13/assets/play/type-check.png new file mode 100644 index 00000000..fe1c9a3b Binary files /dev/null and b/versioned_docs/version-0.13/assets/play/type-check.png differ diff --git a/versioned_docs/version-0.13/assets/poll.png b/versioned_docs/version-0.13/assets/poll.png new file mode 100644 index 00000000..0d05111f Binary files /dev/null and b/versioned_docs/version-0.13/assets/poll.png differ diff --git a/versioned_docs/version-0.13/assets/poll_add_option_form.png b/versioned_docs/version-0.13/assets/poll_add_option_form.png new file mode 100644 index 00000000..70a66a1a Binary files /dev/null and b/versioned_docs/version-0.13/assets/poll_add_option_form.png differ diff --git a/versioned_docs/version-0.13/assets/poll_custom_response_option.png b/versioned_docs/version-0.13/assets/poll_custom_response_option.png new file mode 100644 index 00000000..2ccbbe1f Binary files /dev/null and b/versioned_docs/version-0.13/assets/poll_custom_response_option.png differ diff --git a/versioned_docs/version-0.13/assets/poll_new_option_added.png b/versioned_docs/version-0.13/assets/poll_new_option_added.png new file mode 100644 index 00000000..c5180f91 Binary files /dev/null and b/versioned_docs/version-0.13/assets/poll_new_option_added.png differ diff --git a/versioned_docs/version-0.13/assets/poll_success_toast.png b/versioned_docs/version-0.13/assets/poll_success_toast.png new file mode 100644 index 00000000..d5a53eff Binary files /dev/null and b/versioned_docs/version-0.13/assets/poll_success_toast.png differ diff --git a/versioned_docs/version-0.13/assets/poll_voted.png b/versioned_docs/version-0.13/assets/poll_voted.png new file mode 100644 index 00000000..15c1c8e4 Binary files /dev/null and b/versioned_docs/version-0.13/assets/poll_voted.png differ diff --git a/versioned_docs/version-0.13/assets/qs_complete.png b/versioned_docs/version-0.13/assets/qs_complete.png new file mode 100644 index 00000000..043cbead Binary files /dev/null and b/versioned_docs/version-0.13/assets/qs_complete.png differ diff --git a/versioned_docs/version-0.13/assets/qs_remind-me.png b/versioned_docs/version-0.13/assets/qs_remind-me.png new file mode 100644 index 00000000..f2b782ab Binary files /dev/null and b/versioned_docs/version-0.13/assets/qs_remind-me.png differ diff --git a/versioned_docs/version-0.13/assets/qs_toast.png b/versioned_docs/version-0.13/assets/qs_toast.png new file mode 100644 index 00000000..fbb4bce4 Binary files /dev/null and b/versioned_docs/version-0.13/assets/qs_toast.png differ diff --git a/versioned_docs/version-0.13/assets/quickstart/quickstart-mod-tool-1.png b/versioned_docs/version-0.13/assets/quickstart/quickstart-mod-tool-1.png new file mode 100644 index 00000000..d3a47543 Binary files /dev/null and b/versioned_docs/version-0.13/assets/quickstart/quickstart-mod-tool-1.png differ diff --git a/versioned_docs/version-0.13/assets/quickstart/quickstart-mod-tool-2.png b/versioned_docs/version-0.13/assets/quickstart/quickstart-mod-tool-2.png new file mode 100644 index 00000000..59a5af16 Binary files /dev/null and b/versioned_docs/version-0.13/assets/quickstart/quickstart-mod-tool-2.png differ diff --git a/versioned_docs/version-0.13/assets/quickstart_game_subreddit.png b/versioned_docs/version-0.13/assets/quickstart_game_subreddit.png new file mode 100644 index 00000000..5f5d3230 Binary files /dev/null and b/versioned_docs/version-0.13/assets/quickstart_game_subreddit.png differ diff --git a/versioned_docs/version-0.13/assets/quickstart_gamemaker.gif b/versioned_docs/version-0.13/assets/quickstart_gamemaker.gif new file mode 100644 index 00000000..a78403b2 Binary files /dev/null and b/versioned_docs/version-0.13/assets/quickstart_gamemaker.gif differ diff --git a/versioned_docs/version-0.13/assets/quickstart_unity.gif b/versioned_docs/version-0.13/assets/quickstart_unity.gif new file mode 100644 index 00000000..278853f5 Binary files /dev/null and b/versioned_docs/version-0.13/assets/quickstart_unity.gif differ diff --git a/versioned_docs/version-0.13/assets/quiz_planet_inline_screen.jpg b/versioned_docs/version-0.13/assets/quiz_planet_inline_screen.jpg new file mode 100644 index 00000000..b71992af Binary files /dev/null and b/versioned_docs/version-0.13/assets/quiz_planet_inline_screen.jpg differ diff --git a/versioned_docs/version-0.13/assets/realtime/devvit_emoji_chat.gif b/versioned_docs/version-0.13/assets/realtime/devvit_emoji_chat.gif new file mode 100644 index 00000000..14935e18 Binary files /dev/null and b/versioned_docs/version-0.13/assets/realtime/devvit_emoji_chat.gif differ diff --git a/versioned_docs/version-0.13/assets/realtime/mini_place_high.gif b/versioned_docs/version-0.13/assets/realtime/mini_place_high.gif new file mode 100644 index 00000000..123e7b03 Binary files /dev/null and b/versioned_docs/version-0.13/assets/realtime/mini_place_high.gif differ diff --git a/versioned_docs/version-0.13/assets/realtime/server_push.gif b/versioned_docs/version-0.13/assets/realtime/server_push.gif new file mode 100644 index 00000000..38a26035 Binary files /dev/null and b/versioned_docs/version-0.13/assets/realtime/server_push.gif differ diff --git a/versioned_docs/version-0.13/assets/realtime/snoo_club.gif b/versioned_docs/version-0.13/assets/realtime/snoo_club.gif new file mode 100644 index 00000000..17b48b21 Binary files /dev/null and b/versioned_docs/version-0.13/assets/realtime/snoo_club.gif differ diff --git a/versioned_docs/version-0.13/assets/realtime/snoo_club_backup.gif b/versioned_docs/version-0.13/assets/realtime/snoo_club_backup.gif new file mode 100644 index 00000000..14061d01 Binary files /dev/null and b/versioned_docs/version-0.13/assets/realtime/snoo_club_backup.gif differ diff --git a/versioned_docs/version-0.13/assets/realtime/synced_progress_bar.gif b/versioned_docs/version-0.13/assets/realtime/synced_progress_bar.gif new file mode 100644 index 00000000..911b1756 Binary files /dev/null and b/versioned_docs/version-0.13/assets/realtime/synced_progress_bar.gif differ diff --git a/versioned_docs/version-0.13/assets/remind_me_bot_failed_toast_past.png b/versioned_docs/version-0.13/assets/remind_me_bot_failed_toast_past.png new file mode 100644 index 00000000..33045737 Binary files /dev/null and b/versioned_docs/version-0.13/assets/remind_me_bot_failed_toast_past.png differ diff --git a/versioned_docs/version-0.13/assets/remind_me_bot_failed_toast_unknown.png b/versioned_docs/version-0.13/assets/remind_me_bot_failed_toast_unknown.png new file mode 100644 index 00000000..311ad14a Binary files /dev/null and b/versioned_docs/version-0.13/assets/remind_me_bot_failed_toast_unknown.png differ diff --git a/versioned_docs/version-0.13/assets/remind_me_bot_input_form.png b/versioned_docs/version-0.13/assets/remind_me_bot_input_form.png new file mode 100644 index 00000000..3c217bfc Binary files /dev/null and b/versioned_docs/version-0.13/assets/remind_me_bot_input_form.png differ diff --git a/versioned_docs/version-0.13/assets/remind_me_bot_menu_entry.png b/versioned_docs/version-0.13/assets/remind_me_bot_menu_entry.png new file mode 100644 index 00000000..11d0a7eb Binary files /dev/null and b/versioned_docs/version-0.13/assets/remind_me_bot_menu_entry.png differ diff --git a/versioned_docs/version-0.13/assets/remind_me_bot_success_toast.png b/versioned_docs/version-0.13/assets/remind_me_bot_success_toast.png new file mode 100644 index 00000000..15c9bed4 Binary files /dev/null and b/versioned_docs/version-0.13/assets/remind_me_bot_success_toast.png differ diff --git a/versioned_docs/version-0.13/assets/showcase/1line1.gif b/versioned_docs/version-0.13/assets/showcase/1line1.gif new file mode 100644 index 00000000..cf67a313 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/1line1.gif differ diff --git a/versioned_docs/version-0.13/assets/showcase/RedditForDevelopers_Logo_ShortBubble.png b/versioned_docs/version-0.13/assets/showcase/RedditForDevelopers_Logo_ShortBubble.png new file mode 100644 index 00000000..90cd1b07 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/RedditForDevelopers_Logo_ShortBubble.png differ diff --git a/versioned_docs/version-0.13/assets/showcase/app-gallery/bot-bouncer.png b/versioned_docs/version-0.13/assets/showcase/app-gallery/bot-bouncer.png new file mode 100644 index 00000000..cd91c1a7 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/app-gallery/bot-bouncer.png differ diff --git a/versioned_docs/version-0.13/assets/showcase/app-gallery/community-home.png b/versioned_docs/version-0.13/assets/showcase/app-gallery/community-home.png new file mode 100644 index 00000000..bf9e6456 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/app-gallery/community-home.png differ diff --git a/versioned_docs/version-0.13/assets/showcase/app-gallery/hightier.png b/versioned_docs/version-0.13/assets/showcase/app-gallery/hightier.png new file mode 100644 index 00000000..d0f0bf54 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/app-gallery/hightier.png differ diff --git a/versioned_docs/version-0.13/assets/showcase/app-gallery/honk.png b/versioned_docs/version-0.13/assets/showcase/app-gallery/honk.png new file mode 100644 index 00000000..d35cf56f Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/app-gallery/honk.png differ diff --git a/versioned_docs/version-0.13/assets/showcase/app-gallery/pixelary.png b/versioned_docs/version-0.13/assets/showcase/app-gallery/pixelary.png new file mode 100644 index 00000000..1d87594f Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/app-gallery/pixelary.png differ diff --git a/versioned_docs/version-0.13/assets/showcase/app-gallery/riddonkulous.png b/versioned_docs/version-0.13/assets/showcase/app-gallery/riddonkulous.png new file mode 100644 index 00000000..4f88ca88 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/app-gallery/riddonkulous.png differ diff --git a/versioned_docs/version-0.13/assets/showcase/app-gallery/sword-and-supper.png b/versioned_docs/version-0.13/assets/showcase/app-gallery/sword-and-supper.png new file mode 100644 index 00000000..f9917942 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/app-gallery/sword-and-supper.png differ diff --git a/versioned_docs/version-0.13/assets/showcase/app-gallery/what-the.png b/versioned_docs/version-0.13/assets/showcase/app-gallery/what-the.png new file mode 100644 index 00000000..9ac52bb1 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/app-gallery/what-the.png differ diff --git a/versioned_docs/version-0.13/assets/showcase/buildit_building.gif b/versioned_docs/version-0.13/assets/showcase/buildit_building.gif new file mode 100644 index 00000000..4da505d0 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/buildit_building.gif differ diff --git a/versioned_docs/version-0.13/assets/showcase/buildit_gameplay.gif b/versioned_docs/version-0.13/assets/showcase/buildit_gameplay.gif new file mode 100644 index 00000000..40560f2e Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/buildit_gameplay.gif differ diff --git a/versioned_docs/version-0.13/assets/showcase/buildit_purchasing.gif b/versioned_docs/version-0.13/assets/showcase/buildit_purchasing.gif new file mode 100644 index 00000000..3f652d3b Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/buildit_purchasing.gif differ diff --git a/versioned_docs/version-0.13/assets/showcase/dailydm.gif b/versioned_docs/version-0.13/assets/showcase/dailydm.gif new file mode 100644 index 00000000..98baf0ce Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/dailydm.gif differ diff --git a/versioned_docs/version-0.13/assets/showcase/dark_dungeon.gif b/versioned_docs/version-0.13/assets/showcase/dark_dungeon.gif new file mode 100644 index 00000000..82a1b3a5 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/dark_dungeon.gif differ diff --git a/versioned_docs/version-0.13/assets/showcase/dark_dungeon_shop.gif b/versioned_docs/version-0.13/assets/showcase/dark_dungeon_shop.gif new file mode 100644 index 00000000..b011dbf5 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/dark_dungeon_shop.gif differ diff --git a/versioned_docs/version-0.13/assets/showcase/flappy_goose.gif b/versioned_docs/version-0.13/assets/showcase/flappy_goose.gif new file mode 100644 index 00000000..59d557e7 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/flappy_goose.gif differ diff --git a/versioned_docs/version-0.13/assets/showcase/hightier.gif b/versioned_docs/version-0.13/assets/showcase/hightier.gif new file mode 100644 index 00000000..f1eda23b Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/hightier.gif differ diff --git a/versioned_docs/version-0.13/assets/showcase/honk1.gif b/versioned_docs/version-0.13/assets/showcase/honk1.gif new file mode 100644 index 00000000..c9175e02 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/honk1.gif differ diff --git a/versioned_docs/version-0.13/assets/showcase/pixelary_mobile.png b/versioned_docs/version-0.13/assets/showcase/pixelary_mobile.png new file mode 100644 index 00000000..08df9927 --- /dev/null +++ b/versioned_docs/version-0.13/assets/showcase/pixelary_mobile.png @@ -0,0 +1 @@ + diff --git a/versioned_docs/version-0.13/assets/showcase/pixisle1.gif b/versioned_docs/version-0.13/assets/showcase/pixisle1.gif new file mode 100644 index 00000000..fcb4f7db Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/pixisle1.gif differ diff --git a/versioned_docs/version-0.13/assets/showcase/playgrounds-card-game-layout.png b/versioned_docs/version-0.13/assets/showcase/playgrounds-card-game-layout.png new file mode 100644 index 00000000..4fb8db6f Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/playgrounds-card-game-layout.png differ diff --git a/versioned_docs/version-0.13/assets/showcase/playgrounds-clock.gif b/versioned_docs/version-0.13/assets/showcase/playgrounds-clock.gif new file mode 100644 index 00000000..8fa4dd6b Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/playgrounds-clock.gif differ diff --git a/versioned_docs/version-0.13/assets/showcase/playgrounds-clock.png b/versioned_docs/version-0.13/assets/showcase/playgrounds-clock.png new file mode 100644 index 00000000..b01e63d9 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/playgrounds-clock.png differ diff --git a/versioned_docs/version-0.13/assets/showcase/playgrounds-drawable-canvas.gif b/versioned_docs/version-0.13/assets/showcase/playgrounds-drawable-canvas.gif new file mode 100644 index 00000000..aec86c10 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/playgrounds-drawable-canvas.gif differ diff --git a/versioned_docs/version-0.13/assets/showcase/playgrounds-drawable-canvas.png b/versioned_docs/version-0.13/assets/showcase/playgrounds-drawable-canvas.png new file mode 100644 index 00000000..e8afb27a Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/playgrounds-drawable-canvas.png differ diff --git a/versioned_docs/version-0.13/assets/showcase/playgrounds-football.png b/versioned_docs/version-0.13/assets/showcase/playgrounds-football.png new file mode 100644 index 00000000..4aa7988c Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/playgrounds-football.png differ diff --git a/versioned_docs/version-0.13/assets/showcase/playgrounds-in-app-navigation.gif b/versioned_docs/version-0.13/assets/showcase/playgrounds-in-app-navigation.gif new file mode 100644 index 00000000..d3efb4c0 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/playgrounds-in-app-navigation.gif differ diff --git a/versioned_docs/version-0.13/assets/showcase/playgrounds-in-app-navigation.png b/versioned_docs/version-0.13/assets/showcase/playgrounds-in-app-navigation.png new file mode 100644 index 00000000..10c79d7f Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/playgrounds-in-app-navigation.png differ diff --git a/versioned_docs/version-0.13/assets/showcase/playgrounds-pixel-font.gif b/versioned_docs/version-0.13/assets/showcase/playgrounds-pixel-font.gif new file mode 100644 index 00000000..4c50c3e5 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/playgrounds-pixel-font.gif differ diff --git a/versioned_docs/version-0.13/assets/showcase/playgrounds-pixel-font.png b/versioned_docs/version-0.13/assets/showcase/playgrounds-pixel-font.png new file mode 100644 index 00000000..b61f322f Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/playgrounds-pixel-font.png differ diff --git a/versioned_docs/version-0.13/assets/showcase/playgrounds-polls.gif b/versioned_docs/version-0.13/assets/showcase/playgrounds-polls.gif new file mode 100644 index 00000000..dd331abd Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/playgrounds-polls.gif differ diff --git a/versioned_docs/version-0.13/assets/showcase/playgrounds-polls.png b/versioned_docs/version-0.13/assets/showcase/playgrounds-polls.png new file mode 100644 index 00000000..af8ba7fe Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/playgrounds-polls.png differ diff --git a/versioned_docs/version-0.13/assets/showcase/playgrounds-progress-bar.gif b/versioned_docs/version-0.13/assets/showcase/playgrounds-progress-bar.gif new file mode 100644 index 00000000..b29c9a40 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/playgrounds-progress-bar.gif differ diff --git a/versioned_docs/version-0.13/assets/showcase/playgrounds-progress-bar.png b/versioned_docs/version-0.13/assets/showcase/playgrounds-progress-bar.png new file mode 100644 index 00000000..f31b9693 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/playgrounds-progress-bar.png differ diff --git a/versioned_docs/version-0.13/assets/showcase/riddonkulous_guess.gif b/versioned_docs/version-0.13/assets/showcase/riddonkulous_guess.gif new file mode 100644 index 00000000..26037c61 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/riddonkulous_guess.gif differ diff --git a/versioned_docs/version-0.13/assets/showcase/riddonkulous_reddit_gold.gif b/versioned_docs/version-0.13/assets/showcase/riddonkulous_reddit_gold.gif new file mode 100644 index 00000000..37fd7198 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/riddonkulous_reddit_gold.gif differ diff --git a/versioned_docs/version-0.13/assets/showcase/sword_and_supper.gif b/versioned_docs/version-0.13/assets/showcase/sword_and_supper.gif new file mode 100644 index 00000000..00e513d4 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/sword_and_supper.gif differ diff --git a/versioned_docs/version-0.13/assets/showcase/swordandsupper1.gif b/versioned_docs/version-0.13/assets/showcase/swordandsupper1.gif new file mode 100644 index 00000000..0483b335 Binary files /dev/null and b/versioned_docs/version-0.13/assets/showcase/swordandsupper1.gif differ diff --git a/versioned_docs/version-0.13/assets/splash_screen.png b/versioned_docs/version-0.13/assets/splash_screen.png new file mode 100644 index 00000000..c1fcebc8 Binary files /dev/null and b/versioned_docs/version-0.13/assets/splash_screen.png differ diff --git a/versioned_docs/version-0.13/assets/studio_breakpoints.png b/versioned_docs/version-0.13/assets/studio_breakpoints.png new file mode 100644 index 00000000..2b15aaeb Binary files /dev/null and b/versioned_docs/version-0.13/assets/studio_breakpoints.png differ diff --git a/versioned_docs/version-0.13/assets/studio_docs_main.png b/versioned_docs/version-0.13/assets/studio_docs_main.png new file mode 100644 index 00000000..dfa806f8 Binary files /dev/null and b/versioned_docs/version-0.13/assets/studio_docs_main.png differ diff --git a/versioned_docs/version-0.13/assets/studio_sub_select.png b/versioned_docs/version-0.13/assets/studio_sub_select.png new file mode 100644 index 00000000..83e3d1ff Binary files /dev/null and b/versioned_docs/version-0.13/assets/studio_sub_select.png differ diff --git a/versioned_docs/version-0.13/assets/support_birbclub.gif b/versioned_docs/version-0.13/assets/support_birbclub.gif new file mode 100644 index 00000000..74006644 Binary files /dev/null and b/versioned_docs/version-0.13/assets/support_birbclub.gif differ diff --git a/versioned_docs/version-0.13/assets/support_birbclub_flair.png b/versioned_docs/version-0.13/assets/support_birbclub_flair.png new file mode 100644 index 00000000..adcdf590 Binary files /dev/null and b/versioned_docs/version-0.13/assets/support_birbclub_flair.png differ diff --git a/versioned_docs/version-0.13/assets/support_this_app.png b/versioned_docs/version-0.13/assets/support_this_app.png new file mode 100644 index 00000000..2f546a6a Binary files /dev/null and b/versioned_docs/version-0.13/assets/support_this_app.png differ diff --git a/versioned_docs/version-0.13/assets/test-init.png b/versioned_docs/version-0.13/assets/test-init.png new file mode 100644 index 00000000..2707d29b Binary files /dev/null and b/versioned_docs/version-0.13/assets/test-init.png differ diff --git a/versioned_docs/version-0.13/assets/text_formats/constricting.png b/versioned_docs/version-0.13/assets/text_formats/constricting.png new file mode 100644 index 00000000..0afae4c1 Binary files /dev/null and b/versioned_docs/version-0.13/assets/text_formats/constricting.png differ diff --git a/versioned_docs/version-0.13/assets/text_formats/constricting_limited.png b/versioned_docs/version-0.13/assets/text_formats/constricting_limited.png new file mode 100644 index 00000000..be77299d Binary files /dev/null and b/versioned_docs/version-0.13/assets/text_formats/constricting_limited.png differ diff --git a/versioned_docs/version-0.13/assets/text_formats/constricting_overflow.png b/versioned_docs/version-0.13/assets/text_formats/constricting_overflow.png new file mode 100644 index 00000000..3c1e3909 Binary files /dev/null and b/versioned_docs/version-0.13/assets/text_formats/constricting_overflow.png differ diff --git a/versioned_docs/version-0.13/assets/text_formats/default_text.png b/versioned_docs/version-0.13/assets/text_formats/default_text.png new file mode 100644 index 00000000..bbd4195c Binary files /dev/null and b/versioned_docs/version-0.13/assets/text_formats/default_text.png differ diff --git a/versioned_docs/version-0.13/assets/text_formats/overflow.png b/versioned_docs/version-0.13/assets/text_formats/overflow.png new file mode 100644 index 00000000..a7d150d9 Binary files /dev/null and b/versioned_docs/version-0.13/assets/text_formats/overflow.png differ diff --git a/versioned_docs/version-0.13/assets/text_formats/text_wrapping.png b/versioned_docs/version-0.13/assets/text_formats/text_wrapping.png new file mode 100644 index 00000000..cf3586b9 Binary files /dev/null and b/versioned_docs/version-0.13/assets/text_formats/text_wrapping.png differ diff --git a/versioned_docs/version-0.13/assets/three_strikes_app_author_strike_count.png b/versioned_docs/version-0.13/assets/three_strikes_app_author_strike_count.png new file mode 100644 index 00000000..e8f9d223 Binary files /dev/null and b/versioned_docs/version-0.13/assets/three_strikes_app_author_strike_count.png differ diff --git a/versioned_docs/version-0.13/assets/three_strikes_app_comment_menu.png b/versioned_docs/version-0.13/assets/three_strikes_app_comment_menu.png new file mode 100644 index 00000000..cc76eb2e Binary files /dev/null and b/versioned_docs/version-0.13/assets/three_strikes_app_comment_menu.png differ diff --git a/versioned_docs/version-0.13/assets/three_strikes_app_metadata_missing.png b/versioned_docs/version-0.13/assets/three_strikes_app_metadata_missing.png new file mode 100644 index 00000000..242b2731 Binary files /dev/null and b/versioned_docs/version-0.13/assets/three_strikes_app_metadata_missing.png differ diff --git a/versioned_docs/version-0.13/assets/three_strikes_app_no_strikes.png b/versioned_docs/version-0.13/assets/three_strikes_app_no_strikes.png new file mode 100644 index 00000000..d95cd1b5 Binary files /dev/null and b/versioned_docs/version-0.13/assets/three_strikes_app_no_strikes.png differ diff --git a/versioned_docs/version-0.13/assets/three_strikes_app_post_menu.png b/versioned_docs/version-0.13/assets/three_strikes_app_post_menu.png new file mode 100644 index 00000000..e7fc40de Binary files /dev/null and b/versioned_docs/version-0.13/assets/three_strikes_app_post_menu.png differ diff --git a/versioned_docs/version-0.13/assets/ui_simulator_header.png b/versioned_docs/version-0.13/assets/ui_simulator_header.png new file mode 100644 index 00000000..ed6e4d01 Binary files /dev/null and b/versioned_docs/version-0.13/assets/ui_simulator_header.png differ diff --git a/versioned_docs/version-0.13/assets/ui_simulator_theme.png b/versioned_docs/version-0.13/assets/ui_simulator_theme.png new file mode 100644 index 00000000..9b0e9682 Binary files /dev/null and b/versioned_docs/version-0.13/assets/ui_simulator_theme.png differ diff --git a/versioned_docs/version-0.13/assets/ui_simulator_viewport.png b/versioned_docs/version-0.13/assets/ui_simulator_viewport.png new file mode 100644 index 00000000..8ab0e55b Binary files /dev/null and b/versioned_docs/version-0.13/assets/ui_simulator_viewport.png differ diff --git a/versioned_docs/version-0.13/assets/webviews-devvit-architecture.png b/versioned_docs/version-0.13/assets/webviews-devvit-architecture.png new file mode 100644 index 00000000..bc0c0cde Binary files /dev/null and b/versioned_docs/version-0.13/assets/webviews-devvit-architecture.png differ diff --git a/versioned_docs/version-0.13/assets/webviews_example.png b/versioned_docs/version-0.13/assets/webviews_example.png new file mode 100644 index 00000000..6d01559b Binary files /dev/null and b/versioned_docs/version-0.13/assets/webviews_example.png differ diff --git a/versioned_docs/version-0.13/assets/webviews_snakepit_example.png b/versioned_docs/version-0.13/assets/webviews_snakepit_example.png new file mode 100644 index 00000000..5d950293 Binary files /dev/null and b/versioned_docs/version-0.13/assets/webviews_snakepit_example.png differ diff --git a/versioned_docs/version-0.13/assets/webviews_snakepit_mobile_example.png b/versioned_docs/version-0.13/assets/webviews_snakepit_mobile_example.png new file mode 100644 index 00000000..8fc54c46 Binary files /dev/null and b/versioned_docs/version-0.13/assets/webviews_snakepit_mobile_example.png differ diff --git a/versioned_docs/version-0.13/capabilities/analytics/analytics-overview.md b/versioned_docs/version-0.13/capabilities/analytics/analytics-overview.md new file mode 100644 index 00000000..c9252fae --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/analytics/analytics-overview.md @@ -0,0 +1,18 @@ +# Overview + +Devvit Journeys is an experimental telemetry feature that captures the full lifecycle of a gameplay session. It provides visibility into how players enter, progress through, abandon, and complete experiences within your game. + +This data can help identify friction points, analyze player behavior, inform product decisions, and surface opportunities to improve onboarding, progression, and overall engagement. + +## Beta requirements + +Devvit Journeys is a **gated beta**, which means that you’ll need to apply to unlock the ability to use it in your app. Current eligibility is aimed at established, already-engaged games rather than brand-new launches, and push notification partners are selected from active games with traction and predictable cadence. Check out our [featured games](https://www.reddit.com/r/GamesOnReddit/comments/1rydlny/games_launchpad/) to get an idea of what we’re looking for. + +## How to apply + +If you meet the beta requirements, fill out [this form](https://docs.google.com/forms/d/e/1FAIpQLScB3eXHVCBf3kyHueyf3G_raxH9_BsCGiXyGjQOOmPxWz6fEg/viewform?usp=publish-editor) for consideration, and be sure to include: + +- The app identifier. +- Your push notification copy. We’ll do a quick review to ensure that it complies with our [Reddit Rules](https://redditinc.com/policies/reddit-rules). + +Note that spaces are limited, and not all apps that meet the criteria will be accepted. diff --git a/versioned_docs/version-0.13/capabilities/analytics/devvit-journeys.md b/versioned_docs/version-0.13/capabilities/analytics/devvit-journeys.md new file mode 100644 index 00000000..08399211 --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/analytics/devvit-journeys.md @@ -0,0 +1,233 @@ +# Devvit Journeys + +Devvit Journeys adds a telemetry stream to your app that tracks the entire lifecycle of a user session. With journeys, you can: + +- Boost your game’s visibility and reach through richer gameplay insights. +- Make design and feature decisions based on real user data. +- Identify friction points and optimize for better user retention. + +A journey has a defined start and end point. Progress is tracked throughout and ends with a completion status. You can also attach optional game-specific data (like win/loss results or scores) at the end. + +:::note +This is currently an experimental feature, and you'll need to [apply](https://docs.google.com/forms/d/e/1FAIpQLScB3eXHVCBf3kyHueyf3G_raxH9_BsCGiXyGjQOOmPxWz6fEg/viewform?usp=publish-editor) for a spot in our beta program to implement Devvit Journeys. +::: + +## Journey map + +A journey map is a structured, instrumented flow that tracks a player’s progression through a specific experience in your game. Think of your journey map as a series of checkpoints (events) in your game, with: + +- A clear **start condition** (e.g., game begins) +- Defined **end conditions** (e.g., game ends, player quits, or player fails) +- Optional **metadata** you can attach along the way (score, outcome, time spent, etc.) + +All journey maps must be reviewed and approved prior to activation to ensure they align with Reddit’s platform guidelines. + +## Core events and API structure + +The SDK provides a telemetry client via `@devvit/analytics/client/reddit`. + +### Events + +All events sent from the client are forwarded to the server, where they are enriched with standard metadata (such as app, installation, user, and post context) before being emitted as analytics events. You should set each event to fire with the corresponding trigger. + +| Event Type | Trigger | Required Fields | Optional Fields | +| ------------------------- | ----------------------------------------------------------------- | -------------------- | --------------------------------- | +| **`App.Ready`** | Fire when the game has finished loading and is interactive. | None | None | +| **`Journey.Start`** | Fire when the user explicitly begins a session (not on app load). | None | None | +| **`Journey.Progress`** | Fire when the user reaches a meaningful milestone. | `progress` (0.0–1.0) | `action`, `actionDetails` | +| **`Journey.Interaction`** | Fire for granular, stateless user interactions. | `action` | `actionDetails` | +| **`Journey.End`** | Fire when the session concludes. | None | `complete`, `game { win, score }` | + +### Journey ID handling + +The client automatically manages the `journeyId`. You do **not** need to pass it to any method. + +- A journey ID is generated server-side when `startJourney()` is called +- The client stores it in `sessionStorage` for the duration of the browser session +- Calls to `progress()`, `interaction(),` and `end()` automatically include the active journey ID + +### Auto-start behavior + +If `progress()` or `interaction()` is called before a journey has started, the client will automatically start a new journey. + +### Ending a journey + +Calling `endJourney()`: + +- Sends a `Journey.End` event +- Clears the stored journey ID from `sessionStorage` + +This allows a new journey to begin within the same session. + +## Game-specific use cases + +This example shows how a simple word game session can be represented as a Journey using four key events: `app.ready`, `journey.start`, `journey.interaction`, and `journey.end`. Together, these events capture the full lifecycle of a single play session, from when the game finishes loading to when the player completes the puzzle. + +The screenshots illustrate a typical flow: + +1. The game loads and signals it’s ready (`app.ready`). + +![Journeys-1](../../assets/analytics/journeys-1.png) + +2. The player begins playing a new word challenge (`journey.start`). + +![Journeys-2](../../assets/analytics/journeys-2.png) + +3. The player pauses mid-game (`journey.interaction`). + +![Journeys-3](../../assets/analytics/journeys-3.png) + +4. The player completes the puzzle (`journey.end`). + +![Journeys-4](../../assets/analytics/journeys-4.png) + +By instrumenting these moments, you can track session boundaries, understand player behavior during gameplay, and measure completion outcomes for the word game experience. See more example scenarios below. + +### Scenario 1: standard level-based game + +| Step | Player Action | Event Fired | Notes | +| :---: | ------------------------------------- | ----------------------- | ----------------------------- | +| **1** | Game loads | **App.Ready** | Game is fully interactive | +| **2** | Player clicks “Start Game” | **Journey.Start** | Begins a new session | +| **3** | Player completes Level 1 (of 5 levels) | **Journey.Progress** | `progress: 0.2` | +| **4** | Player opens inventory | **Journey.Interaction** | `action: "menu_opened"` | +| **5** | Player completes Level 2 | **Journey.Progress** | `progress: 0.4` | +| **6** | Player reaches final level | **Journey.Progress** | `progress: 0.9` | +| **7** | Player defeats final boss | **Journey.End** | `complete: true`, `win: true` | + +### Scenario 2: player fails mid-game + +| Step | Player Action | Event Fired | Notes | +| :---: | ---------------------------- | -------------------- | ------------------------------- | +| **1** | Game loads | **App.Ready** | Game is fully interactive | +| **2** | Player clicks “Start Game” | **Journey.Start** | Begins a new session | +| **3** | Player completes early level | **Journey.Progress** | `progress: 0.3` | +| **4** | Player dies | **Journey.End** | `complete: false`, `win: false` | + +### Scenario 3: early exit / abandonment + +| Step | Player Action | Event Fired | Notes | +| :---: | -------------------------- | ----------------------- | ------------------------- | +| **1** | Game loads | **App.Ready** | Game is fully interactive | +| **2** | Player clicks “Start Game” | **Journey.Start** | Begins a new session | +| **3** | Player pauses | **Journey.Interaction** | `action: "pause_clicked"` | +| **4** | Player quits game | **Journey.End** | `complete: false` | + +## Guidelines + +To ensure the integrity and quality of the telemetry stream, developers must follow these guidelines. + +The platform may enforce validation checks to detect anomalous or exploitative event patterns. Failure to comply may result in delayed app approval or, in severe cases, removal from the platform. + +### Event triggering + +Events must reflect **intentional, committed user actions**. + +- **Trigger on final commitment**. + + - Fire events only after a user has completed an action. + - For interactions, this typically means using `mouseUp` or `touchEnd` (not initial input). + +- **Avoid passive triggers** + - Do not track views as journeys. + - Do not use `Journey.Start` to record page or app views. + - `Journey.Start` must represent an explicit user action (like pressing “Play”) + - **Do not fire on pre-commitment input** + - Avoid early input events such as `mouseDown` or `touchStart` + - These interactions may be accidental or canceled before completion + +### App allowlist + +Telemetry is restricted by a server-side allowlist. Only approved apps can emit journey events. Requests from non-allowlisted apps will get a message that the event was dropped. + +### Platform constraints + +- **Devvit Web only**: Telemetry is only supported in Devvit Web apps (WebView). +- **Privacy**: Do **not** include PII (Personally Identifiable Information) in any user-defined fields (including `action` and `actionDetails`). You are responsible for ensuring all emitted data complies with privacy standards. + +## Getting started + +Follow these steps to implement journey tracking in your app. + +### Server events + +You can send events solely on the backend and use the front‑end only to establish and pass along the journeyId. To do this, thread the active `journey ID` from your front‑end to your backend routes. + +``` +import { telemetry } from '@devvit/analytics/client/reddit'; + +export async function submitScore(score: number): Promise { + const journeyId = telemetry.getActiveJourneyId(); + + const response = await fetch('/api/score', { + method: 'POST', + headers: { + 'content-type': 'application/json', + ...(journeyId ? { 'x-devvit-journey-id': journeyId } : {}), + }, + body: JSON.stringify({ score }), + }); + + const data = (await response.json()) as { journeyId?: string }; + + if (data.journeyId) { + telemetry.setJourneyId(data.journeyId); + } +} +``` + +On the server, read the incoming `journeyId` and use it for correlation in your own route. + +``` +import express from 'express'; +import { telemetry } from '@devvit/analytics/server/reddit'; + +const app = express(); + +app.use(express.json()); + +app.post('/api/score', async (req, res) => { + const journeyIdHeader = req.header('x-devvit-journey-id'); + const journeyId = typeof journeyIdHeader === 'string' ? journeyIdHeader : ''; + + console.log('score event', { + journeyId, + score: req.body.score, + }); + + await telemetry.endJourney({ + journeyId, + complete: true, + game: { win: true, score: req.body.score }, + }); + + res.json({ ok: true }); +}); + +``` + +### Client events + +If you don’t want to manually send server-events, you can use the generic client side events. In this case, the `JourneyId` is handled. In this case, you won’t need to pass a `JourneyId` when calling progress and so forth. You also won’t need `telemetry.getActiveJourneyId()` unless you’re curious about that data. + +Note: This also requires using the route adapters provided in `@devvit/analytics/server/reddit` + +``` +// client +import { telemetry } from '@devvit/analytics/client/reddit'; + +const activeJourneyId = telemetry.getActiveJourneyId(); + +await telemetry.progress({ + progress: 0.5, + action: 'level_progress', +}); + +``` + +``` +// server +import { createTelemetryRouter } from '@devvit/analytics/server/reddit'; +app.use(createTelemetryRouter()); + +``` diff --git a/versioned_docs/version-0.13/capabilities/client/forms.mdx b/versioned_docs/version-0.13/capabilities/client/forms.mdx new file mode 100644 index 00000000..b6fdd9fd --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/client/forms.mdx @@ -0,0 +1,1190 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Forms + +A form lets your app ask users to input and submit data. Forms can be defined with a simple [form object](#form-object) that takes a [list of fields](#supported-fields-types), and return user responses directly as promises. + +![A form dialog](../../assets/capabilities/forms/forms-dialog.png) + +## Using forms + +**Promise-based forms:** + ```ts title="client/index.ts" + import { showForm } from '@devvit/web/client'; + + // Show form and get user response directly + const result = await showForm({ + form: { + fields: [ + { + type: 'string', + name: 'name', + label: 'Name', + }, + ], + }, + data: { name: 'Default value' } // Optional initial data + }); + + // Handle form submission result immediately + if (result) { + const { name } = result; + + // Process the data directly + console.log(`User entered: ${name}`); + + // Chain additional actions + await fetch('/api/save-name', { + method: 'POST', + body: JSON.stringify({ name }) + }); + + // Or show another form in sequence + const step2 = await showForm({ + form: { + fields: [ + { + type: 'string', + name: 'food', + label: 'Favorite food?', + }, + ], + } + }); + + if (step2) { + console.log(`Multi-step complete: ${name}, ${step2.food}`); + } + } else { + console.log('User cancelled the form'); + } + ``` + +### Parameters + +**`showForm(options)` → Returns Promise** +- `form` (Form): The form specification object +- `data` (FormValues, optional): Initial form field values +- **Returns**: `Promise` - Resolves with form data or null if cancelled + +## Menu response forms + +For forms that open from a menu item, you can use menu responses. This is useful since you do not have access to the `@devvit/web/client` library from a menu item endpoint. + +**Configure forms in devvit.json:** + ```json title="devvit.json" + { + "forms": { + "nameForm": "/internal/form/name-submit", + "reviewForm": "/internal/form/review-submit" + } + } + ``` + + **Server endpoint that shows form via menu response:** + + + + + ```ts title="server/index.ts" + import type { MenuItemRequest, UiResponse } from '@devvit/web/shared'; + + type NameFormRequest = { name: string }; + type ReviewFormRequest = { review: string }; + + // Menu action that triggers menu response form + app.post('/internal/menu/start-workflow', async (c) => { + const _input = await c.req.json(); + // Server processing before showing form + const userData = await fetchUserData(); + + return c.json({ + showForm: { + name: 'nameForm', + form: { + fields: [ + { + type: 'string', + name: 'name', + label: 'Name', + }, + ], + }, + data: { name: userData.name } // Pre-populate from server + } + }); + }); + + // Form submission handler that can chain to another form + app.post('/internal/form/name-submit', async (c) => { + const { name } = await c.req.json(); + + // Server processing + await saveUserName(name); + + // Show next form in workflow + return c.json({ + showForm: { + name: 'reviewForm', + form: { + fields: [ + { + type: 'paragraph', + name: 'review', + label: 'How was your experience?', + }, + ], + } + } + }); + }); + + app.post('/internal/form/review-submit', async (c) => { + const { review } = await c.req.json(); + + await saveReview(review); + + return c.json({ + showToast: 'Thank you for your feedback!' + }); + }); + ``` + + + + + ```ts title="server/index.ts" + import type { MenuItemRequest, UiResponse } from '@devvit/web/shared'; + + type NameFormRequest = { name: string }; + type ReviewFormRequest = { review: string }; + + // Menu action that triggers menu response form + router.post("/internal/menu/start-workflow", async (_req, res) => { + // Server processing before showing form + const userData = await fetchUserData(); + + res.json({ + showForm: { + name: 'nameForm', + form: { + fields: [ + { + type: 'string', + name: 'name', + label: 'Name', + }, + ], + }, + data: { name: userData.name } // Pre-populate from server + } + }); + }); + + // Form submission handler that can chain to another form + router.post("/internal/form/name-submit", async (req, res) => { + const { name } = req.body; + + // Server processing + await saveUserName(name); + + // Show next form in workflow + res.json({ + showForm: { + name: 'reviewForm', + form: { + fields: [ + { + type: 'paragraph', + name: 'review', + label: 'How was your experience?', + }, + ], + } + } + }); + }); + + router.post("/internal/form/review-submit", async (req, res) => { + const { review } = req.body; + + await saveReview(review); + + res.json({ + showToast: 'Thank you for your feedback!' + }); + }); + ``` + + + + + +## Form object + +The form object enables you to customize the form container and the [list of form fields](#supported-fields-types) included. + +#### Usage + +```tsx +const myForm = { + title: 'My form', + description: 'This is my form. There are many like it, but this one is mine.', + fields: [ + { + type: 'string', + name: 'food', + label: 'What is your favorite food?', + }, + { + type: 'string', + name: 'drink', + label: 'What is your favorite drink?', + }, + ], + acceptLabel: 'Submit', + cancelLabel: 'Cancel', +}; +``` + +#### Supported properties + +| Property | Supported types | Description | +| :------------ | :------------------- | :-------------------------------------------- | +| `title` | `string` `undefined` | An optional title for the form | +| `description` | `string` `undefined` | An optional description for the form | +| `fields` | `FormField[]` | The fields that will be displayed in the form | +| `acceptLabel` | `string` `undefined` | An optional label for the submit button | +| `cancelLabel` | `string` `undefined` | An optional label for the cancel button | + +## Supported fields types + +The following field types are supported: [String](#string), [Select](#select), [Paragraph](#paragraph), [Number](#number), [Boolean](#boolean), [Image](#image), and [Group](#group). + +### String + +A single-line text input. + +![String input](../../assets/capabilities/forms/forms-string.png) + +#### Usage + +```ts +const stringField = { + type: 'string', + name: 'title', + label: 'Tournament title', +}; +``` + +#### Properties + +| Property | Supported types | Description | +| :------------- | :-------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | `string` | The desired field type. | +| `name` | `string` | The name of the field. This will be used as the key in the `values` object when the form is submitted. | +| `label` | `string` | The label of the field. This will be displayed to the user. | +| `helpText` | `string` `undefined` | An optional help text that will be displayed below the field. | +| `required` | `boolean` `undefined` | If true the field will be required and the user will not be able to submit the form without filling it in. Defaults to `false`. | +| `disabled` | `boolean` `undefined` | If true the field will be disabled. Defaults to `false`. | +| `defaultValue` | ` ValueType` `undefined` | The default value of the field. | +| `scope` | [`SettingScopeType`](/api/public-api/type-aliases/SettingScopeType) `undefined` | This indicates whether the field (setting) is an app level or install level setting. App setting values can be used by any installation. `undefined` by default. | +| `placeholder` | `string` `undefined` | Placeholder text for display before a value is present. | +| `isSecret` | `boolean` `undefined` | Makes the form field secret. | + +### Select + +A dropdown menu with predefined options. + +![Select input](../../assets/capabilities/forms/forms-select.png) + +#### Usage + +```ts +const selectField = { + type: 'select', + name: 'interval', + label: 'Update the leaderboard', + options: [ + { label: 'Hourly', value: 'hourly' }, + { label: 'Daily', value: 'daily' }, + { label: 'Weekly', value: 'weekly' }, + { label: 'Monthly', value: 'monthly' }, + { label: 'Yearly', value: 'yearly' }, + ], +}; +``` + +#### Properties + +| Property | Supported types | Description | +| :------------- | :-------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | `string` | The desired field type. | +| `name` | `string` | The name of the field. This will be used as the key in the `values` object when the form is submitted. | +| `label` | `string` | The label of the field. This will be displayed to the user. | +| `options` | `FieldConfig_Selection_Item[]` | The list of options available. | +| `helpText` | `string` `undefined` | An optional help text that will be displayed below the field. | +| `required` | `boolean` `undefined` | If true the field will be required and the user will not be able to submit the form without filling it in. Defaults to `false`. | +| `disabled` | `boolean` `undefined` | If true the field will be disabled. Defaults to `false`. | +| `defaultValue` | ` string[]` `undefined` | The default value of the field. Note that the default value is wrapped in an array to support multiple selected values. | +| `scope` | [`SettingScopeType`](/api/public-api/type-aliases/SettingScopeType) `undefined` | This indicates whether the field (setting) is an app level or install level setting. App setting values can be used by any installation. `undefined` by default. | +| `multiSelect` | `boolean` `undefined` | Enables users to select more than 1 item from the set. | + +### Paragraph + +A multi-line text input for longer responses. + +![Paragraph input](../../assets/capabilities/forms/forms-paragraph.png) + +#### Usage + +```ts +const paragraphField = { + type: 'paragraph', + name: 'description', + label: 'Description', +}; +``` + +#### Properties + +| Property | Supported types | Description | +| :------------- | :-------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | `string` | The desired field type. | +| `name` | `string` | The name of the field. This will be used as the key in the `values` object when the form is submitted. | +| `label` | `string` | The label of the field. This will be displayed to the user. | +| `helpText` | `string` `undefined` | An optional help text that will be displayed below the field. | +| `required` | `boolean` `undefined` | If true the field will be required and the user will not be able to submit the form without filling it in. Defaults to `false`. | +| `disabled` | `boolean` `undefined` | If true the field will be disabled. Defaults to `false`. | +| `defaultValue` | ` ValueType` `undefined` | The default value of the field. | +| `scope` | [`SettingScopeType`](/api/public-api/type-aliases/SettingScopeType) `undefined` | This indicates whether the field (setting) is an app level or install level setting. App setting values can be used by any installation. `undefined` by default. | +| `placeholder` | `string` `undefined` | Placeholder text for display before a value is present. | +| `lineHeight` | `number` `undefined` | Sets the field height by number of lines. | + +### Number + +An input for numerical values. + +![Number input](../../assets/capabilities/forms/forms-number.png) + +#### Usage + +```ts +const numberField = { + type: 'number', + name: 'tokens', + label: 'Token balance', +}; +``` + +#### Properties + +| Property | Supported types | Description | +| :------------- | :-------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | `string` | The desired field type. | +| `name` | `string` | The name of the field. This will be used as the key in the `values` object when the form is submitted. | +| `label` | `string` | The label of the field. This will be displayed to the user. | +| `helpText` | `string` `undefined` | An optional help text that will be displayed below the field. | +| `required` | `boolean` `undefined` | If true the field will be required and the user will not be able to submit the form without filling it in. Defaults to `false`. | +| `disabled` | `boolean` `undefined` | If true the field will be disabled. Defaults to `false`. | +| `defaultValue` | ` ValueType` `undefined` | The default value of the field. | +| `scope` | [`SettingScopeType`](/api/public-api/type-aliases/SettingScopeType) `undefined` | This indicates whether the field (setting) is an app level or install level setting. App setting values can be used by any installation. `undefined` by default. | + +### Boolean + +A yes/no or true/false type input. + +![Boolean input](../../assets/capabilities/forms/forms-boolean.png) + +#### Usage + +```ts +const booleanField = { + type: 'boolean', + name: 'enable', + label: 'Enable the event', +}; +``` + +#### Properties + +| Property | Supported types | Description | +| :------------- | :-------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | `string` | The desired field type. | +| `name` | `string` | The name of the field. This will be used as the key in the `values` object when the form is submitted. | +| `label` | `string` | The label of the field. This will be displayed to the user. | +| `helpText` | `string` `undefined` | An optional help text that will be displayed below the field. | +| `disabled` | `boolean` `undefined` | If true the field will be disabled. Defaults to `false`. | +| `defaultValue` | ` ValueType` `undefined` | The default value of the field. | +| `scope` | [`SettingScopeType`](/api/public-api/type-aliases/SettingScopeType) `undefined` | This indicates whether the field (setting) is an app level or install level setting. App setting values can be used by any installation. `undefined` by default. | + +### Image + +An image upload field. + +![Image input](../../assets/capabilities/forms/forms-image.png) + +#### Usage + +```ts +const imageField = { + type: 'image', // This tells the form to expect an image + name: 'myImage', + label: 'Image goes here', + required: true, +}; +``` + +#### Properties + +| Property | Supported types | Description | +| :------------ | :----------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | `string` | The desired field type. | +| `name` | `string` | The name of the field. This will be used as the key in the `values` object when the form is submitted. | +| `label` | `string` | The label of the field. This will be displayed to the user. | +| `helpText` | `string` `undefined` | An optional help text that will be displayed below the field. | +| `required` | `boolean` `undefined` | If true the field will be required and the user will not be able to submit the form without filling it in. Defaults to `false`. | +| `disabled` | `boolean` `undefined` | If true the field will be disabled. Defaults to `false`. | +| `scope` | [`SettingScopeType`](/api/public-api/type-aliases/SettingScopeType) `undefined` | This indicates whether the field (setting) is an app level or install level setting. App setting values can be used by any installation. `undefined` by default. | +| `placeholder` | `string` `undefined` | Placeholder text for display before a value is present. | +| `isSecret` | `boolean` `undefined` | Makes the form field secret. | + +#### Notes + +- The formats supported are PNG, JPEG, WEBP, and GIF. +- The maximum file size allowed is 20 MB. +- When uploading a WEBP image, it will be converted to JPEG. As such, the Reddit URL returned points to a JPEG image. + +### Group + +A collection of related fields that allows for better readability. + +#### Usage + +```ts +const groupField = { + type: 'group', + label: 'This is a group of input fields', + fields: [ + { + type: 'paragraph', + name: 'description', + label: 'How would you describe what happened?', + }, + { + type: 'number', + name: 'score', + label: 'How would you rate your meal on a scale from 1 to 10?', + }, + ], +}; +``` + +#### Properties + +| Property | Supported types | Description | +| :--------- | :------------------- | :------------------------------------------------------------ | +| `type` | `string` | The desired field type. | +| `label` | `string` | The label of the group that will be displayed to the user. | +| `fields` | `FormField[]` | The fields that will be displayed in the group. | +| `helpText` | `string` `undefined` | An optional help text that will be displayed below the group. | + +## Examples + +Below is a collection of common use cases and patterns. + +### Dynamic forms + +**Client-side approach:** + ```ts title="client/index.ts" + import { showForm } from '@devvit/web/client'; + + // Get user data and show form with dynamic default values + const user = await reddit.getCurrentUser(); + + const result = await showForm({ + form: { + fields: [ + { + type: 'string', + name: 'username', + label: 'Username', + }, + ], + }, + data: { + username: user?.username || '' + } + }); + + if (result) { + // Handle the form result + console.log(`Hello ${result.username}`); + } + ``` + + **Server-side approach:** + ```json title="devvit.json" + { + "forms": { + "dynamicForm": "/internal/form/dynamic-submit" + } + } + ``` + + + + + ```ts title="server/index.ts" + import type { MenuItemRequest, UiResponse } from '@devvit/web/shared'; + + type DynamicFormRequest = { username: string }; + + // Endpoint that shows form with dynamic data + app.post('/internal/menu/show-dynamic-form', async (c) => { + const _input = await c.req.json(); + const user = await reddit.getCurrentUser(); + + return c.json({ + showForm: { + name: 'dynamicForm', + form: { + fields: [ + { + type: 'string', + name: 'username', + label: 'Username', + }, + ], + }, + data: { + username: user?.username || '' + } + } + }); + }); + + // Form submission handler + app.post('/internal/form/dynamic-submit', async (c) => { + const { username } = await c.req.json(); + + return c.json({ + showToast: `Hello ${username}` + }); + }); + ``` + + + + + ```ts title="server/index.ts" + import type { MenuItemRequest, UiResponse } from '@devvit/web/shared'; + + type DynamicFormRequest = { username: string }; + + // Endpoint that shows form with dynamic data + router.post("/internal/menu/show-dynamic-form", async (_req, res) => { + const user = await reddit.getCurrentUser(); + + res.json({ + showForm: { + name: 'dynamicForm', + form: { + fields: [ + { + type: 'string', + name: 'username', + label: 'Username', + }, + ], + }, + data: { + username: user?.username || '' + } + } + }); + }); + + // Form submission handler + router.post("/internal/form/dynamic-submit", async (req, res) => { + const { username } = req.body; + + res.json({ + showToast: `Hello ${username}` + }); + }); + ``` + + + + +### Multi-step forms + +**Client-side approach (Promise chaining):** + ```ts title="client/index.ts" + import { showForm } from '@devvit/web/client'; + + async function multiStepForm() { + // Step 1: Get name + const step1Result = await showForm({ + form: { + fields: [ + { + type: 'string', + name: 'name', + label: "What's your name?", + required: true, + }, + ], + } + }); + + if (!step1Result) return; // User cancelled + + // Step 2: Get food preference + const step2Result = await showForm({ + form: { + fields: [ + { + type: 'string', + name: 'food', + label: "What's your favorite food?", + required: true, + }, + ], + }, + data: { name: step1Result.name } // Pass data from previous step + }); + + if (!step2Result) return; // User cancelled + + // Step 3: Get drink preference + const step3Result = await showForm({ + form: { + fields: [ + { + type: 'string', + name: 'drink', + label: "What's your favorite drink?", + required: true, + }, + ], + }, + data: { + name: step1Result.name, + food: step2Result.food + } + }); + + if (step3Result) { + // All steps completed - save or process data + const finalData = { + ...step1Result, + ...step2Result, + ...step3Result + }; + + console.log(`Thanks ${finalData.name}! You like ${finalData.food} and ${finalData.drink}.`); + } + } + ``` + + **Server-side approach (Separate endpoints):** + ```json title="devvit.json" + { + "forms": { + "step1Form": "/internal/form/step1-submit", + "step2Form": "/internal/form/step2-submit", + "step3Form": "/internal/form/step3-submit" + } + } + ``` + + + + + ```ts title="server/index.ts" + import type { UiResponse } from '@devvit/web/shared'; + + type Step1FormRequest = { name: string }; + type Step2FormRequest = { name: string; food: string }; + type Step3FormRequest = { name: string; food: string; drink: string }; + + // Step 1: Name form + app.post('/internal/form/step1-submit', async (c) => { + const { name } = await c.req.json(); + + return c.json({ + showForm: { + name: 'step2Form', + form: { + fields: [ + { + type: 'string', + name: 'food', + label: "What's your favorite food?", + required: true, + }, + ], + }, + data: { name } // Pass data to next step + } + }); + }); + + // Step 2: Food form + app.post('/internal/form/step2-submit', async (c) => { + const { name, food } = await c.req.json(); + + return c.json({ + showForm: { + name: 'step3Form', + form: { + fields: [ + { + type: 'string', + name: 'drink', + label: "What's your favorite drink?", + required: true, + }, + ], + }, + data: { name, food } // Pass accumulated data + } + }); + }); + + // Step 3: Final form + app.post('/internal/form/step3-submit', async (c) => { + const { name, food, drink } = await c.req.json(); + + return c.json({ + showToast: `Thanks ${name}! You like ${food} and ${drink}.` + }); + }); + ``` + + + + + ```ts title="server/index.ts" + import type { UiResponse } from '@devvit/web/shared'; + + type Step1FormRequest = { name: string }; + type Step2FormRequest = { name: string; food: string }; + type Step3FormRequest = { name: string; food: string; drink: string }; + + // Step 1: Name form + router.post("/internal/form/step1-submit", async (req, res) => { + const { name } = req.body; + + res.json({ + showForm: { + name: 'step2Form', + form: { + fields: [ + { + type: 'string', + name: 'food', + label: "What's your favorite food?", + required: true, + }, + ], + }, + data: { name } // Pass data to next step + } + }); + }); + + // Step 2: Food form + router.post("/internal/form/step2-submit", async (req, res) => { + const { name, food } = req.body; + + res.json({ + showForm: { + name: 'step3Form', + form: { + fields: [ + { + type: 'string', + name: 'drink', + label: "What's your favorite drink?", + required: true, + }, + ], + }, + data: { name, food } // Pass accumulated data + } + }); + }); + + // Step 3: Final form + router.post("/internal/form/step3-submit", async (req, res) => { + const { name, food, drink } = req.body; + + res.json({ + showToast: `Thanks ${name}! You like ${food} and ${drink}.` + }); + }); + ``` + + + + +### One of everything + +This example includes one of each of the [supported field types](#supported-fields-types). + +**Client-side approach:** + ```ts title="client/index.ts" + import { showForm } from '@devvit/web/client'; + + const result = await showForm({ + form: { + title: 'My favorites', + description: 'Tell us about your favorite food!', + fields: [ + { + type: 'string', + name: 'food', + label: 'What is your favorite food?', + helpText: 'Must be edible', + required: true, + }, + { + label: 'About that food', + type: 'group', + fields: [ + { + type: 'number', + name: 'times', + label: 'How many times a week do you eat it?', + defaultValue: 1, + }, + { + type: 'paragraph', + name: 'what', + label: 'What makes it your favorite?', + }, + { + type: 'select', + name: 'healthy', + label: 'Is it healthy?', + options: [ + { label: 'Yes', value: 'yes' }, + { label: 'No', value: 'no' }, + { label: 'Maybe', value: 'maybe' }, + ], + defaultValue: ['maybe'], + }, + ], + }, + { + type: 'boolean', + name: 'again', + label: 'Can we ask again?', + }, + ], + acceptLabel: 'Submit', + cancelLabel: 'Cancel', + } + }); + + if (result) { + console.log('Form values:', result); + // Handle form submission + } + ``` + + **Server-side approach:** + ```json title="devvit.json" + { + "forms": { + "everythingForm": "/internal/form/everything-submit" + } + } + ``` + + + + + ```ts title="server/index.ts" + import type { MenuItemRequest, UiResponse } from '@devvit/web/shared'; + + type EverythingFormRequest = { + food: string; + times?: number; + what?: string; + healthy?: string[]; + again?: boolean; + }; + + app.post('/internal/form/everything-submit', async (c) => { + const formValues = await c.req.json(); + console.log('Form values:', formValues); + + return c.json({ + showToast: 'Thanks!' + }); + }); + + // Example showing the form + app.post('/internal/menu/show-everything-form', async (c) => { + const _input = await c.req.json(); + return c.json({ + showForm: { + name: 'everythingForm', + form: { + title: 'My favorites', + description: 'Tell us about your favorite food!', + fields: [ + { + type: 'string', + name: 'food', + label: 'What is your favorite food?', + helpText: 'Must be edible', + required: true, + }, + { + label: 'About that food', + type: 'group', + fields: [ + { + type: 'number', + name: 'times', + label: 'How many times a week do you eat it?', + defaultValue: 1, + }, + { + type: 'paragraph', + name: 'what', + label: 'What makes it your favorite?', + }, + { + type: 'select', + name: 'healthy', + label: 'Is it healthy?', + options: [ + { label: 'Yes', value: 'yes' }, + { label: 'No', value: 'no' }, + { label: 'Maybe', value: 'maybe' }, + ], + defaultValue: ['maybe'], + }, + ], + }, + { + type: 'boolean', + name: 'again', + label: 'Can we ask again?', + }, + ], + acceptLabel: 'Submit', + cancelLabel: 'Cancel', + } + } + }); + }); + ``` + + + + + ```ts title="server/index.ts" + import type { MenuItemRequest, UiResponse } from '@devvit/web/shared'; + + type EverythingFormRequest = { + food: string; + times?: number; + what?: string; + healthy?: string[]; + again?: boolean; + }; + + router.post("/internal/form/everything-submit", async (req, res) => { + console.log('Form values:', req.body); + + res.json({ + showToast: 'Thanks!' + }); + }); + + // Example showing the form + router.post("/internal/menu/show-everything-form", async (_req, res) => { + res.json({ + showForm: { + name: 'everythingForm', + form: { + title: 'My favorites', + description: 'Tell us about your favorite food!', + fields: [ + { + type: 'string', + name: 'food', + label: 'What is your favorite food?', + helpText: 'Must be edible', + required: true, + }, + { + label: 'About that food', + type: 'group', + fields: [ + { + type: 'number', + name: 'times', + label: 'How many times a week do you eat it?', + defaultValue: 1, + }, + { + type: 'paragraph', + name: 'what', + label: 'What makes it your favorite?', + }, + { + type: 'select', + name: 'healthy', + label: 'Is it healthy?', + options: [ + { label: 'Yes', value: 'yes' }, + { label: 'No', value: 'no' }, + { label: 'Maybe', value: 'maybe' }, + ], + defaultValue: ['maybe'], + }, + ], + }, + { + type: 'boolean', + name: 'again', + label: 'Can we ask again?', + }, + ], + acceptLabel: 'Submit', + cancelLabel: 'Cancel', + } + } + }); + }); + ``` + + + + +### Image uploads + +**Client-side approach:** + ```ts title="client/index.ts" + import { showForm } from '@devvit/web/client'; + + const result = await showForm({ + form: { + title: 'Upload an image!', + fields: [ + { + name: 'myImage', + type: 'image', // This tells the form to expect an image + label: 'Image goes here', + required: true, + }, + ], + } + }); + + if (result) { + const { myImage } = result; + // returns an i.redd.it URL + console.log('Image uploaded:', myImage); + + // Process the image further + await fetch('/api/process-image', { + method: 'POST', + body: JSON.stringify({ imageUrl: myImage }) + }); + } + ``` + + **Server-side approach:** + ```json title="devvit.json" + { + "forms": { + "imageForm": "/internal/form/image-submit" + } + } + ``` + + + + + ```ts title="server/index.ts" + import type { UiResponse } from '@devvit/web/shared'; + + type ImageFormRequest = { myImage: string }; + + app.post('/internal/form/image-submit', async (c) => { + const { myImage } = await c.req.json(); + // Store the mediaUrl in Redis and render it via an tag on the client, or send to external service to modify + console.log('Image uploaded:', myImage); + + return c.json({ + showToast: 'Image uploaded successfully!' + }); + }); + ``` + + + + + ```ts title="server/index.ts" + import type { UiResponse } from '@devvit/web/shared'; + + type ImageFormRequest = { myImage: string }; + + router.post("/internal/form/image-submit", async (req, res) => { + const { myImage } = req.body; + // Store the mediaUrl in Redis and render it via an tag on the client, or send to external service to modify + console.log('Image uploaded:', myImage); + + res.json({ + showToast: 'Image uploaded successfully!' + }); + }); + ``` + + + diff --git a/versioned_docs/version-0.13/capabilities/client/menu-actions.mdx b/versioned_docs/version-0.13/capabilities/client/menu-actions.mdx new file mode 100644 index 00000000..276d19a6 --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/client/menu-actions.mdx @@ -0,0 +1,308 @@ +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + +# Menu Actions + +Add an item to the three dot menu for posts, comments, or subreddits. Menu actions can perform immediate client effects or trigger server processing followed by client effects. + +![Subreddit menu actions](../../assets/capabilities/menu-actions/menu-actions-subreddit.png) + +## Basic menu actions + +**For most menu actions, use direct client effects.** These provide immediate responses and are perfect for simple actions that don't require server processing. + +**Menu items defined in devvit.json:** + +```json title="devvit.json" +{ + "menu": { + "items": [ + { + "description": "Show user information", + "endpoint": "/internal/menu/show-info", + "location": "post" + } + ] + } +} +``` + +**Simple endpoint with direct client effects:** + + + + +```ts title="server/index.ts" +import type { MenuItemRequest, UiResponse } from "@devvit/web/shared"; + +app.post("/internal/menu/show-info", async (c) => { + const _input = await c.req.json(); + // Simple actions don't need server processing + return c.json({ + showToast: "Menu action clicked!", + }); +}); +``` + + + + +```ts title="server/index.ts" +import type { MenuItemRequest, UiResponse } from "@devvit/web/shared"; + +app.post( + "/internal/menu/show-info", + async (_req, res) => { + // Simple actions don't need server processing + res.json({ + showToast: "Menu action clicked!", + }); + }, +); +``` + + + + +## Supported contexts + +You can decide where the menu action shows up by specifying the location property. + +| Property | Values | Description | +| ---------------------- | ------------------------------ | ------------------------------------------------------------------------------- | +| location (required) | `comment`, `post`, `subreddit` | Determines where the menu action appears. | +| postFilter (optional) | `currentApp` | Shows the action created by your app. The default is no filtering. | +| forUserType (optional) | `moderator` | Specifies the user types that can see the menu action. The default is everyone. | + +:::note +For moderator permission security, when opening a form from a menu action with `forUserType: moderator`, the user initiating the action must complete all actions within 10 minutes. +::: + +## Menu responses + +In Devvit Web, your menu item should respond with a client side effect to give feedback to users. This is available as a UIResponse as you do not have access to the `@devvit/web/client` library from your server endpoints. + +**Menu items with server processing:** + +```json title="devvit.json" +{ + "menu": { + "items": [ + { + "label": "Process and validate data", + "endpoint": "/internal/menu/complex-action", + "forUserType": "moderator", + "location": "subreddit" + } + ] + } +} +```` + + + + +```ts title="server/index.ts" +import type { MenuItemRequest, UiResponse } from "@devvit/web/shared"; + +app.post("/internal/menu/complex-action", async (c) => { + const _input = await c.req.json(); + try { + // Perform server-side processing + const userData = await validateAndProcessData(); + + // Show form with server-fetched data + return c.json({ + showForm: { + name: "processForm", + form: { + fields: [ + { + type: "string", + name: "processedData", + label: "Processed Data", + }, + ], + }, + data: { processedData: userData.processed }, + }, + }); + } catch (error) { + return c.json({ + showToast: "Processing failed. Please try again.", + }); + } +}); +``` + + + + +```ts title="server/index.ts" +import type { MenuItemRequest, UiResponse } from "@devvit/web/shared"; + +app.post( + "/internal/menu/complex-action", + async (_req, res) => { + try { + // Perform server-side processing + const userData = await validateAndProcessData(); + + // Show form with server-fetched data + res.json({ + showForm: { + name: "processForm", + form: { + fields: [ + { + type: "string", + name: "processedData", + label: "Processed Data", + }, + ], + }, + data: { processedData: userData.processed }, + }, + }); + } catch (error) { + res.json({ + showToast: "Processing failed. Please try again.", + }); + } + }, +); +``` + + + + +### Menu response examples + +Menu responses can trigger any client effect after server processing: + +**Show toast after processing:** + + + + +```ts +return c.json({ + showToast: { + text: "Processing completed!", + appearance: "success", + }, +}); +``` + + + + +```ts +res.json({ + showToast: { + text: "Processing completed!", + appearance: "success", + }, +}); +``` + + + + +**Navigate after data fetching:** + + + + +```ts +const post = await reddit.getPostById(postId); +return c.json({ + navigateTo: post, +}); +``` + + + + +```ts +const post = await reddit.getPostById(postId); +res.json({ + navigateTo: post, +}); +``` + + + + +**Chain multiple forms:** + + + + +```ts +// First form response leads to second form +return c.json({ + showForm: { + name: 'secondForm', + form: { fields: [...] }, + data: { fromStep1: processedData } + } +}); +``` + + + + +```ts +// First form response leads to second form +res.json({ + showForm: { + name: 'secondForm', + form: { fields: [...] }, + data: { fromStep1: processedData } + } +}); +``` + + + + +## Limitations + +- A sort order of actions in the context menu can't be specified. +- The context, name, and description fields do not support dynamic logic. diff --git a/versioned_docs/version-0.13/capabilities/client/navigation.mdx b/versioned_docs/version-0.13/capabilities/client/navigation.mdx new file mode 100644 index 00000000..0a2cf3cb --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/client/navigation.mdx @@ -0,0 +1,53 @@ +# Navigation + +Use navigation functions to redirect users to Reddit content or external websites in response to user actions, such as button clicks. You can redirect to a `url` string or to objects such as [`Subreddit`](/api/redditapi/models/classes/Subreddit.md), [`Post`](/api/redditapi/models/classes/Post.md), or [`Comment`](/api/redditapi/models/classes/Comment.md). + +**For most navigation interactions, use the direct client library functions.** These provide immediate navigation and are perfect for user interactions within your app components. + +:::warning +When linking to Reddit content, the navigation function requires the app account to have access to the content. If the app account does not have access, the redirect will fail. +::: + +## Basic navigation + +```ts title="client/index.ts" +import { navigateTo } from '@devvit/web/client'; + +// Navigate to external URLs +navigateTo('https://www.youtube.com/watch?v=dQw4w9WgXcQ'); + +// Navigate to Reddit URLs +navigateTo('https://www.reddit.com/r/movies/comments/tzxev3/'); + +// Navigate to Reddit objects +async function goToPost() { + const post = await fetch('/api/getPost').then(r => r.json()); + navigateTo(post); +} + +// Use in button handlers or user interactions +function handleNavigateClick() { + navigateTo('https://www.reddit.com/r/webdev'); +} +``` + +### Parameters + +**`navigateTo(target)`** + +- `target`: Either a URL string or a Reddit object (Subreddit, Post, Comment) + +:::tip Menu response navigation +For navigation in menu response workflows (when you need server processing before navigation), see the [Menu Actions](./menu-actions.mdx) documentation. +::: + +## External URLs + +Users see a confirmation dialog before going to external URLs. + +![Confirmation dialog for external links](../../assets/capabilities/adding-links/adding-links-external-link-dialog.png) + +## Limitations + +- `url` must be http/https +- `url` must have a domain diff --git a/versioned_docs/version-0.13/capabilities/client/overview.mdx b/versioned_docs/version-0.13/capabilities/client/overview.mdx new file mode 100644 index 00000000..70ed7f79 --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/client/overview.mdx @@ -0,0 +1,65 @@ +# Client Overview + +Client-side effects enable your Devvit app to provide interactive feedback and navigation to users. These effects include showing toasts, displaying forms, navigating to different pages, and more. + +Import client functions from `@devvit/web/client`: + +```ts title="client/index.ts" +import { showToast, showForm, navigateTo } from '@devvit/web/client'; + +// Show a toast notification +showToast('Hello from Devvit Web!'); + +// Navigate to a URL +navigateTo('https://www.reddit.com/r/webdev'); + +// Show a form and handle response +const result = await showForm({ + form: { + fields: [ + { + type: 'string', + name: 'username', + label: 'Username' + } + ] + } +}); + +if (result) { + console.log('Form submitted:', result.username); +} +``` + +## Available client effects + +| Effect | Description | API | +|--------|-------------|-----| +| **Toast** | Show temporary notification messages | `showToast()` | +| **Form** | Display interactive forms with promise-based responses | `showForm()` | +| **Navigation** | Redirect to Reddit content or external URLs | `navigateTo()` | + +:::caution +You should only use client library functions in response to a user-initiated action. +::: + +## Menu responses + +Menu items can respond with client effects after server processing. + +Menu responses allow you to: +- Process data on the server before showing client effects +- Chain multiple forms together in complex workflows +- Validate user permissions before allowing actions +- Fetch external data to populate forms or display results + +For complete details and examples, see the [Menu Actions](./menu-actions.mdx) documentation. + +## Next steps + +Explore the specific documentation for each client effect: + +- [Toasts](./toasts.mdx) - Temporary notification messages +- [Forms](./forms.mdx) - Interactive user input +- [Navigation](./navigation.mdx) - Redirecting users +- [Realtime](../realtime/overview.md) - Live updates and communication diff --git a/versioned_docs/version-0.13/capabilities/client/toasts.mdx b/versioned_docs/version-0.13/capabilities/client/toasts.mdx new file mode 100644 index 00000000..a0ed6194 --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/client/toasts.mdx @@ -0,0 +1,71 @@ +# Toasts + +Display temporary notification messages to users at the bottom of the screen. + +## Overview + +Toasts are brief, non-intrusive messages that appear temporarily at the bottom of the screen to provide feedback to users about their actions. They automatically disappear after a few seconds and are ideal for confirming successful operations or displaying status updates. + +**For most toast interactions, use the direct client library functions.** These provide immediate feedback and are perfect for user interactions within your app components. + +:::note +Toasts will not work from scheduled jobs or triggers. +::: + +## Toast appearance types + +| Appearance | Description | +| ---------- | --------------------------------------------------------- | +| `neutral` | Default gray appearance for general notifications | +| `success` | Green appearance for successful operations | + +## Basic toast usage + +```ts +import { showToast } from '@devvit/web/client'; + +// Simple text toast +showToast('Operation completed successfully!'); + +// Toast with custom appearance +showToast({ + text: 'Data saved successfully!', + appearance: 'success', // 'neutral' | 'success' +}); + +// Use in button handlers or user interactions +function handleButtonClick() { + try { + // Perform some operation + processUserData(); + + showToast({ + text: 'Your data has been processed!', + appearance: 'success' + }); + } catch (error) { + showToast('Something went wrong. Please try again.'); + } +} +``` + +### Parameters + +**`showToast(textOrToast)`** + +- `textOrToast`: Either a string message or a `Toast` object + +**Toast Object Properties:** + +- `text` (string): The message to display +- `appearance` (string, optional): The visual style (`'neutral'` | `'success'`). Defaults to `'neutral'` + +:::tip Menu response toasts +For toasts in menu response workflows (when you need server processing before showing toasts), see the [Menu Actions](./menu-actions.mdx) documentation. +::: + +## Best practices + +- Keep toast messages concise and clear +- Avoid showing multiple toasts in quick succession +- Don't rely on toasts for critical information that users must see diff --git a/versioned_docs/version-0.13/capabilities/creating_custom_post.md b/versioned_docs/version-0.13/capabilities/creating_custom_post.md new file mode 100644 index 00000000..66ef675b --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/creating_custom_post.md @@ -0,0 +1,124 @@ +# Creating a Custom Post + +Redditors interact with your app through custom posts. To create a custom post, you’ll define the entry points in `devvit.json,` then use `submitCustomPost` to create a post that references one of those entry points. + +## **How it Works** + +Each key in the `entrypoints` object (e.g. "default", "game") maps to an HTML file in your build output. When you call `submitCustomPost`, the entry parameter references one of these keys. + +``` +// devvit.json default template +... +"name": "test-custom-post", + "post": { + "dir": "dist/client", + "entrypoints": { + "default": { + "entry": "splash.html" + }, + "game": { + "entry": "game.html" + } + } + } +... +``` + +```ts +import { reddit } from '@devvit/web/server'; + +export const createPost = async () => { + return await reddit.submitCustomPost({ + title: 'Example title for post', + entry: 'default' // default + }); +}; + +``` + +`submitCustomPost` accepts the following optional parameters: + +| Parameter | Description | +| :---- | :---- | +| `entry` | Key of the entrypoint defined in `devvit.json` | +| `postData` | [Updates post data after creation](../capabilities/server/post-data) | +| `textFallback` | [Specifies alternative text content](../capabilities/server/text_fallback) | +| `userGeneratedContent` | [Enables user-generated content](../capabilities/server/userActions) | +| `styles` | Controls post appearance in the Reddit UI. See [Custom Post Styles](#custom-post-styles) | + +## **Custom Post Styles** + +Custom post styles let you control how a custom post looks in the Reddit UI, separate from the content inside your webview. You can: + +* Set the **light mode or dark mode background color** shown while the iframe loads +* Choose the **post height** (for example, `“REGULAR”` or `“TALL”`) to control how much vertical space the post takes in the feed. +* Provide a **share image URL** that’s used for link previews when the post is shared outside Reddit. + +All style fields are optional. If you don’t set them, Reddit’s default settings apply. + +### Properties + +| Field | Type | Description | +| :---- | :---- | :---- | +| `backgroundColor` | `string` (optional) | The **default background color** shown before the iframe content loads. Must be in **`#RRGGBBAA`** format (red, green, blue, alpha transparency). The value is **case-insensitive**. Defaults to **transparent** (`#00000000`). | +| `backgroundColorDark` | `string` (optional) | The **dark mode background color** shown before the iframe content loads. Must be in **`#RRGGBBAA`** format with a leading `#`. Defaults to **transparent** (`#00000000`). | +| `height` | `EntrypointHeight` enum (optional) | Post height. `TALL` \= 512px, `REGULAR` \= 320px. Width varies from \~288–880px depending on device and viewport. Defaults to `”TALL”`. | +| `shareImageUrl` | `string` (optional) | The **preview image URL** used when the post is shared externally (for example, OpenGraph `og:image`). Note: The image **must** be hosted on [i.redd.it](http://i.redd.it) domain. Use the [media upload plugin](https://developers.reddit.com/docs/capabilities/server/media-uploads) to upload a custom image. This only works if your app is on a public subreddit. Defaults to Reddit’s generic share image: `https://i.redd.it/o0h58lzmax6a1.png`. | + +### Creating a custom post with styles + +Set your custom post styles when you create a custom post: + +```javascript +await reddit.submitCustomPost({ + "title": "Post with styles title", + "styles": { + "backgroundColor": "#FFFFFFFF", // white, fully opaque + "backgroundColorDark": "#000000FF", // black, fully opaque + "height": "TALL", + "shareImageUrl": "https://reddi.it/12345.png" + } +}) +``` + +Note: All style fields are optional. + +### Updating styles + +Use `post.setCustomPostStyles()` to update styles on an existing post. Only include the fields you want to change. Omitted fields remain unchanged. + +```javascript +const post = await reddit.getPostById(context.postId); +await post.setCustomPostStyles({ + "styles": { + "shareImageUrl": "https://example.com/new-preview.png" + } +}); +``` + +Existing `background_color`, `background_color_dark`, and `height` values remain unchanged. + +### Reading styles + +Use `post.getCustomPostStyles()` or `reddit.getPostStyles(id)` to read the styles on an existing post. Settings that haven’t been set yet will give you their default values. + +```javascript +const post = await reddit.getPostById(context.postId); +const styles = await post.getCustomPostStyles(); +// Or, if you don't need the post object and want just the styles: +const styles = await reddit.getPostStyles(context.postId); +``` + +# Best Practices + +* **Color format:** Always provide 8-digit hex with alpha: `#RRGGBBAA`. + * `RR`, `GG`, `BB`: 00–FF (0–255) color channels. + * `AA`: 00–FF alpha channel (`00` \= fully transparent, `FF` \= fully opaque). + +* **Transparency:** Use alpha (`AA`) to blend your app experience smoothly with Reddit backgrounds (for example, `#00000080` for semi-transparent black). + +* **Dark mode:** Always set `background_color_dark` when your iframe content has a dark theme so the pre-load state matches the final experience. + +* **Height:** Choose the `height` that best matches your UI. The platform will handle mapping that logical value to the correct pixel height for the client. + +* **Share image:** Must be hosted on [i.redd.it](http://i.redd.it) (use the [media upload plugin](https://developers.reddit.com/docs/capabilities/server/media-uploads)) and ensure the asset meets typical OpenGraph sizing and aspect-ratio expectations so it renders cleanly across platforms. This only works if your app is on a public subreddit. diff --git a/versioned_docs/version-0.13/capabilities/devvit-web/devvit_web_configuration.md b/versioned_docs/version-0.13/capabilities/devvit-web/devvit_web_configuration.md new file mode 100644 index 00000000..261a257b --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/devvit-web/devvit_web_configuration.md @@ -0,0 +1,400 @@ +# Configure Your App + +The devvit.json file serves as your app's configuration file. Use it to specify entry points, configure features like [event triggers](../server/triggers) and [scheduled actions](../server/scheduler.mdx), and enable app functionality such as [image uploads](../server/media-uploads.mdx). This page covers all available devvit.json configuration options. A complete devvit.json example file is provided [here](#complete-example). + +## devvit.json + +The `devvit.json` [schema](https://developers.reddit.com/schema/config-file.v1.json) is available and is self-documented. + +All configuration files should include a `$schema` property which many IDEs will use to make suggestions and present documentation: + +```json +{ + "$schema": "https://developers.reddit.com/schema/config-file.v1.json" +} +``` + +## Required properties + +Your `devvit.json` must include: + +- **`name`** (required): App account name and Community URL slug. Must be 3-16 characters, start with a letter, and contain only lowercase letters, numbers, and hyphens. + +Additionally, you must include at least one of: + +- **`post`**: For web view apps +- **`server`**: For Node.js server apps + +## Configuration sections + +### Core properties + +| Property | Type | Description | Required | +| --------- | ------ | ------------------------------------------------------------------------- | ---------------- | +| `name` | string | App account name and Community URL slug (3-16 chars, `^[a-z][a-z0-9-]*$`) | Yes | +| `$schema` | string | Schema version for IDE support | No (recommended) | + +### App components + +| Property | Type | Description | Required | +| -------- | ------ | ---------------------------------- | ------------------ | +| `post` | object | Custom post/web view configuration | One of post/server | +| `server` | object | Node.js server configuration | One of post/server | + +### Permissions & capabilities + +| Property | Type | Description | Required | +| ----------------- | ------ | ------------------------------ | -------- | +| `permissions` | object | What your app is allowed to do | No | +| `media` | object | Static asset configuration | No | +| `marketingAssets` | object | Assets for featuring your app | No | + +### Event handling + +| Property | Type | Description | Required | +| ----------- | ------ | ---------------------------- | -------------------- | +| `triggers` | object | Event trigger endpoints | No (requires server) | +| `scheduler` | object | Scheduled task configuration | No | + +### UI & interaction + +| Property | Type | Description | Required | +| -------- | ------ | ----------------------------------------- | -------- | +| `menu` | object | Menu items in posts, comments, subreddits | No | +| `forms` | object | Form submission endpoints | No | + +### Development + +| Property | Type | Description | Required | +| --------- | ------ | --------------------------------------------------- | -------- | +| `dev` | object | Development configuration | No | +| `scripts` | object | Build commands run by the Devvit CLI (optional) | No | + +## Detailed configuration + +### Post configuration + +Configure web views for custom post types: + +```json +{ + "post": { + "dir": "public", + "entrypoints": { + "default": { + "entry": "index.html", + "height": "tall" + } + } + } +} +``` + +**Properties:** + +- `dir` (string): Client directory for web view assets (default: `"public"`) +- `entrypoints` (object): Map of named entrypoints for post rendering + - Must include a `"default"` entrypoint + - `entry` (string): HTML file path or `/api/` endpoint + - `height` (enum): `"regular"` or `"tall"` (default: `"regular"`) + +### Server configuration + +Configure Node.js server functionality: + +```json +{ + "server": { + "entry": "src/server/index.js" + } +} +``` + +**Properties:** + +- `entry` (string): Server bundle filename (default: `"src/server/index.js"`) + +Server bundles must be compiled to CommonJS (`cjs`). ES module output is not supported by the Devvit Web runtime. + +### Permissions configuration + +Control what your app can access: + +```json +{ + "permissions": { + "http": { + "enable": true, + "domains": ["example.com", "api.github.com"] + }, + "media": true, + "payments": false, + "realtime": false, + "redis": true, + "reddit": { + "enable": true, + "asUser": ["SUBMIT_POST", "SUBMIT_COMMENT"] + } + } +} +``` + +**HTTP plugin:** + +- `enable` (boolean): Enable HTTP plugin (default: `true`) +- `domains` (array): Allowed domains for `fetch()` calls + +**Reddit API plugin:** + +- `enable` (boolean): Enable Reddit API (default: `true`) +- `scope` (enum): `"user"` or `"moderator"` (default: `"user"`) +- `asUser` (array): APIs to execute as user account + +**Other permissions:** + +- `media` (boolean): Enable media uploads (default: `false`) +- `payments` (boolean): Enable payments plugin (default: `false`) +- `realtime` (boolean): Enable realtime messaging (default: `false`) +- `redis` (boolean): Enable Redis storage (default: `false`) + +### Triggers configuration + +Handle Reddit events: + +```json +{ + "triggers": { + "onPostCreate": "/internal/triggers/post-create", + "onCommentSubmit": "/internal/triggers/comment-submit", + "onModAction": "/internal/triggers/mod-action" + } +} +``` + +**Available triggers:** + +- `onAppInstall`, `onAppUpgrade` +- `onPostCreate`, `onPostDelete`, `onPostSubmit`, `onPostUpdate`, `onPostReport`, `onPostFlairUpdate`, `onPostNsfwUpdate`, `onPostSpoilerUpdate` +- `onCommentCreate`, `onCommentDelete`, `onCommentSubmit`, `onCommentUpdate`, `onCommentReport` +- `onModAction`, `onModMail` +- `onAutomoderatorFilterPost`, `onAutomoderatorFilterComment` + +**Note:** All trigger endpoints must start with `/internal/` and will receive POST requests with JSON data. + +### Menu configuration + +Add menu items to subreddit interfaces: + +```json +{ + "menu": { + "items": [ + { + "label": "Approve Post", + "description": "Quickly approve this post", + "forUserType": "moderator", + "location": ["post"], + "endpoint": "/internal/menu/approve-post", + "postFilter": "none" + }, + { + "label": "Report Issue", + "description": "Report a problem with this post", + "forUserType": "user", + "location": ["post", "comment"], + "endpoint": "/internal/menu/report-issue" + } + ] + } +} +``` + +**Menu item properties:** + +- `label` (string): Display text (required) +- `description` (string): Short description +- `forUserType` (enum): `"moderator"` or `"user"` (default: `"moderator"`) +- `location` (string|array): Where menu appears (`"post"`, `"comment"`, `"subreddit"`) +- `endpoint` (string): Internal endpoint to call (required) +- `postFilter` (enum): `"none"` or `"currentApp"` (default: `"none"`) + +### Scheduler configuration + +Configure scheduled tasks: + +```json +{ + "scheduler": { + "tasks": { + "daily-cleanup": { + "endpoint": "/internal/cron/daily-cleanup", + "cron": "0 2 * * *" + }, + "hourly-check": { + "endpoint": "/internal/cron/hourly-check", + "cron": "0 * * * *", + "data": { + "checkType": "health" + } + }, + "manual-task": "/internal/cron/manual-task" + } + } +} +``` + +**Task configuration:** + +- `endpoint` (string): Internal endpoint to call (required) +- `cron` (string): Cron schedule (optional, for automatic scheduling) +- `data` (object): Additional data passed to cron tasks (optional) + +**Cron format:** Standard five-part (`0 2 * * *`) or six-part (`*/30 * * * * *`) format. + +### Forms configuration + +Map form identifiers to submission endpoints: + +```json +{ + "forms": { + "contact_form": "/internal/forms/contact", + "feedback_form": "/internal/forms/feedback" + } +} +``` + +### Marketing assets + +Configure app presentation: + +```json +{ + "marketingAssets": { + "icon": "assets/icon.png" + } +} +``` + +**Properties:** + +- `icon` (string): Path to 1024x1024 PNG icon (required) + +### Scripts configuration + +Configure build commands run by the Devvit CLI. These commands run relative to the `devvit.json` directory. + +```json +{ + "scripts": { + "dev": "vite build --watch", + "build": "vite build" + } +} +``` + +**Properties:** + +- `dev` (string): Command run by `devvit playtest` to build or watch your client/server artifacts +- `build` (string): Command run by `devvit upload` to build your client/server artifacts + +### Development configuration + +Configure development settings: + +```json +{ + "dev": { + "subreddit": "my-test-subreddit" + } +} +``` + +**Properties:** + +- `subreddit` (string): Default development subreddit (can be overridden by `DEVVIT_SUBREDDIT` env var) + +## Validation rules + +The `devvit.json` configuration is validated against the JSON Schema at build time. Many IDEs will also underline errors as you write. Common validation errors include: + +- **JSON Syntax:** Adding comments or trailing commas (unsupported by JSON) +- **Required Properties:** Missing the required `name` property +- **App Components:** Missing at least one of `post` or `server` +- **Dependencies:** Missing `server` when `triggers` is specified +- **File References:** Missing files referenced in `devvit.json` +- **Permissions:** Missing required permissions for used features +- **Pattern Validation:** Invalid patterns for names, paths, or endpoints + +## Best practices + +1. **Always include the `$schema` property** for IDE autocompletion and validation. +2. **Use specific permission scopes.** Only request permissions your app actually uses. +3. **Set appropriate menu scopes.** Consider whether features should be available to all users or just moderators. +4. **Validate endpoints.** Ensure all internal endpoints start with `/internal/`. +5. **Use meaningful names.** Choose descriptive names for entrypoints, tasks, and forms. +6. **Test configurations.** Validate your config with `devvit build` before deployment. + +## Environment variables + +- `DEVVIT_SUBREDDIT`: Override the `dev.subreddit` value used during `devvit playtest`. +- `DEVVIT_APP_NAME`: Override the `name` value used during `devvit playtest` (and other similar commands). + +## Complete example + +```json title="devvit.json" +{ + "$schema": "https://developers.reddit.com/schema/config-file.v1.json", + "name": "my-awesome-app", + "post": { + "dir": "public", + "entrypoints": { + "default": { + "entry": "index.html", + "height": "tall" + } + } + }, + "server": { + "entry": "src/server/index.js" + }, + "permissions": { + "http": { + "enable": true, + "domains": ["api.example.com"] + }, + "redis": true + }, + "triggers": { + "onPostCreate": "/internal/triggers/post-create" + }, + "menu": { + "items": [ + { + "label": "Approve", + "forUserType": "moderator", + "location": "post", + "endpoint": "/internal/menu/approve" + } + ] + }, + "scheduler": { + "tasks": { + "daily-cleanup": { + "endpoint": "/internal/cron/cleanup", + "cron": "0 2 * * *" + } + } + }, + "marketingAssets": { + "icon": "assets/icon.png" + }, + "dev": { + "subreddit": "my-test-sub" + }, + "scripts": { + "dev": "vite build --watch", + "build": "vite build" + } +} +``` diff --git a/versioned_docs/version-0.13/capabilities/devvit-web/devvit_web_overview.mdx b/versioned_docs/version-0.13/capabilities/devvit-web/devvit_web_overview.mdx new file mode 100644 index 00000000..b208d4e6 --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/devvit-web/devvit_web_overview.mdx @@ -0,0 +1,97 @@ +import DevvitWebArch from "../../assets/devvit_web/devvit_web_arch.png"; + +# Devvit Web + +Devvit Web includes an easy way to build Devvit apps using a standard web stack. + +## What it is + +Devvit Web allows developers to build Devvit apps just like you would for the web. At the core, Devvit Web provides: + +- **A standard web app** that allows you to build with industry-standard frameworks and technologies (like React, Three.js, or Phaser). +- **Server endpoints** that you define to communicate between the webview client and the Devvit server, using industry-standard frameworks and technologies (like Express.js, Hono, Koa, etc.). +- **Devvit configuration** with a traditional client/server split. Devvit capabilities are now in one of three places: + - A configuration file in devvit.json for defining app metadata, permissions, and capabilities + - Client capabilities in the @devvit/client SDK + - Server capabilities, like Redis and Reddit API with the @devvit/server SDK + +With Devvit Web, you have continued access to our hosting services, key capabilities like Redis and Reddit API, standard web technologies, and a typical client/server pattern to build your apps. + +In addition, since you’re working with standard web technologies your apps should work with AI tools more effectively. + +## Examples + +Visit [https://developers.reddit.com/new](https://developers.reddit.com/new) and choose one of our templates or take a look at the github repositories: + +- [React](https://github.com/reddit/devvit-template-react) +- [Phaser](https://github.com/reddit/devvit-template-phaser) +- [Three.js](https://github.com/reddit/devvit-template-threejs) +- [Hello World](https://github.com/reddit/devvit-template-hello-world) + +## Limitations + +As with most experimental features, there are some caveats. + +| Limitation | What it means | +| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Serverless endpoints | The node server will run just long enough to execute your endpoint function and return a response, which means you can't use packages that require long-running connections like streaming. | +| Package limitations | Developers cannot use `fs` or external native packages. For now, we recommend using external services over the native dependencies, such as [StreamPot](https://streampot.io/) (instead of ffmpeg) and [OpenAI](https://platform.openai.com/docs/guides/embeddings) (instead of @xenova/transformers) . | +| Single request and single response handling only | Streaming or chunked responses and websockets are not supported. Long-polling is supported if it's under the max request time. | +| No external requests from your client | You can't have any external requests other than the app's webview domain. All backend responses are locked down to the webview domain via CSP. (Your backend can make external fetch requests though.) | +| localStorage clears on app updates | The iframe URL changes with each app version, so `localStorage` data is lost when you publish an update. Use [Redis](../server/redis.mdx) for data that needs to persist across app versions. | + +Devvit Web still has the same technical requirements: + +- Server endpoint calls +- Max request time: 30s +- Max payload size: 4MB +- Max response size: 10MB +- HTML/CSS/JS only + +## Devvit Web components + +Devvit Web uses endpoints between the client and server to make communication similar to standard web apps. A Devvit Web app has three components: + +- Client +- Server +- Configuration + +Devvit Web templates all have the same file structure: + +```text +. +├── src/ +│ ├── client/ # contains the webview code +│ └── server/ # endpoints for the client +└── devvit.json # the devvit config file +``` + +Your client talks to the server by calling `/api/` endpoints you define with `fetch()`. + +### Client folder + +This folder includes client-side code. This includes any html/css/javascript and relevant web libraries, and it will appear in a webview inside of a post for Reddit users. + +When you want to make server-side calls, or use server-side capabilities, you’ll use fetch and define what happens in your server folder. + +### Server folder + +This folder includes server-side code. We provide a node server, and you can use typical node server frameworks like Hono, Koa, or Express. This is where you can access key capabilities like [Redis](../server/redis.mdx), Reddit API client, and [fetch](../server/http-fetch.mdx). + +We also provide an authentication middleware so you don’t have to worry about authentication. + +:::note +All server endpoints must start with `/api/` (e.g. `/api/get-something` or `/api/widgets/42`). +::: + +devvit web architecture + +### Configuration in `devvit.json` + +`devvit.json` is the configuration file for Devvit apps. It defines an app's post configuration, Node.js server configuration, permissions, scheduled jobs, event triggers, menu entries, payments configuration, and project settings. `devvit.json` replaces the legacy `devvit.yaml` configuration. A project should have one or the other but not both. + +Learn more about [devvit.json](./devvit_web_configuration.md) diff --git a/versioned_docs/version-0.13/capabilities/http-fetch.md b/versioned_docs/version-0.13/capabilities/http-fetch.md new file mode 100644 index 00000000..b61d3ac2 --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/http-fetch.md @@ -0,0 +1,215 @@ +# HTTP Fetch + +Make requests to allow-listed external domains. + +Your Devvit app can make network requests to access allow-listed external domains using HTTP Fetch. This enables your app to leverage webhooks, personal servers, and other third-party integrations asynchronously across the network. + +## Enabling HTTP fetch calls + +devvit.json + +``` + +{ + ... + "permissions": { + "http": { + "enable": true, + "domains": ["my-site.com", "another-domain.net"] + } + } +} +``` + +### Requesting a domain to be allow-listed + +Apps may request a domain to be added to the allow-list by specifying domains in the http configuration. This configuration is optional, and apps can still configure http: true as before. + +Requested domains will be submitted for review when you playtest or upload your app. Admins may approve or deny domain requests. + +Domain entries must be exact hostnames only, such as nytimes.com or wikipedia.org. These fetch requests are not allowed: + +* Be specific. No using \*.example.com when you need api.example.com +* No wildcards: \*.example.com +* No protocols: https://api.example.com +* No paths: api.example.com/webhooks + +Domains that are approved for your app will be displayed in the Developer Settings section for your app at https://developers.reddit.com/apps/{your-app-slug}/developer-settings. These domains are allow-listed for **your app only** and not globally. + +Apps must request each individual domain that it intends to fetch, even if the domain is already globally allowed. See the [global fetch allowlist](https://developers.reddit.com/docs/capabilities/server/http-fetch#global-fetch-allowlist) to view the list of globally allowed domains. + +## Limitations + +* Access is only allowed to https URIs. +* Supported HTTP methods: GET, POST, PUT, DELETE, OPTIONS and PATCH. +* HTTP timeout limit is 30 seconds. + +## Example usage + +Devvit Web applications have two different contexts for using fetch: + +### Server-side fetch + +Server-side fetch allows your app to make HTTP requests to allowlisted external domains from your server-side code (e.g., API routes, server actions): + +server/index.ts + +``` + +const response = await fetch('https://example.com/api/data', { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + }, +}); + +const data = await response.json(); +console.log('External API response:', data); +``` + +### Client-side fetch + +Client-side fetch has different restrictions: + +* **Domain limitation**: Can only make requests to your own webview domain +* **Endpoint requirement**: All requests must target endpoints that start with /api +* **Authentication**: Handled automatically \- no need to manage auth tokens +* **No external domains**: Cannot make requests to external domains from client-side code + client/index.ts + +``` + +const handleFetchData = async () => { + // Correct: fetching your own webview's API endpoint + const response = await fetch("/api/user-data", { + method: "GET", + headers: { + "Content-Type": "application/json", + }, + }); + + const data = await response.json(); + console.log("API response:", data); +}; + +// Incorrect: cannot fetch external domains from client-side +// const response = await fetch('https://external-api.com/data'); + +// Incorrect: endpoint must start with /api +// const response = await fetch('/user-data'); +``` + +## Troubleshooting + +The following error means HTTP Fetch requests are hitting the internal timeout limits. + +``` +HTTP request to domain: timed out with error: context deadline exceeded. +``` + +To resolve this: + +* Use a queue or kick off an async request in your back end. You can use [Scheduler](https://developers.reddit.com/docs/capabilities/server/scheduler) to monitor the result. +* Optimize the overall HTTP request latency if you have a self-hosted server. + +## Global fetch allowlist + +These domains are globally allowed and can be fetched by any app. + +- api.openai.com +- generativelanguage.googleapis.com +- example.com +- site.api.espn.com +- cdn.espn.com +- discord.com +- api.polygon.io +- api.massive.com +- polygon.io +- slack.com +- lichess.org +- api.telegram.org +- commentanalyzer.googleapis.com +- language.googleapis.com +- statsapi.mlb.com +- api.scryfall.com +- api.nasa.gov +- api.sportradar.us +- api.sportradar.com +- random.org +- youtube.googleapis.com +- api.weather.gov +- wikipedia.org +- finance.yahoo.com +- api.twitter.com +- api.petfinder.com +- fonts.googleapis.com +- nytimes.com +- npr.org +- propublica.org +- pbs.org +- i.giphy.com +- chessboardjs.com + +## HTTP Fetch Policy + +Allow-listed domains fall into three categories: + +1. **APIs that provide data or specific services** (e.g., api.openai.com, api.wikipedia.org) \- These will be approved if they have a **publicly documented and publicly accessible API** for valid use cases, and if they adhere to the Devvit rules. Please reference our AI providers and account linking policies for common invalid use cases. +2. **Limited scope cloud providers** (e.g., username.supabase.com, my-app.firebase.com) \- May be granted with exceptions. You must: + * Follow user privacy guidelines and data governance requirements + * Use an approved provider from the list below (please include your subdomain, and request for the most granular domain possible, e.g. my-app.s3.amazonaws.com) + * supabase.com + * firebase.com + * spacetimedb.com + * s3.amazonaws.com + * storage.googleapis.com + * Demonstrate a capability that @devvit/server doesn't support + * Valid use cases include relational databases + * Note: Approval can be revoked at any time +3. **Personal domains** (e.g., personaldomain.com) \- Will not be approved. If you have a use case that our Devvit server does not support, please submit your request with detailed justification for a possible exception. + +### AI providers + +At this time, OpenAI and Google Gemini are the only allowed providers: + +* api.openai.com +* generativelanguage.googleapis.com + +Requests to use any other AI provider will be denied. + +### Documentation requirements + +If your app uses fetch domains, you must add context to your app's README for the approval process: + +1. Create a "Fetch Domains" section in your README +2. List each domain you're requesting and explain why you need it +3. Ensure your usage complies with our fetch guidelines + +Example README section: + +``` + +## Fetch Domains + +The following domains are requested for this app: + +- `api.wikipedia.org` - Used to fetch article summaries for the knowledge base feature +- `username.supabase.com` - Required for relational database storage of user preferences (Devvit KV store doesn't support complex queries needed for this feature) +``` + +### Domain requirements + +Domain entries must be exact hostnames only, such as nytimes.com or wikipedia.org. In addition: + +* Be specific. No using \*.example.com when you need api.example.com +* No wildcards: \*.example.com +* No protocols: https://api.example.com +* No paths: api.example.com/webhooks + +Domains that are approved for your app are displayed in the \[Developer Settings\](https://developers.reddit.com/apps/{your-app-slug}/developer-settings) section for your app. These domains are allow-listed for **your app only** and not globally. + +Apps must request each individual domain that it intends to fetch, even if the domain is already globally allowed. See the [global fetch allowlist](https://developers.reddit.com/docs/capabilities/server/http-fetch-policy#global-fetch-allowlist) to view the list of globally allowed domains. + +### Terms and conditions + +Any app that uses fetch must upload Terms and Conditions and a Privacy Policy. Links to each of these documents must be saved in the app details form. diff --git a/versioned_docs/version-0.13/capabilities/interactive-posts/interactive_posts_overview.mdx b/versioned_docs/version-0.13/capabilities/interactive-posts/interactive_posts_overview.mdx new file mode 100644 index 00000000..0ce3cc7f --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/interactive-posts/interactive_posts_overview.mdx @@ -0,0 +1,118 @@ +import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; + +# Overview +Interactive posts are the core of Reddit Dev Platform apps, enabling rich, engaging experiences that go beyond static content. There are three essential features for creating an interactive post using the Reddit API : + +1. First Screen Customization +2. Post Data +3. User Actions + +## Create an interactive post +Use reddit.submitCustomPost() from the Reddit library. You’ll want to call this function in response to an action like a user submission, trigger, or menu item. + +## Devvit Web + +```tsx +// in server code + +import { reddit, context } from '@devvit/web/server' + +export const createPost = async () => { + const { subredditName } = context; + if (!subredditName) { + throw new Error('subredditName is required'); + } + + return await reddit.submitCustomPost({ + subredditName: subredditName, + title: 'test-post-flair', + entry: 'default' + }); +}; + +// example action in our templates +// Then, in your devvit.json: +/* + "menu": { + "items": [ + { + "label": "Create a new post", + "description": "test-post-creator", + "location": "subreddit", + "forUserType": "moderator", + "endpoint": "/internal/menu/post-create" + } + ] + }, + "triggers": { + "onAppInstall": "/internal/on-app-install" + }, +*/ + ``` + + ### 🎨 First Screen Customization + +Control what users see when they first encounter your post. Choose between: +- **Splash screens**. A configurable splash screen with a clear call-to-action button, ideal for MVP-stage apps or those benefiting from immersive experiences with longer load times. +- **Inline web views (Experimental)**. Interactive experiences that load directly in posts for instant-interaction apps or dynamic first screens. This is especially beneficial for developers comfortable optimizing web performance across all devices but is subject to more guidelines and longer approval cycles. + +:::tip +Start simple with a splash screen, then move towards inline web views as your app grows and you want to optimize engagement. +::: + +Learn more about [First Screen Customization](../server/launch_screen_and_entry_points/launch_overview). + +### 💾 Post Data + Attach up to 2KB of JSON data directly to your post for instant client-side access. Perfect for: + +- Game states and scores +- Configuration settings +- Small shared data that all users need to see + +For larger amounts of data, you should use [Redis](../server/redis). Learn more about Post Data + + +### 👤 User Actions + +Enable your app to perform actions on behalf of users (with their permission): + +- Create posts or comments as the user +- Subscribe users to subreddits (coming soon) + +Learn more about [User Actions](../server/userActions) + +## Example + +Here's a complete example using all three features together: + +```ts title="server/index.ts" +import { reddit, context } from '@devvit/web/server'; +// Create an interactive post with all features + +const post = await reddit.submitCustomPost({ + subredditName: context.subredditName!, + title: 'Interactive Game Post', + + // First Screen Customization (splash screen) + splash: { + appDisplayName: 'Number Guessing Game', + backgroundUri: 'game-bg.png', + buttonLabel: 'Start Playing', + description: 'Can you guess the secret number?', + heading: 'Welcome to the Challenge!' + }, + + // Post Data for game state + postData: { + secretNumber: Math.floor(Math.random() * 100) + 1, + totalGuesses: 0, + gameState: 'active', + winner: null + } +}); + +// Later, update post data when someone wins +const updatedPost = await reddit.getPostById(post.id); await updatedPost.setPostData({ ...context.postData, gameState: 'completed', winner: currentUsername, totalGuesses: context.postData.totalGuesses + 1 }); + +// Create a comment as the user announcing their win await reddit.submitComment({ runAs: 'USER', id: post.id, text: 🎉 ${currentUsername} won the game! }); +``` diff --git a/versioned_docs/version-0.13/capabilities/notifications/adding-streaks.md b/versioned_docs/version-0.13/capabilities/notifications/adding-streaks.md new file mode 100644 index 00000000..b8d17776 --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/notifications/adding-streaks.md @@ -0,0 +1,768 @@ +# Adding Streaks + +Streaks are valuable to app developers because they turn occasional use into habitual behavior. By rewarding consecutive days of activity, streaks increase retention, strengthen user identity and investment in the app, and make push notifications more effective through loss aversion (“don’t break your streak”). For devs, that usually translates into higher engagement, lower churn, and better long-term monetization. + +![Streak PN](../../assets/notifications/visible-progress.png) + +:::note +This is currently an experimental feature, and you'll need to [apply](https://docs.google.com/forms/d/e/1FAIpQLScB3eXHVCBf3kyHueyf3G_raxH9_BsCGiXyGjQOOmPxWz6fEg/viewform?usp=publish-editor) for a spot in our beta program to implement push notifications in your app. +::: + +## **Recommended streak logic** + +This section explains how streaks work in [Syllo](https://www.reddit.com/r/syllo/) in a practical, implementation-focused way. + +### TL;DR + +- A streak is tracked as one bit per day in Redis. +- The bit is set when a logged-in user completes a puzzle and the server receives `completionTimeMs`. +- The streak day is based on the puzzle post's creation date in UTC, not the client device clock. +- The current streak is calculated by walking backward through consecutive completed days. + +### Mental model + +You can think of streaks as a yearly attendance sheet: + +- one Redis key per user per year: `streaks::` +- each day in the year maps to an index, where `0 = Jan 1` +- `1` means the user completed at least one eligible puzzle that day +- `0` means they did not + +### End-to-end flow + +#### 1\. User finishes a puzzle in the client + +When all words are solved, the client sends a completion call: + +```ts +// src/client/Game.tsx +verifyWordsMutation.mutate({ + problemId: problemData.problemId, + sessionId: problemData.analyticsSessionId, + submissions: [], + completionTimeMs: timerState.elapsedTime, +}); +``` + +#### 2\. Server records completion and updates streak state + +`verifyWords` handles completion, updates related stats, and then calls `setStreakCompletion`: + +```ts +// src/server/routes/trpc.ts (verifyWords mutation) +if (completionTimeMs && typeof completionTimeMs === "number" && userId) { + const now = new Date(); + await setUserCompletion(userId, postId, completionTimeMs); + await incrementPlayerCount(postId); + await addToLeaderboard(postId, userId, completionTimeMs); + await updateAverageCompletionTime(postId, completionTimeMs); + await setStreakCompletion({ userId, date: now, postId }); +} +``` + +#### 3\. Streak service maps completion to a day bit + +The service looks up the Reddit post and uses the post creation date to determine the year and day index: + +```ts +// src/server/services/streakService.ts +const post = await reddit.getPostById(postId); +const postCreatedAtDate = new Date(post.createdAt); +const year = postCreatedAtDate.getUTCFullYear(); +const dayOfYear = getDayOfYear(postCreatedAtDate); +await setStreakCompletionBit(userId, dayOfYear, year, completed); +``` + +#### 4\. Bit is written in Redis + +```ts +// src/server/redisService.ts +const streaksKey = (userId: string, year: number) => + `streaks:${userId}:${year}`; + +export async function setStreakCompletionBit( + userId: string, + offset: number, + year: number, + completed: boolean, +) { + UserIdSchema.parse(userId); + const key = streaksKey(userId, year); + await redis.bitfield(key, "set", "u1", offset, completed ? 1 : 0); +} +``` + +#### 5\. Client reads and displays the streak + +```ts +// src/client/Game.tsx +const { data: streakData } = useQuery( + trpc.getStreak.queryOptions(undefined, { enabled: !!context.userId }) +); + +
    + +``` + +### How current streak is calculated + +`getCurrentStreak(userId)` in `src/server/services/streakService.ts` works like this: + +1. Load the current year's bitset. +2. Start from today if today is completed; otherwise start from yesterday. +3. Count backward until the first day that is not completed. +4. If needed, continue into the previous year. + +Core loop: + +```ts +for (let i = dayToStartChecking; i >= 0; i--) { + if (isBitSet(currentYearBuffer, i)) { + currentStreak++; + } else { + break; + } +} +``` + +#### Full code for `getCurrentStreak()` + +```ts +/** + * Calculates the current streak using your custom client's getBuffer method. + */ +export async function getCurrentStreak(userId: string): Promise { + const today = new Date(); + const year = today.getUTCFullYear(); + const dayOfYear = getDayOfYear(today); + + // Call your client's getBuffer method. The result is `Buffer | undefined`. + const currentYearData = await getYearStreakBuffer(userId, year); + // The isBitSet helper expects `Buffer | null`, so we convert `undefined` to `null`. + const currentYearBuffer = currentYearData ?? null; + + let currentStreak = 0; + let dayToStartChecking = dayOfYear; + + if (!isBitSet(currentYearBuffer, dayOfYear)) { + dayToStartChecking = dayOfYear - 1; + } + + for (let i = dayToStartChecking; i >= 0; i--) { + if (isBitSet(currentYearBuffer, i)) { + currentStreak++; + } else { + break; + } + } + + // Handle cross-year streaks + // Case A: It's Jan 1 and user hasn't played today -> continue into prior year directly + if (dayToStartChecking < 0) { + const priorYear = year - 1; + const priorYearData = await getYearStreakBuffer(userId, priorYear); + const priorYearBuffer = priorYearData ?? null; + + if (priorYearBuffer) { + const isLeap = new Date(priorYear, 1, 29).getDate() === 29; + const lastDayOfPriorYear = isLeap ? 365 : 364; + + for (let i = lastDayOfPriorYear; i >= 0; i--) { + if (isBitSet(priorYearBuffer, i)) { + currentStreak++; + } else { + break; + } + } + } + } + // Case B: Current year is fully contiguous from day 0 to dayToStartChecking + else if (currentStreak > 0 && currentStreak === dayToStartChecking + 1) { + const priorYear = year - 1; + const priorYearData = await getYearStreakBuffer(userId, priorYear); + const priorYearBuffer = priorYearData ?? null; + + if (priorYearBuffer) { + const isLeap = new Date(priorYear, 1, 29).getDate() === 29; + const lastDayOfPriorYear = isLeap ? 365 : 364; + + for (let i = lastDayOfPriorYear; i >= 0; i--) { + if (isBitSet(priorYearBuffer, i)) { + currentStreak++; + } else { + break; + } + } + } + } + + return currentStreak; +} +``` + +### Important edge cases + +#### Multiple posts on the same day + +If one post is completed and another is not, the day should not be accidentally cleared. + +The service avoids clearing an already completed day in this mixed-result scenario: + +```ts +if (completed === false) { + return; +} +``` + +#### Old posts should not affect today's streak + +Updates for older posts are skipped during normal gameplay: + +```ts +const diffTime = Math.abs(now.getTime() - postCreatedAtDate.getTime()); +const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 26)); +if (diffDays > 1) { + return; +} +``` + +#### Cross-year streak continuity + +Streaks can continue from Dec 31 into Jan 1 in two cases: + +- Jan 1 is unplayed, so counting continues from the prior year tail. +- The current year is contiguous from day 0 through the current check day. + +```ts +if (dayToStartChecking < 0) { + // Jan 1 not played -> continue into prior year +} else if (currentStreak > 0 && currentStreak === dayToStartChecking + 1) { + // current year contiguous from day 0 -> continue into prior year +} +``` + +### API surface + +#### `getStreak` + +- Route: `src/server/routes/trpc.ts` +- Returns: current streak number for the logged-in user +- Used by: header and splash in the client + + #### `getStreakDetails` + +- Route: `src/server/routes/trpc.ts` +- Returns: + - `streak`: current streak + - `bestStreak`: longest streak in the current year + - `totalSolved`: number of completed days in the current year + +### Recommended test coverage + +Cover at least the following streak scenarios: + +- user has not played and returns `0` +- standard backward counting from today or yesterday +- Jan 1 cross-year behavior +- same-day multi-post safety behavior +- completion-day set behavior +- total solved days and longest streak calculations + Example: + +```ts +const year = now.getUTCFullYear(); +const today = getDayOfYear(now); +await setStreakCompletionBit(userId, today, year, true); +await setStreakCompletionBit(userId, today - 1, year, true); + +const streak = await getCurrentStreak(userId); +expect(streak).toBe(2); +``` + +### Practical summary + +- A streak day is represented by a single bit in a yearly Redis bitset. +- Completion writes happen in `verifyWords` when the puzzle is fully solved. +- Day identity is tied to the puzzle post date in UTC, not the client device day. +- Current streak is calculated from backward-consecutive completed days, with explicit cross-year handling. + +### Troubleshooting checklist + +If a streak looks wrong, check these in order: + +1. Did completion reach `verifyWords` with both `completionTimeMs` and `userId`? +2. Did `setStreakCompletion` run with a valid `postId`? +3. What is the post's `createdAt` value? This determines the day and year. +4. Does the Redis key `streaks::` have the expected bit set? +5. Is the issue near Jan 1, where cross-year logic applies, or from an old post attempt? + +## **LLM prompt** + +This is exciting new ground for us\! You can try out this prompt as a flexible starting point for implementing streak systems in your app. However, because implementations vary widely across games and backends, **we aren’t able to provide integration support or troubleshooting for custom setups**. + + + +
    +Copy-paste the prompt + +\--- START COPY-PASTE PROMPT \--- + +You are a senior Devvit engineer. Add a robust daily streak system and a streak-aware push notification campaign to this Devvit app. + +The goal is to implement the feature in this repo's existing style, not to copy file names or UI from another app. Be opinionated about the underlying mechanics: + +- Use Redis as the source of truth for daily streak days. +- Use server-side completion as the only authority for awarding streak credit. +- Use Devvit's notifications API for all push notification behavior. Do not implement a custom push provider, browser push subscription, webhook-based sender, or parallel notification system. +- Use Devvit's notification opt-in APIs as the only source of truth for push subscription state. +- Use a batched scheduler job for push campaigns so large recipient lists do not run in one request. +- Keep the notification UX app-specific: expose methods that the client can call, but do not invent a full opt-in screen unless this app already has an obvious place for it. + +**First Inspect The Target Repo** + +Before writing code, inspect the target app and identify: + +- Server entrypoint and router setup. +- Existing Redis helper module, if any. +- Existing tRPC, REST, or server action layer used by the webview. +- Existing game/content completion mutation or event. +- Existing scheduler configuration in `devvit.json`. +- Existing tests and test style. +- Existing client API utilities. +- Existing notification usage, if any. + +After inspection, implement using the repo's local patterns. Suggested module names are `streakService`, `notificationService`, `schedulerRoutes`, and `redisService`, but only use them if they fit the repo. + +Before coding, produce a short implementation mapping in your working notes or response: + +- `COMPLETION_EVENT`: where completion is validated server-side. +- `CONTENT_ID`: the newly created daily Reddit post id, if this app creates daily posts. Use this as the notification link target. If the app does not create daily posts, use the stable content id or route that opens today's playable item. +- `CONTENT_CREATED_AT`: the daily Reddit post's `createdAt`, if this app creates daily posts. Fetch it server-side or persist it when the post is created. If the app does not create daily posts, use a server-written `createdAt` timestamp stored with the daily content metadata. +- `COUNT_ARCHIVE_COMPLETIONS_FOR_STREAK`: ask the developer before coding whether completions of older/archive content should count for streaks. Do not assume this value. +- `REDIS_HELPERS`: where Redis access should live. +- `STREAK_APIS`: where `getStreak` and optional `getStreakDetails` should be exposed. +- `PUSH_OPT_IN_APIS`: where `getPushState` and `setPushState` should be exposed. +- `SCHEDULER_CONFIG`: where the `pn` scheduler task should be registered. +- `SCHEDULER_ENDPOINT`: where the push campaign endpoint should live. +- `TEST_LOCATIONS`: where streak, notification, and scheduler tests should be added. + +If the completion event cannot be identified with high confidence, stop and ask for clarification before editing. Before writing code, also ask the developer to choose `COUNT_ARCHIVE_COMPLETIONS_FOR_STREAK: true` or `false` unless they already provided that answer. For content id and timestamp, use the defaults above before asking. + +**App-Specific Values To Fill In** + +Use these defaults unless the target app clearly works differently: + +- `COMPLETION_EVENT`: the server-side event/mutation that means a user completed a playable daily item. +- `CONTENT_ID`: default to the Reddit post id for the newly created daily content. This should be a runtime value that changes whenever new daily content is created. In Syllo, each newly posted puzzle schedules its notification with that new Reddit post id. +- `CONTENT_CREATED_AT`: default to that Reddit post's `createdAt`. When recording streak completion, fetch the post by `CONTENT_ID` server-side and use `post.createdAt`, or use the same `createdAt` value persisted during post creation. Do not use the client clock or completion request timestamp. +- `COUNT_ARCHIVE_COMPLETIONS_FOR_STREAK`: ask before starting. If `true`, completing older/archive content records the streak bit for that content's UTC day. If `false`, only current daily content can award streak credit. +- `NEW_CONTENT_NOTIFICATION_DELAY_MS`: default to 60 minutes after content is posted unless the app has a better time. +- `STREAK_NOTIFICATION_TITLE`: example, `Today's challenge is ready!`. +- `STREAK_NOTIFICATION_BODY`: example, `Play now to keep your {{streak}}-day streak alive.` +- `NON_STREAK_NOTIFICATION_BODY`: example, `Jump back in and play today's challenge.` + +**Default Content Identity Rules** + +For most Devvit games, the notification target and streak day should come from the same daily content object: + +- If the app creates one Reddit post per daily game/challenge, use that post id as `CONTENT_ID`. +- Schedule the notification immediately after creating that post, passing `params: { link: post.id }`. +- When a user completes the game, use the current `postId`/`CONTENT_ID` to fetch the post server-side and anchor the streak bit to `post.createdAt`. +- If the app stores daily content metadata in Redis when it posts content, it is also fine to persist `{ contentId, createdAt }` then reuse that server-written `createdAt`. +- Only if the app has no per-day Reddit post should you fall back to a stable app route or stored daily-content id, with a server-written `createdAt` timestamp. + +**Architecture To Implement** + +Implementation flow: + +1. When daily content is created, schedule a `pn` job for the new-content notification. +2. When a user completes content, validate completion server-side. +3. Record the streak bit for the content's canonical UTC day. +4. When the `pn` job runs, page opted-in users. +5. For each opted-in user, compute current streak from Redis. +6. Split recipients into streak and non-streak groups. +7. Enqueue templated notifications with the content link. + +**Redis Data Model** + +Implement daily streak storage as one Redis bitmap per user per UTC calendar year. This is the same storage shape Syllo uses: a key is scoped to both `userId` and `year`, and each bit in that year's value represents whether the user completed the canonical content for one UTC day. + +Use the repo's existing Redis naming style, but default to a versioned key: + +```ts +const STREAK_VERSION = 1; +const streaksKey = (userId: string, year: number) => + `${STREAK_VERSION}:streaks:${userId}:${year}`; +``` + +Store one bit per UTC day-of-year: + +- Jan 1 is bit `0`. +- Dec 31 is bit `364` in non-leap years. +- Dec 31 is bit `365` in leap years. +- Use Redis `BITFIELD` with `u1` values. +- Read full-year state as a `Buffer` for efficient streak calculation. + +Implement helpers equivalent to: + +```ts +export function getDayOfYear(date: Date): number { + const year = date.getUTCFullYear(); + const start = Date.UTC(year, 0, 1); + const current = Date.UTC(year, date.getUTCMonth(), date.getUTCDate()); + return Math.floor((current - start) / 86_400_000); +} + +export function isBitSet(buffer: Buffer | null, bitIndex: number): boolean { + if (!buffer || bitIndex < 0) return false; + const byteIndex = Math.floor(bitIndex / 8); + if (byteIndex >= buffer.length) return false; + const bitWithinByte = bitIndex % 8; + const byte = buffer[byteIndex]!; + return (byte & (1 << (7 - bitWithinByte))) !== 0; +} +``` + +Implement Redis helpers: + +- `setStreakCompletionBit(userId, dayIndex, year, completed)`. +- `getStreakCompletionBit(userId, dayIndex, year)`. +- `getYearStreakBuffer(userId, year)`. + +Validate `userId`, `year`, and `dayIndex` according to the target repo's validation style before touching Redis. + +**Streak Service Behavior** + +Implement a streak service with these behaviors. + +`recordStreakCompletion` + +Record streak credit only from the server-side completion path. + +Recommended signature: + +```ts +type RecordStreakCompletionInput = { + userId: string; + contentId: string; + contentCreatedAt: Date; + completed?: boolean; + force?: boolean; +}; +``` + +Rules: + +- Default `completed` to `true`. +- If `force !== true` and `completed === false`, do nothing. A failed/incomplete action must not clear a day that was already earned. +- Anchor the streak day to `contentCreatedAt` in UTC, not to the user's device clock or request timestamp. +- Make the write idempotent. Setting the same bit to `1` multiple times must be safe and must not create duplicate counts. +- Respect `COUNT_ARCHIVE_COMPLETIONS_FOR_STREAK`. If `true`, completing content from three days ago sets the bit for that content's UTC day. If `false`, older/archive content should not award streak credit. +- `force` should be reserved for admin/backfill/repair paths. + +`getCurrentStreak` + +Current streak should be forgiving for daily content: + +- A user with no completed streak-worthy days must have streak `0`. Do not initialize new users to `1`. +- After the user's first streak-worthy completion, the streak should become `1`. +- If the user has played today, count backward from today. +- If the user has not played today, count backward from yesterday. This lets a user keep a visible streak alive during the day before they play. +- Continue counting through contiguous set bits. +- Bridge from Jan 1 into the prior year's bitmap when the current-year prefix is contiguous. +- Correctly handle leap years. + +`getTotalPlaysForYear` and `getLongestStreakForYear` + +Implement these if the app displays profile stats: + +- `getTotalPlaysForYear(userId, year = currentUTCYear)`. +- `getLongestStreakForYear(userId, year = currentUTCYear)`. + +Do not overbuild all-time stats unless the app needs them. + +**Completion Hook** + +Find the target app's server-side completion mutation/event. After the app has verified that the user truly completed streak-worthy content, call `recordStreakCompletion`. + +The streak write should happen near the app's existing completion writes, such as progress, score, leaderboard, or analytics updates. + +Recommended order: + +1. Validate `userId` and content id. +2. Validate completion server-side. +3. Persist the app's normal completion state. +4. Record the streak completion. +5. Return the updated state or allow the client to refetch streak state. + +Do not record streaks from a client-only event. + +**Streak APIs** + +Expose server APIs in the target app's API style: + +- `getStreak`: returns the current user's numeric streak. +- `getStreakDetails`: returns `{ streak, bestStreak, totalSolved }` if the app needs profile stats. + +The client can display these wherever appropriate, but do not create app-specific UI unless requested. + +**Push Opt-In API Wrappers** + +Use Devvit notifications as the source of truth. This implementation must use Devvit's notifications API from the Devvit SDK, not a custom push system. If the target repo imports directly from `@devvit/notifications`, use that package. In Devvit web server apps, the same API is commonly exposed as `notifications` from `@devvit/web/server`: + +```ts +import { notifications } from "@devvit/web/server"; + +export async function setPushNotificationState(input: { pushState: boolean }) { + if (input.pushState) { + await notifications.optInCurrentUser(); + } else { + await notifications.optOutCurrentUser(); + } +} +``` + +Expose API methods in the target app's style: + +- `getPushState`: calls `notifications.isOptedIn(userId)` and returns `{ pushState: boolean }`. +- `setPushState`: calls `notifications.optInCurrentUser()` or `notifications.optOutCurrentUser()`. + +Do not store a separate Redis opt-in boolean. The app can build any opt-in UX around these methods: post-win prompt, settings toggle, onboarding prompt, profile button, or menu action. + +**Streak-Aware Push Campaign** + +Implement one campaign for new daily content or "play again" notifications. + +Use only Devvit's notifications API for sending: + +- `notifications.listOptedInUsers` to page the Devvit opted-in audience. +- `notifications.enqueue` to send push notifications. +- Per-recipient `data` for template placeholders. + +Do not add service workers, browser Push API subscriptions, external push vendors, custom device-token storage, custom Redis opt-in lists, or app-owned notification delivery queues. + +Behavior: + +- Page opted-in users with `notifications.listOptedInUsers`. +- For each recipient, compute `getCurrentStreak(userId)` server-side. +- Split recipients into two groups: + - `streak > 0`: receive streak-preserving copy with template data `{ streak: String(streak) }`. + - `streak === 0`: receive generic return-to-play copy. +- Enqueue with `notifications.enqueue`. +- Use per-recipient `data` for template placeholders like `{{streak}}`. +- Include the canonical content/post link in each recipient. + +Recommended campaign handler shape: + +```ts +type CampaignResult = { + done: boolean; + cursor: string; +}; + +async function sendNewContentNotification(input: { + cursor: string; + count: number; + link: string; +}): Promise { + const results = await notifications.listOptedInUsers({ + after: + input.cursor.trim() === "" || input.cursor === "0" + ? undefined + : input.cursor, + limit: Math.min(1000, Math.max(1, input.count)), + }); + + const streakRecipients = []; + const freshRecipients = []; + + for (const userId of results.userIds) { + const streak = await getCurrentStreak(userId); + if (streak > 0) { + streakRecipients.push({ + userId, + link: input.link, + data: { streak: String(streak) }, + }); + } else { + freshRecipients.push({ + userId, + link: input.link, + data: {}, + }); + } + } + + await Promise.allSettled([ + streakRecipients.length > 0 && + notifications.enqueue({ + title: STREAK_NOTIFICATION_TITLE, + body: STREAK_NOTIFICATION_BODY, + recipients: streakRecipients, + }), + freshRecipients.length > 0 && + notifications.enqueue({ + title: STREAK_NOTIFICATION_TITLE, + body: NON_STREAK_NOTIFICATION_BODY, + recipients: freshRecipients, + }), + ]); + + return { done: !results.next, cursor: results.next ?? "" }; +} +``` + +Adapt types for the target repo, especially typed Reddit ids like `T2`, `T3`, or `T1` if used. + +**Scheduler Job** + +Add or reuse one generic push scheduler job. In `devvit.json`, register a task similar to: + +```json +{ + "scheduler": { + "tasks": { + "pn": { + "endpoint": "/internal/scheduler/pn" + } + } + } +} +``` + +If the app already has scheduler routes, use the existing pattern. + +The scheduler endpoint should: + +- Validate the job body with the repo's validation tool, preferably Zod if already used. +- Accept a discriminated campaign payload, even if the first implementation only supports `new-content`. +- Read push batch config from Redis: `batchSize` and `batchDelayMs`. +- Process one batch. +- If not done, call `scheduler.runJob` again with the same campaign, updated cursor, same params, and `runAt = now + batchDelayMs`. +- Log campaign start, enqueue result, next cursor, and validation failures. + +Default batch config: + +```ts +const DEFAULT_PN_CONFIG = { + batchDelayMs: 1_500, + batchSize: 200, +}; +``` + +Store it in Redis using a versioned config key, for example `v1:config:pn`, and self-heal missing values. + +**Scheduling A New-Content Push** + +When new daily content is posted or becomes available, schedule: + +```ts +await scheduler.runJob({ + name: "pn", + data: { + campaign: "new-content", + cursor: "", + params: { link: contentId }, + }, + runAt: new Date(Date.now() + NEW_CONTENT_NOTIFICATION_DELAY_MS), +}); +``` + +Use the app's canonical content id as `link`. If the app has a daily content cron, schedule the push from that content creation path. If content is created manually, schedule it from that path too. + +**Robustness Requirements** + +- Validate all inputs before Redis writes or notification sends. +- Never trust client-reported completion for streak credit. +- Use the daily post's `createdAt` for the streak day, or the server-written daily content `createdAt` if the app does not use per-day Reddit posts. +- Keep completion writes idempotent. +- Keep opt-in state in Devvit notifications, not Redis. +- Cap notification batch size. +- Use scheduler continuation for pagination. +- Avoid private or surprising personalization in notification copy. +- Add enough logging to debug campaign progress. +- If historical completions exist, add a backfill script/job or leave a clear TODO with instructions. + +**Tests To Add** + +Add tests in the target repo's test style. Cover these cases: + +Streak Storage + +- Setting a streak bit for one user/year does not affect another user/year. +- `getDayOfYear` returns `0` for Jan 1, `364` for Dec 31 in non-leap years, and `365` for Dec 31 in leap years. +- `isBitSet` reads bits consistently with Redis bitmap ordering. + +Current Streak + +- Returns `0` when there are no plays. +- Returns `1` only after the first streak-worthy completion. +- Counts backward from today when today is set. +- Counts backward from yesterday when today is not set. +- Stops at the first missing day. +- Bridges from Jan 1 into the previous year when contiguous. +- Handles leap-year prior-year endings. + +Completion Writes + +- Recording the same completion twice is safe. +- Non-forced `completed: false` does not clear an existing day. +- Forced admin/backfill write can set or clear a bit if that behavior is implemented. +- Completion uses the content timestamp, not the request timestamp. +- If `COUNT_ARCHIVE_COMPLETIONS_FOR_STREAK` is `true`, completing an archive item sets the streak bit for that archive item's UTC content day. +- If `COUNT_ARCHIVE_COMPLETIONS_FOR_STREAK` is `false`, completing an archive item does not award streak credit. + +Push Opt-In Wrappers + +- `setPushState(true)` calls `notifications.optInCurrentUser`. +- `setPushState(false)` calls `notifications.optOutCurrentUser`. +- `getPushState` calls `notifications.isOptedIn`. +- No custom push provider, browser Push API subscription, or Redis opt-in source of truth is created. + +Notification Campaign + +- Opted-in users with `currentStreak > 0` receive streak copy with `data.streak`. +- Opted-in users with `currentStreak === 0` receive generic copy. +- Non-opted-in users are not sent notifications. +- Pagination returns the next cursor and marks done when no next page exists. + +Scheduler + +- The scheduler endpoint validates campaign payloads. +- It processes one batch using configured `batchSize`. +- It schedules a continuation job when `done === false`. +- It does not schedule a continuation when `done === true`. + +**Manual Verification Checklist** + +After implementation: + +- Complete today's content as a logged-in user and confirm the streak increments. +- Start as a new user and confirm the displayed/API streak is `0` before completing any streak-worthy content. +- Complete one streak-worthy item and confirm the displayed/API streak becomes `1`. +- If `COUNT_ARCHIVE_COMPLETIONS_FOR_STREAK` is `true`, complete an archive item as a logged-in user and confirm the app records the streak bit for that archive item's content day. +- If `COUNT_ARCHIVE_COMPLETIONS_FOR_STREAK` is `false`, complete an archive item as a logged-in user and confirm it does not award streak credit. +- Refresh the client and confirm `getStreak` returns the same value. +- Complete the same content again and confirm the streak does not double-count. +- Set up an opted-in test user with a streak and run the new-content campaign; confirm streak copy is sent. +- Set up an opted-in test user without a streak and run the campaign; confirm generic copy is sent. +- Confirm the notification link opens the intended content. +- Confirm a non-opted-in user does not receive a push. +- Confirm scheduler continuation works with a small batch size like `1`. + +**Expected Final Response From The Implementing Agent** + +When finished, report: + +- Files changed and why. +- The target repo's completion path that now records streaks. +- The Redis keys/data model used. +- The scheduler task and campaign payload shape. +- The push opt-in API methods exposed. +- Tests added and test command results. +- Manual verification steps completed or not completed. +- Remaining app-specific TODOs, if any. + +\--- END COPY-PASTE PROMPT \--- + +
    diff --git a/versioned_docs/version-0.13/capabilities/notifications/notifications-overview.md b/versioned_docs/version-0.13/capabilities/notifications/notifications-overview.md new file mode 100644 index 00000000..8026af37 --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/notifications/notifications-overview.md @@ -0,0 +1,18 @@ +# Overview + +Push notifications are an experimental engagement feature designed to help bring players back into your game at the right moments. + +Push notifications can help drive engagement, increase player retention, and build habit loops for players—all good things for your game. You can trigger opt-in reminders around high-value events such as streaks, rewards availability, milestones, and live activities. + +## Beta requirements + +This is a **gated beta**, which means that you’ll need to apply to unlock the ability to use push notifications in your app. Current eligibility is aimed at established, already-engaged games rather than brand-new launches, and push notification partners are selected from active games with traction and predictable cadence. Check out our [featured games](https://www.reddit.com/r/GamesOnReddit/comments/1rydlny/games_launchpad/) to get an idea of what we’re looking for. + +## How to apply + +If you meet the beta requirements, fill out [this form](https://docs.google.com/forms/d/e/1FAIpQLScB3eXHVCBf3kyHueyf3G_raxH9_BsCGiXyGjQOOmPxWz6fEg/viewform?usp=publish-editor) for consideration, and be sure to include: + +- The app identifier. +- Your push notification copy. We’ll do a quick review to ensure that it complies with our [Reddit Rules](https://redditinc.com/policies/reddit-rules). + +Note that spaces are limited, and not all apps that meet the criteria will be accepted. diff --git a/versioned_docs/version-0.13/capabilities/notifications/pn-best-practices.md b/versioned_docs/version-0.13/capabilities/notifications/pn-best-practices.md new file mode 100644 index 00000000..f351af31 --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/notifications/pn-best-practices.md @@ -0,0 +1,226 @@ +# Best Practices + +Push notifications can help drive engagement, increase player retention, and build habit loops for players—all good things for your game. The examples below are from [Syllo](https://www.reddit.com/r/syllo/), a word game that integrated Push Notifications into the game experience. + +![PN Examples](../../assets/notifications/syllo-pn-examples.png) + +This guide provides instructions for implementing developer-authored push notifications for Reddit games. + +:::note +This is currently an experimental feature, and you'll need to [apply](https://docs.google.com/forms/d/e/1FAIpQLScB3eXHVCBf3kyHueyf3G_raxH9_BsCGiXyGjQOOmPxWz6fEg/viewform?usp=publish-editor) for a spot in our beta program to implement push notifications in your app. +::: + +## How it works + +### Push notification copy review + +All push notifications in this Beta must be pre-approved by Devvit admins to ensure alignment with Reddit’s notification standards and content policy (see [Effective Copy](#write-effective-copy) for tips\!). + +The Devvit team will review and approve all submissions before activation to ensure a safe and consistent experience across games. + +Notifications should be: + +- **Time-sensitive or highly important** (e.g., a new puzzle is available, a live event is starting, a challenge has ended). +- **Respectful and Reddit-appropriate**, avoiding spammy, click-bait, or overly promotional language. +- **Short and clear** — titles ≤ 60 characters, body ≤ 100 characters. +- **Transparent** about the context of the notification (what the user will see when they tap). + +You can send a maximum of two push notifications per day per user. + +### Opt-in / opt-out UX + +Push notifications are opt-in only. and this is enforced at the API level. In the future, additional opt-out controls will also be available in Reddit settings. + +Games must provide an in-game notifications control that: + +- Allows users to explicitly turn notifications on and off +- Clear text indicating the user’s current state (on or off) on the initial screen + +#### UX best practices + +- Use Reddit’s notification-on and notification-off icons +- Clearly indicate if game notifications are on or off +- Always provide an easy way to toggle on or off notifications from your initial app view or a settings page +- Show visual confirmation of actions, like adding a “Notifications enabled” toast or change to the button styling + +#### Component examples + +![Components](../../assets/notifications/component-examples.png) + +## Designing high-quality notifications + +Push notifications are most effective when strong content and strong copy work together. High-quality messages start with meaningful in-game events and use clear, motivating language to bring that value to life. + +### Create meaningful events + +Your push notifications should deliver clear, immediate value to players. + +- **Make player progress visible**. Streaks make player progress tangible and gives players a clear, low-effort goal: show up, keep the streak alive, and continue progressing. **Make sure to include the number of days in the streak**. This makes the player’s progress concrete and strengthens their motivation to return to keep it going. + +![PN Examples](../../assets/notifications/visible-progress.png) + +- **Provide tangible player benefits**. Tie notifications to real outcomes, like rewards ready to claim, streak milestones, live games, or limited-time challenges. Give the user a clear payoff for returning to the game. High-value events drive high conversion. If there’s no clear payoff, it’s better not to send the notification at all. + +![PN Examples](../../assets/notifications/tangible-benefits.png) + +- **Layer urgency onto broadly relevant moments**. Create momentum by promoting events that are time-sensitive (“happening now” or “ending soon”) and matter to a wide audience, like a daily puzzle going live or the final hour of a tournament. + +![PN Examples](../../assets/notifications/layer-urgency.png) + +- **Treat pushes as a limited resource**. Use notifications selectively for moments where value is obvious at a glance, like completing a weekly challenge, collecting a reward, joining a live match, or entering a newly unlocked mode. These are the moments most likely to drive immediate play and long-term retention. + +### Optimize timing + +Send push notifications when players are most likely to engage with your game. + +- **Localize delivery by user time zone** + + - Schedule sends using the player’s local time, not a single global batch time. + - Treat night-time sends as disallowed by default; players are more likely to mute or opt out if they’re woken up or interrupted late. + +- **Aim for late afternoon to early evening** + + - Platform data shows peak PN opens in late afternoon and early evening by GEO. Use this as the default window if you don’t have game-specific signals. + - Start with a conservative window like **16:00–21:00 local time**, then refine based on your game’s metrics (CTR and disable rates). + +- **Align timing to moments of natural intent** + + - For streak reminders, send close to when players typically play (e.g., a few hours before their usual daily play time), not as a “last second” midnight panic. + - For event and reward PNs, send: + - Shortly before the value becomes available (e.g., event starting soon, reward about to unlock), or + - When the value is immediately redeemable and you can deeplink straight into the relevant screen. + - Avoid “just because it’s morning” or daily cron-style sends; timing should always correspond to a clear in-game reason to come back right now. + +- **Use timing metrics to iterate** + - Track **CTR by hour-of-day and day-of-week** in local time buckets for your game. + - Watch **notification disable rates** after bursts of sends; spikes usually mean you’re hitting players at the wrong time (too early, too late, or too often). + - If you don’t have enough volume for fine-grained experiments, stick to: + - No night-time delivery + - Late afternoon/evening windows + - Only sending when a concrete, time-bound value is available (streak, event, reward). + +### Write effective copy {#write-effective-copy} + +Push notifications act as **motivational nudges** that get to the crux of why users are playing your game. Here are some ways you can incorporate these nudges into your game. + +- **Add behavioral triggers**. Behavioral triggers respond to real user actions, like completing tasks, returning after a break, or reaching milestones. This makes each message feel timely and personal. Examples might include: + + - “You’re 1 game away from finishing your weekly challenge\!” + - “You were in the top 5% last week—can you do it again?” + - “You have 2 new puzzles waiting for you\!” + +- **Engage with social dynamics**. Highlighting status changes and community milestones inspire connection and friendly competition. Examples might include: + + - “Your team just moved up a division\! Jump in to keep the momentum going\!” + - “Someone just stole your place on the leaderboard. Want it back?” + +- **Leverage personal motivation.** The user’s history with the game reinforces progress. Examples might include: + - “Your crops are thriving\! Come collect your rewards\!” + - “You’re close to genius rank\! Solve 3 more puzzles to claim your crown\!” + - “You’re one mission away from unlocking your next rank\! Time to jump back into action\!” + +To learn more about creating deeper engagement loops, check out the best practices for [building community games](https://developers.reddit.com/docs/guides/best-practices/community_games). + +## Adding push notifications to your app + +### Step 1: Update the push notification module + +In your terminal, navigate to your project directory and run this command to update the push notification to the latest release. + +``` +npm install @devvit/notifications +``` + +### Step 2: Import the push notification module + +``` +import { notifications } from '@devvit/notifications'; +``` + +**Note**: If you already have the PN module, enter +`npm install @devvit/notifications@next` to get the latest version. + +### Step 3: Use bulk push notification endpoint with templating + +To send a push notification to a group of users, you can use the double curly brackets ( { { } } ) to reference variables in a Mustache template. + +``` +await notifications.enqueue({ + title: 'Hello {{name}}!', + body: 'You have {{score}} new points.', + recipients: [ + { + userId: 't2_abc123', + link: 't3_xyz987', + data: { + name: 'Alex', + score: '42', + }, + }, + { + userId: 't2_def456', + link: 't3_xyz987', + data: { + name: 'Jordan', + score: '7', + }, + }, + { + userId: 't2_ghi789', + link: 't3_xyz987', + data: { + name: 'Sam', + score: '13', + }, + }, + ], +}); +``` + +**Note:** Mustache templating is optional. Here's a simplified example without it: + +``` +await notifications.enqueue({ + title: 'Winner!', + body: 'Congrats on your win', + recipients: [ + { + userId: 't2_abc123', + link: 't3_xyz987', + }, + ], +``` + +**Note**: If the app hasn’t been published, you can only send push notifications to yourself for testing. **Pre-release apps in testing are not subject to the rate-limits below**. + +Once your app is published, you can pass different data per user for the same template. For each app, you can send: + +- 2 push notifications per user per day\* +- Up to 25K per app per day + +If you need higher limits, let us know. + +### Step 4: opt-in / opt-out + +Users will be able to opt in or out of receiving notifications triggered by a button in your UI: + +``` +await notifications.optInCurrentUser(); +await notifications.optOutCurrentUser(); +``` + +You will also be able to retrieve a list of users who have opted in (if not managing it manually): + +``` +//This will just return the first 1000 users +const recipients = await notifications.listOptedInUsers(); + +const recipients = await notifications.listOptedInUsers({ + after: '1764876078573:t2_ltrlsg7l', + limit: 100, +}); +``` + +The default and maximum limit is 1,000. + +Usernames are returned in chronological order according to opt-in time, starting after the specified cursor. If the cursor is not found, results begin from the earliest opt-in time. diff --git a/versioned_docs/version-0.13/capabilities/realtime/overview.md b/versioned_docs/version-0.13/capabilities/realtime/overview.md new file mode 100644 index 00000000..9539fcec --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/realtime/overview.md @@ -0,0 +1,173 @@ +# Overview + +Create live and event-driven interactive posts. Realtime provides a set of primitives that lets you build interactive posts that are: + +- **Live**. Users engaging with the same interactive post see each others’ changes without any observable lag. +- **Event-driven**. Posts render automatically in response to server events. +- **Synced**. Using realtime with [Redis](../server/redis.mdx) lets you build persistent community experiences that are backed by high performance data synchronization. + +Realtime is supported in [Devvit Web](../devvit-web/devvit_web_overview.mdx) applications. + +# Realtime in Devvit Web + +This guide walks through step-by-step instructions on how to set up [Realtime](./overview.md) in a [Devvit Web](../devvit-web/devvit_web_overview.mdx) application + +## Overview + +The realtime client allows you to: + +- **Connect** to realtime channels for receiving messages +- **Handle** connection lifecycle events (connect/disconnect) +- **Process** incoming messages with custom logic +- **Manage** multiple channel subscriptions +- **Disconnect** from channels when no longer needed + +## Architecture + +Realtime functionality in Devvit follows a client/server architecture: + +- **Client-side** (connectRealtime): Subscribe to channels and receive messages +- **Server-side** (realtime.send): Send messages to channels + +This separation ensures that message sending is controlled by server-side logic while clients can freely subscribe to channels they're interested in. + +## Client-side API reference + +### connectRealtime + +Connects to a realtime channel for receiving messages. + +```tsx title="client/index.ts" +import { connectRealtime } from '@devvit/web/client'; + +const connection = await connectRealtime({ + channel: 'my-channel', + onConnect: (channel) => { + console.log(`Connected to ${channel}`); + }, + onDisconnect: (channel) => { + console.log(`Disconnected from ${channel}`); + }, + onMessage: (data) => { + console.log('Received message:', data); + }, +}); +``` + +#### Parameters + +- `opts` - Connection options object + - `channel` (string) - The name of the channel to connect to. Note, you cannot use the `:` character in the channel name + - `onConnect?` (function) - Optional callback called when connection is established + - `onDisconnect?` (function) - Optional callback called when connection is lost + - `onMessage` (function) - Required callback called when a message is received + +#### Returns + +A `Connection` object with a `disconnect()` method. + +### Connection + +A connection object returned by `connectRealtime()`. + +#### Methods + +##### disconnect() + +Disconnects from the realtime channel. + +```tsx +await connection.disconnect(); +``` + +This method: + +- Removes the channel from active subscriptions +- Cleans up event listeners +- Calls the `onDisconnect` callback if provided + +## Server-side API reference + +### Realtime plugin + +The server-side plugin for sending messages to realtime channels. + +```tsx title="server/index.ts" +import { realtime } from '@devvit/web/server'; + +// Send a message to a channel +await realtime.send('my-channel', { + type: 'user-joined', + userId: '123', +}); +``` + +#### Methods + +##### send(channel: string, msg: JSONValue): Promise + +Sends a message to a specific channel. + +- `channel` (string) - The name of the channel to send the message to +- `msg` (JSONValue) - The message data to send + +## Usage examples + +### Client-side: basic channel connection + +```tsx title="client/index.ts" +import { connectRealtime } from '@devvit/web/client'; + +// Connect to a channel +const connection = await connectRealtime({ + channel: 'user-updates', + onMessage: (data) => { + // Handle incoming messages + console.log('User update:', data); + }, +}); + +// Later, disconnect when done +await connection.disconnect(); +``` + +### Client-side: connection lifecycle management + +```tsx title="client/index.ts" +import { connectRealtime } from '@devvit/web/client'; + +const connection = await connectRealtime({ + channel: 'live-chat', + onConnect: (channel) => { + console.log(`Connected to ${channel}`); + // Update UI to show connected state + setIsConnected(true); + }, + onDisconnect: (channel) => { + console.log(`Disconnected from ${channel}`); + // Update UI to show disconnected state + setIsConnected(false); + }, + onMessage: (data) => { + // Process chat messages + addMessageToChat(data); + }, +}); +``` + +### Server-side: sending messages + +```tsx title="server/index.ts" +import { realtime } from '@devvit/web/server'; + +// Send a simple message +await realtime.send('notifications', 'New user joined!'); + +// Send a structured message +await realtime.send('game-updates', { + type: 'score-update', + playerId: 'user123', + score: 1500, + timestamp: Date.now(), +}); +``` diff --git a/docs/capabilities/server/cache-helper.mdx b/versioned_docs/version-0.13/capabilities/server/cache-helper.mdx similarity index 99% rename from docs/capabilities/server/cache-helper.mdx rename to versioned_docs/version-0.13/capabilities/server/cache-helper.mdx index a6e4e5ce..c7f5179f 100644 --- a/docs/capabilities/server/cache-helper.mdx +++ b/versioned_docs/version-0.13/capabilities/server/cache-helper.mdx @@ -1,7 +1,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -# Cache helper +# Cache Helper Cache helper lets you build a more performant app by reducing the number of server side calls for the same data. You can create a short-term cache that stores JSON objects in your Devvit app for a limited amount of time. This is valuable when you have many clients trying to get the same data, for example a stock ticker value or a sports score. diff --git a/versioned_docs/version-0.13/capabilities/server/http-fetch-policy.md b/versioned_docs/version-0.13/capabilities/server/http-fetch-policy.md new file mode 100644 index 00000000..2e1fd0bb --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/server/http-fetch-policy.md @@ -0,0 +1,110 @@ +# HTTP Fetch Policy + +When requesting domains to be allow-listed, they fall into three categories: + +1. **APIs that provide data or specific services** (e.g., `api.openai.com`, `api.wikipedia.org`) \- These will be approved if they have a **publicly documented and publicly accessible API** for valid use cases, and if they adhere to the Devvit rules. Please reference our AI providers and account linking policies for common invalid use cases. + +2. **Limited scope cloud providers** (e.g., `username.supabase.com`, `my-app.firebase.com`) \- May be granted with exceptions. You must: + + - Follow user privacy guidelines and data governance requirements + - Use an approved provider from the list below (please include your subdomain, and request for the most granular domain possible, e.g. `my-app.s3.amazonaws.com`) + - `supabase.com` + - `firebase.com` + - `spacetimedb.com` + - `s3.amazonaws.com` + - `storage.googleapis.com` + - Demonstrate a capability that `@devvit/server` doesn't support + - Valid use cases include: + - Asset hosting (videos, images, music) + - Relational databases + - Note: Approval can be revoked at any time + +3. **Personal domains** (e.g., `personaldomain.com`) \- Will not be approved. If you have a use case that our Devvit server does not support, please submit your request with detailed justification. + +### AI providers + +At this time, the only AI providers we allow are OpenAI and Google Gemini: + +- `api.openai.com` +- `generativelanguage.googleapis.com` + +Requests to use any other AI provider will be denied. + +### Documentation requirements + +If your app uses fetch domains, you must add context to your app's README for the approval process: + +1. Create a "Fetch Domains" section in your README +2. List each domain you're requesting and explain why you need it +3. Ensure your usage complies with our fetch guidelines + +Example README section: + +``` +## Fetch Domains + +The following domains are requested for this app: + +- `api.wikipedia.org` - Used to fetch article summaries for the knowledge base feature +- `username.supabase.com` - Required for relational database storage of user preferences (Devvit KV store doesn't support complex queries needed for this feature) +``` + +…. + +### Domain Requirements + +Domain entries must be exact hostnames only, such as nytimes.com or wikipedia.org. These fetch requests are not allowed: + +- Be specific. No using `*.example.com` when you need `api.example.com` +- No wildcards: `*.example.com` +- No protocols: `https://api.example.com` +- No paths: `api.example.com/webhooks` + +Domains that are approved for your app will be displayed in the Developer Settings section for your app at `https://developers.reddit.com/apps/{your-app-slug}/developer-settings`. +These domains are allow-listed for **your app only** and not globally. + +Apps must request each individual domain that it intends to fetch, even if the domain is already globally allowed. See the [global fetch allowlist](#global-fetch-allowlist) to view the list of globally allowed domains. + +### Terms and conditions + +Any app that uses `fetch` must upload Terms and Conditions and a Privacy Policy. Links to each of these documents must be saved in the app details form. + +![App configuration form](../../assets/capabilities/http-fetch/http-fetch-legal-links.png) + +## Global fetch allowlist {#global-fetch-allowlist} + +The following domains are globally allowed and can be fetched by any app: + +- api.openai.com +- generativelanguage.googleapis.com +- example.com +- site.api.espn.com +- cdn.espn.com +- discord.com +- api.polygon.io +- api.massive.com +- polygon.io +- slack.com +- lichess.org +- api.telegram.org +- commentanalyzer.googleapis.com +- language.googleapis.com +- statsapi.mlb.com +- api.scryfall.com +- api.nasa.gov +- api.sportradar.us +- api.sportradar.com +- random.org +- youtube.googleapis.com +- api.weather.gov +- wikipedia.org +- finance.yahoo.com +- api.twitter.com +- api.petfinder.com +- fonts.googleapis.com +- nytimes.com +- npr.org +- propublica.org +- pbs.org +- i.giphy.com +- chessboardjs.com \ No newline at end of file diff --git a/versioned_docs/version-0.13/capabilities/server/http-fetch.mdx b/versioned_docs/version-0.13/capabilities/server/http-fetch.mdx new file mode 100644 index 00000000..16284f81 --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/server/http-fetch.mdx @@ -0,0 +1,151 @@ +# HTTP Fetch + +Make requests to allow-listed external domains. + +Your Devvit app can make network requests to access allow-listed external domains using HTTP Fetch. This enables your app to leverage webhooks, personal servers, and other third-party integrations asynchronously across the network. + +## Enabling HTTP fetch calls + +```json title="devvit.json" +{ + ... + "permissions": { + "http": { + "enable": true, + "domains": ["my-site.com", "another-domain.net"] + } + } +} +``` + +### Requesting a domain to be allow-listed + +Apps may request a domain to be added to the allow-list by specifying `domains` in the `http` configuration. +This configuration is optional, and apps can still configure `http: true` as before. + +Requested domains will be submitted for review when you playtest or upload your app. Admins may approve or deny domain requests. + +Domain entries must be exact hostnames only, such as nytimes.com or wikipedia.org. These fetch requests are not allowed: + +- Be specific. No using `*.example.com` when you need `api.example.com` +- No wildcards: `*.example.com` +- No protocols: `https://api.example.com` +- No paths: `api.example.com/webhooks` + +Domains that are approved for your app will be displayed in the Developer Settings section for your app at `https://developers.reddit.com/apps/{your-app-slug}/developer-settings`. +These domains are allow-listed for **your app only** and not globally. + +Apps must request each individual domain that it intends to fetch, even if the domain is already globally allowed. See the [global fetch allowlist](#global-fetch-allowlist) to view the list of globally allowed domains. + +## Limitations + +- Access is only allowed to https URIs. +- Supported HTTP methods: `GET`, `POST`, `PUT`, `DELETE`, `OPTIONS` and `PATCH`. +- HTTP timeout limit is 30 seconds. + +## Example usage + +Devvit Web applications have two different contexts for using fetch: + +### Server-side fetch + +Server-side fetch allows your app to make HTTP requests to allowlisted external domains from your server-side code (e.g., API routes, server actions): + +```tsx title="server/index.ts" +const response = await fetch('https://example.com/api/data', { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + }, +}); + +const data = await response.json(); +console.log('External API response:', data); +```` + +### Client-side fetch + +Client-side fetch has different restrictions and can only make requests to your own webview domain: + +**Client-side restrictions:** + +- **Domain limitation**: Can only make requests to your own webview domain +- **Endpoint requirement**: All requests must target endpoints that end with `/api` +- **Authentication**: Handled automatically - no need to manage auth tokens +- **No external domains**: Cannot make requests to external domains from client-side code + +```tsx title="client/index.ts" +const handleFetchData = async () => { + // Correct: fetching your own webview's API endpoint + const response = await fetch("/api/user-data", { + method: "GET", + headers: { + "Content-Type": "application/json", + }, + }); + + const data = await response.json(); + console.log("API response:", data); +}; + +// Incorrect: cannot fetch external domains from client-side +// const response = await fetch('https://external-api.com/data'); + +// Incorrect: endpoint must end with /api +// const response = await fetch('/user-data'); +``` + +## Troubleshooting + +If you see the following error, it means HTTP Fetch requests are hitting the internal timeout limits. To resolve this: + +- Use a queue or kick off an async request in your back end. You can use [Scheduler](./scheduler.mdx) to monitor the result. +- Optimize the overall HTTP request latency if you have a self-hosted server. + +```ts +HTTP request to domain: timed out with error: context deadline exceeded. +``` + +### Terms and conditions + +Any app that uses `fetch` must upload Terms and Conditions and a Privacy Policy. Links to each of these documents must be saved in the app details form. + +![App configuration form](../../assets/capabilities/http-fetch/http-fetch-legal-links.png) + +## Global fetch allowlist + +The following domains are globally allowed and can be fetched by any app: + +- example.com +- site.api.espn.com +- cdn.espn.com +- discord.com +- api.polygon.io +- api.massive.com +- polygon.io +- slack.com +- lichess.org +- api.telegram.org +- commentanalyzer.googleapis.com +- language.googleapis.com +- statsapi.mlb.com +- api.openai.com +- api.scryfall.com +- api.nasa.gov +- api.sportradar.us +- api.sportradar.com +- random.org +- generativelanguage.googleapis.com +- youtube.googleapis.com +- api.weather.gov +- wikipedia.org +- finance.yahoo.com +- api.twitter.com +- api.petfinder.com +- fonts.googleapis.com +- nytimes.com +- npr.org +- propublica.org +- pbs.org +- i.giphy.com +- chessboardjs.com diff --git a/versioned_docs/version-0.13/capabilities/server/launch_screen_and_entry_points/launch_overview.mdx b/versioned_docs/version-0.13/capabilities/server/launch_screen_and_entry_points/launch_overview.mdx new file mode 100644 index 00000000..81578519 --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/server/launch_screen_and_entry_points/launch_overview.mdx @@ -0,0 +1,17 @@ +# View Modes, Launch Screens, and Entry Points + +Devvit’s interactive framework gives you powerful ways to shape how users experience apps, from launch screen to expanded screen viewing. With view modes, HTML-based launch screens, and multiple entry points, you can design apps that feel native and respond to how users interact across the Reddit platform. + +View modes define how your app appears: + +- **Inline mode** loads your app’s web view directly inside the post unit, either in the feed or on the post details page. Users can interact immediately without additional taps or page loads. + +- **Expanded mode** opens your app or game in a larger, full-screen view, ideal for immersive experiences such as games, creative tools, or detailed interactions on mobile. + +**Launch screens** are the first thing users see before your main app loads. These HTML-based screens give you complete control over their design, animation, and loading behavior using the same tools and styles as your app itself. + +This is an example of an inline launch screen: + +Inline launch screen + +**Entry points** act as a router that organizes your app across different view modes. Each entry point specifies the initial HTML file for the specific context. A user might experience your app inline, when it’s embedded in a post, or launch it in expanded mode for a larger, full-screen mobile experience. diff --git a/versioned_docs/version-0.13/capabilities/server/launch_screen_and_entry_points/launch_screen_customization.md b/versioned_docs/version-0.13/capabilities/server/launch_screen_and_entry_points/launch_screen_customization.md new file mode 100644 index 00000000..eaaa1616 --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/server/launch_screen_and_entry_points/launch_screen_customization.md @@ -0,0 +1,168 @@ +# Launch Screen Customization + +## Creating Your Launch (Preview) Screen + +Create an HTML file that serves as your app's launch screen in inline mode. This is what users see immediately when they encounter your post. Templates include a performant and compliant preview screen. + +```html title="preview.html" + + + + + My Game + + + +
    +

    Adventure Game

    +

    Tap to play in fullscreen

    + +
    + + +``` + +```tsx title="preview.js" +import { requestExpandedMode } from '@devvit/web/client'; + +document.addEventListener('DOMContentLoaded', () => { + const playButton = document.getElementById('play-button'); + + playButton.addEventListener('click', async (event) => { + try { + await requestExpandedMode(event, 'game'); + } catch (error) { + console.error('Failed to enter expanded mode:', error); + } + }); +}); +``` + +## API Reference + +### requestExpandedMode() + +Requests expanded mode for the web view. This displays the web view in a larger modal presentation on web and full screen on mobile. + +```tsx +import { requestExpandedMode } from '@devvit/web/client'; + +// Must be called from a trusted event (click, touch, etc.) +await requestExpandedMode(event, 'game'); +``` + +**Parameters** + +- `event` (PointerEvent): The gesture that triggered the request, must be a trusted event +- `entry` (string): The destination URI name (e.g., `splash` or `game`). Entry names are the `devvit.json post.entrypoints` keys + +### getWebViewMode() + +Get the current web view mode state. + +```tsx +import { getWebViewMode } from '@devvit/web/client'; + +const currentMode = getWebViewMode(); // Returns 'inline' | 'expanded' + +if (currentMode === 'expanded') { + // Show expanded UI +} else { + // Show inline UI +} +``` + +### Mode Change Events + +Listen for mode changes to update your UI. + +```tsx +import { addWebViewModeListener, removeWebViewModeListener } from '@devvit/web/client'; + +function useWebViewMode() { + const [mode, setMode] = useState(getWebViewMode()); + + useEffect(() => { + const handleModeChange = (newMode: 'inline' | 'expanded') => { + setMode(newMode); + }; + + addWebViewModeListener(handleModeChange); + return () => removeWebViewModeListener(handleModeChange); + }, []); + + return mode; +} +``` + +## Complete Example + +```tsx title="game.tsx" +import React, { useState, useEffect } from 'react'; +import { + getWebViewMode, + requestExpandedMode, + exitExpandedMode, + addWebViewModeListener, + removeWebViewModeListener, +} from '@devvit/web/client'; + +export function GameApp() { + const [mode, setMode] = useState(getWebViewMode()); + const [gameStarted, setGameStarted] = useState(false); + + useEffect(() => { + const handleModeChange = (newMode: 'inline' | 'expanded') => { + setMode(newMode); + + // Pause game when exiting expanded mode + if (newMode === 'inline' && gameStarted) { + pauseGame(); + } + }; + + addWebViewModeListener(handleModeChange); + return () => removeWebViewModeListener(handleModeChange); + }, [gameStarted]); + + const handlePlayClick = async (event: React.MouseEvent) => { + try { + await requestExpandedMode(event.nativeEvent, 'game'); + setGameStarted(true); + } catch (error) { + console.error('Could not enter expanded mode:', error); + // Fallback: start game inline + setGameStarted(true); + } + }; + + const handleExitClick = async (event: React.MouseEvent) => { + try { + await exitExpandedMode(event.nativeEvent); + } catch (error) { + console.error('Could not exit expanded mode:', error); + } + }; + + if (mode === 'inline') { + return ( +
    +

    Adventure Game

    +

    Tap to play in fullscreen

    + +
    + ); + } + + return ( +
    + + +
    + ); +} +``` diff --git a/versioned_docs/version-0.13/capabilities/server/launch_screen_and_entry_points/splash_migration.mdx b/versioned_docs/version-0.13/capabilities/server/launch_screen_and_entry_points/splash_migration.mdx new file mode 100644 index 00000000..79091a16 --- /dev/null +++ b/versioned_docs/version-0.13/capabilities/server/launch_screen_and_entry_points/splash_migration.mdx @@ -0,0 +1,119 @@ +# Migrating from Splash Screens + +If you're updating an existing app that used the deprecated splash parameter in `submitCustomPost()`, you'll need to migrate to HTML-based launch screens with multiple entry points. + + + + + + + + + [Build Games](./intro-games.mdx) + [Create Mod Tools](./intro-mod-tools.mdx) + diff --git a/versioned_docs/version-0.13/quickstart/quickstart-gamemaker.mdx b/versioned_docs/version-0.13/quickstart/quickstart-gamemaker.mdx new file mode 100644 index 00000000..7fa44119 --- /dev/null +++ b/versioned_docs/version-0.13/quickstart/quickstart-gamemaker.mdx @@ -0,0 +1,63 @@ +# GameMaker Quickstart + +This page walks you through building a GameMaker app for Devvit. Once complete, you'll see your GameMaker game running directly within a Reddit post. + +If you are already familiar with Devvit and want to jump straight to exporting, see the [Build and Deploy GameMaker Games to Devvit ](#build-and-deploy-gamemaker-games-to-devvit) section. + +## Try it out + +The template creates a simple GameMaker game and demonstrates data exchange between Reddit and GameMaker. + +GameMaker example + +## What you'll need + +- Node.js (version 22.2.0+) +- [GameMaker 2024.1400.3](https://releases.gamemaker.io/release-notes/2024/1400_3) or later (this version adds direct exporting to Reddit) + +## Environment setup + +1. Install Node.js and npm ([instructions](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)) +2. Go to [developers.reddit.com/new](https://developers.reddit.com/new) and select the GameMaker template +3. Complete the setup wizard (you'll need to create a Reddit account and connect it to Reddit Developers) +4. Follow the instructions in your terminal + +On success, you should see something like this: + +```sh +Your Devvit authentication token has been saved to /Users/user.name/.devvit/token +Fetching and extracting the template... +Cutting the template to the target directory... + 🔧 Installing dependencies... + 🚀🚀🚀 Devvit app successfully initialized! +┌────────────────────────────────────────────────────┐ +│ • `cd my-app` to open your project directory │ +│ • `npm run dev` to develop in your test community │ +└────────────────────────────────────────────────────┘ +``` + +## Running your app + +To run your app, navigate to your project directory with `cd my-app` and run `npm run dev`. You should see logs that conclude with: + +``` +┌─────────────────────────────────────────────────────────────────────────────┐ +│ ✓ Playtest ready │ +│ ➜ URL: https://www.reddit.com/r/my-app_dev/?playtest=my-app │ +│ ➜ Version: v0.0.0.1 │ +│ ➜ Open the URL above and refresh to see your latest changes. │ +└─────────────────────────────────────────────────────────────────────────────┘ +``` + +Follow this link to see your app. + +## Build and Deploy GameMaker Games to Devvit + +For step-by-step export instructions, see the [GameMaker Reddit Template documentation](https://github.com/YoYoGames/GameMakerRedditTemplate/blob/main/docs/HowToBuild.md). + +## Communicate between GameMaker and Reddit + +GameMaker games communicate with Reddit through HTTP requests. The provided template includes working examples of this data exchange: + +- **GameMaker client code**: [reddit_demo_server_api.gml](https://github.com/YoYoGames/GM-RedditDemo/blob/main/source/Reddit_gml/scripts/reddit_demo_server_api/reddit_demo_server_api.gml) — Shows how to send requests from GameMaker to retrieve user data, save scores, and interact with Reddit features. +- **Devvit server code**: [src/server/index.ts](https://github.com/reddit/devvit-template-gamemaker/blob/main/src/server/index.ts) — Handles incoming requests from GameMaker, accesses Reddit APIs, and stores data in Redis. diff --git a/versioned_docs/version-0.13/quickstart/quickstart-mod-tool.md b/versioned_docs/version-0.13/quickstart/quickstart-mod-tool.md new file mode 100644 index 00000000..b907e557 --- /dev/null +++ b/versioned_docs/version-0.13/quickstart/quickstart-mod-tool.md @@ -0,0 +1,176 @@ +# Mod tool quickstart + +Devvit allows you to build Mod Tools \- subreddit-installed applications that help moderators of that community to take action on conversations, keeping their communities safe and engaged. + +This tutorial should take about 10 minutes to complete. Once complete, you'll be able to run a version of [Comment Mop](https://developers.reddit.com/apps/comment-nuke) in your test subreddit from your own codebase. + +## What you'll need + +- Node.JS (version 22.2.0+) +- A code editor + +## Environment setup + +1. Install Node.JS and NPM ([instructions](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)) +2. Go to [https://developers.reddit.com/new](https://developers.reddit.com/new) and choose Mod Tool under Other templates. +3. Go through the wizard. You will need to create a Reddit account and connect it to Reddit developers. +4. Follow the instructions on your terminal. + +On success, you should see something like this: + +```sh +Your Devvit authentication token has been saved to /Users/user.name/.devvit/token +Fetching and extracting the template... +Cutting the template to the target directory... + 🔧 Installing dependencies... + 🚀🚀🚀 Devvit app successfully initialized! +┌────────────────────────────────────────────────────┐ +│ • `cd my-app` to open your project directory │ +│ • `npm run dev` to develop in your test community │ +└────────────────────────────────────────────────────┘ +``` + +## Understanding the template + +This tutorial lets you build your own version of [Comment Mop](https://developers.reddit.com/apps/comment-nuke). This tool allows moderators to remove and/or lock a full comment tree with a single menu action, avoiding repetitive mechanical tasks for community moderators. + +### Declare a menu action for moderators + +Menu items are declared in `devvit.json`. Each entry points at a server endpoint that runs when a moderator clicks it. The template leverages [Menu Actions](../capabilities/client/menu-actions.mdx) to enable moderators to Delete/Lock child comments of a post or comment. + +![menu actions](../assets/quickstart/quickstart-mod-tool-1.png) + +```json title="devvit.json" +{ + "menu": { + "items": [ + { + "label": "Mop comments", + "description": "Remove this comment and all child comments. This might take a few seconds to run.", + "forUserType": "moderator", + "location": ["comment"], + "endpoint": "/internal/menu/mop-comments" + } + ] + }, + "forms": { + "mopForm": "/internal/form/mop-submit" + }, + "permissions": { + "reddit": { "enable": true, "scope": "moderator" } + } +} +``` + +### Show a form from the menu action + +Some moderator tools need additional information before they execute. The menu endpoint can respond with a form using [menu responses](../capabilities/client/menu-actions.mdx). Comment Mop displays a form with options for the action to be taken: + +![forms](../assets/quickstart/quickstart-mod-tool-2.png) + +```ts title="server/index.ts" +import type { MenuItemRequest, UiResponse } from '@devvit/web/shared'; + +app.post('/internal/menu/mop-comments', async (c) => { + const _input = await c.req.json(); + return c.json({ + showForm: { + name: 'mopForm', + form: { + title: 'Mop Comments', + acceptLabel: 'Mop', + cancelLabel: 'Cancel', + fields: [ + { name: 'remove', label: 'Remove comments', type: 'boolean', defaultValue: true }, + { name: 'lock', label: 'Lock comments', type: 'boolean', defaultValue: false }, + { + name: 'skipDistinguished', + label: 'Skip distinguished comments', + type: 'boolean', + defaultValue: false, + }, + ], + }, + }, + }); +}); +``` + +### Handle the form submission with the Reddit API + +Devvit apps can use the Reddit API to act on comments and posts. The form submission endpoint receives the moderator's selections and traverses the comment tree: + +```ts title="server/index.ts" +import { reddit, context } from '@devvit/web/server'; +import type { UiResponse } from '@devvit/web/shared'; + +type MopFormRequest = { + remove: boolean; + lock: boolean; + skipDistinguished: boolean; +}; + +app.post('/internal/form/mop-submit', async (c) => { + const { remove, lock, skipDistinguished } = await c.req.json(); + const { commentId } = context; + + if (!remove && !lock) { + return c.json({ showToast: 'You must select either lock or remove.' }); + } + + if (!commentId) { + return c.json({ showToast: 'This action must be run on a comment.' }); + } + + try { + const rootComment = await reddit.getCommentById(commentId); + + for await (const comment of walkReplies(rootComment, skipDistinguished)) { + if (remove && !comment.removed) await comment.remove(); + if (lock && !comment.locked) await comment.lock(); + } + + return c.json({ + showToast: 'Comments mopped! Refresh the page to see the cleanup.', + }); + } catch (err) { + console.error(err); + return c.json({ showToast: 'Mop failed! Please try again later.' }); + } +}); + +async function* walkReplies( + comment: Awaited>, + skipDistinguished: boolean, +): AsyncGenerator { + if (skipDistinguished && comment.distinguishedBy) return; + yield comment; + const replies = await comment.replies.all(); + for (const reply of replies) { + yield* walkReplies(reply, skipDistinguished); + } +} +``` + +## Building and Testing + +To build and run your Mod tool, run the following commands on terminal: + +```shell +npm run dev +``` + +If you didn't provide a test subreddit, one will be created for you. Once you run `npm run dev`, you will receive a link to test the mod tool in your test subreddit. + +> Note that this mod tool is intended to be run on comments, so you will need to create a post and comment in your subreddit to see it. + +## Result + +Now you have a mod tool running from the code that you deployed yourself. Feel free to experiment with the code and run `npm run dev` again to see the changes. Notice that you don't need to worry about running costs for your mod tool, because Reddit hosts all Devvit applications for free. Also, if your mod tool becomes popular and gets installed by many subreddits, you may become eligible to earn [Reddit Developer Funds](../earn-money/reddit_developer_funds). + +## Further reading + +- Use our [launch guide](../guides/launch/launch-guide.md) to guide you where to get your first users. +- [Devvit Forms](../capabilities/client/forms.mdx) +- [Menu Actions](../capabilities/client/menu-actions.mdx) +- [Reddit Developer Funds](../earn-money/reddit_developer_funds) diff --git a/versioned_docs/version-0.13/quickstart/quickstart-unity.mdx b/versioned_docs/version-0.13/quickstart/quickstart-unity.mdx new file mode 100644 index 00000000..176be5b4 --- /dev/null +++ b/versioned_docs/version-0.13/quickstart/quickstart-unity.mdx @@ -0,0 +1,151 @@ +# Unity quickstart + +This tutorial walks you through building a Unity app for Devvit. Once complete, you'll see your Unity game running directly within a Reddit post. + +Many great Unity games are already running on Devvit, including [Blokkit](https://www.reddit.com/r/Blokkit/), [OutFloop](https://www.reddit.com/r/OutFloop/), and [Avatar Arena](https://www.reddit.com/r/AvatarsArena/) + +## Try it out + +This starter template creates a simple Unity game and demonstrates data exchange between Reddit and Unity. The example game can be played [here.](https://www.reddit.com/r/unity_starter_dev/comments/1p2fm6y/unitystarter/) + +Unity example + +## What you'll need + +- Node.js (version 22.2.0+) +- A code editor +- Unity 6 (this sample app was built with Unity 6000.2.8f1) +- A Unity Game, if you don't have one yet, you can use the provided [Unity Sample Project](https://github.com/reddit/devvit-unity-project) + +## Environment setup + +1. Install Node.js and npm ([instructions](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)) +2. Go to [developers.reddit.com/new](https://developers.reddit.com/new) and select the Unity template +3. Complete the setup wizard (you'll need to create a Reddit account and connect it to Reddit Developers) +4. Follow the instructions in your terminal + +On success, you should see something like this: + +```sh +Your Devvit authentication token has been saved to /Users/user.name/.devvit/token +Fetching and extracting the template... +Cutting the template to the target directory... + 🔧 Installing dependencies... + 🚀🚀🚀 Devvit app successfully initialized! +┌────────────────────────────────────────────────────┐ +│ • `cd my-app` to open your project directory │ +│ • `npm run dev` to develop in your test community │ +└────────────────────────────────────────────────────┘ +``` + +The Devvit Unity Template includes a pre-built Unity project. The full Unity project source is available [here](https://github.com/reddit/devvit-unity-project). + +## Running your app + +To run your app, navigate to your project directory with `cd my-app` and run `npm run dev`. You should see logs that conclude with: + +``` +┌─────────────────────────────────────────────────────────────────────────────┐ +│ ✓ Playtest ready │ +│ ➜ URL: https://www.reddit.com/r/my-app_dev/?playtest=my-app │ +│ ➜ Version: v0.0.0.1 │ +│ ➜ Open the URL above and refresh to see your latest changes. │ +└─────────────────────────────────────────────────────────────────────────────┘ +``` + +Follow this link to see your app. + +## Devvit project structure + +Your project contains the following folder structure, with each folder handling a specific part of your app: + +**`src/client`:** +Contains client-side code for your application. This is where you'll export your Unity game and customize your launch screen. + +**`src/server`:** +Contains server-side code for your application. This is where you communicate between Reddit and your Unity app, send data back and forth, save data on Reddit, handle post creation, and start your experience. + +**`src/shared`:** +Contains classes, types, and interfaces shared between the client and server. + +**`devvit.json`:** +Configuration file for Reddit-specific services your application uses. For more information, refer to [Devvit Configuration](../capabilities/devvit-web/devvit_web_configuration). + +**`src/client/public/Build`:** +The destination for your Unity project exports. + +**`src/client/public/TemplateData`:** +Contains Unity assets for the Unity loading screen. Customize these as needed for your use case. + +**`src/client/splash`:** +Contains the code for `splash.html`, the first screen users see when your post appears. From here, users launch into the Unity game. + +**`src/client/script.ts`:** +Contains the code to load your Unity instance. This script powers `index.html`. + +## Updating your Unity project + +The starter template includes 4 files in the `src/client/public/Build` folder. You'll need to replace these 3 files from your export: + +- SampleGame.data.unityweb +- SampleGame.framework.js +- SampleGame.wasm.unityweb + +To replace these files, export your project from Unity twice: once with compression and once without. + +1. In Unity, select **File > Build Profiles** and switch the active platform to **Web** +2. In the Build Profiles window, select **Player Settings** to open the Player Settings window +3. In Player Settings, scroll down to **Publishing Settings** and ensure **Decompression Fallback** is selected +4. Build your project twice: + + a. Set **Compression Format** to **GZip** and select **Build** in the Build Profiles window + b. Copy these files into your `src/client/Public/Build` folder: + + - `exportName.data.unityweb` + - `exportName.wasm.unityweb` + + c. In Publishing Settings, set **Compression Format** to **Disabled** and select **Build** again + d. Copy this file into your `src/client/Public/Build` folder: + + - `exportName.framework.js` + +5. If you used a name other than `SampleGame`, update `src/client/script.ts` lines 29-34 to point to your new files + +6. Run `npm run dev` in your Devvit project to see your Unity app running on Reddit + +:::warning +File uploads have a 100 MB size limit and a 30-second timeout. We’re working to improve these limits. If you encounter issues, try splitting large files or using a faster network connection. +::: + +## Communicate between Unity and Reddit + +The Unity app includes a [DevvitBridge.cs](https://github.com/reddit/devvit-unity-project/blob/main/Assets/Scripts/DevvitBridge.cs) file that uses UnityWebRequests to communicate with the `src/server/index.ts` file. + +For example, the following sends a message to the server, which receives the event, loads data from Reddit, and replies with the specified data. + +```csharp +UnityWebRequest request = UnityWebRequest.Get("/api/init"); +yield return request.SendWebRequest(); +``` + +:::note +Be sure that the object structure for the response type (such as `InitResponse` defined in `shared/types/api.ts`) matches the ones outlined in your `DevvitBridge.cs` file. +::: + +### Saving data to Reddit + +This starter project also includes an example of saving the completion time to Reddit through the `LevelCompletedRequest`. For Devvit apps, data is stored in [Redis](../capabilities/server/redis). + +```ts +const redisKey = `${postId}:${username}`; +await redis.set(redisKey, time); +``` diff --git a/versioned_docs/version-0.13/quickstart/quickstart.md b/versioned_docs/version-0.13/quickstart/quickstart.md new file mode 100644 index 00000000..04754196 --- /dev/null +++ b/versioned_docs/version-0.13/quickstart/quickstart.md @@ -0,0 +1,96 @@ +# App quickstart + +This tutorial takes you through the step-by-step process of building your first app with Devvit. It should take you about 1 minute to complete. Once complete, you'll be able to see your app in a Reddit post + +## Try it out + +This starter template will [create an app like this for you](https://www.reddit.com/r/test_devvit_demos/comments/1mk4ql4/test3jsdevvit/) running on Reddit. It consists of a simple react-based counter app that calls backend functions. + +## What you'll need + +- Node.JS (version 22.2.0+) +- A code editor + +## Environment setup + +1. Install Node.JS and NPM ([instructions](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)) +2. Go to [developers.reddit.com/new](https://developers.reddit.com/new) and choose the React template. +3. Go through the wizard. You will need to create a Reddit account and connect it to Reddit developers. +4. Follow the instructions on your terminal. + +On success, you should see something like this: + +```sh +Your Devvit authentication token has been saved to /Users/user.name/.devvit/token +Fetching and extracting the template... +Cutting the template to the target directory... + 🔧 Installing dependencies... + 🚀🚀🚀 Devvit app successfully initialized! +┌────────────────────────────────────────────────────┐ +│ • `cd my-app` to open your project directory │ +│ • `npm run dev` to develop in your test community │ +└────────────────────────────────────────────────────┘ +``` + +## Running your app + +To run your app, `cd my-app` and then run `npm run dev`. You should see some logs start up that finish with: + +``` +┌─────────────────────────────────────────────────────────────────────────────┐ +│ ✓ Playtest ready │ +│ ➜ URL: https://www.reddit.com/r/my-app_dev/?playtest=my-app │ +│ ➜ Version: v0.0.0.1 │ +│ ➜ Open the URL above and refresh to see your latest changes. │ +└─────────────────────────────────────────────────────────────────────────────┘ +``` + +The dev command automatically creates a development subreddit for your app and a test post for you to develop against. When you visit the url, it should look something like this. + +![subreddit view](../assets/quickstart_game_subreddit.png) + +Click the `Launch App` button to see your app! + +## Devvit architecture + +Once the project is checked out you'll see the following folder structure. Each of the folders is responsible for a part of your app: + +**`src/client`:** +This contains the client-side code for your application. You can use any web framework for your frontend (React, Vue, Angular, etc.). In this example, we chose react. + +**`src/server`:** +This contains the server-side code for your application. You will need to build a node-compatible server that handles API calls from the client-side. This is where you will write code for persistence, real-time message sharing between players, payment validation, etc. For this example we chose to use [express.JS](https://expressjs.com/) + +**`src/shared`:** +This contains classes, types and interfaces that are shared between the client and the server + +**`devvit.json`:** +This special file in the root of the project contains configurations for many of the Reddit-specific services that your application can use. For more information on `devvit.json` please refer to Configuration (devvit.json) + +## Testing your app on a specific subreddit + +You need to test your app on a subreddit. Your backend calls will not work when testing the app locally. For that we will be leveraging Devvit's Playtest tool. If you have a preference for a specific subreddit to playtest, change the `package.json` file to include your subreddit name in `dev`: + +```javascript title="package.json" +"scripts": { + //... + "dev": "devvit playtest r/MY_PREFERRED_SUBREDDIT", + //... +} +``` + +After adding the subreddit, use `npm run dev` to see the app on the new subreddit. + +## Launching your app + +Use our [launch guide](../guides/launch/launch-guide.md) to guide you where to get your first users. + +When you are ready to launch your app, run `npm run launch`. This will upload your app to Reddit for our team to review. All apps must be reviewed before they can be installed on subreddits > 200 members. We will send you an email once your app is approved. + +## Result + +Now you have an application that runs inside of a Reddit post. You can now use this scaffolding to build your own application or app with Devvit. + +## Further reading + +- [Launching and Promoting your game](../guides/launch/launch-guide.md) diff --git a/versioned_sidebars/version-0.13-sidebars.json b/versioned_sidebars/version-0.13-sidebars.json new file mode 100644 index 00000000..8c3dde61 --- /dev/null +++ b/versioned_sidebars/version-0.13-sidebars.json @@ -0,0 +1,351 @@ +{ + "tutorialSidebar": [ + { + "type": "html", + "value": "Introduction", + "className": "sidebar-section-header" + }, + { + "type": "doc", + "id": "introduction/introduction", + "label": "Welcome to Devvit" + }, + { + "type": "doc", + "id": "capabilities/devvit-web/devvit_web_overview", + "label": "Devvit Technical Overview" + }, + { + "type": "doc", + "id": "examples/app-showcase", + "label": "App Showcase" + }, + { + "type": "html", + "value": "
    ", + "className": "sidebar-divider", + "defaultStyle": false + }, + { + "type": "html", + "value": "Build Your App", + "className": "sidebar-section-header", + "defaultStyle": false + }, + { + "type": "category", + "label": "Build Games", + "items": [ + { + "type": "doc", + "id": "introduction/intro-games", + "label": "Introduction to Games" + }, + { + "type": "doc", + "id": "quickstart/quickstart", + "label": "Quickstart for Games" + }, + { + "type": "doc", + "id": "quickstart/quickstart-unity", + "label": "Quickstart for Unity" + }, + { + "type": "doc", + "id": "quickstart/quickstart-gamemaker", + "label": "Quickstart for GameMaker" + } + ] + }, + { + "type": "category", + "label": "Build Mod Tools", + "items": [ + { + "type": "doc", + "id": "introduction/intro-mod-tools", + "label": "Introduction to Mod Tools" + }, + { + "type": "doc", + "id": "quickstart/quickstart-mod-tool", + "label": "Quickstart for Mod Tools" + } + ] + }, + { + "type": "html", + "value": "
    ", + "className": "sidebar-divider", + "defaultStyle": false + }, + { + "type": "html", + "value": "Launch Your App", + "className": "sidebar-section-header", + "defaultStyle": false + }, + { + "type": "doc", + "id": "guides/launch/launch-guide", + "label": "Launch Guide" + }, + { + "type": "doc", + "id": "guides/launch/feature-guide", + "label": "Feature Guide" + }, + { + "type": "link", + "href": "https://support.reddithelp.com/hc/en-us/articles/27958169342996-Reddit-Developer-Funds-2025-Terms", + "label": "Reddit Developer Funds" + }, + { + "type": "html", + "value": "
    ", + "className": "sidebar-divider", + "defaultStyle": false + }, + { + "type": "html", + "value": "Capabilities", + "className": "sidebar-section-header", + "defaultStyle": false + }, + { + "type": "category", + "label": "Devvit Setup Overview", + "items": [ + { + "type": "doc", + "id": "capabilities/devvit-web/devvit_web_configuration", + "label": "Devvit Configuration" + }, + { + "type": "doc", + "id": "capabilities/client/overview", + "label": "Client Overview" + }, + { + "type": "doc", + "id": "capabilities/server/overview", + "label": "Server Overview" + } + ] + }, + { + "type": "category", + "label": "Analytics", + "items": ["capabilities/analytics/analytics-overview", "capabilities/analytics/devvit-journeys"], + }, + { + "type": "category", + "label": "Automation & Triggers", + "items": [ + "capabilities/server/scheduler", + "capabilities/server/triggers" + ] + }, + { + "type": "doc", + "label": "HTTP Fetch", + "id": "capabilities/http-fetch" + }, + { + "type": "category", + "label": "In-App Purchases", + "items": [ + "earn-money/payments/payments_overview", + "earn-money/payments/payments_add", + "earn-money/payments/payments_test", + "earn-money/payments/payments_publish", + "earn-money/payments/payments_manage", + "earn-money/payments/support_this_app" + ] + }, + { + "type": "category", + "label": "Notifications", + "items": [ + "capabilities/notifications/notifications-overview", + "capabilities/notifications/pn-best-practices", + "capabilities/notifications/adding-streaks"], + }, + { + "type": "category", + "label": "Post Creation & Navigation", + "items": [ + "capabilities/creating_custom_post", + "capabilities/client/navigation", + "capabilities/client/toasts", + "capabilities/client/menu-actions", + "capabilities/server/settings-and-secrets", + "capabilities/server/launch_screen_and_entry_points/view_modes_entry_points", + { + "type": "category", + "label": "Launch Screen", + "collapsed": true, + "items": [ + "capabilities/server/launch_screen_and_entry_points/launch_overview", + "capabilities/server/launch_screen_and_entry_points/view_modes_entry_points", + "capabilities/server/launch_screen_and_entry_points/launch_screen_customization" + ] + } + ] + }, + { + "type": "category", + "label": "Realtime Apps", + "items": [ + "capabilities/realtime/overview" + ] + }, + { + "type": "category", + "label": "Reddit API", + "items": [ + { + "type": "doc", + "label": "Reddit API Overview", + "id": "capabilities/server/reddit-api" + }, + { + "type": "doc", + "label": "Reddit API Client", + "id": "api/redditapi/RedditAPIClient/classes/RedditAPIClient" + }, + { + "type": "category", + "label": "Classes", + "items": [ + { + "type": "autogenerated", + "dirName": "api/redditapi/models/classes" + } + ] + }, + { + "type": "category", + "label": "Interfaces", + "items": [ + { + "type": "autogenerated", + "dirName": "api/redditapi/models/interfaces" + } + ] + } + ] + }, + { + "type": "category", + "label": "Saving Data", + "items": [ + "capabilities/server/redis", + "capabilities/server/cache-helper", + "capabilities/server/post-data" + ] + }, + { + "type": "category", + "label": "User Input", + "items": [ + "capabilities/server/media-uploads", + "capabilities/client/forms", + "capabilities/server/userActions" + ] + }, + { + "type": "html", + "value": "
    ", + "className": "sidebar-divider", + "defaultStyle": false + }, + { + "type": "html", + "value": "Guides", + "className": "sidebar-section-header", + "defaultStyle": false + }, + { + "type": "category", + "label": "Best Practices", + "items": [ + "guides/best-practices/community_games", + "guides/best-practices/mod_resources", + "capabilities/server/text_fallback" + ] + }, + { + "type": "category", + "label": "Development Tools", + "items": [ + "guides/tools/devvit_cli", + "guides/tools/devvit_test", + "guides/tools/logs", + "guides/tools/playtest", + "guides/tools/ui_simulator", + "guides/tools/multiple_developers", + "guides/tools/vite" + ] + }, + { + "type": "category", + "label": "Migration Guides", + "items": [ + "guides/migrate/devvit-singleton", + "guides/migrate/devvit-web-experimental", + "guides/migrate/inline-web-view", + "guides/migrate/public-api" + ] + }, + { + "type": "doc", + "label": "Building for Logged Out Players", + "id": "guides/logged-out-users", + }, + { + "type": "doc", + "label": "Template Library", + "id": "examples/template-library" + }, + { + "type": "doc", + "label": "Using AI Tools", + "id": "guides/ai/ai" + }, + { + "type": "doc", + "label": "FAQ", + "id": "guides/faq" + }, + { + "type": "html", + "value": "
    ", + "className": "sidebar-divider", + "defaultStyle": false + }, + { + "type": "doc", + "label": "Changelog", + "id": "changelog" + }, + { + "type": "doc", + "label": "Devvit Rules", + "id": "devvit_rules" + }, + { + "type": "link", + "label": "Discord", + "href": "https://developers.reddit.com/discord", + "className": "sidebar-icon-link discord-link" + }, + { + "type": "link", + "label": "r/Devvit", + "href": "https://www.reddit.com/r/Devvit", + "className": "sidebar-icon-link subreddit-link" + } + ] +} diff --git a/versions.json b/versions.json index f33a0297..b4159cd3 100644 --- a/versions.json +++ b/versions.json @@ -1,4 +1,5 @@ [ + "0.13", "0.12", "0.11" ] diff --git a/yarn.lock b/yarn.lock index ae451dd0..794418e9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3256,22 +3256,6 @@ dependencies: "@types/ms" "*" -"@types/eslint-scope@^3.7.7": - version "3.7.7" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" - integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584" - integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - "@types/estree-jsx@^1.0.0": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/estree-jsx/-/estree-jsx-1.0.5.tgz#858a88ea20f34fe65111f005a689fa1ebf70dc18" @@ -3381,7 +3365,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@^7.0.15", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -3409,11 +3393,11 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@*": - version "25.6.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-25.6.2.tgz#8c491201373690e4ef2a2ffed0dfb510a5830b92" - integrity sha512-sokuT28dxf9JT5Kady1fsXOvI4HVpjZa95NKT5y9PNTIrs2AsobR4GFAA90ZG8M+nxVRLysCXsVj6eGC7Vbrlw== + version "25.9.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.9.1.tgz#3bda556db500ae4319c08e7fc9ab94f19013ba0b" + integrity sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg== dependencies: - undici-types "~7.19.0" + undici-types ">=7.24.0 <7.24.7" "@types/node@^17.0.5": version "17.0.45" @@ -3462,9 +3446,9 @@ "@types/react" "*" "@types/react@*", "@types/react@^19.0.0": - version "19.2.14" - resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.14.tgz#39604929b5e3957e3a6fa0001dafb17c7af70bad" - integrity sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w== + version "19.2.15" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.15.tgz#9e2c6a4251a290f5c525c3143caa872fa6e01e0d" + integrity sha512-eRwcGNHve+E8qtEQSSRl6urh+rFop4v8gm6O8rGv25CodbvFdLjA1vVQ1KkiFE0w0UPOnb8tDiFKL5lp0rtY5Q== dependencies: csstype "^3.2.2" @@ -3986,7 +3970,7 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== -body-parser@~1.20.3: +body-parser@~1.20.5: version "1.20.5" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.5.tgz#303c8c34423d1d6fa799bc764e93c1e4dc6ebf64" integrity sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA== @@ -4005,9 +3989,9 @@ body-parser@~1.20.3: unpipe "~1.0.0" bonjour-service@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.3.0.tgz#80d867430b5a0da64e82a8047fc1e355bdb71722" - integrity sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA== + version "1.4.0" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.4.0.tgz#6d7cfbb5a8f630b41bb44dcd73585eaedf6ef93c" + integrity sha512-fGQtj1qdR9vIKjFiWPQd52qIqwjaYqhcI40JEiDuvlZ86E7ZBPBwY9fPgHy9r2rYGIjiRfctNPYz6OQU73ww2w== dependencies: fast-deep-equal "^3.1.3" multicast-dns "^7.2.5" @@ -4193,9 +4177,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001782, caniuse-lite@^1.0.30001787: - version "1.0.30001792" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001792.tgz#ca8bb9be244835a335e2018272ce7223691873c5" - integrity sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw== + version "1.0.30001793" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz#238887ddf5fcfc8c36d872394d0a78a517312a72" + integrity sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA== ccount@^2.0.0: version "2.0.1" @@ -4699,9 +4683,9 @@ css-what@^6.0.1, css-what@^6.1.0: integrity sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA== cssdb@^8.6.0: - version "8.8.0" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-8.8.0.tgz#b5a87e014d29d27924bd07d1f951206eb42b794f" - integrity sha512-QbLeyz2Bgso1iRlh7IpWk6OKa3lLNGXsujVjDMPl9rOZpxKeiG69icLpbLCFxeURwmcdIfZqQyhlooKJYM4f8Q== + version "8.9.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-8.9.0.tgz#e24d44824895957a4a5c75ba72c910f94e7aed77" + integrity sha512-J8jOU/hLjaXcO1LldOLraJSQpfLXRKof0I7mtbRyOy2AAXgqst0x9rlgi2qXeD6d0ou3ZLqcPAMqYVbpCbrxEw== cssesc@^3.0.0: version "3.0.0" @@ -5002,9 +4986,9 @@ domhandler@^5.0.2, domhandler@^5.0.3: domelementtype "^2.3.0" dompurify@^3.0.6: - version "3.4.2" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.4.2.tgz#f0ff81be682c485505097ba8195a058d8f575218" - integrity sha512-lHeS9SA/IKeIFFyYciHBr2n0v1VMPlSj843HdLOwjb2OxNwdq9Xykxqhk+FE42MzAdHvInbAolSE4mhahPpjXA== + version "3.4.5" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.4.5.tgz#bedc7d30a6007ae9a8937b952be6adb76a28e871" + integrity sha512-OrwIBKsdNSVEeubdJ1HBv/wNENRM9ytAVCv7YXt//A3vPdVMNuACRqK9mXCGCBW2ln7BT/A4X0jXHo2Gu89miA== optionalDependencies: "@types/trusted-types" "^2.0.7" @@ -5066,9 +5050,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.5.328: - version "1.5.352" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.352.tgz#0b57303cf654d7e4353edf01abe1ca55e5136063" - integrity sha512-9wHk8x6dyuimoe18EdiDPWKExNdxYqo4fn4FwOVVper6RxT3cmpBwBkWWfSOCYJjQdIco/nPhJhNLmn4Ufg1Yg== + version "1.5.361" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.361.tgz#b993bc7b34ea83f348aa1787a608ecf12e39b909" + integrity sha512-Q6Hts7N9FnJc5LeGRINFvLhCI9xZmNtTDe5ZbcVezQz7cU4a8Aua3GH1b8J2XY8Al9PF+OCwYqhgsOOheMdvkA== emoji-regex@^8.0.0: version "8.0.0" @@ -5108,10 +5092,10 @@ encoding-sniffer@^0.2.1: iconv-lite "^0.6.3" whatwg-encoding "^3.1.1" -enhanced-resolve@^5.20.0: - version "5.21.2" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.21.2.tgz#ddbedd0c7f14c3c51adfc24f5a14d76a83395442" - integrity sha512-xe9vQb5kReirPUxgQrXA3ihgbCqssmTiM7cOZ+Gzu+VeGWgpV98lLZvp0dl4yriyAePcewxGUs9UpKD8PET9KQ== +enhanced-resolve@^5.21.4: + version "5.22.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.22.0.tgz#43c5caad657c6fce58fc6142e5ca6fa8528ed460" + integrity sha512-xYcDWrpELkFzz9SpZ3PlI6Eu6eD93Yf0WLDRxikGhWJ3MAir2SNZTIVCVZqZ/NUyx8AdMc2gT9C0gPiw18kG+A== dependencies: graceful-fs "^4.2.4" tapable "^2.3.3" @@ -5153,15 +5137,15 @@ es-errors@^1.3.0: resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -es-module-lexer@^2.0.0: +es-module-lexer@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.1.0.tgz#1dfcbb5ea3bbfb63f28e1fc3676c3676d1c9624c" integrity sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ== es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" - integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + version "1.1.2" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.2.tgz#a2d0b373205724dfa525d23b0c3e1b1ca582c99b" + integrity sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw== dependencies: es-errors "^1.3.0" @@ -5360,13 +5344,13 @@ execa@^5.1.1: strip-final-newline "^2.0.0" express@^4.22.1: - version "4.22.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.22.1.tgz#1de23a09745a4fffdb39247b344bb5eaff382069" - integrity sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g== + version "4.22.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.22.2.tgz#c17ae0981e5efc24b22272f0e041c4662503b700" + integrity sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "~1.20.3" + body-parser "~1.20.5" content-disposition "~0.5.4" content-type "~1.0.4" cookie "~0.7.1" @@ -5385,7 +5369,7 @@ express@^4.22.1: parseurl "~1.3.3" path-to-regexp "~0.1.12" proxy-addr "~2.0.7" - qs "~6.14.0" + qs "~6.15.1" range-parser "~1.2.1" safe-buffer "5.2.1" send "~0.19.0" @@ -5439,7 +5423,7 @@ fast-uri@^3.0.1: resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.2.tgz#8af3d4fc9d3e71b11572cc2673b514a7d1a8c8ec" integrity sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ== -fast-xml-builder@^1.1.7: +fast-xml-builder@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz#abd2363145a7625d9789ad96da375fabe3cff28c" integrity sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q== @@ -5448,14 +5432,15 @@ fast-xml-builder@^1.1.7: xml-naming "^0.1.0" fast-xml-parser@^5.5.1: - version "5.7.3" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.7.3.tgz#309b04b08d835defc62ab657a0bb340c0e0fbe6a" - integrity sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg== + version "5.8.0" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.8.0.tgz#64d71f0f8d4bf23621dffd762aef7e98c1884fc1" + integrity sha512-6bIM7fsJxeo3uXv7OncQYsBAMPJ7V16Slahl/6M98C/i2q+vB1+4a0MtrvYwDFEUrwDSbAmeLDRXsOBwrL7yAg== dependencies: "@nodable/entities" "^2.1.0" - fast-xml-builder "^1.1.7" + fast-xml-builder "^1.2.0" path-expression-matcher "^1.5.0" - strnum "^2.2.3" + strnum "^2.3.0" + xml-naming "^0.1.0" fastq@^1.6.0: version "1.20.1" @@ -6686,7 +6671,7 @@ linkify-it@^5.0.0: dependencies: uc.micro "^2.0.0" -loader-runner@^4.3.1: +loader-runner@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.2.tgz#9913d3a15971f8f635915e601fb5c9d495d918e9" integrity sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w== @@ -6769,9 +6754,9 @@ lru-cache@^5.1.1: yallist "^3.0.2" lunr-languages@^1.4.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/lunr-languages/-/lunr-languages-1.17.0.tgz#e1e5969777b105aea81591ee3dde9a9c980b017a" - integrity sha512-ClGZPfWoxdFgTmqa1uC12cBJJzkMiJGtQhR9J3dQLwnsO5efcTXGtTj7MQZCdjYL9jAL7J1pWQr3hksAn2zJ9Q== + version "1.20.0" + resolved "https://registry.yarnpkg.com/lunr-languages/-/lunr-languages-1.20.0.tgz#d145555fdeb546300b1394860d768487b8e0e182" + integrity sha512-3LVgE7ekWXt04NBci/hjm+NXJxXZeRXuyClL0kA0HONyBOjxhP3ZQkuWIM4Ok3pbeptUW/rj3XcJcJuJVPwPYA== lunr@^2.3.9: version "2.3.9" @@ -7659,7 +7644,7 @@ multicast-dns@^7.2.5: dns-packet "^5.2.2" thunky "^1.0.2" -nanoid@^3.3.11: +nanoid@^3.3.12: version "3.3.12" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.12.tgz#ab3d912e217a6d0a514f00a72a16543a28982c05" integrity sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ== @@ -7719,9 +7704,9 @@ node-readfiles@^0.2.0: es6-promise "^3.2.1" node-releases@^2.0.36: - version "2.0.38" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.38.tgz#791569b9e4424a044e12c3abfad418ed83ce9947" - integrity sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw== + version "2.0.46" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.46.tgz#d188a129a83f5e03a101aacb58f260f2ee8faaa1" + integrity sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -8705,11 +8690,11 @@ postcss-zindex@^6.0.2: integrity sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg== postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.33, postcss@^8.4.45, postcss@^8.5.4: - version "8.5.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.14.tgz#a66c2d7808fadf69ebb5b84a03f8bafd76c4919c" - integrity sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg== + version "8.5.15" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.15.tgz#d1eaf677a324e9ec02196da2d3fecf4a0b9a735c" + integrity sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A== dependencies: - nanoid "^3.3.11" + nanoid "^3.3.12" picocolors "^1.1.1" source-map-js "^1.2.1" @@ -8818,17 +8803,10 @@ pvutils@^1.1.3, pvutils@^1.1.5: resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.5.tgz#84b0dea4a5d670249aa9800511804ee0b7c2809c" integrity sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA== -qs@~6.14.0: - version "6.14.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.2.tgz#b5634cf9d9ad9898e31fba3504e866e8efb6798c" - integrity sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q== - dependencies: - side-channel "^1.1.0" - qs@~6.15.1: - version "6.15.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.15.1.tgz#bdb55aed06bfac257a90c44a446a73fba5575c8f" - integrity sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg== + version "6.15.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.15.2.tgz#fd55426d710403ddccc45e0f9eab16db7727ece9" + integrity sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw== dependencies: side-channel "^1.1.0" @@ -9425,9 +9403,9 @@ semver@^6.3.1: integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: - version "7.7.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" - integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== + version "7.8.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.1.tgz#bf4970b5e70fda0686363cc18bfe8805d5ed957e" + integrity sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg== send@~0.19.0, send@~0.19.1: version "0.19.2" @@ -9533,9 +9511,9 @@ shebang-regex@^3.0.0: integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.3.tgz#55e40ef33cf5c689902353a3d8cd1a6725f08b4b" - integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw== + version "1.8.4" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.4.tgz#2edd9a4dcefc96649e2e2cb12f637b1f1d92a190" + integrity sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ== should-equal@^2.0.0: version "2.0.0" @@ -9879,7 +9857,7 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== -strnum@^2.2.3: +strnum@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/strnum/-/strnum-2.3.0.tgz#81bfbfef53db8c3217ea62a98c026886ec4a2761" integrity sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q== @@ -9899,9 +9877,9 @@ style-to-object@1.0.14: inline-style-parser "0.2.7" styled-components@^6.1.11, styled-components@^6.1.13: - version "6.4.1" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-6.4.1.tgz#5b44c0d9140a28458eba931f53253613a99ebe30" - integrity sha512-ADu2dF53esUzzM4I0ewxhxFtsDd6v4V6dNkg3vG0iFKhnt06sJneTZnRvujAosZwW0XD58IKgGMQoqri4wHRqg== + version "6.4.2" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-6.4.2.tgz#2e92f7b8a1e49f5791c80c864eddf215dd1046c6" + integrity sha512-xZBhBJsMtGqb+aKcwKgaT+BtuFums9VynX2JRvXJGTx5UfZzN12rk5r4nVdhXYvRw+hE7yiYxVrOqJZaK2+Txg== dependencies: "@emotion/is-prop-valid" "1.4.0" css-to-react-native "3.2.0" @@ -9987,10 +9965,10 @@ tapable@^2.0.0, tapable@^2.2.1, tapable@^2.3.0, tapable@^2.3.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.3.tgz#5da7c9992c46038221267985ab28421a8879f160" integrity sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A== -terser-webpack-plugin@^5.3.17, terser-webpack-plugin@^5.3.9: - version "5.5.0" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.5.0.tgz#d92b8e2c892dd09c683c38120394267e8d8660ef" - integrity sha512-UYhptBwhWvfIjKd/UuFo6D8uq9xpGLDK+z8EDsj/zWhrTaH34cKEbrkMKfV5YWqGBvAYA3tlzZbs2R+qYrbQJA== +terser-webpack-plugin@^5.3.9, terser-webpack-plugin@^5.5.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.6.0.tgz#8e7caad248183ab9e91ff08a83b0fc9f0439c3c3" + integrity sha512-Eum+5ajkaOhf5KbM26osvv21kLD7BaGqQ1UA4Ami4arYwylmGUQTgHFpHDdmJod1q4QXa66p0to/FBKID+J1vA== dependencies: "@jridgewell/trace-mapping" "^0.3.25" jest-worker "^27.4.5" @@ -9998,9 +9976,9 @@ terser-webpack-plugin@^5.3.17, terser-webpack-plugin@^5.3.9: terser "^5.31.1" terser@^5.10.0, terser@^5.15.1, terser@^5.31.1: - version "5.47.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.47.1.tgz#99b298e51bc41214304847de1429ec92fd1f7648" - integrity sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw== + version "5.48.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.48.0.tgz#8b391171cfbb7ac4a88f9f04ba1cfabc54f643db" + integrity sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.15.0" @@ -10137,10 +10115,10 @@ uc.micro@^2.0.0, uc.micro@^2.1.0: resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== -undici-types@~7.19.0: - version "7.19.2" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.19.2.tgz#1b67fc26d0f157a0cba3a58a5b5c1e2276b8ba2a" - integrity sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg== +"undici-types@>=7.24.0 <7.24.7": + version "7.24.6" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.24.6.tgz#61275b485d7fd4e9d269c7cf04ec2873c9cc0f91" + integrity sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg== undici@^7.19.0: version "7.25.0" @@ -10475,17 +10453,16 @@ webpack-merge@^6.0.1: flat "^5.0.2" wildcard "^2.0.1" -webpack-sources@^3.3.4: - version "3.4.1" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.4.1.tgz#009d110999ebd9fb3a6fa8d32eec6f84d940e65d" - integrity sha512-eACpxRN02yaawnt+uUNIF7Qje6A9zArxBbcAJjK1PK3S9Ycg5jIuJ8pW4q8EMnwNZCEGltcjkRx1QzOxOkKD8A== +webpack-sources@^3.4.1: + version "3.5.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.5.0.tgz#87bf7f5801a4e985b1f1c92b64b9620a02f76d08" + integrity sha512-HPuy+uuoTCaaoEoI1LQ3JN9+vrPBvEesnnX1jADHy728cHSMlq4wUc4afYqahq2B1mhQVZxCXOkNTnXltr+2vQ== webpack@^5.88.1, webpack@^5.95.0, webpack@^5.97.1: - version "5.106.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.106.2.tgz#ca8174b4fd80f055cc5a45fcc5577d6db76c8ac5" - integrity sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA== + version "5.107.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.107.1.tgz#01ad63131b7c413f607cc00a8136f467c1f10af0" + integrity sha512-mvdIWxj/H6QsfgDdH9djne3a5dYcmEmtsXGESkypaGN5jXjF/b+9KDlmTDQ2TKlFUeA2fI9Y65kihD30JOdB+Q== dependencies: - "@types/eslint-scope" "^3.7.7" "@types/estree" "^1.0.8" "@types/json-schema" "^7.0.15" "@webassemblyjs/ast" "^1.14.1" @@ -10495,20 +10472,20 @@ webpack@^5.88.1, webpack@^5.95.0, webpack@^5.97.1: acorn-import-phases "^1.0.3" browserslist "^4.28.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.20.0" - es-module-lexer "^2.0.0" + enhanced-resolve "^5.21.4" + es-module-lexer "^2.1.0" eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" graceful-fs "^4.2.11" - loader-runner "^4.3.1" + loader-runner "^4.3.2" mime-db "^1.54.0" neo-async "^2.6.2" schema-utils "^4.3.3" tapable "^2.3.0" - terser-webpack-plugin "^5.3.17" + terser-webpack-plugin "^5.5.0" watchpack "^2.5.1" - webpack-sources "^3.3.4" + webpack-sources "^3.4.1" webpackbar@^7.0.0: version "7.0.0" @@ -10616,9 +10593,9 @@ ws@^7.3.1: integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== ws@^8.18.0: - version "8.20.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.20.0.tgz#4cd9532358eba60bc863aad1623dfb045a4d4af8" - integrity sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA== + version "8.20.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.20.1.tgz#91a9ae2b312ccf98e0a85ec499b48cef45ab0ddb" + integrity sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w== wsl-utils@^0.1.0: version "0.1.0" @@ -10665,9 +10642,9 @@ yaml@^1.10.0: integrity sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA== "yaml@^2.7.0 ": - version "2.8.4" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.4.tgz#4b5f411dd25f9544914d8673d4da7f29248e5e2e" - integrity sha512-ml/JPOj9fOQK8RNnWojA67GbZ0ApXAUlN2UQclwv2eVgTgn7O9gg9o7paZWKMp4g0H3nTLtS9LVzhkpOFIKzog== + version "2.9.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.9.0.tgz#78274afd93598a1dfdd6130df6a566defcbf9aa4" + integrity sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA== yargs-parser@^21.1.1: version "21.1.1"