sitero 0.9.0 → 0.9.2

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 (19) hide show
  1. package/dist/export/cms/client/components/index.js +9 -7
  2. package/dist/export/core/server/index.js +5 -4
  3. package/dist/src/cms/client/interfaces/components/resources/file/file-state-icons.js +16 -4
  4. package/dist/src/cms/client/interfaces/components/ui/features/file/file-preview/file-preview-meta.js +8 -5
  5. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/trash/page.js +6 -6
  6. package/dist/src/core/infrastructure/rate-limiter/create-redis-rate-limiter-port.js +5 -4
  7. package/dist/types/export/cms/client/components/index.d.ts +3 -3
  8. package/dist/types/export/cms/client/components/index.d.ts.map +1 -1
  9. package/dist/types/export/core/server/index.d.ts +2 -0
  10. package/dist/types/export/core/server/index.d.ts.map +1 -1
  11. package/dist/types/src/cms/client/interfaces/components/resources/file/file-card.d.ts +2 -2
  12. package/dist/types/src/cms/client/interfaces/components/resources/file/file-card.d.ts.map +1 -1
  13. package/dist/types/src/cms/client/interfaces/components/resources/file/file-state-icons.d.ts +3 -3
  14. package/dist/types/src/cms/client/interfaces/components/resources/file/file-state-icons.d.ts.map +1 -1
  15. package/dist/types/src/cms/client/interfaces/components/ui/features/file/file-preview/file-preview-meta.d.ts +1 -1
  16. package/dist/types/src/cms/client/interfaces/components/ui/features/file/file-preview/file-preview-meta.d.ts.map +1 -1
  17. package/dist/types/src/core/infrastructure/rate-limiter/create-redis-rate-limiter-port.d.ts +2 -0
  18. package/dist/types/src/core/infrastructure/rate-limiter/create-redis-rate-limiter-port.d.ts.map +1 -1
  19. package/package.json +3 -3
@@ -12,6 +12,10 @@ import '../../../../src/shared/client/react-query/client.js';
12
12
  import '@tanstack/react-query';
13
13
  import 'clsx';
14
14
  import 'tailwind-merge';
15
+ export { ResourceCard } from '../../../../src/cms/client/interfaces/components/ui/cards/resource-card.js';
16
+ export { ActionButtonsCard } from '../../../../src/cms/client/interfaces/components/ui/cards/action-buttons-card.js';
17
+ export { FeatureCard } from '../../../../src/cms/client/interfaces/components/ui/cards/feature-card.js';
18
+ import 'intor/react';
15
19
  import 'next/link';
16
20
  import '@radix-ui/react-avatar';
17
21
  import '../../../../src/cms/client/interfaces/components/shadcn/badge.js';
@@ -29,11 +33,6 @@ import 'next-themes';
29
33
  import 'sonner';
30
34
  import '@radix-ui/react-tabs';
31
35
  import '@radix-ui/react-tooltip';
32
- export { Badge } from '../../../../src/cms/client/interfaces/components/ui/display/badge.js';
33
- export { Tick } from '../../../../src/cms/client/interfaces/components/ui/features/tick.js';
34
- export { ActionButtonsCard } from '../../../../src/cms/client/interfaces/components/ui/cards/action-buttons-card.js';
35
- export { FeatureCard } from '../../../../src/cms/client/interfaces/components/ui/cards/feature-card.js';
36
- import 'intor/react';
37
36
  export { Form } from '../../../../src/cms/client/interfaces/components/ui/form/form.js';
38
37
  export { FormField } from '../../../../src/cms/client/interfaces/components/ui/form/form-field.js';
39
38
  export { Field } from '../../../../src/cms/client/interfaces/components/ui/form/field.js';
@@ -45,6 +44,7 @@ export { Checkbox } from '../../../../src/cms/client/interfaces/components/ui/in
45
44
  export { Input } from '../../../../src/cms/client/interfaces/components/ui/inputs/input.js';
