@valbuild/core 0.148.7 → 0.150.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/CHANGELOG.md CHANGED
@@ -1,5 +1,54 @@
1
1
  # @valbuild/core
2
2
 
3
+ ## 0.150.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#894](https://github.com/valbuild/val/pull/894) [`9171baa`](https://github.com/valbuild/val/commit/9171baad7beb1b2a355c70724d2339467b126e02) Thanks [@freekh](https://github.com/freekh)! - `val validate` no longer fails a project just because some of its files are
8
+ local while the project stores files remotely (`files: { remote: true }` or
9
+ `.remote()`). Every project made from a template starts like that, and the
10
+ site serves those files from `public/` until they are uploaded. They are now
11
+ reported as **warnings**, grouped into one block per file with the command
12
+ that uploads them:
13
+
14
+ ```
15
+ content/images.val.ts ⚠ 7 warnings (12ms)
16
+ │
17
+ │ ⚠ Local files in a project with remote files. Your site serves them from public/ for now; they move to remote storage when uploaded.
18
+ │
19
+ │ content/images.val.ts:7:5 /public/val/images/image-0_00000.png
20
+ │ content/images.val.ts:8:5 /public/val/images/image-1_00001.png
21
+ │ content/images.val.ts:9:5 /public/val/images/image-2_00002.png
22
+ │ content/images.val.ts:10:5 /public/val/images/image-3_00003.png
23
+ │ content/images.val.ts:11:5 /public/val/images/image-4_00004.png
24
+ │ … 2 more
25
+ │
26
+ │ → val validate --fix uploads them (needs val login)
27
+ │
28
+
29
+ ✔ No validation errors · 7 warnings in 1 file
30
+ ```
31
+
32
+ - `--strict` on `val validate` and `val publish` makes warnings fail too.
33
+ - `val validate --fix` still fails when it cannot upload them, for example
34
+ when you are not logged in.
35
+ - A local file that does not exist is still an error.
36
+ - The language server shows these as warnings.
37
+ - In the Studio, **Check everything** on the Validate page lists them with a
38
+ **Fix** button that uploads them, so a hosted project, which
39
+ has no command line, can move its template's images and files to remote
40
+ storage. That covers images, files and videos (a video's poster, captions
41
+ and HLS stream go up with it), images inside rich text included, and the
42
+ fields that picked a gallery image or a video from a set are updated with
43
+ it.
44
+ - On a hosted project, **Check everything** no longer reports the template's
45
+ images and videos as "The file is gone", and no longer offers a Fix that
46
+ would remove them from their gallery or video set.
47
+
48
+ Fixable errors are now printed with `✘`, like every other error, instead of
49
+ the `⚠` warnings use. They were always errors and still make `val validate`
50
+ fail.
51
+
3
52
  ## 0.148.7
4
53
 
5
54
  ### Patch Changes
@@ -8,6 +8,7 @@ export type { ImageMetadata, ImageEncodeOption, ImageEncodeOptions, } from "./sc
8
8
  export type { FileMetadata } from "./schema/file.js";
9
9
  export type { GalleryVideoOptions, VideoMetadata, VideoOptions, VideoStreamOption, VideoStreamOptions, } from "./schema/video.js";
10
10
  import { videosetEntryVideoSchema } from "./schema/videodir.js";
11
+ import { galleryEntryMediaSchema } from "./schema/galleryEntryMediaSchema.js";
11
12
  export type { VideodirEntryMetadata, VideodirOptions, SerializedVideodirSchema, VideosetEntryMetadata, VideosetOptions, SerializedVideosetSchema, } from "./schema/videodir.js";
12
13
  export type { ImagedirEntryMetadata, ImagedirOptions, SerializedImagedirSchema, } from "./schema/imagedir.js";
13
14
  export type { FiledirEntryMetadata, FiledirOptions, SerializedFiledirSchema, } from "./schema/filedir.js";
@@ -152,6 +153,7 @@ declare const Internal: {
152
153
  core: string;
153
154
  };
154
155
  videosetEntryVideoSchema: typeof videosetEntryVideoSchema;
156
+ galleryEntryMediaSchema: typeof galleryEntryMediaSchema;
155
157
  createViewHandle: typeof createViewHandle;
156
158
  isViewHandle: typeof isViewHandle;
157
159
  resolveViewedModule: typeof resolveViewedModule;
