From 9607e963d217119d2370d9580ecd53eab925fd2d Mon Sep 17 00:00:00 2001 From: Waldek Mastykarz Date: Thu, 25 Jun 2026 09:07:05 +0200 Subject: [PATCH 1/4] Migrate purview retentionevent and retentioneventtype commands to Zod Migrates the following commands from the legacy #initOptions()/#initValidators()/#initTelemetry() pattern to Zod schema-based validation: - purview retentionevent add - purview retentionevent get - purview retentionevent remove - purview retentioneventtype add - purview retentioneventtype get - purview retentioneventtype remove - purview retentioneventtype set Closes #7315 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .impeccable/hook.cache.json | 1 + npm-shrinkwrap.json | 7 -- .../retentionevent/retentionevent-add.spec.ts | 41 ++++--- .../retentionevent/retentionevent-add.ts | 108 ++++++------------ .../retentionevent/retentionevent-get.spec.ts | 27 +++-- .../retentionevent/retentionevent-get.ts | 43 +++---- .../retentionevent-remove.spec.ts | 56 +++++---- .../retentionevent/retentionevent-remove.ts | 59 +++------- .../retentioneventtype-add.spec.ts | 17 ++- .../retentioneventtype-add.ts | 42 ++----- .../retentioneventtype-get.spec.ts | 27 +++-- .../retentioneventtype-get.ts | 43 +++---- .../retentioneventtype-remove.spec.ts | 33 +++--- .../retentioneventtype-remove.ts | 57 +++------ .../retentioneventtype-set.spec.ts | 36 +++--- .../retentioneventtype-set.ts | 65 ++++------- 16 files changed, 267 insertions(+), 395 deletions(-) create mode 100644 .impeccable/hook.cache.json diff --git a/.impeccable/hook.cache.json b/.impeccable/hook.cache.json new file mode 100644 index 00000000000..e318d3611e6 --- /dev/null +++ b/.impeccable/hook.cache.json @@ -0,0 +1 @@ +{"version":1,"sessions":{"2ba05265-4718-4ce8-9800-abe38414132c":{"updatedAt":1782371098181,"files":{"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentionevent/retentionevent-add.ts":{"editCount":1,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentionevent/retentionevent-get.ts":{"editCount":1,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentionevent/retentionevent-remove.ts":{"editCount":2,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentioneventtype/retentioneventtype-add.ts":{"editCount":1,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentioneventtype/retentioneventtype-get.ts":{"editCount":1,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentioneventtype/retentioneventtype-remove.ts":{"editCount":1,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentioneventtype/retentioneventtype-set.ts":{"editCount":1,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentionevent/retentionevent-add.spec.ts":{"editCount":4,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentionevent/retentionevent-get.spec.ts":{"editCount":3,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentionevent/retentionevent-remove.spec.ts":{"editCount":3,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentioneventtype/retentioneventtype-add.spec.ts":{"editCount":3,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentioneventtype/retentioneventtype-get.spec.ts":{"editCount":3,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentioneventtype/retentioneventtype-remove.spec.ts":{"editCount":3,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentioneventtype/retentioneventtype-set.spec.ts":{"editCount":3,"findings":[]}}}}} \ No newline at end of file diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 34362ac0824..7861a1c634c 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -915,7 +915,6 @@ "node_modules/@opentelemetry/api": { "version": "1.9.1", "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=8.0.0" } @@ -1766,7 +1765,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.4.tgz", "integrity": "sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==", "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -1880,7 +1878,6 @@ "integrity": "sha512-A0M6ua6H252bVjPvvtSgl2QA4+ET9S5Mtkb2GDyTxIhH/C4qDItT7RQNO5PhMC6NXGYXOR9dIalcDDgBKT7oFA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.60.1", "@typescript-eslint/types": "8.60.1", @@ -2474,7 +2471,6 @@ "node_modules/acorn": { "version": "8.16.0", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3259,7 +3255,6 @@ "node_modules/diagnostic-channel": { "version": "1.1.1", "license": "MIT", - "peer": true, "dependencies": { "semver": "^7.5.3" } @@ -3420,7 +3415,6 @@ "integrity": "sha512-loXy6bWOoP3EP6JA7jo6p5jMpBJmHmsNZM5SFRHLdh1MGOPurMnNBj4ZlAbaqUAaQWbCr7jHV4P7gzAyryZWkQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.2", @@ -6045,7 +6039,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/src/m365/purview/commands/retentionevent/retentionevent-add.spec.ts b/src/m365/purview/commands/retentionevent/retentionevent-add.spec.ts index 89ef741317c..bfb6261c041 100644 --- a/src/m365/purview/commands/retentionevent/retentionevent-add.spec.ts +++ b/src/m365/purview/commands/retentionevent/retentionevent-add.spec.ts @@ -11,7 +11,7 @@ import { pid } from '../../../../utils/pid.js'; import { session } from '../../../../utils/session.js'; import { sinonUtil } from '../../../../utils/sinonUtil.js'; import commands from '../../commands.js'; -import command from './retentionevent-add.js'; +import command, { options } from './retentionevent-add.js'; describe(commands.RETENTIONEVENT_ADD, () => { const validDisplayName = "Event display name"; @@ -86,6 +86,7 @@ describe(commands.RETENTIONEVENT_ADD, () => { let logger: Logger; let loggerLogSpy: sinon.SinonSpy; let commandInfo: CommandInfo; + let commandOptionsSchema: typeof options; before(() => { sinon.stub(auth, 'restoreAuth').resolves(); @@ -98,6 +99,7 @@ describe(commands.RETENTIONEVENT_ADD, () => { accessToken: 'abc' }; commandInfo = cli.getCommandInfo(command); + commandOptionsSchema = commandInfo.command.getSchemaToParse() as typeof options; }); beforeEach(() => { @@ -138,19 +140,24 @@ describe(commands.RETENTIONEVENT_ADD, () => { assert.notStrictEqual(command.description, null); }); - it('fails validation if date is not a valid ISO date string', async () => { - const actual = await command.validate({ options: { displayName: validDisplayName, eventTypeId: validTypeId, description: validDescription, triggerDateTime: "Not a valid date", assetIds: validAssetIds } }, commandInfo); - assert.notStrictEqual(actual, true); + it('fails validation if date is not a valid ISO date string', () => { + const actual = commandOptionsSchema.safeParse({ displayName: validDisplayName, eventTypeId: validTypeId, description: validDescription, triggerDateTime: "Not a valid date", assetIds: validAssetIds }); + assert.strictEqual(actual.success, false); }); - it('fails validation if assetId or keywords is not provided', async () => { - const actual = await command.validate({ options: { displayName: validDisplayName, eventTypeId: validTypeId, description: validDescription, triggerDateTime: validDate } }, commandInfo); - assert.notStrictEqual(actual, true); + it('fails validation if assetId or keywords is not provided', () => { + const actual = commandOptionsSchema.safeParse({ displayName: validDisplayName, eventTypeId: validTypeId, description: validDescription, triggerDateTime: validDate }); + assert.strictEqual(actual.success, false); }); - it('passes validation if a correct ISO date string is entered', async () => { - const actual = await command.validate({ options: { displayName: validDisplayName, eventTypeId: validTypeId, description: validDescription, triggerDateTime: validDate, assetIds: validAssetIds } }, commandInfo); - assert.strictEqual(actual, true); + it('passes validation if a correct ISO date string is entered', () => { + const actual = commandOptionsSchema.safeParse({ displayName: validDisplayName, eventTypeId: validTypeId, description: validDescription, triggerDateTime: validDate, assetIds: validAssetIds }); + assert.strictEqual(actual.success, true); + }); + + it('fails validation with unknown options', () => { + const actual = commandOptionsSchema.safeParse({ displayName: validDisplayName, eventTypeId: validTypeId, assetIds: validAssetIds, unknownOption: 'value' }); + assert.strictEqual(actual.success, false); }); it('adds retention event with minimal required parameters and assetIds', async () => { @@ -162,7 +169,7 @@ describe(commands.RETENTIONEVENT_ADD, () => { throw 'Invalid request'; }); - await command.action(logger, { options: { displayName: validDisplayName, eventTypeId: validTypeId, assetIds: validAssetIds } }); + await command.action(logger, { options: commandOptionsSchema.parse({ displayName: validDisplayName, eventTypeId: validTypeId, assetIds: validAssetIds }) }); assert(loggerLogSpy.calledWith(EventResponse)); }); @@ -175,7 +182,7 @@ describe(commands.RETENTIONEVENT_ADD, () => { throw 'Invalid request'; }); - await command.action(logger, { options: { displayName: validDisplayName, eventTypeId: validTypeId, keywords: validKeyswords } }); + await command.action(logger, { options: commandOptionsSchema.parse({ displayName: validDisplayName, eventTypeId: validTypeId, keywords: validKeyswords }) }); assert(loggerLogSpy.calledWith(EventResponse)); }); @@ -188,7 +195,7 @@ describe(commands.RETENTIONEVENT_ADD, () => { throw 'Invalid request'; }); - await command.action(logger, { options: { verbose: true, displayName: validDisplayName, eventTypeId: validTypeId, description: validDescription, triggerDateTime: validDate, assetIds: validAssetIds, keywords: validKeyswords } }); + await command.action(logger, { options: commandOptionsSchema.parse({ verbose: true, displayName: validDisplayName, eventTypeId: validTypeId, description: validDescription, triggerDateTime: validDate, assetIds: validAssetIds, keywords: validKeyswords }) }); assert(loggerLogSpy.calledWith(EventResponse)); }); @@ -209,7 +216,7 @@ describe(commands.RETENTIONEVENT_ADD, () => { throw 'Invalid request'; }); - await command.action(logger, { options: { verbose: true, displayName: validDisplayName, eventTypeName: validTypeName, assetIds: validAssetIds } }); + await command.action(logger, { options: commandOptionsSchema.parse({ verbose: true, displayName: validDisplayName, eventTypeName: validTypeName, assetIds: validAssetIds }) }); assert(loggerLogSpy.calledWith(EventResponse)); }); @@ -223,7 +230,7 @@ describe(commands.RETENTIONEVENT_ADD, () => { }); await assert.rejects(command.action(logger, { - options: { displayName: validDisplayName, eventTypeName: validTypeName, assetIds: validAssetIds } + options: commandOptionsSchema.parse({ displayName: validDisplayName, eventTypeName: validTypeName, assetIds: validAssetIds }) }), new CommandError(`The specified event type '${validTypeName}' does not exist.`)); }); @@ -236,9 +243,9 @@ describe(commands.RETENTIONEVENT_ADD, () => { sinon.stub(request, 'post').callsFake(async () => { throw error; }); await assert.rejects(command.action(logger, { - options: { + options: commandOptionsSchema.parse({ displayName: validDisplayName, eventTypeId: validTypeId, assetIds: validAssetIds - } + }) }), new CommandError(error.error.message)); }); }); \ No newline at end of file diff --git a/src/m365/purview/commands/retentionevent/retentionevent-add.ts b/src/m365/purview/commands/retentionevent/retentionevent-add.ts index 9d8e0a7ea05..5bf387a97ac 100644 --- a/src/m365/purview/commands/retentionevent/retentionevent-add.ts +++ b/src/m365/purview/commands/retentionevent/retentionevent-add.ts @@ -1,25 +1,32 @@ +import { z } from 'zod'; import { Logger } from '../../../../cli/Logger.js'; +import { globalOptionsZod } from '../../../../Command.js'; import GraphCommand from '../../../base/GraphCommand.js'; -import GlobalOptions from '../../../../GlobalOptions.js'; import commands from '../../commands.js'; import request, { CliRequestOptions } from '../../../../request.js'; import { validation } from '../../../../utils/validation.js'; import { odata } from '../../../../utils/odata.js'; +export const options = z.strictObject({ + ...globalOptionsZod.shape, + displayName: z.string().alias('n'), + eventTypeId: z.string().optional().alias('i'), + eventTypeName: z.string().optional().alias('e'), + description: z.string().optional().alias('d'), + triggerDateTime: z.string().optional() + .refine(val => val === undefined || validation.isValidISODateTime(val), { + message: 'The triggerDateTime is not a valid ISO date string' + }), + assetIds: z.string().optional().alias('a'), + keywords: z.string().optional().alias('k') +}); + +declare type Options = z.infer; + interface CommandArgs { options: Options; } -interface Options extends GlobalOptions { - displayName: string; - eventTypeId?: string; - eventTypeName?: string; - description?: string; - triggerDateTime?: string; - assetIds?: string; - keywords?: string; -} - class PurviewRetentionEventAddCommand extends GraphCommand { public get name(): string { return commands.RETENTIONEVENT_ADD; @@ -29,74 +36,25 @@ class PurviewRetentionEventAddCommand extends GraphCommand { return 'Create a retention event'; } - constructor() { - super(); - - this.#initTelemetry(); - this.#initOptions(); - this.#initValidators(); - this.#initOptionSets(); - } - - #initOptions(): void { - this.options.unshift( - { - option: '-n, --displayName ' - }, - { - option: '-i, --eventTypeId [eventTypeId]' - }, - { - option: '-e, --eventTypeName [eventTypeName]' - }, - { - option: '-d, --description [description]' - }, - { - option: '--triggerDateTime [triggerDateTime]' - }, - { - option: '-a, --assetIds [assetIds]' - }, - { - option: '-k, --keywords [keywords]' - } - ); + public get schema(): z.ZodType | undefined { + return options; } - #initValidators(): void { - this.validators.push( - async (args: CommandArgs) => { - if (args.options.triggerDateTime && !validation.isValidISODateTime(args.options.triggerDateTime)) { - return 'The triggerDateTime is not a valid ISO date string'; + public getRefinedSchema(schema: typeof options): z.ZodObject | undefined { + return schema + .refine(opts => [opts.eventTypeId, opts.eventTypeName].filter(x => x !== undefined).length === 1, { + message: `Specify either 'eventTypeId' or 'eventTypeName', but not both.`, + params: { + customCode: 'optionSet', + options: ['eventTypeId', 'eventTypeName'] } - - if (!args.options.assetIds && !args.options.keywords) { - return 'Specify assetIds and/or keywords, but at least one.'; + }) + .refine(opts => opts.assetIds || opts.keywords, { + message: 'Specify assetIds and/or keywords, but at least one.', + params: { + customCode: 'required' } - - return true; - } - ); - } - - #initTelemetry(): void { - this.telemetry.push((args: CommandArgs) => { - Object.assign(this.telemetryProperties, { - description: typeof args.options.description !== 'undefined', - triggerDateTime: typeof args.options.triggerDateTime !== 'undefined', - eventTypeId: typeof args.options.eventTypeId !== 'undefined', - eventTypeName: typeof args.options.eventTypeName !== 'undefined', - assetIds: typeof args.options.assetIds !== 'undefined', - keywords: typeof args.options.keywords !== 'undefined' - }); - }); - } - - #initOptionSets(): void { - this.optionSets.push( - { options: ['eventTypeId', 'eventTypeName'] } - ); + }) as any; } public async commandAction(logger: Logger, args: CommandArgs): Promise { diff --git a/src/m365/purview/commands/retentionevent/retentionevent-get.spec.ts b/src/m365/purview/commands/retentionevent/retentionevent-get.spec.ts index 0be5ccf6bcc..f867490fcbe 100644 --- a/src/m365/purview/commands/retentionevent/retentionevent-get.spec.ts +++ b/src/m365/purview/commands/retentionevent/retentionevent-get.spec.ts @@ -11,7 +11,7 @@ import { pid } from '../../../../utils/pid.js'; import { session } from '../../../../utils/session.js'; import { sinonUtil } from '../../../../utils/sinonUtil.js'; import commands from '../../commands.js'; -import command from './retentionevent-get.js'; +import command, { options } from './retentionevent-get.js'; describe(commands.RETENTIONEVENT_GET, () => { const retentionEventId = 'c37d695e-d581-4ae9-82a0-9364eba4291e'; @@ -63,6 +63,7 @@ describe(commands.RETENTIONEVENT_GET, () => { let logger: Logger; let loggerLogSpy: sinon.SinonSpy; let commandInfo: CommandInfo; + let commandOptionsSchema: typeof options; before(() => { sinon.stub(auth, 'restoreAuth').resolves(); @@ -75,6 +76,7 @@ describe(commands.RETENTIONEVENT_GET, () => { accessToken: 'abc' }; commandInfo = cli.getCommandInfo(command); + commandOptionsSchema = commandInfo.command.getSchemaToParse() as typeof options; }); beforeEach(() => { @@ -114,14 +116,19 @@ describe(commands.RETENTIONEVENT_GET, () => { assert.notStrictEqual(command.description, null); }); - it('fails validation if id is not a valid GUID', async () => { - const actual = await command.validate({ options: { id: 'invalid' } }, commandInfo); - assert.notStrictEqual(actual, true); + it('fails validation if id is not a valid GUID', () => { + const actual = commandOptionsSchema.safeParse({ id: 'invalid' }); + assert.strictEqual(actual.success, false); }); - it('passes validation if a correct id is entered', async () => { - const actual = await command.validate({ options: { id: retentionEventId } }, commandInfo); - assert.strictEqual(actual, true); + it('passes validation if a correct id is entered', () => { + const actual = commandOptionsSchema.safeParse({ id: retentionEventId }); + assert.strictEqual(actual.success, true); + }); + + it('fails validation with unknown options', () => { + const actual = commandOptionsSchema.safeParse({ id: retentionEventId, unknownOption: 'value' }); + assert.strictEqual(actual.success, false); }); it('retrieves retention event by specified id', async () => { @@ -133,7 +140,7 @@ describe(commands.RETENTIONEVENT_GET, () => { throw 'Invalid request'; }); - await command.action(logger, { options: { id: retentionEventId, verbose: true } }); + await command.action(logger, { options: commandOptionsSchema.parse({ id: retentionEventId, verbose: true }) }); assert(loggerLogSpy.calledWith(retentionEventGetResponse)); }); @@ -148,9 +155,9 @@ describe(commands.RETENTIONEVENT_GET, () => { }); await assert.rejects(command.action(logger, { - options: { + options: commandOptionsSchema.parse({ id: retentionEventId - } + }) }), new CommandError(errorMessage)); }); }); \ No newline at end of file diff --git a/src/m365/purview/commands/retentionevent/retentionevent-get.ts b/src/m365/purview/commands/retentionevent/retentionevent-get.ts index 427ed22189c..638dfcb496e 100644 --- a/src/m365/purview/commands/retentionevent/retentionevent-get.ts +++ b/src/m365/purview/commands/retentionevent/retentionevent-get.ts @@ -1,18 +1,24 @@ +import { z } from 'zod'; import { Logger } from '../../../../cli/Logger.js'; -import GlobalOptions from '../../../../GlobalOptions.js'; +import { globalOptionsZod } from '../../../../Command.js'; import request, { CliRequestOptions } from '../../../../request.js'; import { validation } from '../../../../utils/validation.js'; import GraphCommand from '../../../base/GraphCommand.js'; import commands from '../../commands.js'; +export const options = z.strictObject({ + ...globalOptionsZod.shape, + id: z.string().refine(val => validation.isValidGuid(val), { + message: 'The value must be a valid GUID.' + }).alias('i') +}); + +declare type Options = z.infer; + interface CommandArgs { options: Options; } -interface Options extends GlobalOptions { - id: string; -} - class PurviewRetentionEventGetCommand extends GraphCommand { public get name(): string { return commands.RETENTIONEVENT_GET; @@ -22,31 +28,8 @@ class PurviewRetentionEventGetCommand extends GraphCommand { return 'Retrieve the specified retention event'; } - constructor() { - super(); - - this.#initOptions(); - this.#initValidators(); - } - - #initOptions(): void { - this.options.unshift( - { - option: '-i, --id ' - } - ); - } - - #initValidators(): void { - this.validators.push( - async (args: CommandArgs) => { - if (!validation.isValidGuid(args.options.id)) { - return `'${args.options.id}' is not a valid GUID.`; - } - - return true; - } - ); + public get schema(): z.ZodType | undefined { + return options; } public async commandAction(logger: Logger, args: CommandArgs): Promise { diff --git a/src/m365/purview/commands/retentionevent/retentionevent-remove.spec.ts b/src/m365/purview/commands/retentionevent/retentionevent-remove.spec.ts index 4ed3630fd8a..a4f176849ef 100644 --- a/src/m365/purview/commands/retentionevent/retentionevent-remove.spec.ts +++ b/src/m365/purview/commands/retentionevent/retentionevent-remove.spec.ts @@ -11,7 +11,7 @@ import { pid } from '../../../../utils/pid.js'; import { session } from '../../../../utils/session.js'; import { sinonUtil } from '../../../../utils/sinonUtil.js'; import commands from '../../commands.js'; -import command from './retentionevent-remove.js'; +import command, { options } from './retentionevent-remove.js'; describe(commands.RETENTIONEVENT_REMOVE, () => { const validId = 'c37d695e-d581-4ae9-82a0-9364eba4291e'; @@ -20,6 +20,7 @@ describe(commands.RETENTIONEVENT_REMOVE, () => { let logger: Logger; let promptIssued: boolean = false; let commandInfo: CommandInfo; + let commandOptionsSchema: typeof options; before(() => { sinon.stub(auth, 'restoreAuth').resolves(); @@ -32,6 +33,7 @@ describe(commands.RETENTIONEVENT_REMOVE, () => { expiresOn: new Date() }; commandInfo = cli.getCommandInfo(command); + commandOptionsSchema = commandInfo.command.getSchemaToParse() as typeof options; }); beforeEach(() => { @@ -76,29 +78,33 @@ describe(commands.RETENTIONEVENT_REMOVE, () => { assert.notStrictEqual(command.description, null); }); - it('fails validation if id is not a valid GUID', async () => { - const actual = await command.validate({ - options: { - id: 'invalid' - } - }, commandInfo); - assert.notStrictEqual(actual, true); + it('fails validation if id is not a valid GUID', () => { + const actual = commandOptionsSchema.safeParse({ + id: 'invalid' + }); + assert.strictEqual(actual.success, false); }); - it('validates for a correct input with id', async () => { - const actual = await command.validate({ - options: { - id: validId - } - }, commandInfo); - assert.strictEqual(actual, true); + it('validates for a correct input with id', () => { + const actual = commandOptionsSchema.safeParse({ + id: validId + }); + assert.strictEqual(actual.success, true); + }); + + it('fails validation with unknown options', () => { + const actual = commandOptionsSchema.safeParse({ + id: validId, + unknownOption: 'value' + }); + assert.strictEqual(actual.success, false); }); it('prompts before removing the specified retention event when force option not passed', async () => { await command.action(logger, { - options: { + options: commandOptionsSchema.parse({ id: validId - } + }) }); @@ -108,9 +114,9 @@ describe(commands.RETENTIONEVENT_REMOVE, () => { it('aborts removing the specified retention event when force option not passed and prompt not confirmed', async () => { const deleteSpy = sinon.spy(request, 'delete'); await command.action(logger, { - options: { + options: commandOptionsSchema.parse({ id: validId - } + }) }); assert(deleteSpy.notCalled); }); @@ -128,9 +134,9 @@ describe(commands.RETENTIONEVENT_REMOVE, () => { sinon.stub(cli, 'promptForConfirmation').resolves(true); await command.action(logger, { - options: { + options: commandOptionsSchema.parse({ id: validId - } + }) }); }); @@ -144,10 +150,10 @@ describe(commands.RETENTIONEVENT_REMOVE, () => { }); await command.action(logger, { - options: { + options: commandOptionsSchema.parse({ id: validId, force: true - } + }) }); }); @@ -162,10 +168,10 @@ describe(commands.RETENTIONEVENT_REMOVE, () => { sinon.stub(request, 'delete').rejects(error); await assert.rejects(command.action(logger, { - options: { + options: commandOptionsSchema.parse({ id: validId, force: true - } + }) }), new CommandError(error.error.message)); }); }); \ No newline at end of file diff --git a/src/m365/purview/commands/retentionevent/retentionevent-remove.ts b/src/m365/purview/commands/retentionevent/retentionevent-remove.ts index efa4b74b296..6b7b3dbb5b0 100644 --- a/src/m365/purview/commands/retentionevent/retentionevent-remove.ts +++ b/src/m365/purview/commands/retentionevent/retentionevent-remove.ts @@ -1,20 +1,26 @@ -import GlobalOptions from '../../../../GlobalOptions.js'; +import { z } from 'zod'; import { cli } from '../../../../cli/cli.js'; import { Logger } from '../../../../cli/Logger.js'; +import { globalOptionsZod } from '../../../../Command.js'; import request, { CliRequestOptions } from '../../../../request.js'; import { validation } from '../../../../utils/validation.js'; import GraphCommand from '../../../base/GraphCommand.js'; import commands from '../../commands.js'; +export const options = z.strictObject({ + ...globalOptionsZod.shape, + id: z.string().refine(val => validation.isValidGuid(val), { + message: 'The value must be a valid GUID.' + }).alias('i'), + force: z.boolean().optional().alias('f') +}); + +declare type Options = z.infer; + interface CommandArgs { options: Options; } -interface Options extends GlobalOptions { - id: string; - force?: boolean; -} - class PurviewRetentionEventRemoveCommand extends GraphCommand { public get name(): string { return commands.RETENTIONEVENT_REMOVE; @@ -24,43 +30,8 @@ class PurviewRetentionEventRemoveCommand extends GraphCommand { return 'Delete a retention event'; } - constructor() { - super(); - - this.#initTelemetry(); - this.#initOptions(); - this.#initValidators(); - } - - #initTelemetry(): void { - this.telemetry.push((args: CommandArgs) => { - Object.assign(this.telemetryProperties, { - force: !!args.options.force - }); - }); - } - - #initOptions(): void { - this.options.unshift( - { - option: '-i, --id ' - }, - { - option: '-f, --force' - } - ); - } - - #initValidators(): void { - this.validators.push( - async (args: CommandArgs) => { - if (!validation.isValidGuid(args.options.id)) { - return `'${args.options.id}' is not a valid GUID.`; - } - - return true; - } - ); + public get schema(): z.ZodType | undefined { + return options; } public async commandAction(logger: Logger, args: CommandArgs): Promise { @@ -76,7 +47,7 @@ class PurviewRetentionEventRemoveCommand extends GraphCommand { } } - private async removeRetentionEvent(options: GlobalOptions): Promise { + private async removeRetentionEvent(options: Options): Promise { try { const requestOptions: CliRequestOptions = { url: `${this.resource}/v1.0/security/triggers/retentionEvents/${options.id}`, diff --git a/src/m365/purview/commands/retentioneventtype/retentioneventtype-add.spec.ts b/src/m365/purview/commands/retentioneventtype/retentioneventtype-add.spec.ts index b0a06e01e97..ff71bfc09e3 100644 --- a/src/m365/purview/commands/retentioneventtype/retentioneventtype-add.spec.ts +++ b/src/m365/purview/commands/retentioneventtype/retentioneventtype-add.spec.ts @@ -2,6 +2,8 @@ import assert from 'assert'; import sinon from 'sinon'; import auth from '../../../../Auth.js'; import { CommandError } from '../../../../Command.js'; +import { cli } from '../../../../cli/cli.js'; +import { CommandInfo } from '../../../../cli/CommandInfo.js'; import { Logger } from '../../../../cli/Logger.js'; import request from '../../../../request.js'; import { telemetry } from '../../../../telemetry.js'; @@ -9,7 +11,7 @@ import { pid } from '../../../../utils/pid.js'; import { session } from '../../../../utils/session.js'; import { sinonUtil } from '../../../../utils/sinonUtil.js'; import commands from '../../commands.js'; -import command from './retentioneventtype-add.js'; +import command, { options } from './retentioneventtype-add.js'; describe(commands.RETENTIONEVENTTYPE_ADD, () => { const displayName = 'Contract Expiry'; @@ -40,6 +42,8 @@ describe(commands.RETENTIONEVENTTYPE_ADD, () => { let log: string[]; let logger: Logger; let loggerLogSpy: sinon.SinonSpy; + let commandInfo: CommandInfo; + let commandOptionsSchema: typeof options; before(() => { sinon.stub(auth, 'restoreAuth').resolves(); @@ -51,6 +55,8 @@ describe(commands.RETENTIONEVENTTYPE_ADD, () => { accessToken: 'abc', expiresOn: new Date() }; + commandInfo = cli.getCommandInfo(command); + commandOptionsSchema = commandInfo.command.getSchemaToParse() as typeof options; }); beforeEach(() => { @@ -99,16 +105,21 @@ describe(commands.RETENTIONEVENTTYPE_ADD, () => { return 'Invalid Request'; }); - await command.action(logger, { options: { displayName: displayName } }); + await command.action(logger, { options: commandOptionsSchema.parse({ displayName: displayName }) }); assert(loggerLogSpy.calledWith(requestResponse)); }); + it('fails validation with unknown options', () => { + const actual = commandOptionsSchema.safeParse({ displayName: displayName, unknownOption: 'value' }); + assert.strictEqual(actual.success, false); + }); + it('handles random API error', async () => { sinon.stub(request, 'post').callsFake(async () => { throw 'An error has occurred.'; }); - await assert.rejects(command.action(logger, { options: { displayName: displayName } }), + await assert.rejects(command.action(logger, { options: commandOptionsSchema.parse({ displayName: displayName }) }), new CommandError('An error has occurred.')); }); }); \ No newline at end of file diff --git a/src/m365/purview/commands/retentioneventtype/retentioneventtype-add.ts b/src/m365/purview/commands/retentioneventtype/retentioneventtype-add.ts index 90c5e5bf658..a4edac3dfeb 100644 --- a/src/m365/purview/commands/retentioneventtype/retentioneventtype-add.ts +++ b/src/m365/purview/commands/retentioneventtype/retentioneventtype-add.ts @@ -1,18 +1,22 @@ +import { z } from 'zod'; import { Logger } from '../../../../cli/Logger.js'; -import GlobalOptions from '../../../../GlobalOptions.js'; +import { globalOptionsZod } from '../../../../Command.js'; import request, { CliRequestOptions } from '../../../../request.js'; import GraphCommand from '../../../base/GraphCommand.js'; import commands from '../../commands.js'; +export const options = z.strictObject({ + ...globalOptionsZod.shape, + displayName: z.string().alias('n'), + description: z.string().optional().alias('d') +}); + +declare type Options = z.infer; + interface CommandArgs { options: Options; } -interface Options extends GlobalOptions { - displayName: string; - description?: string; -} - class PurviewRetentionEventTypeAddCommand extends GraphCommand { public get name(): string { return commands.RETENTIONEVENTTYPE_ADD; @@ -22,30 +26,8 @@ class PurviewRetentionEventTypeAddCommand extends GraphCommand { return 'Create a retention event type'; } - constructor() { - super(); - - this.#initTelemetry(); - this.#initOptions(); - } - - #initTelemetry(): void { - this.telemetry.push((args: CommandArgs) => { - Object.assign(this.telemetryProperties, { - description: typeof args.options.description !== 'undefined' - }); - }); - } - - #initOptions(): void { - this.options.unshift( - { - option: '-n, --displayName ' - }, - { - option: '-d, --description [description]' - } - ); + public get schema(): z.ZodType | undefined { + return options; } public async commandAction(logger: Logger, args: CommandArgs): Promise { diff --git a/src/m365/purview/commands/retentioneventtype/retentioneventtype-get.spec.ts b/src/m365/purview/commands/retentioneventtype/retentioneventtype-get.spec.ts index 6787ec0aca9..4438c6da6ee 100644 --- a/src/m365/purview/commands/retentioneventtype/retentioneventtype-get.spec.ts +++ b/src/m365/purview/commands/retentioneventtype/retentioneventtype-get.spec.ts @@ -11,7 +11,7 @@ import { pid } from '../../../../utils/pid.js'; import { session } from '../../../../utils/session.js'; import { sinonUtil } from '../../../../utils/sinonUtil.js'; import commands from '../../commands.js'; -import command from './retentioneventtype-get.js'; +import command, { options } from './retentioneventtype-get.js'; describe(commands.RETENTIONEVENTTYPE_GET, () => { const retentionEventTypeId = 'c37d695e-d581-4ae9-82a0-9364eba4291e'; @@ -39,6 +39,7 @@ describe(commands.RETENTIONEVENTTYPE_GET, () => { let logger: Logger; let loggerLogSpy: sinon.SinonSpy; let commandInfo: CommandInfo; + let commandOptionsSchema: typeof options; before(() => { sinon.stub(auth, 'restoreAuth').resolves(); @@ -51,6 +52,7 @@ describe(commands.RETENTIONEVENTTYPE_GET, () => { expiresOn: new Date() }; commandInfo = cli.getCommandInfo(command); + commandOptionsSchema = commandInfo.command.getSchemaToParse() as typeof options; }); beforeEach(() => { @@ -90,14 +92,19 @@ describe(commands.RETENTIONEVENTTYPE_GET, () => { assert.notStrictEqual(command.description, null); }); - it('fails validation if id is not a valid GUID', async () => { - const actual = await command.validate({ options: { id: 'invalid' } }, commandInfo); - assert.notStrictEqual(actual, true); + it('fails validation if id is not a valid GUID', () => { + const actual = commandOptionsSchema.safeParse({ id: 'invalid' }); + assert.strictEqual(actual.success, false); }); - it('passes validation if a correct id is entered', async () => { - const actual = await command.validate({ options: { id: retentionEventTypeId } }, commandInfo); - assert.strictEqual(actual, true); + it('passes validation if a correct id is entered', () => { + const actual = commandOptionsSchema.safeParse({ id: retentionEventTypeId }); + assert.strictEqual(actual.success, true); + }); + + it('fails validation with unknown options', () => { + const actual = commandOptionsSchema.safeParse({ id: retentionEventTypeId, unknownOption: 'value' }); + assert.strictEqual(actual.success, false); }); it('retrieves retention event type by specified id', async () => { @@ -109,7 +116,7 @@ describe(commands.RETENTIONEVENTTYPE_GET, () => { throw 'Invalid request'; }); - await command.action(logger, { options: { id: retentionEventTypeId, verbose: true } }); + await command.action(logger, { options: commandOptionsSchema.parse({ id: retentionEventTypeId, verbose: true }) }); assert(loggerLogSpy.calledWith(retentionEventTypeGetResponse)); }); @@ -124,9 +131,9 @@ describe(commands.RETENTIONEVENTTYPE_GET, () => { }); await assert.rejects(command.action(logger, { - options: { + options: commandOptionsSchema.parse({ id: retentionEventTypeId - } + }) }), new CommandError(errorMessage)); }); }); \ No newline at end of file diff --git a/src/m365/purview/commands/retentioneventtype/retentioneventtype-get.ts b/src/m365/purview/commands/retentioneventtype/retentioneventtype-get.ts index 35a226422c5..f5a0f65d9a9 100644 --- a/src/m365/purview/commands/retentioneventtype/retentioneventtype-get.ts +++ b/src/m365/purview/commands/retentioneventtype/retentioneventtype-get.ts @@ -1,18 +1,24 @@ +import { z } from 'zod'; import { Logger } from '../../../../cli/Logger.js'; -import GlobalOptions from '../../../../GlobalOptions.js'; +import { globalOptionsZod } from '../../../../Command.js'; import request, { CliRequestOptions } from '../../../../request.js'; import { validation } from '../../../../utils/validation.js'; import GraphCommand from '../../../base/GraphCommand.js'; import commands from '../../commands.js'; +export const options = z.strictObject({ + ...globalOptionsZod.shape, + id: z.string().refine(val => validation.isValidGuid(val), { + message: 'The value must be a valid GUID.' + }).alias('i') +}); + +declare type Options = z.infer; + interface CommandArgs { options: Options; } -interface Options extends GlobalOptions { - id: string; -} - class PurviewRetentionEventTypeGetCommand extends GraphCommand { public get name(): string { return commands.RETENTIONEVENTTYPE_GET; @@ -22,31 +28,8 @@ class PurviewRetentionEventTypeGetCommand extends GraphCommand { return 'Retrieve the specified retention event type'; } - constructor() { - super(); - - this.#initOptions(); - this.#initValidators(); - } - - #initOptions(): void { - this.options.unshift( - { - option: '-i, --id ' - } - ); - } - - #initValidators(): void { - this.validators.push( - async (args: CommandArgs) => { - if (!validation.isValidGuid(args.options.id)) { - return `'${args.options.id}' is not a valid GUID.`; - } - - return true; - } - ); + public get schema(): z.ZodType | undefined { + return options; } public async commandAction(logger: Logger, args: CommandArgs): Promise { diff --git a/src/m365/purview/commands/retentioneventtype/retentioneventtype-remove.spec.ts b/src/m365/purview/commands/retentioneventtype/retentioneventtype-remove.spec.ts index cf58cf05546..7fd17598426 100644 --- a/src/m365/purview/commands/retentioneventtype/retentioneventtype-remove.spec.ts +++ b/src/m365/purview/commands/retentioneventtype/retentioneventtype-remove.spec.ts @@ -11,7 +11,7 @@ import { pid } from '../../../../utils/pid.js'; import { session } from '../../../../utils/session.js'; import { sinonUtil } from '../../../../utils/sinonUtil.js'; import commands from '../../commands.js'; -import command from './retentioneventtype-remove.js'; +import command, { options } from './retentioneventtype-remove.js'; describe(commands.RETENTIONEVENTTYPE_REMOVE, () => { const validId = 'e554d69c-0992-4f9b-8a66-fca3c4d9c531'; @@ -20,6 +20,7 @@ describe(commands.RETENTIONEVENTTYPE_REMOVE, () => { let logger: Logger; let promptIssued: boolean = false; let commandInfo: CommandInfo; + let commandOptionsSchema: typeof options; before(() => { sinon.stub(auth, 'restoreAuth').resolves(); @@ -32,6 +33,7 @@ describe(commands.RETENTIONEVENTTYPE_REMOVE, () => { expiresOn: new Date() }; commandInfo = cli.getCommandInfo(command); + commandOptionsSchema = commandInfo.command.getSchemaToParse() as typeof options; }); beforeEach(() => { @@ -76,18 +78,23 @@ describe(commands.RETENTIONEVENTTYPE_REMOVE, () => { assert.notStrictEqual(command.description, null); }); - it('fails validation if id is not a valid GUID', async () => { - const actual = await command.validate({ options: { id: 'invalid' } }, commandInfo); - assert.notStrictEqual(actual, true); + it('fails validation if id is not a valid GUID', () => { + const actual = commandOptionsSchema.safeParse({ id: 'invalid' }); + assert.strictEqual(actual.success, false); }); - it('validates for a correct input with id', async () => { - const actual = await command.validate({ options: { id: validId } }, commandInfo); - assert.strictEqual(actual, true); + it('validates for a correct input with id', () => { + const actual = commandOptionsSchema.safeParse({ id: validId }); + assert.strictEqual(actual.success, true); + }); + + it('fails validation with unknown options', () => { + const actual = commandOptionsSchema.safeParse({ id: validId, unknownOption: 'value' }); + assert.strictEqual(actual.success, false); }); it('prompts before removing the specified retention event type when force option not passed', async () => { - await command.action(logger, { options: { id: validId } }); + await command.action(logger, { options: commandOptionsSchema.parse({ id: validId }) }); assert(promptIssued); @@ -95,7 +102,7 @@ describe(commands.RETENTIONEVENTTYPE_REMOVE, () => { it('aborts removing the specified retention event type when force option not passed and prompt not confirmed', async () => { const deleteSpy = sinon.spy(request, 'delete'); - await command.action(logger, { options: { id: validId } }); + await command.action(logger, { options: commandOptionsSchema.parse({ id: validId }) }); assert(deleteSpy.notCalled); }); @@ -111,7 +118,7 @@ describe(commands.RETENTIONEVENTTYPE_REMOVE, () => { sinonUtil.restore(cli.promptForConfirmation); sinon.stub(cli, 'promptForConfirmation').resolves(true); - await command.action(logger, { options: { id: validId } }); + await command.action(logger, { options: commandOptionsSchema.parse({ id: validId }) }); }); it('correctly deletes retention event type by id when prompt confirmed', async () => { @@ -123,7 +130,7 @@ describe(commands.RETENTIONEVENTTYPE_REMOVE, () => { throw 'Invalid Request'; }); - await command.action(logger, { options: { id: validId, force: true } }); + await command.action(logger, { options: commandOptionsSchema.parse({ id: validId, force: true }) }); }); it('handles error when retention event type does not exist', async () => { @@ -142,10 +149,10 @@ describe(commands.RETENTIONEVENTTYPE_REMOVE, () => { }); await assert.rejects(command.action(logger, { - options: { + options: commandOptionsSchema.parse({ id: validId, force: true - } + }) }), new CommandError(`There is no rule matching identity 'ca0e1f8d-4e42-4a81-be85-022502d70c4f'.`)); }); }); diff --git a/src/m365/purview/commands/retentioneventtype/retentioneventtype-remove.ts b/src/m365/purview/commands/retentioneventtype/retentioneventtype-remove.ts index 0ce08ced983..aca6f190b79 100644 --- a/src/m365/purview/commands/retentioneventtype/retentioneventtype-remove.ts +++ b/src/m365/purview/commands/retentioneventtype/retentioneventtype-remove.ts @@ -1,20 +1,26 @@ +import { z } from 'zod'; import { cli } from '../../../../cli/cli.js'; import { Logger } from '../../../../cli/Logger.js'; -import GlobalOptions from '../../../../GlobalOptions.js'; +import { globalOptionsZod } from '../../../../Command.js'; import request, { CliRequestOptions } from '../../../../request.js'; import { validation } from '../../../../utils/validation.js'; import GraphCommand from '../../../base/GraphCommand.js'; import commands from '../../commands.js'; +export const options = z.strictObject({ + ...globalOptionsZod.shape, + id: z.string().refine(val => validation.isValidGuid(val), { + message: 'The value must be a valid GUID.' + }).alias('i'), + force: z.boolean().optional().alias('f') +}); + +declare type Options = z.infer; + interface CommandArgs { options: Options; } -interface Options extends GlobalOptions { - id: string; - force?: boolean; -} - class PurviewRetentionEventTypeRemoveCommand extends GraphCommand { public get name(): string { return commands.RETENTIONEVENTTYPE_REMOVE; @@ -24,43 +30,8 @@ class PurviewRetentionEventTypeRemoveCommand extends GraphCommand { return 'Delete a retention event type'; } - constructor() { - super(); - - this.#initTelemetry(); - this.#initOptions(); - this.#initValidators(); - } - - #initTelemetry(): void { - this.telemetry.push((args: CommandArgs) => { - Object.assign(this.telemetryProperties, { - force: !!args.options.force - }); - }); - } - - #initOptions(): void { - this.options.unshift( - { - option: '-i, --id ' - }, - { - option: '-f, --force' - } - ); - } - - #initValidators(): void { - this.validators.push( - async (args: CommandArgs) => { - if (!validation.isValidGuid(args.options.id)) { - return `'${args.options.id}' is not a valid GUID.`; - } - - return true; - } - ); + public get schema(): z.ZodType | undefined { + return options; } public async commandAction(logger: Logger, args: CommandArgs): Promise { diff --git a/src/m365/purview/commands/retentioneventtype/retentioneventtype-set.spec.ts b/src/m365/purview/commands/retentioneventtype/retentioneventtype-set.spec.ts index d69989b428c..b625ae0d29c 100644 --- a/src/m365/purview/commands/retentioneventtype/retentioneventtype-set.spec.ts +++ b/src/m365/purview/commands/retentioneventtype/retentioneventtype-set.spec.ts @@ -11,7 +11,7 @@ import { pid } from '../../../../utils/pid.js'; import { session } from '../../../../utils/session.js'; import { sinonUtil } from '../../../../utils/sinonUtil.js'; import commands from '../../commands.js'; -import command from './retentioneventtype-set.js'; +import command, { options } from './retentioneventtype-set.js'; describe(commands.RETENTIONEVENTTYPE_SET, () => { const validId = 'e554d69c-0992-4f9b-8a66-fca3c4d9c531'; @@ -20,6 +20,7 @@ describe(commands.RETENTIONEVENTTYPE_SET, () => { let log: string[]; let logger: Logger; let commandInfo: CommandInfo; + let commandOptionsSchema: typeof options; before(() => { sinon.stub(auth, 'restoreAuth').resolves(); @@ -32,6 +33,7 @@ describe(commands.RETENTIONEVENTTYPE_SET, () => { expiresOn: new Date() }; commandInfo = cli.getCommandInfo(command); + commandOptionsSchema = commandInfo.command.getSchemaToParse() as typeof options; }); beforeEach(() => { @@ -69,19 +71,24 @@ describe(commands.RETENTIONEVENTTYPE_SET, () => { assert.notStrictEqual(command.description, null); }); - it('fails validation if id is not a valid GUID', async () => { - const actual = await command.validate({ options: { id: 'invalid' } }, commandInfo); - assert.notStrictEqual(actual, true); + it('fails validation if id is not a valid GUID', () => { + const actual = commandOptionsSchema.safeParse({ id: 'invalid', description: description }); + assert.strictEqual(actual.success, false); }); - it('fails validation with valid id but no other option specified', async () => { - const actual = await command.validate({ options: { id: validId } }, commandInfo); - assert.notStrictEqual(actual, true); + it('fails validation with valid id but no other option specified', () => { + const actual = commandOptionsSchema.safeParse({ id: validId }); + assert.strictEqual(actual.success, false); }); - it('passes validation with valid id and a single option specified', async () => { - const actual = await command.validate({ options: { id: validId, description: description } }, commandInfo); - assert.strictEqual(actual, true); + it('passes validation with valid id and a single option specified', () => { + const actual = commandOptionsSchema.safeParse({ id: validId, description: description }); + assert.strictEqual(actual.success, true); + }); + + it('fails validation with unknown options', () => { + const actual = commandOptionsSchema.safeParse({ id: validId, description: description, unknownOption: 'value' }); + assert.strictEqual(actual.success, false); }); it('correctly sets description of a specific retention event type by id', async () => { @@ -97,7 +104,7 @@ describe(commands.RETENTIONEVENTTYPE_SET, () => { throw 'Invalid Request'; }); - await command.action(logger, { options: { id: validId, description: description, verbose: true } }); + await command.action(logger, { options: commandOptionsSchema.parse({ id: validId, description: description, verbose: true }) }); assert.deepStrictEqual(patchStub.lastCall.args[0].data, requestBody); }); @@ -117,9 +124,10 @@ describe(commands.RETENTIONEVENTTYPE_SET, () => { }); await assert.rejects(command.action(logger, { - options: { - id: validId - } + options: commandOptionsSchema.parse({ + id: validId, + description: description + }) }), new CommandError(`There is no rule matching identity 'ca0e1f8d-4e42-4a81-be85-022502d70c4f'.`)); }); }); \ No newline at end of file diff --git a/src/m365/purview/commands/retentioneventtype/retentioneventtype-set.ts b/src/m365/purview/commands/retentioneventtype/retentioneventtype-set.ts index 9fa293adaa9..e4856c1678f 100644 --- a/src/m365/purview/commands/retentioneventtype/retentioneventtype-set.ts +++ b/src/m365/purview/commands/retentioneventtype/retentioneventtype-set.ts @@ -1,19 +1,25 @@ +import { z } from 'zod'; import { Logger } from '../../../../cli/Logger.js'; -import GlobalOptions from '../../../../GlobalOptions.js'; +import { globalOptionsZod } from '../../../../Command.js'; import request, { CliRequestOptions } from '../../../../request.js'; import { validation } from '../../../../utils/validation.js'; import GraphCommand from '../../../base/GraphCommand.js'; import commands from '../../commands.js'; +export const options = z.strictObject({ + ...globalOptionsZod.shape, + id: z.string().refine(val => validation.isValidGuid(val), { + message: 'The value must be a valid GUID.' + }).alias('i'), + description: z.string().optional().alias('d') +}); + +declare type Options = z.infer; + interface CommandArgs { options: Options; } -interface Options extends GlobalOptions { - id: string; - description?: string; -} - class PurviewRetentionEventTypeSetCommand extends GraphCommand { public get name(): string { return commands.RETENTIONEVENTTYPE_SET; @@ -23,47 +29,18 @@ class PurviewRetentionEventTypeSetCommand extends GraphCommand { return 'Update a retention event type'; } - constructor() { - super(); - - this.#initTelemetry(); - this.#initOptions(); - this.#initValidators(); - } - - #initTelemetry(): void { - this.telemetry.push((args: CommandArgs) => { - Object.assign(this.telemetryProperties, { - description: typeof args.options.description !== 'undefined' - }); - }); - } - - #initOptions(): void { - this.options.unshift( - { - option: '-i, --id ' - }, - { - option: '-d, --description [description]' - } - ); + public get schema(): z.ZodType | undefined { + return options; } - #initValidators(): void { - this.validators.push( - async (args: CommandArgs) => { - if (!validation.isValidGuid(args.options.id)) { - return `'${args.options.id}' is not a valid GUID.`; + public getRefinedSchema(schema: typeof options): z.ZodObject | undefined { + return schema + .refine(opts => opts.description, { + message: 'Specify at least one option to update.', + params: { + customCode: 'required' } - - if (!args.options.description) { - return 'Specify at least one option to update.'; - } - - return true; - } - ); + }) as any; } public async commandAction(logger: Logger, args: CommandArgs): Promise { From ec56f0ffc530ea1aacc1432f129ec7df20b6bbc6 Mon Sep 17 00:00:00 2001 From: Waldek Mastykarz Date: Fri, 26 Jun 2026 11:57:29 +0200 Subject: [PATCH 2/4] fix: address Copilot review feedback - Added path to refine params for customCode required - Changed message: to error: in refine calls - Removed .impeccable/hook.cache.json and added to .gitignore - Reverted unintentional npm-shrinkwrap.json changes Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .gitignore | 2 +- npm-shrinkwrap.json | 7 +++++++ .../purview/commands/retentionevent/retentionevent-add.ts | 5 +++-- .../commands/retentioneventtype/retentioneventtype-set.ts | 3 ++- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 4146a43b816..fd6f8370b91 100644 --- a/.gitignore +++ b/.gitignore @@ -87,4 +87,4 @@ docs/.env.production.local docs/npm-debug.log* docs/yarn-debug.log* -docs/yarn-error.log* \ No newline at end of file +docs/yarn-error.log*.impeccable/ diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 7861a1c634c..34362ac0824 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -915,6 +915,7 @@ "node_modules/@opentelemetry/api": { "version": "1.9.1", "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=8.0.0" } @@ -1765,6 +1766,7 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.4.tgz", "integrity": "sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==", "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -1878,6 +1880,7 @@ "integrity": "sha512-A0M6ua6H252bVjPvvtSgl2QA4+ET9S5Mtkb2GDyTxIhH/C4qDItT7RQNO5PhMC6NXGYXOR9dIalcDDgBKT7oFA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.60.1", "@typescript-eslint/types": "8.60.1", @@ -2471,6 +2474,7 @@ "node_modules/acorn": { "version": "8.16.0", "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3255,6 +3259,7 @@ "node_modules/diagnostic-channel": { "version": "1.1.1", "license": "MIT", + "peer": true, "dependencies": { "semver": "^7.5.3" } @@ -3415,6 +3420,7 @@ "integrity": "sha512-loXy6bWOoP3EP6JA7jo6p5jMpBJmHmsNZM5SFRHLdh1MGOPurMnNBj4ZlAbaqUAaQWbCr7jHV4P7gzAyryZWkQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.2", @@ -6039,6 +6045,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/src/m365/purview/commands/retentionevent/retentionevent-add.ts b/src/m365/purview/commands/retentionevent/retentionevent-add.ts index 5bf387a97ac..4f06b7e4e09 100644 --- a/src/m365/purview/commands/retentionevent/retentionevent-add.ts +++ b/src/m365/purview/commands/retentionevent/retentionevent-add.ts @@ -43,14 +43,15 @@ class PurviewRetentionEventAddCommand extends GraphCommand { public getRefinedSchema(schema: typeof options): z.ZodObject | undefined { return schema .refine(opts => [opts.eventTypeId, opts.eventTypeName].filter(x => x !== undefined).length === 1, { - message: `Specify either 'eventTypeId' or 'eventTypeName', but not both.`, + error: `Specify either 'eventTypeId' or 'eventTypeName', but not both.`, params: { customCode: 'optionSet', options: ['eventTypeId', 'eventTypeName'] } }) .refine(opts => opts.assetIds || opts.keywords, { - message: 'Specify assetIds and/or keywords, but at least one.', + error: 'Specify assetIds and/or keywords, but at least one.', + path: ['assetIds'], params: { customCode: 'required' } diff --git a/src/m365/purview/commands/retentioneventtype/retentioneventtype-set.ts b/src/m365/purview/commands/retentioneventtype/retentioneventtype-set.ts index e4856c1678f..dba89137405 100644 --- a/src/m365/purview/commands/retentioneventtype/retentioneventtype-set.ts +++ b/src/m365/purview/commands/retentioneventtype/retentioneventtype-set.ts @@ -36,7 +36,8 @@ class PurviewRetentionEventTypeSetCommand extends GraphCommand { public getRefinedSchema(schema: typeof options): z.ZodObject | undefined { return schema .refine(opts => opts.description, { - message: 'Specify at least one option to update.', + error: 'Specify at least one option to update.', + path: ['description'], params: { customCode: 'required' } From 0925a81c72dd3d5443e2488bc03724d9aebed73d Mon Sep 17 00:00:00 2001 From: Waldek Mastykarz Date: Thu, 2 Jul 2026 11:02:17 +0200 Subject: [PATCH 3/4] fix: remove .impeccable cache, fix .gitignore, reset npm-shrinkwrap.json - Put .impeccable/ on its own line in .gitignore - Remove tracked .impeccable/hook.cache.json - Reset npm-shrinkwrap.json to upstream main Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .gitignore | 3 +- .impeccable/hook.cache.json | 1 - npm-shrinkwrap.json | 778 ++++++++++++++++++++++++++++++++---- 3 files changed, 697 insertions(+), 85 deletions(-) delete mode 100644 .impeccable/hook.cache.json diff --git a/.gitignore b/.gitignore index fd6f8370b91..add596b6b82 100644 --- a/.gitignore +++ b/.gitignore @@ -87,4 +87,5 @@ docs/.env.production.local docs/npm-debug.log* docs/yarn-debug.log* -docs/yarn-error.log*.impeccable/ +docs/yarn-error.log* +.impeccable/ diff --git a/.impeccable/hook.cache.json b/.impeccable/hook.cache.json deleted file mode 100644 index e318d3611e6..00000000000 --- a/.impeccable/hook.cache.json +++ /dev/null @@ -1 +0,0 @@ -{"version":1,"sessions":{"2ba05265-4718-4ce8-9800-abe38414132c":{"updatedAt":1782371098181,"files":{"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentionevent/retentionevent-add.ts":{"editCount":1,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentionevent/retentionevent-get.ts":{"editCount":1,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentionevent/retentionevent-remove.ts":{"editCount":2,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentioneventtype/retentioneventtype-add.ts":{"editCount":1,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentioneventtype/retentioneventtype-get.ts":{"editCount":1,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentioneventtype/retentioneventtype-remove.ts":{"editCount":1,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentioneventtype/retentioneventtype-set.ts":{"editCount":1,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentionevent/retentionevent-add.spec.ts":{"editCount":4,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentionevent/retentionevent-get.spec.ts":{"editCount":3,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentionevent/retentionevent-remove.spec.ts":{"editCount":3,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentioneventtype/retentioneventtype-add.spec.ts":{"editCount":3,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentioneventtype/retentioneventtype-get.spec.ts":{"editCount":3,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentioneventtype/retentioneventtype-remove.spec.ts":{"editCount":3,"findings":[]},"/Users/waldek/.copilot/copilot-worktrees/cli-microsoft365/waldekmastykarz-effective-goggles/src/m365/purview/commands/retentioneventtype/retentioneventtype-set.spec.ts":{"editCount":3,"findings":[]}}}}} \ No newline at end of file diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 34362ac0824..c07226e1703 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,19 +1,19 @@ { "name": "@pnp/cli-microsoft365", - "version": "11.9.0", + "version": "11.10.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@pnp/cli-microsoft365", - "version": "11.9.0", + "version": "11.10.0", "license": "MIT", "dependencies": { "@azure/msal-common": "^16.6.2", "@azure/msal-node": "^5.2.2", - "@inquirer/confirm": "^6.1.0", - "@inquirer/input": "^5.1.0", - "@inquirer/select": "^5.2.0", + "@inquirer/confirm": "^6.1.1", + "@inquirer/input": "^5.1.1", + "@inquirer/select": "^5.2.1", "@xmldom/xmldom": "^0.9.10", "adaptive-expressions": "^4.23.3", "adaptivecards": "^3.0.6", @@ -68,7 +68,7 @@ "@typescript-eslint/eslint-plugin": "^8.60.0", "@typescript-eslint/parser": "^8.58.0", "c8": "^11.0.0", - "eslint": "^10.4.0", + "eslint": "^10.4.1", "eslint-plugin-mocha": "^11.3.0", "globals": "^17.6.0", "mocha": "^11.7.6", @@ -593,7 +593,9 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.7.1", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz", + "integrity": "sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -606,6 +608,8 @@ }, "node_modules/@grpc/grpc-js": { "version": "1.14.4", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.4.tgz", + "integrity": "sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==", "license": "Apache-2.0", "dependencies": { "@grpc/proto-loader": "^0.8.0", @@ -617,6 +621,8 @@ }, "node_modules/@grpc/proto-loader": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.8.1.tgz", + "integrity": "sha512-wtF6h+DY6M3YaDBPAmvuuA6jV8Sif9MjtOI5euKFWRgCDl5PeDpPsHR9u2l6St5ceY8AZgoNDww5+HvEsXFsGg==", "license": "Apache-2.0", "dependencies": { "lodash.camelcase": "^4.3.0", @@ -633,6 +639,8 @@ }, "node_modules/@grpc/proto-loader/node_modules/long": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", "license": "Apache-2.0" }, "node_modules/@humanfs/core": { @@ -689,16 +697,16 @@ } }, "node_modules/@inquirer/confirm": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.1.0.tgz", - "integrity": "sha512-USpeB76eqK7yGricDlGAupxWlp4a59qpeZOoNWaxO/nJln7agpJveyNkQ1d5u8YXG6TOqxZtQpKPORQQDrdVsA==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.1.1.tgz", + "integrity": "sha512-eb8DBZcz/2qHWQda4rk2JiQk5h9QV/cVHi1yjt0f69WFZMRFn0sJTye3EAP8icut8UDMjQPsaH5KbcOogefrFQ==", "license": "MIT", "dependencies": { - "@inquirer/core": "^11.2.0", - "@inquirer/type": "^4.0.6" + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -745,16 +753,16 @@ } }, "node_modules/@inquirer/input": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.1.0.tgz", - "integrity": "sha512-sVZCz6P6e8tW5g2bSFel1oLpa6jK/u7BexFfrgTqR8syIdnHqy+iopnlSbYBZMsCK52chLjhGNBxt0eRqhsghw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.1.1.tgz", + "integrity": "sha512-3wuHoDBBtU+o0TB4uP2R+ACdNrn6SgdZBc1YUaiU9GcfXNaTNUgSM/Ft7eQ3gYWP2H1MiT6glycmfWYpmPzVKw==", "license": "MIT", "dependencies": { - "@inquirer/core": "^11.2.0", - "@inquirer/type": "^4.0.6" + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -766,18 +774,18 @@ } }, "node_modules/@inquirer/select": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.2.0.tgz", - "integrity": "sha512-6IzkcmEbEXfgVbxZ2d1UyJFbCBoc6dTofulFmrYuomIp88HXiVqRbqbg4/mbfZhvnNo6xYmnYo2AEmDof6fQkg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.2.1.tgz", + "integrity": "sha512-FlDndEUww8m7BfukO2nJa25vhD+H5jxxCv4oGioKqzyWz3nPHhhw4LKdYRSlXuAx7DsdWia7iyaBPKKS95Evfw==", "license": "MIT", "dependencies": { - "@inquirer/ansi": "^2.0.6", - "@inquirer/core": "^11.2.0", - "@inquirer/figures": "^2.0.6", - "@inquirer/type": "^4.0.6" + "@inquirer/ansi": "^2.0.7", + "@inquirer/core": "^11.2.1", + "@inquirer/figures": "^2.0.7", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -880,6 +888,8 @@ }, "node_modules/@js-sdsl/ordered-map": { "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", + "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", "license": "MIT", "funding": { "type": "opencollective", @@ -931,7 +941,9 @@ } }, "node_modules/@opentelemetry/configuration": { - "version": "0.217.0", + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/configuration/-/configuration-0.218.0.tgz", + "integrity": "sha512-W8wIz7H2R1pufR5jfjb3gU2XkMpm2x/7b1RJcsuzvd70Il/rWWE+g5/Od7hQKrxRTSrTrOWlru101PWXz5I1EQ==", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "2.7.1", @@ -968,15 +980,65 @@ } }, "node_modules/@opentelemetry/exporter-logs-otlp-grpc": { - "version": "0.217.0", + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-grpc/-/exporter-logs-otlp-grpc-0.218.0.tgz", + "integrity": "sha512-hoxrNH1l/Xy6F9WTJ5IK+6j1r9nQFlPOmrnTlhYHTySdunfXLmUCPv3bQtKYntxag9h3wLYBZQ2HI6FOx+BT2g==", "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "^1.14.3", "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-exporter-base": "0.217.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.217.0", - "@opentelemetry/otlp-transformer": "0.217.0", - "@opentelemetry/sdk-logs": "0.217.0" + "@opentelemetry/otlp-exporter-base": "0.218.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.218.0", + "@opentelemetry/otlp-transformer": "0.218.0", + "@opentelemetry/sdk-logs": "0.218.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-grpc/node_modules/@opentelemetry/api-logs": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.218.0.tgz", + "integrity": "sha512-fmEWp5kXlGEc3i/lR698Hz41DfGyN4Tbe4g7L1AxSc7fF8Xeh/FQ9Quqpa9dVA413Q1Ad43QOLzU4JoXgbFPWw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-grpc/node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.218.0.tgz", + "integrity": "sha512-ZwqpkNL5W7RyGJPDZ9g06DvKp8KFTWPJPN12anpMQYSKpTSU0z3EIZuPq9vPGpS8siFyOqDYDAuCwlNO9FqgbA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.7.1", + "@opentelemetry/otlp-transformer": "0.218.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-grpc/node_modules/@opentelemetry/otlp-transformer": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.218.0.tgz", + "integrity": "sha512-CFaKH87WAzjuJ4awowTTLzUvMfaRfiOFG5+qm5S5ncyalRtN4ecQ+YmuANJSCrVPuvZFEkUgKhBPBndxi3rHsQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.218.0", + "@opentelemetry/core": "2.7.1", + "@opentelemetry/resources": "2.7.1", + "@opentelemetry/sdk-logs": "0.218.0", + "@opentelemetry/sdk-metrics": "2.7.1", + "@opentelemetry/sdk-trace-base": "2.7.1" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -985,6 +1047,24 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/exporter-logs-otlp-grpc/node_modules/@opentelemetry/sdk-logs": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.218.0.tgz", + "integrity": "sha512-QvnNdugatFTVCJXH0Mcu7GOOJSylA9j127kIezOE4YwTI4YbowRons2K4WZTv5FMS8T4q9P0NdaRHdkSmeAIag==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.218.0", + "@opentelemetry/core": "2.7.1", + "@opentelemetry/resources": "2.7.1", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" + } + }, "node_modules/@opentelemetry/exporter-logs-otlp-http": { "version": "0.217.0", "license": "Apache-2.0", @@ -1003,15 +1083,17 @@ } }, "node_modules/@opentelemetry/exporter-logs-otlp-proto": { - "version": "0.217.0", + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-proto/-/exporter-logs-otlp-proto-0.218.0.tgz", + "integrity": "sha512-1/noQNsp9gXD75HPzgjBrcF1+XTtry7pFAUfxVEJgg7mPv2AawKQuYkhMmJ8qjxz4Ubc3Y8bwvfxevXsKTq4cg==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.217.0", + "@opentelemetry/api-logs": "0.218.0", "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-exporter-base": "0.217.0", - "@opentelemetry/otlp-transformer": "0.217.0", + "@opentelemetry/otlp-exporter-base": "0.218.0", + "@opentelemetry/otlp-transformer": "0.218.0", "@opentelemetry/resources": "2.7.1", - "@opentelemetry/sdk-logs": "0.217.0", + "@opentelemetry/sdk-logs": "0.218.0", "@opentelemetry/sdk-trace-base": "2.7.1" }, "engines": { @@ -1021,16 +1103,115 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/exporter-logs-otlp-proto/node_modules/@opentelemetry/api-logs": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.218.0.tgz", + "integrity": "sha512-fmEWp5kXlGEc3i/lR698Hz41DfGyN4Tbe4g7L1AxSc7fF8Xeh/FQ9Quqpa9dVA413Q1Ad43QOLzU4JoXgbFPWw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-proto/node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.218.0.tgz", + "integrity": "sha512-ZwqpkNL5W7RyGJPDZ9g06DvKp8KFTWPJPN12anpMQYSKpTSU0z3EIZuPq9vPGpS8siFyOqDYDAuCwlNO9FqgbA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.7.1", + "@opentelemetry/otlp-transformer": "0.218.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-proto/node_modules/@opentelemetry/otlp-transformer": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.218.0.tgz", + "integrity": "sha512-CFaKH87WAzjuJ4awowTTLzUvMfaRfiOFG5+qm5S5ncyalRtN4ecQ+YmuANJSCrVPuvZFEkUgKhBPBndxi3rHsQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.218.0", + "@opentelemetry/core": "2.7.1", + "@opentelemetry/resources": "2.7.1", + "@opentelemetry/sdk-logs": "0.218.0", + "@opentelemetry/sdk-metrics": "2.7.1", + "@opentelemetry/sdk-trace-base": "2.7.1" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-proto/node_modules/@opentelemetry/sdk-logs": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.218.0.tgz", + "integrity": "sha512-QvnNdugatFTVCJXH0Mcu7GOOJSylA9j127kIezOE4YwTI4YbowRons2K4WZTv5FMS8T4q9P0NdaRHdkSmeAIag==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.218.0", + "@opentelemetry/core": "2.7.1", + "@opentelemetry/resources": "2.7.1", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" + } + }, "node_modules/@opentelemetry/exporter-metrics-otlp-grpc": { - "version": "0.217.0", + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-grpc/-/exporter-metrics-otlp-grpc-0.218.0.tgz", + "integrity": "sha512-YapQ9vNMX0NSZF6LK5pWAFfjpJleV2O9uYWfYGeb/5F1Kb9rPGK8tZDMJFa/sOksgdFuflDvYuA0B4qjDB4fjQ==", "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "^1.14.3", "@opentelemetry/core": "2.7.1", - "@opentelemetry/exporter-metrics-otlp-http": "0.217.0", - "@opentelemetry/otlp-exporter-base": "0.217.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.217.0", - "@opentelemetry/otlp-transformer": "0.217.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.218.0", + "@opentelemetry/otlp-exporter-base": "0.218.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.218.0", + "@opentelemetry/otlp-transformer": "0.218.0", + "@opentelemetry/resources": "2.7.1", + "@opentelemetry/sdk-metrics": "2.7.1" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-grpc/node_modules/@opentelemetry/api-logs": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.218.0.tgz", + "integrity": "sha512-fmEWp5kXlGEc3i/lR698Hz41DfGyN4Tbe4g7L1AxSc7fF8Xeh/FQ9Quqpa9dVA413Q1Ad43QOLzU4JoXgbFPWw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-grpc/node_modules/@opentelemetry/exporter-metrics-otlp-http": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.218.0.tgz", + "integrity": "sha512-bV7d2OuMpZu2+gAaxUAhzfZ0h3WVZk8ETQUEE3DNSntbTaMpuITjtm8I0rNyHFdm7Ax57K6ty7SgFXlBmOLIvQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.7.1", + "@opentelemetry/otlp-exporter-base": "0.218.0", + "@opentelemetry/otlp-transformer": "0.218.0", "@opentelemetry/resources": "2.7.1", "@opentelemetry/sdk-metrics": "2.7.1" }, @@ -1041,6 +1222,60 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/exporter-metrics-otlp-grpc/node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.218.0.tgz", + "integrity": "sha512-ZwqpkNL5W7RyGJPDZ9g06DvKp8KFTWPJPN12anpMQYSKpTSU0z3EIZuPq9vPGpS8siFyOqDYDAuCwlNO9FqgbA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.7.1", + "@opentelemetry/otlp-transformer": "0.218.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-grpc/node_modules/@opentelemetry/otlp-transformer": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.218.0.tgz", + "integrity": "sha512-CFaKH87WAzjuJ4awowTTLzUvMfaRfiOFG5+qm5S5ncyalRtN4ecQ+YmuANJSCrVPuvZFEkUgKhBPBndxi3rHsQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.218.0", + "@opentelemetry/core": "2.7.1", + "@opentelemetry/resources": "2.7.1", + "@opentelemetry/sdk-logs": "0.218.0", + "@opentelemetry/sdk-metrics": "2.7.1", + "@opentelemetry/sdk-trace-base": "2.7.1" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-grpc/node_modules/@opentelemetry/sdk-logs": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.218.0.tgz", + "integrity": "sha512-QvnNdugatFTVCJXH0Mcu7GOOJSylA9j127kIezOE4YwTI4YbowRons2K4WZTv5FMS8T4q9P0NdaRHdkSmeAIag==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.218.0", + "@opentelemetry/core": "2.7.1", + "@opentelemetry/resources": "2.7.1", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" + } + }, "node_modules/@opentelemetry/exporter-metrics-otlp-http": { "version": "0.217.0", "license": "Apache-2.0", @@ -1077,7 +1312,9 @@ } }, "node_modules/@opentelemetry/exporter-prometheus": { - "version": "0.217.0", + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.218.0.tgz", + "integrity": "sha512-RT5oEyu1kddZJ1vt7/BUo5wV+P7hpNAESsR3dUd3+8deHuX7gWNoCOZn+SfDT+hJHlIJ5h/AxiCLXIrutswDJg==", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "2.7.1", @@ -1093,14 +1330,16 @@ } }, "node_modules/@opentelemetry/exporter-trace-otlp-grpc": { - "version": "0.217.0", + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.218.0.tgz", + "integrity": "sha512-3fXxVQEj9TNAFaCi79JeFKfeLd0sDtInaR3gaZDVlzNSPHtz8PZuCV34JKWjD4XXzT20IdMe8IpX6mRVNDA4Tw==", "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "^1.14.3", "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-exporter-base": "0.217.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.217.0", - "@opentelemetry/otlp-transformer": "0.217.0", + "@opentelemetry/otlp-exporter-base": "0.218.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.218.0", + "@opentelemetry/otlp-transformer": "0.218.0", "@opentelemetry/resources": "2.7.1", "@opentelemetry/sdk-trace-base": "2.7.1" }, @@ -1111,6 +1350,72 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/exporter-trace-otlp-grpc/node_modules/@opentelemetry/api-logs": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.218.0.tgz", + "integrity": "sha512-fmEWp5kXlGEc3i/lR698Hz41DfGyN4Tbe4g7L1AxSc7fF8Xeh/FQ9Quqpa9dVA413Q1Ad43QOLzU4JoXgbFPWw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-grpc/node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.218.0.tgz", + "integrity": "sha512-ZwqpkNL5W7RyGJPDZ9g06DvKp8KFTWPJPN12anpMQYSKpTSU0z3EIZuPq9vPGpS8siFyOqDYDAuCwlNO9FqgbA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.7.1", + "@opentelemetry/otlp-transformer": "0.218.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-grpc/node_modules/@opentelemetry/otlp-transformer": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.218.0.tgz", + "integrity": "sha512-CFaKH87WAzjuJ4awowTTLzUvMfaRfiOFG5+qm5S5ncyalRtN4ecQ+YmuANJSCrVPuvZFEkUgKhBPBndxi3rHsQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.218.0", + "@opentelemetry/core": "2.7.1", + "@opentelemetry/resources": "2.7.1", + "@opentelemetry/sdk-logs": "0.218.0", + "@opentelemetry/sdk-metrics": "2.7.1", + "@opentelemetry/sdk-trace-base": "2.7.1" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-grpc/node_modules/@opentelemetry/sdk-logs": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.218.0.tgz", + "integrity": "sha512-QvnNdugatFTVCJXH0Mcu7GOOJSylA9j127kIezOE4YwTI4YbowRons2K4WZTv5FMS8T4q9P0NdaRHdkSmeAIag==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.218.0", + "@opentelemetry/core": "2.7.1", + "@opentelemetry/resources": "2.7.1", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" + } + }, "node_modules/@opentelemetry/exporter-trace-otlp-http": { "version": "0.217.0", "license": "Apache-2.0", @@ -1129,12 +1434,14 @@ } }, "node_modules/@opentelemetry/exporter-trace-otlp-proto": { - "version": "0.217.0", + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.218.0.tgz", + "integrity": "sha512-r1Msf8SNLRmwh9J6XQ5uh82D7CdDWMNHnPB7LAVHjzut0TkSeKc5KcIvr4SvHvfk/xwN5gxC+VLKQ1k0o8PSPw==", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-exporter-base": "0.217.0", - "@opentelemetry/otlp-transformer": "0.217.0", + "@opentelemetry/otlp-exporter-base": "0.218.0", + "@opentelemetry/otlp-transformer": "0.218.0", "@opentelemetry/resources": "2.7.1", "@opentelemetry/sdk-trace-base": "2.7.1" }, @@ -1145,6 +1452,72 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/exporter-trace-otlp-proto/node_modules/@opentelemetry/api-logs": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.218.0.tgz", + "integrity": "sha512-fmEWp5kXlGEc3i/lR698Hz41DfGyN4Tbe4g7L1AxSc7fF8Xeh/FQ9Quqpa9dVA413Q1Ad43QOLzU4JoXgbFPWw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-proto/node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.218.0.tgz", + "integrity": "sha512-ZwqpkNL5W7RyGJPDZ9g06DvKp8KFTWPJPN12anpMQYSKpTSU0z3EIZuPq9vPGpS8siFyOqDYDAuCwlNO9FqgbA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.7.1", + "@opentelemetry/otlp-transformer": "0.218.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-proto/node_modules/@opentelemetry/otlp-transformer": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.218.0.tgz", + "integrity": "sha512-CFaKH87WAzjuJ4awowTTLzUvMfaRfiOFG5+qm5S5ncyalRtN4ecQ+YmuANJSCrVPuvZFEkUgKhBPBndxi3rHsQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.218.0", + "@opentelemetry/core": "2.7.1", + "@opentelemetry/resources": "2.7.1", + "@opentelemetry/sdk-logs": "0.218.0", + "@opentelemetry/sdk-metrics": "2.7.1", + "@opentelemetry/sdk-trace-base": "2.7.1" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-proto/node_modules/@opentelemetry/sdk-logs": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.218.0.tgz", + "integrity": "sha512-QvnNdugatFTVCJXH0Mcu7GOOJSylA9j127kIezOE4YwTI4YbowRons2K4WZTv5FMS8T4q9P0NdaRHdkSmeAIag==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.218.0", + "@opentelemetry/core": "2.7.1", + "@opentelemetry/resources": "2.7.1", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" + } + }, "node_modules/@opentelemetry/exporter-zipkin": { "version": "2.7.1", "license": "Apache-2.0", @@ -1298,13 +1671,43 @@ } }, "node_modules/@opentelemetry/otlp-grpc-exporter-base": { - "version": "0.217.0", + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.218.0.tgz", + "integrity": "sha512-H/lCGJ536N98VpYJOaWTQOkv4Dx6TnmStK6Rqfu1W7KkFbPAx04hjdYEMZF/YbnHzPUSIK4kM6OE2GKGBTpV9A==", "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "^1.14.3", "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-exporter-base": "0.217.0", - "@opentelemetry/otlp-transformer": "0.217.0" + "@opentelemetry/otlp-exporter-base": "0.218.0", + "@opentelemetry/otlp-transformer": "0.218.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-grpc-exporter-base/node_modules/@opentelemetry/api-logs": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.218.0.tgz", + "integrity": "sha512-fmEWp5kXlGEc3i/lR698Hz41DfGyN4Tbe4g7L1AxSc7fF8Xeh/FQ9Quqpa9dVA413Q1Ad43QOLzU4JoXgbFPWw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/otlp-grpc-exporter-base/node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.218.0.tgz", + "integrity": "sha512-ZwqpkNL5W7RyGJPDZ9g06DvKp8KFTWPJPN12anpMQYSKpTSU0z3EIZuPq9vPGpS8siFyOqDYDAuCwlNO9FqgbA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.7.1", + "@opentelemetry/otlp-transformer": "0.218.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -1313,6 +1716,44 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/otlp-grpc-exporter-base/node_modules/@opentelemetry/otlp-transformer": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.218.0.tgz", + "integrity": "sha512-CFaKH87WAzjuJ4awowTTLzUvMfaRfiOFG5+qm5S5ncyalRtN4ecQ+YmuANJSCrVPuvZFEkUgKhBPBndxi3rHsQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.218.0", + "@opentelemetry/core": "2.7.1", + "@opentelemetry/resources": "2.7.1", + "@opentelemetry/sdk-logs": "0.218.0", + "@opentelemetry/sdk-metrics": "2.7.1", + "@opentelemetry/sdk-trace-base": "2.7.1" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-grpc-exporter-base/node_modules/@opentelemetry/sdk-logs": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.218.0.tgz", + "integrity": "sha512-QvnNdugatFTVCJXH0Mcu7GOOJSylA9j127kIezOE4YwTI4YbowRons2K4WZTv5FMS8T4q9P0NdaRHdkSmeAIag==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.218.0", + "@opentelemetry/core": "2.7.1", + "@opentelemetry/resources": "2.7.1", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" + } + }, "node_modules/@opentelemetry/otlp-transformer": { "version": "0.217.0", "license": "Apache-2.0", @@ -1425,30 +1866,32 @@ } }, "node_modules/@opentelemetry/sdk-node": { - "version": "0.217.0", + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.218.0.tgz", + "integrity": "sha512-tPMjHrLV5gsfNdYqoRHjeGbCAZBXXD9c1Qo/2ut7VwnUABDNh76xNxrT0SEhkIIJuCN45bbN1vZnYL1gY0IkOg==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.217.0", - "@opentelemetry/configuration": "0.217.0", + "@opentelemetry/api-logs": "0.218.0", + "@opentelemetry/configuration": "0.218.0", "@opentelemetry/context-async-hooks": "2.7.1", "@opentelemetry/core": "2.7.1", - "@opentelemetry/exporter-logs-otlp-grpc": "0.217.0", - "@opentelemetry/exporter-logs-otlp-http": "0.217.0", - "@opentelemetry/exporter-logs-otlp-proto": "0.217.0", - "@opentelemetry/exporter-metrics-otlp-grpc": "0.217.0", - "@opentelemetry/exporter-metrics-otlp-http": "0.217.0", - "@opentelemetry/exporter-metrics-otlp-proto": "0.217.0", - "@opentelemetry/exporter-prometheus": "0.217.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.217.0", - "@opentelemetry/exporter-trace-otlp-http": "0.217.0", - "@opentelemetry/exporter-trace-otlp-proto": "0.217.0", + "@opentelemetry/exporter-logs-otlp-grpc": "0.218.0", + "@opentelemetry/exporter-logs-otlp-http": "0.218.0", + "@opentelemetry/exporter-logs-otlp-proto": "0.218.0", + "@opentelemetry/exporter-metrics-otlp-grpc": "0.218.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.218.0", + "@opentelemetry/exporter-metrics-otlp-proto": "0.218.0", + "@opentelemetry/exporter-prometheus": "0.218.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.218.0", + "@opentelemetry/exporter-trace-otlp-http": "0.218.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.218.0", "@opentelemetry/exporter-zipkin": "2.7.1", - "@opentelemetry/instrumentation": "0.217.0", - "@opentelemetry/otlp-exporter-base": "0.217.0", + "@opentelemetry/instrumentation": "0.218.0", + "@opentelemetry/otlp-exporter-base": "0.218.0", "@opentelemetry/propagator-b3": "2.7.1", "@opentelemetry/propagator-jaeger": "2.7.1", "@opentelemetry/resources": "2.7.1", - "@opentelemetry/sdk-logs": "0.217.0", + "@opentelemetry/sdk-logs": "0.218.0", "@opentelemetry/sdk-metrics": "2.7.1", "@opentelemetry/sdk-trace-base": "2.7.1", "@opentelemetry/sdk-trace-node": "2.7.1", @@ -1461,6 +1904,166 @@ "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, + "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/api-logs": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.218.0.tgz", + "integrity": "sha512-fmEWp5kXlGEc3i/lR698Hz41DfGyN4Tbe4g7L1AxSc7fF8Xeh/FQ9Quqpa9dVA413Q1Ad43QOLzU4JoXgbFPWw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/exporter-logs-otlp-http": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.218.0.tgz", + "integrity": "sha512-Qx+4rpVHzgg89dawcWRHyt+XRXeLnhFz/qBtvggmjkcgPUdr+NAB0/u/eIPA8yAeJV0J80Vz43JZCh/XFvZFGw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.218.0", + "@opentelemetry/core": "2.7.1", + "@opentelemetry/otlp-exporter-base": "0.218.0", + "@opentelemetry/otlp-transformer": "0.218.0", + "@opentelemetry/sdk-logs": "0.218.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/exporter-metrics-otlp-http": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.218.0.tgz", + "integrity": "sha512-bV7d2OuMpZu2+gAaxUAhzfZ0h3WVZk8ETQUEE3DNSntbTaMpuITjtm8I0rNyHFdm7Ax57K6ty7SgFXlBmOLIvQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.7.1", + "@opentelemetry/otlp-exporter-base": "0.218.0", + "@opentelemetry/otlp-transformer": "0.218.0", + "@opentelemetry/resources": "2.7.1", + "@opentelemetry/sdk-metrics": "2.7.1" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/exporter-metrics-otlp-proto": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-proto/-/exporter-metrics-otlp-proto-0.218.0.tgz", + "integrity": "sha512-ubLddKjWULhla9YZRCj/rTBeppjJYE4e9w0icx5mTu3eFhWjQzbV75NYjXuIlEG+NJsBl6d+sTFw5Qu+oej4oQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.7.1", + "@opentelemetry/exporter-metrics-otlp-http": "0.218.0", + "@opentelemetry/otlp-exporter-base": "0.218.0", + "@opentelemetry/otlp-transformer": "0.218.0", + "@opentelemetry/resources": "2.7.1", + "@opentelemetry/sdk-metrics": "2.7.1" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/exporter-trace-otlp-http": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.218.0.tgz", + "integrity": "sha512-8dqezsmPhtKitIK/eTipZhYl9EX2/gNQ5zUMhaz3uxEURwfkNf8IPvo6yNfrzbxdtpAOybS/+h7wmIWYqFSpiw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.7.1", + "@opentelemetry/otlp-exporter-base": "0.218.0", + "@opentelemetry/otlp-transformer": "0.218.0", + "@opentelemetry/resources": "2.7.1", + "@opentelemetry/sdk-trace-base": "2.7.1" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/instrumentation": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.218.0.tgz", + "integrity": "sha512-mIZil8Es+sYDK5m+DQiwAwF57F14TF2YlEqvIjZ/RQWcxDBwRGsKfdK2Tv65OU9meQKCMzSIFS9mxAcnAb6Bkg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.218.0", + "import-in-the-middle": "^3.0.0", + "require-in-the-middle": "^8.0.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.218.0.tgz", + "integrity": "sha512-ZwqpkNL5W7RyGJPDZ9g06DvKp8KFTWPJPN12anpMQYSKpTSU0z3EIZuPq9vPGpS8siFyOqDYDAuCwlNO9FqgbA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.7.1", + "@opentelemetry/otlp-transformer": "0.218.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/otlp-transformer": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.218.0.tgz", + "integrity": "sha512-CFaKH87WAzjuJ4awowTTLzUvMfaRfiOFG5+qm5S5ncyalRtN4ecQ+YmuANJSCrVPuvZFEkUgKhBPBndxi3rHsQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.218.0", + "@opentelemetry/core": "2.7.1", + "@opentelemetry/resources": "2.7.1", + "@opentelemetry/sdk-logs": "0.218.0", + "@opentelemetry/sdk-metrics": "2.7.1", + "@opentelemetry/sdk-trace-base": "2.7.1" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/sdk-logs": { + "version": "0.218.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.218.0.tgz", + "integrity": "sha512-QvnNdugatFTVCJXH0Mcu7GOOJSylA9j127kIezOE4YwTI4YbowRons2K4WZTv5FMS8T4q9P0NdaRHdkSmeAIag==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.218.0", + "@opentelemetry/core": "2.7.1", + "@opentelemetry/resources": "2.7.1", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" + } + }, "node_modules/@opentelemetry/sdk-trace-base": { "version": "2.7.1", "license": "Apache-2.0", @@ -3415,9 +4018,9 @@ } }, "node_modules/eslint": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.4.0.tgz", - "integrity": "sha512-loXy6bWOoP3EP6JA7jo6p5jMpBJmHmsNZM5SFRHLdh1MGOPurMnNBj4ZlAbaqUAaQWbCr7jHV4P7gzAyryZWkQ==", + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.4.1.tgz", + "integrity": "sha512-AyIKhnOBuOAdueD7RB3xB+YeAWScb9jHsJBgH2Hcde8InP5JYhqrRR6iTMHyTEwgENK54Cp44e4v8BwNhsuHuw==", "dev": true, "license": "MIT", "peer": true, @@ -3427,7 +4030,7 @@ "@eslint/config-array": "^0.23.5", "@eslint/config-helpers": "^0.6.0", "@eslint/core": "^1.2.1", - "@eslint/plugin-kit": "^0.7.1", + "@eslint/plugin-kit": "^0.7.2", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -3732,7 +4335,9 @@ } }, "node_modules/fast-xml-parser": { - "version": "5.7.0", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.8.0.tgz", + "integrity": "sha512-6bIM7fsJxeo3uXv7OncQYsBAMPJ7V16Slahl/6M98C/i2q+vB1+4a0MtrvYwDFEUrwDSbAmeLDRXsOBwrL7yAg==", "funding": [ { "type": "github", @@ -3742,9 +4347,10 @@ "license": "MIT", "dependencies": { "@nodable/entities": "^2.1.0", - "fast-xml-builder": "^1.1.5", + "fast-xml-builder": "^1.2.0", "path-expression-matcher": "^1.5.0", - "strnum": "^2.2.3" + "strnum": "^2.3.0", + "xml-naming": "^0.1.0" }, "bin": { "fxparser": "src/cli/cli.js" @@ -4562,11 +5168,15 @@ } }, "node_modules/lodash": { - "version": "4.18.0", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "license": "MIT" }, "node_modules/lodash.camelcase": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", "license": "MIT" }, "node_modules/lodash.includes": { @@ -5817,15 +6427,17 @@ } }, "node_modules/swiper": { - "version": "12.1.3", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-12.2.0.tgz", + "integrity": "sha512-K8uXsBZU6ME97Ia3xbBge8IRCnR1lOmIILzvY/jGVic7dSTQ530s3uO8RvXbPUtkkXLWIwmZLRPbtDxRWVAFdg==", "funding": [ { - "type": "patreon", - "url": "https://www.patreon.com/swiperjs" + "type": "custom", + "url": "https://sponsors.nolimits4web.com" }, { - "type": "open_collective", - "url": "http://opencollective.com/swiper" + "type": "github", + "url": "https://github.com/sponsors/nolimits4web" } ], "license": "MIT", From 8f2bdc15d509d715d6e68c7bf8172e820054a492 Mon Sep 17 00:00:00 2001 From: Waldek Mastykarz Date: Fri, 3 Jul 2026 09:14:51 +0200 Subject: [PATCH 4/4] Address review feedback: use optionSet for cross-field validation, revert npm-shrinkwrap - Update retentioneventtype-set and retentionevent-add refines to use customCode: 'optionSet' with params.options so prompting works without a path - Revert npm-shrinkwrap.json to match the branch's package.json (merge-base) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- npm-shrinkwrap.json | 778 ++---------------- .../retentionevent/retentionevent-add.ts | 6 +- .../retentioneventtype-set.ts | 6 +- 3 files changed, 89 insertions(+), 701 deletions(-) diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index c07226e1703..34362ac0824 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,19 +1,19 @@ { "name": "@pnp/cli-microsoft365", - "version": "11.10.0", + "version": "11.9.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@pnp/cli-microsoft365", - "version": "11.10.0", + "version": "11.9.0", "license": "MIT", "dependencies": { "@azure/msal-common": "^16.6.2", "@azure/msal-node": "^5.2.2", - "@inquirer/confirm": "^6.1.1", - "@inquirer/input": "^5.1.1", - "@inquirer/select": "^5.2.1", + "@inquirer/confirm": "^6.1.0", + "@inquirer/input": "^5.1.0", + "@inquirer/select": "^5.2.0", "@xmldom/xmldom": "^0.9.10", "adaptive-expressions": "^4.23.3", "adaptivecards": "^3.0.6", @@ -68,7 +68,7 @@ "@typescript-eslint/eslint-plugin": "^8.60.0", "@typescript-eslint/parser": "^8.58.0", "c8": "^11.0.0", - "eslint": "^10.4.1", + "eslint": "^10.4.0", "eslint-plugin-mocha": "^11.3.0", "globals": "^17.6.0", "mocha": "^11.7.6", @@ -593,9 +593,7 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz", - "integrity": "sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==", + "version": "0.7.1", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -608,8 +606,6 @@ }, "node_modules/@grpc/grpc-js": { "version": "1.14.4", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.4.tgz", - "integrity": "sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==", "license": "Apache-2.0", "dependencies": { "@grpc/proto-loader": "^0.8.0", @@ -621,8 +617,6 @@ }, "node_modules/@grpc/proto-loader": { "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.8.1.tgz", - "integrity": "sha512-wtF6h+DY6M3YaDBPAmvuuA6jV8Sif9MjtOI5euKFWRgCDl5PeDpPsHR9u2l6St5ceY8AZgoNDww5+HvEsXFsGg==", "license": "Apache-2.0", "dependencies": { "lodash.camelcase": "^4.3.0", @@ -639,8 +633,6 @@ }, "node_modules/@grpc/proto-loader/node_modules/long": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", - "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", "license": "Apache-2.0" }, "node_modules/@humanfs/core": { @@ -697,16 +689,16 @@ } }, "node_modules/@inquirer/confirm": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.1.1.tgz", - "integrity": "sha512-eb8DBZcz/2qHWQda4rk2JiQk5h9QV/cVHi1yjt0f69WFZMRFn0sJTye3EAP8icut8UDMjQPsaH5KbcOogefrFQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.1.0.tgz", + "integrity": "sha512-USpeB76eqK7yGricDlGAupxWlp4a59qpeZOoNWaxO/nJln7agpJveyNkQ1d5u8YXG6TOqxZtQpKPORQQDrdVsA==", "license": "MIT", "dependencies": { - "@inquirer/core": "^11.2.1", - "@inquirer/type": "^4.0.7" + "@inquirer/core": "^11.2.0", + "@inquirer/type": "^4.0.6" }, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" }, "peerDependencies": { "@types/node": ">=18" @@ -753,16 +745,16 @@ } }, "node_modules/@inquirer/input": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.1.1.tgz", - "integrity": "sha512-3wuHoDBBtU+o0TB4uP2R+ACdNrn6SgdZBc1YUaiU9GcfXNaTNUgSM/Ft7eQ3gYWP2H1MiT6glycmfWYpmPzVKw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.1.0.tgz", + "integrity": "sha512-sVZCz6P6e8tW5g2bSFel1oLpa6jK/u7BexFfrgTqR8syIdnHqy+iopnlSbYBZMsCK52chLjhGNBxt0eRqhsghw==", "license": "MIT", "dependencies": { - "@inquirer/core": "^11.2.1", - "@inquirer/type": "^4.0.7" + "@inquirer/core": "^11.2.0", + "@inquirer/type": "^4.0.6" }, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" }, "peerDependencies": { "@types/node": ">=18" @@ -774,18 +766,18 @@ } }, "node_modules/@inquirer/select": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.2.1.tgz", - "integrity": "sha512-FlDndEUww8m7BfukO2nJa25vhD+H5jxxCv4oGioKqzyWz3nPHhhw4LKdYRSlXuAx7DsdWia7iyaBPKKS95Evfw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.2.0.tgz", + "integrity": "sha512-6IzkcmEbEXfgVbxZ2d1UyJFbCBoc6dTofulFmrYuomIp88HXiVqRbqbg4/mbfZhvnNo6xYmnYo2AEmDof6fQkg==", "license": "MIT", "dependencies": { - "@inquirer/ansi": "^2.0.7", - "@inquirer/core": "^11.2.1", - "@inquirer/figures": "^2.0.7", - "@inquirer/type": "^4.0.7" + "@inquirer/ansi": "^2.0.6", + "@inquirer/core": "^11.2.0", + "@inquirer/figures": "^2.0.6", + "@inquirer/type": "^4.0.6" }, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" }, "peerDependencies": { "@types/node": ">=18" @@ -888,8 +880,6 @@ }, "node_modules/@js-sdsl/ordered-map": { "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", - "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", "license": "MIT", "funding": { "type": "opencollective", @@ -941,9 +931,7 @@ } }, "node_modules/@opentelemetry/configuration": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/configuration/-/configuration-0.218.0.tgz", - "integrity": "sha512-W8wIz7H2R1pufR5jfjb3gU2XkMpm2x/7b1RJcsuzvd70Il/rWWE+g5/Od7hQKrxRTSrTrOWlru101PWXz5I1EQ==", + "version": "0.217.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "2.7.1", @@ -980,65 +968,15 @@ } }, "node_modules/@opentelemetry/exporter-logs-otlp-grpc": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-grpc/-/exporter-logs-otlp-grpc-0.218.0.tgz", - "integrity": "sha512-hoxrNH1l/Xy6F9WTJ5IK+6j1r9nQFlPOmrnTlhYHTySdunfXLmUCPv3bQtKYntxag9h3wLYBZQ2HI6FOx+BT2g==", + "version": "0.217.0", "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "^1.14.3", "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-exporter-base": "0.218.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.218.0", - "@opentelemetry/otlp-transformer": "0.218.0", - "@opentelemetry/sdk-logs": "0.218.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/exporter-logs-otlp-grpc/node_modules/@opentelemetry/api-logs": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.218.0.tgz", - "integrity": "sha512-fmEWp5kXlGEc3i/lR698Hz41DfGyN4Tbe4g7L1AxSc7fF8Xeh/FQ9Quqpa9dVA413Q1Ad43QOLzU4JoXgbFPWw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/exporter-logs-otlp-grpc/node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.218.0.tgz", - "integrity": "sha512-ZwqpkNL5W7RyGJPDZ9g06DvKp8KFTWPJPN12anpMQYSKpTSU0z3EIZuPq9vPGpS8siFyOqDYDAuCwlNO9FqgbA==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-transformer": "0.218.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/exporter-logs-otlp-grpc/node_modules/@opentelemetry/otlp-transformer": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.218.0.tgz", - "integrity": "sha512-CFaKH87WAzjuJ4awowTTLzUvMfaRfiOFG5+qm5S5ncyalRtN4ecQ+YmuANJSCrVPuvZFEkUgKhBPBndxi3rHsQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.218.0", - "@opentelemetry/core": "2.7.1", - "@opentelemetry/resources": "2.7.1", - "@opentelemetry/sdk-logs": "0.218.0", - "@opentelemetry/sdk-metrics": "2.7.1", - "@opentelemetry/sdk-trace-base": "2.7.1" + "@opentelemetry/otlp-exporter-base": "0.217.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.217.0", + "@opentelemetry/otlp-transformer": "0.217.0", + "@opentelemetry/sdk-logs": "0.217.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -1047,24 +985,6 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/exporter-logs-otlp-grpc/node_modules/@opentelemetry/sdk-logs": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.218.0.tgz", - "integrity": "sha512-QvnNdugatFTVCJXH0Mcu7GOOJSylA9j127kIezOE4YwTI4YbowRons2K4WZTv5FMS8T4q9P0NdaRHdkSmeAIag==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.218.0", - "@opentelemetry/core": "2.7.1", - "@opentelemetry/resources": "2.7.1", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.4.0 <1.10.0" - } - }, "node_modules/@opentelemetry/exporter-logs-otlp-http": { "version": "0.217.0", "license": "Apache-2.0", @@ -1083,65 +1003,15 @@ } }, "node_modules/@opentelemetry/exporter-logs-otlp-proto": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-proto/-/exporter-logs-otlp-proto-0.218.0.tgz", - "integrity": "sha512-1/noQNsp9gXD75HPzgjBrcF1+XTtry7pFAUfxVEJgg7mPv2AawKQuYkhMmJ8qjxz4Ubc3Y8bwvfxevXsKTq4cg==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.218.0", - "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-exporter-base": "0.218.0", - "@opentelemetry/otlp-transformer": "0.218.0", - "@opentelemetry/resources": "2.7.1", - "@opentelemetry/sdk-logs": "0.218.0", - "@opentelemetry/sdk-trace-base": "2.7.1" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/exporter-logs-otlp-proto/node_modules/@opentelemetry/api-logs": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.218.0.tgz", - "integrity": "sha512-fmEWp5kXlGEc3i/lR698Hz41DfGyN4Tbe4g7L1AxSc7fF8Xeh/FQ9Quqpa9dVA413Q1Ad43QOLzU4JoXgbFPWw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/exporter-logs-otlp-proto/node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.218.0.tgz", - "integrity": "sha512-ZwqpkNL5W7RyGJPDZ9g06DvKp8KFTWPJPN12anpMQYSKpTSU0z3EIZuPq9vPGpS8siFyOqDYDAuCwlNO9FqgbA==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-transformer": "0.218.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/exporter-logs-otlp-proto/node_modules/@opentelemetry/otlp-transformer": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.218.0.tgz", - "integrity": "sha512-CFaKH87WAzjuJ4awowTTLzUvMfaRfiOFG5+qm5S5ncyalRtN4ecQ+YmuANJSCrVPuvZFEkUgKhBPBndxi3rHsQ==", + "version": "0.217.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.218.0", + "@opentelemetry/api-logs": "0.217.0", "@opentelemetry/core": "2.7.1", + "@opentelemetry/otlp-exporter-base": "0.217.0", + "@opentelemetry/otlp-transformer": "0.217.0", "@opentelemetry/resources": "2.7.1", - "@opentelemetry/sdk-logs": "0.218.0", - "@opentelemetry/sdk-metrics": "2.7.1", + "@opentelemetry/sdk-logs": "0.217.0", "@opentelemetry/sdk-trace-base": "2.7.1" }, "engines": { @@ -1151,67 +1021,16 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/exporter-logs-otlp-proto/node_modules/@opentelemetry/sdk-logs": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.218.0.tgz", - "integrity": "sha512-QvnNdugatFTVCJXH0Mcu7GOOJSylA9j127kIezOE4YwTI4YbowRons2K4WZTv5FMS8T4q9P0NdaRHdkSmeAIag==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.218.0", - "@opentelemetry/core": "2.7.1", - "@opentelemetry/resources": "2.7.1", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.4.0 <1.10.0" - } - }, "node_modules/@opentelemetry/exporter-metrics-otlp-grpc": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-grpc/-/exporter-metrics-otlp-grpc-0.218.0.tgz", - "integrity": "sha512-YapQ9vNMX0NSZF6LK5pWAFfjpJleV2O9uYWfYGeb/5F1Kb9rPGK8tZDMJFa/sOksgdFuflDvYuA0B4qjDB4fjQ==", + "version": "0.217.0", "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "^1.14.3", "@opentelemetry/core": "2.7.1", - "@opentelemetry/exporter-metrics-otlp-http": "0.218.0", - "@opentelemetry/otlp-exporter-base": "0.218.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.218.0", - "@opentelemetry/otlp-transformer": "0.218.0", - "@opentelemetry/resources": "2.7.1", - "@opentelemetry/sdk-metrics": "2.7.1" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/exporter-metrics-otlp-grpc/node_modules/@opentelemetry/api-logs": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.218.0.tgz", - "integrity": "sha512-fmEWp5kXlGEc3i/lR698Hz41DfGyN4Tbe4g7L1AxSc7fF8Xeh/FQ9Quqpa9dVA413Q1Ad43QOLzU4JoXgbFPWw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/exporter-metrics-otlp-grpc/node_modules/@opentelemetry/exporter-metrics-otlp-http": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.218.0.tgz", - "integrity": "sha512-bV7d2OuMpZu2+gAaxUAhzfZ0h3WVZk8ETQUEE3DNSntbTaMpuITjtm8I0rNyHFdm7Ax57K6ty7SgFXlBmOLIvQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-exporter-base": "0.218.0", - "@opentelemetry/otlp-transformer": "0.218.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.217.0", + "@opentelemetry/otlp-exporter-base": "0.217.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.217.0", + "@opentelemetry/otlp-transformer": "0.217.0", "@opentelemetry/resources": "2.7.1", "@opentelemetry/sdk-metrics": "2.7.1" }, @@ -1222,60 +1041,6 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/exporter-metrics-otlp-grpc/node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.218.0.tgz", - "integrity": "sha512-ZwqpkNL5W7RyGJPDZ9g06DvKp8KFTWPJPN12anpMQYSKpTSU0z3EIZuPq9vPGpS8siFyOqDYDAuCwlNO9FqgbA==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-transformer": "0.218.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/exporter-metrics-otlp-grpc/node_modules/@opentelemetry/otlp-transformer": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.218.0.tgz", - "integrity": "sha512-CFaKH87WAzjuJ4awowTTLzUvMfaRfiOFG5+qm5S5ncyalRtN4ecQ+YmuANJSCrVPuvZFEkUgKhBPBndxi3rHsQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.218.0", - "@opentelemetry/core": "2.7.1", - "@opentelemetry/resources": "2.7.1", - "@opentelemetry/sdk-logs": "0.218.0", - "@opentelemetry/sdk-metrics": "2.7.1", - "@opentelemetry/sdk-trace-base": "2.7.1" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/exporter-metrics-otlp-grpc/node_modules/@opentelemetry/sdk-logs": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.218.0.tgz", - "integrity": "sha512-QvnNdugatFTVCJXH0Mcu7GOOJSylA9j127kIezOE4YwTI4YbowRons2K4WZTv5FMS8T4q9P0NdaRHdkSmeAIag==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.218.0", - "@opentelemetry/core": "2.7.1", - "@opentelemetry/resources": "2.7.1", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.4.0 <1.10.0" - } - }, "node_modules/@opentelemetry/exporter-metrics-otlp-http": { "version": "0.217.0", "license": "Apache-2.0", @@ -1312,9 +1077,7 @@ } }, "node_modules/@opentelemetry/exporter-prometheus": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.218.0.tgz", - "integrity": "sha512-RT5oEyu1kddZJ1vt7/BUo5wV+P7hpNAESsR3dUd3+8deHuX7gWNoCOZn+SfDT+hJHlIJ5h/AxiCLXIrutswDJg==", + "version": "0.217.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "2.7.1", @@ -1330,65 +1093,15 @@ } }, "node_modules/@opentelemetry/exporter-trace-otlp-grpc": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.218.0.tgz", - "integrity": "sha512-3fXxVQEj9TNAFaCi79JeFKfeLd0sDtInaR3gaZDVlzNSPHtz8PZuCV34JKWjD4XXzT20IdMe8IpX6mRVNDA4Tw==", + "version": "0.217.0", "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "^1.14.3", "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-exporter-base": "0.218.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.218.0", - "@opentelemetry/otlp-transformer": "0.218.0", - "@opentelemetry/resources": "2.7.1", - "@opentelemetry/sdk-trace-base": "2.7.1" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/exporter-trace-otlp-grpc/node_modules/@opentelemetry/api-logs": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.218.0.tgz", - "integrity": "sha512-fmEWp5kXlGEc3i/lR698Hz41DfGyN4Tbe4g7L1AxSc7fF8Xeh/FQ9Quqpa9dVA413Q1Ad43QOLzU4JoXgbFPWw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/exporter-trace-otlp-grpc/node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.218.0.tgz", - "integrity": "sha512-ZwqpkNL5W7RyGJPDZ9g06DvKp8KFTWPJPN12anpMQYSKpTSU0z3EIZuPq9vPGpS8siFyOqDYDAuCwlNO9FqgbA==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-transformer": "0.218.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/exporter-trace-otlp-grpc/node_modules/@opentelemetry/otlp-transformer": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.218.0.tgz", - "integrity": "sha512-CFaKH87WAzjuJ4awowTTLzUvMfaRfiOFG5+qm5S5ncyalRtN4ecQ+YmuANJSCrVPuvZFEkUgKhBPBndxi3rHsQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.218.0", - "@opentelemetry/core": "2.7.1", + "@opentelemetry/otlp-exporter-base": "0.217.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.217.0", + "@opentelemetry/otlp-transformer": "0.217.0", "@opentelemetry/resources": "2.7.1", - "@opentelemetry/sdk-logs": "0.218.0", - "@opentelemetry/sdk-metrics": "2.7.1", "@opentelemetry/sdk-trace-base": "2.7.1" }, "engines": { @@ -1398,24 +1111,6 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/exporter-trace-otlp-grpc/node_modules/@opentelemetry/sdk-logs": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.218.0.tgz", - "integrity": "sha512-QvnNdugatFTVCJXH0Mcu7GOOJSylA9j127kIezOE4YwTI4YbowRons2K4WZTv5FMS8T4q9P0NdaRHdkSmeAIag==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.218.0", - "@opentelemetry/core": "2.7.1", - "@opentelemetry/resources": "2.7.1", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.4.0 <1.10.0" - } - }, "node_modules/@opentelemetry/exporter-trace-otlp-http": { "version": "0.217.0", "license": "Apache-2.0", @@ -1434,63 +1129,13 @@ } }, "node_modules/@opentelemetry/exporter-trace-otlp-proto": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.218.0.tgz", - "integrity": "sha512-r1Msf8SNLRmwh9J6XQ5uh82D7CdDWMNHnPB7LAVHjzut0TkSeKc5KcIvr4SvHvfk/xwN5gxC+VLKQ1k0o8PSPw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-exporter-base": "0.218.0", - "@opentelemetry/otlp-transformer": "0.218.0", - "@opentelemetry/resources": "2.7.1", - "@opentelemetry/sdk-trace-base": "2.7.1" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/exporter-trace-otlp-proto/node_modules/@opentelemetry/api-logs": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.218.0.tgz", - "integrity": "sha512-fmEWp5kXlGEc3i/lR698Hz41DfGyN4Tbe4g7L1AxSc7fF8Xeh/FQ9Quqpa9dVA413Q1Ad43QOLzU4JoXgbFPWw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/exporter-trace-otlp-proto/node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.218.0.tgz", - "integrity": "sha512-ZwqpkNL5W7RyGJPDZ9g06DvKp8KFTWPJPN12anpMQYSKpTSU0z3EIZuPq9vPGpS8siFyOqDYDAuCwlNO9FqgbA==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-transformer": "0.218.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/exporter-trace-otlp-proto/node_modules/@opentelemetry/otlp-transformer": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.218.0.tgz", - "integrity": "sha512-CFaKH87WAzjuJ4awowTTLzUvMfaRfiOFG5+qm5S5ncyalRtN4ecQ+YmuANJSCrVPuvZFEkUgKhBPBndxi3rHsQ==", + "version": "0.217.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.218.0", "@opentelemetry/core": "2.7.1", + "@opentelemetry/otlp-exporter-base": "0.217.0", + "@opentelemetry/otlp-transformer": "0.217.0", "@opentelemetry/resources": "2.7.1", - "@opentelemetry/sdk-logs": "0.218.0", - "@opentelemetry/sdk-metrics": "2.7.1", "@opentelemetry/sdk-trace-base": "2.7.1" }, "engines": { @@ -1500,24 +1145,6 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/exporter-trace-otlp-proto/node_modules/@opentelemetry/sdk-logs": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.218.0.tgz", - "integrity": "sha512-QvnNdugatFTVCJXH0Mcu7GOOJSylA9j127kIezOE4YwTI4YbowRons2K4WZTv5FMS8T4q9P0NdaRHdkSmeAIag==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.218.0", - "@opentelemetry/core": "2.7.1", - "@opentelemetry/resources": "2.7.1", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.4.0 <1.10.0" - } - }, "node_modules/@opentelemetry/exporter-zipkin": { "version": "2.7.1", "license": "Apache-2.0", @@ -1671,63 +1298,13 @@ } }, "node_modules/@opentelemetry/otlp-grpc-exporter-base": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.218.0.tgz", - "integrity": "sha512-H/lCGJ536N98VpYJOaWTQOkv4Dx6TnmStK6Rqfu1W7KkFbPAx04hjdYEMZF/YbnHzPUSIK4kM6OE2GKGBTpV9A==", + "version": "0.217.0", "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "^1.14.3", "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-exporter-base": "0.218.0", - "@opentelemetry/otlp-transformer": "0.218.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/otlp-grpc-exporter-base/node_modules/@opentelemetry/api-logs": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.218.0.tgz", - "integrity": "sha512-fmEWp5kXlGEc3i/lR698Hz41DfGyN4Tbe4g7L1AxSc7fF8Xeh/FQ9Quqpa9dVA413Q1Ad43QOLzU4JoXgbFPWw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/otlp-grpc-exporter-base/node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.218.0.tgz", - "integrity": "sha512-ZwqpkNL5W7RyGJPDZ9g06DvKp8KFTWPJPN12anpMQYSKpTSU0z3EIZuPq9vPGpS8siFyOqDYDAuCwlNO9FqgbA==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-transformer": "0.218.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/otlp-grpc-exporter-base/node_modules/@opentelemetry/otlp-transformer": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.218.0.tgz", - "integrity": "sha512-CFaKH87WAzjuJ4awowTTLzUvMfaRfiOFG5+qm5S5ncyalRtN4ecQ+YmuANJSCrVPuvZFEkUgKhBPBndxi3rHsQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.218.0", - "@opentelemetry/core": "2.7.1", - "@opentelemetry/resources": "2.7.1", - "@opentelemetry/sdk-logs": "0.218.0", - "@opentelemetry/sdk-metrics": "2.7.1", - "@opentelemetry/sdk-trace-base": "2.7.1" + "@opentelemetry/otlp-exporter-base": "0.217.0", + "@opentelemetry/otlp-transformer": "0.217.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -1736,24 +1313,6 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/otlp-grpc-exporter-base/node_modules/@opentelemetry/sdk-logs": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.218.0.tgz", - "integrity": "sha512-QvnNdugatFTVCJXH0Mcu7GOOJSylA9j127kIezOE4YwTI4YbowRons2K4WZTv5FMS8T4q9P0NdaRHdkSmeAIag==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.218.0", - "@opentelemetry/core": "2.7.1", - "@opentelemetry/resources": "2.7.1", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.4.0 <1.10.0" - } - }, "node_modules/@opentelemetry/otlp-transformer": { "version": "0.217.0", "license": "Apache-2.0", @@ -1866,32 +1425,30 @@ } }, "node_modules/@opentelemetry/sdk-node": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.218.0.tgz", - "integrity": "sha512-tPMjHrLV5gsfNdYqoRHjeGbCAZBXXD9c1Qo/2ut7VwnUABDNh76xNxrT0SEhkIIJuCN45bbN1vZnYL1gY0IkOg==", + "version": "0.217.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.218.0", - "@opentelemetry/configuration": "0.218.0", + "@opentelemetry/api-logs": "0.217.0", + "@opentelemetry/configuration": "0.217.0", "@opentelemetry/context-async-hooks": "2.7.1", "@opentelemetry/core": "2.7.1", - "@opentelemetry/exporter-logs-otlp-grpc": "0.218.0", - "@opentelemetry/exporter-logs-otlp-http": "0.218.0", - "@opentelemetry/exporter-logs-otlp-proto": "0.218.0", - "@opentelemetry/exporter-metrics-otlp-grpc": "0.218.0", - "@opentelemetry/exporter-metrics-otlp-http": "0.218.0", - "@opentelemetry/exporter-metrics-otlp-proto": "0.218.0", - "@opentelemetry/exporter-prometheus": "0.218.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.218.0", - "@opentelemetry/exporter-trace-otlp-http": "0.218.0", - "@opentelemetry/exporter-trace-otlp-proto": "0.218.0", + "@opentelemetry/exporter-logs-otlp-grpc": "0.217.0", + "@opentelemetry/exporter-logs-otlp-http": "0.217.0", + "@opentelemetry/exporter-logs-otlp-proto": "0.217.0", + "@opentelemetry/exporter-metrics-otlp-grpc": "0.217.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.217.0", + "@opentelemetry/exporter-metrics-otlp-proto": "0.217.0", + "@opentelemetry/exporter-prometheus": "0.217.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.217.0", + "@opentelemetry/exporter-trace-otlp-http": "0.217.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.217.0", "@opentelemetry/exporter-zipkin": "2.7.1", - "@opentelemetry/instrumentation": "0.218.0", - "@opentelemetry/otlp-exporter-base": "0.218.0", + "@opentelemetry/instrumentation": "0.217.0", + "@opentelemetry/otlp-exporter-base": "0.217.0", "@opentelemetry/propagator-b3": "2.7.1", "@opentelemetry/propagator-jaeger": "2.7.1", "@opentelemetry/resources": "2.7.1", - "@opentelemetry/sdk-logs": "0.218.0", + "@opentelemetry/sdk-logs": "0.217.0", "@opentelemetry/sdk-metrics": "2.7.1", "@opentelemetry/sdk-trace-base": "2.7.1", "@opentelemetry/sdk-trace-node": "2.7.1", @@ -1904,166 +1461,6 @@ "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/api-logs": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.218.0.tgz", - "integrity": "sha512-fmEWp5kXlGEc3i/lR698Hz41DfGyN4Tbe4g7L1AxSc7fF8Xeh/FQ9Quqpa9dVA413Q1Ad43QOLzU4JoXgbFPWw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/exporter-logs-otlp-http": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.218.0.tgz", - "integrity": "sha512-Qx+4rpVHzgg89dawcWRHyt+XRXeLnhFz/qBtvggmjkcgPUdr+NAB0/u/eIPA8yAeJV0J80Vz43JZCh/XFvZFGw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.218.0", - "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-exporter-base": "0.218.0", - "@opentelemetry/otlp-transformer": "0.218.0", - "@opentelemetry/sdk-logs": "0.218.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/exporter-metrics-otlp-http": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.218.0.tgz", - "integrity": "sha512-bV7d2OuMpZu2+gAaxUAhzfZ0h3WVZk8ETQUEE3DNSntbTaMpuITjtm8I0rNyHFdm7Ax57K6ty7SgFXlBmOLIvQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-exporter-base": "0.218.0", - "@opentelemetry/otlp-transformer": "0.218.0", - "@opentelemetry/resources": "2.7.1", - "@opentelemetry/sdk-metrics": "2.7.1" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/exporter-metrics-otlp-proto": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-proto/-/exporter-metrics-otlp-proto-0.218.0.tgz", - "integrity": "sha512-ubLddKjWULhla9YZRCj/rTBeppjJYE4e9w0icx5mTu3eFhWjQzbV75NYjXuIlEG+NJsBl6d+sTFw5Qu+oej4oQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.7.1", - "@opentelemetry/exporter-metrics-otlp-http": "0.218.0", - "@opentelemetry/otlp-exporter-base": "0.218.0", - "@opentelemetry/otlp-transformer": "0.218.0", - "@opentelemetry/resources": "2.7.1", - "@opentelemetry/sdk-metrics": "2.7.1" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/exporter-trace-otlp-http": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.218.0.tgz", - "integrity": "sha512-8dqezsmPhtKitIK/eTipZhYl9EX2/gNQ5zUMhaz3uxEURwfkNf8IPvo6yNfrzbxdtpAOybS/+h7wmIWYqFSpiw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-exporter-base": "0.218.0", - "@opentelemetry/otlp-transformer": "0.218.0", - "@opentelemetry/resources": "2.7.1", - "@opentelemetry/sdk-trace-base": "2.7.1" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/instrumentation": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.218.0.tgz", - "integrity": "sha512-mIZil8Es+sYDK5m+DQiwAwF57F14TF2YlEqvIjZ/RQWcxDBwRGsKfdK2Tv65OU9meQKCMzSIFS9mxAcnAb6Bkg==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.218.0", - "import-in-the-middle": "^3.0.0", - "require-in-the-middle": "^8.0.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.218.0.tgz", - "integrity": "sha512-ZwqpkNL5W7RyGJPDZ9g06DvKp8KFTWPJPN12anpMQYSKpTSU0z3EIZuPq9vPGpS8siFyOqDYDAuCwlNO9FqgbA==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.7.1", - "@opentelemetry/otlp-transformer": "0.218.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/otlp-transformer": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.218.0.tgz", - "integrity": "sha512-CFaKH87WAzjuJ4awowTTLzUvMfaRfiOFG5+qm5S5ncyalRtN4ecQ+YmuANJSCrVPuvZFEkUgKhBPBndxi3rHsQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.218.0", - "@opentelemetry/core": "2.7.1", - "@opentelemetry/resources": "2.7.1", - "@opentelemetry/sdk-logs": "0.218.0", - "@opentelemetry/sdk-metrics": "2.7.1", - "@opentelemetry/sdk-trace-base": "2.7.1" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/sdk-logs": { - "version": "0.218.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.218.0.tgz", - "integrity": "sha512-QvnNdugatFTVCJXH0Mcu7GOOJSylA9j127kIezOE4YwTI4YbowRons2K4WZTv5FMS8T4q9P0NdaRHdkSmeAIag==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.218.0", - "@opentelemetry/core": "2.7.1", - "@opentelemetry/resources": "2.7.1", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.4.0 <1.10.0" - } - }, "node_modules/@opentelemetry/sdk-trace-base": { "version": "2.7.1", "license": "Apache-2.0", @@ -4018,9 +3415,9 @@ } }, "node_modules/eslint": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.4.1.tgz", - "integrity": "sha512-AyIKhnOBuOAdueD7RB3xB+YeAWScb9jHsJBgH2Hcde8InP5JYhqrRR6iTMHyTEwgENK54Cp44e4v8BwNhsuHuw==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.4.0.tgz", + "integrity": "sha512-loXy6bWOoP3EP6JA7jo6p5jMpBJmHmsNZM5SFRHLdh1MGOPurMnNBj4ZlAbaqUAaQWbCr7jHV4P7gzAyryZWkQ==", "dev": true, "license": "MIT", "peer": true, @@ -4030,7 +3427,7 @@ "@eslint/config-array": "^0.23.5", "@eslint/config-helpers": "^0.6.0", "@eslint/core": "^1.2.1", - "@eslint/plugin-kit": "^0.7.2", + "@eslint/plugin-kit": "^0.7.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -4335,9 +3732,7 @@ } }, "node_modules/fast-xml-parser": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.8.0.tgz", - "integrity": "sha512-6bIM7fsJxeo3uXv7OncQYsBAMPJ7V16Slahl/6M98C/i2q+vB1+4a0MtrvYwDFEUrwDSbAmeLDRXsOBwrL7yAg==", + "version": "5.7.0", "funding": [ { "type": "github", @@ -4347,10 +3742,9 @@ "license": "MIT", "dependencies": { "@nodable/entities": "^2.1.0", - "fast-xml-builder": "^1.2.0", + "fast-xml-builder": "^1.1.5", "path-expression-matcher": "^1.5.0", - "strnum": "^2.3.0", - "xml-naming": "^0.1.0" + "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" @@ -5168,15 +4562,11 @@ } }, "node_modules/lodash": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", - "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "version": "4.18.0", "license": "MIT" }, "node_modules/lodash.camelcase": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", "license": "MIT" }, "node_modules/lodash.includes": { @@ -6427,17 +5817,15 @@ } }, "node_modules/swiper": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/swiper/-/swiper-12.2.0.tgz", - "integrity": "sha512-K8uXsBZU6ME97Ia3xbBge8IRCnR1lOmIILzvY/jGVic7dSTQ530s3uO8RvXbPUtkkXLWIwmZLRPbtDxRWVAFdg==", + "version": "12.1.3", "funding": [ { - "type": "custom", - "url": "https://sponsors.nolimits4web.com" + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" }, { - "type": "github", - "url": "https://github.com/sponsors/nolimits4web" + "type": "open_collective", + "url": "http://opencollective.com/swiper" } ], "license": "MIT", diff --git a/src/m365/purview/commands/retentionevent/retentionevent-add.ts b/src/m365/purview/commands/retentionevent/retentionevent-add.ts index 4f06b7e4e09..e32072e3c70 100644 --- a/src/m365/purview/commands/retentionevent/retentionevent-add.ts +++ b/src/m365/purview/commands/retentionevent/retentionevent-add.ts @@ -49,11 +49,11 @@ class PurviewRetentionEventAddCommand extends GraphCommand { options: ['eventTypeId', 'eventTypeName'] } }) - .refine(opts => opts.assetIds || opts.keywords, { + .refine(opts => opts.assetIds !== undefined || opts.keywords !== undefined, { error: 'Specify assetIds and/or keywords, but at least one.', - path: ['assetIds'], params: { - customCode: 'required' + customCode: 'optionSet', + options: ['assetIds', 'keywords'] } }) as any; } diff --git a/src/m365/purview/commands/retentioneventtype/retentioneventtype-set.ts b/src/m365/purview/commands/retentioneventtype/retentioneventtype-set.ts index dba89137405..8ebd620c221 100644 --- a/src/m365/purview/commands/retentioneventtype/retentioneventtype-set.ts +++ b/src/m365/purview/commands/retentioneventtype/retentioneventtype-set.ts @@ -35,11 +35,11 @@ class PurviewRetentionEventTypeSetCommand extends GraphCommand { public getRefinedSchema(schema: typeof options): z.ZodObject | undefined { return schema - .refine(opts => opts.description, { + .refine(opts => opts.description !== undefined, { error: 'Specify at least one option to update.', - path: ['description'], params: { - customCode: 'required' + customCode: 'optionSet', + options: ['description'] } }) as any; }