@valbuild/shared 0.139.1 → 0.140.0

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,21 @@
1
1
  # @valbuild/shared
2
2
 
3
+ ## 0.140.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#769](https://github.com/valbuild/val/pull/769) [`cb93874`](https://github.com/valbuild/val/commit/cb938748aec15fd0ac3814c1696a2dd78ad63c27) Thanks [@freekh](https://github.com/freekh)! - The project name in the Studio's top bar is now a project switcher, for projects connected to Val Build. It shows the project you are in, the projects you pinned and the five you opened most recently, and searches every project in your organisations. Choosing one opens its Studio.
8
+
9
+ The top bar also gets a **Share** button (an icon on a phone). It shows who is in the project's organisation. Owners can create invite links for a role (each works once and expires after 7 days), see and revoke pending links, and change members' roles. Everyone else can see the members and which owners to ask.
10
+
11
+ The assistant can be set up from the Studio too. Settings › Assistant shows the AI key this project runs on and whether it works. From there you can add a key, update it, remove it, or choose one that already exists: the organisation's, your own, or another project's. The assistant's empty state offers the same when no key is set up. Every key is checked with the provider before it is saved, and once a key is saved the assistant turns on without a reload.
12
+
13
+ The panels are served by Val's content server (`content.val.build/wc/v1/project-switcher.js`, `members.js` and `ai-setup.js`), beside the API they read and write, so they can improve without a Val release. The Studio draws the project name and the Share button itself, and loads the switcher and Share panels only when the button is first hovered or clicked, so opening the Studio fetches nothing extra. If a panel cannot load, for example offline or under a strict Content Security Policy, the click opens the same page in Val Build instead, and the AI setup is a link to the project's AI keys there. If your app sets a CSP, allow `script-src https://content.val.build` to get them.
14
+
15
+ They reach Val Build through a new route on your app's Val server, `/api/val/admin/proxy/*`, which adds the editor's existing Val Build session. That route forwards only to the Studio API on Val's content server (`/v1/studio/*` on `VAL_CONTENT_URL`, `https://content.val.build` by default), and only with the `x-val-studio` header that a cross-site request cannot send.
16
+
17
+ In local development they appear once you have run `val login`, and use that login. Without one the Studio keeps the plain project name, as before; it does not load them just to say you are not logged in.
18
+
3
19
  ## 0.139.1
4
20
 
5
21
  ### Patch Changes
@@ -1,6 +1,12 @@
1
1
  import { z } from "zod";
2
2
  import { type ModuleFilePath } from "@valbuild/core";
3
3
  declare const ModuleFilePath: z.ZodString & z.ZodType<ModuleFilePath, string, z.core.$ZodTypeInternals<ModuleFilePath, string>>;