46
45
  export { Textarea } from '../../../../src/cms/client/interfaces/components/ui/inputs/textarea.js';
47
46
  export { ControlFields } from '../../../../src/cms/client/interfaces/components/ui/form/control-fields/control-fields.js';
47
+ export { Badge } from '../../../../src/cms/client/interfaces/components/ui/display/badge.js';
48
48
  export { HtmlDisplay } from '../../../../src/cms/client/interfaces/components/ui/display/html-display/html-display.js';
49
49
  export { TextDisplay } from '../../../../src/cms/client/interfaces/components/ui/display/text-display.js';
50
50
  export { PostStateIcons } from '../../../../src/cms/client/interfaces/components/resources/post/post-state-icons.js';
@@ -53,19 +53,21 @@ export { ListContainer } from '../../../../src/cms/client/interfaces/components/
53
53
  export { ActionButton } from '../../../../src/cms/client/interfaces/components/ui/buttons/action-button.js';
54
54
  export { LinkButton } from '../../../../src/cms/client/interfaces/components/ui/buttons/link-button.js';
55
55
  export { ExternalLinkButton } from '../../../../src/cms/client/interfaces/components/ui/buttons/external-link-button.js';
56
- import 'next/navigation';
56
+ export { ReturnButton } from '../../../../src/cms/client/interfaces/components/ui/buttons/return-button.js';
57
57
  export { CopyButton } from '../../../../src/cms/client/interfaces/components/ui/buttons/copy-button.js';
58
+ import 'next/navigation';
58
59
  export { Accordion } from '../../../../src/cms/client/interfaces/components/ui/features/accordion/accordion.js';
59
60
  export { PickDialog } from '../../../../src/cms/client/interfaces/components/ui/features/pick-modal/pick-dialog.js';
60
61
  export { PickerInput } from '../../../../src/cms/client/interfaces/components/ui/features/pick-modal/picker-input.js';
61
62
  export { createSmartImage } from '../../../../src/cms/client/interfaces/components/ui/features/smart-image.js';
63
+ export { Tick } from '../../../../src/cms/client/interfaces/components/ui/features/tick.js';
62
64
  import 'zod';
63
65
  export { createNavbar } from '../../../../src/cms/client/interfaces/components/ui/layouts/navbar/navbar.js';
64
66
  export { NavMain } from '../../../../src/cms/client/interfaces/components/ui/layouts/sidebar/nav-main.js';
65
67
  export { ContentContainer } from '../../../../src/cms/client/interfaces/components/ui/layouts/content-container.js';
66
68
  export { createCmsLayout } from '../../../../src/cms/client/interfaces/components/ui/layouts/cms-layout.js';
67
69
  import '../../../../src/cms/client/infrastructure/admin-session/admin-context.js';
68
- import '../../../../src/cms/client/interfaces/components/ui/inputs/switch-input.js';
70
+ export { SwitchInput } from '../../../../src/cms/client/interfaces/components/ui/inputs/switch-input.js';
69
71
  export { PasswordInput } from '../../../../src/cms/client/interfaces/components/ui/inputs/password-input.js';
70
72
  export { Option, Select } from '../../../../src/cms/client/interfaces/components/ui/inputs/select.js';
71
73
  export { createAllowPostField } from '../../../../src/cms/client/interfaces/components/resources/post/content/types.js';
@@ -1,15 +1,15 @@
1
1
  export { createRedisRateLimiterPort } from '../../../src/core/infrastructure/rate-limiter/create-redis-rate-limiter-port.js';
2
- import 'nodemailer';
3
- import 'react';
4
- import 'react-email';
5
- import 'sitero-domain';
2
+ export { createTransporter } from '../../../src/core/infrastructure/email/delivery.js';
3
+ export { createReactEmailComposer } from '../../../src/core/infrastructure/email/react-email-composer.js';
6
4
  export { createAuthenticationPasswordPort } from '../../../src/core/infrastructure/authentication/authentication-password-port.js';
