@beechcms/api 0.6.4 → 0.6.6

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 (40) hide show
  1. package/assets/dashboard/assets/{chart-CERC48Yu.js → chart-DA5IFPWq.js} +3 -3
  2. package/assets/dashboard/assets/index-B58kBLrh.css +1 -0
  3. package/assets/dashboard/assets/index-CM0tZF7n.js +745 -0
  4. package/assets/dashboard/assets/{pie-chart-recharts-DkdMjYy6.js → pie-chart-recharts-BiqT5XVc.js} +1 -1
  5. package/assets/dashboard/assets/{timeseries-chart-recharts-Co1oKyym.js → timeseries-chart-recharts-B6lrNF3r.js} +1 -1
  6. package/assets/dashboard/index.html +2 -2
  7. package/dist/factory.d.ts +3 -1
  8. package/dist/features/automations/api/automations.schema.d.ts +6 -6
  9. package/dist/index.js +2500 -2985
  10. package/dist/shared/db/repositories/content.repository.d1.d.ts +5 -2
  11. package/dist/shared/db/repositories/demo-data.repository.d1.d.ts +9 -4
  12. package/dist/shared/policies/apply-policies.d.ts +17 -4
  13. package/dist/types.d.ts +7 -1
  14. package/package.json +3 -3
  15. package/assets/dashboard/assets/index-BwTrD5DX.js +0 -644
  16. package/assets/dashboard/assets/index-Dve7eEqA.css +0 -1
  17. package/dist/auth/constants.d.ts +0 -10
  18. package/dist/auth/utils/refresh-token.d.ts +0 -1
  19. package/dist/features/automations/engine/cron-runner.utils.d.ts +0 -1
  20. package/dist/features/content/constants.d.ts +0 -12
  21. package/dist/features/rotate-field/rotate-field.schema.d.ts +0 -11
  22. package/dist/public/api-key-middleware.d.ts +0 -6
  23. package/dist/public/cache-utils.d.ts +0 -10
  24. package/dist/public/problem-details.d.ts +0 -32
  25. package/dist/public/public-errors.d.ts +0 -13
  26. package/dist/public/response-builder.d.ts +0 -22
  27. package/dist/shared/cloudflare-queue-service.d.ts +0 -11
  28. package/dist/shared/db/migrations/demo-data-sql.d.ts +0 -1
  29. package/dist/shared/db/repositories/d1-setup-checklist.repository.d.ts +0 -12
  30. package/dist/shared/email/email.types.d.ts +0 -79
  31. package/dist/shared/email/templates/automation-mail.d.ts +0 -7
  32. package/dist/shared/email/templates/password-changed.d.ts +0 -15
  33. package/dist/shared/email/templates/password-reset.d.ts +0 -18
  34. package/dist/shared/email/templates/shell.d.ts +0 -58
  35. package/dist/shared/in-memory-queue-service.d.ts +0 -16
  36. package/dist/shared/jobs/fts-sync.d.ts +0 -1
  37. package/dist/shared/queue-consumer.d.ts +0 -9
  38. package/dist/shared/storage/upload.d.ts +0 -7
  39. package/dist/shared/utils/request-utils.d.ts +0 -13
  40. package/dist/shared/utils/storage-utils.d.ts +0 -7
@@ -1,5 +1,6 @@
1
- import { ContentRepository, type BulkFieldUpdate, type BatchWrite, type DraftSummary, type Seed, type SelectOptions, type RepositoryOptions, type BeechHooks } from '@beechcms/core';
1
+ import { ContentRepository, type BulkFieldUpdate, type BatchWrite, type DraftSummary, type Seed, type SelectOptions, type RepositoryOptions, type BeechHooks, type IPrivacyService } from '@beechcms/core';
2
2
  import { BaseD1Repository } from './base.repository.d1';
3
+ export declare function prepareBlindIndexOptions(seed: Seed, options: SelectOptions, privacyService: IPrivacyService): Promise<SelectOptions>;
3
4
  /**
4
5
  * D1 (Cloudflare SQLite) implementation of {@link ContentRepository}.
5
6
  *
@@ -14,9 +15,11 @@ import { BaseD1Repository } from './base.repository.d1';
14
15
  */
15
16
  export declare class D1ContentRepository extends BaseD1Repository implements ContentRepository {
16
17
  private readonly hooks?;
17
- constructor(database: D1Database, hooks?: BeechHooks | undefined);
18
+ private readonly privacyService?;
19
+ constructor(database: D1Database, hooks?: BeechHooks | undefined, privacyService?: IPrivacyService | undefined);
18
20
  /** Assembles the {@link HookContext} passed to every lifecycle hook invocation. */
19
21
  private hookCtx;
22
+ private serializeAndProtect;
20
23
  /**
21
24
  * Deserializes a DB row using the Seed's branch definitions.
22
25
  * Skips multi-relation branches — their values come from junction tables.
@@ -1,6 +1,11 @@
1
- import type { IDemoDataRepository } from '@beechcms/core';
1
+ import type { IDemoDataRepository, ContentRepository, Seed } from '@beechcms/core';
2
2
  export declare class D1DemoDataRepository implements IDemoDataRepository {
3
- private readonly db;
4
- constructor(db: D1Database);
5
- loadDemoData(): Promise<void>;
3
+ private readonly _db?;
4
+ constructor(_db?: unknown);
5
+ /**
6
+ * Loads structured demo datasets using ContentRepository domain methods.
7
+ * This guarantees full compliance with field validation, privacy encryption (AES-256-GCM),
8
+ * blind index generation (*_bidx), FTS search indexing, and relation integrity.
9
+ */
10
+ loadDemoData(repository: ContentRepository, getSeed: (slug: string) => Seed | null): Promise<void>;
6
11
  }