@@ -0,0 +1,26 @@
1
+ import type { SerializedFileSchema } from "./file.js";
2
+ import type { SerializedImageSchema } from "./image.js";
3
+ /**
4
+ * The image or file schema an `s.imagedir()` / `s.filedir()` entry's remote
5
+ * ref is hashed against.
6
+ *
7
+ * A directory's item schema is an object, but a remote ref's validation hash
8
+ * is computed over a MEDIA schema, so one is synthesized from the directory:
9
+ * its `accept`, and for images its `dir`. The one definition every uploader
10
+ * of an entry uses -- the CLI's `--fix`, the Studio's Validate page and the
11
+ * MCP image tool -- because two copies are two hashes for the same file, and
12
+ * a ref hashed with the wrong one uploads and then never validates. The video
13
+ * set's equivalent is `videosetEntryVideoSchema`.
14
+ */
15
+ export declare function galleryEntryMediaSchema(type: "image", record: {
16
+ accept?: string;
17
+ dir?: string;
18
+ }): SerializedImageSchema;
19
+ export declare function galleryEntryMediaSchema(type: "file", record: {
20
+ accept?: string;
21
+ dir?: string;
22
+ }): SerializedFileSchema;
23
+ export declare function galleryEntryMediaSchema(type: "image" | "file", record: {
24
+ accept?: string;
25
+ dir?: string;
26
+ }): SerializedImageSchema | SerializedFileSchema;
@@ -15937,6 +15937,40 @@ function hasMediaSchema(schema) {
15937
15937
  }
15938
15938
  }
15939
15939
 
15940
+ /**
15941
+ * The image or file schema an `s.imagedir()` / `s.filedir()` entry's remote
15942
+ * ref is hashed against.
15943
+ *
15944
+ * A directory's item schema is an object, but a remote ref's validation hash
15945
+ * is computed over a MEDIA schema, so one is synthesized from the directory:
15946
+ * its `accept`, and for images its `dir`. The one definition every uploader
15947
+ * of an entry uses -- the CLI's `--fix`, the Studio's Validate page and the
15948
+ * MCP image tool -- because two copies are two hashes for the same file, and
15949
+ * a ref hashed with the wrong one uploads and then never validates. The video
15950
+ * set's equivalent is `videosetEntryVideoSchema`.
15951
+ */
15952
+
15953
+ function galleryEntryMediaSchema(type, record) {
15954
+ if (type === "file") {
15955
+ return {
15956
+ type: "file",
15957
+ opt: false,
15958
+ options: _objectSpread2({}, record.accept ? {
15959
+ accept: record.accept
15960
+ } : {})
15961
+ };
15962
+ }
15963
+ return {
15964
+ type: "image",
15965
+ opt: false,
15966
+ options: _objectSpread2(_objectSpread2({}, record.accept ? {
15967
+ accept: record.accept
15968
+ } : {}), record.dir ? {
15969
+ dir: record.dir
15970
+ } : {})
15971
+ };
15972
+ }
15973
+
15940
15974
  var DEFAULT_VAL_REMOTE_HOST = "https://remote.val.build";
15941
15975
 
