schemantic 0.1.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.
- package/CHANGELOG.md +92 -0
- package/LICENSE +21 -0
- package/README.md +827 -0
- package/dist/__tests__/setup.d.ts +6 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/__tests__/setup.js +30 -0
- package/dist/__tests__/setup.js.map +1 -0
- package/dist/__tests__/test-config.d.ts +36 -0
- package/dist/__tests__/test-config.d.ts.map +1 -0
- package/dist/__tests__/test-config.js +563 -0
- package/dist/__tests__/test-config.js.map +1 -0
- package/dist/cli/index.d.ts +118 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +657 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +21 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/schemantic.d.ts +95 -0
- package/dist/core/schemantic.d.ts.map +1 -0
- package/dist/core/schemantic.js +543 -0
- package/dist/core/schemantic.js.map +1 -0
- package/dist/generators/api-client-generator.d.ts +145 -0
- package/dist/generators/api-client-generator.d.ts.map +1 -0
- package/dist/generators/api-client-generator.js +856 -0
- package/dist/generators/api-client-generator.js.map +1 -0
- package/dist/generators/base.d.ts +117 -0
- package/dist/generators/base.d.ts.map +1 -0
- package/dist/generators/base.js +232 -0
- package/dist/generators/base.js.map +1 -0
- package/dist/generators/enum-generator.d.ts +52 -0
- package/dist/generators/enum-generator.d.ts.map +1 -0
- package/dist/generators/enum-generator.js +178 -0
- package/dist/generators/enum-generator.js.map +1 -0
- package/dist/generators/factory.d.ts +59 -0
- package/dist/generators/factory.d.ts.map +1 -0
- package/dist/generators/factory.js +127 -0
- package/dist/generators/factory.js.map +1 -0
- package/dist/generators/hook-generator.d.ts +36 -0
- package/dist/generators/hook-generator.d.ts.map +1 -0
- package/dist/generators/hook-generator.js +495 -0
- package/dist/generators/hook-generator.js.map +1 -0
- package/dist/generators/index.d.ts +10 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +26 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/object-generator.d.ts +48 -0
- package/dist/generators/object-generator.d.ts.map +1 -0
- package/dist/generators/object-generator.js +280 -0
- package/dist/generators/object-generator.js.map +1 -0
- package/dist/generators/primitive-generator.d.ts +40 -0
- package/dist/generators/primitive-generator.d.ts.map +1 -0
- package/dist/generators/primitive-generator.js +150 -0
- package/dist/generators/primitive-generator.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/base.d.ts +101 -0
- package/dist/parsers/base.d.ts.map +1 -0
- package/dist/parsers/base.js +77 -0
- package/dist/parsers/base.js.map +1 -0
- package/dist/parsers/factory.d.ts +64 -0
- package/dist/parsers/factory.d.ts.map +1 -0
- package/dist/parsers/factory.js +116 -0
- package/dist/parsers/factory.js.map +1 -0
- package/dist/parsers/index.d.ts +7 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +23 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/openapi.d.ts +52 -0
- package/dist/parsers/openapi.d.ts.map +1 -0
- package/dist/parsers/openapi.js +396 -0
- package/dist/parsers/openapi.js.map +1 -0
- package/dist/plugins/branded-types.d.ts +28 -0
- package/dist/plugins/branded-types.d.ts.map +1 -0
- package/dist/plugins/branded-types.js +568 -0
- package/dist/plugins/branded-types.js.map +1 -0
- package/dist/plugins/builtin.d.ts +38 -0
- package/dist/plugins/builtin.d.ts.map +1 -0
- package/dist/plugins/builtin.js +283 -0
- package/dist/plugins/builtin.js.map +1 -0
- package/dist/plugins/index.d.ts +7 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +23 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/loader.d.ts +92 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +245 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/manager.d.ts +99 -0
- package/dist/plugins/manager.d.ts.map +1 -0
- package/dist/plugins/manager.js +233 -0
- package/dist/plugins/manager.js.map +1 -0
- package/dist/plugins/performance-monitoring.d.ts +98 -0
- package/dist/plugins/performance-monitoring.d.ts.map +1 -0
- package/dist/plugins/performance-monitoring.js +596 -0
- package/dist/plugins/performance-monitoring.js.map +1 -0
- package/dist/plugins/request-deduplication.d.ts +27 -0
- package/dist/plugins/request-deduplication.d.ts.map +1 -0
- package/dist/plugins/request-deduplication.js +650 -0
- package/dist/plugins/request-deduplication.js.map +1 -0
- package/dist/plugins/zod-validation.d.ts +63 -0
- package/dist/plugins/zod-validation.d.ts.map +1 -0
- package/dist/plugins/zod-validation.js +743 -0
- package/dist/plugins/zod-validation.js.map +1 -0
- package/dist/types/core.d.ts +203 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/core.js +24 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +23 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/openapi.d.ts +250 -0
- package/dist/types/openapi.d.ts.map +1 -0
- package/dist/types/openapi.js +8 -0
- package/dist/types/openapi.js.map +1 -0
- package/dist/types/schema.d.ts +68 -0
- package/dist/types/schema.d.ts.map +1 -0
- package/dist/types/schema.js +22 -0
- package/dist/types/schema.js.map +1 -0
- package/docs/ADVANCED_PLUGINS_IMPLEMENTATION.md +355 -0
- package/docs/ADVANCED_PLUGIN_DEVELOPMENT.md +309 -0
- package/docs/API.md +600 -0
- package/docs/CONFIGURATION.md +722 -0
- package/docs/FASTAPI_TUTORIAL.md +1497 -0
- package/docs/PLUGINS.md +683 -0
- package/docs/PLUGIN_DEVELOPMENT.md +720 -0
- package/package.json +90 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqQH,gDAKC;AAKD,sDAKC;AAKD,4DAKC;AA5RD,gDAAkC;AAClC,2CAA6B;AAG7B;;GAEG;AACH,MAAa,YAAY;IAAzB;QACU,kBAAa,GAAkC,IAAI,GAAG,EAAE,CAAC;IA0NnE,CAAC;IAxNC;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,QAAgB;QACvC,IAAI,CAAC;YACH,uBAAuB;YACvB,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAE1B,kBAAkB;YAClB,MAAM,YAAY,GAAG,yBAAa,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,uCAAC,CAAC;YAE1D,6BAA6B;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;YAE1D,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC;YAC1D,CAAC;YAED,kBAAkB;YAClB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAE5B,sBAAsB;YACtB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAE5C,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,KAAK,KAAK,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CAAC,WAAmB;QAC7C,IAAI,CAAC;YACH,mBAAmB;YACnB,MAAM,YAAY,GAAG,yBAAa,WAAW,uCAAC,CAAC;YAE/C,6BAA6B;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;YAE1D,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,oCAAoC,WAAW,EAAE,CAAC,CAAC;YACrE,CAAC;YAED,kBAAkB;YAClB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAE5B,sBAAsB;YACtB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAE5C,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,sCAAsC,WAAW,KAAK,KAAK,EAAE,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,wBAAwB,CAC5B,aAAqB;QAErB,IAAI,CAAC;YACH,MAAM,OAAO,GAAuB,EAAE,CAAC;YAEvC,0BAA0B;YAC1B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAEzE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IACE,KAAK,CAAC,MAAM,EAAE;oBACd,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAC1D,CAAC;oBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;oBAEtD,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;wBACvD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACvB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,IAAI,CAAC,8BAA8B,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;oBACjE,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,yCAAyC,aAAa,KAAK,KAAK,EAAE,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,MAAwB;QAC3C,kBAAkB;QAClB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE5B,sBAAsB;QACtB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE5C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,uBAAuB,CAC7B,MAAe;QAEf,gCAAgC;QAChC,IACE,OAAO,MAAM,KAAK,QAAQ;YAC1B,MAAM,KAAK,IAAI;YACf,SAAS,IAAI,MAAM;YACnB,IAAI,CAAC,aAAa,CAAE,MAA+B,CAAC,OAAO,CAAC,EAC5D,CAAC;YACD,OAAQ,MAAwC,CAAC,OAAO,CAAC;QAC3D,CAAC;QAED,IACE,OAAO,MAAM,KAAK,QAAQ;YAC1B,MAAM,KAAK,IAAI;YACf,QAAQ,IAAI,MAAM;YAClB,IAAI,CAAC,aAAa,CAAE,MAA8B,CAAC,MAAM,CAAC,EAC1D,CAAC;YACD,OAAQ,MAAuC,CAAC,MAAM,CAAC;QACzD,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,6BAA6B;QAC7B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAClD,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CACpC,MAAiC,CAClC,EAAE,CAAC;gBACF,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC9B,OAAO,KAAyB,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,GAAY;QAChC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAClD,MAAM,KAAK,GAAG,GAAgC,CAAC;QAC/C,OAAO,CACL,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAC9B,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;YACjC,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,CACtC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,MAAwB;QAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,4BAA4B;QAC5B,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,IAAI,qBAAqB,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,IAAY;QAC1B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI;YACtC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;SACnD,CAAC;IACJ,CAAC;CACF;AA3ND,oCA2NC;AA8BD;;GAEG;AACI,KAAK,UAAU,kBAAkB,CACtC,QAAgB;IAEhB,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IAClC,OAAO,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,qBAAqB,CACzC,WAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IAClC,OAAO,MAAM,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,wBAAwB,CAC5C,aAAqB;IAErB,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IAClC,OAAO,MAAM,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin manager for the schemantic system
|
|
3
|
+
* Handles loading, registration, and execution of plugins
|
|
4
|
+
*/
|
|
5
|
+
import { SchemanticPlugin, GenerationContext, GenerationResult, GeneratedType, GeneratedApiClient } from "../types/core";
|
|
6
|
+
import { ResolvedSchema } from "../types/schema";
|
|
7
|
+
/**
|
|
8
|
+
* Plugin manager class
|
|
9
|
+
*/
|
|
10
|
+
export declare class PluginManager {
|
|
11
|
+
private plugins;
|
|
12
|
+
private enabledPlugins;
|
|
13
|
+
/**
|
|
14
|
+
* Register a plugin
|
|
15
|
+
*/
|
|
16
|
+
registerPlugin(plugin: SchemanticPlugin): void;
|
|
17
|
+
/**
|
|
18
|
+
* Unregister a plugin
|
|
19
|
+
*/
|
|
20
|
+
unregisterPlugin(name: string): void;
|
|
21
|
+
/**
|
|
22
|
+
* Enable a plugin
|
|
23
|
+
*/
|
|
24
|
+
enablePlugin(name: string): void;
|
|
25
|
+
/**
|
|
26
|
+
* Disable a plugin
|
|
27
|
+
*/
|
|
28
|
+
disablePlugin(name: string): void;
|
|
29
|
+
/**
|
|
30
|
+
* Check if a plugin is enabled
|
|
31
|
+
*/
|
|
32
|
+
isPluginEnabled(name: string): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Get all registered plugins
|
|
35
|
+
*/
|
|
36
|
+
getAllPlugins(): SchemanticPlugin[];
|
|
37
|
+
/**
|
|
38
|
+
* Get enabled plugins
|
|
39
|
+
*/
|
|
40
|
+
getEnabledPlugins(): SchemanticPlugin[];
|
|
41
|
+
/**
|
|
42
|
+
* Get a specific plugin
|
|
43
|
+
*/
|
|
44
|
+
getPlugin(name: string): SchemanticPlugin | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Execute before generation hook
|
|
47
|
+
*/
|
|
48
|
+
executeBeforeGeneration(context: GenerationContext): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Execute after generation hook
|
|
51
|
+
*/
|
|
52
|
+
executeAfterGeneration(context: GenerationContext, result: GenerationResult): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Execute before type generation hook
|
|
55
|
+
*/
|
|
56
|
+
executeBeforeTypeGeneration(typeName: string, schema: ResolvedSchema, context: GenerationContext): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Execute after type generation hook
|
|
59
|
+
*/
|
|
60
|
+
executeAfterTypeGeneration(typeName: string, generatedType: GeneratedType, context: GenerationContext): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Execute before client generation hook
|
|
63
|
+
*/
|
|
64
|
+
executeBeforeClientGeneration(context: GenerationContext): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Execute after client generation hook
|
|
67
|
+
*/
|
|
68
|
+
executeAfterClientGeneration(generatedClient: GeneratedApiClient, context: GenerationContext): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Transform schema using plugins
|
|
71
|
+
*/
|
|
72
|
+
transformSchema(schema: ResolvedSchema, context: GenerationContext): ResolvedSchema;
|
|
73
|
+
/**
|
|
74
|
+
* Get custom type generators from plugins
|
|
75
|
+
*/
|
|
76
|
+
getCustomTypeGenerators(): Map<string, (schema: ResolvedSchema, context: GenerationContext) => GeneratedType>;
|
|
77
|
+
/**
|
|
78
|
+
* Get custom client generators from plugins
|
|
79
|
+
*/
|
|
80
|
+
getCustomClientGenerators(): Map<string, (context: GenerationContext) => GeneratedApiClient>;
|
|
81
|
+
/**
|
|
82
|
+
* Clear all plugins
|
|
83
|
+
*/
|
|
84
|
+
clear(): void;
|
|
85
|
+
/**
|
|
86
|
+
* Get plugin statistics
|
|
87
|
+
*/
|
|
88
|
+
getStatistics(): PluginStatistics;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Plugin statistics
|
|
92
|
+
*/
|
|
93
|
+
export interface PluginStatistics {
|
|
94
|
+
totalPlugins: number;
|
|
95
|
+
enabledPlugins: number;
|
|
96
|
+
disabledPlugins: number;
|
|
97
|
+
pluginNames: string[];
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAA4C;IAC3D,OAAO,CAAC,cAAc,CAA0B;IAEhD;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAI9C;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKpC;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMhC;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAItC;;OAEG;IACH,aAAa,IAAI,gBAAgB,EAAE;IAInC;;OAEG;IACH,iBAAiB,IAAI,gBAAgB,EAAE;IAMvC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIrD;;OAEG;IACG,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBxE;;OAEG;IACG,sBAAsB,CAC1B,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,IAAI,CAAC;IAiBhB;;OAEG;IACG,2BAA2B,CAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC;IAiBhB;;OAEG;IACG,0BAA0B,CAC9B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC;IAiBhB;;OAEG;IACG,6BAA6B,CACjC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC;IAiBhB;;OAEG;IACG,4BAA4B,CAChC,eAAe,EAAE,kBAAkB,EACnC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC;IAiBhB;;OAEG;IACH,eAAe,CACb,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,iBAAiB,GACzB,cAAc;IAwBjB;;OAEG;IACH,uBAAuB,IAAI,GAAG,CAC5B,MAAM,EACN,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,KAAK,aAAa,CACtE;IAqBD;;OAEG;IACH,yBAAyB,IAAI,GAAG,CAC9B,MAAM,EACN,CAAC,OAAO,EAAE,iBAAiB,KAAK,kBAAkB,CACnD;IAqBD;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,aAAa,IAAI,gBAAgB;CAQlC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Plugin manager for the schemantic system
|
|
4
|
+
* Handles loading, registration, and execution of plugins
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.PluginManager = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Plugin manager class
|
|
10
|
+
*/
|
|
11
|
+
class PluginManager {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.plugins = new Map();
|
|
14
|
+
this.enabledPlugins = new Set();
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Register a plugin
|
|
18
|
+
*/
|
|
19
|
+
registerPlugin(plugin) {
|
|
20
|
+
this.plugins.set(plugin.name, plugin);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Unregister a plugin
|
|
24
|
+
*/
|
|
25
|
+
unregisterPlugin(name) {
|
|
26
|
+
this.plugins.delete(name);
|
|
27
|
+
this.enabledPlugins.delete(name);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Enable a plugin
|
|
31
|
+
*/
|
|
32
|
+
enablePlugin(name) {
|
|
33
|
+
if (this.plugins.has(name)) {
|
|
34
|
+
this.enabledPlugins.add(name);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Disable a plugin
|
|
39
|
+
*/
|
|
40
|
+
disablePlugin(name) {
|
|
41
|
+
this.enabledPlugins.delete(name);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Check if a plugin is enabled
|
|
45
|
+
*/
|
|
46
|
+
isPluginEnabled(name) {
|
|
47
|
+
return this.enabledPlugins.has(name);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get all registered plugins
|
|
51
|
+
*/
|
|
52
|
+
getAllPlugins() {
|
|
53
|
+
return Array.from(this.plugins.values());
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get enabled plugins
|
|
57
|
+
*/
|
|
58
|
+
getEnabledPlugins() {
|
|
59
|
+
return Array.from(this.enabledPlugins)
|
|
60
|
+
.map((name) => this.plugins.get(name))
|
|
61
|
+
.filter((plugin) => plugin !== undefined);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get a specific plugin
|
|
65
|
+
*/
|
|
66
|
+
getPlugin(name) {
|
|
67
|
+
return this.plugins.get(name);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Execute before generation hook
|
|
71
|
+
*/
|
|
72
|
+
async executeBeforeGeneration(context) {
|
|
73
|
+
const enabledPlugins = this.getEnabledPlugins();
|
|
74
|
+
for (const plugin of enabledPlugins) {
|
|
75
|
+
if (plugin.beforeGeneration) {
|
|
76
|
+
try {
|
|
77
|
+
await plugin.beforeGeneration(context);
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
console.warn(`Plugin ${plugin.name} beforeGeneration hook failed:`, error);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Execute after generation hook
|
|
87
|
+
*/
|
|
88
|
+
async executeAfterGeneration(context, result) {
|
|
89
|
+
const enabledPlugins = this.getEnabledPlugins();
|
|
90
|
+
for (const plugin of enabledPlugins) {
|
|
91
|
+
if (plugin.afterGeneration) {
|
|
92
|
+
try {
|
|
93
|
+
await plugin.afterGeneration(context, result);
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
console.warn(`Plugin ${plugin.name} afterGeneration hook failed:`, error);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Execute before type generation hook
|
|
103
|
+
*/
|
|
104
|
+
async executeBeforeTypeGeneration(typeName, schema, context) {
|
|
105
|
+
const enabledPlugins = this.getEnabledPlugins();
|
|
106
|
+
for (const plugin of enabledPlugins) {
|
|
107
|
+
if (plugin.beforeTypeGeneration) {
|
|
108
|
+
try {
|
|
109
|
+
await plugin.beforeTypeGeneration(typeName, schema, context);
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
console.warn(`Plugin ${plugin.name} beforeTypeGeneration hook failed:`, error);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Execute after type generation hook
|
|
119
|
+
*/
|
|
120
|
+
async executeAfterTypeGeneration(typeName, generatedType, context) {
|
|
121
|
+
const enabledPlugins = this.getEnabledPlugins();
|
|
122
|
+
for (const plugin of enabledPlugins) {
|
|
123
|
+
if (plugin.afterTypeGeneration) {
|
|
124
|
+
try {
|
|
125
|
+
await plugin.afterTypeGeneration(typeName, generatedType, context);
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
console.warn(`Plugin ${plugin.name} afterTypeGeneration hook failed:`, error);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Execute before client generation hook
|
|
135
|
+
*/
|
|
136
|
+
async executeBeforeClientGeneration(context) {
|
|
137
|
+
const enabledPlugins = this.getEnabledPlugins();
|
|
138
|
+
for (const plugin of enabledPlugins) {
|
|
139
|
+
if (plugin.beforeClientGeneration) {
|
|
140
|
+
try {
|
|
141
|
+
await plugin.beforeClientGeneration(context);
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
console.warn(`Plugin ${plugin.name} beforeClientGeneration hook failed:`, error);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Execute after client generation hook
|
|
151
|
+
*/
|
|
152
|
+
async executeAfterClientGeneration(generatedClient, context) {
|
|
153
|
+
const enabledPlugins = this.getEnabledPlugins();
|
|
154
|
+
for (const plugin of enabledPlugins) {
|
|
155
|
+
if (plugin.afterClientGeneration) {
|
|
156
|
+
try {
|
|
157
|
+
await plugin.afterClientGeneration(generatedClient, context);
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
console.warn(`Plugin ${plugin.name} afterClientGeneration hook failed:`, error);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Transform schema using plugins
|
|
167
|
+
*/
|
|
168
|
+
transformSchema(schema, context) {
|
|
169
|
+
let transformedSchema = schema;
|
|
170
|
+
const enabledPlugins = this.getEnabledPlugins();
|
|
171
|
+
for (const plugin of enabledPlugins) {
|
|
172
|
+
if (plugin.transformSchema) {
|
|
173
|
+
try {
|
|
174
|
+
transformedSchema = plugin.transformSchema(transformedSchema, context);
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
console.warn(`Plugin ${plugin.name} transformSchema hook failed:`, error);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return transformedSchema;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Get custom type generators from plugins
|
|
185
|
+
*/
|
|
186
|
+
getCustomTypeGenerators() {
|
|
187
|
+
const generators = new Map();
|
|
188
|
+
const enabledPlugins = this.getEnabledPlugins();
|
|
189
|
+
for (const plugin of enabledPlugins) {
|
|
190
|
+
if (plugin.customTypeGenerators) {
|
|
191
|
+
for (const [name, generator] of Object.entries(plugin.customTypeGenerators)) {
|
|
192
|
+
generators.set(`${plugin.name}:${name}`, generator);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return generators;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Get custom client generators from plugins
|
|
200
|
+
*/
|
|
201
|
+
getCustomClientGenerators() {
|
|
202
|
+
const generators = new Map();
|
|
203
|
+
const enabledPlugins = this.getEnabledPlugins();
|
|
204
|
+
for (const plugin of enabledPlugins) {
|
|
205
|
+
if (plugin.customClientGenerators) {
|
|
206
|
+
for (const [name, generator] of Object.entries(plugin.customClientGenerators)) {
|
|
207
|
+
generators.set(`${plugin.name}:${name}`, generator);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return generators;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Clear all plugins
|
|
215
|
+
*/
|
|
216
|
+
clear() {
|
|
217
|
+
this.plugins.clear();
|
|
218
|
+
this.enabledPlugins.clear();
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Get plugin statistics
|
|
222
|
+
*/
|
|
223
|
+
getStatistics() {
|
|
224
|
+
return {
|
|
225
|
+
totalPlugins: this.plugins.size,
|
|
226
|
+
enabledPlugins: this.enabledPlugins.size,
|
|
227
|
+
disabledPlugins: this.plugins.size - this.enabledPlugins.size,
|
|
228
|
+
pluginNames: Array.from(this.plugins.keys()),
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
exports.PluginManager = PluginManager;
|
|
233
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Advanced Performance Monitoring Plugin
|
|
3
|
+
*
|
|
4
|
+
* Implements sophisticated performance tracking, bundle size optimization,
|
|
5
|
+
* and intelligent monitoring for generated API clients and types.
|
|
6
|
+
*
|
|
7
|
+
* Key Features:
|
|
8
|
+
* - Request timing collection with statistical analysis
|
|
9
|
+
* - Bundle size analysis and optimization recommendations
|
|
10
|
+
* - Memory usage profiling and leak detection
|
|
11
|
+
* - Performance regression detection
|
|
12
|
+
* - Automated optimization suggestions
|
|
13
|
+
*
|
|
14
|
+
* Architecture:
|
|
15
|
+
* - Non-intrusive performance instrumentation
|
|
16
|
+
* - Statistical analysis with percentile calculations
|
|
17
|
+
* - Memory-efficient metrics storage with TTL
|
|
18
|
+
* - Configurable monitoring thresholds
|
|
19
|
+
*/
|
|
20
|
+
import { SchemanticPlugin } from "../types/core";
|
|
21
|
+
/**
|
|
22
|
+
* Performance metric data structure
|
|
23
|
+
*/
|
|
24
|
+
interface PerformanceMetric {
|
|
25
|
+
timestamp: number;
|
|
26
|
+
operation: string;
|
|
27
|
+
duration: number;
|
|
28
|
+
metadata: Record<string, unknown>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Bundle analysis result
|
|
32
|
+
*/
|
|
33
|
+
interface BundleAnalysis {
|
|
34
|
+
totalSize: number;
|
|
35
|
+
gzippedSize?: number;
|
|
36
|
+
chunks: {
|
|
37
|
+
name: string;
|
|
38
|
+
size: number;
|
|
39
|
+
dependencies: string[];
|
|
40
|
+
}[];
|
|
41
|
+
recommendations: string[];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Performance statistics calculator
|
|
45
|
+
*/
|
|
46
|
+
declare class PerformanceAnalyzer {
|
|
47
|
+
private readonly maxSnapshots;
|
|
48
|
+
constructor(maxSnapshots?: number);
|
|
49
|
+
recordMetric(metric: PerformanceMetric): void;
|
|
50
|
+
getStatistics(operation: string): PerformanceStatistics | null;
|
|
51
|
+
private getPercentile;
|
|
52
|
+
private calculateStandardDeviation;
|
|
53
|
+
recordMemorySnapshot(): void;
|
|
54
|
+
analyzeBundleSize(generatedContent: string, dependencies: string[]): BundleAnalysis;
|
|
55
|
+
generateReport(format?: "json" | "html" | "markdown"): string;
|
|
56
|
+
private getAllStatistics;
|
|
57
|
+
/**
|
|
58
|
+
* Get all statistics (public method)
|
|
59
|
+
*/
|
|
60
|
+
getAllStats(): Record<string, PerformanceStatistics>;
|
|
61
|
+
private getMemoryAnalysis;
|
|
62
|
+
private generateHTMLReport;
|
|
63
|
+
private generateMarkdownReport;
|
|
64
|
+
clearMetrics(): void;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Performance statistics interface
|
|
68
|
+
*/
|
|
69
|
+
interface PerformanceStatistics {
|
|
70
|
+
count: number;
|
|
71
|
+
min: number;
|
|
72
|
+
max: number;
|
|
73
|
+
mean: number;
|
|
74
|
+
median: number;
|
|
75
|
+
p95: number;
|
|
76
|
+
p99: number;
|
|
77
|
+
standardDeviation: number;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Global performance analyzer instance
|
|
81
|
+
*/
|
|
82
|
+
declare const performanceAnalyzer: PerformanceAnalyzer;
|
|
83
|
+
/**
|
|
84
|
+
* Advanced Performance Monitoring Plugin Implementation
|
|
85
|
+
*/
|
|
86
|
+
export declare const performanceMonitoringPlugin: SchemanticPlugin;
|
|
87
|
+
/**
|
|
88
|
+
* Export performance analyzer instance for external use
|
|
89
|
+
*/
|
|
90
|
+
export { performanceAnalyzer };
|
|
91
|
+
/**
|
|
92
|
+
* Export utility functions
|
|
93
|
+
*/
|
|
94
|
+
export declare function getPerformanceMonitoringStats(): Record<string, PerformanceStatistics>;
|
|
95
|
+
export declare function clearPerformanceMonitoringCache(): void;
|
|
96
|
+
export declare function generatePerformanceReport(format?: "json" | "html" | "markdown"): string;
|
|
97
|
+
export default performanceMonitoringPlugin;
|
|
98
|
+
//# sourceMappingURL=performance-monitoring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance-monitoring.d.ts","sourceRoot":"","sources":["../../src/plugins/performance-monitoring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACL,gBAAgB,EAIjB,MAAM,eAAe,CAAC;AA+BvB;;GAEG;AACH,UAAU,iBAAiB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,UAAU,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB,EAAE,CAAC;IACJ,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAmBD;;GAEG;AACH,cAAM,mBAAmB;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,YAAY,SAAO;IAI/B,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAe7C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI;IAqB9D,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,0BAA0B;IAQlC,oBAAoB,IAAI,IAAI;IAiB5B,iBAAiB,CACf,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,EAAE,GACrB,cAAc;IA0BjB,cAAc,CAAC,MAAM,GAAE,MAAM,GAAG,MAAM,GAAG,UAAmB,GAAG,MAAM;IAkBrE,OAAO,CAAC,gBAAgB;IAWxB;;OAEG;IACH,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAIpD,OAAO,CAAC,iBAAiB;IA6BzB,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,sBAAsB;IAgB9B,YAAY,IAAI,IAAI;CAKrB;AAED;;GAEG;AACH,UAAU,qBAAqB;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAqBD;;GAEG;AACH,QAAA,MAAM,mBAAmB,qBAA4B,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,2BAA2B,EAAE,gBA6MzC,CAAC;AAiOF;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,MAAM,CACrD,MAAM,EACN,qBAAqB,CACtB,CAEA;AAED,wBAAgB,+BAA+B,IAAI,IAAI,CAEtD;AAED,wBAAgB,yBAAyB,CACvC,MAAM,GAAE,MAAM,GAAG,MAAM,GAAG,UAAmB,GAC5C,MAAM,CAER;AAGD,eAAe,2BAA2B,CAAC"}
|