Skip to content

Commit 889a481

Browse files
[9.4] [js-yaml to yaml migration] @elastic/obs-onboarding-team (#252349) (#271832)
# Backport This will backport the following commits from `main` to `9.4`: - [[js-yaml to yaml migration] @elastic/obs-onboarding-team (#252349)](#252349) <!--- Backport version: 9.6.6 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sorenlouv/backport) <!--BACKPORT [{"author":{"name":"Jeramy Soucy","email":"jeramy.soucy@elastic.co"},"sourceCommit":{"committedDate":"2026-05-29T06:58:39Z","message":"[js-yaml to yaml migration] @elastic/obs-onboarding-team (#252349)\n\nCloses #267871\n\n## Migration: js-yaml → yaml\n\nThis PR migrates 8 file(s) from `js-yaml` to `yaml` package for\n@elastic/obs-onboarding-team.\n\n### Changes\n- Replaced `js-yaml` imports with `yaml` package\n- Updated function calls: `load()` → `parse()`, `dump()` → `stringify()`\n- Mapped options:\n - `noRefs: true` → `aliasDuplicateObjects: false`\n - `skipInvalid: true` → `strict: false`\n - `sortKeys` → `sortMapEntries`\n - `JSON_SCHEMA` → `schema: 'core'`\n\n### Files Changed\n-\n`src/platform/packages/shared/kbn-otel-demo/src/demos/online_boutique/manifests.ts`\n-\n`src/platform/packages/shared/kbn-otel-demo/src/demos/otel_demo/manifests.ts`\n-\n`src/platform/packages/shared/kbn-otel-demo/src/get_kubernetes_manifests.ts`\n- `src/platform/packages/shared/kbn-otel-demo/src/read_kibana_config.ts`\n-\n`src/platform/packages/shared/kbn-otel-semantic-conventions/__tests__/generate_semconv.test.ts`\n-\n`src/platform/packages/shared/kbn-otel-semantic-conventions/src/lib/generate_semconv.ts`\n-\n`src/platform/packages/shared/kbn-otel-semantic-conventions/src/sort_yaml.ts`\n-\n`x-pack/solutions/observability/plugins/observability_onboarding/server/routes/flow/route.ts`\n\n### Testing\n- All relevant Jest tests pass\n- Snapshot tests updated to reflect new YAML output format\n\n---\n\n**Note:** This is part of a larger migration effort. Other teams' files\nare in separate PRs. These changes were generated using Cursor.","sha":"95273155871d61a1c674823af4f26ba4102a441e","branchLabelMapping":{"^v9.5.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["Team:Security","release_note:skip","backport:all-open","v9.5.0"],"title":"[js-yaml to yaml migration] @elastic/obs-onboarding-team","number":252349,"url":"https://github.com/elastic/kibana/pull/252349","mergeCommit":{"message":"[js-yaml to yaml migration] @elastic/obs-onboarding-team (#252349)\n\nCloses #267871\n\n## Migration: js-yaml → yaml\n\nThis PR migrates 8 file(s) from `js-yaml` to `yaml` package for\n@elastic/obs-onboarding-team.\n\n### Changes\n- Replaced `js-yaml` imports with `yaml` package\n- Updated function calls: `load()` → `parse()`, `dump()` → `stringify()`\n- Mapped options:\n - `noRefs: true` → `aliasDuplicateObjects: false`\n - `skipInvalid: true` → `strict: false`\n - `sortKeys` → `sortMapEntries`\n - `JSON_SCHEMA` → `schema: 'core'`\n\n### Files Changed\n-\n`src/platform/packages/shared/kbn-otel-demo/src/demos/online_boutique/manifests.ts`\n-\n`src/platform/packages/shared/kbn-otel-demo/src/demos/otel_demo/manifests.ts`\n-\n`src/platform/packages/shared/kbn-otel-demo/src/get_kubernetes_manifests.ts`\n- `src/platform/packages/shared/kbn-otel-demo/src/read_kibana_config.ts`\n-\n`src/platform/packages/shared/kbn-otel-semantic-conventions/__tests__/generate_semconv.test.ts`\n-\n`src/platform/packages/shared/kbn-otel-semantic-conventions/src/lib/generate_semconv.ts`\n-\n`src/platform/packages/shared/kbn-otel-semantic-conventions/src/sort_yaml.ts`\n-\n`x-pack/solutions/observability/plugins/observability_onboarding/server/routes/flow/route.ts`\n\n### Testing\n- All relevant Jest tests pass\n- Snapshot tests updated to reflect new YAML output format\n\n---\n\n**Note:** This is part of a larger migration effort. Other teams' files\nare in separate PRs. These changes were generated using Cursor.","sha":"95273155871d61a1c674823af4f26ba4102a441e"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"main","label":"v9.5.0","branchLabelMappingKey":"^v9.5.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/252349","number":252349,"mergeCommit":{"message":"[js-yaml to yaml migration] @elastic/obs-onboarding-team (#252349)\n\nCloses #267871\n\n## Migration: js-yaml → yaml\n\nThis PR migrates 8 file(s) from `js-yaml` to `yaml` package for\n@elastic/obs-onboarding-team.\n\n### Changes\n- Replaced `js-yaml` imports with `yaml` package\n- Updated function calls: `load()` → `parse()`, `dump()` → `stringify()`\n- Mapped options:\n - `noRefs: true` → `aliasDuplicateObjects: false`\n - `skipInvalid: true` → `strict: false`\n - `sortKeys` → `sortMapEntries`\n - `JSON_SCHEMA` → `schema: 'core'`\n\n### Files Changed\n-\n`src/platform/packages/shared/kbn-otel-demo/src/demos/online_boutique/manifests.ts`\n-\n`src/platform/packages/shared/kbn-otel-demo/src/demos/otel_demo/manifests.ts`\n-\n`src/platform/packages/shared/kbn-otel-demo/src/get_kubernetes_manifests.ts`\n- `src/platform/packages/shared/kbn-otel-demo/src/read_kibana_config.ts`\n-\n`src/platform/packages/shared/kbn-otel-semantic-conventions/__tests__/generate_semconv.test.ts`\n-\n`src/platform/packages/shared/kbn-otel-semantic-conventions/src/lib/generate_semconv.ts`\n-\n`src/platform/packages/shared/kbn-otel-semantic-conventions/src/sort_yaml.ts`\n-\n`x-pack/solutions/observability/plugins/observability_onboarding/server/routes/flow/route.ts`\n\n### Testing\n- All relevant Jest tests pass\n- Snapshot tests updated to reflect new YAML output format\n\n---\n\n**Note:** This is part of a larger migration effort. Other teams' files\nare in separate PRs. These changes were generated using Cursor.","sha":"95273155871d61a1c674823af4f26ba4102a441e"}}]}] BACKPORT--> Co-authored-by: Jeramy Soucy <jeramy.soucy@elastic.co>
1 parent d390f30 commit 889a481

8 files changed

Lines changed: 20 additions & 20 deletions

File tree

src/platform/packages/shared/kbn-otel-demo/src/demos/online_boutique/manifests.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* License v3.0 only", or the "Server Side Public License, v 1".
88
*/
99

10-
import yaml from 'js-yaml';
10+
import { stringify } from 'yaml';
1111
import type { DemoManifestGenerator, ManifestOptions } from '../../types';
1212

1313
/**
@@ -415,6 +415,6 @@ export const onlineBoutiqueManifests: DemoManifestGenerator = {
415415
});
416416
}
417417

418-
return manifests.map((m) => yaml.dump(m)).join('---\n');
418+
return manifests.map((m) => stringify(m)).join('---\n');
419419
},
420420
};

src/platform/packages/shared/kbn-otel-demo/src/demos/otel_demo/manifests.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* License v3.0 only", or the "Server Side Public License, v 1".
88
*/
99

10-
import yaml from 'js-yaml';
10+
import { stringify } from 'yaml';
1111
import type { DemoManifestGenerator, ManifestOptions } from '../../types';
1212

1313
import { HTTP_OTLP_SERVICES, getFlagdConfig } from './config';
@@ -470,6 +470,6 @@ export const otelDemoManifests: DemoManifestGenerator = {
470470
});
471471
}
472472