@@ -1,10 +1,23 @@
1
- import type { Seed } from '@beechcms/core';
1
+ import type { Seed, ActorContext } from '@beechcms/core';
2
2
  declare class PrivacyPolicyError extends Error {
3
3
  readonly status: 501;
4
4
  constructor(message: string);
5
5
  }
6
6
  export { PrivacyPolicyError };
7
- /** Applica la privacy policy ai campi del payload prima della scrittura su DB. */
7
+ /**
8
+ * Applies privacy transformation rules to payload fields before database insertion/update.
9
+ * @param data - Raw record fields object.
10
+ * @param seed - Seed definition containing field policy definitions.
11
+ * @returns A Promise resolving to the transformed data payload.
12
+ */
8
13
  export declare function applyPrivacy(data: Record<string, unknown>, seed: Seed): Promise<Record<string, unknown>>;
9
- /** Applica la visibility policy ai campi del payload in uscita verso il client. */
10
- export declare function applyVisibility(data: Record<string, unknown>, seed: Seed): Record<string, unknown>;
14
+ /**
15
+ * Applies visibility policy and context-aware field filtering to outgoing API payloads.
16
+ * Delegates to {@link filterEntryForActor} using the supplied {@link ActorContext}.
17
+ *
18
+ * @param data - Raw record data object from repository.
19
+ * @param seed - Content type seed definition.
20
+ * @param actor - Context of the caller (defaults to authenticated).
21
+ * @returns Filtered data record containing only authorized fields for the actor.
22
+ */
23
+ export declare function applyVisibility(data: Record<string, unknown>, seed: Seed, actor?: ActorContext): Record<string, unknown>;
package/dist/types.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * per-request context values injected by middleware (`Variables`), and
5
5
  * the combined `AppEnv` used to type every Hono app/router in the API.
6
6
  */
7
- import type { Seed, ContentRepository, IdempotencyRepository, BeechBucket, MediaRepository, SystemStatsRepository, IHashProvider, ITokenService, IUserRepository, ISessionRepository, IPasswordResetTokenRepository, IActivityLogger, IActivityLogRepository, INotificationRepository, INotificationService, IWidgetRepository, ISearchRepository, IAnalyticsRepository, IContentScanRepository, ISeedRegistry, IClock, IIdGenerator, IAutomationRunner, IAutomationRepository, IScheduler, BackrefMap, ISiteSettingsRepository, IDemoDataRepository, JwtClaims, ISeedLayoutRepository, ISeedRepository, ISchemaMutator, IDashboardLayoutRepository, IQueueService, IKanbanPositionRepository } from '@beechcms/core';
7
+ import type { Seed, ContentRepository, IdempotencyRepository, BeechBucket, MediaRepository, SystemStatsRepository, IHashProvider, ITokenService, IUserRepository, ISessionRepository, IPasswordResetTokenRepository, IActivityLogger, IActivityLogRepository, INotificationRepository, INotificationService, IWidgetRepository, ISearchRepository, IAnalyticsRepository, IContentScanRepository, ISeedRegistry, IClock, IIdGenerator, IAutomationRunner, IAutomationRepository, IScheduler, BackrefMap, ISiteSettingsRepository, IDemoDataRepository, JwtClaims, ISeedLayoutRepository, ISeedRepository, ISchemaMutator, IDashboardLayoutRepository, IQueueService, IKanbanPositionRepository, IPrivacyService, ActorContext } from '@beechcms/core';
8
8
  import type { IRateLimiterRegistry } from './middleware/rate-limit.middleware';
9
9
  import type { ISetupChecklistRepository } from './shared/db/repositories/d1-setup-checklist.repository';
10
10
  /**
@@ -90,14 +90,20 @@ export interface Env {
90
90
  QSTASH_CURRENT_SIGNING_KEY?: string;
91
91
  /** Next QStash signing key, accepted during key rotation. */
92
92
  QSTASH_NEXT_SIGNING_KEY?: string;
93
+ /** Master key used for Application-Level Encryption (ALE). */
94
+ PRIVACY_MASTER_KEY?: string;
93
95
  }
94
96
  /**
95
97
  * Per-request context values (`c.get(...)` / `c.set(...)`), injected by middleware
96
98
  * before route handlers run. Every entry here must be set by some middleware on the request path.
97
99
  */
98
100
  export interface Variables {
101
+ /** Caller/actor context (public vs authenticated user vs system). */
102
+ actor?: ActorContext;
99
103
  /** Decoded JWT claims of the authenticated user. */
100
104
  jwtPayload: JwtClaims;
105
+ /** Application-level privacy and encryption service. */
106
+ privacyService: IPrivacyService;
101
107
  /** Looks up a Seed definition by slug from the loaded schema. */
102
108
  getSeed: (slug: string) => Seed | null;
103
109
  /** Registry of all loaded Seed definitions. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beechcms/api",
3
- "version": "0.6.4",
3
+ "version": "0.6.6",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/factory.d.ts",
@@ -20,10 +20,10 @@
20
20
  "dependencies": {
21
21
  "@aws-sdk/client-s3": "^3.995.0",
22
22
  "@aws-sdk/s3-request-presigner": "^3.995.0",
23
- "@beechcms/core": "^0.6.4",
23
+ "@beechcms/core": "^0.6.6",
24
24
  "@upstash/qstash": "^2.11.0",
25
25
  "bcryptjs": "^2.4.3",
26
- "hono": "^4.12.21",
26
+ "hono": "^4.12.34",
27
27
  "jose": "^6.1.3",
28
28
  "zod": "^4.4.3"
29
29
  },