@fc3/mmcadi 0.1.22 → 0.1.23

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 (194) hide show
  1. package/dist/.last-compile-time +1 -1
  2. package/dist/.last-publish-time +1 -1
  3. package/dist/client.js +254 -47
  4. package/dist/src/client/enum/page-type.d.ts +3 -0
  5. package/dist/src/client/enum/page-type.js +3 -0
  6. package/dist/src/client/enum/page-type.js.map +1 -1
  7. package/dist/src/client/factory/page.js +6 -0
  8. package/dist/src/client/factory/page.js.map +1 -1
  9. package/dist/src/client/page/confirm-hide-block.d.ts +7 -0
  10. package/dist/src/client/page/confirm-hide-block.js +28 -0
  11. package/dist/src/client/page/confirm-hide-block.js.map +1 -0
  12. package/dist/src/client/page/history.d.ts +16 -0
  13. package/dist/src/client/page/history.js +126 -0
  14. package/dist/src/client/page/history.js.map +1 -0
  15. package/dist/src/client/page/select-block-destination.d.ts +5 -0
  16. package/dist/src/client/page/select-block-destination.js +12 -0
  17. package/dist/src/client/page/select-block-destination.js.map +1 -0
  18. package/dist/src/client/page/view-custom.d.ts +3 -1
  19. package/dist/src/client/page/view-custom.js +60 -26
  20. package/dist/src/client/page/view-custom.js.map +1 -1
  21. package/dist/src/client/utility/get-block-activation-href.d.ts +2 -0
  22. package/dist/src/client/utility/get-block-activation-href.js +25 -0
  23. package/dist/src/client/utility/get-block-activation-href.js.map +1 -0
  24. package/dist/src/enum/action-type.d.ts +2 -0
  25. package/dist/src/enum/action-type.js +2 -0
  26. package/dist/src/enum/action-type.js.map +1 -1
  27. package/dist/src/enum/emoji.d.ts +1 -0
  28. package/dist/src/enum/emoji.js +1 -0
  29. package/dist/src/enum/emoji.js.map +1 -1
  30. package/dist/src/enum/tool-type.d.ts +1 -0
  31. package/dist/src/enum/tool-type.js +1 -0
  32. package/dist/src/enum/tool-type.js.map +1 -1
  33. package/dist/src/lib/server/http/endpoint.js +1 -1
  34. package/dist/src/lib/server/http/endpoint.js.map +1 -1
  35. package/dist/src/server/endpoint/abstract-page.d.ts +1 -1
  36. package/dist/src/server/endpoint/abstract-page.js +21 -3
  37. package/dist/src/server/endpoint/abstract-page.js.map +1 -1
  38. package/dist/src/server/endpoint/action/create.d.ts +3 -1
  39. package/dist/src/server/endpoint/action/create.js +61 -25
  40. package/dist/src/server/endpoint/action/create.js.map +1 -1
  41. package/dist/src/server/endpoint/action/get.d.ts +3 -1
  42. package/dist/src/server/endpoint/action/get.js +47 -1
  43. package/dist/src/server/endpoint/action/get.js.map +1 -1
  44. package/dist/src/server/endpoint/history.d.ts +13 -0
  45. package/dist/src/server/endpoint/history.js +61 -0
  46. package/dist/src/server/endpoint/history.js.map +1 -0
  47. package/dist/src/server/endpoint/login.d.ts +1 -1
  48. package/dist/src/server/endpoint/login.js +1 -1
  49. package/dist/src/server/endpoint/login.js.map +1 -1
  50. package/dist/src/server/endpoint/logout.js +7 -2
  51. package/dist/src/server/endpoint/logout.js.map +1 -1
  52. package/dist/src/server/endpoint/month.d.ts +1 -1
  53. package/dist/src/server/endpoint/month.js +1 -1
  54. package/dist/src/server/endpoint/month.js.map +1 -1
  55. package/dist/src/server/endpoint/settings/get.d.ts +1 -1
  56. package/dist/src/server/endpoint/settings/get.js +1 -1
  57. package/dist/src/server/endpoint/settings/get.js.map +1 -1
  58. package/dist/src/server/endpoint/week.d.ts +1 -1
  59. package/dist/src/server/endpoint/week.js +1 -1
  60. package/dist/src/server/endpoint/week.js.map +1 -1
  61. package/dist/src/server/endpoint/year.d.ts +1 -1
  62. package/dist/src/server/endpoint/year.js +1 -1
  63. package/dist/src/server/endpoint/year.js.map +1 -1
  64. package/dist/src/server/factory/block-result-serializer.d.ts +1 -1
  65. package/dist/src/server/factory/block-result-serializer.js +14 -14
  66. package/dist/src/server/factory/block-result-serializer.js.map +1 -1
  67. package/dist/src/server/factory/block-serializer.d.ts +15 -0
  68. package/dist/src/server/factory/block-serializer.js +80 -0
  69. package/dist/src/server/factory/block-serializer.js.map +1 -0
  70. package/dist/src/server/middleware/error-handler.js +14 -4
  71. package/dist/src/server/middleware/error-handler.js.map +1 -1
  72. package/dist/src/server/operation/add-block.js +1 -0
  73. package/dist/src/server/operation/add-block.js.map +1 -1
  74. package/dist/src/server/operation/delete-block.d.ts +5 -3
  75. package/dist/src/server/operation/delete-block.js +30 -9
  76. package/dist/src/server/operation/delete-block.js.map +1 -1
  77. package/dist/src/server/operation/destroy-session.js +13 -1
  78. package/dist/src/server/operation/destroy-session.js.map +1 -1
  79. package/dist/src/server/operation/find-account.js +3 -2
  80. package/dist/src/server/operation/find-account.js.map +1 -1
  81. package/dist/src/server/operation/hide-block.d.ts +14 -0
  82. package/dist/src/server/operation/hide-block.js +55 -0
  83. package/dist/src/server/operation/hide-block.js.map +1 -0
  84. package/dist/src/server/operation/load-page.d.ts +3 -1
  85. package/dist/src/server/operation/load-page.js +99 -39
  86. package/dist/src/server/operation/load-page.js.map +1 -1
  87. package/dist/src/server/operation/move-block.d.ts +16 -0
  88. package/dist/src/server/operation/move-block.js +101 -0
  89. package/dist/src/server/operation/move-block.js.map +1 -0
  90. package/dist/src/server/operation/store-file.d.ts +14 -0
  91. package/dist/src/server/operation/store-file.js +83 -0
  92. package/dist/src/server/operation/store-file.js.map +1 -0
  93. package/dist/src/server/operation/update-block.js +4 -4
  94. package/dist/src/server/operation/update-block.js.map +1 -1
  95. package/dist/src/server/serializer/action.d.ts +40 -0
  96. package/dist/src/server/serializer/action.js +940 -0
  97. package/dist/src/server/serializer/action.js.map +1 -0
  98. package/dist/src/server/serializer/base.d.ts +31 -0
  99. package/dist/src/server/serializer/base.js +1222 -0
  100. package/dist/src/server/serializer/base.js.map +1 -0
  101. package/dist/src/server/serializer/block/audio.d.ts +6 -0
  102. package/dist/src/server/serializer/block/audio.js +26 -0
  103. package/dist/src/server/serializer/block/audio.js.map +1 -0
  104. package/dist/src/server/serializer/block/background.d.ts +6 -0
  105. package/dist/src/server/serializer/block/background.js +22 -0
  106. package/dist/src/server/serializer/block/background.js.map +1 -0
  107. package/dist/src/server/serializer/block/calendar.d.ts +7 -0
  108. package/dist/src/server/serializer/block/calendar.js +140 -0
  109. package/dist/src/server/serializer/block/calendar.js.map +1 -0
  110. package/dist/src/server/serializer/block/directory.d.ts +7 -0
  111. package/dist/src/server/serializer/block/directory.js +53 -0
  112. package/dist/src/server/serializer/block/directory.js.map +1 -0
  113. package/dist/src/server/serializer/block/ephemeral.d.ts +6 -0
  114. package/dist/src/server/serializer/block/ephemeral.js +16 -0
  115. package/dist/src/server/serializer/block/ephemeral.js.map +1 -0
  116. package/dist/src/server/serializer/block/folder.d.ts +14 -0
  117. package/dist/src/server/serializer/block/folder.js +145 -0
  118. package/dist/src/server/serializer/block/folder.js.map +1 -0
  119. package/dist/src/server/serializer/block/header.d.ts +6 -0
  120. package/dist/src/server/serializer/block/header.js +35 -0
  121. package/dist/src/server/serializer/block/header.js.map +1 -0
  122. package/dist/src/server/serializer/block/image.d.ts +6 -0
  123. package/dist/src/server/serializer/block/image.js +45 -0
  124. package/dist/src/server/serializer/block/image.js.map +1 -0
  125. package/dist/src/server/serializer/block/link.d.ts +6 -0
  126. package/dist/src/server/serializer/block/link.js +39 -0
  127. package/dist/src/server/serializer/block/link.js.map +1 -0
  128. package/dist/src/server/serializer/block/list.d.ts +13 -0
  129. package/dist/src/server/serializer/block/list.js +113 -0
  130. package/dist/src/server/serializer/block/list.js.map +1 -0
  131. package/dist/src/server/serializer/block/multi-column.d.ts +6 -0
  132. package/dist/src/server/serializer/block/multi-column.js +78 -0
  133. package/dist/src/server/serializer/block/multi-column.js.map +1 -0
  134. package/dist/src/server/serializer/block/note.d.ts +6 -0
  135. package/dist/src/server/serializer/block/note.js +40 -0
  136. package/dist/src/server/serializer/block/note.js.map +1 -0
  137. package/dist/src/server/serializer/block/parameter.d.ts +6 -0
  138. package/dist/src/server/serializer/block/parameter.js +13 -0
  139. package/dist/src/server/serializer/block/parameter.js.map +1 -0
  140. package/dist/src/server/serializer/block/todo.d.ts +6 -0
  141. package/dist/src/server/serializer/block/todo.js +76 -0
  142. package/dist/src/server/serializer/block/todo.js.map +1 -0
  143. package/dist/src/server/serializer/block/whitespace.d.ts +6 -0
  144. package/dist/src/server/serializer/block/whitespace.js +17 -0
  145. package/dist/src/server/serializer/block/whitespace.js.map +1 -0
  146. package/dist/src/server/serializer/block.d.ts +27 -0
  147. package/dist/src/server/serializer/block.js +226 -0
  148. package/dist/src/server/serializer/block.js.map +1 -0
  149. package/dist/src/server/serializer/common/time-place-options.d.ts +2 -0
  150. package/dist/src/server/serializer/common/time-place-options.js +34 -0
  151. package/dist/src/server/serializer/common/time-place-options.js.map +1 -0
  152. package/dist/src/server/serializer/history.d.ts +19 -0
  153. package/dist/src/server/serializer/history.js +77 -0
  154. package/dist/src/server/serializer/history.js.map +1 -0
  155. package/dist/src/server/serializer/login.d.ts +12 -0
  156. package/dist/src/server/serializer/login.js +54 -0
  157. package/dist/src/server/serializer/login.js.map +1 -0
  158. package/dist/src/server/serializer/month.d.ts +10 -0
  159. package/dist/src/server/serializer/month.js +160 -0
  160. package/dist/src/server/serializer/month.js.map +1 -0
  161. package/dist/src/server/serializer/page.d.ts +47 -0
  162. package/dist/src/server/serializer/page.js +454 -0
  163. package/dist/src/server/serializer/page.js.map +1 -0
  164. package/dist/src/server/serializer/settings.d.ts +9 -0
  165. package/dist/src/server/serializer/settings.js +80 -0
  166. package/dist/src/server/serializer/settings.js.map +1 -0
  167. package/dist/src/server/serializer/week.d.ts +10 -0
  168. package/dist/src/server/serializer/week.js +175 -0
  169. package/dist/src/server/serializer/week.js.map +1 -0
  170. package/dist/src/server/serializer/year.d.ts +10 -0
  171. package/dist/src/server/serializer/year.js +142 -0
  172. package/dist/src/server/serializer/year.js.map +1 -0
  173. package/dist/src/server/utility/get-emoji-for-tool-type.js +1 -0
  174. package/dist/src/server/utility/get-emoji-for-tool-type.js.map +1 -1
  175. package/dist/src/server.js +2 -0
  176. package/dist/src/server.js.map +1 -1
  177. package/dist/src/type/account-settings.d.ts +3 -2
  178. package/dist/src/type/action/hide-block.d.ts +9 -0
  179. package/dist/src/type/action/hide-block.js +3 -0
  180. package/dist/src/type/action/hide-block.js.map +1 -0
  181. package/dist/src/type/action/move-block.d.ts +10 -0
  182. package/dist/src/type/action/move-block.js +3 -0
  183. package/dist/src/type/action/move-block.js.map +1 -0
  184. package/dist/src/type/block/audio.d.ts +2 -0
  185. package/dist/src/type/block/image.d.ts +2 -0
  186. package/dist/src/type/block.d.ts +2 -2
  187. package/dist/src/type/history-item.d.ts +5 -0
  188. package/dist/src/type/history-item.js +3 -0
  189. package/dist/src/type/history-item.js.map +1 -0
  190. package/dist/src/type/page.d.ts +2 -0
  191. package/dist/test/unit/server/operation/promote-block.js +11 -0
  192. package/dist/test/unit/server/operation/promote-block.js.map +1 -1
  193. package/dist/tsconfig.tsbuildinfo +1 -1
  194. package/package.json +1 -1