473-
return manifests.map((m) => yaml.dump(m)).join('---\n');
473+
return manifests.map((m) => stringify(m)).join('---\n');
474474
},
475475
};

src/platform/packages/shared/kbn-otel-demo/src/get_kubernetes_manifests.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* License v3.0 only", or the "Server Side Public License, v 1".
88
*/
99

10-
import yaml from 'js-yaml';
10+
import { stringify } from 'yaml';
1111

1212
const OTEL_DEMO_VERSION = '1.12.0';
1313
const NAMESPACE = 'otel-demo';
@@ -493,7 +493,7 @@ export function getKubernetesManifests(options: K8sManifestOptions): string {
493493
},
494494
});
495495

496-
return manifests.map((m) => yaml.dump(m)).join('---\n');
496+
return manifests.map((m) => stringify(m)).join('---\n');
497497
}
498498

499499
function createDeployment(opts: {

src/platform/packages/shared/kbn-otel-demo/src/read_kibana_config.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import type { ToolingLog } from '@kbn/tooling-log';
1111
import { unflattenObject } from '@kbn/object-utils';
1212
import fs from 'fs';
13-
import yaml from 'js-yaml';
13+
import { parse } from 'yaml';
1414
import { pickBy, identity } from 'lodash';
1515
import { resolve } from 'path';
1616

@@ -49,7 +49,7 @@ export const readKibanaConfig = (log: ToolingLog, configPath?: string): KibanaCo
4949
let serverConfigValues = {};
5050

5151
if (fs.existsSync(configPathToUse)) {
52-
const loaded = (yaml.load(fs.readFileSync(configPathToUse, 'utf8')) || {}) as Record<
52+
const loaded = (parse(fs.readFileSync(configPathToUse, 'utf8')) || {}) as Record<
5353
string,
5454
unknown
5555
>;

src/platform/packages/shared/kbn-otel-semantic-conventions/__tests__/generate_semconv.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
import * as fs from 'fs';
1111
import * as path from 'path';
12-
import * as yaml from 'js-yaml';
12+
import * as yaml from 'yaml';
1313
import { processSemconvYaml, extractFirstExample } from '../src/lib/generate_semconv';
1414
import type { ResolvedSemconvYaml, YamlGroup } from '../src/types/semconv_types';
1515

@@ -30,7 +30,7 @@ describe('OpenTelemetry Semantic Conventions Processing', () => {
3030

3131
const createYamlFile = (groups: YamlGroup[]) => {
3232
const yamlContent: ResolvedSemconvYaml = { groups };
33-
fs.writeFileSync(tempYamlFile, yaml.dump(yamlContent), 'utf8');
33+
fs.writeFileSync(tempYamlFile, yaml.stringify(yamlContent), 'utf8');
3434
};
3535

3636
describe('Deterministic Ordering for PR Diffs', () => {
@@ -135,7 +135,7 @@ describe('OpenTelemetry Semantic Conventions Processing', () => {
135135
});
136136

137137
it('handles missing groups property', () => {
138-
fs.writeFileSync(tempYamlFile, yaml.dump({ notGroups: [] }), 'utf8');
138+
fs.writeFileSync(tempYamlFile, yaml.stringify({ notGroups: [] }), 'utf8');
139139

140140
expect(() => processSemconvYaml(tempYamlFile)).toThrow(
141141
/missing or invalid "groups" property/

src/platform/packages/shared/kbn-otel-semantic-conventions/src/lib/generate_semconv.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*/
99

1010
import * as fs from 'fs';
11-
import * as yaml from 'js-yaml';
11+
import * as yaml from 'yaml';
1212
import { getHardcodedMappings } from './hardcoded_mappings';
1313
import { sortObjectByKeys } from './sorting_utils';
1414
import type {
@@ -254,7 +254,7 @@ function processMetricGroups(
254254
function loadYamlFile(filePath: string): ResolvedSemconvYaml {
255255
try {
256256
const fileContent = fs.readFileSync(filePath, 'utf8');
257-
const parsed = yaml.load(fileContent) as ResolvedSemconvYaml;
257+
const parsed = yaml.parse(fileContent) as ResolvedSemconvYaml;
258258

259259
if (!parsed || !parsed.groups || !Array.isArray(parsed.groups)) {
260260
throw new Error('Invalid YAML structure: missing or invalid "groups" property');

src/platform/packages/shared/kbn-otel-semantic-conventions/src/sort_yaml.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*/
99

1010
import * as fs from 'fs';
11-
import * as yaml from 'js-yaml';
11+
import { parse, stringify } from 'yaml';
1212

1313
interface YamlAttribute {
1414
name?: string;
@@ -61,7 +61,7 @@ export function sortYamlFile(inputFile: string, outputFile: string): void {
6161
try {
6262
// Read and parse the YAML file
6363
const yamlContent = fs.readFileSync(inputFile, 'utf8');
64-
const data = yaml.load(yamlContent) as ResolvedSemconvYaml;
64+
const data = parse(yamlContent) as ResolvedSemconvYaml;
6565

6666
if (!data || !data.groups) {
6767
throw new Error('Invalid YAML structure: missing "groups" property');
@@ -74,11 +74,11 @@ export function sortYamlFile(inputFile: string, outputFile: string): void {
7474
};
7575

7676
// Write the sorted YAML back to file
77-
const sortedYaml = yaml.dump(sortedData, {
77+
const sortedYaml = stringify(sortedData, {
7878
indent: 2,
7979
lineWidth: -1, // Disable line wrapping
80-
noRefs: true, // Disable anchors/references
81-
sortKeys: false, // We handle sorting manually for better control
80+
aliasDuplicateObjects: false, // Disable anchors/references
81+
sortMapEntries: false, // We handle sorting manually for better control
8282
});
8383

8484
fs.writeFileSync(outputFile, sortedYaml, 'utf8');

x-pack/solutions/observability/plugins/observability_onboarding/server/routes/flow/route.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
FleetUnauthorizedError,
1313
type PackageClient,
1414
} from '@kbn/fleet-plugin/server';
15-
import { dump } from 'js-yaml';
15+
import { stringify } from 'yaml';
1616
import type { PackageDataStreamTypes } from '@kbn/fleet-plugin/common/types';
1717
import { generateAgentConfigTar } from './generate_agent_config';
1818
import { createWiredStreamsRoutingProcessor } from './inject_wired_streams_routing';
@@ -508,7 +508,7 @@ async function ensureInstalledIntegrations(
508508
pkgName,
509509
pkgVersion: '1.0.0', // Custom integrations are always installed as version `1.0.0`
510510
title: pkgName,
511-
config: dump({
511+
config: stringify({
512512
inputs: [
513513
{
514514
id: `filestream-${pkgName}`,

0 commit comments

Comments
 (0)