@nextsparkjs/core 0.1.0-beta.195 → 0.1.0-beta.196

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 (168) hide show
  1. package/dist/components/billing/InvoicesPagination.js +2 -2
  2. package/dist/components/dashboard/navigation/DynamicNavigation.js +2 -2
  3. package/dist/components/settings/layouts/SettingsSidebar.d.ts.map +1 -1
  4. package/dist/components/settings/layouts/SettingsSidebar.js +0 -1
  5. package/dist/components/teams/CreateTeamButton.js +2 -2
  6. package/dist/components/teams/CreateTeamDialog.js +1 -1
  7. package/dist/components/teams/InviteMemberButton.js +3 -3
  8. package/dist/components/teams/InviteMemberDialog.js +1 -1
  9. package/dist/components/teams/TeamPendingInvitations.js +2 -2
  10. package/dist/lib/api/api-error.d.ts +2 -0
  11. package/dist/lib/api/api-error.d.ts.map +1 -1
  12. package/dist/lib/api/api-error.js +3 -1
  13. package/dist/lib/api/auth/dual-auth.d.ts +2 -1
  14. package/dist/lib/api/auth/dual-auth.d.ts.map +1 -1
  15. package/dist/lib/api/auth/dual-auth.js +22 -4
  16. package/dist/lib/api/auth/scope-policy.d.ts +6 -3
  17. package/dist/lib/api/auth/scope-policy.d.ts.map +1 -1
  18. package/dist/lib/api/cors-response.d.ts +3 -2
  19. package/dist/lib/api/cors-response.d.ts.map +1 -1
  20. package/dist/lib/api/cors-response.js +8 -6
  21. package/dist/lib/api/entity/generic-handler.d.ts.map +1 -1
  22. package/dist/lib/api/entity/generic-handler.js +0 -3
  23. package/dist/lib/api/helpers.d.ts.map +1 -1
  24. package/dist/lib/api/helpers.js +5 -22
  25. package/dist/lib/api/permission-middleware.d.ts.map +1 -1
  26. package/dist/lib/api/permission-middleware.js +0 -2
  27. package/dist/lib/api/rate-limit.d.ts +8 -0
  28. package/dist/lib/api/rate-limit.d.ts.map +1 -1
  29. package/dist/lib/api/rate-limit.js +34 -3
  30. package/dist/lib/api/request-origin.d.ts.map +1 -1
  31. package/dist/lib/api/request-origin.js +1 -1
  32. package/dist/lib/auth/runtime-readiness.d.ts.map +1 -1
  33. package/dist/lib/auth/runtime-readiness.js +2 -0
  34. package/dist/lib/auth/sample-accounts.d.ts +17 -0
  35. package/dist/lib/auth/sample-accounts.d.ts.map +1 -0
  36. package/dist/lib/auth/sample-accounts.js +22 -0
  37. package/dist/lib/auth.d.ts.map +1 -1
  38. package/dist/lib/auth.js +6 -3
  39. package/dist/lib/cache/public-entity-cache.d.ts +21 -0
  40. package/dist/lib/cache/public-entity-cache.d.ts.map +1 -0
  41. package/dist/lib/cache/public-entity-cache.js +25 -0
  42. package/dist/lib/entities/entity-hooks.d.ts.map +1 -1
  43. package/dist/lib/entities/entity-hooks.js +4 -0
  44. package/dist/lib/mcp/errors.d.ts +2 -0
  45. package/dist/lib/mcp/errors.d.ts.map +1 -1
  46. package/dist/lib/mcp/errors.js +3 -1
  47. package/dist/lib/mcp/index.d.ts +1 -1
  48. package/dist/lib/mcp/index.d.ts.map +1 -1
  49. package/dist/lib/mcp/index.js +2 -1
  50. package/dist/lib/services/generic-entity.service.d.ts.map +1 -1
  51. package/dist/lib/services/generic-entity.service.js +2 -0
  52. package/dist/lib/teams/actions.d.ts.map +1 -1
  53. package/dist/lib/teams/actions.js +0 -1
  54. package/dist/messages/de/billing.json +12 -1
  55. package/dist/messages/de/common.json +2 -0
  56. package/dist/messages/de/docs.json +1 -0
  57. package/dist/messages/de/features.json +16 -4
  58. package/dist/messages/de/home.json +5 -0
  59. package/dist/messages/de/index.d.ts +68 -25
  60. package/dist/messages/de/index.d.ts.map +1 -1
  61. package/dist/messages/de/index.js +2 -0
  62. package/dist/messages/de/index.ts +2 -0
  63. package/dist/messages/de/settings.json +1 -0
  64. package/dist/messages/de/teams.json +3 -18
  65. package/dist/messages/en/billing.json +1 -1
  66. package/dist/messages/en/common.json +2 -0
  67. package/dist/messages/en/docs.json +1 -0
  68. package/dist/messages/en/features.json +16 -4
  69. package/dist/messages/en/home.json +5 -0
  70. package/dist/messages/en/index.d.ts +58 -25
  71. package/dist/messages/en/index.d.ts.map +1 -1
  72. package/dist/messages/en/index.js +2 -0
  73. package/dist/messages/en/index.ts +2 -0
  74. package/dist/messages/en/settings.json +1 -0
  75. package/dist/messages/en/teams.json +3 -18
  76. package/dist/messages/es/billing.json +1 -1
  77. package/dist/messages/es/common.json +2 -0
  78. package/dist/messages/es/docs.json +1 -0
  79. package/dist/messages/es/features.json +16 -4
  80. package/dist/messages/es/home.json +5 -0
  81. package/dist/messages/es/index.d.ts +41 -8
  82. package/dist/messages/es/index.d.ts.map +1 -1
  83. package/dist/messages/es/index.js +2 -0
  84. package/dist/messages/es/index.ts +2 -0
  85. package/dist/messages/es/settings.json +1 -0
  86. package/dist/messages/es/teams.json +3 -0
  87. package/dist/messages/fr/billing.json +12 -1
  88. package/dist/messages/fr/common.json +2 -0
  89. package/dist/messages/fr/docs.json +1 -0
  90. package/dist/messages/fr/features.json +16 -4
  91. package/dist/messages/fr/home.json +5 -0
  92. package/dist/messages/fr/index.d.ts +68 -25
  93. package/dist/messages/fr/index.d.ts.map +1 -1
  94. package/dist/messages/fr/index.js +2 -0
  95. package/dist/messages/fr/index.ts +2 -0
  96. package/dist/messages/fr/settings.json +1 -0
  97. package/dist/messages/fr/teams.json +3 -18
  98. package/dist/messages/it/billing.json +12 -1
  99. package/dist/messages/it/common.json +2 -0
  100. package/dist/messages/it/docs.json +1 -0
  101. package/dist/messages/it/features.json +16 -4
  102. package/dist/messages/it/home.json +5 -0
  103. package/dist/messages/it/index.d.ts +68 -25
  104. package/dist/messages/it/index.d.ts.map +1 -1
  105. package/dist/messages/it/index.js +2 -0
  106. package/dist/messages/it/index.ts +2 -0
  107. package/dist/messages/it/settings.json +1 -0
  108. package/dist/messages/it/teams.json +3 -18
  109. package/dist/messages/pt/billing.json +12 -1
  110. package/dist/messages/pt/common.json +2 -0
  111. package/dist/messages/pt/docs.json +1 -0
  112. package/dist/messages/pt/features.json +16 -4
  113. package/dist/messages/pt/home.json +5 -0
  114. package/dist/messages/pt/index.d.ts +68 -25
  115. package/dist/messages/pt/index.d.ts.map +1 -1
  116. package/dist/messages/pt/index.js +2 -0
  117. package/dist/messages/pt/index.ts +2 -0
  118. package/dist/messages/pt/settings.json +1 -0
  119. package/dist/messages/pt/teams.json +3 -18
  120. package/dist/migrations/029_sample_accounts_outside_development.sql +55 -0
  121. package/dist/migrations/090_sample_data.sql +10 -0
  122. package/dist/routes/_internal/entity-permission-layout.d.ts.map +1 -1
  123. package/dist/routes/_internal/entity-permission-layout.js +0 -7
  124. package/dist/routes/api/mcp/route.d.ts.map +1 -1
  125. package/dist/routes/api/mcp/route.js +7 -1
  126. package/dist/routes/api/v1/media/upload/route.d.ts +2 -1
  127. package/dist/routes/api/v1/media/upload/route.d.ts.map +1 -1
  128. package/dist/routes/api/v1/media/upload/route.js +10 -2
  129. package/dist/routes/api/v1/teams/[teamId]/members/route.d.ts.map +1 -1
  130. package/dist/routes/api/v1/teams/[teamId]/members/route.js +12 -10
  131. package/dist/routes/api/v1/teams/switch/route.d.ts.map +1 -1
  132. package/dist/routes/api/v1/teams/switch/route.js +4 -1
  133. package/dist/routes/dashboard/settings/password/page.d.ts.map +1 -1
  134. package/dist/routes/dashboard/settings/password/page.js +10 -12
  135. package/dist/routes/devtools/config/page.js +1 -1
  136. package/dist/routes/devtools/page.js +1 -1
  137. package/dist/routes/devtools/scheduled-actions/page.js +1 -1
  138. package/dist/routes/devtools/tests/[[...path]]/page.js +1 -1
  139. package/dist/templates/ci-workflows/github/cypress-regression.yml +1 -1
  140. package/dist/templates/ci-workflows/github/cypress-smoke.yml +2 -1
  141. package/dist/templates/projects/starter/README.md +2 -0
  142. package/dist/templates/projects/starter/docs/public/01-overview/01-introduction.md +2 -0
  143. package/dist/templates/projects/starter/templates/dashboard/analytics/layout.tsx +14 -0
  144. package/dist/templates/proxy.ts +15 -8
  145. package/dist/templates/public/uploads/README.md +5 -94
  146. package/migrations/029_sample_accounts_outside_development.sql +55 -0
  147. package/migrations/090_sample_data.sql +10 -0
  148. package/package.json +2 -2
  149. package/scripts/build/registry/host/__tests__/host-proxy-areas.test.mjs +72 -1
  150. package/scripts/build/registry/host/proxy-areas.mjs +65 -2
  151. package/scripts/db/run-migrations.mjs +30 -10
  152. package/scripts/db/sample-data.mjs +44 -0
  153. package/scripts/db/verify-theme-migrations.mjs +6 -0
  154. package/templates/ci-workflows/github/cypress-regression.yml +1 -1
  155. package/templates/ci-workflows/github/cypress-smoke.yml +2 -1
  156. package/templates/projects/starter/README.md +2 -0
  157. package/templates/projects/starter/docs/public/01-overview/01-introduction.md +2 -0
  158. package/templates/projects/starter/templates/dashboard/analytics/layout.tsx +14 -0
  159. package/templates/proxy.ts +15 -8
  160. package/templates/public/uploads/README.md +5 -94
  161. package/tests/jest/__mocks__/@nextsparkjs/registries/api-presets-registry.ts +2 -0
  162. package/tests/jest/__mocks__/@nextsparkjs/registries/mcp-registry.ts +2 -0
  163. package/dist/templates/projects/starter/public/brand/.gitkeep +0 -0
  164. package/dist/templates/public/uploads/.gitignore +0 -6
  165. package/dist/templates/public/uploads/temp/.gitkeep +0 -1
  166. package/templates/projects/starter/public/brand/.gitkeep +0 -0
  167. package/templates/public/uploads/.gitignore +0 -6
  168. package/templates/public/uploads/temp/.gitkeep +0 -1
