@ironbackend/core 1.0.1 → 1.0.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.
- package/README.md +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/schema.d.ts +151 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +97 -0
- package/dist/schema.js.map +1 -0
- package/dist/styles/index.d.ts +2 -2
- package/dist/styles/index.d.ts.map +1 -1
- package/dist/styles/index.js +4 -3
- package/dist/styles/index.js.map +1 -1
- package/dist/types.d.ts +55 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/performance.d.ts +31 -0
- package/dist/utils/performance.d.ts.map +1 -0
- package/dist/utils/performance.js +71 -0
- package/dist/utils/performance.js.map +1 -0
- package/package.json +5 -2
package/README.md
CHANGED
|
@@ -100,7 +100,7 @@ getWarnRules(): DesignRule[]
|
|
|
100
100
|
|
|
101
101
|
## Related Packages
|
|
102
102
|
|
|
103
|
-
- [
|
|
103
|
+
- [`@ironbackend/cli`](https://www.npmjs.com/package/@ironbackend/cli) - CLI tool
|
|
104
104
|
- [`@ironbackend/prompts`](https://www.npmjs.com/package/@ironbackend/prompts) - Prompt builders
|
|
105
105
|
|
|
106
106
|
## License
|
package/dist/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* - Security & reliability playbooks
|
|
10
10
|
*/
|
|
11
11
|
export * from './types.js';
|
|
12
|
+
export * from './schema.js';
|
|
12
13
|
export * as styles from './styles/index.js';
|
|
13
14
|
export { getStyle, getStyleIds, findStyles, cleanMonolith, modularMonolith, hexagonal, eventDriven, cqrs, microservicesSync, microservicesAsync, serverless, readHeavy, automation, } from './styles/index.js';
|
|
14
15
|
export * as stacks from './stacks/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACH,QAAQ,EACR,WAAW,EACX,UAAU,EACV,aAAa,EACb,eAAe,EACf,SAAS,EACT,WAAW,EACX,IAAI,EACJ,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,UAAU,GACb,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACH,QAAQ,EACR,WAAW,EACX,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,GAChB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EACH,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,eAAe,EACf,UAAU,GACb,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,EACH,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,uBAAuB,GAC1B,MAAM,qBAAqB,CAAC;AAkB7B,eAAO,MAAM,OAAO,QAAe,CAAC;AAOpC;;GAEG;AACH,wBAAgB,UAAU;;;;;EAOzB"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,cAAc,YAAY,CAAC;AAG3B,cAAc,aAAa,CAAC;AAG5B,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACH,QAAQ,EACR,WAAW,EACX,UAAU,EACV,aAAa,EACb,eAAe,EACf,SAAS,EACT,WAAW,EACX,IAAI,EACJ,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,UAAU,GACb,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACH,QAAQ,EACR,WAAW,EACX,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,GAChB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EACH,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,eAAe,EACf,UAAU,GACb,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,EACH,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,uBAAuB,GAC1B,MAAM,qBAAqB,CAAC;AAkB7B,eAAO,MAAM,OAAO,QAAe,CAAC;AAOpC;;GAEG;AACH,wBAAgB,UAAU;;;;;EAOzB"}
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
*/
|
|
11
11
|
// Types
|
|
12
12
|
export * from './types.js';
|
|
13
|
+
// Schema Validation
|
|
14
|
+
export * from './schema.js';
|
|
13
15
|
// Architecture Styles
|
|
14
16
|
export * as styles from './styles/index.js';
|
|
15
17
|
export { getStyle, getStyleIds, findStyles, cleanMonolith, modularMonolith, hexagonal, eventDriven, cqrs, microservicesSync, microservicesAsync, serverless, readHeavy, automation, } from './styles/index.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,sBAAsB;AACtB,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACH,QAAQ,EACR,WAAW,EACX,UAAU,EACV,aAAa,EACb,eAAe,EACf,SAAS,EACT,WAAW,EACX,IAAI,EACJ,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,UAAU,GACb,MAAM,mBAAmB,CAAC;AAE3B,cAAc;AACd,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACH,QAAQ,EACR,WAAW,EACX,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,GAChB,MAAM,mBAAmB,CAAC;AAE3B,eAAe;AACf,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EACH,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,eAAe,EACf,UAAU,GACb,MAAM,kBAAkB,CAAC;AAE1B,WAAW;AACX,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,EACH,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,uBAAuB,GAC1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC;;GAEG;AACH,MAAM,UAAU,GAAG,GAAW,EAAE;IAC5B,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACvC,OAAO,GAAG,CAAC,OAAO,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACL,0BAA0B;QAC1B,OAAO,OAAO,CAAC;IACnB,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;AAEpC,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAC;AAEjD;;GAEG;AACH,MAAM,UAAU,UAAU;IACtB,OAAO;QACH,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,MAAM,CAAC,QAAQ;QACtB,QAAQ,EAAE,SAAS,CAAC,gBAAgB;KACvC,CAAC;AACN,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,oBAAoB;AACpB,cAAc,aAAa,CAAC;AAE5B,sBAAsB;AACtB,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACH,QAAQ,EACR,WAAW,EACX,UAAU,EACV,aAAa,EACb,eAAe,EACf,SAAS,EACT,WAAW,EACX,IAAI,EACJ,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,UAAU,GACb,MAAM,mBAAmB,CAAC;AAE3B,cAAc;AACd,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACH,QAAQ,EACR,WAAW,EACX,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,GAChB,MAAM,mBAAmB,CAAC;AAE3B,eAAe;AACf,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EACH,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,eAAe,EACf,UAAU,GACb,MAAM,kBAAkB,CAAC;AAE1B,WAAW;AACX,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,EACH,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,uBAAuB,GAC1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC;;GAEG;AACH,MAAM,UAAU,GAAG,GAAW,EAAE;IAC5B,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACvC,OAAO,GAAG,CAAC,OAAO,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACL,0BAA0B;QAC1B,OAAO,OAAO,CAAC;IACnB,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;AAEpC,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAC;AAEjD;;GAEG;AACH,MAAM,UAAU,UAAU;IACtB,OAAO;QACH,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,MAAM,CAAC,QAAQ;QACtB,QAAQ,EAAE,SAAS,CAAC,gBAAgB;KACvC,CAAC;AACN,CAAC"}
|
package/dist/schema.d.ts
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IronBackend Configuration Schema
|
|
3
|
+
* Runtime validation using Zod
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
export declare const RuleSeveritySchema: z.ZodEnum<["ERROR", "WARN"]>;
|
|
7
|
+
export declare const RuleCategorySchema: z.ZodEnum<["API", "DOMAIN", "ERROR_HANDLING", "TRANSACTIONS", "DATA_ACCESS", "NAMING", "VALIDATION", "ASYNC"]>;
|
|
8
|
+
export declare const RulesConfigSchema: z.ZodObject<{
|
|
9
|
+
enabled: z.ZodArray<z.ZodString, "many">;
|
|
10
|
+
overrides: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
enabled: string[];
|
|
13
|
+
overrides: Record<string, string>;
|
|
14
|
+
}, {
|
|
15
|
+
enabled: string[];
|
|
16
|
+
overrides: Record<string, string>;
|
|
17
|
+
}>;
|
|
18
|
+
export declare const SecurityConfigSchema: z.ZodObject<{
|
|
19
|
+
authStrategy: z.ZodOptional<z.ZodEnum<["JWT", "SESSION", "API_KEY", "OAUTH2", "MTLS"]>>;
|
|
20
|
+
authorizationModel: z.ZodOptional<z.ZodEnum<["RBAC", "ABAC"]>>;
|
|
21
|
+
}, "strip", z.ZodTypeAny, {
|
|
22
|
+
authStrategy?: "JWT" | "SESSION" | "API_KEY" | "OAUTH2" | "MTLS" | undefined;
|
|
23
|
+
authorizationModel?: "RBAC" | "ABAC" | undefined;
|
|
24
|
+
}, {
|
|
25
|
+
authStrategy?: "JWT" | "SESSION" | "API_KEY" | "OAUTH2" | "MTLS" | undefined;
|
|
26
|
+
authorizationModel?: "RBAC" | "ABAC" | undefined;
|
|
27
|
+
}>;
|
|
28
|
+
/**
|
|
29
|
+
* Schema for .ironbackend/config.json
|
|
30
|
+
*/
|
|
31
|
+
export declare const IronBackendLocalConfigSchema: z.ZodObject<{
|
|
32
|
+
version: z.ZodString;
|
|
33
|
+
tool: z.ZodNullable<z.ZodString>;
|
|
34
|
+
style: z.ZodNullable<z.ZodString>;
|
|
35
|
+
stack: z.ZodNullable<z.ZodString>;
|
|
36
|
+
rules: z.ZodObject<{
|
|
37
|
+
enabled: z.ZodArray<z.ZodString, "many">;
|
|
38
|
+
overrides: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
39
|
+
}, "strip", z.ZodTypeAny, {
|
|
40
|
+
enabled: string[];
|
|
41
|
+
overrides: Record<string, string>;
|
|
42
|
+
}, {
|
|
43
|
+
enabled: string[];
|
|
44
|
+
overrides: Record<string, string>;
|
|
45
|
+
}>;
|
|
46
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
47
|
+
updatedAt: z.ZodOptional<z.ZodString>;
|
|
48
|
+
}, "strip", z.ZodTypeAny, {
|
|
49
|
+
version: string;
|
|
50
|
+
tool: string | null;
|
|
51
|
+
style: string | null;
|
|
52
|
+
stack: string | null;
|
|
53
|
+
rules: {
|
|
54
|
+
enabled: string[];
|
|
55
|
+
overrides: Record<string, string>;
|
|
56
|
+
};
|
|
57
|
+
createdAt?: string | undefined;
|
|
58
|
+
updatedAt?: string | undefined;
|
|
59
|
+
}, {
|
|
60
|
+
version: string;
|
|
61
|
+
tool: string | null;
|
|
62
|
+
style: string | null;
|
|
63
|
+
stack: string | null;
|
|
64
|
+
rules: {
|
|
65
|
+
enabled: string[];
|
|
66
|
+
overrides: Record<string, string>;
|
|
67
|
+
};
|
|
68
|
+
createdAt?: string | undefined;
|
|
69
|
+
updatedAt?: string | undefined;
|
|
70
|
+
}>;
|
|
71
|
+
/**
|
|
72
|
+
* Full IronBackend configuration schema
|
|
73
|
+
*/
|
|
74
|
+
export declare const IronBackendConfigSchema: z.ZodObject<{
|
|
75
|
+
version: z.ZodString;
|
|
76
|
+
style: z.ZodOptional<z.ZodString>;
|
|
77
|
+
stack: z.ZodOptional<z.ZodString>;
|
|
78
|
+
rules: z.ZodObject<{
|
|
79
|
+
enabled: z.ZodArray<z.ZodEnum<["API", "DOMAIN", "ERROR_HANDLING", "TRANSACTIONS", "DATA_ACCESS", "NAMING", "VALIDATION", "ASYNC"]>, "many">;
|
|
80
|
+
overrides: z.ZodRecord<z.ZodString, z.ZodEnum<["ERROR", "WARN"]>>;
|
|
81
|
+
}, "strip", z.ZodTypeAny, {
|
|
82
|
+
enabled: ("API" | "DOMAIN" | "ERROR_HANDLING" | "TRANSACTIONS" | "DATA_ACCESS" | "NAMING" | "VALIDATION" | "ASYNC")[];
|
|
83
|
+
overrides: Record<string, "ERROR" | "WARN">;
|
|
84
|
+
}, {
|
|
85
|
+
enabled: ("API" | "DOMAIN" | "ERROR_HANDLING" | "TRANSACTIONS" | "DATA_ACCESS" | "NAMING" | "VALIDATION" | "ASYNC")[];
|
|
86
|
+
overrides: Record<string, "ERROR" | "WARN">;
|
|
87
|
+
}>;
|
|
88
|
+
security: z.ZodOptional<z.ZodObject<{
|
|
89
|
+
authStrategy: z.ZodOptional<z.ZodEnum<["JWT", "SESSION", "API_KEY", "OAUTH2", "MTLS"]>>;
|
|
90
|
+
authorizationModel: z.ZodOptional<z.ZodEnum<["RBAC", "ABAC"]>>;
|
|
91
|
+
}, "strip", z.ZodTypeAny, {
|
|
92
|
+
authStrategy?: "JWT" | "SESSION" | "API_KEY" | "OAUTH2" | "MTLS" | undefined;
|
|
93
|
+
authorizationModel?: "RBAC" | "ABAC" | undefined;
|
|
94
|
+
}, {
|
|
95
|
+
authStrategy?: "JWT" | "SESSION" | "API_KEY" | "OAUTH2" | "MTLS" | undefined;
|
|
96
|
+
authorizationModel?: "RBAC" | "ABAC" | undefined;
|
|
97
|
+
}>>;
|
|
98
|
+
}, "strip", z.ZodTypeAny, {
|
|
99
|
+
version: string;
|
|
100
|
+
rules: {
|
|
101
|
+
enabled: ("API" | "DOMAIN" | "ERROR_HANDLING" | "TRANSACTIONS" | "DATA_ACCESS" | "NAMING" | "VALIDATION" | "ASYNC")[];
|
|
102
|
+
overrides: Record<string, "ERROR" | "WARN">;
|
|
103
|
+
};
|
|
104
|
+
style?: string | undefined;
|
|
105
|
+
stack?: string | undefined;
|
|
106
|
+
security?: {
|
|
107
|
+
authStrategy?: "JWT" | "SESSION" | "API_KEY" | "OAUTH2" | "MTLS" | undefined;
|
|
108
|
+
authorizationModel?: "RBAC" | "ABAC" | undefined;
|
|
109
|
+
} | undefined;
|
|
110
|
+
}, {
|
|
111
|
+
version: string;
|
|
112
|
+
rules: {
|
|
113
|
+
enabled: ("API" | "DOMAIN" | "ERROR_HANDLING" | "TRANSACTIONS" | "DATA_ACCESS" | "NAMING" | "VALIDATION" | "ASYNC")[];
|
|
114
|
+
overrides: Record<string, "ERROR" | "WARN">;
|
|
115
|
+
};
|
|
116
|
+
style?: string | undefined;
|
|
117
|
+
stack?: string | undefined;
|
|
118
|
+
security?: {
|
|
119
|
+
authStrategy?: "JWT" | "SESSION" | "API_KEY" | "OAUTH2" | "MTLS" | undefined;
|
|
120
|
+
authorizationModel?: "RBAC" | "ABAC" | undefined;
|
|
121
|
+
} | undefined;
|
|
122
|
+
}>;
|
|
123
|
+
export type ValidatedLocalConfig = z.infer<typeof IronBackendLocalConfigSchema>;
|
|
124
|
+
export type ValidatedConfig = z.infer<typeof IronBackendConfigSchema>;
|
|
125
|
+
/**
|
|
126
|
+
* Validate and parse local config file
|
|
127
|
+
* @param config - Raw config object to validate
|
|
128
|
+
* @returns Validated config object
|
|
129
|
+
* @throws ZodError if validation fails
|
|
130
|
+
*/
|
|
131
|
+
export declare function validateLocalConfig(config: unknown): ValidatedLocalConfig;
|
|
132
|
+
/**
|
|
133
|
+
* Safely validate local config without throwing
|
|
134
|
+
* @param config - Raw config object to validate
|
|
135
|
+
* @returns Result object with success/error
|
|
136
|
+
*/
|
|
137
|
+
export declare function safeValidateLocalConfig(config: unknown): z.SafeParseReturnType<unknown, ValidatedLocalConfig>;
|
|
138
|
+
/**
|
|
139
|
+
* Validate full IronBackend config
|
|
140
|
+
* @param config - Raw config object to validate
|
|
141
|
+
* @returns Validated config object
|
|
142
|
+
* @throws ZodError if validation fails
|
|
143
|
+
*/
|
|
144
|
+
export declare function validateConfig(config: unknown): ValidatedConfig;
|
|
145
|
+
/**
|
|
146
|
+
* Format Zod validation errors for user display
|
|
147
|
+
* @param error - Zod error object
|
|
148
|
+
* @returns Formatted error message
|
|
149
|
+
*/
|
|
150
|
+
export declare function formatValidationError(error: z.ZodError): string;
|
|
151
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,kBAAkB,8BAA4B,CAAC;AAE5D,eAAO,MAAM,kBAAkB,gHAS7B,CAAC;AAMH,eAAO,MAAM,iBAAiB;;;;;;;;;EAG5B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;EAG/B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUvC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASlC,CAAC;AAMH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAChF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAMtE;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,oBAAoB,CAEzE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAE7G;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,eAAe,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,GAAG,MAAM,CAI/D"}
|
package/dist/schema.js
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IronBackend Configuration Schema
|
|
3
|
+
* Runtime validation using Zod
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Rule Categories and Severities
|
|
8
|
+
// ============================================================================
|
|
9
|
+
export const RuleSeveritySchema = z.enum(['ERROR', 'WARN']);
|
|
10
|
+
export const RuleCategorySchema = z.enum([
|
|
11
|
+
'API',
|
|
12
|
+
'DOMAIN',
|
|
13
|
+
'ERROR_HANDLING',
|
|
14
|
+
'TRANSACTIONS',
|
|
15
|
+
'DATA_ACCESS',
|
|
16
|
+
'NAMING',
|
|
17
|
+
'VALIDATION',
|
|
18
|
+
'ASYNC'
|
|
19
|
+
]);
|
|
20
|
+
// ============================================================================
|
|
21
|
+
// Configuration Schema
|
|
22
|
+
// ============================================================================
|
|
23
|
+
export const RulesConfigSchema = z.object({
|
|
24
|
+
enabled: z.array(z.string()),
|
|
25
|
+
overrides: z.record(z.string())
|
|
26
|
+
});
|
|
27
|
+
export const SecurityConfigSchema = z.object({
|
|
28
|
+
authStrategy: z.enum(['JWT', 'SESSION', 'API_KEY', 'OAUTH2', 'MTLS']).optional(),
|
|
29
|
+
authorizationModel: z.enum(['RBAC', 'ABAC']).optional()
|
|
30
|
+
});
|
|
31
|
+
/**
|
|
32
|
+
* Schema for .ironbackend/config.json
|
|
33
|
+
*/
|
|
34
|
+
export const IronBackendLocalConfigSchema = z.object({
|
|
35
|
+
version: z.string().regex(/^\d+\.\d+\.\d+$/, {
|
|
36
|
+
message: 'Version must be in format x.y.z (e.g., 1.0.0)'
|
|
37
|
+
}),
|
|
38
|
+
tool: z.string().nullable(),
|
|
39
|
+
style: z.string().nullable(),
|
|
40
|
+
stack: z.string().nullable(),
|
|
41
|
+
rules: RulesConfigSchema,
|
|
42
|
+
createdAt: z.string().optional(),
|
|
43
|
+
updatedAt: z.string().optional()
|
|
44
|
+
});
|
|
45
|
+
/**
|
|
46
|
+
* Full IronBackend configuration schema
|
|
47
|
+
*/
|
|
48
|
+
export const IronBackendConfigSchema = z.object({
|
|
49
|
+
version: z.string(),
|
|
50
|
+
style: z.string().optional(),
|
|
51
|
+
stack: z.string().optional(),
|
|
52
|
+
rules: z.object({
|
|
53
|
+
enabled: z.array(RuleCategorySchema),
|
|
54
|
+
overrides: z.record(RuleSeveritySchema)
|
|
55
|
+
}),
|
|
56
|
+
security: SecurityConfigSchema.optional()
|
|
57
|
+
});
|
|
58
|
+
// ============================================================================
|
|
59
|
+
// Validation Functions
|
|
60
|
+
// ============================================================================
|
|
61
|
+
/**
|
|
62
|
+
* Validate and parse local config file
|
|
63
|
+
* @param config - Raw config object to validate
|
|
64
|
+
* @returns Validated config object
|
|
65
|
+
* @throws ZodError if validation fails
|
|
66
|
+
*/
|
|
67
|
+
export function validateLocalConfig(config) {
|
|
68
|
+
return IronBackendLocalConfigSchema.parse(config);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Safely validate local config without throwing
|
|
72
|
+
* @param config - Raw config object to validate
|
|
73
|
+
* @returns Result object with success/error
|
|
74
|
+
*/
|
|
75
|
+
export function safeValidateLocalConfig(config) {
|
|
76
|
+
return IronBackendLocalConfigSchema.safeParse(config);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Validate full IronBackend config
|
|
80
|
+
* @param config - Raw config object to validate
|
|
81
|
+
* @returns Validated config object
|
|
82
|
+
* @throws ZodError if validation fails
|
|
83
|
+
*/
|
|
84
|
+
export function validateConfig(config) {
|
|
85
|
+
return IronBackendConfigSchema.parse(config);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Format Zod validation errors for user display
|
|
89
|
+
* @param error - Zod error object
|
|
90
|
+
* @returns Formatted error message
|
|
91
|
+
*/
|
|
92
|
+
export function formatValidationError(error) {
|
|
93
|
+
return error.issues
|
|
94
|
+
.map(issue => ` - ${issue.path.join('.')}: ${issue.message}`)
|
|
95
|
+
.join('\n');
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/styles/index.d.ts
CHANGED
|
@@ -14,9 +14,9 @@ import type { ArchitectureStyle } from '../types.js';
|
|
|
14
14
|
*/
|
|
15
15
|
export declare const styles: Record<string, ArchitectureStyle>;
|
|
16
16
|
/**
|
|
17
|
-
* Get a style by ID
|
|
17
|
+
* Get a style by ID (memoized for performance)
|
|
18
18
|
*/
|
|
19
|
-
export declare
|
|
19
|
+
export declare const getStyle: (arg: string) => ArchitectureStyle | undefined;
|
|
20
20
|
/**
|
|
21
21
|
* Get all style IDs
|
|
22
22
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/styles/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/styles/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrD;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAWpD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,gDAEnB,CAAC;AAEH;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAEtC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE;IACjC,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACxC,UAAU,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACvC,WAAW,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;CACzC,GAAG,iBAAiB,EAAE,CAiBtB;AAGD,OAAO,EACH,aAAa,EACb,eAAe,EACf,SAAS,EACT,WAAW,EACX,IAAI,EACJ,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,UAAU,GACb,CAAC"}
|
package/dist/styles/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import { hexagonal } from './hexagonal.js';
|
|
|
8
8
|
import { eventDriven, cqrs } from './event-driven.js';
|
|
9
9
|
import { microservicesSync, microservicesAsync } from './microservices.js';
|
|
10
10
|
import { serverless, readHeavy, automation } from './specialized.js';
|
|
11
|
+
import { memoize } from '../utils/performance.js';
|
|
11
12
|
/**
|
|
12
13
|
* All available architecture styles
|
|
13
14
|
*/
|
|
@@ -24,11 +25,11 @@ export const styles = {
|
|
|
24
25
|
'automation': automation,
|
|
25
26
|
};
|
|
26
27
|
/**
|
|
27
|
-
* Get a style by ID
|
|
28
|
+
* Get a style by ID (memoized for performance)
|
|
28
29
|
*/
|
|
29
|
-
export
|
|
30
|
+
export const getStyle = memoize((id) => {
|
|
30
31
|
return styles[id];
|
|
31
|
-
}
|
|
32
|
+
});
|
|
32
33
|
/**
|
|
33
34
|
* Get all style IDs
|
|
34
35
|
*/
|
package/dist/styles/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/styles/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/styles/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAsC;IACrD,gBAAgB,EAAE,aAAa;IAC/B,kBAAkB,EAAE,eAAe;IACnC,WAAW,EAAE,SAAS;IACtB,cAAc,EAAE,WAAW;IAC3B,MAAM,EAAE,IAAI;IACZ,oBAAoB,EAAE,iBAAiB;IACvC,qBAAqB,EAAE,kBAAkB;IACzC,YAAY,EAAE,UAAU;IACxB,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,UAAU;CAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,EAAU,EAAiC,EAAE;IAC1E,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,WAAW;IACvB,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,QAI1B;IACG,mCAAmC;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACxC,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAChC,OAAO,CAAC,gBAAgB,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAChC,OAAO,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,QAAQ,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;YAChC,OAAO,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,QAAQ,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;YACjC,OAAO,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,8BAA8B;AAC9B,OAAO,EACH,aAAa,EACb,eAAe,EACf,SAAS,EACT,WAAW,EACX,IAAI,EACJ,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,UAAU,GACb,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -139,5 +139,60 @@ export interface IronBackendConfig {
|
|
|
139
139
|
authStrategy?: AuthStrategy;
|
|
140
140
|
authorizationModel?: AuthorizationModel;
|
|
141
141
|
};
|
|
142
|
+
plugins?: string[];
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Plugin interface for extending IronBackend
|
|
146
|
+
* Allows adding custom styles, stacks, and rules
|
|
147
|
+
*/
|
|
148
|
+
export interface IronBackendPlugin {
|
|
149
|
+
/** Unique plugin identifier */
|
|
150
|
+
name: string;
|
|
151
|
+
/** Plugin version (semver) */
|
|
152
|
+
version: string;
|
|
153
|
+
/** Human-readable description */
|
|
154
|
+
description?: string;
|
|
155
|
+
/** Custom architecture styles */
|
|
156
|
+
styles?: ArchitectureStyle[];
|
|
157
|
+
/** Custom tech stacks */
|
|
158
|
+
stacks?: TechStack[];
|
|
159
|
+
/** Custom design rules */
|
|
160
|
+
rules?: DesignRule[];
|
|
161
|
+
/** Lifecycle hook: called when plugin is loaded */
|
|
162
|
+
onLoad?: () => void | Promise<void>;
|
|
163
|
+
/** Lifecycle hook: called when plugin is unloaded */
|
|
164
|
+
onUnload?: () => void | Promise<void>;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Plugin metadata for the registry
|
|
168
|
+
*/
|
|
169
|
+
export interface PluginMetadata {
|
|
170
|
+
name: string;
|
|
171
|
+
version: string;
|
|
172
|
+
description?: string;
|
|
173
|
+
path: string;
|
|
174
|
+
enabled: boolean;
|
|
175
|
+
loadedAt?: Date;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Plugin registry for managing loaded plugins
|
|
179
|
+
*/
|
|
180
|
+
export interface PluginRegistry {
|
|
181
|
+
/** All registered plugins */
|
|
182
|
+
plugins: Map<string, IronBackendPlugin>;
|
|
183
|
+
/** Plugin metadata */
|
|
184
|
+
metadata: Map<string, PluginMetadata>;
|
|
185
|
+
/** Register a new plugin */
|
|
186
|
+
register: (plugin: IronBackendPlugin, path: string) => void;
|
|
187
|
+
/** Unregister a plugin by name */
|
|
188
|
+
unregister: (name: string) => boolean;
|
|
189
|
+
/** Get a plugin by name */
|
|
190
|
+
get: (name: string) => IronBackendPlugin | undefined;
|
|
191
|
+
/** Get all styles from plugins */
|
|
192
|
+
getAllStyles: () => ArchitectureStyle[];
|
|
193
|
+
/** Get all stacks from plugins */
|
|
194
|
+
getAllStacks: () => TechStack[];
|
|
195
|
+
/** Get all rules from plugins */
|
|
196
|
+
getAllRules: () => DesignRule[];
|
|
142
197
|
}
|
|
143
198
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance Utilities
|
|
3
|
+
* Memoization and caching for frequently accessed data
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Simple memoization function for single-argument functions
|
|
7
|
+
* @param fn - Function to memoize
|
|
8
|
+
* @returns Memoized function
|
|
9
|
+
*/
|
|
10
|
+
export declare function memoize<A, R>(fn: (arg: A) => R): (arg: A) => R;
|
|
11
|
+
/**
|
|
12
|
+
* Memoization with time-to-live (TTL)
|
|
13
|
+
* Cache entries expire after specified duration
|
|
14
|
+
* @param fn - Function to memoize
|
|
15
|
+
* @param ttlMs - Time-to-live in milliseconds
|
|
16
|
+
* @returns Memoized function with TTL
|
|
17
|
+
*/
|
|
18
|
+
export declare function memoizeWithTTL<A, R>(fn: (arg: A) => R, ttlMs: number): (arg: A) => R;
|
|
19
|
+
/**
|
|
20
|
+
* Lazy initialization wrapper
|
|
21
|
+
* Value is only computed on first access
|
|
22
|
+
*/
|
|
23
|
+
export declare function lazy<T>(factory: () => T): {
|
|
24
|
+
value: T;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Create a singleton instance
|
|
28
|
+
* Ensures only one instance is created
|
|
29
|
+
*/
|
|
30
|
+
export declare function singleton<T>(factory: () => T): () => T;
|
|
31
|
+
//# sourceMappingURL=performance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../src/utils/performance.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAY9D;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EAC/B,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EACjB,KAAK,EAAE,MAAM,GACd,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAef;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG;IAAE,KAAK,EAAE,CAAC,CAAA;CAAE,CAatD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAStD"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance Utilities
|
|
3
|
+
* Memoization and caching for frequently accessed data
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Simple memoization function for single-argument functions
|
|
7
|
+
* @param fn - Function to memoize
|
|
8
|
+
* @returns Memoized function
|
|
9
|
+
*/
|
|
10
|
+
export function memoize(fn) {
|
|
11
|
+
const cache = new Map();
|
|
12
|
+
return (arg) => {
|
|
13
|
+
if (cache.has(arg)) {
|
|
14
|
+
return cache.get(arg);
|
|
15
|
+
}
|
|
16
|
+
const result = fn(arg);
|
|
17
|
+
cache.set(arg, result);
|
|
18
|
+
return result;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Memoization with time-to-live (TTL)
|
|
23
|
+
* Cache entries expire after specified duration
|
|
24
|
+
* @param fn - Function to memoize
|
|
25
|
+
* @param ttlMs - Time-to-live in milliseconds
|
|
26
|
+
* @returns Memoized function with TTL
|
|
27
|
+
*/
|
|
28
|
+
export function memoizeWithTTL(fn, ttlMs) {
|
|
29
|
+
const cache = new Map();
|
|
30
|
+
return (arg) => {
|
|
31
|
+
const now = Date.now();
|
|
32
|
+
const cached = cache.get(arg);
|
|
33
|
+
if (cached && cached.expiry > now) {
|
|
34
|
+
return cached.value;
|
|
35
|
+
}
|
|
36
|
+
const result = fn(arg);
|
|
37
|
+
cache.set(arg, { value: result, expiry: now + ttlMs });
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Lazy initialization wrapper
|
|
43
|
+
* Value is only computed on first access
|
|
44
|
+
*/
|
|
45
|
+
export function lazy(factory) {
|
|
46
|
+
let cached;
|
|
47
|
+
let initialized = false;
|
|
48
|
+
return {
|
|
49
|
+
get value() {
|
|
50
|
+
if (!initialized) {
|
|
51
|
+
cached = factory();
|
|
52
|
+
initialized = true;
|
|
53
|
+
}
|
|
54
|
+
return cached;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Create a singleton instance
|
|
60
|
+
* Ensures only one instance is created
|
|
61
|
+
*/
|
|
62
|
+
export function singleton(factory) {
|
|
63
|
+
let instance;
|
|
64
|
+
return () => {
|
|
65
|
+
if (instance === undefined) {
|
|
66
|
+
instance = factory();
|
|
67
|
+
}
|
|
68
|
+
return instance;
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=performance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance.js","sourceRoot":"","sources":["../../src/utils/performance.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAO,EAAiB;IAC3C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAQ,CAAC;IAE9B,OAAO,CAAC,GAAM,EAAK,EAAE;QACjB,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QAC3B,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACvB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvB,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC1B,EAAiB,EACjB,KAAa;IAEb,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmC,CAAC;IAEzD,OAAO,CAAC,GAAM,EAAK,EAAE;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC,KAAK,CAAC;QACxB,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACvB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,IAAI,CAAI,OAAgB;IACpC,IAAI,MAAqB,CAAC;IAC1B,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,OAAO;QACH,IAAI,KAAK;YACL,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,MAAM,GAAG,OAAO,EAAE,CAAC;gBACnB,WAAW,GAAG,IAAI,CAAC;YACvB,CAAC;YACD,OAAO,MAAO,CAAC;QACnB,CAAC;KACJ,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAI,OAAgB;IACzC,IAAI,QAAuB,CAAC;IAE5B,OAAO,GAAG,EAAE;QACR,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,QAAQ,GAAG,OAAO,EAAE,CAAC;QACzB,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAC;AACN,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ironbackend/core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Backend architecture styles, rules, stacks, and security playbooks",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -43,9 +43,12 @@
|
|
|
43
43
|
"license": "MIT",
|
|
44
44
|
"repository": {
|
|
45
45
|
"type": "git",
|
|
46
|
-
"url": "https://github.com/
|
|
46
|
+
"url": "https://github.com/txqt/IronBackend.git",
|
|
47
47
|
"directory": "packages/core"
|
|
48
48
|
},
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"zod": "^3.22.0"
|
|
51
|
+
},
|
|
49
52
|
"devDependencies": {
|
|
50
53
|
"typescript": "^5.3.0"
|
|
51
54
|
},
|