diff --git a/implementations/javascript/packages/schema-cli/.gitignore b/implementations/javascript/packages/schema-cli/.gitignore new file mode 100644 index 0000000..d21f3bc --- /dev/null +++ b/implementations/javascript/packages/schema-cli/.gitignore @@ -0,0 +1,2 @@ +dist/ +lib/ diff --git a/implementations/javascript/packages/schema-cli/.npmignore b/implementations/javascript/packages/schema-cli/.npmignore new file mode 100644 index 0000000..e69de29 diff --git a/implementations/javascript/packages/schema-cli/.yarnrc b/implementations/javascript/packages/schema-cli/.yarnrc new file mode 100644 index 0000000..29d68d6 --- /dev/null +++ b/implementations/javascript/packages/schema-cli/.yarnrc @@ -0,0 +1 @@ +version-tag-prefix javascript-@preserves/schema-cli@ diff --git a/implementations/javascript/packages/schema-cli/README.md b/implementations/javascript/packages/schema-cli/README.md new file mode 100644 index 0000000..41d5c55 --- /dev/null +++ b/implementations/javascript/packages/schema-cli/README.md @@ -0,0 +1 @@ +# Preserves Schema for TypeScript/JavaScript: Command-line tools diff --git a/implementations/javascript/packages/schema/bin/preserves-schema-ts.js b/implementations/javascript/packages/schema-cli/bin/preserves-schema-ts.js similarity index 100% rename from implementations/javascript/packages/schema/bin/preserves-schema-ts.js rename to implementations/javascript/packages/schema-cli/bin/preserves-schema-ts.js diff --git a/implementations/javascript/packages/schema/bin/preserves-schemac.js b/implementations/javascript/packages/schema-cli/bin/preserves-schemac.js similarity index 100% rename from implementations/javascript/packages/schema/bin/preserves-schemac.js rename to implementations/javascript/packages/schema-cli/bin/preserves-schemac.js diff --git a/implementations/javascript/packages/schema-cli/package.json b/implementations/javascript/packages/schema-cli/package.json new file mode 100644 index 0000000..9374815 --- /dev/null +++ b/implementations/javascript/packages/schema-cli/package.json @@ -0,0 +1,39 @@ +{ + "name": "@preserves/schema-cli", + "version": "0.990.1", + "description": "Command-line tools for Preserves Schema", + "homepage": "https://gitlab.com/preserves/preserves", + "license": "Apache-2.0", + "publishConfig": { + "access": "public" + }, + "repository": "gitlab:preserves/preserves", + "author": "Tony Garnock-Jones ", + "scripts": { + "clean": "rm -rf lib dist", + "prepare": "yarn compile && yarn rollup", + "compile": "tsc", + "compile:watch": "yarn compile -w", + "rollup": "rollup -c", + "rollup:watch": "yarn rollup -w", + "test": "true", + "veryclean": "yarn run clean && rm -rf node_modules" + }, + "bin": { + "preserves-schema-ts": "./bin/preserves-schema-ts.js", + "preserves-schemac": "./bin/preserves-schemac.js" + }, + "devDependencies": { + "@types/glob": "^7.1", + "@types/minimatch": "^3.0" + }, + "dependencies": { + "@preserves/core": "^0.990.0", + "@preserves/schema": "^0.990.1", + "chalk": "^4.1", + "chokidar": "^3.5", + "commander": "^7.2", + "glob": "^7.1", + "minimatch": "^3.0" + } +} diff --git a/implementations/javascript/packages/schema-cli/rollup.config.mjs b/implementations/javascript/packages/schema-cli/rollup.config.mjs new file mode 100644 index 0000000..be21d34 --- /dev/null +++ b/implementations/javascript/packages/schema-cli/rollup.config.mjs @@ -0,0 +1,17 @@ +import terser from '@rollup/plugin-terser'; + +function cli(name) { + return { + input: `lib/bin/${name}.js`, + output: [{file: `dist/bin/${name}.js`, format: 'commonjs'}], + external: [ + '@preserves/core', + '@preserves/schema', + ], + }; +} + +export default [ + cli('preserves-schema-ts'), + cli('preserves-schemac'), +]; diff --git a/implementations/javascript/packages/schema/src/bin/cli-utils.ts b/implementations/javascript/packages/schema-cli/src/bin/cli-utils.ts similarity index 98% rename from implementations/javascript/packages/schema/src/bin/cli-utils.ts rename to implementations/javascript/packages/schema-cli/src/bin/cli-utils.ts index 7e71e8d..50bc9fa 100644 --- a/implementations/javascript/packages/schema/src/bin/cli-utils.ts +++ b/implementations/javascript/packages/schema-cli/src/bin/cli-utils.ts @@ -1,10 +1,9 @@ import fs from 'fs'; import path from 'path'; import { glob } from 'glob'; -import { IdentitySet, formatPosition, Position } from '@preserves/core'; -import { readSchema } from '../reader'; import chalk from 'chalk'; -import * as M from '../meta'; +import { IdentitySet, formatPosition, Position } from '@preserves/core'; +import { readSchema, Meta as M } from '@preserves/schema'; export interface Diagnostic { type: 'warn' | 'error'; diff --git a/implementations/javascript/packages/schema/src/bin/preserves-schema-ts.ts b/implementations/javascript/packages/schema-cli/src/bin/preserves-schema-ts.ts similarity index 99% rename from implementations/javascript/packages/schema/src/bin/preserves-schema-ts.ts rename to implementations/javascript/packages/schema-cli/src/bin/preserves-schema-ts.ts index 337af94..b00a90b 100644 --- a/implementations/javascript/packages/schema/src/bin/preserves-schema-ts.ts +++ b/implementations/javascript/packages/schema-cli/src/bin/preserves-schema-ts.ts @@ -1,9 +1,8 @@ -import { compile } from '../index'; import fs from 'fs'; import path from 'path'; import minimatch from 'minimatch'; import { Command } from 'commander'; -import * as M from '../meta'; +import { compile, Meta as M } from '@preserves/schema'; import chalk from 'chalk'; import { is, Position } from '@preserves/core'; import chokidar from 'chokidar'; diff --git a/implementations/javascript/packages/schema/src/bin/preserves-schemac.ts b/implementations/javascript/packages/schema-cli/src/bin/preserves-schemac.ts similarity index 97% rename from implementations/javascript/packages/schema/src/bin/preserves-schemac.ts rename to implementations/javascript/packages/schema-cli/src/bin/preserves-schemac.ts index 0c3025f..ca620c3 100644 --- a/implementations/javascript/packages/schema/src/bin/preserves-schemac.ts +++ b/implementations/javascript/packages/schema-cli/src/bin/preserves-schemac.ts @@ -2,7 +2,7 @@ import { Command } from 'commander'; import { canonicalEncode, KeyedDictionary, underlying } from '@preserves/core'; import fs from 'fs'; import path from 'path'; -import * as M from '../meta'; +import { Meta as M } from '@preserves/schema'; import { expandInputGlob, formatFailures } from './cli-utils'; export type CommandLineArguments = { diff --git a/implementations/javascript/packages/schema-cli/tsconfig.json b/implementations/javascript/packages/schema-cli/tsconfig.json new file mode 100644 index 0000000..299625c --- /dev/null +++ b/implementations/javascript/packages/schema-cli/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["es2019", "DOM"], + "declaration": true, + "baseUrl": "./src", + "rootDir": "./src", + "outDir": "./lib", + "declarationDir": "./lib", + "esModuleInterop": true, + "moduleResolution": "node", + "sourceMap": true, + "strict": true + }, + "include": ["src/**/*"] +} diff --git a/implementations/javascript/packages/schema/README.md b/implementations/javascript/packages/schema/README.md index 798d56b..0bd77ef 100644 --- a/implementations/javascript/packages/schema/README.md +++ b/implementations/javascript/packages/schema/README.md @@ -2,3 +2,7 @@ This is an implementation of [Preserves Schema](https://preserves.dev/preserves-schema.html) for TypeScript and JavaScript. + +This package implements a Schema runtime and a Schema-to-TypeScript compiler, but offers no +command line interfaces. See `@preserves/schema-cli` for command-line tools for working with +Schema and compiling from Schema to TypeScript. diff --git a/implementations/javascript/packages/schema/package.json b/implementations/javascript/packages/schema/package.json index 07e8c42..12339ba 100644 --- a/implementations/javascript/packages/schema/package.json +++ b/implementations/javascript/packages/schema/package.json @@ -1,6 +1,6 @@ { "name": "@preserves/schema", - "version": "0.990.0", + "version": "0.990.1", "description": "Schema support for Preserves data serialization format", "homepage": "https://gitlab.com/preserves/preserves", "license": "Apache-2.0", @@ -13,7 +13,7 @@ "types": "lib/index.d.ts", "author": "Tony Garnock-Jones ", "scripts": { - "regenerate": "rm -rf ./src/gen && yarn copy-schema && ./bin/preserves-schema-ts.js --output ./src/gen ./dist:schema.prs", + "regenerate": "rm -rf ./src/gen && yarn copy-schema && ../schema-cli/bin/preserves-schema-ts.js --output ./src/gen ./dist:schema.prs", "clean": "rm -rf lib dist", "prepare": "yarn compile && yarn rollup && yarn copy-schema", "compile": "tsc", @@ -25,18 +25,7 @@ "test:watch": "jest --watch", "veryclean": "yarn run clean && rm -rf node_modules" }, - "bin": { - "preserves-schema-ts": "./bin/preserves-schema-ts.js", - "preserves-schemac": "./bin/preserves-schemac.js" - }, "dependencies": { - "@preserves/core": "^0.990.0", - "@types/glob": "^7.1", - "@types/minimatch": "^3.0", - "chalk": "^4.1", - "chokidar": "^3.5", - "commander": "^7.2", - "glob": "^7.1", - "minimatch": "^3.0" + "@preserves/core": "^0.990.0" } } diff --git a/implementations/javascript/packages/schema/rollup.config.mjs b/implementations/javascript/packages/schema/rollup.config.mjs index 8195d34..9653e8b 100644 --- a/implementations/javascript/packages/schema/rollup.config.mjs +++ b/implementations/javascript/packages/schema/rollup.config.mjs @@ -31,13 +31,6 @@ function cli(name) { output: [{file: `dist/bin/${name}.js`, format: 'commonjs'}], external: [ '@preserves/core', - 'chalk', - 'chokidar', - 'fs', - 'glob', - 'minimatch', - 'path', - 'commander', ], }; } @@ -53,6 +46,4 @@ export default [ ], external: ['@preserves/core'], }, - cli('preserves-schema-ts'), - cli('preserves-schemac'), ]; diff --git a/implementations/javascript/watchall b/implementations/javascript/watchall index 4b1fcf9..fe0d265 100755 --- a/implementations/javascript/watchall +++ b/implementations/javascript/watchall @@ -20,5 +20,7 @@ open "cd packages/core; yarn run test:watch" open "cd packages/schema; yarn run compile:watch" open "cd packages/schema; yarn run rollup:watch" open "cd packages/schema; yarn run test:watch" +open "cd packages/schema-cli; yarn run compile:watch" +open "cd packages/schema-cli; yarn run rollup:watch" tmux select-layout even-vertical