@@ -0,0 +1,22 @@
1
+ const SAMPLE_PASSWORD_HASHES = [
2
+ "22de14d5472248ed0bece911df908b2a:d29576424798ba6845d348a3767c0b0f38a00f2aca461b3b1d34b99a93cab06c86774c6edb183e6d6ec47457649b032a49a7b60a48f6f4f7fbbc4ea40258f19f",
3
+ "3db9e98e2b4d3caca97fdf2783791cbc:34b293de615caf277a237773208858e960ea8aa10f1f5c5c309b632f192cac34d52ceafbd338385616f4929e4b1b6c055b67429c6722ffdb80b01d9bf4764866"
4
+ ];
5
+ async function warnSampleAccountsAtStartup(env = process.env, queryRows) {
6
+ if (env.NODE_ENV !== "production") return;
7
+ try {
8
+ const run = queryRows ?? (await import("../db.js")).queryRows;
9
+ const [row] = await run(
10
+ `SELECT count(*)::int AS count FROM "account" WHERE "providerId" = 'credential' AND "password" = ANY($1)`,
11
+ [SAMPLE_PASSWORD_HASHES]
12
+ );
13
+ if (row && row.count > 0) {
14
+ console.warn(`[auth-readiness] ${row.count} account(s) still have a sample-data password; pnpm db:migrate disables them once; if it already ran, see the CHANGELOG upgrade notes`);
15
+ }
16
+ } catch {
17
+ }
18
+ }
19
+ export {
20
+ SAMPLE_PASSWORD_HASHES,
21
+ warnSampleAccountsAtStartup
22
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAUA,OAAO,EAA0F,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAmBjI;;;;;;;;;;;;;GAaG;AACH,wBAAsB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQlF;AAED;;;;;;;;;GASG;AACH,wBAAsB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEnF;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAuHD,eAAO,MAAM,IAAI,qEAiXf,CAAC;AAEH,MAAM,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACjD,MAAM,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,kBAAkB,EAAE,QAAQ,EAAE,CAAC;CAC/C,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,IAAI,EAAE,WAAW,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAO9B"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAUA,OAAO,EAA0F,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAmBjI;;;;;;;;;;;;;GAaG;AACH,wBAAsB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQlF;AAED;;;;;;;;;GASG;AACH,wBAAsB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEnF;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA4HD,eAAO,MAAM,IAAI,qEAiXf,CAAC;AAEH,MAAM,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACjD,MAAM,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,kBAAkB,EAAE,QAAQ,EAAE,CAAC;CAC/C,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,IAAI,EAAE,WAAW,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAO9B"}
package/dist/lib/auth.js CHANGED
@@ -42,13 +42,16 @@ const databaseUrl = process.env.DATABASE_SERVICE_URL || process.env.DATABASE_URL
42
42
  const cleanUrl = stripSSLParams(databaseUrl);
43
43
  const isPoolerUrl = /:6543(\/|$|\?)/.test(databaseUrl) || /pooler/i.test(databaseUrl);
44
44
  const connectionString = isPoolerUrl ? cleanUrl.includes("?") ? `${cleanUrl}&pgbouncer=true` : `${cleanUrl}?pgbouncer=true` : cleanUrl;
45
- const pool = new Pool({
45
+ const AUTH_POOLS = /* @__PURE__ */ Symbol.for("nextspark.auth.pools");
46
+ const authPools = globalThis[AUTH_POOLS] ??= /* @__PURE__ */ new Map();
47
+ const pool = authPools.get(databaseUrl) ?? new Pool({
46
48
  connectionString,
47
49
  ssl: parseSSLConfig(databaseUrl),
48
50
  connectionTimeoutMillis: 1e4,
49
51
  idleTimeoutMillis: 3e4,
50
52
  max: 20
51
53
  });
54
+ authPools.set(databaseUrl, pool);
52
55
  const sessionConfig = resolveSessionConfig(AUTH_CONFIG);
53
56
  const otpConfig = resolveOtpConfig(AUTH_CONFIG);
54
57
  function resolveNonOwnerSignupRole() {
@@ -277,7 +280,7 @@ const auth = betterAuth({
277
280
  if (registrationMode === "domain-restricted" || registrationMode === "domain-open") {
278
281
  const allowedDomains = ((_d = (_c = AUTH_CONFIG) == null ? void 0 : _c.registration) == null ? void 0 : _d.allowedDomains) ?? [];
279
282
  if (allowedDomains.length > 0 && !isDomainAllowed(user.email, allowedDomains)) {
280
- console.log(`[Auth] Blocked registration for ${user.email}: domain not in allowedDomains (allowed: ${allowedDomains.join(", ")})`);
283
+ console.log(`[Auth] Blocked registration for a user at ${user.email.split("@").pop()}: domain not in allowedDomains (allowed: ${allowedDomains.join(", ")})`);
281
284
  throw new Error(`DOMAIN_NOT_ALLOWED: Email domain not authorized. Please use an email from: ${allowedDomains.join(", ")}`);
282
285
  }
283
286
  }
@@ -344,7 +347,7 @@ const auth = betterAuth({
344
347
  );
345
348
  const email = (_e = result.rows[0]) == null ? void 0 : _e.email;
346
349
  if (email && !isDomainAllowed(email, allowedDomains)) {
347
- console.log(`[Auth] Blocked sign-in for ${email}: domain not in allowedDomains`);
350
+ console.log(`[Auth] Blocked sign-in for a user at ${email.split("@").pop()}: domain not in allowedDomains`);
348
351
  return false;
349
352
  }
350
353
  }
@@ -0,0 +1,21 @@
1
+ import type { EntityConfig } from '../entities/types';
2
+ /**
3
+ * The public pages of an entity are cached (`'use cache'` tagged `entity:<slug>` in public-item-route.cc; ISR
4
+ * `revalidate` in the other host), so a write has to expire them. Every writer of an entity ends here: the
5
+ * generic REST handler, the entity handler, GenericEntityService and the server actions reach it through the
6
+ * `afterEntity*` hooks (entity-hooks.ts), and the one write that skips hooks (`deleteMany`) calls it itself.
7
+ *
8
+ * - Cache Components: `entity:<slug>` is on every cached read of the entity's items (found or not found), so
9
+ * one tag covers the old and the new slug of a rename, an unpublished item and a deleted one. It also
10
+ * drops the sibling items' entries; they are read again by their next visit.
11
+ * - ISR: Next tags a page by its route file path, route group included, so the path is `/(public)<basePath>` with
12
+ * 'layout' (item pages and archive of a base path) or the root item route with 'page'. `(public)` is the group the
13
+ * host generator puts those routes in (scripts/build/registry/host/entity-routes.mjs); a test keeps them equal.
14
+ * - Patterns are tagged `patterns` and are expired by their own writes.
15
+ *
16
+ * Outside a request (a script, a test) Next refuses the call; there is no cache to expire there.
17
+ */
18
+ /** Route group of the generated public routes. Keep equal to the one in scripts/build/registry/host/entity-routes.mjs. */
19
+ export declare const PUBLIC_ROUTE_GROUP = "(public)";
20
+ export declare function expirePublicEntity(config: Pick<EntityConfig, 'slug' | 'access' | 'builder'> | undefined): void;
21
+ //# sourceMappingURL=public-entity-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-entity-cache.d.ts","sourceRoot":"","sources":["../../../src/lib/cache/public-entity-cache.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAIrD;;;;;;;;;;;;;;;GAeG;AACH,0HAA0H;AAC1H,eAAO,MAAM,kBAAkB,aAAa,CAAA;AAE5C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC,GAAG,SAAS,GAAG,IAAI,CAe9G"}
@@ -0,0 +1,25 @@
1
+ import { revalidatePath } from "next/cache";
2
+ import { unstable_rethrow } from "next/navigation";
3
+ import { getEntityBasePath } from "../entities/schema-generator.js";
4
+ import { revalidateTag } from "./revalidate-tag.js";
5
+ const PUBLIC_ROUTE_GROUP = "(public)";
6
+ function expirePublicEntity(config) {
7
+ var _a;
8
+ if (!config) return;
9
+ try {
10
+ if (config.slug === "patterns") revalidateTag("patterns");
11
+ const basePath = getEntityBasePath(config);
12
+ if (!basePath) return;
13
+ revalidateTag(`entity:${config.slug}`);
14
+ const group = `/${PUBLIC_ROUTE_GROUP}`;
15
+ if (basePath === "/") revalidatePath(`${group}${((_a = config.access) == null ? void 0 : _a.allowNestedSlugs) ? "/[...slug]" : "/[slug]"}`, "page");
16
+ else revalidatePath(`${group}${basePath}`, "layout");
17
+ } catch (error) {
18
+ unstable_rethrow(error);
19
+ console.warn(`[public-entity-cache] could not expire the public pages of ${config.slug}: ${error instanceof Error ? error.message : error}`);
20
+ }
21
+ }
22
+ export {
23
+ PUBLIC_ROUTE_GROUP,
24
+ expirePublicEntity
25
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"entity-hooks.d.ts","sourceRoot":"","sources":["../../../src/lib/entities/entity-hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity-hooks.d.ts","sourceRoot":"","sources":["../../../src/lib/entities/entity-hooks.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { getGlobalHooks } from "../plugins/hook-system.js";
2
2
  import { getEntityBySlug, getRegisteredEntities } from "./queries.js";
3
+ import { expirePublicEntity } from "../cache/public-entity-cache.js";
3
4
  const CONFIG_HOOKS_REGISTERED_KEY = "__ENTITY_CONFIG_HOOKS_REGISTERED__";
4
5
  function toHookContext(entityName, operation, data, userId) {
5
6
  return {
@@ -100,6 +101,7 @@ class EntityHookManager {
100
101
  userId,
101
102
  operation: "create"
102
103
  };
104
+ expirePublicEntity(hookData.entityConfig);
103
105
  await this.hooks.doAction(
104
106
  `entity.${entityName}.created`,
105
107
  hookData
@@ -141,6 +143,7 @@ class EntityHookManager {
141
143
  userId,
142
144
  operation: "update"
143
145
  };
146
+ expirePublicEntity(hookData.entityConfig);
144
147
  await this.hooks.doAction(
145
148
  `entity.${entityName}.updated`,
146
149
  hookData
@@ -179,6 +182,7 @@ class EntityHookManager {
179
182
  userId,
180
183
  operation: "delete"
181
184
  };
185
+ expirePublicEntity(hookData.entityConfig);
182
186
  await this.hooks.doAction(
183
187
  `entity.${entityName}.deleted`,
184
188
  hookData
@@ -11,6 +11,8 @@ interface ErrorContext {
11
11
  operation: string;
12
12
  hints?: string[];
13
13
  }
14
+ /** What an MCP client is told when its API key is over its request limit. */
15
+ export declare const RATE_LIMIT_MESSAGE = "Request limit reached. Wait a minute before retrying; for large loads use the batch tools if the entity exposes them.";
14
16
  export declare function translateApiError(result: EntityApiResult, context: ErrorContext): string;
15
17
  export {};
16
18
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/lib/mcp/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM,CA4CxF"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/lib/mcp/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,0HAC0F,CAAA;AAEzH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM,CA4CxF"}
@@ -1,3 +1,4 @@
1
+ const RATE_LIMIT_MESSAGE = "Request limit reached. Wait a minute before retrying; for large loads use the batch tools if the entity exposes them.";
1
2
  function translateApiError(result, context) {
2
3
  var _a;
3
4
  const { status, body } = result;
@@ -17,7 +18,7 @@ function translateApiError(result, context) {
17
18
  case "UNIQUE_CONSTRAINT_VIOLATION":
18
19
  return `A record for ${context.slug} already exists with that unique value${detail}. Look it up with the list tool and update it instead of creating it.`;
19
20
  case "RATE_LIMIT_EXCEEDED":
20
- return "Request limit reached. Wait a minute before retrying; for large loads use the batch tools if the entity exposes them.";
21
+ return RATE_LIMIT_MESSAGE;
21
22
  default:
22
23
  break;
23
24
  }
@@ -62,5 +63,6 @@ function formatDetails(details) {
62
63
  return ` Detail: ${JSON.stringify(details).slice(0, 300)}.`;
63
64
  }
64
65
  export {
66
+ RATE_LIMIT_MESSAGE,
65
67
  translateApiError
66
68
  };
@@ -1,7 +1,7 @@
1
1
  export { createMcpEngine, type McpEngine } from './engine';
2
2
  export { executeEntityOperation } from './executor';
3
3
  export { auditToolCall } from './audit';
4
- export { translateApiError } from './errors';
4
+ export { RATE_LIMIT_MESSAGE, translateApiError } from './errors';
5
5
  export { buildEntitySchemas, type EntitySchemaBundle, type SchemaBuilderContext } from './schema-builder';
6
6
  export { StatelessJsonRpcTransport } from './transport';
7
7
  export { generateEntityTools, toolToken, listArgsToQuery, normalizeDateFields, errorResult, } from './tool-generator';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACzG,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,WAAW,GACZ,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACzG,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,WAAW,GACZ,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,SAAS,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { createMcpEngine } from "./engine.js";
2
2
  import { executeEntityOperation } from "./executor.js";
3
3
  import { auditToolCall } from "./audit.js";
4
- import { translateApiError } from "./errors.js";
4
+ import { RATE_LIMIT_MESSAGE, translateApiError } from "./errors.js";
5
5
  import { buildEntitySchemas } from "./schema-builder.js";
6
6
  import { StatelessJsonRpcTransport } from "./transport.js";
7
7
  import {
@@ -18,6 +18,7 @@ import {
18
18
  export {
19
19
  MUTATION_OPERATIONS,
20
20
  McpToolError,
21
+ RATE_LIMIT_MESSAGE,
21
22
  StatelessJsonRpcTransport,
22
23
  auditToolCall,
23
24
  buildEntitySchemas,
@@ -1 +1 @@
1
- {"version":3,"file":"generic-entity.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/generic-entity.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generic-entity.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/generic-entity.service.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { queryWithRLS, queryOneWithRLS, mutateWithRLS } from "../db.js";
2
2
  import { entityRegistry } from "../entities/registry.js";
3
+ import { expirePublicEntity } from "../cache/public-entity-cache.js";
3
4
  import {
4
5
  beforeEntityCreate,
5
6
  afterEntityCreate,
@@ -570,6 +571,7 @@ class GenericEntityService {
570
571
  params,
571
572
  userId
572
573
  );
574
+ if (result.rowCount > 0) expirePublicEntity(entityConfig);
573
575
  return result.rowCount;
574
576
  }
575
577
  }
@@ -1 +1 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../src/lib/teams/actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAc,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEzD;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgE7E;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAW1D;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAGtD;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,QAAmB,EACzB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,QAAQ,EAAuB,GAC7C,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAQ1B;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,MAAM;;QAEpD,MAAM;UACJ,MAAM;UACN,MAAM;iBACC,MAAM,GAAG,IAAI;aACjB,MAAM;eACJ,MAAM,GAAG,IAAI;cACd,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;eAClB,MAAM;eACN,MAAM;cACP,QAAQ;cACR,MAAM;KAyBnB;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,CAAC,IAAI,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAAC,CAqBlD;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM;QAGR,MAAM;YACF,MAAM;YACN,MAAM;UACR,QAAQ;eACH,MAAM,GAAG,IAAI;cACd,MAAM;eACL,MAAM;eACN,MAAM;cACP,MAAM,GAAG,IAAI;eACZ,MAAM;eACN,MAAM,GAAG,IAAI;KAuB3B;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC,CAclB;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAalB;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../src/lib/teams/actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAc,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEzD;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgE7E;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAW1D;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAGtD;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,QAAmB,EACzB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,QAAQ,EAAuB,GAC7C,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAQ1B;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,MAAM;;QAEpD,MAAM;UACJ,MAAM;UACN,MAAM;iBACC,MAAM,GAAG,IAAI;aACjB,MAAM;eACJ,MAAM,GAAG,IAAI;cACd,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;eAClB,MAAM;eACN,MAAM;cACP,QAAQ;cACR,MAAM;KAyBnB;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,CAAC,IAAI,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAAC,CAqBlD;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM;QAGR,MAAM;YACF,MAAM;YACN,MAAM;UACR,QAAQ;eACH,MAAM,GAAG,IAAI;cACd,MAAM;eACL,MAAM;eACN,MAAM;cACP,MAAM,GAAG,IAAI;eACZ,MAAM;eACN,MAAM,GAAG,IAAI;KAuB3B;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC,CAclB;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
@@ -190,7 +190,6 @@ async function switchActiveTeam(userId, teamId) {
190
190
  if (!isMember) {
191
191
  throw new Error("User is not a member of this team");
192
192
  }
193
- console.log(`User ${userId} switched to team ${teamId}`);
194
193
  return true;
195
194
  }
196
195
  async function deleteTeam(teamId, userId) {
@@ -7,7 +7,6 @@
7
7
  "contactUs": "Kontaktieren Sie uns",
8
8
  "unlimited": "Unbegrenzt",
9
9
  "upgrade": "Upgrade",
10
- "downgrade": "Downgrade",
11
10
  "cancelSubscription": "Abonnement kuendigen",
12
11
  "upgradeDescription": "Waehlen Sie den Tarif, der am besten zu Ihren Beduerfnissen passt",
13
12
  "monthly": "Monatlich",
@@ -159,6 +158,18 @@
159
158
  "failed": "Fehlgeschlagen"
160
159
  },
161
160
 
161
+ "changePlan": {
162
+ "title": "Tarif wechseln",
163
+ "from": "Aktueller Tarif",
164
+ "to": "Neuer Tarif",
165
+ "upgradeDescription": "Ihre Abrechnung wird für den laufenden Zeitraum anteilig angepasst",
166
+ "downgradeDescription": "Bestehende Ressourcen bleiben zugänglich, das Anlegen neuer kann jedoch eingeschränkt sein",
167
+ "downgradeToFreeDescription": "Ihr Abonnement wird gekündigt und Sie wechseln zum kostenlosen Tarif",
168
+ "confirm": "Wechsel bestätigen",
169
+ "cancel": "Abbrechen",
170
+ "confirming": "Tarif wird geändert..."
171
+ },
172
+
162
173
  "quota": {
163
174
  "limitReached": "Sie haben Ihr Limit fuer {entity} erreicht",
164
175
  "limitReachedDetail": "Ihr aktueller Tarif erlaubt keine weiteren {entity}. Fuehren Sie ein Upgrade durch, um weiterzuwachsen.",
@@ -1,4 +1,6 @@
1
1
  {
2
+ "soon": "Bald",
3
+ "comingSoon": "Demnächst verfügbar",
2
4
  "navigation": {
3
5
  "dashboard": "Dashboard",
4
6
  "settings": "Einstellungen",
@@ -18,6 +18,7 @@
18
18
  "home": "Startseite"
19
19
  },
20
20
  "sidebar": {
21
+ "close": "Seitenleiste schließen",
21
22
  "open": "Seitenmenue oeffnen",
22
23
  "label": "Dokumentationsnavigation"
23
24
  },
@@ -1,8 +1,20 @@
1
1
  {
2
2
  "analytics": {
3
- "title": "",
4
- "benefit1": "",
5
- "benefit2": "",
6
- "benefit3": ""
3
+ "title": "Erweiterte Analysen",
4
+ "benefit1": "Echtzeit-Metriken",
5
+ "benefit2": "Benutzerdefinierter Report-Builder",
6
+ "benefit3": "Export nach PDF/CSV"
7
+ },
8
+ "webhooks": {
9
+ "title": "Webhooks",
10
+ "benefit1": "HTTP-Callbacks für Ereignisse",
11
+ "benefit2": "Benutzerdefinierte Payload-Vorlagen",
12
+ "benefit3": "Wiederholungslogik und Protokollierung"
13
+ },
14
+ "automation": {
15
+ "title": "Aufgabenautomatisierung",
16
+ "benefit1": "Automatische Aufgabenerstellung",
17
+ "benefit2": "Geplante Aktionen",
18
+ "benefit3": "Workflow-Trigger"
7
19
  }
8
20
  }
@@ -9,5 +9,10 @@
9
9
  "features": {
10
10
  "title": "Funktionen",
11
11
  "subtitle": "Alles, was Sie brauchen"
12
+ },
13
+ "auth": {
14
+ "signIn": "Anmelden",
15
+ "createAccount": "Konto erstellen",
16
+ "goToDashboard": "Zum Dashboard"
12
17
  }
13
18
  }
@@ -422,14 +422,6 @@ declare const _default: {
422
422
  contactUs: string;
423
423
  unlimited: string;
424
424
  upgrade: string;
425
- downgrade: {
426
- title: string;
427
- description: string;
428
- resource_over: string;
429
- policy: string;
430
- confirm: string;
431
- cancel: string;
432
- };
433
425
  cancelSubscription: string;
434
426
  upgradeDescription: string;
435
427
  monthly: string;
@@ -536,6 +528,14 @@ declare const _default: {
536
528
  featureNotAvailable: string;
537
529
  upgradeRequired: string;
538
530
  };
531
+ downgrade: {
532
+ title: string;
533
+ description: string;
534
+ resource_over: string;
535
+ policy: string;
536
+ confirm: string;
537
+ cancel: string;
538
+ };
539
539
  portal: {
540
540
  manage: string;
541
541
  loading: string;
@@ -563,6 +563,17 @@ declare const _default: {
563
563
  pending: string;
564
564
  failed: string;
565
565
  };
566
+ changePlan: {
567
+ title: string;
568
+ from: string;
569
+ to: string;
570
+ upgradeDescription: string;
571
+ downgradeDescription: string;
572
+ downgradeToFreeDescription: string;
573
+ confirm: string;
574
+ cancel: string;
575
+ confirming: string;
576
+ };
566
577
  quota: {
567
578
  limitReached: string;
568
579
  limitReachedDetail: string;
@@ -598,6 +609,8 @@ declare const _default: {
598
609
  signingOut: string;
599
610
  };
600
611
  readonly common: {
612
+ soon: string;
613
+ comingSoon: string;
601
614
  navigation: {
602
615
  dashboard: string;
603
616
  settings: string;
@@ -1238,6 +1251,7 @@ declare const _default: {
1238
1251
  home: string;
1239
1252
  };
1240
1253
  sidebar: {
1254
+ close: string;
1241
1255
  open: string;
1242
1256
  label: string;
1243
1257
  };
@@ -1356,6 +1370,26 @@ declare const _default: {
1356
1370
  idCopied: string;
1357
1371
  };
1358
1372
  };
1373
+ readonly features: {
1374
+ analytics: {
1375
+ title: string;
1376
+ benefit1: string;
1377
+ benefit2: string;
1378
+ benefit3: string;
1379
+ };
1380
+ webhooks: {
1381
+ title: string;
1382
+ benefit1: string;
1383
+ benefit2: string;
1384
+ benefit3: string;
1385
+ };
1386
+ automation: {
1387
+ title: string;
1388
+ benefit1: string;
1389
+ benefit2: string;
1390
+ benefit3: string;
1391
+ };
1392
+ };
1359
1393
  readonly footer: {
1360
1394
  product: string;
1361
1395
  features: string;
@@ -1390,6 +1424,11 @@ declare const _default: {
1390
1424
  title: string;
1391
1425
  subtitle: string;
1392
1426
  };
1427
+ auth: {
1428
+ signIn: string;
1429
+ createAccount: string;
1430
+ goToDashboard: string;
1431
+ };
1393
1432
  };
1394
1433
  readonly navigation: {
1395
1434
  home: string;
@@ -1893,6 +1932,7 @@ declare const _default: {
1893
1932
  refunded: string;
1894
1933
  };
1895
1934
  pagination: {
1935
+ page: string;
1896
1936
  showing: string;
1897
1937
  previous: string;
1898
1938
  next: string;
@@ -2129,18 +2169,6 @@ declare const _default: {
2129
2169
  readonly teams: {
2130
2170
  title: string;
2131
2171
  description: string;
2132
- entity: {
2133
- description: string;
2134
- plural: string;
2135
- };
2136
- fields: {
2137
- name: string;
2138
- slug: string;
2139
- description: string;
2140
- email: string;
2141
- role: string;
2142
- joinedAt: string;
2143
- };
2144
2172
  types: {
2145
2173
  personal: string;
2146
2174
  work: string;
@@ -2157,6 +2185,10 @@ declare const _default: {
2157
2185
  member: string;
2158
2186
  viewer: string;
2159
2187
  };
2188
+ entity: {
2189
+ description: string;
2190
+ plural: string;
2191
+ };
2160
2192
  actions: {
2161
2193
  create: string;
2162
2194
  creating: string;
@@ -2230,6 +2262,7 @@ declare const _default: {
2230
2262
  joined: string;
2231
2263
  };
2232
2264
  invitations: {
2265
+ expired: string;
2233
2266
  title: string;
2234
2267
  description: string;
2235
2268
  pending: string;
@@ -2247,6 +2280,7 @@ declare const _default: {
2247
2280
  cancelError: string;
2248
2281
  };
2249
2282
  invite: {
2283
+ limitReached: string;
2250
2284
  title: string;
2251
2285
  description: string;
2252
2286
  emailLabel: string;
@@ -2274,11 +2308,6 @@ declare const _default: {
2274
2308
  billing: string;
2275
2309
  danger: string;
2276
2310
  };
2277
- messages: {
2278
- created: string;
2279
- loading: string;
2280
- memberInvited: string;
2281
- };
2282
2311
  errors: {
2283
2312
  notFound: string;
2284
2313
  notMember: string;
@@ -2292,6 +2321,20 @@ declare const _default: {
2292
2321
  title: string;
2293
2322
  description: string;
2294
2323
  };
2324
+ fields: {
2325
+ name: string;
2326
+ slug: string;
2327
+ description: string;
2328
+ email: string;
2329
+ role: string;
2330
+ joinedAt: string;
2331
+ };
2332
+ messages: {
2333
+ cancelling: string;
2334
+ created: string;
2335
+ loading: string;
2336
+ memberInvited: string;
2337
+ };
2295
2338
  };
2296
2339
  readonly validation: {
2297
2340
  email: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/messages/de/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,wBAqBU"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/messages/de/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,wBAsBU"}
@@ -8,6 +8,7 @@ import devtools from "./devtools.json";
8
8
  import docs from "./docs.json";
9
9
  import email from "./email.json";
10
10
  import entities from "./entities.json";
11
+ import features from "./features.json";
11
12
  import footer from "./footer.json";
12
13
  import home from "./home.json";
13
14
  import navigation from "./navigation.json";
@@ -29,6 +30,7 @@ var de_default = {
29
30
  docs,
30
31
  email,
31
32
  entities,
33
+ features,
32
34
  footer,
33
35
  home,
34
36
  navigation,
@@ -8,6 +8,7 @@ import devtools from './devtools.json'
8
8
  import docs from './docs.json'
9
9
  import email from './email.json'
10
10
  import entities from './entities.json'
11
+ import features from './features.json'
11
12
  import footer from './footer.json'
12
13
  import home from './home.json'
13
14
  import navigation from './navigation.json'
@@ -30,6 +31,7 @@ export default {
30
31
  docs,
31
32
  email,
32
33
  entities,
34
+ features,
33
35
  footer,
34
36
  home,
35
37
  navigation,
@@ -368,6 +368,7 @@
368
368
  "refunded": "Erstattet"
369
369
  },
370
370
  "pagination": {
371
+ "page": "Seite {current} von {total}",
371
372
  "showing": "Zeige {start} bis {end} von {total} Rechnungen",
372
373
  "previous": "Zurueck",
373
374
  "next": "Weiter"