functional-examples 0.0.0-alpha.1 → 0.0.0-alpha.2

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.
Files changed (38) hide show
  1. package/README.md +168 -26
  2. package/README.md.template +106 -0
  3. package/dist/cli/commands/scan.d.ts +1 -1
  4. package/dist/cli/commands/validate.d.ts +2 -2
  5. package/dist/cli/commands/validate.d.ts.map +1 -1
  6. package/dist/cli/commands/validate.js +92 -25
  7. package/dist/cli/commands/validate.js.map +1 -1
  8. package/dist/cli/index.d.ts +3 -3
  9. package/dist/config/resolver.d.ts +10 -10
  10. package/dist/config/resolver.d.ts.map +1 -1
  11. package/dist/config/resolver.js +156 -57
  12. package/dist/config/resolver.js.map +1 -1
  13. package/dist/config/types.d.ts +1 -1
  14. package/dist/config/types.d.ts.map +1 -1
  15. package/dist/plugins/pipeline.d.ts +4 -0
  16. package/dist/plugins/pipeline.d.ts.map +1 -1
  17. package/dist/plugins/pipeline.js +10 -1
  18. package/dist/plugins/pipeline.js.map +1 -1
  19. package/dist/plugins/registry.d.ts +1 -0
  20. package/dist/plugins/registry.d.ts.map +1 -1
  21. package/dist/plugins/registry.js +2 -3
  22. package/dist/plugins/registry.js.map +1 -1
  23. package/dist/scanner/scan.d.ts +3 -3
  24. package/dist/scanner/scan.d.ts.map +1 -1
  25. package/dist/scanner/scan.js.map +1 -1
  26. package/dist/scanner/scanner.d.ts.map +1 -1
  27. package/dist/scanner/scanner.js +5 -5
  28. package/dist/scanner/scanner.js.map +1 -1
  29. package/dist/schema/merger.d.ts.map +1 -1
  30. package/dist/schema/merger.js +43 -5
  31. package/dist/schema/merger.js.map +1 -1
  32. package/dist/schema/validator.d.ts.map +1 -1
  33. package/dist/schema/validator.js +7 -1
  34. package/dist/schema/validator.js.map +1 -1
  35. package/dist/types/index.d.ts +1 -1
  36. package/dist/types/index.d.ts.map +1 -1
  37. package/dist/types/index.js.map +1 -1
  38. package/package.json +4 -3
@@ -99,6 +99,34 @@ export function mergeConfigSchema(options) {
99
99
  }
100
100
  return schema;
101
101
  }
102
+ /**
103
+ * Base metadata schema with universal fields shared across all plugins.
104
+ */
105
+ function createBaseMetadataSchema() {
106
+ return {
107
+ type: 'object',
108
+ properties: {
109
+ id: {
110
+ type: 'string',
111
+ description: 'Unique example identifier',
112
+ },
113
+ title: {
114
+ type: 'string',
115
+ description: 'Example title',
116
+ },
117
+ description: {
118
+ type: 'string',
119
+ description: 'Example description',
120
+ },
121
+ tags: {
122
+ type: 'array',
123
+ items: { type: 'string' },
124
+ description: 'Tags for categorizing the example',
125
+ },
126
+ },
127
+ required: ['id', 'title'],
128
+ };
129
+ }
102
130
  /**
103
131
  * Deep merge two JSON Schema objects.
104
132
  * Second schema (b) takes priority on conflicts.
@@ -115,6 +143,15 @@ function deepMergeSchemas(a, b) {
115
143
  ...value,
116
144
  };
117
145
  }
146
+ else if (key === '$defs' &&
147
+ result.$defs &&
148
+ typeof value === 'object') {
149
+ // Merge $defs, b takes priority on conflicts
150
+ result.$defs = {
151
+ ...result.$defs,
152
+ ...value,
153
+ };
154
+ }
118
155
  else if (key === 'required' &&
119
156
  Array.isArray(result.required) &&
120
157
  Array.isArray(value)) {
@@ -134,11 +171,12 @@ function deepMergeSchemas(a, b) {
134
171
  */