4
+ /**
5
+ * The header a request to `/admin/proxy` must carry. A cross-site form or
6
+ * `<img>` cannot set a custom header, so without it the proxy cannot be driven
7
+ * with the editor's cookie from another site.
8
+ */
9
+ export declare const VAL_STUDIO_HEADER = "x-val-studio";
4
10
  /**
5
11
  * A patch group: the set of patches one user has chosen to publish.
6
12
  *
@@ -1975,6 +1981,95 @@ export declare const Api: {
1975
1981
  }, z.core.$strip>]>;
1976
1982
  };
1977
1983
  };
1984
+ "/admin/status": {
1985
+ GET: {
1986
+ req: {
1987
+ cookies: {
1988
+ val_session: z.ZodOptional<z.ZodString>;
1989
+ };
1990
+ };
1991
+ res: z.ZodObject<{
1992
+ status: z.ZodLiteral<200>;
1993
+ json: z.ZodObject<{
1994
+ connected: z.ZodBoolean;
1995
+ signIn: z.ZodOptional<z.ZodEnum<{
1996
+ "val-login": "val-login";
1997
+ studio: "studio";
1998
+ }>>;
1999
+ }, z.core.$strip>;
2000
+ }, z.core.$strip>;
2001
+ };
2002
+ };
2003
+ "/admin/proxy": {
2004
+ GET: {
2005
+ req: {
2006
+ path: z.ZodString;
2007
+ rawQuery: z.ZodString;
2008
+ headers: {
2009
+ "x-val-studio": z.ZodOptional<z.ZodString>;
2010
+ };
2011
+ cookies: {
2012
+ val_session: z.ZodOptional<z.ZodString>;
2013
+ };
2014
+ body: z.ZodUnknown;
2015
+ };
2016
+ res: z.ZodObject<{
2017
+ status: z.ZodUnion<readonly [z.ZodLiteral<200>, z.ZodLiteral<400>, z.ZodLiteral<401>, z.ZodLiteral<403>, z.ZodLiteral<404>, z.ZodLiteral<500>]>;
2018
+ json: z.ZodUnknown;
2019
+ }, z.core.$strip>;
2020
+ };
2021
+ POST: {
2022
+ req: {
2023
+ path: z.ZodString;
2024
+ rawQuery: z.ZodString;
2025
+ headers: {
2026
+ "x-val-studio": z.ZodOptional<z.ZodString>;
2027
+ };
2028
+ cookies: {
2029
+ val_session: z.ZodOptional<z.ZodString>;
2030
+ };
2031
+ body: z.ZodUnknown;
2032
+ };
2033
+ res: z.ZodObject<{
2034
+ status: z.ZodUnion<readonly [z.ZodLiteral<200>, z.ZodLiteral<400>, z.ZodLiteral<401>, z.ZodLiteral<403>, z.ZodLiteral<404>, z.ZodLiteral<500>]>;
2035
+ json: z.ZodUnknown;
2036
+ }, z.core.$strip>;
2037
+ };
2038
+ PUT: {
2039
+ req: {
2040
+ path: z.ZodString;
2041
+ rawQuery: z.ZodString;
2042
+ headers: {
2043
+ "x-val-studio": z.ZodOptional<z.ZodString>;
2044
+ };
2045
+ cookies: {
2046
+ val_session: z.ZodOptional<z.ZodString>;
2047
+ };
2048
+ body: z.ZodUnknown;
2049
+ };
2050
+ res: z.ZodObject<{
2051
+ status: z.ZodUnion<readonly [z.ZodLiteral<200>, z.ZodLiteral<400>, z.ZodLiteral<401>, z.ZodLiteral<403>, z.ZodLiteral<404>, z.ZodLiteral<500>]>;
2052
+ json: z.ZodUnknown;
2053
+ }, z.core.$strip>;
2054
+ };
2055
+ DELETE: {
2056
+ req: {
2057
+ path: z.ZodString;
2058
+ rawQuery: z.ZodString;
2059
+ headers: {
2060
+ "x-val-studio": z.ZodOptional<z.ZodString>;
2061
+ };
2062
+ cookies: {
2063
+ val_session: z.ZodOptional<z.ZodString>;
2064
+ };
2065
+ body: z.ZodUnknown;
2066
+ };
2067
+ res: z.ZodObject<{
2068
+ status: z.ZodUnion<readonly [z.ZodLiteral<200>, z.ZodLiteral<400>, z.ZodLiteral<401>, z.ZodLiteral<403>, z.ZodLiteral<404>, z.ZodLiteral<500>]>;
2069
+ json: z.ZodUnknown;
2070
+ }, z.core.$strip>;
2071
+ };
2072
+ };
1978
2073
  };
1979
2074
  /**
1980
2075
  * Extracts the keys of an object where the value is not undefined.
@@ -2008,6 +2103,16 @@ export type ApiEndpoint = {
2008
2103
  body?: z.ZodTypeAny;
2009
2104
  query?: Record<string, z.ZodSchema<ValidQueryParamTypes, string[] | undefined>>;
2010
2105
  cookies?: Record<string, z.ZodSchema<string | undefined>>;
2106
+ /**
2107
+ * Request headers, by lower-case name, parsed the way `cookies` are.
2108
+ * Absent ones are `undefined`.
2109
+ */
2110
+ headers?: Record<string, z.ZodSchema<string | undefined>>;
2111
+ /**
2112
+ * The query string exactly as sent (`?a=1&b=2`, or `""`), for a route that
2113
+ * forwards it rather than reading it. `query` is for routes that read it.
2114
+ */
2115
+ rawQuery?: z.ZodString;
2011
2116
  };
