@webstudio-is/protocol 0.272.0 → 0.274.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/lib/fixtures.js +343 -384
- package/lib/index.js +2027 -377
- package/lib/types/builder-api/errors.d.ts +4 -0
- package/lib/types/builder-api/operation-docs.d.ts +7 -0
- package/lib/types/builder-api/operations.d.ts +506 -0
- package/lib/types/builder-api/runtime-contracts.d.ts +11 -0
- package/lib/types/builder-api/url.d.ts +7 -0
- package/lib/types/contract-version.d.ts +1 -1
- package/lib/types/index.d.ts +5 -0
- package/lib/types/schema.d.ts +714 -290
- package/package.json +3 -3
package/lib/fixtures.js
CHANGED
|
@@ -862,11 +862,11 @@ function datetimeRegex(args) {
|
|
|
862
862
|
regex = `${regex}(${opts.join("|")})`;
|
|
863
863
|
return new RegExp(`^${regex}$`);
|
|
864
864
|
}
|
|
865
|
-
function isValidIP(ip,
|
|
866
|
-
if ((
|
|
865
|
+
function isValidIP(ip, version) {
|
|
866
|
+
if ((version === "v4" || !version) && ipv4Regex.test(ip)) {
|
|
867
867
|
return true;
|
|
868
868
|
}
|
|
869
|
-
if ((
|
|
869
|
+
if ((version === "v6" || !version) && ipv6Regex.test(ip)) {
|
|
870
870
|
return true;
|
|
871
871
|
}
|
|
872
872
|
return false;
|
|
@@ -889,11 +889,11 @@ function isValidJWT(jwt, alg) {
|
|
|
889
889
|
return false;
|
|
890
890
|
}
|
|
891
891
|
}
|
|
892
|
-
function isValidCidr(ip,
|
|
893
|
-
if ((
|
|
892
|
+
function isValidCidr(ip, version) {
|
|
893
|
+
if ((version === "v4" || !version) && ipv4CidrRegex.test(ip)) {
|
|
894
894
|
return true;
|
|
895
895
|
}
|
|
896
|
-
if ((
|
|
896
|
+
if ((version === "v6" || !version) && ipv6CidrRegex.test(ip)) {
|
|
897
897
|
return true;
|
|
898
898
|
}
|
|
899
899
|
return false;
|
|
@@ -4068,12 +4068,12 @@ var FONT_MIME_TYPES = Array.from(FONT_FORMATS.keys()).map((format) => `.${format
|
|
|
4068
4068
|
var FONT_STYLES = ["normal", "italic", "oblique"];
|
|
4069
4069
|
|
|
4070
4070
|
// ../fonts/src/schema.ts
|
|
4071
|
-
var
|
|
4071
|
+
var fontFormat = z.union([
|
|
4072
4072
|
z.literal("ttf"),
|
|
4073
4073
|
z.literal("woff"),
|
|
4074
4074
|
z.literal("woff2")
|
|
4075
4075
|
]);
|
|
4076
|
-
var
|
|
4076
|
+
var axisName = z.enum([
|
|
4077
4077
|
"wght",
|
|
4078
4078
|
"wdth",
|
|
4079
4079
|
"slnt",
|
|
@@ -4089,8 +4089,8 @@ var AxisName = z.enum([
|
|
|
4089
4089
|
"YTDE",
|
|
4090
4090
|
"YTFI"
|
|
4091
4091
|
]);
|
|
4092
|
-
var
|
|
4093
|
-
|
|
4092
|
+
var variationAxes = z.record(
|
|
4093
|
+
axisName,
|
|
4094
4094
|
z.object({
|
|
4095
4095
|
name: z.string(),
|
|
4096
4096
|
min: z.number(),
|
|
@@ -4098,21 +4098,21 @@ var VariationAxes = z.record(
|
|
|
4098
4098
|
max: z.number()
|
|
4099
4099
|
})
|
|
4100
4100
|
);
|
|
4101
|
-
var
|
|
4101
|
+
var fontMetaStatic = z.object({
|
|
4102
4102
|
family: z.string(),
|
|
4103
4103
|
style: z.enum(FONT_STYLES),
|
|
4104
4104
|
weight: z.number()
|
|
4105
4105
|
});
|
|
4106
|
-
var
|
|
4106
|
+
var fontMetaVariable = z.object({
|
|
4107
4107
|
family: z.string(),
|
|
4108
|
-
variationAxes
|
|
4108
|
+
variationAxes
|
|
4109
4109
|
});
|
|
4110
|
-
var
|
|
4110
|
+
var fontMeta = z.union([fontMetaStatic, fontMetaVariable]);
|
|
4111
4111
|
|
|
4112
4112
|
// ../sdk/src/schema/assets.ts
|
|
4113
|
-
var
|
|
4113
|
+
var assetId = z.string();
|
|
4114
4114
|
var baseAsset = {
|
|
4115
|
-
id:
|
|
4115
|
+
id: assetId,
|
|
4116
4116
|
projectId: z.string(),
|
|
4117
4117
|
size: z.number(),
|
|
4118
4118
|
name: z.string(),
|
|
@@ -4120,35 +4120,36 @@ var baseAsset = {
|
|
|
4120
4120
|
description: z.union([z.string().optional(), z.null()]),
|
|
4121
4121
|
createdAt: z.string()
|
|
4122
4122
|
};
|
|
4123
|
-
var
|
|
4123
|
+
var assetType = z.enum(["font", "image", "file"]);
|
|
4124
|
+
var fontAsset = z.object({
|
|
4124
4125
|
...baseAsset,
|
|
4125
|
-
format:
|
|
4126
|
-
meta:
|
|
4127
|
-
type: z.literal(
|
|
4126
|
+
format: fontFormat,
|
|
4127
|
+
meta: fontMeta,
|
|
4128
|
+
type: z.literal(assetType.enum.font)
|
|
4128
4129
|
});
|
|
4129
|
-
var
|
|
4130
|
+
var imageMeta = z.object({
|
|
4130
4131
|
width: z.number(),
|
|
4131
4132
|
height: z.number()
|
|
4132
4133
|
});
|
|
4133
|
-
var
|
|
4134
|
+
var imageAsset = z.object({
|
|
4134
4135
|
...baseAsset,
|
|
4135
4136
|
format: z.string(),
|
|
4136
|
-
meta:
|
|
4137
|
-
type: z.literal(
|
|
4137
|
+
meta: imageMeta,
|
|
4138
|
+
type: z.literal(assetType.enum.image)
|
|
4138
4139
|
});
|
|
4139
|
-
var
|
|
4140
|
+
var fileAsset = z.object({
|
|
4140
4141
|
...baseAsset,
|
|
4141
4142
|
format: z.string(),
|
|
4142
4143
|
meta: z.object({}),
|
|
4143
|
-
type: z.literal(
|
|
4144
|
+
type: z.literal(assetType.enum.file)
|
|
4144
4145
|
});
|
|
4145
|
-
var
|
|
4146
|
-
var
|
|
4146
|
+
var asset = z.union([fontAsset, imageAsset, fileAsset]);
|
|
4147
|
+
var assets = z.map(assetId, asset);
|
|
4147
4148
|
|
|
4148
4149
|
// ../sdk/src/schema/breakpoints.ts
|
|
4149
|
-
var
|
|
4150
|
-
var
|
|
4151
|
-
id:
|
|
4150
|
+
var breakpointId = z.string();
|
|
4151
|
+
var breakpoint = z.object({
|
|
4152
|
+
id: breakpointId,
|
|
4152
4153
|
label: z.string(),
|
|
4153
4154
|
minWidth: z.number().optional(),
|
|
4154
4155
|
maxWidth: z.number().optional(),
|
|
@@ -4167,11 +4168,11 @@ var Breakpoint = z.object({
|
|
|
4167
4168
|
}
|
|
4168
4169
|
return true;
|
|
4169
4170
|
}, "Width-based (minWidth/maxWidth) and condition are mutually exclusive, and minWidth must be less than maxWidth");
|
|
4170
|
-
var
|
|
4171
|
+
var breakpoints = z.map(breakpointId, breakpoint);
|
|
4171
4172
|
|
|
4172
4173
|
// ../sdk/src/schema/data-sources.ts
|
|
4173
|
-
var
|
|
4174
|
-
var
|
|
4174
|
+
var dataSourceId = z.string();
|
|
4175
|
+
var dataSourceVariableValue = z.union([
|
|
4175
4176
|
z.object({
|
|
4176
4177
|
type: z.literal("number"),
|
|
4177
4178
|
// initial value of variable store
|
|
@@ -4194,10 +4195,10 @@ var DataSourceVariableValue = z.union([
|
|
|
4194
4195
|
value: z.unknown()
|
|
4195
4196
|
})
|
|
4196
4197
|
]);
|
|
4197
|
-
var
|
|
4198
|
+
var dataSource = z.union([
|
|
4198
4199
|
z.object({
|
|
4199
4200
|
type: z.literal("variable"),
|
|
4200
|
-
id:
|
|
4201
|
+
id: dataSourceId,
|
|
4201
4202
|
// The instance should always be specified for variables,
|
|
4202
4203
|
// however, there was a bug in the embed template
|
|
4203
4204
|
// which produced variables without an instance
|
|
@@ -4205,26 +4206,26 @@ var DataSource = z.union([
|
|
|
4205
4206
|
// if we make it required
|
|
4206
4207
|
scopeInstanceId: z.string().optional(),
|
|
4207
4208
|
name: z.string(),
|
|
4208
|
-
value:
|
|
4209
|
+
value: dataSourceVariableValue
|
|
4209
4210
|
}),
|
|
4210
4211
|
z.object({
|
|
4211
4212
|
type: z.literal("parameter"),
|
|
4212
|
-
id:
|
|
4213
|
+
id: dataSourceId,
|
|
4213
4214
|
scopeInstanceId: z.string().optional(),
|
|
4214
4215
|
name: z.string()
|
|
4215
4216
|
}),
|
|
4216
4217
|
z.object({
|
|
4217
4218
|
type: z.literal("resource"),
|
|
4218
|
-
id:
|
|
4219
|
+
id: dataSourceId,
|
|
4219
4220
|
scopeInstanceId: z.string().optional(),
|
|
4220
4221
|
name: z.string(),
|
|
4221
4222
|
resourceId: z.string()
|
|
4222
4223
|
})
|
|
4223
4224
|
]);
|
|
4224
|
-
var
|
|
4225
|
+
var dataSources = z.map(dataSourceId, dataSource);
|
|
4225
4226
|
|
|
4226
4227
|
// ../sdk/src/schema/deployment.ts
|
|
4227
|
-
var
|
|
4228
|
+
var templates = z.enum([
|
|
4228
4229
|
"docker",
|
|
4229
4230
|
"vercel",
|
|
4230
4231
|
"netlify",
|
|
@@ -4232,13 +4233,13 @@ var Templates = z.enum([
|
|
|
4232
4233
|
"ssg-netlify",
|
|
4233
4234
|
"ssg-vercel"
|
|
4234
4235
|
]);
|
|
4235
|
-
var
|
|
4236
|
+
var deployment = z.union([
|
|
4236
4237
|
z.object({
|
|
4237
4238
|
destination: z.literal("static"),
|
|
4238
4239
|
name: z.string(),
|
|
4239
4240
|
assetsDomain: z.string(),
|
|
4240
4241
|
// Must be validated very strictly
|
|
4241
|
-
templates: z.array(
|
|
4242
|
+
templates: z.array(templates)
|
|
4242
4243
|
}),
|
|
4243
4244
|
z.object({
|
|
4244
4245
|
destination: z.literal("saas").optional(),
|
|
@@ -4253,30 +4254,30 @@ var Deployment = z.union([
|
|
|
4253
4254
|
]);
|
|
4254
4255
|
|
|
4255
4256
|
// ../sdk/src/schema/instances.ts
|
|
4256
|
-
var
|
|
4257
|
+
var textChild = z.object({
|
|
4257
4258
|
type: z.literal("text"),
|
|
4258
4259
|
value: z.string(),
|
|
4259
4260
|
placeholder: z.boolean().optional()
|
|
4260
4261
|
});
|
|
4261
|
-
var
|
|
4262
|
-
var
|
|
4262
|
+
var instanceId = z.string();
|
|
4263
|
+
var idChild = z.object({
|
|
4263
4264
|
type: z.literal("id"),
|
|
4264
|
-
value:
|
|
4265
|
+
value: instanceId
|
|
4265
4266
|
});
|
|
4266
|
-
var
|
|
4267
|
+
var expressionChild = z.object({
|
|
4267
4268
|
type: z.literal("expression"),
|
|
4268
4269
|
value: z.string()
|
|
4269
4270
|
});
|
|
4270
|
-
var
|
|
4271
|
-
var
|
|
4271
|
+
var instanceChild = z.union([idChild, textChild, expressionChild]);
|
|
4272
|
+
var instance = z.object({
|
|
4272
4273
|
type: z.literal("instance"),
|
|
4273
|
-
id:
|
|
4274
|
+
id: instanceId,
|
|
4274
4275
|
component: z.string(),
|
|
4275
4276
|
tag: z.string().optional(),
|
|
4276
4277
|
label: z.string().optional(),
|
|
4277
|
-
children: z.array(
|
|
4278
|
+
children: z.array(instanceChild)
|
|
4278
4279
|
});
|
|
4279
|
-
var
|
|
4280
|
+
var instances = z.map(instanceId, instance);
|
|
4280
4281
|
|
|
4281
4282
|
// ../wsauth/src/index.ts
|
|
4282
4283
|
var basicLoginErrors = (login) => {
|
|
@@ -4336,26 +4337,26 @@ var validateBasicAuth = ({
|
|
|
4336
4337
|
|
|
4337
4338
|
// ../sdk/src/schema/pages.ts
|
|
4338
4339
|
var MIN_TITLE_LENGTH = 2;
|
|
4339
|
-
var
|
|
4340
|
-
var
|
|
4341
|
-
var
|
|
4342
|
-
var
|
|
4340
|
+
var pageId = z.string();
|
|
4341
|
+
var folderId = z.string();
|
|
4342
|
+
var folderName = z.string().refine((value) => value.trim() !== "", "Can't be empty");
|
|
4343
|
+
var slug = z.string().refine(
|
|
4343
4344
|
(path) => /^[-a-z0-9]*$/.test(path),
|
|
4344
4345
|
"Only a-z, 0-9 and - are allowed"
|
|
4345
4346
|
);
|
|
4346
|
-
var
|
|
4347
|
-
id:
|
|
4348
|
-
name:
|
|
4349
|
-
slug
|
|
4350
|
-
children: z.array(z.union([
|
|
4347
|
+
var folder = z.object({
|
|
4348
|
+
id: folderId,
|
|
4349
|
+
name: folderName,
|
|
4350
|
+
slug,
|
|
4351
|
+
children: z.array(z.union([folderId, pageId]))
|
|
4351
4352
|
});
|
|
4352
|
-
var
|
|
4353
|
-
var
|
|
4353
|
+
var pageName = z.string().refine((value) => value.trim() !== "", "Can't be empty");
|
|
4354
|
+
var pageTitle = z.string().refine(
|
|
4354
4355
|
(val) => val.length >= MIN_TITLE_LENGTH,
|
|
4355
4356
|
`Minimum ${MIN_TITLE_LENGTH} characters required`
|
|
4356
4357
|
);
|
|
4357
4358
|
var documentTypes = ["html", "xml", "text"];
|
|
4358
|
-
var
|
|
4359
|
+
var basicAuthFields = {
|
|
4359
4360
|
login: z.string(),
|
|
4360
4361
|
password: z.string()
|
|
4361
4362
|
};
|
|
@@ -4371,23 +4372,23 @@ var validateBasicAuthFields = ({
|
|
|
4371
4372
|
});
|
|
4372
4373
|
}
|
|
4373
4374
|
};
|
|
4374
|
-
var
|
|
4375
|
+
var pageBasicAuth = z.object({
|
|
4375
4376
|
method: z.literal("basic"),
|
|
4376
|
-
...
|
|
4377
|
+
...basicAuthFields
|
|
4377
4378
|
}).superRefine(validateBasicAuthFields);
|
|
4378
|
-
var
|
|
4379
|
+
var legacyPageBasicAuth = z.object({
|
|
4379
4380
|
type: z.literal("basic"),
|
|
4380
|
-
...
|
|
4381
|
+
...basicAuthFields
|
|
4381
4382
|
}).superRefine(validateBasicAuthFields).transform(({ login, password }) => ({
|
|
4382
4383
|
method: "basic",
|
|
4383
4384
|
login,
|
|
4384
4385
|
password
|
|
4385
4386
|
}));
|
|
4386
|
-
var
|
|
4387
|
+
var pageAuth = z.union([pageBasicAuth, legacyPageBasicAuth]);
|
|
4387
4388
|
var commonPageFields = {
|
|
4388
|
-
id:
|
|
4389
|
-
name:
|
|
4390
|
-
title:
|
|
4389
|
+
id: pageId,
|
|
4390
|
+
name: pageName,
|
|
4391
|
+
title: pageTitle,
|
|
4391
4392
|
history: z.optional(z.array(z.string())),
|
|
4392
4393
|
rootInstanceId: z.string(),
|
|
4393
4394
|
systemDataSourceId: z.string().optional(),
|
|
@@ -4402,7 +4403,7 @@ var commonPageFields = {
|
|
|
4402
4403
|
redirect: z.string().optional(),
|
|
4403
4404
|
documentType: z.optional(z.enum(documentTypes)),
|
|
4404
4405
|
content: z.string().optional(),
|
|
4405
|
-
auth:
|
|
4406
|
+
auth: pageAuth.optional(),
|
|
4406
4407
|
custom: z.array(
|
|
4407
4408
|
z.object({
|
|
4408
4409
|
property: z.string(),
|
|
@@ -4418,8 +4419,8 @@ var commonPageFields = {
|
|
|
4418
4419
|
})
|
|
4419
4420
|
)
|
|
4420
4421
|
};
|
|
4421
|
-
var
|
|
4422
|
-
var
|
|
4422
|
+
var homePagePath = z.string().refine((path) => path === "", "Home page path must be empty");
|
|
4423
|
+
var defaultPagePath = z.string().refine((path) => path !== "", "Can't be empty").refine((path) => path !== "/", "Can't be just a /").refine((path) => path.endsWith("/") === false, "Can't end with a /").refine((path) => path.includes("//") === false, "Can't contain repeating /").refine(
|
|
4423
4424
|
(path) => /^[-_a-z0-9*:?\\/.]*$/.test(path),
|
|
4424
4425
|
"Only a-z, 0-9, -, _, /, :, ?, . and * are allowed"
|
|
4425
4426
|
).refine(
|
|
@@ -4432,7 +4433,7 @@ var DefaultPagePage = z.string().refine((path) => path !== "", "Can't be empty")
|
|
|
4432
4433
|
(path) => path !== "/build" && path.startsWith("/build/") === false,
|
|
4433
4434
|
"/build prefix is reserved for the system"
|
|
4434
4435
|
).refine((path) => path.length <= 255, "Path can't exceed 255 characters");
|
|
4435
|
-
var
|
|
4436
|
+
var redirectSourcePath = z.string().refine((path) => path !== "", "Can't be empty").refine((path) => path !== "/", "Can't be just a /").refine(
|
|
4436
4437
|
(path) => path.startsWith("/") && path.startsWith("//") === false,
|
|
4437
4438
|
"Must start with a /"
|
|
4438
4439
|
).refine((path) => {
|
|
@@ -4452,23 +4453,23 @@ var RedirectSourcePath = z.string().refine((path) => path !== "", "Can't be empt
|
|
|
4452
4453
|
(path) => path !== "/build" && path.startsWith("/build/") === false,
|
|
4453
4454
|
"/build prefix is reserved for the system"
|
|
4454
4455
|
);
|
|
4455
|
-
var
|
|
4456
|
+
var pagePath = defaultPagePath.refine(
|
|
4456
4457
|
(path) => path === "" || path.startsWith("/"),
|
|
4457
4458
|
"Must start with a / or a full URL e.g. https://website.org"
|
|
4458
4459
|
);
|
|
4459
|
-
var
|
|
4460
|
+
var page = z.object({
|
|
4460
4461
|
...commonPageFields,
|
|
4461
|
-
path: z.union([
|
|
4462
|
+
path: z.union([homePagePath, pagePath])
|
|
4462
4463
|
});
|
|
4463
|
-
var
|
|
4464
|
-
id:
|
|
4465
|
-
name:
|
|
4466
|
-
title:
|
|
4464
|
+
var pageTemplate = z.object({
|
|
4465
|
+
id: pageId,
|
|
4466
|
+
name: pageName,
|
|
4467
|
+
title: pageTitle,
|
|
4467
4468
|
rootInstanceId: z.string(),
|
|
4468
4469
|
systemDataSourceId: z.string().optional(),
|
|
4469
4470
|
meta: commonPageFields.meta
|
|
4470
4471
|
});
|
|
4471
|
-
var
|
|
4472
|
+
var projectMeta = z.object({
|
|
4472
4473
|
// All fields are optional to ensure consistency and allow for the addition of new fields without requiring migration
|
|
4473
4474
|
siteName: z.string().optional(),
|
|
4474
4475
|
contactEmail: z.string().optional(),
|
|
@@ -4476,7 +4477,7 @@ var ProjectMeta = z.object({
|
|
|
4476
4477
|
code: z.string().optional(),
|
|
4477
4478
|
auth: z.string().optional()
|
|
4478
4479
|
});
|
|
4479
|
-
var
|
|
4480
|
+
var projectNewRedirectPath = z.string().min(1, "Path is required").refine((data) => {
|
|
4480
4481
|
try {
|
|
4481
4482
|
new URL(data, "http://url.com");
|
|
4482
4483
|
return true;
|
|
@@ -4484,27 +4485,27 @@ var ProjectNewRedirectPath = z.string().min(1, "Path is required").refine((data)
|
|
|
4484
4485
|
return false;
|
|
4485
4486
|
}
|
|
4486
4487
|
}, "Must be a valid URL");
|
|
4487
|
-
var
|
|
4488
|
-
old:
|
|
4489
|
-
new:
|
|
4488
|
+
var pageRedirect = z.object({
|
|
4489
|
+
old: redirectSourcePath,
|
|
4490
|
+
new: projectNewRedirectPath,
|
|
4490
4491
|
status: z.enum(["301", "302"]).optional()
|
|
4491
4492
|
});
|
|
4492
|
-
var
|
|
4493
|
+
var compilerSettings = z.object({
|
|
4493
4494
|
// All fields are optional to ensure consistency and allow for the addition of new fields without requiring migration
|
|
4494
4495
|
atomicStyles: z.boolean().optional()
|
|
4495
4496
|
});
|
|
4496
|
-
var
|
|
4497
|
-
meta:
|
|
4498
|
-
compiler:
|
|
4499
|
-
redirects: z.array(
|
|
4500
|
-
homePageId:
|
|
4501
|
-
rootFolderId:
|
|
4502
|
-
pages: z.map(
|
|
4503
|
-
pageTemplates: z.map(
|
|
4504
|
-
folders: z.map(
|
|
4505
|
-
}).superRefine((
|
|
4506
|
-
const homePage =
|
|
4507
|
-
const rootFolder =
|
|
4497
|
+
var pages = z.object({
|
|
4498
|
+
meta: projectMeta.optional(),
|
|
4499
|
+
compiler: compilerSettings.optional(),
|
|
4500
|
+
redirects: z.array(pageRedirect).optional(),
|
|
4501
|
+
homePageId: pageId,
|
|
4502
|
+
rootFolderId: folderId,
|
|
4503
|
+
pages: z.map(pageId, page),
|
|
4504
|
+
pageTemplates: z.map(pageId, pageTemplate).optional(),
|
|
4505
|
+
folders: z.map(folderId, folder).refine((folders) => folders.size > 0, "Folders can't be empty")
|
|
4506
|
+
}).superRefine((pages2, context) => {
|
|
4507
|
+
const homePage = pages2.pages.get(pages2.homePageId);
|
|
4508
|
+
const rootFolder = pages2.folders.get(pages2.rootFolderId);
|
|
4508
4509
|
if (homePage === void 0) {
|
|
4509
4510
|
context.addIssue({
|
|
4510
4511
|
code: z.ZodIssueCode.custom,
|
|
@@ -4522,27 +4523,27 @@ var Pages = z.object({
|
|
|
4522
4523
|
if (homePage !== void 0 && homePage.path !== "") {
|
|
4523
4524
|
context.addIssue({
|
|
4524
4525
|
code: z.ZodIssueCode.custom,
|
|
4525
|
-
path: ["pages",
|
|
4526
|
+
path: ["pages", pages2.homePageId, "path"],
|
|
4526
4527
|
message: "Home page path must be empty"
|
|
4527
4528
|
});
|
|
4528
4529
|
}
|
|
4529
|
-
for (const [
|
|
4530
|
-
if (
|
|
4530
|
+
for (const [pageId2, page2] of pages2.pages) {
|
|
4531
|
+
if (page2.id !== pageId2) {
|
|
4531
4532
|
context.addIssue({
|
|
4532
4533
|
code: z.ZodIssueCode.custom,
|
|
4533
|
-
path: ["pages",
|
|
4534
|
+
path: ["pages", pageId2, "id"],
|
|
4534
4535
|
message: "Page id must match its record key"
|
|
4535
4536
|
});
|
|
4536
4537
|
}
|
|
4537
|
-
if (
|
|
4538
|
+
if (pageId2 !== pages2.homePageId && page2.path === "") {
|
|
4538
4539
|
context.addIssue({
|
|
4539
4540
|
code: z.ZodIssueCode.custom,
|
|
4540
|
-
path: ["pages",
|
|
4541
|
+
path: ["pages", pageId2, "path"],
|
|
4541
4542
|
message: "Page path can't be empty"
|
|
4542
4543
|
});
|
|
4543
4544
|
}
|
|
4544
4545
|
}
|
|
4545
|
-
for (const [templateId, template] of
|
|
4546
|
+
for (const [templateId, template] of pages2.pageTemplates ?? []) {
|
|
4546
4547
|
if (template.id !== templateId) {
|
|
4547
4548
|
context.addIssue({
|
|
4548
4549
|
code: z.ZodIssueCode.custom,
|
|
@@ -4550,7 +4551,7 @@ var Pages = z.object({
|
|
|
4550
4551
|
message: "Page template id must match its record key"
|
|
4551
4552
|
});
|
|
4552
4553
|
}
|
|
4553
|
-
if (
|
|
4554
|
+
if (pages2.pages.has(templateId)) {
|
|
4554
4555
|
context.addIssue({
|
|
4555
4556
|
code: z.ZodIssueCode.custom,
|
|
4556
4557
|
path: ["pageTemplates", templateId, "id"],
|
|
@@ -4558,75 +4559,75 @@ var Pages = z.object({
|
|
|
4558
4559
|
});
|
|
4559
4560
|
}
|
|
4560
4561
|
}
|
|
4561
|
-
for (const [
|
|
4562
|
-
if (
|
|
4562
|
+
for (const [folderId2, folder2] of pages2.folders) {
|
|
4563
|
+
if (folder2.id !== folderId2) {
|
|
4563
4564
|
context.addIssue({
|
|
4564
4565
|
code: z.ZodIssueCode.custom,
|
|
4565
|
-
path: ["folders",
|
|
4566
|
+
path: ["folders", folderId2, "id"],
|
|
4566
4567
|
message: "Folder id must match its record key"
|
|
4567
4568
|
});
|
|
4568
4569
|
}
|
|
4569
|
-
for (const [index, childId] of
|
|
4570
|
-
if (
|
|
4570
|
+
for (const [index, childId] of folder2.children.entries()) {
|
|
4571
|
+
if (pages2.pages.has(childId) === false && pages2.folders.has(childId) === false) {
|
|
4571
4572
|
context.addIssue({
|
|
4572
4573
|
code: z.ZodIssueCode.custom,
|
|
4573
|
-
path: ["folders",
|
|
4574
|
+
path: ["folders", folderId2, "children", index],
|
|
4574
4575
|
message: "Folder child must reference an existing page or folder"
|
|
4575
4576
|
});
|
|
4576
4577
|
}
|
|
4577
|
-
if (childId ===
|
|
4578
|
+
if (childId === pages2.rootFolderId) {
|
|
4578
4579
|
context.addIssue({
|
|
4579
4580
|
code: z.ZodIssueCode.custom,
|
|
4580
|
-
path: ["folders",
|
|
4581
|
+
path: ["folders", folderId2, "children", index],
|
|
4581
4582
|
message: "Root folder can't be nested"
|
|
4582
4583
|
});
|
|
4583
4584
|
}
|
|
4584
4585
|
}
|
|
4585
4586
|
}
|
|
4586
|
-
if (rootFolder !== void 0 && rootFolder.children[0] !==
|
|
4587
|
+
if (rootFolder !== void 0 && rootFolder.children[0] !== pages2.homePageId) {
|
|
4587
4588
|
context.addIssue({
|
|
4588
4589
|
code: z.ZodIssueCode.custom,
|
|
4589
|
-
path: ["folders",
|
|
4590
|
+
path: ["folders", pages2.rootFolderId, "children"],
|
|
4590
4591
|
message: "Root folder must start with the home page"
|
|
4591
4592
|
});
|
|
4592
4593
|
}
|
|
4593
4594
|
const childParents = /* @__PURE__ */ new Map();
|
|
4594
|
-
for (const [
|
|
4595
|
-
for (const [index, childId] of
|
|
4595
|
+
for (const [folderId2, folder2] of pages2.folders) {
|
|
4596
|
+
for (const [index, childId] of folder2.children.entries()) {
|
|
4596
4597
|
const parentId = childParents.get(childId);
|
|
4597
4598
|
if (parentId !== void 0) {
|
|
4598
4599
|
context.addIssue({
|
|
4599
4600
|
code: z.ZodIssueCode.custom,
|
|
4600
|
-
path: ["folders",
|
|
4601
|
+
path: ["folders", folderId2, "children", index],
|
|
4601
4602
|
message: `Child is already registered in folder "${parentId}"`
|
|
4602
4603
|
});
|
|
4603
4604
|
continue;
|
|
4604
4605
|
}
|
|
4605
|
-
childParents.set(childId,
|
|
4606
|
+
childParents.set(childId, folderId2);
|
|
4606
4607
|
}
|
|
4607
4608
|
}
|
|
4608
|
-
const hasFolderCycle = (
|
|
4609
|
-
if (path.has(
|
|
4609
|
+
const hasFolderCycle = (folderId2, path = /* @__PURE__ */ new Set()) => {
|
|
4610
|
+
if (path.has(folderId2)) {
|
|
4610
4611
|
return true;
|
|
4611
4612
|
}
|
|
4612
|
-
const
|
|
4613
|
-
if (
|
|
4613
|
+
const folder2 = pages2.folders.get(folderId2);
|
|
4614
|
+
if (folder2 === void 0) {
|
|
4614
4615
|
return false;
|
|
4615
4616
|
}
|
|
4616
|
-
path.add(
|
|
4617
|
-
for (const childId of
|
|
4618
|
-
if (
|
|
4617
|
+
path.add(folderId2);
|
|
4618
|
+
for (const childId of folder2.children) {
|
|
4619
|
+
if (pages2.folders.has(childId) && hasFolderCycle(childId, path)) {
|
|
4619
4620
|
return true;
|
|
4620
4621
|
}
|
|
4621
4622
|
}
|
|
4622
|
-
path.delete(
|
|
4623
|
+
path.delete(folderId2);
|
|
4623
4624
|
return false;
|
|
4624
4625
|
};
|
|
4625
|
-
for (const
|
|
4626
|
-
if (hasFolderCycle(
|
|
4626
|
+
for (const folderId2 of pages2.folders.keys()) {
|
|
4627
|
+
if (hasFolderCycle(folderId2)) {
|
|
4627
4628
|
context.addIssue({
|
|
4628
4629
|
code: z.ZodIssueCode.custom,
|
|
4629
|
-
path: ["folders",
|
|
4630
|
+
path: ["folders", folderId2, "children"],
|
|
4630
4631
|
message: "Folders can't contain cycles"
|
|
4631
4632
|
});
|
|
4632
4633
|
}
|
|
@@ -4634,31 +4635,31 @@ var Pages = z.object({
|
|
|
4634
4635
|
});
|
|
4635
4636
|
|
|
4636
4637
|
// ../css-engine/src/schema.ts
|
|
4637
|
-
var
|
|
4638
|
-
var
|
|
4638
|
+
var unit = z.string();
|
|
4639
|
+
var unitValue = z.object({
|
|
4639
4640
|
type: z.literal("unit"),
|
|
4640
|
-
unit
|
|
4641
|
+
unit,
|
|
4641
4642
|
value: z.number(),
|
|
4642
4643
|
hidden: z.boolean().optional()
|
|
4643
4644
|
});
|
|
4644
|
-
var
|
|
4645
|
+
var keywordValue = z.object({
|
|
4645
4646
|
type: z.literal("keyword"),
|
|
4646
4647
|
// @todo use exact type
|
|
4647
4648
|
value: z.string(),
|
|
4648
4649
|
hidden: z.boolean().optional()
|
|
4649
4650
|
});
|
|
4650
|
-
var
|
|
4651
|
+
var unparsedValue = z.object({
|
|
4651
4652
|
type: z.literal("unparsed"),
|
|
4652
4653
|
value: z.string(),
|
|
4653
4654
|
// For the builder we want to be able to hide background-image
|
|
4654
4655
|
hidden: z.boolean().optional()
|
|
4655
4656
|
});
|
|
4656
|
-
var
|
|
4657
|
+
var fontFamilyValue = z.object({
|
|
4657
4658
|
type: z.literal("fontFamily"),
|
|
4658
4659
|
value: z.array(z.string()),
|
|
4659
4660
|
hidden: z.boolean().optional()
|
|
4660
4661
|
});
|
|
4661
|
-
var
|
|
4662
|
+
var rgbValue = z.object({
|
|
4662
4663
|
type: z.literal("rgb"),
|
|
4663
4664
|
r: z.number(),
|
|
4664
4665
|
g: z.number(),
|
|
@@ -4666,7 +4667,7 @@ var RgbValue = z.object({
|
|
|
4666
4667
|
alpha: z.number(),
|
|
4667
4668
|
hidden: z.boolean().optional()
|
|
4668
4669
|
});
|
|
4669
|
-
var
|
|
4670
|
+
var colorValue = z.object({
|
|
4670
4671
|
type: z.literal("color"),
|
|
4671
4672
|
// all these color spaces are defined by design tokens specification
|
|
4672
4673
|
colorSpace: z.union([
|
|
@@ -4687,16 +4688,16 @@ var ColorValue = z.object({
|
|
|
4687
4688
|
z.literal("xyz-d50")
|
|
4688
4689
|
]),
|
|
4689
4690
|
components: z.tuple([z.number(), z.number(), z.number()]),
|
|
4690
|
-
alpha: z.union([z.number(), z.lazy(() =>
|
|
4691
|
+
alpha: z.union([z.number(), z.lazy(() => varValue)]),
|
|
4691
4692
|
hidden: z.boolean().optional()
|
|
4692
4693
|
});
|
|
4693
|
-
var
|
|
4694
|
+
var functionValue = z.object({
|
|
4694
4695
|
type: z.literal("function"),
|
|
4695
4696
|
name: z.string(),
|
|
4696
|
-
args: z.lazy(() =>
|
|
4697
|
+
args: z.lazy(() => styleValue),
|
|
4697
4698
|
hidden: z.boolean().optional()
|
|
4698
4699
|
});
|
|
4699
|
-
var
|
|
4700
|
+
var imageValue = z.object({
|
|
4700
4701
|
type: z.literal("image"),
|
|
4701
4702
|
value: z.union([
|
|
4702
4703
|
z.object({ type: z.literal("asset"), value: z.string() }),
|
|
@@ -4707,92 +4708,92 @@ var ImageValue = z.object({
|
|
|
4707
4708
|
// For the builder we want to be able to hide images
|
|
4708
4709
|
hidden: z.boolean().optional()
|
|
4709
4710
|
});
|
|
4710
|
-
var
|
|
4711
|
+
var guaranteedInvalidValue = z.object({
|
|
4711
4712
|
type: z.literal("guaranteedInvalid"),
|
|
4712
4713
|
hidden: z.boolean().optional()
|
|
4713
4714
|
});
|
|
4714
|
-
var
|
|
4715
|
+
var invalidValue = z.object({
|
|
4715
4716
|
type: z.literal("invalid"),
|
|
4716
4717
|
value: z.string(),
|
|
4717
4718
|
hidden: z.boolean().optional()
|
|
4718
4719
|
});
|
|
4719
|
-
var
|
|
4720
|
+
var unsetValue = z.object({
|
|
4720
4721
|
type: z.literal("unset"),
|
|
4721
4722
|
value: z.literal(""),
|
|
4722
4723
|
hidden: z.boolean().optional()
|
|
4723
4724
|
});
|
|
4724
|
-
var
|
|
4725
|
-
|
|
4726
|
-
|
|
4727
|
-
|
|
4728
|
-
|
|
4729
|
-
|
|
4725
|
+
var varFallback = z.union([
|
|
4726
|
+
unparsedValue,
|
|
4727
|
+
keywordValue,
|
|
4728
|
+
unitValue,
|
|
4729
|
+
colorValue,
|
|
4730
|
+
rgbValue
|
|
4730
4731
|
]);
|
|
4731
|
-
var
|
|
4732
|
+
var varValue = z.object({
|
|
4732
4733
|
type: z.literal("var"),
|
|
4733
4734
|
value: z.string(),
|
|
4734
|
-
fallback:
|
|
4735
|
+
fallback: varFallback.optional(),
|
|
4735
4736
|
hidden: z.boolean().optional()
|
|
4736
4737
|
});
|
|
4737
|
-
var
|
|
4738
|
-
|
|
4739
|
-
|
|
4740
|
-
|
|
4741
|
-
|
|
4742
|
-
|
|
4743
|
-
|
|
4744
|
-
|
|
4745
|
-
|
|
4738
|
+
var tupleValueItem = z.union([
|
|
4739
|
+
unitValue,
|
|
4740
|
+
keywordValue,
|
|
4741
|
+
unparsedValue,
|
|
4742
|
+
imageValue,
|
|
4743
|
+
colorValue,
|
|
4744
|
+
rgbValue,
|
|
4745
|
+
functionValue,
|
|
4746
|
+
varValue
|
|
4746
4747
|
]);
|
|
4747
|
-
var
|
|
4748
|
+
var tupleValue = z.object({
|
|
4748
4749
|
type: z.literal("tuple"),
|
|
4749
|
-
value: z.array(
|
|
4750
|
+
value: z.array(tupleValueItem),
|
|
4750
4751
|
hidden: z.boolean().optional()
|
|
4751
4752
|
});
|
|
4752
|
-
var
|
|
4753
|
+
var shadowValue = z.object({
|
|
4753
4754
|
type: z.literal("shadow"),
|
|
4754
4755
|
hidden: z.boolean().optional(),
|
|
4755
4756
|
position: z.union([z.literal("inset"), z.literal("outset")]),
|
|
4756
|
-
offsetX: z.union([
|
|
4757
|
-
offsetY: z.union([
|
|
4758
|
-
blur: z.union([
|
|
4759
|
-
spread: z.union([
|
|
4760
|
-
color: z.union([
|
|
4757
|
+
offsetX: z.union([unitValue, varValue]),
|
|
4758
|
+
offsetY: z.union([unitValue, varValue]),
|
|
4759
|
+
blur: z.union([unitValue, varValue]).optional(),
|
|
4760
|
+
spread: z.union([unitValue, varValue]).optional(),
|
|
4761
|
+
color: z.union([colorValue, rgbValue, keywordValue, varValue]).optional()
|
|
4761
4762
|
});
|
|
4762
|
-
var
|
|
4763
|
-
|
|
4764
|
-
|
|
4765
|
-
|
|
4766
|
-
|
|
4767
|
-
|
|
4768
|
-
|
|
4769
|
-
|
|
4770
|
-
|
|
4771
|
-
|
|
4772
|
-
|
|
4773
|
-
|
|
4763
|
+
var layerValueItem = z.union([
|
|
4764
|
+
unitValue,
|
|
4765
|
+
keywordValue,
|
|
4766
|
+
unparsedValue,
|
|
4767
|
+
imageValue,
|
|
4768
|
+
tupleValue,
|
|
4769
|
+
shadowValue,
|
|
4770
|
+
colorValue,
|
|
4771
|
+
rgbValue,
|
|
4772
|
+
invalidValue,
|
|
4773
|
+
functionValue,
|
|
4774
|
+
varValue
|
|
4774
4775
|
]);
|
|
4775
|
-
var
|
|
4776
|
+
var layersValue = z.object({
|
|
4776
4777
|
type: z.literal("layers"),
|
|
4777
|
-
value: z.array(
|
|
4778
|
+
value: z.array(layerValueItem),
|
|
4778
4779
|
hidden: z.boolean().optional()
|
|
4779
4780
|
});
|
|
4780
|
-
var
|
|
4781
|
-
|
|
4782
|
-
|
|
4783
|
-
|
|
4784
|
-
|
|
4785
|
-
|
|
4786
|
-
|
|
4787
|
-
|
|
4788
|
-
|
|
4789
|
-
|
|
4790
|
-
|
|
4791
|
-
|
|
4792
|
-
|
|
4793
|
-
|
|
4794
|
-
|
|
4795
|
-
|
|
4781
|
+
var styleValue = z.union([
|
|
4782
|
+
imageValue,
|
|
4783
|
+
layersValue,
|
|
4784
|
+
unitValue,
|
|
4785
|
+
keywordValue,
|
|
4786
|
+
fontFamilyValue,
|
|
4787
|
+
colorValue,
|
|
4788
|
+
rgbValue,
|
|
4789
|
+
unparsedValue,
|
|
4790
|
+
tupleValue,
|
|
4791
|
+
functionValue,
|
|
4792
|
+
guaranteedInvalidValue,
|
|
4793
|
+
invalidValue,
|
|
4794
|
+
unsetValue,
|
|
4795
|
+
varValue,
|
|
4796
|
+
shadowValue
|
|
4796
4797
|
]);
|
|
4797
4798
|
|
|
4798
4799
|
// ../sdk/src/schema/animation-schema.ts
|
|
@@ -4843,12 +4844,12 @@ var RANGE_UNITS = [
|
|
|
4843
4844
|
"lvmax",
|
|
4844
4845
|
"dvmax"
|
|
4845
4846
|
];
|
|
4846
|
-
var
|
|
4847
|
-
var
|
|
4847
|
+
var rangeUnit = literalUnion(RANGE_UNITS);
|
|
4848
|
+
var rangeUnitValue = z.union([
|
|
4848
4849
|
z.object({
|
|
4849
4850
|
type: z.literal("unit"),
|
|
4850
4851
|
value: z.number(),
|
|
4851
|
-
unit:
|
|
4852
|
+
unit: rangeUnit
|
|
4852
4853
|
}),
|
|
4853
4854
|
z.object({
|
|
4854
4855
|
type: z.literal("unparsed"),
|
|
@@ -4860,32 +4861,32 @@ var rangeUnitValueSchema = z.union([
|
|
|
4860
4861
|
})
|
|
4861
4862
|
]);
|
|
4862
4863
|
var TIME_UNITS = ["ms", "s"];
|
|
4863
|
-
var
|
|
4864
|
-
var
|
|
4864
|
+
var timeUnit = literalUnion(TIME_UNITS);
|
|
4865
|
+
var durationUnitValue = z.union([
|
|
4865
4866
|
z.object({
|
|
4866
4867
|
type: z.literal("unit"),
|
|
4867
4868
|
value: z.number(),
|
|
4868
|
-
unit:
|
|
4869
|
+
unit: timeUnit
|
|
4869
4870
|
}),
|
|
4870
4871
|
z.object({
|
|
4871
4872
|
type: z.literal("var"),
|
|
4872
4873
|
value: z.string()
|
|
4873
4874
|
})
|
|
4874
4875
|
]);
|
|
4875
|
-
var
|
|
4876
|
-
var
|
|
4877
|
-
|
|
4876
|
+
var iterationsUnitValue = z.union([z.number(), z.literal("infinite")]);
|
|
4877
|
+
var insetUnitValue = z.union([
|
|
4878
|
+
rangeUnitValue,
|
|
4878
4879
|
z.object({
|
|
4879
4880
|
type: z.literal("keyword"),
|
|
4880
4881
|
value: z.literal("auto")
|
|
4881
4882
|
})
|
|
4882
4883
|
]);
|
|
4883
|
-
var
|
|
4884
|
-
var
|
|
4884
|
+
var keyframeStyles = z.record(styleValue);
|
|
4885
|
+
var animationKeyframe = z.object({
|
|
4885
4886
|
offset: z.number().optional(),
|
|
4886
|
-
styles:
|
|
4887
|
+
styles: keyframeStyles
|
|
4887
4888
|
});
|
|
4888
|
-
var
|
|
4889
|
+
var keyframeEffectOptions = z.object({
|
|
4889
4890
|
easing: z.string().optional(),
|
|
4890
4891
|
fill: z.union([
|
|
4891
4892
|
z.literal("none"),
|
|
@@ -4894,29 +4895,23 @@ var keyframeEffectOptionsSchema = z.object({
|
|
|
4894
4895
|
z.literal("both")
|
|
4895
4896
|
]).optional(),
|
|
4896
4897
|
// FillMode
|
|
4897
|
-
duration:
|
|
4898
|
-
delay:
|
|
4899
|
-
iterations:
|
|
4898
|
+
duration: durationUnitValue.optional(),
|
|
4899
|
+
delay: durationUnitValue.optional(),
|
|
4900
|
+
iterations: iterationsUnitValue.optional()
|
|
4900
4901
|
});
|
|
4901
|
-
var
|
|
4902
|
-
|
|
4903
|
-
|
|
4904
|
-
|
|
4905
|
-
|
|
4906
|
-
scrollNamedRangeSchema,
|
|
4907
|
-
rangeUnitValueSchema
|
|
4908
|
-
]);
|
|
4909
|
-
var scrollRangeOptionsSchema = z.object({
|
|
4910
|
-
rangeStart: scrollRangeValueSchema.optional(),
|
|
4911
|
-
rangeEnd: scrollRangeValueSchema.optional()
|
|
4902
|
+
var scrollNamedRange = z.union([z.literal("start"), z.literal("end")]);
|
|
4903
|
+
var scrollRangeValue = z.tuple([scrollNamedRange, rangeUnitValue]);
|
|
4904
|
+
var scrollRangeOptions = z.object({
|
|
4905
|
+
rangeStart: scrollRangeValue.optional(),
|
|
4906
|
+
rangeEnd: scrollRangeValue.optional()
|
|
4912
4907
|
});
|
|
4913
|
-
var
|
|
4908
|
+
var animationAxis = z.union([
|
|
4914
4909
|
z.literal("block"),
|
|
4915
4910
|
z.literal("inline"),
|
|
4916
4911
|
z.literal("x"),
|
|
4917
4912
|
z.literal("y")
|
|
4918
4913
|
]);
|
|
4919
|
-
var
|
|
4914
|
+
var viewNamedRange = z.union([
|
|
4920
4915
|
z.literal("contain"),
|
|
4921
4916
|
z.literal("cover"),
|
|
4922
4917
|
z.literal("entry"),
|
|
@@ -4924,62 +4919,59 @@ var viewNamedRangeSchema = z.union([
|
|
|
4924
4919
|
z.literal("entry-crossing"),
|
|
4925
4920
|
z.literal("exit-crossing")
|
|
4926
4921
|
]);
|
|
4927
|
-
var
|
|
4928
|
-
|
|
4929
|
-
|
|
4930
|
-
|
|
4931
|
-
var viewRangeOptionsSchema = z.object({
|
|
4932
|
-
rangeStart: viewRangeValueSchema.optional(),
|
|
4933
|
-
rangeEnd: viewRangeValueSchema.optional()
|
|
4922
|
+
var viewRangeValue = z.tuple([viewNamedRange, rangeUnitValue]);
|
|
4923
|
+
var viewRangeOptions = z.object({
|
|
4924
|
+
rangeStart: viewRangeValue.optional(),
|
|
4925
|
+
rangeEnd: viewRangeValue.optional()
|
|
4934
4926
|
});
|
|
4935
4927
|
var baseAnimation = z.object({
|
|
4936
4928
|
name: z.string().optional(),
|
|
4937
4929
|
description: z.string().optional(),
|
|
4938
4930
|
enabled: z.array(z.tuple([z.string().describe("breakpointId"), z.boolean()])).optional(),
|
|
4939
|
-
keyframes: z.array(
|
|
4931
|
+
keyframes: z.array(animationKeyframe)
|
|
4940
4932
|
});
|
|
4941
|
-
var
|
|
4933
|
+
var scrollAnimation = baseAnimation.merge(
|
|
4942
4934
|
z.object({
|
|
4943
|
-
timing:
|
|
4935
|
+
timing: keyframeEffectOptions.merge(scrollRangeOptions)
|
|
4944
4936
|
})
|
|
4945
4937
|
);
|
|
4946
|
-
var
|
|
4938
|
+
var scrollAction = z.object({
|
|
4947
4939
|
type: z.literal("scroll"),
|
|
4948
4940
|
source: z.union([z.literal("closest"), z.literal("nearest"), z.literal("root")]).optional(),
|
|
4949
|
-
axis:
|
|
4950
|
-
animations: z.array(
|
|
4941
|
+
axis: animationAxis.optional(),
|
|
4942
|
+
animations: z.array(scrollAnimation),
|
|
4951
4943
|
isPinned: z.boolean().optional(),
|
|
4952
4944
|
debug: z.boolean().optional()
|
|
4953
4945
|
});
|
|
4954
|
-
var
|
|
4946
|
+
var viewAnimation = baseAnimation.merge(
|
|
4955
4947
|
z.object({
|
|
4956
|
-
timing:
|
|
4948
|
+
timing: keyframeEffectOptions.merge(viewRangeOptions)
|
|
4957
4949
|
})
|
|
4958
4950
|
);
|
|
4959
|
-
var
|
|
4951
|
+
var viewAction = z.object({
|
|
4960
4952
|
type: z.literal("view"),
|
|
4961
4953
|
subject: z.string().optional(),
|
|
4962
|
-
axis:
|
|
4963
|
-
animations: z.array(
|
|
4964
|
-
insetStart:
|
|
4965
|
-
insetEnd:
|
|
4954
|
+
axis: animationAxis.optional(),
|
|
4955
|
+
animations: z.array(viewAnimation),
|
|
4956
|
+
insetStart: insetUnitValue.optional(),
|
|
4957
|
+
insetEnd: insetUnitValue.optional(),
|
|
4966
4958
|
isPinned: z.boolean().optional(),
|
|
4967
4959
|
debug: z.boolean().optional()
|
|
4968
4960
|
});
|
|
4969
|
-
var
|
|
4970
|
-
|
|
4971
|
-
|
|
4961
|
+
var animationAction = z.discriminatedUnion("type", [
|
|
4962
|
+
scrollAction,
|
|
4963
|
+
viewAction
|
|
4972
4964
|
]);
|
|
4973
4965
|
|
|
4974
4966
|
// ../sdk/src/schema/props.ts
|
|
4975
|
-
var
|
|
4967
|
+
var propId = z.string();
|
|
4976
4968
|
var baseProp = {
|
|
4977
|
-
id:
|
|
4969
|
+
id: propId,
|
|
4978
4970
|
instanceId: z.string(),
|
|
4979
4971
|
name: z.string(),
|
|
4980
4972
|
required: z.optional(z.boolean())
|
|
4981
4973
|
};
|
|
4982
|
-
var
|
|
4974
|
+
var prop = z.union([
|
|
4983
4975
|
z.object({
|
|
4984
4976
|
...baseProp,
|
|
4985
4977
|
type: z.literal("number"),
|
|
@@ -5055,24 +5047,24 @@ var Prop = z.union([
|
|
|
5055
5047
|
z.object({
|
|
5056
5048
|
...baseProp,
|
|
5057
5049
|
type: z.literal("animationAction"),
|
|
5058
|
-
value:
|
|
5050
|
+
value: animationAction
|
|
5059
5051
|
})
|
|
5060
5052
|
]);
|
|
5061
|
-
var
|
|
5053
|
+
var props = z.map(propId, prop);
|
|
5062
5054
|
|
|
5063
5055
|
// ../sdk/src/schema/resources.ts
|
|
5064
|
-
var
|
|
5065
|
-
var
|
|
5056
|
+
var resourceId = z.string();
|
|
5057
|
+
var method = z.union([
|
|
5066
5058
|
z.literal("get"),
|
|
5067
5059
|
z.literal("post"),
|
|
5068
5060
|
z.literal("put"),
|
|
5069
5061
|
z.literal("delete")
|
|
5070
5062
|
]);
|
|
5071
|
-
var
|
|
5072
|
-
id:
|
|
5063
|
+
var resource = z.object({
|
|
5064
|
+
id: resourceId,
|
|
5073
5065
|
name: z.string(),
|
|
5074
5066
|
control: z.optional(z.union([z.literal("system"), z.literal("graphql")])),
|
|
5075
|
-
method
|
|
5067
|
+
method,
|
|
5076
5068
|
// expression
|
|
5077
5069
|
url: z.string(),
|
|
5078
5070
|
searchParams: z.array(
|
|
@@ -5092,9 +5084,9 @@ var Resource = z.object({
|
|
|
5092
5084
|
// expression
|
|
5093
5085
|
body: z.optional(z.string())
|
|
5094
5086
|
});
|
|
5095
|
-
var
|
|
5087
|
+
var resourceRequest = z.object({
|
|
5096
5088
|
name: z.string(),
|
|
5097
|
-
method
|
|
5089
|
+
method,
|
|
5098
5090
|
url: z.string(),
|
|
5099
5091
|
searchParams: z.array(
|
|
5100
5092
|
z.object({
|
|
@@ -5112,80 +5104,80 @@ var ResourceRequest = z.object({
|
|
|
5112
5104
|
),
|
|
5113
5105
|
body: z.optional(z.unknown())
|
|
5114
5106
|
});
|
|
5115
|
-
var
|
|
5107
|
+
var resources = z.map(resourceId, resource);
|
|
5116
5108
|
|
|
5117
5109
|
// ../sdk/src/schema/style-source-selections.ts
|
|
5118
|
-
var
|
|
5119
|
-
var
|
|
5120
|
-
var
|
|
5121
|
-
instanceId:
|
|
5122
|
-
values: z.array(
|
|
5110
|
+
var instanceId2 = z.string();
|
|
5111
|
+
var styleSourceId = z.string();
|
|
5112
|
+
var styleSourceSelection = z.object({
|
|
5113
|
+
instanceId: instanceId2,
|
|
5114
|
+
values: z.array(styleSourceId)
|
|
5123
5115
|
});
|
|
5124
|
-
var
|
|
5116
|
+
var styleSourceSelections = z.map(instanceId2, styleSourceSelection);
|
|
5125
5117
|
|
|
5126
5118
|
// ../sdk/src/schema/style-sources.ts
|
|
5127
|
-
var
|
|
5128
|
-
var
|
|
5119
|
+
var styleSourceId2 = z.string();
|
|
5120
|
+
var styleSourceToken = z.object({
|
|
5129
5121
|
type: z.literal("token"),
|
|
5130
|
-
id:
|
|
5122
|
+
id: styleSourceId2,
|
|
5131
5123
|
name: z.string(),
|
|
5132
5124
|
locked: z.boolean().optional()
|
|
5133
5125
|
});
|
|
5134
|
-
var
|
|
5126
|
+
var styleSourceLocal = z.object({
|
|
5135
5127
|
type: z.literal("local"),
|
|
5136
|
-
id:
|
|
5128
|
+
id: styleSourceId2
|
|
5137
5129
|
});
|
|
5138
|
-
var
|
|
5139
|
-
var
|
|
5130
|
+
var styleSource = z.union([styleSourceToken, styleSourceLocal]);
|
|
5131
|
+
var styleSources = z.map(styleSourceId2, styleSource);
|
|
5140
5132
|
|
|
5141
5133
|
// ../sdk/src/schema/styles.ts
|
|
5142
|
-
var
|
|
5134
|
+
var styleDeclRaw = z.object({
|
|
5143
5135
|
styleSourceId: z.string(),
|
|
5144
5136
|
breakpointId: z.string(),
|
|
5145
5137
|
state: z.optional(z.string()),
|
|
5146
5138
|
// @todo can't figure out how to make property to be enum
|
|
5147
5139
|
property: z.string(),
|
|
5148
|
-
value:
|
|
5140
|
+
value: styleValue,
|
|
5149
5141
|
listed: z.boolean().optional().describe("Whether the style is from the Advanced panel")
|
|
5150
5142
|
});
|
|
5151
|
-
var
|
|
5152
|
-
var
|
|
5143
|
+
var styleDecl = styleDeclRaw;
|
|
5144
|
+
var styles = z.map(z.string(), styleDecl);
|
|
5153
5145
|
|
|
5154
5146
|
// ../project-migrations/src/pages.ts
|
|
5155
|
-
var
|
|
5156
|
-
meta:
|
|
5157
|
-
compiler:
|
|
5158
|
-
redirects: z.array(
|
|
5147
|
+
var serializedPages = z.object({
|
|
5148
|
+
meta: projectMeta.optional(),
|
|
5149
|
+
compiler: compilerSettings.optional(),
|
|
5150
|
+
redirects: z.array(pageRedirect).optional(),
|
|
5159
5151
|
homePageId: z.string(),
|
|
5160
5152
|
rootFolderId: z.string(),
|
|
5161
|
-
pages: z.array(
|
|
5162
|
-
pageTemplates: z.union([z.array(
|
|
5163
|
-
folders: z.array(
|
|
5153
|
+
pages: z.array(page),
|
|
5154
|
+
pageTemplates: z.union([z.array(pageTemplate), z.record(pageTemplate)]).optional(),
|
|
5155
|
+
folders: z.array(folder)
|
|
5164
5156
|
});
|
|
5165
5157
|
|
|
5166
5158
|
// ../project-build/src/schema.ts
|
|
5167
|
-
var
|
|
5159
|
+
var entry = (value) => z.tuple([z.string(), value]);
|
|
5168
5160
|
var serializedBuildShape = {
|
|
5169
5161
|
id: z.string(),
|
|
5170
5162
|
projectId: z.string(),
|
|
5171
5163
|
version: z.number(),
|
|
5172
5164
|
createdAt: z.string(),
|
|
5173
5165
|
updatedAt: z.string(),
|
|
5174
|
-
pages:
|
|
5175
|
-
breakpoints: z.array(
|
|
5176
|
-
styles: z.array(
|
|
5177
|
-
styleSources: z.array(
|
|
5178
|
-
styleSourceSelections: z.array(
|
|
5179
|
-
props: z.array(
|
|
5180
|
-
instances: z.array(
|
|
5181
|
-
dataSources: z.array(
|
|
5182
|
-
resources: z.array(
|
|
5183
|
-
deployment:
|
|
5166
|
+
pages: serializedPages,
|
|
5167
|
+
breakpoints: z.array(entry(breakpoint)),
|
|
5168
|
+
styles: z.array(entry(styleDecl)),
|
|
5169
|
+
styleSources: z.array(entry(styleSource)),
|
|
5170
|
+
styleSourceSelections: z.array(entry(styleSourceSelection)),
|
|
5171
|
+
props: z.array(entry(prop)),
|
|
5172
|
+
instances: z.array(entry(instance)),
|
|
5173
|
+
dataSources: z.array(entry(dataSource)),
|
|
5174
|
+
resources: z.array(entry(resource)),
|
|
5175
|
+
deployment: deployment.optional()
|
|
5184
5176
|
};
|
|
5185
|
-
var
|
|
5177
|
+
var serializedBuild = z.object(serializedBuildShape);
|
|
5186
5178
|
|
|
5187
5179
|
// ../wsauth/src/schema.ts
|
|
5188
|
-
var
|
|
5180
|
+
var basicAuthInput = z.union([
|
|
5189
5181
|
z.object({
|
|
5190
5182
|
method: z.literal("basic"),
|
|
5191
5183
|
login: z.string(),
|
|
@@ -5197,14 +5189,11 @@ var basicAuthInputSchema = z.union([
|
|
|
5197
5189
|
password: z.string()
|
|
5198
5190
|
})
|
|
5199
5191
|
]);
|
|
5200
|
-
var
|
|
5192
|
+
var wsAuthConfig = z.object({
|
|
5201
5193
|
version: z.literal(1),
|
|
5202
|
-
routes: z.record(
|
|
5194
|
+
routes: z.record(basicAuthInput)
|
|
5203
5195
|
});
|
|
5204
5196
|
|
|
5205
|
-
// package.json
|
|
5206
|
-
var version = "0.272.0";
|
|
5207
|
-
|
|
5208
5197
|
// src/contract-version.ts
|
|
5209
5198
|
var getFunctionContract = (value) => {
|
|
5210
5199
|
if (typeof value !== "function") {
|
|
@@ -5379,8 +5368,7 @@ var stableStringify = (value) => {
|
|
|
5379
5368
|
}
|
|
5380
5369
|
return JSON.stringify(value);
|
|
5381
5370
|
};
|
|
5382
|
-
var createContractVersion = (schema,
|
|
5383
|
-
const bundlePackageVersion = version2.replace(/-webstudio-version$/, "");
|
|
5371
|
+
var createContractVersion = (schema, additionalSchemas = []) => {
|
|
5384
5372
|
let hash = 2166136261;
|
|
5385
5373
|
for (const char of stableStringify({
|
|
5386
5374
|
additionalSchemas: additionalSchemas.map(
|
|
@@ -5391,75 +5379,46 @@ var createContractVersion = (schema, version2, additionalSchemas = []) => {
|
|
|
5391
5379
|
hash ^= char.charCodeAt(0);
|
|
5392
5380
|
hash = Math.imul(hash, 16777619);
|
|
5393
5381
|
}
|
|
5394
|
-
return `bundle-${
|
|
5382
|
+
return `bundle-${(hash >>> 0).toString(16).padStart(8, "0")}`;
|
|
5395
5383
|
};
|
|
5396
5384
|
|
|
5397
5385
|
// src/schema.ts
|
|
5398
|
-
var
|
|
5399
|
-
var
|
|
5400
|
-
|
|
5401
|
-
|
|
5402
|
-
|
|
5403
|
-
|
|
5404
|
-
|
|
5405
|
-
}
|
|
5406
|
-
const paddingIndex = value.indexOf("=");
|
|
5407
|
-
return paddingIndex === -1 || paddingIndex >= value.length - 2;
|
|
5408
|
-
};
|
|
5409
|
-
var assertAssetFileDataString = Object.assign(
|
|
5410
|
-
(value, context) => {
|
|
5411
|
-
if (isAssetFileDataString(value)) {
|
|
5412
|
-
return;
|
|
5413
|
-
}
|
|
5414
|
-
context.addIssue({
|
|
5415
|
-
code: z.ZodIssueCode.custom,
|
|
5416
|
-
message: "Invalid asset file data"
|
|
5417
|
-
});
|
|
5418
|
-
},
|
|
5419
|
-
{
|
|
5420
|
-
contract: {
|
|
5421
|
-
encoding: "base64",
|
|
5422
|
-
length: "multiple-of-4",
|
|
5423
|
-
padding: "only-last-two-characters",
|
|
5424
|
-
pattern: assetFileDataPattern
|
|
5425
|
-
}
|
|
5426
|
-
}
|
|
5427
|
-
);
|
|
5428
|
-
var assetFileNameSchema = z.string().min(1).regex(/^(?!\.{1,2}$)[^/\\]+$/);
|
|
5429
|
-
var assetFileDataSchema = z.object({
|
|
5430
|
-
name: assetFileNameSchema,
|
|
5431
|
-
data: z.string().superRefine(assertAssetFileDataString)
|
|
5432
|
-
});
|
|
5433
|
-
var projectBundleSchema = z.object({
|
|
5434
|
-
page: Page,
|
|
5435
|
-
pages: z.array(Page),
|
|
5436
|
-
build: SerializedBuildSchema,
|
|
5437
|
-
assets: z.array(Asset),
|
|
5386
|
+
var maxProjectBundleSize = 20 * 1024 * 1024;
|
|
5387
|
+
var assetFileName = z.string().min(1).regex(/^(?!\.{1,2}$)[^/\\]+$/);
|
|
5388
|
+
var projectBundle = z.object({
|
|
5389
|
+
page,
|
|
5390
|
+
pages: z.array(page),
|
|
5391
|
+
build: serializedBuild,
|
|
5392
|
+
assets: z.array(asset),
|
|
5438
5393
|
origin: z.string().optional()
|
|
5439
5394
|
});
|
|
5440
|
-
var
|
|
5395
|
+
var publishedProjectBundle = projectBundle.extend({
|
|
5441
5396
|
bundleVersion: z.union([z.string(), z.number()]).optional(),
|
|
5442
5397
|
user: z.object({ email: z.string().nullable() }).optional(),
|
|
5443
5398
|
projectDomain: z.string(),
|
|
5444
5399
|
projectTitle: z.string()
|
|
5445
5400
|
});
|
|
5446
|
-
var
|
|
5447
|
-
projectId: z.string(),
|
|
5448
|
-
data:
|
|
5449
|
-
|
|
5401
|
+
var importProjectBundleInput = z.object({
|
|
5402
|
+
projectId: z.string().min(1),
|
|
5403
|
+
data: publishedProjectBundle.optional(),
|
|
5404
|
+
uploadId: z.string().min(1).optional(),
|
|
5450
5405
|
ignoreVersionCheck: z.boolean().optional()
|
|
5451
|
-
})
|
|
5452
|
-
|
|
5406
|
+
}).refine(
|
|
5407
|
+
({ data, uploadId }) => data === void 0 !== (uploadId === void 0),
|
|
5408
|
+
{
|
|
5409
|
+
message: "Provide either project bundle data or an upload id",
|
|
5410
|
+
path: ["data"]
|
|
5411
|
+
}
|
|
5412
|
+
);
|
|
5413
|
+
var importProjectBundleResult = z.object({
|
|
5453
5414
|
version: z.number()
|
|
5454
5415
|
});
|
|
5455
|
-
var
|
|
5456
|
-
projectId: z.string()
|
|
5416
|
+
var checkProjectBuildPermissionInput = z.object({
|
|
5417
|
+
projectId: z.string().min(1)
|
|
5457
5418
|
});
|
|
5458
|
-
var bundleVersion = createContractVersion(
|
|
5459
|
-
|
|
5460
|
-
|
|
5461
|
-
[wsAuthConfigSchema]
|
|
5462
|
-
);
|
|
5419
|
+
var bundleVersion = createContractVersion(publishedProjectBundle, [
|
|
5420
|
+
wsAuthConfig
|
|
5421
|
+
]);
|
|
5463
5422
|
|
|
5464
5423
|
// src/fixtures.ts
|
|
5465
5424
|
var createPageFixture = (overrides = {}) => ({
|
|
@@ -5483,10 +5442,10 @@ var createImageAssetFixture = (overrides = {}) => ({
|
|
|
5483
5442
|
...overrides
|
|
5484
5443
|
});
|
|
5485
5444
|
var createSerializedBuildFixture = ({
|
|
5486
|
-
pages,
|
|
5445
|
+
pages: pages2,
|
|
5487
5446
|
...overrides
|
|
5488
5447
|
} = {}) => {
|
|
5489
|
-
const
|
|
5448
|
+
const page2 = createPageFixture();
|
|
5490
5449
|
return {
|
|
5491
5450
|
id: "build-1",
|
|
5492
5451
|
projectId: "source-project",
|
|
@@ -5494,18 +5453,18 @@ var createSerializedBuildFixture = ({
|
|
|
5494
5453
|
createdAt: "2024-01-01T00:00:00.000Z",
|
|
5495
5454
|
updatedAt: "2024-01-01T00:00:00.000Z",
|
|
5496
5455
|
pages: {
|
|
5497
|
-
homePageId:
|
|
5456
|
+
homePageId: page2.id,
|
|
5498
5457
|
rootFolderId: "root-folder",
|
|
5499
|
-
pages: [
|
|
5458
|
+
pages: [page2],
|
|
5500
5459
|
folders: [
|
|
5501
5460
|
{
|
|
5502
5461
|
id: "root-folder",
|
|
5503
5462
|
name: "Root",
|
|
5504
5463
|
slug: "",
|
|
5505
|
-
children: [
|
|
5464
|
+
children: [page2.id]
|
|
5506
5465
|
}
|
|
5507
5466
|
],
|
|
5508
|
-
...
|
|
5467
|
+
...pages2
|
|
5509
5468
|
},
|
|
5510
5469
|
breakpoints: [],
|
|
5511
5470
|
styles: [],
|
|
@@ -5520,33 +5479,33 @@ var createSerializedBuildFixture = ({
|
|
|
5520
5479
|
};
|
|
5521
5480
|
var createPublishedProjectBundleFixture = (options = {}) => {
|
|
5522
5481
|
const {
|
|
5523
|
-
assets,
|
|
5482
|
+
assets: assets2,
|
|
5524
5483
|
build,
|
|
5525
5484
|
buildPages,
|
|
5526
5485
|
page: pageOverrides,
|
|
5527
|
-
pages,
|
|
5486
|
+
pages: pages2,
|
|
5528
5487
|
...overrides
|
|
5529
5488
|
} = options;
|
|
5530
|
-
const
|
|
5489
|
+
const page2 = createPageFixture(pageOverrides);
|
|
5531
5490
|
return {
|
|
5532
5491
|
bundleVersion,
|
|
5533
5492
|
origin: "https://example.com",
|
|
5534
5493
|
projectDomain: "example",
|
|
5535
5494
|
projectTitle: "Example",
|
|
5536
|
-
page,
|
|
5537
|
-
pages: "pages" in options ?
|
|
5538
|
-
assets: "assets" in options ?
|
|
5495
|
+
page: page2,
|
|
5496
|
+
pages: "pages" in options ? pages2 : [page2],
|
|
5497
|
+
assets: "assets" in options ? assets2 : [],
|
|
5539
5498
|
build: createSerializedBuildFixture({
|
|
5540
5499
|
...build,
|
|
5541
5500
|
pages: {
|
|
5542
|
-
homePageId:
|
|
5543
|
-
pages: [
|
|
5501
|
+
homePageId: page2.id,
|
|
5502
|
+
pages: [page2],
|
|
5544
5503
|
folders: [
|
|
5545
5504
|
{
|
|
5546
5505
|
id: "root-folder",
|
|
5547
5506
|
name: "Root",
|
|
5548
5507
|
slug: "",
|
|
5549
|
-
children: [
|
|
5508
|
+
children: [page2.id]
|
|
5550
5509
|
}
|
|
5551
5510
|
],
|
|
5552
5511
|
...build?.pages,
|