@sitecoreai-labs/sitecoreai-cli 0.0.4
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/AGENTS.md +67 -0
- package/LICENSE +21 -0
- package/README.md +357 -0
- package/bin/sitecoreai-cli +3 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +358 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +27 -0
- package/dist/commands/deploy/deployments.d.ts +3 -0
- package/dist/commands/deploy/deployments.d.ts.map +1 -0
- package/dist/commands/deploy/deployments.js +58 -0
- package/dist/commands/deploy/editing-host.d.ts +3 -0
- package/dist/commands/deploy/editing-host.d.ts.map +1 -0
- package/dist/commands/deploy/editing-host.js +49 -0
- package/dist/commands/deploy/environments/deployments.d.ts +3 -0
- package/dist/commands/deploy/environments/deployments.d.ts.map +1 -0
- package/dist/commands/deploy/environments/deployments.js +28 -0
- package/dist/commands/deploy/environments/index.d.ts +3 -0
- package/dist/commands/deploy/environments/index.d.ts.map +1 -0
- package/dist/commands/deploy/environments/index.js +29 -0
- package/dist/commands/deploy/environments/mutations.d.ts +9 -0
- package/dist/commands/deploy/environments/mutations.d.ts.map +1 -0
- package/dist/commands/deploy/environments/mutations.js +103 -0
- package/dist/commands/deploy/environments/queries.d.ts +7 -0
- package/dist/commands/deploy/environments/queries.d.ts.map +1 -0
- package/dist/commands/deploy/environments/queries.js +56 -0
- package/dist/commands/deploy/environments/variables.d.ts +3 -0
- package/dist/commands/deploy/environments/variables.d.ts.map +1 -0
- package/dist/commands/deploy/environments/variables.js +40 -0
- package/dist/commands/deploy/environments.d.ts +2 -0
- package/dist/commands/deploy/environments.d.ts.map +1 -0
- package/dist/commands/deploy/environments.js +17 -0
- package/dist/commands/deploy/index.d.ts +3 -0
- package/dist/commands/deploy/index.d.ts.map +1 -0
- package/dist/commands/deploy/index.js +26 -0
- package/dist/commands/deploy/logs.d.ts +3 -0
- package/dist/commands/deploy/logs.d.ts.map +1 -0
- package/dist/commands/deploy/logs.js +39 -0
- package/dist/commands/deploy/organizations.d.ts +3 -0
- package/dist/commands/deploy/organizations.d.ts.map +1 -0
- package/dist/commands/deploy/organizations.js +29 -0
- package/dist/commands/deploy/projects.d.ts +3 -0
- package/dist/commands/deploy/projects.d.ts.map +1 -0
- package/dist/commands/deploy/projects.js +74 -0
- package/dist/commands/deploy/shared.d.ts +3 -0
- package/dist/commands/deploy/shared.d.ts.map +1 -0
- package/dist/commands/deploy/shared.js +12 -0
- package/dist/commands/deploy/site.d.ts +10 -0
- package/dist/commands/deploy/site.d.ts.map +1 -0
- package/dist/commands/deploy/site.js +36 -0
- package/dist/commands/deploy/source-control.d.ts +3 -0
- package/dist/commands/deploy/source-control.d.ts.map +1 -0
- package/dist/commands/deploy/source-control.js +89 -0
- package/dist/commands/deploy.d.ts +2 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +5 -0
- package/dist/commands/history.d.ts +3 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +88 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +32 -0
- package/dist/commands/login.d.ts +3 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +21 -0
- package/dist/commands/logout.d.ts +3 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +18 -0
- package/dist/commands/recipe/index.d.ts +3 -0
- package/dist/commands/recipe/index.d.ts.map +1 -0
- package/dist/commands/recipe/index.js +158 -0
- package/dist/commands/serialization/index.d.ts +3 -0
- package/dist/commands/serialization/index.d.ts.map +1 -0
- package/dist/commands/serialization/index.js +89 -0
- package/dist/commands/serialization/package.d.ts +3 -0
- package/dist/commands/serialization/package.d.ts.map +1 -0
- package/dist/commands/serialization/package.js +36 -0
- package/dist/commands/shared.d.ts +21 -0
- package/dist/commands/shared.d.ts.map +1 -0
- package/dist/commands/shared.js +82 -0
- package/dist/commands/shell.d.ts +10 -0
- package/dist/commands/shell.d.ts.map +1 -0
- package/dist/commands/shell.js +155 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +15 -0
- package/dist/commands/telemetry.d.ts +3 -0
- package/dist/commands/telemetry.d.ts.map +1 -0
- package/dist/commands/telemetry.js +28 -0
- package/dist/config/env-overrides.d.ts +4 -0
- package/dist/config/env-overrides.d.ts.map +1 -0
- package/dist/config/env-overrides.js +199 -0
- package/dist/config/index.d.ts +5 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +13 -0
- package/dist/config/modules.d.ts +4 -0
- package/dist/config/modules.d.ts.map +1 -0
- package/dist/config/modules.js +152 -0
- package/dist/config/paths.d.ts +2 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +39 -0
- package/dist/config/root-config.d.ts +10 -0
- package/dist/config/root-config.d.ts.map +1 -0
- package/dist/config/root-config.js +159 -0
- package/dist/config/schema.json +278 -0
- package/dist/config/serialization-module.schema.json +127 -0
- package/dist/config/telemetry.schema.json +21 -0
- package/dist/config/types.d.ts +245 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +19 -0
- package/dist/config/validation.d.ts +10 -0
- package/dist/config/validation.d.ts.map +1 -0
- package/dist/config/validation.js +43 -0
- package/dist/deploy/api/common/headers.d.ts +2 -0
- package/dist/deploy/api/common/headers.d.ts.map +1 -0
- package/dist/deploy/api/common/headers.js +10 -0
- package/dist/deploy/api/common/index.d.ts +4 -0
- package/dist/deploy/api/common/index.d.ts.map +1 -0
- package/dist/deploy/api/common/index.js +19 -0
- package/dist/deploy/api/common/request.d.ts +9 -0
- package/dist/deploy/api/common/request.d.ts.map +1 -0
- package/dist/deploy/api/common/request.js +253 -0
- package/dist/deploy/api/common/types.d.ts +44 -0
- package/dist/deploy/api/common/types.d.ts.map +1 -0
- package/dist/deploy/api/common/types.js +5 -0
- package/dist/deploy/api/common.d.ts +2 -0
- package/dist/deploy/api/common.d.ts.map +1 -0
- package/dist/deploy/api/common.js +17 -0
- package/dist/deploy/api/deployment-logs.d.ts +2 -0
- package/dist/deploy/api/deployment-logs.d.ts.map +1 -0
- package/dist/deploy/api/deployment-logs.js +23 -0
- package/dist/deploy/api/deployments.d.ts +9 -0
- package/dist/deploy/api/deployments.d.ts.map +1 -0
- package/dist/deploy/api/deployments.js +61 -0
- package/dist/deploy/api/environments.d.ts +21 -0
- package/dist/deploy/api/environments.d.ts.map +1 -0
- package/dist/deploy/api/environments.js +67 -0
- package/dist/deploy/api/index.d.ts +9 -0
- package/dist/deploy/api/index.d.ts.map +1 -0
- package/dist/deploy/api/index.js +24 -0
- package/dist/deploy/api/logs.d.ts +8 -0
- package/dist/deploy/api/logs.d.ts.map +1 -0
- package/dist/deploy/api/logs.js +29 -0
- package/dist/deploy/api/organizations.d.ts +6 -0
- package/dist/deploy/api/organizations.d.ts.map +1 -0
- package/dist/deploy/api/organizations.js +18 -0
- package/dist/deploy/api/projects.d.ts +13 -0
- package/dist/deploy/api/projects.d.ts.map +1 -0
- package/dist/deploy/api/projects.js +42 -0
- package/dist/deploy/api/source-control.d.ts +15 -0
- package/dist/deploy/api/source-control.d.ts.map +1 -0
- package/dist/deploy/api/source-control.js +71 -0
- package/dist/deploy/api.d.ts +2 -0
- package/dist/deploy/api.d.ts.map +1 -0
- package/dist/deploy/api.js +17 -0
- package/dist/deploy/tasks/deployment-result.d.ts +6 -0
- package/dist/deploy/tasks/deployment-result.d.ts.map +1 -0
- package/dist/deploy/tasks/deployment-result.js +36 -0
- package/dist/deploy/tasks/deployments.d.ts +10 -0
- package/dist/deploy/tasks/deployments.d.ts.map +1 -0
- package/dist/deploy/tasks/deployments.js +201 -0
- package/dist/deploy/tasks/editing-host.d.ts +28 -0
- package/dist/deploy/tasks/editing-host.d.ts.map +1 -0
- package/dist/deploy/tasks/editing-host.js +216 -0
- package/dist/deploy/tasks/environments.d.ts +20 -0
- package/dist/deploy/tasks/environments.d.ts.map +1 -0
- package/dist/deploy/tasks/environments.js +364 -0
- package/dist/deploy/tasks/index.d.ts +10 -0
- package/dist/deploy/tasks/index.d.ts.map +1 -0
- package/dist/deploy/tasks/index.js +25 -0
- package/dist/deploy/tasks/logs.d.ts +5 -0
- package/dist/deploy/tasks/logs.d.ts.map +1 -0
- package/dist/deploy/tasks/logs.js +56 -0
- package/dist/deploy/tasks/organizations.d.ts +6 -0
- package/dist/deploy/tasks/organizations.d.ts.map +1 -0
- package/dist/deploy/tasks/organizations.js +51 -0
- package/dist/deploy/tasks/projects.d.ts +11 -0
- package/dist/deploy/tasks/projects.d.ts.map +1 -0
- package/dist/deploy/tasks/projects.js +246 -0
- package/dist/deploy/tasks/shared.d.ts +63 -0
- package/dist/deploy/tasks/shared.d.ts.map +1 -0
- package/dist/deploy/tasks/shared.js +261 -0
- package/dist/deploy/tasks/site-bind.d.ts +21 -0
- package/dist/deploy/tasks/site-bind.d.ts.map +1 -0
- package/dist/deploy/tasks/site-bind.js +142 -0
- package/dist/deploy/tasks/site.d.ts +14 -0
- package/dist/deploy/tasks/site.d.ts.map +1 -0
- package/dist/deploy/tasks/site.js +29 -0
- package/dist/deploy/tasks/source-control.d.ts +14 -0
- package/dist/deploy/tasks/source-control.d.ts.map +1 -0
- package/dist/deploy/tasks/source-control.js +173 -0
- package/dist/deploy/tasks/types.d.ts +204 -0
- package/dist/deploy/tasks/types.d.ts.map +1 -0
- package/dist/deploy/tasks/types.js +7 -0
- package/dist/deploy/tasks.d.ts +3 -0
- package/dist/deploy/tasks.d.ts.map +1 -0
- package/dist/deploy/tasks.js +18 -0
- package/dist/recipe/api/auth.d.ts +9 -0
- package/dist/recipe/api/auth.d.ts.map +1 -0
- package/dist/recipe/api/auth.js +12 -0
- package/dist/recipe/api/authoring-client.d.ts +37 -0
- package/dist/recipe/api/authoring-client.d.ts.map +1 -0
- package/dist/recipe/api/authoring-client.js +495 -0
- package/dist/recipe/api/client.d.ts +99 -0
- package/dist/recipe/api/client.d.ts.map +1 -0
- package/dist/recipe/api/client.js +17 -0
- package/dist/recipe/api/graphql.d.ts +15 -0
- package/dist/recipe/api/graphql.d.ts.map +1 -0
- package/dist/recipe/api/graphql.js +38 -0
- package/dist/recipe/api/ref-encoding.d.ts +38 -0
- package/dist/recipe/api/ref-encoding.d.ts.map +1 -0
- package/dist/recipe/api/ref-encoding.js +160 -0
- package/dist/recipe/api/site-discovery.d.ts +49 -0
- package/dist/recipe/api/site-discovery.d.ts.map +1 -0
- package/dist/recipe/api/site-discovery.js +127 -0
- package/dist/recipe/api/sites-client.d.ts +48 -0
- package/dist/recipe/api/sites-client.d.ts.map +1 -0
- package/dist/recipe/api/sites-client.js +19 -0
- package/dist/recipe/cache.d.ts +36 -0
- package/dist/recipe/cache.d.ts.map +1 -0
- package/dist/recipe/cache.js +114 -0
- package/dist/recipe/compile/component-section.d.ts +46 -0
- package/dist/recipe/compile/component-section.d.ts.map +1 -0
- package/dist/recipe/compile/component-section.js +143 -0
- package/dist/recipe/compile/component-template.d.ts +34 -0
- package/dist/recipe/compile/component-template.d.ts.map +1 -0
- package/dist/recipe/compile/component-template.js +709 -0
- package/dist/recipe/compile/content-item.d.ts +31 -0
- package/dist/recipe/compile/content-item.d.ts.map +1 -0
- package/dist/recipe/compile/content-item.js +189 -0
- package/dist/recipe/compile/content-template.d.ts +18 -0
- package/dist/recipe/compile/content-template.d.ts.map +1 -0
- package/dist/recipe/compile/content-template.js +52 -0
- package/dist/recipe/compile/enumeration.d.ts +59 -0
- package/dist/recipe/compile/enumeration.d.ts.map +1 -0
- package/dist/recipe/compile/enumeration.js +236 -0
- package/dist/recipe/compile/page-design.d.ts +22 -0
- package/dist/recipe/compile/page-design.d.ts.map +1 -0
- package/dist/recipe/compile/page-design.js +93 -0
- package/dist/recipe/compile/parameters-template.d.ts +14 -0
- package/dist/recipe/compile/parameters-template.d.ts.map +1 -0
- package/dist/recipe/compile/parameters-template.js +92 -0
- package/dist/recipe/compile/partial-design.d.ts +18 -0
- package/dist/recipe/compile/partial-design.d.ts.map +1 -0
- package/dist/recipe/compile/partial-design.js +76 -0
- package/dist/recipe/compile/section-definition.d.ts +18 -0
- package/dist/recipe/compile/section-definition.d.ts.map +1 -0
- package/dist/recipe/compile/section-definition.js +26 -0
- package/dist/recipe/compile/shared.d.ts +442 -0
- package/dist/recipe/compile/shared.d.ts.map +1 -0
- package/dist/recipe/compile/shared.js +843 -0
- package/dist/recipe/compile/site-template.d.ts +52 -0
- package/dist/recipe/compile/site-template.d.ts.map +1 -0
- package/dist/recipe/compile/site-template.js +140 -0
- package/dist/recipe/compile/site.d.ts +44 -0
- package/dist/recipe/compile/site.d.ts.map +1 -0
- package/dist/recipe/compile/site.js +127 -0
- package/dist/recipe/compile.d.ts +93 -0
- package/dist/recipe/compile.d.ts.map +1 -0
- package/dist/recipe/compile.js +741 -0
- package/dist/recipe/execute.d.ts +119 -0
- package/dist/recipe/execute.d.ts.map +1 -0
- package/dist/recipe/execute.js +273 -0
- package/dist/recipe/guids.d.ts +400 -0
- package/dist/recipe/guids.d.ts.map +1 -0
- package/dist/recipe/guids.js +488 -0
- package/dist/recipe/index.d.ts +32 -0
- package/dist/recipe/index.d.ts.map +1 -0
- package/dist/recipe/index.js +156 -0
- package/dist/recipe/io.d.ts +21 -0
- package/dist/recipe/io.d.ts.map +1 -0
- package/dist/recipe/io.js +147 -0
- package/dist/recipe/ir/operations.d.ts +692 -0
- package/dist/recipe/ir/operations.d.ts.map +1 -0
- package/dist/recipe/ir/operations.js +347 -0
- package/dist/recipe/ir/sitecore-templates.d.ts +455 -0
- package/dist/recipe/ir/sitecore-templates.d.ts.map +1 -0
- package/dist/recipe/ir/sitecore-templates.js +465 -0
- package/dist/recipe/layout/emit.d.ts +101 -0
- package/dist/recipe/layout/emit.d.ts.map +1 -0
- package/dist/recipe/layout/emit.js +127 -0
- package/dist/recipe/layout/templates-mapping.d.ts +28 -0
- package/dist/recipe/layout/templates-mapping.d.ts.map +1 -0
- package/dist/recipe/layout/templates-mapping.js +29 -0
- package/dist/recipe/plan.d.ts +134 -0
- package/dist/recipe/plan.d.ts.map +1 -0
- package/dist/recipe/plan.js +565 -0
- package/dist/recipe/policy.d.ts +43 -0
- package/dist/recipe/policy.d.ts.map +1 -0
- package/dist/recipe/policy.js +75 -0
- package/dist/recipe/rollback.d.ts +72 -0
- package/dist/recipe/rollback.d.ts.map +1 -0
- package/dist/recipe/rollback.js +130 -0
- package/dist/recipe/schema/field-types.d.ts +72 -0
- package/dist/recipe/schema/field-types.d.ts.map +1 -0
- package/dist/recipe/schema/field-types.js +118 -0
- package/dist/recipe/schema/recipe.d.ts +1545 -0
- package/dist/recipe/schema/recipe.d.ts.map +1 -0
- package/dist/recipe/schema/recipe.js +1175 -0
- package/dist/recipe/schema/source-fields.d.ts +48 -0
- package/dist/recipe/schema/source-fields.d.ts.map +1 -0
- package/dist/recipe/schema/source-fields.js +79 -0
- package/dist/recipe/tasks/compile.d.ts +14 -0
- package/dist/recipe/tasks/compile.d.ts.map +1 -0
- package/dist/recipe/tasks/compile.js +89 -0
- package/dist/recipe/tasks/diff.d.ts +17 -0
- package/dist/recipe/tasks/diff.d.ts.map +1 -0
- package/dist/recipe/tasks/diff.js +6 -0
- package/dist/recipe/tasks/index.d.ts +9 -0
- package/dist/recipe/tasks/index.d.ts.map +1 -0
- package/dist/recipe/tasks/index.js +13 -0
- package/dist/recipe/tasks/placeholder-allow.d.ts +53 -0
- package/dist/recipe/tasks/placeholder-allow.d.ts.map +1 -0
- package/dist/recipe/tasks/placeholder-allow.js +218 -0
- package/dist/recipe/tasks/plan.d.ts +11 -0
- package/dist/recipe/tasks/plan.d.ts.map +1 -0
- package/dist/recipe/tasks/plan.js +72 -0
- package/dist/recipe/tasks/prune-defaults.d.ts +90 -0
- package/dist/recipe/tasks/prune-defaults.d.ts.map +1 -0
- package/dist/recipe/tasks/prune-defaults.js +184 -0
- package/dist/recipe/tasks/push.d.ts +18 -0
- package/dist/recipe/tasks/push.d.ts.map +1 -0
- package/dist/recipe/tasks/push.js +417 -0
- package/dist/recipe/tasks/shared.d.ts +152 -0
- package/dist/recipe/tasks/shared.d.ts.map +1 -0
- package/dist/recipe/tasks/shared.js +94 -0
- package/dist/recipe/validate.d.ts +103 -0
- package/dist/recipe/validate.d.ts.map +1 -0
- package/dist/recipe/validate.js +297 -0
- package/dist/serialization/commands.d.ts +48 -0
- package/dist/serialization/commands.d.ts.map +1 -0
- package/dist/serialization/commands.js +175 -0
- package/dist/serialization/compare.d.ts +29 -0
- package/dist/serialization/compare.d.ts.map +1 -0
- package/dist/serialization/compare.js +124 -0
- package/dist/serialization/field-filter.d.ts +7 -0
- package/dist/serialization/field-filter.d.ts.map +1 -0
- package/dist/serialization/field-filter.js +20 -0
- package/dist/serialization/filesystem-store/constants.d.ts +3 -0
- package/dist/serialization/filesystem-store/constants.d.ts.map +1 -0
- package/dist/serialization/filesystem-store/constants.js +5 -0
- package/dist/serialization/filesystem-store/index.d.ts +4 -0
- package/dist/serialization/filesystem-store/index.d.ts.map +1 -0
- package/dist/serialization/filesystem-store/index.js +15 -0
- package/dist/serialization/filesystem-store/items.d.ts +10 -0
- package/dist/serialization/filesystem-store/items.d.ts.map +1 -0
- package/dist/serialization/filesystem-store/items.js +64 -0
- package/dist/serialization/filesystem-store/roles.d.ts +6 -0
- package/dist/serialization/filesystem-store/roles.d.ts.map +1 -0
- package/dist/serialization/filesystem-store/roles.js +46 -0
- package/dist/serialization/filesystem-store/users.d.ts +6 -0
- package/dist/serialization/filesystem-store/users.d.ts.map +1 -0
- package/dist/serialization/filesystem-store/users.js +46 -0
- package/dist/serialization/filesystem-store/utils.d.ts +2 -0
- package/dist/serialization/filesystem-store/utils.d.ts.map +1 -0
- package/dist/serialization/filesystem-store/utils.js +17 -0
- package/dist/serialization/filesystem-store.d.ts +2 -0
- package/dist/serialization/filesystem-store.d.ts.map +1 -0
- package/dist/serialization/filesystem-store.js +17 -0
- package/dist/serialization/item-path.d.ts +32 -0
- package/dist/serialization/item-path.d.ts.map +1 -0
- package/dist/serialization/item-path.js +123 -0
- package/dist/serialization/path-provider.d.ts +12 -0
- package/dist/serialization/path-provider.d.ts.map +1 -0
- package/dist/serialization/path-provider.js +271 -0
- package/dist/serialization/signature.d.ts +4 -0
- package/dist/serialization/signature.d.ts.map +1 -0
- package/dist/serialization/signature.js +71 -0
- package/dist/serialization/sitecore-api/auth.d.ts +31 -0
- package/dist/serialization/sitecore-api/auth.d.ts.map +1 -0
- package/dist/serialization/sitecore-api/auth.js +319 -0
- package/dist/serialization/sitecore-api/graphql.d.ts +12 -0
- package/dist/serialization/sitecore-api/graphql.d.ts.map +1 -0
- package/dist/serialization/sitecore-api/graphql.js +20 -0
- package/dist/serialization/sitecore-api/history.d.ts +9 -0
- package/dist/serialization/sitecore-api/history.d.ts.map +1 -0
- package/dist/serialization/sitecore-api/history.js +36 -0
- package/dist/serialization/sitecore-api/index.d.ts +7 -0
- package/dist/serialization/sitecore-api/index.d.ts.map +1 -0
- package/dist/serialization/sitecore-api/index.js +22 -0
- package/dist/serialization/sitecore-api/items.d.ts +8 -0
- package/dist/serialization/sitecore-api/items.d.ts.map +1 -0
- package/dist/serialization/sitecore-api/items.js +132 -0
- package/dist/serialization/sitecore-api/publish.d.ts +14 -0
- package/dist/serialization/sitecore-api/publish.d.ts.map +1 -0
- package/dist/serialization/sitecore-api/publish.js +43 -0
- package/dist/serialization/sitecore-api/roles.d.ts +9 -0
- package/dist/serialization/sitecore-api/roles.d.ts.map +1 -0
- package/dist/serialization/sitecore-api/roles.js +42 -0
- package/dist/serialization/sitecore-api/users.d.ts +9 -0
- package/dist/serialization/sitecore-api/users.d.ts.map +1 -0
- package/dist/serialization/sitecore-api/users.js +62 -0
- package/dist/serialization/sitecore-api.d.ts +2 -0
- package/dist/serialization/sitecore-api.d.ts.map +1 -0
- package/dist/serialization/sitecore-api.js +17 -0
- package/dist/serialization/tasks/diff.d.ts +3 -0
- package/dist/serialization/tasks/diff.d.ts.map +1 -0
- package/dist/serialization/tasks/diff.js +109 -0
- package/dist/serialization/tasks/env/constants.d.ts +2 -0
- package/dist/serialization/tasks/env/constants.d.ts.map +1 -0
- package/dist/serialization/tasks/env/constants.js +4 -0
- package/dist/serialization/tasks/env/deploy-token.d.ts +3 -0
- package/dist/serialization/tasks/env/deploy-token.d.ts.map +1 -0
- package/dist/serialization/tasks/env/deploy-token.js +128 -0
- package/dist/serialization/tasks/env/index.d.ts +5 -0
- package/dist/serialization/tasks/env/index.d.ts.map +1 -0
- package/dist/serialization/tasks/env/index.js +11 -0
- package/dist/serialization/tasks/env/init/auth.d.ts +24 -0
- package/dist/serialization/tasks/env/init/auth.d.ts.map +1 -0
- package/dist/serialization/tasks/env/init/auth.js +122 -0
- package/dist/serialization/tasks/env/init/deploy-lookup.d.ts +22 -0
- package/dist/serialization/tasks/env/init/deploy-lookup.d.ts.map +1 -0
- package/dist/serialization/tasks/env/init/deploy-lookup.js +244 -0
- package/dist/serialization/tasks/env/init.d.ts +3 -0
- package/dist/serialization/tasks/env/init.d.ts.map +1 -0
- package/dist/serialization/tasks/env/init.js +253 -0
- package/dist/serialization/tasks/env/logout.d.ts +3 -0
- package/dist/serialization/tasks/env/logout.d.ts.map +1 -0
- package/dist/serialization/tasks/env/logout.js +61 -0
- package/dist/serialization/tasks/env/status.d.ts +3 -0
- package/dist/serialization/tasks/env/status.d.ts.map +1 -0
- package/dist/serialization/tasks/env/status.js +149 -0
- package/dist/serialization/tasks/env.d.ts +2 -0
- package/dist/serialization/tasks/env.d.ts.map +1 -0
- package/dist/serialization/tasks/env.js +17 -0
- package/dist/serialization/tasks/helpers/collect.d.ts +8 -0
- package/dist/serialization/tasks/helpers/collect.d.ts.map +1 -0
- package/dist/serialization/tasks/helpers/collect.js +29 -0
- package/dist/serialization/tasks/helpers/commands.d.ts +5 -0
- package/dist/serialization/tasks/helpers/commands.d.ts.map +1 -0
- package/dist/serialization/tasks/helpers/commands.js +14 -0
- package/dist/serialization/tasks/helpers/filesystem.d.ts +6 -0
- package/dist/serialization/tasks/helpers/filesystem.d.ts.map +1 -0
- package/dist/serialization/tasks/helpers/filesystem.js +27 -0
- package/dist/serialization/tasks/helpers/index.d.ts +6 -0
- package/dist/serialization/tasks/helpers/index.d.ts.map +1 -0
- package/dist/serialization/tasks/helpers/index.js +13 -0
- package/dist/serialization/tasks/helpers/items.d.ts +3 -0
- package/dist/serialization/tasks/helpers/items.d.ts.map +1 -0
- package/dist/serialization/tasks/helpers/items.js +5 -0
- package/dist/serialization/tasks/helpers/sitecore.d.ts +5 -0
- package/dist/serialization/tasks/helpers/sitecore.d.ts.map +1 -0
- package/dist/serialization/tasks/helpers/sitecore.js +109 -0
- package/dist/serialization/tasks/helpers.d.ts +2 -0
- package/dist/serialization/tasks/helpers.d.ts.map +1 -0
- package/dist/serialization/tasks/helpers.js +17 -0
- package/dist/serialization/tasks/index.d.ts +8 -0
- package/dist/serialization/tasks/index.d.ts.map +1 -0
- package/dist/serialization/tasks/index.js +19 -0
- package/dist/serialization/tasks/info.d.ts +4 -0
- package/dist/serialization/tasks/info.d.ts.map +1 -0
- package/dist/serialization/tasks/info.js +82 -0
- package/dist/serialization/tasks/package.d.ts +4 -0
- package/dist/serialization/tasks/package.d.ts.map +1 -0
- package/dist/serialization/tasks/package.js +171 -0
- package/dist/serialization/tasks/pull.d.ts +3 -0
- package/dist/serialization/tasks/pull.d.ts.map +1 -0
- package/dist/serialization/tasks/pull.js +82 -0
- package/dist/serialization/tasks/push.d.ts +3 -0
- package/dist/serialization/tasks/push.d.ts.map +1 -0
- package/dist/serialization/tasks/push.js +101 -0
- package/dist/serialization/tasks/roles.d.ts +6 -0
- package/dist/serialization/tasks/roles.d.ts.map +1 -0
- package/dist/serialization/tasks/roles.js +103 -0
- package/dist/serialization/tasks/shared.d.ts +19 -0
- package/dist/serialization/tasks/shared.d.ts.map +1 -0
- package/dist/serialization/tasks/shared.js +59 -0
- package/dist/serialization/tasks/types.d.ts +73 -0
- package/dist/serialization/tasks/types.d.ts.map +1 -0
- package/dist/serialization/tasks/types.js +8 -0
- package/dist/serialization/tasks/users.d.ts +5 -0
- package/dist/serialization/tasks/users.d.ts.map +1 -0
- package/dist/serialization/tasks/users.js +90 -0
- package/dist/serialization/tasks/validate.d.ts +5 -0
- package/dist/serialization/tasks/validate.d.ts.map +1 -0
- package/dist/serialization/tasks/validate.js +50 -0
- package/dist/serialization/tasks/watch.d.ts +3 -0
- package/dist/serialization/tasks/watch.d.ts.map +1 -0
- package/dist/serialization/tasks/watch.js +75 -0
- package/dist/serialization/tasks.d.ts +4 -0
- package/dist/serialization/tasks.d.ts.map +1 -0
- package/dist/serialization/tasks.js +19 -0
- package/dist/serialization/tree-spec.d.ts +51 -0
- package/dist/serialization/tree-spec.d.ts.map +1 -0
- package/dist/serialization/tree-spec.js +241 -0
- package/dist/serialization/types.d.ts +75 -0
- package/dist/serialization/types.d.ts.map +1 -0
- package/dist/serialization/types.js +2 -0
- package/dist/serialization/wildcard.d.ts +3 -0
- package/dist/serialization/wildcard.d.ts.map +1 -0
- package/dist/serialization/wildcard.js +24 -0
- package/dist/serialization/yaml.d.ts +9 -0
- package/dist/serialization/yaml.d.ts.map +1 -0
- package/dist/serialization/yaml.js +307 -0
- package/dist/shared/browser.d.ts +2 -0
- package/dist/shared/browser.d.ts.map +1 -0
- package/dist/shared/browser.js +36 -0
- package/dist/shared/cli-options.d.ts +17 -0
- package/dist/shared/cli-options.d.ts.map +1 -0
- package/dist/shared/cli-options.js +8 -0
- package/dist/shared/cli-tasks.d.ts +38 -0
- package/dist/shared/cli-tasks.d.ts.map +1 -0
- package/dist/shared/cli-tasks.js +108 -0
- package/dist/shared/config-template.d.ts +23 -0
- package/dist/shared/config-template.d.ts.map +1 -0
- package/dist/shared/config-template.js +38 -0
- package/dist/shared/env.d.ts +28 -0
- package/dist/shared/env.d.ts.map +1 -0
- package/dist/shared/env.js +38 -0
- package/dist/shared/errors.d.ts +21 -0
- package/dist/shared/errors.d.ts.map +1 -0
- package/dist/shared/errors.js +59 -0
- package/dist/shared/graphql.d.ts +76 -0
- package/dist/shared/graphql.d.ts.map +1 -0
- package/dist/shared/graphql.js +222 -0
- package/dist/shared/history.d.ts +12 -0
- package/dist/shared/history.d.ts.map +1 -0
- package/dist/shared/history.js +62 -0
- package/dist/shared/keychain.d.ts +15 -0
- package/dist/shared/keychain.d.ts.map +1 -0
- package/dist/shared/keychain.js +177 -0
- package/dist/shared/logger.d.ts +24 -0
- package/dist/shared/logger.d.ts.map +1 -0
- package/dist/shared/logger.js +157 -0
- package/dist/shared/output.d.ts +7 -0
- package/dist/shared/output.d.ts.map +1 -0
- package/dist/shared/output.js +21 -0
- package/dist/shared/prompt.d.ts +5 -0
- package/dist/shared/prompt.d.ts.map +1 -0
- package/dist/shared/prompt.js +87 -0
- package/dist/shared/redact.d.ts +3 -0
- package/dist/shared/redact.d.ts.map +1 -0
- package/dist/shared/redact.js +47 -0
- package/dist/shared/spinner.d.ts +5 -0
- package/dist/shared/spinner.d.ts.map +1 -0
- package/dist/shared/spinner.js +89 -0
- package/dist/shared/style.d.ts +2 -0
- package/dist/shared/style.d.ts.map +1 -0
- package/dist/shared/style.js +61 -0
- package/dist/shared/telemetry.d.ts +21 -0
- package/dist/shared/telemetry.d.ts.map +1 -0
- package/dist/shared/telemetry.js +226 -0
- package/dist/shared/validate.d.ts +3 -0
- package/dist/shared/validate.d.ts.map +1 -0
- package/dist/shared/validate.js +32 -0
- package/dist/sites/api/collections.d.ts +25 -0
- package/dist/sites/api/collections.d.ts.map +1 -0
- package/dist/sites/api/collections.js +21 -0
- package/dist/sites/api/index.d.ts +26 -0
- package/dist/sites/api/index.d.ts.map +1 -0
- package/dist/sites/api/index.js +55 -0
- package/dist/sites/api/jobs.d.ts +31 -0
- package/dist/sites/api/jobs.d.ts.map +1 -0
- package/dist/sites/api/jobs.js +10 -0
- package/dist/sites/api/languages.d.ts +22 -0
- package/dist/sites/api/languages.d.ts.map +1 -0
- package/dist/sites/api/languages.js +18 -0
- package/dist/sites/api/request.d.ts +24 -0
- package/dist/sites/api/request.d.ts.map +1 -0
- package/dist/sites/api/request.js +99 -0
- package/dist/sites/api/sites.d.ts +53 -0
- package/dist/sites/api/sites.d.ts.map +1 -0
- package/dist/sites/api/sites.js +41 -0
- package/dist/sites/api/types.d.ts +29 -0
- package/dist/sites/api/types.d.ts.map +1 -0
- package/dist/sites/api/types.js +4 -0
- package/package.json +109 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runRecipePlan = void 0;
|
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
const errors_1 = require("../../shared/errors");
|
|
9
|
+
const io_1 = require("../io");
|
|
10
|
+
const plan_1 = require("../plan");
|
|
11
|
+
const shared_1 = require("./shared");
|
|
12
|
+
/**
|
|
13
|
+
* `scai recipe plan` — read-then-diff against a tenant, no mutations.
|
|
14
|
+
*
|
|
15
|
+
* Operates on a pre-compiled IR file (the artifact from `scai recipe
|
|
16
|
+
* compile`). For the recipe-source workflow, use `scai recipe push
|
|
17
|
+
* --what-if` instead — it compiles in-memory and runs the planner.
|
|
18
|
+
*/
|
|
19
|
+
const runRecipePlan = async (options) => {
|
|
20
|
+
const logger = (0, shared_1.toLogger)(options);
|
|
21
|
+
const tenant = (0, shared_1.resolveTenant)(options);
|
|
22
|
+
if (!options.input) {
|
|
23
|
+
throw (0, errors_1.createCliError)("--input <ir.json> is required for `recipe plan`.", "INPUT_INVALID", {
|
|
24
|
+
hint: "Run `scai recipe compile` first, or use `scai recipe push --what-if` to plan from a recipe source.",
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
const ir = await (0, io_1.loadIr)(options.input);
|
|
28
|
+
const plan = await (0, plan_1.buildPlan)(ir, tenant.client);
|
|
29
|
+
const inputPath = options.input;
|
|
30
|
+
const outputPath = options.output ?? (0, io_1.defaultPlanPath)(ir.recipeHandle, node_path_1.default.dirname(node_path_1.default.resolve(inputPath)));
|
|
31
|
+
await (0, io_1.writePlan)(outputPath, plan);
|
|
32
|
+
if (logger.isJson()) {
|
|
33
|
+
logger.json({
|
|
34
|
+
command: "recipe.plan",
|
|
35
|
+
environment: tenant.envName,
|
|
36
|
+
recipeHandle: ir.recipeHandle,
|
|
37
|
+
input: inputPath,
|
|
38
|
+
output: outputPath,
|
|
39
|
+
summary: plan.summary,
|
|
40
|
+
actions: plan.actions.map((action) => ({
|
|
41
|
+
index: action.index,
|
|
42
|
+
op: action.operation.op,
|
|
43
|
+
label: action.operation.label,
|
|
44
|
+
status: action.status,
|
|
45
|
+
reason: action.reason,
|
|
46
|
+
diff: action.diff,
|
|
47
|
+
})),
|
|
48
|
+
});
|
|
49
|
+
return plan;
|
|
50
|
+
}
|
|
51
|
+
logger.info(`Plan for ${ir.recipeHandle} on ${tenant.envName}`, "cyan");
|
|
52
|
+
for (const action of plan.actions) {
|
|
53
|
+
const tag = formatActionTag(action.status);
|
|
54
|
+
logger.info(` ${tag} ${action.operation.label}${action.reason ? ` — ${action.reason}` : ""}`);
|
|
55
|
+
}
|
|
56
|
+
logger.info(` Summary: ${plan.summary.create} create / ${plan.summary.update} update / ${plan.summary.skip} skip${plan.summary.error ? ` / ${plan.summary.error} error` : ""}`, plan.summary.error ? "yellow" : "green");
|
|
57
|
+
logger.info(` Plan written to ${outputPath}`);
|
|
58
|
+
return plan;
|
|
59
|
+
};
|
|
60
|
+
exports.runRecipePlan = runRecipePlan;
|
|
61
|
+
const formatActionTag = (status) => {
|
|
62
|
+
switch (status) {
|
|
63
|
+
case "create":
|
|
64
|
+
return "[+]";
|
|
65
|
+
case "update":
|
|
66
|
+
return "[~]";
|
|
67
|
+
case "skip":
|
|
68
|
+
return "[ ]";
|
|
69
|
+
case "error":
|
|
70
|
+
return "[!]";
|
|
71
|
+
}
|
|
72
|
+
};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Logger } from "../../shared/logger";
|
|
2
|
+
import type { AuthoringApiClient } from "../api/client";
|
|
3
|
+
import { type RecipeTenantOptions } from "./shared";
|
|
4
|
+
/**
|
|
5
|
+
* `scai recipe prune-defaults` — remove the SXA Headless OOTB content
|
|
6
|
+
* that ships with every fresh site under `Available Renderings`,
|
|
7
|
+
* `Headless Variants`, and the per-site `Data` bucket. Registry installs
|
|
8
|
+
* ship their own renderings, variants, and datasources; the OOTB folders
|
|
9
|
+
* just noise up the authoring tree. Folder parents are preserved (we
|
|
10
|
+
* keep using `Available Renderings`, `Headless Variants`, and `Data`
|
|
11
|
+
* ourselves) — only the named child folders are removed. `Tags` under
|
|
12
|
+
* `Data` is left alone because authors typically populate it.
|
|
13
|
+
*
|
|
14
|
+
* Idempotent by design: each target is `getItem`-ed first, so a missing
|
|
15
|
+
* path is a clean skip rather than an error. Re-runs after a successful
|
|
16
|
+
* prune produce zero deletions. The deletion call itself also tolerates
|
|
17
|
+
* a "not found" / "may have been deleted by another user" response from
|
|
18
|
+
* the Authoring API — that race shows up when a parallel prune (or an
|
|
19
|
+
* author) removed the item between getItem and deleteItem.
|
|
20
|
+
*/
|
|
21
|
+
declare const DEFAULT_PRUNE_TARGETS: {
|
|
22
|
+
/**
|
|
23
|
+
* `Available Renderings` children to remove. SXA ships six default
|
|
24
|
+
* sections; we keep `FEaaS` (the Forms-as-a-Service rendering bucket)
|
|
25
|
+
* and `Forms` (the Sitecore Forms bucket) because they're not yet
|
|
26
|
+
* superseded by registry-side recipes.
|
|
27
|
+
*/
|
|
28
|
+
readonly availableRenderings: readonly ["Media", "Navigation", "Page Content", "Page Structure"];
|
|
29
|
+
/**
|
|
30
|
+
* `Headless Variants` children to remove. SXA ships variants for each
|
|
31
|
+
* default rendering; registry-side recipes emit their own variants
|
|
32
|
+
* under `<headlessVariantsRoot>/<section>/<rendering>/<variant>` so
|
|
33
|
+
* the OOTB siblings just clutter the tree.
|
|
34
|
+
*/
|
|
35
|
+
readonly headlessVariants: readonly ["Image", "LinkList", "Navigation", "PageContent", "Promo", "RichText", "Title"];
|
|
36
|
+
/**
|
|
37
|
+
* `Data` children to remove. SXA seeds these datasource buckets per
|
|
38
|
+
* site; registry recipes carry their own datasources, so the OOTB
|
|
39
|
+
* folders are pure clutter. `Tags` is intentionally omitted —
|
|
40
|
+
* authors populate it during normal content work.
|
|
41
|
+
*/
|
|
42
|
+
readonly contentItems: readonly ["Images", "Link Lists", "Navigation Filters", "Promos", "Texts"];
|
|
43
|
+
};
|
|
44
|
+
export type PruneGroup = keyof typeof DEFAULT_PRUNE_TARGETS;
|
|
45
|
+
export type PruneActionStatus = "deleted" | "missing" | "would-delete";
|
|
46
|
+
export interface PruneAction {
|
|
47
|
+
group: PruneGroup;
|
|
48
|
+
path: string;
|
|
49
|
+
status: PruneActionStatus;
|
|
50
|
+
itemId?: string;
|
|
51
|
+
}
|
|
52
|
+
export interface RecipePruneDefaultsOptions extends RecipeTenantOptions {
|
|
53
|
+
/** Override `headlessVariantsRoot` from the env profile. */
|
|
54
|
+
headlessVariantsRoot?: string;
|
|
55
|
+
/** Override `availableRenderingsRoot` from the env profile. */
|
|
56
|
+
availableRenderingsRoot?: string;
|
|
57
|
+
/** Override `contentItemsRoot` from the env profile. */
|
|
58
|
+
contentItemsRoot?: string;
|
|
59
|
+
/** Print the deletions without applying them. */
|
|
60
|
+
whatIf?: boolean;
|
|
61
|
+
/** Bypass the env profile's `allowWrite` gate. */
|
|
62
|
+
allowWrite?: boolean;
|
|
63
|
+
}
|
|
64
|
+
export interface RecipePruneDefaultsResult {
|
|
65
|
+
environment: string;
|
|
66
|
+
whatIf: boolean;
|
|
67
|
+
actions: PruneAction[];
|
|
68
|
+
summary: {
|
|
69
|
+
deleted: number;
|
|
70
|
+
missing: number;
|
|
71
|
+
wouldDelete: number;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
interface PruneCoreOptions {
|
|
75
|
+
client: AuthoringApiClient;
|
|
76
|
+
availableRenderingsRoot: string;
|
|
77
|
+
headlessVariantsRoot: string;
|
|
78
|
+
contentItemsRoot: string;
|
|
79
|
+
whatIf: boolean;
|
|
80
|
+
logger?: Logger;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Pure(ish) deletion loop — exposed for unit tests so they can drive
|
|
84
|
+
* the deletion contract against a fake `AuthoringApiClient` without
|
|
85
|
+
* threading a full sitecoreai.cli.json through `resolveTenant`.
|
|
86
|
+
*/
|
|
87
|
+
export declare const pruneDefaultsAgainstClient: (options: PruneCoreOptions) => Promise<PruneAction[]>;
|
|
88
|
+
export declare const runRecipePruneDefaults: (options: RecipePruneDefaultsOptions) => Promise<RecipePruneDefaultsResult>;
|
|
89
|
+
export {};
|
|
90
|
+
//# sourceMappingURL=prune-defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prune-defaults.d.ts","sourceRoot":"","sources":["../../../src/recipe/tasks/prune-defaults.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,UAAU,CAAC;AAElB;;;;;;;;;;;;;;;;GAgBG;AAEH,QAAA,MAAM,qBAAqB;IACzB;;;;;OAKG;;IAEH;;;;;OAKG;;IAUH;;;;;OAKG;;CAEK,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,qBAAqB,CAAC;AAE5D,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,CAAC;AAEvE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,0BAA2B,SAAQ,mBAAmB;IACrE,4DAA4D;IAC5D,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,+DAA+D;IAC/D,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kDAAkD;IAClD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CACpE;AA0CD,UAAU,gBAAgB;IACxB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,GACrC,SAAS,gBAAgB,KACxB,OAAO,CAAC,WAAW,EAAE,CAuCvB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,SAAS,0BAA0B,KAClC,OAAO,CAAC,yBAAyB,CAwEnC,CAAC"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runRecipePruneDefaults = exports.pruneDefaultsAgainstClient = void 0;
|
|
4
|
+
const errors_1 = require("../../shared/errors");
|
|
5
|
+
const shared_1 = require("./shared");
|
|
6
|
+
/**
|
|
7
|
+
* `scai recipe prune-defaults` — remove the SXA Headless OOTB content
|
|
8
|
+
* that ships with every fresh site under `Available Renderings`,
|
|
9
|
+
* `Headless Variants`, and the per-site `Data` bucket. Registry installs
|
|
10
|
+
* ship their own renderings, variants, and datasources; the OOTB folders
|
|
11
|
+
* just noise up the authoring tree. Folder parents are preserved (we
|
|
12
|
+
* keep using `Available Renderings`, `Headless Variants`, and `Data`
|
|
13
|
+
* ourselves) — only the named child folders are removed. `Tags` under
|
|
14
|
+
* `Data` is left alone because authors typically populate it.
|
|
15
|
+
*
|
|
16
|
+
* Idempotent by design: each target is `getItem`-ed first, so a missing
|
|
17
|
+
* path is a clean skip rather than an error. Re-runs after a successful
|
|
18
|
+
* prune produce zero deletions. The deletion call itself also tolerates
|
|
19
|
+
* a "not found" / "may have been deleted by another user" response from
|
|
20
|
+
* the Authoring API — that race shows up when a parallel prune (or an
|
|
21
|
+
* author) removed the item between getItem and deleteItem.
|
|
22
|
+
*/
|
|
23
|
+
const DEFAULT_PRUNE_TARGETS = {
|
|
24
|
+
/**
|
|
25
|
+
* `Available Renderings` children to remove. SXA ships six default
|
|
26
|
+
* sections; we keep `FEaaS` (the Forms-as-a-Service rendering bucket)
|
|
27
|
+
* and `Forms` (the Sitecore Forms bucket) because they're not yet
|
|
28
|
+
* superseded by registry-side recipes.
|
|
29
|
+
*/
|
|
30
|
+
availableRenderings: ["Media", "Navigation", "Page Content", "Page Structure"],
|
|
31
|
+
/**
|
|
32
|
+
* `Headless Variants` children to remove. SXA ships variants for each
|
|
33
|
+
* default rendering; registry-side recipes emit their own variants
|
|
34
|
+
* under `<headlessVariantsRoot>/<section>/<rendering>/<variant>` so
|
|
35
|
+
* the OOTB siblings just clutter the tree.
|
|
36
|
+
*/
|
|
37
|
+
headlessVariants: [
|
|
38
|
+
"Image",
|
|
39
|
+
"LinkList",
|
|
40
|
+
"Navigation",
|
|
41
|
+
"PageContent",
|
|
42
|
+
"Promo",
|
|
43
|
+
"RichText",
|
|
44
|
+
"Title",
|
|
45
|
+
],
|
|
46
|
+
/**
|
|
47
|
+
* `Data` children to remove. SXA seeds these datasource buckets per
|
|
48
|
+
* site; registry recipes carry their own datasources, so the OOTB
|
|
49
|
+
* folders are pure clutter. `Tags` is intentionally omitted —
|
|
50
|
+
* authors populate it during normal content work.
|
|
51
|
+
*/
|
|
52
|
+
contentItems: ["Images", "Link Lists", "Navigation Filters", "Promos", "Texts"],
|
|
53
|
+
};
|
|
54
|
+
const buildTargets = (availableRenderingsRoot, headlessVariantsRoot, contentItemsRoot) => {
|
|
55
|
+
const ar = availableRenderingsRoot.replace(/\/+$/, "");
|
|
56
|
+
const hv = headlessVariantsRoot.replace(/\/+$/, "");
|
|
57
|
+
const ci = contentItemsRoot.replace(/\/+$/, "");
|
|
58
|
+
return [
|
|
59
|
+
...DEFAULT_PRUNE_TARGETS.availableRenderings.map((name) => ({
|
|
60
|
+
group: "availableRenderings",
|
|
61
|
+
path: `${ar}/${name}`,
|
|
62
|
+
})),
|
|
63
|
+
...DEFAULT_PRUNE_TARGETS.headlessVariants.map((name) => ({
|
|
64
|
+
group: "headlessVariants",
|
|
65
|
+
path: `${hv}/${name}`,
|
|
66
|
+
})),
|
|
67
|
+
...DEFAULT_PRUNE_TARGETS.contentItems.map((name) => ({
|
|
68
|
+
group: "contentItems",
|
|
69
|
+
path: `${ci}/${name}`,
|
|
70
|
+
})),
|
|
71
|
+
];
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Detect the Authoring GraphQL "item is gone" response. The shared
|
|
75
|
+
* graphql.ts wrapper joins all error.message strings into a single
|
|
76
|
+
* `Authoring GraphQL errors: <messages>` payload on a NETWORK CliError;
|
|
77
|
+
* we match the canonical Sitecore phrasing that fires when an itemId
|
|
78
|
+
* doesn't resolve at delete time.
|
|
79
|
+
*/
|
|
80
|
+
const isItemNotFoundError = (error) => {
|
|
81
|
+
if (!(error instanceof Error))
|
|
82
|
+
return false;
|
|
83
|
+
const message = error.message;
|
|
84
|
+
return (message.includes("was not found") ||
|
|
85
|
+
message.includes("may have been deleted by another user"));
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Pure(ish) deletion loop — exposed for unit tests so they can drive
|
|
89
|
+
* the deletion contract against a fake `AuthoringApiClient` without
|
|
90
|
+
* threading a full sitecoreai.cli.json through `resolveTenant`.
|
|
91
|
+
*/
|
|
92
|
+
const pruneDefaultsAgainstClient = async (options) => {
|
|
93
|
+
const { client, availableRenderingsRoot, headlessVariantsRoot, contentItemsRoot, whatIf, logger } = options;
|
|
94
|
+
const targets = buildTargets(availableRenderingsRoot, headlessVariantsRoot, contentItemsRoot);
|
|
95
|
+
const actions = [];
|
|
96
|
+
for (const target of targets) {
|
|
97
|
+
const existing = await client.getItem({ path: target.path });
|
|
98
|
+
if (!existing) {
|
|
99
|
+
actions.push({ ...target, status: "missing" });
|
|
100
|
+
logger?.info(` [skip] ${target.path} — not present`, "gray");
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
if (whatIf) {
|
|
104
|
+
actions.push({ ...target, status: "would-delete", itemId: existing.itemId });
|
|
105
|
+
logger?.info(` [dry-run] would delete ${target.path}`, "yellow");
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
// Delete by itemId — `deleteItem({ path })` works too, but we
|
|
109
|
+
// already have the itemId from the existence check, and itemId
|
|
110
|
+
// selectors avoid Sitecore's leaf-path resolution edge cases.
|
|
111
|
+
try {
|
|
112
|
+
await client.deleteItem({ itemId: existing.itemId });
|
|
113
|
+
actions.push({ ...target, status: "deleted", itemId: existing.itemId });
|
|
114
|
+
logger?.info(` [deleted] ${target.path}`, "green");
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
// Authoring GraphQL surfaces concurrent-delete as a "was not found"
|
|
118
|
+
// / "may have been deleted by another user" message wrapped in a
|
|
119
|
+
// NETWORK CliError. Treat as a clean skip — the post-condition
|
|
120
|
+
// (item gone) is satisfied either way.
|
|
121
|
+
if (isItemNotFoundError(error)) {
|
|
122
|
+
actions.push({ ...target, status: "missing", itemId: existing.itemId });
|
|
123
|
+
logger?.info(` [skip] ${target.path} — already deleted`, "gray");
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
throw error;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return actions;
|
|
130
|
+
};
|
|
131
|
+
exports.pruneDefaultsAgainstClient = pruneDefaultsAgainstClient;
|
|
132
|
+
const runRecipePruneDefaults = async (options) => {
|
|
133
|
+
const logger = (0, shared_1.toLogger)(options);
|
|
134
|
+
const tenant = (0, shared_1.resolveTenant)(options);
|
|
135
|
+
const isDryRun = Boolean(options.whatIf);
|
|
136
|
+
if (!isDryRun) {
|
|
137
|
+
(0, shared_1.ensureAllowWrite)(tenant.root, tenant.envName, options.allowWrite);
|
|
138
|
+
}
|
|
139
|
+
const headlessVariantsRoot = options.headlessVariantsRoot ?? tenant.environment.headlessVariantsRoot;
|
|
140
|
+
const availableRenderingsRoot = options.availableRenderingsRoot ?? tenant.environment.availableRenderingsRoot;
|
|
141
|
+
const contentItemsRoot = options.contentItemsRoot ?? tenant.environment.contentItemsRoot;
|
|
142
|
+
if (!headlessVariantsRoot || !availableRenderingsRoot || !contentItemsRoot) {
|
|
143
|
+
const missing = [
|
|
144
|
+
!headlessVariantsRoot && "headlessVariantsRoot",
|
|
145
|
+
!availableRenderingsRoot && "availableRenderingsRoot",
|
|
146
|
+
!contentItemsRoot && "contentItemsRoot",
|
|
147
|
+
]
|
|
148
|
+
.filter(Boolean)
|
|
149
|
+
.join(", ");
|
|
150
|
+
throw (0, errors_1.createCliError)(`Recipe prune-defaults missing root path(s): ${missing} not configured for environment '${tenant.envName}'.`, "INPUT_INVALID", {
|
|
151
|
+
hint: `Add 'headlessVariantsRoot', 'availableRenderingsRoot', and 'contentItemsRoot' to envProfiles.${tenant.envName} in sitecoreai.cli.json (or pass --headless-variants-root / --available-renderings-root / --content-items-root).`,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
if (!logger.isJson()) {
|
|
155
|
+
logger.info(`${isDryRun ? "Dry-run prune-defaults" : "Pruning SXA defaults"} on ${tenant.envName}`, "cyan");
|
|
156
|
+
}
|
|
157
|
+
const actions = await (0, exports.pruneDefaultsAgainstClient)({
|
|
158
|
+
client: tenant.client,
|
|
159
|
+
availableRenderingsRoot,
|
|
160
|
+
headlessVariantsRoot,
|
|
161
|
+
contentItemsRoot,
|
|
162
|
+
whatIf: isDryRun,
|
|
163
|
+
logger: logger.isJson() ? undefined : logger,
|
|
164
|
+
});
|
|
165
|
+
const summary = {
|
|
166
|
+
deleted: actions.filter((a) => a.status === "deleted").length,
|
|
167
|
+
missing: actions.filter((a) => a.status === "missing").length,
|
|
168
|
+
wouldDelete: actions.filter((a) => a.status === "would-delete").length,
|
|
169
|
+
};
|
|
170
|
+
if (logger.isJson()) {
|
|
171
|
+
logger.json({
|
|
172
|
+
command: "recipe.prune-defaults",
|
|
173
|
+
environment: tenant.envName,
|
|
174
|
+
whatIf: isDryRun,
|
|
175
|
+
summary,
|
|
176
|
+
actions,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
logger.info(`Summary: ${summary.deleted} deleted / ${summary.missing} not present${summary.wouldDelete ? ` / ${summary.wouldDelete} would-delete` : ""}`, summary.deleted > 0 || summary.wouldDelete > 0 ? "green" : "gray");
|
|
181
|
+
}
|
|
182
|
+
return { environment: tenant.envName, whatIf: isDryRun, actions, summary };
|
|
183
|
+
};
|
|
184
|
+
exports.runRecipePruneDefaults = runRecipePruneDefaults;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ExecutionResult } from "../execute";
|
|
2
|
+
import { type RecipePushOptions } from "./shared";
|
|
3
|
+
/**
|
|
4
|
+
* `scai recipe push` — apply recipes to a tenant.
|
|
5
|
+
*
|
|
6
|
+
* Input resolution:
|
|
7
|
+
* - `--input <file>` — single recipe (`.recipe.ts/.recipe.json`) or IR
|
|
8
|
+
* (`.ir.json`). The file extension picks the path: recipes are
|
|
9
|
+
* compiled in-memory, IRs are loaded directly.
|
|
10
|
+
* - default: expand the config `recipes` glob and push each match in
|
|
11
|
+
* turn (one IR per recipe; per-recipe events).
|
|
12
|
+
*
|
|
13
|
+
* Honors `--what-if` (becomes plan-only) and `--allow-write` (the
|
|
14
|
+
* scai-wide safety gate). Streams progress as `task-progress`-style
|
|
15
|
+
* events in JSON mode; renders a per-op summary in human mode.
|
|
16
|
+
*/
|
|
17
|
+
export declare const runRecipePush: (options: RecipePushOptions) => Promise<ExecutionResult[]>;
|
|
18
|
+
//# sourceMappingURL=push.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/recipe/tasks/push.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAkC,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlF,OAAO,EAML,KAAK,iBAAiB,EACvB,MAAM,UAAU,CAAC;AAiDlB;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,aAAa,GAAU,SAAS,iBAAiB,KAAG,OAAO,CAAC,eAAe,EAAE,CA0YzF,CAAC"}
|