2012
2117
  res: z.ZodSchema<{
2013
2118
  status: number;
@@ -2036,6 +2141,10 @@ export type ServerOf<Api extends ApiGuard> = {
2036
2141
  cookies: Api[Route][Method]["req"]["cookies"] extends Record<string, z.ZodSchema<string | undefined>> ? {
2037
2142
  [key in keyof Api[Route][Method]["req"]["cookies"]]: z.infer<Api[Route][Method]["req"]["cookies"][key]>;
2038
2143
  } : undefined;
2144
+ headers: Api[Route][Method]["req"]["headers"] extends Record<string, z.ZodSchema<string | undefined>> ? {
2145
+ [key in keyof Api[Route][Method]["req"]["headers"]]: z.infer<Api[Route][Method]["req"]["headers"][key]>;
2146
+ } : undefined;
2147
+ rawQuery: Api[Route][Method]["req"]["rawQuery"] extends z.ZodString ? string : undefined;
2039
2148
  }>) => Promise<z.infer<Api[Route][Method]["res"]>> : never;
2040
2149
  };
2041
2150
  };
@@ -1504,6 +1504,35 @@ var GenericError = zod.z.object({
1504
1504
  message: zod.z.string()
1505
1505
  });
1506
1506
 
1507
+ /**
1508
+ * The header a request to `/admin/proxy` must carry. A cross-site form or
1509
+ * `<img>` cannot set a custom header, so without it the proxy cannot be driven
1510
+ * with the editor's cookie from another site.
1511
+ */
1512
+ var VAL_STUDIO_HEADER = "x-val-studio";
1513
+
1514
+ /**
1515
+ * What Val Build answered, mapped onto the statuses this server speaks: a
1516
+ * `code` in the JSON is what the web components act on, so it is passed
1517
+ * through untouched.
1518
+ */
1519
+ var AdminProxyResponse = zod.z.object({
1520
+ status: zod.z.union([zod.z.literal(200), zod.z.literal(400), zod.z.literal(401), zod.z.literal(403), zod.z.literal(404), zod.z.literal(500)]),
1521
+ json: zod.z.unknown()
1522
+ });
1523
+ function adminProxyEndpoint() {
1524
+ return {
1525
+ req: {
1526
+ path: zod.z.string(),
1527
+ rawQuery: zod.z.string(),
1528
+ headers: getSitemapTree._defineProperty({}, VAL_STUDIO_HEADER, zod.z.string().optional()),
1529
+ cookies: getSitemapTree._defineProperty({}, VAL_SESSION_COOKIE, zod.z.string().optional()),
1530
+ body: zod.z.unknown()
1531
+ },
1532
+ res: AdminProxyResponse
1533
+ };
1534
+ }
1535
+
1507
1536
  /**
1508
1537
  * What answered when one URL was opened.
1509
1538
  *
@@ -3446,6 +3475,50 @@ var Api = {
3446
3475
  json: GenericError
3447
3476
  })])
3448
3477
  }
3478
+ },
3479
+ /*
3480
+ * Val Build, on the editor's behalf, for the web components the Studio
3481
+ * mounts from admin.val.build (`<val-project-switcher>` and the ones after
3482
+ * it). `/admin/proxy/projects/overview?current=…` is
3483
+ * `{valBuildUrl}/api/studio/v1/projects/overview?current=…`, with the
3484
+ * editor's token from the session cookie: the component cannot send that
3485
+ * token itself, because it is in an httpOnly cookie only this server reads.
3486
+ *
3487
+ * A pipe, deliberately: the path, the query and the JSON body go through as
3488
+ * they are, so a new component or endpoint on Val Build needs no Val
3489
+ * release. What it does NOT pass through is anything that would let it be
3490
+ * aimed elsewhere — see `adminProxy.ts`.
3491
+ */
3492
+ /*
3493
+ * Whether this Studio has a Val Build credential for the editor: a session,
3494
+ * or in local development a `val login`. The Studio asks before it loads a
3495
+ * web component, so a developer who never logged in sees the plain project
3496
+ * name rather than a component explaining that they are not logged in.
3497
+ */
3498
+ "/admin/status": {
3499
+ GET: {
3500
+ req: {
3501
+ cookies: getSitemapTree._defineProperty({}, VAL_SESSION_COOKIE, zod.z.string().optional())
3502
+ },
3503
+ res: zod.z.object({
3504
+ status: zod.z.literal(200),
3505
+ json: zod.z.object({
3506
+ connected: zod.z["boolean"](),
3507
+ /**
3508
+ * `val-login` on a developer's own checkout, `studio` anywhere the
3509
+ * Studio's sign-in is the way in. Optional: an older server does
3510
+ * not send it.
3511
+ */
3512
+ signIn: zod.z["enum"](["val-login", "studio"]).optional()
3513
+ })
3514
+ })
3515
+ }
3516
+ },
3517
+ "/admin/proxy": {
3518
+ GET: adminProxyEndpoint(),
3519
+ POST: adminProxyEndpoint(),
3520
+ PUT: adminProxyEndpoint(),
3521
+ DELETE: adminProxyEndpoint()
3449
3522
  }