7
5
  export { createAuthenticationTokenPort } from '../../../src/core/infrastructure/authentication/authentication-token-port.js';
8
6
  export { createRedisCachePort } from '../../../src/core/infrastructure/cache/create-redis-cache-port.js';
9
7
  import 'sitero-server';
8
+ import 'sitero-domain';
10
9
  import '../../../src/core/infrastructure/prisma/admin/include.js';
11
10
  import '../../../prisma/generated/client.js';
12
11
  import 'mime-types';
12
+ import 'react';
13
13
  import 'ua-parser-js';
14
14
  import '../../../src/shared/client/react-query/client.js';
15
15
  import 'react/jsx-runtime';
@@ -21,3 +21,4 @@ import '../../../src/core/infrastructure/prisma/post/include.js';
21
21
  import '../../../src/core/infrastructure/prisma/post/read-scope.js';
22
22
  import '../../../src/core/infrastructure/prisma/page/include.js';
23
23
  export { createSiteroServer } from '../../../src/core/sitero-server/create-sitero-server.js';
24
+ export { getRedisClient } from '../../../src/core/infrastructure/redis/create-redis-client.js';
@@ -1,6 +1,6 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useTranslator } from 'intor/react';
3
- import { Lock, Trash2 } from 'lucide-react';
3
+ import { Lock, Network } from 'lucide-react';
4
4
  import 'mime-types';
5
5
  import 'sitero-domain';
6
6
  import 'react';
@@ -9,10 +9,12 @@ import '../../../../../../shared/client/react-query/client.js';
9
9
  import '@tanstack/react-query';
10
10
  import { cn } from '../../../../../../shared/utils/cn.js';
11
11
 
12
- function FileStateIcons({ file }) {
12
+ function FileStateIcons({
13
+ file
14
+ }) {
13
15
  const { t } = useTranslator();
14
16
  const isLocked = !!file?.isLocked;
15
- const isTrash = !!file?.deletedAt;
17
+ const isInUse = file && "isInUse" in file ? file.isInUse : void 0;
16
18
  return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
17
19
  /* @__PURE__ */ jsx(
18
20
  Lock,
@@ -25,7 +27,17 @@ function FileStateIcons({ file }) {
25
27
  "aria-hidden": false
26
28
  }
27
29
  ),
28
- /* @__PURE__ */ jsx(Trash2, { className: cn(isTrash ? "text-destructive" : "opacity-10") })
30
+ typeof isInUse === "boolean" && /* @__PURE__ */ jsx(
31
+ Network,
32
+ {
33
+ className: cn(isInUse ? "text-warning" : "opacity-10"),
34
+ role: "img",
35
+ "aria-label": t(
36
+ isInUse ? "resources.file.in-use.text" : "resources.file.not-in-use.text"
37
+ ),
38
+ "aria-hidden": false
39
+ }
40
+ )
29
41
  ] });
30
42
  }
31
43
 
