founder-schema 0.14.0 → 0.16.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 +90 -3
- package/dist/core/common.d.ts +30 -4
- package/dist/core/common.d.ts.map +1 -1
- package/dist/core/common.js +37 -3
- package/dist/core/common.js.map +1 -1
- 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/communities/communities.d.ts +9 -9
- package/dist/domains/discover/discover.d.ts +7 -0
- package/dist/domains/discover/discover.d.ts.map +1 -1
- package/dist/domains/feed/feed.d.ts +11 -11
- package/dist/domains/onboarding/onboarding.d.ts +245 -21
- package/dist/domains/onboarding/onboarding.d.ts.map +1 -1
- package/dist/domains/onboarding/onboarding.js +104 -16
- package/dist/domains/onboarding/onboarding.js.map +1 -1
- package/dist/domains/products/products.d.ts +3 -3
- package/dist/domains/profile/founder-profile.d.ts +28 -0
- package/dist/domains/profile/founder-profile.d.ts.map +1 -1
- package/dist/domains/profile/founder-profile.js +3 -0
- package/dist/domains/profile/founder-profile.js.map +1 -1
- package/dist/domains/profile/my-profile.d.ts +386 -0
- package/dist/domains/profile/my-profile.d.ts.map +1 -0
- package/dist/domains/profile/my-profile.js +52 -0
- package/dist/domains/profile/my-profile.js.map +1 -0
- 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 +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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"}
|
|
@@ -250,6 +250,7 @@ export declare const communityCardSchema: z.ZodObject<{
|
|
|
250
250
|
marketing: "marketing";
|
|
251
251
|
supply_chain: "supply_chain";
|
|
252
252
|
fundraising: "fundraising";
|
|
253
|
+
social_enterprise: "social_enterprise";
|
|
253
254
|
mentoring: "mentoring";
|
|
254
255
|
leadership: "leadership";
|
|
255
256
|
networking: "networking";
|
|
@@ -308,7 +309,6 @@ export declare const communityCardSchema: z.ZodObject<{
|
|
|
308
309
|
environmental: "environmental";
|
|
309
310
|
women_empowerment: "women_empowerment";
|
|
310
311
|
community_service: "community_service";
|
|
311
|
-
social_enterprise: "social_enterprise";
|
|
312
312
|
education_access: "education_access";
|
|
313
313
|
}>>;
|
|
314
314
|
memberCount: z.ZodNumber;
|
|
@@ -420,6 +420,7 @@ export declare const communitySchema: z.ZodObject<{
|
|
|
420
420
|
marketing: "marketing";
|
|
421
421
|
supply_chain: "supply_chain";
|
|
422
422
|
fundraising: "fundraising";
|
|
423
|
+
social_enterprise: "social_enterprise";
|
|
423
424
|
mentoring: "mentoring";
|
|
424
425
|
leadership: "leadership";
|
|
425
426
|
networking: "networking";
|
|
@@ -478,7 +479,6 @@ export declare const communitySchema: z.ZodObject<{
|
|
|
478
479
|
environmental: "environmental";
|
|
479
480
|
women_empowerment: "women_empowerment";
|
|
480
481
|
community_service: "community_service";
|
|
481
|
-
social_enterprise: "social_enterprise";
|
|
482
482
|
education_access: "education_access";
|
|
483
483
|
}>>;
|
|
484
484
|
memberCount: z.ZodNumber;
|
|
@@ -663,6 +663,7 @@ export declare const communitySuggestionSchema: z.ZodObject<{
|
|
|
663
663
|
marketing: "marketing";
|
|
664
664
|
supply_chain: "supply_chain";
|
|
665
665
|
fundraising: "fundraising";
|
|
666
|
+
social_enterprise: "social_enterprise";
|
|
666
667
|
mentoring: "mentoring";
|
|
667
668
|
leadership: "leadership";
|
|
668
669
|
networking: "networking";
|
|
@@ -721,7 +722,6 @@ export declare const communitySuggestionSchema: z.ZodObject<{
|
|
|
721
722
|
environmental: "environmental";
|
|
722
723
|
women_empowerment: "women_empowerment";
|
|
723
724
|
community_service: "community_service";
|
|
724
|
-
social_enterprise: "social_enterprise";
|
|
725
725
|
education_access: "education_access";
|
|
726
726
|
}>>;
|
|
727
727
|
status: z.ZodEnum<{
|
|
@@ -791,6 +791,7 @@ export declare const communityCardPageSchema: z.ZodObject<{
|
|
|
791
791
|
marketing: "marketing";
|
|
792
792
|
supply_chain: "supply_chain";
|
|
793
793
|
fundraising: "fundraising";
|
|
794
|
+
social_enterprise: "social_enterprise";
|
|
794
795
|
mentoring: "mentoring";
|
|
795
796
|
leadership: "leadership";
|
|
796
797
|
networking: "networking";
|
|
@@ -849,7 +850,6 @@ export declare const communityCardPageSchema: z.ZodObject<{
|
|
|
849
850
|
environmental: "environmental";
|
|
850
851
|
women_empowerment: "women_empowerment";
|
|
851
852
|
community_service: "community_service";
|
|
852
|
-
social_enterprise: "social_enterprise";
|
|
853
853
|
education_access: "education_access";
|
|
854
854
|
}>>;
|
|
855
855
|
memberCount: z.ZodNumber;
|
|
@@ -978,6 +978,7 @@ export declare const communitySuggestionPageSchema: z.ZodObject<{
|
|
|
978
978
|
marketing: "marketing";
|
|
979
979
|
supply_chain: "supply_chain";
|
|
980
980
|
fundraising: "fundraising";
|
|
981
|
+
social_enterprise: "social_enterprise";
|
|
981
982
|
mentoring: "mentoring";
|
|
982
983
|
leadership: "leadership";
|
|
983
984
|
networking: "networking";
|
|
@@ -1036,7 +1037,6 @@ export declare const communitySuggestionPageSchema: z.ZodObject<{
|
|
|
1036
1037
|
environmental: "environmental";
|
|
1037
1038
|
women_empowerment: "women_empowerment";
|
|
1038
1039
|
community_service: "community_service";
|
|
1039
|
-
social_enterprise: "social_enterprise";
|
|
1040
1040
|
education_access: "education_access";
|
|
1041
1041
|
}>>;
|
|
1042
1042
|
status: z.ZodEnum<{
|
|
@@ -1090,6 +1090,7 @@ export declare const communityDiscoverQuerySchema: z.ZodObject<{
|
|
|
1090
1090
|
marketing: "marketing";
|
|
1091
1091
|
supply_chain: "supply_chain";
|
|
1092
1092
|
fundraising: "fundraising";
|
|
1093
|
+
social_enterprise: "social_enterprise";
|
|
1093
1094
|
mentoring: "mentoring";
|
|
1094
1095
|
leadership: "leadership";
|
|
1095
1096
|
networking: "networking";
|
|
@@ -1148,7 +1149,6 @@ export declare const communityDiscoverQuerySchema: z.ZodObject<{
|
|
|
1148
1149
|
environmental: "environmental";
|
|
1149
1150
|
women_empowerment: "women_empowerment";
|
|
1150
1151
|
community_service: "community_service";
|
|
1151
|
-
social_enterprise: "social_enterprise";
|
|
1152
1152
|
education_access: "education_access";
|
|
1153
1153
|
}>>>, unknown>;
|
|
1154
1154
|
}, z.core.$strip>;
|
|
@@ -1233,6 +1233,7 @@ export declare const createCommunityBodySchema: z.ZodObject<{
|
|
|
1233
1233
|
marketing: "marketing";
|
|
1234
1234
|
supply_chain: "supply_chain";
|
|
1235
1235
|
fundraising: "fundraising";
|
|
1236
|
+
social_enterprise: "social_enterprise";
|
|
1236
1237
|
mentoring: "mentoring";
|
|
1237
1238
|
leadership: "leadership";
|
|
1238
1239
|
networking: "networking";
|
|
@@ -1291,7 +1292,6 @@ export declare const createCommunityBodySchema: z.ZodObject<{
|
|
|
1291
1292
|
environmental: "environmental";
|
|
1292
1293
|
women_empowerment: "women_empowerment";
|
|
1293
1294
|
community_service: "community_service";
|
|
1294
|
-
social_enterprise: "social_enterprise";
|
|
1295
1295
|
education_access: "education_access";
|
|
1296
1296
|
}>>>;
|
|
1297
1297
|
iconMediaId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
|
|
@@ -1313,6 +1313,7 @@ export declare const updateCommunityBodySchema: z.ZodObject<{
|
|
|
1313
1313
|
marketing: "marketing";
|
|
1314
1314
|
supply_chain: "supply_chain";
|
|
1315
1315
|
fundraising: "fundraising";
|
|
1316
|
+
social_enterprise: "social_enterprise";
|
|
1316
1317
|
mentoring: "mentoring";
|
|
1317
1318
|
leadership: "leadership";
|
|
1318
1319
|
networking: "networking";
|
|
@@ -1371,7 +1372,6 @@ export declare const updateCommunityBodySchema: z.ZodObject<{
|
|
|
1371
1372
|
environmental: "environmental";
|
|
1372
1373
|
women_empowerment: "women_empowerment";
|
|
1373
1374
|
community_service: "community_service";
|
|
1374
|
-
social_enterprise: "social_enterprise";
|
|
1375
1375
|
education_access: "education_access";
|
|
1376
1376
|
}>>>;
|
|
1377
1377
|
}, z.core.$strip>;
|
|
@@ -1465,6 +1465,7 @@ export declare const createCommunitySuggestionBodySchema: z.ZodObject<{
|
|
|
1465
1465
|
marketing: "marketing";
|
|
1466
1466
|
supply_chain: "supply_chain";
|
|
1467
1467
|
fundraising: "fundraising";
|
|
1468
|
+
social_enterprise: "social_enterprise";
|
|
1468
1469
|
mentoring: "mentoring";
|
|
1469
1470
|
leadership: "leadership";
|
|
1470
1471
|
networking: "networking";
|
|
@@ -1523,7 +1524,6 @@ export declare const createCommunitySuggestionBodySchema: z.ZodObject<{
|
|
|
1523
1524
|
environmental: "environmental";
|
|
1524
1525
|
women_empowerment: "women_empowerment";
|
|
1525
1526
|
community_service: "community_service";
|
|
1526
|
-
social_enterprise: "social_enterprise";
|
|
1527
1527
|
education_access: "education_access";
|
|
1528
1528
|
}>>>;
|
|
1529
1529
|
}, z.core.$strip>;
|
|
@@ -164,6 +164,13 @@ export declare const discoverPageSchema: z.ZodObject<{
|
|
|
164
164
|
market_insights: "market_insights";
|
|
165
165
|
learn_startup: "learn_startup";
|
|
166
166
|
start_company: "start_company";
|
|
167
|
+
get_feedback: "get_feedback";
|
|
168
|
+
find_testers: "find_testers";
|
|
169
|
+
mentor_others: "mentor_others";
|
|
170
|
+
invest_in_startups: "invest_in_startups";
|
|
171
|
+
join_startup: "join_startup";
|
|
172
|
+
find_service_providers: "find_service_providers";
|
|
173
|
+
attend_events: "attend_events";
|
|
167
174
|
}>>>;
|
|
168
175
|
}, z.core.$strip>>;
|
|
169
176
|
nextCursor: z.ZodNullable<z.ZodString>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../src/domains/discover/discover.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQ9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE,4DAA4D;AAC5D,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../src/domains/discover/discover.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQ9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE,4DAA4D;AAC5D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAqC,CAAC;AACrE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAM9D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAK/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
|
@@ -472,6 +472,7 @@ export declare const feedPostSchema: z.ZodObject<{
|
|
|
472
472
|
marketing: "marketing";
|
|
473
473
|
supply_chain: "supply_chain";
|
|
474
474
|
fundraising: "fundraising";
|
|
475
|
+
social_enterprise: "social_enterprise";
|
|
475
476
|
mentoring: "mentoring";
|
|
476
477
|
leadership: "leadership";
|
|
477
478
|
networking: "networking";
|
|
@@ -530,7 +531,6 @@ export declare const feedPostSchema: z.ZodObject<{
|
|
|
530
531
|
environmental: "environmental";
|
|
531
532
|
women_empowerment: "women_empowerment";
|
|
532
533
|
community_service: "community_service";
|
|
533
|
-
social_enterprise: "social_enterprise";
|
|
534
534
|
education_access: "education_access";
|
|
535
535
|
}>>;
|
|
536
536
|
product: z.ZodOptional<z.ZodObject<{
|
|
@@ -694,6 +694,7 @@ export declare const feedPollSchema: z.ZodObject<{
|
|
|
694
694
|
marketing: "marketing";
|
|
695
695
|
supply_chain: "supply_chain";
|
|
696
696
|
fundraising: "fundraising";
|
|
697
|
+
social_enterprise: "social_enterprise";
|
|
697
698
|
mentoring: "mentoring";
|
|
698
699
|
leadership: "leadership";
|
|
699
700
|
networking: "networking";
|
|
@@ -752,7 +753,6 @@ export declare const feedPollSchema: z.ZodObject<{
|
|
|
752
753
|
environmental: "environmental";
|
|
753
754
|
women_empowerment: "women_empowerment";
|
|
754
755
|
community_service: "community_service";
|
|
755
|
-
social_enterprise: "social_enterprise";
|
|
756
756
|
education_access: "education_access";
|
|
757
757
|
}>>;
|
|
758
758
|
product: z.ZodOptional<z.ZodObject<{
|
|
@@ -870,6 +870,7 @@ export declare const feedItemSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
870
870
|
marketing: "marketing";
|
|
871
871
|
supply_chain: "supply_chain";
|
|
872
872
|
fundraising: "fundraising";
|
|
873
|
+
social_enterprise: "social_enterprise";
|
|
873
874
|
mentoring: "mentoring";
|
|
874
875
|
leadership: "leadership";
|
|
875
876
|
networking: "networking";
|
|
@@ -928,7 +929,6 @@ export declare const feedItemSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
928
929
|
environmental: "environmental";
|
|
929
930
|
women_empowerment: "women_empowerment";
|
|
930
931
|
community_service: "community_service";
|
|
931
|
-
social_enterprise: "social_enterprise";
|
|
932
932
|
education_access: "education_access";
|
|
933
933
|
}>>;
|
|
934
934
|
product: z.ZodOptional<z.ZodObject<{
|
|
@@ -1071,6 +1071,7 @@ export declare const feedItemSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
1071
1071
|
marketing: "marketing";
|
|
1072
1072
|
supply_chain: "supply_chain";
|
|
1073
1073
|
fundraising: "fundraising";
|
|
1074
|
+
social_enterprise: "social_enterprise";
|
|
1074
1075
|
mentoring: "mentoring";
|
|
1075
1076
|
leadership: "leadership";
|
|
1076
1077
|
networking: "networking";
|
|
@@ -1129,7 +1130,6 @@ export declare const feedItemSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
1129
1130
|
environmental: "environmental";
|
|
1130
1131
|
women_empowerment: "women_empowerment";
|
|
1131
1132
|
community_service: "community_service";
|
|
1132
|
-
social_enterprise: "social_enterprise";
|
|
1133
1133
|
education_access: "education_access";
|
|
1134
1134
|
}>>;
|
|
1135
1135
|
product: z.ZodOptional<z.ZodObject<{
|
|
@@ -1402,6 +1402,7 @@ export declare const feedPageSchema: z.ZodObject<{
|
|
|
1402
1402
|
marketing: "marketing";
|
|
1403
1403
|
supply_chain: "supply_chain";
|
|
1404
1404
|
fundraising: "fundraising";
|
|
1405
|
+
social_enterprise: "social_enterprise";
|
|
1405
1406
|
mentoring: "mentoring";
|
|
1406
1407
|
leadership: "leadership";
|
|
1407
1408
|
networking: "networking";
|
|
@@ -1460,7 +1461,6 @@ export declare const feedPageSchema: z.ZodObject<{
|
|
|
1460
1461
|
environmental: "environmental";
|
|
1461
1462
|
women_empowerment: "women_empowerment";
|
|
1462
1463
|
community_service: "community_service";
|
|
1463
|
-
social_enterprise: "social_enterprise";
|
|
1464
1464
|
education_access: "education_access";
|
|
1465
1465
|
}>>;
|
|
1466
1466
|
product: z.ZodOptional<z.ZodObject<{
|
|
@@ -1603,6 +1603,7 @@ export declare const feedPageSchema: z.ZodObject<{
|
|
|
1603
1603
|
marketing: "marketing";
|
|
1604
1604
|
supply_chain: "supply_chain";
|
|
1605
1605
|
fundraising: "fundraising";
|
|
1606
|
+
social_enterprise: "social_enterprise";
|
|
1606
1607
|
mentoring: "mentoring";
|
|
1607
1608
|
leadership: "leadership";
|
|
1608
1609
|
networking: "networking";
|
|
@@ -1661,7 +1662,6 @@ export declare const feedPageSchema: z.ZodObject<{
|
|
|
1661
1662
|
environmental: "environmental";
|
|
1662
1663
|
women_empowerment: "women_empowerment";
|
|
1663
1664
|
community_service: "community_service";
|
|
1664
|
-
social_enterprise: "social_enterprise";
|
|
1665
1665
|
education_access: "education_access";
|
|
1666
1666
|
}>>;
|
|
1667
1667
|
product: z.ZodOptional<z.ZodObject<{
|
|
@@ -1781,6 +1781,7 @@ export declare const pinnedItemsSchema: z.ZodObject<{
|
|
|
1781
1781
|
marketing: "marketing";
|
|
1782
1782
|
supply_chain: "supply_chain";
|
|
1783
1783
|
fundraising: "fundraising";
|
|
1784
|
+
social_enterprise: "social_enterprise";
|
|
1784
1785
|
mentoring: "mentoring";
|
|
1785
1786
|
leadership: "leadership";
|
|
1786
1787
|
networking: "networking";
|
|
@@ -1839,7 +1840,6 @@ export declare const pinnedItemsSchema: z.ZodObject<{
|
|
|
1839
1840
|
environmental: "environmental";
|
|
1840
1841
|
women_empowerment: "women_empowerment";
|
|
1841
1842
|
community_service: "community_service";
|
|
1842
|
-
social_enterprise: "social_enterprise";
|
|
1843
1843
|
education_access: "education_access";
|
|
1844
1844
|
}>>;
|
|
1845
1845
|
product: z.ZodOptional<z.ZodObject<{
|
|
@@ -1982,6 +1982,7 @@ export declare const pinnedItemsSchema: z.ZodObject<{
|
|
|
1982
1982
|
marketing: "marketing";
|
|
1983
1983
|
supply_chain: "supply_chain";
|
|
1984
1984
|
fundraising: "fundraising";
|
|
1985
|
+
social_enterprise: "social_enterprise";
|
|
1985
1986
|
mentoring: "mentoring";
|
|
1986
1987
|
leadership: "leadership";
|
|
1987
1988
|
networking: "networking";
|
|
@@ -2040,7 +2041,6 @@ export declare const pinnedItemsSchema: z.ZodObject<{
|
|
|
2040
2041
|
environmental: "environmental";
|
|
2041
2042
|
women_empowerment: "women_empowerment";
|
|
2042
2043
|
community_service: "community_service";
|
|
2043
|
-
social_enterprise: "social_enterprise";
|
|
2044
2044
|
education_access: "education_access";
|
|
2045
2045
|
}>>;
|
|
2046
2046
|
product: z.ZodOptional<z.ZodObject<{
|
|
@@ -2376,6 +2376,7 @@ export declare const createPostBodySchema: z.ZodObject<{
|
|
|
2376
2376
|
marketing: "marketing";
|
|
2377
2377
|
supply_chain: "supply_chain";
|
|
2378
2378
|
fundraising: "fundraising";
|
|
2379
|
+
social_enterprise: "social_enterprise";
|
|
2379
2380
|
mentoring: "mentoring";
|
|
2380
2381
|
leadership: "leadership";
|
|
2381
2382
|
networking: "networking";
|
|
@@ -2434,7 +2435,6 @@ export declare const createPostBodySchema: z.ZodObject<{
|
|
|
2434
2435
|
environmental: "environmental";
|
|
2435
2436
|
women_empowerment: "women_empowerment";
|
|
2436
2437
|
community_service: "community_service";
|
|
2437
|
-
social_enterprise: "social_enterprise";
|
|
2438
2438
|
education_access: "education_access";
|
|
2439
2439
|
}>>>;
|
|
2440
2440
|
}, z.core.$strip>;
|
|
@@ -2471,6 +2471,7 @@ export declare const createPollBodySchema: z.ZodObject<{
|
|
|
2471
2471
|
marketing: "marketing";
|
|
2472
2472
|
supply_chain: "supply_chain";
|
|
2473
2473
|
fundraising: "fundraising";
|
|
2474
|
+
social_enterprise: "social_enterprise";
|
|
2474
2475
|
mentoring: "mentoring";
|
|
2475
2476
|
leadership: "leadership";
|
|
2476
2477
|
networking: "networking";
|
|
@@ -2529,7 +2530,6 @@ export declare const createPollBodySchema: z.ZodObject<{
|
|
|
2529
2530
|
environmental: "environmental";
|
|
2530
2531
|
women_empowerment: "women_empowerment";
|
|
2531
2532
|
community_service: "community_service";
|
|
2532
|
-
social_enterprise: "social_enterprise";
|
|
2533
2533
|
education_access: "education_access";
|
|
2534
2534
|
}>>>;
|
|
2535
2535
|
}, z.core.$strip>;
|
|
@@ -2745,6 +2745,7 @@ export declare const castVoteResponseSchema: z.ZodObject<{
|
|
|
2745
2745
|
marketing: "marketing";
|
|
2746
2746
|
supply_chain: "supply_chain";
|
|
2747
2747
|
fundraising: "fundraising";
|
|
2748
|
+
social_enterprise: "social_enterprise";
|
|
2748
2749
|
mentoring: "mentoring";
|
|
2749
2750
|
leadership: "leadership";
|
|
2750
2751
|
networking: "networking";
|
|
@@ -2803,7 +2804,6 @@ export declare const castVoteResponseSchema: z.ZodObject<{
|
|
|
2803
2804
|
environmental: "environmental";
|
|
2804
2805
|
women_empowerment: "women_empowerment";
|
|
2805
2806
|
community_service: "community_service";
|
|
2806
|
-
social_enterprise: "social_enterprise";
|
|
2807
2807
|
education_access: "education_access";
|
|
2808
2808
|
}>>;
|
|
2809
2809
|
product: z.ZodOptional<z.ZodObject<{
|