3450
3523
  };
3451
3524
 
@@ -7772,6 +7845,7 @@ exports.VAL_ENABLE_COOKIE_NAME = VAL_ENABLE_COOKIE_NAME;
7772
7845
  exports.VAL_GREEN_RAMP = VAL_GREEN_RAMP;
7773
7846
  exports.VAL_SESSION_COOKIE = VAL_SESSION_COOKIE;
7774
7847
  exports.VAL_STATE_COOKIE = VAL_STATE_COOKIE;
7848
+ exports.VAL_STUDIO_HEADER = VAL_STUDIO_HEADER;
7775
7849
  exports.ValCommit = ValCommit;
7776
7850
  exports.ValDeployment = ValDeployment;
7777
7851
  exports.accentRamp = accentRamp;
@@ -1504,6 +1504,35 @@ var GenericError = zod.z.object({
1504
1504
  message: zod.z.string()
1505
1505
  });
1506
1506
 
1507
+ /**
1508
+ * The header a request to `/admin/proxy` must carry. A cross-site form or
1509
+ * `<img>` cannot set a custom header, so without it the proxy cannot be driven
1510
+ * with the editor's cookie from another site.
1511
+ */
1512
+ var VAL_STUDIO_HEADER = "x-val-studio";
1513
+
1514
+ /**
1515
+ * What Val Build answered, mapped onto the statuses this server speaks: a
1516
+ * `code` in the JSON is what the web components act on, so it is passed
1517
+ * through untouched.
1518
+ */
1519
+ var AdminProxyResponse = zod.z.object({
1520
+ status: zod.z.union([zod.z.literal(200), zod.z.literal(400), zod.z.literal(401), zod.z.literal(403), zod.z.literal(404), zod.z.literal(500)]),
1521
+ json: zod.z.unknown()
1522
+ });
1523
+ function adminProxyEndpoint() {
1524
+ return {
1525
+ req: {
1526
+ path: zod.z.string(),
1527
+ rawQuery: zod.z.string(),
1528
+ headers: getSitemapTree._defineProperty({}, VAL_STUDIO_HEADER, zod.z.string().optional()),
1529
+ cookies: getSitemapTree._defineProperty({}, VAL_SESSION_COOKIE, zod.z.string().optional()),
1530
+ body: zod.z.unknown()
1531
+ },
1532
+ res: AdminProxyResponse
1533
+ };
1534
+ }
1535
+
1507
1536
  /**
1508
1537
  * What answered when one URL was opened.
1509
1538
  *
@@ -3446,6 +3475,50 @@ var Api = {
3446
3475
  json: GenericError
3447
3476
  })])
3448
3477
  }
3478
+ },
3479
+ /*
3480
+ * Val Build, on the editor's behalf, for the web components the Studio
3481
+ * mounts from admin.val.build (`<val-project-switcher>` and the ones after
3482
+ * it). `/admin/proxy/projects/overview?current=…` is
3483
+ * `{valBuildUrl}/api/studio/v1/projects/overview?current=…`, with the
3484
+ * editor's token from the session cookie: the component cannot send that
3485
+ * token itself, because it is in an httpOnly cookie only this server reads.
3486
+ *
3487
+ * A pipe, deliberately: the path, the query and the JSON body go through as
3488
+ * they are, so a new component or endpoint on Val Build needs no Val
3489
+ * release. What it does NOT pass through is anything that would let it be
3490
+ * aimed elsewhere — see `adminProxy.ts`.
3491
+ */
3492
+ /*
3493
+ * Whether this Studio has a Val Build credential for the editor: a session,
3494
+ * or in local development a `val login`. The Studio asks before it loads a
3495
+ * web component, so a developer who never logged in sees the plain project
3496
+ * name rather than a component explaining that they are not logged in.
3497
+ */
3498
+ "/admin/status": {
3499
+ GET: {
3500
+ req: {
3501
+ cookies: getSitemapTree._defineProperty({}, VAL_SESSION_COOKIE, zod.z.string().optional())
3502
+ },
3503
+ res: zod.z.object({
3504
+ status: zod.z.literal(200),
3505
+ json: zod.z.object({
3506
+ connected: zod.z["boolean"](),
3507
+ /**
3508
+ * `val-login` on a developer's own checkout, `studio` anywhere the
3509
+ * Studio's sign-in is the way in. Optional: an older server does
3510
+ * not send it.
3511
+ */
3512
+ signIn: zod.z["enum"](["val-login", "studio"]).optional()
3513
+ })
3514
+ })
3515
+ }
3516
+ },
3517
+ "/admin/proxy": {
3518
+ GET: adminProxyEndpoint(),
3519
+ POST: adminProxyEndpoint(),
3520
+ PUT: adminProxyEndpoint(),
3521
+ DELETE: adminProxyEndpoint()
3449
3522
  }