@@ -12,7 +12,8 @@ function FilePreviewMeta({
12
12
  height,
13
13
  duration
14
14
  }) {
15
- if (!(width || height) && !duration) return;
15
+ const hasDimensions = !!width && !!height;
16
+ if (!hasDimensions && !duration) return null;
16
17
  return /* @__PURE__ */ jsxs(
17
18
  "span",
18
19
  {
@@ -25,11 +26,13 @@ function FilePreviewMeta({
25
26
  "truncate"
26
27
  ),
27
28
  children: [
28
- width ?? "",
29
- " x ",
30
- height ?? "",
29
+ hasDimensions && /* @__PURE__ */ jsxs("span", { children: [
30
+ width,
31
+ " x ",
32
+ height
33
+ ] }),
31
34
  duration ? /* @__PURE__ */ jsxs(Fragment, { children: [
32
- /* @__PURE__ */ jsx("span", { className: "my-auto h-4 w-px bg-gray-300" }),
35
+ hasDimensions && /* @__PURE__ */ jsx("span", { className: "my-auto h-4 w-px bg-gray-300" }),
33
36
  /* @__PURE__ */ jsxs("span", { children: [
34
37
  duration.toFixed(2),
35
38
  " s"
@@ -71,12 +71,6 @@ function createPostTrashPage({
71
71
  const [selectedId, setSelectedId] = useState(null);
72
72
  const filterId = useSearchParams().get("id");
73
73
  const groups = [
74
- {
75
- type: "POST",
76
- title: t("resources.post.text"),
77
- states: postStates,
78
- setStates: setPostStates
79
- },
80
74
  {
81
75
  type: "CATEGORY",
82
76
  title: t("resources.category.text"),
@@ -93,6 +87,12 @@ function createPostTrashPage({
93
87
  Card: SubcategoryCard,
94
88
  Table: SubcategoryTable
95
89
  },
90
+ {
91
+ type: "POST",
92
+ title: t("resources.post.text"),
93
+ states: postStates,
94
+ setStates: setPostStates
95
+ },
96
96
  {
97
97
  type: "TAG",
98
98
  title: t("resources.tag.text"),
@@ -27,8 +27,8 @@ function toNumber(value) {
27
27
  const number = Number(value);
28
28
  return Number.isFinite(number) ? number : void 0;
29
29
  }
30
- function parseConsumeResult(result) {
31
- if (!Array.isArray(result)) return { allowed: true };
30
+ function parseConsumeResult(result, failureMode) {
31
+ if (!Array.isArray(result)) return { allowed: failureMode === "open" };
32
32
  const allowed = toNumber(result[0]) === 1;
33
33
  if (allowed) return { allowed: true };
34
34
  const retryAfterSeconds = toNumber(result[1]);
@@ -38,6 +38,7 @@ function createRedisRateLimiterPort(input) {
38
38
  const {
39
39
  getClient,
40
40
  namespace,
41
+ failureMode = "open",
41
42
  defaultLimit = DEFAULT_LIMIT,
42
43
  defaultWindowSeconds = DEFAULT_WINDOW_SECONDS,
43
44
  logger
@@ -60,10 +61,10 @@ function createRedisRateLimiterPort(input) {
60
61
  keys: [key],
61
62
  arguments: [String(limit), String(windowSeconds)]
62
63
  });
63
- return parseConsumeResult(result);
64
+ return parseConsumeResult(result, failureMode);
64
65
  } catch (error) {
65
66
  logger?.error("Redis rate limiter error", { error, key });
66
- return { allowed: true };
67
+ return { allowed: failureMode === "open" };
67
68
  }
68
69
  }
69
70
  };
@@ -1,9 +1,9 @@
1
1
  export { createComponents, type Components, } from "../../../../src/cms/client/interfaces/components/create-components";
2
2
  export { createPostContents, type PostContents, } from "../../../../src/cms/client/interfaces/components/create-post-contents";
3
3
  export { type PostCustomControlField, type AllowPostField, type AllowPostFieldParams, type PostFieldRules, type TopicPostFieldRules, createAllowPostField, PostStateIcons, } from "../../../../src/cms/client/interfaces/components/resources/post";
4
- export { ActionButtonsCard, FeatureCard, } from "../../../../src/cms/client/interfaces/components/ui/cards";
5
- export { Input, PasswordInput, Textarea, Select, Option, Checkbox, } from "../../../../src/cms/client/interfaces/components/ui/inputs";
6
- export { ActionButton, LinkButton, ExternalLinkButton, CopyButton, } from "../../../../src/cms/client/interfaces/components/ui/buttons";
4
+ export { ActionButtonsCard, ResourceCard, FeatureCard, } from "../../../../src/cms/client/interfaces/components/ui/cards";
5
+ export { Input, PasswordInput, Textarea, Select, Option, Checkbox, SwitchInput, } from "../../../../src/cms/client/interfaces/components/ui/inputs";
6
+ export { ActionButton, ReturnButton, LinkButton, ExternalLinkButton, CopyButton, } from "../../../../src/cms/client/interfaces/components/ui/buttons";
7
7
  export { HtmlDisplay, TextDisplay, type TextDisplayProps, Badge, } from "../../../../src/cms/client/interfaces/components/ui/display";
8
8
  export { PageHeaderLayout, ListContainer, } from "../../../../src/cms/client/interfaces/components/ui/blocks";
9
9
  export { PickDialog, PickerInput, type PickDialogProps, type PickerInputProps, type PickItem, type PickListProps, type PickManagementProps, createSmartImage, Tick, Accordion, } from "../../../../src/cms/client/interfaces/components/ui/features";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../export/cms/client/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,UAAU,GAChB,MAAM,oEAAoE,CAAC;AAC5E,OAAO,EACL,kBAAkB,EAClB,KAAK,YAAY,GAClB,MAAM,uEAAuE,CAAC;AAG/E,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,oBAAoB,EACpB,cAAc,GACf,MAAM,iEAAiE,CAAC;AAKzE,OAAO,EACL,iBAAiB,EACjB,WAAW,GACZ,MAAM,2DAA2D,CAAC;AAKnE,OAAO,EACL,KAAK,EACL,aAAa,EACb,QAAQ,EACR,MAAM,EACN,MAAM,EACN,QAAQ,GACT,MAAM,4DAA4D,CAAC;AAKpE,OAAO,EACL,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,UAAU,GACX,MAAM,6DAA6D,CAAC;AAKrE,OAAO,EACL,WAAW,EACX,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,GACN,MAAM,6DAA6D,CAAC;AAKrE,OAAO,EACL,gBAAgB,EAChB,aAAa,GACd,MAAM,4DAA4D,CAAC;AAKpE,OAAO,EACL,UAAU,EACV,WAAW,EACX,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,gBAAgB,EAChB,IAAI,EACJ,SAAS,GACV,MAAM,8DAA8D,CAAC;AAKtE,OAAO,EACL,IAAI,EACJ,SAAS,EACT,KAAK,qBAAqB,EAC1B,KAAK,EACL,SAAS,EACT,eAAe,EACf,UAAU,EACV,UAAU,EACV,aAAa,EACb,KAAK,WAAW,GACjB,MAAM,0DAA0D,CAAC;AAKlE,OAAO,EAAE,SAAS,EAAE,MAAM,yDAAyD,CAAC;AAKpF,OAAO,EAEL,YAAY,EAEZ,eAAe,EAEf,KAAK,OAAO,EACZ,OAAO,EACP,OAAO,EACP,cAAc,EAEd,gBAAgB,GACjB,MAAM,6DAA6D,CAAC;AAGrE,OAAO,EACL,qBAAqB,EACrB,KAAK,eAAe,GACrB,MAAM,kEAAkE,CAAC;AAE1E,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,iEAAiE,CAAC;AACzE,YAAY,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,iBAAiB,GACvB,MAAM,uEAAuE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../export/cms/client/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,UAAU,GAChB,MAAM,oEAAoE,CAAC;AAC5E,OAAO,EACL,kBAAkB,EAClB,KAAK,YAAY,GAClB,MAAM,uEAAuE,CAAC;AAG/E,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,oBAAoB,EACpB,cAAc,GACf,MAAM,iEAAiE,CAAC;AAKzE,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,WAAW,GACZ,MAAM,2DAA2D,CAAC;AAKnE,OAAO,EACL,KAAK,EACL,aAAa,EACb,QAAQ,EACR,MAAM,EACN,MAAM,EACN,QAAQ,EACR,WAAW,GACZ,MAAM,4DAA4D,CAAC;AAKpE,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,UAAU,GACX,MAAM,6DAA6D,CAAC;AAKrE,OAAO,EACL,WAAW,EACX,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,GACN,MAAM,6DAA6D,CAAC;AAKrE,OAAO,EACL,gBAAgB,EAChB,aAAa,GACd,MAAM,4DAA4D,CAAC;AAKpE,OAAO,EACL,UAAU,EACV,WAAW,EACX,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,gBAAgB,EAChB,IAAI,EACJ,SAAS,GACV,MAAM,8DAA8D,CAAC;AAKtE,OAAO,EACL,IAAI,EACJ,SAAS,EACT,KAAK,qBAAqB,EAC1B,KAAK,EACL,SAAS,EACT,eAAe,EACf,UAAU,EACV,UAAU,EACV,aAAa,EACb,KAAK,WAAW,GACjB,MAAM,0DAA0D,CAAC;AAKlE,OAAO,EAAE,SAAS,EAAE,MAAM,yDAAyD,CAAC;AAKpF,OAAO,EAEL,YAAY,EAEZ,eAAe,EAEf,KAAK,OAAO,EACZ,OAAO,EACP,OAAO,EACP,cAAc,EAEd,gBAAgB,GACjB,MAAM,6DAA6D,CAAC;AAGrE,OAAO,EACL,qBAAqB,EACrB,KAAK,eAAe,GACrB,MAAM,kEAAkE,CAAC;AAE1E,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,iEAAiE,CAAC;AACzE,YAAY,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,iBAAiB,GACvB,MAAM,uEAAuE,CAAC"}
@@ -1,2 +1,4 @@
1
1
  export { createRedisRateLimiterPort, type CreateRedisRateLimiterPortInput, type RedisRateLimiterLogger, createAuthenticationPasswordPort, createAuthenticationTokenPort, createRedisCachePort, createSiteroServer, type AuthenticationSecurityConfig, type AuthenticationTokenConfig, type CreateSiteroServerInput, } from "../../../src/core";
2
+ export { getRedisClient } from "../../../src/core/infrastructure/redis/create-redis-client";
3
+ export { createTransporter, createReactEmailComposer, } from "../../../src/core/infrastructure/email";
2
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../export/core/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC3B,gCAAgC,EAChC,6BAA6B,EAC7B,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,GAC7B,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../export/core/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC3B,gCAAgC,EAChC,6BAA6B,EAC7B,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,GAC7B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,cAAc,EAAE,MAAM,4DAA4D,CAAC;AAC5F,OAAO,EACL,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,wCAAwC,CAAC"}
@@ -1,7 +1,7 @@
1
- import type { FileCard } from "sitero-server";
1
+ import type { FileCard, FileListCard } from "sitero-server";
2
2
  import { type createSmartImage } from "../../ui/features";
3
3
  interface FileCardProps {
4
- file: FileCard | null;
4
+ file: FileCard | FileListCard | null;
5
5
  openNewTab?: boolean | undefined;
6
6
  isPicked?: boolean;
7
7
  onSelect?: (() => void) | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"file-card.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/cms/client/interfaces/components/resources/file/file-card.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAQ9C,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAM1D,UAAU,aAAa;IACrB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAC7B,UAAU,EACV,UAAU,EACV,gBAAgB,GACjB,EAAE;IACD,UAAU,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,IAC0B,sDAStB,aAAa,6CAqDjB"}
1
+ {"version":3,"file":"file-card.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/cms/client/interfaces/components/resources/file/file-card.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAQ5D,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAM1D,UAAU,aAAa;IACrB,IAAI,EAAE,QAAQ,GAAG,YAAY,GAAG,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAC7B,UAAU,EACV,UAAU,EACV,gBAAgB,GACjB,EAAE;IACD,UAAU,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,IAC0B,sDAStB,aAAa,6CAqDjB"}
@@ -1,5 +1,5 @@
1
- import type { FileCard } from "sitero-server";
2
- export declare function FileStateIcons({ file }: {
3
- file: FileCard | null;
1
+ import type { FileCard, FileListCard } from "sitero-server";
2
+ export declare function FileStateIcons({ file, }: {
3
+ file: FileCard | FileListCard | null;
4
4
  }): import("react/jsx-runtime").JSX.Element;
5
5
  //# sourceMappingURL=file-state-icons.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-state-icons.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/cms/client/interfaces/components/resources/file/file-state-icons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAK9C,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAA;CAAE,2CAoBjE"}
1
+ {"version":3,"file":"file-state-icons.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/cms/client/interfaces/components/resources/file/file-state-icons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAK5D,wBAAgB,cAAc,CAAC,EAC7B,IAAI,GACL,EAAE;IACD,IAAI,EAAE,QAAQ,GAAG,YAAY,GAAG,IAAI,CAAC;CACtC,2CA+BA"}
@@ -2,5 +2,5 @@ export declare function FilePreviewMeta({ width, height, duration, }: {
2
2
  width: number | null;
3
3
  height: number | null;
4
4
  duration: number | null;
5
- }): import("react/jsx-runtime").JSX.Element | undefined;
5
+ }): import("react/jsx-runtime").JSX.Element | null;
6
6
  //# sourceMappingURL=file-preview-meta.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-preview-meta.d.ts","sourceRoot":"","sources":["../../../../../../../../../../../src/cms/client/interfaces/components/ui/features/file/file-preview/file-preview-meta.tsx"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,MAAM,EACN,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,uDAuBA"}
1
+ {"version":3,"file":"file-preview-meta.d.ts","sourceRoot":"","sources":["../../../../../../../../../../../src/cms/client/interfaces/components/ui/features/file/file-preview/file-preview-meta.tsx"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,MAAM,EACN,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,kDA6BA"}
@@ -6,6 +6,8 @@ export interface RedisRateLimiterLogger {
6
6
  export interface CreateRedisRateLimiterPortInput {
7
7
  getClient: () => Promise<Pick<SiteroRedisClient, "eval">>;
8
8
  namespace: string;
9
+ /** Default preserves existing fail-open behavior; public writes should use closed. */
10
+ failureMode?: "open" | "closed" | undefined;
9
11
  defaultLimit?: number | undefined;
10
12
  defaultWindowSeconds?: number | undefined;
11
13
  logger?: RedisRateLimiterLogger | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"create-redis-rate-limiter-port.d.ts","sourceRoot":"","sources":["../../../../../../src/core/infrastructure/rate-limiter/create-redis-rate-limiter-port.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAGV,eAAe,EAChB,MAAM,eAAe,CAAC;AA0BvB,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACpE;AAED,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,MAAM,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;CAC7C;AAoCD,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,+BAA+B,GACrC,eAAe,CAsCjB"}
1
+ {"version":3,"file":"create-redis-rate-limiter-port.d.ts","sourceRoot":"","sources":["../../../../../../src/core/infrastructure/rate-limiter/create-redis-rate-limiter-port.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAGV,eAAe,EAChB,MAAM,eAAe,CAAC;AA0BvB,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACpE;AAED,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,MAAM,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;CAC7C;AAuCD,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,+BAA+B,GACrC,eAAe,CAuCjB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sitero",
3
- "version": "0.9.0",
3
+ "version": "0.9.2",
4
4
  "author": "Yiming Liao",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -111,8 +111,8 @@
111
111
  "ua-parser-js": "2.0.9",
112
112
  "ulid": "3.0.2",
113
113
  "zod": "4.3.6",
114
- "sitero-domain": "0.9.0",
115
- "sitero-server": "0.9.0"
114
+ "sitero-domain": "0.9.2",
115
+ "sitero-server": "0.9.2"
116
116
  },
117
117
  "peerDependencies": {
118
118
  "@aws-sdk/client-s3": "3.913.0",