From 8639f4b6c4ffd36f99ca75b5827b917197badae9 Mon Sep 17 00:00:00 2001 From: NatalieShaked Date: Tue, 6 May 2025 17:57:15 +0300 Subject: [PATCH 01/11] feat: created vector detiler schema --- schemas/vector/detiler/v1.schema.json | 67 +++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 schemas/vector/detiler/v1.schema.json diff --git a/schemas/vector/detiler/v1.schema.json b/schemas/vector/detiler/v1.schema.json new file mode 100644 index 00000000..36013db7 --- /dev/null +++ b/schemas/vector/detiler/v1.schema.json @@ -0,0 +1,67 @@ +{ + "$id": "https://mapcolonies.com/vector/detiler/v1", + "type": "object", + "title": "vectorDetilerSchemaV1", + "description": "Vector's detiler schema", + "allOf": [ + { + "$ref": "https://mapcolonies.com/common/boilerplate/v2" + }, + { + "properties": { + "telemetry": { + "$ref": "#/definitions/metrics" + } + } + }, + { + "type": "object", + "required": ["redis"], + "properties": { + "redis": { + "$ref": "https://mapcolonies.com/common/redis/v1" + } + } + } + ], + "definitions": { + "metrics": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "x-env-value": "TELEMETRY_METRICS_ENABLED", + "default": false + }, + "url": { + "type": "string", + "x-env-value": "TELEMETRY_METRICS_URL", + "description": "The URL of the metrics server. could be http or https", + "pattern": "^https?:\/\/.*" + }, + "interval": { + "type": "integer", + "x-env-value": "TELEMETRY_METRICS_INTERVAL", + "description": "The interval in seconds to send metrics" + } + }, + "if": { + "properties": { + "enabled": { + "const": true + } + } + }, + "then": { + "required": ["url", "interval"] + }, + "else": { + "properties": { + "enabled": { + "const": false + } + } + } + } + } +} From b24b8db3f7a8617d3be222f95f12b9ee4c2ff3df Mon Sep 17 00:00:00 2001 From: NatalieShaked Date: Tue, 6 May 2025 19:39:31 +0300 Subject: [PATCH 02/11] fix: added missing configuration --- schemas/vector/detiler/v1.schema.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/schemas/vector/detiler/v1.schema.json b/schemas/vector/detiler/v1.schema.json index 36013db7..914e990b 100644 --- a/schemas/vector/detiler/v1.schema.json +++ b/schemas/vector/detiler/v1.schema.json @@ -27,6 +27,7 @@ "definitions": { "metrics": { "type": "object", + "description": "metrics configuration", "properties": { "enabled": { "type": "boolean", @@ -45,6 +46,7 @@ "description": "The interval in seconds to send metrics" } }, + "unevaluatedProperties": false, "if": { "properties": { "enabled": { From 659e5c79442cd3a2d955177c55f68f22ab834190 Mon Sep 17 00:00:00 2001 From: NatalieShaked Date: Tue, 6 May 2025 19:43:49 +0300 Subject: [PATCH 03/11] fix: removed required properties --- schemas/vector/detiler/v1.schema.json | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/schemas/vector/detiler/v1.schema.json b/schemas/vector/detiler/v1.schema.json index 914e990b..ca437c9d 100644 --- a/schemas/vector/detiler/v1.schema.json +++ b/schemas/vector/detiler/v1.schema.json @@ -45,24 +45,6 @@ "x-env-value": "TELEMETRY_METRICS_INTERVAL", "description": "The interval in seconds to send metrics" } - }, - "unevaluatedProperties": false, - "if": { - "properties": { - "enabled": { - "const": true - } - } - }, - "then": { - "required": ["url", "interval"] - }, - "else": { - "properties": { - "enabled": { - "const": false - } - } } } } From 6e96b52801cc383eec8a3a60ba7fa9b3ec592a09 Mon Sep 17 00:00:00 2001 From: Ofer <12687466+CptSchnitz@users.noreply.github.com> Date: Wed, 7 May 2025 09:25:11 +0300 Subject: [PATCH 04/11] feat(opala): added tracing config to opala cron (#94) --- .../cron/{v1.configs.json => v2.configs.json} | 6 +- schemas/infra/opala/cron/v2.schema.json | 101 ++++++++++++++++++ 2 files changed, 106 insertions(+), 1 deletion(-) rename schemas/infra/opala/cron/{v1.configs.json => v2.configs.json} (78%) create mode 100644 schemas/infra/opala/cron/v2.schema.json diff --git a/schemas/infra/opala/cron/v1.configs.json b/schemas/infra/opala/cron/v2.configs.json similarity index 78% rename from schemas/infra/opala/cron/v1.configs.json rename to schemas/infra/opala/cron/v2.configs.json index 7fbcf580..3d9abf84 100644 --- a/schemas/infra/opala/cron/v1.configs.json +++ b/schemas/infra/opala/cron/v2.configs.json @@ -6,7 +6,11 @@ "logger": { "level": "info", "prettyPrint": false - } + }, + "tracing": { + "$ref": { "configName": "common-tracing", "version": "latest" } + }, + "shared": {} }, "db": { "$ref": { "configName": "infra-opala-db", "version": "latest" } diff --git a/schemas/infra/opala/cron/v2.schema.json b/schemas/infra/opala/cron/v2.schema.json new file mode 100644 index 00000000..d50aa1cd --- /dev/null +++ b/schemas/infra/opala/cron/v2.schema.json @@ -0,0 +1,101 @@ +{ + "$id": "https://mapcolonies.com/infra/opala/cron/v2", + "description": "The opala cron service schema", + "title": "opalaCronSchemaV2", + "type": "object", + "allOf": [ + { + "type": "object", + "required": ["telemetry", "cron", "db"], + "properties": { + "telemetry": { + "$ref": "#/definitions/telemetry" + }, + "db": { + "$ref": "https://mapcolonies.com/common/db/full/v1" + }, + "cron": { + "$ref": "#/definitions/crons" + } + } + } + ], + "definitions": { + "crons": { + "type": "object", + "additionalProperties": false, + "anyOf": [ + { + "required": ["np"] + }, + { + "required": ["stage"] + }, + { + "required": ["prod"] + } + ], + "properties": { + "np": { + "$ref": "#/definitions/cron" + }, + "prod": { + "$ref": "#/definitions/cron" + }, + "stage": { + "$ref": "#/definitions/cron" + } + } + }, + "cron": { + "type": "object", + "required": ["pattern", "s3"], + "properties": { + "pattern": { + "type": "string", + "description": "The cron timing spec", + "examples": ["*/1 * * * *"] + }, + "s3": { + "type": "object", + "allOf": [ + { + "$ref": "https://mapcolonies.com/common/s3/partial/v1" + }, + { + "type": "object", + "required": ["key", "bucket"], + "properties": { + "key": { + "type": "string", + "description": "specific key of bundle inside s3", + "x-env-value": "S3_KEY" + }, + "bucket": { + "type": "string", + "description": "specific bucket name inside s3", + "x-env-value": "S3_BUCKET" + } + } + } + ] + } + } + }, + "telemetry": { + "type": "object", + "required": ["logger", "tracing", "shared"], + "properties": { + "logger": { + "$ref": "https://mapcolonies.com/common/telemetry/logger/v1" + }, + "tracing": { + "$ref": "https://mapcolonies.com/common/telemetry/tracing/v1" + }, + "shared": { + "$ref": "https://mapcolonies.com/common/telemetry/base/v1" + } + } + } + } +} From b1e03880656f70428925ed95d4ed9b8a79222d01 Mon Sep 17 00:00:00 2001 From: mapcolonies-devops <143094402+mapcolonies-devops@users.noreply.github.com> Date: Thu, 8 May 2025 07:48:07 +0300 Subject: [PATCH 05/11] chore(master): release 1.8.0 (#98) --- .release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index e894fd62..5eb41ee7 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1 +1 @@ -{".":"1.7.0"} +{".":"1.8.0"} diff --git a/CHANGELOG.md b/CHANGELOG.md index d8cd5229..4f9c263a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.8.0](https://github.com/MapColonies/schemas/compare/v1.7.0...v1.8.0) (2025-05-07) + + +### Features + +* **opala:** added tracing config to opala cron ([#94](https://github.com/MapColonies/schemas/issues/94)) ([6d86a6c](https://github.com/MapColonies/schemas/commit/6d86a6cfca86c27a2f2dd44a1a94e149e3c362e7)) + ## [1.7.0](https://github.com/MapColonies/schemas/compare/v1.6.0...v1.7.0) (2025-04-29) diff --git a/package-lock.json b/package-lock.json index b4bd269f..f84faf89 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@map-colonies/schemas", - "version": "1.7.0", + "version": "1.8.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@map-colonies/schemas", - "version": "1.7.0", + "version": "1.8.0", "license": "MIT", "devDependencies": { "@actions/core": "^1.10.1", diff --git a/package.json b/package.json index b6f1683a..a672fff4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@map-colonies/schemas", - "version": "1.7.0", + "version": "1.8.0", "description": "Package for all of MapColonies config schemas", "main": "./build/schemas/index.js", "repository": { From e10223d3a082e2ec62f8b9af54e02a0f911e2e23 Mon Sep 17 00:00:00 2001 From: ronenkapelian <72082238+ronenkapelian@users.noreply.github.com> Date: Tue, 1 Jul 2025 09:46:05 +0300 Subject: [PATCH 06/11] feat: add discriminator option to configAjv (#99) --- scripts/validate/core.mts | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/validate/core.mts b/scripts/validate/core.mts index 9c12d31a..3bb00db1 100644 --- a/scripts/validate/core.mts +++ b/scripts/validate/core.mts @@ -39,6 +39,7 @@ const configAjv = addFormats( }, keywords: ['x-env-value', 'x-populate-as-env', 'x-env-format'], useDefaults: true, + discriminator: true, addUsedSchema: false, }) ); From 1d6459b94587fcf4fd2ec34e7615fda02cf9e887 Mon Sep 17 00:00:00 2001 From: ronenkapelian <72082238+ronenkapelian@users.noreply.github.com> Date: Wed, 2 Jul 2025 09:17:42 +0300 Subject: [PATCH 07/11] fix: support single x-env-value providing (#101) --- scripts/build.mts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/build.mts b/scripts/build.mts index e335f3b6..717263d6 100644 --- a/scripts/build.mts +++ b/scripts/build.mts @@ -67,8 +67,9 @@ for await (const file of filesTreeGenerator(schemasFolder)) { // write the ts file with the generated schema await fsPromise.writeFile( typescriptFileName, - `import { FromSchema } from 'json-schema-to-ts'; + `import type { FromExtendedSchema } from "json-schema-to-ts"; import { typeSymbol } from '${path.join(relativePath, 'symbol.js')}'; +type CustomProps = {"x-env-value": string ;}; const exported = { [typeSymbol]: '' as unknown as intermediateSchemaType, ${stringifiedSchema.trimEnd().substring(1)} as const;\n`, @@ -112,7 +113,8 @@ for await (const file of filesTreeGenerator(schemasFolder)) { const schemaTs = 'const schema = ' + JSON.stringify(dereferencedSchema) + ' as const;'; - const intermediateSchemaType = 'type intermediateSchemaType = FromSchema;'; + const intermediateSchemaType = + 'type intermediateSchemaType = FromExtendedSchema;'; const schemaType = 'export type schemaType = (typeof exported)[typeof typeSymbol];'; From b568de801b98ed10ed8240dd7c17df4aaa578589 Mon Sep 17 00:00:00 2001 From: Ofer <12687466+CptSchnitz@users.noreply.github.com> Date: Mon, 7 Jul 2025 09:53:45 +0300 Subject: [PATCH 08/11] feat: added support for schemaId in config ref (#103) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- schemas/common/db/full/v1.configs.json | 2 +- schemas/common/s3/full/v1.configs.json | 2 +- schemas/infra/opala/cron/v2.configs.json | 6 +- schemas/infra/opala/manager/v1.configs.json | 6 +- scripts/validate/core.mts | 4 +- scripts/validate/validate.mts | 2 +- scripts/validate/validateConfigs.mts | 105 +++++++++++++++++--- 7 files changed, 104 insertions(+), 23 deletions(-) diff --git a/schemas/common/db/full/v1.configs.json b/schemas/common/db/full/v1.configs.json index 99ef4539..5c65af4b 100644 --- a/schemas/common/db/full/v1.configs.json +++ b/schemas/common/db/full/v1.configs.json @@ -2,7 +2,7 @@ { "name": "infra-opala-db", "value": { - "$ref": { "configName": "db-connection", "version": "latest" }, + "$ref": { "configName": "db-connection", "version": "latest", "schemaId": "https://mapcolonies.com/common/db/partial/v1" }, "database": "infra-auth-manager" } } diff --git a/schemas/common/s3/full/v1.configs.json b/schemas/common/s3/full/v1.configs.json index baed418f..9bb8c095 100644 --- a/schemas/common/s3/full/v1.configs.json +++ b/schemas/common/s3/full/v1.configs.json @@ -2,7 +2,7 @@ { "name": "infra-opala-s3", "value": { - "$ref": { "configName": "s3-connection", "version": "latest" }, + "$ref": { "configName": "s3-connection", "version": "latest", "schemaId": "https://mapcolonies.com/common/s3/partial/v1" }, "bucket": "infra-opala" } } diff --git a/schemas/infra/opala/cron/v2.configs.json b/schemas/infra/opala/cron/v2.configs.json index 3d9abf84..992e67ba 100644 --- a/schemas/infra/opala/cron/v2.configs.json +++ b/schemas/infra/opala/cron/v2.configs.json @@ -8,18 +8,18 @@ "prettyPrint": false }, "tracing": { - "$ref": { "configName": "common-tracing", "version": "latest" } + "$ref": { "configName": "common-tracing", "version": "latest", "schemaId": "https://mapcolonies.com/common/telemetry/tracing/v1" } }, "shared": {} }, "db": { - "$ref": { "configName": "infra-opala-db", "version": "latest" } + "$ref": { "configName": "infra-opala-db", "version": "latest", "schemaId": "https://mapcolonies.com/common/db/full/v1" } }, "cron": { "prod": { "pattern": "*/5 * * * *", "s3": { - "$ref": { "configName": "infra-opala-s3", "version": "latest" }, + "$ref": { "configName": "infra-opala-s3", "version": "latest", "schemaId": "https://mapcolonies.com/common/s3/full/v1" }, "key": "prod-bundle" } } diff --git a/schemas/infra/opala/manager/v1.configs.json b/schemas/infra/opala/manager/v1.configs.json index 7970442c..12b87d01 100644 --- a/schemas/infra/opala/manager/v1.configs.json +++ b/schemas/infra/opala/manager/v1.configs.json @@ -8,10 +8,12 @@ "prettyPrint": false }, "shared": {}, - "tracing": { "$ref": { "configName": "common-tracing", "version": "latest" } } + "tracing": { + "$ref": { "configName": "common-tracing", "version": "latest", "schemaId": "https://mapcolonies.com/common/telemetry/tracing/v1" } + } }, "db": { - "$ref": { "configName": "infra-opala-db", "version": "latest" } + "$ref": { "configName": "infra-opala-db", "version": "latest", "schemaId": "https://mapcolonies.com/common/db/full/v1" } } } } diff --git a/scripts/validate/core.mts b/scripts/validate/core.mts index 3bb00db1..86bb35fe 100644 --- a/scripts/validate/core.mts +++ b/scripts/validate/core.mts @@ -12,12 +12,14 @@ const addFormats = addFormatsImport.default; export type ConfigReference = { configName: string; version: 1 | 'latest'; + schemaId: string; }; const configRefSchema: JSONSchemaType = { - required: ['configName', 'version'], + required: ['configName', 'version', 'schemaId'], properties: { configName: { type: 'string' }, + schemaId: { type: 'string' }, version: { oneOf: [ { type: 'number', minimum: 1, maximum: 1 }, diff --git a/scripts/validate/validate.mts b/scripts/validate/validate.mts index 38955e8a..3fef42a1 100644 --- a/scripts/validate/validate.mts +++ b/scripts/validate/validate.mts @@ -3,7 +3,7 @@ import fs from 'node:fs'; import path from 'node:path'; import { AsyncLocalStorage } from 'node:async_hooks'; import AjvModule from 'ajv/dist/2019.js'; -import * as draft7MetaSchema from 'ajv/dist/refs/json-schema-draft-07.json' assert { type: 'json' }; +import * as draft7MetaSchema from 'ajv/dist/refs/json-schema-draft-07.json' with { type: 'json' }; import addFormats from 'ajv-formats'; import { $RefParser } from '@apidevtools/json-schema-ref-parser'; import { presult, result } from '../util/index.mjs'; diff --git a/scripts/validate/validateConfigs.mts b/scripts/validate/validateConfigs.mts index 613deb63..4de0c6ba 100644 --- a/scripts/validate/validateConfigs.mts +++ b/scripts/validate/validateConfigs.mts @@ -4,7 +4,7 @@ import * as posixPath from 'node:path/posix'; import * as path from 'node:path'; import { AsyncLocalStorage } from 'node:async_hooks'; import { betterAjvErrors } from '@apideck/better-ajv-errors'; -import * as configsSchema from '../schemas/configs.schema.json' assert { type: 'json' }; +import * as configsSchema from '../schemas/configs.schema.json' with { type: 'json' }; import AjvModule from 'ajv'; import { ErrorHandler } from '../util/errorHandling.mjs'; import { listConfigRefs, replaceRefs, validateConfig } from './core.mjs'; @@ -18,6 +18,7 @@ const fileAsyncStorage = new AsyncLocalStorage<{ configFilePath: string; schemaPath: string; schemaVersion: number; + schemaId: string; handleError: (msg: string) => void; schema?: any; configs?: configInstance[]; @@ -34,7 +35,41 @@ const configsFileValidator = new AjvModule.default({ allErrors: true, }).compile(configsSchema); -const seenConfigs = new Map(); +const seenConfigs = new Map(); + +/** + * Constructs a schema ID from the config file directory path. + * Converts file system path to schema URL format. + * @param directory - The directory path of the config file + * @param schemaVersion - The schema version number + * @returns The schema ID in URL format + */ +function constructSchemaId(directory: string, schemaVersion: number): string { + // Convert directory path like 'schemas/common/boilerplate' to 'https://mapcolonies.com/common/boilerplate/v1' + const pathParts = directory.split(path.sep); + const schemasIndex = pathParts.findIndex((part) => part === 'schemas'); + if (schemasIndex === -1) { + throw new Error('Invalid schema directory structure'); + } + + const schemaParts = pathParts.slice(schemasIndex + 1); + const schemaPath = schemaParts.join('/'); + return `https://mapcolonies.com/${schemaPath}/v${schemaVersion}`; +} + +/** + * Removes the version part from a schema ID to get the base schema identifier. + * @param schemaId - The full schema ID (e.g., 'https://mapcolonies.com/common/db/v1') + * @returns The base schema ID without version (e.g., 'https://mapcolonies.com/common/db') + */ +function removeSchemaVersion(schemaId: string): string { + // Remove the last part of the schemaId, which is the version + const lastSlashIndex = schemaId.lastIndexOf('/'); + if (lastSlashIndex === -1) { + return schemaId; + } + return schemaId.substring(0, lastSlashIndex); +} async function validateConfigInstance() { const fileContext = fileAsyncStorage.getStore(); @@ -57,7 +92,7 @@ async function validateConfigInstance() { } function listAllRefs(config: any): Parameters[1] { - const refNames = new Map(); + const refNames = new Map(); function inner(value: any) { const refList = listConfigRefs(value); @@ -67,12 +102,20 @@ function listAllRefs(config: any): Parameters[1] { } for (const ref of refList) { - const config = seenConfigs.get(ref.configName); - if (!config) { + const configEntries = seenConfigs.get(ref.configName); + if (!configEntries || configEntries.length === 0) { throw new Error(`The config ${ref.configName} does not exist`); } - refNames.set(ref.configName, ref.version); - inner(config); + + // Find the config entry with the matching schemaId + const matchingConfigEntry = configEntries.find((entry) => entry.schemaId === ref.schemaId); + if (!matchingConfigEntry) { + const availableSchemaIds = configEntries.map((entry) => entry.schemaId).join(', '); + throw new Error(`The config ${ref.configName} does not exist with schemaId ${ref.schemaId}. Available schemaIds: ${availableSchemaIds}`); + } + + refNames.set(ref.configName, { version: ref.version, schemaId: ref.schemaId }); + inner(matchingConfigEntry.value); } } @@ -80,8 +123,23 @@ function listAllRefs(config: any): Parameters[1] { const result: Parameters[1] = []; - for (const [configName, version] of refNames.entries()) { - result.push({ configName, config: seenConfigs.get(configName), version }); + for (const [configName, refInfo] of refNames.entries()) { + const configEntries = seenConfigs.get(configName); + if (!configEntries || configEntries.length === 0) { + throw new Error(`Config ${configName} not found`); + } + + const matchingConfigEntry = configEntries.find((entry) => entry.schemaId === refInfo.schemaId); + if (!matchingConfigEntry) { + throw new Error(`Config ${configName} not found with schemaId ${refInfo.schemaId}`); + } + + result.push({ + configName, + config: matchingConfigEntry.value, + version: refInfo.version, + schemaId: refInfo.schemaId, + }); } return result; @@ -97,8 +155,10 @@ async function forEachConfigFileWithContext( const fileNameParts = configFile.fileName.split('.'); const schemaPath = posixPath.join(configFile.directory, `${fileNameParts[0]}.schema.json`); const configFilePath = path.join(configFile.directory, configFile.fileName); + const schemaVersion = parseInt(fileNameParts[0].substring(1)); + const schemaId = constructSchemaId(configFile.directory, schemaVersion); - await fileAsyncStorage.run({ schemaPath, schemaVersion: parseInt(fileNameParts[0].substring(1)), configFilePath, handleError }, async () => { + await fileAsyncStorage.run({ schemaPath, schemaVersion, configFilePath, schemaId, handleError }, async () => { await action(...args); }); } @@ -173,11 +233,28 @@ async function validateConfigNames(): Promise { } for (const { name, value } of fileContext.configs) { - if (seenConfigs.has(name)) { - fileContext.handleError(`Config name ${name} is not unique`); - return false; + const existingConfigs = seenConfigs.get(name); + if (existingConfigs && existingConfigs.length > 0) { + // Config name must be unique between different schemas, but can repeat under the same schema with different version + const currentBaseSchema = removeSchemaVersion(fileContext.schemaId); + + for (const existingConfig of existingConfigs) { + const existingBaseSchema = removeSchemaVersion(existingConfig.schemaId); + + if (existingBaseSchema !== currentBaseSchema) { + fileContext.handleError( + `Config name ${name} is not unique between different schemas. It exists in schema ${existingBaseSchema} and ${currentBaseSchema}` + ); + return false; + } + } + + // Add to existing array + existingConfigs.push({ value, schemaId: fileContext.schemaId }); + } else { + // Create new array for this config name + seenConfigs.set(name, [{ value, schemaId: fileContext.schemaId }]); } - seenConfigs.set(name, value); } return true; From be4658908ac1d0b297b4e5b60d81fa92052943f5 Mon Sep 17 00:00:00 2001 From: mapcolonies-devops <143094402+mapcolonies-devops@users.noreply.github.com> Date: Mon, 7 Jul 2025 09:56:04 +0300 Subject: [PATCH 09/11] chore(master): release 1.9.0 (#100) --- .release-please-manifest.json | 2 +- CHANGELOG.md | 13 +++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 5eb41ee7..25a7622e 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1 +1 @@ -{".":"1.8.0"} +{".":"1.9.0"} diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f9c263a..8c6c7a95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [1.9.0](https://github.com/MapColonies/schemas/compare/v1.8.0...v1.9.0) (2025-07-07) + + +### Features + +* add discriminator option to configAjv ([#99](https://github.com/MapColonies/schemas/issues/99)) ([d3c20ab](https://github.com/MapColonies/schemas/commit/d3c20abbba0526aef33a93f51a43238d3059de5f)) +* added support for schemaId in config ref ([#103](https://github.com/MapColonies/schemas/issues/103)) ([f6a6379](https://github.com/MapColonies/schemas/commit/f6a637989a9d1b2fbb65c0493155af29f6b240c9)) + + +### Bug Fixes + +* support single x-env-value providing ([#101](https://github.com/MapColonies/schemas/issues/101)) ([c9aff84](https://github.com/MapColonies/schemas/commit/c9aff84a391c3c59be1feb72af69ce2c7c05b25f)) + ## [1.8.0](https://github.com/MapColonies/schemas/compare/v1.7.0...v1.8.0) (2025-05-07) diff --git a/package-lock.json b/package-lock.json index f84faf89..4394aa32 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@map-colonies/schemas", - "version": "1.8.0", + "version": "1.9.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@map-colonies/schemas", - "version": "1.8.0", + "version": "1.9.0", "license": "MIT", "devDependencies": { "@actions/core": "^1.10.1", diff --git a/package.json b/package.json index a672fff4..087f52f2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@map-colonies/schemas", - "version": "1.8.0", + "version": "1.9.0", "description": "Package for all of MapColonies config schemas", "main": "./build/schemas/index.js", "repository": { From c4c4d24eb9c6a73be4cc0be5c8a248a35fbf4b1f Mon Sep 17 00:00:00 2001 From: NatalieShaked <100478642+NatalieShaked@users.noreply.github.com> Date: Mon, 7 Jul 2025 07:57:50 +0000 Subject: [PATCH 10/11] chore: rebase to master. added description --- schemas/vector/detiler/v1.schema.json | 1 + 1 file changed, 1 insertion(+) diff --git a/schemas/vector/detiler/v1.schema.json b/schemas/vector/detiler/v1.schema.json index ca437c9d..515c8eed 100644 --- a/schemas/vector/detiler/v1.schema.json +++ b/schemas/vector/detiler/v1.schema.json @@ -32,6 +32,7 @@ "enabled": { "type": "boolean", "x-env-value": "TELEMETRY_METRICS_ENABLED", + "description": "Indicate if Telemetry metrics should be sent", "default": false }, "url": { From 88ba434541775391c2fbec08f0ecc1d3e4401cf1 Mon Sep 17 00:00:00 2001 From: NatalieShaked Date: Mon, 11 Aug 2025 17:08:41 +0300 Subject: [PATCH 11/11] fix: grammar error --- schemas/vector/detiler/v1.schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schemas/vector/detiler/v1.schema.json b/schemas/vector/detiler/v1.schema.json index 515c8eed..c1093ca0 100644 --- a/schemas/vector/detiler/v1.schema.json +++ b/schemas/vector/detiler/v1.schema.json @@ -32,7 +32,7 @@ "enabled": { "type": "boolean", "x-env-value": "TELEMETRY_METRICS_ENABLED", - "description": "Indicate if Telemetry metrics should be sent", + "description": "Indicates if Telemetry metrics should be sent", "default": false }, "url": {