@contractspec/lib.plugins 1.57.0 → 1.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,59 @@
1
+ // src/registry.ts
2
+ class SimpleRegistry {
3
+ entries = new Map;
4
+ register(entry) {
5
+ this.entries.set(entry.id, entry);
6
+ }
7
+ list() {
8
+ return Array.from(this.entries.values());
9
+ }
10
+ }
11
+
12
+ class PluginRegistries {
13
+ generators;
14
+ validators;
15
+ adapters;
16
+ formatters;
17
+ registryResolvers;
18
+ constructor() {
19
+ this.generators = new SimpleRegistry;
20
+ this.validators = new SimpleRegistry;
21
+ this.adapters = new SimpleRegistry;
22
+ this.formatters = new SimpleRegistry;
23
+ this.registryResolvers = new SimpleRegistry;
24
+ }
25
+ }
26
+ var defaultPluginRegistryConfig = {
27
+ plugins: [],
28
+ registry: {
29
+ resolutionOrder: ["workspace", "npm", "remote"],
30
+ allowPrerelease: false,
31
+ sources: {}
32
+ }
33
+ };
34
+
35
+ // src/config.ts
36
+ function mergePluginConfig(config) {
37
+ return {
38
+ ...defaultPluginRegistryConfig,
39
+ ...config,
40
+ registry: {
41
+ ...defaultPluginRegistryConfig.registry ?? {
42
+ resolutionOrder: ["workspace", "npm", "remote"]
43
+ },
44
+ ...config?.registry,
45
+ resolutionOrder: config?.registry?.resolutionOrder ?? defaultPluginRegistryConfig.registry?.resolutionOrder ?? [
46
+ "workspace",
47
+ "npm",
48
+ "remote"
49
+ ],
50
+ sources: {
51
+ ...defaultPluginRegistryConfig.registry?.sources ?? {},
52
+ ...config?.registry?.sources ?? {}
53
+ }
54
+ }
55
+ };
56
+ }
57
+ export {
58
+ mergePluginConfig
59
+ };
@@ -0,0 +1,61 @@
1
+ // src/registry.ts
2
+ class SimpleRegistry {
3
+ entries = new Map;
4
+ register(entry) {
5
+ this.entries.set(entry.id, entry);
6
+ }
7
+ list() {
8
+ return Array.from(this.entries.values());
9
+ }
10
+ }
11
+
12
+ class PluginRegistries {
13
+ generators;
14
+ validators;
15
+ adapters;
16
+ formatters;
17
+ registryResolvers;
18
+ constructor() {
19
+ this.generators = new SimpleRegistry;
20
+ this.validators = new SimpleRegistry;
21
+ this.adapters = new SimpleRegistry;
22
+ this.formatters = new SimpleRegistry;
23
+ this.registryResolvers = new SimpleRegistry;
24
+ }
25
+ }
26
+ var defaultPluginRegistryConfig = {
27
+ plugins: [],
28
+ registry: {
29
+ resolutionOrder: ["workspace", "npm", "remote"],
30
+ allowPrerelease: false,
31
+ sources: {}
32
+ }
33
+ };
34
+
35
+ // src/config.ts
36
+ function mergePluginConfig(config) {
37
+ return {
38
+ ...defaultPluginRegistryConfig,
39
+ ...config,
40
+ registry: {
41
+ ...defaultPluginRegistryConfig.registry ?? {
42
+ resolutionOrder: ["workspace", "npm", "remote"]
43
+ },
44
+ ...config?.registry,
45
+ resolutionOrder: config?.registry?.resolutionOrder ?? defaultPluginRegistryConfig.registry?.resolutionOrder ?? [
46
+ "workspace",
47
+ "npm",
48
+ "remote"
49
+ ],
50
+ sources: {
51
+ ...defaultPluginRegistryConfig.registry?.sources ?? {},
52
+ ...config?.registry?.sources ?? {}
53
+ }
54
+ }
55
+ };
56
+ }
57
+ export {
58
+ mergePluginConfig,
59
+ defaultPluginRegistryConfig,
60
+ PluginRegistries
61
+ };
@@ -0,0 +1,37 @@
1
+ // src/registry.ts
2
+ class SimpleRegistry {
3
+ entries = new Map;
4
+ register(entry) {
5
+ this.entries.set(entry.id, entry);
6
+ }
7
+ list() {
8
+ return Array.from(this.entries.values());
9
+ }
10
+ }
11
+
12
+ class PluginRegistries {
13
+ generators;
14
+ validators;
15
+ adapters;
16
+ formatters;
17
+ registryResolvers;
18
+ constructor() {
19
+ this.generators = new SimpleRegistry;
20
+ this.validators = new SimpleRegistry;
21
+ this.adapters = new SimpleRegistry;
22
+ this.formatters = new SimpleRegistry;
23
+ this.registryResolvers = new SimpleRegistry;
24
+ }
25
+ }
26
+ var defaultPluginRegistryConfig = {
27
+ plugins: [],
28
+ registry: {
29
+ resolutionOrder: ["workspace", "npm", "remote"],
30
+ allowPrerelease: false,
31
+ sources: {}
32
+ }
33
+ };
34
+ export {
35
+ defaultPluginRegistryConfig,
36
+ PluginRegistries
37
+ };
File without changes
@@ -0,0 +1,3 @@
1
+ import type { PluginRegistryConfig } from './types.js';
2
+ export declare function mergePluginConfig(config?: Partial<PluginRegistryConfig>): PluginRegistryConfig;
3
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGvD,wBAAgB,iBAAiB,CAC/B,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACrC,oBAAoB,CAqBtB"}
package/dist/config.js ADDED
@@ -0,0 +1,60 @@
1
+ // @bun
2
+ // src/registry.ts
3
+ class SimpleRegistry {
4
+ entries = new Map;
5
+ register(entry) {
6
+ this.entries.set(entry.id, entry);
7
+ }
8
+ list() {
9
+ return Array.from(this.entries.values());
10
+ }
11
+ }
12
+
13
+ class PluginRegistries {
14
+ generators;
15
+ validators;
16
+ adapters;
17
+ formatters;
18
+ registryResolvers;
19
+ constructor() {
20
+ this.generators = new SimpleRegistry;
21
+ this.validators = new SimpleRegistry;
22
+ this.adapters = new SimpleRegistry;
23
+ this.formatters = new SimpleRegistry;
24
+ this.registryResolvers = new SimpleRegistry;
25
+ }
26
+ }
27
+ var defaultPluginRegistryConfig = {
28
+ plugins: [],
29
+ registry: {
30
+ resolutionOrder: ["workspace", "npm", "remote"],
31
+ allowPrerelease: false,
32
+ sources: {}
33
+ }
34
+ };
35
+
36
+ // src/config.ts
37
+ function mergePluginConfig(config) {
38
+ return {
39
+ ...defaultPluginRegistryConfig,
40
+ ...config,
41
+ registry: {
42
+ ...defaultPluginRegistryConfig.registry ?? {
43
+ resolutionOrder: ["workspace", "npm", "remote"]
44
+ },
45
+ ...config?.registry,
46
+ resolutionOrder: config?.registry?.resolutionOrder ?? defaultPluginRegistryConfig.registry?.resolutionOrder ?? [
47
+ "workspace",
48
+ "npm",
49
+ "remote"
50
+ ],
51
+ sources: {
52
+ ...defaultPluginRegistryConfig.registry?.sources ?? {},
53
+ ...config?.registry?.sources ?? {}
54
+ }
55
+ }
56
+ };
57
+ }
58
+ export {
59
+ mergePluginConfig
60
+ };
@@ -0,0 +1,4 @@
1
+ export type { AdapterCapability, AdapterRegistry, ContractSpecPlugin, FormatterCapability, FormatterRegistry, GeneratorCapability, GeneratorRegistry, PluginCapabilityType, PluginContext, PluginMeta, PluginRegistryConfig, PluginRegistryItem, RegistryResolverCapability, RegistryResolverRegistry, SpecRegistryEntry, ValidatorCapability, ValidatorRegistry, } from './types.js';
2
+ export { PluginRegistries, defaultPluginRegistryConfig } from './registry.js';
3
+ export { mergePluginConfig } from './config.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,62 @@
1
+ // @bun
2
+ // src/registry.ts
3
+ class SimpleRegistry {
4
+ entries = new Map;
5
+ register(entry) {
6
+ this.entries.set(entry.id, entry);
7
+ }
8
+ list() {
9
+ return Array.from(this.entries.values());
10
+ }
11
+ }
12
+
13
+ class PluginRegistries {
14
+ generators;
15
+ validators;
16
+ adapters;
17
+ formatters;
18
+ registryResolvers;
19
+ constructor() {
20
+ this.generators = new SimpleRegistry;
21
+ this.validators = new SimpleRegistry;
22
+ this.adapters = new SimpleRegistry;
23
+ this.formatters = new SimpleRegistry;
24
+ this.registryResolvers = new SimpleRegistry;
25
+ }
26
+ }
27
+ var defaultPluginRegistryConfig = {
28
+ plugins: [],
29
+ registry: {
30
+ resolutionOrder: ["workspace", "npm", "remote"],
31
+ allowPrerelease: false,
32
+ sources: {}
33
+ }
34
+ };
35
+
36
+ // src/config.ts
37
+ function mergePluginConfig(config) {
38
+ return {
39
+ ...defaultPluginRegistryConfig,
40
+ ...config,
41
+ registry: {
42
+ ...defaultPluginRegistryConfig.registry ?? {
43
+ resolutionOrder: ["workspace", "npm", "remote"]
44
+ },
45
+ ...config?.registry,
46
+ resolutionOrder: config?.registry?.resolutionOrder ?? defaultPluginRegistryConfig.registry?.resolutionOrder ?? [
47
+ "workspace",
48
+ "npm",
49
+ "remote"
50
+ ],
51
+ sources: {
52
+ ...defaultPluginRegistryConfig.registry?.sources ?? {},
53
+ ...config?.registry?.sources ?? {}
54
+ }
55
+ }
56
+ };
57
+ }
58
+ export {
59
+ mergePluginConfig,
60
+ defaultPluginRegistryConfig,
61
+ PluginRegistries
62
+ };
@@ -0,0 +1,59 @@
1
+ // src/registry.ts
2
+ class SimpleRegistry {
3
+ entries = new Map;
4
+ register(entry) {
5
+ this.entries.set(entry.id, entry);
6
+ }
7
+ list() {
8
+ return Array.from(this.entries.values());
9
+ }
10
+ }
11
+
12
+ class PluginRegistries {
13
+ generators;
14
+ validators;
15
+ adapters;
16
+ formatters;
17
+ registryResolvers;
18
+ constructor() {
19
+ this.generators = new SimpleRegistry;
20
+ this.validators = new SimpleRegistry;
21
+ this.adapters = new SimpleRegistry;
22
+ this.formatters = new SimpleRegistry;
23
+ this.registryResolvers = new SimpleRegistry;
24
+ }
25
+ }
26
+ var defaultPluginRegistryConfig = {
27
+ plugins: [],
28
+ registry: {
29
+ resolutionOrder: ["workspace", "npm", "remote"],
30
+ allowPrerelease: false,
31
+ sources: {}
32
+ }
33
+ };
34
+
35
+ // src/config.ts
36
+ function mergePluginConfig(config) {
37
+ return {
38
+ ...defaultPluginRegistryConfig,
39
+ ...config,
40
+ registry: {
41
+ ...defaultPluginRegistryConfig.registry ?? {
42
+ resolutionOrder: ["workspace", "npm", "remote"]
43
+ },
44
+ ...config?.registry,
45
+ resolutionOrder: config?.registry?.resolutionOrder ?? defaultPluginRegistryConfig.registry?.resolutionOrder ?? [
46
+ "workspace",
47
+ "npm",
48
+ "remote"
49
+ ],
50
+ sources: {
51
+ ...defaultPluginRegistryConfig.registry?.sources ?? {},
52
+ ...config?.registry?.sources ?? {}
53
+ }
54
+ }
55
+ };
56
+ }
57
+ export {
58
+ mergePluginConfig
59
+ };
@@ -0,0 +1,61 @@
1
+ // src/registry.ts
2
+ class SimpleRegistry {
3
+ entries = new Map;
4
+ register(entry) {
5
+ this.entries.set(entry.id, entry);
6
+ }
7
+ list() {
8
+ return Array.from(this.entries.values());
9
+ }
10
+ }
11
+
12
+ class PluginRegistries {
13
+ generators;
14
+ validators;
15
+ adapters;
16
+ formatters;
17
+ registryResolvers;
18
+ constructor() {
19
+ this.generators = new SimpleRegistry;
20
+ this.validators = new SimpleRegistry;
21
+ this.adapters = new SimpleRegistry;
22
+ this.formatters = new SimpleRegistry;
23
+ this.registryResolvers = new SimpleRegistry;
24
+ }
25
+ }
26
+ var defaultPluginRegistryConfig = {
27
+ plugins: [],
28
+ registry: {
29
+ resolutionOrder: ["workspace", "npm", "remote"],
30
+ allowPrerelease: false,
31
+ sources: {}
32
+ }
33
+ };
34
+
35
+ // src/config.ts
36
+ function mergePluginConfig(config) {
37
+ return {
38
+ ...defaultPluginRegistryConfig,
39
+ ...config,
40
+ registry: {
41
+ ...defaultPluginRegistryConfig.registry ?? {
42
+ resolutionOrder: ["workspace", "npm", "remote"]
43
+ },
44
+ ...config?.registry,
45
+ resolutionOrder: config?.registry?.resolutionOrder ?? defaultPluginRegistryConfig.registry?.resolutionOrder ?? [
46
+ "workspace",
47
+ "npm",
48
+ "remote"
49
+ ],
50
+ sources: {
51
+ ...defaultPluginRegistryConfig.registry?.sources ?? {},
52
+ ...config?.registry?.sources ?? {}
53
+ }
54
+ }
55
+ };
56
+ }
57
+ export {
58
+ mergePluginConfig,
59
+ defaultPluginRegistryConfig,
60
+ PluginRegistries
61
+ };
@@ -0,0 +1,37 @@
1
+ // src/registry.ts
2
+ class SimpleRegistry {
3
+ entries = new Map;
4
+ register(entry) {
5
+ this.entries.set(entry.id, entry);
6
+ }
7
+ list() {
8
+ return Array.from(this.entries.values());
9
+ }
10
+ }
11
+
12
+ class PluginRegistries {
13
+ generators;
14
+ validators;
15
+ adapters;
16
+ formatters;
17
+ registryResolvers;
18
+ constructor() {
19
+ this.generators = new SimpleRegistry;
20
+ this.validators = new SimpleRegistry;
21
+ this.adapters = new SimpleRegistry;
22
+ this.formatters = new SimpleRegistry;
23
+ this.registryResolvers = new SimpleRegistry;
24
+ }
25
+ }
26
+ var defaultPluginRegistryConfig = {
27
+ plugins: [],
28
+ registry: {
29
+ resolutionOrder: ["workspace", "npm", "remote"],
30
+ allowPrerelease: false,
31
+ sources: {}
32
+ }
33
+ };
34
+ export {
35
+ defaultPluginRegistryConfig,
36
+ PluginRegistries
37
+ };
File without changes
@@ -0,0 +1,11 @@
1
+ import type { AdapterRegistry, FormatterRegistry, GeneratorRegistry, PluginRegistryConfig, RegistryResolverRegistry, ValidatorRegistry } from './types.js';
2
+ export declare class PluginRegistries {
3
+ readonly generators: GeneratorRegistry;
4
+ readonly validators: ValidatorRegistry;
5
+ readonly adapters: AdapterRegistry;
6
+ readonly formatters: FormatterRegistry;
7
+ readonly registryResolvers: RegistryResolverRegistry;
8
+ constructor();
9
+ }
10
+ export declare const defaultPluginRegistryConfig: PluginRegistryConfig;
11
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,eAAe,EAEf,iBAAiB,EAEjB,iBAAiB,EACjB,oBAAoB,EAEpB,wBAAwB,EAExB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAcpB,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;;CAStD;AAED,eAAO,MAAM,2BAA2B,EAAE,oBAOzC,CAAC"}
@@ -0,0 +1,38 @@
1
+ // @bun
2
+ // src/registry.ts
3
+ class SimpleRegistry {
4
+ entries = new Map;
5
+ register(entry) {
6
+ this.entries.set(entry.id, entry);
7
+ }
8
+ list() {
9
+ return Array.from(this.entries.values());
10
+ }
11
+ }
12
+
13
+ class PluginRegistries {
14
+ generators;
15
+ validators;
16
+ adapters;
17
+ formatters;
18
+ registryResolvers;
19
+ constructor() {
20
+ this.generators = new SimpleRegistry;
21
+ this.validators = new SimpleRegistry;
22
+ this.adapters = new SimpleRegistry;
23
+ this.formatters = new SimpleRegistry;
24
+ this.registryResolvers = new SimpleRegistry;
25
+ }
26
+ }
27
+ var defaultPluginRegistryConfig = {
28
+ plugins: [],
29
+ registry: {
30
+ resolutionOrder: ["workspace", "npm", "remote"],
31
+ allowPrerelease: false,
32
+ sources: {}
33
+ }
34
+ };
35
+ export {
36
+ defaultPluginRegistryConfig,
37
+ PluginRegistries
38
+ };
@@ -0,0 +1,95 @@
1
+ import type { AnySchemaModel } from '@contractspec/lib.schema';
2
+ export type SpecDefinition = unknown;
3
+ export type PluginCapabilityType = 'generator' | 'validator' | 'adapter' | 'formatter' | 'registryResolver';
4
+ export interface PluginMeta {
5
+ id: string;
6
+ version: string;
7
+ type: PluginCapabilityType;
8
+ provides: string[];
9
+ description?: string;
10
+ compatibility?: string;
11
+ }
12
+ export interface PluginContext {
13
+ workspaceRoot: string;
14
+ configPath?: string;
15
+ generators: GeneratorRegistry;
16
+ validators: ValidatorRegistry;
17
+ adapters: AdapterRegistry;
18
+ formatters: FormatterRegistry;
19
+ registryResolvers: RegistryResolverRegistry;
20
+ }
21
+ export interface PluginRegistryItem {
22
+ id: string;
23
+ package: string;
24
+ capabilities: PluginCapabilityType[];
25
+ options?: Record<string, unknown>;
26
+ }
27
+ export interface PluginRegistryConfig {
28
+ plugins: PluginRegistryItem[];
29
+ registry?: {
30
+ resolutionOrder: ('workspace' | 'npm' | 'remote')[];
31
+ allowPrerelease?: boolean;
32
+ sources?: Record<string, string>;
33
+ };
34
+ }
35
+ export interface GeneratorCapability {
36
+ id: string;
37
+ description?: string;
38
+ generate: (specs: SpecDefinition[], context: PluginContext) => Promise<void>;
39
+ }
40
+ export interface ValidatorCapability {
41
+ id: string;
42
+ description?: string;
43
+ validate: (specs: SpecDefinition[], context: PluginContext) => Promise<void>;
44
+ }
45
+ export interface AdapterCapability {
46
+ id: string;
47
+ description?: string;
48
+ create: (context: PluginContext) => Promise<unknown>;
49
+ }
50
+ export interface FormatterCapability {
51
+ id: string;
52
+ description?: string;
53
+ format: (output: string, context: PluginContext) => Promise<string>;
54
+ }
55
+ export interface RegistryResolverCapability {
56
+ id: string;
57
+ description?: string;
58
+ resolve: (request: {
59
+ package: string;
60
+ }) => Promise<Record<string, unknown>>;
61
+ }
62
+ export interface ContractSpecPlugin {
63
+ meta: PluginMeta;
64
+ register: (context: PluginContext) => void | Promise<void>;
65
+ configure?: (options: Record<string, unknown>, context: PluginContext) => void | Promise<void>;
66
+ validate?: (specs: SpecDefinition[], context: PluginContext) => void | Promise<void>;
67
+ generate?: (specs: SpecDefinition[], context: PluginContext) => void | Promise<void>;
68
+ dispose?: () => void | Promise<void>;
69
+ }
70
+ export interface GeneratorRegistry {
71
+ register: (generator: GeneratorCapability) => void;
72
+ list: () => GeneratorCapability[];
73
+ }
74
+ export interface ValidatorRegistry {
75
+ register: (validator: ValidatorCapability) => void;
76
+ list: () => ValidatorCapability[];
77
+ }
78
+ export interface AdapterRegistry {
79
+ register: (adapter: AdapterCapability) => void;
80
+ list: () => AdapterCapability[];
81
+ }
82
+ export interface FormatterRegistry {
83
+ register: (formatter: FormatterCapability) => void;
84
+ list: () => FormatterCapability[];
85
+ }
86
+ export interface RegistryResolverRegistry {
87
+ register: (resolver: RegistryResolverCapability) => void;
88
+ list: () => RegistryResolverCapability[];
89
+ }
90
+ export interface SpecRegistryEntry {
91
+ id: string;
92
+ spec: SpecDefinition;
93
+ schemas: Record<string, AnySchemaModel>;
94
+ }
95
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1 @@
1
+ // @bun
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contractspec/lib.plugins",
3
- "version": "1.57.0",
3
+ "version": "1.58.0",
4
4
  "description": "Plugin API and registry for ContractSpec extensions",