15942
15976
  var PatchError = /*#__PURE__*/_createClass(function PatchError(message) {
@@ -16937,7 +16971,7 @@ function isInlineRender(container) {
16937
16971
 
16938
16972
  var corePackageJson = {
16939
16973
  name: "@valbuild/core",
16940
- version: "0.148.7",
16974
+ version: "0.150.1",
16941
16975
  "private": false,
16942
16976
  description: "Val - supercharged hard-coded content",
16943
16977
  repository: {
@@ -17032,6 +17066,7 @@ var Internal = {
17032
17066
  core: corePackageJson.version
17033
17067
  },
17034
17068
  videosetEntryVideoSchema: videosetEntryVideoSchema,
17069
+ galleryEntryMediaSchema: galleryEntryMediaSchema,
17035
17070
  // A view's read-path plumbing: `Internal` rather than the public surface,
17036
17071
  // because an app never builds or unwraps a handle — it passes one to
17037
17072
  // `useVal`.
@@ -15937,6 +15937,40 @@ function hasMediaSchema(schema) {
15937
15937
  }
15938
15938
  }
15939
15939
 
15940
+ /**
15941
+ * The image or file schema an `s.imagedir()` / `s.filedir()` entry's remote
15942
+ * ref is hashed against.
15943
+ *
15944
+ * A directory's item schema is an object, but a remote ref's validation hash
15945
+ * is computed over a MEDIA schema, so one is synthesized from the directory:
15946
+ * its `accept`, and for images its `dir`. The one definition every uploader
15947
+ * of an entry uses -- the CLI's `--fix`, the Studio's Validate page and the
15948
+ * MCP image tool -- because two copies are two hashes for the same file, and
15949
+ * a ref hashed with the wrong one uploads and then never validates. The video
15950
+ * set's equivalent is `videosetEntryVideoSchema`.
15951
+ */
15952
+
15953
+ function galleryEntryMediaSchema(type, record) {
15954
+ if (type === "file") {
15955
+ return {
15956
+ type: "file",
15957
+ opt: false,
15958
+ options: _objectSpread2({}, record.accept ? {
15959
+ accept: record.accept
15960
+ } : {})
15961
+ };
15962
+ }
15963
+ return {
15964
+ type: "image",
15965
+ opt: false,
15966
+ options: _objectSpread2(_objectSpread2({}, record.accept ? {
15967
+ accept: record.accept
15968
+ } : {}), record.dir ? {
15969
+ dir: record.dir
15970
+ } : {})
15971
+ };
15972
+ }
15973
+
15940
15974
  var DEFAULT_VAL_REMOTE_HOST = "https://remote.val.build";
15941
15975
 
15942
15976
  var PatchError = /*#__PURE__*/_createClass(function PatchError(message) {
@@ -16937,7 +16971,7 @@ function isInlineRender(container) {
16937
16971
 
16938
16972
  var corePackageJson = {
16939
16973
  name: "@valbuild/core",
16940
- version: "0.148.7",
16974
+ version: "0.150.1",
16941
16975
  "private": false,
16942
16976
  description: "Val - supercharged hard-coded content",
16943
16977
  repository: {
@@ -17032,6 +17066,7 @@ var Internal = {
17032
17066
  core: corePackageJson.version
17033
17067
  },
17034
17068
  videosetEntryVideoSchema: videosetEntryVideoSchema,
17069
+ galleryEntryMediaSchema: galleryEntryMediaSchema,
17035
17070
  // A view's read-path plumbing: `Internal` rather than the public surface,
17036
17071
  // because an app never builds or unwraps a handle — it passes one to
17037
17072
  // `useVal`.
@@ -15935,6 +15935,40 @@ function hasMediaSchema(schema) {
15935
15935
  }
15936
15936
  }
15937
15937
 
15938
+ /**
15939
+ * The image or file schema an `s.imagedir()` / `s.filedir()` entry's remote
15940
+ * ref is hashed against.
15941
+ *
15942
+ * A directory's item schema is an object, but a remote ref's validation hash
15943
+ * is computed over a MEDIA schema, so one is synthesized from the directory:
15944
+ * its `accept`, and for images its `dir`. The one definition every uploader
15945
+ * of an entry uses -- the CLI's `--fix`, the Studio's Validate page and the
15946
+ * MCP image tool -- because two copies are two hashes for the same file, and
15947
+ * a ref hashed with the wrong one uploads and then never validates. The video
15948
+ * set's equivalent is `videosetEntryVideoSchema`.
15949
+ */
15950
+
15951
+ function galleryEntryMediaSchema(type, record) {
15952
+ if (type === "file") {
15953
+ return {
15954
+ type: "file",
15955
+ opt: false,
15956
+ options: _objectSpread2({}, record.accept ? {
15957
+ accept: record.accept
15958
+ } : {})
15959
+ };
15960
+ }
15961
+ return {
15962
+ type: "image",
15963
+ opt: false,
15964
+ options: _objectSpread2(_objectSpread2({}, record.accept ? {
15965
+ accept: record.accept
15966
+ } : {}), record.dir ? {
15967
+ dir: record.dir
15968
+ } : {})
15969
+ };
15970
+ }
15971
+
15938
15972
  var DEFAULT_VAL_REMOTE_HOST = "https://remote.val.build";
15939
15973
 
15940
15974
  var PatchError = /*#__PURE__*/_createClass(function PatchError(message) {
@@ -16935,7 +16969,7 @@ function isInlineRender(container) {
16935
16969
 
16936
16970
  var corePackageJson = {
16937
16971
  name: "@valbuild/core",
16938
- version: "0.148.7",
16972
+ version: "0.150.1",
16939
16973
  "private": false,
16940
16974
  description: "Val - supercharged hard-coded content",
16941
16975
  repository: {
@@ -17030,6 +17064,7 @@ var Internal = {
17030
17064
  core: corePackageJson.version
17031
17065
  },
17032
17066
  videosetEntryVideoSchema: videosetEntryVideoSchema,
17067
+ galleryEntryMediaSchema: galleryEntryMediaSchema,
17033
17068
  // A view's read-path plumbing: `Internal` rather than the public surface,
17034
17069
  // because an app never builds or unwraps a handle — it passes one to
17035
17070
  // `useVal`.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var dist_valbuildCore = require('./index-66258256.cjs.dev.js');
5
+ var dist_valbuildCore = require('./index-54542dc6.cjs.dev.js');
6
6
  require('./result-bb1f436e.cjs.dev.js');
7
7
 
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var dist_valbuildCore = require('./index-dfea75c9.cjs.prod.js');
5
+ var dist_valbuildCore = require('./index-71cf4b78.cjs.prod.js');
6
6
  require('./result-787e35f6.cjs.prod.js');
7
7
 
8
8
 
@@ -1,2 +1,2 @@
1
- export { H as ASSISTANT_SETTINGS_MAX_LENGTH, A as ArraySchema, B as BooleanSchema, a4 as CODE_LANGUAGES, a5 as COLOR_FORMATS, a3 as CodeSchema, a2 as ColorSchema, e as DEFAULT_APP_HOST, a6 as DEFAULT_COLOR_FORMAT, D as DEFAULT_CONTENT_HOST, u as DEFAULT_FONT_ACCEPT, f as DEFAULT_STATIC_HOST, o as DEFAULT_VAL_REMOTE_HOST, x as DEFAULT_VIDEO_ACCEPT, y as DEFAULT_VIDEO_RENDITIONS, z as DEFAULT_VIDEO_SEGMENT_DURATION, C as DateSchema, a7 as DateTimeSchema, ad as DiscriminatedUnionSchema, ae as EnumSchema, F as FATAL_ERROR_TYPES, v as FONT_MIME_TYPES, t as FileSchema, G as GenericSelector, r as ImageSchema, I as Internal, a8 as KeyOfSchema, af as LiteralSchema, Z as LocaleSchema, M as ModuleFilePathSep, N as NumberSchema, O as ObjectSchema, R as RecordSchema, ac as RichTextSchema, ab as RouteSchema, Q as SETTINGS_MODULE_CONVENTION, S as Schema, E as SettingsSchema, q as StringSchema, T as THEME_LOGO_DIRECTORY, K as THEME_RADIUS_LENGTHS, J as THEME_RADIUS_STEPS, av as UNSAFE_URL_SCHEMES, V as VAL_EXTENSION, a9 as ValViewSchema, w as VideoSchema, L as assistantAvailability, k as computeSchemaSha, j as computeSourcesSha, h as computeValModuleShas, $ as declaredKeySetOf, p as derefPatch, ar as describeSchemeRejection, ag as deserializeSchema, a1 as discriminatedUnionBranchOf, g as extractValModules, ao as getSourcePathFromRoute, n as hasMediaSchema, l as hasRemoteFileSchema, i as initVal, as as isCheckableScheme, ai as isInlineRender, ap as isPageRouter, U as isRootModuleFilePath, aa as isValViewSource, Y as localeOfValue, X as localeTagError, an as matchRoutePattern, a0 as missingDeclaredKeys, m as modules, aj as parseNextJsRoutePattern, ak as parseTanStackRoutePattern, ah as previewScope, at as rejectScheme, W as resolveSettingsModule, aq as routePatternOf, au as schemeOf, al as tanStackSegmentsOfRoutePath, am as validateUrlAgainstPattern } from './index-52c01907.esm.js';
1
+ export { H as ASSISTANT_SETTINGS_MAX_LENGTH, A as ArraySchema, B as BooleanSchema, a4 as CODE_LANGUAGES, a5 as COLOR_FORMATS, a3 as CodeSchema, a2 as ColorSchema, e as DEFAULT_APP_HOST, a6 as DEFAULT_COLOR_FORMAT, D as DEFAULT_CONTENT_HOST, u as DEFAULT_FONT_ACCEPT, f as DEFAULT_STATIC_HOST, o as DEFAULT_VAL_REMOTE_HOST, x as DEFAULT_VIDEO_ACCEPT, y as DEFAULT_VIDEO_RENDITIONS, z as DEFAULT_VIDEO_SEGMENT_DURATION, C as DateSchema, a7 as DateTimeSchema, ad as DiscriminatedUnionSchema, ae as EnumSchema, F as FATAL_ERROR_TYPES, v as FONT_MIME_TYPES, t as FileSchema, G as GenericSelector, r as ImageSchema, I as Internal, a8 as KeyOfSchema, af as LiteralSchema, Z as LocaleSchema, M as ModuleFilePathSep, N as NumberSchema, O as ObjectSchema, R as RecordSchema, ac as RichTextSchema, ab as RouteSchema, Q as SETTINGS_MODULE_CONVENTION, S as Schema, E as SettingsSchema, q as StringSchema, T as THEME_LOGO_DIRECTORY, K as THEME_RADIUS_LENGTHS, J as THEME_RADIUS_STEPS, av as UNSAFE_URL_SCHEMES, V as VAL_EXTENSION, a9 as ValViewSchema, w as VideoSchema, L as assistantAvailability, k as computeSchemaSha, j as computeSourcesSha, h as computeValModuleShas, $ as declaredKeySetOf, p as derefPatch, ar as describeSchemeRejection, ag as deserializeSchema, a1 as discriminatedUnionBranchOf, g as extractValModules, ao as getSourcePathFromRoute, n as hasMediaSchema, l as hasRemoteFileSchema, i as initVal, as as isCheckableScheme, ai as isInlineRender, ap as isPageRouter, U as isRootModuleFilePath, aa as isValViewSource, Y as localeOfValue, X as localeTagError, an as matchRoutePattern, a0 as missingDeclaredKeys, m as modules, aj as parseNextJsRoutePattern, ak as parseTanStackRoutePattern, ah as previewScope, at as rejectScheme, W as resolveSettingsModule, aq as routePatternOf, au as schemeOf, al as tanStackSegmentsOfRoutePath, am as validateUrlAgainstPattern } from './index-af6ac63c.esm.js';
2
2
  import './result-daff1cae.esm.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@valbuild/core",
3
- "version": "0.148.7",
3
+ "version": "0.150.1",
4
4
  "private": false,
5
5
  "description": "Val - supercharged hard-coded content",
6
6
  "repository": {
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var dist_valbuildCore = require('../../dist/index-66258256.cjs.dev.js');
5
+ var dist_valbuildCore = require('../../dist/index-54542dc6.cjs.dev.js');
6
6
  var result = require('../../dist/result-bb1f436e.cjs.dev.js');
7
7
  var util = require('../../dist/util-b213092b.cjs.dev.js');
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var dist_valbuildCore = require('../../dist/index-dfea75c9.cjs.prod.js');
5
+ var dist_valbuildCore = require('../../dist/index-71cf4b78.cjs.prod.js');
6
6
  var result = require('../../dist/result-787e35f6.cjs.prod.js');
7
7
  var util = require('../../dist/util-030d8a1f.cjs.prod.js');
8
8
 
@@ -1,5 +1,5 @@
1
- import { _ as _typeof, a as _slicedToArray, P as PatchError, s as splitModuleFilePathAndModulePath, b as _createClass, c as _classCallCheck, d as _toConsumableArray } from '../../dist/index-52c01907.esm.js';
2
- export { P as PatchError } from '../../dist/index-52c01907.esm.js';
1
+ import { _ as _typeof, a as _slicedToArray, P as PatchError, s as splitModuleFilePathAndModulePath, b as _createClass, c as _classCallCheck, d as _toConsumableArray } from '../../dist/index-af6ac63c.esm.js';
2
+ export { P as PatchError } from '../../dist/index-af6ac63c.esm.js';
3
3
  import { f as isNonEmpty, e as err, o as ok, m as map, g as flatMap, i as isErr, h as flatMapReduce, j as filterOrElse, k as mapErr, l as map$1, n as all, p as flatten, q as allT } from '../../dist/result-daff1cae.esm.js';
4
4
  import { p as pipe } from '../../dist/util-18613e99.esm.js';
5
5