3450
3523
  };
3451
3524
 
@@ -7772,6 +7845,7 @@ exports.VAL_ENABLE_COOKIE_NAME = VAL_ENABLE_COOKIE_NAME;
7772
7845
  exports.VAL_GREEN_RAMP = VAL_GREEN_RAMP;
7773
7846
  exports.VAL_SESSION_COOKIE = VAL_SESSION_COOKIE;
7774
7847
  exports.VAL_STATE_COOKIE = VAL_STATE_COOKIE;
7848
+ exports.VAL_STUDIO_HEADER = VAL_STUDIO_HEADER;
7775
7849
  exports.ValCommit = ValCommit;
7776
7850
  exports.ValDeployment = ValDeployment;
7777
7851
  exports.accentRamp = accentRamp;
@@ -1497,6 +1497,35 @@ var GenericError = z.object({
1497
1497
  message: z.string()
1498
1498
  });
1499
1499
 
1500
+ /**
1501
+ * The header a request to `/admin/proxy` must carry. A cross-site form or
1502
+ * `<img>` cannot set a custom header, so without it the proxy cannot be driven
1503
+ * with the editor's cookie from another site.
1504
+ */
1505
+ var VAL_STUDIO_HEADER = "x-val-studio";
1506
+
1507
+ /**
1508
+ * What Val Build answered, mapped onto the statuses this server speaks: a
1509
+ * `code` in the JSON is what the web components act on, so it is passed
1510
+ * through untouched.
1511
+ */
1512
+ var AdminProxyResponse = z.object({
1513
+ status: z.union([z.literal(200), z.literal(400), z.literal(401), z.literal(403), z.literal(404), z.literal(500)]),
1514
+ json: z.unknown()
1515
+ });
1516
+ function adminProxyEndpoint() {
1517
+ return {
1518
+ req: {
1519
+ path: z.string(),
1520
+ rawQuery: z.string(),
1521
+ headers: _defineProperty({}, VAL_STUDIO_HEADER, z.string().optional()),
1522
+ cookies: _defineProperty({}, VAL_SESSION_COOKIE, z.string().optional()),
1523
+ body: z.unknown()
1524
+ },
1525
+ res: AdminProxyResponse
1526
+ };
1527
+ }
1528
+
1500
1529
  /**
1501
1530
  * What answered when one URL was opened.
1502
1531
  *
@@ -3439,6 +3468,50 @@ var Api = {
3439
3468
  json: GenericError
3440
3469
  })])
3441
3470
  }
3471
+ },
3472
+ /*
3473
+ * Val Build, on the editor's behalf, for the web components the Studio
3474
+ * mounts from admin.val.build (`<val-project-switcher>` and the ones after
3475
+ * it). `/admin/proxy/projects/overview?current=…` is
3476
+ * `{valBuildUrl}/api/studio/v1/projects/overview?current=…`, with the
3477
+ * editor's token from the session cookie: the component cannot send that
3478
+ * token itself, because it is in an httpOnly cookie only this server reads.
3479
+ *
3480
+ * A pipe, deliberately: the path, the query and the JSON body go through as
3481
+ * they are, so a new component or endpoint on Val Build needs no Val
3482
+ * release. What it does NOT pass through is anything that would let it be
3483
+ * aimed elsewhere — see `adminProxy.ts`.
3484
+ */
3485
+ /*
3486
+ * Whether this Studio has a Val Build credential for the editor: a session,
3487
+ * or in local development a `val login`. The Studio asks before it loads a
3488
+ * web component, so a developer who never logged in sees the plain project
3489
+ * name rather than a component explaining that they are not logged in.
3490
+ */
3491
+ "/admin/status": {
3492
+ GET: {
3493
+ req: {
3494
+ cookies: _defineProperty({}, VAL_SESSION_COOKIE, z.string().optional())
3495
+ },
3496
+ res: z.object({
3497
+ status: z.literal(200),
3498
+ json: z.object({
3499
+ connected: z["boolean"](),
3500
+ /**
3501
+ * `val-login` on a developer's own checkout, `studio` anywhere the
3502
+ * Studio's sign-in is the way in. Optional: an older server does
3503
+ * not send it.
3504
+ */
3505
+ signIn: z["enum"](["val-login", "studio"]).optional()
3506
+ })
3507
+ })
3508
+ }
3509
+ },
3510
+ "/admin/proxy": {
3511
+ GET: adminProxyEndpoint(),
3512
+ POST: adminProxyEndpoint(),
3513
+ PUT: adminProxyEndpoint(),
3514
+ DELETE: adminProxyEndpoint()
3442
3515
  }
