@crowi/api-contract 2.0.0-alpha.13 → 2.0.0-alpha.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1814,6 +1814,17 @@ var UPLOAD_ALLOWED_MIME = [
1814
1814
  // Unknown / unset — see the note above.
1815
1815
  "application/octet-stream"
1816
1816
  ];
1817
+ var UploadPolicyResponseSchema = z17.object({
1818
+ allowedMimeTypes: z17.array(z17.string()),
1819
+ extensionHints: z17.record(z17.string(), z17.string()),
1820
+ maxBytes: z17.object({
1821
+ attachment: z17.number()
1822
+ }),
1823
+ profilePicture: z17.object({
1824
+ allowedMimeTypes: z17.array(z17.string()),
1825
+ maxBytes: z17.number()
1826
+ })
1827
+ });
1817
1828
 
1818
1829
  // src/contracts/attachment.ts
1819
1830
  var PageIdPathParamsSchema = z18.object({
@@ -1827,8 +1838,7 @@ var AddAttachmentBodySchema = z18.object({
1827
1838
  });
1828
1839
  var UploadAttachmentBodySchema = z18.object({
1829
1840
  file: z18.any().openapi({ type: "string", format: "binary" }).optional(),
1830
- pageId: z18.string().optional(),
1831
- intent: z18.string().optional().openapi({ enum: ["paste", "dnd"] })
1841
+ pageId: z18.string().optional()
1832
1842
  });
1833
1843
  var listAttachmentsRoute = createRoute10({
1834
1844
  method: "get",
@@ -1998,7 +2008,7 @@ var uploadAttachmentRoute = createRoute10({
1998
2008
  content: { "application/json": { schema: UploadAttachmentErrorSchema } }
1999
2009
  },
2000
2010
  413: {
2001
- description: "Body exceeds the per-intent size cap",
2011
+ description: "Body exceeds the unified upload size cap",
2002
2012
  content: { "application/json": { schema: UploadAttachmentErrorSchema } }
2003
2013
  },
2004
2014
  415: {
@@ -2051,6 +2061,23 @@ var removeAttachmentRoute = createRoute10({
2051
2061
  }
2052
2062
  }
2053
2063
  });
2064
+ var getUploadPolicyRoute = createRoute10({
2065
+ method: "get",
2066
+ path: "/attachments/upload-policy",
2067
+ tags: ["attachment"],
2068
+ security: [{ bearerAuth: [] }],
2069
+ summary: "Get the server upload policy (allowed MIME types, extension hints, size limits)",
2070
+ responses: {
2071
+ 200: {
2072
+ description: "Current upload policy, derived from server-side constants (never a value maintained separately)",
2073
+ content: { "application/json": { schema: UploadPolicyResponseSchema } }
2074
+ },
2075
+ 401: {
2076
+ description: "Authentication required",
2077
+ content: { "application/json": { schema: AuthenticationRequiredErrorSchema } }
2078
+ }
2079
+ }
2080
+ });
2054
2081
  var attachmentRoutes = {
2055
2082
  // `/pages/{pageId}/attachments/usage` MUST register before
2056
2083
  // `/pages/{pageId}/attachments` so the literal `/usage` suffix wins;
@@ -2062,7 +2089,8 @@ var attachmentRoutes = {
2062
2089
  addAttachmentRoute,
2063
2090
  uploadAttachmentRoute,
2064
2091
  getAttachmentMetaRoute,
2065
- removeAttachmentRoute
2092
+ removeAttachmentRoute,
2093
+ getUploadPolicyRoute
2066
2094
  };
2067
2095
 
2068
2096
  // src/contracts/autocomplete.ts
@@ -2414,6 +2442,17 @@ var crowiOpaqueFields = z22.object({
2414
2442
  /** Best-effort diagnostics only — never a rendering hint. Truncated to 64 chars before assignment. */
2415
2443
  originalType: z22.string().max(64).optional()
2416
2444
  });
2445
+ var FRONTMATTER_MAX_ENTRIES = 50;
2446
+ var FRONTMATTER_MAX_KEY_CHARS = 100;
2447
+ var FRONTMATTER_MAX_VALUE_CHARS = 300;
2448
+ var FRONTMATTER_MAX_RAW_BYTES = 8 * 1024;
2449
+ var CrowiFrontmatterEntrySchema = z22.object({
2450
+ key: z22.string().max(FRONTMATTER_MAX_KEY_CHARS),
2451
+ value: z22.string().max(FRONTMATTER_MAX_VALUE_CHARS)
2452
+ });
2453
+ var crowiFrontmatterFields = z22.object({
2454
+ entries: z22.array(CrowiFrontmatterEntrySchema).max(FRONTMATTER_MAX_ENTRIES)
2455
+ });
2417
2456
  var RENDERED_AST_NODE_DEFS = {
2418
2457
  root: { placement: "flow", childModel: "flow", fields: noFields },
2419
2458
  paragraph: { placement: "flow", childModel: "phrasing", fields: noFields },
@@ -2442,10 +2481,12 @@ var RENDERED_AST_NODE_DEFS = {
2442
2481
  footnoteReference: { placement: "phrasing", childModel: "none", fields: footnoteReferenceFields },
2443
2482
  linkReference: { placement: "phrasing", childModel: "phrasing", fields: linkReferenceFields },
2444
2483
  imageReference: { placement: "phrasing", childModel: "none", fields: imageReferenceFields },
2445
- // Crowi-owned types. `crowiFigure` is the only one that also appears
2446
- // in stored ASTs; the other three only exist as projection outputs
2447
- // (or as defensively-validated plugin-injected nodes).
2484
+ // Crowi-owned types. `crowiFigure` / `crowiFrontmatter` are the only
2485
+ // ones that also appear in stored ASTs directly (a core transform
2486
+ // writes them at save time); the other three only exist as projection
2487
+ // outputs (or as defensively-validated plugin-injected nodes).
2448
2488
  crowiFigure: { placement: "flow", childModel: "phrasing", fields: noFields },
2489
+ crowiFrontmatter: { placement: "flow", childModel: "none", fields: crowiFrontmatterFields },
2449
2490
  crowiDiagram: { placement: "flow", childModel: "none", fields: CrowiDiagramSidecarSchema },
2450
2491
  crowiLinkCard: { placement: "flow", childModel: "none", fields: CrowiLinkCardSidecarSchema },
2451
2492
  crowiPlaceholder: { placement: "both", childModel: "none", fields: CrowiPlaceholderSidecarSchema },
@@ -2481,6 +2522,7 @@ var RenderedAstNodeSchema = z22.lazy(
2481
2522
  LinkReferenceNodeSchema,
2482
2523
  ImageReferenceNodeSchema,
2483
2524
  CrowiFigureNodeSchema,
2525
+ CrowiFrontmatterNodeSchema,
2484
2526
  CrowiDiagramNodeSchema,
2485
2527
  CrowiLinkCardNodeSchema,
2486
2528
  CrowiPlaceholderNodeSchema,
@@ -2529,6 +2571,7 @@ var CrowiFigureNodeSchema = z22.object({
2529
2571
  data: HastHintDataSchema.extend({ hName: z22.literal("figure"), hProperties: HPropertiesSchema }),
2530
2572
  children: childrenSchema
2531
2573
  });
2574
+ var CrowiFrontmatterNodeSchema = crowiFrontmatterFields.extend({ type: z22.literal("crowiFrontmatter"), data: dataSchema });
2532
2575
  var CrowiDiagramNodeSchema = CrowiDiagramSidecarSchema.extend({ type: z22.literal("crowiDiagram"), data: dataSchema });
2533
2576
  var CrowiLinkCardNodeSchema = CrowiLinkCardSidecarSchema.extend({ type: z22.literal("crowiLinkCard"), data: dataSchema });
2534
2577
  var CrowiPlaceholderNodeSchema = CrowiPlaceholderSidecarSchema.extend({ type: z22.literal("crowiPlaceholder"), data: dataSchema });
@@ -7007,6 +7050,12 @@ var stubAttachmentMeta = (() => {
7007
7050
  })();
7008
7051
  var stubUploadAttachment = { url: "", filename: "", mimeType: "", sizeBytes: 0 };
7009
7052
  var stubRemoveAttachment = { success: true };
7053
+ var stubUploadPolicy = {
7054
+ allowedMimeTypes: [],
7055
+ extensionHints: {},
7056
+ maxBytes: { attachment: 0 },
7057
+ profilePicture: { allowedMimeTypes: [], maxBytes: 0 }
7058
+ };
7010
7059
  var stubSearchPages = { meta: { total: 0, results: 0 }, data: [] };
7011
7060
  var stubCryptoStatus = {
7012
7061
  encryptionConfigured: false,
@@ -7095,7 +7144,7 @@ var appAuthMeUserChain = new OpenAPIHono().openapi(
7095
7144
  ).openapi(meRoutes.recentlyViewedPagesRoute, (c) => c.json({ pages: [] }, 200)).openapi(accessTokenRoutes.listAccessTokensRoute, (c) => c.json({ accessTokens: [] }, 200)).openapi(accessTokenRoutes.createAccessTokenRoute, (c) => c.json(stubCreateAccessToken, 201)).openapi(accessTokenRoutes.deleteAccessTokenRoute, (c) => c.json(stubAccessToken, 200)).openapi(userRoutes.getUserPageRoute, (c) => c.json(stubUserPage, 200)).openapi(userRoutes.getUserBookmarksRoute, (c) => c.json(stubUserBookmarks, 200)).openapi(userRoutes.getUserPagesRoute, (c) => c.json(stubUserPages, 200)).openapi(userRoutes.getUserSubpagesRoute, (c) => c.json(stubUserPages, 200)).openapi(userRoutes.listMembersRoute, (c) => c.json(stubListUsers, 200));
7096
7145
  var bookmarkBacklinkCommentRevisionChain = new OpenAPIHono().openapi(bookmarkRoutes.getBookmarkRoute, (c) => c.json(stubBookmarkResponse, 200)).openapi(bookmarkRoutes.listMyBookmarksRoute, (c) => c.json(stubListMyBookmarks, 200)).openapi(bookmarkRoutes.addBookmarkRoute, (c) => c.json(stubBookmarkResponse, 200)).openapi(bookmarkRoutes.removeBookmarkRoute, (c) => c.json(stubRemoveBookmark, 200)).openapi(backlinkRoutes.getBacklinksRoute, (c) => c.json(stubBacklinks, 200)).openapi(commentRoutes.listCommentsRoute, (c) => c.json(stubListComments, 200)).openapi(commentRoutes.addCommentRoute, (c) => c.json(stubAddComment, 200)).openapi(commentRoutes.deleteCommentRoute, (c) => c.json(stubDeleteComment, 200)).openapi(revisionRoutes.listRevisionsRoute, (c) => c.json(stubListRevisions, 200)).openapi(revisionRoutes.getRevisionsRoute, (c) => c.json(stubGetRevisions, 200)).openapi(revisionRoutes.getRevisionRoute, (c) => c.json(stubGetRevision, 200));
7097
7146
  var pageChain = new OpenAPIHono().openapi(pageRoutes.getPageRoute, (c) => c.json(stubPageWithRevision, 200)).openapi(pageRoutes.listPagesRoute, (c) => c.json(stubListPages, 200)).openapi(pageRoutes.listPageChildrenRoute, (c) => c.json(stubListPageChildren, 200)).openapi(pageRoutes.createPageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.updatePageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.setPageGrantRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.seenPageRoute, (c) => c.json(stubSeenUsers, 200)).openapi(pageRoutes.getSeenUsersRoute, (c) => c.json(stubSeenUsers, 200)).openapi(pageRoutes.likePageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.unlikePageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.claimPageLinkAccessRoute, (c) => c.json({ ...stubPageWithRevision, granted: false }, 200)).openapi(pageRoutes.getWatchStatusRoute, (c) => c.json(stubWatchStatus, 200)).openapi(pageRoutes.setWatchStatusRoute, (c) => c.json(stubWatchStatus, 200)).openapi(pageRoutes.deletePageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.revertDeletedPageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.revertToRevisionRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.renamePageRoute, (c) => c.json({ ...stubPageResponse, renamed_count: 1 }, 200)).openapi(pageRoutes.renameSubtreeRoute, (c) => c.json({ renamed_count: 0 }, 200)).openapi(pagePreviewRoutes.previewPageRoute, (c) => c.json(stubPreview, 200)).openapi(pageCollabRoutes.getYjsTokenRoute, (c) => c.json(stubWsToken, 200)).openapi(presenceRoutes.getPresenceTokenRoute, (c) => c.json(stubPresenceToken, 200)).openapi(presenceRoutes.getLikersRoute, (c) => c.json(stubLikers, 200));
7098
- var lateContractApp = new OpenAPIHono().openapi(draftRoutes.createDraftRoute, (c) => c.json(stubCreateDraft, 201)).openapi(draftRoutes.listDraftsRoute, (c) => c.json(stubListDrafts, 200)).openapi(draftRoutes.cancelDraftRoute, (c) => c.json(stubCreateDraft, 200)).openapi(autocompleteRoutes.autocompleteUsersRoute, (c) => c.json(stubAutocomplete, 200)).openapi(autocompleteRoutes.autocompletePagesRoute, (c) => c.json(stubAutocomplete, 200)).openapi(attachmentRoutes.getAttachmentUsageRoute, (c) => c.json(stubAttachmentUsage, 200)).openapi(attachmentRoutes.listAttachmentsRoute, (c) => c.json(stubListAttachments, 200)).openapi(attachmentRoutes.addAttachmentRoute, (c) => c.json(stubAddAttachment, 200)).openapi(attachmentRoutes.uploadAttachmentRoute, (c) => c.json(stubUploadAttachment, 200)).openapi(attachmentRoutes.getAttachmentMetaRoute, (c) => c.json(stubAttachmentMeta, 200)).openapi(attachmentRoutes.removeAttachmentRoute, (c) => c.json(stubRemoveAttachment, 200)).openapi(searchRoutes.searchPagesRoute, (c) => c.json(stubSearchPages, 200)).openapi(adminCryptoRoutes.getCryptoStatusRoute, (c) => c.json(stubCryptoStatus, 200)).openapi(adminCryptoRoutes.reencryptAllRoute, (c) => c.json(stubReencrypt, 200)).openapi(notificationRoutes.listNotificationsRoute, (c) => c.json(stubListNotifications, 200)).openapi(notificationRoutes.markAllAsReadRoute, (c) => c.json(stubMarkAllAsRead, 200)).openapi(notificationRoutes.getNotificationsTokenRoute, (c) => c.json(stubNotificationsToken, 200)).openapi(notificationRoutes.getUnreadCountRoute, (c) => c.json(stubNotificationStatus, 200)).openapi(notificationRoutes.openNotificationRoute, (c) => c.json(stubOpenNotification, 200));
7147
+ var lateContractApp = new OpenAPIHono().openapi(draftRoutes.createDraftRoute, (c) => c.json(stubCreateDraft, 201)).openapi(draftRoutes.listDraftsRoute, (c) => c.json(stubListDrafts, 200)).openapi(draftRoutes.cancelDraftRoute, (c) => c.json(stubCreateDraft, 200)).openapi(autocompleteRoutes.autocompleteUsersRoute, (c) => c.json(stubAutocomplete, 200)).openapi(autocompleteRoutes.autocompletePagesRoute, (c) => c.json(stubAutocomplete, 200)).openapi(attachmentRoutes.getAttachmentUsageRoute, (c) => c.json(stubAttachmentUsage, 200)).openapi(attachmentRoutes.listAttachmentsRoute, (c) => c.json(stubListAttachments, 200)).openapi(attachmentRoutes.addAttachmentRoute, (c) => c.json(stubAddAttachment, 200)).openapi(attachmentRoutes.uploadAttachmentRoute, (c) => c.json(stubUploadAttachment, 200)).openapi(attachmentRoutes.getAttachmentMetaRoute, (c) => c.json(stubAttachmentMeta, 200)).openapi(attachmentRoutes.removeAttachmentRoute, (c) => c.json(stubRemoveAttachment, 200)).openapi(attachmentRoutes.getUploadPolicyRoute, (c) => c.json(stubUploadPolicy, 200)).openapi(searchRoutes.searchPagesRoute, (c) => c.json(stubSearchPages, 200)).openapi(adminCryptoRoutes.getCryptoStatusRoute, (c) => c.json(stubCryptoStatus, 200)).openapi(adminCryptoRoutes.reencryptAllRoute, (c) => c.json(stubReencrypt, 200)).openapi(notificationRoutes.listNotificationsRoute, (c) => c.json(stubListNotifications, 200)).openapi(notificationRoutes.markAllAsReadRoute, (c) => c.json(stubMarkAllAsRead, 200)).openapi(notificationRoutes.getNotificationsTokenRoute, (c) => c.json(stubNotificationsToken, 200)).openapi(notificationRoutes.getUnreadCountRoute, (c) => c.json(stubNotificationStatus, 200)).openapi(notificationRoutes.openNotificationRoute, (c) => c.json(stubOpenNotification, 200));
7099
7148
  var adminSettingsContractApp = new OpenAPIHono().openapi(adminAppRoutes.getAppSettingsRoute, (c) => c.json(stubGetAppSettings, 200)).openapi(adminAppRoutes.updateAppSettingsRoute, (c) => c.json(stubUpdateAppSettings, 200)).openapi(adminAuthRoutes.getAuthSettingsRoute, (c) => c.json(stubAuthSettings, 200)).openapi(adminAuthRoutes.updateAuthSettingsRoute, (c) => c.json(stubAuthSettings, 200)).openapi(adminSecurityRoutes.getSecuritySettingsRoute, (c) => c.json(stubSecuritySettings, 200)).openapi(adminSecurityRoutes.updateSecuritySettingsRoute, (c) => c.json(stubSecuritySettings, 200)).openapi(adminMailRoutes.getMailSettingsRoute, (c) => c.json(stubMailSettings, 200)).openapi(adminMailRoutes.updateMailSettingsRoute, (c) => c.json(stubUpdateMailSettings, 200)).openapi(adminMailRoutes.sendTestMailRoute, (c) => c.json(stubSendTestMail, 200)).openapi(adminStorageRoutes.getStorageStatusRoute, (c) => c.json(stubStorageStatus, 200)).openapi(adminSearchRoutes.getSearchStatusRoute, (c) => c.json(stubSearchStatus, 200));
7100
7149
  var adminUsersPluginsContractApp = new OpenAPIHono().openapi(adminUsersRoutes.listUsersRoute, (c) => c.json(stubListAdminUsers, 200)).openapi(adminUsersRoutes.searchUsersByEmailRoute, (c) => c.json(stubSearchAdminUsersByEmail, 200)).openapi(adminUsersRoutes.pendingUsersCountRoute, (c) => c.json(stubPendingUsersCount, 200)).openapi(adminUsersRoutes.inviteUsersRoute, (c) => c.json(stubInviteUsers, 200)).openapi(adminUsersRoutes.editUserRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.makeAdminRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.removeFromAdminRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.activateUserRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.suspendUserRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.resetPasswordRoute, (c) => c.json(stubResetPassword, 200)).openapi(adminUsersRoutes.resendInviteRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.updateUserEmailRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.deleteUserRoute, (c) => c.json(stubDeleteAdminUser, 200)).openapi(adminPluginsRoutes.listPluginsRoute, (c) => c.json(stubListPlugins, 200)).openapi(adminPluginsRoutes.getPluginConfigRoute, (c) => c.json(stubPluginConfig, 200)).openapi(adminPluginsRoutes.updatePluginConfigRoute, (c) => c.json(stubUpdatePluginConfig, 200)).openapi(adminPluginsRoutes.getPluginReadinessRoute, (c) => c.json(stubPluginReadiness, 200)).openapi(adminPluginsRoutes.clearRenderCacheAllRoute, (c) => c.json(stubClearRenderCache, 200)).openapi(adminPluginsRoutes.clearRenderCachePluginRoute, (c) => c.json(stubClearRenderCache, 200));
7101
7150
  var oauthContractApp = new OpenAPIHono().openapi(oauthRoutes.authorizeRoute, (c) => c.json(stubAuthorize, 200)).openapi(oauthRoutes.tokenRoute, (c) => c.json(stubToken, 200)).openapi(oauthRoutes.revokeRoute, (c) => c.json(stubRevoke, 200)).openapi(oauthRoutes.discoveryRoute, (c) => c.json(stubDiscovery, 200)).openapi(oauthRoutes.deviceAuthorizeRoute, (c) => c.json(stubDeviceAuthorize, 200)).openapi(oauthRoutes.deviceInfoRoute, (c) => c.json(stubDeviceInfo, 200)).openapi(oauthRoutes.deviceVerifyRoute, (c) => c.json(stubDeviceVerify, 200)).openapi(oauthRoutes.clientInfoRoute, (c) => c.json(stubClientInfo, 200));
@@ -7389,6 +7438,7 @@ export {
7389
7438
  CrowiDiagramNodeSchema,
7390
7439
  CrowiDiagramSidecarSchema,
7391
7440
  CrowiDimensionSchema,
7441
+ CrowiFrontmatterEntrySchema,
7392
7442
  CrowiImagePayloadSchema,
7393
7443
  CrowiLinkCardNodeSchema,
7394
7444
  CrowiLinkCardSidecarSchema,
@@ -7419,6 +7469,10 @@ export {
7419
7469
  EditAdminUserRequestSchema,
7420
7470
  EncryptionNotConfiguredErrorSchema,
7421
7471
  ErrorCodeSchema,
7472
+ FRONTMATTER_MAX_ENTRIES,
7473
+ FRONTMATTER_MAX_KEY_CHARS,
7474
+ FRONTMATTER_MAX_RAW_BYTES,
7475
+ FRONTMATTER_MAX_VALUE_CHARS,
7422
7476
  FederatedHandoffRequestSchema,
7423
7477
  FederatedHandoffResponseSchema,
7424
7478
  FederatedProviderSchema,
@@ -7643,6 +7697,7 @@ export {
7643
7697
  UploadAttachmentErrorCodeSchema,
7644
7698
  UploadAttachmentErrorSchema,
7645
7699
  UploadAttachmentResponseSchema,
7700
+ UploadPolicyResponseSchema,
7646
7701
  UserBookmarksResponseSchema,
7647
7702
  UserLanguageSchema,
7648
7703
  UserListItemSchema,
@@ -7743,6 +7798,7 @@ export {
7743
7798
  getSeenUsersRoute,
7744
7799
  getStorageStatusRoute,
7745
7800
  getUnreadCountRoute,
7801
+ getUploadPolicyRoute,
7746
7802
  getUserBookmarksRoute,
7747
7803
  getUserPageRoute,
7748
7804
  getUserPagesRoute,