@botpress/cli 6.0.0 → 6.2.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/.turbo/turbo-build.log +13 -13
- package/dist/api/bot-body.js +10 -5
- package/dist/api/bot-body.js.map +2 -2
- package/dist/api/integration-body.js +12 -6
- package/dist/api/integration-body.js.map +2 -2
- package/dist/api/interface-body.js +10 -5
- package/dist/api/interface-body.js.map +2 -2
- package/dist/api/plugin-body.js +10 -5
- package/dist/api/plugin-body.js.map +2 -2
- package/dist/code-generation/bot-implementation/index.js +9 -1
- package/dist/code-generation/bot-implementation/index.js.map +2 -2
- package/dist/code-generation/index.d.ts +1 -1
- package/dist/code-generation/index.js +2 -2
- package/dist/code-generation/index.js.map +2 -2
- package/dist/code-generation/integration-implementation/index.js +2 -2
- package/dist/code-generation/integration-implementation/index.js.map +2 -2
- package/dist/code-generation/secret-module.d.ts +12 -0
- package/dist/code-generation/{integration-implementation/integration-secret.js → secret-module.js} +13 -13
- package/dist/code-generation/secret-module.js.map +7 -0
- package/dist/command-definitions.d.ts +43 -0
- package/dist/command-definitions.js +4 -0
- package/dist/command-definitions.js.map +2 -2
- package/dist/command-implementations/deploy-command.js +1 -0
- package/dist/command-implementations/deploy-command.js.map +2 -2
- package/dist/command-implementations/dev-command.js +9 -9
- package/dist/command-implementations/dev-command.js.map +2 -2
- package/dist/command-implementations/index.d.ts +45 -0
- package/dist/command-implementations/index.js +2 -1
- package/dist/command-implementations/index.js.map +2 -2
- package/dist/command-implementations/profile-commands.d.ts +4 -0
- package/dist/command-implementations/profile-commands.js +31 -1
- package/dist/command-implementations/profile-commands.js.map +2 -2
- package/dist/command-implementations/project-command.d.ts +3 -1
- package/dist/command-implementations/project-command.js +7 -5
- package/dist/command-implementations/project-command.js.map +2 -2
- package/dist/command-implementations/serve-command.js +1 -1
- package/dist/command-implementations/serve-command.js.map +2 -2
- package/dist/config.d.ts +40 -0
- package/dist/config.js +12 -1
- package/dist/config.js.map +2 -2
- package/dist/index.d.ts +45 -0
- package/dist/index.js +2 -1
- package/dist/index.js.map +2 -2
- package/dist/linter/base-linter.test.js +4 -2
- package/dist/linter/base-linter.test.js.map +2 -2
- package/dist/linter/ruleset-tests/bot.ruleset.test.js +22 -0
- package/dist/linter/ruleset-tests/bot.ruleset.test.js.map +2 -2
- package/dist/linter/rulesets/bot.ruleset.js +3 -1
- package/dist/linter/rulesets/bot.ruleset.js.map +2 -2
- package/dist/linter/rulesets/integration.ruleset.js +2 -12
- package/dist/linter/rulesets/integration.ruleset.js.map +2 -2
- package/dist/linter/rulesets/shared-rules.d.ts +2 -0
- package/dist/linter/rulesets/shared-rules.js +41 -0
- package/dist/linter/rulesets/shared-rules.js.map +7 -0
- package/dist/utils/schema-utils.d.ts +1 -0
- package/dist/utils/schema-utils.js +5 -2
- package/dist/utils/schema-utils.js.map +2 -2
- package/package.json +3 -3
- package/templates/empty-bot/package.json +2 -2
- package/templates/empty-integration/package.json +2 -2
- package/templates/empty-plugin/package.json +1 -1
- package/templates/hello-world/package.json +2 -2
- package/templates/webhook-message/package.json +2 -2
- package/dist/code-generation/integration-implementation/integration-secret.d.ts +0 -9
- package/dist/code-generation/integration-implementation/integration-secret.js.map +0 -7
package/dist/config.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/config.ts"],
|
|
4
|
-
"sourcesContent": ["import * as consts from './consts'\nimport { ProjectTemplates } from './project-templates'\nimport type { CommandOption, CommandSchema } from './typings'\n\n// command options\n\nconst port = {\n type: 'number',\n description: 'The port to use',\n} satisfies CommandOption\n\nconst workDir = {\n type: 'string',\n description: 'The path to the project',\n default: consts.defaultWorkDir,\n} satisfies CommandOption\n\nconst noBuild = {\n type: 'boolean',\n description: 'Skip the build step',\n default: false,\n} satisfies CommandOption\n\nconst dryRun = {\n type: 'boolean',\n description: 'Ask the API not to perform the actual operation',\n default: false,\n} as const satisfies CommandOption\n\nconst apiUrl = {\n type: 'string',\n description: 'The URL of the Botpress server',\n} satisfies CommandOption\n\nconst token = {\n type: 'string',\n description: 'You Personal Access Token ',\n} satisfies CommandOption\n\nconst workspaceId = {\n type: 'string',\n description: 'The Workspace Id to deploy to',\n} satisfies CommandOption\n\nconst secrets = {\n type: 'string',\n description: 'Values for the integration secrets',\n array: true,\n default: [],\n} satisfies CommandOption\n\nconst botRef = {\n type: 'string',\n description: 'The bot ID. Bot Name is not supported.',\n demandOption: true,\n positional: true,\n idx: 0,\n} satisfies CommandOption\n\nconst packageRef = {\n type: 'string',\n description:\n 'The package ID or name with optional version. The package can be either an integration or an interface. Ex: teams, teams@0.2.0, llm@5.1.0',\n positional: true,\n idx: 0,\n} satisfies CommandOption\n\nconst integrationRef = {\n ...packageRef,\n demandOption: true,\n description: 'The integration ID or name with optional version. Ex: teams or teams@0.2.0',\n} satisfies CommandOption\n\nconst interfaceRef = {\n ...packageRef,\n demandOption: true,\n description: 'The interface ID or name and version. Ex: llm@5.1.0',\n} satisfies CommandOption\n\nconst pluginRef = {\n ...packageRef,\n demandOption: true,\n description: 'The plugin ID or name and version. Ex: knowledge@0.0.1',\n} satisfies CommandOption\n\nconst sourceMap = { type: 'boolean', description: 'Generate sourcemaps', default: false } satisfies CommandOption\n\nconst minify = { type: 'boolean', description: 'Minify the bundled code', default: true } satisfies CommandOption\n\nconst dev = {\n type: 'boolean',\n description: 'List only dev bots / dev integrations',\n default: false,\n} satisfies CommandOption\n\n// base schemas\n\nconst globalSchema = {\n verbose: {\n type: 'boolean',\n description: 'Enable verbose logging',\n alias: 'v',\n default: false,\n },\n confirm: {\n type: 'boolean',\n description: 'Confirm all prompts',\n alias: 'y',\n default: false,\n },\n json: {\n type: 'boolean',\n description: 'Prevent logging anything else than raw json in stdout. Useful for piping output to other tools',\n default: false,\n },\n botpressHome: {\n type: 'string',\n description: 'The path to the Botpress home directory',\n default: consts.defaultBotpressHome,\n },\n profile: {\n type: 'string',\n description: 'The CLI profile defined in the $BP_BOTPRESS_HOME/profiles.json',\n alias: 'p',\n },\n} satisfies CommandSchema\n\nconst projectSchema = {\n ...globalSchema,\n workDir,\n} satisfies CommandSchema\n\nconst credentialsSchema = {\n apiUrl,\n workspaceId,\n token,\n} satisfies CommandSchema\n\nconst secretsSchema = {\n secrets,\n} satisfies CommandSchema\n\n// command schemas\n\nconst generateSchema = {\n ...projectSchema,\n} satisfies CommandSchema\n\nconst bundleSchema = {\n ...projectSchema,\n sourceMap,\n minify,\n} satisfies CommandSchema\n\nconst buildSchema = {\n ...projectSchema,\n sourceMap,\n minify,\n} satisfies CommandSchema\n\nconst readSchema = {\n ...projectSchema,\n} satisfies CommandSchema\n\nconst serveSchema = {\n ...projectSchema,\n ...secretsSchema,\n port,\n} satisfies CommandSchema\n\nconst deploySchema = {\n ...projectSchema,\n ...credentialsSchema,\n ...secretsSchema,\n botId: { type: 'string', description: 'The bot ID to deploy. Only used when deploying a bot' },\n noBuild,\n dryRun,\n createNewBot: { type: 'boolean', description: 'Create a new bot when deploying. Only used when deploying a bot' },\n sourceMap,\n minify,\n visibility: {\n type: 'string',\n choices: ['public', 'private', 'unlisted'] as const,\n description:\n 'The visibility of the project. By default, projects are always private. Unlisted visibility is only supported for integrations and plugins.',\n default: 'private',\n },\n public: {\n type: 'boolean',\n description: 'DEPRECATED: Please use \"--visibility public\" instead.',\n default: false,\n deprecated: true,\n } satisfies CommandOption,\n allowDeprecated: {\n type: 'boolean',\n description: 'Allow deprecated features in the project',\n default: false,\n },\n} as const satisfies CommandSchema\n\nconst devSchema = {\n ...projectSchema,\n ...credentialsSchema,\n ...secretsSchema,\n sourceMap,\n minify,\n port,\n tunnelUrl: {\n type: 'string',\n description: 'The tunnel HTTP URL to use',\n default: consts.defaultTunnelUrl,\n },\n tunnelId: {\n type: 'string',\n description: 'The tunnel ID to use. The ID will be generated if not specified',\n },\n noSecretCaching: {\n type: 'boolean',\n description: 'Do not save the secrets locally',\n default: false,\n alias: 'nsc',\n },\n} satisfies CommandSchema\n\nconst addSchema = {\n ...globalSchema,\n ...credentialsSchema,\n packageRef,\n installPath: {\n type: 'string',\n description: 'The path where to install the package',\n default: consts.defaultInstallPath,\n },\n useDev: {\n type: 'boolean',\n description: 'If a dev version of the package is found, use it',\n default: false,\n },\n alias: {\n type: 'string',\n description: 'The alias to install the package with',\n },\n} satisfies CommandSchema\n\nconst removeSchema = {\n ...globalSchema,\n ...credentialsSchema,\n workDir,\n alias: { idx: 0, positional: true, type: 'string', description: 'The alias of the package to uninstall' },\n} satisfies CommandSchema\n\nconst loginSchema = {\n ...globalSchema,\n token,\n workspaceId,\n apiUrl: { ...apiUrl, default: consts.defaultBotpressApiUrl },\n} satisfies CommandSchema\n\nconst logoutSchema = {\n ...globalSchema,\n} satisfies CommandSchema\n\nconst createBotSchema = {\n ...globalSchema,\n ...credentialsSchema,\n name: { type: 'string', description: 'The name of the bot to create' },\n ifNotExists: {\n type: 'boolean',\n description: 'Do not create if a bot with the same name already exists',\n default: false,\n },\n} satisfies CommandSchema\n\nconst getBotSchema = {\n ...globalSchema,\n ...credentialsSchema,\n botRef,\n} satisfies CommandSchema\n\nconst deleteBotSchema = {\n ...globalSchema,\n ...credentialsSchema,\n botRef,\n} satisfies CommandSchema\n\nconst listBotsSchema = {\n ...globalSchema,\n ...credentialsSchema,\n dev,\n} satisfies CommandSchema\n\nconst getIntegrationSchema = {\n ...globalSchema,\n ...credentialsSchema,\n integrationRef,\n} satisfies CommandSchema\n\nconst listIntegrationsSchema = {\n ...globalSchema,\n ...credentialsSchema,\n name: { type: 'string', description: 'The name filter when listing integrations' },\n versionNumber: { type: 'string', description: 'The version filter when listing integrations' },\n owned: { type: 'boolean', description: 'List only owned integrations' },\n public: { type: 'boolean', description: 'List only public integrations' },\n limit: { type: 'number', description: 'Limit the number of integrations returned' },\n dev,\n} satisfies CommandSchema\n\nconst deleteIntegrationSchema = {\n ...globalSchema,\n ...credentialsSchema,\n integrationRef,\n} satisfies CommandSchema\n\nconst getInterfaceSchema = {\n ...globalSchema,\n ...credentialsSchema,\n interfaceRef,\n} satisfies CommandSchema\n\nconst listInterfacesSchema = {\n ...globalSchema,\n ...credentialsSchema,\n} satisfies CommandSchema\n\nconst deleteInterfaceSchema = {\n ...globalSchema,\n ...credentialsSchema,\n interfaceRef,\n} satisfies CommandSchema\n\nconst getPluginSchema = {\n ...globalSchema,\n ...credentialsSchema,\n pluginRef,\n} satisfies CommandSchema\n\nconst listPluginsSchema = {\n ...globalSchema,\n ...credentialsSchema,\n name: { type: 'string', description: 'The name filter when listing plugins' },\n versionNumber: { type: 'string', description: 'The version filter when listing plugins' },\n} satisfies CommandSchema\n\nconst deletePluginSchema = {\n ...globalSchema,\n ...credentialsSchema,\n pluginRef,\n} satisfies CommandSchema\n\nconst initSchema = {\n ...globalSchema,\n workDir,\n type: { type: 'string', choices: ['bot', 'integration', 'plugin'] as const },\n template: {\n type: 'string',\n choices: ProjectTemplates.getAllChoices(),\n description: 'The template to use',\n },\n name: { type: 'string', description: 'The name of the project' },\n} satisfies CommandSchema\n\nconst lintSchema = {\n ...projectSchema,\n} satisfies CommandSchema\n\nconst chatSchema = {\n ...globalSchema,\n ...credentialsSchema,\n chatApiUrl: {\n type: 'string',\n description: 'The URL of the chat server',\n },\n botId: {\n type: 'string',\n positional: true,\n idx: 0,\n description: 'The bot ID to chat with',\n },\n} satisfies CommandSchema\n\nconst listProfilesSchema = {\n ...globalSchema,\n displayToken: { type: 'boolean', description: 'Display the token in each of the bp profiles', default: false },\n} satisfies CommandSchema\n\nconst activeProfileSchema = {\n ...globalSchema,\n displayToken: { type: 'boolean', description: 'Display the token in the bp profile', default: false },\n} satisfies CommandSchema\n\nconst useProfileSchema = {\n ...globalSchema,\n profileToUse: {\n type: 'string',\n description: 'The CLI profile defined in the $BP_BOTPRESS_HOME/profiles.json',\n positional: true,\n idx: 0,\n },\n} satisfies CommandSchema\n\n// exports\n\nexport const schemas = {\n global: globalSchema,\n project: projectSchema,\n credentials: credentialsSchema,\n secrets: secretsSchema,\n login: loginSchema,\n logout: logoutSchema,\n createBot: createBotSchema,\n getBot: getBotSchema,\n deleteBot: deleteBotSchema,\n listBots: listBotsSchema,\n getIntegration: getIntegrationSchema,\n listIntegrations: listIntegrationsSchema,\n deleteIntegration: deleteIntegrationSchema,\n getInterface: getInterfaceSchema,\n listInterfaces: listInterfacesSchema,\n deleteInterface: deleteInterfaceSchema,\n getPlugin: getPluginSchema,\n listPlugins: listPluginsSchema,\n deletePlugin: deletePluginSchema,\n init: initSchema,\n generate: generateSchema,\n bundle: bundleSchema,\n build: buildSchema,\n read: readSchema,\n serve: serveSchema,\n deploy: deploySchema,\n add: addSchema,\n remove: removeSchema,\n dev: devSchema,\n lint: lintSchema,\n chat: chatSchema,\n listProfiles: listProfilesSchema,\n activeProfile: activeProfileSchema,\n useProfile: useProfileSchema,\n} as const\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import * as consts from './consts'\nimport { ProjectTemplates } from './project-templates'\nimport type { CommandOption, CommandSchema } from './typings'\n\n// command options\n\nconst port = {\n type: 'number',\n description: 'The port to use',\n} satisfies CommandOption\n\nconst workDir = {\n type: 'string',\n description: 'The path to the project',\n default: consts.defaultWorkDir,\n} satisfies CommandOption\n\nconst noBuild = {\n type: 'boolean',\n description: 'Skip the build step',\n default: false,\n} satisfies CommandOption\n\nconst dryRun = {\n type: 'boolean',\n description: 'Ask the API not to perform the actual operation',\n default: false,\n} as const satisfies CommandOption\n\nconst apiUrl = {\n type: 'string',\n description: 'The URL of the Botpress server',\n} satisfies CommandOption\n\nconst token = {\n type: 'string',\n description: 'You Personal Access Token ',\n} satisfies CommandOption\n\nconst workspaceId = {\n type: 'string',\n description: 'The Workspace Id to deploy to',\n} satisfies CommandOption\n\nconst secrets = {\n type: 'string',\n description: 'Values for the integration secrets',\n array: true,\n default: [],\n} satisfies CommandOption\n\nconst botRef = {\n type: 'string',\n description: 'The bot ID. Bot Name is not supported.',\n demandOption: true,\n positional: true,\n idx: 0,\n} satisfies CommandOption\n\nconst packageRef = {\n type: 'string',\n description:\n 'The package ID or name with optional version. The package can be either an integration or an interface. Ex: teams, teams@0.2.0, llm@5.1.0',\n positional: true,\n idx: 0,\n} satisfies CommandOption\n\nconst integrationRef = {\n ...packageRef,\n demandOption: true,\n description: 'The integration ID or name with optional version. Ex: teams or teams@0.2.0',\n} satisfies CommandOption\n\nconst interfaceRef = {\n ...packageRef,\n demandOption: true,\n description: 'The interface ID or name and version. Ex: llm@5.1.0',\n} satisfies CommandOption\n\nconst pluginRef = {\n ...packageRef,\n demandOption: true,\n description: 'The plugin ID or name and version. Ex: knowledge@0.0.1',\n} satisfies CommandOption\n\nconst sourceMap = { type: 'boolean', description: 'Generate sourcemaps', default: false } satisfies CommandOption\n\nconst minify = { type: 'boolean', description: 'Minify the bundled code', default: true } satisfies CommandOption\n\nconst dev = {\n type: 'boolean',\n description: 'List only dev bots / dev integrations',\n default: false,\n} satisfies CommandOption\n\n// base schemas\n\nconst globalSchema = {\n verbose: {\n type: 'boolean',\n description: 'Enable verbose logging',\n alias: 'v',\n default: false,\n },\n confirm: {\n type: 'boolean',\n description: 'Confirm all prompts',\n alias: 'y',\n default: false,\n },\n json: {\n type: 'boolean',\n description: 'Prevent logging anything else than raw json in stdout. Useful for piping output to other tools',\n default: false,\n },\n botpressHome: {\n type: 'string',\n description: 'The path to the Botpress home directory',\n default: consts.defaultBotpressHome,\n },\n profile: {\n type: 'string',\n description: 'The CLI profile defined in the $BP_BOTPRESS_HOME/profiles.json',\n alias: 'p',\n },\n} satisfies CommandSchema\n\nconst projectSchema = {\n ...globalSchema,\n workDir,\n} satisfies CommandSchema\n\nconst credentialsSchema = {\n apiUrl,\n workspaceId,\n token,\n} satisfies CommandSchema\n\nconst secretsSchema = {\n secrets,\n} satisfies CommandSchema\n\n// command schemas\n\nconst generateSchema = {\n ...projectSchema,\n} satisfies CommandSchema\n\nconst bundleSchema = {\n ...projectSchema,\n sourceMap,\n minify,\n} satisfies CommandSchema\n\nconst buildSchema = {\n ...projectSchema,\n sourceMap,\n minify,\n} satisfies CommandSchema\n\nconst readSchema = {\n ...projectSchema,\n} satisfies CommandSchema\n\nconst serveSchema = {\n ...projectSchema,\n ...secretsSchema,\n port,\n} satisfies CommandSchema\n\nconst deploySchema = {\n ...projectSchema,\n ...credentialsSchema,\n ...secretsSchema,\n botId: { type: 'string', description: 'The bot ID to deploy. Only used when deploying a bot' },\n noBuild,\n dryRun,\n createNewBot: { type: 'boolean', description: 'Create a new bot when deploying. Only used when deploying a bot' },\n sourceMap,\n minify,\n visibility: {\n type: 'string',\n choices: ['public', 'private', 'unlisted'] as const,\n description:\n 'The visibility of the project. By default, projects are always private. Unlisted visibility is only supported for integrations and plugins.',\n default: 'private',\n },\n public: {\n type: 'boolean',\n description: 'DEPRECATED: Please use \"--visibility public\" instead.',\n default: false,\n deprecated: true,\n } satisfies CommandOption,\n allowDeprecated: {\n type: 'boolean',\n description: 'Allow deprecated features in the project',\n default: false,\n },\n} as const satisfies CommandSchema\n\nconst devSchema = {\n ...projectSchema,\n ...credentialsSchema,\n ...secretsSchema,\n sourceMap,\n minify,\n port,\n tunnelUrl: {\n type: 'string',\n description: 'The tunnel HTTP URL to use',\n default: consts.defaultTunnelUrl,\n },\n tunnelId: {\n type: 'string',\n description: 'The tunnel ID to use. The ID will be generated if not specified',\n },\n noSecretCaching: {\n type: 'boolean',\n description: 'Do not save the secrets locally',\n default: false,\n alias: 'nsc',\n },\n} satisfies CommandSchema\n\nconst addSchema = {\n ...globalSchema,\n ...credentialsSchema,\n packageRef,\n installPath: {\n type: 'string',\n description: 'The path where to install the package',\n default: consts.defaultInstallPath,\n },\n useDev: {\n type: 'boolean',\n description: 'If a dev version of the package is found, use it',\n default: false,\n },\n alias: {\n type: 'string',\n description: 'The alias to install the package with',\n },\n} satisfies CommandSchema\n\nconst removeSchema = {\n ...globalSchema,\n ...credentialsSchema,\n workDir,\n alias: { idx: 0, positional: true, type: 'string', description: 'The alias of the package to uninstall' },\n} satisfies CommandSchema\n\nconst loginSchema = {\n ...globalSchema,\n token,\n workspaceId,\n apiUrl: { ...apiUrl, default: consts.defaultBotpressApiUrl },\n} satisfies CommandSchema\n\nconst logoutSchema = {\n ...globalSchema,\n} satisfies CommandSchema\n\nconst createBotSchema = {\n ...globalSchema,\n ...credentialsSchema,\n name: { type: 'string', description: 'The name of the bot to create' },\n ifNotExists: {\n type: 'boolean',\n description: 'Do not create if a bot with the same name already exists',\n default: false,\n },\n} satisfies CommandSchema\n\nconst getBotSchema = {\n ...globalSchema,\n ...credentialsSchema,\n botRef,\n} satisfies CommandSchema\n\nconst deleteBotSchema = {\n ...globalSchema,\n ...credentialsSchema,\n botRef,\n} satisfies CommandSchema\n\nconst listBotsSchema = {\n ...globalSchema,\n ...credentialsSchema,\n dev,\n} satisfies CommandSchema\n\nconst getIntegrationSchema = {\n ...globalSchema,\n ...credentialsSchema,\n integrationRef,\n} satisfies CommandSchema\n\nconst listIntegrationsSchema = {\n ...globalSchema,\n ...credentialsSchema,\n name: { type: 'string', description: 'The name filter when listing integrations' },\n versionNumber: { type: 'string', description: 'The version filter when listing integrations' },\n owned: { type: 'boolean', description: 'List only owned integrations' },\n public: { type: 'boolean', description: 'List only public integrations' },\n limit: { type: 'number', description: 'Limit the number of integrations returned' },\n dev,\n} satisfies CommandSchema\n\nconst deleteIntegrationSchema = {\n ...globalSchema,\n ...credentialsSchema,\n integrationRef,\n} satisfies CommandSchema\n\nconst getInterfaceSchema = {\n ...globalSchema,\n ...credentialsSchema,\n interfaceRef,\n} satisfies CommandSchema\n\nconst listInterfacesSchema = {\n ...globalSchema,\n ...credentialsSchema,\n} satisfies CommandSchema\n\nconst deleteInterfaceSchema = {\n ...globalSchema,\n ...credentialsSchema,\n interfaceRef,\n} satisfies CommandSchema\n\nconst getPluginSchema = {\n ...globalSchema,\n ...credentialsSchema,\n pluginRef,\n} satisfies CommandSchema\n\nconst listPluginsSchema = {\n ...globalSchema,\n ...credentialsSchema,\n name: { type: 'string', description: 'The name filter when listing plugins' },\n versionNumber: { type: 'string', description: 'The version filter when listing plugins' },\n} satisfies CommandSchema\n\nconst deletePluginSchema = {\n ...globalSchema,\n ...credentialsSchema,\n pluginRef,\n} satisfies CommandSchema\n\nconst initSchema = {\n ...globalSchema,\n workDir,\n type: { type: 'string', choices: ['bot', 'integration', 'plugin'] as const },\n template: {\n type: 'string',\n choices: ProjectTemplates.getAllChoices(),\n description: 'The template to use',\n },\n name: { type: 'string', description: 'The name of the project' },\n} satisfies CommandSchema\n\nconst lintSchema = {\n ...projectSchema,\n} satisfies CommandSchema\n\nconst chatSchema = {\n ...globalSchema,\n ...credentialsSchema,\n chatApiUrl: {\n type: 'string',\n description: 'The URL of the chat server',\n },\n botId: {\n type: 'string',\n positional: true,\n idx: 0,\n description: 'The bot ID to chat with',\n },\n} satisfies CommandSchema\n\nconst listProfilesSchema = {\n ...globalSchema,\n displayToken: { type: 'boolean', description: 'Display the token in each of the bp profiles', default: false },\n} satisfies CommandSchema\n\nconst activeProfileSchema = {\n ...globalSchema,\n displayToken: { type: 'boolean', description: 'Display the token in the bp profile', default: false },\n} satisfies CommandSchema\n\nconst useProfileSchema = {\n ...globalSchema,\n profileToUse: {\n type: 'string',\n description: 'The CLI profile defined in the $BP_BOTPRESS_HOME/profiles.json',\n positional: true,\n idx: 0,\n },\n} satisfies CommandSchema\n\nconst getProfileSchema = {\n ...globalSchema,\n profileToGet: {\n type: 'string',\n description: 'The CLI profile defined in the $BP_BOTPRESS_HOME/profiles.json',\n positional: true,\n idx: 0,\n },\n displayToken: { type: 'boolean', description: 'Display the token in the bp profile', default: false },\n} satisfies CommandSchema\n\n// exports\n\nexport const schemas = {\n global: globalSchema,\n project: projectSchema,\n credentials: credentialsSchema,\n secrets: secretsSchema,\n login: loginSchema,\n logout: logoutSchema,\n createBot: createBotSchema,\n getBot: getBotSchema,\n deleteBot: deleteBotSchema,\n listBots: listBotsSchema,\n getIntegration: getIntegrationSchema,\n listIntegrations: listIntegrationsSchema,\n deleteIntegration: deleteIntegrationSchema,\n getInterface: getInterfaceSchema,\n listInterfaces: listInterfacesSchema,\n deleteInterface: deleteInterfaceSchema,\n getPlugin: getPluginSchema,\n listPlugins: listPluginsSchema,\n deletePlugin: deletePluginSchema,\n init: initSchema,\n generate: generateSchema,\n bundle: bundleSchema,\n build: buildSchema,\n read: readSchema,\n serve: serveSchema,\n deploy: deploySchema,\n add: addSchema,\n remove: removeSchema,\n dev: devSchema,\n lint: lintSchema,\n chat: chatSchema,\n listProfiles: listProfilesSchema,\n activeProfile: activeProfileSchema,\n useProfile: useProfileSchema,\n getProfile: getProfileSchema,\n} as const\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1605,6 +1605,51 @@ declare const _default: {
|
|
|
1605
1605
|
}>) => Promise<{
|
|
1606
1606
|
exitCode: number;
|
|
1607
1607
|
}>;
|
|
1608
|
+
get: (argv: typings.CommandArgv<{
|
|
1609
|
+
description: string;
|
|
1610
|
+
schema: {
|
|
1611
|
+
profileToGet: {
|
|
1612
|
+
type: "string";
|
|
1613
|
+
description: string;
|
|
1614
|
+
positional: true;
|
|
1615
|
+
idx: number;
|
|
1616
|
+
};
|
|
1617
|
+
displayToken: {
|
|
1618
|
+
type: "boolean";
|
|
1619
|
+
description: string;
|
|
1620
|
+
default: boolean;
|
|
1621
|
+
};
|
|
1622
|
+
verbose: {
|
|
1623
|
+
type: "boolean";
|
|
1624
|
+
description: string;
|
|
1625
|
+
alias: string;
|
|
1626
|
+
default: boolean;
|
|
1627
|
+
};
|
|
1628
|
+
confirm: {
|
|
1629
|
+
type: "boolean";
|
|
1630
|
+
description: string;
|
|
1631
|
+
alias: string;
|
|
1632
|
+
default: boolean;
|
|
1633
|
+
};
|
|
1634
|
+
json: {
|
|
1635
|
+
type: "boolean";
|
|
1636
|
+
description: string;
|
|
1637
|
+
default: boolean;
|
|
1638
|
+
};
|
|
1639
|
+
botpressHome: {
|
|
1640
|
+
type: "string";
|
|
1641
|
+
description: string;
|
|
1642
|
+
default: string;
|
|
1643
|
+
};
|
|
1644
|
+
profile: {
|
|
1645
|
+
type: "string";
|
|
1646
|
+
description: string;
|
|
1647
|
+
alias: string;
|
|
1648
|
+
};
|
|
1649
|
+
};
|
|
1650
|
+
}>) => Promise<{
|
|
1651
|
+
exitCode: number;
|
|
1652
|
+
}>;
|
|
1608
1653
|
};
|
|
1609
1654
|
};
|
|
1610
1655
|
export default _default;
|
package/dist/index.js
CHANGED
|
@@ -71,7 +71,8 @@ var index_default = {
|
|
|
71
71
|
profiles: {
|
|
72
72
|
list: import_command_implementations.default.profiles.subcommands.list,
|
|
73
73
|
active: import_command_implementations.default.profiles.subcommands.active,
|
|
74
|
-
use: import_command_implementations.default.profiles.subcommands.use
|
|
74
|
+
use: import_command_implementations.default.profiles.subcommands.use,
|
|
75
|
+
get: import_command_implementations.default.profiles.subcommands.get
|
|
75
76
|
}
|
|
76
77
|
};
|
|
77
78
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["import commandDefinitions from './command-definitions'\nimport commandImplementations from './command-implementations'\nimport { DefinitionSubTree, DefinitionTree, DefinitionTreeNode } from './command-tree'\nimport type * as typings from './typings'\n\ntype CommandHandlersNode<D extends DefinitionTreeNode = DefinitionTreeNode> = D extends DefinitionSubTree\n ? CommandHandlers<D['subcommands']>\n : D extends typings.CommandDefinition\n ? typings.CommandImplementation<D>\n : never\n\ntype CommandHandlers<D extends DefinitionTree = DefinitionTree> = {\n [K in keyof D]: CommandHandlersNode<D[K]>\n}\n\nexport default {\n login: commandImplementations.login,\n logout: commandImplementations.logout,\n bots: {\n create: commandImplementations.bots.subcommands.create,\n get: commandImplementations.bots.subcommands.get,\n delete: commandImplementations.bots.subcommands.delete,\n list: commandImplementations.bots.subcommands.list,\n },\n integrations: {\n get: commandImplementations.integrations.subcommands.get,\n list: commandImplementations.integrations.subcommands.list,\n delete: commandImplementations.integrations.subcommands.delete,\n },\n interfaces: {\n get: commandImplementations.interfaces.subcommands.get,\n list: commandImplementations.interfaces.subcommands.list,\n delete: commandImplementations.interfaces.subcommands.delete,\n },\n plugins: {\n get: commandImplementations.plugins.subcommands.get,\n list: commandImplementations.plugins.subcommands.list,\n delete: commandImplementations.plugins.subcommands.delete,\n },\n init: commandImplementations.init,\n generate: commandImplementations.generate,\n bundle: commandImplementations.bundle,\n build: commandImplementations.build,\n read: commandImplementations.read,\n serve: commandImplementations.serve,\n deploy: commandImplementations.deploy,\n add: commandImplementations.add,\n remove: commandImplementations.remove,\n dev: commandImplementations.dev,\n lint: commandImplementations.lint,\n chat: commandImplementations.chat,\n profiles: {\n list: commandImplementations.profiles.subcommands.list,\n active: commandImplementations.profiles.subcommands.active,\n use: commandImplementations.profiles.subcommands.use,\n },\n} satisfies CommandHandlers<typeof commandDefinitions>\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qCAAmC;AAcnC,IAAO,gBAAQ;AAAA,EACb,OAAO,+BAAAA,QAAuB;AAAA,EAC9B,QAAQ,+BAAAA,QAAuB;AAAA,EAC/B,MAAM;AAAA,IACJ,QAAQ,+BAAAA,QAAuB,KAAK,YAAY;AAAA,IAChD,KAAK,+BAAAA,QAAuB,KAAK,YAAY;AAAA,IAC7C,QAAQ,+BAAAA,QAAuB,KAAK,YAAY;AAAA,IAChD,MAAM,+BAAAA,QAAuB,KAAK,YAAY;AAAA,EAChD;AAAA,EACA,cAAc;AAAA,IACZ,KAAK,+BAAAA,QAAuB,aAAa,YAAY;AAAA,IACrD,MAAM,+BAAAA,QAAuB,aAAa,YAAY;AAAA,IACtD,QAAQ,+BAAAA,QAAuB,aAAa,YAAY;AAAA,EAC1D;AAAA,EACA,YAAY;AAAA,IACV,KAAK,+BAAAA,QAAuB,WAAW,YAAY;AAAA,IACnD,MAAM,+BAAAA,QAAuB,WAAW,YAAY;AAAA,IACpD,QAAQ,+BAAAA,QAAuB,WAAW,YAAY;AAAA,EACxD;AAAA,EACA,SAAS;AAAA,IACP,KAAK,+BAAAA,QAAuB,QAAQ,YAAY;AAAA,IAChD,MAAM,+BAAAA,QAAuB,QAAQ,YAAY;AAAA,IACjD,QAAQ,+BAAAA,QAAuB,QAAQ,YAAY;AAAA,EACrD;AAAA,EACA,MAAM,+BAAAA,QAAuB;AAAA,EAC7B,UAAU,+BAAAA,QAAuB;AAAA,EACjC,QAAQ,+BAAAA,QAAuB;AAAA,EAC/B,OAAO,+BAAAA,QAAuB;AAAA,EAC9B,MAAM,+BAAAA,QAAuB;AAAA,EAC7B,OAAO,+BAAAA,QAAuB;AAAA,EAC9B,QAAQ,+BAAAA,QAAuB;AAAA,EAC/B,KAAK,+BAAAA,QAAuB;AAAA,EAC5B,QAAQ,+BAAAA,QAAuB;AAAA,EAC/B,KAAK,+BAAAA,QAAuB;AAAA,EAC5B,MAAM,+BAAAA,QAAuB;AAAA,EAC7B,MAAM,+BAAAA,QAAuB;AAAA,EAC7B,UAAU;AAAA,IACR,MAAM,+BAAAA,QAAuB,SAAS,YAAY;AAAA,IAClD,QAAQ,+BAAAA,QAAuB,SAAS,YAAY;AAAA,IACpD,KAAK,+BAAAA,QAAuB,SAAS,YAAY;AAAA,EACnD;AACF;",
|
|
4
|
+
"sourcesContent": ["import commandDefinitions from './command-definitions'\nimport commandImplementations from './command-implementations'\nimport { DefinitionSubTree, DefinitionTree, DefinitionTreeNode } from './command-tree'\nimport type * as typings from './typings'\n\ntype CommandHandlersNode<D extends DefinitionTreeNode = DefinitionTreeNode> = D extends DefinitionSubTree\n ? CommandHandlers<D['subcommands']>\n : D extends typings.CommandDefinition\n ? typings.CommandImplementation<D>\n : never\n\ntype CommandHandlers<D extends DefinitionTree = DefinitionTree> = {\n [K in keyof D]: CommandHandlersNode<D[K]>\n}\n\nexport default {\n login: commandImplementations.login,\n logout: commandImplementations.logout,\n bots: {\n create: commandImplementations.bots.subcommands.create,\n get: commandImplementations.bots.subcommands.get,\n delete: commandImplementations.bots.subcommands.delete,\n list: commandImplementations.bots.subcommands.list,\n },\n integrations: {\n get: commandImplementations.integrations.subcommands.get,\n list: commandImplementations.integrations.subcommands.list,\n delete: commandImplementations.integrations.subcommands.delete,\n },\n interfaces: {\n get: commandImplementations.interfaces.subcommands.get,\n list: commandImplementations.interfaces.subcommands.list,\n delete: commandImplementations.interfaces.subcommands.delete,\n },\n plugins: {\n get: commandImplementations.plugins.subcommands.get,\n list: commandImplementations.plugins.subcommands.list,\n delete: commandImplementations.plugins.subcommands.delete,\n },\n init: commandImplementations.init,\n generate: commandImplementations.generate,\n bundle: commandImplementations.bundle,\n build: commandImplementations.build,\n read: commandImplementations.read,\n serve: commandImplementations.serve,\n deploy: commandImplementations.deploy,\n add: commandImplementations.add,\n remove: commandImplementations.remove,\n dev: commandImplementations.dev,\n lint: commandImplementations.lint,\n chat: commandImplementations.chat,\n profiles: {\n list: commandImplementations.profiles.subcommands.list,\n active: commandImplementations.profiles.subcommands.active,\n use: commandImplementations.profiles.subcommands.use,\n get: commandImplementations.profiles.subcommands.get,\n },\n} satisfies CommandHandlers<typeof commandDefinitions>\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qCAAmC;AAcnC,IAAO,gBAAQ;AAAA,EACb,OAAO,+BAAAA,QAAuB;AAAA,EAC9B,QAAQ,+BAAAA,QAAuB;AAAA,EAC/B,MAAM;AAAA,IACJ,QAAQ,+BAAAA,QAAuB,KAAK,YAAY;AAAA,IAChD,KAAK,+BAAAA,QAAuB,KAAK,YAAY;AAAA,IAC7C,QAAQ,+BAAAA,QAAuB,KAAK,YAAY;AAAA,IAChD,MAAM,+BAAAA,QAAuB,KAAK,YAAY;AAAA,EAChD;AAAA,EACA,cAAc;AAAA,IACZ,KAAK,+BAAAA,QAAuB,aAAa,YAAY;AAAA,IACrD,MAAM,+BAAAA,QAAuB,aAAa,YAAY;AAAA,IACtD,QAAQ,+BAAAA,QAAuB,aAAa,YAAY;AAAA,EAC1D;AAAA,EACA,YAAY;AAAA,IACV,KAAK,+BAAAA,QAAuB,WAAW,YAAY;AAAA,IACnD,MAAM,+BAAAA,QAAuB,WAAW,YAAY;AAAA,IACpD,QAAQ,+BAAAA,QAAuB,WAAW,YAAY;AAAA,EACxD;AAAA,EACA,SAAS;AAAA,IACP,KAAK,+BAAAA,QAAuB,QAAQ,YAAY;AAAA,IAChD,MAAM,+BAAAA,QAAuB,QAAQ,YAAY;AAAA,IACjD,QAAQ,+BAAAA,QAAuB,QAAQ,YAAY;AAAA,EACrD;AAAA,EACA,MAAM,+BAAAA,QAAuB;AAAA,EAC7B,UAAU,+BAAAA,QAAuB;AAAA,EACjC,QAAQ,+BAAAA,QAAuB;AAAA,EAC/B,OAAO,+BAAAA,QAAuB;AAAA,EAC9B,MAAM,+BAAAA,QAAuB;AAAA,EAC7B,OAAO,+BAAAA,QAAuB;AAAA,EAC9B,QAAQ,+BAAAA,QAAuB;AAAA,EAC/B,KAAK,+BAAAA,QAAuB;AAAA,EAC5B,QAAQ,+BAAAA,QAAuB;AAAA,EAC/B,KAAK,+BAAAA,QAAuB;AAAA,EAC5B,MAAM,+BAAAA,QAAuB;AAAA,EAC7B,MAAM,+BAAAA,QAAuB;AAAA,EAC7B,UAAU;AAAA,IACR,MAAM,+BAAAA,QAAuB,SAAS,YAAY;AAAA,IAClD,QAAQ,+BAAAA,QAAuB,SAAS,YAAY;AAAA,IACpD,KAAK,+BAAAA,QAAuB,SAAS,YAAY;AAAA,IACjD,KAAK,+BAAAA,QAAuB,SAAS,YAAY;AAAA,EACnD;AACF;",
|
|
6
6
|
"names": ["commandImplementations"]
|
|
7
7
|
}
|
|
@@ -148,13 +148,15 @@ const lintDefinition = async (definition) => {
|
|
|
148
148
|
configuration: integrationDefinition.configuration ? {
|
|
149
149
|
...integrationDefinition.configuration,
|
|
150
150
|
schema: await utils.schema.mapZodToJsonSchema(integrationDefinition.configuration, {
|
|
151
|
-
useLegacyZuiTransformer: integrationDefinition.__advanced?.useLegacyZuiTransformer
|
|
151
|
+
useLegacyZuiTransformer: integrationDefinition.__advanced?.useLegacyZuiTransformer,
|
|
152
|
+
toJSONSchemaOptions: integrationDefinition.__advanced?.toJSONSchemaOptions
|
|
152
153
|
})
|
|
153
154
|
} : void 0,
|
|
154
155
|
configurations: integrationDefinition.configurations ? await utils.records.mapValuesAsync(integrationDefinition.configurations, async (configuration) => ({
|
|
155
156
|
...configuration,
|
|
156
157
|
schema: await utils.schema.mapZodToJsonSchema(configuration, {
|
|
157
|
-
useLegacyZuiTransformer: integrationDefinition.__advanced?.useLegacyZuiTransformer
|
|
158
|
+
useLegacyZuiTransformer: integrationDefinition.__advanced?.useLegacyZuiTransformer,
|
|
159
|
+
toJSONSchemaOptions: integrationDefinition.__advanced?.toJSONSchemaOptions
|
|
158
160
|
})
|
|
159
161
|
})) : void 0,
|
|
160
162
|
readme: integrationDefinition.readme,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/linter/base-linter.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { test, expect, describe, vi } from 'vitest'\nimport { prepareCreateIntegrationBody } from '../api/integration-body'\nimport * as utils from '../utils'\nimport { IntegrationLinter } from './integration-linter'\nimport { IntegrationDefinition, type IntegrationDefinitionProps, z } from '@botpress/sdk'\n\nconst EMPTY_STRING = ''\nconst TRUTHY_STRING = 'truthy'\nconst ACTION_NAME = 'actionName'\nconst EVENT_NAME = 'eventName'\nconst CONFIG_NAME = 'configName'\nconst PARAM_NAME = 'paramName'\nconst TAG_NAME = 'tagName'\nconst CHANNEL_NAME = 'channelName'\nconst STATE_NAME = 'stateName'\nconst MESSAGE_TYPE = 'text'\nconst SECRET_NAME = 'SECRET_NAME'\n\nconst VALID_INTEGRATION = {\n name: TRUTHY_STRING,\n title: TRUTHY_STRING,\n description: TRUTHY_STRING,\n version: TRUTHY_STRING,\n readme: TRUTHY_STRING,\n icon: TRUTHY_STRING,\n actions: {\n [ACTION_NAME]: {\n title: TRUTHY_STRING,\n description: TRUTHY_STRING,\n input: {\n schema: z\n .object({\n [PARAM_NAME]: z.string().title(TRUTHY_STRING).describe(TRUTHY_STRING),\n })\n .title(TRUTHY_STRING)\n .describe(TRUTHY_STRING),\n },\n output: {\n schema: z\n .object({\n [PARAM_NAME]: z.string().title(TRUTHY_STRING).describe(TRUTHY_STRING),\n })\n .title(TRUTHY_STRING)\n .describe(TRUTHY_STRING),\n },\n },\n },\n events: {\n [EVENT_NAME]: {\n title: TRUTHY_STRING,\n description: TRUTHY_STRING,\n schema: z\n .object({\n [PARAM_NAME]: z.string().title(TRUTHY_STRING).describe(TRUTHY_STRING),\n })\n .title(TRUTHY_STRING)\n .describe(TRUTHY_STRING),\n },\n },\n configuration: {\n schema: z\n .object({\n [PARAM_NAME]: z.string().title(TRUTHY_STRING).describe(TRUTHY_STRING),\n })\n .title(TRUTHY_STRING)\n .describe(TRUTHY_STRING),\n },\n configurations: {\n [CONFIG_NAME]: {\n title: TRUTHY_STRING,\n description: TRUTHY_STRING,\n schema: z\n .object({\n [PARAM_NAME]: z.string().title(TRUTHY_STRING).describe(TRUTHY_STRING),\n })\n .title(TRUTHY_STRING)\n .describe(TRUTHY_STRING),\n },\n },\n user: {\n tags: {\n [TAG_NAME]: {\n title: TRUTHY_STRING,\n description: TRUTHY_STRING,\n },\n },\n },\n channels: {\n [CHANNEL_NAME]: {\n title: TRUTHY_STRING,\n description: TRUTHY_STRING,\n messages: {\n [MESSAGE_TYPE]: {\n schema: z\n .object({\n [PARAM_NAME]: z.string().title(TRUTHY_STRING).describe(TRUTHY_STRING),\n })\n .title(TRUTHY_STRING)\n .describe(TRUTHY_STRING),\n },\n },\n message: {\n tags: {\n [TAG_NAME]: {\n title: TRUTHY_STRING,\n description: TRUTHY_STRING,\n },\n },\n },\n conversation: {\n tags: {\n [TAG_NAME]: {\n title: TRUTHY_STRING,\n description: TRUTHY_STRING,\n },\n },\n },\n },\n },\n states: {\n [STATE_NAME]: {\n type: 'integration',\n schema: z\n .object({\n [PARAM_NAME]: z.string().title(TRUTHY_STRING).describe(TRUTHY_STRING),\n })\n .title(TRUTHY_STRING)\n .describe(TRUTHY_STRING),\n },\n },\n secrets: {\n [SECRET_NAME]: {\n description: TRUTHY_STRING,\n },\n },\n} as const satisfies IntegrationDefinitionProps\n\nconst mockLogger = {\n log: vi.fn((message) => void message),\n warn: vi.fn((message) => void message),\n error: vi.fn((message) => void message),\n debug: vi.fn((message) => void message),\n}\n\nconst lintDefinition = async (definition: IntegrationDefinitionProps) => {\n const integrationDefinition = new IntegrationDefinition(definition)\n const integrationBody = await prepareCreateIntegrationBody(integrationDefinition)\n const linter = new IntegrationLinter({\n ...integrationBody,\n configuration: integrationDefinition.configuration\n ? {\n ...integrationDefinition.configuration,\n schema: await utils.schema.mapZodToJsonSchema(integrationDefinition.configuration, {\n useLegacyZuiTransformer: integrationDefinition.__advanced?.useLegacyZuiTransformer,\n }),\n }\n : undefined,\n configurations: integrationDefinition.configurations\n ? await utils.records.mapValuesAsync(integrationDefinition.configurations, async (configuration) => ({\n ...configuration,\n schema: await utils.schema.mapZodToJsonSchema(configuration, {\n useLegacyZuiTransformer: integrationDefinition.__advanced?.useLegacyZuiTransformer,\n }),\n }))\n : undefined,\n readme: integrationDefinition.readme,\n icon: integrationDefinition.icon,\n secrets: integrationDefinition.secrets,\n })\n await linter.lint()\n return linter\n}\n\nconst lintDefinitionAndReturnResults = async (definition: IntegrationDefinitionProps) => {\n const linter = await lintDefinition(definition)\n return linter.getSortedResults()\n}\n\nconst lintDefinitionAndLogResults = async (definition: IntegrationDefinitionProps) => {\n const linter = await lintDefinition(definition)\n linter.logResults(mockLogger as any)\n}\n\ndescribe.concurrent('Integration Linter', () => {\n test('should lint a valid definition without giving errors', async () => {\n // arrange\n const definition = VALID_INTEGRATION\n\n // act\n const results = await lintDefinitionAndReturnResults(definition)\n\n expect(results).toEqual([])\n })\n\n test('should report an error when missing required fields', async () => {\n // arrange\n const definition = {\n ...VALID_INTEGRATION,\n title: EMPTY_STRING,\n } as const\n\n // act\n const results = await lintDefinitionAndReturnResults(definition)\n\n // assert\n expect(results[0]?.message).toContain('title')\n })\n\n test('should report an error when missing a title in an action input schema', async () => {\n // arrange\n const definition = {\n ...VALID_INTEGRATION,\n actions: {\n [ACTION_NAME]: {\n ...VALID_INTEGRATION.actions[ACTION_NAME],\n input: {\n schema: z.object({\n [PARAM_NAME]: z.string().describe(TRUTHY_STRING),\n }),\n },\n },\n },\n } as const\n\n // act\n const results = await lintDefinitionAndReturnResults(definition)\n\n // assert\n expect(results[0]?.message).toContain('title')\n })\n\n test('should log as an error when severity is 0', async () => {\n // arrange\n const definition = {\n ...VALID_INTEGRATION,\n title: EMPTY_STRING,\n } as const\n\n // act\n await lintDefinitionAndLogResults(definition)\n\n // assert\n expect(mockLogger.error).toHaveBeenCalled()\n })\n\n test('should log as a warning when severity is 1', async () => {\n // arrange\n const definition = {\n ...VALID_INTEGRATION,\n user: {\n tags: {\n [TAG_NAME]: {},\n },\n },\n } as const\n\n // act\n await lintDefinitionAndLogResults(definition)\n\n // assert\n expect(mockLogger.warn).toHaveBeenCalled()\n })\n})\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["import { test, expect, describe, vi } from 'vitest'\nimport { prepareCreateIntegrationBody } from '../api/integration-body'\nimport * as utils from '../utils'\nimport { IntegrationLinter } from './integration-linter'\nimport { IntegrationDefinition, type IntegrationDefinitionProps, z } from '@botpress/sdk'\n\nconst EMPTY_STRING = ''\nconst TRUTHY_STRING = 'truthy'\nconst ACTION_NAME = 'actionName'\nconst EVENT_NAME = 'eventName'\nconst CONFIG_NAME = 'configName'\nconst PARAM_NAME = 'paramName'\nconst TAG_NAME = 'tagName'\nconst CHANNEL_NAME = 'channelName'\nconst STATE_NAME = 'stateName'\nconst MESSAGE_TYPE = 'text'\nconst SECRET_NAME = 'SECRET_NAME'\n\nconst VALID_INTEGRATION = {\n name: TRUTHY_STRING,\n title: TRUTHY_STRING,\n description: TRUTHY_STRING,\n version: TRUTHY_STRING,\n readme: TRUTHY_STRING,\n icon: TRUTHY_STRING,\n actions: {\n [ACTION_NAME]: {\n title: TRUTHY_STRING,\n description: TRUTHY_STRING,\n input: {\n schema: z\n .object({\n [PARAM_NAME]: z.string().title(TRUTHY_STRING).describe(TRUTHY_STRING),\n })\n .title(TRUTHY_STRING)\n .describe(TRUTHY_STRING),\n },\n output: {\n schema: z\n .object({\n [PARAM_NAME]: z.string().title(TRUTHY_STRING).describe(TRUTHY_STRING),\n })\n .title(TRUTHY_STRING)\n .describe(TRUTHY_STRING),\n },\n },\n },\n events: {\n [EVENT_NAME]: {\n title: TRUTHY_STRING,\n description: TRUTHY_STRING,\n schema: z\n .object({\n [PARAM_NAME]: z.string().title(TRUTHY_STRING).describe(TRUTHY_STRING),\n })\n .title(TRUTHY_STRING)\n .describe(TRUTHY_STRING),\n },\n },\n configuration: {\n schema: z\n .object({\n [PARAM_NAME]: z.string().title(TRUTHY_STRING).describe(TRUTHY_STRING),\n })\n .title(TRUTHY_STRING)\n .describe(TRUTHY_STRING),\n },\n configurations: {\n [CONFIG_NAME]: {\n title: TRUTHY_STRING,\n description: TRUTHY_STRING,\n schema: z\n .object({\n [PARAM_NAME]: z.string().title(TRUTHY_STRING).describe(TRUTHY_STRING),\n })\n .title(TRUTHY_STRING)\n .describe(TRUTHY_STRING),\n },\n },\n user: {\n tags: {\n [TAG_NAME]: {\n title: TRUTHY_STRING,\n description: TRUTHY_STRING,\n },\n },\n },\n channels: {\n [CHANNEL_NAME]: {\n title: TRUTHY_STRING,\n description: TRUTHY_STRING,\n messages: {\n [MESSAGE_TYPE]: {\n schema: z\n .object({\n [PARAM_NAME]: z.string().title(TRUTHY_STRING).describe(TRUTHY_STRING),\n })\n .title(TRUTHY_STRING)\n .describe(TRUTHY_STRING),\n },\n },\n message: {\n tags: {\n [TAG_NAME]: {\n title: TRUTHY_STRING,\n description: TRUTHY_STRING,\n },\n },\n },\n conversation: {\n tags: {\n [TAG_NAME]: {\n title: TRUTHY_STRING,\n description: TRUTHY_STRING,\n },\n },\n },\n },\n },\n states: {\n [STATE_NAME]: {\n type: 'integration',\n schema: z\n .object({\n [PARAM_NAME]: z.string().title(TRUTHY_STRING).describe(TRUTHY_STRING),\n })\n .title(TRUTHY_STRING)\n .describe(TRUTHY_STRING),\n },\n },\n secrets: {\n [SECRET_NAME]: {\n description: TRUTHY_STRING,\n },\n },\n} as const satisfies IntegrationDefinitionProps\n\nconst mockLogger = {\n log: vi.fn((message) => void message),\n warn: vi.fn((message) => void message),\n error: vi.fn((message) => void message),\n debug: vi.fn((message) => void message),\n}\n\nconst lintDefinition = async (definition: IntegrationDefinitionProps) => {\n const integrationDefinition = new IntegrationDefinition(definition)\n const integrationBody = await prepareCreateIntegrationBody(integrationDefinition)\n const linter = new IntegrationLinter({\n ...integrationBody,\n configuration: integrationDefinition.configuration\n ? {\n ...integrationDefinition.configuration,\n schema: await utils.schema.mapZodToJsonSchema(integrationDefinition.configuration, {\n useLegacyZuiTransformer: integrationDefinition.__advanced?.useLegacyZuiTransformer,\n toJSONSchemaOptions: integrationDefinition.__advanced?.toJSONSchemaOptions,\n }),\n }\n : undefined,\n configurations: integrationDefinition.configurations\n ? await utils.records.mapValuesAsync(integrationDefinition.configurations, async (configuration) => ({\n ...configuration,\n schema: await utils.schema.mapZodToJsonSchema(configuration, {\n useLegacyZuiTransformer: integrationDefinition.__advanced?.useLegacyZuiTransformer,\n toJSONSchemaOptions: integrationDefinition.__advanced?.toJSONSchemaOptions,\n }),\n }))\n : undefined,\n readme: integrationDefinition.readme,\n icon: integrationDefinition.icon,\n secrets: integrationDefinition.secrets,\n })\n await linter.lint()\n return linter\n}\n\nconst lintDefinitionAndReturnResults = async (definition: IntegrationDefinitionProps) => {\n const linter = await lintDefinition(definition)\n return linter.getSortedResults()\n}\n\nconst lintDefinitionAndLogResults = async (definition: IntegrationDefinitionProps) => {\n const linter = await lintDefinition(definition)\n linter.logResults(mockLogger as any)\n}\n\ndescribe.concurrent('Integration Linter', () => {\n test('should lint a valid definition without giving errors', async () => {\n // arrange\n const definition = VALID_INTEGRATION\n\n // act\n const results = await lintDefinitionAndReturnResults(definition)\n\n expect(results).toEqual([])\n })\n\n test('should report an error when missing required fields', async () => {\n // arrange\n const definition = {\n ...VALID_INTEGRATION,\n title: EMPTY_STRING,\n } as const\n\n // act\n const results = await lintDefinitionAndReturnResults(definition)\n\n // assert\n expect(results[0]?.message).toContain('title')\n })\n\n test('should report an error when missing a title in an action input schema', async () => {\n // arrange\n const definition = {\n ...VALID_INTEGRATION,\n actions: {\n [ACTION_NAME]: {\n ...VALID_INTEGRATION.actions[ACTION_NAME],\n input: {\n schema: z.object({\n [PARAM_NAME]: z.string().describe(TRUTHY_STRING),\n }),\n },\n },\n },\n } as const\n\n // act\n const results = await lintDefinitionAndReturnResults(definition)\n\n // assert\n expect(results[0]?.message).toContain('title')\n })\n\n test('should log as an error when severity is 0', async () => {\n // arrange\n const definition = {\n ...VALID_INTEGRATION,\n title: EMPTY_STRING,\n } as const\n\n // act\n await lintDefinitionAndLogResults(definition)\n\n // assert\n expect(mockLogger.error).toHaveBeenCalled()\n })\n\n test('should log as a warning when severity is 1', async () => {\n // arrange\n const definition = {\n ...VALID_INTEGRATION,\n user: {\n tags: {\n [TAG_NAME]: {},\n },\n },\n } as const\n\n // act\n await lintDefinitionAndLogResults(definition)\n\n // assert\n expect(mockLogger.warn).toHaveBeenCalled()\n })\n})\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -6,6 +6,7 @@ const describeRule = (0, import_common.createDescribeRule)()(import_bot.BOT_RULE
|
|
|
6
6
|
const EMPTY_STRING = "";
|
|
7
7
|
const TRUTHY_STRING = "truthy";
|
|
8
8
|
const EVENT_NAME = "eventName";
|
|
9
|
+
const SECRET_NAME = "SECRET_NAME";
|
|
9
10
|
const PARAM_NAME = "paramName";
|
|
10
11
|
const PROPERTIES_PARAM = "properties";
|
|
11
12
|
const PARAM_NAMES = [PARAM_NAME, PROPERTIES_PARAM];
|
|
@@ -677,4 +678,25 @@ describeRule("state-fields-must-have-description", (lint) => {
|
|
|
677
678
|
(0, import_vitest.expect)(results).toHaveLength(0);
|
|
678
679
|
});
|
|
679
680
|
});
|
|
681
|
+
describeRule("secrets-must-have-a-description", (lint) => {
|
|
682
|
+
(0, import_vitest.test)("missing description should trigger", async () => {
|
|
683
|
+
const definition = { secrets: { [SECRET_NAME]: {} } };
|
|
684
|
+
const results = await lint(definition);
|
|
685
|
+
(0, import_vitest.expect)(results).toHaveLength(1);
|
|
686
|
+
});
|
|
687
|
+
(0, import_vitest.test)("empty description should trigger", async () => {
|
|
688
|
+
const definition = {
|
|
689
|
+
secrets: { [SECRET_NAME]: { description: EMPTY_STRING } }
|
|
690
|
+
};
|
|
691
|
+
const results = await lint(definition);
|
|
692
|
+
(0, import_vitest.expect)(results).toHaveLength(1);
|
|
693
|
+
});
|
|
694
|
+
(0, import_vitest.test)("valid description should not trigger", async () => {
|
|
695
|
+
const definition = {
|
|
696
|
+
secrets: { [SECRET_NAME]: { description: TRUTHY_STRING } }
|
|
697
|
+
};
|
|
698
|
+
const results = await lint(definition);
|
|
699
|
+
(0, import_vitest.expect)(results).toHaveLength(0);
|
|
700
|
+
});
|
|
701
|
+
});
|
|
680
702
|
//# sourceMappingURL=bot.ruleset.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/linter/ruleset-tests/bot.ruleset.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { test, expect } from 'vitest'\nimport { BOT_RULESET } from '../rulesets/bot.ruleset'\nimport { createDescribeRule, type RecursivePartial } from './common'\nimport { CreateBotRequestBody } from '../../api'\n\ntype PartialDefinition = RecursivePartial<CreateBotRequestBody>\nconst describeRule = createDescribeRule<CreateBotRequestBody>()(BOT_RULESET)\n\nconst EMPTY_STRING = ''\nconst TRUTHY_STRING = 'truthy'\nconst EVENT_NAME = 'eventName'\nconst PARAM_NAME = 'paramName'\nconst PROPERTIES_PARAM = 'properties'\nconst PARAM_NAMES = [PARAM_NAME, PROPERTIES_PARAM] as const\nconst TAG_NAME = 'tagName'\nconst STATE_NAME = 'stateName'\nconst ZUI = 'x-zui'\nconst LEGACY_ZUI = 'ui'\n\ndescribeRule('event-outputparams-should-have-title', (lint) => {\n test.each(PARAM_NAMES)('missing title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: { [EVENT_NAME]: { schema: { properties: { [paramName]: { [ZUI]: {} } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', paramName, ZUI])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('missing title with anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: {\n schema: {\n properties: { [paramName]: { anyOf: [{ type: 'object', [ZUI]: {} }, { type: 'null' }], [ZUI]: {} } },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', paramName, ZUI])\n expect(results[0]?.message).toContain('title')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('empty title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', paramName, ZUI, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('empty title nested in anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: {\n schema: {\n properties: {\n [paramName]: { anyOf: [{ type: 'object', [ZUI]: { title: EMPTY_STRING } }, { type: 'null' }], [ZUI]: {} },\n },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual([\n 'events',\n EVENT_NAME,\n 'schema',\n 'properties',\n paramName,\n 'anyOf',\n '0',\n ZUI,\n 'title',\n ])\n expect(results[0]?.message).toContain('title')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('valid title should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n\n test.each(PARAM_NAMES)('valid title nested in anyOf should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: {\n schema: {\n properties: {\n [paramName]: {\n anyOf: [{ type: 'object', [ZUI]: { title: TRUTHY_STRING } }, { type: 'null' }],\n [ZUI]: {},\n },\n },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('event-outputparams-must-have-description', (lint) => {\n test.each(PARAM_NAMES)('missing description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: { [EVENT_NAME]: { schema: { properties: { [paramName]: {} } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', paramName])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('missing description with anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: {\n schema: { properties: { [paramName]: { anyOf: [{ type: 'object' }, { type: 'null' }] } } },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', paramName])\n expect(results[0]?.message).toContain('description')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('empty description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', paramName, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('empty description nested in anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: {\n schema: {\n properties: { [paramName]: { anyOf: [{ type: 'object', description: EMPTY_STRING }, { type: 'null' }] } },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual([\n 'events',\n EVENT_NAME,\n 'schema',\n 'properties',\n paramName,\n 'anyOf',\n '0',\n 'description',\n ])\n expect(results[0]?.message).toContain('description')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('valid description should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n\n test.each(PARAM_NAMES)('valid description nested in anyOf should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: {\n schema: {\n properties: { [paramName]: { anyOf: [{ type: 'object', description: TRUTHY_STRING }, { type: 'null' }] } },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('configuration-fields-must-have-a-title', (lint) => {\n test.each(PARAM_NAMES)('missing title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: { [ZUI]: {} } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName, ZUI])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('missing title with anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: {\n schema: {\n properties: { [paramName]: { anyOf: [{ type: 'object', [ZUI]: {} }, { type: 'null' }], [ZUI]: {} } },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName, ZUI])\n expect(results[0]?.message).toContain('title')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('empty title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName, ZUI, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('empty title nested in anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: {\n schema: {\n properties: {\n [paramName]: { anyOf: [{ type: 'object', [ZUI]: { title: EMPTY_STRING } }, { type: 'null' }], [ZUI]: {} },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName, 'anyOf', '0', ZUI, 'title'])\n expect(results[0]?.message).toContain('title')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('valid title should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n\n test.each(PARAM_NAMES)('valid title nested in anyOf should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: {\n schema: {\n properties: {\n [paramName]: { anyOf: [{ type: 'object', [ZUI]: { title: TRUTHY_STRING } }, { type: 'null' }], [ZUI]: {} },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('configuration-fields-must-have-a-description', (lint) => {\n test.each(PARAM_NAMES)('missing description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: {} } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('missing description with anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: {\n schema: {\n properties: {\n [paramName]: { anyOf: [{ type: 'object' }, { type: 'null' }] },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName])\n expect(results[0]?.message).toContain('description')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('empty description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('empty description nested in anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: {\n schema: {\n properties: {\n [paramName]: { anyOf: [{ type: 'object', description: EMPTY_STRING }, { type: 'null' }] },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName, 'anyOf', '0', 'description'])\n expect(results[0]?.message).toContain('description')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('valid description should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n\n test.each(PARAM_NAMES)('valid description nested in anyOf should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: {\n schema: {\n properties: {\n [paramName]: { anyOf: [{ type: 'object', description: TRUTHY_STRING }, { type: 'null' }] },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('user-tags-should-have-a-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = { user: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['user', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = { user: { tags: { [TAG_NAME]: { title: EMPTY_STRING } } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['user', 'tags', TAG_NAME, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = { user: { tags: { [TAG_NAME]: { title: TRUTHY_STRING } } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('user-tags-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = { user: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['user', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n user: { tags: { [TAG_NAME]: { description: EMPTY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['user', 'tags', TAG_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n user: { tags: { [TAG_NAME]: { description: TRUTHY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('conversation-tags-should-have-a-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = { conversation: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['conversation', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = {\n conversation: { tags: { [TAG_NAME]: { title: EMPTY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['conversation', 'tags', TAG_NAME, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = {\n conversation: { tags: { [TAG_NAME]: { title: TRUTHY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('conversation-tags-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = { conversation: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['conversation', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n conversation: { tags: { [TAG_NAME]: { description: EMPTY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['conversation', 'tags', TAG_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n conversation: { tags: { [TAG_NAME]: { description: TRUTHY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('message-tags-should-have-a-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = { message: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['message', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = {\n message: { tags: { [TAG_NAME]: { title: EMPTY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['message', 'tags', TAG_NAME, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = {\n message: { tags: { [TAG_NAME]: { title: TRUTHY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('message-tags-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = { message: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['message', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n message: { tags: { [TAG_NAME]: { description: EMPTY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['message', 'tags', TAG_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n message: { tags: { [TAG_NAME]: { description: TRUTHY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('legacy-zui-title-should-be-removed', (lint) => {\n test.each(PARAM_NAMES)('legacy zui title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: {\n [LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } },\n schema: {},\n },\n events: { [EVENT_NAME]: { [LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } }, schema: {} } },\n states: { [STATE_NAME]: { [LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } }, schema: {} } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(3)\n expect(results[0]?.message).toContain('.title()')\n })\n})\n\ndescribeRule('legacy-zui-examples-should-be-removed', (lint) => {\n test.each(PARAM_NAMES)('legacy zui examples should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: {\n [LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } },\n schema: {},\n },\n events: { [EVENT_NAME]: { [LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } }, schema: {} } },\n states: { [STATE_NAME]: { [LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } }, schema: {} } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(3)\n expect(results[0]?.message).toContain('examples')\n })\n})\n\ndescribeRule('state-fields-should-have-title', (lint) => {\n test.each(PARAM_NAMES)('missing title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: { [ZUI]: {} } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', paramName, ZUI])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('missing title with anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: {\n [STATE_NAME]: {\n schema: {\n properties: { [paramName]: { anyOf: [{ type: 'object', [ZUI]: {} }, { type: 'null' }], [ZUI]: {} } },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', paramName, ZUI])\n expect(results[0]?.message).toContain('title')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('empty title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', paramName, ZUI, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('empty title nested in anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: {\n [STATE_NAME]: {\n schema: {\n properties: {\n [paramName]: { anyOf: [{ type: 'object', [ZUI]: { title: EMPTY_STRING } }, { type: 'null' }], [ZUI]: {} },\n },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual([\n 'states',\n STATE_NAME,\n 'schema',\n 'properties',\n paramName,\n 'anyOf',\n '0',\n ZUI,\n 'title',\n ])\n expect(results[0]?.message).toContain('title')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('valid title should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n\n test.each(PARAM_NAMES)('valid title nested in anyOf should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: {\n [STATE_NAME]: {\n schema: {\n properties: {\n [paramName]: {\n anyOf: [{ type: 'object', [ZUI]: { title: TRUTHY_STRING } }, { type: 'null' }],\n [ZUI]: {},\n },\n },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('state-fields-must-have-description', (lint) => {\n test.each(PARAM_NAMES)('missing description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: {} } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', paramName])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('missing description with anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: {\n [STATE_NAME]: {\n schema: {\n properties: { [paramName]: { anyOf: [{ type: 'object' }, { type: 'null' }] } },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', paramName])\n expect(results[0]?.message).toContain('description')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('empty description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', paramName, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('empty description nested in anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: {\n [STATE_NAME]: {\n schema: {\n properties: { [paramName]: { anyOf: [{ type: 'object', description: EMPTY_STRING }, { type: 'null' }] } },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual([\n 'states',\n STATE_NAME,\n 'schema',\n 'properties',\n paramName,\n 'anyOf',\n '0',\n 'description',\n ])\n expect(results[0]?.message).toContain('description')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('valid description should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n\n test.each(PARAM_NAMES)('valid description nested in anyOf should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: {\n [STATE_NAME]: {\n schema: {\n properties: { [paramName]: { anyOf: [{ type: 'object', description: TRUTHY_STRING }, { type: 'null' }] } },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { test, expect } from 'vitest'\nimport { BOT_RULESET } from '../rulesets/bot.ruleset'\nimport { createDescribeRule, type RecursivePartial } from './common'\nimport { CreateBotRequestBody } from '../../api'\n\ntype PartialDefinition = RecursivePartial<CreateBotRequestBody>\nconst describeRule = createDescribeRule<CreateBotRequestBody>()(BOT_RULESET)\n\nconst EMPTY_STRING = ''\nconst TRUTHY_STRING = 'truthy'\nconst EVENT_NAME = 'eventName'\nconst SECRET_NAME = 'SECRET_NAME'\nconst PARAM_NAME = 'paramName'\nconst PROPERTIES_PARAM = 'properties'\nconst PARAM_NAMES = [PARAM_NAME, PROPERTIES_PARAM] as const\nconst TAG_NAME = 'tagName'\nconst STATE_NAME = 'stateName'\nconst ZUI = 'x-zui'\nconst LEGACY_ZUI = 'ui'\n\ndescribeRule('event-outputparams-should-have-title', (lint) => {\n test.each(PARAM_NAMES)('missing title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: { [EVENT_NAME]: { schema: { properties: { [paramName]: { [ZUI]: {} } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', paramName, ZUI])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('missing title with anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: {\n schema: {\n properties: { [paramName]: { anyOf: [{ type: 'object', [ZUI]: {} }, { type: 'null' }], [ZUI]: {} } },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', paramName, ZUI])\n expect(results[0]?.message).toContain('title')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('empty title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', paramName, ZUI, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('empty title nested in anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: {\n schema: {\n properties: {\n [paramName]: { anyOf: [{ type: 'object', [ZUI]: { title: EMPTY_STRING } }, { type: 'null' }], [ZUI]: {} },\n },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual([\n 'events',\n EVENT_NAME,\n 'schema',\n 'properties',\n paramName,\n 'anyOf',\n '0',\n ZUI,\n 'title',\n ])\n expect(results[0]?.message).toContain('title')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('valid title should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n\n test.each(PARAM_NAMES)('valid title nested in anyOf should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: {\n schema: {\n properties: {\n [paramName]: {\n anyOf: [{ type: 'object', [ZUI]: { title: TRUTHY_STRING } }, { type: 'null' }],\n [ZUI]: {},\n },\n },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('event-outputparams-must-have-description', (lint) => {\n test.each(PARAM_NAMES)('missing description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: { [EVENT_NAME]: { schema: { properties: { [paramName]: {} } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', paramName])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('missing description with anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: {\n schema: { properties: { [paramName]: { anyOf: [{ type: 'object' }, { type: 'null' }] } } },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', paramName])\n expect(results[0]?.message).toContain('description')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('empty description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', paramName, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('empty description nested in anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: {\n schema: {\n properties: { [paramName]: { anyOf: [{ type: 'object', description: EMPTY_STRING }, { type: 'null' }] } },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual([\n 'events',\n EVENT_NAME,\n 'schema',\n 'properties',\n paramName,\n 'anyOf',\n '0',\n 'description',\n ])\n expect(results[0]?.message).toContain('description')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('valid description should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n\n test.each(PARAM_NAMES)('valid description nested in anyOf should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: {\n schema: {\n properties: { [paramName]: { anyOf: [{ type: 'object', description: TRUTHY_STRING }, { type: 'null' }] } },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('configuration-fields-must-have-a-title', (lint) => {\n test.each(PARAM_NAMES)('missing title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: { [ZUI]: {} } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName, ZUI])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('missing title with anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: {\n schema: {\n properties: { [paramName]: { anyOf: [{ type: 'object', [ZUI]: {} }, { type: 'null' }], [ZUI]: {} } },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName, ZUI])\n expect(results[0]?.message).toContain('title')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('empty title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName, ZUI, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('empty title nested in anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: {\n schema: {\n properties: {\n [paramName]: { anyOf: [{ type: 'object', [ZUI]: { title: EMPTY_STRING } }, { type: 'null' }], [ZUI]: {} },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName, 'anyOf', '0', ZUI, 'title'])\n expect(results[0]?.message).toContain('title')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('valid title should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n\n test.each(PARAM_NAMES)('valid title nested in anyOf should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: {\n schema: {\n properties: {\n [paramName]: { anyOf: [{ type: 'object', [ZUI]: { title: TRUTHY_STRING } }, { type: 'null' }], [ZUI]: {} },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('configuration-fields-must-have-a-description', (lint) => {\n test.each(PARAM_NAMES)('missing description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: {} } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('missing description with anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: {\n schema: {\n properties: {\n [paramName]: { anyOf: [{ type: 'object' }, { type: 'null' }] },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName])\n expect(results[0]?.message).toContain('description')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('empty description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('empty description nested in anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: {\n schema: {\n properties: {\n [paramName]: { anyOf: [{ type: 'object', description: EMPTY_STRING }, { type: 'null' }] },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName, 'anyOf', '0', 'description'])\n expect(results[0]?.message).toContain('description')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('valid description should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n\n test.each(PARAM_NAMES)('valid description nested in anyOf should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: {\n schema: {\n properties: {\n [paramName]: { anyOf: [{ type: 'object', description: TRUTHY_STRING }, { type: 'null' }] },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('user-tags-should-have-a-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = { user: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['user', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = { user: { tags: { [TAG_NAME]: { title: EMPTY_STRING } } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['user', 'tags', TAG_NAME, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = { user: { tags: { [TAG_NAME]: { title: TRUTHY_STRING } } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('user-tags-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = { user: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['user', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n user: { tags: { [TAG_NAME]: { description: EMPTY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['user', 'tags', TAG_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n user: { tags: { [TAG_NAME]: { description: TRUTHY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('conversation-tags-should-have-a-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = { conversation: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['conversation', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = {\n conversation: { tags: { [TAG_NAME]: { title: EMPTY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['conversation', 'tags', TAG_NAME, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = {\n conversation: { tags: { [TAG_NAME]: { title: TRUTHY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('conversation-tags-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = { conversation: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['conversation', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n conversation: { tags: { [TAG_NAME]: { description: EMPTY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['conversation', 'tags', TAG_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n conversation: { tags: { [TAG_NAME]: { description: TRUTHY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('message-tags-should-have-a-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = { message: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['message', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = {\n message: { tags: { [TAG_NAME]: { title: EMPTY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['message', 'tags', TAG_NAME, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = {\n message: { tags: { [TAG_NAME]: { title: TRUTHY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('message-tags-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = { message: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['message', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n message: { tags: { [TAG_NAME]: { description: EMPTY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['message', 'tags', TAG_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n message: { tags: { [TAG_NAME]: { description: TRUTHY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('legacy-zui-title-should-be-removed', (lint) => {\n test.each(PARAM_NAMES)('legacy zui title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: {\n [LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } },\n schema: {},\n },\n events: { [EVENT_NAME]: { [LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } }, schema: {} } },\n states: { [STATE_NAME]: { [LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } }, schema: {} } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(3)\n expect(results[0]?.message).toContain('.title()')\n })\n})\n\ndescribeRule('legacy-zui-examples-should-be-removed', (lint) => {\n test.each(PARAM_NAMES)('legacy zui examples should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: {\n [LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } },\n schema: {},\n },\n events: { [EVENT_NAME]: { [LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } }, schema: {} } },\n states: { [STATE_NAME]: { [LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } }, schema: {} } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(3)\n expect(results[0]?.message).toContain('examples')\n })\n})\n\ndescribeRule('state-fields-should-have-title', (lint) => {\n test.each(PARAM_NAMES)('missing title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: { [ZUI]: {} } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', paramName, ZUI])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('missing title with anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: {\n [STATE_NAME]: {\n schema: {\n properties: { [paramName]: { anyOf: [{ type: 'object', [ZUI]: {} }, { type: 'null' }], [ZUI]: {} } },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', paramName, ZUI])\n expect(results[0]?.message).toContain('title')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('empty title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', paramName, ZUI, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('empty title nested in anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: {\n [STATE_NAME]: {\n schema: {\n properties: {\n [paramName]: { anyOf: [{ type: 'object', [ZUI]: { title: EMPTY_STRING } }, { type: 'null' }], [ZUI]: {} },\n },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual([\n 'states',\n STATE_NAME,\n 'schema',\n 'properties',\n paramName,\n 'anyOf',\n '0',\n ZUI,\n 'title',\n ])\n expect(results[0]?.message).toContain('title')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('valid title should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n\n test.each(PARAM_NAMES)('valid title nested in anyOf should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: {\n [STATE_NAME]: {\n schema: {\n properties: {\n [paramName]: {\n anyOf: [{ type: 'object', [ZUI]: { title: TRUTHY_STRING } }, { type: 'null' }],\n [ZUI]: {},\n },\n },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('state-fields-must-have-description', (lint) => {\n test.each(PARAM_NAMES)('missing description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: {} } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', paramName])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('missing description with anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: {\n [STATE_NAME]: {\n schema: {\n properties: { [paramName]: { anyOf: [{ type: 'object' }, { type: 'null' }] } },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', paramName])\n expect(results[0]?.message).toContain('description')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('empty description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', paramName, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('empty description nested in anyOf should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: {\n [STATE_NAME]: {\n schema: {\n properties: { [paramName]: { anyOf: [{ type: 'object', description: EMPTY_STRING }, { type: 'null' }] } },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual([\n 'states',\n STATE_NAME,\n 'schema',\n 'properties',\n paramName,\n 'anyOf',\n '0',\n 'description',\n ])\n expect(results[0]?.message).toContain('description')\n expect(results[0]?.message).toContain(paramName)\n })\n\n test.each(PARAM_NAMES)('valid description should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n\n test.each(PARAM_NAMES)('valid description nested in anyOf should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: {\n [STATE_NAME]: {\n schema: {\n properties: { [paramName]: { anyOf: [{ type: 'object', description: TRUTHY_STRING }, { type: 'null' }] } },\n },\n },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('secrets-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n const definition = { secrets: { [SECRET_NAME]: {} } } as const satisfies PartialDefinition\n const results = await lint(definition)\n expect(results).toHaveLength(1)\n })\n\n test('empty description should trigger', async () => {\n const definition = {\n secrets: { [SECRET_NAME]: { description: EMPTY_STRING } },\n } as const satisfies PartialDefinition\n const results = await lint(definition)\n expect(results).toHaveLength(1)\n })\n\n test('valid description should not trigger', async () => {\n const definition = {\n secrets: { [SECRET_NAME]: { description: TRUTHY_STRING } },\n } as const satisfies PartialDefinition\n const results = await lint(definition)\n expect(results).toHaveLength(0)\n })\n})\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -24,6 +24,7 @@ module.exports = __toCommonJS(bot_ruleset_exports);
|
|
|
24
24
|
var import_spectral_functions = require("@stoplight/spectral-functions");
|
|
25
25
|
var import_ruleset_functions = require("../ruleset-functions");
|
|
26
26
|
var import_spectral_functions2 = require("../spectral-functions");
|
|
27
|
+
var import_shared_rules = require("./shared-rules");
|
|
27
28
|
const BOT_RULESET = (0, import_ruleset_functions.preprocessRuleset)({
|
|
28
29
|
extends: [],
|
|
29
30
|
rules: {
|
|
@@ -200,7 +201,8 @@ const BOT_RULESET = (0, import_ruleset_functions.preprocessRuleset)({
|
|
|
200
201
|
})
|
|
201
202
|
}
|
|
202
203
|
]
|
|
203
|
-
}
|
|
204
|
+
},
|
|
205
|
+
"secrets-must-have-a-description": import_shared_rules.secretsMustHaveADescription
|
|
204
206
|
}
|
|
205
207
|
});
|
|
206
208
|
// Annotate the CommonJS export names for ESM import in node:
|