@sanity/cli 7.10.0 → 7.11.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/README.md +31 -22
- package/dist/actions/auth/ensureAuthenticated.js +2 -0
- package/dist/actions/auth/ensureAuthenticated.js.map +1 -1
- package/dist/actions/auth/login/loginInstructions.js +19 -0
- package/dist/actions/auth/login/loginInstructions.js.map +1 -0
- package/dist/actions/dataset/resolveDataset.js +7 -1
- package/dist/actions/dataset/resolveDataset.js.map +1 -1
- package/dist/actions/deploy/deployApp.js +17 -12
- package/dist/actions/deploy/deployApp.js.map +1 -1
- package/dist/actions/deploy/deployStudio.js +2 -0
- package/dist/actions/deploy/deployStudio.js.map +1 -1
- package/dist/actions/graphql/resolveApiGeneration.js +9 -6
- package/dist/actions/graphql/resolveApiGeneration.js.map +1 -1
- package/dist/actions/init/initAction.js +23 -15
- package/dist/actions/init/initAction.js.map +1 -1
- package/dist/actions/manifest/extractCoreAppManifest.js +5 -3
- package/dist/actions/manifest/extractCoreAppManifest.js.map +1 -1
- package/dist/actions/migration/constants.js +10 -0
- package/dist/actions/migration/constants.js.map +1 -0
- package/dist/actions/migration/ensureApiVersionFormat.js +16 -0
- package/dist/actions/migration/ensureApiVersionFormat.js.map +1 -0
- package/dist/actions/migration/fileExists.js +13 -0
- package/dist/actions/migration/fileExists.js.map +1 -0
- package/dist/actions/migration/prettyMutationFormatter.js +155 -0
- package/dist/actions/migration/prettyMutationFormatter.js.map +1 -0
- package/dist/actions/migration/resolveMigrationScript.js +75 -0
- package/dist/actions/migration/resolveMigrationScript.js.map +1 -0
- package/dist/actions/migration/resolveMigrations.js +50 -0
- package/dist/actions/migration/resolveMigrations.js.map +1 -0
- package/dist/actions/migration/templates/index.js +7 -0
- package/dist/actions/migration/templates/index.js.map +1 -0
- package/dist/actions/migration/templates/minimalAdvanced.js +21 -0
- package/dist/actions/migration/templates/minimalAdvanced.js.map +1 -0
- package/dist/actions/migration/templates/minimalSimple.js +61 -0
- package/dist/actions/migration/templates/minimalSimple.js.map +1 -0
- package/dist/actions/migration/templates/renameField.js +20 -0
- package/dist/actions/migration/templates/renameField.js.map +1 -0
- package/dist/actions/migration/templates/renameType.js +19 -0
- package/dist/actions/migration/templates/renameType.js.map +1 -0
- package/dist/actions/migration/templates/stringToPTE.js +32 -0
- package/dist/actions/migration/templates/stringToPTE.js.map +1 -0
- package/dist/actions/migration/tree.js +111 -0
- package/dist/actions/migration/tree.js.map +1 -0
- package/dist/actions/preview/previewAction.js +33 -1
- package/dist/actions/preview/previewAction.js.map +1 -1
- package/dist/actions/schema/listSchemas.js +6 -4
- package/dist/actions/schema/listSchemas.js.map +1 -1
- package/dist/actions/tokens/validateRole.js +2 -1
- package/dist/actions/tokens/validateRole.js.map +1 -1
- package/dist/actions/undeploy/runUndeploy.js +13 -4
- package/dist/actions/undeploy/runUndeploy.js.map +1 -1
- package/dist/commands/backups/disable.js +5 -1
- package/dist/commands/backups/disable.js.map +1 -1
- package/dist/commands/backups/download.js +30 -6
- package/dist/commands/backups/download.js.map +1 -1
- package/dist/commands/backups/enable.js +5 -1
- package/dist/commands/backups/enable.js.map +1 -1
- package/dist/commands/backups/list.js +5 -1
- package/dist/commands/backups/list.js.map +1 -1
- package/dist/commands/cors/add.js +15 -7
- package/dist/commands/cors/add.js.map +1 -1
- package/dist/commands/cors/delete.js +6 -1
- package/dist/commands/cors/delete.js.map +1 -1
- package/dist/commands/datasets/alias/create.js +25 -18
- package/dist/commands/datasets/alias/create.js.map +1 -1
- package/dist/commands/datasets/alias/delete.js +15 -8
- package/dist/commands/datasets/alias/delete.js.map +1 -1
- package/dist/commands/datasets/alias/link.js +39 -17
- package/dist/commands/datasets/alias/link.js.map +1 -1
- package/dist/commands/datasets/alias/unlink.js +23 -2
- package/dist/commands/datasets/alias/unlink.js.map +1 -1
- package/dist/commands/datasets/copy.js +18 -2
- package/dist/commands/datasets/copy.js.map +1 -1
- package/dist/commands/datasets/create.js +8 -2
- package/dist/commands/datasets/create.js.map +1 -1
- package/dist/commands/datasets/delete.js +14 -17
- package/dist/commands/datasets/delete.js.map +1 -1
- package/dist/commands/datasets/embeddings/disable.js +3 -0
- package/dist/commands/datasets/embeddings/disable.js.map +1 -1
- package/dist/commands/datasets/embeddings/enable.js +5 -2
- package/dist/commands/datasets/embeddings/enable.js.map +1 -1
- package/dist/commands/datasets/embeddings/status.js +3 -0
- package/dist/commands/datasets/embeddings/status.js.map +1 -1
- package/dist/commands/datasets/export.js +27 -15
- package/dist/commands/datasets/export.js.map +1 -1
- package/dist/commands/datasets/import.js +3 -3
- package/dist/commands/datasets/import.js.map +1 -1
- package/dist/commands/datasets/visibility/get.js +2 -2
- package/dist/commands/datasets/visibility/get.js.map +1 -1
- package/dist/commands/datasets/visibility/set.js +2 -2
- package/dist/commands/datasets/visibility/set.js.map +1 -1
- package/dist/commands/docs/read.js +3 -3
- package/dist/commands/docs/read.js.map +1 -1
- package/dist/commands/documents/create.js +18 -13
- package/dist/commands/documents/create.js.map +1 -1
- package/dist/commands/documents/delete.js +3 -3
- package/dist/commands/documents/delete.js.map +1 -1
- package/dist/commands/documents/get.js +3 -3
- package/dist/commands/documents/get.js.map +1 -1
- package/dist/commands/documents/query.js +3 -3
- package/dist/commands/documents/query.js.map +1 -1
- package/dist/commands/documents/validate.js +29 -26
- package/dist/commands/documents/validate.js.map +1 -1
- package/dist/commands/graphql/deploy.js +20 -16
- package/dist/commands/graphql/deploy.js.map +1 -1
- package/dist/commands/graphql/undeploy.js +15 -18
- package/dist/commands/graphql/undeploy.js.map +1 -1
- package/dist/commands/hooks/delete.js +2 -2
- package/dist/commands/hooks/delete.js.map +1 -1
- package/dist/commands/hooks/logs.js +2 -2
- package/dist/commands/hooks/logs.js.map +1 -1
- package/dist/commands/login.js +2 -1
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/media/create-aspect.js +20 -8
- package/dist/commands/media/create-aspect.js.map +1 -1
- package/dist/commands/media/delete-aspect.js +31 -16
- package/dist/commands/media/delete-aspect.js.map +1 -1
- package/dist/commands/media/deploy-aspect.js +10 -5
- package/dist/commands/media/deploy-aspect.js.map +1 -1
- package/dist/commands/media/export.js +9 -4
- package/dist/commands/media/export.js.map +1 -1
- package/dist/commands/media/import.js +6 -1
- package/dist/commands/media/import.js.map +1 -1
- package/dist/commands/migrations/create.js +150 -0
- package/dist/commands/migrations/create.js.map +1 -0
- package/dist/commands/migrations/list.js +64 -0
- package/dist/commands/migrations/list.js.map +1 -0
- package/dist/commands/migrations/run.js +306 -0
- package/dist/commands/migrations/run.js.map +1 -0
- package/dist/commands/preview.js +1 -0
- package/dist/commands/preview.js.map +1 -1
- package/dist/commands/projects/create.js +2 -1
- package/dist/commands/projects/create.js.map +1 -1
- package/dist/commands/schemas/delete.js +23 -2
- package/dist/commands/schemas/delete.js.map +1 -1
- package/dist/commands/schemas/deploy.js +6 -4
- package/dist/commands/schemas/deploy.js.map +1 -1
- package/dist/commands/schemas/extract.js +22 -1
- package/dist/commands/schemas/extract.js.map +1 -1
- package/dist/commands/schemas/list.js +8 -8
- package/dist/commands/schemas/list.js.map +1 -1
- package/dist/commands/tokens/{add.js → create.js} +25 -18
- package/dist/commands/tokens/create.js.map +1 -0
- package/dist/commands/tokens/delete.js +41 -23
- package/dist/commands/tokens/delete.js.map +1 -1
- package/dist/commands/undeploy.js +2 -7
- package/dist/commands/undeploy.js.map +1 -1
- package/dist/commands/users/invite.js +25 -3
- package/dist/commands/users/invite.js.map +1 -1
- package/dist/topicAliases.js +3 -0
- package/dist/topicAliases.js.map +1 -1
- package/dist/util/formatCliErrorMessages.js +5 -0
- package/dist/util/formatCliErrorMessages.js.map +1 -0
- package/oclif.config.js +5 -1
- package/oclif.manifest.json +326 -121
- package/package.json +7 -7
- package/dist/commands/tokens/add.js.map +0 -1
package/oclif.manifest.json
CHANGED
|
@@ -863,7 +863,7 @@
|
|
|
863
863
|
"type": "boolean"
|
|
864
864
|
},
|
|
865
865
|
"provider": {
|
|
866
|
-
"description": "Log in using
|
|
866
|
+
"description": "Log in using a provider ID (google, github, sanity, vercel)",
|
|
867
867
|
"exclusive": [
|
|
868
868
|
"sso",
|
|
869
869
|
"with-token"
|
|
@@ -1391,6 +1391,13 @@
|
|
|
1391
1391
|
"required": false,
|
|
1392
1392
|
"allowNo": true,
|
|
1393
1393
|
"type": "boolean"
|
|
1394
|
+
},
|
|
1395
|
+
"yes": {
|
|
1396
|
+
"char": "y",
|
|
1397
|
+
"description": "Confirm risky wildcard origins without prompting",
|
|
1398
|
+
"name": "yes",
|
|
1399
|
+
"allowNo": false,
|
|
1400
|
+
"type": "boolean"
|
|
1394
1401
|
}
|
|
1395
1402
|
},
|
|
1396
1403
|
"hasDynamicHelp": false,
|
|
@@ -2642,7 +2649,7 @@
|
|
|
2642
2649
|
"type": "option"
|
|
2643
2650
|
},
|
|
2644
2651
|
"file": {
|
|
2645
|
-
"description": "
|
|
2652
|
+
"description": "Path to an NDJSON file or tar archive containing an NDJSON file (optionally gzip-compressed)",
|
|
2646
2653
|
"name": "file",
|
|
2647
2654
|
"hasDynamicHelp": false,
|
|
2648
2655
|
"multiple": false,
|
|
@@ -2653,6 +2660,11 @@
|
|
|
2653
2660
|
"name": "format",
|
|
2654
2661
|
"hasDynamicHelp": false,
|
|
2655
2662
|
"multiple": false,
|
|
2663
|
+
"options": [
|
|
2664
|
+
"json",
|
|
2665
|
+
"ndjson",
|
|
2666
|
+
"pretty"
|
|
2667
|
+
],
|
|
2656
2668
|
"type": "option"
|
|
2657
2669
|
},
|
|
2658
2670
|
"level": {
|
|
@@ -3281,131 +3293,34 @@
|
|
|
3281
3293
|
"configure.js"
|
|
3282
3294
|
]
|
|
3283
3295
|
},
|
|
3284
|
-
"
|
|
3296
|
+
"media:create-aspect": {
|
|
3285
3297
|
"aliases": [],
|
|
3286
|
-
"args": {
|
|
3287
|
-
|
|
3288
|
-
"description": "Slug of the OpenAPI specification to retrieve",
|
|
3289
|
-
"name": "slug",
|
|
3290
|
-
"required": true
|
|
3291
|
-
}
|
|
3292
|
-
},
|
|
3293
|
-
"description": "Get an OpenAPI specification by slug",
|
|
3298
|
+
"args": {},
|
|
3299
|
+
"description": "Create a new aspect definition file",
|
|
3294
3300
|
"examples": [
|
|
3295
3301
|
{
|
|
3296
|
-
"command": "<%= config.bin %> <%= command.id %>
|
|
3297
|
-
"description": "
|
|
3298
|
-
},
|
|
3299
|
-
{
|
|
3300
|
-
"command": "<%= config.bin %> <%= command.id %> query --format=json",
|
|
3301
|
-
"description": "Get specification in JSON format"
|
|
3302
|
-
},
|
|
3303
|
-
{
|
|
3304
|
-
"command": "<%= config.bin %> <%= command.id %> query --web",
|
|
3305
|
-
"description": "Open specification in browser"
|
|
3306
|
-
},
|
|
3307
|
-
{
|
|
3308
|
-
"command": "<%= config.bin %> <%= command.id %> query > query-api.yaml",
|
|
3309
|
-
"description": "Pipe to file"
|
|
3302
|
+
"command": "<%= config.bin %> <%= command.id %>",
|
|
3303
|
+
"description": "Create a new aspect definition file"
|
|
3310
3304
|
}
|
|
3311
3305
|
],
|
|
3312
3306
|
"flags": {
|
|
3313
|
-
"
|
|
3314
|
-
"description": "
|
|
3315
|
-
"name": "
|
|
3316
|
-
"default": "yaml",
|
|
3307
|
+
"name": {
|
|
3308
|
+
"description": "Aspect name. Defaults to the title in camel case",
|
|
3309
|
+
"name": "name",
|
|
3317
3310
|
"hasDynamicHelp": false,
|
|
3318
3311
|
"multiple": false,
|
|
3319
|
-
"options": [
|
|
3320
|
-
"yaml",
|
|
3321
|
-
"json"
|
|
3322
|
-
],
|
|
3323
3312
|
"type": "option"
|
|
3324
3313
|
},
|
|
3325
|
-
"
|
|
3326
|
-
"
|
|
3327
|
-
"
|
|
3328
|
-
"
|
|
3329
|
-
"
|
|
3330
|
-
"type": "
|
|
3331
|
-
}
|
|
3332
|
-
},
|
|
3333
|
-
"hasDynamicHelp": false,
|
|
3334
|
-
"hiddenAliases": [],
|
|
3335
|
-
"id": "openapi:get",
|
|
3336
|
-
"pluginAlias": "@sanity/cli",
|
|
3337
|
-
"pluginName": "@sanity/cli",
|
|
3338
|
-
"pluginType": "core",
|
|
3339
|
-
"strict": true,
|
|
3340
|
-
"isESM": true,
|
|
3341
|
-
"relativePath": [
|
|
3342
|
-
"dist",
|
|
3343
|
-
"commands",
|
|
3344
|
-
"openapi",
|
|
3345
|
-
"get.js"
|
|
3346
|
-
]
|
|
3347
|
-
},
|
|
3348
|
-
"openapi:list": {
|
|
3349
|
-
"aliases": [],
|
|
3350
|
-
"args": {},
|
|
3351
|
-
"description": "List all available OpenAPI specifications",
|
|
3352
|
-
"examples": [
|
|
3353
|
-
{
|
|
3354
|
-
"command": "<%= config.bin %> <%= command.id %>",
|
|
3355
|
-
"description": "List all available OpenAPI specs"
|
|
3356
|
-
},
|
|
3357
|
-
{
|
|
3358
|
-
"command": "<%= config.bin %> <%= command.id %> --json",
|
|
3359
|
-
"description": "List with JSON output"
|
|
3360
|
-
},
|
|
3361
|
-
{
|
|
3362
|
-
"command": "<%= config.bin %> <%= command.id %> --web",
|
|
3363
|
-
"description": "Open HTTP Reference in browser"
|
|
3364
|
-
}
|
|
3365
|
-
],
|
|
3366
|
-
"flags": {
|
|
3367
|
-
"json": {
|
|
3368
|
-
"description": "Output JSON",
|
|
3369
|
-
"name": "json",
|
|
3370
|
-
"allowNo": false,
|
|
3371
|
-
"type": "boolean"
|
|
3372
|
-
},
|
|
3373
|
-
"web": {
|
|
3374
|
-
"char": "w",
|
|
3375
|
-
"description": "Open HTTP Reference in web browser",
|
|
3376
|
-
"name": "web",
|
|
3377
|
-
"allowNo": false,
|
|
3378
|
-
"type": "boolean"
|
|
3314
|
+
"title": {
|
|
3315
|
+
"description": "Aspect title",
|
|
3316
|
+
"name": "title",
|
|
3317
|
+
"hasDynamicHelp": false,
|
|
3318
|
+
"multiple": false,
|
|
3319
|
+
"type": "option"
|
|
3379
3320
|
}
|
|
3380
3321
|
},
|
|
3381
3322
|
"hasDynamicHelp": false,
|
|
3382
3323
|
"hiddenAliases": [],
|
|
3383
|
-
"id": "openapi:list",
|
|
3384
|
-
"pluginAlias": "@sanity/cli",
|
|
3385
|
-
"pluginName": "@sanity/cli",
|
|
3386
|
-
"pluginType": "core",
|
|
3387
|
-
"strict": true,
|
|
3388
|
-
"isESM": true,
|
|
3389
|
-
"relativePath": [
|
|
3390
|
-
"dist",
|
|
3391
|
-
"commands",
|
|
3392
|
-
"openapi",
|
|
3393
|
-
"list.js"
|
|
3394
|
-
]
|
|
3395
|
-
},
|
|
3396
|
-
"media:create-aspect": {
|
|
3397
|
-
"aliases": [],
|
|
3398
|
-
"args": {},
|
|
3399
|
-
"description": "Create a new aspect definition file",
|
|
3400
|
-
"examples": [
|
|
3401
|
-
{
|
|
3402
|
-
"command": "<%= config.bin %> <%= command.id %>",
|
|
3403
|
-
"description": "Create a new aspect definition file"
|
|
3404
|
-
}
|
|
3405
|
-
],
|
|
3406
|
-
"flags": {},
|
|
3407
|
-
"hasDynamicHelp": false,
|
|
3408
|
-
"hiddenAliases": [],
|
|
3409
3324
|
"id": "media:create-aspect",
|
|
3410
3325
|
"pluginAlias": "@sanity/cli",
|
|
3411
3326
|
"pluginName": "@sanity/cli",
|
|
@@ -3458,7 +3373,7 @@
|
|
|
3458
3373
|
"aliases": [
|
|
3459
3374
|
"y"
|
|
3460
3375
|
],
|
|
3461
|
-
"description": "
|
|
3376
|
+
"description": "Run without prompts and confirm deletion",
|
|
3462
3377
|
"name": "yes",
|
|
3463
3378
|
"required": false,
|
|
3464
3379
|
"allowNo": false,
|
|
@@ -3683,6 +3598,281 @@
|
|
|
3683
3598
|
"import.js"
|
|
3684
3599
|
]
|
|
3685
3600
|
},
|
|
3601
|
+
"migrations:create": {
|
|
3602
|
+
"aliases": [],
|
|
3603
|
+
"args": {
|
|
3604
|
+
"title": {
|
|
3605
|
+
"description": "Title of migration",
|
|
3606
|
+
"name": "title",
|
|
3607
|
+
"required": false
|
|
3608
|
+
}
|
|
3609
|
+
},
|
|
3610
|
+
"description": "Create a new migration within your project",
|
|
3611
|
+
"examples": [
|
|
3612
|
+
{
|
|
3613
|
+
"command": "<%= config.bin %> <%= command.id %>",
|
|
3614
|
+
"description": "Create a new migration, prompting for title and options"
|
|
3615
|
+
},
|
|
3616
|
+
{
|
|
3617
|
+
"command": "<%= config.bin %> <%= command.id %> \"Rename field from location to address\"",
|
|
3618
|
+
"description": "Create a new migration with the provided title, prompting for options"
|
|
3619
|
+
}
|
|
3620
|
+
],
|
|
3621
|
+
"flags": {},
|
|
3622
|
+
"hasDynamicHelp": false,
|
|
3623
|
+
"hiddenAliases": [
|
|
3624
|
+
"migration:create"
|
|
3625
|
+
],
|
|
3626
|
+
"id": "migrations:create",
|
|
3627
|
+
"pluginAlias": "@sanity/cli",
|
|
3628
|
+
"pluginName": "@sanity/cli",
|
|
3629
|
+
"pluginType": "core",
|
|
3630
|
+
"strict": true,
|
|
3631
|
+
"isESM": true,
|
|
3632
|
+
"relativePath": [
|
|
3633
|
+
"dist",
|
|
3634
|
+
"commands",
|
|
3635
|
+
"migrations",
|
|
3636
|
+
"create.js"
|
|
3637
|
+
]
|
|
3638
|
+
},
|
|
3639
|
+
"migrations:list": {
|
|
3640
|
+
"aliases": [],
|
|
3641
|
+
"args": {},
|
|
3642
|
+
"description": "List available migrations",
|
|
3643
|
+
"examples": [
|
|
3644
|
+
{
|
|
3645
|
+
"command": "<%= config.bin %> <%= command.id %>",
|
|
3646
|
+
"description": "List all available migrations in the project"
|
|
3647
|
+
}
|
|
3648
|
+
],
|
|
3649
|
+
"flags": {},
|
|
3650
|
+
"hasDynamicHelp": false,
|
|
3651
|
+
"hiddenAliases": [
|
|
3652
|
+
"migration:list"
|
|
3653
|
+
],
|
|
3654
|
+
"id": "migrations:list",
|
|
3655
|
+
"pluginAlias": "@sanity/cli",
|
|
3656
|
+
"pluginName": "@sanity/cli",
|
|
3657
|
+
"pluginType": "core",
|
|
3658
|
+
"strict": true,
|
|
3659
|
+
"isESM": true,
|
|
3660
|
+
"relativePath": [
|
|
3661
|
+
"dist",
|
|
3662
|
+
"commands",
|
|
3663
|
+
"migrations",
|
|
3664
|
+
"list.js"
|
|
3665
|
+
]
|
|
3666
|
+
},
|
|
3667
|
+
"migrations:run": {
|
|
3668
|
+
"aliases": [],
|
|
3669
|
+
"args": {
|
|
3670
|
+
"id": {
|
|
3671
|
+
"description": "ID",
|
|
3672
|
+
"name": "id",
|
|
3673
|
+
"required": false
|
|
3674
|
+
}
|
|
3675
|
+
},
|
|
3676
|
+
"description": "Run a migration against a dataset",
|
|
3677
|
+
"examples": [
|
|
3678
|
+
{
|
|
3679
|
+
"command": "<%= config.bin %> <%= command.id %> <id>",
|
|
3680
|
+
"description": "dry run the migration"
|
|
3681
|
+
},
|
|
3682
|
+
{
|
|
3683
|
+
"command": "<%= config.bin %> <%= command.id %> <id> --no-dry-run --project xyz --dataset staging",
|
|
3684
|
+
"description": "execute the migration against a dataset"
|
|
3685
|
+
},
|
|
3686
|
+
{
|
|
3687
|
+
"command": "<%= config.bin %> <%= command.id %> <id> --from-export=production.tar.gz --no-dry-run --project xyz --dataset staging",
|
|
3688
|
+
"description": "execute the migration using a dataset export as the source"
|
|
3689
|
+
}
|
|
3690
|
+
],
|
|
3691
|
+
"flags": {
|
|
3692
|
+
"api-version": {
|
|
3693
|
+
"description": "API version to use when migrating. Defaults to v2024-01-29.",
|
|
3694
|
+
"name": "api-version",
|
|
3695
|
+
"hasDynamicHelp": false,
|
|
3696
|
+
"multiple": false,
|
|
3697
|
+
"type": "option"
|
|
3698
|
+
},
|
|
3699
|
+
"concurrency": {
|
|
3700
|
+
"description": "How many mutation requests to run in parallel. Must be between 1 and 10. Default: 6.",
|
|
3701
|
+
"name": "concurrency",
|
|
3702
|
+
"default": 6,
|
|
3703
|
+
"hasDynamicHelp": false,
|
|
3704
|
+
"multiple": false,
|
|
3705
|
+
"type": "option"
|
|
3706
|
+
},
|
|
3707
|
+
"confirm": {
|
|
3708
|
+
"description": "Prompt for confirmation before running the migration (default: true). Use --no-confirm to skip.",
|
|
3709
|
+
"name": "confirm",
|
|
3710
|
+
"allowNo": true,
|
|
3711
|
+
"type": "boolean"
|
|
3712
|
+
},
|
|
3713
|
+
"dataset": {
|
|
3714
|
+
"description": "Dataset to migrate. Defaults to the dataset configured in your Sanity CLI config.",
|
|
3715
|
+
"name": "dataset",
|
|
3716
|
+
"hasDynamicHelp": false,
|
|
3717
|
+
"multiple": false,
|
|
3718
|
+
"type": "option"
|
|
3719
|
+
},
|
|
3720
|
+
"dry-run": {
|
|
3721
|
+
"description": "By default the migration runs in dry mode. Use --no-dry-run to migrate dataset.",
|
|
3722
|
+
"name": "dry-run",
|
|
3723
|
+
"allowNo": true,
|
|
3724
|
+
"type": "boolean"
|
|
3725
|
+
},
|
|
3726
|
+
"from-export": {
|
|
3727
|
+
"description": "Use a local dataset export as source for migration instead of calling the Sanity API. Note: this is only supported for dry runs.",
|
|
3728
|
+
"name": "from-export",
|
|
3729
|
+
"hasDynamicHelp": false,
|
|
3730
|
+
"multiple": false,
|
|
3731
|
+
"type": "option"
|
|
3732
|
+
},
|
|
3733
|
+
"progress": {
|
|
3734
|
+
"description": "Display progress during migration (default: true). Use --no-progress to hide output.",
|
|
3735
|
+
"name": "progress",
|
|
3736
|
+
"allowNo": true,
|
|
3737
|
+
"type": "boolean"
|
|
3738
|
+
},
|
|
3739
|
+
"project": {
|
|
3740
|
+
"description": "Project ID of the dataset to migrate. Defaults to the projectId configured in your Sanity CLI config.",
|
|
3741
|
+
"name": "project",
|
|
3742
|
+
"hasDynamicHelp": false,
|
|
3743
|
+
"multiple": false,
|
|
3744
|
+
"type": "option"
|
|
3745
|
+
}
|
|
3746
|
+
},
|
|
3747
|
+
"hasDynamicHelp": false,
|
|
3748
|
+
"hiddenAliases": [
|
|
3749
|
+
"migration:run"
|
|
3750
|
+
],
|
|
3751
|
+
"id": "migrations:run",
|
|
3752
|
+
"pluginAlias": "@sanity/cli",
|
|
3753
|
+
"pluginName": "@sanity/cli",
|
|
3754
|
+
"pluginType": "core",
|
|
3755
|
+
"strict": true,
|
|
3756
|
+
"isESM": true,
|
|
3757
|
+
"relativePath": [
|
|
3758
|
+
"dist",
|
|
3759
|
+
"commands",
|
|
3760
|
+
"migrations",
|
|
3761
|
+
"run.js"
|
|
3762
|
+
]
|
|
3763
|
+
},
|
|
3764
|
+
"openapi:get": {
|
|
3765
|
+
"aliases": [],
|
|
3766
|
+
"args": {
|
|
3767
|
+
"slug": {
|
|
3768
|
+
"description": "Slug of the OpenAPI specification to retrieve",
|
|
3769
|
+
"name": "slug",
|
|
3770
|
+
"required": true
|
|
3771
|
+
}
|
|
3772
|
+
},
|
|
3773
|
+
"description": "Get an OpenAPI specification by slug",
|
|
3774
|
+
"examples": [
|
|
3775
|
+
{
|
|
3776
|
+
"command": "<%= config.bin %> <%= command.id %> query",
|
|
3777
|
+
"description": "Get a specification (YAML format, default)"
|
|
3778
|
+
},
|
|
3779
|
+
{
|
|
3780
|
+
"command": "<%= config.bin %> <%= command.id %> query --format=json",
|
|
3781
|
+
"description": "Get specification in JSON format"
|
|
3782
|
+
},
|
|
3783
|
+
{
|
|
3784
|
+
"command": "<%= config.bin %> <%= command.id %> query --web",
|
|
3785
|
+
"description": "Open specification in browser"
|
|
3786
|
+
},
|
|
3787
|
+
{
|
|
3788
|
+
"command": "<%= config.bin %> <%= command.id %> query > query-api.yaml",
|
|
3789
|
+
"description": "Pipe to file"
|
|
3790
|
+
}
|
|
3791
|
+
],
|
|
3792
|
+
"flags": {
|
|
3793
|
+
"format": {
|
|
3794
|
+
"description": "Output format: yaml (default), json",
|
|
3795
|
+
"name": "format",
|
|
3796
|
+
"default": "yaml",
|
|
3797
|
+
"hasDynamicHelp": false,
|
|
3798
|
+
"multiple": false,
|
|
3799
|
+
"options": [
|
|
3800
|
+
"yaml",
|
|
3801
|
+
"json"
|
|
3802
|
+
],
|
|
3803
|
+
"type": "option"
|
|
3804
|
+
},
|
|
3805
|
+
"web": {
|
|
3806
|
+
"char": "w",
|
|
3807
|
+
"description": "Open in web browser",
|
|
3808
|
+
"name": "web",
|
|
3809
|
+
"allowNo": false,
|
|
3810
|
+
"type": "boolean"
|
|
3811
|
+
}
|
|
3812
|
+
},
|
|
3813
|
+
"hasDynamicHelp": false,
|
|
3814
|
+
"hiddenAliases": [],
|
|
3815
|
+
"id": "openapi:get",
|
|
3816
|
+
"pluginAlias": "@sanity/cli",
|
|
3817
|
+
"pluginName": "@sanity/cli",
|
|
3818
|
+
"pluginType": "core",
|
|
3819
|
+
"strict": true,
|
|
3820
|
+
"isESM": true,
|
|
3821
|
+
"relativePath": [
|
|
3822
|
+
"dist",
|
|
3823
|
+
"commands",
|
|
3824
|
+
"openapi",
|
|
3825
|
+
"get.js"
|
|
3826
|
+
]
|
|
3827
|
+
},
|
|
3828
|
+
"openapi:list": {
|
|
3829
|
+
"aliases": [],
|
|
3830
|
+
"args": {},
|
|
3831
|
+
"description": "List all available OpenAPI specifications",
|
|
3832
|
+
"examples": [
|
|
3833
|
+
{
|
|
3834
|
+
"command": "<%= config.bin %> <%= command.id %>",
|
|
3835
|
+
"description": "List all available OpenAPI specs"
|
|
3836
|
+
},
|
|
3837
|
+
{
|
|
3838
|
+
"command": "<%= config.bin %> <%= command.id %> --json",
|
|
3839
|
+
"description": "List with JSON output"
|
|
3840
|
+
},
|
|
3841
|
+
{
|
|
3842
|
+
"command": "<%= config.bin %> <%= command.id %> --web",
|
|
3843
|
+
"description": "Open HTTP Reference in browser"
|
|
3844
|
+
}
|
|
3845
|
+
],
|
|
3846
|
+
"flags": {
|
|
3847
|
+
"json": {
|
|
3848
|
+
"description": "Output JSON",
|
|
3849
|
+
"name": "json",
|
|
3850
|
+
"allowNo": false,
|
|
3851
|
+
"type": "boolean"
|
|
3852
|
+
},
|
|
3853
|
+
"web": {
|
|
3854
|
+
"char": "w",
|
|
3855
|
+
"description": "Open HTTP Reference in web browser",
|
|
3856
|
+
"name": "web",
|
|
3857
|
+
"allowNo": false,
|
|
3858
|
+
"type": "boolean"
|
|
3859
|
+
}
|
|
3860
|
+
},
|
|
3861
|
+
"hasDynamicHelp": false,
|
|
3862
|
+
"hiddenAliases": [],
|
|
3863
|
+
"id": "openapi:list",
|
|
3864
|
+
"pluginAlias": "@sanity/cli",
|
|
3865
|
+
"pluginName": "@sanity/cli",
|
|
3866
|
+
"pluginType": "core",
|
|
3867
|
+
"strict": true,
|
|
3868
|
+
"isESM": true,
|
|
3869
|
+
"relativePath": [
|
|
3870
|
+
"dist",
|
|
3871
|
+
"commands",
|
|
3872
|
+
"openapi",
|
|
3873
|
+
"list.js"
|
|
3874
|
+
]
|
|
3875
|
+
},
|
|
3686
3876
|
"organizations:create": {
|
|
3687
3877
|
"aliases": [],
|
|
3688
3878
|
"args": {},
|
|
@@ -4144,6 +4334,13 @@
|
|
|
4144
4334
|
"name": "verbose",
|
|
4145
4335
|
"allowNo": false,
|
|
4146
4336
|
"type": "boolean"
|
|
4337
|
+
},
|
|
4338
|
+
"yes": {
|
|
4339
|
+
"char": "y",
|
|
4340
|
+
"description": "Delete schemas without prompting for confirmation",
|
|
4341
|
+
"name": "yes",
|
|
4342
|
+
"allowNo": false,
|
|
4343
|
+
"type": "boolean"
|
|
4147
4344
|
}
|
|
4148
4345
|
},
|
|
4149
4346
|
"hasDynamicHelp": false,
|
|
@@ -4258,6 +4455,12 @@
|
|
|
4258
4455
|
"allowNo": false,
|
|
4259
4456
|
"type": "boolean"
|
|
4260
4457
|
},
|
|
4458
|
+
"force": {
|
|
4459
|
+
"description": "Overwrite an existing schema file",
|
|
4460
|
+
"name": "force",
|
|
4461
|
+
"allowNo": false,
|
|
4462
|
+
"type": "boolean"
|
|
4463
|
+
},
|
|
4261
4464
|
"format": {
|
|
4262
4465
|
"description": "Output format (currently only groq-type-nodes)",
|
|
4263
4466
|
"name": "format",
|
|
@@ -4571,7 +4774,7 @@
|
|
|
4571
4774
|
"status.js"
|
|
4572
4775
|
]
|
|
4573
4776
|
},
|
|
4574
|
-
"tokens:
|
|
4777
|
+
"tokens:create": {
|
|
4575
4778
|
"aliases": [],
|
|
4576
4779
|
"args": {
|
|
4577
4780
|
"label": {
|
|
@@ -4606,7 +4809,7 @@
|
|
|
4606
4809
|
"flags": {
|
|
4607
4810
|
"project-id": {
|
|
4608
4811
|
"char": "p",
|
|
4609
|
-
"description": "Project ID to
|
|
4812
|
+
"description": "Project ID to create token in (overrides CLI configuration)",
|
|
4610
4813
|
"helpGroup": "OVERRIDE",
|
|
4611
4814
|
"name": "project-id",
|
|
4612
4815
|
"hasDynamicHelp": false,
|
|
@@ -4621,7 +4824,7 @@
|
|
|
4621
4824
|
"type": "boolean"
|
|
4622
4825
|
},
|
|
4623
4826
|
"role": {
|
|
4624
|
-
"description": "Role to assign to the token",
|
|
4827
|
+
"description": "Role to assign to the token (defaults to viewer in unattended mode)",
|
|
4625
4828
|
"name": "role",
|
|
4626
4829
|
"hasDynamicHelp": false,
|
|
4627
4830
|
"helpValue": "viewer",
|
|
@@ -4638,9 +4841,11 @@
|
|
|
4638
4841
|
},
|
|
4639
4842
|
"hasDynamicHelp": false,
|
|
4640
4843
|
"hiddenAliases": [
|
|
4641
|
-
"
|
|
4844
|
+
"tokens:add",
|
|
4845
|
+
"token:add",
|
|
4846
|
+
"token:create"
|
|
4642
4847
|
],
|
|
4643
|
-
"id": "tokens:
|
|
4848
|
+
"id": "tokens:create",
|
|
4644
4849
|
"pluginAlias": "@sanity/cli",
|
|
4645
4850
|
"pluginName": "@sanity/cli",
|
|
4646
4851
|
"pluginType": "core",
|
|
@@ -4650,7 +4855,7 @@
|
|
|
4650
4855
|
"dist",
|
|
4651
4856
|
"commands",
|
|
4652
4857
|
"tokens",
|
|
4653
|
-
"
|
|
4858
|
+
"create.js"
|
|
4654
4859
|
]
|
|
4655
4860
|
},
|
|
4656
4861
|
"tokens:delete": {
|
|
@@ -5444,5 +5649,5 @@
|
|
|
5444
5649
|
]
|
|
5445
5650
|
}
|
|
5446
5651
|
},
|
|
5447
|
-
"version": "7.
|
|
5652
|
+
"version": "7.11.0"
|
|
5448
5653
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sanity/cli",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.11.0",
|
|
4
4
|
"description": "Sanity CLI tool for managing Sanity projects and organizations",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"@sanity/generate-help-url": "^4.0.0",
|
|
66
66
|
"@sanity/id-utils": "^1.0.0",
|
|
67
67
|
"@sanity/import": "^6.0.3",
|
|
68
|
-
"@sanity/migrate": "^
|
|
68
|
+
"@sanity/migrate": "^8.0.0",
|
|
69
69
|
"@sanity/runtime-cli": "^17.1.0",
|
|
70
70
|
"@sanity/schema": "^6.5.0",
|
|
71
71
|
"@sanity/telemetry": "^1.1.0",
|
|
@@ -118,9 +118,9 @@
|
|
|
118
118
|
"which": "^6.0.1",
|
|
119
119
|
"yaml": "^2.9.0",
|
|
120
120
|
"zod": "^4.4.3",
|
|
121
|
-
"@sanity/cli-build": "^4.1.
|
|
122
|
-
"@sanity/
|
|
123
|
-
"@sanity/cli
|
|
121
|
+
"@sanity/cli-build": "^4.1.1",
|
|
122
|
+
"@sanity/cli-core": "^2.5.1",
|
|
123
|
+
"@sanity/workbench-cli": "^1.6.0"
|
|
124
124
|
},
|
|
125
125
|
"devDependencies": {
|
|
126
126
|
"@eslint/compat": "^2.1.0",
|
|
@@ -153,9 +153,9 @@
|
|
|
153
153
|
"sanity": "^6.5.0",
|
|
154
154
|
"typescript": "^6.0.3",
|
|
155
155
|
"vitest": "^4.1.10",
|
|
156
|
-
"@repo/package.config": "0.0.1",
|
|
157
156
|
"@repo/tsconfig": "3.70.0",
|
|
158
|
-
"@
|
|
157
|
+
"@repo/package.config": "0.0.1",
|
|
158
|
+
"@sanity/cli-test": "6.0.1",
|
|
159
159
|
"@sanity/eslint-config-cli": "1.1.3"
|
|
160
160
|
},
|
|
161
161
|
"peerDependencies": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/commands/tokens/add.ts"],"sourcesContent":["import {Args, Flags} from '@oclif/core'\nimport {SanityCommand, subdebug} from '@sanity/cli-core'\nimport {input, select} from '@sanity/cli-core/ux'\n\nimport {validateRole} from '../../actions/tokens/validateRole.js'\nimport {promptForProject} from '../../prompts/promptForProject.js'\nimport {createToken, getTokenRoles} from '../../services/tokens.js'\nimport {getProjectIdFlag} from '../../util/sharedFlags.js'\n\nconst tokensAddDebug = subdebug('tokens:add')\n\nexport class AddTokenCommand extends SanityCommand<typeof AddTokenCommand> {\n static override args = {\n label: Args.string({\n description: 'Label for the new token',\n required: false,\n }),\n }\n\n static override description = 'Create a new API token for the project'\n\n static override examples = [\n {\n command: '<%= config.bin %> <%= command.id %> \"My API Token\"',\n description: 'Create a token with a label',\n },\n {\n command: '<%= config.bin %> <%= command.id %> \"My API Token\" --role=editor',\n description: 'Create a token with editor role',\n },\n {\n command: '<%= config.bin %> <%= command.id %> \"CI Token\" --role=editor --yes',\n description: 'Create a token in unattended mode',\n },\n {\n command: '<%= config.bin %> <%= command.id %> \"API Token\" --json',\n description: 'Output token information as JSON',\n },\n {\n command: '<%= config.bin %> <%= command.id %> \"My Token\" --project-id abc123 --role=editor',\n description: 'Create a token for a specific project',\n },\n ]\n\n static override flags = {\n ...getProjectIdFlag({description: 'Project ID to add token to', semantics: 'override'}),\n json: Flags.boolean({\n default: false,\n description: 'Output as JSON',\n }),\n role: Flags.string({\n description: 'Role to assign to the token',\n helpValue: 'viewer',\n }),\n yes: Flags.boolean({\n char: 'y',\n default: false,\n description: 'Skip prompts and use defaults (unattended mode)',\n }),\n }\n\n static override hiddenAliases: string[] = ['token:add']\n\n public async run(): Promise<void> {\n const {args, flags} = await this.parse(AddTokenCommand)\n const {label: givenLabel} = args\n const {json, role} = flags\n\n const projectId = await this.getProjectId({\n fallback: () =>\n promptForProject({\n requiredPermissions: [\n {grant: 'read', permission: 'sanity.project.roles'},\n {grant: 'create', permission: 'sanity.project.tokens'},\n ],\n }),\n })\n\n try {\n const label = givenLabel || (await this.promptForLabel())\n const roleName = await (role\n ? validateRole(role, projectId, this.output)\n : this.promptForRole(projectId))\n\n tokensAddDebug(`Creating token for project ${projectId}`, {label, roleName})\n const token = await createToken({\n label,\n projectId,\n roleName,\n })\n\n if (json) {\n this.log(JSON.stringify(token, null, 2))\n return\n }\n\n this.log('Token created successfully!')\n this.log(`Label: ${token.label}`)\n this.log(`ID: ${token.id}`)\n this.log(`Role: ${token.roles.map((r) => r.title).join(', ')}`)\n this.log(`Token: ${token.key}`)\n this.log('')\n this.log('Copy the token above – this is your only chance to do so!')\n } catch (error) {\n const err = error as Error\n\n tokensAddDebug(`Error creating token for project ${projectId}`, err)\n this.error(`Token creation failed:\\n${err.message}`, {exit: 1})\n }\n }\n\n private async promptForLabel(): Promise<string> {\n if (this.isUnattended()) {\n this.error(\n 'Token label is required in non-interactive mode. Provide a label as an argument.',\n {\n exit: 1,\n },\n )\n }\n\n const label = await input({\n message: 'Token label:',\n validate: (value) => {\n if (!value || !value.trim()) {\n return 'Label cannot be empty'\n }\n return true\n },\n })\n\n return label\n }\n\n private async promptForRole(projectId: string): Promise<string> {\n if (this.isUnattended()) {\n return 'viewer' // Default role for unattended mode\n }\n\n const roles = await getTokenRoles(projectId)\n const robotRoles = roles.filter((role) => role.appliesToRobots)\n\n tokensAddDebug('Robot roles', {robotRoles})\n\n if (robotRoles.length === 0) {\n this.error('No roles available for tokens', {exit: 1})\n }\n\n const selectedRoleName = await select({\n choices: robotRoles.map((role) => ({\n name: `${role.title} (${role.name})`,\n short: role.title,\n value: role.name,\n })),\n default: 'viewer',\n message: 'Select role for the token:',\n })\n\n return selectedRoleName\n }\n}\n"],"names":["Args","Flags","SanityCommand","subdebug","input","select","validateRole","promptForProject","createToken","getTokenRoles","getProjectIdFlag","tokensAddDebug","AddTokenCommand","args","label","string","description","required","examples","command","flags","semantics","json","boolean","default","role","helpValue","yes","char","hiddenAliases","run","parse","givenLabel","projectId","getProjectId","fallback","requiredPermissions","grant","permission","promptForLabel","roleName","output","promptForRole","token","log","JSON","stringify","id","roles","map","r","title","join","key","error","err","message","exit","isUnattended","validate","value","trim","robotRoles","filter","appliesToRobots","length","selectedRoleName","choices","name","short"],"mappings":"AAAA,SAAQA,IAAI,EAAEC,KAAK,QAAO,cAAa;AACvC,SAAQC,aAAa,EAAEC,QAAQ,QAAO,mBAAkB;AACxD,SAAQC,KAAK,EAAEC,MAAM,QAAO,sBAAqB;AAEjD,SAAQC,YAAY,QAAO,uCAAsC;AACjE,SAAQC,gBAAgB,QAAO,oCAAmC;AAClE,SAAQC,WAAW,EAAEC,aAAa,QAAO,2BAA0B;AACnE,SAAQC,gBAAgB,QAAO,4BAA2B;AAE1D,MAAMC,iBAAiBR,SAAS;AAEhC,OAAO,MAAMS,wBAAwBV;IACnC,OAAgBW,OAAO;QACrBC,OAAOd,KAAKe,MAAM,CAAC;YACjBC,aAAa;YACbC,UAAU;QACZ;IACF,EAAC;IAED,OAAgBD,cAAc,yCAAwC;IAEtE,OAAgBE,WAAW;QACzB;YACEC,SAAS;YACTH,aAAa;QACf;QACA;YACEG,SAAS;YACTH,aAAa;QACf;QACA;YACEG,SAAS;YACTH,aAAa;QACf;QACA;YACEG,SAAS;YACTH,aAAa;QACf;QACA;YACEG,SAAS;YACTH,aAAa;QACf;KACD,CAAA;IAED,OAAgBI,QAAQ;QACtB,GAAGV,iBAAiB;YAACM,aAAa;YAA8BK,WAAW;QAAU,EAAE;QACvFC,MAAMrB,MAAMsB,OAAO,CAAC;YAClBC,SAAS;YACTR,aAAa;QACf;QACAS,MAAMxB,MAAMc,MAAM,CAAC;YACjBC,aAAa;YACbU,WAAW;QACb;QACAC,KAAK1B,MAAMsB,OAAO,CAAC;YACjBK,MAAM;YACNJ,SAAS;YACTR,aAAa;QACf;IACF,EAAC;IAED,OAAgBa,gBAA0B;QAAC;KAAY,CAAA;IAEvD,MAAaC,MAAqB;QAChC,MAAM,EAACjB,IAAI,EAAEO,KAAK,EAAC,GAAG,MAAM,IAAI,CAACW,KAAK,CAACnB;QACvC,MAAM,EAACE,OAAOkB,UAAU,EAAC,GAAGnB;QAC5B,MAAM,EAACS,IAAI,EAAEG,IAAI,EAAC,GAAGL;QAErB,MAAMa,YAAY,MAAM,IAAI,CAACC,YAAY,CAAC;YACxCC,UAAU,IACR5B,iBAAiB;oBACf6B,qBAAqB;wBACnB;4BAACC,OAAO;4BAAQC,YAAY;wBAAsB;wBAClD;4BAACD,OAAO;4BAAUC,YAAY;wBAAuB;qBACtD;gBACH;QACJ;QAEA,IAAI;YACF,MAAMxB,QAAQkB,cAAe,MAAM,IAAI,CAACO,cAAc;YACtD,MAAMC,WAAW,MAAOf,CAAAA,OACpBnB,aAAamB,MAAMQ,WAAW,IAAI,CAACQ,MAAM,IACzC,IAAI,CAACC,aAAa,CAACT,UAAS;YAEhCtB,eAAe,CAAC,2BAA2B,EAAEsB,WAAW,EAAE;gBAACnB;gBAAO0B;YAAQ;YAC1E,MAAMG,QAAQ,MAAMnC,YAAY;gBAC9BM;gBACAmB;gBACAO;YACF;YAEA,IAAIlB,MAAM;gBACR,IAAI,CAACsB,GAAG,CAACC,KAAKC,SAAS,CAACH,OAAO,MAAM;gBACrC;YACF;YAEA,IAAI,CAACC,GAAG,CAAC;YACT,IAAI,CAACA,GAAG,CAAC,CAAC,OAAO,EAAED,MAAM7B,KAAK,EAAE;YAChC,IAAI,CAAC8B,GAAG,CAAC,CAAC,IAAI,EAAED,MAAMI,EAAE,EAAE;YAC1B,IAAI,CAACH,GAAG,CAAC,CAAC,MAAM,EAAED,MAAMK,KAAK,CAACC,GAAG,CAAC,CAACC,IAAMA,EAAEC,KAAK,EAAEC,IAAI,CAAC,OAAO;YAC9D,IAAI,CAACR,GAAG,CAAC,CAAC,OAAO,EAAED,MAAMU,GAAG,EAAE;YAC9B,IAAI,CAACT,GAAG,CAAC;YACT,IAAI,CAACA,GAAG,CAAC;QACX,EAAE,OAAOU,OAAO;YACd,MAAMC,MAAMD;YAEZ3C,eAAe,CAAC,iCAAiC,EAAEsB,WAAW,EAAEsB;YAChE,IAAI,CAACD,KAAK,CAAC,CAAC,wBAAwB,EAAEC,IAAIC,OAAO,EAAE,EAAE;gBAACC,MAAM;YAAC;QAC/D;IACF;IAEA,MAAclB,iBAAkC;QAC9C,IAAI,IAAI,CAACmB,YAAY,IAAI;YACvB,IAAI,CAACJ,KAAK,CACR,oFACA;gBACEG,MAAM;YACR;QAEJ;QAEA,MAAM3C,QAAQ,MAAMV,MAAM;YACxBoD,SAAS;YACTG,UAAU,CAACC;gBACT,IAAI,CAACA,SAAS,CAACA,MAAMC,IAAI,IAAI;oBAC3B,OAAO;gBACT;gBACA,OAAO;YACT;QACF;QAEA,OAAO/C;IACT;IAEA,MAAc4B,cAAcT,SAAiB,EAAmB;QAC9D,IAAI,IAAI,CAACyB,YAAY,IAAI;YACvB,OAAO,SAAS,mCAAmC;;QACrD;QAEA,MAAMV,QAAQ,MAAMvC,cAAcwB;QAClC,MAAM6B,aAAad,MAAMe,MAAM,CAAC,CAACtC,OAASA,KAAKuC,eAAe;QAE9DrD,eAAe,eAAe;YAACmD;QAAU;QAEzC,IAAIA,WAAWG,MAAM,KAAK,GAAG;YAC3B,IAAI,CAACX,KAAK,CAAC,iCAAiC;gBAACG,MAAM;YAAC;QACtD;QAEA,MAAMS,mBAAmB,MAAM7D,OAAO;YACpC8D,SAASL,WAAWb,GAAG,CAAC,CAACxB,OAAU,CAAA;oBACjC2C,MAAM,GAAG3C,KAAK0B,KAAK,CAAC,EAAE,EAAE1B,KAAK2C,IAAI,CAAC,CAAC,CAAC;oBACpCC,OAAO5C,KAAK0B,KAAK;oBACjBS,OAAOnC,KAAK2C,IAAI;gBAClB,CAAA;YACA5C,SAAS;YACTgC,SAAS;QACX;QAEA,OAAOU;IACT;AACF"}
|