5
5
  "keywords": [
6
6
  "contractspec",
@@ -17,32 +17,33 @@
17
17
  "scripts": {
18
18
  "publish:pkg": "bun publish --tolerate-republish --ignore-scripts --verbose",
19
19
  "publish:pkg:canary": "bun publish:pkg --tag canary",
20
- "build": "bun build:types && bun build:bundle",
21
- "build:bundle": "tsdown",
22
- "build:types": "tsc -p tsconfig.json",
23
- "dev": "bun build:bundle --watch",
20
+ "build": "bun run prebuild && bun run build:bundle && bun run build:types",
21
+ "build:bundle": "contractspec-bun-build transpile",
22
+ "build:types": "contractspec-bun-build types",
23
+ "dev": "contractspec-bun-build dev",
24
24
  "clean": "rimraf dist .turbo",
25
25
  "lint": "bun lint:fix",
26
26
  "lint:fix": "eslint src --fix",
27
27
  "lint:check": "eslint src",
28
- "test": "bun test"
28
+ "test": "bun test",
29
+ "prebuild": "contractspec-bun-build prebuild",
30
+ "typecheck": "tsc --noEmit"
29
31
  },
30
32
  "dependencies": {
31
- "@contractspec/lib.contracts": "1.57.0",
32
- "@contractspec/lib.schema": "1.57.0",
33
+ "@contractspec/lib.contracts": "1.58.0",
34
+ "@contractspec/lib.schema": "1.58.0",
33
35
  "zod": "^4.3.5"
34
36
  },
35
37
  "devDependencies": {
36
- "@contractspec/tool.tsdown": "1.57.0",
37
- "@contractspec/tool.typescript": "1.57.0",
38
- "typescript": "^5.9.3"
38
+ "@contractspec/tool.typescript": "1.58.0",
39
+ "typescript": "^5.9.3",
40
+ "@contractspec/tool.bun": "1.57.0"
39
41
  },
40
42
  "exports": {
41
- ".": "./dist/index.mjs",
42
- "./registry": "./dist/registry.mjs",
43
- "./types": "./dist/types.mjs",
44
- "./config": "./dist/config.mjs",
45
- "./*": "./*"
43
+ ".": "./src/index.ts",
44
+ "./config": "./src/config.ts",
45
+ "./registry": "./src/registry.ts",
46
+ "./types": "./src/types.ts"
46
47
  },
47
48
  "files": [
48
49
  "dist",
@@ -50,7 +51,37 @@
50
51
  ],
51
52
  "publishConfig": {
52
53
  "access": "public",
53
- "registry": "https://registry.npmjs.org/"
54
+ "registry": "https://registry.npmjs.org/",
55
+ "exports": {
56
+ ".": {
57
+ "types": "./dist/index.d.ts",
58
+ "bun": "./dist/index.js",
59
+ "node": "./dist/node/index.mjs",
60
+ "browser": "./dist/browser/index.js",
61
+ "default": "./dist/index.js"
62
+ },
63
+ "./config": {
64
+ "types": "./dist/config.d.ts",
65
+ "bun": "./dist/config.js",
66
+ "node": "./dist/node/config.mjs",
67
+ "browser": "./dist/browser/config.js",
68
+ "default": "./dist/config.js"
69
+ },
70
+ "./registry": {
71
+ "types": "./dist/registry.d.ts",
72
+ "bun": "./dist/registry.js",
73
+ "node": "./dist/node/registry.mjs",
74
+ "browser": "./dist/browser/registry.js",
75
+ "default": "./dist/registry.js"
76
+ },
77
+ "./types": {
78
+ "types": "./dist/types.d.ts",
79
+ "bun": "./dist/types.js",
80
+ "node": "./dist/node/types.mjs",
81
+ "browser": "./dist/browser/types.js",
82
+ "default": "./dist/types.js"
83
+ }
84
+ }
54
85
  },
55
86
  "license": "MIT",
56
87
  "repository": {
package/dist/index.d.mts DELETED
@@ -1,113 +0,0 @@
1
- import { AnySchemaModel } from "@contractspec/lib.schema";
2
-
3
- //#region src/types.d.ts
4
- type SpecDefinition = unknown;
5
- type PluginCapabilityType = 'generator' | 'validator' | 'adapter' | 'formatter' | 'registryResolver';
6
- interface PluginMeta {
7
- id: string;
8
- version: string;
9
- type: PluginCapabilityType;
10
- provides: string[];
11
- description?: string;
12
- compatibility?: string;
13
- }
14
- interface PluginContext {
15
- workspaceRoot: string;
16
- configPath?: string;
17
- generators: GeneratorRegistry;
18
- validators: ValidatorRegistry;
19
- adapters: AdapterRegistry;
20
- formatters: FormatterRegistry;
21
- registryResolvers: RegistryResolverRegistry;
22
- }
23
- interface PluginRegistryItem {
24
- id: string;
25
- package: string;
26
- capabilities: PluginCapabilityType[];
27
- options?: Record<string, unknown>;
28
- }
29
- interface PluginRegistryConfig {
30
- plugins: PluginRegistryItem[];
31
- registry?: {
32
- resolutionOrder: ('workspace' | 'npm' | 'remote')[];
33
- allowPrerelease?: boolean;
34
- sources?: Record<string, string>;
35
- };
36
- }
37
- interface GeneratorCapability {
38
- id: string;
39
- description?: string;
40
- generate: (specs: SpecDefinition[], context: PluginContext) => Promise<void>;
41
- }
42
- interface ValidatorCapability {
43
- id: string;
44
- description?: string;
45
- validate: (specs: SpecDefinition[], context: PluginContext) => Promise<void>;
46
- }
47
- interface AdapterCapability {
48
- id: string;
49
- description?: string;
50
- create: (context: PluginContext) => Promise<unknown>;
51
- }
52
- interface FormatterCapability {
53
- id: string;
54
- description?: string;
55
- format: (output: string, context: PluginContext) => Promise<string>;
56
- }
57
- interface RegistryResolverCapability {
58
- id: string;
59
- description?: string;
60
- resolve: (request: {
61
- package: string;
62
- }) => Promise<Record<string, unknown>>;
63
- }
64
- interface ContractSpecPlugin {
65
- meta: PluginMeta;
66
- register: (context: PluginContext) => void | Promise<void>;
67
- configure?: (options: Record<string, unknown>, context: PluginContext) => void | Promise<void>;
68
- validate?: (specs: SpecDefinition[], context: PluginContext) => void | Promise<void>;
69
- generate?: (specs: SpecDefinition[], context: PluginContext) => void | Promise<void>;
70
- dispose?: () => void | Promise<void>;
71
- }
72
- interface GeneratorRegistry {
73
- register: (generator: GeneratorCapability) => void;
74
- list: () => GeneratorCapability[];
75
- }
76
- interface ValidatorRegistry {
77
- register: (validator: ValidatorCapability) => void;
78
- list: () => ValidatorCapability[];
79
- }
80
- interface AdapterRegistry {
81
- register: (adapter: AdapterCapability) => void;
82
- list: () => AdapterCapability[];
83
- }
84
- interface FormatterRegistry {
85
- register: (formatter: FormatterCapability) => void;
86
- list: () => FormatterCapability[];
87
- }
88
- interface RegistryResolverRegistry {
89
- register: (resolver: RegistryResolverCapability) => void;
90
- list: () => RegistryResolverCapability[];
91
- }
92
- interface SpecRegistryEntry {
93
- id: string;
94
- spec: SpecDefinition;
95
- schemas: Record<string, AnySchemaModel>;
96
- }
97
- //#endregion
98
- //#region src/registry.d.ts
99
- declare class PluginRegistries {
100
- readonly generators: GeneratorRegistry;
101
- readonly validators: ValidatorRegistry;
102
- readonly adapters: AdapterRegistry;
103
- readonly formatters: FormatterRegistry;
104
- readonly registryResolvers: RegistryResolverRegistry;
105
- constructor();
106
- }
107
- declare const defaultPluginRegistryConfig: PluginRegistryConfig;
108
- //#endregion
109
- //#region src/config.d.ts
110
- declare function mergePluginConfig(config?: Partial<PluginRegistryConfig>): PluginRegistryConfig;
111
- //#endregion
112
- export { type AdapterCapability, type AdapterRegistry, type ContractSpecPlugin, type FormatterCapability, type FormatterRegistry, type GeneratorCapability, type GeneratorRegistry, type PluginCapabilityType, type PluginContext, type PluginMeta, PluginRegistries, type PluginRegistryConfig, type PluginRegistryItem, type RegistryResolverCapability, type RegistryResolverRegistry, type SpecRegistryEntry, type ValidatorCapability, type ValidatorRegistry, defaultPluginRegistryConfig, mergePluginConfig };
113
- //# sourceMappingURL=index.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/registry.ts","../src/config.ts"],"mappings":";;;KAEY,cAAA;AAAA,KAEA,oBAAA;AAAA,UAOK,UAAA;EACf,EAAA;EACA,OAAA;EACA,IAAA,EAAM,oBAAA;EACN,QAAA;EACA,WAAA;EACA,aAAA;AAAA;AAAA,UAGe,aAAA;EACf,aAAA;EACA,UAAA;EACA,UAAA,EAAY,iBAAA;EACZ,UAAA,EAAY,iBAAA;EACZ,QAAA,EAAU,eAAA;EACV,UAAA,EAAY,iBAAA;EACZ,iBAAA,EAAmB,wBAAA;AAAA;AAAA,UAGJ,kBAAA;EACf,EAAA;EACA,OAAA;EACA,YAAA,EAAc,oBAAA;EACd,OAAA,GAAU,MAAA;AAAA;AAAA,UAGK,oBAAA;EACf,OAAA,EAAS,kBAAA;EACT,QAAA;IACE,eAAA;IACA,eAAA;IACA,OAAA,GAAU,MAAA;EAAA;AAAA;AAAA,UAIG,mBAAA;EACf,EAAA;EACA,WAAA;EACA,QAAA,GAAW,KAAA,EAAO,cAAA,IAAkB,OAAA,EAAS,aAAA,KAAkB,OAAA;AAAA;AAAA,UAGhD,mBAAA;EACf,EAAA;EACA,WAAA;EACA,QAAA,GAAW,KAAA,EAAO,cAAA,IAAkB,OAAA,EAAS,aAAA,KAAkB,OAAA;AAAA;AAAA,UAGhD,iBAAA;EACf,EAAA;EACA,WAAA;EACA,MAAA,GAAS,OAAA,EAAS,aAAA,KAAkB,OAAA;AAAA;AAAA,UAGrB,mBAAA;EACf,EAAA;EACA,WAAA;EACA,MAAA,GAAS,MAAA,UAAgB,OAAA,EAAS,aAAA,KAAkB,OAAA;AAAA;AAAA,UAGrC,0BAAA;EACf,EAAA;EACA,WAAA;EACA,OAAA,GAAU,OAAA;IAAW,OAAA;EAAA,MAAsB,OAAA,CAAQ,MAAA;AAAA;AAAA,UAGpC,kBAAA;EACf,IAAA,EAAM,UAAA;EACN,QAAA,GAAW,OAAA,EAAS,aAAA,YAAyB,OAAA;EAC7C,SAAA,IACE,OAAA,EAAS,MAAA,mBACT,OAAA,EAAS,aAAA,YACC,OAAA;EACZ,QAAA,IACE,KAAA,EAAO,cAAA,IACP,OAAA,EAAS,aAAA,YACC,OAAA;EACZ,QAAA,IACE,KAAA,EAAO,cAAA,IACP,OAAA,EAAS,aAAA,YACC,OAAA;EACZ,OAAA,gBAAuB,OAAA;AAAA;AAAA,UAGR,iBAAA;EACf,QAAA,GAAW,SAAA,EAAW,mBAAA;EACtB,IAAA,QAAY,mBAAA;AAAA;AAAA,UAGG,iBAAA;EACf,QAAA,GAAW,SAAA,EAAW,mBAAA;EACtB,IAAA,QAAY,mBAAA;AAAA;AAAA,UAGG,eAAA;EACf,QAAA,GAAW,OAAA,EAAS,iBAAA;EACpB,IAAA,QAAY,iBAAA;AAAA;AAAA,UAGG,iBAAA;EACf,QAAA,GAAW,SAAA,EAAW,mBAAA;EACtB,IAAA,QAAY,mBAAA;AAAA;AAAA,UAGG,wBAAA;EACf,QAAA,GAAW,QAAA,EAAU,0BAAA;EACrB,IAAA,QAAY,0BAAA;AAAA;AAAA,UAGG,iBAAA;EACf,EAAA;EACA,IAAA,EAAM,cAAA;EACN,OAAA,EAAS,MAAA,SAAe,cAAA;AAAA;;;cChGb,gBAAA;EAAA,SACF,UAAA,EAAY,iBAAA;EAAA,SACZ,UAAA,EAAY,iBAAA;EAAA,SACZ,QAAA,EAAU,eAAA;EAAA,SACV,UAAA,EAAY,iBAAA;EAAA,SACZ,iBAAA,EAAmB,wBAAA;;;cAWjB,2BAAA,EAA6B,oBAAA;;;iBCvC1B,iBAAA,CACd,MAAA,GAAS,OAAA,CAAQ,oBAAA,IAChB,oBAAA"}
package/dist/index.mjs DELETED
@@ -1,66 +0,0 @@
1
- //#region src/registry.ts
2
- var SimpleRegistry = class {
3
- entries = /* @__PURE__ */ new Map();
4
- register(entry) {
5
- this.entries.set(entry.id, entry);
6
- }
7
- list() {
8
- return Array.from(this.entries.values());
9
- }
10
- };
11
- var PluginRegistries = class {
12
- generators;
13
- validators;
14
- adapters;
15
- formatters;
16
- registryResolvers;
17
- constructor() {
18
- this.generators = new SimpleRegistry();
19
- this.validators = new SimpleRegistry();
20
- this.adapters = new SimpleRegistry();
21
- this.formatters = new SimpleRegistry();
22
- this.registryResolvers = new SimpleRegistry();
23
- }
24
- };
25
- const defaultPluginRegistryConfig = {
26
- plugins: [],
27
- registry: {
28
- resolutionOrder: [
29
- "workspace",
30
- "npm",
31
- "remote"
32
- ],
33
- allowPrerelease: false,
34
- sources: {}
35
- }
36
- };
37
-
38
- //#endregion
39
- //#region src/config.ts
40
- function mergePluginConfig(config) {
41
- return {
42
- ...defaultPluginRegistryConfig,
43
- ...config,
44
- registry: {
45
- ...defaultPluginRegistryConfig.registry ?? { resolutionOrder: [
46
- "workspace",
47
- "npm",
48
- "remote"
49
- ] },
50
- ...config?.registry,
51
- resolutionOrder: config?.registry?.resolutionOrder ?? defaultPluginRegistryConfig.registry?.resolutionOrder ?? [
52
- "workspace",
53
- "npm",
54
- "remote"
55
- ],
56
- sources: {
57
- ...defaultPluginRegistryConfig.registry?.sources ?? {},
58
- ...config?.registry?.sources ?? {}
59
- }
60
- }
61
- };
62
- }
63
-
64
- //#endregion
65
- export { PluginRegistries, defaultPluginRegistryConfig, mergePluginConfig };
66
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/registry.ts","../src/config.ts"],"sourcesContent":["import type {\n AdapterCapability,\n AdapterRegistry,\n FormatterCapability,\n FormatterRegistry,\n GeneratorCapability,\n GeneratorRegistry,\n PluginRegistryConfig,\n RegistryResolverCapability,\n RegistryResolverRegistry,\n ValidatorCapability,\n ValidatorRegistry,\n} from './types.js';\n\nclass SimpleRegistry<T extends { id: string }> {\n private readonly entries = new Map<string, T>();\n\n register(entry: T): void {\n this.entries.set(entry.id, entry);\n }\n\n list(): T[] {\n return Array.from(this.entries.values());\n }\n}\n\nexport class PluginRegistries {\n readonly generators: GeneratorRegistry;\n readonly validators: ValidatorRegistry;\n readonly adapters: AdapterRegistry;\n readonly formatters: FormatterRegistry;\n readonly registryResolvers: RegistryResolverRegistry;\n\n constructor() {\n this.generators = new SimpleRegistry<GeneratorCapability>();\n this.validators = new SimpleRegistry<ValidatorCapability>();\n this.adapters = new SimpleRegistry<AdapterCapability>();\n this.formatters = new SimpleRegistry<FormatterCapability>();\n this.registryResolvers = new SimpleRegistry<RegistryResolverCapability>();\n }\n}\n\nexport const defaultPluginRegistryConfig: PluginRegistryConfig = {\n plugins: [],\n registry: {\n resolutionOrder: ['workspace', 'npm', 'remote'],\n allowPrerelease: false,\n sources: {},\n },\n};\n","import type { PluginRegistryConfig } from './types.js';\nimport { defaultPluginRegistryConfig } from './registry.js';\n\nexport function mergePluginConfig(\n config?: Partial<PluginRegistryConfig>\n): PluginRegistryConfig {\n return {\n ...defaultPluginRegistryConfig,\n ...config,\n registry: {\n ...(defaultPluginRegistryConfig.registry ?? {\n resolutionOrder: ['workspace', 'npm', 'remote'],\n }),\n ...config?.registry,\n resolutionOrder: config?.registry?.resolutionOrder ??\n defaultPluginRegistryConfig.registry?.resolutionOrder ?? [\n 'workspace',\n 'npm',\n 'remote',\n ],\n sources: {\n ...(defaultPluginRegistryConfig.registry?.sources ?? {}),\n ...(config?.registry?.sources ?? {}),\n },\n },\n };\n}\n"],"mappings":";AAcA,IAAM,iBAAN,MAA+C;CAC7C,AAAiB,0BAAU,IAAI,KAAgB;CAE/C,SAAS,OAAgB;AACvB,OAAK,QAAQ,IAAI,MAAM,IAAI,MAAM;;CAGnC,OAAY;AACV,SAAO,MAAM,KAAK,KAAK,QAAQ,QAAQ,CAAC;;;AAI5C,IAAa,mBAAb,MAA8B;CAC5B,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CAET,cAAc;AACZ,OAAK,aAAa,IAAI,gBAAqC;AAC3D,OAAK,aAAa,IAAI,gBAAqC;AAC3D,OAAK,WAAW,IAAI,gBAAmC;AACvD,OAAK,aAAa,IAAI,gBAAqC;AAC3D,OAAK,oBAAoB,IAAI,gBAA4C;;;AAI7E,MAAa,8BAAoD;CAC/D,SAAS,EAAE;CACX,UAAU;EACR,iBAAiB;GAAC;GAAa;GAAO;GAAS;EAC/C,iBAAiB;EACjB,SAAS,EAAE;EACZ;CACF;;;;AC9CD,SAAgB,kBACd,QACsB;AACtB,QAAO;EACL,GAAG;EACH,GAAG;EACH,UAAU;GACR,GAAI,4BAA4B,YAAY,EAC1C,iBAAiB;IAAC;IAAa;IAAO;IAAS,EAChD;GACD,GAAG,QAAQ;GACX,iBAAiB,QAAQ,UAAU,mBACjC,4BAA4B,UAAU,mBAAmB;IACvD;IACA;IACA;IACD;GACH,SAAS;IACP,GAAI,4BAA4B,UAAU,WAAW,EAAE;IACvD,GAAI,QAAQ,UAAU,WAAW,EAAE;IACpC;GACF;EACF"}