@fc3/mmcadi 0.1.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.
Files changed (460) hide show
  1. package/LICENSE +673 -0
  2. package/README.md +5 -0
  3. package/bin/compile +63 -0
  4. package/bin/copy-static-files +13 -0
  5. package/bin/install +5 -0
  6. package/bin/precompile +55 -0
  7. package/bin/prepublish +7 -0
  8. package/bin/remap-paths +113 -0
  9. package/bin/test +9 -0
  10. package/config/tsconfig.json +37 -0
  11. package/package.json +33 -0
  12. package/src/bootstrap/start.ts +12 -0
  13. package/src/client/bootstrap.ts +5 -0
  14. package/src/client/client.ts +54 -0
  15. package/src/client/enum/key-code.ts +34 -0
  16. package/src/client/enum/page-type.ts +19 -0
  17. package/src/client/factory/page.ts +61 -0
  18. package/src/client/page/confirm-delete-block.ts +30 -0
  19. package/src/client/page/create-block.ts +6 -0
  20. package/src/client/page/day.ts +8 -0
  21. package/src/client/page/edit-block.ts +43 -0
  22. package/src/client/page/edit-custom.ts +16 -0
  23. package/src/client/page/home.ts +8 -0
  24. package/src/client/page/login.ts +8 -0
  25. package/src/client/page/logout.ts +8 -0
  26. package/src/client/page/month.ts +8 -0
  27. package/src/client/page/move-block.ts +8 -0
  28. package/src/client/page/select-block-type.ts +56 -0
  29. package/src/client/page/settings.ts +8 -0
  30. package/src/client/page/view-custom.ts +665 -0
  31. package/src/client/page/week.ts +8 -0
  32. package/src/client/page/year.ts +8 -0
  33. package/src/client/page.ts +128 -0
  34. package/src/client/shim/execute.ts +5 -0
  35. package/src/client/shim/logger.ts +44 -0
  36. package/src/client/utility/get-meta-value.ts +23 -0
  37. package/src/common/builder/block/background.ts +25 -0
  38. package/src/common/builder/block/folder.ts +43 -0
  39. package/src/common/builder/block/header.ts +15 -0
  40. package/src/common/builder/block/link.ts +32 -0
  41. package/src/common/builder/block/multicolumn.ts +16 -0
  42. package/src/common/builder/block/note.ts +13 -0
  43. package/src/common/builder/block/whitespace.ts +13 -0
  44. package/src/common/utility/get-parent-path.ts +29 -0
  45. package/src/constant/month-names.ts +16 -0
  46. package/src/enum/action-type.ts +11 -0
  47. package/src/enum/block-type.ts +18 -0
  48. package/src/enum/calendar-view-mode.ts +9 -0
  49. package/src/enum/color.ts +15 -0
  50. package/src/enum/default-role.ts +6 -0
  51. package/src/enum/directory-item-type.ts +6 -0
  52. package/src/enum/emoji.ts +94 -0
  53. package/src/enum/field-type.ts +8 -0
  54. package/src/enum/header-size.ts +7 -0
  55. package/src/enum/permission-type.ts +8 -0
  56. package/src/enum/time-place-visibility.ts +8 -0
  57. package/src/enum/tool-type.ts +14 -0
  58. package/src/index.ts +8 -0
  59. package/src/interface/hydration-callback.ts +7 -0
  60. package/src/interface/provider.ts +8 -0
  61. package/src/interface/repository.ts +12 -0
  62. package/src/lib/array/add.ts +10 -0
  63. package/src/lib/array/assert-is-empty.ts +23 -0
  64. package/src/lib/array/clone.ts +5 -0
  65. package/src/lib/array/difference.ts +8 -0
  66. package/src/lib/array/empty.ts +6 -0
  67. package/src/lib/array/equal.ts +24 -0
  68. package/src/lib/array/get-first-value.ts +5 -0
  69. package/src/lib/array/get-last-value.ts +5 -0
  70. package/src/lib/array/get-max-value.ts +5 -0
  71. package/src/lib/array/get-value-after.ts +23 -0
  72. package/src/lib/array/get-value-before.ts +23 -0
  73. package/src/lib/array/get-values-between.ts +18 -0
  74. package/src/lib/array/index.ts +5 -0
  75. package/src/lib/array/is-empty.ts +6 -0
  76. package/src/lib/array/remove.ts +19 -0
  77. package/src/lib/array/sum.ts +11 -0
  78. package/src/lib/array/unique.ts +13 -0
  79. package/src/lib/environment/bootstrap.ts +1 -0
  80. package/src/lib/environment/enum/environment-type.ts +8 -0
  81. package/src/lib/environment/enum/service-type.ts +5 -0
  82. package/src/lib/environment/index.ts +7 -0
  83. package/src/lib/environment/utility/get-environment-type.ts +28 -0
  84. package/src/lib/environment/utility/is-browser.ts +5 -0
  85. package/src/lib/environment/utility/is-development.ts +10 -0
  86. package/src/lib/environment/utility/is-production-or-staging.ts +8 -0
  87. package/src/lib/environment/utility/is-production.ts +10 -0
  88. package/src/lib/environment/utility/is-staging.ts +10 -0
  89. package/src/lib/errors/enum/error-type.ts +13 -0
  90. package/src/lib/errors/error/base.ts +40 -0
  91. package/src/lib/errors/error/conflict.ts +16 -0
  92. package/src/lib/errors/error/generic.ts +23 -0
  93. package/src/lib/errors/error/invalid.ts +14 -0
  94. package/src/lib/errors/error/invariant-violation.ts +5 -0
  95. package/src/lib/errors/error/not-allowed.ts +14 -0
  96. package/src/lib/errors/error/not-found.ts +16 -0
  97. package/src/lib/errors/error/not-implemented.ts +20 -0
  98. package/src/lib/errors/error/omitted.ts +14 -0
  99. package/src/lib/errors/error/timeout.ts +14 -0
  100. package/src/lib/errors/error/unauthorized.ts +14 -0
  101. package/src/lib/errors/index.ts +18 -0
  102. package/src/lib/errors/sugar/invariant.ts +7 -0
  103. package/src/lib/errors/type/coded-error.ts +7 -0
  104. package/src/lib/errors/type/error-data.ts +11 -0
  105. package/src/lib/errors/utility/create-error-for-error-type.ts +60 -0
  106. package/src/lib/errors/utility/create-error-from-ambiguous-json-data.ts +26 -0
  107. package/src/lib/errors/utility/error-matches.ts +28 -0
  108. package/src/lib/errors/utility/get-error-type-for-posix-error-code.ts +37 -0
  109. package/src/lib/errors/utility/get-error-type-for-status-code.ts +38 -0
  110. package/src/lib/errors/utility/get-message-for-error-type.ts +29 -0
  111. package/src/lib/errors/utility/matches-posix-error-code.ts +11 -0
  112. package/src/lib/errors/utility/wrap-error.ts +39 -0
  113. package/src/lib/event-emitter/index.ts +63 -0
  114. package/src/lib/execution-context/execution-context.ts +90 -0
  115. package/src/lib/execution-context/index.ts +8 -0
  116. package/src/lib/execution-context/type/session.ts +7 -0
  117. package/src/lib/feature/feature.ts +108 -0
  118. package/src/lib/feature/index.ts +3 -0
  119. package/src/lib/filesystem/bootstrap.ts +1 -0
  120. package/src/lib/filesystem/enum/file-extension.ts +19 -0
  121. package/src/lib/filesystem/index.ts +4 -0
  122. package/src/lib/filesystem/utility/exists.ts +21 -0
  123. package/src/lib/filesystem/utility/get-extension-for-filepath.ts +20 -0
  124. package/src/lib/filesystem/utility/strip-extension.ts +26 -0
  125. package/src/lib/grammar/index.ts +3 -0
  126. package/src/lib/grammar/noun-inflector.ts +104 -0
  127. package/src/lib/grammar/utility/get-words-from-identifier.ts +9 -0
  128. package/src/lib/grammar/verb-inflector.ts +344 -0
  129. package/src/lib/http/buffer-stream.ts +76 -0
  130. package/src/lib/http/enum/content-type.ts +19 -0
  131. package/src/lib/http/enum/cookie-attribute.ts +11 -0
  132. package/src/lib/http/enum/header.ts +29 -0
  133. package/src/lib/http/enum/method.ts +11 -0
  134. package/src/lib/http/enum/same-site-policy.ts +7 -0
  135. package/src/lib/http/enum/status-code.ts +9 -0
  136. package/src/lib/http/factory/body-parser.ts +55 -0
  137. package/src/lib/http/index.ts +24 -0
  138. package/src/lib/http/interface/client-request.ts +15 -0
  139. package/src/lib/http/interface/incoming-message.ts +24 -0
  140. package/src/lib/http/interface/network-library.ts +9 -0
  141. package/src/lib/http/interface/request-callback.ts +7 -0
  142. package/src/lib/http/isomorphic/request.ts +77 -0
  143. package/src/lib/http/isomorphic/response.ts +77 -0
  144. package/src/lib/http/isomorphic.ts +20 -0
  145. package/src/lib/http/parser/accept-header.ts +35 -0
  146. package/src/lib/http/parser/basic-auth-header.ts +48 -0
  147. package/src/lib/http/parser/body/json.ts +14 -0
  148. package/src/lib/http/parser/body/multipart.ts +89 -0
  149. package/src/lib/http/parser/body/url-encoded.ts +16 -0
  150. package/src/lib/http/parser/body.ts +44 -0
  151. package/src/lib/http/parser/cookie.ts +114 -0
  152. package/src/lib/http/parser/querystring.ts +92 -0
  153. package/src/lib/http/parser/url.ts +76 -0
  154. package/src/lib/http/request/incoming.ts +299 -0
  155. package/src/lib/http/request/outgoing.ts +276 -0
  156. package/src/lib/http/request.ts +26 -0
  157. package/src/lib/http/response/incoming.ts +243 -0
  158. package/src/lib/http/response/outgoing.ts +160 -0
  159. package/src/lib/http/response.ts +74 -0
  160. package/src/lib/http/serializer/basic-auth-header.ts +27 -0
  161. package/src/lib/http/serializer/cookie.ts +90 -0
  162. package/src/lib/http/serializer/query-data.ts +54 -0
  163. package/src/lib/http/transaction.ts +320 -0
  164. package/src/lib/http/type/basic-auth-credentials.ts +6 -0
  165. package/src/lib/http/type/header-map.ts +5 -0
  166. package/src/lib/http/type/log-attributes.ts +12 -0
  167. package/src/lib/http/type/path-parameters.ts +5 -0
  168. package/src/lib/http/type/query-data.ts +7 -0
  169. package/src/lib/http/type/query-value.ts +11 -0
  170. package/src/lib/http/type/request-options.ts +16 -0
  171. package/src/lib/http/type/transaction-data.ts +4 -0
  172. package/src/lib/http/utility/get-content-type-for-extension.ts +47 -0
  173. package/src/lib/http/utility/get-library-for-protocol.ts +25 -0
  174. package/src/lib/http/utility/get-status-code-for-error-type.ts +37 -0
  175. package/src/lib/http/utility/get-status-code-for-error.ts +13 -0
  176. package/src/lib/http/utility/is-client-error-status.ts +15 -0
  177. package/src/lib/http/utility/is-error-status.ts +9 -0
  178. package/src/lib/http/utility/is-server-error-status.ts +7 -0
  179. package/src/lib/http/utility/is-success-status.ts +7 -0
  180. package/src/lib/http/utility/proxy-request.ts +58 -0
  181. package/src/lib/http/utility/serialize-request-options.ts +9 -0
  182. package/src/lib/http/utility/slug-generator.ts +20 -0
  183. package/src/lib/key-generator/index.ts +3 -0
  184. package/src/lib/key-generator/key-generator.ts +7 -0
  185. package/src/lib/logger/enum/ansi-escape-code.ts +14 -0
  186. package/src/lib/logger/enum/log-level.ts +8 -0
  187. package/src/lib/logger/formatter.ts +59 -0
  188. package/src/lib/logger/index.ts +7 -0
  189. package/src/lib/logger/interface/error-reporter.ts +7 -0
  190. package/src/lib/logger/interface/logger.ts +13 -0
  191. package/src/lib/logger/logger.ts +239 -0
  192. package/src/lib/logger/type/error-parameters.ts +9 -0
  193. package/src/lib/logger/type/loggable-data.ts +5 -0
  194. package/src/lib/logger/type/loggable-value.ts +1 -0
  195. package/src/lib/metrics/dispatcher.ts +264 -0
  196. package/src/lib/metrics/enum/dispatch-mode.ts +6 -0
  197. package/src/lib/metrics/index.ts +2 -0
  198. package/src/lib/metrics/settings-hydrator.ts +51 -0
  199. package/src/lib/metrics/type/dispatcher-settings.ts +12 -0
  200. package/src/lib/metrics/type/tag-map.ts +5 -0
  201. package/src/lib/network/bootstrap.ts +1 -0
  202. package/src/lib/network/enum/connection-status.ts +14 -0
  203. package/src/lib/network/enum/http-status-code.ts +75 -0
  204. package/src/lib/network/enum/network-protocol.ts +10 -0
  205. package/src/lib/network/event-emitter.ts +63 -0
  206. package/src/lib/network/index.ts +7 -0
  207. package/src/lib/network/interface/socket.ts +42 -0
  208. package/src/lib/network/type/socket-options.ts +6 -0
  209. package/src/lib/network/utility/get-protocol-from-url.ts +15 -0
  210. package/src/lib/operation/index.ts +6 -0
  211. package/src/lib/operation/operation/auto-logging.ts +94 -0
  212. package/src/lib/operation/operation/silent.ts +17 -0
  213. package/src/lib/operation/operation.ts +80 -0
  214. package/src/lib/process/bootstrap.ts +1 -0
  215. package/src/lib/process/enum/posix-error-code.ts +138 -0
  216. package/src/lib/process/enum/process-signal.ts +68 -0
  217. package/src/lib/process/error.ts +6 -0
  218. package/src/lib/process/execute.ts +77 -0
  219. package/src/lib/process/index.ts +4 -0
  220. package/src/lib/process/type/command-options.ts +9 -0
  221. package/src/lib/process/utility/bind-process-lifespan-to.ts +10 -0
  222. package/src/lib/promise-wrapper/index.ts +3 -0
  223. package/src/lib/promise-wrapper/promise-wrapper.ts +51 -0
  224. package/src/lib/random/chance.ts +5 -0
  225. package/src/lib/random/element.ts +7 -0
  226. package/src/lib/random/elements.ts +12 -0
  227. package/src/lib/random/enum.ts +34 -0
  228. package/src/lib/random/enums.ts +11 -0
  229. package/src/lib/random/index.ts +3 -0
  230. package/src/lib/random/number.ts +8 -0
  231. package/src/lib/server/base.ts +194 -0
  232. package/src/lib/server/enum/server-event.ts +5 -0
  233. package/src/lib/server/enum/server-status.ts +10 -0
  234. package/src/lib/server/http/endpoint/ping.ts +21 -0
  235. package/src/lib/server/http/endpoint.ts +345 -0
  236. package/src/lib/server/http/interface/endpoint-constructor.ts +12 -0
  237. package/src/lib/server/http/interface/result-serializer.ts +5 -0
  238. package/src/lib/server/http/middleware.ts +18 -0
  239. package/src/lib/server/http/result-serializer/html.ts +92 -0
  240. package/src/lib/server/http/result-serializer/json.ts +23 -0
  241. package/src/lib/server/http/route.ts +104 -0
  242. package/src/lib/server/http/router.ts +125 -0
  243. package/src/lib/server/http/type/session-resolver.ts +8 -0
  244. package/src/lib/server/http/utility/create-server.ts +34 -0
  245. package/src/lib/server/http/utility/path-parser.ts +49 -0
  246. package/src/lib/server/http/utility/standardize-html-indentation.ts +54 -0
  247. package/src/lib/server/http/websocket-wrapper.ts +83 -0
  248. package/src/lib/server/http.ts +301 -0
  249. package/src/lib/server/index.ts +5 -0
  250. package/src/lib/server/tcp.ts +53 -0
  251. package/src/lib/server/type/server-options.ts +10 -0
  252. package/src/lib/string/calculate-length.ts +17 -0
  253. package/src/lib/string/capitalize.ts +8 -0
  254. package/src/lib/string/create-slug.ts +14 -0
  255. package/src/lib/string/enum/ansi-escape-code.ts +14 -0
  256. package/src/lib/string/enum/string-encoding.ts +9 -0
  257. package/src/lib/string/hyphenate.ts +5 -0
  258. package/src/lib/string/index.ts +3 -0
  259. package/src/lib/string/pad.ts +14 -0
  260. package/src/lib/string/trim-multiline.ts +21 -0
  261. package/src/lib/string/trim.ts +8 -0
  262. package/src/lib/tcp/channel.ts +13 -0
  263. package/src/lib/tcp/connection/incoming.ts +72 -0
  264. package/src/lib/tcp/connection/outgoing.ts +219 -0
  265. package/src/lib/tcp/connection.ts +360 -0
  266. package/src/lib/tcp/enum/connection-event.ts +12 -0
  267. package/src/lib/tcp/enum/message-type.ts +9 -0
  268. package/src/lib/tcp/index.ts +1 -0
  269. package/src/lib/tcp/type/connection-parameters.ts +6 -0
  270. package/src/lib/tcp/type/message/channel-close.ts +9 -0
  271. package/src/lib/tcp/type/message/channel-open.ts +9 -0
  272. package/src/lib/tcp/type/message.ts +10 -0
  273. package/src/lib/test/index.ts +2 -0
  274. package/src/lib/test/utility/build-config.ts +17 -0
  275. package/src/lib/test/utility/build-execution-context.ts +11 -0
  276. package/src/lib/time/bootstrap.ts +1 -0
  277. package/src/lib/time/enum/time-interval.ts +12 -0
  278. package/src/lib/time/index.ts +4 -0
  279. package/src/lib/time/utility/format-duration.ts +139 -0
  280. package/src/lib/time/utility/format-relative-duration.ts +22 -0
  281. package/src/lib/time/utility/sleep.ts +9 -0
  282. package/src/operation.ts +18 -0
  283. package/src/server/endpoint/abstract-page.ts +126 -0
  284. package/src/server/endpoint/action/create.ts +545 -0
  285. package/src/server/endpoint/action/get.ts +231 -0
  286. package/src/server/endpoint/base.ts +51 -0
  287. package/src/server/endpoint/day.ts +13 -0
  288. package/src/server/endpoint/generic-page.ts +14 -0
  289. package/src/server/endpoint/index.ts +11 -0
  290. package/src/server/endpoint/login.ts +45 -0
  291. package/src/server/endpoint/logout.ts +38 -0
  292. package/src/server/endpoint/month.ts +35 -0
  293. package/src/server/endpoint/robots.ts +18 -0
  294. package/src/server/endpoint/session/create.ts +62 -0
  295. package/src/server/endpoint/settings/get.ts +40 -0
  296. package/src/server/endpoint/settings/update.ts +44 -0
  297. package/src/server/endpoint/today.ts +15 -0
  298. package/src/server/endpoint/week.ts +34 -0
  299. package/src/server/endpoint/year.ts +34 -0
  300. package/src/server/enum/custom-page-type.ts +10 -0
  301. package/src/server/factory/block-result-serializer.ts +115 -0
  302. package/src/server/middleware/base.ts +6 -0
  303. package/src/server/middleware/error-handler.ts +177 -0
  304. package/src/server/middleware/static-file.ts +83 -0
  305. package/src/server/operation/add-block.ts +110 -0
  306. package/src/server/operation/create-session.ts +43 -0
  307. package/src/server/operation/delete-block.ts +96 -0
  308. package/src/server/operation/demote-block.ts +108 -0
  309. package/src/server/operation/destroy-session.ts +26 -0
  310. package/src/server/operation/load-account.ts +30 -0
  311. package/src/server/operation/load-block.ts +48 -0
  312. package/src/server/operation/load-directory-items.ts +75 -0
  313. package/src/server/operation/load-page.ts +368 -0
  314. package/src/server/operation/promote-block.ts +104 -0
  315. package/src/server/operation/save-page.ts +60 -0
  316. package/src/server/operation/update-account-settings.ts +52 -0
  317. package/src/server/operation/update-block.ts +124 -0
  318. package/src/server/repository/memory.ts +112 -0
  319. package/src/server/result-serializer/action.ts +939 -0
  320. package/src/server/result-serializer/base.ts +1267 -0
  321. package/src/server/result-serializer/block/audio.ts +33 -0
  322. package/src/server/result-serializer/block/background.ts +20 -0
  323. package/src/server/result-serializer/block/calendar.ts +148 -0
  324. package/src/server/result-serializer/block/directory.ts +57 -0
  325. package/src/server/result-serializer/block/ephemeral.ts +14 -0
  326. package/src/server/result-serializer/block/folder.ts +106 -0
  327. package/src/server/result-serializer/block/header.ts +31 -0
  328. package/src/server/result-serializer/block/image.ts +46 -0
  329. package/src/server/result-serializer/block/link.ts +40 -0
  330. package/src/server/result-serializer/block/list.ts +140 -0
  331. package/src/server/result-serializer/block/multi-column.ts +97 -0
  332. package/src/server/result-serializer/block/note.ts +44 -0
  333. package/src/server/result-serializer/block/todo.ts +78 -0
  334. package/src/server/result-serializer/block/whitespace.ts +15 -0
  335. package/src/server/result-serializer/block.ts +248 -0
  336. package/src/server/result-serializer/common/time-place-options.ts +33 -0
  337. package/src/server/result-serializer/login.ts +58 -0
  338. package/src/server/result-serializer/month.ts +170 -0
  339. package/src/server/result-serializer/page.ts +548 -0
  340. package/src/server/result-serializer/settings.ts +85 -0
  341. package/src/server/result-serializer/week.ts +195 -0
  342. package/src/server/result-serializer/year.ts +160 -0
  343. package/src/server/utility/accepts-content-type.ts +16 -0
  344. package/src/server/utility/accepts-html.ts +9 -0
  345. package/src/server/utility/accepts-json.ts +9 -0
  346. package/src/server/utility/add-days.ts +11 -0
  347. package/src/server/utility/create-date.ts +23 -0
  348. package/src/server/utility/create-index-path.ts +5 -0
  349. package/src/server/utility/create-slug.ts +9 -0
  350. package/src/server/utility/create-toast-path.ts +19 -0
  351. package/src/server/utility/date-less-than.ts +5 -0
  352. package/src/server/utility/date-occurs-before.ts +22 -0
  353. package/src/server/utility/date-to-key.ts +7 -0
  354. package/src/server/utility/date-to-label.ts +5 -0
  355. package/src/server/utility/date-to-path.ts +9 -0
  356. package/src/server/utility/dates-are-equal.ts +22 -0
  357. package/src/server/utility/dates-are-in-order.ts +9 -0
  358. package/src/server/utility/dates-are-on-the-same-day.ts +9 -0
  359. package/src/server/utility/dates-in-same-month.ts +8 -0
  360. package/src/server/utility/day-to-date.ts +40 -0
  361. package/src/server/utility/decrement-date.ts +11 -0
  362. package/src/server/utility/get-block-at-index-path.ts +32 -0
  363. package/src/server/utility/get-block-permissions.ts +15 -0
  364. package/src/server/utility/get-compact-label-for-date.ts +8 -0
  365. package/src/server/utility/get-custom-page-type-for-path.ts +37 -0
  366. package/src/server/utility/get-element-id-for-block.ts +15 -0
  367. package/src/server/utility/get-emoji-for-block-type.ts +39 -0
  368. package/src/server/utility/get-emoji-for-tool-type.ts +20 -0
  369. package/src/server/utility/get-end-of-month.ts +13 -0
  370. package/src/server/utility/get-end-of-week.ts +13 -0
  371. package/src/server/utility/get-filepath-for-folder-block.ts +23 -0
  372. package/src/server/utility/get-hex-for-color.ts +31 -0
  373. package/src/server/utility/get-label-for-time-place-visibility.ts +23 -0
  374. package/src/server/utility/get-month-name.ts +18 -0
  375. package/src/server/utility/get-next-day.ts +7 -0
  376. package/src/server/utility/get-next-month.ts +12 -0
  377. package/src/server/utility/get-next-week.ts +12 -0
  378. package/src/server/utility/get-next-year.ts +13 -0
  379. package/src/server/utility/get-ordinal-label-for-week.ts +11 -0
  380. package/src/server/utility/get-ordinal-of-week-within-month.ts +15 -0
  381. package/src/server/utility/get-padded-date.ts +11 -0
  382. package/src/server/utility/get-parent-index-path.ts +18 -0
  383. package/src/server/utility/get-path-for-folder-block.ts +25 -0
  384. package/src/server/utility/get-path-from-url.ts +13 -0
  385. package/src/server/utility/get-previous-index-path.ts +27 -0
  386. package/src/server/utility/get-previous-month.ts +12 -0
  387. package/src/server/utility/get-previous-week.ts +11 -0
  388. package/src/server/utility/get-previous-year.ts +13 -0
  389. package/src/server/utility/get-random-emoji-for-date.ts +109 -0
  390. package/src/server/utility/get-short-label-for-date.ts +11 -0
  391. package/src/server/utility/get-short-month-name.ts +9 -0
  392. package/src/server/utility/get-short-ordinal.ts +26 -0
  393. package/src/server/utility/get-siblings-and-index-for-index-path.ts +67 -0
  394. package/src/server/utility/get-start-of-month.ts +11 -0
  395. package/src/server/utility/get-start-of-week.ts +12 -0
  396. package/src/server/utility/get-start-of-year.ts +12 -0
  397. package/src/server/utility/get-weekday-name.ts +24 -0
  398. package/src/server/utility/increment-date.ts +15 -0
  399. package/src/server/utility/is-index-path.ts +5 -0
  400. package/src/server/utility/key-to-date.ts +25 -0
  401. package/src/server/utility/month-has-week-containing-date.ts +13 -0
  402. package/src/server/utility/month-to-date.ts +28 -0
  403. package/src/server/utility/month-to-path.ts +10 -0
  404. package/src/server/utility/months-are-equal.ts +8 -0
  405. package/src/server/utility/parse-index-path.ts +23 -0
  406. package/src/server/utility/path-is-date.ts +13 -0
  407. package/src/server/utility/path-to-date.ts +24 -0
  408. package/src/server/utility/subtract-days.ts +7 -0
  409. package/src/server/utility/validate-month.ts +10 -0
  410. package/src/server/utility/validate-page.ts +46 -0
  411. package/src/server/utility/validate-path.ts +9 -0
  412. package/src/server/utility/validate-url.ts +12 -0
  413. package/src/server/utility/week-greater-than.ts +10 -0
  414. package/src/server/utility/week-to-date.ts +8 -0
  415. package/src/server/utility/week-to-path.ts +12 -0
  416. package/src/server/utility/weeks-are-equal.ts +8 -0
  417. package/src/server/utility/year-to-date.ts +26 -0
  418. package/src/server/utility/year-to-path.ts +7 -0
  419. package/src/server/utility/years-are-equal.ts +8 -0
  420. package/src/server.ts +140 -0
  421. package/src/test.ts +195 -0
  422. package/src/type/account-settings.ts +9 -0
  423. package/src/type/account.ts +11 -0
  424. package/src/type/action/add-block.ts +74 -0
  425. package/src/type/action/complete-block.ts +10 -0
  426. package/src/type/action/delete-block.ts +11 -0
  427. package/src/type/action/demote-block.ts +9 -0
  428. package/src/type/action/edit-block.ts +11 -0
  429. package/src/type/action/promote-block.ts +9 -0
  430. package/src/type/action.ts +9 -0
  431. package/src/type/block/audio.ts +8 -0
  432. package/src/type/block/background.ts +10 -0
  433. package/src/type/block/directory.ts +18 -0
  434. package/src/type/block/ephemeral.ts +9 -0
  435. package/src/type/block/folder.ts +14 -0
  436. package/src/type/block/header.ts +11 -0
  437. package/src/type/block/image.ts +8 -0
  438. package/src/type/block/link.ts +12 -0
  439. package/src/type/block/list.ts +24 -0
  440. package/src/type/block/multi-column.ts +10 -0
  441. package/src/type/block/note.ts +9 -0
  442. package/src/type/block/todo.ts +10 -0
  443. package/src/type/block/whitespace.ts +9 -0
  444. package/src/type/block-metadata.ts +14 -0
  445. package/src/type/block.ts +18 -0
  446. package/src/type/day.ts +5 -0
  447. package/src/type/field-definition.ts +8 -0
  448. package/src/type/field-value.ts +5 -0
  449. package/src/type/file.ts +6 -0
  450. package/src/type/month.ts +5 -0
  451. package/src/type/page.ts +8 -0
  452. package/src/type/price.ts +11 -0
  453. package/src/type/resource.ts +5 -0
  454. package/src/type/runtime-config.ts +13 -0
  455. package/src/type/server-settings.ts +17 -0
  456. package/src/type/toast.ts +8 -0
  457. package/src/type/week.ts +5 -0
  458. package/src/type/year.ts +5 -0
  459. package/test/unit/index.ts +11 -0
  460. package/test/unit/server/operation/promote-block.ts +84 -0
