@sanity/cli-build 6.5.0 → 7.0.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/dist/_exports/_internal/extract.d.ts +12 -23
- package/dist/_exports/_internal/extract.js +1 -2
- package/dist/_exports/_internal/extract.js.map +1 -1
- package/dist/_exports/_internal/manifest.d.ts +2 -2
- package/dist/_exports/_internal/manifest.js.map +1 -1
- package/dist/_exports/_internal/{types-Dj4qu4gT.d.ts → types-BFK33dtE.d.ts} +14 -2
- package/dist/actions/manifest/types.js.map +1 -1
- package/dist/actions/schema/buildStudioSchemasAndManifests.js +2 -1
- package/dist/actions/schema/buildStudioSchemasAndManifests.js.map +1 -1
- package/dist/actions/schema/buildStudioSchemasAndManifests.worker.js +1 -1
- package/dist/actions/schema/buildStudioSchemasAndManifests.worker.js.map +1 -1
- package/dist/actions/schema/{workerBuildStudioSchemasAndManifests.js → buildStudioSchemasAndManifestsWorker.js} +47 -36
- package/dist/actions/schema/buildStudioSchemasAndManifestsWorker.js.map +1 -0
- package/dist/actions/schema/types.js +1 -0
- package/dist/actions/schema/types.js.map +1 -1
- package/package.json +4 -4
- package/dist/actions/schema/workerBuildStudioSchemasAndManifests.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { d as WorkspaceSchemaInput } from "./types-BFK33dtE.js";
|
|
2
2
|
import { ProjectRootResult } from "@sanity/cli-core/types";
|
|
3
3
|
import { SchemaValidationProblemGroup } from "@sanity/types";
|
|
4
|
-
import { StudioManifest
|
|
4
|
+
import { StudioManifest } from "sanity";
|
|
5
5
|
import { z } from "zod/mini";
|
|
6
6
|
import { extractSchema } from "@sanity/schema/_internal";
|
|
7
7
|
declare const buildStudioSchemasAndManifestsWorkerData: z.ZodMiniObject<{
|
|
@@ -9,14 +9,15 @@ declare const buildStudioSchemasAndManifestsWorkerData: z.ZodMiniObject<{
|
|
|
9
9
|
isExternal: z.ZodMiniBoolean<boolean>;
|
|
10
10
|
outPath: z.ZodMiniString<string>;
|
|
11
11
|
projectId: z.ZodMiniString<string>;
|
|
12
|
+
schemaRequired: z.ZodMiniBoolean<boolean>;
|
|
12
13
|
verbose: z.ZodMiniBoolean<boolean>;
|
|
13
14
|
workDir: z.ZodMiniString<string>;
|
|
14
15
|
}, z.core.$strip>;
|
|
15
16
|
type BuildStudioSchemasAndManifestsWorkerData = z.infer<typeof buildStudioSchemasAndManifestsWorkerData>;
|
|
16
17
|
type BuildStudioSchemasAndManifestsWorkerSuccess = {
|
|
18
|
+
schemaInputs: WorkspaceSchemaInput[] | null;
|
|
17
19
|
studioManifest: StudioManifest | null;
|
|
18
20
|
type: 'success';
|
|
19
|
-
workspaceManifests: CreateWorkspaceManifest[];
|
|
20
21
|
};
|
|
21
22
|
/**
|
|
22
23
|
* 1. Extracts the create manifest in dist/static (tar/gzipped with studio)
|
|
@@ -24,6 +25,13 @@ type BuildStudioSchemasAndManifestsWorkerSuccess = {
|
|
|
24
25
|
* 3. Creates a studio manifest (which can be sent to populus)
|
|
25
26
|
*/
|
|
26
27
|
declare function buildStudioSchemasAndManifests(applicationId: string, options: BuildStudioSchemasAndManifestsWorkerData): Promise<BuildStudioSchemasAndManifestsWorkerSuccess>;
|
|
28
|
+
/**
|
|
29
|
+
* This function must only be called from another worker process.
|
|
30
|
+
* @param options - The worker options
|
|
31
|
+
*/
|
|
32
|
+
declare function workerBuildStudioSchemasAndManifests(options: BuildStudioSchemasAndManifestsWorkerData & {
|
|
33
|
+
workspaceSchemaHandler?: (workspaces: WorkspaceSchemaInput[]) => Promise<void>;
|
|
34
|
+
}): Promise<BuildStudioSchemasAndManifestsWorkerSuccess>;
|
|
27
35
|
declare function getAggregatedSeverity(groupOrGroups: SchemaValidationProblemGroup | SchemaValidationProblemGroup[]): 'error' | 'warning';
|
|
28
36
|
declare function formatSchemaValidation(validation: SchemaValidationProblemGroup[]): string;
|
|
29
37
|
interface ExtractOptions {
|
|
@@ -60,18 +68,6 @@ declare function createSchemaPatternMatcher(patterns: string[]): {
|
|
|
60
68
|
* Throws SchemaExtractionError on failure.
|
|
61
69
|
*/
|
|
62
70
|
declare function runSchemaExtraction(extractOptions: Omit<ExtractOptions, 'watchPatterns'>): Promise<ReturnType<typeof extractSchema>>;
|
|
63
|
-
interface UploadSchemaToLexiconOptions {
|
|
64
|
-
projectId: string;
|
|
65
|
-
workDir: string;
|
|
66
|
-
workspaces: Workspace[];
|
|
67
|
-
verbose?: boolean;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Uploads the schemas to Lexicon and returns the studio manifest
|
|
71
|
-
* @param options - The options for the uploadSchemaToLexicon function
|
|
72
|
-
* @returns The studio manifest
|
|
73
|
-
*/
|
|
74
|
-
declare function uploadSchemaToLexicon(options: UploadSchemaToLexiconOptions): Promise<StudioManifest | null>;
|
|
75
71
|
/**
|
|
76
72
|
* Extracts validation problem groups from a SchemaError.
|
|
77
73
|
*/
|
|
@@ -80,13 +76,6 @@ declare class SchemaExtractionError extends Error {
|
|
|
80
76
|
validation?: SchemaValidationProblemGroup[];
|
|
81
77
|
constructor(message: string, validation?: SchemaValidationProblemGroup[]);
|
|
82
78
|
}
|
|
83
|
-
/**
|
|
84
|
-
* This function must only be called from another worker process.
|
|
85
|
-
* @param options - The worker options
|
|
86
|
-
*/
|
|
87
|
-
declare function workerBuildStudioSchemasAndManifests(options: BuildStudioSchemasAndManifestsWorkerData & {
|
|
88
|
-
workspaceManifestsHandler?: (workspaceManifests: CreateWorkspaceManifest[]) => Promise<void>;
|
|
89
|
-
}): Promise<BuildStudioSchemasAndManifestsWorkerSuccess>;
|
|
90
79
|
interface SchemaExtractedTraceAttributes {
|
|
91
80
|
enforceRequiredFields: boolean;
|
|
92
81
|
schemaAllTypesCount: number;
|
|
@@ -113,5 +102,5 @@ interface SchemaDeployTraceData {
|
|
|
113
102
|
declare const SchemaExtractedTrace: import("@sanity/telemetry").DefinedTelemetryTrace<SchemaExtractedTraceAttributes, void>;
|
|
114
103
|
declare const SchemaExtractionWatchModeTrace: import("@sanity/telemetry").DefinedTelemetryTrace<SchemaExtractionWatchModeAttributes, void>;
|
|
115
104
|
declare const SchemaDeploy: import("@sanity/telemetry").DefinedTelemetryTrace<SchemaDeployTraceData, void>;
|
|
116
|
-
export { type ExtractOptions, SchemaDeploy, SchemaExtractedTrace, SchemaExtractionError, SchemaExtractionWatchModeTrace, buildStudioSchemasAndManifests, createSchemaPatternMatcher, extractValidationFromSchemaError, formatSchemaValidation, getAggregatedSeverity, getExtractOptions, runSchemaExtraction,
|
|
105
|
+
export { type ExtractOptions, SchemaDeploy, SchemaExtractedTrace, SchemaExtractionError, SchemaExtractionWatchModeTrace, buildStudioSchemasAndManifests, createSchemaPatternMatcher, extractValidationFromSchemaError, formatSchemaValidation, getAggregatedSeverity, getExtractOptions, runSchemaExtraction, workerBuildStudioSchemasAndManifests };
|
|
117
106
|
//# sourceMappingURL=extract.d.ts.map
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
export { buildStudioSchemasAndManifests } from '../../actions/schema/buildStudioSchemasAndManifests.js';
|
|
2
|
+
export { workerBuildStudioSchemasAndManifests } from '../../actions/schema/buildStudioSchemasAndManifestsWorker.js';
|
|
2
3
|
export { formatSchemaValidation, getAggregatedSeverity } from '../../actions/schema/formatSchemaValidation.js';
|
|
3
4
|
export { getExtractOptions } from '../../actions/schema/getExtractOptions.js';
|
|
4
5
|
export { createSchemaPatternMatcher } from '../../actions/schema/matchSchemaPattern.js';
|
|
5
6
|
export { runSchemaExtraction } from '../../actions/schema/runSchemaExtraction.js';
|
|
6
|
-
export { uploadSchemaToLexicon } from '../../actions/schema/uploadSchemaToLexicon.js';
|
|
7
7
|
export { extractValidationFromSchemaError } from '../../actions/schema/utils/extractValidationFromSchemaError.js';
|
|
8
8
|
export { SchemaExtractionError } from '../../actions/schema/utils/SchemaExtractionError.js';
|
|
9
|
-
export { workerBuildStudioSchemasAndManifests } from '../../actions/schema/workerBuildStudioSchemasAndManifests.js';
|
|
10
9
|
export { SchemaDeploy, SchemaExtractedTrace, SchemaExtractionWatchModeTrace } from '../../telemetry/extractSchema.telemetry.js';
|
|
11
10
|
|
|
12
11
|
//# sourceMappingURL=extract.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/_exports/_internal/extract.ts"],"sourcesContent":["export {buildStudioSchemasAndManifests} from '../../actions/schema/buildStudioSchemasAndManifests.js'\nexport {\n formatSchemaValidation,\n getAggregatedSeverity,\n} from '../../actions/schema/formatSchemaValidation.js'\nexport {type ExtractOptions, getExtractOptions} from '../../actions/schema/getExtractOptions.js'\nexport {createSchemaPatternMatcher} from '../../actions/schema/matchSchemaPattern.js'\nexport {runSchemaExtraction} from '../../actions/schema/runSchemaExtraction.js'\nexport {
|
|
1
|
+
{"version":3,"sources":["../../../src/_exports/_internal/extract.ts"],"sourcesContent":["export {buildStudioSchemasAndManifests} from '../../actions/schema/buildStudioSchemasAndManifests.js'\nexport {workerBuildStudioSchemasAndManifests} from '../../actions/schema/buildStudioSchemasAndManifestsWorker.js'\nexport {\n formatSchemaValidation,\n getAggregatedSeverity,\n} from '../../actions/schema/formatSchemaValidation.js'\nexport {type ExtractOptions, getExtractOptions} from '../../actions/schema/getExtractOptions.js'\nexport {createSchemaPatternMatcher} from '../../actions/schema/matchSchemaPattern.js'\nexport {runSchemaExtraction} from '../../actions/schema/runSchemaExtraction.js'\nexport {extractValidationFromSchemaError} from '../../actions/schema/utils/extractValidationFromSchemaError.js'\nexport {SchemaExtractionError} from '../../actions/schema/utils/SchemaExtractionError.js'\nexport {\n SchemaDeploy,\n SchemaExtractedTrace,\n SchemaExtractionWatchModeTrace,\n} from '../../telemetry/extractSchema.telemetry.js'\n"],"names":["buildStudioSchemasAndManifests","workerBuildStudioSchemasAndManifests","formatSchemaValidation","getAggregatedSeverity","getExtractOptions","createSchemaPatternMatcher","runSchemaExtraction","extractValidationFromSchemaError","SchemaExtractionError","SchemaDeploy","SchemaExtractedTrace","SchemaExtractionWatchModeTrace"],"mappings":"AAAA,SAAQA,8BAA8B,QAAO,yDAAwD;AACrG,SAAQC,oCAAoC,QAAO,+DAA8D;AACjH,SACEC,sBAAsB,EACtBC,qBAAqB,QAChB,iDAAgD;AACvD,SAA6BC,iBAAiB,QAAO,4CAA2C;AAChG,SAAQC,0BAA0B,QAAO,6CAA4C;AACrF,SAAQC,mBAAmB,QAAO,8CAA6C;AAC/E,SAAQC,gCAAgC,QAAO,iEAAgE;AAC/G,SAAQC,qBAAqB,QAAO,sDAAqD;AACzF,SACEC,YAAY,EACZC,oBAAoB,EACpBC,8BAA8B,QACzB,6CAA4C"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as DefaultWorkspaceSchemaId, c as StoredWorkspaceSchema, i as CreateWorkspaceManifest, l as StudioManifest, n as CoreAppManifest, o as ManifestSchemaType, r as CreateManifest, s as SANITY_WORKSPACE_SCHEMA_ID_PREFIX, t as CURRENT_WORKSPACE_SCHEMA_VERSION, u as WorkspaceSchemaId } from "./types-
|
|
1
|
+
import { a as DefaultWorkspaceSchemaId, c as StoredWorkspaceSchema, d as WorkspaceSchemaInput, i as CreateWorkspaceManifest, l as StudioManifest, n as CoreAppManifest, o as ManifestSchemaType, r as CreateManifest, s as SANITY_WORKSPACE_SCHEMA_ID_PREFIX, t as CURRENT_WORKSPACE_SCHEMA_VERSION, u as WorkspaceSchemaId } from "./types-BFK33dtE.js";
|
|
2
2
|
import { Schema } from "@sanity/types";
|
|
3
3
|
import { Workspace } from "sanity";
|
|
4
4
|
interface ExtractCoreAppManifestOptions {
|
|
@@ -65,5 +65,5 @@ declare function extractWorkspaceManifest(workspaces: Workspace[], workDir: stri
|
|
|
65
65
|
* @internal
|
|
66
66
|
*/
|
|
67
67
|
declare function extractManifestSchemaTypes(schema: Schema, workDir: string): Promise<ManifestSchemaType[]>;
|
|
68
|
-
export { CURRENT_WORKSPACE_SCHEMA_VERSION, type CoreAppManifest, type CreateManifest, type CreateWorkspaceManifest, type DefaultWorkspaceSchemaId, MANIFEST_FILENAME, type ManifestSchemaType, SANITY_WORKSPACE_SCHEMA_ID_PREFIX, type StoredWorkspaceSchema, type StudioManifest, type WorkspaceSchemaId, extractCoreAppManifest, extractManifest, extractManifestSchemaTypes, extractWorkspaceManifest, readIconFromPath, resolveTitleUpdate, writeManifestFile };
|
|
68
|
+
export { CURRENT_WORKSPACE_SCHEMA_VERSION, type CoreAppManifest, type CreateManifest, type CreateWorkspaceManifest, type DefaultWorkspaceSchemaId, MANIFEST_FILENAME, type ManifestSchemaType, SANITY_WORKSPACE_SCHEMA_ID_PREFIX, type StoredWorkspaceSchema, type StudioManifest, type WorkspaceSchemaId, type WorkspaceSchemaInput, extractCoreAppManifest, extractManifest, extractManifestSchemaTypes, extractWorkspaceManifest, readIconFromPath, resolveTitleUpdate, writeManifestFile };
|
|
69
69
|
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/_exports/_internal/manifest.ts"],"sourcesContent":["export {\n extractCoreAppManifest,\n readIconFromPath,\n resolveTitleUpdate,\n} from '../../actions/manifest/extractCoreAppManifest.js'\nexport {extractManifest} from '../../actions/manifest/extractManifest.js'\nexport {\n extractManifestSchemaTypes,\n extractWorkspaceManifest,\n} from '../../actions/manifest/extractWorkspaceManifest.js'\nexport {\n type CoreAppManifest,\n type CreateManifest,\n type CreateWorkspaceManifest,\n CURRENT_WORKSPACE_SCHEMA_VERSION,\n type DefaultWorkspaceSchemaId,\n type ManifestSchemaType,\n SANITY_WORKSPACE_SCHEMA_ID_PREFIX,\n type StoredWorkspaceSchema,\n type StudioManifest,\n type WorkspaceSchemaId,\n} from '../../actions/manifest/types.js'\nexport {MANIFEST_FILENAME, writeManifestFile} from '../../actions/manifest/writeManifestFile.js'\n"],"names":["extractCoreAppManifest","readIconFromPath","resolveTitleUpdate","extractManifest","extractManifestSchemaTypes","extractWorkspaceManifest","CURRENT_WORKSPACE_SCHEMA_VERSION","SANITY_WORKSPACE_SCHEMA_ID_PREFIX","MANIFEST_FILENAME","writeManifestFile"],"mappings":"AAAA,SACEA,sBAAsB,EACtBC,gBAAgB,EAChBC,kBAAkB,QACb,mDAAkD;AACzD,SAAQC,eAAe,QAAO,4CAA2C;AACzE,SACEC,0BAA0B,EAC1BC,wBAAwB,QACnB,qDAAoD;AAC3D,SAIEC,gCAAgC,EAGhCC,iCAAiC,
|
|
1
|
+
{"version":3,"sources":["../../../src/_exports/_internal/manifest.ts"],"sourcesContent":["export {\n extractCoreAppManifest,\n readIconFromPath,\n resolveTitleUpdate,\n} from '../../actions/manifest/extractCoreAppManifest.js'\nexport {extractManifest} from '../../actions/manifest/extractManifest.js'\nexport {\n extractManifestSchemaTypes,\n extractWorkspaceManifest,\n} from '../../actions/manifest/extractWorkspaceManifest.js'\nexport {\n type CoreAppManifest,\n type CreateManifest,\n type CreateWorkspaceManifest,\n CURRENT_WORKSPACE_SCHEMA_VERSION,\n type DefaultWorkspaceSchemaId,\n type ManifestSchemaType,\n SANITY_WORKSPACE_SCHEMA_ID_PREFIX,\n type StoredWorkspaceSchema,\n type StudioManifest,\n type WorkspaceSchemaId,\n type WorkspaceSchemaInput,\n} from '../../actions/manifest/types.js'\nexport {MANIFEST_FILENAME, writeManifestFile} from '../../actions/manifest/writeManifestFile.js'\n"],"names":["extractCoreAppManifest","readIconFromPath","resolveTitleUpdate","extractManifest","extractManifestSchemaTypes","extractWorkspaceManifest","CURRENT_WORKSPACE_SCHEMA_VERSION","SANITY_WORKSPACE_SCHEMA_ID_PREFIX","MANIFEST_FILENAME","writeManifestFile"],"mappings":"AAAA,SACEA,sBAAsB,EACtBC,gBAAgB,EAChBC,kBAAkB,QACb,mDAAkD;AACzD,SAAQC,eAAe,QAAO,4CAA2C;AACzE,SACEC,0BAA0B,EAC1BC,wBAAwB,QACnB,qDAAoD;AAC3D,SAIEC,gCAAgC,EAGhCC,iCAAiC,QAK5B,kCAAiC;AACxC,SAAQC,iBAAiB,EAAEC,iBAAiB,QAAO,8CAA6C"}
|
|
@@ -112,5 +112,17 @@ interface StoredWorkspaceSchema extends SanityDocumentLike {
|
|
|
112
112
|
};
|
|
113
113
|
tag?: string;
|
|
114
114
|
}
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
/**
|
|
116
|
+
* Workspace metadata + pre-extracted manifest schema for deployment.
|
|
117
|
+
* The schema must already be in ManifestSchemaType[] format (extracted from
|
|
118
|
+
* the live Schema object before any structured clone boundary).
|
|
119
|
+
*/
|
|
120
|
+
interface WorkspaceSchemaInput {
|
|
121
|
+
dataset: string;
|
|
122
|
+
manifestSchema: ManifestSchemaType[];
|
|
123
|
+
name: string;
|
|
124
|
+
projectId: string;
|
|
125
|
+
title?: string;
|
|
126
|
+
}
|
|
127
|
+
export { DefaultWorkspaceSchemaId as a, StoredWorkspaceSchema as c, WorkspaceSchemaInput as d, CreateWorkspaceManifest as i, StudioManifest$1 as l, CoreAppManifest as n, ManifestSchemaType as o, CreateManifest as r, SANITY_WORKSPACE_SCHEMA_ID_PREFIX as s, CURRENT_WORKSPACE_SCHEMA_VERSION as t, WorkspaceSchemaId as u };
|
|
128
|
+
//# sourceMappingURL=types-BFK33dtE.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/manifest/types.ts"],"sourcesContent":["import {type SanityDocumentLike} from '@sanity/types'\nimport {type MediaLibraryConfig} from 'sanity'\nimport {z} from 'zod/mini'\n\nexport const SANITY_WORKSPACE_SCHEMA_ID_PREFIX = '_.schemas'\nexport const CURRENT_WORKSPACE_SCHEMA_VERSION = '2025-05-01'\n\nexport type ManifestSerializable =\n | boolean\n | ManifestSerializable[]\n | number\n | string\n | {[k: string]: ManifestSerializable}\n\nexport interface CreateManifest {\n createdAt: string\n studioVersion: string | null\n version: number\n workspaces: ManifestWorkspaceFile[]\n}\n\n// The studio/app manifest contract lives in `@sanity/cli-core` so the CLI and\n// the workbench dev-server registry validate against the same schemas without\n// depending on each other.\nexport {type CoreAppManifest, coreAppManifestSchema, type StudioManifest} from '@sanity/cli-core'\n\nexport interface ManifestWorkspaceFile extends Omit<CreateWorkspaceManifest, 'schema' | 'tools'> {\n schema: string // filename\n tools: string // filename\n}\n\nexport interface CreateWorkspaceManifest {\n basePath: string\n dataset: string\n /**\n * returns null in the case of the icon not being able to be stringified\n */\n icon: string | null\n name: string\n projectId: string\n schema: ManifestSchemaType[]\n tools: ManifestTool[]\n\n mediaLibrary?: MediaLibraryConfig\n subtitle?: string\n title?: string\n}\n\nexport interface ManifestSchemaType {\n name: string\n type: string\n\n deprecated?: {\n reason: string\n }\n fields?: ManifestField[]\n fieldsets?: ManifestFieldset[]\n hidden?: 'conditional' | boolean\n lists?: ManifestTitledValue[]\n //portable text\n marks?: {\n annotations?: ManifestArrayMember[]\n decorators?: ManifestTitledValue[]\n }\n of?: ManifestArrayMember[]\n options?: Record<string, ManifestSerializable>\n preview?: {\n select: Record<string, string>\n }\n readOnly?: 'conditional' | boolean\n styles?: ManifestTitledValue[]\n title?: string\n to?: ManifestReferenceMember[]\n validation?: ManifestValidationGroup[]\n\n // userland (assignable to ManifestSerializable | undefined)\n // not included to add some typesafty to extractManifest\n // [index: string]: unknown\n}\n\nexport interface ManifestFieldset {\n [index: string]: ManifestSerializable | undefined\n name: string\n\n title?: string\n}\n\nexport interface ManifestTitledValue {\n value: string\n\n title?: string\n}\n\ntype ManifestArrayMember = Omit<ManifestSchemaType, 'name'> & {name?: string}\ntype ManifestReferenceMember = Omit<ManifestSchemaType, 'name'> & {name?: string}\nexport type ManifestField = ManifestSchemaType & {fieldset?: string}\n\nexport interface ManifestValidationGroup {\n rules: ManifestValidationRule[]\n\n level?: 'error' | 'info' | 'warning'\n message?: string\n}\n\nexport type ManifestValidationRule = {\n [index: string]: ManifestSerializable | undefined\n constraint?: ManifestSerializable\n flag: string\n}\n\nexport interface ManifestTool {\n /**\n * returns null in the case of the icon not being able to be stringified\n */\n icon: string | null\n name: string\n title: string\n type: string | null\n}\n\nexport type DefaultWorkspaceSchemaId = `${typeof SANITY_WORKSPACE_SCHEMA_ID_PREFIX}.${string}`\ntype PrefixedWorkspaceSchemaId = `${DefaultWorkspaceSchemaId}.${string}`\nexport type WorkspaceSchemaId = DefaultWorkspaceSchemaId | PrefixedWorkspaceSchemaId\n\nexport interface StoredWorkspaceSchema extends SanityDocumentLike {\n _id: WorkspaceSchemaId\n _type: 'system.schema'\n /**\n * The API expects JSON coming in, but will store a string to save on attribute paths.\n * Consumers must use JSON.parse on the value, but we deploy to the API using ManifestSchemaType[]\n */\n schema: ManifestSchemaType[] | string\n /* api-like version string: date at which the format had a meaningful change */\n version: typeof CURRENT_WORKSPACE_SCHEMA_VERSION | undefined\n workspace: {\n name: string\n title?: string\n }\n\n tag?: string\n}\n\nexport const extractManifestWorkerData = z.object({configPath: z.string(), workDir: z.string()})\n\nexport type ExtractManifestWorkerData = z.infer<typeof extractManifestWorkerData>\n"],"names":["z","SANITY_WORKSPACE_SCHEMA_ID_PREFIX","CURRENT_WORKSPACE_SCHEMA_VERSION","coreAppManifestSchema","extractManifestWorkerData","object","configPath","string","workDir"],"mappings":"AAEA,SAAQA,CAAC,QAAO,WAAU;AAE1B,OAAO,MAAMC,oCAAoC,YAAW;AAC5D,OAAO,MAAMC,mCAAmC,aAAY;AAgB5D,8EAA8E;AAC9E,8EAA8E;AAC9E,2BAA2B;AAC3B,SAA8BC,qBAAqB,QAA4B,mBAAkB;AAsHjG,OAAO,MAAMC,4BAA4BJ,EAAEK,MAAM,CAAC;IAACC,YAAYN,EAAEO,MAAM;IAAIC,SAASR,EAAEO,MAAM;AAAE,GAAE"}
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/manifest/types.ts"],"sourcesContent":["import {type SanityDocumentLike} from '@sanity/types'\nimport {type MediaLibraryConfig} from 'sanity'\nimport {z} from 'zod/mini'\n\nexport const SANITY_WORKSPACE_SCHEMA_ID_PREFIX = '_.schemas'\nexport const CURRENT_WORKSPACE_SCHEMA_VERSION = '2025-05-01'\n\nexport type ManifestSerializable =\n | boolean\n | ManifestSerializable[]\n | number\n | string\n | {[k: string]: ManifestSerializable}\n\nexport interface CreateManifest {\n createdAt: string\n studioVersion: string | null\n version: number\n workspaces: ManifestWorkspaceFile[]\n}\n\n// The studio/app manifest contract lives in `@sanity/cli-core` so the CLI and\n// the workbench dev-server registry validate against the same schemas without\n// depending on each other.\nexport {type CoreAppManifest, coreAppManifestSchema, type StudioManifest} from '@sanity/cli-core'\n\nexport interface ManifestWorkspaceFile extends Omit<CreateWorkspaceManifest, 'schema' | 'tools'> {\n schema: string // filename\n tools: string // filename\n}\n\nexport interface CreateWorkspaceManifest {\n basePath: string\n dataset: string\n /**\n * returns null in the case of the icon not being able to be stringified\n */\n icon: string | null\n name: string\n projectId: string\n schema: ManifestSchemaType[]\n tools: ManifestTool[]\n\n mediaLibrary?: MediaLibraryConfig\n subtitle?: string\n title?: string\n}\n\nexport interface ManifestSchemaType {\n name: string\n type: string\n\n deprecated?: {\n reason: string\n }\n fields?: ManifestField[]\n fieldsets?: ManifestFieldset[]\n hidden?: 'conditional' | boolean\n lists?: ManifestTitledValue[]\n //portable text\n marks?: {\n annotations?: ManifestArrayMember[]\n decorators?: ManifestTitledValue[]\n }\n of?: ManifestArrayMember[]\n options?: Record<string, ManifestSerializable>\n preview?: {\n select: Record<string, string>\n }\n readOnly?: 'conditional' | boolean\n styles?: ManifestTitledValue[]\n title?: string\n to?: ManifestReferenceMember[]\n validation?: ManifestValidationGroup[]\n\n // userland (assignable to ManifestSerializable | undefined)\n // not included to add some typesafty to extractManifest\n // [index: string]: unknown\n}\n\nexport interface ManifestFieldset {\n [index: string]: ManifestSerializable | undefined\n name: string\n\n title?: string\n}\n\nexport interface ManifestTitledValue {\n value: string\n\n title?: string\n}\n\ntype ManifestArrayMember = Omit<ManifestSchemaType, 'name'> & {name?: string}\ntype ManifestReferenceMember = Omit<ManifestSchemaType, 'name'> & {name?: string}\nexport type ManifestField = ManifestSchemaType & {fieldset?: string}\n\nexport interface ManifestValidationGroup {\n rules: ManifestValidationRule[]\n\n level?: 'error' | 'info' | 'warning'\n message?: string\n}\n\nexport type ManifestValidationRule = {\n [index: string]: ManifestSerializable | undefined\n constraint?: ManifestSerializable\n flag: string\n}\n\nexport interface ManifestTool {\n /**\n * returns null in the case of the icon not being able to be stringified\n */\n icon: string | null\n name: string\n title: string\n type: string | null\n}\n\nexport type DefaultWorkspaceSchemaId = `${typeof SANITY_WORKSPACE_SCHEMA_ID_PREFIX}.${string}`\ntype PrefixedWorkspaceSchemaId = `${DefaultWorkspaceSchemaId}.${string}`\nexport type WorkspaceSchemaId = DefaultWorkspaceSchemaId | PrefixedWorkspaceSchemaId\n\nexport interface StoredWorkspaceSchema extends SanityDocumentLike {\n _id: WorkspaceSchemaId\n _type: 'system.schema'\n /**\n * The API expects JSON coming in, but will store a string to save on attribute paths.\n * Consumers must use JSON.parse on the value, but we deploy to the API using ManifestSchemaType[]\n */\n schema: ManifestSchemaType[] | string\n /* api-like version string: date at which the format had a meaningful change */\n version: typeof CURRENT_WORKSPACE_SCHEMA_VERSION | undefined\n workspace: {\n name: string\n title?: string\n }\n\n tag?: string\n}\n\nexport const extractManifestWorkerData = z.object({configPath: z.string(), workDir: z.string()})\n\nexport type ExtractManifestWorkerData = z.infer<typeof extractManifestWorkerData>\n\n/**\n * Workspace metadata + pre-extracted manifest schema for deployment.\n * The schema must already be in ManifestSchemaType[] format (extracted from\n * the live Schema object before any structured clone boundary).\n */\nexport interface WorkspaceSchemaInput {\n dataset: string\n manifestSchema: ManifestSchemaType[]\n name: string\n projectId: string\n\n title?: string\n}\n"],"names":["z","SANITY_WORKSPACE_SCHEMA_ID_PREFIX","CURRENT_WORKSPACE_SCHEMA_VERSION","coreAppManifestSchema","extractManifestWorkerData","object","configPath","string","workDir"],"mappings":"AAEA,SAAQA,CAAC,QAAO,WAAU;AAE1B,OAAO,MAAMC,oCAAoC,YAAW;AAC5D,OAAO,MAAMC,mCAAmC,aAAY;AAgB5D,8EAA8E;AAC9E,8EAA8E;AAC9E,2BAA2B;AAC3B,SAA8BC,qBAAqB,QAA4B,mBAAkB;AAsHjG,OAAO,MAAMC,4BAA4BJ,EAAEK,MAAM,CAAC;IAACC,YAAYN,EAAEO,MAAM;IAAIC,SAASR,EAAEO,MAAM;AAAE,GAAE"}
|
|
@@ -7,7 +7,7 @@ const debug = subdebug('buildStudioSchemasAndManifests');
|
|
|
7
7
|
* 2. Uploads the schema to lexicon
|
|
8
8
|
* 3. Creates a studio manifest (which can be sent to populus)
|
|
9
9
|
*/ export async function buildStudioSchemasAndManifests(applicationId, options) {
|
|
10
|
-
const { configPath, isExternal, outPath, projectId, verbose, workDir } = options;
|
|
10
|
+
const { configPath, isExternal, outPath, projectId, schemaRequired, verbose, workDir } = options;
|
|
11
11
|
const trace = getCliTelemetry().trace(SchemaBuild, {
|
|
12
12
|
// If the studio is externally hosted, we don't need to extract the manifest
|
|
13
13
|
extractManifest: !isExternal,
|
|
@@ -31,6 +31,7 @@ const debug = subdebug('buildStudioSchemasAndManifests');
|
|
|
31
31
|
isExternal,
|
|
32
32
|
outPath,
|
|
33
33
|
projectId,
|
|
34
|
+
schemaRequired,
|
|
34
35
|
verbose,
|
|
35
36
|
workDir
|
|
36
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/schema/buildStudioSchemasAndManifests.ts"],"sourcesContent":["import {getCliTelemetry, studioWorkerTask, subdebug} from '@sanity/cli-core'\nimport {type SchemaValidationProblemGroup} from '@sanity/types'\nimport {type StudioManifest} from 'sanity'\n\nimport {SchemaBuild} from '../../telemetry/extractSchema.telemetry.js'\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/schema/buildStudioSchemasAndManifests.ts"],"sourcesContent":["import {getCliTelemetry, studioWorkerTask, subdebug} from '@sanity/cli-core'\nimport {type SchemaValidationProblemGroup} from '@sanity/types'\nimport {type StudioManifest} from 'sanity'\n\nimport {SchemaBuild} from '../../telemetry/extractSchema.telemetry.js'\nimport {WorkspaceSchemaInput} from '../manifest/types.js'\nimport {type BuildStudioSchemasAndManifestsWorkerData} from './types.js'\nimport {SchemaExtractionError} from './utils/SchemaExtractionError.js'\n\nexport type BuildStudioSchemasAndManifestsWorkerSuccess = {\n schemaInputs: WorkspaceSchemaInput[] | null\n studioManifest: StudioManifest | null\n type: 'success'\n}\ntype BuildStudioSchemasAndManifestsWorkerError = {\n error: string\n type: 'error'\n validation?: SchemaValidationProblemGroup[]\n}\nexport type BuildStudioSchemasAndManifestsWorkerMessage =\n | BuildStudioSchemasAndManifestsWorkerError\n | BuildStudioSchemasAndManifestsWorkerSuccess\n\nconst debug = subdebug('buildStudioSchemasAndManifests')\n\n/**\n * 1. Extracts the create manifest in dist/static (tar/gzipped with studio)\n * 2. Uploads the schema to lexicon\n * 3. Creates a studio manifest (which can be sent to populus)\n */\nexport async function buildStudioSchemasAndManifests(\n applicationId: string,\n options: BuildStudioSchemasAndManifestsWorkerData,\n): Promise<BuildStudioSchemasAndManifestsWorkerSuccess> {\n const {configPath, isExternal, outPath, projectId, schemaRequired, verbose, workDir} = options\n\n const trace = getCliTelemetry().trace(SchemaBuild, {\n // If the studio is externally hosted, we don't need to extract the manifest\n extractManifest: !isExternal,\n manifestDir: outPath,\n })\n\n try {\n trace.start()\n const result = await studioWorkerTask<BuildStudioSchemasAndManifestsWorkerMessage>(\n new URL('buildStudioSchemasAndManifests.worker.js', import.meta.url),\n {\n applicationId,\n env: {\n ...process.env,\n // Workers don't inherit TTY state — propagate color support from parent\n ...(process.stdout.isTTY && !process.env.NO_COLOR ? {FORCE_COLOR: '1'} : {}),\n },\n name: 'buildStudioSchemasAndManifests',\n studioRootPath: workDir,\n workerData: {\n configPath,\n isExternal,\n outPath,\n projectId,\n schemaRequired,\n verbose,\n workDir,\n } satisfies BuildStudioSchemasAndManifestsWorkerData,\n },\n )\n\n debug('Result %o', result)\n\n // If the schema is required, we throw an error\n if (result.type === 'error') {\n throw new SchemaExtractionError(result.error, result.validation)\n }\n\n trace.complete()\n return result\n } catch (err) {\n trace.error(err)\n throw err\n }\n}\n"],"names":["getCliTelemetry","studioWorkerTask","subdebug","SchemaBuild","SchemaExtractionError","debug","buildStudioSchemasAndManifests","applicationId","options","configPath","isExternal","outPath","projectId","schemaRequired","verbose","workDir","trace","extractManifest","manifestDir","start","result","URL","url","env","process","stdout","isTTY","NO_COLOR","FORCE_COLOR","name","studioRootPath","workerData","type","error","validation","complete","err"],"mappings":"AAAA,SAAQA,eAAe,EAAEC,gBAAgB,EAAEC,QAAQ,QAAO,mBAAkB;AAI5E,SAAQC,WAAW,QAAO,6CAA4C;AAGtE,SAAQC,qBAAqB,QAAO,mCAAkC;AAgBtE,MAAMC,QAAQH,SAAS;AAEvB;;;;CAIC,GACD,OAAO,eAAeI,+BACpBC,aAAqB,EACrBC,OAAiD;IAEjD,MAAM,EAACC,UAAU,EAAEC,UAAU,EAAEC,OAAO,EAAEC,SAAS,EAAEC,cAAc,EAAEC,OAAO,EAAEC,OAAO,EAAC,GAAGP;IAEvF,MAAMQ,QAAQhB,kBAAkBgB,KAAK,CAACb,aAAa;QACjD,4EAA4E;QAC5Ec,iBAAiB,CAACP;QAClBQ,aAAaP;IACf;IAEA,IAAI;QACFK,MAAMG,KAAK;QACX,MAAMC,SAAS,MAAMnB,iBACnB,IAAIoB,IAAI,4CAA4C,YAAYC,GAAG,GACnE;YACEf;YACAgB,KAAK;gBACH,GAAGC,QAAQD,GAAG;gBACd,wEAAwE;gBACxE,GAAIC,QAAQC,MAAM,CAACC,KAAK,IAAI,CAACF,QAAQD,GAAG,CAACI,QAAQ,GAAG;oBAACC,aAAa;gBAAG,IAAI,CAAC,CAAC;YAC7E;YACAC,MAAM;YACNC,gBAAgBf;YAChBgB,YAAY;gBACVtB;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;YACF;QACF;QAGFV,MAAM,aAAae;QAEnB,+CAA+C;QAC/C,IAAIA,OAAOY,IAAI,KAAK,SAAS;YAC3B,MAAM,IAAI5B,sBAAsBgB,OAAOa,KAAK,EAAEb,OAAOc,UAAU;QACjE;QAEAlB,MAAMmB,QAAQ;QACd,OAAOf;IACT,EAAE,OAAOgB,KAAK;QACZpB,MAAMiB,KAAK,CAACG;QACZ,MAAMA;IACR;AACF"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { isMainThread, parentPort, workerData } from 'node:worker_threads';
|
|
2
2
|
import { subdebug } from '@sanity/cli-core';
|
|
3
|
+
import { workerBuildStudioSchemasAndManifests } from './buildStudioSchemasAndManifestsWorker.js';
|
|
3
4
|
import { buildStudioSchemasAndManifestsWorkerData } from './types.js';
|
|
4
5
|
import { extractValidationFromSchemaError } from './utils/extractValidationFromSchemaError.js';
|
|
5
|
-
import { workerBuildStudioSchemasAndManifests } from './workerBuildStudioSchemasAndManifests.js';
|
|
6
6
|
const debug = subdebug('buildStudioSchemasAndManifests.worker');
|
|
7
7
|
async function main() {
|
|
8
8
|
if (isMainThread || !parentPort) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/schema/buildStudioSchemasAndManifests.worker.ts"],"sourcesContent":["import {isMainThread, parentPort, workerData} from 'node:worker_threads'\n\nimport {subdebug} from '@sanity/cli-core'\n\nimport {type BuildStudioSchemasAndManifestsWorkerMessage} from './buildStudioSchemasAndManifests.js'\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/schema/buildStudioSchemasAndManifests.worker.ts"],"sourcesContent":["import {isMainThread, parentPort, workerData} from 'node:worker_threads'\n\nimport {subdebug} from '@sanity/cli-core'\n\nimport {type BuildStudioSchemasAndManifestsWorkerMessage} from './buildStudioSchemasAndManifests.js'\nimport {workerBuildStudioSchemasAndManifests} from './buildStudioSchemasAndManifestsWorker.js'\nimport {buildStudioSchemasAndManifestsWorkerData} from './types.js'\nimport {extractValidationFromSchemaError} from './utils/extractValidationFromSchemaError.js'\n\nconst debug = subdebug('buildStudioSchemasAndManifests.worker')\n\nasync function main() {\n if (isMainThread || !parentPort) {\n throw new Error('Should only be run in a worker!')\n }\n\n const options = buildStudioSchemasAndManifestsWorkerData.parse(workerData)\n\n try {\n const message = await workerBuildStudioSchemasAndManifests(options)\n\n parentPort.postMessage(message)\n } catch (error) {\n debug('Error deploying studio schemas and manifests', error)\n const validation = await extractValidationFromSchemaError(error, options.workDir)\n parentPort.postMessage({\n error: error instanceof Error ? error.message : String(error),\n type: 'error',\n validation,\n } satisfies BuildStudioSchemasAndManifestsWorkerMessage)\n }\n}\n\nawait main()\n"],"names":["isMainThread","parentPort","workerData","subdebug","workerBuildStudioSchemasAndManifests","buildStudioSchemasAndManifestsWorkerData","extractValidationFromSchemaError","debug","main","Error","options","parse","message","postMessage","error","validation","workDir","String","type"],"mappings":"AAAA,SAAQA,YAAY,EAAEC,UAAU,EAAEC,UAAU,QAAO,sBAAqB;AAExE,SAAQC,QAAQ,QAAO,mBAAkB;AAGzC,SAAQC,oCAAoC,QAAO,4CAA2C;AAC9F,SAAQC,wCAAwC,QAAO,aAAY;AACnE,SAAQC,gCAAgC,QAAO,8CAA6C;AAE5F,MAAMC,QAAQJ,SAAS;AAEvB,eAAeK;IACb,IAAIR,gBAAgB,CAACC,YAAY;QAC/B,MAAM,IAAIQ,MAAM;IAClB;IAEA,MAAMC,UAAUL,yCAAyCM,KAAK,CAACT;IAE/D,IAAI;QACF,MAAMU,UAAU,MAAMR,qCAAqCM;QAE3DT,WAAWY,WAAW,CAACD;IACzB,EAAE,OAAOE,OAAO;QACdP,MAAM,gDAAgDO;QACtD,MAAMC,aAAa,MAAMT,iCAAiCQ,OAAOJ,QAAQM,OAAO;QAChFf,WAAWY,WAAW,CAAC;YACrBC,OAAOA,iBAAiBL,QAAQK,MAAMF,OAAO,GAAGK,OAAOH;YACvDI,MAAM;YACNH;QACF;IACF;AACF;AAEA,MAAMP"}
|
|
@@ -11,7 +11,7 @@ const debug = subdebug('buildStudioSchemasAndManifests.worker');
|
|
|
11
11
|
if (isMainThread) {
|
|
12
12
|
throw new Error('workerBuildStudioSchemasAndManifests should only be called from a worker thread');
|
|
13
13
|
}
|
|
14
|
-
const { configPath, isExternal, outPath, projectId, verbose, workDir,
|
|
14
|
+
const { configPath, isExternal, outPath, projectId, schemaRequired, verbose, workDir, workspaceSchemaHandler } = options;
|
|
15
15
|
debug('Building studio schemas and manifests from config path %s', configPath);
|
|
16
16
|
const workspaces = await getStudioWorkspaces(configPath);
|
|
17
17
|
debug('Workspaces %o', workspaces);
|
|
@@ -22,33 +22,42 @@ const debug = subdebug('buildStudioSchemasAndManifests.worker');
|
|
|
22
22
|
// still live. Both writeWorkspaceToDist and updateWorkspacesSchemas consume the result.
|
|
23
23
|
const workspaceManifests = await extractWorkspaceManifest(workspaces, workDir);
|
|
24
24
|
debug('Handling build for %s', isExternal ? 'external' : 'internal');
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
projectId,
|
|
41
|
-
verbose,
|
|
42
|
-
workDir,
|
|
43
|
-
workspaceManifests,
|
|
44
|
-
workspaceManifestsHandler,
|
|
45
|
-
workspaces
|
|
46
|
-
});
|
|
25
|
+
async function workspaceManifestsHandler(workspaceManifests) {
|
|
26
|
+
if (!isExternal || schemaRequired) {
|
|
27
|
+
const schemaInputs = workspaceManifests.map((manifest)=>({
|
|
28
|
+
dataset: manifest.dataset,
|
|
29
|
+
manifestSchema: manifest.schema,
|
|
30
|
+
name: manifest.name,
|
|
31
|
+
projectId: manifest.projectId,
|
|
32
|
+
title: manifest.title
|
|
33
|
+
}));
|
|
34
|
+
if (workspaceSchemaHandler) {
|
|
35
|
+
await workspaceSchemaHandler(schemaInputs);
|
|
36
|
+
}
|
|
37
|
+
return schemaInputs;
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
47
40
|
}
|
|
41
|
+
const result = isExternal ? await handleExternalStudio({
|
|
42
|
+
projectId,
|
|
43
|
+
verbose,
|
|
44
|
+
workDir,
|
|
45
|
+
workspaceManifests,
|
|
46
|
+
workspaceManifestsHandler,
|
|
47
|
+
workspaces
|
|
48
|
+
}) : await handleInternalStudio({
|
|
49
|
+
outPath,
|
|
50
|
+
projectId,
|
|
51
|
+
verbose,
|
|
52
|
+
workDir,
|
|
53
|
+
workspaceManifests,
|
|
54
|
+
workspaceManifestsHandler,
|
|
55
|
+
workspaces
|
|
56
|
+
});
|
|
48
57
|
return {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
58
|
+
schemaInputs: result.schemaInputs,
|
|
59
|
+
studioManifest: result.studioManifest,
|
|
60
|
+
type: 'success'
|
|
52
61
|
};
|
|
53
62
|
}
|
|
54
63
|
/**
|
|
@@ -56,18 +65,19 @@ const debug = subdebug('buildStudioSchemasAndManifests.worker');
|
|
|
56
65
|
* 1. Update the workspace schemas to the /schemas endpoint IF --schema-required is passed
|
|
57
66
|
* 2. Call the workspace manifest handler if provided to update server-side schemas
|
|
58
67
|
*/ async function handleExternalStudio({ projectId, verbose, workDir, workspaceManifests, workspaceManifestsHandler, workspaces }) {
|
|
59
|
-
const [studioManifest] = await Promise.all([
|
|
68
|
+
const [studioManifest, schemaInputs] = await Promise.all([
|
|
60
69
|
uploadSchemaToLexicon({
|
|
61
70
|
projectId,
|
|
62
71
|
verbose,
|
|
63
72
|
workDir,
|
|
64
73
|
workspaces
|
|
65
74
|
}),
|
|
66
|
-
workspaceManifestsHandler
|
|
75
|
+
workspaceManifestsHandler(workspaceManifests)
|
|
67
76
|
]);
|
|
68
|
-
return
|
|
77
|
+
return {
|
|
78
|
+
schemaInputs,
|
|
69
79
|
studioManifest
|
|
70
|
-
|
|
80
|
+
};
|
|
71
81
|
}
|
|
72
82
|
/**
|
|
73
83
|
*
|
|
@@ -78,23 +88,24 @@ const debug = subdebug('buildStudioSchemasAndManifests.worker');
|
|
|
78
88
|
*
|
|
79
89
|
* @param workspaces - The workspaces to deploy
|
|
80
90
|
*/ async function handleInternalStudio({ outPath, projectId, verbose, workDir, workspaceManifests, workspaceManifestsHandler, workspaces }) {
|
|
81
|
-
const [studioManifest] = await Promise.all([
|
|
91
|
+
const [studioManifest, schemaInputs] = await Promise.all([
|
|
82
92
|
uploadSchemaToLexicon({
|
|
83
93
|
projectId,
|
|
84
94
|
verbose,
|
|
85
95
|
workDir,
|
|
86
96
|
workspaces
|
|
87
97
|
}),
|
|
98
|
+
workspaceManifestsHandler(workspaceManifests),
|
|
88
99
|
writeManifestFile({
|
|
89
100
|
outPath,
|
|
90
101
|
workDir,
|
|
91
102
|
workspaceManifests
|
|
92
|
-
})
|
|
93
|
-
workspaceManifestsHandler && workspaceManifestsHandler(workspaceManifests)
|
|
103
|
+
})
|
|
94
104
|
]);
|
|
95
|
-
return
|
|
105
|
+
return {
|
|
106
|
+
schemaInputs,
|
|
96
107
|
studioManifest
|
|
97
|
-
|
|
108
|
+
};
|
|
98
109
|
}
|
|
99
110
|
|
|
100
|
-
//# sourceMappingURL=
|
|
111
|
+
//# sourceMappingURL=buildStudioSchemasAndManifestsWorker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/schema/buildStudioSchemasAndManifestsWorker.ts"],"sourcesContent":["import {isMainThread} from 'node:worker_threads'\n\nimport {getStudioWorkspaces, subdebug} from '@sanity/cli-core'\nimport {type StudioManifest, type Workspace} from 'sanity'\n\nimport {extractWorkspaceManifest} from '../manifest/extractWorkspaceManifest.js'\nimport {type CreateWorkspaceManifest, WorkspaceSchemaInput} from '../manifest/types.js'\nimport {writeManifestFile} from '../manifest/writeManifestFile.js'\nimport {type BuildStudioSchemasAndManifestsWorkerSuccess} from './buildStudioSchemasAndManifests.js'\nimport {type BuildStudioSchemasAndManifestsWorkerData} from './types.js'\nimport {uploadSchemaToLexicon} from './uploadSchemaToLexicon.js'\n\nconst debug = subdebug('buildStudioSchemasAndManifests.worker')\n\n/**\n * This function must only be called from another worker process.\n * @param options - The worker options\n */\nexport async function workerBuildStudioSchemasAndManifests(\n options: BuildStudioSchemasAndManifestsWorkerData & {\n workspaceSchemaHandler?: (workspaces: WorkspaceSchemaInput[]) => Promise<void>\n },\n): Promise<BuildStudioSchemasAndManifestsWorkerSuccess> {\n if (isMainThread) {\n throw new Error(\n 'workerBuildStudioSchemasAndManifests should only be called from a worker thread',\n )\n }\n\n const {\n configPath,\n isExternal,\n outPath,\n projectId,\n schemaRequired,\n verbose,\n workDir,\n workspaceSchemaHandler,\n } = options\n\n debug('Building studio schemas and manifests from config path %s', configPath)\n const workspaces = await getStudioWorkspaces(configPath)\n debug('Workspaces %o', workspaces)\n\n if (workspaces.length === 0) {\n throw new Error('No workspaces found')\n }\n\n // Extract manifest data (including ManifestSchemaType[]) once, while Schema objects are\n // still live. Both writeWorkspaceToDist and updateWorkspacesSchemas consume the result.\n const workspaceManifests = await extractWorkspaceManifest(workspaces, workDir)\n\n debug('Handling build for %s', isExternal ? 'external' : 'internal')\n\n async function workspaceManifestsHandler(\n workspaceManifests: CreateWorkspaceManifest[],\n ): Promise<WorkspaceSchemaInput[] | null> {\n if (!isExternal || schemaRequired) {\n const schemaInputs: WorkspaceSchemaInput[] = workspaceManifests.map((manifest) => ({\n dataset: manifest.dataset,\n manifestSchema: manifest.schema,\n name: manifest.name,\n projectId: manifest.projectId,\n title: manifest.title,\n }))\n\n if (workspaceSchemaHandler) {\n await workspaceSchemaHandler(schemaInputs)\n }\n\n return schemaInputs\n }\n\n return null\n }\n\n const result = isExternal\n ? await handleExternalStudio({\n projectId,\n verbose,\n workDir,\n workspaceManifests,\n workspaceManifestsHandler,\n workspaces,\n })\n : await handleInternalStudio({\n outPath,\n projectId,\n verbose,\n workDir,\n workspaceManifests,\n workspaceManifestsHandler,\n workspaces,\n })\n\n return {\n schemaInputs: result.schemaInputs,\n studioManifest: result.studioManifest,\n type: 'success',\n }\n}\n\ntype HandleStudioResult = {\n schemaInputs: WorkspaceSchemaInput[] | null\n studioManifest: StudioManifest | null\n}\n\n/**\n * External deployments:\n * 1. Update the workspace schemas to the /schemas endpoint IF --schema-required is passed\n * 2. Call the workspace manifest handler if provided to update server-side schemas\n */\nasync function handleExternalStudio({\n projectId,\n verbose,\n workDir,\n workspaceManifests,\n workspaceManifestsHandler,\n workspaces,\n}: {\n projectId: string\n verbose: boolean\n workDir: string\n workspaceManifests: CreateWorkspaceManifest[]\n workspaceManifestsHandler: (\n workspaceManifests: CreateWorkspaceManifest[],\n ) => Promise<WorkspaceSchemaInput[] | null>\n workspaces: Workspace[]\n}): Promise<HandleStudioResult> {\n const [studioManifest, schemaInputs] = await Promise.all([\n uploadSchemaToLexicon({\n projectId,\n verbose,\n workDir,\n workspaces,\n }),\n workspaceManifestsHandler(workspaceManifests),\n ])\n\n return {schemaInputs, studioManifest}\n}\n\n/**\n *\n * Internal deployments:\n * 1. Write the workspace manifests to the dist directory\n * 2. Update the workspaces schemas to the /schemas endpoint\n * 3. Call the workspace manifest handler if provided to update server-side schemas\n *\n * @param workspaces - The workspaces to deploy\n */\nasync function handleInternalStudio({\n outPath,\n projectId,\n verbose,\n workDir,\n workspaceManifests,\n workspaceManifestsHandler,\n workspaces,\n}: {\n outPath: string\n projectId: string\n verbose: boolean\n workDir: string\n workspaceManifests: CreateWorkspaceManifest[]\n workspaceManifestsHandler: (\n workspaceManifests: CreateWorkspaceManifest[],\n ) => Promise<WorkspaceSchemaInput[] | null>\n workspaces: Workspace[]\n}): Promise<HandleStudioResult> {\n const [studioManifest, schemaInputs] = await Promise.all([\n uploadSchemaToLexicon({\n projectId,\n verbose,\n workDir,\n workspaces,\n }),\n workspaceManifestsHandler(workspaceManifests),\n writeManifestFile({outPath, workDir, workspaceManifests}),\n ])\n\n return {schemaInputs, studioManifest}\n}\n"],"names":["isMainThread","getStudioWorkspaces","subdebug","extractWorkspaceManifest","writeManifestFile","uploadSchemaToLexicon","debug","workerBuildStudioSchemasAndManifests","options","Error","configPath","isExternal","outPath","projectId","schemaRequired","verbose","workDir","workspaceSchemaHandler","workspaces","length","workspaceManifests","workspaceManifestsHandler","schemaInputs","map","manifest","dataset","manifestSchema","schema","name","title","result","handleExternalStudio","handleInternalStudio","studioManifest","type","Promise","all"],"mappings":"AAAA,SAAQA,YAAY,QAAO,sBAAqB;AAEhD,SAAQC,mBAAmB,EAAEC,QAAQ,QAAO,mBAAkB;AAG9D,SAAQC,wBAAwB,QAAO,0CAAyC;AAEhF,SAAQC,iBAAiB,QAAO,mCAAkC;AAGlE,SAAQC,qBAAqB,QAAO,6BAA4B;AAEhE,MAAMC,QAAQJ,SAAS;AAEvB;;;CAGC,GACD,OAAO,eAAeK,qCACpBC,OAEC;IAED,IAAIR,cAAc;QAChB,MAAM,IAAIS,MACR;IAEJ;IAEA,MAAM,EACJC,UAAU,EACVC,UAAU,EACVC,OAAO,EACPC,SAAS,EACTC,cAAc,EACdC,OAAO,EACPC,OAAO,EACPC,sBAAsB,EACvB,GAAGT;IAEJF,MAAM,6DAA6DI;IACnE,MAAMQ,aAAa,MAAMjB,oBAAoBS;IAC7CJ,MAAM,iBAAiBY;IAEvB,IAAIA,WAAWC,MAAM,KAAK,GAAG;QAC3B,MAAM,IAAIV,MAAM;IAClB;IAEA,wFAAwF;IACxF,wFAAwF;IACxF,MAAMW,qBAAqB,MAAMjB,yBAAyBe,YAAYF;IAEtEV,MAAM,yBAAyBK,aAAa,aAAa;IAEzD,eAAeU,0BACbD,kBAA6C;QAE7C,IAAI,CAACT,cAAcG,gBAAgB;YACjC,MAAMQ,eAAuCF,mBAAmBG,GAAG,CAAC,CAACC,WAAc,CAAA;oBACjFC,SAASD,SAASC,OAAO;oBACzBC,gBAAgBF,SAASG,MAAM;oBAC/BC,MAAMJ,SAASI,IAAI;oBACnBf,WAAWW,SAASX,SAAS;oBAC7BgB,OAAOL,SAASK,KAAK;gBACvB,CAAA;YAEA,IAAIZ,wBAAwB;gBAC1B,MAAMA,uBAAuBK;YAC/B;YAEA,OAAOA;QACT;QAEA,OAAO;IACT;IAEA,MAAMQ,SAASnB,aACX,MAAMoB,qBAAqB;QACzBlB;QACAE;QACAC;QACAI;QACAC;QACAH;IACF,KACA,MAAMc,qBAAqB;QACzBpB;QACAC;QACAE;QACAC;QACAI;QACAC;QACAH;IACF;IAEJ,OAAO;QACLI,cAAcQ,OAAOR,YAAY;QACjCW,gBAAgBH,OAAOG,cAAc;QACrCC,MAAM;IACR;AACF;AAOA;;;;CAIC,GACD,eAAeH,qBAAqB,EAClClB,SAAS,EACTE,OAAO,EACPC,OAAO,EACPI,kBAAkB,EAClBC,yBAAyB,EACzBH,UAAU,EAUX;IACC,MAAM,CAACe,gBAAgBX,aAAa,GAAG,MAAMa,QAAQC,GAAG,CAAC;QACvD/B,sBAAsB;YACpBQ;YACAE;YACAC;YACAE;QACF;QACAG,0BAA0BD;KAC3B;IAED,OAAO;QAACE;QAAcW;IAAc;AACtC;AAEA;;;;;;;;CAQC,GACD,eAAeD,qBAAqB,EAClCpB,OAAO,EACPC,SAAS,EACTE,OAAO,EACPC,OAAO,EACPI,kBAAkB,EAClBC,yBAAyB,EACzBH,UAAU,EAWX;IACC,MAAM,CAACe,gBAAgBX,aAAa,GAAG,MAAMa,QAAQC,GAAG,CAAC;QACvD/B,sBAAsB;YACpBQ;YACAE;YACAC;YACAE;QACF;QACAG,0BAA0BD;QAC1BhB,kBAAkB;YAACQ;YAASI;YAASI;QAAkB;KACxD;IAED,OAAO;QAACE;QAAcW;IAAc;AACtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/schema/types.ts"],"sourcesContent":["import {type SchemaValidationProblemGroup} from '@sanity/types'\nimport {z} from 'zod/mini'\n\nexport const extractSchemaWorkerData = z.object({\n configPath: z.string(),\n enforceRequiredFields: z.boolean(),\n workDir: z.string(),\n workspaceName: z.optional(z.string()),\n})\n\nexport type ExtractSchemaWorkerData = z.infer<typeof extractSchemaWorkerData>\n\n/** @internal */\nexport interface ExtractSchemaWorkerError {\n error: string\n type: 'error'\n\n validation?: SchemaValidationProblemGroup[]\n}\n\nexport const buildStudioSchemasAndManifestsWorkerData = z.object({\n configPath: z.string(),\n isExternal: z.boolean(),\n outPath: z.string(),\n projectId: z.string(),\n verbose: z.boolean(),\n workDir: z.string(),\n})\n\nexport type BuildStudioSchemasAndManifestsWorkerData = z.infer<\n typeof buildStudioSchemasAndManifestsWorkerData\n>\n"],"names":["z","extractSchemaWorkerData","object","configPath","string","enforceRequiredFields","boolean","workDir","workspaceName","optional","buildStudioSchemasAndManifestsWorkerData","isExternal","outPath","projectId","verbose"],"mappings":"AACA,SAAQA,CAAC,QAAO,WAAU;AAE1B,OAAO,MAAMC,0BAA0BD,EAAEE,MAAM,CAAC;IAC9CC,YAAYH,EAAEI,MAAM;IACpBC,uBAAuBL,EAAEM,OAAO;IAChCC,SAASP,EAAEI,MAAM;IACjBI,eAAeR,EAAES,QAAQ,CAACT,EAAEI,MAAM;AACpC,GAAE;AAYF,OAAO,MAAMM,2CAA2CV,EAAEE,MAAM,CAAC;IAC/DC,YAAYH,EAAEI,MAAM;IACpBO,YAAYX,EAAEM,OAAO;IACrBM,SAASZ,EAAEI,MAAM;IACjBS,WAAWb,EAAEI,MAAM;IACnBU,
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/schema/types.ts"],"sourcesContent":["import {type SchemaValidationProblemGroup} from '@sanity/types'\nimport {z} from 'zod/mini'\n\nexport const extractSchemaWorkerData = z.object({\n configPath: z.string(),\n enforceRequiredFields: z.boolean(),\n workDir: z.string(),\n workspaceName: z.optional(z.string()),\n})\n\nexport type ExtractSchemaWorkerData = z.infer<typeof extractSchemaWorkerData>\n\n/** @internal */\nexport interface ExtractSchemaWorkerError {\n error: string\n type: 'error'\n\n validation?: SchemaValidationProblemGroup[]\n}\n\nexport const buildStudioSchemasAndManifestsWorkerData = z.object({\n configPath: z.string(),\n isExternal: z.boolean(),\n outPath: z.string(),\n projectId: z.string(),\n schemaRequired: z.boolean(),\n verbose: z.boolean(),\n workDir: z.string(),\n})\n\nexport type BuildStudioSchemasAndManifestsWorkerData = z.infer<\n typeof buildStudioSchemasAndManifestsWorkerData\n>\n"],"names":["z","extractSchemaWorkerData","object","configPath","string","enforceRequiredFields","boolean","workDir","workspaceName","optional","buildStudioSchemasAndManifestsWorkerData","isExternal","outPath","projectId","schemaRequired","verbose"],"mappings":"AACA,SAAQA,CAAC,QAAO,WAAU;AAE1B,OAAO,MAAMC,0BAA0BD,EAAEE,MAAM,CAAC;IAC9CC,YAAYH,EAAEI,MAAM;IACpBC,uBAAuBL,EAAEM,OAAO;IAChCC,SAASP,EAAEI,MAAM;IACjBI,eAAeR,EAAES,QAAQ,CAACT,EAAEI,MAAM;AACpC,GAAE;AAYF,OAAO,MAAMM,2CAA2CV,EAAEE,MAAM,CAAC;IAC/DC,YAAYH,EAAEI,MAAM;IACpBO,YAAYX,EAAEM,OAAO;IACrBM,SAASZ,EAAEI,MAAM;IACjBS,WAAWb,EAAEI,MAAM;IACnBU,gBAAgBd,EAAEM,OAAO;IACzBS,SAASf,EAAEM,OAAO;IAClBC,SAASP,EAAEI,MAAM;AACnB,GAAE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sanity/cli-build",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0",
|
|
4
4
|
"description": "Internal Sanity package for building studios and apps",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -52,12 +52,12 @@
|
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@oclif/core": "^4.11.14",
|
|
54
54
|
"@rolldown/plugin-babel": "^0.2.4",
|
|
55
|
-
"@sanity/cli-core": "^3.11.
|
|
55
|
+
"@sanity/cli-core": "^3.11.1",
|
|
56
56
|
"@sanity/generate-help-url": "^4.0.0",
|
|
57
57
|
"@sanity/schema": "^6.17.0",
|
|
58
58
|
"@sanity/telemetry": "^1.1.0",
|
|
59
59
|
"@sanity/types": "^6.17.0",
|
|
60
|
-
"@sanity/workbench-cli": "^2.
|
|
60
|
+
"@sanity/workbench-cli": "^2.13.0",
|
|
61
61
|
"@vitejs/plugin-react": "^6.1.2",
|
|
62
62
|
"chokidar": "^5.0.0",
|
|
63
63
|
"cjs-module-lexer": "^2.2.1",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"@eslint/compat": "^2.1.0",
|
|
80
80
|
"@repo/package.config": "0.0.1",
|
|
81
81
|
"@repo/tsconfig": "3.70.0",
|
|
82
|
-
"@sanity/cli-test": "21.0.
|
|
82
|
+
"@sanity/cli-test": "21.0.1",
|
|
83
83
|
"@sanity/eslint-config-cli": "^1.1.3",
|
|
84
84
|
"@sanity/pkg-utils": "^12.3.4",
|
|
85
85
|
"@sanity/ui": "^4.3.1",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/schema/workerBuildStudioSchemasAndManifests.ts"],"sourcesContent":["import {isMainThread} from 'node:worker_threads'\n\nimport {getStudioWorkspaces, subdebug} from '@sanity/cli-core'\nimport {type StudioManifest, type Workspace} from 'sanity'\n\nimport {extractWorkspaceManifest} from '../manifest/extractWorkspaceManifest.js'\nimport {type CreateWorkspaceManifest} from '../manifest/types.js'\nimport {writeManifestFile} from '../manifest/writeManifestFile.js'\nimport {type BuildStudioSchemasAndManifestsWorkerSuccess} from './buildStudioSchemasAndManifests.js'\nimport {type BuildStudioSchemasAndManifestsWorkerData} from './types.js'\nimport {uploadSchemaToLexicon} from './uploadSchemaToLexicon.js'\n\nconst debug = subdebug('buildStudioSchemasAndManifests.worker')\n\n/**\n * This function must only be called from another worker process.\n * @param options - The worker options\n */\nexport async function workerBuildStudioSchemasAndManifests(\n options: BuildStudioSchemasAndManifestsWorkerData & {\n workspaceManifestsHandler?: (workspaceManifests: CreateWorkspaceManifest[]) => Promise<void>\n },\n): Promise<BuildStudioSchemasAndManifestsWorkerSuccess> {\n if (isMainThread) {\n throw new Error(\n 'workerBuildStudioSchemasAndManifests should only be called from a worker thread',\n )\n }\n\n const {configPath, isExternal, outPath, projectId, verbose, workDir, workspaceManifestsHandler} =\n options\n\n debug('Building studio schemas and manifests from config path %s', configPath)\n const workspaces = await getStudioWorkspaces(configPath)\n debug('Workspaces %o', workspaces)\n\n if (workspaces.length === 0) {\n throw new Error('No workspaces found')\n }\n\n // Extract manifest data (including ManifestSchemaType[]) once, while Schema objects are\n // still live. Both writeWorkspaceToDist and updateWorkspacesSchemas consume the result.\n const workspaceManifests = await extractWorkspaceManifest(workspaces, workDir)\n\n debug('Handling build for %s', isExternal ? 'external' : 'internal')\n\n let studioManifest: StudioManifest | null\n\n if (isExternal) {\n ;[studioManifest] = await handleExternalStudio({\n projectId,\n verbose,\n workDir,\n workspaceManifests,\n workspaceManifestsHandler,\n workspaces,\n })\n } else {\n ;[studioManifest] = await handleInternalStudio({\n outPath,\n projectId,\n verbose,\n workDir,\n workspaceManifests,\n workspaceManifestsHandler,\n workspaces,\n })\n }\n return {\n studioManifest,\n type: 'success',\n workspaceManifests,\n }\n}\n\n/**\n * External deployments:\n * 1. Update the workspace schemas to the /schemas endpoint IF --schema-required is passed\n * 2. Call the workspace manifest handler if provided to update server-side schemas\n */\nasync function handleExternalStudio({\n projectId,\n verbose,\n workDir,\n workspaceManifests,\n workspaceManifestsHandler,\n workspaces,\n}: {\n projectId: string\n verbose: boolean\n workDir: string\n workspaceManifests: CreateWorkspaceManifest[]\n workspaceManifestsHandler?: (workspaceManifests: CreateWorkspaceManifest[]) => Promise<void>\n workspaces: Workspace[]\n}): Promise<[StudioManifest | null]> {\n const [studioManifest] = await Promise.all([\n uploadSchemaToLexicon({\n projectId,\n verbose,\n workDir,\n workspaces,\n }),\n workspaceManifestsHandler && workspaceManifestsHandler(workspaceManifests),\n ])\n\n return [studioManifest]\n}\n\n/**\n *\n * Internal deployments:\n * 1. Write the workspace manifests to the dist directory\n * 2. Update the workspaces schemas to the /schemas endpoint\n * 3. Call the workspace manifest handler if provided to update server-side schemas\n *\n * @param workspaces - The workspaces to deploy\n */\nasync function handleInternalStudio({\n outPath,\n projectId,\n verbose,\n workDir,\n workspaceManifests,\n workspaceManifestsHandler,\n workspaces,\n}: {\n outPath: string\n projectId: string\n verbose: boolean\n workDir: string\n workspaceManifests: CreateWorkspaceManifest[]\n workspaceManifestsHandler?: (workspaceManifests: CreateWorkspaceManifest[]) => Promise<void>\n workspaces: Workspace[]\n}): Promise<[StudioManifest | null]> {\n const [studioManifest] = await Promise.all([\n uploadSchemaToLexicon({\n projectId,\n verbose,\n workDir,\n workspaces,\n }),\n writeManifestFile({outPath, workDir, workspaceManifests}),\n workspaceManifestsHandler && workspaceManifestsHandler(workspaceManifests),\n ])\n\n return [studioManifest]\n}\n"],"names":["isMainThread","getStudioWorkspaces","subdebug","extractWorkspaceManifest","writeManifestFile","uploadSchemaToLexicon","debug","workerBuildStudioSchemasAndManifests","options","Error","configPath","isExternal","outPath","projectId","verbose","workDir","workspaceManifestsHandler","workspaces","length","workspaceManifests","studioManifest","handleExternalStudio","handleInternalStudio","type","Promise","all"],"mappings":"AAAA,SAAQA,YAAY,QAAO,sBAAqB;AAEhD,SAAQC,mBAAmB,EAAEC,QAAQ,QAAO,mBAAkB;AAG9D,SAAQC,wBAAwB,QAAO,0CAAyC;AAEhF,SAAQC,iBAAiB,QAAO,mCAAkC;AAGlE,SAAQC,qBAAqB,QAAO,6BAA4B;AAEhE,MAAMC,QAAQJ,SAAS;AAEvB;;;CAGC,GACD,OAAO,eAAeK,qCACpBC,OAEC;IAED,IAAIR,cAAc;QAChB,MAAM,IAAIS,MACR;IAEJ;IAEA,MAAM,EAACC,UAAU,EAAEC,UAAU,EAAEC,OAAO,EAAEC,SAAS,EAAEC,OAAO,EAAEC,OAAO,EAAEC,yBAAyB,EAAC,GAC7FR;IAEFF,MAAM,6DAA6DI;IACnE,MAAMO,aAAa,MAAMhB,oBAAoBS;IAC7CJ,MAAM,iBAAiBW;IAEvB,IAAIA,WAAWC,MAAM,KAAK,GAAG;QAC3B,MAAM,IAAIT,MAAM;IAClB;IAEA,wFAAwF;IACxF,wFAAwF;IACxF,MAAMU,qBAAqB,MAAMhB,yBAAyBc,YAAYF;IAEtET,MAAM,yBAAyBK,aAAa,aAAa;IAEzD,IAAIS;IAEJ,IAAIT,YAAY;;QACb,CAACS,eAAe,GAAG,MAAMC,qBAAqB;YAC7CR;YACAC;YACAC;YACAI;YACAH;YACAC;QACF;IACF,OAAO;;QACJ,CAACG,eAAe,GAAG,MAAME,qBAAqB;YAC7CV;YACAC;YACAC;YACAC;YACAI;YACAH;YACAC;QACF;IACF;IACA,OAAO;QACLG;QACAG,MAAM;QACNJ;IACF;AACF;AAEA;;;;CAIC,GACD,eAAeE,qBAAqB,EAClCR,SAAS,EACTC,OAAO,EACPC,OAAO,EACPI,kBAAkB,EAClBH,yBAAyB,EACzBC,UAAU,EAQX;IACC,MAAM,CAACG,eAAe,GAAG,MAAMI,QAAQC,GAAG,CAAC;QACzCpB,sBAAsB;YACpBQ;YACAC;YACAC;YACAE;QACF;QACAD,6BAA6BA,0BAA0BG;KACxD;IAED,OAAO;QAACC;KAAe;AACzB;AAEA;;;;;;;;CAQC,GACD,eAAeE,qBAAqB,EAClCV,OAAO,EACPC,SAAS,EACTC,OAAO,EACPC,OAAO,EACPI,kBAAkB,EAClBH,yBAAyB,EACzBC,UAAU,EASX;IACC,MAAM,CAACG,eAAe,GAAG,MAAMI,QAAQC,GAAG,CAAC;QACzCpB,sBAAsB;YACpBQ;YACAC;YACAC;YACAE;QACF;QACAb,kBAAkB;YAACQ;YAASG;YAASI;QAAkB;QACvDH,6BAA6BA,0BAA0BG;KACxD;IAED,OAAO;QAACC;KAAe;AACzB"}
|