@commonpub/schema 0.21.0 → 0.23.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/dist/contest.d.ts CHANGED
@@ -58,6 +58,25 @@ export declare const contests: import("drizzle-orm/pg-core").PgTableWithColumns<
58
58
  }, {}, {
59
59
  length: 255;
60
60
  }>;
61
+ subheading: import("drizzle-orm/pg-core").PgColumn<{
62
+ name: "subheading";
63
+ tableName: "contests";
64
+ dataType: "string";
65
+ columnType: "PgVarchar";
66
+ data: string;
67
+ driverParam: string;
68
+ notNull: false;
69
+ hasDefault: false;
70
+ isPrimaryKey: false;
71
+ isAutoincrement: false;
72
+ hasRuntimeDefault: false;
73
+ enumValues: [string, ...string[]];
74
+ baseColumn: never;
75
+ identity: undefined;
76
+ generated: undefined;
77
+ }, {}, {
78
+ length: 300;
79
+ }>;
61
80
  description: import("drizzle-orm/pg-core").PgColumn<{
62
81
  name: "description";
63
82
  tableName: "contests";
@@ -187,7 +206,8 @@ export declare const contests: import("drizzle-orm/pg-core").PgTableWithColumns<
187
206
  place?: number;
188
207
  /** Optional category label (e.g. "Best in Show", "Robotics"). */
189
208
  category?: string;
190
- title: string;
209
+ /** Optional — a prize can be description-only (no forced placement). */
210
+ title?: string;
191
211
  description?: string;
192
212
  value?: string;
193
213
  }[];
@@ -207,7 +227,8 @@ export declare const contests: import("drizzle-orm/pg-core").PgTableWithColumns<
207
227
  place?: number;
208
228
  /** Optional category label (e.g. "Best in Show", "Robotics"). */
209
229
  category?: string;
210
- title: string;
230
+ /** Optional — a prize can be description-only (no forced placement). */
231
+ title?: string;
211
232
  description?: string;
212
233
  value?: string;
213
234
  }[];
@@ -311,6 +332,42 @@ export declare const contests: import("drizzle-orm/pg-core").PgTableWithColumns<
311
332
  identity: undefined;
312
333
  generated: undefined;
313
334
  }, {}, {}>;
335
+ visibility: import("drizzle-orm/pg-core").PgColumn<{
336
+ name: "visibility";
337
+ tableName: "contests";
338
+ dataType: "string";
339
+ columnType: "PgEnumColumn";
340
+ data: "public" | "private" | "unlisted";
341
+ driverParam: string;
342
+ notNull: true;
343
+ hasDefault: true;
344
+ isPrimaryKey: false;
345
+ isAutoincrement: false;
346
+ hasRuntimeDefault: false;
347
+ enumValues: ["public", "unlisted", "private"];
348
+ baseColumn: never;
349
+ identity: undefined;
350
+ generated: undefined;
351
+ }, {}, {}>;
352
+ visibleToRoles: import("drizzle-orm/pg-core").PgColumn<{
353
+ name: "visible_to_roles";
354
+ tableName: "contests";
355
+ dataType: "json";
356
+ columnType: "PgJsonb";
357
+ data: string[];
358
+ driverParam: unknown;
359
+ notNull: false;
360
+ hasDefault: false;
361
+ isPrimaryKey: false;
362
+ isAutoincrement: false;
363
+ hasRuntimeDefault: false;
364
+ enumValues: undefined;
365
+ baseColumn: never;
366
+ identity: undefined;
367
+ generated: undefined;
368
+ }, {}, {
369
+ $type: string[];
370
+ }>;
314
371
  createdById: import("drizzle-orm/pg-core").PgColumn<{
315
372
  name: "created_by_id";
316
373
  tableName: "contests";
@@ -676,6 +733,81 @@ export declare const contestJudges: import("drizzle-orm/pg-core").PgTableWithCol
676
733
  };
677
734
  dialect: "pg";
678
735
  }>;