135
172
  export function mergeMetadataSchemas(options) {
136
173
  const { configSchema, pluginSchemas } = options;
137
- // Start with empty base or config schema
138
- let merged = configSchema ?? {
139
- type: 'object',
140
- properties: {},
141
- };
174
+ // Start with base metadata schema containing universal fields
175
+ const base = createBaseMetadataSchema();
176
+ // Overlay config schema on top of base (config takes priority)
177
+ let merged = configSchema
178
+ ? deepMergeSchemas(base, configSchema)
179
+ : base;
142
180
  // Merge in plugin schemas (config already in merged, so it has priority)
143
181
  for (const { pluginName, metadata } of pluginSchemas) {
144
182
  if (!metadata)
@@ -1 +1 @@
1
- {"version":3,"file":"merger.js","sourceRoot":"","sources":["../../src/schema/merger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merger.js","sourceRoot":"","sources":["../../src/schema/merger.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/schema/validator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,mBAAmB,CAAC;AAM3E;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,UAAU,GACjB,CAAC,KAAK,EAAE,OAAO,KAAK,gBAAgB,CA6BtC"}
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/schema/validator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,mBAAmB,CAAC;AAM3E;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,UAAU,GACjB,CAAC,KAAK,EAAE,OAAO,KAAK,gBAAgB,CAuCtC"}
@@ -21,9 +21,15 @@ export function createSchemaValidator(schema) {
21
21
  if (missingProp) {
22
22
  path = basePath ? `${basePath}/${missingProp}` : missingProp;
23
23
  }
24
+ let message = err.message ?? 'Validation failed';
25
+ // Include the offending property name for additionalProperties errors
26
+ const additionalProp = err.params?.additionalProperty;
27
+ if (additionalProp) {
28
+ message += `: '${additionalProp}'`;
29
+ }
24
30
  return {
25
31
  path,
26
- message: err.message ?? 'Validation failed',
32
+ message,
27
33
  };
28
34
  });
29
35
  return { success: false, errors };
@@ -1 +1 @@
1
- {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/schema/validator.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,KAAK,CAAC;AAI7B,0CAA0C;AAC1C,8DAA8D;AAC9D,MAAM,GAAG,GAAI,UAAkB,CAAC,OAAO,IAAI,UAAU,CAAC;AAEtD;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAkB;IAElB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAErC,OAAO,CAAC,KAAc,EAAoB,EAAE;QAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE9B,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACvC,CAAC;QAED,MAAM,MAAM,GAAsB,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACpE,0CAA0C;YAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,eAAqC,CAAC;YAEtE,IAAI,IAAI,GAAG,QAAQ,CAAC;YACpB,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YAC/D,CAAC;YAED,OAAO;gBACL,IAAI;gBACJ,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,mBAAmB;aAC5C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/schema/validator.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,KAAK,CAAC;AAI7B,0CAA0C;AAC1C,8DAA8D;AAC9D,MAAM,GAAG,GAAI,UAAkB,CAAC,OAAO,IAAI,UAAU,CAAC;AAEtD;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAkB;IAElB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAErC,OAAO,CAAC,KAAc,EAAoB,EAAE;QAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE9B,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACvC,CAAC;QAED,MAAM,MAAM,GAAsB,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACpE,0CAA0C;YAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,eAAqC,CAAC;YAEtE,IAAI,IAAI,GAAG,QAAQ,CAAC;YACpB,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YAC/D,CAAC;YAED,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,mBAAmB,CAAC;YAEjD,sEAAsE;YACtE,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,kBAEtB,CAAC;YACd,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,IAAI,MAAM,cAAc,GAAG,CAAC;YACrC,CAAC;YAED,OAAO;gBACL,IAAI;gBACJ,OAAO;aACR,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC,CAAC;AACJ,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * Types are defined in @functional-examples/devkit and re-exported here
5
5
  * for backwards compatibility.
6
6
  */
7
- export type { ValidationError, ValidationResult, BaseMetadata, ExampleMetadata, ExampleMetadataRegistry, ParsedRegion, ExampleFile, Example, ScannedExample, ExtractorError, ExtractorOptions, ExtractorResult, Extractor, ExtractorFactory, FileParseContext, FileContentsParser, Plugin, PluginCommands, PluginSchemas, PluginValidators, PluginRegistryInterface, PluginValidatorEntry, PluginSchemaEntry, Config, ConfigWithRoot, ScanConfig, PathMapping, ConfigValidationError, ResolvedConfig, JSONSchemaObject, GenerateConfig, ExtractorConfig, ExtractorReference, ExtractorConfigOrFunction, } from '@functional-examples/devkit';
7
+ export type { ValidationError, ValidationResult, BaseMetadata, ExampleMetadata, ExampleMetadataRegistry, ParsedRegion, ExampleFile, Example, ScannedExample, ExtractorError, ExtractorOptions, ExtractorResult, Extractor, ExtractorFactory, FileParseContext, FileContentsParser, Plugin, PluginReference, PluginCommands, PluginSchemas, PluginValidators, PluginRegistryInterface, PluginValidatorEntry, PluginSchemaEntry, Config, ConfigWithRoot, ScanConfig, PathMapping, ConfigValidationError, ResolvedConfig, JSONSchemaObject, GenerateConfig, ExtractorConfig, ExtractorReference, ExtractorConfigOrFunction, } from '@functional-examples/devkit';
8
8
  export type { TypeGuard } from './guards.js';
9
9
  export { DefaultMap } from './default-map.js';
10
10
  export { asSettled, AsyncExtendedIterable, asyncIter, ExtendedIterable, iter, } from './extended-iterable.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EAEV,eAAe,EACf,gBAAgB,EAGhB,YAAY,EACZ,eAAe,EACf,uBAAuB,EAGvB,YAAY,EACZ,WAAW,EACX,OAAO,EACP,cAAc,EAGd,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,gBAAgB,EAGhB,gBAAgB,EAChB,kBAAkB,EAGlB,MAAM,EACN,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EAGjB,MAAM,EACN,cAAc,EACd,UAAU,EACV,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,6BAA6B,CAAC;AAGrC,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,SAAS,EACT,gBAAgB,EAChB,IAAI,GACL,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EAEV,eAAe,EACf,gBAAgB,EAGhB,YAAY,EACZ,eAAe,EACf,uBAAuB,EAGvB,YAAY,EACZ,WAAW,EACX,OAAO,EACP,cAAc,EAGd,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,gBAAgB,EAGhB,gBAAgB,EAChB,kBAAkB,EAGlB,MAAM,EACN,eAAe,EACf,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EAGjB,MAAM,EACN,cAAc,EACd,UAAU,EACV,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,6BAA6B,CAAC;AAGrC,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,SAAS,EACT,gBAAgB,EAChB,IAAI,GACL,MAAM,wBAAwB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwDH,8DAA8D;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,SAAS,EACT,gBAAgB,EAChB,IAAI,GACL,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAyDH,8DAA8D;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,SAAS,EACT,gBAAgB,EAChB,IAAI,GACL,MAAM,wBAAwB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "functional-examples",
3
- "version": "0.0.0-alpha.1",
3
+ "version": "0.0.0-alpha.2",
4
4
  "author": {
5
5
  "name": "Craigory Coppola",
6
6
  "url": "https://craigory.dev"
@@ -36,7 +36,7 @@
36
36
  "jiti": "^2.4.2",
37
37
  "minimatch": "^10.0.0",
38
38
  "tinyglobby": "^0.2.15",
39
- "@functional-examples/devkit": "0.0.0-alpha.1"
39
+ "@functional-examples/devkit": "0.0.0-alpha.2"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@types/node": "22.19.8",
@@ -56,6 +56,7 @@
56
56
  "build": "tsc -p tsconfig.lib.json",
57
57
  "test": "vitest run",
58
58
  "test:watch": "vitest",
59
- "lint": "eslint ."
59
+ "lint": "eslint .",
60
+ "extract-docs": "typedoc --options typedoc.json"
60
61
  }
61
62
  }