3443
3516
  };
3444
3517
 
@@ -7676,4 +7749,4 @@ function parse(schema, body, call) {
7676
7749
  return parsed.data;
7677
7750
  }
7678
7751
 
7679
- export { AA_LARGE, AA_TEXT, Api, BRAND_CONTRAST_PAIRS, BinaryFileRef, CodeOptions, ColorOptions, DEFAULT_ERROR_MESSAGE, DateOptions, ENCODE_DEFAULTS, ENCODE_MIME_TYPE_OF, FileOptions, HistoricalCommit, HistoricalModule, HistoricalPatchSet, HistoryError, ImageEncodeOption, ImageOptions, JSONValue, JSON_ENTRIES_BATCH_MAX, ModuleComparison, NEVER_ENCODED, ParentRef$1 as ParentRef, Patch, PatchBlock, PatchGroup, PatchId, PatchJSON, PublishProtocolError, RAMP_STEPS, RemirrorBr, RemirrorBulletList, RemirrorHeading, RemirrorImage, RemirrorJSON, RemirrorLinkMark, RemirrorListItem, RemirrorOrderedList, RemirrorParagraph, RemirrorText, RemirrorTextMark, RestoreVerdict, RichTextOptions, SCHEMA_SOURCE_FIXES, SerializedArraySchema, SerializedBooleanSchema, SerializedCodeSchema, SerializedColorSchema, SerializedDateSchema, SerializedDateTimeSchema, SerializedDiscriminatedUnionSchema, SerializedEnumSchema, SerializedFileSchema, SerializedImageSchema, SerializedKeyOfSchema, SerializedLiteralSchema, SerializedLocaleSchema, SerializedNumberSchema, SerializedObjectSchema, SerializedRecordSchema, SerializedRichTextSchema, SerializedRouteSchema, SerializedSchema, SerializedSettingsSchema, SerializedStringSchema, SerializedValViewSchema, SharedValConfig, VAL_ENABLE_COOKIE_NAME, VAL_GREEN_RAMP, VAL_SESSION_COOKIE, VAL_STATE_COOKIE, ValCommit, ValDeployment, accentRamp, buildDuplicatePatch, buildEmptyAtPathPatch, buildFileRefValue, buildImageGalleryPatch, buildRemoveImageGalleryEntryPatch, buildSearchIndex, chainHeadOf, checkCompatibility, chooseEncoded, concatModulePath, contrastRatio, createRegExpFromPattern, createSearchIndex, createValClient, declaredLocales, describeContainerAtPath, emptyOf, explainIncompatible, filterBlockingValidationErrors, filterRoutesByPatterns, findSimilar, fitWithin, flattenRichText, getErrorMessageFromUnknownJson, getFilenameFromRef, getInlineImgInfo, getKeyOfRecordAt, getRefParts, getRoutesOf, getRoutesWithModulePaths, getSourceAt, indexModule, isMimeTypeAccepted, isRemoteSchema, isSchemaSourceFixError, isSkippedSource, keyOfRecordPath, levenshtein, localeAt, memoizePerRequest, newestCommitSha, parseArtifacts, parseBuildTarget, parseCancel, parseDeclare, parseDiscard, parseJob, parseNewestCiRun, parsePress, parseProblems, parseProjectSource, parsePromote, parsePublishToken, parseRenew, parseRequestStatus, parseStatus, parseUpdateTarget, parseVerify, partitionValidationErrors, performSearch, relativeLuminance, remirrorToRichTextSource, removeModule, resolveEncodeSettings, resolvePairGround, resolveSchemaSourceFixForError, resolveSchemaSourceFixes, resolveSerializedSchemaAtPath, richTextToRemirror, safeParsePatch, sourcePathOfChild, themeCustomProperties, toolNames, traverseSchemaSource, urlOf, validateRoutePatterns, withExtension };
7752
+ export { AA_LARGE, AA_TEXT, Api, BRAND_CONTRAST_PAIRS, BinaryFileRef, CodeOptions, ColorOptions, DEFAULT_ERROR_MESSAGE, DateOptions, ENCODE_DEFAULTS, ENCODE_MIME_TYPE_OF, FileOptions, HistoricalCommit, HistoricalModule, HistoricalPatchSet, HistoryError, ImageEncodeOption, ImageOptions, JSONValue, JSON_ENTRIES_BATCH_MAX, ModuleComparison, NEVER_ENCODED, ParentRef$1 as ParentRef, Patch, PatchBlock, PatchGroup, PatchId, PatchJSON, PublishProtocolError, RAMP_STEPS, RemirrorBr, RemirrorBulletList, RemirrorHeading, RemirrorImage, RemirrorJSON, RemirrorLinkMark, RemirrorListItem, RemirrorOrderedList, RemirrorParagraph, RemirrorText, RemirrorTextMark, RestoreVerdict, RichTextOptions, SCHEMA_SOURCE_FIXES, SerializedArraySchema, SerializedBooleanSchema, SerializedCodeSchema, SerializedColorSchema, SerializedDateSchema, SerializedDateTimeSchema, SerializedDiscriminatedUnionSchema, SerializedEnumSchema, SerializedFileSchema, SerializedImageSchema, SerializedKeyOfSchema, SerializedLiteralSchema, SerializedLocaleSchema, SerializedNumberSchema, SerializedObjectSchema, SerializedRecordSchema, SerializedRichTextSchema, SerializedRouteSchema, SerializedSchema, SerializedSettingsSchema, SerializedStringSchema, SerializedValViewSchema, SharedValConfig, VAL_ENABLE_COOKIE_NAME, VAL_GREEN_RAMP, VAL_SESSION_COOKIE, VAL_STATE_COOKIE, VAL_STUDIO_HEADER, ValCommit, ValDeployment, accentRamp, buildDuplicatePatch, buildEmptyAtPathPatch, buildFileRefValue, buildImageGalleryPatch, buildRemoveImageGalleryEntryPatch, buildSearchIndex, chainHeadOf, checkCompatibility, chooseEncoded, concatModulePath, contrastRatio, createRegExpFromPattern, createSearchIndex, createValClient, declaredLocales, describeContainerAtPath, emptyOf, explainIncompatible, filterBlockingValidationErrors, filterRoutesByPatterns, findSimilar, fitWithin, flattenRichText, getErrorMessageFromUnknownJson, getFilenameFromRef, getInlineImgInfo, getKeyOfRecordAt, getRefParts, getRoutesOf, getRoutesWithModulePaths, getSourceAt, indexModule, isMimeTypeAccepted, isRemoteSchema, isSchemaSourceFixError, isSkippedSource, keyOfRecordPath, levenshtein, localeAt, memoizePerRequest, newestCommitSha, parseArtifacts, parseBuildTarget, parseCancel, parseDeclare, parseDiscard, parseJob, parseNewestCiRun, parsePress, parseProblems, parseProjectSource, parsePromote, parsePublishToken, parseRenew, parseRequestStatus, parseStatus, parseUpdateTarget, parseVerify, partitionValidationErrors, performSearch, relativeLuminance, remirrorToRichTextSource, removeModule, resolveEncodeSettings, resolvePairGround, resolveSchemaSourceFixForError, resolveSchemaSourceFixes, resolveSerializedSchemaAtPath, richTextToRemirror, safeParsePatch, sourcePathOfChild, themeCustomProperties, toolNames, traverseSchemaSource, urlOf, validateRoutePatterns, withExtension };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@valbuild/shared",
3
- "version": "0.139.1",
3
+ "version": "0.140.0",
4
4
  "private": false,
5
5
  "description": "Val shared types and utilities",
6
6
  "repository": {