736
+ export declare const contestStakeholders: import("drizzle-orm/pg-core").PgTableWithColumns<{
737
+ name: "contest_stakeholders";
738
+ schema: undefined;
739
+ columns: {
740
+ id: import("drizzle-orm/pg-core").PgColumn<{
741
+ name: "id";
742
+ tableName: "contest_stakeholders";
743
+ dataType: "string";
744
+ columnType: "PgUUID";
745
+ data: string;
746
+ driverParam: string;
747
+ notNull: true;
748
+ hasDefault: true;
749
+ isPrimaryKey: true;
750
+ isAutoincrement: false;
751
+ hasRuntimeDefault: false;
752
+ enumValues: undefined;
753
+ baseColumn: never;
754
+ identity: undefined;
755
+ generated: undefined;
756
+ }, {}, {}>;
757
+ contestId: import("drizzle-orm/pg-core").PgColumn<{
758
+ name: "contest_id";
759
+ tableName: "contest_stakeholders";
760
+ dataType: "string";
761
+ columnType: "PgUUID";
762
+ data: string;
763
+ driverParam: string;
764
+ notNull: true;
765
+ hasDefault: false;
766
+ isPrimaryKey: false;
767
+ isAutoincrement: false;
768
+ hasRuntimeDefault: false;
769
+ enumValues: undefined;
770
+ baseColumn: never;
771
+ identity: undefined;
772
+ generated: undefined;
773
+ }, {}, {}>;
774
+ userId: import("drizzle-orm/pg-core").PgColumn<{
775
+ name: "user_id";
776
+ tableName: "contest_stakeholders";
777
+ dataType: "string";
778
+ columnType: "PgUUID";
779
+ data: string;
780
+ driverParam: string;
781
+ notNull: true;
782
+ hasDefault: false;
783
+ isPrimaryKey: false;
784
+ isAutoincrement: false;
785
+ hasRuntimeDefault: false;
786
+ enumValues: undefined;
787
+ baseColumn: never;
788
+ identity: undefined;
789
+ generated: undefined;
790
+ }, {}, {}>;
791
+ invitedAt: import("drizzle-orm/pg-core").PgColumn<{
792
+ name: "invited_at";
793
+ tableName: "contest_stakeholders";
794
+ dataType: "date";
795
+ columnType: "PgTimestamp";
796
+ data: Date;
797
+ driverParam: string;
798
+ notNull: true;
799
+ hasDefault: true;
800
+ isPrimaryKey: false;
801
+ isAutoincrement: false;
802
+ hasRuntimeDefault: false;
803
+ enumValues: undefined;
804
+ baseColumn: never;
805
+ identity: undefined;
806
+ generated: undefined;
807
+ }, {}, {}>;
808
+ };
809
+ dialect: "pg";
810
+ }>;
679
811
  export declare const contestsRelations: import("drizzle-orm").Relations<"contests", {
680
812
  createdBy: import("drizzle-orm").One<"users", true>;
681
813
  entries: import("drizzle-orm").Many<"contest_entries">;
@@ -690,10 +822,16 @@ export declare const contestJudgesRelations: import("drizzle-orm").Relations<"co
690
822
  contest: import("drizzle-orm").One<"contests", true>;
691
823
  user: import("drizzle-orm").One<"users", true>;
692
824
  }>;
825
+ export declare const contestStakeholdersRelations: import("drizzle-orm").Relations<"contest_stakeholders", {
826
+ contest: import("drizzle-orm").One<"contests", true>;
827
+ user: import("drizzle-orm").One<"users", true>;
828
+ }>;
693
829
  export type ContestRow = typeof contests.$inferSelect;
694
830
  export type NewContestRow = typeof contests.$inferInsert;
695
831
  export type ContestEntryRow = typeof contestEntries.$inferSelect;
696
832
  export type NewContestEntryRow = typeof contestEntries.$inferInsert;
697
833
  export type ContestJudgeRow = typeof contestJudges.$inferSelect;
698
834
  export type NewContestJudgeRow = typeof contestJudges.$inferInsert;
835
+ export type ContestStakeholderRow = typeof contestStakeholders.$inferSelect;
836
+ export type NewContestStakeholderRow = typeof contestStakeholders.$inferInsert;
699
837
  //# sourceMappingURL=contest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contest.d.ts","sourceRoot":"","sources":["../src/contest.ts"],"names":[],"mappings":"AAMA,uFAAuF;AACvF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAaf,4EAA4E;wBACpE,MAAM;gBACd,iEAAiE;2BACtD,MAAM;uBACV,MAAM;8BACC,MAAM;wBACZ,MAAM;;;;;;;;;;;;;;gBANd,4EAA4E;wBACpE,MAAM;gBACd,iEAAiE;2BACtD,MAAM;uBACV,MAAM;8BACC,MAAM;wBACZ,MAAM;;;;;;;;;uBAUP,MAAM;yBACJ,MAAM;8BACD,MAAM;;;;;;;;;;;;;;uBAFb,MAAM;yBACJ,MAAM;8BACD,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BxB,CAAC;AAEH,wFAAwF;AACxF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAeZ,MAAM;gBACf,6EAA6E;uBACtE,MAAM;2BACF,MAAM;gBACjB,yEAAyE;iCACxD,KAAK,CAAC;oBAAE,KAAK,EAAE,MAAM,CAAC;oBAAC,KAAK,EAAE,MAAM,CAAC;oBAAC,GAAG,EAAE,MAAM,CAAA;iBAAE,CAAC;;;;;;;;;;;;;;yBAL5D,MAAM;gBACf,6EAA6E;uBACtE,MAAM;2BACF,MAAM;gBACjB,yEAAyE;iCACxD,KAAK,CAAC;oBAAE,KAAK,EAAE,MAAM,CAAC;oBAAC,KAAK,EAAE,MAAM,CAAC;oBAAC,GAAG,EAAE,MAAM,CAAA;iBAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;EAQzE,CAAC;AAIH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAexB,CAAC;AAIH,eAAO,MAAM,iBAAiB;;;;EAI3B,CAAC;AAEJ,eAAO,MAAM,uBAAuB;;;;EAOjC,CAAC;AAEJ,eAAO,MAAM,sBAAsB;;;EAGhC,CAAC;AAGJ,MAAM,MAAM,UAAU,GAAG,OAAO,QAAQ,CAAC,YAAY,CAAC;AACtD,MAAM,MAAM,aAAa,GAAG,OAAO,QAAQ,CAAC,YAAY,CAAC;AACzD,MAAM,MAAM,eAAe,GAAG,OAAO,cAAc,CAAC,YAAY,CAAC;AACjE,MAAM,MAAM,kBAAkB,GAAG,OAAO,cAAc,CAAC,YAAY,CAAC;AACpE,MAAM,MAAM,eAAe,GAAG,OAAO,aAAa,CAAC,YAAY,CAAC;AAChE,MAAM,MAAM,kBAAkB,GAAG,OAAO,aAAa,CAAC,YAAY,CAAC"}
