founder-schema 0.14.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -0
- package/dist/core/errors.d.ts +9 -1
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +19 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/limits.d.ts +11 -0
- package/dist/core/limits.d.ts.map +1 -1
- package/dist/core/limits.js +18 -0
- package/dist/core/limits.js.map +1 -1
- package/dist/core/responses.d.ts +8 -0
- package/dist/core/responses.d.ts.map +1 -1
- package/dist/domains/waitlist/waitlist.d.ts +68 -0
- package/dist/domains/waitlist/waitlist.d.ts.map +1 -0
- package/dist/domains/waitlist/waitlist.js +64 -0
- package/dist/domains/waitlist/waitlist.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -99,6 +99,37 @@ instance; this package must not bring its own.
|
|
|
99
99
|
|
|
100
100
|
---
|
|
101
101
|
|
|
102
|
+
## Breaking in 0.15.0: the launch waitlist (2026-10-16)
|
|
103
|
+
|
|
104
|
+
Until the launch instant `FC_LAUNCH_AT` (a server-only env on BOTH the backend
|
|
105
|
+
and the web; AWS main only: Tuesday 20 October 2026, 12:00 noon IST), joining is
|
|
106
|
+
signing in, and the first `FOUNDING_PLACES` places get the membership free
|
|
107
|
+
(0.14.0). Unset means launched, so nothing changes where it is not set. Design:
|
|
108
|
+
`founder-circle-backend/docs/waitlist.md`. No export is removed.
|
|
109
|
+
|
|
110
|
+
- **New:** `src/domains/waitlist/waitlist.ts`, in route order:
|
|
111
|
+
`waitlistStatusSchema` for `GET /waitlist` (public: `waiting`, `launchAt`,
|
|
112
|
+
`foundingPlaces`, `foundingPlacesLeft`); `myWaitlistSchema` for
|
|
113
|
+
`GET /waitlist/me` (`place` or null, `canJoin`, `refusal`: `closed` |
|
|
114
|
+
`staff` | `place_used` or null); `waitlistPlaceSchema` for
|
|
115
|
+
`POST /waitlist/join` (`place`, `joinedAt`, `founding`).
|
|
116
|
+
- **New error codes, so a client's exhaustive word map must add them:**
|
|
117
|
+
`NOT_LAUNCHED` (403; every write but the waitlist's few, while waiting, for
|
|
118
|
+
everyone, staff included), `WAITLIST_CLOSED` (409; joining after the launch),
|
|
119
|
+
`WAITLIST_STAFF` (403; staff never take a place), `WAITLIST_PLACE_USED` (409;
|
|
120
|
+
one place per inbox and per sign-in, ever: addresses reaching one inbox
|
|
121
|
+
(`x+1@`, Gmail's dots) share one, and so does a deleted account's sign-in).
|
|
122
|
+
- **New:** `refundWindowEndsAt(paidAt)`: the refund window's last moment, the
|
|
123
|
+
end of the 7th day after the paying day in India (the server and the staff
|
|
124
|
+
screen share it).
|
|
125
|
+
- **Breaking on main while waiting:** a 0.14.0 web cannot parse `NOT_LAUNCHED`.
|
|
126
|
+
Deploy the backend and the web together, both on 0.15.0, with `FC_LAUNCH_AT`
|
|
127
|
+
ALREADY in both env files: started without it, main runs launched (fully
|
|
128
|
+
open) until it is set.
|
|
129
|
+
- **Backend, at deploy:** new collections `waitlist_entries` (unique
|
|
130
|
+
`waitlist_by_user`, `waitlist_by_place`) and `waitlist_counters`; run
|
|
131
|
+
`sync-indexes` (the dry run must say 0 differing).
|
|
132
|
+
|
|
102
133
|
## Changes in 0.14.0: founding places come from the launch waitlist (2026-10-16)
|
|
103
134
|
|
|
104
135
|
The user's rule: the first `FOUNDING_PLACES` (100) people to join the launch
|
package/dist/core/errors.d.ts
CHANGED
|
@@ -27,7 +27,7 @@ import { z } from 'zod';
|
|
|
27
27
|
* As a tuple, the way `GENDER_VALUES` is, so a consumer can iterate it (a
|
|
28
28
|
* translation-coverage test does exactly that) and TypeScript keeps the union.
|
|
29
29
|
*/
|
|
30
|
-
export declare const API_ERROR_CODE_VALUES: readonly ["INTERNAL_ERROR", "VALIDATION_ERROR", "NOT_FOUND", "CONFLICT", "RATE_LIMITED", "SERVICE_UNAVAILABLE", "UNAUTHORIZED", "INVALID_TOKEN", "TOKEN_EXPIRED", "SESSION_INVALIDATED", "FORBIDDEN", "ONBOARDING_INCOMPLETE", "ALREADY_ONBOARDED", "UNDER_AGE", "UPLOAD_NOT_ATTACHABLE", "UPLOAD_TOO_LARGE", "UPLOAD_WRONG_TYPE", "UPLOAD_NOT_RECEIVED", "UPLOAD_PROCESSING", "UPLOAD_UNREADABLE", "UPLOAD_TOO_MANY_PIXELS", "UPLOAD_LIMIT_REACHED", "UPLOAD_IN_USE", "EDIT_WINDOW_CLOSED", "POLL_NOT_EDITABLE", "POLL_CLOSED", "POLL_CHOICE_INVALID", "REPLY_TOO_DEEP", "CANNOT_REPORT_OWN", "FEEDBACK_NOT_MARKABLE", "CANNOT_REPOST_OWN", "CANNOT_REPOST_A_REPOST", "ALREADY_REPOSTED", "PRODUCT_LIMIT_REACHED", "PRODUCT_NOT_LISTABLE", "PRODUCT_ARCHIVED", "PRODUCT_NOT_YOURS", "PRODUCT_ALREADY_MEMBER", "PRODUCT_MEMBER_NOT_INVITABLE", "PRODUCT_NOT_ON_TEAM", "PRODUCT_OWNER_MUST_TRANSFER", "PRODUCT_OWN_TEAM", "TESTER_NOT_ELIGIBLE", "PRODUCT_PAUSED", "MEMBERSHIP_REQUIRED", "PLAN_REQUIRED", "ALREADY_MEMBER", "MEMBERSHIP_NOT_REVOCABLE", "COUPON_INVALID", "COUPON_NOT_APPLICABLE", "COUPON_EXHAUSTED", "COUPON_ALREADY_USED", "COUPON_CODE_TAKEN", "USERNAME_TAKEN", "COUPON_FOUNDING_EXISTS", "COUPON_FOUNDING_RETIRED", "PLAN_UPGRADE_INSTEAD", "PLAN_NOTHING_TO_UPGRADE", "PLAN_TERM_LIMIT", "PLAN_CHANGED", "PAYMENTS_UNAVAILABLE", "PAYMENT_NOT_VERIFIED", "ORDER_EXPIRED", "REFUND_WINDOW_CLOSED", "PAYMENT_NOT_REFUNDABLE", "REFUND_FAILED", "MESSAGE_ALLOWANCE_EXHAUSTED", "MESSAGE_ALLOWANCE_UNCONFIRMED", "MESSAGE_NOT_ACCEPTED", "COMMUNITY_JOIN_REQUIRED", "COMMUNITY_NAME_TAKEN", "COMMUNITY_ALREADY_MEMBER", "COMMUNITY_MEMBER_NOT_INVITABLE", "COMMUNITY_MEMBER_BANNED", "COMMUNITY_INVITE_NOT_NEEDED", "COMMUNITY_LAST_ADMIN", "COMMUNITY_ARCHIVED", "COMMUNITY_EXPOSURE_UNCONFIRMED", "COMMUNITY_PINS_FULL", "COMMUNITY_ANNOUNCE_TOO_SOON", "COMMUNITY_CONTENT_NOT_REPOSTABLE", "COMMUNITY_SUGGESTIONS_FULL", "COMMUNITY_SUGGESTION_DECIDED", "REVIEW_EXISTS", "REVIEW_OWN_VOTE", "MODERATION_ACTION_INVALID", "CHAT_WITH_SELF", "ACCOUNT_SUSPENDED", "ROLE_NOT_HELD", "MPIN_NOT_SET", "MPIN_ALREADY_SET", "MPIN_INCORRECT", "MPIN_LOCKED", "CANNOT_CHANGE_OWN_ROLES", "ROLE_NOT_GRANTABLE", "CANNOT_CHANGE_OWN_CAPABILITIES", "CAPABILITY_NOT_GRANTABLE", "TICKET_FULL", "SAVED_REPLIES_FULL"];
|
|
30
|
+
export declare const API_ERROR_CODE_VALUES: readonly ["INTERNAL_ERROR", "VALIDATION_ERROR", "NOT_FOUND", "CONFLICT", "RATE_LIMITED", "SERVICE_UNAVAILABLE", "UNAUTHORIZED", "INVALID_TOKEN", "TOKEN_EXPIRED", "SESSION_INVALIDATED", "FORBIDDEN", "ONBOARDING_INCOMPLETE", "ALREADY_ONBOARDED", "UNDER_AGE", "UPLOAD_NOT_ATTACHABLE", "UPLOAD_TOO_LARGE", "UPLOAD_WRONG_TYPE", "UPLOAD_NOT_RECEIVED", "UPLOAD_PROCESSING", "UPLOAD_UNREADABLE", "UPLOAD_TOO_MANY_PIXELS", "UPLOAD_LIMIT_REACHED", "UPLOAD_IN_USE", "EDIT_WINDOW_CLOSED", "POLL_NOT_EDITABLE", "POLL_CLOSED", "POLL_CHOICE_INVALID", "REPLY_TOO_DEEP", "CANNOT_REPORT_OWN", "FEEDBACK_NOT_MARKABLE", "CANNOT_REPOST_OWN", "CANNOT_REPOST_A_REPOST", "ALREADY_REPOSTED", "PRODUCT_LIMIT_REACHED", "PRODUCT_NOT_LISTABLE", "PRODUCT_ARCHIVED", "PRODUCT_NOT_YOURS", "PRODUCT_ALREADY_MEMBER", "PRODUCT_MEMBER_NOT_INVITABLE", "PRODUCT_NOT_ON_TEAM", "PRODUCT_OWNER_MUST_TRANSFER", "PRODUCT_OWN_TEAM", "TESTER_NOT_ELIGIBLE", "PRODUCT_PAUSED", "MEMBERSHIP_REQUIRED", "PLAN_REQUIRED", "ALREADY_MEMBER", "MEMBERSHIP_NOT_REVOCABLE", "COUPON_INVALID", "COUPON_NOT_APPLICABLE", "COUPON_EXHAUSTED", "COUPON_ALREADY_USED", "COUPON_CODE_TAKEN", "USERNAME_TAKEN", "COUPON_FOUNDING_EXISTS", "COUPON_FOUNDING_RETIRED", "PLAN_UPGRADE_INSTEAD", "PLAN_NOTHING_TO_UPGRADE", "PLAN_TERM_LIMIT", "PLAN_CHANGED", "PAYMENTS_UNAVAILABLE", "PAYMENT_NOT_VERIFIED", "ORDER_EXPIRED", "REFUND_WINDOW_CLOSED", "PAYMENT_NOT_REFUNDABLE", "REFUND_FAILED", "MESSAGE_ALLOWANCE_EXHAUSTED", "MESSAGE_ALLOWANCE_UNCONFIRMED", "MESSAGE_NOT_ACCEPTED", "COMMUNITY_JOIN_REQUIRED", "COMMUNITY_NAME_TAKEN", "COMMUNITY_ALREADY_MEMBER", "COMMUNITY_MEMBER_NOT_INVITABLE", "COMMUNITY_MEMBER_BANNED", "COMMUNITY_INVITE_NOT_NEEDED", "COMMUNITY_LAST_ADMIN", "COMMUNITY_ARCHIVED", "COMMUNITY_EXPOSURE_UNCONFIRMED", "COMMUNITY_PINS_FULL", "COMMUNITY_ANNOUNCE_TOO_SOON", "COMMUNITY_CONTENT_NOT_REPOSTABLE", "COMMUNITY_SUGGESTIONS_FULL", "COMMUNITY_SUGGESTION_DECIDED", "REVIEW_EXISTS", "REVIEW_OWN_VOTE", "MODERATION_ACTION_INVALID", "CHAT_WITH_SELF", "ACCOUNT_SUSPENDED", "ROLE_NOT_HELD", "MPIN_NOT_SET", "MPIN_ALREADY_SET", "MPIN_INCORRECT", "MPIN_LOCKED", "CANNOT_CHANGE_OWN_ROLES", "ROLE_NOT_GRANTABLE", "CANNOT_CHANGE_OWN_CAPABILITIES", "CAPABILITY_NOT_GRANTABLE", "TICKET_FULL", "SAVED_REPLIES_FULL", "NOT_LAUNCHED", "WAITLIST_CLOSED", "WAITLIST_STAFF", "WAITLIST_PLACE_USED"];
|
|
31
31
|
export declare const apiErrorCodeSchema: z.ZodEnum<{
|
|
32
32
|
INTERNAL_ERROR: "INTERNAL_ERROR";
|
|
33
33
|
VALIDATION_ERROR: "VALIDATION_ERROR";
|
|
@@ -128,6 +128,10 @@ export declare const apiErrorCodeSchema: z.ZodEnum<{
|
|
|
128
128
|
CAPABILITY_NOT_GRANTABLE: "CAPABILITY_NOT_GRANTABLE";
|
|
129
129
|
TICKET_FULL: "TICKET_FULL";
|
|
130
130
|
SAVED_REPLIES_FULL: "SAVED_REPLIES_FULL";
|
|
131
|
+
NOT_LAUNCHED: "NOT_LAUNCHED";
|
|
132
|
+
WAITLIST_CLOSED: "WAITLIST_CLOSED";
|
|
133
|
+
WAITLIST_STAFF: "WAITLIST_STAFF";
|
|
134
|
+
WAITLIST_PLACE_USED: "WAITLIST_PLACE_USED";
|
|
131
135
|
}>;
|
|
132
136
|
export type ApiErrorCode = z.infer<typeof apiErrorCodeSchema>;
|
|
133
137
|
/** The same codes by name: `API_ERROR_CODE.POLL_CLOSED`. */
|
|
@@ -231,5 +235,9 @@ export declare const API_ERROR_CODE: {
|
|
|
231
235
|
CAPABILITY_NOT_GRANTABLE: "CAPABILITY_NOT_GRANTABLE";
|
|
232
236
|
TICKET_FULL: "TICKET_FULL";
|
|
233
237
|
SAVED_REPLIES_FULL: "SAVED_REPLIES_FULL";
|
|
238
|
+
NOT_LAUNCHED: "NOT_LAUNCHED";
|
|
239
|
+
WAITLIST_CLOSED: "WAITLIST_CLOSED";
|
|
240
|
+
WAITLIST_STAFF: "WAITLIST_STAFF";
|
|
241
|
+
WAITLIST_PLACE_USED: "WAITLIST_PLACE_USED";
|
|
234
242
|
};
|
|
235
243
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,qBAAqB,8wEA0VxB,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAgC,CAAC;AAChE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,4DAA4D;AAC5D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA0B,CAAC"}
|
package/dist/core/errors.js
CHANGED
|
@@ -340,6 +340,25 @@ export const API_ERROR_CODE_VALUES = [
|
|
|
340
340
|
'TICKET_FULL',
|
|
341
341
|
/** The team keeps `SAVED_REPLIES_MAX` saved replies. Delete one first. */
|
|
342
342
|
'SAVED_REPLIES_FULL',
|
|
343
|
+
// ── Waitlist (0.15.0) ──
|
|
344
|
+
/**
|
|
345
|
+
* Founder Circle has not opened yet (`FC_LAUNCH_AT` is still ahead). Until
|
|
346
|
+
* it does, only joining the waitlist, onboarding and your profile, uploads
|
|
347
|
+
* for it and deleting your account work, for everyone, staff included. 403.
|
|
348
|
+
*/
|
|
349
|
+
'NOT_LAUNCHED',
|
|
350
|
+
/** Joining the waitlist after the launch: it closed then (the user, 2026-10-16). 409. */
|
|
351
|
+
'WAITLIST_CLOSED',
|
|
352
|
+
/** A staff account joining the waitlist: staff never take a place (the user, 2026-10-16). 403. */
|
|
353
|
+
'WAITLIST_STAFF',
|
|
354
|
+
/**
|
|
355
|
+
* Joining when this email's inbox or this sign-in already had a place: one
|
|
356
|
+
* place per inbox (`x+1@`, `x+2@`, Gmail's dots are one inbox) and per
|
|
357
|
+
* sign-in, ever, deleted accounts included, so neither new addresses nor
|
|
358
|
+
* deleting and joining again take the free places one by one (the user,
|
|
359
|
+
* 2026-10-16; the security review, 2026-10-18). 409.
|
|
360
|
+
*/
|
|
361
|
+
'WAITLIST_PLACE_USED',
|
|
343
362
|
];
|
|
344
363
|
export const apiErrorCodeSchema = z.enum(API_ERROR_CODE_VALUES);
|
|
345
364
|
/** The same codes by name: `API_ERROR_CODE.POLL_CLOSED`. */
|
package/dist/core/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * founder-schema — Every error code the API answers with\n *\n * THE CODE IS WHAT A CLIENT ACTS ON; the `message` beside it is English for\n * logs and for a client too old to know the code. A client words each code in\n * the member's language, and a test on the web side asserts every value here\n * has a message in every locale it ships.\n *\n * Before 0.2.0 the backend kept this list to itself, and every domain refusal\n * (a closed poll, a reply to a reply, the edit window) went out as\n * `VALIDATION_ERROR` with an English sentence, so the only way for a client to\n * tell them apart was to match on the wording.\n *\n * WHEN TO USE WHICH:\n * - A request that does not match its schema: `VALIDATION_ERROR`, with every\n * problem in `error.details.issues`.\n * - A well-formed request the current STATE of things refuses: its own code\n * below. These carry no issues; the code says it all.\n *\n * ⚠ Append freely; remove deliberately. A code removed here that an older\n * server still sends fails the client's parse of the error envelope.\n *\n * @module founder-schema/core/errors\n */\n\nimport { z } from 'zod';\n\n/**\n * As a tuple, the way `GENDER_VALUES` is, so a consumer can iterate it (a\n * translation-coverage test does exactly that) and TypeScript keeps the union.\n */\nexport const API_ERROR_CODE_VALUES = [\n // ── Anything ──\n /** A bug or an outage on our side. The message says nothing more on purpose. */\n 'INTERNAL_ERROR',\n /** The request did not match its schema. `details.issues` says where. */\n 'VALIDATION_ERROR',\n /** No such thing, or not one you may see. Deliberately the same answer. */\n 'NOT_FOUND',\n /** Two writes raced for something unique; retrying usually succeeds. */\n 'CONFLICT',\n /** Too many requests from this member or address. Wait, then retry. */\n 'RATE_LIMITED',\n /** Something we depend on (the chat server) is down or not switched on. */\n 'SERVICE_UNAVAILABLE',\n\n // ── Who you are ──\n /** No credential at all. */\n 'UNAUTHORIZED',\n /** A credential that is not ours, or not readable. */\n 'INVALID_TOKEN',\n /** A credential that was ours and has expired. Refresh and retry. */\n 'TOKEN_EXPIRED',\n /** Signed out everywhere, or the account changed. Sign in again. */\n 'SESSION_INVALIDATED',\n /** Signed in, and not allowed to do this. */\n 'FORBIDDEN',\n\n // ── Onboarding ──\n /** Finish onboarding first. The client routes here instead of showing an error. */\n 'ONBOARDING_INCOMPLETE',\n /** Onboarding is already finished; there is nothing to save or finish again. */\n 'ALREADY_ONBOARDED',\n /** Under `MIN_AGE_YEARS`. Refused at the draft and again at finish. */\n 'UNDER_AGE',\n\n // ── Uploads: completing one, and attaching it ──\n /**\n * Not an upload of yours, not processed yet, already attached somewhere, or\n * for the other purpose (an avatar upload on a post). One code for all of\n * them on purpose: telling \"someone else's\" apart from \"does not exist\" would\n * let a caller probe other members' media ids.\n */\n 'UPLOAD_NOT_ATTACHABLE',\n /** Larger than `UPLOAD_MAX_BYTES`. */\n 'UPLOAD_TOO_LARGE',\n /**\n * Not one of the image types this product accepts (by the file's own bytes,\n * whatever its name or declared type), or not an image at all.\n */\n 'UPLOAD_WRONG_TYPE',\n /** Completed before the file reached storage: upload it, then complete. */\n 'UPLOAD_NOT_RECEIVED',\n /**\n * Another request is processing this upload right now (a retry or a double\n * tap). Nothing is wrong: complete again in a moment and it answers with\n * the image. 409.\n */\n 'UPLOAD_PROCESSING',\n /** A JPEG, PNG, WebP or GIF by its bytes that cannot be decoded: truncated or corrupt. */\n 'UPLOAD_UNREADABLE',\n /** More than `MEDIA_MAX_INPUT_PIXELS`; refused before decoding. */\n 'UPLOAD_TOO_MANY_PIXELS',\n /** `MEDIA_PENDING_MAX` uploads are already waiting to be attached. */\n 'UPLOAD_LIMIT_REACHED',\n /** Discarding an upload that is attached: remove it from its post or avatar instead. */\n 'UPLOAD_IN_USE',\n\n // ── The feed ──\n /** The post is older than `EDIT_WINDOW_MS`. */\n 'EDIT_WINDOW_CLOSED',\n /** A poll is never editable: people have already voted on it. */\n 'POLL_NOT_EDITABLE',\n /** The poll has closed, by the server's clock. */\n 'POLL_CLOSED',\n /** No option, several on a single-choice poll, or an option that does not exist. */\n 'POLL_CHOICE_INVALID',\n /** A reply to a reply. One level of nesting only. */\n 'REPLY_TOO_DEEP',\n /** Reporting your own post, poll or comment (or, since 0.6.0, your own product or review). */\n 'CANNOT_REPORT_OWN',\n /**\n * Marking a comment \"this helped\" that is not feedback on your product: the\n * post is not tagged with a product you are on, or the comment is your own\n * team's.\n */\n 'FEEDBACK_NOT_MARKABLE',\n /** Reposting your own post or poll (0.8.0). */\n 'CANNOT_REPOST_OWN',\n /** Reposting a repost (0.8.0): share the original instead. */\n 'CANNOT_REPOST_A_REPOST',\n /** You already have an active repost of this item (0.8.0). Undo it first. 409. */\n 'ALREADY_REPOSTED',\n\n // ── Products ──\n /**\n * Their plan's number of LIVE products is reached (0.12.0: 1 for a member,\n * 5 on Premium, unlimited on Business; was `PRODUCTS_OWNED_MAX` for\n * everyone). Creating a product, making a paused one live, or being handed\n * one. `details.limit`. Pause one, or upgrade.\n */\n 'PRODUCT_LIMIT_REACHED',\n /**\n * Listing a product that is not ready for Discover, or removing what keeps a\n * listed one ready. `details.missing`: some of `logo`, `tagline`, `screenshot`.\n */\n 'PRODUCT_NOT_LISTABLE',\n /**\n * The product is archived and frozen until its owner restores it: no new\n * posts about it, reviews, upvotes, replies, helpful marks, testers or\n * invitations.\n */\n 'PRODUCT_ARCHIVED',\n /** Tagging a post with, or acting for, a product you are not on the team of. */\n 'PRODUCT_NOT_YOURS',\n /** Inviting someone who is already on the team or already invited. */\n 'PRODUCT_ALREADY_MEMBER',\n /**\n * Inviting someone who cannot join a team: not finished onboarding, paused,\n * suspended or deleted. One code for all four, so it reveals none of them.\n */\n 'PRODUCT_MEMBER_NOT_INVITABLE',\n /** Handing over to, or re-roling, someone who is not on the team (or invited, for a role). */\n 'PRODUCT_NOT_ON_TEAM',\n /**\n * The owner leaving, being removed, or having their role changed. Ownership\n * moves only by handing the product to someone first.\n */\n 'PRODUCT_OWNER_MUST_TRANSFER',\n /** Upvoting, reviewing or confirming yourself as a tester of your own team's product. */\n 'PRODUCT_OWN_TEAM',\n /** Confirming as a tester someone who has given this product no feedback. */\n 'TESTER_NOT_ELIGIBLE',\n /**\n * The product is paused (0.12.0): its owner's plan has fewer live places\n * than they own products. Only its team sees it; nothing new is tagged with\n * it until its owner makes it live again.\n */\n 'PRODUCT_PAUSED',\n\n // ── Membership and plans (0.12.0) ──\n /**\n * Taking part needs a membership: a viewer posting, commenting, reacting,\n * voting, saving, joining, chatting or listing a product. 403. Also the\n * reason on the refusing rule, so the web offers the membership.\n */\n 'MEMBERSHIP_REQUIRED',\n /**\n * Starting a conversation with someone you do not know needs Premium or\n * Business. 403. Also the reason on the refusing rule.\n */\n 'PLAN_REQUIRED',\n /** Buying or claiming a membership while holding one. 409. */\n 'ALREADY_MEMBER',\n /**\n * Revoking a membership staff may not revoke: a paid one (refund the\n * payment instead) or a staff member's, which comes with the role. 409.\n */\n 'MEMBERSHIP_NOT_REVOCABLE',\n /** No such coupon, or it is switched off, not started or over. One code for all, on purpose. */\n 'COUPON_INVALID',\n /** A real coupon that does not apply to what is being bought (a membership code on a plan). */\n 'COUPON_NOT_APPLICABLE',\n /** Every redemption of the coupon is taken. 409. */\n 'COUPON_EXHAUSTED',\n /** This account already used the coupon. 409. */\n 'COUPON_ALREADY_USED',\n /** Staff creating a coupon whose code another coupon has (case ignored). 409. */\n 'COUPON_CODE_TAKEN',\n /** A member choosing a username someone else holds (0.13.0). 409. */\n 'USERNAME_TAKEN',\n /**\n * Staff creating a second FOUNDING coupon (0.13.0): founding numbers count\n * up on the one founding coupon, so a second would hand out #1 again. 409.\n */\n 'COUPON_FOUNDING_EXISTS',\n /**\n * Staff creating ANY founding coupon (0.14.0): founding places come from the\n * launch waitlist alone (the user, 2026-10-16), so no code may hand one out.\n * 409.\n */\n 'COUPON_FOUNDING_RETIRED',\n /** Buying Business while on Premium: that is an upgrade, priced as the difference. 409. */\n 'PLAN_UPGRADE_INSTEAD',\n /** Asking to upgrade with no Premium time to turn into Business. 409. */\n 'PLAN_NOTHING_TO_UPGRADE',\n /** The purchase would hold plan time more than `PLAN_AHEAD_MAX_YEARS` ahead. 409. */\n 'PLAN_TERM_LIMIT',\n /**\n * The plan changed between the quote and the payment (another purchase\n * moved the Premium an upgrade was priced on, or the quote is over a day\n * old): the payment is not applied, and is refunded in full by itself. 409.\n */\n 'PLAN_CHANGED',\n /** Payments are not switched on here (no gateway keys). 503. A free coupon still works. */\n 'PAYMENTS_UNAVAILABLE',\n /**\n * What came back from checkout does not prove this payment: a bad\n * signature, or another order's ids. 400. If money was taken, the webhook\n * still settles it.\n */\n 'PAYMENT_NOT_VERIFIED',\n /** The checkout was not paid within its time (`ORDER_TTL_MINUTES`). Start again. 409. */\n 'ORDER_EXPIRED',\n /** More than `REFUND_WINDOW_DAYS` days since the payment. 409. */\n 'REFUND_WINDOW_CLOSED',\n /** Not a captured payment, or already refunded. 409. */\n 'PAYMENT_NOT_REFUNDABLE',\n /** The gateway refused the refund. Nothing changed; try again or refund from its dashboard. 502. */\n 'REFUND_FAILED',\n\n // ── Messaging people you do not know (0.12.0) ──\n /** This month's allowance of new people is used. `details.resetsAt`. 403. */\n 'MESSAGE_ALLOWANCE_EXHAUSTED',\n /**\n * Opening a conversation that would use the allowance, without saying so\n * (`useAllowance: true`). `details.left`. 409. Nothing was spent.\n */\n 'MESSAGE_ALLOWANCE_UNCONFIRMED',\n /**\n * They do not take conversations from people they do not know, or they\n * cannot chat at all (not a member). One code for both, on purpose. 403.\n */\n 'MESSAGE_NOT_ACCEPTED',\n\n // ── Communities (0.9.0) ──\n /**\n * Something in a community you can SEE but must join first: taking part in\n * it (posting into it, commenting, reacting, voting, saving, reporting,\n * editing), or reading a private community's feed, pinned posts or\n * members. Join (public) or request to join (private). 403. What you cannot\n * see at all answers NOT_FOUND, as content of a private or hidden community\n * looked up by its id does.\n */\n 'COMMUNITY_JOIN_REQUIRED',\n /** A live community already has this name (case and spacing ignored). 409. */\n 'COMMUNITY_NAME_TAKEN',\n /** Joining, requesting or inviting someone who is already a member, has requested or is invited. 409. */\n 'COMMUNITY_ALREADY_MEMBER',\n /**\n * Inviting someone who cannot join: not finished onboarding, paused,\n * suspended or deleted. One code for all four, so it reveals none of them.\n */\n 'COMMUNITY_MEMBER_NOT_INVITABLE',\n /** Inviting someone banned from this community. Unban them first. */\n 'COMMUNITY_MEMBER_BANNED',\n /** Inviting into a public community: anyone can join it, share its link instead. */\n 'COMMUNITY_INVITE_NOT_NEEDED',\n /**\n * The last admin leaving, stepping down or being removed, or deleting their\n * account while someone else could be made admin. Make someone else admin\n * first. On an account deletion, `details.communities` names them.\n */\n 'COMMUNITY_LAST_ADMIN',\n /**\n * The community is archived (read-only): no new posts, polls, comments,\n * reactions, votes, saves, reports, edits, joins, approvals, invitations\n * or pins. Its moderators may still hide what breaks its rules.\n */\n 'COMMUNITY_ARCHIVED',\n /**\n * A type change that exposes what was already posted (toward public, or\n * hidden to private) sent without `confirmExposure: true`.\n */\n 'COMMUNITY_EXPOSURE_UNCONFIRMED',\n /** `COMMUNITY_PINS_MAX` announcements are pinned already. Unpin one first. */\n 'COMMUNITY_PINS_FULL',\n /**\n * Notifying every member again within `COMMUNITY_ANNOUNCE_INTERVAL_MS`.\n * `details.nextAt` says when it is allowed. Pinning without notifying works.\n */\n 'COMMUNITY_ANNOUNCE_TOO_SOON',\n /** Reposting a post or poll that lives in a community: community content stays in it. */\n 'COMMUNITY_CONTENT_NOT_REPOSTABLE',\n /** `COMMUNITY_SUGGESTIONS_OPEN_MAX` suggestions are already waiting for review. */\n 'COMMUNITY_SUGGESTIONS_FULL',\n /** Approving or declining a suggestion that was already decided. 409. */\n 'COMMUNITY_SUGGESTION_DECIDED',\n // ── Reviews ──\n /** One review per member per product. Edit yours instead. */\n 'REVIEW_EXISTS',\n /** Voting your own review helpful. */\n 'REVIEW_OWN_VOTE',\n\n // ── Moderation ──\n /**\n * A decision that does not apply to that kind of thing: removing a product\n * (staff hide one, never delete it). `MODERATION_ACTIONS_BY_TARGET_KIND`.\n */\n 'MODERATION_ACTION_INVALID',\n\n // ── Chat ──\n /** Opening a conversation with yourself. */\n 'CHAT_WITH_SELF',\n\n // ── The account ──\n /** Staff suspended this account: nothing in the product works until it is lifted. */\n 'ACCOUNT_SUSPENDED',\n\n // ── Roles and the MPIN ──\n /**\n * Switching to a role this person does not hold (or no longer holds), or\n * setting an MPIN while holding no staff role at all.\n */\n 'ROLE_NOT_HELD',\n /** A staff role needs an MPIN, and none has been set yet. Set one first. */\n 'MPIN_NOT_SET',\n /** An MPIN is set once; changing it needs the current one. */\n 'MPIN_ALREADY_SET',\n /** The MPIN is wrong. `details.attemptsLeft` says how many tries remain. */\n 'MPIN_INCORRECT',\n /** Too many wrong MPINs. `details.lockedUntil` says when to try again. */\n 'MPIN_LOCKED',\n /** Changing your own roles. Someone else has to. */\n 'CANNOT_CHANGE_OWN_ROLES',\n /** Granting or revoking a role the role you act as may not touch. */\n 'ROLE_NOT_GRANTABLE',\n /** Changing your own capabilities (0.9.0). Someone else has to. */\n 'CANNOT_CHANGE_OWN_CAPABILITIES',\n /** Granting or revoking a capability the role you act as may not touch (0.9.0). */\n 'CAPABILITY_NOT_GRANTABLE',\n\n // ── Support ──\n /** The ticket holds `TICKET_MESSAGES_MAX` messages. Open a new one. */\n 'TICKET_FULL',\n /** The team keeps `SAVED_REPLIES_MAX` saved replies. Delete one first. */\n 'SAVED_REPLIES_FULL',\n] as const;\n\nexport const apiErrorCodeSchema = z.enum(API_ERROR_CODE_VALUES);\nexport type ApiErrorCode = z.infer<typeof apiErrorCodeSchema>;\n\n/** The same codes by name: `API_ERROR_CODE.POLL_CLOSED`. */\nexport const API_ERROR_CODE = apiErrorCodeSchema.enum;\n"]}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * founder-schema — Every error code the API answers with\n *\n * THE CODE IS WHAT A CLIENT ACTS ON; the `message` beside it is English for\n * logs and for a client too old to know the code. A client words each code in\n * the member's language, and a test on the web side asserts every value here\n * has a message in every locale it ships.\n *\n * Before 0.2.0 the backend kept this list to itself, and every domain refusal\n * (a closed poll, a reply to a reply, the edit window) went out as\n * `VALIDATION_ERROR` with an English sentence, so the only way for a client to\n * tell them apart was to match on the wording.\n *\n * WHEN TO USE WHICH:\n * - A request that does not match its schema: `VALIDATION_ERROR`, with every\n * problem in `error.details.issues`.\n * - A well-formed request the current STATE of things refuses: its own code\n * below. These carry no issues; the code says it all.\n *\n * ⚠ Append freely; remove deliberately. A code removed here that an older\n * server still sends fails the client's parse of the error envelope.\n *\n * @module founder-schema/core/errors\n */\n\nimport { z } from 'zod';\n\n/**\n * As a tuple, the way `GENDER_VALUES` is, so a consumer can iterate it (a\n * translation-coverage test does exactly that) and TypeScript keeps the union.\n */\nexport const API_ERROR_CODE_VALUES = [\n // ── Anything ──\n /** A bug or an outage on our side. The message says nothing more on purpose. */\n 'INTERNAL_ERROR',\n /** The request did not match its schema. `details.issues` says where. */\n 'VALIDATION_ERROR',\n /** No such thing, or not one you may see. Deliberately the same answer. */\n 'NOT_FOUND',\n /** Two writes raced for something unique; retrying usually succeeds. */\n 'CONFLICT',\n /** Too many requests from this member or address. Wait, then retry. */\n 'RATE_LIMITED',\n /** Something we depend on (the chat server) is down or not switched on. */\n 'SERVICE_UNAVAILABLE',\n\n // ── Who you are ──\n /** No credential at all. */\n 'UNAUTHORIZED',\n /** A credential that is not ours, or not readable. */\n 'INVALID_TOKEN',\n /** A credential that was ours and has expired. Refresh and retry. */\n 'TOKEN_EXPIRED',\n /** Signed out everywhere, or the account changed. Sign in again. */\n 'SESSION_INVALIDATED',\n /** Signed in, and not allowed to do this. */\n 'FORBIDDEN',\n\n // ── Onboarding ──\n /** Finish onboarding first. The client routes here instead of showing an error. */\n 'ONBOARDING_INCOMPLETE',\n /** Onboarding is already finished; there is nothing to save or finish again. */\n 'ALREADY_ONBOARDED',\n /** Under `MIN_AGE_YEARS`. Refused at the draft and again at finish. */\n 'UNDER_AGE',\n\n // ── Uploads: completing one, and attaching it ──\n /**\n * Not an upload of yours, not processed yet, already attached somewhere, or\n * for the other purpose (an avatar upload on a post). One code for all of\n * them on purpose: telling \"someone else's\" apart from \"does not exist\" would\n * let a caller probe other members' media ids.\n */\n 'UPLOAD_NOT_ATTACHABLE',\n /** Larger than `UPLOAD_MAX_BYTES`. */\n 'UPLOAD_TOO_LARGE',\n /**\n * Not one of the image types this product accepts (by the file's own bytes,\n * whatever its name or declared type), or not an image at all.\n */\n 'UPLOAD_WRONG_TYPE',\n /** Completed before the file reached storage: upload it, then complete. */\n 'UPLOAD_NOT_RECEIVED',\n /**\n * Another request is processing this upload right now (a retry or a double\n * tap). Nothing is wrong: complete again in a moment and it answers with\n * the image. 409.\n */\n 'UPLOAD_PROCESSING',\n /** A JPEG, PNG, WebP or GIF by its bytes that cannot be decoded: truncated or corrupt. */\n 'UPLOAD_UNREADABLE',\n /** More than `MEDIA_MAX_INPUT_PIXELS`; refused before decoding. */\n 'UPLOAD_TOO_MANY_PIXELS',\n /** `MEDIA_PENDING_MAX` uploads are already waiting to be attached. */\n 'UPLOAD_LIMIT_REACHED',\n /** Discarding an upload that is attached: remove it from its post or avatar instead. */\n 'UPLOAD_IN_USE',\n\n // ── The feed ──\n /** The post is older than `EDIT_WINDOW_MS`. */\n 'EDIT_WINDOW_CLOSED',\n /** A poll is never editable: people have already voted on it. */\n 'POLL_NOT_EDITABLE',\n /** The poll has closed, by the server's clock. */\n 'POLL_CLOSED',\n /** No option, several on a single-choice poll, or an option that does not exist. */\n 'POLL_CHOICE_INVALID',\n /** A reply to a reply. One level of nesting only. */\n 'REPLY_TOO_DEEP',\n /** Reporting your own post, poll or comment (or, since 0.6.0, your own product or review). */\n 'CANNOT_REPORT_OWN',\n /**\n * Marking a comment \"this helped\" that is not feedback on your product: the\n * post is not tagged with a product you are on, or the comment is your own\n * team's.\n */\n 'FEEDBACK_NOT_MARKABLE',\n /** Reposting your own post or poll (0.8.0). */\n 'CANNOT_REPOST_OWN',\n /** Reposting a repost (0.8.0): share the original instead. */\n 'CANNOT_REPOST_A_REPOST',\n /** You already have an active repost of this item (0.8.0). Undo it first. 409. */\n 'ALREADY_REPOSTED',\n\n // ── Products ──\n /**\n * Their plan's number of LIVE products is reached (0.12.0: 1 for a member,\n * 5 on Premium, unlimited on Business; was `PRODUCTS_OWNED_MAX` for\n * everyone). Creating a product, making a paused one live, or being handed\n * one. `details.limit`. Pause one, or upgrade.\n */\n 'PRODUCT_LIMIT_REACHED',\n /**\n * Listing a product that is not ready for Discover, or removing what keeps a\n * listed one ready. `details.missing`: some of `logo`, `tagline`, `screenshot`.\n */\n 'PRODUCT_NOT_LISTABLE',\n /**\n * The product is archived and frozen until its owner restores it: no new\n * posts about it, reviews, upvotes, replies, helpful marks, testers or\n * invitations.\n */\n 'PRODUCT_ARCHIVED',\n /** Tagging a post with, or acting for, a product you are not on the team of. */\n 'PRODUCT_NOT_YOURS',\n /** Inviting someone who is already on the team or already invited. */\n 'PRODUCT_ALREADY_MEMBER',\n /**\n * Inviting someone who cannot join a team: not finished onboarding, paused,\n * suspended or deleted. One code for all four, so it reveals none of them.\n */\n 'PRODUCT_MEMBER_NOT_INVITABLE',\n /** Handing over to, or re-roling, someone who is not on the team (or invited, for a role). */\n 'PRODUCT_NOT_ON_TEAM',\n /**\n * The owner leaving, being removed, or having their role changed. Ownership\n * moves only by handing the product to someone first.\n */\n 'PRODUCT_OWNER_MUST_TRANSFER',\n /** Upvoting, reviewing or confirming yourself as a tester of your own team's product. */\n 'PRODUCT_OWN_TEAM',\n /** Confirming as a tester someone who has given this product no feedback. */\n 'TESTER_NOT_ELIGIBLE',\n /**\n * The product is paused (0.12.0): its owner's plan has fewer live places\n * than they own products. Only its team sees it; nothing new is tagged with\n * it until its owner makes it live again.\n */\n 'PRODUCT_PAUSED',\n\n // ── Membership and plans (0.12.0) ──\n /**\n * Taking part needs a membership: a viewer posting, commenting, reacting,\n * voting, saving, joining, chatting or listing a product. 403. Also the\n * reason on the refusing rule, so the web offers the membership.\n */\n 'MEMBERSHIP_REQUIRED',\n /**\n * Starting a conversation with someone you do not know needs Premium or\n * Business. 403. Also the reason on the refusing rule.\n */\n 'PLAN_REQUIRED',\n /** Buying or claiming a membership while holding one. 409. */\n 'ALREADY_MEMBER',\n /**\n * Revoking a membership staff may not revoke: a paid one (refund the\n * payment instead) or a staff member's, which comes with the role. 409.\n */\n 'MEMBERSHIP_NOT_REVOCABLE',\n /** No such coupon, or it is switched off, not started or over. One code for all, on purpose. */\n 'COUPON_INVALID',\n /** A real coupon that does not apply to what is being bought (a membership code on a plan). */\n 'COUPON_NOT_APPLICABLE',\n /** Every redemption of the coupon is taken. 409. */\n 'COUPON_EXHAUSTED',\n /** This account already used the coupon. 409. */\n 'COUPON_ALREADY_USED',\n /** Staff creating a coupon whose code another coupon has (case ignored). 409. */\n 'COUPON_CODE_TAKEN',\n /** A member choosing a username someone else holds (0.13.0). 409. */\n 'USERNAME_TAKEN',\n /**\n * Staff creating a second FOUNDING coupon (0.13.0): founding numbers count\n * up on the one founding coupon, so a second would hand out #1 again. 409.\n */\n 'COUPON_FOUNDING_EXISTS',\n /**\n * Staff creating ANY founding coupon (0.14.0): founding places come from the\n * launch waitlist alone (the user, 2026-10-16), so no code may hand one out.\n * 409.\n */\n 'COUPON_FOUNDING_RETIRED',\n /** Buying Business while on Premium: that is an upgrade, priced as the difference. 409. */\n 'PLAN_UPGRADE_INSTEAD',\n /** Asking to upgrade with no Premium time to turn into Business. 409. */\n 'PLAN_NOTHING_TO_UPGRADE',\n /** The purchase would hold plan time more than `PLAN_AHEAD_MAX_YEARS` ahead. 409. */\n 'PLAN_TERM_LIMIT',\n /**\n * The plan changed between the quote and the payment (another purchase\n * moved the Premium an upgrade was priced on, or the quote is over a day\n * old): the payment is not applied, and is refunded in full by itself. 409.\n */\n 'PLAN_CHANGED',\n /** Payments are not switched on here (no gateway keys). 503. A free coupon still works. */\n 'PAYMENTS_UNAVAILABLE',\n /**\n * What came back from checkout does not prove this payment: a bad\n * signature, or another order's ids. 400. If money was taken, the webhook\n * still settles it.\n */\n 'PAYMENT_NOT_VERIFIED',\n /** The checkout was not paid within its time (`ORDER_TTL_MINUTES`). Start again. 409. */\n 'ORDER_EXPIRED',\n /** More than `REFUND_WINDOW_DAYS` days since the payment. 409. */\n 'REFUND_WINDOW_CLOSED',\n /** Not a captured payment, or already refunded. 409. */\n 'PAYMENT_NOT_REFUNDABLE',\n /** The gateway refused the refund. Nothing changed; try again or refund from its dashboard. 502. */\n 'REFUND_FAILED',\n\n // ── Messaging people you do not know (0.12.0) ──\n /** This month's allowance of new people is used. `details.resetsAt`. 403. */\n 'MESSAGE_ALLOWANCE_EXHAUSTED',\n /**\n * Opening a conversation that would use the allowance, without saying so\n * (`useAllowance: true`). `details.left`. 409. Nothing was spent.\n */\n 'MESSAGE_ALLOWANCE_UNCONFIRMED',\n /**\n * They do not take conversations from people they do not know, or they\n * cannot chat at all (not a member). One code for both, on purpose. 403.\n */\n 'MESSAGE_NOT_ACCEPTED',\n\n // ── Communities (0.9.0) ──\n /**\n * Something in a community you can SEE but must join first: taking part in\n * it (posting into it, commenting, reacting, voting, saving, reporting,\n * editing), or reading a private community's feed, pinned posts or\n * members. Join (public) or request to join (private). 403. What you cannot\n * see at all answers NOT_FOUND, as content of a private or hidden community\n * looked up by its id does.\n */\n 'COMMUNITY_JOIN_REQUIRED',\n /** A live community already has this name (case and spacing ignored). 409. */\n 'COMMUNITY_NAME_TAKEN',\n /** Joining, requesting or inviting someone who is already a member, has requested or is invited. 409. */\n 'COMMUNITY_ALREADY_MEMBER',\n /**\n * Inviting someone who cannot join: not finished onboarding, paused,\n * suspended or deleted. One code for all four, so it reveals none of them.\n */\n 'COMMUNITY_MEMBER_NOT_INVITABLE',\n /** Inviting someone banned from this community. Unban them first. */\n 'COMMUNITY_MEMBER_BANNED',\n /** Inviting into a public community: anyone can join it, share its link instead. */\n 'COMMUNITY_INVITE_NOT_NEEDED',\n /**\n * The last admin leaving, stepping down or being removed, or deleting their\n * account while someone else could be made admin. Make someone else admin\n * first. On an account deletion, `details.communities` names them.\n */\n 'COMMUNITY_LAST_ADMIN',\n /**\n * The community is archived (read-only): no new posts, polls, comments,\n * reactions, votes, saves, reports, edits, joins, approvals, invitations\n * or pins. Its moderators may still hide what breaks its rules.\n */\n 'COMMUNITY_ARCHIVED',\n /**\n * A type change that exposes what was already posted (toward public, or\n * hidden to private) sent without `confirmExposure: true`.\n */\n 'COMMUNITY_EXPOSURE_UNCONFIRMED',\n /** `COMMUNITY_PINS_MAX` announcements are pinned already. Unpin one first. */\n 'COMMUNITY_PINS_FULL',\n /**\n * Notifying every member again within `COMMUNITY_ANNOUNCE_INTERVAL_MS`.\n * `details.nextAt` says when it is allowed. Pinning without notifying works.\n */\n 'COMMUNITY_ANNOUNCE_TOO_SOON',\n /** Reposting a post or poll that lives in a community: community content stays in it. */\n 'COMMUNITY_CONTENT_NOT_REPOSTABLE',\n /** `COMMUNITY_SUGGESTIONS_OPEN_MAX` suggestions are already waiting for review. */\n 'COMMUNITY_SUGGESTIONS_FULL',\n /** Approving or declining a suggestion that was already decided. 409. */\n 'COMMUNITY_SUGGESTION_DECIDED',\n // ── Reviews ──\n /** One review per member per product. Edit yours instead. */\n 'REVIEW_EXISTS',\n /** Voting your own review helpful. */\n 'REVIEW_OWN_VOTE',\n\n // ── Moderation ──\n /**\n * A decision that does not apply to that kind of thing: removing a product\n * (staff hide one, never delete it). `MODERATION_ACTIONS_BY_TARGET_KIND`.\n */\n 'MODERATION_ACTION_INVALID',\n\n // ── Chat ──\n /** Opening a conversation with yourself. */\n 'CHAT_WITH_SELF',\n\n // ── The account ──\n /** Staff suspended this account: nothing in the product works until it is lifted. */\n 'ACCOUNT_SUSPENDED',\n\n // ── Roles and the MPIN ──\n /**\n * Switching to a role this person does not hold (or no longer holds), or\n * setting an MPIN while holding no staff role at all.\n */\n 'ROLE_NOT_HELD',\n /** A staff role needs an MPIN, and none has been set yet. Set one first. */\n 'MPIN_NOT_SET',\n /** An MPIN is set once; changing it needs the current one. */\n 'MPIN_ALREADY_SET',\n /** The MPIN is wrong. `details.attemptsLeft` says how many tries remain. */\n 'MPIN_INCORRECT',\n /** Too many wrong MPINs. `details.lockedUntil` says when to try again. */\n 'MPIN_LOCKED',\n /** Changing your own roles. Someone else has to. */\n 'CANNOT_CHANGE_OWN_ROLES',\n /** Granting or revoking a role the role you act as may not touch. */\n 'ROLE_NOT_GRANTABLE',\n /** Changing your own capabilities (0.9.0). Someone else has to. */\n 'CANNOT_CHANGE_OWN_CAPABILITIES',\n /** Granting or revoking a capability the role you act as may not touch (0.9.0). */\n 'CAPABILITY_NOT_GRANTABLE',\n\n // ── Support ──\n /** The ticket holds `TICKET_MESSAGES_MAX` messages. Open a new one. */\n 'TICKET_FULL',\n /** The team keeps `SAVED_REPLIES_MAX` saved replies. Delete one first. */\n 'SAVED_REPLIES_FULL',\n\n // ── Waitlist (0.15.0) ──\n /**\n * Founder Circle has not opened yet (`FC_LAUNCH_AT` is still ahead). Until\n * it does, only joining the waitlist, onboarding and your profile, uploads\n * for it and deleting your account work, for everyone, staff included. 403.\n */\n 'NOT_LAUNCHED',\n /** Joining the waitlist after the launch: it closed then (the user, 2026-10-16). 409. */\n 'WAITLIST_CLOSED',\n /** A staff account joining the waitlist: staff never take a place (the user, 2026-10-16). 403. */\n 'WAITLIST_STAFF',\n /**\n * Joining when this email's inbox or this sign-in already had a place: one\n * place per inbox (`x+1@`, `x+2@`, Gmail's dots are one inbox) and per\n * sign-in, ever, deleted accounts included, so neither new addresses nor\n * deleting and joining again take the free places one by one (the user,\n * 2026-10-16; the security review, 2026-10-18). 409.\n */\n 'WAITLIST_PLACE_USED',\n] as const;\n\nexport const apiErrorCodeSchema = z.enum(API_ERROR_CODE_VALUES);\nexport type ApiErrorCode = z.infer<typeof apiErrorCodeSchema>;\n\n/** The same codes by name: `API_ERROR_CODE.POLL_CLOSED`. */\nexport const API_ERROR_CODE = apiErrorCodeSchema.enum;\n"]}
|
package/dist/core/limits.d.ts
CHANGED
|
@@ -143,6 +143,17 @@ export declare const PRODUCT_TEAM_SHOWN = 12;
|
|
|
143
143
|
export declare const PRODUCT_ASK_OPEN_DAYS = 14;
|
|
144
144
|
/** Days after a payment within which it is refunded in full on request (the user's ruling). */
|
|
145
145
|
export declare const REFUND_WINDOW_DAYS = 7;
|
|
146
|
+
/**
|
|
147
|
+
* The LAST moment a payment made at `paidAt` may be asked to be refunded
|
|
148
|
+
* (0.15.0). The user's rule: seven days, "counted from the day I paid". So
|
|
149
|
+
* the window runs to the END of the seventh day after the day of paying, in
|
|
150
|
+
* India's time: paid at 00:10 on 1 October, refundable until 23:59:59.999 on
|
|
151
|
+
* 8 October. That is the date a member is shown, so the date shown and the
|
|
152
|
+
* moment enforced can never disagree (before 0.15.0 the server cut off at
|
|
153
|
+
* exactly 7 x 24 hours after the payment while the page showed only a date).
|
|
154
|
+
* Inclusive: an ask AT this instant is in time.
|
|
155
|
+
*/
|
|
156
|
+
export declare function refundWindowEndsAt(paidAt: Date | string): Date;
|
|
146
157
|
/** Minutes a checkout stays payable. After that it is expired and a new one is opened. */
|
|
147
158
|
export declare const ORDER_TTL_MINUTES = 30;
|
|
148
159
|
/** Plan time one member may hold ahead of today, in years. Bounds what is prepaid. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/core/limits.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/core/limits.ts"],"names":[],"mappings":"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"}
|
package/dist/core/limits.js
CHANGED
|
@@ -155,6 +155,24 @@ export const PRODUCT_ASK_OPEN_DAYS = 14;
|
|
|
155
155
|
// ─── Membership and plans (0.12.0) ───────────────────────────────────────────
|
|
156
156
|
/** Days after a payment within which it is refunded in full on request (the user's ruling). */
|
|
157
157
|
export const REFUND_WINDOW_DAYS = 7;
|
|
158
|
+
/** India Standard Time: UTC+05:30 all year. */
|
|
159
|
+
const IST_OFFSET_MS = (5 * 60 + 30) * 60 * 1000;
|
|
160
|
+
const DAY_MS = 24 * 60 * 60 * 1000;
|
|
161
|
+
/**
|
|
162
|
+
* The LAST moment a payment made at `paidAt` may be asked to be refunded
|
|
163
|
+
* (0.15.0). The user's rule: seven days, "counted from the day I paid". So
|
|
164
|
+
* the window runs to the END of the seventh day after the day of paying, in
|
|
165
|
+
* India's time: paid at 00:10 on 1 October, refundable until 23:59:59.999 on
|
|
166
|
+
* 8 October. That is the date a member is shown, so the date shown and the
|
|
167
|
+
* moment enforced can never disagree (before 0.15.0 the server cut off at
|
|
168
|
+
* exactly 7 x 24 hours after the payment while the page showed only a date).
|
|
169
|
+
* Inclusive: an ask AT this instant is in time.
|
|
170
|
+
*/
|
|
171
|
+
export function refundWindowEndsAt(paidAt) {
|
|
172
|
+
const inIndia = new Date(new Date(paidAt).getTime() + IST_OFFSET_MS);
|
|
173
|
+
const payDayStart = Date.UTC(inIndia.getUTCFullYear(), inIndia.getUTCMonth(), inIndia.getUTCDate()) - IST_OFFSET_MS;
|
|
174
|
+
return new Date(payDayStart + (REFUND_WINDOW_DAYS + 1) * DAY_MS - 1);
|
|
175
|
+
}
|
|
158
176
|
/** Minutes a checkout stays payable. After that it is expired and a new one is opened. */
|
|
159
177
|
export const ORDER_TTL_MINUTES = 30;
|
|
160
178
|
/** Plan time one member may hold ahead of today, in years. Bounds what is prepaid. */
|
package/dist/core/limits.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../../src/core/limits.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * founder-schema — Every length, size and count limit, by name\n *\n * ONE PLACE FOR EVERY NUMBER a client and the server must agree on. Before this,\n * the limits lived inline (`.max(80)`, `.max(1000)`) where nothing else could\n * read them, so the web client re-typed each one for its counters and the\n * backend re-typed them as Mongoose `maxlength`. Three copies of one number is\n * how the image alt text came to be 280 here and 500 in the backend.\n *\n * The rule from 0.2.0: a schema uses one of these constants, a consumer imports\n * the same constant, and nobody writes the digits again.\n *\n * Imports nothing, so any module here can use it without a cycle. Limits that\n * already had a name in their own module (POST_MAX_BODY_CHARS, POLL_*,\n * USERNAME_*, INTERESTS_*, MIN_AGE_YEARS...) stay where they are and keep their\n * names; this file holds the ones that had none.\n *\n * ⚠️ Lowering a limit is a breaking change for stored data: a value that was\n * valid when written fails the next edit. Raise freely; lower deliberately.\n *\n * @module founder-schema/core/limits\n */\n\n// ─── Profile ─────────────────────────────────────────────────────────────────\n\nexport const DISPLAY_NAME_MAX = 80;\nexport const HEADLINE_MAX = 120;\nexport const ABOUT_MAX = 1000;\n/** Skills a member may list. Discover filters on them. */\nexport const SKILLS_MAX = 8;\n/** Goals a member must pick at onboarding. The list itself caps the maximum. */\nexport const GOALS_MIN = 1;\n\n// ─── Location ────────────────────────────────────────────────────────────────\n\nexport const CITY_MAX = 80;\nexport const STATE_MAX = 80;\nexport const COUNTRY_MAX = 80;\n\n// ─── Venture ─────────────────────────────────────────────────────────────────\n\nexport const VENTURE_NAME_MAX = 120;\nexport const VENTURE_TAGLINE_MAX = 160;\n/** Team size including the founder. */\nexport const TEAM_SIZE_MIN = 1;\nexport const TEAM_SIZE_MAX = 100_000;\n/** Earliest founding year accepted. The ceiling is \"this year\", read per parse. */\nexport const FOUNDED_YEAR_MIN = 1900;\n\n// ─── Links ───────────────────────────────────────────────────────────────────\n\n/**\n * Longest URL a member may TYPE. Applied by `httpUrlSchema` itself, so every\n * member URL carries it: profile links, a venture website.\n *\n * ⚠ NOT applied to URLs the server reads from elsewhere (a link preview's\n * page or image), which use `safeUrlSchema`: a 314-character CDN image URL is\n * ordinary, and one of them would otherwise fail a whole feed page.\n */\nexport const LINK_URL_MAX = 300;\n\n// ─── Feed and moderation ─────────────────────────────────────────────────────\n\n/** Author-supplied image description. The backend's stored copy uses this too. */\nexport const MEDIA_ALT_MAX = 280;\nexport const LINK_PREVIEW_TITLE_MAX = 200;\nexport const LINK_PREVIEW_DESCRIPTION_MAX = 500;\n/** The free-text note on a report. */\nexport const REPORT_NOTE_MAX = 1000;\n/** A moderator's note on a decision (why it was hidden, removed or dismissed). */\nexport const MODERATION_NOTE_MAX = 500;\n/** What a post, poll or comment is shown as in a staff list: its first words. */\nexport const MODERATION_EXCERPT_MAX = 160;\n\n// ─── Staff ───────────────────────────────────────────────────────────────────\n\n/** Why a member was suspended. Shown to staff, and on record in the audit log. */\nexport const SUSPENSION_REASON_MIN = 3;\nexport const SUSPENSION_REASON_MAX = 500;\n/** The staff member directory's search box (a name, a handle or an email). */\nexport const MEMBER_SEARCH_MAX = 120;\n\n// ─── Support ─────────────────────────────────────────────────────────────────\n\nexport const TICKET_SUBJECT_MIN = 3;\nexport const TICKET_SUBJECT_MAX = 120;\n/** One message in a ticket, the member's or an agent's. */\nexport const TICKET_MESSAGE_MAX = 4000;\n/**\n * Messages one ticket may hold. A conversation that long is a new problem, so\n * the member is asked to open a new ticket rather than the thread growing\n * without bound.\n */\nexport const TICKET_MESSAGES_MAX = 200;\nexport const SAVED_REPLY_TITLE_MAX = 80;\nexport const SAVED_REPLY_BODY_MAX = 4000;\n/** Saved replies kept in all: a team's library, not an archive. */\nexport const SAVED_REPLIES_MAX = 200;\n\n// ─── Uploads ─────────────────────────────────────────────────────────────────\n\n/**\n * Largest file accepted for upload: 10 MB.\n *\n * Enforced three times. The upload-slot body refuses a bigger `contentLength`;\n * the size is SIGNED INTO the upload URL, so storage refuses a body of any other\n * size; and the server checks the stored object again before processing it.\n * The client checks first only to fail fast: it shrinks a photo well below this\n * before uploading (see `MEDIA_SIZES`), so a member rarely meets the limit.\n */\nexport const UPLOAD_MAX_BYTES = 10 * 1024 * 1024;\n\n/**\n * Largest image, in pixels, the server will decode: 50 megapixels, one frame.\n *\n * Bytes do not bound memory. A 50,000 x 50,000 PNG of one colour compresses to\n * a few kilobytes and decodes to ten gigabytes. The server reads the dimensions\n * first and refuses anything above this before decoding (`UPLOAD_TOO_MANY_PIXELS`).\n * 50 MP admits every phone camera's full-resolution photo up to 48 MP.\n */\nexport const MEDIA_MAX_INPUT_PIXELS = 50_000_000;\n\n/**\n * Hours an upload may wait to be attached to a post or set as an avatar. After\n * that the server deletes it: the composer was abandoned, or the tab closed.\n */\nexport const MEDIA_UNATTACHED_TTL_HOURS = 24;\n\n/**\n * Uploads one member may have waiting (requested or processed, not yet\n * attached) at once. A full post is `POST_MAX_MEDIA` (10); this leaves room for\n * a retry or two without letting one account fill storage.\n */\nexport const MEDIA_PENDING_MAX = 30;\n\n/** Longest placeholder string: a base64 ThumbHash is about 30 characters. */\nexport const MEDIA_PLACEHOLDER_MAX = 100;\n\n// ─── Lists and search ────────────────────────────────────────────────────────\n\n/** Values one Discover multi-select filter may carry (`?skill=a&skill=b`). */\nexport const DISCOVER_FILTER_VALUES_MAX = 10;\n/** Discover's free-text inputs: the name search, city and country. */\nexport const DISCOVER_TEXT_MAX = 80;\n/** Page size bounds for every cursor-paged list. */\nexport const PAGE_SIZE_MAX = 50;\nexport const PAGE_SIZE_DEFAULT = 20;\n\n// ─── Chat ────────────────────────────────────────────────────────────────────\n\n/**\n * Members one participants lookup may name. Bounded so the lookup cannot be\n * used to page through the directory.\n */\nexport const CHAT_PARTICIPANTS_MAX = 100;\n\n// ─── Products ────────────────────────────────────────────────────────────────\n\nexport const PRODUCT_NAME_MAX = 60;\n/** One line on a Discover card: short enough to never wrap twice on a phone. */\nexport const PRODUCT_TAGLINE_MAX = 80;\nexport const PRODUCT_DESCRIPTION_MAX = 3000;\n/** Screenshots on one product page. The first is its cover on Discover. */\nexport const PRODUCT_SCREENSHOTS_MAX = 8;\nexport const PRODUCT_CAPTION_MAX = 140;\n/**\n * @deprecated 0.12.0: how many products may be LIVE now depends on the plan\n * (1 for a member, 5 on Premium, unlimited on Business), served by\n * `GET /plans` and `GET /me/membership`; nothing reads this. Kept so no\n * export is removed. It was the one cap for everyone, archived products\n * counted, team roles never.\n */\nexport const PRODUCTS_OWNED_MAX = 5;\n/** Team members a product page shows; the rest are one tap away (`/team`). */\nexport const PRODUCT_TEAM_SHOWN = 12;\n/**\n * Days a post's ask keeps its product on the \"asking for testers\" (or feedback,\n * launch, ideas) shelf. Each new post with that ask restarts the clock.\n */\nexport const PRODUCT_ASK_OPEN_DAYS = 14;\n\n// ─── Membership and plans (0.12.0) ───────────────────────────────────────────\n\n/** Days after a payment within which it is refunded in full on request (the user's ruling). */\nexport const REFUND_WINDOW_DAYS = 7;\n/** Minutes a checkout stays payable. After that it is expired and a new one is opened. */\nexport const ORDER_TTL_MINUTES = 30;\n/** Plan time one member may hold ahead of today, in years. Bounds what is prepaid. */\nexport const PLAN_AHEAD_MAX_YEARS = 3;\n/**\n * The \"unlimited\" plan's actual ceiling on live products: a fair-use net\n * against a script, which the Terms of Service state. A constant: changing it\n * is a release.\n */\nexport const PRODUCTS_LIVE_SAFETY_MAX = 100;\nexport const COUPON_CODE_MIN = 4;\nexport const COUPON_CODE_MAX = 32;\n/** What staff call a coupon in their list (\"Founding 100\"). */\nexport const COUPON_LABEL_MAX = 80;\n/** Why staff refund a payment or grant or revoke a membership, on the audit record. */\nexport const BILLING_REASON_MIN = 3;\nexport const BILLING_REASON_MAX = 500;\n/** A buyer's legal name and address on a B2B invoice. */\nexport const BILLING_NAME_MAX = 120;\nexport const BILLING_ADDRESS_MAX = 300;\n/** Days before a plan's end that the bell reminds, earliest first. */\nexport const PLAN_REMINDER_DAYS = [7, 1] as const;\n\n// ─── Communities (0.9.0) ─────────────────────────────────────────────────────\n\nexport const COMMUNITY_NAME_MIN = 3;\nexport const COMMUNITY_NAME_MAX = 60;\nexport const COMMUNITY_DESCRIPTION_MAX = 500;\n/** Rules on one community, each one line. */\nexport const COMMUNITY_RULES_MAX = 10;\nexport const COMMUNITY_RULE_MAX = 200;\n/** What a suggester says the community is for, beyond its description. */\nexport const COMMUNITY_SUGGESTION_WHY_MAX = 500;\n/** A declined suggestion says why: long enough to be a reason, not a novel. */\nexport const COMMUNITY_DECLINE_REASON_MIN = 3;\nexport const COMMUNITY_DECLINE_REASON_MAX = 500;\nexport const COMMUNITY_BAN_REASON_MAX = 500;\n\n// ─── Reviews ─────────────────────────────────────────────────────────────────\n\n/**\n * A review says WHY. A star with no reason does not help the founder, which is\n * the whole point of reviewing here, so the text is required and has a floor.\n */\nexport const REVIEW_TEXT_MIN = 30;\nexport const REVIEW_TEXT_MAX = 2000;\nexport const REVIEW_REPLY_MAX = 1000;\n/**\n * Reviews before a product shows an average (and enters \"Top rated\"). One or two\n * ratings say more about who wrote them than about the product.\n */\nexport const REVIEW_AVERAGE_MIN_COUNT = 3;\n\n// ─── Contribution ────────────────────────────────────────────────────────────\n\n/** Points one review can earn its writer through other members' Helpful votes. */\nexport const REVIEW_HELPFUL_POINTS_MAX = 10;\n/**\n * @deprecated 0.7.0: writing a review earns no points (the score counts only\n * what OTHER members recognise), so nothing reads this. Kept so no export is\n * removed.\n */\nexport const REVIEWS_REWARDED_PER_DAY = 3;\n/**\n * Points one member can earn from ONE other member over any 30 days, all kinds\n * together, so two founders cannot farm each other by trading Helpful marks.\n */\nexport const CONTRIBUTION_PAIR_POINTS_MAX = 30;\n/** Window of the \"this month\" score and the top-helpers list. */\nexport const CONTRIBUTION_RECENT_DAYS = 30;\n/** Rows on the top-helpers list. */\nexport const CONTRIBUTION_LEADERBOARD_SIZE = 20;\n\n// ─── Notifications ───────────────────────────────────────────────────────────\n\n/** Days a notification is kept. Neither Jansathi nor GymMonk ever deletes one. */\nexport const NOTIFICATION_RETENTION_DAYS = 90;\n\n// ─── Erasure ─────────────────────────────────────────────────────────────────\n\n/**\n * Days what a deleted account leaves behind, and the text of content its\n * author deleted or moderation removed, is kept before it is purged (the\n * user's ruling, 2026-10-11). The floor in India's IT Rules, 2021: a closed\n * account's registration information is kept 180 days after it closes (rule\n * 3(1)(h)), and removed content is preserved 180 days for investigations (rule\n * 3(1)(g)). The backend's `erasure-purge` job enforces it; the Privacy Policy\n * states it, and its test reads this number.\n */\nexport const ERASURE_RETENTION_DAYS = 180;\n/** The first words of a comment or review a notification shows. */\nexport const NOTIFICATION_EXCERPT_MAX = 140;\n"]}
|
|
1
|
+
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../../src/core/limits.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * founder-schema — Every length, size and count limit, by name\n *\n * ONE PLACE FOR EVERY NUMBER a client and the server must agree on. Before this,\n * the limits lived inline (`.max(80)`, `.max(1000)`) where nothing else could\n * read them, so the web client re-typed each one for its counters and the\n * backend re-typed them as Mongoose `maxlength`. Three copies of one number is\n * how the image alt text came to be 280 here and 500 in the backend.\n *\n * The rule from 0.2.0: a schema uses one of these constants, a consumer imports\n * the same constant, and nobody writes the digits again.\n *\n * Imports nothing, so any module here can use it without a cycle. Limits that\n * already had a name in their own module (POST_MAX_BODY_CHARS, POLL_*,\n * USERNAME_*, INTERESTS_*, MIN_AGE_YEARS...) stay where they are and keep their\n * names; this file holds the ones that had none.\n *\n * ⚠️ Lowering a limit is a breaking change for stored data: a value that was\n * valid when written fails the next edit. Raise freely; lower deliberately.\n *\n * @module founder-schema/core/limits\n */\n\n// ─── Profile ─────────────────────────────────────────────────────────────────\n\nexport const DISPLAY_NAME_MAX = 80;\nexport const HEADLINE_MAX = 120;\nexport const ABOUT_MAX = 1000;\n/** Skills a member may list. Discover filters on them. */\nexport const SKILLS_MAX = 8;\n/** Goals a member must pick at onboarding. The list itself caps the maximum. */\nexport const GOALS_MIN = 1;\n\n// ─── Location ────────────────────────────────────────────────────────────────\n\nexport const CITY_MAX = 80;\nexport const STATE_MAX = 80;\nexport const COUNTRY_MAX = 80;\n\n// ─── Venture ─────────────────────────────────────────────────────────────────\n\nexport const VENTURE_NAME_MAX = 120;\nexport const VENTURE_TAGLINE_MAX = 160;\n/** Team size including the founder. */\nexport const TEAM_SIZE_MIN = 1;\nexport const TEAM_SIZE_MAX = 100_000;\n/** Earliest founding year accepted. The ceiling is \"this year\", read per parse. */\nexport const FOUNDED_YEAR_MIN = 1900;\n\n// ─── Links ───────────────────────────────────────────────────────────────────\n\n/**\n * Longest URL a member may TYPE. Applied by `httpUrlSchema` itself, so every\n * member URL carries it: profile links, a venture website.\n *\n * ⚠ NOT applied to URLs the server reads from elsewhere (a link preview's\n * page or image), which use `safeUrlSchema`: a 314-character CDN image URL is\n * ordinary, and one of them would otherwise fail a whole feed page.\n */\nexport const LINK_URL_MAX = 300;\n\n// ─── Feed and moderation ─────────────────────────────────────────────────────\n\n/** Author-supplied image description. The backend's stored copy uses this too. */\nexport const MEDIA_ALT_MAX = 280;\nexport const LINK_PREVIEW_TITLE_MAX = 200;\nexport const LINK_PREVIEW_DESCRIPTION_MAX = 500;\n/** The free-text note on a report. */\nexport const REPORT_NOTE_MAX = 1000;\n/** A moderator's note on a decision (why it was hidden, removed or dismissed). */\nexport const MODERATION_NOTE_MAX = 500;\n/** What a post, poll or comment is shown as in a staff list: its first words. */\nexport const MODERATION_EXCERPT_MAX = 160;\n\n// ─── Staff ───────────────────────────────────────────────────────────────────\n\n/** Why a member was suspended. Shown to staff, and on record in the audit log. */\nexport const SUSPENSION_REASON_MIN = 3;\nexport const SUSPENSION_REASON_MAX = 500;\n/** The staff member directory's search box (a name, a handle or an email). */\nexport const MEMBER_SEARCH_MAX = 120;\n\n// ─── Support ─────────────────────────────────────────────────────────────────\n\nexport const TICKET_SUBJECT_MIN = 3;\nexport const TICKET_SUBJECT_MAX = 120;\n/** One message in a ticket, the member's or an agent's. */\nexport const TICKET_MESSAGE_MAX = 4000;\n/**\n * Messages one ticket may hold. A conversation that long is a new problem, so\n * the member is asked to open a new ticket rather than the thread growing\n * without bound.\n */\nexport const TICKET_MESSAGES_MAX = 200;\nexport const SAVED_REPLY_TITLE_MAX = 80;\nexport const SAVED_REPLY_BODY_MAX = 4000;\n/** Saved replies kept in all: a team's library, not an archive. */\nexport const SAVED_REPLIES_MAX = 200;\n\n// ─── Uploads ─────────────────────────────────────────────────────────────────\n\n/**\n * Largest file accepted for upload: 10 MB.\n *\n * Enforced three times. The upload-slot body refuses a bigger `contentLength`;\n * the size is SIGNED INTO the upload URL, so storage refuses a body of any other\n * size; and the server checks the stored object again before processing it.\n * The client checks first only to fail fast: it shrinks a photo well below this\n * before uploading (see `MEDIA_SIZES`), so a member rarely meets the limit.\n */\nexport const UPLOAD_MAX_BYTES = 10 * 1024 * 1024;\n\n/**\n * Largest image, in pixels, the server will decode: 50 megapixels, one frame.\n *\n * Bytes do not bound memory. A 50,000 x 50,000 PNG of one colour compresses to\n * a few kilobytes and decodes to ten gigabytes. The server reads the dimensions\n * first and refuses anything above this before decoding (`UPLOAD_TOO_MANY_PIXELS`).\n * 50 MP admits every phone camera's full-resolution photo up to 48 MP.\n */\nexport const MEDIA_MAX_INPUT_PIXELS = 50_000_000;\n\n/**\n * Hours an upload may wait to be attached to a post or set as an avatar. After\n * that the server deletes it: the composer was abandoned, or the tab closed.\n */\nexport const MEDIA_UNATTACHED_TTL_HOURS = 24;\n\n/**\n * Uploads one member may have waiting (requested or processed, not yet\n * attached) at once. A full post is `POST_MAX_MEDIA` (10); this leaves room for\n * a retry or two without letting one account fill storage.\n */\nexport const MEDIA_PENDING_MAX = 30;\n\n/** Longest placeholder string: a base64 ThumbHash is about 30 characters. */\nexport const MEDIA_PLACEHOLDER_MAX = 100;\n\n// ─── Lists and search ────────────────────────────────────────────────────────\n\n/** Values one Discover multi-select filter may carry (`?skill=a&skill=b`). */\nexport const DISCOVER_FILTER_VALUES_MAX = 10;\n/** Discover's free-text inputs: the name search, city and country. */\nexport const DISCOVER_TEXT_MAX = 80;\n/** Page size bounds for every cursor-paged list. */\nexport const PAGE_SIZE_MAX = 50;\nexport const PAGE_SIZE_DEFAULT = 20;\n\n// ─── Chat ────────────────────────────────────────────────────────────────────\n\n/**\n * Members one participants lookup may name. Bounded so the lookup cannot be\n * used to page through the directory.\n */\nexport const CHAT_PARTICIPANTS_MAX = 100;\n\n// ─── Products ────────────────────────────────────────────────────────────────\n\nexport const PRODUCT_NAME_MAX = 60;\n/** One line on a Discover card: short enough to never wrap twice on a phone. */\nexport const PRODUCT_TAGLINE_MAX = 80;\nexport const PRODUCT_DESCRIPTION_MAX = 3000;\n/** Screenshots on one product page. The first is its cover on Discover. */\nexport const PRODUCT_SCREENSHOTS_MAX = 8;\nexport const PRODUCT_CAPTION_MAX = 140;\n/**\n * @deprecated 0.12.0: how many products may be LIVE now depends on the plan\n * (1 for a member, 5 on Premium, unlimited on Business), served by\n * `GET /plans` and `GET /me/membership`; nothing reads this. Kept so no\n * export is removed. It was the one cap for everyone, archived products\n * counted, team roles never.\n */\nexport const PRODUCTS_OWNED_MAX = 5;\n/** Team members a product page shows; the rest are one tap away (`/team`). */\nexport const PRODUCT_TEAM_SHOWN = 12;\n/**\n * Days a post's ask keeps its product on the \"asking for testers\" (or feedback,\n * launch, ideas) shelf. Each new post with that ask restarts the clock.\n */\nexport const PRODUCT_ASK_OPEN_DAYS = 14;\n\n// ─── Membership and plans (0.12.0) ───────────────────────────────────────────\n\n/** Days after a payment within which it is refunded in full on request (the user's ruling). */\nexport const REFUND_WINDOW_DAYS = 7;\n\n/** India Standard Time: UTC+05:30 all year. */\nconst IST_OFFSET_MS = (5 * 60 + 30) * 60 * 1000;\nconst DAY_MS = 24 * 60 * 60 * 1000;\n\n/**\n * The LAST moment a payment made at `paidAt` may be asked to be refunded\n * (0.15.0). The user's rule: seven days, \"counted from the day I paid\". So\n * the window runs to the END of the seventh day after the day of paying, in\n * India's time: paid at 00:10 on 1 October, refundable until 23:59:59.999 on\n * 8 October. That is the date a member is shown, so the date shown and the\n * moment enforced can never disagree (before 0.15.0 the server cut off at\n * exactly 7 x 24 hours after the payment while the page showed only a date).\n * Inclusive: an ask AT this instant is in time.\n */\nexport function refundWindowEndsAt(paidAt: Date | string): Date {\n const inIndia = new Date(new Date(paidAt).getTime() + IST_OFFSET_MS);\n const payDayStart =\n Date.UTC(inIndia.getUTCFullYear(), inIndia.getUTCMonth(), inIndia.getUTCDate()) - IST_OFFSET_MS;\n return new Date(payDayStart + (REFUND_WINDOW_DAYS + 1) * DAY_MS - 1);\n}\n/** Minutes a checkout stays payable. After that it is expired and a new one is opened. */\nexport const ORDER_TTL_MINUTES = 30;\n/** Plan time one member may hold ahead of today, in years. Bounds what is prepaid. */\nexport const PLAN_AHEAD_MAX_YEARS = 3;\n/**\n * The \"unlimited\" plan's actual ceiling on live products: a fair-use net\n * against a script, which the Terms of Service state. A constant: changing it\n * is a release.\n */\nexport const PRODUCTS_LIVE_SAFETY_MAX = 100;\nexport const COUPON_CODE_MIN = 4;\nexport const COUPON_CODE_MAX = 32;\n/** What staff call a coupon in their list (\"Founding 100\"). */\nexport const COUPON_LABEL_MAX = 80;\n/** Why staff refund a payment or grant or revoke a membership, on the audit record. */\nexport const BILLING_REASON_MIN = 3;\nexport const BILLING_REASON_MAX = 500;\n/** A buyer's legal name and address on a B2B invoice. */\nexport const BILLING_NAME_MAX = 120;\nexport const BILLING_ADDRESS_MAX = 300;\n/** Days before a plan's end that the bell reminds, earliest first. */\nexport const PLAN_REMINDER_DAYS = [7, 1] as const;\n\n// ─── Communities (0.9.0) ─────────────────────────────────────────────────────\n\nexport const COMMUNITY_NAME_MIN = 3;\nexport const COMMUNITY_NAME_MAX = 60;\nexport const COMMUNITY_DESCRIPTION_MAX = 500;\n/** Rules on one community, each one line. */\nexport const COMMUNITY_RULES_MAX = 10;\nexport const COMMUNITY_RULE_MAX = 200;\n/** What a suggester says the community is for, beyond its description. */\nexport const COMMUNITY_SUGGESTION_WHY_MAX = 500;\n/** A declined suggestion says why: long enough to be a reason, not a novel. */\nexport const COMMUNITY_DECLINE_REASON_MIN = 3;\nexport const COMMUNITY_DECLINE_REASON_MAX = 500;\nexport const COMMUNITY_BAN_REASON_MAX = 500;\n\n// ─── Reviews ─────────────────────────────────────────────────────────────────\n\n/**\n * A review says WHY. A star with no reason does not help the founder, which is\n * the whole point of reviewing here, so the text is required and has a floor.\n */\nexport const REVIEW_TEXT_MIN = 30;\nexport const REVIEW_TEXT_MAX = 2000;\nexport const REVIEW_REPLY_MAX = 1000;\n/**\n * Reviews before a product shows an average (and enters \"Top rated\"). One or two\n * ratings say more about who wrote them than about the product.\n */\nexport const REVIEW_AVERAGE_MIN_COUNT = 3;\n\n// ─── Contribution ────────────────────────────────────────────────────────────\n\n/** Points one review can earn its writer through other members' Helpful votes. */\nexport const REVIEW_HELPFUL_POINTS_MAX = 10;\n/**\n * @deprecated 0.7.0: writing a review earns no points (the score counts only\n * what OTHER members recognise), so nothing reads this. Kept so no export is\n * removed.\n */\nexport const REVIEWS_REWARDED_PER_DAY = 3;\n/**\n * Points one member can earn from ONE other member over any 30 days, all kinds\n * together, so two founders cannot farm each other by trading Helpful marks.\n */\nexport const CONTRIBUTION_PAIR_POINTS_MAX = 30;\n/** Window of the \"this month\" score and the top-helpers list. */\nexport const CONTRIBUTION_RECENT_DAYS = 30;\n/** Rows on the top-helpers list. */\nexport const CONTRIBUTION_LEADERBOARD_SIZE = 20;\n\n// ─── Notifications ───────────────────────────────────────────────────────────\n\n/** Days a notification is kept. Neither Jansathi nor GymMonk ever deletes one. */\nexport const NOTIFICATION_RETENTION_DAYS = 90;\n\n// ─── Erasure ─────────────────────────────────────────────────────────────────\n\n/**\n * Days what a deleted account leaves behind, and the text of content its\n * author deleted or moderation removed, is kept before it is purged (the\n * user's ruling, 2026-10-11). The floor in India's IT Rules, 2021: a closed\n * account's registration information is kept 180 days after it closes (rule\n * 3(1)(h)), and removed content is preserved 180 days for investigations (rule\n * 3(1)(g)). The backend's `erasure-purge` job enforces it; the Privacy Policy\n * states it, and its test reads this number.\n */\nexport const ERASURE_RETENTION_DAYS = 180;\n/** The first words of a comment or review a notification shows. */\nexport const NOTIFICATION_EXCERPT_MAX = 140;\n"]}
|
package/dist/core/responses.d.ts
CHANGED
|
@@ -155,6 +155,10 @@ export declare const apiErrorSchema: z.ZodObject<{
|
|
|
155
155
|
CAPABILITY_NOT_GRANTABLE: "CAPABILITY_NOT_GRANTABLE";
|
|
156
156
|
TICKET_FULL: "TICKET_FULL";
|
|
157
157
|
SAVED_REPLIES_FULL: "SAVED_REPLIES_FULL";
|
|
158
|
+
NOT_LAUNCHED: "NOT_LAUNCHED";
|
|
159
|
+
WAITLIST_CLOSED: "WAITLIST_CLOSED";
|
|
160
|
+
WAITLIST_STAFF: "WAITLIST_STAFF";
|
|
161
|
+
WAITLIST_PLACE_USED: "WAITLIST_PLACE_USED";
|
|
158
162
|
}>;
|
|
159
163
|
message: z.ZodString;
|
|
160
164
|
details: z.ZodOptional<z.ZodObject<{
|
|
@@ -299,6 +303,10 @@ export declare const errorResponseSchema: z.ZodObject<{
|
|
|
299
303
|
CAPABILITY_NOT_GRANTABLE: "CAPABILITY_NOT_GRANTABLE";
|
|
300
304
|
TICKET_FULL: "TICKET_FULL";
|
|
301
305
|
SAVED_REPLIES_FULL: "SAVED_REPLIES_FULL";
|
|
306
|
+
NOT_LAUNCHED: "NOT_LAUNCHED";
|
|
307
|
+
WAITLIST_CLOSED: "WAITLIST_CLOSED";
|
|
308
|
+
WAITLIST_STAFF: "WAITLIST_STAFF";
|
|
309
|
+
WAITLIST_PLACE_USED: "WAITLIST_PLACE_USED";
|
|
302
310
|
}>;
|
|
303
311
|
message: z.ZodString;
|
|
304
312
|
details: z.ZodOptional<z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../src/core/responses.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqBhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../src/core/responses.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqBhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAIzB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,mDAAmD;AACnD,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC;;;;iBAK9D,CAAC;AAEL,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAG9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC;;;iBAIxD,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;iBAAmC,CAAC;AACjE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* founder-schema — Waitlist: joining before the launch, and your place on it
|
|
3
|
+
*
|
|
4
|
+
* Founder Circle opens at one instant, `FC_LAUNCH_AT`, a server-only env on
|
|
5
|
+
* BOTH the backend and the web (the user, 2026-10-18: Tuesday 20 October 2026,
|
|
6
|
+
* 12:00 noon IST). Until then the app is "waiting": a signed-in person can join
|
|
7
|
+
* the waitlist, see their place, fill in their profile, sign out and delete
|
|
8
|
+
* their account, and nothing else (`NOT_LAUNCHED`). Unset means launched, so a
|
|
9
|
+
* deployment without it (dev, tests, local) never shows the waitlist.
|
|
10
|
+
*
|
|
11
|
+
* JOINING IS SIGNING IN (the user's option A). Each account holds at most one
|
|
12
|
+
* place; places count up in the order the server records joins and are never
|
|
13
|
+
* given again, not even when their holder deletes the account, and neither
|
|
14
|
+
* the same inbox nor the same sign-in takes a second one
|
|
15
|
+
* (`WAITLIST_PLACE_USED`). The first
|
|
16
|
+
* `FOUNDING_PLACES` places get the membership free, as "Founding member #N"
|
|
17
|
+
* (0.14.0). Staff never take a place (`WAITLIST_STAFF`). The waitlist closes
|
|
18
|
+
* at launch (`WAITLIST_CLOSED`); free places nobody took by then are gone.
|
|
19
|
+
*
|
|
20
|
+
* Routes:
|
|
21
|
+
* GET /api/v1/waitlist public -> waitlistStatusSchema
|
|
22
|
+
* GET /api/v1/waitlist/me signed in -> myWaitlistSchema
|
|
23
|
+
* POST /api/v1/waitlist/join signed in -> waitlistPlaceSchema (no body; a repeat answers the same place)
|
|
24
|
+
*
|
|
25
|
+
* @module founder-schema/domains/waitlist
|
|
26
|
+
*/
|
|
27
|
+
import { z } from 'zod';
|
|
28
|
+
export declare const waitlistPlaceSchema: z.ZodObject<{
|
|
29
|
+
place: z.ZodNumber;
|
|
30
|
+
joinedAt: z.ZodISODateTime;
|
|
31
|
+
founding: z.ZodBoolean;
|
|
32
|
+
}, z.core.$strip>;
|
|
33
|
+
export type WaitlistPlace = z.infer<typeof waitlistPlaceSchema>;
|
|
34
|
+
/**
|
|
35
|
+
* Why an account not on the list cannot join, said outright so a client never
|
|
36
|
+
* guesses it from `canJoin`, checked in this order: `closed` (the launch has
|
|
37
|
+
* passed), `staff` (any platform role), `place_used` (this email's inbox or
|
|
38
|
+
* this sign-in already had a place, a deleted account's included).
|
|
39
|
+
*/
|
|
40
|
+
export declare const WAITLIST_REFUSAL_VALUES: readonly ["closed", "staff", "place_used"];
|
|
41
|
+
export declare const waitlistRefusalSchema: z.ZodEnum<{
|
|
42
|
+
staff: "staff";
|
|
43
|
+
closed: "closed";
|
|
44
|
+
place_used: "place_used";
|
|
45
|
+
}>;
|
|
46
|
+
export type WaitlistRefusal = z.infer<typeof waitlistRefusalSchema>;
|
|
47
|
+
export declare const myWaitlistSchema: z.ZodObject<{
|
|
48
|
+
place: z.ZodNullable<z.ZodObject<{
|
|
49
|
+
place: z.ZodNumber;
|
|
50
|
+
joinedAt: z.ZodISODateTime;
|
|
51
|
+
founding: z.ZodBoolean;
|
|
52
|
+
}, z.core.$strip>>;
|
|
53
|
+
canJoin: z.ZodBoolean;
|
|
54
|
+
refusal: z.ZodNullable<z.ZodEnum<{
|
|
55
|
+
staff: "staff";
|
|
56
|
+
closed: "closed";
|
|
57
|
+
place_used: "place_used";
|
|
58
|
+
}>>;
|
|
59
|
+
}, z.core.$strip>;
|
|
60
|
+
export type MyWaitlist = z.infer<typeof myWaitlistSchema>;
|
|
61
|
+
export declare const waitlistStatusSchema: z.ZodObject<{
|
|
62
|
+
waiting: z.ZodBoolean;
|
|
63
|
+
launchAt: z.ZodNullable<z.ZodISODateTime>;
|
|
64
|
+
foundingPlaces: z.ZodNumber;
|
|
65
|
+
foundingPlacesLeft: z.ZodNumber;
|
|
66
|
+
}, z.core.$strip>;
|
|
67
|
+
export type WaitlistStatus = z.infer<typeof waitlistStatusSchema>;
|
|
68
|
+
//# sourceMappingURL=waitlist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waitlist.d.ts","sourceRoot":"","sources":["../../../src/domains/waitlist/waitlist.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,mBAAmB;;;;iBAM9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAIhE;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,4CAA6C,CAAC;AAClF,eAAO,MAAM,qBAAqB;;;;EAAkC,CAAC;AACrE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;iBAO3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAI1D,eAAO,MAAM,oBAAoB;;;;;iBAS/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* founder-schema — Waitlist: joining before the launch, and your place on it
|
|
3
|
+
*
|
|
4
|
+
* Founder Circle opens at one instant, `FC_LAUNCH_AT`, a server-only env on
|
|
5
|
+
* BOTH the backend and the web (the user, 2026-10-18: Tuesday 20 October 2026,
|
|
6
|
+
* 12:00 noon IST). Until then the app is "waiting": a signed-in person can join
|
|
7
|
+
* the waitlist, see their place, fill in their profile, sign out and delete
|
|
8
|
+
* their account, and nothing else (`NOT_LAUNCHED`). Unset means launched, so a
|
|
9
|
+
* deployment without it (dev, tests, local) never shows the waitlist.
|
|
10
|
+
*
|
|
11
|
+
* JOINING IS SIGNING IN (the user's option A). Each account holds at most one
|
|
12
|
+
* place; places count up in the order the server records joins and are never
|
|
13
|
+
* given again, not even when their holder deletes the account, and neither
|
|
14
|
+
* the same inbox nor the same sign-in takes a second one
|
|
15
|
+
* (`WAITLIST_PLACE_USED`). The first
|
|
16
|
+
* `FOUNDING_PLACES` places get the membership free, as "Founding member #N"
|
|
17
|
+
* (0.14.0). Staff never take a place (`WAITLIST_STAFF`). The waitlist closes
|
|
18
|
+
* at launch (`WAITLIST_CLOSED`); free places nobody took by then are gone.
|
|
19
|
+
*
|
|
20
|
+
* Routes:
|
|
21
|
+
* GET /api/v1/waitlist public -> waitlistStatusSchema
|
|
22
|
+
* GET /api/v1/waitlist/me signed in -> myWaitlistSchema
|
|
23
|
+
* POST /api/v1/waitlist/join signed in -> waitlistPlaceSchema (no body; a repeat answers the same place)
|
|
24
|
+
*
|
|
25
|
+
* @module founder-schema/domains/waitlist
|
|
26
|
+
*/
|
|
27
|
+
import { z } from 'zod';
|
|
28
|
+
// ─── POST /waitlist/join, and inside GET /waitlist/me ────────────────────────
|
|
29
|
+
export const waitlistPlaceSchema = z.object({
|
|
30
|
+
/** 1 for the first person to join; never reused. */
|
|
31
|
+
place: z.number().int().positive(),
|
|
32
|
+
joinedAt: z.iso.datetime(),
|
|
33
|
+
/** `place <= FOUNDING_PLACES`: this place carries a free founding membership. */
|
|
34
|
+
founding: z.boolean(),
|
|
35
|
+
});
|
|
36
|
+
// ─── GET /waitlist/me ────────────────────────────────────────────────────────
|
|
37
|
+
/**
|
|
38
|
+
* Why an account not on the list cannot join, said outright so a client never
|
|
39
|
+
* guesses it from `canJoin`, checked in this order: `closed` (the launch has
|
|
40
|
+
* passed), `staff` (any platform role), `place_used` (this email's inbox or
|
|
41
|
+
* this sign-in already had a place, a deleted account's included).
|
|
42
|
+
*/
|
|
43
|
+
export const WAITLIST_REFUSAL_VALUES = ['closed', 'staff', 'place_used'];
|
|
44
|
+
export const waitlistRefusalSchema = z.enum(WAITLIST_REFUSAL_VALUES);
|
|
45
|
+
export const myWaitlistSchema = z.object({
|
|
46
|
+
/** Null until this account joins. */
|
|
47
|
+
place: waitlistPlaceSchema.nullable(),
|
|
48
|
+
/** True only while waiting, for an account not on the list that may join: show Join. */
|
|
49
|
+
canJoin: z.boolean(),
|
|
50
|
+
/** Null when on the list or free to join. */
|
|
51
|
+
refusal: waitlistRefusalSchema.nullable(),
|
|
52
|
+
});
|
|
53
|
+
// ─── GET /waitlist (public) ──────────────────────────────────────────────────
|
|
54
|
+
export const waitlistStatusSchema = z.object({
|
|
55
|
+
/** True until the launch instant; false when no launch is set or it has passed. */
|
|
56
|
+
waiting: z.boolean(),
|
|
57
|
+
/** The launch instant, or null when none is set. */
|
|
58
|
+
launchAt: z.iso.datetime().nullable(),
|
|
59
|
+
/** `FOUNDING_PLACES`, so the landing need not hard-code 100. */
|
|
60
|
+
foundingPlaces: z.number().int().positive(),
|
|
61
|
+
/** Free places not yet taken: `foundingPlaces` minus places given, never below 0. */
|
|
62
|
+
foundingPlacesLeft: z.number().int().nonnegative(),
|
|
63
|
+
});
|
|
64
|
+
//# sourceMappingURL=waitlist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waitlist.js","sourceRoot":"","sources":["../../../src/domains/waitlist/waitlist.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,oDAAoD;IACpD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE;IAC1B,iFAAiF;IACjF,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;CACtB,CAAC,CAAC;AAGH,gFAAgF;AAEhF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAU,CAAC;AAClF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AAGrE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,qCAAqC;IACrC,KAAK,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IACrC,wFAAwF;IACxF,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,6CAA6C;IAC7C,OAAO,EAAE,qBAAqB,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC;AAGH,gFAAgF;AAEhF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,mFAAmF;IACnF,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,oDAAoD;IACpD,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACrC,gEAAgE;IAChE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC3C,qFAAqF;IACrF,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;CACnD,CAAC,CAAC","sourcesContent":["/**\n * founder-schema — Waitlist: joining before the launch, and your place on it\n *\n * Founder Circle opens at one instant, `FC_LAUNCH_AT`, a server-only env on\n * BOTH the backend and the web (the user, 2026-10-18: Tuesday 20 October 2026,\n * 12:00 noon IST). Until then the app is \"waiting\": a signed-in person can join\n * the waitlist, see their place, fill in their profile, sign out and delete\n * their account, and nothing else (`NOT_LAUNCHED`). Unset means launched, so a\n * deployment without it (dev, tests, local) never shows the waitlist.\n *\n * JOINING IS SIGNING IN (the user's option A). Each account holds at most one\n * place; places count up in the order the server records joins and are never\n * given again, not even when their holder deletes the account, and neither\n * the same inbox nor the same sign-in takes a second one\n * (`WAITLIST_PLACE_USED`). The first\n * `FOUNDING_PLACES` places get the membership free, as \"Founding member #N\"\n * (0.14.0). Staff never take a place (`WAITLIST_STAFF`). The waitlist closes\n * at launch (`WAITLIST_CLOSED`); free places nobody took by then are gone.\n *\n * Routes:\n * GET /api/v1/waitlist public -> waitlistStatusSchema\n * GET /api/v1/waitlist/me signed in -> myWaitlistSchema\n * POST /api/v1/waitlist/join signed in -> waitlistPlaceSchema (no body; a repeat answers the same place)\n *\n * @module founder-schema/domains/waitlist\n */\n\nimport { z } from 'zod';\n\n// ─── POST /waitlist/join, and inside GET /waitlist/me ────────────────────────\n\nexport const waitlistPlaceSchema = z.object({\n /** 1 for the first person to join; never reused. */\n place: z.number().int().positive(),\n joinedAt: z.iso.datetime(),\n /** `place <= FOUNDING_PLACES`: this place carries a free founding membership. */\n founding: z.boolean(),\n});\nexport type WaitlistPlace = z.infer<typeof waitlistPlaceSchema>;\n\n// ─── GET /waitlist/me ────────────────────────────────────────────────────────\n\n/**\n * Why an account not on the list cannot join, said outright so a client never\n * guesses it from `canJoin`, checked in this order: `closed` (the launch has\n * passed), `staff` (any platform role), `place_used` (this email's inbox or\n * this sign-in already had a place, a deleted account's included).\n */\nexport const WAITLIST_REFUSAL_VALUES = ['closed', 'staff', 'place_used'] as const;\nexport const waitlistRefusalSchema = z.enum(WAITLIST_REFUSAL_VALUES);\nexport type WaitlistRefusal = z.infer<typeof waitlistRefusalSchema>;\n\nexport const myWaitlistSchema = z.object({\n /** Null until this account joins. */\n place: waitlistPlaceSchema.nullable(),\n /** True only while waiting, for an account not on the list that may join: show Join. */\n canJoin: z.boolean(),\n /** Null when on the list or free to join. */\n refusal: waitlistRefusalSchema.nullable(),\n});\nexport type MyWaitlist = z.infer<typeof myWaitlistSchema>;\n\n// ─── GET /waitlist (public) ──────────────────────────────────────────────────\n\nexport const waitlistStatusSchema = z.object({\n /** True until the launch instant; false when no launch is set or it has passed. */\n waiting: z.boolean(),\n /** The launch instant, or null when none is set. */\n launchAt: z.iso.datetime().nullable(),\n /** `FOUNDING_PLACES`, so the landing need not hard-code 100. */\n foundingPlaces: z.number().int().positive(),\n /** Free places not yet taken: `foundingPlaces` minus places given, never below 0. */\n foundingPlacesLeft: z.number().int().nonnegative(),\n});\nexport type WaitlistStatus = z.infer<typeof waitlistStatusSchema>;\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export { ACTIVE_ROLE_TTL_MS, canGrantRole, isPlatformRole, MEMBER_ROLE, PLATFORM
|
|
|
15
15
|
export { ACCESS_REASON_VALUES, type AccessReason, accessReasonOf, accessReasonSchema, STANDING_VALUES, type Standing, standingSchema, } from './access/standing.js';
|
|
16
16
|
export { type CoordinatesQuery, type CoordinatesQueryInput, chosenUsernameSchema, coordinatesQuerySchema, displayNameSchema, emptyStringToUndefined, type FounderLocation, GENDER_VALUES, type Gender, GOAL_VALUES, type Goal, genderSchema, goalSchema, type HttpUrl, httpUrlOnHosts, httpUrlSchema, INDUSTRY_VALUES, type Industry, industrySchema, isReservedUsername, isUrlOnHost, locationSchema, multiValueQuery, type ObjectIdString, objectIdSchema, optionalTrimmedString, type PaginationQuery, type PaginationQueryInput, type Phone, paginationQuerySchema, phoneSchema, RESERVED_USERNAMES, type SafeUrl, SKILL_VALUES, type Skill, STARTUP_STAGE_VALUES, type StartupStage, type SuggestedLocation, safeUrlSchema, skillSchema, startupStageSchema, suggestedLocationSchema, USERNAME_MAX, USERNAME_MIN, type Username, usernameSchema, YOUTUBE_HOSTS, youtubeVideoId, } from './core/common.js';
|
|
17
17
|
export { API_ERROR_CODE, API_ERROR_CODE_VALUES, type ApiErrorCode, apiErrorCodeSchema, } from './core/errors.js';
|
|
18
|
-
export { ABOUT_MAX, BILLING_ADDRESS_MAX, BILLING_NAME_MAX, BILLING_REASON_MAX, BILLING_REASON_MIN, CHAT_PARTICIPANTS_MAX, CITY_MAX, COMMUNITY_BAN_REASON_MAX, COMMUNITY_DECLINE_REASON_MAX, COMMUNITY_DECLINE_REASON_MIN, COMMUNITY_DESCRIPTION_MAX, COMMUNITY_NAME_MAX, COMMUNITY_NAME_MIN, COMMUNITY_RULE_MAX, COMMUNITY_RULES_MAX, COMMUNITY_SUGGESTION_WHY_MAX, CONTRIBUTION_LEADERBOARD_SIZE, CONTRIBUTION_PAIR_POINTS_MAX, CONTRIBUTION_RECENT_DAYS, COUNTRY_MAX, COUPON_CODE_MAX, COUPON_CODE_MIN, COUPON_LABEL_MAX, DISCOVER_FILTER_VALUES_MAX, DISCOVER_TEXT_MAX, DISPLAY_NAME_MAX, ERASURE_RETENTION_DAYS, FOUNDED_YEAR_MIN, GOALS_MIN, HEADLINE_MAX, LINK_PREVIEW_DESCRIPTION_MAX, LINK_PREVIEW_TITLE_MAX, LINK_URL_MAX, MEDIA_ALT_MAX, MEDIA_MAX_INPUT_PIXELS, MEDIA_PENDING_MAX, MEDIA_PLACEHOLDER_MAX, MEDIA_UNATTACHED_TTL_HOURS, MEMBER_SEARCH_MAX, MODERATION_EXCERPT_MAX, MODERATION_NOTE_MAX, NOTIFICATION_EXCERPT_MAX, NOTIFICATION_RETENTION_DAYS, ORDER_TTL_MINUTES, PAGE_SIZE_DEFAULT, PAGE_SIZE_MAX, PLAN_AHEAD_MAX_YEARS, PLAN_REMINDER_DAYS, PRODUCT_ASK_OPEN_DAYS, PRODUCT_CAPTION_MAX, PRODUCT_DESCRIPTION_MAX, PRODUCT_NAME_MAX, PRODUCT_SCREENSHOTS_MAX, PRODUCT_TAGLINE_MAX, PRODUCT_TEAM_SHOWN, PRODUCTS_LIVE_SAFETY_MAX, PRODUCTS_OWNED_MAX, REFUND_WINDOW_DAYS, REPORT_NOTE_MAX, REVIEW_AVERAGE_MIN_COUNT, REVIEW_HELPFUL_POINTS_MAX, REVIEW_REPLY_MAX, REVIEW_TEXT_MAX, REVIEW_TEXT_MIN, REVIEWS_REWARDED_PER_DAY, SAVED_REPLIES_MAX, SAVED_REPLY_BODY_MAX, SAVED_REPLY_TITLE_MAX, SKILLS_MAX, STATE_MAX, SUSPENSION_REASON_MAX, SUSPENSION_REASON_MIN, TEAM_SIZE_MAX, TEAM_SIZE_MIN, TICKET_MESSAGE_MAX, TICKET_MESSAGES_MAX, TICKET_SUBJECT_MAX, TICKET_SUBJECT_MIN, UPLOAD_MAX_BYTES, VENTURE_NAME_MAX, VENTURE_TAGLINE_MAX, } from './core/limits.js';
|
|
18
|
+
export { ABOUT_MAX, BILLING_ADDRESS_MAX, BILLING_NAME_MAX, BILLING_REASON_MAX, BILLING_REASON_MIN, CHAT_PARTICIPANTS_MAX, CITY_MAX, COMMUNITY_BAN_REASON_MAX, COMMUNITY_DECLINE_REASON_MAX, COMMUNITY_DECLINE_REASON_MIN, COMMUNITY_DESCRIPTION_MAX, COMMUNITY_NAME_MAX, COMMUNITY_NAME_MIN, COMMUNITY_RULE_MAX, COMMUNITY_RULES_MAX, COMMUNITY_SUGGESTION_WHY_MAX, CONTRIBUTION_LEADERBOARD_SIZE, CONTRIBUTION_PAIR_POINTS_MAX, CONTRIBUTION_RECENT_DAYS, COUNTRY_MAX, COUPON_CODE_MAX, COUPON_CODE_MIN, COUPON_LABEL_MAX, DISCOVER_FILTER_VALUES_MAX, DISCOVER_TEXT_MAX, DISPLAY_NAME_MAX, ERASURE_RETENTION_DAYS, FOUNDED_YEAR_MIN, GOALS_MIN, HEADLINE_MAX, LINK_PREVIEW_DESCRIPTION_MAX, LINK_PREVIEW_TITLE_MAX, LINK_URL_MAX, MEDIA_ALT_MAX, MEDIA_MAX_INPUT_PIXELS, MEDIA_PENDING_MAX, MEDIA_PLACEHOLDER_MAX, MEDIA_UNATTACHED_TTL_HOURS, MEMBER_SEARCH_MAX, MODERATION_EXCERPT_MAX, MODERATION_NOTE_MAX, NOTIFICATION_EXCERPT_MAX, NOTIFICATION_RETENTION_DAYS, ORDER_TTL_MINUTES, PAGE_SIZE_DEFAULT, PAGE_SIZE_MAX, PLAN_AHEAD_MAX_YEARS, PLAN_REMINDER_DAYS, PRODUCT_ASK_OPEN_DAYS, PRODUCT_CAPTION_MAX, PRODUCT_DESCRIPTION_MAX, PRODUCT_NAME_MAX, PRODUCT_SCREENSHOTS_MAX, PRODUCT_TAGLINE_MAX, PRODUCT_TEAM_SHOWN, PRODUCTS_LIVE_SAFETY_MAX, PRODUCTS_OWNED_MAX, REFUND_WINDOW_DAYS, REPORT_NOTE_MAX, REVIEW_AVERAGE_MIN_COUNT, REVIEW_HELPFUL_POINTS_MAX, REVIEW_REPLY_MAX, REVIEW_TEXT_MAX, REVIEW_TEXT_MIN, REVIEWS_REWARDED_PER_DAY, refundWindowEndsAt, SAVED_REPLIES_MAX, SAVED_REPLY_BODY_MAX, SAVED_REPLY_TITLE_MAX, SKILLS_MAX, STATE_MAX, SUSPENSION_REASON_MAX, SUSPENSION_REASON_MIN, TEAM_SIZE_MAX, TEAM_SIZE_MIN, TICKET_MESSAGE_MAX, TICKET_MESSAGES_MAX, TICKET_SUBJECT_MAX, TICKET_SUBJECT_MIN, UPLOAD_MAX_BYTES, VENTURE_NAME_MAX, VENTURE_TAGLINE_MAX, } from './core/limits.js';
|
|
19
19
|
export { type ApiError, type ApiErrorDetails, apiErrorDetailsSchema, apiErrorSchema, type ErrorResponse, errorResponseSchema, type IdResponse, idResponseSchema, paginatedSchema, successResponseSchema, } from './core/responses.js';
|
|
20
20
|
export { REQUEST_PART_VALUES, type RequestPart, requestPartSchema, toValidationIssues, VALIDATION_MESSAGE, type ValidationIssue, type ValidationMessageKey, validationIssueSchema, } from './core/validation.js';
|
|
21
21
|
export { type DeleteAccountResponse, deleteAccountResponseSchema, } from './domains/account/account.js';
|
|
@@ -39,4 +39,5 @@ export { type CreateReviewBody, createReviewBodySchema, type ProductReview, prod
|
|
|
39
39
|
export { type CreateTicketBody, createTicketBodySchema, type ReplyTicketBody, replyTicketBodySchema, type SavedReply, type SavedReplyBody, type SavedReplyList, type SavedReplyParams, savedReplyBodySchema, savedReplyListSchema, savedReplyParamsSchema, savedReplySchema, TICKET_ASSIGNEE_FILTER_VALUES, TICKET_CATEGORY_VALUES, TICKET_SCOPE_VALUES, TICKET_STATUS_VALUES, type TicketAssigneeFilter, type TicketCategory, type TicketDetail, type TicketListQuery, type TicketListQueryInput, type TicketMessage, type TicketPage, type TicketParams, type TicketScope, type TicketStatus, type TicketSummary, ticketAssigneeFilterSchema, ticketCategorySchema, ticketDetailSchema, ticketListQuerySchema, ticketMessageSchema, ticketPageSchema, ticketParamsSchema, ticketScopeSchema, ticketStatusSchema, ticketSummarySchema, } from './domains/support/support.js';
|
|
40
40
|
export { type SetMemberCapabilitiesBody, type SetMemberCapabilitiesResponse, type SetMemberRolesBody, type SetMemberRolesResponse, setMemberCapabilitiesBodySchema, setMemberCapabilitiesResponseSchema, setMemberRolesBodySchema, setMemberRolesResponseSchema, type TeamMember, type TeamMemberParams, type TeamPage, teamMemberParamsSchema, teamMemberSchema, teamPageSchema, } from './domains/team/team.js';
|
|
41
41
|
export { UPLOAD_CONTENT_TYPES, UPLOAD_KEY_EXTENSIONS, UPLOAD_KEY_MAX_CHARS, UPLOAD_KEY_PATTERN, type UploadKey, type UploadKeyExtension, type UploadParams, type UploadPresignBody, type UploadPresignResponse, uploadKeyExtensionSchema, uploadKeySchema, uploadParamsSchema, uploadPresignBodySchema, uploadPresignResponseSchema, } from './domains/uploads/uploads.js';
|
|
42
|
+
export { type MyWaitlist, myWaitlistSchema, WAITLIST_REFUSAL_VALUES, type WaitlistPlace, type WaitlistRefusal, type WaitlistStatus, waitlistPlaceSchema, waitlistRefusalSchema, waitlistStatusSchema, } from './domains/waitlist/waitlist.js';
|
|
42
43
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -19,7 +19,7 @@ export { chosenUsernameSchema, coordinatesQuerySchema, displayNameSchema, emptyS
|
|
|
19
19
|
// ─── Error codes ─────────────────────────────────────────────────────────────
|
|
20
20
|
export { API_ERROR_CODE, API_ERROR_CODE_VALUES, apiErrorCodeSchema, } from './core/errors.js';
|
|
21
21
|
// ─── Limits: every length, size and count, by name ──────────────────────────
|
|
22
|
-
export { ABOUT_MAX, BILLING_ADDRESS_MAX, BILLING_NAME_MAX, BILLING_REASON_MAX, BILLING_REASON_MIN, CHAT_PARTICIPANTS_MAX, CITY_MAX, COMMUNITY_BAN_REASON_MAX, COMMUNITY_DECLINE_REASON_MAX, COMMUNITY_DECLINE_REASON_MIN, COMMUNITY_DESCRIPTION_MAX, COMMUNITY_NAME_MAX, COMMUNITY_NAME_MIN, COMMUNITY_RULE_MAX, COMMUNITY_RULES_MAX, COMMUNITY_SUGGESTION_WHY_MAX, CONTRIBUTION_LEADERBOARD_SIZE, CONTRIBUTION_PAIR_POINTS_MAX, CONTRIBUTION_RECENT_DAYS, COUNTRY_MAX, COUPON_CODE_MAX, COUPON_CODE_MIN, COUPON_LABEL_MAX, DISCOVER_FILTER_VALUES_MAX, DISCOVER_TEXT_MAX, DISPLAY_NAME_MAX, ERASURE_RETENTION_DAYS, FOUNDED_YEAR_MIN, GOALS_MIN, HEADLINE_MAX, LINK_PREVIEW_DESCRIPTION_MAX, LINK_PREVIEW_TITLE_MAX, LINK_URL_MAX, MEDIA_ALT_MAX, MEDIA_MAX_INPUT_PIXELS, MEDIA_PENDING_MAX, MEDIA_PLACEHOLDER_MAX, MEDIA_UNATTACHED_TTL_HOURS, MEMBER_SEARCH_MAX, MODERATION_EXCERPT_MAX, MODERATION_NOTE_MAX, NOTIFICATION_EXCERPT_MAX, NOTIFICATION_RETENTION_DAYS, ORDER_TTL_MINUTES, PAGE_SIZE_DEFAULT, PAGE_SIZE_MAX, PLAN_AHEAD_MAX_YEARS, PLAN_REMINDER_DAYS, PRODUCT_ASK_OPEN_DAYS, PRODUCT_CAPTION_MAX, PRODUCT_DESCRIPTION_MAX, PRODUCT_NAME_MAX, PRODUCT_SCREENSHOTS_MAX, PRODUCT_TAGLINE_MAX, PRODUCT_TEAM_SHOWN, PRODUCTS_LIVE_SAFETY_MAX, PRODUCTS_OWNED_MAX, REFUND_WINDOW_DAYS, REPORT_NOTE_MAX, REVIEW_AVERAGE_MIN_COUNT, REVIEW_HELPFUL_POINTS_MAX, REVIEW_REPLY_MAX, REVIEW_TEXT_MAX, REVIEW_TEXT_MIN, REVIEWS_REWARDED_PER_DAY, SAVED_REPLIES_MAX, SAVED_REPLY_BODY_MAX, SAVED_REPLY_TITLE_MAX, SKILLS_MAX, STATE_MAX, SUSPENSION_REASON_MAX, SUSPENSION_REASON_MIN, TEAM_SIZE_MAX, TEAM_SIZE_MIN, TICKET_MESSAGE_MAX, TICKET_MESSAGES_MAX, TICKET_SUBJECT_MAX, TICKET_SUBJECT_MIN, UPLOAD_MAX_BYTES, VENTURE_NAME_MAX, VENTURE_TAGLINE_MAX, } from './core/limits.js';
|
|
22
|
+
export { ABOUT_MAX, BILLING_ADDRESS_MAX, BILLING_NAME_MAX, BILLING_REASON_MAX, BILLING_REASON_MIN, CHAT_PARTICIPANTS_MAX, CITY_MAX, COMMUNITY_BAN_REASON_MAX, COMMUNITY_DECLINE_REASON_MAX, COMMUNITY_DECLINE_REASON_MIN, COMMUNITY_DESCRIPTION_MAX, COMMUNITY_NAME_MAX, COMMUNITY_NAME_MIN, COMMUNITY_RULE_MAX, COMMUNITY_RULES_MAX, COMMUNITY_SUGGESTION_WHY_MAX, CONTRIBUTION_LEADERBOARD_SIZE, CONTRIBUTION_PAIR_POINTS_MAX, CONTRIBUTION_RECENT_DAYS, COUNTRY_MAX, COUPON_CODE_MAX, COUPON_CODE_MIN, COUPON_LABEL_MAX, DISCOVER_FILTER_VALUES_MAX, DISCOVER_TEXT_MAX, DISPLAY_NAME_MAX, ERASURE_RETENTION_DAYS, FOUNDED_YEAR_MIN, GOALS_MIN, HEADLINE_MAX, LINK_PREVIEW_DESCRIPTION_MAX, LINK_PREVIEW_TITLE_MAX, LINK_URL_MAX, MEDIA_ALT_MAX, MEDIA_MAX_INPUT_PIXELS, MEDIA_PENDING_MAX, MEDIA_PLACEHOLDER_MAX, MEDIA_UNATTACHED_TTL_HOURS, MEMBER_SEARCH_MAX, MODERATION_EXCERPT_MAX, MODERATION_NOTE_MAX, NOTIFICATION_EXCERPT_MAX, NOTIFICATION_RETENTION_DAYS, ORDER_TTL_MINUTES, PAGE_SIZE_DEFAULT, PAGE_SIZE_MAX, PLAN_AHEAD_MAX_YEARS, PLAN_REMINDER_DAYS, PRODUCT_ASK_OPEN_DAYS, PRODUCT_CAPTION_MAX, PRODUCT_DESCRIPTION_MAX, PRODUCT_NAME_MAX, PRODUCT_SCREENSHOTS_MAX, PRODUCT_TAGLINE_MAX, PRODUCT_TEAM_SHOWN, PRODUCTS_LIVE_SAFETY_MAX, PRODUCTS_OWNED_MAX, REFUND_WINDOW_DAYS, REPORT_NOTE_MAX, REVIEW_AVERAGE_MIN_COUNT, REVIEW_HELPFUL_POINTS_MAX, REVIEW_REPLY_MAX, REVIEW_TEXT_MAX, REVIEW_TEXT_MIN, REVIEWS_REWARDED_PER_DAY, refundWindowEndsAt, SAVED_REPLIES_MAX, SAVED_REPLY_BODY_MAX, SAVED_REPLY_TITLE_MAX, SKILLS_MAX, STATE_MAX, SUSPENSION_REASON_MAX, SUSPENSION_REASON_MIN, TEAM_SIZE_MAX, TEAM_SIZE_MIN, TICKET_MESSAGE_MAX, TICKET_MESSAGES_MAX, TICKET_SUBJECT_MAX, TICKET_SUBJECT_MIN, UPLOAD_MAX_BYTES, VENTURE_NAME_MAX, VENTURE_TAGLINE_MAX, } from './core/limits.js';
|
|
23
23
|
// ─── Response envelopes ──────────────────────────────────────────────────────
|
|
24
24
|
export { apiErrorDetailsSchema, apiErrorSchema, errorResponseSchema, idResponseSchema, paginatedSchema, successResponseSchema, } from './core/responses.js';
|
|
25
25
|
// ─── Validation: message keys and the wire shape of a failure ───────────────
|
|
@@ -61,4 +61,6 @@ export { createTicketBodySchema, replyTicketBodySchema, savedReplyBodySchema, sa
|
|
|
61
61
|
export { setMemberCapabilitiesBodySchema, setMemberCapabilitiesResponseSchema, setMemberRolesBodySchema, setMemberRolesResponseSchema, teamMemberParamsSchema, teamMemberSchema, teamPageSchema, } from './domains/team/team.js';
|
|
62
62
|
// ─── Uploads: asking for a slot, completing it, discarding it ───────────────
|
|
63
63
|
export { UPLOAD_CONTENT_TYPES, UPLOAD_KEY_EXTENSIONS, UPLOAD_KEY_MAX_CHARS, UPLOAD_KEY_PATTERN, uploadKeyExtensionSchema, uploadKeySchema, uploadParamsSchema, uploadPresignBodySchema, uploadPresignResponseSchema, } from './domains/uploads/uploads.js';
|
|
64
|
+
// ─── Waitlist: joining before the launch, and your place on it (0.15.0) ─────
|
|
65
|
+
export { myWaitlistSchema, WAITLIST_REFUSAL_VALUES, waitlistPlaceSchema, waitlistRefusalSchema, waitlistStatusSchema, } from './domains/waitlist/waitlist.js';
|
|
64
66
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * founder-schema — Shared Zod schemas for Founder Circle\n *\n * The single source of truth consumed by founder-circle-backend, the web\n * client and the app client: every request, every response, every limit,\n * every error code. Publishing rule (TEAM.md 5a): the version only ever moves\n * on `dev`, never on a feat branch.\n *\n * @module founder-schema\n */\n\n// ─── Access: roles, permissions (CASL), the MPIN and the active role ────────\nexport {\n type ChangeMpinBody,\n changeMpinBodySchema,\n type MeAccessResponse,\n MPIN_LENGTH,\n MPIN_LOCK_MS,\n MPIN_MAX_ATTEMPTS,\n meAccessResponseSchema,\n mpinSchema,\n type SetMpinBody,\n type SwitchRoleBody,\n setMpinBodySchema,\n switchRoleBodySchema,\n} from './access/access.js';\nexport {\n CAPABILITY_GRANTED_BY,\n CAPABILITY_VALUES,\n type Capability,\n canGrantCapability,\n capabilitySchema,\n} from './access/capabilities.js';\nexport {\n ACTION_VALUES,\n type Action,\n type AppAbility,\n actionSchema,\n type PackedRules,\n packedRulesSchema,\n SUBJECT_VALUES,\n type Subject,\n type SubjectFields,\n type SubjectInstance,\n subjectSchema,\n} from './access/permissions.js';\nexport {\n ACTIVE_ROLE_TTL_MS,\n canGrantRole,\n isPlatformRole,\n MEMBER_ROLE,\n PLATFORM_ROLE_VALUES,\n type PlatformRole,\n platformRoleSchema,\n ROLE_GRANTED_BY,\n ROLE_VALUES,\n type Role,\n roleSchema,\n} from './access/roles.js';\nexport {\n ACCESS_REASON_VALUES,\n type AccessReason,\n accessReasonOf,\n accessReasonSchema,\n STANDING_VALUES,\n type Standing,\n standingSchema,\n} from './access/standing.js';\n// ─── Common helpers and enums ────────────────────────────────────────────────\nexport {\n type CoordinatesQuery,\n type CoordinatesQueryInput,\n chosenUsernameSchema,\n coordinatesQuerySchema,\n displayNameSchema,\n emptyStringToUndefined,\n type FounderLocation,\n GENDER_VALUES,\n type Gender,\n GOAL_VALUES,\n type Goal,\n genderSchema,\n goalSchema,\n type HttpUrl,\n httpUrlOnHosts,\n httpUrlSchema,\n INDUSTRY_VALUES,\n type Industry,\n industrySchema,\n isReservedUsername,\n isUrlOnHost,\n locationSchema,\n multiValueQuery,\n type ObjectIdString,\n objectIdSchema,\n optionalTrimmedString,\n type PaginationQuery,\n type PaginationQueryInput,\n type Phone,\n paginationQuerySchema,\n phoneSchema,\n RESERVED_USERNAMES,\n type SafeUrl,\n SKILL_VALUES,\n type Skill,\n STARTUP_STAGE_VALUES,\n type StartupStage,\n type SuggestedLocation,\n safeUrlSchema,\n skillSchema,\n startupStageSchema,\n suggestedLocationSchema,\n USERNAME_MAX,\n USERNAME_MIN,\n type Username,\n usernameSchema,\n YOUTUBE_HOSTS,\n youtubeVideoId,\n} from './core/common.js';\n// ─── Error codes ─────────────────────────────────────────────────────────────\nexport {\n API_ERROR_CODE,\n API_ERROR_CODE_VALUES,\n type ApiErrorCode,\n apiErrorCodeSchema,\n} from './core/errors.js';\n// ─── Limits: every length, size and count, by name ──────────────────────────\nexport {\n ABOUT_MAX,\n BILLING_ADDRESS_MAX,\n BILLING_NAME_MAX,\n BILLING_REASON_MAX,\n BILLING_REASON_MIN,\n CHAT_PARTICIPANTS_MAX,\n CITY_MAX,\n COMMUNITY_BAN_REASON_MAX,\n COMMUNITY_DECLINE_REASON_MAX,\n COMMUNITY_DECLINE_REASON_MIN,\n COMMUNITY_DESCRIPTION_MAX,\n COMMUNITY_NAME_MAX,\n COMMUNITY_NAME_MIN,\n COMMUNITY_RULE_MAX,\n COMMUNITY_RULES_MAX,\n COMMUNITY_SUGGESTION_WHY_MAX,\n CONTRIBUTION_LEADERBOARD_SIZE,\n CONTRIBUTION_PAIR_POINTS_MAX,\n CONTRIBUTION_RECENT_DAYS,\n COUNTRY_MAX,\n COUPON_CODE_MAX,\n COUPON_CODE_MIN,\n COUPON_LABEL_MAX,\n DISCOVER_FILTER_VALUES_MAX,\n DISCOVER_TEXT_MAX,\n DISPLAY_NAME_MAX,\n ERASURE_RETENTION_DAYS,\n FOUNDED_YEAR_MIN,\n GOALS_MIN,\n HEADLINE_MAX,\n LINK_PREVIEW_DESCRIPTION_MAX,\n LINK_PREVIEW_TITLE_MAX,\n LINK_URL_MAX,\n MEDIA_ALT_MAX,\n MEDIA_MAX_INPUT_PIXELS,\n MEDIA_PENDING_MAX,\n MEDIA_PLACEHOLDER_MAX,\n MEDIA_UNATTACHED_TTL_HOURS,\n MEMBER_SEARCH_MAX,\n MODERATION_EXCERPT_MAX,\n MODERATION_NOTE_MAX,\n NOTIFICATION_EXCERPT_MAX,\n NOTIFICATION_RETENTION_DAYS,\n ORDER_TTL_MINUTES,\n PAGE_SIZE_DEFAULT,\n PAGE_SIZE_MAX,\n PLAN_AHEAD_MAX_YEARS,\n PLAN_REMINDER_DAYS,\n PRODUCT_ASK_OPEN_DAYS,\n PRODUCT_CAPTION_MAX,\n PRODUCT_DESCRIPTION_MAX,\n PRODUCT_NAME_MAX,\n PRODUCT_SCREENSHOTS_MAX,\n PRODUCT_TAGLINE_MAX,\n PRODUCT_TEAM_SHOWN,\n PRODUCTS_LIVE_SAFETY_MAX,\n PRODUCTS_OWNED_MAX,\n REFUND_WINDOW_DAYS,\n REPORT_NOTE_MAX,\n REVIEW_AVERAGE_MIN_COUNT,\n REVIEW_HELPFUL_POINTS_MAX,\n REVIEW_REPLY_MAX,\n REVIEW_TEXT_MAX,\n REVIEW_TEXT_MIN,\n REVIEWS_REWARDED_PER_DAY,\n SAVED_REPLIES_MAX,\n SAVED_REPLY_BODY_MAX,\n SAVED_REPLY_TITLE_MAX,\n SKILLS_MAX,\n STATE_MAX,\n SUSPENSION_REASON_MAX,\n SUSPENSION_REASON_MIN,\n TEAM_SIZE_MAX,\n TEAM_SIZE_MIN,\n TICKET_MESSAGE_MAX,\n TICKET_MESSAGES_MAX,\n TICKET_SUBJECT_MAX,\n TICKET_SUBJECT_MIN,\n UPLOAD_MAX_BYTES,\n VENTURE_NAME_MAX,\n VENTURE_TAGLINE_MAX,\n} from './core/limits.js';\n// ─── Response envelopes ──────────────────────────────────────────────────────\nexport {\n type ApiError,\n type ApiErrorDetails,\n apiErrorDetailsSchema,\n apiErrorSchema,\n type ErrorResponse,\n errorResponseSchema,\n type IdResponse,\n idResponseSchema,\n paginatedSchema,\n successResponseSchema,\n} from './core/responses.js';\n// ─── Validation: message keys and the wire shape of a failure ───────────────\nexport {\n REQUEST_PART_VALUES,\n type RequestPart,\n requestPartSchema,\n toValidationIssues,\n VALIDATION_MESSAGE,\n type ValidationIssue,\n type ValidationMessageKey,\n validationIssueSchema,\n} from './core/validation.js';\n// ─── Account ─────────────────────────────────────────────────────────────────\nexport {\n type DeleteAccountResponse,\n deleteAccountResponseSchema,\n} from './domains/account/account.js';\nexport {\n AUDIT_ACTION_VALUES,\n type AuditAction,\n type AuditActor,\n type AuditEntry,\n type AuditPage,\n auditActionSchema,\n auditActorSchema,\n auditEntrySchema,\n auditPageSchema,\n} from './domains/audit/audit.js';\n// ─── Billing: buying, paying, invoices, refunds, coupons (0.12.0) ───────────\nexport {\n type BillingDetails,\n billingDetailsSchema,\n COUPON_TARGET_VALUES,\n type ConfirmOrderBody,\n type Coupon,\n type CouponBenefit,\n type CouponList,\n type CouponParams,\n type CouponTarget,\n type CreateCouponBody,\n type CreateOrderBody,\n type CreateOrderResponse,\n type CreditNote,\n confirmOrderBodySchema,\n couponBenefitSchema,\n couponCodeSchema,\n couponListSchema,\n couponParamsSchema,\n couponSchema,\n couponTargetSchema,\n createCouponBodySchema,\n createOrderBodySchema,\n createOrderResponseSchema,\n creditNoteSchema,\n GST_RATE_PERCENT,\n GST_STATE_CODE_VALUES,\n GST_STATES,\n type GstStateCode,\n gstinChecksumValid,\n gstinSchema,\n gstStateCodeSchema,\n gstStateName,\n type Invoice,\n type InvoiceParty,\n invoicePartySchema,\n invoiceSchema,\n ORDER_STATUS_VALUES,\n type OrderParams,\n type OrderState,\n type OrderStatus,\n orderParamsSchema,\n orderStateSchema,\n orderStatusSchema,\n type Payer,\n type PaymentDetail,\n type PaymentPage,\n type PaymentSummary,\n type PlanEffect,\n PURCHASE_KIND_VALUES,\n type PurchaseItem,\n type PurchaseKind,\n payerSchema,\n paymentDetailSchema,\n paymentPageSchema,\n paymentSummarySchema,\n planEffectSchema,\n purchaseItemSchema,\n purchaseKindSchema,\n type Quote,\n type QuoteBody,\n quoteBodySchema,\n quoteSchema,\n type RefundPaymentBody,\n refundPaymentBodySchema,\n type SetMembershipBody,\n type StaffPaymentDetail,\n type StaffPaymentPage,\n type StaffPaymentSummary,\n type StaffPaymentsQuery,\n type StaffPaymentsQueryInput,\n setMembershipBodySchema,\n staffPaymentDetailSchema,\n staffPaymentPageSchema,\n staffPaymentSummarySchema,\n staffPaymentsQuerySchema,\n type TaxSplit,\n taxSplitSchema,\n type UpdateCouponBody,\n updateCouponBodySchema,\n} from './domains/billing/billing.js';\n// ─── Chat ────────────────────────────────────────────────────────────────────\nexport {\n CHAT_OPENED_VIA_VALUES,\n CHAT_PRODUCT_ID,\n CHAT_REACH_VALUES,\n CHAT_SOCKET_REAUTH_SECONDS,\n CHAT_TOKEN_REFRESH_MARGIN_SECONDS,\n type ChatAuthToken,\n type ChatConfig,\n type ChatInvitation,\n type ChatInvitationBody,\n type ChatOpenedVia,\n type ChatParticipant,\n type ChatParticipantsBody,\n type ChatParticipantsResponse,\n type ChatProductId,\n type ChatReach,\n type ChatReachKind,\n type ChatReachParams,\n chatAuthTokenSchema,\n chatConfigSchema,\n chatInvitationBodySchema,\n chatInvitationSchema,\n chatOpenedViaSchema,\n chatParticipantSchema,\n chatParticipantsBodySchema,\n chatParticipantsResponseSchema,\n chatProductIdSchema,\n chatReachKindSchema,\n chatReachParamsSchema,\n chatReachSchema,\n MESSAGE_FROM_VALUES,\n type MessageFrom,\n type MessagingSettings,\n messageFromSchema,\n messagingSettingsSchema,\n type OpenChatBody,\n type OpenChatResponse,\n openChatBodySchema,\n openChatResponseSchema,\n} from './domains/chat/chat.js';\n// ─── Communities: official spaces, their members and suggestions (0.9.0) ────\nexport {\n type BanCommunityMemberBody,\n banCommunityMemberBodySchema,\n COMMUNITY_ANNOUNCE_INTERVAL_MS,\n COMMUNITY_MEMBER_STATUS_VALUES,\n COMMUNITY_PINS_MAX,\n COMMUNITY_ROLE_VALUES,\n COMMUNITY_STATUS_VALUES,\n COMMUNITY_SUGGESTION_STATUS_VALUES,\n COMMUNITY_SUGGESTIONS_OPEN_MAX,\n COMMUNITY_TOPICS_MAX,\n COMMUNITY_VISIBILITY_RANK,\n COMMUNITY_VISIBILITY_VALUES,\n type Community,\n type CommunityBan,\n type CommunityBanPage,\n type CommunityCard,\n type CommunityCardPage,\n type CommunityCardViewer,\n type CommunityChip,\n type CommunityCommentParams,\n type CommunityContentParams,\n type CommunityDiscoverQuery,\n type CommunityDiscoverQueryInput,\n type CommunityInvite,\n type CommunityInvites,\n type CommunityMember,\n type CommunityMemberPage,\n type CommunityMemberParams,\n type CommunityMemberStatus,\n type CommunityMembersQuery,\n type CommunityMembersQueryInput,\n type CommunityParams,\n type CommunityPendingInvite,\n type CommunityPendingInvitePage,\n type CommunityRequest,\n type CommunityRequestPage,\n type CommunityRole,\n type CommunityStatus,\n type CommunitySuggestion,\n type CommunitySuggestionPage,\n type CommunitySuggestionParams,\n type CommunitySuggestionStatus,\n type CommunitySuggestionsQuery,\n type CommunitySuggestionsQueryInput,\n type CommunityViewer,\n type CommunityVisibility,\n type CreateCommunityBody,\n type CreateCommunitySuggestionBody,\n communityBanPageSchema,\n communityBanSchema,\n communityCardPageSchema,\n communityCardSchema,\n communityCardViewerSchema,\n communityChangeExposes,\n communityChipSchema,\n communityCommentParamsSchema,\n communityContentParamsSchema,\n communityDiscoverQuerySchema,\n communityInviteSchema,\n communityInvitesSchema,\n communityMemberPageSchema,\n communityMemberParamsSchema,\n communityMemberSchema,\n communityMemberStatusSchema,\n communityMembersQuerySchema,\n communityParamsSchema,\n communityPendingInvitePageSchema,\n communityPendingInviteSchema,\n communityRequestPageSchema,\n communityRequestSchema,\n communityRoleSchema,\n communitySchema,\n communityStatusSchema,\n communitySuggestionPageSchema,\n communitySuggestionParamsSchema,\n communitySuggestionSchema,\n communitySuggestionStatusSchema,\n communitySuggestionsQuerySchema,\n communityViewerSchema,\n communityVisibilitySchema,\n createCommunityBodySchema,\n createCommunitySuggestionBodySchema,\n type DeclineCommunitySuggestionBody,\n declineCommunitySuggestionBodySchema,\n type InviteCommunityMemberBody,\n inviteCommunityMemberBodySchema,\n type PinCommunityContentBody,\n pinCommunityContentBodySchema,\n type SetCommunityIconBody,\n type SetCommunityMemberRoleBody,\n type SetCommunityStatusBody,\n type SetCommunityVisibilityBody,\n setCommunityIconBodySchema,\n setCommunityMemberRoleBodySchema,\n setCommunityStatusBodySchema,\n setCommunityVisibilityBodySchema,\n type UpdateCommunityBody,\n updateCommunityBodySchema,\n} from './domains/communities/communities.js';\n// ─── Contribution: the help a member gives, recognised ───────────────────────\nexport {\n CONTRIBUTION_AWARDED_KIND_VALUES,\n CONTRIBUTION_KIND_VALUES,\n CONTRIBUTION_PERIOD_VALUES,\n CONTRIBUTION_POINTS,\n type ContributionEntry,\n type ContributionKind,\n type ContributionLeaderboard,\n type ContributionLeaderboardQuery,\n type ContributionLeaderEntry,\n type ContributionPage,\n type ContributionPeriod,\n type ContributionYou,\n contributionEntrySchema,\n contributionKindSchema,\n contributionLeaderboardQuerySchema,\n contributionLeaderboardSchema,\n contributionLeaderEntrySchema,\n contributionPageSchema,\n contributionPeriodSchema,\n contributionYouSchema,\n} from './domains/contributions/contributions.js';\n// ─── Staff: overview, members, moderation, support, the team, the audit log ─\nexport { type Dashboard, dashboardSchema } from './domains/dashboard/dashboard.js';\n// ─── Discover ────────────────────────────────────────────────────────────────\nexport {\n type DiscoverFacets,\n type DiscoverPage,\n type DiscoverQuery,\n type DiscoverQueryInput,\n discoverFacetsSchema,\n discoverPageSchema,\n discoverQuerySchema,\n} from './domains/discover/discover.js';\n// ─── Feed: post, poll, comment, reaction ─────────────────────────────────────\nexport {\n type AttachedMedia,\n type AuthorParams,\n attachedMediaSchema,\n authorParamsSchema,\n type CastVoteBody,\n type CastVoteResponse,\n COMMENT_MAX_BODY_CHARS,\n CONTENT_KIND_VALUES,\n type CommentHelpfulResponse,\n type CommentPage,\n type CommentParams,\n type CommentsQuery,\n type CommentsQueryInput,\n type ContentKind,\n type ContentParams,\n type ContentTargetParams,\n type ContentViewerState,\n type CreateCommentBody,\n type CreatePollBody,\n type CreatePostBody,\n type CreateReportBody,\n type CreateReportResponse,\n type CreateRepostBody,\n castVoteBodySchema,\n castVoteResponseSchema,\n commentHelpfulResponseSchema,\n commentPageSchema,\n commentParamsSchema,\n commentsQuerySchema,\n contentKindSchema,\n contentParamsSchema,\n contentTargetParamsSchema,\n contentViewerStateSchema,\n createCommentBodySchema,\n createPollBodySchema,\n createPostBodySchema,\n createReportBodySchema,\n createReportResponseSchema,\n createRepostBodySchema,\n EDIT_WINDOW_MS,\n ENGAGEMENT_TARGET_KIND_VALUES,\n type EngagementTargetKind,\n type EngagementTargetParams,\n engagementTargetKindSchema,\n engagementTargetParamsSchema,\n FEED_SORT_VALUES,\n type FeedAuthor,\n type FeedComment,\n type FeedImage,\n type FeedItem,\n type FeedItemParams,\n type FeedMedia,\n type FeedPage,\n type FeedPoll,\n type FeedPost,\n type FeedQuery,\n type FeedQueryInput,\n type FeedSort,\n type FeedVideo,\n feedAuthorSchema,\n feedCommentSchema,\n feedImageSchema,\n feedItemParamsSchema,\n feedItemSchema,\n feedMediaSchema,\n feedPageSchema,\n feedPollSchema,\n feedPostSchema,\n feedQuerySchema,\n feedSortSchema,\n feedVideoSchema,\n type LinkPreview,\n linkPreviewSchema,\n MAX_TOPICS,\n type PickableReaction,\n type PinnedItems,\n POLL_MAX_DURATION_MS,\n POLL_MAX_OPTIONS,\n POLL_MIN_DURATION_MS,\n POLL_MIN_OPTIONS,\n POLL_OPTION_MAX_CHARS,\n POLL_QUESTION_MAX_CHARS,\n POST_MAX_BODY_CHARS,\n POST_MAX_MEDIA,\n type PollOption,\n type PollParams,\n type ProductFeedbackItem,\n type ProductFeedbackPage,\n pickableReactionSchema,\n pinnedItemsSchema,\n pollOptionSchema,\n pollParamsSchema,\n productFeedbackItemSchema,\n productFeedbackPageSchema,\n REACTION_PICKER_VALUES,\n REACTION_TYPE_VALUES,\n REPORT_REASON_VALUES,\n REPORT_TARGET_KIND_VALUES,\n type ReactionCounts,\n type ReactionsQuery,\n type ReactionsQueryInput,\n type ReactionType,\n type Reactor,\n type ReactorPage,\n type ReportReason,\n type ReportTargetKind,\n type RepostedSource,\n reactionCountsSchema,\n reactionsQuerySchema,\n reactionTypeSchema,\n reactorPageSchema,\n reactorSchema,\n reportReasonSchema,\n reportTargetKindSchema,\n repostedSourceSchema,\n type SetReactionBody,\n type SetReactionResponse,\n setReactionBodySchema,\n setReactionResponseSchema,\n type ToggleBookmarkResponse,\n toggleBookmarkResponseSchema,\n type UpdateCommentBody,\n type UpdatePostBody,\n updateCommentBodySchema,\n updatePostBodySchema,\n type ViewerState,\n viewerStateSchema,\n} from './domains/feed/feed.js';\n// ─── Media: what an uploaded image becomes ──────────────────────────────────\nexport {\n MEDIA_PURPOSE_VALUES,\n MEDIA_SIZES,\n MEDIA_UPLOAD_CONTENT_TYPES,\n MEDIA_VARIANTS_MAX,\n type MediaImage,\n type MediaPurpose,\n type MediaUploadContentType,\n type MediaVariant,\n mediaImageSchema,\n mediaPurposeSchema,\n mediaUploadContentTypeSchema,\n mediaVariantSchema,\n type UploadedMedia,\n uploadedMediaSchema,\n} from './domains/media/media.js';\nexport {\n MEMBER_STATUS_VALUES,\n type MemberDetail,\n type MemberDirectoryPage,\n type MemberDirectoryQuery,\n type MemberDirectoryQueryInput,\n type MemberParams,\n type MemberStatus,\n type MemberSummary,\n memberDetailSchema,\n memberDirectoryPageSchema,\n memberDirectoryQuerySchema,\n memberParamsSchema,\n memberStatusSchema,\n memberSummarySchema,\n type SuspendMemberBody,\n type Suspension,\n suspendMemberBodySchema,\n suspensionSchema,\n} from './domains/members/members.js';\n// ─── Membership and plans, as a member holds them (0.12.0) ──────────────────\nexport {\n FOUNDING_PLACES,\n MEMBER_LIMIT_VALUES,\n MEMBERSHIP_KIND_VALUES,\n MEMBERSHIP_PRICE_PAISE,\n type MeMembership,\n type Membership,\n type MembershipKind,\n meMembershipSchema,\n membershipKindSchema,\n membershipSchema,\n type Paise,\n PLAN_PERIOD_VALUES,\n PLAN_SPECS,\n PLAN_TIER_RANK,\n PLAN_TIER_VALUES,\n type PlanBlock,\n type PlanCatalog,\n type PlanLimits,\n type PlanOffer,\n type PlanPeriod,\n type PlanTier,\n paiseSchema,\n planBlockSchema,\n planCatalogSchema,\n planLimitsSchema,\n planOfferSchema,\n planPeriodSchema,\n planTierSchema,\n} from './domains/membership/membership.js';\nexport {\n MODERATION_ACTION_VALUES,\n MODERATION_ACTIONS_BY_TARGET_KIND,\n MODERATION_CONTEXT_KIND_VALUES,\n MODERATION_STATE_VALUES,\n type ModerationAction,\n type ModerationContentQuery,\n type ModerationContentQueryInput,\n type ModerationContextKind,\n type ModerationDecisionBody,\n type ModerationItem,\n type ModerationPage,\n type ModerationState,\n type ModerationTargetParams,\n moderationActionSchema,\n moderationContentQuerySchema,\n moderationContextKindSchema,\n moderationDecisionBodySchema,\n moderationItemSchema,\n moderationPageSchema,\n moderationStateSchema,\n moderationTargetParamsSchema,\n} from './domains/moderation/moderation.js';\n// ─── Notifications: the bell ─────────────────────────────────────────────────\nexport {\n NOTIFICATION_KIND_VALUES,\n NOTIFICATION_PREFERENCE_OF,\n NOTIFICATION_PREFERENCE_VALUES,\n type Notification,\n type NotificationKind,\n type NotificationPage,\n type NotificationParams,\n type NotificationPreference,\n type NotificationPreferences,\n type NotificationUnreadCount,\n notificationKindSchema,\n notificationPageSchema,\n notificationParamsSchema,\n notificationPreferenceSchema,\n notificationPreferencesSchema,\n notificationSchema,\n notificationUnreadCountSchema,\n type UpdateNotificationPreferencesBody,\n updateNotificationPreferencesBodySchema,\n} from './domains/notifications/notifications.js';\n// ─── Onboarding ──────────────────────────────────────────────────────────────\nexport {\n ageInYears,\n BUSINESS_TYPE_VALUES,\n type BusinessType,\n businessTypeSchema,\n type CompleteOnboardingBody,\n type CompleteOnboardingBodyInput,\n type CompleteOnboardingResponse,\n type ContactLinks,\n completeOnboardingBodySchema,\n completeOnboardingResponseSchema,\n contactLinksSchema,\n type DateOfBirth,\n dateOfBirthSchema,\n EMPTY_ONBOARDING_VENTURE,\n FOUNDER_ONBOARDING_STEPS,\n GUIDELINES_VERSION,\n guidelinesVersionSchema,\n INTERESTS_MAX,\n INTERESTS_MIN,\n type IsoDate,\n isoDateSchema,\n MAX_AGE_YEARS,\n MIN_AGE_YEARS,\n ONBOARDING_DRAFT_KEYS,\n ONBOARDING_STEP_FIELDS,\n ONBOARDING_STEP_KEYS,\n ONBOARDING_STEP_SCHEMAS,\n ONBOARDING_TOTAL_STEPS,\n type OnboardingDraft,\n type OnboardingDraftKey,\n type OnboardingField,\n type OnboardingForm,\n type OnboardingProgress,\n type OnboardingProgressUpdate,\n type OnboardingStatus,\n type OnboardingStepBody,\n type OnboardingStepConfig,\n type OnboardingStepKey,\n onboardingDraftKeySchema,\n onboardingDraftSchema,\n onboardingFormSchema,\n onboardingProgressSchema,\n onboardingProgressUpdateSchema,\n onboardingStatusSchema,\n readOnboardingDraft,\n TEAM_SIZE_DIGITS_MAX,\n TOPIC_CATEGORIES,\n TOPIC_CATEGORY_KEYS,\n TOPIC_VALUES,\n type Topic,\n type TopicCategory,\n type TopicCategoryKey,\n topicSchema,\n} from './domains/onboarding/onboarding.js';\n// ─── Products: what founders build, and the help around it ───────────────────\nexport {\n type CreateProductBody,\n createProductBodySchema,\n type InviteProductMemberBody,\n inviteProductMemberBodySchema,\n type MyProducts,\n myProductsSchema,\n PRODUCT_ASK_VALUES,\n PRODUCT_INVITABLE_ROLE_VALUES,\n PRODUCT_LISTING_REQUIREMENT_VALUES,\n PRODUCT_PAUSED_BY_VALUES,\n PRODUCT_PLATFORM_VALUES,\n PRODUCT_SORT_VALUES,\n PRODUCT_STAGE_VALUES,\n PRODUCT_STATUS_VALUES,\n PRODUCT_TEAM_ROLE_VALUES,\n PRODUCT_TOPICS_MAX,\n PRODUCT_VISIBILITY_VALUES,\n type Product,\n type ProductAsk,\n type ProductCard,\n type ProductCardPage,\n type ProductChip,\n type ProductDiscoverQuery,\n type ProductDiscoverQueryInput,\n type ProductFacets,\n type ProductFeedbackQuery,\n type ProductFeedbackQueryInput,\n type ProductInvitableRole,\n type ProductInvite,\n type ProductInvites,\n type ProductLinks,\n type ProductListingRequirement,\n type ProductMemberParams,\n type ProductParams,\n type ProductPausedBy,\n type ProductPendingInvite,\n type ProductPendingInvitePage,\n type ProductPlatform,\n type ProductRating,\n type ProductScreenshot,\n type ProductScreenshotInput,\n type ProductSort,\n type ProductStage,\n type ProductStatus,\n type ProductsByMemberParams,\n type ProductTeamMember,\n type ProductTeamPage,\n type ProductTeamRole,\n type ProductTester,\n type ProductTesterPage,\n type ProductUpvoteResponse,\n type ProductViewer,\n type ProductVisibility,\n productAskSchema,\n productCardPageSchema,\n productCardSchema,\n productCardViewerSchema,\n productChipSchema,\n productDiscoverQuerySchema,\n productFacetsSchema,\n productFeedbackQuerySchema,\n productInvitableRoleSchema,\n productInviteSchema,\n productInvitesSchema,\n productLinksSchema,\n productListingRequirementSchema,\n productMemberParamsSchema,\n productParamsSchema,\n productPausedBySchema,\n productPendingInvitePageSchema,\n productPendingInviteSchema,\n productPlatformSchema,\n productRatingSchema,\n productSchema,\n productScreenshotInputSchema,\n productScreenshotSchema,\n productSortSchema,\n productStageSchema,\n productStatusSchema,\n productsByMemberParamsSchema,\n productTeamMemberSchema,\n productTeamPageSchema,\n productTeamRoleSchema,\n productTesterPageSchema,\n productTesterSchema,\n productUpvoteResponseSchema,\n productVideoUrlSchema,\n productViewerSchema,\n productVisibilitySchema,\n type SetProductLiveBody,\n type SetProductLogoBody,\n type SetProductMemberRoleBody,\n type SetProductScreenshotsBody,\n type SetProductStatusBody,\n type SetProductVisibilityBody,\n setProductLiveBodySchema,\n setProductLogoBodySchema,\n setProductMemberRoleBodySchema,\n setProductScreenshotsBodySchema,\n setProductStatusBodySchema,\n setProductVisibilityBodySchema,\n type TransferProductBody,\n transferProductBodySchema,\n type UpdateProductBody,\n updateProductBodySchema,\n} from './domains/products/products.js';\n// ─── Founder profile ─────────────────────────────────────────────────────────\nexport {\n CONTACT_VISIBILITY_FIELDS,\n type ContactVisibility,\n type ContactVisibilityField,\n type ContributionSummary,\n contactVisibilitySchema,\n contributionSummarySchema,\n type FounderCard,\n type FounderLinks,\n type FounderProfile,\n founderCardSchema,\n founderLinksSchema,\n founderProfileSchema,\n type MemberByline,\n type MemberHandleParams,\n type MemberProfile,\n type MyPersonalDetails,\n memberBylineSchema,\n memberHandleParamsSchema,\n memberProfileSchema,\n myPersonalDetailsSchema,\n type PublicBirthday,\n publicBirthdaySchema,\n type SetAvatarBody,\n setAvatarBodySchema,\n type UpdateFounderProfileBody,\n type UpdateMyPersonalDetailsBody,\n type UpdateUsernameBody,\n type UsernameAvailability,\n type UsernameAvailabilityQuery,\n updateFounderProfileBodySchema,\n updateMyPersonalDetailsBodySchema,\n updateUsernameBodySchema,\n usernameAvailabilityQuerySchema,\n usernameAvailabilitySchema,\n type Venture,\n ventureSchema,\n} from './domains/profile/founder-profile.js';\n// ─── Reviews: stars and words on a product ───────────────────────────────────\nexport {\n type CreateReviewBody,\n createReviewBodySchema,\n type ProductReview,\n productReviewSchema,\n REVIEW_SORT_VALUES,\n type ReviewHelpfulResponse,\n type ReviewPage,\n type ReviewParams,\n type ReviewRating,\n type ReviewReply,\n type ReviewReplyBody,\n type ReviewSort,\n type ReviewsQuery,\n type ReviewsQueryInput,\n type ReviewViewer,\n reviewHelpfulResponseSchema,\n reviewPageSchema,\n reviewParamsSchema,\n reviewRatingSchema,\n reviewReplyBodySchema,\n reviewReplySchema,\n reviewSortSchema,\n reviewsQuerySchema,\n reviewViewerSchema,\n type UpdateReviewBody,\n updateReviewBodySchema,\n} from './domains/reviews/reviews.js';\nexport {\n type CreateTicketBody,\n createTicketBodySchema,\n type ReplyTicketBody,\n replyTicketBodySchema,\n type SavedReply,\n type SavedReplyBody,\n type SavedReplyList,\n type SavedReplyParams,\n savedReplyBodySchema,\n savedReplyListSchema,\n savedReplyParamsSchema,\n savedReplySchema,\n TICKET_ASSIGNEE_FILTER_VALUES,\n TICKET_CATEGORY_VALUES,\n TICKET_SCOPE_VALUES,\n TICKET_STATUS_VALUES,\n type TicketAssigneeFilter,\n type TicketCategory,\n type TicketDetail,\n type TicketListQuery,\n type TicketListQueryInput,\n type TicketMessage,\n type TicketPage,\n type TicketParams,\n type TicketScope,\n type TicketStatus,\n type TicketSummary,\n ticketAssigneeFilterSchema,\n ticketCategorySchema,\n ticketDetailSchema,\n ticketListQuerySchema,\n ticketMessageSchema,\n ticketPageSchema,\n ticketParamsSchema,\n ticketScopeSchema,\n ticketStatusSchema,\n ticketSummarySchema,\n} from './domains/support/support.js';\nexport {\n type SetMemberCapabilitiesBody,\n type SetMemberCapabilitiesResponse,\n type SetMemberRolesBody,\n type SetMemberRolesResponse,\n setMemberCapabilitiesBodySchema,\n setMemberCapabilitiesResponseSchema,\n setMemberRolesBodySchema,\n setMemberRolesResponseSchema,\n type TeamMember,\n type TeamMemberParams,\n type TeamPage,\n teamMemberParamsSchema,\n teamMemberSchema,\n teamPageSchema,\n} from './domains/team/team.js';\n// ─── Uploads: asking for a slot, completing it, discarding it ───────────────\nexport {\n UPLOAD_CONTENT_TYPES,\n UPLOAD_KEY_EXTENSIONS,\n UPLOAD_KEY_MAX_CHARS,\n UPLOAD_KEY_PATTERN,\n type UploadKey,\n type UploadKeyExtension,\n type UploadParams,\n type UploadPresignBody,\n type UploadPresignResponse,\n uploadKeyExtensionSchema,\n uploadKeySchema,\n uploadParamsSchema,\n uploadPresignBodySchema,\n uploadPresignResponseSchema,\n} from './domains/uploads/uploads.js';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * founder-schema — Shared Zod schemas for Founder Circle\n *\n * The single source of truth consumed by founder-circle-backend, the web\n * client and the app client: every request, every response, every limit,\n * every error code. Publishing rule (TEAM.md 5a): the version only ever moves\n * on `dev`, never on a feat branch.\n *\n * @module founder-schema\n */\n\n// ─── Access: roles, permissions (CASL), the MPIN and the active role ────────\nexport {\n type ChangeMpinBody,\n changeMpinBodySchema,\n type MeAccessResponse,\n MPIN_LENGTH,\n MPIN_LOCK_MS,\n MPIN_MAX_ATTEMPTS,\n meAccessResponseSchema,\n mpinSchema,\n type SetMpinBody,\n type SwitchRoleBody,\n setMpinBodySchema,\n switchRoleBodySchema,\n} from './access/access.js';\nexport {\n CAPABILITY_GRANTED_BY,\n CAPABILITY_VALUES,\n type Capability,\n canGrantCapability,\n capabilitySchema,\n} from './access/capabilities.js';\nexport {\n ACTION_VALUES,\n type Action,\n type AppAbility,\n actionSchema,\n type PackedRules,\n packedRulesSchema,\n SUBJECT_VALUES,\n type Subject,\n type SubjectFields,\n type SubjectInstance,\n subjectSchema,\n} from './access/permissions.js';\nexport {\n ACTIVE_ROLE_TTL_MS,\n canGrantRole,\n isPlatformRole,\n MEMBER_ROLE,\n PLATFORM_ROLE_VALUES,\n type PlatformRole,\n platformRoleSchema,\n ROLE_GRANTED_BY,\n ROLE_VALUES,\n type Role,\n roleSchema,\n} from './access/roles.js';\nexport {\n ACCESS_REASON_VALUES,\n type AccessReason,\n accessReasonOf,\n accessReasonSchema,\n STANDING_VALUES,\n type Standing,\n standingSchema,\n} from './access/standing.js';\n// ─── Common helpers and enums ────────────────────────────────────────────────\nexport {\n type CoordinatesQuery,\n type CoordinatesQueryInput,\n chosenUsernameSchema,\n coordinatesQuerySchema,\n displayNameSchema,\n emptyStringToUndefined,\n type FounderLocation,\n GENDER_VALUES,\n type Gender,\n GOAL_VALUES,\n type Goal,\n genderSchema,\n goalSchema,\n type HttpUrl,\n httpUrlOnHosts,\n httpUrlSchema,\n INDUSTRY_VALUES,\n type Industry,\n industrySchema,\n isReservedUsername,\n isUrlOnHost,\n locationSchema,\n multiValueQuery,\n type ObjectIdString,\n objectIdSchema,\n optionalTrimmedString,\n type PaginationQuery,\n type PaginationQueryInput,\n type Phone,\n paginationQuerySchema,\n phoneSchema,\n RESERVED_USERNAMES,\n type SafeUrl,\n SKILL_VALUES,\n type Skill,\n STARTUP_STAGE_VALUES,\n type StartupStage,\n type SuggestedLocation,\n safeUrlSchema,\n skillSchema,\n startupStageSchema,\n suggestedLocationSchema,\n USERNAME_MAX,\n USERNAME_MIN,\n type Username,\n usernameSchema,\n YOUTUBE_HOSTS,\n youtubeVideoId,\n} from './core/common.js';\n// ─── Error codes ─────────────────────────────────────────────────────────────\nexport {\n API_ERROR_CODE,\n API_ERROR_CODE_VALUES,\n type ApiErrorCode,\n apiErrorCodeSchema,\n} from './core/errors.js';\n// ─── Limits: every length, size and count, by name ──────────────────────────\nexport {\n ABOUT_MAX,\n BILLING_ADDRESS_MAX,\n BILLING_NAME_MAX,\n BILLING_REASON_MAX,\n BILLING_REASON_MIN,\n CHAT_PARTICIPANTS_MAX,\n CITY_MAX,\n COMMUNITY_BAN_REASON_MAX,\n COMMUNITY_DECLINE_REASON_MAX,\n COMMUNITY_DECLINE_REASON_MIN,\n COMMUNITY_DESCRIPTION_MAX,\n COMMUNITY_NAME_MAX,\n COMMUNITY_NAME_MIN,\n COMMUNITY_RULE_MAX,\n COMMUNITY_RULES_MAX,\n COMMUNITY_SUGGESTION_WHY_MAX,\n CONTRIBUTION_LEADERBOARD_SIZE,\n CONTRIBUTION_PAIR_POINTS_MAX,\n CONTRIBUTION_RECENT_DAYS,\n COUNTRY_MAX,\n COUPON_CODE_MAX,\n COUPON_CODE_MIN,\n COUPON_LABEL_MAX,\n DISCOVER_FILTER_VALUES_MAX,\n DISCOVER_TEXT_MAX,\n DISPLAY_NAME_MAX,\n ERASURE_RETENTION_DAYS,\n FOUNDED_YEAR_MIN,\n GOALS_MIN,\n HEADLINE_MAX,\n LINK_PREVIEW_DESCRIPTION_MAX,\n LINK_PREVIEW_TITLE_MAX,\n LINK_URL_MAX,\n MEDIA_ALT_MAX,\n MEDIA_MAX_INPUT_PIXELS,\n MEDIA_PENDING_MAX,\n MEDIA_PLACEHOLDER_MAX,\n MEDIA_UNATTACHED_TTL_HOURS,\n MEMBER_SEARCH_MAX,\n MODERATION_EXCERPT_MAX,\n MODERATION_NOTE_MAX,\n NOTIFICATION_EXCERPT_MAX,\n NOTIFICATION_RETENTION_DAYS,\n ORDER_TTL_MINUTES,\n PAGE_SIZE_DEFAULT,\n PAGE_SIZE_MAX,\n PLAN_AHEAD_MAX_YEARS,\n PLAN_REMINDER_DAYS,\n PRODUCT_ASK_OPEN_DAYS,\n PRODUCT_CAPTION_MAX,\n PRODUCT_DESCRIPTION_MAX,\n PRODUCT_NAME_MAX,\n PRODUCT_SCREENSHOTS_MAX,\n PRODUCT_TAGLINE_MAX,\n PRODUCT_TEAM_SHOWN,\n PRODUCTS_LIVE_SAFETY_MAX,\n PRODUCTS_OWNED_MAX,\n REFUND_WINDOW_DAYS,\n REPORT_NOTE_MAX,\n REVIEW_AVERAGE_MIN_COUNT,\n REVIEW_HELPFUL_POINTS_MAX,\n REVIEW_REPLY_MAX,\n REVIEW_TEXT_MAX,\n REVIEW_TEXT_MIN,\n REVIEWS_REWARDED_PER_DAY,\n refundWindowEndsAt,\n SAVED_REPLIES_MAX,\n SAVED_REPLY_BODY_MAX,\n SAVED_REPLY_TITLE_MAX,\n SKILLS_MAX,\n STATE_MAX,\n SUSPENSION_REASON_MAX,\n SUSPENSION_REASON_MIN,\n TEAM_SIZE_MAX,\n TEAM_SIZE_MIN,\n TICKET_MESSAGE_MAX,\n TICKET_MESSAGES_MAX,\n TICKET_SUBJECT_MAX,\n TICKET_SUBJECT_MIN,\n UPLOAD_MAX_BYTES,\n VENTURE_NAME_MAX,\n VENTURE_TAGLINE_MAX,\n} from './core/limits.js';\n// ─── Response envelopes ──────────────────────────────────────────────────────\nexport {\n type ApiError,\n type ApiErrorDetails,\n apiErrorDetailsSchema,\n apiErrorSchema,\n type ErrorResponse,\n errorResponseSchema,\n type IdResponse,\n idResponseSchema,\n paginatedSchema,\n successResponseSchema,\n} from './core/responses.js';\n// ─── Validation: message keys and the wire shape of a failure ───────────────\nexport {\n REQUEST_PART_VALUES,\n type RequestPart,\n requestPartSchema,\n toValidationIssues,\n VALIDATION_MESSAGE,\n type ValidationIssue,\n type ValidationMessageKey,\n validationIssueSchema,\n} from './core/validation.js';\n// ─── Account ─────────────────────────────────────────────────────────────────\nexport {\n type DeleteAccountResponse,\n deleteAccountResponseSchema,\n} from './domains/account/account.js';\nexport {\n AUDIT_ACTION_VALUES,\n type AuditAction,\n type AuditActor,\n type AuditEntry,\n type AuditPage,\n auditActionSchema,\n auditActorSchema,\n auditEntrySchema,\n auditPageSchema,\n} from './domains/audit/audit.js';\n// ─── Billing: buying, paying, invoices, refunds, coupons (0.12.0) ───────────\nexport {\n type BillingDetails,\n billingDetailsSchema,\n COUPON_TARGET_VALUES,\n type ConfirmOrderBody,\n type Coupon,\n type CouponBenefit,\n type CouponList,\n type CouponParams,\n type CouponTarget,\n type CreateCouponBody,\n type CreateOrderBody,\n type CreateOrderResponse,\n type CreditNote,\n confirmOrderBodySchema,\n couponBenefitSchema,\n couponCodeSchema,\n couponListSchema,\n couponParamsSchema,\n couponSchema,\n couponTargetSchema,\n createCouponBodySchema,\n createOrderBodySchema,\n createOrderResponseSchema,\n creditNoteSchema,\n GST_RATE_PERCENT,\n GST_STATE_CODE_VALUES,\n GST_STATES,\n type GstStateCode,\n gstinChecksumValid,\n gstinSchema,\n gstStateCodeSchema,\n gstStateName,\n type Invoice,\n type InvoiceParty,\n invoicePartySchema,\n invoiceSchema,\n ORDER_STATUS_VALUES,\n type OrderParams,\n type OrderState,\n type OrderStatus,\n orderParamsSchema,\n orderStateSchema,\n orderStatusSchema,\n type Payer,\n type PaymentDetail,\n type PaymentPage,\n type PaymentSummary,\n type PlanEffect,\n PURCHASE_KIND_VALUES,\n type PurchaseItem,\n type PurchaseKind,\n payerSchema,\n paymentDetailSchema,\n paymentPageSchema,\n paymentSummarySchema,\n planEffectSchema,\n purchaseItemSchema,\n purchaseKindSchema,\n type Quote,\n type QuoteBody,\n quoteBodySchema,\n quoteSchema,\n type RefundPaymentBody,\n refundPaymentBodySchema,\n type SetMembershipBody,\n type StaffPaymentDetail,\n type StaffPaymentPage,\n type StaffPaymentSummary,\n type StaffPaymentsQuery,\n type StaffPaymentsQueryInput,\n setMembershipBodySchema,\n staffPaymentDetailSchema,\n staffPaymentPageSchema,\n staffPaymentSummarySchema,\n staffPaymentsQuerySchema,\n type TaxSplit,\n taxSplitSchema,\n type UpdateCouponBody,\n updateCouponBodySchema,\n} from './domains/billing/billing.js';\n// ─── Chat ────────────────────────────────────────────────────────────────────\nexport {\n CHAT_OPENED_VIA_VALUES,\n CHAT_PRODUCT_ID,\n CHAT_REACH_VALUES,\n CHAT_SOCKET_REAUTH_SECONDS,\n CHAT_TOKEN_REFRESH_MARGIN_SECONDS,\n type ChatAuthToken,\n type ChatConfig,\n type ChatInvitation,\n type ChatInvitationBody,\n type ChatOpenedVia,\n type ChatParticipant,\n type ChatParticipantsBody,\n type ChatParticipantsResponse,\n type ChatProductId,\n type ChatReach,\n type ChatReachKind,\n type ChatReachParams,\n chatAuthTokenSchema,\n chatConfigSchema,\n chatInvitationBodySchema,\n chatInvitationSchema,\n chatOpenedViaSchema,\n chatParticipantSchema,\n chatParticipantsBodySchema,\n chatParticipantsResponseSchema,\n chatProductIdSchema,\n chatReachKindSchema,\n chatReachParamsSchema,\n chatReachSchema,\n MESSAGE_FROM_VALUES,\n type MessageFrom,\n type MessagingSettings,\n messageFromSchema,\n messagingSettingsSchema,\n type OpenChatBody,\n type OpenChatResponse,\n openChatBodySchema,\n openChatResponseSchema,\n} from './domains/chat/chat.js';\n// ─── Communities: official spaces, their members and suggestions (0.9.0) ────\nexport {\n type BanCommunityMemberBody,\n banCommunityMemberBodySchema,\n COMMUNITY_ANNOUNCE_INTERVAL_MS,\n COMMUNITY_MEMBER_STATUS_VALUES,\n COMMUNITY_PINS_MAX,\n COMMUNITY_ROLE_VALUES,\n COMMUNITY_STATUS_VALUES,\n COMMUNITY_SUGGESTION_STATUS_VALUES,\n COMMUNITY_SUGGESTIONS_OPEN_MAX,\n COMMUNITY_TOPICS_MAX,\n COMMUNITY_VISIBILITY_RANK,\n COMMUNITY_VISIBILITY_VALUES,\n type Community,\n type CommunityBan,\n type CommunityBanPage,\n type CommunityCard,\n type CommunityCardPage,\n type CommunityCardViewer,\n type CommunityChip,\n type CommunityCommentParams,\n type CommunityContentParams,\n type CommunityDiscoverQuery,\n type CommunityDiscoverQueryInput,\n type CommunityInvite,\n type CommunityInvites,\n type CommunityMember,\n type CommunityMemberPage,\n type CommunityMemberParams,\n type CommunityMemberStatus,\n type CommunityMembersQuery,\n type CommunityMembersQueryInput,\n type CommunityParams,\n type CommunityPendingInvite,\n type CommunityPendingInvitePage,\n type CommunityRequest,\n type CommunityRequestPage,\n type CommunityRole,\n type CommunityStatus,\n type CommunitySuggestion,\n type CommunitySuggestionPage,\n type CommunitySuggestionParams,\n type CommunitySuggestionStatus,\n type CommunitySuggestionsQuery,\n type CommunitySuggestionsQueryInput,\n type CommunityViewer,\n type CommunityVisibility,\n type CreateCommunityBody,\n type CreateCommunitySuggestionBody,\n communityBanPageSchema,\n communityBanSchema,\n communityCardPageSchema,\n communityCardSchema,\n communityCardViewerSchema,\n communityChangeExposes,\n communityChipSchema,\n communityCommentParamsSchema,\n communityContentParamsSchema,\n communityDiscoverQuerySchema,\n communityInviteSchema,\n communityInvitesSchema,\n communityMemberPageSchema,\n communityMemberParamsSchema,\n communityMemberSchema,\n communityMemberStatusSchema,\n communityMembersQuerySchema,\n communityParamsSchema,\n communityPendingInvitePageSchema,\n communityPendingInviteSchema,\n communityRequestPageSchema,\n communityRequestSchema,\n communityRoleSchema,\n communitySchema,\n communityStatusSchema,\n communitySuggestionPageSchema,\n communitySuggestionParamsSchema,\n communitySuggestionSchema,\n communitySuggestionStatusSchema,\n communitySuggestionsQuerySchema,\n communityViewerSchema,\n communityVisibilitySchema,\n createCommunityBodySchema,\n createCommunitySuggestionBodySchema,\n type DeclineCommunitySuggestionBody,\n declineCommunitySuggestionBodySchema,\n type InviteCommunityMemberBody,\n inviteCommunityMemberBodySchema,\n type PinCommunityContentBody,\n pinCommunityContentBodySchema,\n type SetCommunityIconBody,\n type SetCommunityMemberRoleBody,\n type SetCommunityStatusBody,\n type SetCommunityVisibilityBody,\n setCommunityIconBodySchema,\n setCommunityMemberRoleBodySchema,\n setCommunityStatusBodySchema,\n setCommunityVisibilityBodySchema,\n type UpdateCommunityBody,\n updateCommunityBodySchema,\n} from './domains/communities/communities.js';\n// ─── Contribution: the help a member gives, recognised ───────────────────────\nexport {\n CONTRIBUTION_AWARDED_KIND_VALUES,\n CONTRIBUTION_KIND_VALUES,\n CONTRIBUTION_PERIOD_VALUES,\n CONTRIBUTION_POINTS,\n type ContributionEntry,\n type ContributionKind,\n type ContributionLeaderboard,\n type ContributionLeaderboardQuery,\n type ContributionLeaderEntry,\n type ContributionPage,\n type ContributionPeriod,\n type ContributionYou,\n contributionEntrySchema,\n contributionKindSchema,\n contributionLeaderboardQuerySchema,\n contributionLeaderboardSchema,\n contributionLeaderEntrySchema,\n contributionPageSchema,\n contributionPeriodSchema,\n contributionYouSchema,\n} from './domains/contributions/contributions.js';\n// ─── Staff: overview, members, moderation, support, the team, the audit log ─\nexport { type Dashboard, dashboardSchema } from './domains/dashboard/dashboard.js';\n// ─── Discover ────────────────────────────────────────────────────────────────\nexport {\n type DiscoverFacets,\n type DiscoverPage,\n type DiscoverQuery,\n type DiscoverQueryInput,\n discoverFacetsSchema,\n discoverPageSchema,\n discoverQuerySchema,\n} from './domains/discover/discover.js';\n// ─── Feed: post, poll, comment, reaction ─────────────────────────────────────\nexport {\n type AttachedMedia,\n type AuthorParams,\n attachedMediaSchema,\n authorParamsSchema,\n type CastVoteBody,\n type CastVoteResponse,\n COMMENT_MAX_BODY_CHARS,\n CONTENT_KIND_VALUES,\n type CommentHelpfulResponse,\n type CommentPage,\n type CommentParams,\n type CommentsQuery,\n type CommentsQueryInput,\n type ContentKind,\n type ContentParams,\n type ContentTargetParams,\n type ContentViewerState,\n type CreateCommentBody,\n type CreatePollBody,\n type CreatePostBody,\n type CreateReportBody,\n type CreateReportResponse,\n type CreateRepostBody,\n castVoteBodySchema,\n castVoteResponseSchema,\n commentHelpfulResponseSchema,\n commentPageSchema,\n commentParamsSchema,\n commentsQuerySchema,\n contentKindSchema,\n contentParamsSchema,\n contentTargetParamsSchema,\n contentViewerStateSchema,\n createCommentBodySchema,\n createPollBodySchema,\n createPostBodySchema,\n createReportBodySchema,\n createReportResponseSchema,\n createRepostBodySchema,\n EDIT_WINDOW_MS,\n ENGAGEMENT_TARGET_KIND_VALUES,\n type EngagementTargetKind,\n type EngagementTargetParams,\n engagementTargetKindSchema,\n engagementTargetParamsSchema,\n FEED_SORT_VALUES,\n type FeedAuthor,\n type FeedComment,\n type FeedImage,\n type FeedItem,\n type FeedItemParams,\n type FeedMedia,\n type FeedPage,\n type FeedPoll,\n type FeedPost,\n type FeedQuery,\n type FeedQueryInput,\n type FeedSort,\n type FeedVideo,\n feedAuthorSchema,\n feedCommentSchema,\n feedImageSchema,\n feedItemParamsSchema,\n feedItemSchema,\n feedMediaSchema,\n feedPageSchema,\n feedPollSchema,\n feedPostSchema,\n feedQuerySchema,\n feedSortSchema,\n feedVideoSchema,\n type LinkPreview,\n linkPreviewSchema,\n MAX_TOPICS,\n type PickableReaction,\n type PinnedItems,\n POLL_MAX_DURATION_MS,\n POLL_MAX_OPTIONS,\n POLL_MIN_DURATION_MS,\n POLL_MIN_OPTIONS,\n POLL_OPTION_MAX_CHARS,\n POLL_QUESTION_MAX_CHARS,\n POST_MAX_BODY_CHARS,\n POST_MAX_MEDIA,\n type PollOption,\n type PollParams,\n type ProductFeedbackItem,\n type ProductFeedbackPage,\n pickableReactionSchema,\n pinnedItemsSchema,\n pollOptionSchema,\n pollParamsSchema,\n productFeedbackItemSchema,\n productFeedbackPageSchema,\n REACTION_PICKER_VALUES,\n REACTION_TYPE_VALUES,\n REPORT_REASON_VALUES,\n REPORT_TARGET_KIND_VALUES,\n type ReactionCounts,\n type ReactionsQuery,\n type ReactionsQueryInput,\n type ReactionType,\n type Reactor,\n type ReactorPage,\n type ReportReason,\n type ReportTargetKind,\n type RepostedSource,\n reactionCountsSchema,\n reactionsQuerySchema,\n reactionTypeSchema,\n reactorPageSchema,\n reactorSchema,\n reportReasonSchema,\n reportTargetKindSchema,\n repostedSourceSchema,\n type SetReactionBody,\n type SetReactionResponse,\n setReactionBodySchema,\n setReactionResponseSchema,\n type ToggleBookmarkResponse,\n toggleBookmarkResponseSchema,\n type UpdateCommentBody,\n type UpdatePostBody,\n updateCommentBodySchema,\n updatePostBodySchema,\n type ViewerState,\n viewerStateSchema,\n} from './domains/feed/feed.js';\n// ─── Media: what an uploaded image becomes ──────────────────────────────────\nexport {\n MEDIA_PURPOSE_VALUES,\n MEDIA_SIZES,\n MEDIA_UPLOAD_CONTENT_TYPES,\n MEDIA_VARIANTS_MAX,\n type MediaImage,\n type MediaPurpose,\n type MediaUploadContentType,\n type MediaVariant,\n mediaImageSchema,\n mediaPurposeSchema,\n mediaUploadContentTypeSchema,\n mediaVariantSchema,\n type UploadedMedia,\n uploadedMediaSchema,\n} from './domains/media/media.js';\nexport {\n MEMBER_STATUS_VALUES,\n type MemberDetail,\n type MemberDirectoryPage,\n type MemberDirectoryQuery,\n type MemberDirectoryQueryInput,\n type MemberParams,\n type MemberStatus,\n type MemberSummary,\n memberDetailSchema,\n memberDirectoryPageSchema,\n memberDirectoryQuerySchema,\n memberParamsSchema,\n memberStatusSchema,\n memberSummarySchema,\n type SuspendMemberBody,\n type Suspension,\n suspendMemberBodySchema,\n suspensionSchema,\n} from './domains/members/members.js';\n// ─── Membership and plans, as a member holds them (0.12.0) ──────────────────\nexport {\n FOUNDING_PLACES,\n MEMBER_LIMIT_VALUES,\n MEMBERSHIP_KIND_VALUES,\n MEMBERSHIP_PRICE_PAISE,\n type MeMembership,\n type Membership,\n type MembershipKind,\n meMembershipSchema,\n membershipKindSchema,\n membershipSchema,\n type Paise,\n PLAN_PERIOD_VALUES,\n PLAN_SPECS,\n PLAN_TIER_RANK,\n PLAN_TIER_VALUES,\n type PlanBlock,\n type PlanCatalog,\n type PlanLimits,\n type PlanOffer,\n type PlanPeriod,\n type PlanTier,\n paiseSchema,\n planBlockSchema,\n planCatalogSchema,\n planLimitsSchema,\n planOfferSchema,\n planPeriodSchema,\n planTierSchema,\n} from './domains/membership/membership.js';\nexport {\n MODERATION_ACTION_VALUES,\n MODERATION_ACTIONS_BY_TARGET_KIND,\n MODERATION_CONTEXT_KIND_VALUES,\n MODERATION_STATE_VALUES,\n type ModerationAction,\n type ModerationContentQuery,\n type ModerationContentQueryInput,\n type ModerationContextKind,\n type ModerationDecisionBody,\n type ModerationItem,\n type ModerationPage,\n type ModerationState,\n type ModerationTargetParams,\n moderationActionSchema,\n moderationContentQuerySchema,\n moderationContextKindSchema,\n moderationDecisionBodySchema,\n moderationItemSchema,\n moderationPageSchema,\n moderationStateSchema,\n moderationTargetParamsSchema,\n} from './domains/moderation/moderation.js';\n// ─── Notifications: the bell ─────────────────────────────────────────────────\nexport {\n NOTIFICATION_KIND_VALUES,\n NOTIFICATION_PREFERENCE_OF,\n NOTIFICATION_PREFERENCE_VALUES,\n type Notification,\n type NotificationKind,\n type NotificationPage,\n type NotificationParams,\n type NotificationPreference,\n type NotificationPreferences,\n type NotificationUnreadCount,\n notificationKindSchema,\n notificationPageSchema,\n notificationParamsSchema,\n notificationPreferenceSchema,\n notificationPreferencesSchema,\n notificationSchema,\n notificationUnreadCountSchema,\n type UpdateNotificationPreferencesBody,\n updateNotificationPreferencesBodySchema,\n} from './domains/notifications/notifications.js';\n// ─── Onboarding ──────────────────────────────────────────────────────────────\nexport {\n ageInYears,\n BUSINESS_TYPE_VALUES,\n type BusinessType,\n businessTypeSchema,\n type CompleteOnboardingBody,\n type CompleteOnboardingBodyInput,\n type CompleteOnboardingResponse,\n type ContactLinks,\n completeOnboardingBodySchema,\n completeOnboardingResponseSchema,\n contactLinksSchema,\n type DateOfBirth,\n dateOfBirthSchema,\n EMPTY_ONBOARDING_VENTURE,\n FOUNDER_ONBOARDING_STEPS,\n GUIDELINES_VERSION,\n guidelinesVersionSchema,\n INTERESTS_MAX,\n INTERESTS_MIN,\n type IsoDate,\n isoDateSchema,\n MAX_AGE_YEARS,\n MIN_AGE_YEARS,\n ONBOARDING_DRAFT_KEYS,\n ONBOARDING_STEP_FIELDS,\n ONBOARDING_STEP_KEYS,\n ONBOARDING_STEP_SCHEMAS,\n ONBOARDING_TOTAL_STEPS,\n type OnboardingDraft,\n type OnboardingDraftKey,\n type OnboardingField,\n type OnboardingForm,\n type OnboardingProgress,\n type OnboardingProgressUpdate,\n type OnboardingStatus,\n type OnboardingStepBody,\n type OnboardingStepConfig,\n type OnboardingStepKey,\n onboardingDraftKeySchema,\n onboardingDraftSchema,\n onboardingFormSchema,\n onboardingProgressSchema,\n onboardingProgressUpdateSchema,\n onboardingStatusSchema,\n readOnboardingDraft,\n TEAM_SIZE_DIGITS_MAX,\n TOPIC_CATEGORIES,\n TOPIC_CATEGORY_KEYS,\n TOPIC_VALUES,\n type Topic,\n type TopicCategory,\n type TopicCategoryKey,\n topicSchema,\n} from './domains/onboarding/onboarding.js';\n// ─── Products: what founders build, and the help around it ───────────────────\nexport {\n type CreateProductBody,\n createProductBodySchema,\n type InviteProductMemberBody,\n inviteProductMemberBodySchema,\n type MyProducts,\n myProductsSchema,\n PRODUCT_ASK_VALUES,\n PRODUCT_INVITABLE_ROLE_VALUES,\n PRODUCT_LISTING_REQUIREMENT_VALUES,\n PRODUCT_PAUSED_BY_VALUES,\n PRODUCT_PLATFORM_VALUES,\n PRODUCT_SORT_VALUES,\n PRODUCT_STAGE_VALUES,\n PRODUCT_STATUS_VALUES,\n PRODUCT_TEAM_ROLE_VALUES,\n PRODUCT_TOPICS_MAX,\n PRODUCT_VISIBILITY_VALUES,\n type Product,\n type ProductAsk,\n type ProductCard,\n type ProductCardPage,\n type ProductChip,\n type ProductDiscoverQuery,\n type ProductDiscoverQueryInput,\n type ProductFacets,\n type ProductFeedbackQuery,\n type ProductFeedbackQueryInput,\n type ProductInvitableRole,\n type ProductInvite,\n type ProductInvites,\n type ProductLinks,\n type ProductListingRequirement,\n type ProductMemberParams,\n type ProductParams,\n type ProductPausedBy,\n type ProductPendingInvite,\n type ProductPendingInvitePage,\n type ProductPlatform,\n type ProductRating,\n type ProductScreenshot,\n type ProductScreenshotInput,\n type ProductSort,\n type ProductStage,\n type ProductStatus,\n type ProductsByMemberParams,\n type ProductTeamMember,\n type ProductTeamPage,\n type ProductTeamRole,\n type ProductTester,\n type ProductTesterPage,\n type ProductUpvoteResponse,\n type ProductViewer,\n type ProductVisibility,\n productAskSchema,\n productCardPageSchema,\n productCardSchema,\n productCardViewerSchema,\n productChipSchema,\n productDiscoverQuerySchema,\n productFacetsSchema,\n productFeedbackQuerySchema,\n productInvitableRoleSchema,\n productInviteSchema,\n productInvitesSchema,\n productLinksSchema,\n productListingRequirementSchema,\n productMemberParamsSchema,\n productParamsSchema,\n productPausedBySchema,\n productPendingInvitePageSchema,\n productPendingInviteSchema,\n productPlatformSchema,\n productRatingSchema,\n productSchema,\n productScreenshotInputSchema,\n productScreenshotSchema,\n productSortSchema,\n productStageSchema,\n productStatusSchema,\n productsByMemberParamsSchema,\n productTeamMemberSchema,\n productTeamPageSchema,\n productTeamRoleSchema,\n productTesterPageSchema,\n productTesterSchema,\n productUpvoteResponseSchema,\n productVideoUrlSchema,\n productViewerSchema,\n productVisibilitySchema,\n type SetProductLiveBody,\n type SetProductLogoBody,\n type SetProductMemberRoleBody,\n type SetProductScreenshotsBody,\n type SetProductStatusBody,\n type SetProductVisibilityBody,\n setProductLiveBodySchema,\n setProductLogoBodySchema,\n setProductMemberRoleBodySchema,\n setProductScreenshotsBodySchema,\n setProductStatusBodySchema,\n setProductVisibilityBodySchema,\n type TransferProductBody,\n transferProductBodySchema,\n type UpdateProductBody,\n updateProductBodySchema,\n} from './domains/products/products.js';\n// ─── Founder profile ─────────────────────────────────────────────────────────\nexport {\n CONTACT_VISIBILITY_FIELDS,\n type ContactVisibility,\n type ContactVisibilityField,\n type ContributionSummary,\n contactVisibilitySchema,\n contributionSummarySchema,\n type FounderCard,\n type FounderLinks,\n type FounderProfile,\n founderCardSchema,\n founderLinksSchema,\n founderProfileSchema,\n type MemberByline,\n type MemberHandleParams,\n type MemberProfile,\n type MyPersonalDetails,\n memberBylineSchema,\n memberHandleParamsSchema,\n memberProfileSchema,\n myPersonalDetailsSchema,\n type PublicBirthday,\n publicBirthdaySchema,\n type SetAvatarBody,\n setAvatarBodySchema,\n type UpdateFounderProfileBody,\n type UpdateMyPersonalDetailsBody,\n type UpdateUsernameBody,\n type UsernameAvailability,\n type UsernameAvailabilityQuery,\n updateFounderProfileBodySchema,\n updateMyPersonalDetailsBodySchema,\n updateUsernameBodySchema,\n usernameAvailabilityQuerySchema,\n usernameAvailabilitySchema,\n type Venture,\n ventureSchema,\n} from './domains/profile/founder-profile.js';\n// ─── Reviews: stars and words on a product ───────────────────────────────────\nexport {\n type CreateReviewBody,\n createReviewBodySchema,\n type ProductReview,\n productReviewSchema,\n REVIEW_SORT_VALUES,\n type ReviewHelpfulResponse,\n type ReviewPage,\n type ReviewParams,\n type ReviewRating,\n type ReviewReply,\n type ReviewReplyBody,\n type ReviewSort,\n type ReviewsQuery,\n type ReviewsQueryInput,\n type ReviewViewer,\n reviewHelpfulResponseSchema,\n reviewPageSchema,\n reviewParamsSchema,\n reviewRatingSchema,\n reviewReplyBodySchema,\n reviewReplySchema,\n reviewSortSchema,\n reviewsQuerySchema,\n reviewViewerSchema,\n type UpdateReviewBody,\n updateReviewBodySchema,\n} from './domains/reviews/reviews.js';\nexport {\n type CreateTicketBody,\n createTicketBodySchema,\n type ReplyTicketBody,\n replyTicketBodySchema,\n type SavedReply,\n type SavedReplyBody,\n type SavedReplyList,\n type SavedReplyParams,\n savedReplyBodySchema,\n savedReplyListSchema,\n savedReplyParamsSchema,\n savedReplySchema,\n TICKET_ASSIGNEE_FILTER_VALUES,\n TICKET_CATEGORY_VALUES,\n TICKET_SCOPE_VALUES,\n TICKET_STATUS_VALUES,\n type TicketAssigneeFilter,\n type TicketCategory,\n type TicketDetail,\n type TicketListQuery,\n type TicketListQueryInput,\n type TicketMessage,\n type TicketPage,\n type TicketParams,\n type TicketScope,\n type TicketStatus,\n type TicketSummary,\n ticketAssigneeFilterSchema,\n ticketCategorySchema,\n ticketDetailSchema,\n ticketListQuerySchema,\n ticketMessageSchema,\n ticketPageSchema,\n ticketParamsSchema,\n ticketScopeSchema,\n ticketStatusSchema,\n ticketSummarySchema,\n} from './domains/support/support.js';\nexport {\n type SetMemberCapabilitiesBody,\n type SetMemberCapabilitiesResponse,\n type SetMemberRolesBody,\n type SetMemberRolesResponse,\n setMemberCapabilitiesBodySchema,\n setMemberCapabilitiesResponseSchema,\n setMemberRolesBodySchema,\n setMemberRolesResponseSchema,\n type TeamMember,\n type TeamMemberParams,\n type TeamPage,\n teamMemberParamsSchema,\n teamMemberSchema,\n teamPageSchema,\n} from './domains/team/team.js';\n// ─── Uploads: asking for a slot, completing it, discarding it ───────────────\nexport {\n UPLOAD_CONTENT_TYPES,\n UPLOAD_KEY_EXTENSIONS,\n UPLOAD_KEY_MAX_CHARS,\n UPLOAD_KEY_PATTERN,\n type UploadKey,\n type UploadKeyExtension,\n type UploadParams,\n type UploadPresignBody,\n type UploadPresignResponse,\n uploadKeyExtensionSchema,\n uploadKeySchema,\n uploadParamsSchema,\n uploadPresignBodySchema,\n uploadPresignResponseSchema,\n} from './domains/uploads/uploads.js';\n// ─── Waitlist: joining before the launch, and your place on it (0.15.0) ─────\nexport {\n type MyWaitlist,\n myWaitlistSchema,\n WAITLIST_REFUSAL_VALUES,\n type WaitlistPlace,\n type WaitlistRefusal,\n type WaitlistStatus,\n waitlistPlaceSchema,\n waitlistRefusalSchema,\n waitlistStatusSchema,\n} from './domains/waitlist/waitlist.js';\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "founder-schema",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"description": "Shared Zod schemas for Founder Circle — single source of truth for API contracts, validation, and TypeScript types (backend + web client + app client).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|