@@ -0,0 +1,47 @@
1
+ import { Session } from './../../lib/execution-context/index';
2
+ import Page from './../../type/page';
3
+ import Role from './../../type/role';
4
+ import CustomPageType from './../enum/custom-page-type';
5
+ import Account from './../../type/account';
6
+ import PageType from './../../client/enum/page-type';
7
+ import BaseResultSerializer from './base';
8
+ import Toast from './../../type/toast';
9
+ export interface PageMetadata {
10
+ readonly editing: boolean;
11
+ readonly target_index_path: string | null;
12
+ readonly toast: Toast | null;
13
+ readonly roles: Role[];
14
+ readonly account: Account | null;
15
+ readonly custom_page_type: CustomPageType;
16
+ readonly creator_usernames: Record<string, string>;
17
+ }
18
+ declare class PageResultSerializer extends BaseResultSerializer<Page> {
19
+ private metadata;
20
+ constructor(result: Page, metadata: PageMetadata, path: string, referrer_url: string, session: Session);
21
+ protected getBodyClass(): string;
22
+ protected getPageType(): PageType;
23
+ protected isHome(): boolean;
24
+ protected isToday(): boolean;
25
+ protected getTitle(): string;
26
+ protected serializeBreadcrumbs(): string;
27
+ private serializeToast;
28
+ protected serializeHeader(): string;
29
+ private serializeToolType;
30
+ private serializeLockTool;
31
+ private serializeHomeTool;
32
+ private serializeTodayTool;
33
+ private serializeHistoryTool;
34
+ private serializeNoteTool;
35
+ private serializeAudioTool;
36
+ private serializeImageTool;
37
+ private serializeFolderTool;
38
+ private serializeTodoTool;
39
+ private serializeSettingsTool;
40
+ protected serializeSections(): string;
41
+ private getInsertionIndexPath;
42
+ private shouldPrintRawConfig;
43
+ private serializeBlock;
44
+ private isEditing;
45
+ private getMetadata;
46
+ }
47
+ export default PageResultSerializer;
@@ -0,0 +1,454 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const errors_1 = require("./../../lib/errors/index.js");
7
+ const block_type_1 = __importDefault(require("./../../enum/block-type.js"));
8
+ const create_date_1 = __importDefault(require("./../utility/create-date.js"));
9
+ const color_1 = __importDefault(require("./../../enum/color.js"));
10
+ const create_toast_path_1 = __importDefault(require("./../utility/create-toast-path.js"));
11
+ const date_to_path_1 = __importDefault(require("./../utility/date-to-path.js"));
12
+ const is_index_path_1 = __importDefault(require("./../utility/is-index-path.js"));
13
+ const get_hex_for_color_1 = __importDefault(require("./../utility/get-hex-for-color.js"));
14
+ const tool_type_1 = __importDefault(require("./../../enum/tool-type.js"));
15
+ const get_emoji_for_tool_type_1 = __importDefault(require("./../utility/get-emoji-for-tool-type.js"));
16
+ const path_to_date_1 = __importDefault(require("./../utility/path-to-date.js"));
17
+ const page_type_1 = __importDefault(require("./../../client/enum/page-type.js"));
18
+ const path_is_date_1 = __importDefault(require("./../utility/path-is-date.js"));
19
+ const dates_are_equal_1 = __importDefault(require("./../utility/dates-are-equal.js"));
20
+ const create_index_path_1 = __importDefault(require("./../utility/create-index-path.js"));
21
+ const emoji_1 = __importDefault(require("./../../enum/emoji.js"));
22
+ const base_1 = __importDefault(require("./base.js"));
23
+ const action_type_1 = __importDefault(require("./../../enum/action-type.js"));
24
+ const block_serializer_1 = __importDefault(require("./../factory/block-serializer.js"));
25
+ class PageResultSerializer extends base_1.default {
26
+ constructor(result, metadata, path, referrer_url, session) {
27
+ super(result, path, referrer_url, session);
28
+ this.metadata = metadata;
29
+ }
30
+ getBodyClass() {
31
+ if (this.isEditing()) {
32
+ return 'editing';
33
+ }
34
+ else {
35
+ return super.getBodyClass();
36
+ }
37
+ }
38
+ getPageType() {
39
+ if (this.isEditing()) {
40
+ return page_type_1.default.EDIT_CUSTOM;
41
+ }
42
+ else {
43
+ return page_type_1.default.VIEW_CUSTOM;
44
+ }
45
+ }
46
+ isHome() {
47
+ const { path } = this.getResult();
48
+ return (0, is_index_path_1.default)(path);
49
+ }
50
+ isToday() {
51
+ const { path } = this.getResult();
52
+ if (path === '/today') {
53
+ return true;
54
+ }
55
+ const is_date = (0, path_is_date_1.default)(path);
56
+ if (!is_date) {
57
+ return false;
58
+ }
59
+ const date = (0, path_to_date_1.default)(path);
60
+ const today = (0, create_date_1.default)();
61
+ return (0, dates_are_equal_1.default)(date, today);
62
+ }
63
+ getTitle() {
64
+ const { blocks, path } = this.getResult();
65
+ let index = 0;
66
+ while (index < blocks.length) {
67
+ const block = blocks[index++];
68
+ if (!block) {
69
+ throw new errors_1.InvariantViolation(`
70
+ Tried to read block at index ${index}, but it was not set
71
+ `);
72
+ }
73
+ const { block_type } = block;
74
+ switch (block_type) {
75
+ case block_type_1.default.HEADER:
76
+ const { title } = block;
77
+ return title;
78
+ default:
79
+ continue;
80
+ }
81
+ }
82
+ return path;
83
+ }
84
+ serializeBreadcrumbs() {
85
+ const { path } = this.getResult();
86
+ const prefix = (() => {
87
+ const query_index = path.indexOf('?');
88
+ if (query_index !== -1) {
89
+ return path.slice(0, query_index);
90
+ }
91
+ else {
92
+ return path;
93
+ }
94
+ })();
95
+ const parts = prefix.split('/').filter((part) => {
96
+ return part !== '';
97
+ });
98
+ if (parts.length === 0) {
99
+ return '';
100
+ }
101
+ const last_part = parts.pop();
102
+ const segments = [];
103
+ let current_path = '';
104
+ segments.push('<a class="breadcrumb" href="/">home</a>');
105
+ parts.forEach((part) => {
106
+ current_path += '/' + part;
107
+ segments.push(`<a class="breadcrumb" href="${current_path}">${part}</a>`);
108
+ });
109
+ segments.push(`<span class="breadcrumb">${last_part}</span>`);
110
+ return `
111
+ <nav class="mb-16 text-smaller">
112
+ ${segments.join(' / ')}
113
+ </nav>
114
+ `;
115
+ }
116
+ serializeToast() {
117
+ const { toast } = this.getMetadata();
118
+ if (toast === null) {
119
+ return '';
120
+ }
121
+ const { color } = toast;
122
+ const color_hex = (0, get_hex_for_color_1.default)(color);
123
+ return `
124
+ <input type="checkbox" class="toast-toggle" autocomplete="off" />
125
+ <div class="toast">
126
+ <div class="toast-wrapper" style="background:${color_hex}">
127
+ <div class="toast-background"></div>
128
+ <div class="toast-message">
129
+ ${toast.message}
130
+ </div>
131
+ </div>
132
+ </div>
133
+ `;
134
+ }
135
+ serializeHeader() {
136
+ const toast = this.serializeToast();
137
+ if (!this.isLoggedIn()) {
138
+ return `
139
+ ${toast}
140
+ `;
141
+ }
142
+ const { account } = this.getMetadata();
143
+ if (account === null) {
144
+ throw new errors_1.InvariantViolation(`
145
+ Tried to read account for logged-in user,
146
+ but it was null
147
+ `);
148
+ }
149
+ const { settings } = account;
150
+ const { tools } = settings;
151
+ const serialized_tools = tools.map((tool_type) => {
152
+ return this.serializeToolType(tool_type);
153
+ });
154
+ return `
155
+ ${toast}
156
+
157
+ <header>
158
+ <div class="section-wrapper">
159
+ <section class="background-black" style="overflow-x: scroll;">
160
+ <table class="fixed" style="width:auto;min-width:180px;margin:0 auto;">
161
+ <tbody>
162
+ <tr>
163
+ ${serialized_tools.join('\n')}
164
+ </tr>
165
+ </tbody>
166
+ </table>
167
+ </section>
168
+ </div>
169
+ </header>
170
+ `;
171
+ }
172
+ serializeToolType(tool_type) {
173
+ switch (tool_type) {
174
+ case tool_type_1.default.LOCK:
175
+ return this.serializeLockTool();
176
+ case tool_type_1.default.HOME:
177
+ return this.serializeHomeTool();
178
+ case tool_type_1.default.TODAY:
179
+ return this.serializeTodayTool();
180
+ case tool_type_1.default.HISTORY:
181
+ return this.serializeHistoryTool();
182
+ case tool_type_1.default.NOTE:
183
+ return this.serializeNoteTool();
184
+ case tool_type_1.default.AUDIO:
185
+ return this.serializeAudioTool();
186
+ case tool_type_1.default.IMAGE:
187
+ return this.serializeImageTool();
188
+ case tool_type_1.default.FOLDER:
189
+ return this.serializeFolderTool();
190
+ case tool_type_1.default.TODO:
191
+ return this.serializeTodoTool();
192
+ case tool_type_1.default.SETTINGS:
193
+ return this.serializeSettingsTool();
194
+ default:
195
+ throw new errors_1.InvariantViolation(`Unsupported tool type: ${tool_type}`);
196
+ }
197
+ }
198
+ serializeLockTool() {
199
+ const { path } = this.getResult();
200
+ const editing = this.isEditing();
201
+ const editing_path = (() => {
202
+ if (editing) {
203
+ return (0, create_toast_path_1.default)(path, {
204
+ message: `${emoji_1.default.LOCKED} locked`,
205
+ color: color_1.default.GREEN
206
+ });
207
+ }
208
+ else {
209
+ return (0, create_toast_path_1.default)(`${path}?editing=true`, {
210
+ message: `${emoji_1.default.UNLOCKED} unlocked`,
211
+ color: color_1.default.YELLOW
212
+ });
213
+ }
214
+ })();
215
+ const editing_emoji = editing ? emoji_1.default.UNLOCKED : emoji_1.default.LOCKED;
216
+ return `
217
+ <td>
218
+ <a href="${editing_path}" class="squarelink">
219
+ ${editing_emoji}
220
+ </a>
221
+ </td>
222
+ `;
223
+ }
224
+ serializeHomeTool() {
225
+ const { path } = this.getResult();
226
+ const is_index = (0, is_index_path_1.default)(path);
227
+ const index_label = `${emoji_1.default.HOUSE} home ${emoji_1.default.HOUSE}`;
228
+ const index_disabled_class = is_index ? 'disabled' : '';
229
+ const toasted_index_path = (() => {
230
+ if (is_index) {
231
+ return (0, create_toast_path_1.default)('/', {
232
+ message: `already ${index_label}`,
233
+ color: color_1.default.FUSCHIA
234
+ });
235
+ }
236
+ else {
237
+ return (0, create_toast_path_1.default)('/', {
238
+ message: index_label,
239
+ color: color_1.default.BLUE
240
+ });
241
+ }
242
+ })();
243
+ return `
244
+ <td>
245
+ <a href="${toasted_index_path}" class="squarelink ${index_disabled_class}">
246
+ ${emoji_1.default.HOUSE}
247
+ </a>
248
+ </td>
249
+ `;
250
+ }
251
+ serializeTodayTool() {
252
+ const { path } = this.getResult();
253
+ const today = (0, create_date_1.default)();
254
+ const today_path = (0, date_to_path_1.default)(today);
255
+ const is_today = path === today_path;
256
+ const today_label = `${emoji_1.default.SUNSHINE} today ${emoji_1.default.SUNSHINE}`;
257
+ const today_disabled_class = is_today ? 'disabled' : '';
258
+ const toasted_today_path = (() => {
259
+ if (is_today) {
260
+ return (0, create_toast_path_1.default)(path, {
261
+ message: `already ${today_label}`,
262
+ color: color_1.default.FUSCHIA
263
+ });
264
+ }
265
+ else {
266
+ return (0, create_toast_path_1.default)(today_path, {
267
+ message: today_label,
268
+ color: color_1.default.YELLOW
269
+ });
270
+ }
271
+ })();
272
+ return `
273
+ <td>
274
+ <a href="${toasted_today_path}" class="squarelink ${today_disabled_class}">
275
+ ${emoji_1.default.SUNSHINE}
276
+ </a>
277
+ </td>
278
+ `;
279
+ }
280
+ serializeHistoryTool() {
281
+ const emoji = (0, get_emoji_for_tool_type_1.default)(tool_type_1.default.HISTORY);
282
+ return `
283
+ <td>
284
+ <a href="/history" class="squarelink">
285
+ ${emoji}
286
+ </a>
287
+ </td>
288
+ `;
289
+ }
290
+ serializeNoteTool() {
291
+ const { path } = this.getResult();
292
+ const editing = this.isEditing();
293
+ const index_path = this.getInsertionIndexPath();
294
+ const emoji = (0, get_emoji_for_tool_type_1.default)(tool_type_1.default.NOTE);
295
+ return `
296
+ <td>
297
+ <a href="/actions?path=${path}&editing=${editing}&action_type=${action_type_1.default.ADD_BLOCK}&block_type=${block_type_1.default.NOTE}&index_path=${index_path}" class="squarelink">
298
+ ${emoji}
299
+ </a>
300
+ </td>
301
+ `;
302
+ }
303
+ serializeAudioTool() {
304
+ const { path } = this.getResult();
305
+ const editing = this.isEditing();
306
+ const index_path = this.getInsertionIndexPath();
307
+ const emoji = (0, get_emoji_for_tool_type_1.default)(tool_type_1.default.AUDIO);
308
+ return `
309
+ <td>
310
+ <a href="/actions?path=${path}&editing=${editing}&action_type=${action_type_1.default.ADD_BLOCK}&block_type=${block_type_1.default.AUDIO}&index_path=${index_path}" class="squarelink">
311
+ ${emoji}
312
+ </a>
313
+ </td>
314
+ `;
315
+ }
316
+ serializeImageTool() {
317
+ const { path } = this.getResult();
318
+ const editing = this.isEditing();
319
+ const index_path = this.getInsertionIndexPath();
320
+ const emoji = (0, get_emoji_for_tool_type_1.default)(tool_type_1.default.IMAGE);
321
+ return `
322
+ <td>
323
+ <a href="/actions?path=${path}&editing=${editing}&action_type=${action_type_1.default.ADD_BLOCK}&block_type=${block_type_1.default.IMAGE}&index_path=${index_path}" class="squarelink">
324
+ ${emoji}
325
+ </a>
326
+ </td>
327
+ `;
328
+ }
329
+ serializeFolderTool() {
330
+ const { path } = this.getResult();
331
+ const editing = this.isEditing();
332
+ const index_path = this.getInsertionIndexPath();
333
+ const emoji = (0, get_emoji_for_tool_type_1.default)(tool_type_1.default.FOLDER);
334
+ return `
335
+ <td>
336
+ <a href="/actions?path=${path}&editing=${editing}&action_type=${action_type_1.default.ADD_BLOCK}&block_type=${block_type_1.default.FOLDER}&index_path=${index_path}" class="squarelink">
337
+ ${emoji}
338
+ </a>
339
+ </td>
340
+ `;
341
+ }
342
+ serializeTodoTool() {
343
+ const { path } = this.getResult();
344
+ const editing = this.isEditing();
345
+ const index_path = this.getInsertionIndexPath();
346
+ const emoji = (0, get_emoji_for_tool_type_1.default)(tool_type_1.default.TODO);
347
+ return `
348
+ <td>
349
+ <a href="/actions?path=${path}&editing=${editing}&action_type=${action_type_1.default.ADD_BLOCK}&block_type=${block_type_1.default.TODO}&index_path=${index_path}" class="squarelink">
350
+ ${emoji}
351
+ </a>
352
+ </td>
353
+ `;
354
+ }
355
+ serializeSettingsTool() {
356
+ return `
357
+ <td>
358
+ <a href="/settings" class="squarelink">
359
+ ${emoji_1.default.GEAR}
360
+ </a>
361
+ </td>
362
+ `;
363
+ }
364
+ serializeSections() {
365
+ const page = this.getResult();
366
+ const { path, blocks } = page;
367
+ const elements = [];
368
+ const editing = this.isEditing();
369
+ const hidden_class = editing ? '' : 'hidden';
370
+ elements.push(`
371
+ <a data-role="add_block_link" class="biglink grey mt-16 mb-16 ${hidden_class}" href="/actions?path=${path}&editing=${editing}&action_type=${action_type_1.default.ADD_BLOCK}&index_path=0">+</a>
372
+ `);
373
+ blocks.forEach((block, index) => {
374
+ if (block.hidden && !editing) {
375
+ return;
376
+ }
377
+ const serialized_block = this.serializeBlock(block, index);
378
+ elements.push(serialized_block);
379
+ elements.push(`
380
+ <a data-role="add_block_link" class="biglink grey mt-16 mb-16 ${hidden_class}" href="/actions?path=${path}&editing=${editing}&action_type=${action_type_1.default.ADD_BLOCK}&index_path=${index + 1}">+</a>
381
+ `);
382
+ });
383
+ if (this.shouldPrintRawConfig()) {
384
+ const raw_page = JSON.stringify(page, null, 2);
385
+ elements.push(`
386
+ <section class="grey">
387
+ <details>
388
+ <summary>raw config:</summary>
389
+ <pre>${raw_page}</pre>
390
+ </details>
391
+ </section>
392
+ `);
393
+ }
394
+ return elements.join('\n');
395
+ }
396
+ getInsertionIndexPath() {
397
+ const { blocks } = this.getResult();
398
+ let index = 0;
399
+ while (index < blocks.length) {
400
+ const block = blocks[index];
401
+ const { block_type } = block;
402
+ if (block_type !== block_type_1.default.HEADER) {
403
+ break;
404
+ }
405
+ index++;
406
+ }
407
+ return (0, create_index_path_1.default)([index]);
408
+ }
409
+ shouldPrintRawConfig() {
410
+ if (!this.isLoggedIn()) {
411
+ return false;
412
+ }
413
+ return false;
414
+ }
415
+ serializeBlock(block, index) {
416
+ const editing = this.isEditing();
417
+ const { path } = this.getResult();
418
+ const { target_index_path, roles, account, creator_usernames } = this.getMetadata();
419
+ const referrer_url = this.getReferrerUrl();
420
+ const index_path = (0, create_index_path_1.default)([index]);
421
+ const { creator_id } = block;
422
+ const creator_username = creator_usernames[creator_id];
423
+ if (creator_username === undefined) {
424
+ throw new errors_1.InvariantViolation(`
425
+ Tried to read username for creator id ${creator_id},
426
+ but it was not set
427
+ `);
428
+ }
429
+ const block_metadata = {
430
+ editing,
431
+ page_path: path,
432
+ roles,
433
+ account,
434
+ index,
435
+ referrer_url,
436
+ index_path,
437
+ target_index_path,
438
+ creator_username
439
+ };
440
+ const session = this.getSession();
441
+ const factory = new block_serializer_1.default(block, block_metadata, session);
442
+ const serializer = factory.create();
443
+ return serializer.serializeContent();
444
+ }
445
+ isEditing() {
446
+ const { editing } = this.getMetadata();
447
+ return editing;
448
+ }
449
+ getMetadata() {
450
+ return this.metadata;
451
+ }
452
+ }
453
+ exports.default = PageResultSerializer;
454
+ //# sourceMappingURL=page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../../../../src/server/serializer/page.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import PageType from './../../client/enum/page-type';
2
+ import BaseResultSerializer from './base';
3
+ import AccountSettings from './../../type/account-settings';
4
+ declare class SettingsResultSerializer extends BaseResultSerializer<AccountSettings> {
5
+ protected getTitle(): string;
6
+ protected serializeSections(): string;
7
+ protected getPageType(): PageType;
8
+ }
9
+ export default SettingsResultSerializer;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const emoji_1 = __importDefault(require("./../../enum/emoji.js"));
7
+ const tool_type_1 = __importDefault(require("./../../enum/tool-type.js"));
8
+ const page_type_1 = __importDefault(require("./../../client/enum/page-type.js"));
9
+ const base_1 = __importDefault(require("./base.js"));
10
+ const time_place_options_1 = __importDefault(require("./common/time-place-options.js"));
11
+ const get_emoji_for_tool_type_1 = __importDefault(require("./../utility/get-emoji-for-tool-type.js"));
12
+ class SettingsResultSerializer extends base_1.default {
13
+ getTitle() {
14
+ return 'settings';
15
+ }
16
+ serializeSections() {
17
+ const { tools, default_time_place_visibility } = this.getResult();
18
+ const tool_headers = Object.values(tool_type_1.default).map((tool_type) => {
19
+ const emoji = (0, get_emoji_for_tool_type_1.default)(tool_type);
20
+ return `
21
+ <td>
22
+ <label for="tool-type-${tool_type}">
23
+ <span class="text-very-large">${emoji}</span>
24
+ </label>
25
+ </td>
26
+ `;
27
+ });
28
+ const tool_checkboxes = Object.values(tool_type_1.default).map((tool_type) => {
29
+ const checked = tools.includes(tool_type) ? 'checked' : '';
30
+ return `
31
+ <td>
32
+ <input name="tool_types" id="tool-type-${tool_type}" type="checkbox" value="${tool_type}" ${checked} />
33
+ </td>
34
+ `;
35
+ });
36
+ const time_place_options = (0, time_place_options_1.default)(default_time_place_visibility);
37
+ return `
38
+ <section class="grey">
39
+ <form action="/settings" method="POST">
40
+ <fieldset>
41
+ <legend>username:</legend>
42
+ <input type="text" name="username" placeholder="username" autofocus />
43
+ </fieldset>
44
+
45
+ <fieldset>
46
+ <legend>toolbar:</legend>
47
+
48
+ <table class="fixed">
49
+ <thead>
50
+ <tr>
51
+ ${tool_headers.join('\n')}
52
+ </tr>
53
+ </thead>
54
+ <tbody>
55
+ <tr>
56
+ ${tool_checkboxes.join('\n')}
57
+ </tr>
58
+ </tbody>
59
+ </table>
60
+ </fieldset>
61
+
62
+ <fieldset>
63
+ <legend>default time/place visibility:</legend>
64
+
65
+ ${time_place_options}
66
+ </fieldset>
67
+
68
+ <button class="mt-32 biglink green" type="submit">
69
+ submit ${emoji_1.default.RIGHT_ARROW_UNICODE}
70
+ </button>
71
+ </form>
72
+ </section>
73
+ `;
74
+ }
75
+ getPageType() {
76
+ return page_type_1.default.SETTINGS;
77
+ }
78
+ }
79
+ exports.default = SettingsResultSerializer;
80
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../../src/server/serializer/settings.ts"],"names":[],"mappings":";;;;;AAAA,uDAA+B;AAC/B,+DAAsC;AACtC,sEAA6C;AAC7C,kEAA0D;AAE1D,qGAAoF;AACpF,qGAAyE;AAEzE,MAAM,wBAAyB,SAAQ,cAAqC;IACjE,QAAQ;QACjB,OAAO,UAAU,CAAC;IACnB,CAAC;IAES,iBAAiB;QAC1B,MAAM,EAAC,KAAK,EAAE,6BAA6B,EAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEhE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;YAC9D,MAAM,KAAK,GAAG,IAAA,iCAAmB,EAAC,SAAS,CAAC,CAAC;YAE7C,OAAO;;6BAEmB,SAAS;sCACA,KAAK;;;IAGvC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;YACjE,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAE3D,OAAO;;8CAEoC,SAAS,4BAA4B,SAAS,KAAK,OAAO;;IAEpG,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,IAAA,4BAAyB,EAAC,6BAA6B,CAAC,CAAC;QAEpF,OAAO;;;;;;;;;;;;;;WAcE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;WAKvB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;QAS7B,kBAAkB;;;;eAIX,eAAK,CAAC,mBAAmB;;;;GAIrC,CAAC;IACH,CAAC;IAES,WAAW;QACpB,OAAO,mBAAQ,CAAC,QAAQ,CAAC;IAC1B,CAAC;CACD;AAED,kBAAe,wBAAwB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import Week from './../../type/week';
2
+ import BaseResultSerializer from './base';
3
+ import PageType from './../../client/enum/page-type';
4
+ declare class WeekResultSerializer extends BaseResultSerializer<Week> {
5
+ protected serializeSections(): string;
6
+ protected getTitle(): string;
7
+ protected getPageType(): PageType;
8
+ private getTargetDate;
9
+ }
10
+ export default WeekResultSerializer;