@@ -0,0 +1,128 @@
1
+ import {getFirstValue} from 'lib/array';
2
+
3
+ import KeyCode from 'client/enum/key-code';
4
+
5
+ abstract class Page {
6
+ private shift_pressed: boolean;
7
+ private previous_key_code: KeyCode | null;
8
+
9
+ public constructor() {
10
+ this.shift_pressed = false;
11
+ this.previous_key_code = null;
12
+ }
13
+
14
+ public start(): void {
15
+ this.logStarting();
16
+ this.initEvents();
17
+ this.bindLoadEvent();
18
+ this.logStarted();
19
+ }
20
+
21
+ private bindLoadEvent(): void {
22
+ window.addEventListener('load', () => {
23
+ this.initView();
24
+ });
25
+ }
26
+
27
+ protected initEvents(): void {
28
+ window.addEventListener('keydown', (event) => {
29
+ const key_code = event.keyCode || event.charCode;
30
+
31
+ this.shift_pressed = event.shiftKey;
32
+ this.handleKey(key_code);
33
+
34
+ if (key_code !== KeyCode.SHIFT) {
35
+ this.previous_key_code = key_code;
36
+ }
37
+ });
38
+ }
39
+
40
+ protected initView(): void {
41
+ // Noop by default; override on child classes.
42
+ }
43
+
44
+ protected handleKey(key_code: KeyCode): void {
45
+ // Noop by default; override on child classes.
46
+ }
47
+
48
+ protected getPreviousKeyCode(): KeyCode | null {
49
+ return this.previous_key_code;
50
+ }
51
+
52
+ protected shiftIsPressed(): boolean {
53
+ return this.shift_pressed;
54
+ }
55
+
56
+ protected focusElement(element: Element): void {
57
+ const rectangle = element.getBoundingClientRect();
58
+ const headers = Array.from(document.getElementsByTagName('header'));
59
+ const header = getFirstValue(headers);
60
+ const header_offset = header === undefined ? 0 : header.clientHeight;
61
+
62
+ if (rectangle.top < header_offset) {
63
+ if (header_offset === 0) {
64
+ window.scrollBy(0, rectangle.top);
65
+ } else {
66
+ window.scrollBy(0, -1 * (header_offset - rectangle.top));
67
+ }
68
+ } else if (rectangle.bottom > window.innerHeight) {
69
+ if (rectangle.height < window.innerHeight) {
70
+ window.scrollBy(0, rectangle.bottom - window.innerHeight);
71
+ }
72
+ }
73
+ }
74
+
75
+ protected getNumericQueryParameter(key: string, fallback: number): number {
76
+ const parameter = this.getQueryParameter(key);
77
+
78
+ if (parameter === undefined) {
79
+ return fallback;
80
+ }
81
+
82
+ const parsed_value = parseInt(parameter);
83
+
84
+ if (isNaN(parsed_value)) {
85
+ return fallback;
86
+ }
87
+
88
+ return parsed_value;
89
+ }
90
+
91
+ protected getQueryParameter(key: string): string | undefined {
92
+ const params = new URLSearchParams(window.location.search);
93
+ const value = params.get(key);
94
+
95
+ if (value === null) {
96
+ return undefined;
97
+ }
98
+
99
+ return value;
100
+ }
101
+
102
+ protected setQueryParameter(key: string, value: string | number): void {
103
+ const url = new URL(window.location.href);
104
+
105
+ url.searchParams.set(key, value.toString());
106
+ url.searchParams.delete('toast_message');
107
+ url.searchParams.delete('toast_color');
108
+ window.location.href = url.toString();
109
+ }
110
+
111
+ private logStarting(): void {
112
+ const name = this.getName();
113
+
114
+ console.log(`[${name}] starting...`);
115
+ }
116
+
117
+ private logStarted(): void {
118
+ const name = this.getName();
119
+
120
+ console.log(`[${name}] started.`);
121
+ }
122
+
123
+ private getName(): string {
124
+ return this.constructor.name;
125
+ }
126
+ }
127
+
128
+ export default Page;
@@ -0,0 +1,5 @@
1
+ function execute(command: string): void {
2
+ console.log(`Executing: ${command}`);
3
+ }
4
+
5
+ export default execute;
@@ -0,0 +1,44 @@
1
+ import {LogLevel} from 'lib/logger';
2
+ import {InvariantViolation} from 'lib/errors';
3
+
4
+ class ClientLogger {
5
+ public setUniqueId(_unique_id: string): void {
6
+ // Noop.
7
+ }
8
+
9
+ public writeMessage(message: string, log_level: LogLevel): void {
10
+ switch (log_level) {
11
+ case LogLevel.INFO:
12
+ return this.info(message);
13
+ case LogLevel.SUCCESS:
14
+ return this.success(message);
15
+ case LogLevel.WARNING:
16
+ return this.warn(message);
17
+ case LogLevel.ERROR:
18
+ return this.error(message);
19
+
20
+ default:
21
+ throw new InvariantViolation(`
22
+ Invalid log level: ${log_level}
23
+ `);
24
+ }
25
+ }
26
+
27
+ public info(...args: any[]): void {
28
+ console.log(...args);
29
+ }
30
+
31
+ public success(...args: any[]): void {
32
+ console.log(...args);
33
+ }
34
+
35
+ public warn(...args: any[]): void {
36
+ console.warn(...args);
37
+ }
38
+
39
+ public error(...args: any[]): void {
40
+ console.error(...args);
41
+ }
42
+ }
43
+
44
+ export default ClientLogger;
@@ -0,0 +1,23 @@
1
+ import {InvariantViolation} from 'lib/errors';
2
+
3
+ function getMetaValue(name: string): string {
4
+ const element = document.querySelector(`meta[name="${name}"]`);
5
+
6
+ if (element === null) {
7
+ throw new InvariantViolation(`
8
+ Tried to read ${name} meta tag, but it was not set
9
+ `);
10
+ }
11
+
12
+ if (!(element instanceof HTMLMetaElement)) {
13
+ throw new InvariantViolation(`
14
+ Got wrong element for ${name} meta tag: ${element.tagName}
15
+ `);
16
+ }
17
+
18
+ const meta_tag = element as HTMLMetaElement;
19
+
20
+ return meta_tag.content;
21
+ }
22
+
23
+ export default getMetaValue;
@@ -0,0 +1,25 @@
1
+ import {InvalidError} from 'lib/errors';
2
+
3
+ import WhitespaceBlock from 'type/block/background';
4
+ import Color from 'enum/color';
5
+ import BlockType from 'enum/block-type';
6
+
7
+ function background(raw_color: string): WhitespaceBlock {
8
+ const color = raw_color as Color;
9
+ const colors = Object.values(Color);
10
+
11
+ if (!colors.includes(color)) {
12
+ throw new InvalidError(`
13
+ Invalid color: ${color}
14
+ `);
15
+ }
16
+
17
+ return {
18
+ block_type: BlockType.BACKGROUND,
19
+ color,
20
+ created_at: Date.now(),
21
+ show_time: false
22
+ };
23
+ }
24
+
25
+ export default background;
@@ -0,0 +1,43 @@
1
+ import {InvalidError} from 'lib/errors';
2
+
3
+ import FolderBlock from 'type/block/folder';
4
+ import Emoji from 'enum/emoji';
5
+ import Color from 'enum/color';
6
+ import BlockType from 'enum/block-type';
7
+
8
+ type FolderInput = {
9
+ readonly title: string;
10
+ readonly subtitle?: string;
11
+ readonly emoji: string;
12
+ readonly color: string;
13
+ };
14
+
15
+ function folder(input: FolderInput): FolderBlock {
16
+ const {
17
+ title,
18
+ subtitle: raw_subtitle,
19
+ emoji: raw_emoji,
20
+ color: raw_color
21
+ } = input;
22
+
23
+ const emoji = raw_emoji as Emoji;
24
+ const subtitle = raw_subtitle || '';
25
+ const color = raw_color as Color;
26
+ const colors = Object.values(Color);
27
+
28
+ if (!colors.includes(color)) {
29
+ throw new InvalidError(`Invalid color: ${color}`);
30
+ }
31
+
32
+ return {
33
+ block_type: BlockType.FOLDER,
34
+ title,
35
+ emoji,
36
+ subtitle,
37
+ color,
38
+ created_at: Date.now(),
39
+ show_time: false
40
+ };
41
+ }
42
+
43
+ export default folder;
@@ -0,0 +1,15 @@
1
+ import HeaderBlock from 'type/block/header';
2
+ import BlockType from 'enum/block-type';
3
+ import HeaderSize from 'enum/header-size';
4
+
5
+ function header(title: string): HeaderBlock {
6
+ return {
7
+ block_type: BlockType.HEADER,
8
+ title,
9
+ size: HeaderSize.MEDIUM,
10
+ created_at: Date.now(),
11
+ show_time: false
12
+ };
13
+ }
14
+
15
+ export default header;
@@ -0,0 +1,32 @@
1
+ import {InvalidError} from 'lib/errors';
2
+
3
+ import LinkBlock from 'type/block/link';
4
+ import Color from 'enum/color';
5
+ import BlockType from 'enum/block-type';
6
+
7
+ type LinkInput = {
8
+ readonly href: string;
9
+ readonly label: string;
10
+ readonly color: string;
11
+ };
12
+
13
+ function link(input: LinkInput): LinkBlock {
14
+ const {href, label, color: raw_color} = input;
15
+ const color = raw_color as Color;
16
+ const colors = Object.values(Color);
17
+
18
+ if (!colors.includes(color)) {
19
+ throw new InvalidError(`Invalid color: ${color}`);
20
+ }
21
+
22
+ return {
23
+ block_type: BlockType.LINK,
24
+ href,
25
+ label,
26
+ color,
27
+ created_at: Date.now(),
28
+ show_time: false
29
+ };
30
+ }
31
+
32
+ export default link;
@@ -0,0 +1,16 @@
1
+ import Block from 'type/block';
2
+ import BlockType from 'enum/block-type';
3
+ import MultiColumnBlock from 'type/block/multi-column';
4
+
5
+ function multicolumn(max_columns: number, children: Block[]): MultiColumnBlock {
6
+ return {
7
+ block_type: BlockType.MULTI_COLUMN,
8
+ max_columns,
9
+ children,
10
+ created_at: Date.now(),
11
+ show_place: false,
12
+ show_time: false
13
+ };
14
+ }
15
+
16
+ export default multicolumn;
@@ -0,0 +1,13 @@
1
+ import NoteBlock from 'type/block/note';
2
+ import BlockType from 'enum/block-type';
3
+
4
+ function note(text: string): NoteBlock {
5
+ return {
6
+ block_type: BlockType.NOTE,
7
+ text,
8
+ created_at: Date.now(),
9
+ show_time: false
10
+ };
11
+ }
12
+
13
+ export default note;
@@ -0,0 +1,13 @@
1
+ import WhitespaceBlock from 'type/block/whitespace';
2
+ import BlockType from 'enum/block-type';
3
+
4
+ function whitespace(line_count: number): WhitespaceBlock {
5
+ return {
6
+ block_type: BlockType.WHITESPACE,
7
+ line_count,
8
+ created_at: Date.now(),
9
+ show_time: false
10
+ };
11
+ }
12
+
13
+ export default whitespace;
@@ -0,0 +1,29 @@
1
+ import validatePath from 'server/utility/validate-path';
2
+
3
+ function getParentPath(source_path: string): string {
4
+ validatePath(source_path);
5
+
6
+ const query_index = source_path.indexOf('?');
7
+
8
+ if (query_index !== -1) {
9
+ source_path = source_path.slice(0, query_index);
10
+ }
11
+
12
+ if (source_path.endsWith('/')) {
13
+ source_path = source_path.slice(0, -1);
14
+ }
15
+
16
+ const parts = source_path.split('/').filter((part) => {
17
+ return part !== '';
18
+ });
19
+
20
+ parts.pop();
21
+
22
+ if (parts.length === 0) {
23
+ return '/';
24
+ }
25
+
26
+ return '/' + parts.join('/');
27
+ }
28
+
29
+ export default getParentPath;
@@ -0,0 +1,16 @@
1
+ const MonthNames = [
2
+ 'january',
3
+ 'february',
4
+ 'march',
5
+ 'april',
6
+ 'may',
7
+ 'june',
8
+ 'july',
9
+ 'august',
10
+ 'september',
11
+ 'october',
12
+ 'november',
13
+ 'december'
14
+ ];
15
+
16
+ export default MonthNames;
@@ -0,0 +1,11 @@
1
+ enum ActionType {
2
+ ADD_BLOCK = 'add_block',
3
+ DELETE_BLOCK = 'delete_block',
4
+ PROMOTE_BLOCK = 'promote_block',
5
+ DEMOTE_BLOCK = 'demote_block',
6
+ EDIT_BLOCK = 'edit_block',
7
+ CREATE_PAGE = 'create_page',
8
+ COMPLETE_BLOCK = 'complete_block'
9
+ }
10
+
11
+ export default ActionType;
@@ -0,0 +1,18 @@
1
+ enum BlockType {
2
+ HEADER = 'header',
3
+ NOTE = 'note',
4
+ IMAGE = 'image',
5
+ AUDIO = 'audio',
6
+ EPHEMERAL = 'ephemeral',
7
+ CALENDAR = 'calendar',
8
+ DIRECTORY = 'directory',
9
+ FOLDER = 'folder',
10
+ MULTI_COLUMN = 'multi_column',
11
+ LINK = 'link',
12
+ TODO = 'todo',
13
+ LIST = 'list',
14
+ BACKGROUND = 'background',
15
+ WHITESPACE = 'whitespace'
16
+ }
17
+
18
+ export default BlockType;
@@ -0,0 +1,9 @@
1
+
2
+ enum CalendarViewMode {
3
+ YEAR = 'year',
4
+ MONTH = 'month',
5
+ WEEK = 'week',
6
+ DAY = 'day'
7
+ }
8
+
9
+ export default CalendarViewMode;
@@ -0,0 +1,15 @@
1
+ enum Color {
2
+ BLUE = 'blue',
3
+ YELLOW = 'yellow',
4
+ FUSCHIA = 'fuschia',
5
+ RED = 'red',
6
+ MAROON = 'maroon',
7
+ ORANGE = 'orange',
8
+ PURPLE = 'purple',
9
+ BLACK = 'black',
10
+ WHITE = 'white',
11
+ GREY = 'grey',
12
+ GREEN = 'green'
13
+ }
14
+
15
+ export default Color;
@@ -0,0 +1,6 @@
1
+ enum DefaultRole {
2
+ CREATOR = 'creator',
3
+ PUBLIC = 'public'
4
+ }
5
+
6
+ export default DefaultRole;
@@ -0,0 +1,6 @@
1
+ enum DirectoryItemType {
2
+ DIRECTORY = 'directory',
3
+ GENERIC_FILE = 'generic_file'
4
+ }
5
+
6
+ export default DirectoryItemType;
@@ -0,0 +1,94 @@
1
+
2
+ enum Emoji {
3
+ BAR_CHART = 'πŸ“Š',
4
+ FOLDER = 'πŸ—‚οΈ',
5
+ FILE = 'πŸ“„',
6
+ HOUSE = '🏠',
7
+ NONE = '🚫',
8
+ WHITE_SQUARE = '⬜',
9
+ GRID_GLOBE = '🌐',
10
+ SATELLITE_DISH = 'πŸ“‘',
11
+ COMPLETED_CHECKMARK = 'βœ…',
12
+ CLOCK = 'πŸ•’',
13
+ SUNSHINE = 'πŸ”†',
14
+ ALARM_CLOCK = '⏰',
15
+ MAGNIFYING_GLASS = 'πŸ”Ž',
16
+ MAGIC_WAND = 'πŸͺ„',
17
+ CALENDAR = 'πŸ“…',
18
+ LOCKED = 'πŸ”’',
19
+ UNLOCKED = 'πŸ”“',
20
+ NORTHWEST_ARROW = '↖️',
21
+ RIGHT_ARROW = '➑️',
22
+ LEFT_ARROW = '⬅️',
23
+ UP_ARROW = '⬆️',
24
+ LEFT_ARROW_UNICODE = 'β—„',
25
+ UP_ARROW_UNICODE = 'β–²',
26
+ RIGHT_ARROW_UNICODE = 'β–Ί',
27
+ DOWN_ARROW_UNICODE = 'β–Ό',
28
+ BACK_ARROW = '⬅️',
29
+ BRICK = '🧱',
30
+ SWORD = 'πŸ—‘οΈ',
31
+ PEACE_SIGN = '✌️',
32
+ SIGN = 'πŸͺ§',
33
+ CONSTRUCTION = 'πŸ—οΈ',
34
+ CAMERA = 'πŸ“·',
35
+ PAINTING = 'πŸ–ΌοΈ',
36
+ PALETTE = '🎨',
37
+ MICROPHONE = 'πŸŽ™οΈ',
38
+ NOTEPAD = 'πŸ“',
39
+ GEAR = 'βš™οΈ',
40
+ SNOWMAN = 'β˜ƒοΈ',
41
+ SNOWFLAKE = '❄️',
42
+ SNOW_CLOUD = '🌨️',
43
+ SCARF = '🧣',
44
+ GLOVES = '🧀',
45
+ CANDLE = 'πŸ•―οΈ',
46
+ CHRISTMAS_TREE = 'πŸŽ„',
47
+ SOCKS = '🧦',
48
+ COLD_FACE = 'πŸ₯Ά',
49
+ EYE = 'πŸ‘οΈ',
50
+ CHAINS = '⛓️',
51
+
52
+ SEEDLING = '🌱',
53
+ TULIP = '🌷',
54
+ BEE = '🐝',
55
+ HATCHING_CHICK = '🐣',
56
+ NEST_WITH_EGGS = 'πŸͺΊ',
57
+ BLOSSOM = '🌼',
58
+ UMBRELLA = 'β˜”',
59
+ RAINBOW = '🌈',
60
+ PICNIC_BASKET = '🧺',
61
+
62
+ SUN_WITH_FACE = '🌞',
63
+ BEACH_UMBRELLA = 'πŸ–οΈ',
64
+ WATERMELON = 'πŸ‰',
65
+ SUNGLASSES = 'πŸ•ΆοΈ',
66
+ ICE_CREAM = '🍦',
67
+ SUNFLOWER = '🌻',
68
+ CAMPING = 'πŸ•οΈ',
69
+ JUICE_BOX = 'πŸ§ƒ',
70
+ PARASOL = '⛱️',
71
+
72
+ MAPLE_LEAF = '🍁',
73
+ FALLEN_LEAF = 'πŸ‚',
74
+ TURKEY = 'πŸ¦ƒ',
75
+ JACK_O_LANTERN = 'πŸŽƒ',
76
+ PIE = 'πŸ₯§',
77
+ LOG = 'πŸͺ΅',
78
+ SPIDER_WEB = 'πŸ•ΈοΈ',
79
+ BACKPACK = 'πŸŽ’',
80
+ CHESTNUT = '🌰',
81
+
82
+ PLACARD = 'πŸͺ§',
83
+ RECEIPT = '🧾',
84
+ DOCUMENT = 'πŸ“„',
85
+ SPARKLES = '✨',
86
+ BOOKS = 'πŸ“š',
87
+ SHOPPING_BAGS = 'πŸ›οΈ',
88
+ LINK = 'πŸ”—',
89
+ GREEN_ASTERISK = '✳️',
90
+ RADIO_BUTTON = 'πŸ”˜',
91
+ WINDOW = 'πŸͺŸ'
92
+ }
93
+
94
+ export default Emoji;
@@ -0,0 +1,8 @@
1
+ export enum FieldType {
2
+ TEXT = 'text',
3
+ PRICE = 'price',
4
+ ENUM = 'enum',
5
+ DATE = 'date'
6
+ }
7
+
8
+ export default FieldType;
@@ -0,0 +1,7 @@
1
+ enum HeaderSize {
2
+ SMALL = 'small',
3
+ MEDIUM = 'medium',
4
+ LARGE = 'large'
5
+ }
6
+
7
+ export default HeaderSize;
@@ -0,0 +1,8 @@
1
+ enum PermissionType {
2
+ CREATE = 'create',
3
+ READ = 'read',
4
+ UPDATE = 'update',
5
+ DELETE = 'delete'
6
+ };
7
+
8
+ export default PermissionType;
@@ -0,0 +1,8 @@
1
+ enum TimePlaceVisibility {
2
+ NONE = 'none',
3
+ TIME = 'time',
4
+ PLACE = 'place',
5
+ BOTH = 'both'
6
+ }
7
+
8
+ export default TimePlaceVisibility;
@@ -0,0 +1,14 @@
1
+
2
+ enum ToolType {
3
+ LOCK = 'lock',
4
+ HOME = 'home',
5
+ TODAY = 'today',
6
+ SETTINGS = 'settings',
7
+ FOLDER = 'folder',
8
+ TODO = 'todo',
9
+ NOTE = 'note',
10
+ AUDIO = 'audio',
11
+ IMAGE = 'image'
12
+ }
13
+
14
+ export default ToolType;
package/src/index.ts ADDED
@@ -0,0 +1,8 @@
1
+ export {default as createServer} from 'bootstrap/start';
2
+ export {default as header} from 'common/builder/block/header';
3
+ export {default as folder} from 'common/builder/block/folder';
4
+ export {default as note} from 'common/builder/block/note';
5
+ export {default as link} from 'common/builder/block/link';
6
+ export {default as multicolumn} from 'common/builder/block/multicolumn';
7
+ export {default as background} from 'common/builder/block/background';
8
+ export {default as whitespace} from 'common/builder/block/whitespace';
@@ -0,0 +1,7 @@
1
+ import Resource from 'type/resource';
2
+
3
+ interface HydrationCallback {
4
+ (data_source: string): Resource[];
5
+ }
6
+
7
+ export default HydrationCallback;
@@ -0,0 +1,8 @@
1
+ import Block from 'type/block';
2
+
3
+ interface Provider {
4
+ readonly path: string;
5
+ readonly handler: (path: string) => Block[] | Promise<Block[]>;
6
+ }
7
+
8
+ export default Provider;
@@ -0,0 +1,12 @@
1
+ import {Session} from 'lib/execution-context';
2
+ import Account from 'type/account';
3
+
4
+ interface Repository {
5
+ createSessionForAccount(account: Account): Promise<Session>;
6
+ getAccountForUsername(username: string): Promise<Account | undefined>;
7
+ saveAccount(account: Account): Promise<void>;
8
+ findSession(session_id: string): Promise<Session>;
9
+ destroySession(session_id: string): Promise<void>;
10
+ }
11
+
12
+ export default Repository;