diff --git a/.changeset/sunny-sloths-dance.md b/.changeset/sunny-sloths-dance.md new file mode 100644 index 00000000..54ccf617 --- /dev/null +++ b/.changeset/sunny-sloths-dance.md @@ -0,0 +1,7 @@ +--- +'@powersync/cli-core': patch +'@powersync/cli-schemas': patch +'powersync': patch +--- + +Update YAML schema reference towards Sync Config definitions. diff --git a/cli/package.json b/cli/package.json index ead5d3c1..3ca06b9f 100644 --- a/cli/package.json +++ b/cli/package.json @@ -24,7 +24,7 @@ "@powersync/management-types": "catalog:", "@powersync/service-sync-rules": "catalog:", "@powersync/service-types": "catalog:", - "@powersync/sync-config-tools": "^0.1.2", + "@powersync/sync-config-tools": "^0.1.4", "bson": "^7.2.0", "diff": "^8.0.4", "fastify": "^5.8.5", diff --git a/cli/src/commands/migrate/sync-rules.ts b/cli/src/commands/migrate/sync-rules.ts index e0b93d0d..fb42d525 100644 --- a/cli/src/commands/migrate/sync-rules.ts +++ b/cli/src/commands/migrate/sync-rules.ts @@ -52,7 +52,7 @@ export default class MigrateSyncRules extends SharedInstanceCommand { case 'success': { const outputContent = output.result; - await writeFile(syncOutputPath, YAML_SYNC_RULES_SCHEMA + outputContent); + await writeFile(syncOutputPath, `${YAML_SYNC_RULES_SCHEMA}\n${outputContent}`); this.log(ux.colorize('green', `Wrote ${syncOutputPath} with migrated sync streams.`)); break; } diff --git a/cli/test/commands/migrate.test.ts b/cli/test/commands/migrate.test.ts index 43fd146c..36f135a9 100644 --- a/cli/test/commands/migrate.test.ts +++ b/cli/test/commands/migrate.test.ts @@ -15,8 +15,7 @@ describe('migrate', () => { const outputFile = join(testDirectory, 'output.yaml'); writeFileSync( inputFile, - ` -bucket_definitions: + `bucket_definitions: user_lists: parameters: SELECT request.user_id() as user_id data: @@ -32,7 +31,7 @@ bucket_definitions: const transformed = readFileSync(outputFile).toString('utf8'); expect(transformed) .toStrictEqual(`# Adds YAML Schema support for VSCode users with the YAML extension installed. This enables features like validation and autocompletion based on the provided schema. -# yaml-language-server: $schema=https://unpkg.com/@powersync/service-sync-rules@latest/schema/sync_rules.json +# yaml-language-server: $schema=https://unpkg.com/@powersync/service-sync-rules@latest/schema/sync_config.json config: edition: 3 streams: diff --git a/examples/self-hosted/local-basic-supabase/powersync/sync-config.yaml b/examples/self-hosted/local-basic-supabase/powersync/sync-config.yaml index 3b26beeb..cb987c6d 100644 --- a/examples/self-hosted/local-basic-supabase/powersync/sync-config.yaml +++ b/examples/self-hosted/local-basic-supabase/powersync/sync-config.yaml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=https://unpkg.com/@powersync/service-sync-rules@latest/schema/sync_rules.json +# yaml-language-server: $schema=https://unpkg.com/@powersync/service-sync-rules@latest/schema/sync_config.json # # See Documentation for more information: # https://docs.powersync.com/sync/overview diff --git a/examples/self-hosted/local-postgres-node/powersync/sync-config.yaml b/examples/self-hosted/local-postgres-node/powersync/sync-config.yaml index 3b26beeb..cb987c6d 100644 --- a/examples/self-hosted/local-postgres-node/powersync/sync-config.yaml +++ b/examples/self-hosted/local-postgres-node/powersync/sync-config.yaml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=https://unpkg.com/@powersync/service-sync-rules@latest/schema/sync_rules.json +# yaml-language-server: $schema=https://unpkg.com/@powersync/service-sync-rules@latest/schema/sync_config.json # # See Documentation for more information: # https://docs.powersync.com/sync/overview diff --git a/examples/self-hosted/local-postgres/powersync/sync-config.yaml b/examples/self-hosted/local-postgres/powersync/sync-config.yaml index 3b26beeb..cb987c6d 100644 --- a/examples/self-hosted/local-postgres/powersync/sync-config.yaml +++ b/examples/self-hosted/local-postgres/powersync/sync-config.yaml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=https://unpkg.com/@powersync/service-sync-rules@latest/schema/sync_rules.json +# yaml-language-server: $schema=https://unpkg.com/@powersync/service-sync-rules@latest/schema/sync_config.json # # See Documentation for more information: # https://docs.powersync.com/sync/overview diff --git a/packages/cli-core/src/utils/yaml.ts b/packages/cli-core/src/utils/yaml.ts index a11da565..5fe9c840 100644 --- a/packages/cli-core/src/utils/yaml.ts +++ b/packages/cli-core/src/utils/yaml.ts @@ -3,7 +3,7 @@ import * as yaml from 'yaml'; export const YAML_SYNC_RULES_SCHEMA = /* yaml */ ` # Adds YAML Schema support for VSCode users with the YAML extension installed. This enables features like validation and autocompletion based on the provided schema. -# yaml-language-server: $schema=https://unpkg.com/@powersync/service-sync-rules@latest/schema/sync_rules.json +# yaml-language-server: $schema=https://unpkg.com/@powersync/service-sync-rules@latest/schema/sync_config.json `.trim(); export const YAML_SERVICE_SCHEMA = /* yaml */ ` diff --git a/packages/schemas/src/scripts/create-schemas.ts b/packages/schemas/src/scripts/create-schemas.ts index ac51e322..560ba499 100644 --- a/packages/schemas/src/scripts/create-schemas.ts +++ b/packages/schemas/src/scripts/create-schemas.ts @@ -1,15 +1,11 @@ -import { mkdirSync, readFileSync, writeFileSync } from 'node:fs'; +import _SyncSchema from '@powersync/service-sync-rules/schema/sync_config.json' with { type: 'json' }; +import { mkdirSync, writeFileSync } from 'node:fs'; import { dirname, join } from 'node:path'; import { fileURLToPath } from 'node:url'; import { CLIConfigSchema } from '../CLIConfig.js'; import { ServiceConfigSchema } from '../ServiceConfig.js'; -// todo: Import '@powersync/service-sync-rules/schema/sync_config.json' after https://github.com/powersync-ja/powersync-service/pull/824. -const syncRulesIndex = import.meta.resolve('@powersync/service-sync-rules'); // resolves to dist/index.js -const schemaFile = fileURLToPath(new URL('../schema/sync_rules.json', syncRulesIndex)); -const syncConfigSchema = JSON.parse(readFileSync(schemaFile, { encoding: 'utf8' })); - const __dirname = dirname(fileURLToPath(import.meta.url)); const schemaDir = join(__dirname, '..', '..', 'json-schema'); @@ -17,4 +13,4 @@ mkdirSync(schemaDir, { recursive: true }); writeFileSync(join(schemaDir, 'cli-config.json'), JSON.stringify(CLIConfigSchema, null, 2)); writeFileSync(join(schemaDir, 'service-config.json'), JSON.stringify(ServiceConfigSchema, null, 2)); -writeFileSync(join(schemaDir, 'sync-config.json'), JSON.stringify(syncConfigSchema, null, 2)); +writeFileSync(join(schemaDir, 'sync-config.json'), JSON.stringify(_SyncSchema, null, 2)); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d0982f14..5d85e5e0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,17 +16,17 @@ catalogs: specifier: ^0.3.0 version: 0.3.0 '@powersync/service-client': - specifier: ^0.0.10 - version: 0.0.10 + specifier: ^0.0.11 + version: 0.0.11 '@powersync/service-schema': - specifier: ^1.26.1 - version: 1.26.1 + specifier: ^1.27.0 + version: 1.27.0 '@powersync/service-sync-rules': - specifier: ^0.42.0 - version: 0.42.0 + specifier: ^0.43.0 + version: 0.43.0 '@powersync/service-types': - specifier: ^0.18.0 - version: 0.18.0 + specifier: ^0.19.0 + version: 0.19.0 oclif: specifier: ^6.0.2 version: 6.0.2 @@ -112,13 +112,13 @@ importers: version: 0.3.0 '@powersync/service-sync-rules': specifier: 'catalog:' - version: 0.42.0 + version: 0.43.0 '@powersync/service-types': specifier: 'catalog:' - version: 0.18.0 + version: 0.19.0 '@powersync/sync-config-tools': - specifier: ^0.1.2 - version: 0.1.2 + specifier: ^0.1.4 + version: 0.1.4 bson: specifier: ^7.2.0 version: 7.2.0 @@ -197,7 +197,7 @@ importers: version: 0.3.0 '@powersync/service-client': specifier: 'catalog:' - version: 0.0.10(@types/json-schema@7.0.15) + version: 0.0.11(@types/json-schema@7.0.15) keychain: specifier: ^1.5.0 version: 1.5.0 @@ -343,10 +343,10 @@ importers: version: 0.3.0 '@powersync/service-schema': specifier: 'catalog:' - version: 1.26.1 + version: 1.27.0 '@powersync/service-types': specifier: 'catalog:' - version: 0.18.0 + version: 0.19.0 ajv: specifier: ^8.20.0 version: 8.20.0 @@ -359,7 +359,7 @@ importers: devDependencies: '@powersync/service-sync-rules': specifier: 'catalog:' - version: 0.42.0 + version: 0.43.0 '@types/node': specifier: ^24.12.2 version: 24.12.4 @@ -414,10 +414,10 @@ importers: version: link:../../packages/schemas '@powersync/service-schema': specifier: 'catalog:' - version: 1.26.1 + version: 1.27.0 '@powersync/service-types': specifier: 'catalog:' - version: 0.18.0 + version: 0.19.0 yaml: specifier: ^2.8.3 version: 2.9.0 @@ -1474,23 +1474,26 @@ packages: '@powersync/management-types@0.3.0': resolution: {integrity: sha512-oweZ3vd3WcxPKvg7mWmoVpzC6/Axs/5cz2oBmYcBJCkKBkKq7aGJCjhoWN+zNO5wtPbywoGQ3IEuS1icG8jkXQ==} - '@powersync/service-client@0.0.10': - resolution: {integrity: sha512-0Jk5lO469smWIbBK72QoMN2Y1BX+th3ps5rQjh9VxQCZx7swaROpNStgGMZxLiVyc8ALrLCpRItxzq9hJFqWjQ==} + '@powersync/service-client@0.0.11': + resolution: {integrity: sha512-+OTdc0DolVWNlWyCjWTS7odftVhvh0Tgg+hOO0QIzd5SWp125j1XUgBN/csQFssWsoHvMlaFzTyjMPLx6okqMQ==} '@powersync/service-jsonbig@0.17.13': resolution: {integrity: sha512-S90x8xgYYaiNBi6pnBbSxqiZlXUhEDb10HfTs5maLPVYIlDKXG5YlhP1DVv/csFNCuIuMC1F5ABXnN2rNjfajg==} - '@powersync/service-schema@1.26.1': - resolution: {integrity: sha512-LG6zK/frilUEsBB31N3ID627JAKpu9rwnT+7Lj/TO68va2nOtj9xYPD/ZxmhcBotMhTVPbgbT1DMSQEzZnCQlg==} + '@powersync/service-schema@1.27.0': + resolution: {integrity: sha512-vDoKc5Cu+X3ZaHV6dhQoKh19Cbq0qOT5cv7/xI5hIWMIhf54NLEPd4vFS8C751h7kFZNWe3XruSXU71Nf3rhAg==} - '@powersync/service-sync-rules@0.42.0': - resolution: {integrity: sha512-mlErrW1ZCOwb+SnCptjSOE5s/iJ7ysXZjj+rsAp7oTBP6LJpVpP+nqUEmDzjO/L5g04smNctwFg+dn8awIcnZw==} + '@powersync/service-sync-rules@0.43.0': + resolution: {integrity: sha512-PJaBiYnqVMcJVvkzcwy0xMEzB4XHockfJNpK7zhJP/BcQbwWaH8tWVMJ0hrxkzx3T9npdo/mjYF75LI+XYIenA==} '@powersync/service-types@0.18.0': resolution: {integrity: sha512-dOUJmez35zkuwKFuAEiE7uhs9RYHGjL4YzJCSIs32eCkoYfRBhEMuVDfpvRvD+6IUHqbQTl4+S+D1txwSKfqLA==} - '@powersync/sync-config-tools@0.1.2': - resolution: {integrity: sha512-/K/FgVRvOLPZgREKHHf4C9WZ7macygzVSuqW2GvLHaFjbRaEtSgENrCqF06+JdPP14UxkrPkLCyqXfpj9yNVAQ==} + '@powersync/service-types@0.19.0': + resolution: {integrity: sha512-rSbHIr2vl01NuaKu9Wgy4tDiPB9NCLsNRjrOBZ5BSfOlO6gDzYx8I2qEUuCwIagF2OWihGc5Yzcdhc5pbKKlgA==} + + '@powersync/sync-config-tools@0.1.4': + resolution: {integrity: sha512-Ki0ImGMMrsNMABon1kISkoNbj4XAy9ZFcolEntcj9uZBj7e84mp0WgQO/ZpVpUlP35x7ndn90u+JJs7B1uWDag==} '@radix-ui/primitive@1.1.3': resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} @@ -7071,10 +7074,10 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - '@powersync/service-client@0.0.10(@types/json-schema@7.0.15)': + '@powersync/service-client@0.0.11(@types/json-schema@7.0.15)': dependencies: '@journeyapps-labs/common-sdk': 1.0.4(@types/json-schema@7.0.15) - '@powersync/service-types': 0.18.0 + '@powersync/service-types': 0.19.0 transitivePeerDependencies: - '@types/json-schema' - babel-plugin-macros @@ -7083,9 +7086,9 @@ snapshots: dependencies: lossless-json: 2.0.11 - '@powersync/service-schema@1.26.1': {} + '@powersync/service-schema@1.27.0': {} - '@powersync/service-sync-rules@0.42.0': + '@powersync/service-sync-rules@0.43.0': dependencies: '@powersync/service-jsonbig': 0.17.13 '@syncpoint/wkx': 0.5.2 @@ -7102,7 +7105,15 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - '@powersync/sync-config-tools@0.1.2': {} + '@powersync/service-types@0.19.0': + dependencies: + dedent: 1.7.2 + ts-codec: 1.3.0 + uri-js: 4.4.1 + transitivePeerDependencies: + - babel-plugin-macros + + '@powersync/sync-config-tools@0.1.4': {} '@radix-ui/primitive@1.1.3': {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index ec90c982..226d6406 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -28,10 +28,10 @@ catalog: '@oclif/core': ^4.10.6 '@powersync/management-client': ^0.1.7 '@powersync/management-types': ^0.3.0 - '@powersync/service-client': ^0.0.10 - '@powersync/service-schema': ^1.26.1 - '@powersync/service-sync-rules': ^0.42.0 - '@powersync/service-types': ^0.18.0 + '@powersync/service-client': ^0.0.11 + '@powersync/service-schema': ^1.27.0 + '@powersync/service-sync-rules': ^0.43.0 + '@powersync/service-types': ^0.19.0 oclif: ^6.0.2 patchedDependencies: