@noego/stitch 1.0.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.
Files changed (60) hide show
  1. package/README-schema.md +139 -0
  2. package/bin/stitch.js +156 -0
  3. package/dist/browser/index.d.ts +4 -0
  4. package/dist/browser/index.d.ts.map +1 -0
  5. package/dist/cli/StitchCLI.d.ts +12 -0
  6. package/dist/cli/StitchCLI.d.ts.map +1 -0
  7. package/dist/client.cjs +2 -0
  8. package/dist/client.cjs.map +1 -0
  9. package/dist/client.mjs +83 -0
  10. package/dist/client.mjs.map +1 -0
  11. package/dist/core/ConfigParser.d.ts +16 -0
  12. package/dist/core/ConfigParser.d.ts.map +1 -0
  13. package/dist/core/StitchEngine.d.ts +31 -0
  14. package/dist/core/StitchEngine.d.ts.map +1 -0
  15. package/dist/core/Validator.d.ts +18 -0
  16. package/dist/core/Validator.d.ts.map +1 -0
  17. package/dist/core/ViteHelper.d.ts +33 -0
  18. package/dist/core/ViteHelper.d.ts.map +1 -0
  19. package/dist/core/YamlMerger.d.ts +29 -0
  20. package/dist/core/YamlMerger.d.ts.map +1 -0
  21. package/dist/core/YamlMergerBrowser.d.ts +18 -0
  22. package/dist/core/YamlMergerBrowser.d.ts.map +1 -0
  23. package/dist/index.d.ts +15 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/types/StitchTypes.d.ts +38 -0
  26. package/dist/types/StitchTypes.d.ts.map +1 -0
  27. package/dist-ssr/browser/index.d.ts +4 -0
  28. package/dist-ssr/browser/index.d.ts.map +1 -0
  29. package/dist-ssr/cli/StitchCLI.d.ts +12 -0
  30. package/dist-ssr/cli/StitchCLI.d.ts.map +1 -0
  31. package/dist-ssr/core/ConfigParser.d.ts +16 -0
  32. package/dist-ssr/core/ConfigParser.d.ts.map +1 -0
  33. package/dist-ssr/core/StitchEngine.d.ts +31 -0
  34. package/dist-ssr/core/StitchEngine.d.ts.map +1 -0
  35. package/dist-ssr/core/Validator.d.ts +18 -0
  36. package/dist-ssr/core/Validator.d.ts.map +1 -0
  37. package/dist-ssr/core/ViteHelper.d.ts +33 -0
  38. package/dist-ssr/core/ViteHelper.d.ts.map +1 -0
  39. package/dist-ssr/core/YamlMerger.d.ts +29 -0
  40. package/dist-ssr/core/YamlMerger.d.ts.map +1 -0
  41. package/dist-ssr/core/YamlMergerBrowser.d.ts +18 -0
  42. package/dist-ssr/core/YamlMergerBrowser.d.ts.map +1 -0
  43. package/dist-ssr/index.d.ts +15 -0
  44. package/dist-ssr/index.d.ts.map +1 -0
  45. package/dist-ssr/server.cjs +574 -0
  46. package/dist-ssr/server.cjs.map +1 -0
  47. package/dist-ssr/server.d.ts +2 -0
  48. package/dist-ssr/server.js +554 -0
  49. package/dist-ssr/server.js.map +1 -0
  50. package/dist-ssr/types/StitchTypes.d.ts +38 -0
  51. package/dist-ssr/types/StitchTypes.d.ts.map +1 -0
  52. package/docs/advanced_validation.md +188 -0
  53. package/docs/middleware.md +507 -0
  54. package/docs/modules.md +175 -0
  55. package/docs/project.md +856 -0
  56. package/docs/validation.md +77 -0
  57. package/package.json +67 -0
  58. package/readme.md +159 -0
  59. package/schemas/schema.json +360 -0
  60. package/schemas/stitch-schema.json +38 -0