1
+ {"version":3,"file":"contest.d.ts","sourceRoot":"","sources":["../src/contest.ts"],"names":[],"mappings":"AAMA,uFAAuF;AACvF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAgBf,4EAA4E;wBACpE,MAAM;gBACd,iEAAiE;2BACtD,MAAM;gBACjB,wEAAwE;wBAChE,MAAM;8BACA,MAAM;wBACZ,MAAM;;;;;;;;;;;;;;gBAPd,4EAA4E;wBACpE,MAAM;gBACd,iEAAiE;2BACtD,MAAM;gBACjB,wEAAwE;wBAChE,MAAM;8BACA,MAAM;wBACZ,MAAM;;;;;;;;;uBAUP,MAAM;yBACJ,MAAM;8BACD,MAAM;;;;;;;;;;;;;;uBAFb,MAAM;yBACJ,MAAM;8BACD,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCxB,CAAC;AAEH,wFAAwF;AACxF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAeZ,MAAM;gBACf,6EAA6E;uBACtE,MAAM;2BACF,MAAM;gBACjB,yEAAyE;iCACxD,KAAK,CAAC;oBAAE,KAAK,EAAE,MAAM,CAAC;oBAAC,KAAK,EAAE,MAAM,CAAC;oBAAC,GAAG,EAAE,MAAM,CAAA;iBAAE,CAAC;;;;;;;;;;;;;;yBAL5D,MAAM;gBACf,6EAA6E;uBACtE,MAAM;2BACF,MAAM;gBACjB,yEAAyE;iCACxD,KAAK,CAAC;oBAAE,KAAK,EAAE,MAAM,CAAC;oBAAC,KAAK,EAAE,MAAM,CAAC;oBAAC,GAAG,EAAE,MAAM,CAAA;iBAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;EAQzE,CAAC;AAIH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAexB,CAAC;AAKH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAa9B,CAAC;AAIH,eAAO,MAAM,iBAAiB;;;;EAI3B,CAAC;AAEJ,eAAO,MAAM,uBAAuB;;;;EAOjC,CAAC;AAEJ,eAAO,MAAM,sBAAsB;;;EAGhC,CAAC;AAEJ,eAAO,MAAM,4BAA4B;;;EAGtC,CAAC;AAGJ,MAAM,MAAM,UAAU,GAAG,OAAO,QAAQ,CAAC,YAAY,CAAC;AACtD,MAAM,MAAM,aAAa,GAAG,OAAO,QAAQ,CAAC,YAAY,CAAC;AACzD,MAAM,MAAM,eAAe,GAAG,OAAO,cAAc,CAAC,YAAY,CAAC;AACjE,MAAM,MAAM,kBAAkB,GAAG,OAAO,cAAc,CAAC,YAAY,CAAC;AACpE,MAAM,MAAM,eAAe,GAAG,OAAO,aAAa,CAAC,YAAY,CAAC;AAChE,MAAM,MAAM,kBAAkB,GAAG,OAAO,aAAa,CAAC,YAAY,CAAC;AACnE,MAAM,MAAM,qBAAqB,GAAG,OAAO,mBAAmB,CAAC,YAAY,CAAC;AAC5E,MAAM,MAAM,wBAAwB,GAAG,OAAO,mBAAmB,CAAC,YAAY,CAAC"}
package/dist/contest.js CHANGED
@@ -2,12 +2,15 @@ import { pgTable, uuid, varchar, text, timestamp, integer, boolean, jsonb, uniqu
2
2
  import { relations } from 'drizzle-orm';
3
3
  import { users } from './auth.js';
4
4
  import { contentItems } from './content.js';
5
- import { contestStatusEnum, judgeRoleEnum, judgingVisibilityEnum } from './enums.js';
5
+ import { contestStatusEnum, judgeRoleEnum, judgingVisibilityEnum, contestVisibilityEnum } from './enums.js';
6
6
  /** @v2 — Contest system. Tables defined but not yet referenced in application code. */
7
7
  export const contests = pgTable('contests', {
8
8
  id: uuid('id').defaultRandom().primaryKey(),
9
9
  title: varchar('title', { length: 255 }).notNull(),
10
10
  slug: varchar('slug', { length: 255 }).notNull().unique(),
11
+ /** Short one-line tagline shown in the contest hero (plain text). */
12
+ subheading: varchar('subheading', { length: 300 }),
13
+ /** Long-form body, rendered as Markdown (may contain inline HTML). */
11
14
  description: text('description'),
12
15
  rules: text('rules'),
13
16
  bannerUrl: text('banner_url'),
@@ -37,6 +40,10 @@ export const contests = pgTable('contests', {
37
40
  eligibleContentTypes: jsonb('eligible_content_types').$type(),
38
41
  /** Max distinct entries one user may submit. Null = unlimited. */
39
42
  maxEntriesPerUser: integer('max_entries_per_user'),
43
+ /** Who can see this contest. Orthogonal to `status` (lifecycle). */
44
+ visibility: contestVisibilityEnum('visibility').default('public').notNull(),
45
+ /** When visibility = 'private', user roles that may view (e.g. ['staff']). */
46
+ visibleToRoles: jsonb('visible_to_roles').$type(),
40
47
  createdById: uuid('created_by_id')
41
48
  .notNull()
42
49
  .references(() => users.id, { onDelete: 'cascade' }),
@@ -86,6 +93,23 @@ export const contestJudges = pgTable('contest_judges', {
86
93
  index('idx_contest_judges_contest_id').on(t.contestId),
87
94
  index('idx_contest_judges_user_id').on(t.userId),
88
95
  ]);
96
+ // --- Contest Stakeholders ---
97
+ // View-only reviewers: can see a contest (even private/draft) without admin-panel
98
+ // access or being a judge. Distinct from judges (no scoring, not in judge list).
99
+ export const contestStakeholders = pgTable('contest_stakeholders', {
100
+ id: uuid('id').defaultRandom().primaryKey(),
101
+ contestId: uuid('contest_id')
102
+ .notNull()
103
+ .references(() => contests.id, { onDelete: 'cascade' }),
104
+ userId: uuid('user_id')
105
+ .notNull()
106
+ .references(() => users.id, { onDelete: 'cascade' }),
107
+ invitedAt: timestamp('invited_at', { withTimezone: true }).defaultNow().notNull(),
108
+ }, (t) => [
109
+ unique('uq_contest_stakeholders_contest_user').on(t.contestId, t.userId),
110
+ index('idx_contest_stakeholders_contest_id').on(t.contestId),
111
+ index('idx_contest_stakeholders_user_id').on(t.userId),
112
+ ]);
89
113
  // --- Relations ---
90
114
  export const contestsRelations = relations(contests, ({ one, many }) => ({
91
115
  createdBy: one(users, { fields: [contests.createdById], references: [users.id] }),
@@ -104,4 +128,8 @@ export const contestJudgesRelations = relations(contestJudges, ({ one }) => ({
104
128
  contest: one(contests, { fields: [contestJudges.contestId], references: [contests.id] }),
105
129
  user: one(users, { fields: [contestJudges.userId], references: [users.id] }),
106
130
  }));
131
+ export const contestStakeholdersRelations = relations(contestStakeholders, ({ one }) => ({
132
+ contest: one(contests, { fields: [contestStakeholders.contestId], references: [contests.id] }),
133
+ user: one(users, { fields: [contestStakeholders.userId], references: [users.id] }),
134
+ }));
107
135
  //# sourceMappingURL=contest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contest.js","sourceRoot":"","sources":["../src/contest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contest.js","sourceRoot":"","sources":["../src/contest.ts"],"names":[],"mappings":"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"}
package/dist/enums.d.ts CHANGED
@@ -23,6 +23,7 @@ export declare const productStatusEnum: import("drizzle-orm/pg-core").PgEnum<["a
23
23
  export declare const productCategoryEnum: import("drizzle-orm/pg-core").PgEnum<["microcontroller", "sbc", "sensor", "actuator", "display", "communication", "power", "mechanical", "software", "tool", "other"]>;
24
24
  export declare const lessonTypeEnum: import("drizzle-orm/pg-core").PgEnum<["article", "video", "quiz", "project", "explainer"]>;
25
25
  export declare const contestStatusEnum: import("drizzle-orm/pg-core").PgEnum<["upcoming", "active", "judging", "completed", "cancelled"]>;
26
+ export declare const contestVisibilityEnum: import("drizzle-orm/pg-core").PgEnum<["public", "unlisted", "private"]>;
26
27
  export declare const judgeRoleEnum: import("drizzle-orm/pg-core").PgEnum<["lead", "judge", "guest"]>;
27
28
  export declare const judgingVisibilityEnum: import("drizzle-orm/pg-core").PgEnum<["public", "judges-only", "private"]>;
28
29
  export declare const voteDirectionEnum: import("drizzle-orm/pg-core").PgEnum<["up", "down"]>;
@@ -1 +1 @@
1
- {"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../src/enums.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,uFAAuE,CAAC;AACjG,eAAO,MAAM,cAAc,0EAA4D,CAAC;AACxF,eAAO,MAAM,qBAAqB,wEAAiE,CAAC;AAGpG,eAAO,MAAM,iBAAiB,0EAA+D,CAAC;AAC9F,eAAO,MAAM,eAAe,mFAK1B,CAAC;AACH,eAAO,MAAM,cAAc,gFAAiE,CAAC;AAC7F,eAAO,MAAM,qBAAqB,wEAAiE,CAAC;AAGpG,eAAO,MAAM,kBAAkB,+GAQ7B,CAAC;AACH,eAAO,MAAM,qBAAqB,8GAQhC,CAAC;AACH,eAAO,MAAM,sBAAsB,oGAMjC,CAAC;AACH,eAAO,MAAM,oBAAoB,8GAQ/B,CAAC;AACH,eAAO,MAAM,gBAAgB,qGAM3B,CAAC;AACH,eAAO,MAAM,gBAAgB,wFAK3B,CAAC;AACH,eAAO,MAAM,oBAAoB,qJAY/B,CAAC;AAGH,eAAO,MAAM,WAAW,2EAA0D,CAAC;AACnF,eAAO,MAAM,cAAc,yEAA2D,CAAC;AACvF,eAAO,MAAM,WAAW,iFAKtB,CAAC;AACH,eAAO,MAAM,iBAAiB,sEAI5B,CAAC;AACH,eAAO,MAAM,mBAAmB,6DAAqD,CAAC;AACtF,eAAO,MAAM,YAAY,+HAA+G,CAAC;AAGzI,eAAO,MAAM,oBAAoB,6HAQ/B,CAAC;AAGH,eAAO,MAAM,iBAAiB,6EAAkE,CAAC;AACjG,eAAO,MAAM,mBAAmB,wKAY9B,CAAC;AAGH,eAAO,MAAM,cAAc,4FAMzB,CAAC;AAGH,eAAO,MAAM,iBAAiB,mGAM5B,CAAC;AAGH,eAAO,MAAM,aAAa,kEAAmD,CAAC;AAC9E,eAAO,MAAM,qBAAqB,4EAAqE,CAAC;AAGxG,eAAO,MAAM,iBAAiB,sDAA2C,CAAC;AAG1E,eAAO,MAAM,eAAe,kGAAqF,CAAC;AAClH,eAAO,MAAM,aAAa,yEAA0D,CAAC;AACrF,eAAO,MAAM,uBAAuB,6FAAyF,CAAC;AAG9H,eAAO,MAAM,iBAAiB,qEAA0D,CAAC;AAGzF,eAAO,MAAM,eAAe,8FAM1B,CAAC;AAGH,eAAO,MAAM,qBAAqB,+DAAwD,CAAC;AAC3F,eAAO,MAAM,kBAAkB,uFAK7B,CAAC;AACH,eAAO,MAAM,4BAA4B,2EAIvC,CAAC;AACH,eAAO,MAAM,gBAAgB,iFAK3B,CAAC;AACH,eAAO,MAAM,mBAAmB,wDAA+C,CAAC;AAGhF,eAAO,MAAM,kBAAkB,0EAAiE,CAAC;AAGjG,eAAO,MAAM,mBAAmB,6DAAqD,CAAC;AAGtF,eAAO,MAAM,eAAe,iGAM1B,CAAC"}
1
+ {"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../src/enums.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,uFAAuE,CAAC;AACjG,eAAO,MAAM,cAAc,0EAA4D,CAAC;AACxF,eAAO,MAAM,qBAAqB,wEAAiE,CAAC;AAGpG,eAAO,MAAM,iBAAiB,0EAA+D,CAAC;AAC9F,eAAO,MAAM,eAAe,mFAK1B,CAAC;AACH,eAAO,MAAM,cAAc,gFAAiE,CAAC;AAC7F,eAAO,MAAM,qBAAqB,wEAAiE,CAAC;AAGpG,eAAO,MAAM,kBAAkB,+GAQ7B,CAAC;AACH,eAAO,MAAM,qBAAqB,8GAQhC,CAAC;AACH,eAAO,MAAM,sBAAsB,oGAMjC,CAAC;AACH,eAAO,MAAM,oBAAoB,8GAQ/B,CAAC;AACH,eAAO,MAAM,gBAAgB,qGAM3B,CAAC;AACH,eAAO,MAAM,gBAAgB,wFAK3B,CAAC;AACH,eAAO,MAAM,oBAAoB,qJAY/B,CAAC;AAGH,eAAO,MAAM,WAAW,2EAA0D,CAAC;AACnF,eAAO,MAAM,cAAc,yEAA2D,CAAC;AACvF,eAAO,MAAM,WAAW,iFAKtB,CAAC;AACH,eAAO,MAAM,iBAAiB,sEAI5B,CAAC;AACH,eAAO,MAAM,mBAAmB,6DAAqD,CAAC;AACtF,eAAO,MAAM,YAAY,+HAA+G,CAAC;AAGzI,eAAO,MAAM,oBAAoB,6HAQ/B,CAAC;AAGH,eAAO,MAAM,iBAAiB,6EAAkE,CAAC;AACjG,eAAO,MAAM,mBAAmB,wKAY9B,CAAC;AAGH,eAAO,MAAM,cAAc,4FAMzB,CAAC;AAGH,eAAO,MAAM,iBAAiB,mGAM5B,CAAC;AAMH,eAAO,MAAM,qBAAqB,yEAAkE,CAAC;AAGrG,eAAO,MAAM,aAAa,kEAAmD,CAAC;AAC9E,eAAO,MAAM,qBAAqB,4EAAqE,CAAC;AAGxG,eAAO,MAAM,iBAAiB,sDAA2C,CAAC;AAG1E,eAAO,MAAM,eAAe,kGAAqF,CAAC;AAClH,eAAO,MAAM,aAAa,yEAA0D,CAAC;AACrF,eAAO,MAAM,uBAAuB,6FAAyF,CAAC;AAG9H,eAAO,MAAM,iBAAiB,qEAA0D,CAAC;AAGzF,eAAO,MAAM,eAAe,8FAM1B,CAAC;AAGH,eAAO,MAAM,qBAAqB,+DAAwD,CAAC;AAC3F,eAAO,MAAM,kBAAkB,uFAK7B,CAAC;AACH,eAAO,MAAM,4BAA4B,2EAIvC,CAAC;AACH,eAAO,MAAM,gBAAgB,iFAK3B,CAAC;AACH,eAAO,MAAM,mBAAmB,wDAA+C,CAAC;AAGhF,eAAO,MAAM,kBAAkB,0EAAiE,CAAC;AAGjG,eAAO,MAAM,mBAAmB,6DAAqD,CAAC;AAGtF,eAAO,MAAM,eAAe,iGAM1B,CAAC"}
package/dist/enums.js CHANGED
@@ -131,6 +131,11 @@ export const contestStatusEnum = pgEnum('contest_status', [
131
131
  'completed',
132
132
  'cancelled',
133
133
  ]);
134
+ // --- Contest visibility / access ---
135
+ // public = listed + viewable by anyone
136
+ // unlisted = viewable by direct link, hidden from listings
137
+ // private = owner/admin/stakeholders/judges + roles in `visibleToRoles` only
138
+ export const contestVisibilityEnum = pgEnum('contest_visibility', ['public', 'unlisted', 'private']);
134
139
  // --- Contest Judging ---
135
140
  export const judgeRoleEnum = pgEnum('judge_role', ['lead', 'judge', 'guest']);
136
141
  export const judgingVisibilityEnum = pgEnum('judging_visibility', ['public', 'judges-only', 'private']);
package/dist/enums.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"enums.js","sourceRoot":"","sources":["../src/enums.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../src/enums.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export * from './enums.js';
2
2
  export * from './auth.js';
3
+ export * from './rbac.js';
4
+ export * from './permissions.js';
3
5
  export * from './content.js';
4
6
  export * from './social.js';
5
7
  export * from './hub.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAG3B,cAAc,WAAW,CAAC;AAG1B,cAAc,cAAc,CAAC;AAG7B,cAAc,aAAa,CAAC;AAG5B,cAAc,UAAU,CAAC;AAGzB,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,cAAc,CAAC;AAG7B,cAAc,aAAa,CAAC;AAG5B,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,YAAY,CAAC;AAG3B,cAAc,aAAa,CAAC;AAG5B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAG3B,cAAc,WAAW,CAAC;AAG1B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,cAAc,CAAC;AAG7B,cAAc,aAAa,CAAC;AAG5B,cAAc,UAAU,CAAC;AAGzB,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,cAAc,CAAC;AAG7B,cAAc,aAAa,CAAC;AAG5B,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,YAAY,CAAC;AAG3B,cAAc,aAAa,CAAC;AAG5B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -2,6 +2,9 @@
2
2
  export * from './enums.js';
3
3
  // Auth & Users
4
4
  export * from './auth.js';
5
+ // Global RBAC (roles/permissions — session 175, migration 0009)
6
+ export * from './rbac.js';
7
+ export * from './permissions.js';
5
8
  // Content
6
9
  export * from './content.js';
7
10
  // Social
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,eAAe;AACf,cAAc,WAAW,CAAC;AAE1B,UAAU;AACV,cAAc,cAAc,CAAC;AAE7B,SAAS;AACT,cAAc,aAAa,CAAC;AAE5B,OAAO;AACP,cAAc,UAAU,CAAC;AAEzB,WAAW;AACX,cAAc,cAAc,CAAC;AAE7B,WAAW;AACX,cAAc,eAAe,CAAC;AAE9B,OAAO;AACP,cAAc,WAAW,CAAC;AAE1B,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,UAAU;AACV,cAAc,cAAc,CAAC;AAE7B,SAAS;AACT,cAAc,aAAa,CAAC;AAE5B,SAAS;AACT,cAAc,aAAa,CAAC;AAE5B,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,aAAa;AACb,cAAc,iBAAiB,CAAC;AAEhC,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,+BAA+B;AAC/B,cAAc,aAAa,CAAC;AAE5B,8FAA8F;AAC9F,cAAc,qBAAqB,CAAC;AAEpC,yCAAyC;AACzC,cAAc,gBAAgB,CAAC;AAE/B,aAAa;AACb,cAAc,iBAAiB,CAAC;AAEhC,UAAU;AACV,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,eAAe;AACf,cAAc,WAAW,CAAC;AAE1B,gEAAgE;AAChE,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AAEjC,UAAU;AACV,cAAc,cAAc,CAAC;AAE7B,SAAS;AACT,cAAc,aAAa,CAAC;AAE5B,OAAO;AACP,cAAc,UAAU,CAAC;AAEzB,WAAW;AACX,cAAc,cAAc,CAAC;AAE7B,WAAW;AACX,cAAc,eAAe,CAAC;AAE9B,OAAO;AACP,cAAc,WAAW,CAAC;AAE1B,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,UAAU;AACV,cAAc,cAAc,CAAC;AAE7B,SAAS;AACT,cAAc,aAAa,CAAC;AAE5B,SAAS;AACT,cAAc,aAAa,CAAC;AAE5B,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,aAAa;AACb,cAAc,iBAAiB,CAAC;AAEhC,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,+BAA+B;AAC/B,cAAc,aAAa,CAAC;AAE5B,8FAA8F;AAC9F,cAAc,qBAAqB,CAAC;AAEpC,yCAAyC;AACzC,cAAc,gBAAgB,CAAC;AAE/B,aAAa;AACb,cAAc,iBAAiB,CAAC;AAEhC,UAAU;AACV,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Global RBAC permission catalog — a CODE CONSTANT, not a table.
4
+ *
5
+ * Modeled exactly on `PUBLIC_API_SCOPES` (validators.ts) + `hasScope`
6
+ * (packages/server/src/publicApi/scopes.ts). Permissions are capability-level
7
+ * keys (one per coherent admin capability) and only change when code does, so
8
+ * they need a compile-time type, not operator-editable data. ROLES are data
9
+ * (see rbac.ts); the keys a role bundles are validated against THIS catalog on
10
+ * write (like `filterKnownScopes`).
11
+ *
12
+ * Grant forms stored in `role_permissions.permissionKey`:
13
+ * - `*` — full wildcard (admin only)
14
+ * - an exact catalog key (e.g. `content.moderate`)
15
+ * - a segment wildcard `<prefix>.*` (e.g. `content.*`) where `<prefix>` is the
16
+ * first segment of at least one catalog key.
17
+ *
18
+ * Wildcard matching itself lives in the pure `hasPermissionPure`
19
+ * (packages/auth/src/permissions.ts) — this module only defines + validates the
20
+ * vocabulary.
21
+ */
22
+ export declare const PERMISSIONS: readonly ["*", "admin.access", "users.read", "users.manage", "users.delete", "roles.manage", "content.read", "content.moderate", "content.editorial", "reports.review", "contest.create", "contest.manage", "event.create", "event.manage", "settings.manage", "theme.manage", "layout.manage", "navigation.manage", "search.manage", "apikeys.manage", "storage.manage", "categories.manage", "federation.manage", "audit.read"];
23
+ export type PermissionKey = (typeof PERMISSIONS)[number];
24
+ /** True if `value` is an exact catalog key. */
25
+ export declare function isPermissionKey(value: string): value is PermissionKey;
26
+ /**
27
+ * True if `value` is a valid STORED grant: `*`, an exact catalog key, or a
28
+ * recognized `<prefix>.*` segment wildcard. Used to validate
29
+ * `role_permissions.permissionKey` on write (the catalog-as-gate), mirroring
30
+ * `filterKnownScopes`.
31
+ */
32
+ export declare function isPermissionGrant(value: string): boolean;
33
+ /** Zod validator for a single stored grant (catalog-gated). */
34
+ export declare const permissionKeySchema: z.ZodString;
35
+ /**
36
+ * Filter a stored grant array down to still-recognized grants. Defensive load
37
+ * guard, exactly like `filterKnownScopes` — catches leftovers from a removed
38
+ * catalog key or a typo that predates validation.
39
+ */
40
+ export declare function filterKnownPermissions(grants: readonly string[]): string[];
41
+ //# sourceMappingURL=permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,WAAW,maAkCd,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AASzD,+CAA+C;AAC/C,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOxD;AAED,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,aAEmC,CAAC;AAEpE;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAE1E"}
@@ -0,0 +1,92 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Global RBAC permission catalog — a CODE CONSTANT, not a table.
4
+ *
5
+ * Modeled exactly on `PUBLIC_API_SCOPES` (validators.ts) + `hasScope`
6
+ * (packages/server/src/publicApi/scopes.ts). Permissions are capability-level
7
+ * keys (one per coherent admin capability) and only change when code does, so
8
+ * they need a compile-time type, not operator-editable data. ROLES are data
9
+ * (see rbac.ts); the keys a role bundles are validated against THIS catalog on
10
+ * write (like `filterKnownScopes`).
11
+ *
12
+ * Grant forms stored in `role_permissions.permissionKey`:
13
+ * - `*` — full wildcard (admin only)
14
+ * - an exact catalog key (e.g. `content.moderate`)
15
+ * - a segment wildcard `<prefix>.*` (e.g. `content.*`) where `<prefix>` is the
16
+ * first segment of at least one catalog key.
17
+ *
18
+ * Wildcard matching itself lives in the pure `hasPermissionPure`
19
+ * (packages/auth/src/permissions.ts) — this module only defines + validates the
20
+ * vocabulary.
21
+ */
22
+ export const PERMISSIONS = [
23
+ // Admin bypass — only ever granted to the `admin` role.
24
+ '*',
25
+ // Admin-only umbrella. `requireAdmin` is reimplemented as
26
+ // `requirePermission(event, 'admin.access')`, so this key is the linchpin
27
+ // routing all legacy admin gates through the new machinery.
28
+ 'admin.access',
29
+ // Users
30
+ 'users.read',
31
+ 'users.manage',
32
+ 'users.delete',
33
+ // Roles (RBAC self-administration — Phase 3 admin UI gates on this)
34
+ 'roles.manage',
35
+ // Content + moderation
36
+ 'content.read',
37
+ 'content.moderate',
38
+ 'content.editorial',
39
+ 'reports.review',
40
+ // Contests + events
41
+ 'contest.create',
42
+ 'contest.manage',
43
+ 'event.create',
44
+ 'event.manage',
45
+ // Instance administration
46
+ 'settings.manage',
47
+ 'theme.manage',
48
+ 'layout.manage',
49
+ 'navigation.manage',
50
+ 'search.manage',
51
+ 'apikeys.manage',
52
+ 'storage.manage',
53
+ 'categories.manage',
54
+ 'federation.manage',
55
+ 'audit.read',
56
+ ];
57
+ const PERMISSION_SET = new Set(PERMISSIONS);
58
+ /** Valid first segments for `<prefix>.*` segment-wildcard grants. */
59
+ const PERMISSION_PREFIXES = new Set(PERMISSIONS.filter((p) => p.includes('.')).map((p) => p.slice(0, p.indexOf('.'))));
60
+ /** True if `value` is an exact catalog key. */
61
+ export function isPermissionKey(value) {
62
+ return PERMISSION_SET.has(value);
63
+ }
64
+ /**
65
+ * True if `value` is a valid STORED grant: `*`, an exact catalog key, or a
66
+ * recognized `<prefix>.*` segment wildcard. Used to validate
67
+ * `role_permissions.permissionKey` on write (the catalog-as-gate), mirroring
68
+ * `filterKnownScopes`.
69
+ */
70
+ export function isPermissionGrant(value) {
71
+ if (value === '*')
72
+ return true;
73
+ if (isPermissionKey(value))
74
+ return true;
75
+ if (value.endsWith('.*')) {
76
+ return PERMISSION_PREFIXES.has(value.slice(0, -2));
77
+ }
78
+ return false;
79
+ }
80
+ /** Zod validator for a single stored grant (catalog-gated). */
81
+ export const permissionKeySchema = z
82
+ .string()
83
+ .refine(isPermissionGrant, { message: 'Unknown permission key' });
84
+ /**
85
+ * Filter a stored grant array down to still-recognized grants. Defensive load
86
+ * guard, exactly like `filterKnownScopes` — catches leftovers from a removed
87
+ * catalog key or a typo that predates validation.
88
+ */
89
+ export function filterKnownPermissions(grants) {
90
+ return grants.filter((g) => isPermissionGrant(g));
91
+ }
92
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,wDAAwD;IACxD,GAAG;IACH,0DAA0D;IAC1D,0EAA0E;IAC1E,4DAA4D;IAC5D,cAAc;IACd,QAAQ;IACR,YAAY;IACZ,cAAc;IACd,cAAc;IACd,oEAAoE;IACpE,cAAc;IACd,uBAAuB;IACvB,cAAc;IACd,kBAAkB;IAClB,mBAAmB;IACnB,gBAAgB;IAChB,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB;IAChB,cAAc;IACd,cAAc;IACd,0BAA0B;IAC1B,iBAAiB;IACjB,cAAc;IACd,eAAe;IACf,mBAAmB;IACnB,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,mBAAmB;IACnB,mBAAmB;IACnB,YAAY;CACJ,CAAC;AAIX,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;AAEjE,qEAAqE;AACrE,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CACtD,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAClF,CAAC;AAEF,+CAA+C;AAC/C,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,eAAe,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+DAA+D;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,EAAE;KACR,MAAM,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAC;AAEpE;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAyB;IAC9D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC"}