@vxil/feature-configs 0.9.0 → 0.9.1
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.d.ts +1 -1
- package/dist/index.js +10 -5
- package/package.json +1 -1
- package/src/index.ts +10 -5
package/dist/index.d.ts
CHANGED
|
@@ -362,7 +362,7 @@ export declare const FilesConfigSchema: import("@sinclair/typebox").TObject<{
|
|
|
362
362
|
downloadUrlTtl: import("@sinclair/typebox").TInteger;
|
|
363
363
|
quotas: import("@sinclair/typebox").TObject<{
|
|
364
364
|
maxObjectBytes: import("@sinclair/typebox").TInteger;
|
|
365
|
-
maxTotalBytes: import("@sinclair/typebox").TInteger
|
|
365
|
+
maxTotalBytes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
366
366
|
maxObjectCount: import("@sinclair/typebox").TInteger;
|
|
367
367
|
}>;
|
|
368
368
|
allowedContentTypes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
|
package/dist/index.js
CHANGED
|
@@ -700,11 +700,16 @@ export const FilesConfigSchema = Type.Object({
|
|
|
700
700
|
quotas: Type.Object({
|
|
701
701
|
// maximum caps are a defense-in-depth ceiling on tenant-editable storage —
|
|
702
702
|
// object storage is cheap but the database-resident metadata + abuse aren't
|
|
703
|
-
// (pricing review 2026-07-10). 5 GiB/object, 1 TiB/tenant absolute
|
|
704
|
-
// (Free/Dev 10 GB · Team 50 GB · Business 256 GB) are a follow-up needing the
|
|
705
|
-
// tenant tier threaded to files-v1 (plan tiers).
|
|
703
|
+
// (pricing review 2026-07-10). 5 GiB/object, 1 TiB/tenant absolute.
|
|
706
704
|
maxObjectBytes: Type.Integer({ default: 100 * 1024 * 1024, minimum: 1, maximum: 5 * 1024 * 1024 * 1024 }),
|
|
707
|
-
|
|
705
|
+
// NO default (2026-10-04): UNSET means "the plan's storage ceiling"
|
|
706
|
+
// (control-plane plans.ts FILES_MAX_TOTAL_BYTES_BY_TIER — Free/Developer
|
|
707
|
+
// 10 GiB, Team 50 GiB, Business 256 GiB, Enterprise 1 TiB), resolved by
|
|
708
|
+
// files-v1 where the quota is enforced, so a plan change applies at once.
|
|
709
|
+
// A value is the project's own LOWER cap (above the plan → 422 at config
|
|
710
|
+
// write; a downgrade clamps it). It used to default to 10 GiB on every
|
|
711
|
+
// plan, so a Team project that never set it stayed at 10 GiB.
|
|
712
|
+
maxTotalBytes: Type.Optional(Type.Integer({ minimum: 1, maximum: 1024 * 1024 * 1024 * 1024 })),
|
|
708
713
|
maxObjectCount: Type.Integer({ default: 100000, minimum: 1, maximum: 100_000_000 }),
|
|
709
714
|
}, { default: {} }),
|
|
710
715
|
allowedContentTypes: Type.Array(Type.String(), { default: ['*'], maxItems: 100 }),
|
|
@@ -726,7 +731,7 @@ export const FilesConfigSchema = Type.Object({
|
|
|
726
731
|
enabled: Type.Boolean({ default: false }),
|
|
727
732
|
// per-bucket default; omitted = never expire by default
|
|
728
733
|
defaultExpiresInSeconds: Type.Optional(Type.Integer({ minimum: 60 })),
|
|
729
|
-
sweepCron: Type.String({ default: '
|
|
734
|
+
sweepCron: Type.String({ default: '*/15 * * * *' }), // jobs-v1 TTL sweep schedule (every 15 min since 2026-10-04; was hourly)
|
|
730
735
|
})),
|
|
731
736
|
extractText: Type.Optional(Type.Object({
|
|
732
737
|
enabled: Type.Boolean({ default: false }),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vxil/feature-configs",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "The per-feature configuration schemas and validators behind vxil.config.ts (published for @vxil/cli and @vxil/config).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://vxil.com",
|
package/src/index.ts
CHANGED
|
@@ -823,11 +823,16 @@ export const FilesConfigSchema = Type.Object({
|
|
|
823
823
|
{
|
|
824
824
|
// maximum caps are a defense-in-depth ceiling on tenant-editable storage —
|
|
825
825
|
// object storage is cheap but the database-resident metadata + abuse aren't
|
|
826
|
-
// (pricing review 2026-07-10). 5 GiB/object, 1 TiB/tenant absolute
|
|
827
|
-
// (Free/Dev 10 GB · Team 50 GB · Business 256 GB) are a follow-up needing the
|
|
828
|
-
// tenant tier threaded to files-v1 (plan tiers).
|
|
826
|
+
// (pricing review 2026-07-10). 5 GiB/object, 1 TiB/tenant absolute.
|
|
829
827
|
maxObjectBytes: Type.Integer({ default: 100 * 1024 * 1024, minimum: 1, maximum: 5 * 1024 * 1024 * 1024 }),
|
|
830
|
-
|
|
828
|
+
// NO default (2026-10-04): UNSET means "the plan's storage ceiling"
|
|
829
|
+
// (control-plane plans.ts FILES_MAX_TOTAL_BYTES_BY_TIER — Free/Developer
|
|
830
|
+
// 10 GiB, Team 50 GiB, Business 256 GiB, Enterprise 1 TiB), resolved by
|
|
831
|
+
// files-v1 where the quota is enforced, so a plan change applies at once.
|
|
832
|
+
// A value is the project's own LOWER cap (above the plan → 422 at config
|
|
833
|
+
// write; a downgrade clamps it). It used to default to 10 GiB on every
|
|
834
|
+
// plan, so a Team project that never set it stayed at 10 GiB.
|
|
835
|
+
maxTotalBytes: Type.Optional(Type.Integer({ minimum: 1, maximum: 1024 * 1024 * 1024 * 1024 })),
|
|
831
836
|
maxObjectCount: Type.Integer({ default: 100000, minimum: 1, maximum: 100_000_000 }),
|
|
832
837
|
},
|
|
833
838
|
{ default: {} },
|
|
@@ -854,7 +859,7 @@ export const FilesConfigSchema = Type.Object({
|
|
|
854
859
|
enabled: Type.Boolean({ default: false }),
|
|
855
860
|
// per-bucket default; omitted = never expire by default
|
|
856
861
|
defaultExpiresInSeconds: Type.Optional(Type.Integer({ minimum: 60 })),
|
|
857
|
-
sweepCron: Type.String({ default: '
|
|
862
|
+
sweepCron: Type.String({ default: '*/15 * * * *' }), // jobs-v1 TTL sweep schedule (every 15 min since 2026-10-04; was hourly)
|
|
858
863
|
})),
|
|
859
864
|
extractText: Type.Optional(Type.Object({
|
|
860
865
|
enabled: Type.Boolean({ default: false }),
|