@@ -0,0 +1,38 @@
1
+ export interface StitchConfig {
2
+ stitch: string[];
3
+ }
4
+ export interface StitchContentConfig {
5
+ stitch: Array<string | {
6
+ content: string;
7
+ name?: string;
8
+ }>;
9
+ }
10
+ export interface ContentItem {
11
+ content: string;
12
+ name?: string;
13
+ }
14
+ export interface StitchResult {
15
+ success: boolean;
16
+ data?: any;
17
+ error?: string;
18
+ message?: string;
19
+ }
20
+ export interface BuildOptions {
21
+ input?: string;
22
+ output?: string;
23
+ format?: 'yaml' | 'json';
24
+ validate?: boolean | string;
25
+ quiet?: boolean;
26
+ }
27
+ export interface WatchOptions extends BuildOptions {
28
+ }
29
+ export interface ValidationResult {
30
+ valid: boolean;
31
+ errors?: string[];
32
+ }
33
+ export interface InstallOptions {
34
+ schemaPath: string;
35
+ targets: string[];
36
+ vscodeSettingsPath?: string;
37
+ }
38
+ //# sourceMappingURL=StitchTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StitchTypes.d.ts","sourceRoot":"","sources":["../../src/types/StitchTypes.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAa,SAAQ,YAAY;CAEjD;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B"}
@@ -0,0 +1,4 @@
1
+ export { YamlMerger } from '../core/YamlMergerBrowser';
2
+ export { stitchFromViteImports, stitchFromOrderedViteImports, stitchFromSortedViteImports, stitchFromContent, stitchFromRawContent } from '../core/ViteHelper';
3
+ export * from '../types/StitchTypes';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAC5B,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,12 @@
1
+ export declare class StitchCLIFactory {
2
+ /**
3
+ * Parse command line arguments into commands and flags
4
+ * @param argv Optional array of command line arguments. If not provided, process.argv will be used.
5
+ * @returns Object containing parsed commands and flags
6
+ */
7
+ static setup(argv?: string[]): {
8
+ commands: string[];
9
+ flags: Record<string, any>;
10
+ };
11
+ }
12
+ //# sourceMappingURL=StitchCLI.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StitchCLI.d.ts","sourceRoot":"","sources":["../../src/cli/StitchCLI.ts"],"names":[],"mappings":"AAEA,qBAAa,gBAAgB;IACzB;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE;CA8CpF"}
@@ -0,0 +1,16 @@
1
+ import { StitchConfig } from '../types/StitchTypes';
2
+ export declare class ConfigParser {
3
+ /**
4
+ * Parse a stitch.yaml configuration file
5
+ */
6
+ parseConfig(configPath: string): StitchConfig;
7
+ /**
8
+ * Resolve file paths and expand globs relative to the config file directory
9
+ */
10
+ resolveFilePaths(patterns: string[], baseDir: string): Promise<string[]>;
11
+ /**
12
+ * Get the directory containing the config file
13
+ */
14
+ getConfigDir(configPath: string): string;
15
+ }
16
+ //# sourceMappingURL=ConfigParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigParser.d.ts","sourceRoot":"","sources":["../../src/core/ConfigParser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,qBAAa,YAAY;IACvB;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY;IAqB7C;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA6B9E;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;CAGzC"}
@@ -0,0 +1,31 @@
1
+ import { BuildOptions, WatchOptions, StitchResult, ContentItem, InstallOptions } from '../types/StitchTypes';
2
+ export declare class StitchEngine {
3
+ private configParser;
4
+ private yamlMerger;
5
+ private validator;
6
+ /**
7
+ * Build from a stitch configuration file (async)
8
+ */
9
+ build(configPath: string, options?: BuildOptions): Promise<StitchResult>;
10
+ /**
11
+ * Build from a stitch configuration file (sync)
12
+ */
13
+ buildSync(configPath: string, options?: BuildOptions): StitchResult;
14
+ /**
15
+ * Watch mode - rebuild when files change
16
+ */
17
+ watch(configPath: string, options?: WatchOptions): Promise<void>;
18
+ /**
19
+ * Build from content directly (no file system access)
20
+ */
21
+ buildFromContent(contents: ContentItem[], options?: Omit<BuildOptions, 'input'>): StitchResult;
22
+ /**
23
+ * Synchronous version of file path resolution for buildSync
24
+ */
25
+ private resolveFilePathsSync;
26
+ /**
27
+ * Install JSON schema for VSCode YAML validation
28
+ */
29
+ install(options: InstallOptions): StitchResult;
30
+ }
31
+ //# sourceMappingURL=StitchEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StitchEngine.d.ts","sourceRoot":"","sources":["../../src/core/StitchEngine.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE7G,qBAAa,YAAY;IACvB,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,SAAS,CAAmB;IAEpC;;OAEG;IACG,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IA4DlF;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,YAAY;IA4DvE;;OAEG;IACG,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqD1E;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,GAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAM,GAAG,YAAY;IA+ClG;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA6B5B;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,YAAY;CA0D/C"}
@@ -0,0 +1,18 @@
1
+ import { ValidationResult } from '../types/StitchTypes';
2
+ export declare class Validator {
3
+ private ajv;
4
+ constructor();
5
+ /**
6
+ * Validate YAML syntax
7
+ */
8
+ validateYamlSyntax(yamlString: string): ValidationResult;
9
+ /**
10
+ * Validate against OpenAPI schema
11
+ */
12
+ validateOpenAPI(yamlContent: any, schemaPath?: string): ValidationResult;
13
+ /**
14
+ * Validate against a JSON schema file
15
+ */
16
+ private validateAgainstSchema;
17
+ }
18
+ //# sourceMappingURL=Validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../../src/core/Validator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,qBAAa,SAAS;IACpB,OAAO,CAAC,GAAG,CAAM;;IAOjB;;OAEG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB;IAYxD;;OAEG;IACH,eAAe,CAAC,WAAW,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,gBAAgB;IAyBxE;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAmC9B"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Helper function for Vite environments
3
+ * Works with import.meta.glob() to merge YAML files
4
+ */
5
+ export declare function stitchFromViteImports(imports: Record<string, () => Promise<{
6
+ default: string;
7
+ }>>): Promise<any>;
8
+ /**
9
+ * Helper function for ordered Vite imports
10
+ * Ensures files are merged in a specific order based on the array
11
+ */
12
+ export declare function stitchFromOrderedViteImports(orderedPaths: string[], imports: Record<string, () => Promise<{
13
+ default: string;
14
+ }>>): Promise<any>;
15
+ /**
16
+ * Helper function for glob pattern imports with sorting
17
+ * Useful when you want alphabetical ordering of files
18
+ */
19
+ export declare function stitchFromSortedViteImports(imports: Record<string, () => Promise<{
20
+ default: string;
21
+ }>>): Promise<any>;
22
+ /**
23
+ * Direct content merging for when you already have the YAML strings
24
+ */
25
+ export declare function stitchFromContent(contents: Array<{
26
+ content: string;
27
+ name?: string;
28
+ }>): any;
29
+ /**
30
+ * Convenience function for merging raw YAML strings without names
31
+ */
32
+ export declare function stitchFromRawContent(yamlStrings: string[]): any;
33
+ //# sourceMappingURL=ViteHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViteHelper.d.ts","sourceRoot":"","sources":["../../src/core/ViteHelper.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,GAC1D,OAAO,CAAC,GAAG,CAAC,CAUd;AAED;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,GAC1D,OAAO,CAAC,GAAG,CAAC,CAgBd;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,GAC1D,OAAO,CAAC,GAAG,CAAC,CAGd;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAClD,GAAG,CAGL;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,GAAG,CAO/D"}
@@ -0,0 +1,29 @@
1
+ export declare class YamlMerger {
2
+ /**
3
+ * Merge multiple YAML files in order
4
+ */
5
+ mergeFiles(filePaths: string[]): any;
6
+ /**
7
+ * Merge multiple YAML content strings in order
8
+ */
9
+ mergeContent(contents: Array<{
10
+ content: string;
11
+ name?: string;
12
+ }>): any;
13
+ /**
14
+ * Merge mixed items (files and content) in order
15
+ */
16
+ merge(items: Array<string | {
17
+ content: string;
18
+ name?: string;
19
+ }>): any;
20
+ /**
21
+ * Deep merge two objects
22
+ * Rules:
23
+ * - Objects: merge properties, source overrides target
24
+ * - Arrays: source replaces target completely
25
+ * - Primitives: source overrides target
26
+ */
27
+ deepMerge(target: any, source: any): any;
28
+ }
29
+ //# sourceMappingURL=YamlMerger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YamlMerger.d.ts","sourceRoot":"","sources":["../../src/core/YamlMerger.ts"],"names":[],"mappings":"AAGA,qBAAa,UAAU;IACrB;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG;IAyBpC;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,GAAG;IAqBtE;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,GAAG;IAwCrE;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG;CAoCzC"}
@@ -0,0 +1,18 @@
1
+ export declare class YamlMerger {
2
+ /**
3
+ * Merge multiple YAML content strings in order
4
+ */
5
+ mergeContent(contents: Array<{
6
+ content: string;
7
+ name?: string;
8
+ }>): any;
9
+ /**
10
+ * Deep merge two objects
11
+ * Rules:
12
+ * - Objects: merge properties, source overrides target
13
+ * - Arrays: source replaces target completely
14
+ * - Primitives: source overrides target
15
+ */
16
+ deepMerge(target: any, source: any): any;
17
+ }
18
+ //# sourceMappingURL=YamlMergerBrowser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YamlMergerBrowser.d.ts","sourceRoot":"","sources":["../../src/core/YamlMergerBrowser.ts"],"names":[],"mappings":"AAEA,qBAAa,UAAU;IACrB;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,GAAG;IAqBtE;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG;CAoCzC"}
@@ -0,0 +1,15 @@
1
+ import { BuildOptions, WatchOptions, ContentItem, InstallOptions } from './types/StitchTypes';
2
+ export { StitchEngine } from './core/StitchEngine';
3
+ export { ConfigParser } from './core/ConfigParser';
4
+ export { YamlMerger } from './core/YamlMerger';
5
+ export { Validator } from './core/Validator';
6
+ export { StitchCLIFactory } from './cli/StitchCLI';
7
+ export * from './types/StitchTypes';
8
+ export declare const stitch: {
9
+ build: (options: BuildOptions) => Promise<import('.').StitchResult>;
10
+ buildSync: (options: BuildOptions) => import('.').StitchResult;
11
+ buildFromContent: (contents: ContentItem[], options?: Omit<BuildOptions, "input">) => import('.').StitchResult;
12
+ watch: (options: WatchOptions) => Promise<void>;
13
+ install: (options: InstallOptions) => import('.').StitchResult;
14
+ };
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,cAAc,qBAAqB,CAAC;AAIpC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE9F,eAAO,MAAM,MAAM;qBACM,YAAY;yBAKd,YAAY;iCAKJ,WAAW,EAAE,YAAW,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC;qBAKzD,YAAY;uBAKhB,cAAc;CAIlC,CAAC"}