@tietokilta/ilmomasiina-models 2.0.0-alpha4 → 2.0.0-alpha40

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.
Files changed (147) hide show
  1. package/README.md +0 -2
  2. package/dist/attrs/event.d.ts +17 -0
  3. package/dist/attrs/event.d.ts.map +1 -0
  4. package/dist/attrs/event.js +61 -0
  5. package/dist/enum.d.ts +54 -0
  6. package/dist/enum.d.ts.map +1 -0
  7. package/dist/enum.js +61 -0
  8. package/dist/index.d.ts +2 -8
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +16 -0
  11. package/dist/models/answer.d.ts +5 -5
  12. package/dist/models/answer.d.ts.map +1 -1
  13. package/dist/models/auditlog.d.ts +2 -1
  14. package/dist/models/auditlog.d.ts.map +1 -1
  15. package/dist/models/index.d.ts +8 -0
  16. package/dist/models/index.d.ts.map +1 -0
  17. package/dist/models/question.d.ts +4 -5
  18. package/dist/models/question.d.ts.map +1 -1
  19. package/dist/models/question.js +0 -2
  20. package/dist/models/quota.d.ts +2 -2
  21. package/dist/models/signup.d.ts +4 -4
  22. package/dist/models/signup.d.ts.map +1 -1
  23. package/dist/models/signup.js +0 -2
  24. package/dist/schema/auditLog/attributes.d.ts +15 -0
  25. package/dist/schema/auditLog/attributes.d.ts.map +1 -0
  26. package/dist/schema/auditLog/attributes.js +42 -0
  27. package/dist/schema/auditLog/index.d.ts +36 -0
  28. package/dist/schema/auditLog/index.d.ts.map +1 -0
  29. package/dist/schema/auditLog/index.js +41 -0
  30. package/dist/schema/category/index.d.ts +10 -0
  31. package/dist/schema/category/index.d.ts.map +1 -0
  32. package/dist/schema/category/index.js +10 -0
  33. package/dist/schema/errors/index.d.ts +55 -0
  34. package/dist/schema/errors/index.d.ts.map +1 -0
  35. package/dist/schema/errors/index.js +54 -0
  36. package/dist/schema/event/attributes.d.ts +90 -0
  37. package/dist/schema/event/attributes.d.ts.map +1 -0
  38. package/dist/schema/event/attributes.js +113 -0
  39. package/dist/schema/event/index.d.ts +233 -0
  40. package/dist/schema/event/index.d.ts.map +1 -0
  41. package/dist/schema/event/index.js +72 -0
  42. package/dist/schema/eventList/index.d.ts +118 -0
  43. package/dist/schema/eventList/index.d.ts.map +1 -0
  44. package/dist/schema/eventList/index.js +39 -0
  45. package/dist/schema/headers.d.ts +3 -0
  46. package/dist/schema/headers.d.ts.map +1 -0
  47. package/dist/schema/headers.js +6 -0
  48. package/dist/schema/index.d.ts +15 -0
  49. package/dist/schema/index.d.ts.map +1 -0
  50. package/dist/schema/index.js +30 -0
  51. package/dist/schema/login/index.d.ts +15 -0
  52. package/dist/schema/login/index.d.ts.map +1 -0
  53. package/dist/schema/login/index.js +16 -0
  54. package/dist/schema/question/attributes.d.ts +15 -0
  55. package/dist/schema/question/attributes.d.ts.map +1 -0
  56. package/dist/schema/question/attributes.js +37 -0
  57. package/dist/schema/question/index.d.ts +36 -0
  58. package/dist/schema/question/index.d.ts.map +1 -0
  59. package/dist/schema/question/index.js +15 -0
  60. package/dist/schema/quota/attributes.d.ts +11 -0
  61. package/dist/schema/quota/attributes.d.ts.map +1 -0
  62. package/dist/schema/quota/attributes.js +25 -0
  63. package/dist/schema/quota/index.d.ts +25 -0
  64. package/dist/schema/quota/index.d.ts.map +1 -0
  65. package/dist/schema/quota/index.js +15 -0
  66. package/dist/schema/quotaWithSignups/index.d.ts +57 -0
  67. package/dist/schema/quotaWithSignups/index.d.ts.map +1 -0
  68. package/dist/schema/quotaWithSignups/index.js +33 -0
  69. package/dist/schema/signup/attributes.d.ts +40 -0
  70. package/dist/schema/signup/attributes.d.ts.map +1 -0
  71. package/dist/schema/signup/attributes.js +83 -0
  72. package/dist/schema/signup/index.d.ts +112 -0
  73. package/dist/schema/signup/index.d.ts.map +1 -0
  74. package/dist/schema/signup/index.js +45 -0
  75. package/dist/schema/signupForEdit/index.d.ts +81 -0
  76. package/dist/schema/signupForEdit/index.d.ts.map +1 -0
  77. package/dist/schema/signupForEdit/index.js +28 -0
  78. package/dist/schema/slug/index.d.ts +15 -0
  79. package/dist/schema/slug/index.d.ts.map +1 -0
  80. package/dist/schema/slug/index.js +19 -0
  81. package/dist/schema/user/attributes.d.ts +14 -0
  82. package/dist/schema/user/attributes.d.ts.map +1 -0
  83. package/dist/schema/user/attributes.js +27 -0
  84. package/dist/schema/user/index.d.ts +45 -0
  85. package/dist/schema/user/index.d.ts.map +1 -0
  86. package/dist/schema/user/index.js +27 -0
  87. package/dist/schema/utils.d.ts +3 -0
  88. package/dist/schema/utils.d.ts.map +1 -0
  89. package/dist/schema/utils.js +7 -0
  90. package/package.json +6 -3
  91. package/dist/services/admin/categories/index.d.ts +0 -7
  92. package/dist/services/admin/categories/index.d.ts.map +0 -1
  93. package/dist/services/admin/categories/list.d.ts +0 -2
  94. package/dist/services/admin/categories/list.d.ts.map +0 -1
  95. package/dist/services/admin/categories/list.js +0 -2
  96. package/dist/services/admin/events/create.d.ts +0 -15
  97. package/dist/services/admin/events/create.d.ts.map +0 -1
  98. package/dist/services/admin/events/create.js +0 -38
  99. package/dist/services/admin/events/index.d.ts +0 -32
  100. package/dist/services/admin/events/index.d.ts.map +0 -1
  101. package/dist/services/admin/events/index.js +0 -2
  102. package/dist/services/admin/events/update.d.ts +0 -17
  103. package/dist/services/admin/events/update.d.ts.map +0 -1
  104. package/dist/services/admin/events/update.js +0 -2
  105. package/dist/services/admin/slug/get.d.ts +0 -6
  106. package/dist/services/admin/slug/get.d.ts.map +0 -1
  107. package/dist/services/admin/slug/get.js +0 -2
  108. package/dist/services/admin/slug/index.d.ts +0 -7
  109. package/dist/services/admin/slug/index.d.ts.map +0 -1
  110. package/dist/services/admin/slug/index.js +0 -2
  111. package/dist/services/auditlog/index.d.ts +0 -26
  112. package/dist/services/auditlog/index.d.ts.map +0 -1
  113. package/dist/services/auditlog/index.js +0 -2
  114. package/dist/services/auth/index.d.ts +0 -18
  115. package/dist/services/auth/index.d.ts.map +0 -1
  116. package/dist/services/auth/index.js +0 -2
  117. package/dist/services/events/details.d.ts +0 -45
  118. package/dist/services/events/details.d.ts.map +0 -1
  119. package/dist/services/events/details.js +0 -67
  120. package/dist/services/events/index.d.ts +0 -26
  121. package/dist/services/events/index.d.ts.map +0 -1
  122. package/dist/services/events/index.js +0 -2
  123. package/dist/services/events/list.d.ts +0 -18
  124. package/dist/services/events/list.d.ts.map +0 -1
  125. package/dist/services/events/list.js +0 -26
  126. package/dist/services/signups/create.d.ts +0 -10
  127. package/dist/services/signups/create.d.ts.map +0 -1
  128. package/dist/services/signups/create.js +0 -2
  129. package/dist/services/signups/getForEdit.d.ts +0 -29
  130. package/dist/services/signups/getForEdit.d.ts.map +0 -1
  131. package/dist/services/signups/getForEdit.js +0 -29
  132. package/dist/services/signups/index.d.ts +0 -28
  133. package/dist/services/signups/index.d.ts.map +0 -1
  134. package/dist/services/signups/index.js +0 -2
  135. package/dist/services/signups/update.d.ts +0 -19
  136. package/dist/services/signups/update.d.ts.map +0 -1
  137. package/dist/services/signups/update.js +0 -2
  138. package/dist/services/users/details.d.ts +0 -10
  139. package/dist/services/users/details.d.ts.map +0 -1
  140. package/dist/services/users/details.js +0 -5
  141. package/dist/services/users/index.d.ts +0 -13
  142. package/dist/services/users/index.d.ts.map +0 -1
  143. package/dist/services/users/index.js +0 -2
  144. package/dist/utils.d.ts +0 -5
  145. package/dist/utils.d.ts.map +0 -1
  146. package/dist/utils.js +0 -2
  147. /package/dist/{services/admin/categories → models}/index.js +0 -0
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signupValidationError = exports.wouldMoveSignupsToQueueError = exports.editConflictError = exports.errorResponse = void 0;
4
+ const typebox_1 = require("@sinclair/typebox");
5
+ const enum_1 = require("../../enum");
6
+ const attributes_1 = require("../question/attributes");
7
+ const attributes_2 = require("../quota/attributes");
8
+ /** Response schema for a generic error. */
9
+ exports.errorResponse = typebox_1.Type.Object({
10
+ statusCode: typebox_1.Type.Number(),
11
+ code: typebox_1.Type.Optional(typebox_1.Type.Enum(enum_1.ErrorCode)),
12
+ message: typebox_1.Type.String(),
13
+ });
14
+ /** Response schema for an edit conflicting with another edit on the server. */
15
+ exports.editConflictError = typebox_1.Type.Composite([
16
+ exports.errorResponse,
17
+ typebox_1.Type.Object({
18
+ updatedAt: typebox_1.Type.String({
19
+ format: "date-time",
20
+ description: "Last update time of the event on the server.",
21
+ }),
22
+ deletedQuotas: typebox_1.Type.Array(attributes_2.quotaID, {
23
+ description: "IDs of quotas that are already deleted on the server.",
24
+ }),
25
+ deletedQuestions: typebox_1.Type.Array(attributes_1.questionID, {
26
+ description: "IDs of questions that are already deleted on the server.",
27
+ }),
28
+ }),
29
+ ]);
30
+ /** Response schema for an edit that would move some signups back to the queue. */
31
+ exports.wouldMoveSignupsToQueueError = typebox_1.Type.Composite([
32
+ exports.errorResponse,
33
+ typebox_1.Type.Object({
34
+ count: typebox_1.Type.Integer({
35
+ description: "Number of signups that would end up back in the queue if the action is executed.",
36
+ }),
37
+ }),
38
+ ]);
39
+ /** Schema for validation errors on a signup. */
40
+ const signupValidationErrors = typebox_1.Type.Object({
41
+ firstName: typebox_1.Type.Optional(typebox_1.Type.Enum(enum_1.SignupFieldError)),
42
+ lastName: typebox_1.Type.Optional(typebox_1.Type.Enum(enum_1.SignupFieldError)),
43
+ email: typebox_1.Type.Optional(typebox_1.Type.Enum(enum_1.SignupFieldError)),
44
+ answers: typebox_1.Type.Optional(typebox_1.Type.Record(attributes_1.questionID, typebox_1.Type.Enum(enum_1.SignupFieldError), {
45
+ description: "The errors for answers, indexed by question ID.",
46
+ })),
47
+ });
48
+ /** Response schema for an invalid signup edit. */
49
+ exports.signupValidationError = typebox_1.Type.Composite([
50
+ exports.errorResponse,
51
+ typebox_1.Type.Object({
52
+ errors: signupValidationErrors,
53
+ }),
54
+ ]);
@@ -0,0 +1,90 @@
1
+ export declare const eventSlug: import("@sinclair/typebox").TString;
2
+ /** Event ID type. Randomly generated alphanumeric string. */
3
+ export declare const eventID: import("@sinclair/typebox").TString;
4
+ /** Non-editable identity attributes for events. */
5
+ export declare const eventIdentity: import("@sinclair/typebox").TObject<{
6
+ id: import("@sinclair/typebox").TString;
7
+ }>;
8
+ /** Event attributes that are included in public event lists. */
9
+ export declare const userEventListAttributes: import("@sinclair/typebox").TObject<{
10
+ title: import("@sinclair/typebox").TString;
11
+ slug: import("@sinclair/typebox").TString;
12
+ date: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
13
+ endDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
14
+ registrationStartDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
15
+ registrationEndDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
16
+ openQuotaSize: import("@sinclair/typebox").TInteger;
17
+ category: import("@sinclair/typebox").TString;
18
+ description: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
19
+ price: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
20
+ location: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
21
+ webpageUrl: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
22
+ facebookUrl: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
23
+ signupsPublic: import("@sinclair/typebox").TBoolean;
24
+ }>;
25
+ /** Event attributes that are included in public event details. */
26
+ export declare const userEventDetailsAttributes: import("@sinclair/typebox").TObject<{
27
+ title: import("@sinclair/typebox").TString;
28
+ description: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
29
+ date: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
30
+ slug: import("@sinclair/typebox").TString;
31
+ endDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
32
+ registrationStartDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
33
+ registrationEndDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
34
+ openQuotaSize: import("@sinclair/typebox").TInteger;
35
+ category: import("@sinclair/typebox").TString;
36
+ price: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
37
+ location: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
38
+ webpageUrl: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
39
+ facebookUrl: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
40
+ signupsPublic: import("@sinclair/typebox").TBoolean;
41
+ nameQuestion: import("@sinclair/typebox").TBoolean;
42
+ emailQuestion: import("@sinclair/typebox").TBoolean;
43
+ }>;
44
+ /** Event attributes that are included for admins in event lists. */
45
+ export declare const adminEventListAttributes: import("@sinclair/typebox").TObject<{
46
+ title: import("@sinclair/typebox").TString;
47
+ description: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
48
+ date: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
49
+ slug: import("@sinclair/typebox").TString;
50
+ endDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
51
+ registrationStartDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
52
+ registrationEndDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
53
+ openQuotaSize: import("@sinclair/typebox").TInteger;
54
+ category: import("@sinclair/typebox").TString;
55
+ price: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
56
+ location: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
57
+ webpageUrl: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
58
+ facebookUrl: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
59
+ signupsPublic: import("@sinclair/typebox").TBoolean;
60
+ draft: import("@sinclair/typebox").TBoolean;
61
+ listed: import("@sinclair/typebox").TBoolean;
62
+ }>;
63
+ /** Event attributes that are included for admins in event details. */
64
+ export declare const adminEventDetailsAttributes: import("@sinclair/typebox").TObject<{
65
+ title: import("@sinclair/typebox").TString;
66
+ description: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
67
+ date: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
68
+ slug: import("@sinclair/typebox").TString;
69
+ endDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
70
+ registrationStartDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
71
+ registrationEndDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
72
+ openQuotaSize: import("@sinclair/typebox").TInteger;
73
+ category: import("@sinclair/typebox").TString;
74
+ price: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
75
+ location: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
76
+ webpageUrl: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
77
+ facebookUrl: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
78
+ signupsPublic: import("@sinclair/typebox").TBoolean;
79
+ nameQuestion: import("@sinclair/typebox").TBoolean;
80
+ emailQuestion: import("@sinclair/typebox").TBoolean;
81
+ draft: import("@sinclair/typebox").TBoolean;
82
+ listed: import("@sinclair/typebox").TBoolean;
83
+ verificationEmail: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
84
+ }>;
85
+ /** Event attributes that are dynamically calculated in public event details. */
86
+ export declare const eventDynamicAttributes: import("@sinclair/typebox").TObject<{
87
+ millisTillOpening: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
88
+ registrationClosed: import("@sinclair/typebox").TBoolean;
89
+ }>;
90
+ //# sourceMappingURL=attributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../../src/schema/event/attributes.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,SAAS,qCAKpB,CAAC;AAEH,6DAA6D;AAC7D,eAAO,MAAM,OAAO,qCAMlB,CAAC;AAEH,mDAAmD;AACnD,eAAO,MAAM,aAAa;;EAExB,CAAC;AAEH,gEAAgE;AAChE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EA+ClC,CAAC;AAWH,kEAAkE;AAClE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;EAA8E,CAAC;AAatH,oEAAoE;AACpE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;EAAsE,CAAC;AAQ5G,sEAAsE;AACtE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;EAKtC,CAAC;AAEH,gFAAgF;AAChF,eAAO,MAAM,sBAAsB;;;EAOjC,CAAC"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.eventDynamicAttributes = exports.adminEventDetailsAttributes = exports.adminEventListAttributes = exports.userEventDetailsAttributes = exports.userEventListAttributes = exports.eventIdentity = exports.eventID = exports.eventSlug = void 0;
4
+ const typebox_1 = require("@sinclair/typebox");
5
+ const utils_1 = require("../utils");
6
+ exports.eventSlug = typebox_1.Type.String({
7
+ description: "Event slug, used for accessing the event by URL.",
8
+ minLength: 1,
9
+ maxLength: 255,
10
+ pattern: "^[A-Za-z0-9_-]+$",
11
+ });
12
+ /** Event ID type. Randomly generated alphanumeric string. */
13
+ exports.eventID = typebox_1.Type.String({
14
+ title: "EventID",
15
+ description: "Event ID. Randomly generated alphanumeric string.",
16
+ minLength: 1,
17
+ maxLength: 32,
18
+ pattern: "^[a-z0-9]+$",
19
+ });
20
+ /** Non-editable identity attributes for events. */
21
+ exports.eventIdentity = typebox_1.Type.Object({
22
+ id: exports.eventID,
23
+ });
24
+ /** Event attributes that are included in public event lists. */
25
+ exports.userEventListAttributes = typebox_1.Type.Object({
26
+ title: typebox_1.Type.String({
27
+ description: "Event title.",
28
+ minLength: 1,
29
+ maxLength: 255,
30
+ }),
31
+ slug: exports.eventSlug,
32
+ date: (0, utils_1.Nullable)(typebox_1.Type.String({ format: "date-time" }), {
33
+ description: "Event start date. Considered to be the start date if endDate is also set. If null, " +
34
+ "the event is signup-only.",
35
+ }),
36
+ endDate: (0, utils_1.Nullable)(typebox_1.Type.String({ format: "date-time" }), {
37
+ description: "Event end date. If null, the event will not appear in iCalendar exports.",
38
+ }),
39
+ registrationStartDate: (0, utils_1.Nullable)(typebox_1.Type.String({ format: "date-time" }), {
40
+ description: "Event signup opening date. If null, the event does not have a signup.",
41
+ }),
42
+ registrationEndDate: (0, utils_1.Nullable)(typebox_1.Type.String({ format: "date-time" }), {
43
+ description: "Event signup closing date.",
44
+ }),
45
+ openQuotaSize: typebox_1.Type.Integer({
46
+ description: "The size of the open quota, which will be filled with signups overflowing their dedicated quota.",
47
+ minimum: 0,
48
+ }),
49
+ category: typebox_1.Type.String({
50
+ description: "Category tag for the event. Can be used for filtering.",
51
+ maxLength: 255,
52
+ }),
53
+ description: (0, utils_1.Nullable)(typebox_1.Type.String(), {
54
+ description: "Description for the event. Supports Markdown.",
55
+ }),
56
+ price: (0, utils_1.Nullable)(typebox_1.Type.String({ maxLength: 255 }), {
57
+ description: "Free-form pricing information for the event.",
58
+ }),
59
+ location: (0, utils_1.Nullable)(typebox_1.Type.String({ maxLength: 255 }), {
60
+ description: "Free-form location information for the event.",
61
+ }),
62
+ webpageUrl: (0, utils_1.Nullable)(typebox_1.Type.String({ maxLength: 255 }), {
63
+ description: "Link to an external event webpage.",
64
+ }),
65
+ facebookUrl: (0, utils_1.Nullable)(typebox_1.Type.String({ maxLength: 255 }), {
66
+ description: "Link to a Facebook page for the event.",
67
+ }),
68
+ signupsPublic: typebox_1.Type.Boolean({
69
+ description: "Whether signups should be shown to all users.",
70
+ }),
71
+ });
72
+ const attributesAddedForUsersInDetails = typebox_1.Type.Object({
73
+ nameQuestion: typebox_1.Type.Boolean({
74
+ description: "Whether signups should contain a name field.",
75
+ }),
76
+ emailQuestion: typebox_1.Type.Boolean({
77
+ description: "Whether signups should contain an email field. Also enables confirmation emails.",
78
+ }),
79
+ });
80
+ /** Event attributes that are included in public event details. */
81
+ exports.userEventDetailsAttributes = typebox_1.Type.Composite([exports.userEventListAttributes, attributesAddedForUsersInDetails]);
82
+ const attributesAddedForAdmins = typebox_1.Type.Object({
83
+ draft: typebox_1.Type.Boolean({
84
+ description: "Whether the event is a draft, shown only to signed-in admins.",
85
+ }),
86
+ listed: typebox_1.Type.Boolean({
87
+ description: "Whether the event is publicly visible on the front page of Ilmomasiina." +
88
+ " Unlisted events are only accessible with a direct link",
89
+ }),
90
+ });
91
+ /** Event attributes that are included for admins in event lists. */
92
+ exports.adminEventListAttributes = typebox_1.Type.Composite([exports.userEventListAttributes, attributesAddedForAdmins]);
93
+ const attributesAddedForAdminsInDetails = typebox_1.Type.Object({
94
+ verificationEmail: (0, utils_1.Nullable)(typebox_1.Type.String(), {
95
+ description: "Custom message for the signup confirmation email.",
96
+ }),
97
+ });
98
+ /** Event attributes that are included for admins in event details. */
99
+ exports.adminEventDetailsAttributes = typebox_1.Type.Composite([
100
+ exports.userEventListAttributes,
101
+ attributesAddedForUsersInDetails,
102
+ attributesAddedForAdmins,
103
+ attributesAddedForAdminsInDetails,
104
+ ]);
105
+ /** Event attributes that are dynamically calculated in public event details. */
106
+ exports.eventDynamicAttributes = typebox_1.Type.Object({
107
+ millisTillOpening: (0, utils_1.Nullable)(typebox_1.Type.Integer(), {
108
+ description: "Time in ms until signup opens. If null, the signup will not open in the future.",
109
+ }),
110
+ registrationClosed: typebox_1.Type.Boolean({
111
+ description: "Whether the signup has closed.",
112
+ }),
113
+ });
@@ -0,0 +1,233 @@
1
+ import { Static } from "@sinclair/typebox";
2
+ import { eventID, eventSlug } from "./attributes";
3
+ /** Response schema for fetching or modifying an event in the admin API. */
4
+ export declare const adminEventResponse: import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TObject<{
5
+ id: import("@sinclair/typebox").TString;
6
+ }>, import("@sinclair/typebox").TObject<{
7
+ title: import("@sinclair/typebox").TString;
8
+ description: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
9
+ date: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
10
+ slug: import("@sinclair/typebox").TString;
11
+ endDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
12
+ registrationStartDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
13
+ registrationEndDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
14
+ openQuotaSize: import("@sinclair/typebox").TInteger;
15
+ category: import("@sinclair/typebox").TString;
16
+ price: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
17
+ location: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
18
+ webpageUrl: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
19
+ facebookUrl: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
20
+ signupsPublic: import("@sinclair/typebox").TBoolean;
21
+ nameQuestion: import("@sinclair/typebox").TBoolean;
22
+ emailQuestion: import("@sinclair/typebox").TBoolean;
23
+ draft: import("@sinclair/typebox").TBoolean;
24
+ listed: import("@sinclair/typebox").TBoolean;
25
+ verificationEmail: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
26
+ }>, import("@sinclair/typebox").TObject<{
27
+ questions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
28
+ id: import("@sinclair/typebox").TString;
29
+ question: import("@sinclair/typebox").TString;
30
+ type: import("@sinclair/typebox").TEnum<typeof import("../..").QuestionType>;
31
+ options: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>, import("@sinclair/typebox").TNull]>;
32
+ required: import("@sinclair/typebox").TBoolean;
33
+ public: import("@sinclair/typebox").TBoolean;
34
+ }>>;
35
+ quotas: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
36
+ id: import("@sinclair/typebox").TString;
37
+ title: import("@sinclair/typebox").TString;
38
+ size: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
39
+ signupCount: import("@sinclair/typebox").TInteger;
40
+ signups: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
41
+ id: import("@sinclair/typebox").TString;
42
+ email: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
43
+ firstName: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
44
+ lastName: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
45
+ answers: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
46
+ questionId: import("@sinclair/typebox").TString;
47
+ answer: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>]>;
48
+ }>>;
49
+ namePublic: import("@sinclair/typebox").TBoolean;
50
+ createdAt: import("@sinclair/typebox").TString;
51
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TEnum<typeof import("../..").SignupStatus>, import("@sinclair/typebox").TNull]>;
52
+ position: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
53
+ confirmed: import("@sinclair/typebox").TBoolean;
54
+ }>>;
55
+ }>>;
56
+ updatedAt: import("@sinclair/typebox").TString;
57
+ }>]>;
58
+ /** Response schema for fetching an event from the public API. */
59
+ export declare const userEventResponse: import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TObject<{
60
+ id: import("@sinclair/typebox").TString;
61
+ }>, import("@sinclair/typebox").TObject<{
62
+ title: import("@sinclair/typebox").TString;
63
+ description: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
64
+ date: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
65
+ slug: import("@sinclair/typebox").TString;
66
+ endDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
67
+ registrationStartDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
68
+ registrationEndDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
69
+ openQuotaSize: import("@sinclair/typebox").TInteger;
70
+ category: import("@sinclair/typebox").TString;
71
+ price: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
72
+ location: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
73
+ webpageUrl: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
74
+ facebookUrl: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
75
+ signupsPublic: import("@sinclair/typebox").TBoolean;
76
+ nameQuestion: import("@sinclair/typebox").TBoolean;
77
+ emailQuestion: import("@sinclair/typebox").TBoolean;
78
+ }>, import("@sinclair/typebox").TObject<{
79
+ questions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
80
+ id: import("@sinclair/typebox").TString;
81
+ question: import("@sinclair/typebox").TString;
82
+ type: import("@sinclair/typebox").TEnum<typeof import("../..").QuestionType>;
83
+ options: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>, import("@sinclair/typebox").TNull]>;
84
+ required: import("@sinclair/typebox").TBoolean;
85
+ public: import("@sinclair/typebox").TBoolean;
86
+ }>>;
87
+ quotas: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
88
+ id: import("@sinclair/typebox").TString;
89
+ title: import("@sinclair/typebox").TString;
90
+ size: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
91
+ signupCount: import("@sinclair/typebox").TInteger;
92
+ signups: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
93
+ firstName: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
94
+ lastName: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
95
+ answers: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
96
+ questionId: import("@sinclair/typebox").TString;
97
+ answer: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>]>;
98
+ }>>;
99
+ namePublic: import("@sinclair/typebox").TBoolean;
100
+ createdAt: import("@sinclair/typebox").TString;
101
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TEnum<typeof import("../..").SignupStatus>, import("@sinclair/typebox").TNull]>;
102
+ position: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
103
+ confirmed: import("@sinclair/typebox").TBoolean;
104
+ }>>;
105
+ }>>;
106
+ }>, import("@sinclair/typebox").TObject<{
107
+ millisTillOpening: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
108
+ registrationClosed: import("@sinclair/typebox").TBoolean;
109
+ }>]>;
110
+ /** Request body for creating an event. */
111
+ export declare const eventCreateBody: import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TObject<{
112
+ title: import("@sinclair/typebox").TString;
113
+ description: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
114
+ date: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
115
+ slug: import("@sinclair/typebox").TString;
116
+ endDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
117
+ registrationStartDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
118
+ registrationEndDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
119
+ openQuotaSize: import("@sinclair/typebox").TInteger;
120
+ category: import("@sinclair/typebox").TString;
121
+ price: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
122
+ location: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
123
+ webpageUrl: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
124
+ facebookUrl: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
125
+ signupsPublic: import("@sinclair/typebox").TBoolean;
126
+ nameQuestion: import("@sinclair/typebox").TBoolean;
127
+ emailQuestion: import("@sinclair/typebox").TBoolean;
128
+ draft: import("@sinclair/typebox").TBoolean;
129
+ listed: import("@sinclair/typebox").TBoolean;
130
+ verificationEmail: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
131
+ }>, import("@sinclair/typebox").TObject<{
132
+ quotas: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
133
+ title: import("@sinclair/typebox").TString;
134
+ size: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
135
+ }>>;
136
+ questions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
137
+ question: import("@sinclair/typebox").TString;
138
+ type: import("@sinclair/typebox").TEnum<typeof import("../..").QuestionType>;
139
+ options: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>, import("@sinclair/typebox").TNull]>;
140
+ required: import("@sinclair/typebox").TBoolean;
141
+ public: import("@sinclair/typebox").TBoolean;
142
+ }>>;
143
+ }>]>;
144
+ /** Request body for editing an existing event. */
145
+ export declare const eventUpdateBody: import("@sinclair/typebox").TObject<{
146
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
147
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
148
+ date: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
149
+ slug: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
150
+ endDate: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
151
+ registrationStartDate: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
152
+ registrationEndDate: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
153
+ openQuotaSize: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
154
+ category: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
155
+ price: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
156
+ location: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
157
+ webpageUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
158
+ facebookUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
159
+ signupsPublic: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
160
+ nameQuestion: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
161
+ emailQuestion: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
162
+ draft: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
163
+ listed: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
164
+ verificationEmail: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
165
+ updatedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
166
+ questions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
167
+ id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
168
+ question: import("@sinclair/typebox").TString;
169
+ type: import("@sinclair/typebox").TEnum<typeof import("../..").QuestionType>;
170
+ options: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>, import("@sinclair/typebox").TNull]>;
171
+ required: import("@sinclair/typebox").TBoolean;
172
+ public: import("@sinclair/typebox").TBoolean;
173
+ }>>>;
174
+ quotas: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
175
+ id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
176
+ title: import("@sinclair/typebox").TString;
177
+ size: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
178
+ }>>>;
179
+ moveSignupsToQueue: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
180
+ }>;
181
+ /** Response schema when an event is fetched as part of an editable signup. */
182
+ export declare const userEventForSignup: import("@sinclair/typebox").TObject<{
183
+ id: import("@sinclair/typebox").TString;
184
+ title: import("@sinclair/typebox").TString;
185
+ description: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
186
+ date: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
187
+ slug: import("@sinclair/typebox").TString;
188
+ endDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
189
+ registrationStartDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
190
+ registrationEndDate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
191
+ openQuotaSize: import("@sinclair/typebox").TInteger;
192
+ category: import("@sinclair/typebox").TString;
193
+ price: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
194
+ location: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
195
+ webpageUrl: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
196
+ facebookUrl: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
197
+ signupsPublic: import("@sinclair/typebox").TBoolean;
198
+ nameQuestion: import("@sinclair/typebox").TBoolean;
199
+ emailQuestion: import("@sinclair/typebox").TBoolean;
200
+ questions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
201
+ id: import("@sinclair/typebox").TString;
202
+ question: import("@sinclair/typebox").TString;
203
+ type: import("@sinclair/typebox").TEnum<typeof import("../..").QuestionType>;
204
+ options: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>, import("@sinclair/typebox").TNull]>;
205
+ required: import("@sinclair/typebox").TBoolean;
206
+ public: import("@sinclair/typebox").TBoolean;
207
+ }>>;
208
+ }>;
209
+ /** Path parameters necessary to fetch an event from the admin API. */
210
+ export declare const adminEventPathParams: import("@sinclair/typebox").TObject<{
211
+ id: import("@sinclair/typebox").TString;
212
+ }>;
213
+ /** Path parameters necessary to fetch an event from the public API. */
214
+ export declare const userEventPathParams: import("@sinclair/typebox").TObject<{
215
+ slug: import("@sinclair/typebox").TString;
216
+ }>;
217
+ /** Event ID type. Randomly generated alphanumeric string. */
218
+ export type EventID = Static<typeof eventID>;
219
+ /** Event slug type. */
220
+ export type EventSlug = Static<typeof eventSlug>;
221
+ /** Path parameters necessary to fetch an event from the admin API. */
222
+ export type AdminEventPathParams = Static<typeof adminEventPathParams>;
223
+ /** Path parameters necessary to fetch an event from the public API. */
224
+ export type UserEventPathParams = Static<typeof userEventPathParams>;
225
+ /** Request body for creating an event. */
226
+ export type EventCreateBody = Static<typeof eventCreateBody>;
227
+ /** Request body for editing an existing event. */
228
+ export type EventUpdateBody = Static<typeof eventUpdateBody>;
229
+ /** Response schema for fetching or modifying an event in the admin API. */
230
+ export type AdminEventResponse = Static<typeof adminEventResponse>;
231
+ /** Response schema for fetching an event from the public API. */
232
+ export type UserEventResponse = Static<typeof userEventResponse>;
233
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schema/event/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAQ,MAAM,mBAAmB,CAAC;AAKjD,OAAO,EAGL,OAAO,EAEP,SAAS,EAEV,MAAM,cAAc,CAAC;AAEtB,2EAA2E;AAC3E,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAW7B,CAAC;AAEH,iEAAiE;AACjE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAQ5B,CAAC;AAEH,0CAA0C;AAC1C,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAM1B,CAAC;AAEH,kDAAkD;AAClD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB3B,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;EAM7B,CAAC;AAEH,sEAAsE;AACtE,eAAO,MAAM,oBAAoB;;EAE/B,CAAC;AAEH,uEAAuE;AACvE,eAAO,MAAM,mBAAmB;;EAE9B,CAAC;AAEH,6DAA6D;AAC7D,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC;AAC7C,uBAAuB;AACvB,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,SAAS,CAAC,CAAC;AAEjD,sEAAsE;AACtE,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACvE,uEAAuE;AACvE,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE,0CAA0C;AAC1C,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AAC7D,kDAAkD;AAClD,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AAE7D,2EAA2E;AAC3E,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACnE,iEAAiE;AACjE,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.userEventPathParams = exports.adminEventPathParams = exports.userEventForSignup = exports.eventUpdateBody = exports.eventCreateBody = exports.userEventResponse = exports.adminEventResponse = void 0;
4
+ const typebox_1 = require("@sinclair/typebox");
5
+ const question_1 = require("../question");
6
+ const quota_1 = require("../quota");
7
+ const quotaWithSignups_1 = require("../quotaWithSignups");
8
+ const attributes_1 = require("./attributes");
9
+ /** Response schema for fetching or modifying an event in the admin API. */
10
+ exports.adminEventResponse = typebox_1.Type.Intersect([
11
+ attributes_1.eventIdentity,
12
+ attributes_1.adminEventDetailsAttributes,
13
+ typebox_1.Type.Object({
14
+ questions: typebox_1.Type.Array(question_1.question),
15
+ quotas: typebox_1.Type.Array(quotaWithSignups_1.adminQuotaWithSignups),
16
+ updatedAt: typebox_1.Type.String({
17
+ description: "Last update time of the event. Used for edit conflict handling.",
18
+ format: "date-time",
19
+ }),
20
+ }),
21
+ ]);
22
+ /** Response schema for fetching an event from the public API. */
23
+ exports.userEventResponse = typebox_1.Type.Intersect([
24
+ attributes_1.eventIdentity,
25
+ attributes_1.userEventDetailsAttributes,
26
+ typebox_1.Type.Object({
27
+ questions: typebox_1.Type.Array(question_1.question),
28
+ quotas: typebox_1.Type.Array(quotaWithSignups_1.userQuotaWithSignups),
29
+ }),
30
+ attributes_1.eventDynamicAttributes,
31
+ ]);
32
+ /** Request body for creating an event. */
33
+ exports.eventCreateBody = typebox_1.Type.Intersect([
34
+ attributes_1.adminEventDetailsAttributes,
35
+ typebox_1.Type.Object({
36
+ quotas: typebox_1.Type.Array(quota_1.quotaCreate),
37
+ questions: typebox_1.Type.Array(question_1.questionCreate),
38
+ }),
39
+ ]);
40
+ /** Request body for editing an existing event. */
41
+ exports.eventUpdateBody = typebox_1.Type.Partial(typebox_1.Type.Composite([
42
+ attributes_1.adminEventDetailsAttributes,
43
+ typebox_1.Type.Object({
44
+ quotas: typebox_1.Type.Array(quota_1.quotaUpdate),
45
+ questions: typebox_1.Type.Array(question_1.questionUpdate),
46
+ moveSignupsToQueue: typebox_1.Type.Boolean({
47
+ default: false,
48
+ description: "Whether to allow moving signups to the queue, if caused by quota changes.",
49
+ }),
50
+ updatedAt: typebox_1.Type.String({
51
+ format: "date-time",
52
+ description: "Last update time of the event. An edit conflict is detected if this does not match the update " +
53
+ "date on the server.",
54
+ }),
55
+ }),
56
+ ]));
57
+ /** Response schema when an event is fetched as part of an editable signup. */
58
+ exports.userEventForSignup = typebox_1.Type.Composite([
59
+ attributes_1.eventIdentity,
60
+ attributes_1.userEventDetailsAttributes,
61
+ typebox_1.Type.Object({
62
+ questions: typebox_1.Type.Array(question_1.question),
63
+ }),
64
+ ]);
65
+ /** Path parameters necessary to fetch an event from the admin API. */
66
+ exports.adminEventPathParams = typebox_1.Type.Object({
67
+ id: attributes_1.eventID,
68
+ });
69
+ /** Path parameters necessary to fetch an event from the public API. */
70
+ exports.userEventPathParams = typebox_1.Type.Object({
71
+ slug: attributes_1.eventSlug,
72
+ });