lombok-typescript 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.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +98 -0
  3. package/dist/backend-CkLBcDd8.d.cts +59 -0
  4. package/dist/backend-CkLBcDd8.d.ts +59 -0
  5. package/dist/cli/index.cjs +585 -0
  6. package/dist/cli/index.cjs.map +1 -0
  7. package/dist/cli/index.d.cts +14 -0
  8. package/dist/cli/index.d.ts +14 -0
  9. package/dist/cli/index.js +579 -0
  10. package/dist/cli/index.js.map +1 -0
  11. package/dist/codegen/index.cjs +450 -0
  12. package/dist/codegen/index.cjs.map +1 -0
  13. package/dist/codegen/index.d.cts +109 -0
  14. package/dist/codegen/index.d.ts +109 -0
  15. package/dist/codegen/index.js +443 -0
  16. package/dist/codegen/index.js.map +1 -0
  17. package/dist/core/index.cjs +132 -0
  18. package/dist/core/index.cjs.map +1 -0
  19. package/dist/core/index.d.cts +73 -0
  20. package/dist/core/index.d.ts +73 -0
  21. package/dist/core/index.js +128 -0
  22. package/dist/core/index.js.map +1 -0
  23. package/dist/index.cjs +142 -0
  24. package/dist/index.cjs.map +1 -0
  25. package/dist/index.d.cts +93 -0
  26. package/dist/index.d.ts +93 -0
  27. package/dist/index.js +136 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/legacy/index.cjs +271 -0
  30. package/dist/legacy/index.cjs.map +1 -0
  31. package/dist/legacy/index.d.cts +32 -0
  32. package/dist/legacy/index.d.ts +32 -0
  33. package/dist/legacy/index.js +252 -0
  34. package/dist/legacy/index.js.map +1 -0
  35. package/dist/memoize-Bj9pm_cK.d.cts +48 -0
  36. package/dist/memoize-DvelzGDl.d.ts +48 -0
  37. package/dist/stage3/index.cjs +275 -0
  38. package/dist/stage3/index.cjs.map +1 -0
  39. package/dist/stage3/index.d.cts +97 -0
  40. package/dist/stage3/index.d.ts +97 -0
  41. package/dist/stage3/index.js +255 -0
  42. package/dist/stage3/index.js.map +1 -0
  43. package/package.json +120 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/core/metadata-store.ts","../../src/core/metadata-keys.ts"],"names":["bucket"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { MetadataKeyList, PropertyName } from './types.js';\n\n/**\n * Storage interface used by both decorator backends. Legacy delegates to\n * `reflect-metadata`; Stage 3 uses the WeakMap implementation below.\n */\nexport interface MetadataStore {\n /** Store `value` under `key`. Omit `propertyKey` for class-level scope. */\n set<V>(key: string, target: object, propertyKey: PropertyName | undefined, value: V): void;\n\n /** Read the value stored under `key`, or `undefined`. */\n get<V>(key: string, target: object, propertyKey?: PropertyName): V | undefined;\n\n /** True if `key` exists at the given scope. */\n has(key: string, target: object, propertyKey?: PropertyName): boolean;\n\n /** Remove the entry. Returns true if it existed. */\n delete(key: string, target: object, propertyKey?: PropertyName): boolean;\n\n /** All keys at the given scope. */\n list(target: object, propertyKey?: PropertyName): MetadataKeyList;\n}\n\n/**\n * WeakMap-backed `MetadataStore`. Used directly by the Stage 3 backend.\n * Layout: target -> (propertyKey or class-level) -> key -> value.\n */\nexport class WeakMapMetadataStore implements MetadataStore {\n private readonly classScopes = new WeakMap<object, Map<string, unknown>>();\n private readonly memberScopes = new WeakMap<object, Map<string | symbol, Map<string, unknown>>>();\n\n set<V>(key: string, target: object, propertyKey: PropertyName | undefined, value: V): void {\n const bucket = this.bucket(target, propertyKey, true)!;\n bucket.set(key, value);\n }\n\n get<V>(key: string, target: object, propertyKey?: PropertyName): V | undefined {\n const bucket = this.bucket(target, propertyKey, false);\n return bucket?.get(key) as V | undefined;\n }\n\n has(key: string, target: object, propertyKey?: PropertyName): boolean {\n const bucket = this.bucket(target, propertyKey, false);\n return bucket?.has(key) ?? false;\n }\n\n delete(key: string, target: object, propertyKey?: PropertyName): boolean {\n const bucket = this.bucket(target, propertyKey, false);\n if (!bucket) return false;\n return bucket.delete(key);\n }\n\n list(target: object, propertyKey?: PropertyName): MetadataKeyList {\n const bucket = this.bucket(target, propertyKey, false);\n if (!bucket) return [];\n return Array.from(bucket.keys());\n }\n\n private bucket(\n target: object,\n propertyKey: PropertyName | undefined,\n createIfMissing: boolean,\n ): Map<string, unknown> | undefined {\n if (propertyKey === undefined) {\n let bucket = this.classScopes.get(target);\n if (!bucket && createIfMissing) {\n bucket = new Map();\n this.classScopes.set(target, bucket);\n }\n return bucket;\n }\n\n let perTarget = this.memberScopes.get(target);\n if (!perTarget) {\n if (!createIfMissing) return undefined;\n perTarget = new Map();\n this.memberScopes.set(target, perTarget);\n }\n\n let bucket = perTarget.get(propertyKey);\n if (!bucket) {\n if (!createIfMissing) return undefined;\n bucket = new Map();\n perTarget.set(propertyKey, bucket);\n }\n return bucket;\n }\n}\n","/**\n * Metadata keys used across the library. Adding one? Use the `lombok-ts:`\n * prefix and check `metadata-keys.test.ts` so uniqueness stays enforced.\n */\n\nconst PREFIX = 'lombok-ts:';\n\nexport const MetadataKeys = {\n // Class-level (Lombok)\n DATA: `${PREFIX}data`,\n VALUE: `${PREFIX}value`,\n BUILDER: `${PREFIX}builder`,\n TO_STRING: `${PREFIX}toString`,\n EQUALS: `${PREFIX}equals`,\n UTILITY_CLASS: `${PREFIX}utilityClass`,\n FIELD_DEFAULTS: `${PREFIX}fieldDefaults`,\n ACCESSORS: `${PREFIX}accessors`,\n LOG: `${PREFIX}log`,\n\n // Class-level (TS-only)\n OBSERVABLE: `${PREFIX}observable`,\n SERIALIZABLE: `${PREFIX}serializable`,\n DEEP_FREEZE: `${PREFIX}deepFreeze`,\n TRACE: `${PREFIX}trace`,\n\n // Class-level (GoF)\n SINGLETON: `${PREFIX}singleton`,\n FACTORY: `${PREFIX}factory`,\n ABSTRACT_FACTORY: `${PREFIX}abstractFactory`,\n PROTOTYPE: `${PREFIX}prototype`,\n ADAPTER: `${PREFIX}adapter`,\n BRIDGE: `${PREFIX}bridge`,\n COMPOSITE: `${PREFIX}composite`,\n WRAPS: `${PREFIX}wraps`,\n FACADE: `${PREFIX}facade`,\n FLYWEIGHT: `${PREFIX}flyweight`,\n PROXY: `${PREFIX}proxy`,\n CHAIN_OF_RESPONSIBILITY: `${PREFIX}chainOfResponsibility`,\n COMMAND: `${PREFIX}command`,\n INTERPRETER: `${PREFIX}interpreter`,\n ITERABLE: `${PREFIX}iterable`,\n MEDIATOR: `${PREFIX}mediator`,\n MEMENTO: `${PREFIX}memento`,\n STATE: `${PREFIX}state`,\n STRATEGY: `${PREFIX}strategy`,\n TEMPLATE_METHOD: `${PREFIX}templateMethod`,\n VISITABLE: `${PREFIX}visitable`,\n VISITOR: `${PREFIX}visitor`,\n\n // Field-level\n GETTER: `${PREFIX}getter`,\n SETTER: `${PREFIX}setter`,\n NON_NULL: `${PREFIX}nonNull`,\n WITH: `${PREFIX}with`,\n DELEGATE: `${PREFIX}delegate`,\n VALIDATE: `${PREFIX}validate`,\n TO_STRING_EXCLUDE: `${PREFIX}toString:exclude`,\n TO_STRING_INCLUDE: `${PREFIX}toString:include`,\n EQUALS_EXCLUDE: `${PREFIX}equals:exclude`,\n SERIALIZABLE_EXCLUDE: `${PREFIX}serializable:exclude`,\n SERIALIZABLE_TRANSFORM: `${PREFIX}serializable:transform`,\n SERIALIZABLE_ALIAS: `${PREFIX}serializable:alias`,\n BUILDER_DEFAULT: `${PREFIX}builder:default`,\n SINGULAR: `${PREFIX}singular`,\n ITERATE_OVER: `${PREFIX}iterateOver`,\n\n // Method-level\n MEMOIZE: `${PREFIX}memoize`,\n DEBOUNCE: `${PREFIX}debounce`,\n THROTTLE: `${PREFIX}throttle`,\n RETRY: `${PREFIX}retry`,\n HANDLER: `${PREFIX}handler`,\n TRANSITION: `${PREFIX}transition`,\n HOOK: `${PREFIX}hook`,\n\n // Parameter-level\n NON_NULL_PARAM: `${PREFIX}nonNull:param`,\n\n // Internal, framework-managed\n FIELDS: `${PREFIX}internal:fields`,\n CONSTRUCTOR_PARAMS: `${PREFIX}internal:constructorParams`,\n BACKEND: `${PREFIX}internal:backend`,\n} as const;\n\nexport type MetadataKey = (typeof MetadataKeys)[keyof typeof MetadataKeys];\n\nexport const METADATA_KEY_PREFIX = PREFIX;\n"]}
@@ -0,0 +1,73 @@
1
+ export { a as Backend, B as BackendKind, D as DecoratorKind, b as MetadataKeyList, c as MetadataScope, M as MetadataStore, P as PropertyName, W as WeakMapMetadataStore } from '../backend-CkLBcDd8.cjs';
2
+
3
+ /**
4
+ * Metadata keys used across the library. Adding one? Use the `lombok-ts:`
5
+ * prefix and check `metadata-keys.test.ts` so uniqueness stays enforced.
6
+ */
7
+ declare const MetadataKeys: {
8
+ readonly DATA: "lombok-ts:data";
9
+ readonly VALUE: "lombok-ts:value";
10
+ readonly BUILDER: "lombok-ts:builder";
11
+ readonly TO_STRING: "lombok-ts:toString";
12
+ readonly EQUALS: "lombok-ts:equals";
13
+ readonly UTILITY_CLASS: "lombok-ts:utilityClass";
14
+ readonly FIELD_DEFAULTS: "lombok-ts:fieldDefaults";
15
+ readonly ACCESSORS: "lombok-ts:accessors";
16
+ readonly LOG: "lombok-ts:log";
17
+ readonly OBSERVABLE: "lombok-ts:observable";
18
+ readonly SERIALIZABLE: "lombok-ts:serializable";
19
+ readonly DEEP_FREEZE: "lombok-ts:deepFreeze";
20
+ readonly TRACE: "lombok-ts:trace";
21
+ readonly SINGLETON: "lombok-ts:singleton";
22
+ readonly FACTORY: "lombok-ts:factory";
23
+ readonly ABSTRACT_FACTORY: "lombok-ts:abstractFactory";
24
+ readonly PROTOTYPE: "lombok-ts:prototype";
25
+ readonly ADAPTER: "lombok-ts:adapter";
26
+ readonly BRIDGE: "lombok-ts:bridge";
27
+ readonly COMPOSITE: "lombok-ts:composite";
28
+ readonly WRAPS: "lombok-ts:wraps";
29
+ readonly FACADE: "lombok-ts:facade";
30
+ readonly FLYWEIGHT: "lombok-ts:flyweight";
31
+ readonly PROXY: "lombok-ts:proxy";
32
+ readonly CHAIN_OF_RESPONSIBILITY: "lombok-ts:chainOfResponsibility";
33
+ readonly COMMAND: "lombok-ts:command";
34
+ readonly INTERPRETER: "lombok-ts:interpreter";
35
+ readonly ITERABLE: "lombok-ts:iterable";
36
+ readonly MEDIATOR: "lombok-ts:mediator";
37
+ readonly MEMENTO: "lombok-ts:memento";
38
+ readonly STATE: "lombok-ts:state";
39
+ readonly STRATEGY: "lombok-ts:strategy";
40
+ readonly TEMPLATE_METHOD: "lombok-ts:templateMethod";
41
+ readonly VISITABLE: "lombok-ts:visitable";
42
+ readonly VISITOR: "lombok-ts:visitor";
43
+ readonly GETTER: "lombok-ts:getter";
44
+ readonly SETTER: "lombok-ts:setter";
45
+ readonly NON_NULL: "lombok-ts:nonNull";
46
+ readonly WITH: "lombok-ts:with";
47
+ readonly DELEGATE: "lombok-ts:delegate";
48
+ readonly VALIDATE: "lombok-ts:validate";
49
+ readonly TO_STRING_EXCLUDE: "lombok-ts:toString:exclude";
50
+ readonly TO_STRING_INCLUDE: "lombok-ts:toString:include";
51
+ readonly EQUALS_EXCLUDE: "lombok-ts:equals:exclude";
52
+ readonly SERIALIZABLE_EXCLUDE: "lombok-ts:serializable:exclude";
53
+ readonly SERIALIZABLE_TRANSFORM: "lombok-ts:serializable:transform";
54
+ readonly SERIALIZABLE_ALIAS: "lombok-ts:serializable:alias";
55
+ readonly BUILDER_DEFAULT: "lombok-ts:builder:default";
56
+ readonly SINGULAR: "lombok-ts:singular";
57
+ readonly ITERATE_OVER: "lombok-ts:iterateOver";
58
+ readonly MEMOIZE: "lombok-ts:memoize";
59
+ readonly DEBOUNCE: "lombok-ts:debounce";
60
+ readonly THROTTLE: "lombok-ts:throttle";
61
+ readonly RETRY: "lombok-ts:retry";
62
+ readonly HANDLER: "lombok-ts:handler";
63
+ readonly TRANSITION: "lombok-ts:transition";
64
+ readonly HOOK: "lombok-ts:hook";
65
+ readonly NON_NULL_PARAM: "lombok-ts:nonNull:param";
66
+ readonly FIELDS: "lombok-ts:internal:fields";
67
+ readonly CONSTRUCTOR_PARAMS: "lombok-ts:internal:constructorParams";
68
+ readonly BACKEND: "lombok-ts:internal:backend";
69
+ };
70
+ type MetadataKey = (typeof MetadataKeys)[keyof typeof MetadataKeys];
71
+ declare const METADATA_KEY_PREFIX = "lombok-ts:";
72
+
73
+ export { METADATA_KEY_PREFIX, type MetadataKey, MetadataKeys };
@@ -0,0 +1,73 @@
1
+ export { a as Backend, B as BackendKind, D as DecoratorKind, b as MetadataKeyList, c as MetadataScope, M as MetadataStore, P as PropertyName, W as WeakMapMetadataStore } from '../backend-CkLBcDd8.js';
2
+
3
+ /**
4
+ * Metadata keys used across the library. Adding one? Use the `lombok-ts:`
5
+ * prefix and check `metadata-keys.test.ts` so uniqueness stays enforced.
6
+ */
7
+ declare const MetadataKeys: {
8
+ readonly DATA: "lombok-ts:data";
9
+ readonly VALUE: "lombok-ts:value";
10
+ readonly BUILDER: "lombok-ts:builder";
11
+ readonly TO_STRING: "lombok-ts:toString";
12
+ readonly EQUALS: "lombok-ts:equals";
13
+ readonly UTILITY_CLASS: "lombok-ts:utilityClass";
14
+ readonly FIELD_DEFAULTS: "lombok-ts:fieldDefaults";
15
+ readonly ACCESSORS: "lombok-ts:accessors";
16
+ readonly LOG: "lombok-ts:log";
17
+ readonly OBSERVABLE: "lombok-ts:observable";
18
+ readonly SERIALIZABLE: "lombok-ts:serializable";
19
+ readonly DEEP_FREEZE: "lombok-ts:deepFreeze";
20
+ readonly TRACE: "lombok-ts:trace";
21
+ readonly SINGLETON: "lombok-ts:singleton";
22
+ readonly FACTORY: "lombok-ts:factory";
23
+ readonly ABSTRACT_FACTORY: "lombok-ts:abstractFactory";
24
+ readonly PROTOTYPE: "lombok-ts:prototype";
25
+ readonly ADAPTER: "lombok-ts:adapter";
26
+ readonly BRIDGE: "lombok-ts:bridge";
27
+ readonly COMPOSITE: "lombok-ts:composite";
28
+ readonly WRAPS: "lombok-ts:wraps";
29
+ readonly FACADE: "lombok-ts:facade";
30
+ readonly FLYWEIGHT: "lombok-ts:flyweight";
31
+ readonly PROXY: "lombok-ts:proxy";
32
+ readonly CHAIN_OF_RESPONSIBILITY: "lombok-ts:chainOfResponsibility";
33
+ readonly COMMAND: "lombok-ts:command";
34
+ readonly INTERPRETER: "lombok-ts:interpreter";
35
+ readonly ITERABLE: "lombok-ts:iterable";
36
+ readonly MEDIATOR: "lombok-ts:mediator";
37
+ readonly MEMENTO: "lombok-ts:memento";
38
+ readonly STATE: "lombok-ts:state";
39
+ readonly STRATEGY: "lombok-ts:strategy";
40
+ readonly TEMPLATE_METHOD: "lombok-ts:templateMethod";
41
+ readonly VISITABLE: "lombok-ts:visitable";
42
+ readonly VISITOR: "lombok-ts:visitor";
43
+ readonly GETTER: "lombok-ts:getter";
44
+ readonly SETTER: "lombok-ts:setter";
45
+ readonly NON_NULL: "lombok-ts:nonNull";
46
+ readonly WITH: "lombok-ts:with";
47
+ readonly DELEGATE: "lombok-ts:delegate";
48
+ readonly VALIDATE: "lombok-ts:validate";
49
+ readonly TO_STRING_EXCLUDE: "lombok-ts:toString:exclude";
50
+ readonly TO_STRING_INCLUDE: "lombok-ts:toString:include";
51
+ readonly EQUALS_EXCLUDE: "lombok-ts:equals:exclude";
52
+ readonly SERIALIZABLE_EXCLUDE: "lombok-ts:serializable:exclude";
53
+ readonly SERIALIZABLE_TRANSFORM: "lombok-ts:serializable:transform";
54
+ readonly SERIALIZABLE_ALIAS: "lombok-ts:serializable:alias";
55
+ readonly BUILDER_DEFAULT: "lombok-ts:builder:default";
56
+ readonly SINGULAR: "lombok-ts:singular";
57
+ readonly ITERATE_OVER: "lombok-ts:iterateOver";
58
+ readonly MEMOIZE: "lombok-ts:memoize";
59
+ readonly DEBOUNCE: "lombok-ts:debounce";
60
+ readonly THROTTLE: "lombok-ts:throttle";
61
+ readonly RETRY: "lombok-ts:retry";
62
+ readonly HANDLER: "lombok-ts:handler";
63
+ readonly TRANSITION: "lombok-ts:transition";
64
+ readonly HOOK: "lombok-ts:hook";
65
+ readonly NON_NULL_PARAM: "lombok-ts:nonNull:param";
66
+ readonly FIELDS: "lombok-ts:internal:fields";
67
+ readonly CONSTRUCTOR_PARAMS: "lombok-ts:internal:constructorParams";
68
+ readonly BACKEND: "lombok-ts:internal:backend";
69
+ };
70
+ type MetadataKey = (typeof MetadataKeys)[keyof typeof MetadataKeys];
71
+ declare const METADATA_KEY_PREFIX = "lombok-ts:";
72
+
73
+ export { METADATA_KEY_PREFIX, type MetadataKey, MetadataKeys };
@@ -0,0 +1,128 @@
1
+ // src/core/metadata-store.ts
2
+ var WeakMapMetadataStore = class {
3
+ classScopes = /* @__PURE__ */ new WeakMap();
4
+ memberScopes = /* @__PURE__ */ new WeakMap();
5
+ set(key, target, propertyKey, value) {
6
+ const bucket = this.bucket(target, propertyKey, true);
7
+ bucket.set(key, value);
8
+ }
9
+ get(key, target, propertyKey) {
10
+ const bucket = this.bucket(target, propertyKey, false);
11
+ return bucket?.get(key);
12
+ }
13
+ has(key, target, propertyKey) {
14
+ const bucket = this.bucket(target, propertyKey, false);
15
+ return bucket?.has(key) ?? false;
16
+ }
17
+ delete(key, target, propertyKey) {
18
+ const bucket = this.bucket(target, propertyKey, false);
19
+ if (!bucket) return false;
20
+ return bucket.delete(key);
21
+ }
22
+ list(target, propertyKey) {
23
+ const bucket = this.bucket(target, propertyKey, false);
24
+ if (!bucket) return [];
25
+ return Array.from(bucket.keys());
26
+ }
27
+ bucket(target, propertyKey, createIfMissing) {
28
+ if (propertyKey === void 0) {
29
+ let bucket2 = this.classScopes.get(target);
30
+ if (!bucket2 && createIfMissing) {
31
+ bucket2 = /* @__PURE__ */ new Map();
32
+ this.classScopes.set(target, bucket2);
33
+ }
34
+ return bucket2;
35
+ }
36
+ let perTarget = this.memberScopes.get(target);
37
+ if (!perTarget) {
38
+ if (!createIfMissing) return void 0;
39
+ perTarget = /* @__PURE__ */ new Map();
40
+ this.memberScopes.set(target, perTarget);
41
+ }
42
+ let bucket = perTarget.get(propertyKey);
43
+ if (!bucket) {
44
+ if (!createIfMissing) return void 0;
45
+ bucket = /* @__PURE__ */ new Map();
46
+ perTarget.set(propertyKey, bucket);
47
+ }
48
+ return bucket;
49
+ }
50
+ };
51
+
52
+ // src/core/metadata-keys.ts
53
+ var PREFIX = "lombok-ts:";
54
+ var MetadataKeys = {
55
+ // Class-level (Lombok)
56
+ DATA: `${PREFIX}data`,
57
+ VALUE: `${PREFIX}value`,
58
+ BUILDER: `${PREFIX}builder`,
59
+ TO_STRING: `${PREFIX}toString`,
60
+ EQUALS: `${PREFIX}equals`,
61
+ UTILITY_CLASS: `${PREFIX}utilityClass`,
62
+ FIELD_DEFAULTS: `${PREFIX}fieldDefaults`,
63
+ ACCESSORS: `${PREFIX}accessors`,
64
+ LOG: `${PREFIX}log`,
65
+ // Class-level (TS-only)
66
+ OBSERVABLE: `${PREFIX}observable`,
67
+ SERIALIZABLE: `${PREFIX}serializable`,
68
+ DEEP_FREEZE: `${PREFIX}deepFreeze`,
69
+ TRACE: `${PREFIX}trace`,
70
+ // Class-level (GoF)
71
+ SINGLETON: `${PREFIX}singleton`,
72
+ FACTORY: `${PREFIX}factory`,
73
+ ABSTRACT_FACTORY: `${PREFIX}abstractFactory`,
74
+ PROTOTYPE: `${PREFIX}prototype`,
75
+ ADAPTER: `${PREFIX}adapter`,
76
+ BRIDGE: `${PREFIX}bridge`,
77
+ COMPOSITE: `${PREFIX}composite`,
78
+ WRAPS: `${PREFIX}wraps`,
79
+ FACADE: `${PREFIX}facade`,
80
+ FLYWEIGHT: `${PREFIX}flyweight`,
81
+ PROXY: `${PREFIX}proxy`,
82
+ CHAIN_OF_RESPONSIBILITY: `${PREFIX}chainOfResponsibility`,
83
+ COMMAND: `${PREFIX}command`,
84
+ INTERPRETER: `${PREFIX}interpreter`,
85
+ ITERABLE: `${PREFIX}iterable`,
86
+ MEDIATOR: `${PREFIX}mediator`,
87
+ MEMENTO: `${PREFIX}memento`,
88
+ STATE: `${PREFIX}state`,
89
+ STRATEGY: `${PREFIX}strategy`,
90
+ TEMPLATE_METHOD: `${PREFIX}templateMethod`,
91
+ VISITABLE: `${PREFIX}visitable`,
92
+ VISITOR: `${PREFIX}visitor`,
93
+ // Field-level
94
+ GETTER: `${PREFIX}getter`,
95
+ SETTER: `${PREFIX}setter`,
96
+ NON_NULL: `${PREFIX}nonNull`,
97
+ WITH: `${PREFIX}with`,
98
+ DELEGATE: `${PREFIX}delegate`,
99
+ VALIDATE: `${PREFIX}validate`,
100
+ TO_STRING_EXCLUDE: `${PREFIX}toString:exclude`,
101
+ TO_STRING_INCLUDE: `${PREFIX}toString:include`,
102
+ EQUALS_EXCLUDE: `${PREFIX}equals:exclude`,
103
+ SERIALIZABLE_EXCLUDE: `${PREFIX}serializable:exclude`,
104
+ SERIALIZABLE_TRANSFORM: `${PREFIX}serializable:transform`,
105
+ SERIALIZABLE_ALIAS: `${PREFIX}serializable:alias`,
106
+ BUILDER_DEFAULT: `${PREFIX}builder:default`,
107
+ SINGULAR: `${PREFIX}singular`,
108
+ ITERATE_OVER: `${PREFIX}iterateOver`,
109
+ // Method-level
110
+ MEMOIZE: `${PREFIX}memoize`,
111
+ DEBOUNCE: `${PREFIX}debounce`,
112
+ THROTTLE: `${PREFIX}throttle`,
113
+ RETRY: `${PREFIX}retry`,
114
+ HANDLER: `${PREFIX}handler`,
115
+ TRANSITION: `${PREFIX}transition`,
116
+ HOOK: `${PREFIX}hook`,
117
+ // Parameter-level
118
+ NON_NULL_PARAM: `${PREFIX}nonNull:param`,
119
+ // Internal, framework-managed
120
+ FIELDS: `${PREFIX}internal:fields`,
121
+ CONSTRUCTOR_PARAMS: `${PREFIX}internal:constructorParams`,
122
+ BACKEND: `${PREFIX}internal:backend`
123
+ };
124
+ var METADATA_KEY_PREFIX = PREFIX;
125
+
126
+ export { METADATA_KEY_PREFIX, MetadataKeys, WeakMapMetadataStore };
127
+ //# sourceMappingURL=index.js.map
128
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/core/metadata-store.ts","../../src/core/metadata-keys.ts"],"names":["bucket"],"mappings":"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","file":"index.js","sourcesContent":["import type { MetadataKeyList, PropertyName } from './types.js';\n\n/**\n * Storage interface used by both decorator backends. Legacy delegates to\n * `reflect-metadata`; Stage 3 uses the WeakMap implementation below.\n */\nexport interface MetadataStore {\n /** Store `value` under `key`. Omit `propertyKey` for class-level scope. */\n set<V>(key: string, target: object, propertyKey: PropertyName | undefined, value: V): void;\n\n /** Read the value stored under `key`, or `undefined`. */\n get<V>(key: string, target: object, propertyKey?: PropertyName): V | undefined;\n\n /** True if `key` exists at the given scope. */\n has(key: string, target: object, propertyKey?: PropertyName): boolean;\n\n /** Remove the entry. Returns true if it existed. */\n delete(key: string, target: object, propertyKey?: PropertyName): boolean;\n\n /** All keys at the given scope. */\n list(target: object, propertyKey?: PropertyName): MetadataKeyList;\n}\n\n/**\n * WeakMap-backed `MetadataStore`. Used directly by the Stage 3 backend.\n * Layout: target -> (propertyKey or class-level) -> key -> value.\n */\nexport class WeakMapMetadataStore implements MetadataStore {\n private readonly classScopes = new WeakMap<object, Map<string, unknown>>();\n private readonly memberScopes = new WeakMap<object, Map<string | symbol, Map<string, unknown>>>();\n\n set<V>(key: string, target: object, propertyKey: PropertyName | undefined, value: V): void {\n const bucket = this.bucket(target, propertyKey, true)!;\n bucket.set(key, value);\n }\n\n get<V>(key: string, target: object, propertyKey?: PropertyName): V | undefined {\n const bucket = this.bucket(target, propertyKey, false);\n return bucket?.get(key) as V | undefined;\n }\n\n has(key: string, target: object, propertyKey?: PropertyName): boolean {\n const bucket = this.bucket(target, propertyKey, false);\n return bucket?.has(key) ?? false;\n }\n\n delete(key: string, target: object, propertyKey?: PropertyName): boolean {\n const bucket = this.bucket(target, propertyKey, false);\n if (!bucket) return false;\n return bucket.delete(key);\n }\n\n list(target: object, propertyKey?: PropertyName): MetadataKeyList {\n const bucket = this.bucket(target, propertyKey, false);\n if (!bucket) return [];\n return Array.from(bucket.keys());\n }\n\n private bucket(\n target: object,\n propertyKey: PropertyName | undefined,\n createIfMissing: boolean,\n ): Map<string, unknown> | undefined {\n if (propertyKey === undefined) {\n let bucket = this.classScopes.get(target);\n if (!bucket && createIfMissing) {\n bucket = new Map();\n this.classScopes.set(target, bucket);\n }\n return bucket;\n }\n\n let perTarget = this.memberScopes.get(target);\n if (!perTarget) {\n if (!createIfMissing) return undefined;\n perTarget = new Map();\n this.memberScopes.set(target, perTarget);\n }\n\n let bucket = perTarget.get(propertyKey);\n if (!bucket) {\n if (!createIfMissing) return undefined;\n bucket = new Map();\n perTarget.set(propertyKey, bucket);\n }\n return bucket;\n }\n}\n","/**\n * Metadata keys used across the library. Adding one? Use the `lombok-ts:`\n * prefix and check `metadata-keys.test.ts` so uniqueness stays enforced.\n */\n\nconst PREFIX = 'lombok-ts:';\n\nexport const MetadataKeys = {\n // Class-level (Lombok)\n DATA: `${PREFIX}data`,\n VALUE: `${PREFIX}value`,\n BUILDER: `${PREFIX}builder`,\n TO_STRING: `${PREFIX}toString`,\n EQUALS: `${PREFIX}equals`,\n UTILITY_CLASS: `${PREFIX}utilityClass`,\n FIELD_DEFAULTS: `${PREFIX}fieldDefaults`,\n ACCESSORS: `${PREFIX}accessors`,\n LOG: `${PREFIX}log`,\n\n // Class-level (TS-only)\n OBSERVABLE: `${PREFIX}observable`,\n SERIALIZABLE: `${PREFIX}serializable`,\n DEEP_FREEZE: `${PREFIX}deepFreeze`,\n TRACE: `${PREFIX}trace`,\n\n // Class-level (GoF)\n SINGLETON: `${PREFIX}singleton`,\n FACTORY: `${PREFIX}factory`,\n ABSTRACT_FACTORY: `${PREFIX}abstractFactory`,\n PROTOTYPE: `${PREFIX}prototype`,\n ADAPTER: `${PREFIX}adapter`,\n BRIDGE: `${PREFIX}bridge`,\n COMPOSITE: `${PREFIX}composite`,\n WRAPS: `${PREFIX}wraps`,\n FACADE: `${PREFIX}facade`,\n FLYWEIGHT: `${PREFIX}flyweight`,\n PROXY: `${PREFIX}proxy`,\n CHAIN_OF_RESPONSIBILITY: `${PREFIX}chainOfResponsibility`,\n COMMAND: `${PREFIX}command`,\n INTERPRETER: `${PREFIX}interpreter`,\n ITERABLE: `${PREFIX}iterable`,\n MEDIATOR: `${PREFIX}mediator`,\n MEMENTO: `${PREFIX}memento`,\n STATE: `${PREFIX}state`,\n STRATEGY: `${PREFIX}strategy`,\n TEMPLATE_METHOD: `${PREFIX}templateMethod`,\n VISITABLE: `${PREFIX}visitable`,\n VISITOR: `${PREFIX}visitor`,\n\n // Field-level\n GETTER: `${PREFIX}getter`,\n SETTER: `${PREFIX}setter`,\n NON_NULL: `${PREFIX}nonNull`,\n WITH: `${PREFIX}with`,\n DELEGATE: `${PREFIX}delegate`,\n VALIDATE: `${PREFIX}validate`,\n TO_STRING_EXCLUDE: `${PREFIX}toString:exclude`,\n TO_STRING_INCLUDE: `${PREFIX}toString:include`,\n EQUALS_EXCLUDE: `${PREFIX}equals:exclude`,\n SERIALIZABLE_EXCLUDE: `${PREFIX}serializable:exclude`,\n SERIALIZABLE_TRANSFORM: `${PREFIX}serializable:transform`,\n SERIALIZABLE_ALIAS: `${PREFIX}serializable:alias`,\n BUILDER_DEFAULT: `${PREFIX}builder:default`,\n SINGULAR: `${PREFIX}singular`,\n ITERATE_OVER: `${PREFIX}iterateOver`,\n\n // Method-level\n MEMOIZE: `${PREFIX}memoize`,\n DEBOUNCE: `${PREFIX}debounce`,\n THROTTLE: `${PREFIX}throttle`,\n RETRY: `${PREFIX}retry`,\n HANDLER: `${PREFIX}handler`,\n TRANSITION: `${PREFIX}transition`,\n HOOK: `${PREFIX}hook`,\n\n // Parameter-level\n NON_NULL_PARAM: `${PREFIX}nonNull:param`,\n\n // Internal, framework-managed\n FIELDS: `${PREFIX}internal:fields`,\n CONSTRUCTOR_PARAMS: `${PREFIX}internal:constructorParams`,\n BACKEND: `${PREFIX}internal:backend`,\n} as const;\n\nexport type MetadataKey = (typeof MetadataKeys)[keyof typeof MetadataKeys];\n\nexport const METADATA_KEY_PREFIX = PREFIX;\n"]}
package/dist/index.cjs ADDED
@@ -0,0 +1,142 @@
1
+ 'use strict';
2
+
3
+ // src/core/metadata-store.ts
4
+ var WeakMapMetadataStore = class {
5
+ classScopes = /* @__PURE__ */ new WeakMap();
6
+ memberScopes = /* @__PURE__ */ new WeakMap();
7
+ set(key, target, propertyKey, value) {
8
+ const bucket = this.bucket(target, propertyKey, true);
9
+ bucket.set(key, value);
10
+ }
11
+ get(key, target, propertyKey) {
12
+ const bucket = this.bucket(target, propertyKey, false);
13
+ return bucket?.get(key);
14
+ }
15
+ has(key, target, propertyKey) {
16
+ const bucket = this.bucket(target, propertyKey, false);
17
+ return bucket?.has(key) ?? false;
18
+ }
19
+ delete(key, target, propertyKey) {
20
+ const bucket = this.bucket(target, propertyKey, false);
21
+ if (!bucket) return false;
22
+ return bucket.delete(key);
23
+ }
24
+ list(target, propertyKey) {
25
+ const bucket = this.bucket(target, propertyKey, false);
26
+ if (!bucket) return [];
27
+ return Array.from(bucket.keys());
28
+ }
29
+ bucket(target, propertyKey, createIfMissing) {
30
+ if (propertyKey === void 0) {
31
+ let bucket2 = this.classScopes.get(target);
32
+ if (!bucket2 && createIfMissing) {
33
+ bucket2 = /* @__PURE__ */ new Map();
34
+ this.classScopes.set(target, bucket2);
35
+ }
36
+ return bucket2;
37
+ }
38
+ let perTarget = this.memberScopes.get(target);
39
+ if (!perTarget) {
40
+ if (!createIfMissing) return void 0;
41
+ perTarget = /* @__PURE__ */ new Map();
42
+ this.memberScopes.set(target, perTarget);
43
+ }
44
+ let bucket = perTarget.get(propertyKey);
45
+ if (!bucket) {
46
+ if (!createIfMissing) return void 0;
47
+ bucket = /* @__PURE__ */ new Map();
48
+ perTarget.set(propertyKey, bucket);
49
+ }
50
+ return bucket;
51
+ }
52
+ };
53
+
54
+ // src/core/metadata-keys.ts
55
+ var PREFIX = "lombok-ts:";
56
+ var MetadataKeys = {
57
+ // Class-level (Lombok)
58
+ DATA: `${PREFIX}data`,
59
+ VALUE: `${PREFIX}value`,
60
+ BUILDER: `${PREFIX}builder`,
61
+ TO_STRING: `${PREFIX}toString`,
62
+ EQUALS: `${PREFIX}equals`,
63
+ UTILITY_CLASS: `${PREFIX}utilityClass`,
64
+ FIELD_DEFAULTS: `${PREFIX}fieldDefaults`,
65
+ ACCESSORS: `${PREFIX}accessors`,
66
+ LOG: `${PREFIX}log`,
67
+ // Class-level (TS-only)
68
+ OBSERVABLE: `${PREFIX}observable`,
69
+ SERIALIZABLE: `${PREFIX}serializable`,
70
+ DEEP_FREEZE: `${PREFIX}deepFreeze`,
71
+ TRACE: `${PREFIX}trace`,
72
+ // Class-level (GoF)
73
+ SINGLETON: `${PREFIX}singleton`,
74
+ FACTORY: `${PREFIX}factory`,
75
+ ABSTRACT_FACTORY: `${PREFIX}abstractFactory`,
76
+ PROTOTYPE: `${PREFIX}prototype`,
77
+ ADAPTER: `${PREFIX}adapter`,
78
+ BRIDGE: `${PREFIX}bridge`,
79
+ COMPOSITE: `${PREFIX}composite`,
80
+ WRAPS: `${PREFIX}wraps`,
81
+ FACADE: `${PREFIX}facade`,
82
+ FLYWEIGHT: `${PREFIX}flyweight`,
83
+ PROXY: `${PREFIX}proxy`,
84
+ CHAIN_OF_RESPONSIBILITY: `${PREFIX}chainOfResponsibility`,
85
+ COMMAND: `${PREFIX}command`,
86
+ INTERPRETER: `${PREFIX}interpreter`,
87
+ ITERABLE: `${PREFIX}iterable`,
88
+ MEDIATOR: `${PREFIX}mediator`,
89
+ MEMENTO: `${PREFIX}memento`,
90
+ STATE: `${PREFIX}state`,
91
+ STRATEGY: `${PREFIX}strategy`,
92
+ TEMPLATE_METHOD: `${PREFIX}templateMethod`,
93
+ VISITABLE: `${PREFIX}visitable`,
94
+ VISITOR: `${PREFIX}visitor`,
95
+ // Field-level
96
+ GETTER: `${PREFIX}getter`,
97
+ SETTER: `${PREFIX}setter`,
98
+ NON_NULL: `${PREFIX}nonNull`,
99
+ WITH: `${PREFIX}with`,
100
+ DELEGATE: `${PREFIX}delegate`,
101
+ VALIDATE: `${PREFIX}validate`,
102
+ TO_STRING_EXCLUDE: `${PREFIX}toString:exclude`,
103
+ TO_STRING_INCLUDE: `${PREFIX}toString:include`,
104
+ EQUALS_EXCLUDE: `${PREFIX}equals:exclude`,
105
+ SERIALIZABLE_EXCLUDE: `${PREFIX}serializable:exclude`,
106
+ SERIALIZABLE_TRANSFORM: `${PREFIX}serializable:transform`,
107
+ SERIALIZABLE_ALIAS: `${PREFIX}serializable:alias`,
108
+ BUILDER_DEFAULT: `${PREFIX}builder:default`,
109
+ SINGULAR: `${PREFIX}singular`,
110
+ ITERATE_OVER: `${PREFIX}iterateOver`,
111
+ // Method-level
112
+ MEMOIZE: `${PREFIX}memoize`,
113
+ DEBOUNCE: `${PREFIX}debounce`,
114
+ THROTTLE: `${PREFIX}throttle`,
115
+ RETRY: `${PREFIX}retry`,
116
+ HANDLER: `${PREFIX}handler`,
117
+ TRANSITION: `${PREFIX}transition`,
118
+ HOOK: `${PREFIX}hook`,
119
+ // Parameter-level
120
+ NON_NULL_PARAM: `${PREFIX}nonNull:param`,
121
+ // Internal, framework-managed
122
+ FIELDS: `${PREFIX}internal:fields`,
123
+ CONSTRUCTOR_PARAMS: `${PREFIX}internal:constructorParams`,
124
+ BACKEND: `${PREFIX}internal:backend`
125
+ };
126
+ var METADATA_KEY_PREFIX = PREFIX;
127
+
128
+ // src/config.ts
129
+ function defineConfig(config) {
130
+ return config;
131
+ }
132
+
133
+ // src/index.ts
134
+ var VERSION = "0.1.0-pre";
135
+
136
+ exports.METADATA_KEY_PREFIX = METADATA_KEY_PREFIX;
137
+ exports.MetadataKeys = MetadataKeys;
138
+ exports.VERSION = VERSION;
139
+ exports.WeakMapMetadataStore = WeakMapMetadataStore;
140
+ exports.defineConfig = defineConfig;
141
+ //# sourceMappingURL=index.cjs.map
142
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/metadata-store.ts","../src/core/metadata-keys.ts","../src/config.ts","../src/index.ts"],"names":["bucket"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { MetadataKeyList, PropertyName } from './types.js';\n\n/**\n * Storage interface used by both decorator backends. Legacy delegates to\n * `reflect-metadata`; Stage 3 uses the WeakMap implementation below.\n */\nexport interface MetadataStore {\n /** Store `value` under `key`. Omit `propertyKey` for class-level scope. */\n set<V>(key: string, target: object, propertyKey: PropertyName | undefined, value: V): void;\n\n /** Read the value stored under `key`, or `undefined`. */\n get<V>(key: string, target: object, propertyKey?: PropertyName): V | undefined;\n\n /** True if `key` exists at the given scope. */\n has(key: string, target: object, propertyKey?: PropertyName): boolean;\n\n /** Remove the entry. Returns true if it existed. */\n delete(key: string, target: object, propertyKey?: PropertyName): boolean;\n\n /** All keys at the given scope. */\n list(target: object, propertyKey?: PropertyName): MetadataKeyList;\n}\n\n/**\n * WeakMap-backed `MetadataStore`. Used directly by the Stage 3 backend.\n * Layout: target -> (propertyKey or class-level) -> key -> value.\n */\nexport class WeakMapMetadataStore implements MetadataStore {\n private readonly classScopes = new WeakMap<object, Map<string, unknown>>();\n private readonly memberScopes = new WeakMap<object, Map<string | symbol, Map<string, unknown>>>();\n\n set<V>(key: string, target: object, propertyKey: PropertyName | undefined, value: V): void {\n const bucket = this.bucket(target, propertyKey, true)!;\n bucket.set(key, value);\n }\n\n get<V>(key: string, target: object, propertyKey?: PropertyName): V | undefined {\n const bucket = this.bucket(target, propertyKey, false);\n return bucket?.get(key) as V | undefined;\n }\n\n has(key: string, target: object, propertyKey?: PropertyName): boolean {\n const bucket = this.bucket(target, propertyKey, false);\n return bucket?.has(key) ?? false;\n }\n\n delete(key: string, target: object, propertyKey?: PropertyName): boolean {\n const bucket = this.bucket(target, propertyKey, false);\n if (!bucket) return false;\n return bucket.delete(key);\n }\n\n list(target: object, propertyKey?: PropertyName): MetadataKeyList {\n const bucket = this.bucket(target, propertyKey, false);\n if (!bucket) return [];\n return Array.from(bucket.keys());\n }\n\n private bucket(\n target: object,\n propertyKey: PropertyName | undefined,\n createIfMissing: boolean,\n ): Map<string, unknown> | undefined {\n if (propertyKey === undefined) {\n let bucket = this.classScopes.get(target);\n if (!bucket && createIfMissing) {\n bucket = new Map();\n this.classScopes.set(target, bucket);\n }\n return bucket;\n }\n\n let perTarget = this.memberScopes.get(target);\n if (!perTarget) {\n if (!createIfMissing) return undefined;\n perTarget = new Map();\n this.memberScopes.set(target, perTarget);\n }\n\n let bucket = perTarget.get(propertyKey);\n if (!bucket) {\n if (!createIfMissing) return undefined;\n bucket = new Map();\n perTarget.set(propertyKey, bucket);\n }\n return bucket;\n }\n}\n","/**\n * Metadata keys used across the library. Adding one? Use the `lombok-ts:`\n * prefix and check `metadata-keys.test.ts` so uniqueness stays enforced.\n */\n\nconst PREFIX = 'lombok-ts:';\n\nexport const MetadataKeys = {\n // Class-level (Lombok)\n DATA: `${PREFIX}data`,\n VALUE: `${PREFIX}value`,\n BUILDER: `${PREFIX}builder`,\n TO_STRING: `${PREFIX}toString`,\n EQUALS: `${PREFIX}equals`,\n UTILITY_CLASS: `${PREFIX}utilityClass`,\n FIELD_DEFAULTS: `${PREFIX}fieldDefaults`,\n ACCESSORS: `${PREFIX}accessors`,\n LOG: `${PREFIX}log`,\n\n // Class-level (TS-only)\n OBSERVABLE: `${PREFIX}observable`,\n SERIALIZABLE: `${PREFIX}serializable`,\n DEEP_FREEZE: `${PREFIX}deepFreeze`,\n TRACE: `${PREFIX}trace`,\n\n // Class-level (GoF)\n SINGLETON: `${PREFIX}singleton`,\n FACTORY: `${PREFIX}factory`,\n ABSTRACT_FACTORY: `${PREFIX}abstractFactory`,\n PROTOTYPE: `${PREFIX}prototype`,\n ADAPTER: `${PREFIX}adapter`,\n BRIDGE: `${PREFIX}bridge`,\n COMPOSITE: `${PREFIX}composite`,\n WRAPS: `${PREFIX}wraps`,\n FACADE: `${PREFIX}facade`,\n FLYWEIGHT: `${PREFIX}flyweight`,\n PROXY: `${PREFIX}proxy`,\n CHAIN_OF_RESPONSIBILITY: `${PREFIX}chainOfResponsibility`,\n COMMAND: `${PREFIX}command`,\n INTERPRETER: `${PREFIX}interpreter`,\n ITERABLE: `${PREFIX}iterable`,\n MEDIATOR: `${PREFIX}mediator`,\n MEMENTO: `${PREFIX}memento`,\n STATE: `${PREFIX}state`,\n STRATEGY: `${PREFIX}strategy`,\n TEMPLATE_METHOD: `${PREFIX}templateMethod`,\n VISITABLE: `${PREFIX}visitable`,\n VISITOR: `${PREFIX}visitor`,\n\n // Field-level\n GETTER: `${PREFIX}getter`,\n SETTER: `${PREFIX}setter`,\n NON_NULL: `${PREFIX}nonNull`,\n WITH: `${PREFIX}with`,\n DELEGATE: `${PREFIX}delegate`,\n VALIDATE: `${PREFIX}validate`,\n TO_STRING_EXCLUDE: `${PREFIX}toString:exclude`,\n TO_STRING_INCLUDE: `${PREFIX}toString:include`,\n EQUALS_EXCLUDE: `${PREFIX}equals:exclude`,\n SERIALIZABLE_EXCLUDE: `${PREFIX}serializable:exclude`,\n SERIALIZABLE_TRANSFORM: `${PREFIX}serializable:transform`,\n SERIALIZABLE_ALIAS: `${PREFIX}serializable:alias`,\n BUILDER_DEFAULT: `${PREFIX}builder:default`,\n SINGULAR: `${PREFIX}singular`,\n ITERATE_OVER: `${PREFIX}iterateOver`,\n\n // Method-level\n MEMOIZE: `${PREFIX}memoize`,\n DEBOUNCE: `${PREFIX}debounce`,\n THROTTLE: `${PREFIX}throttle`,\n RETRY: `${PREFIX}retry`,\n HANDLER: `${PREFIX}handler`,\n TRANSITION: `${PREFIX}transition`,\n HOOK: `${PREFIX}hook`,\n\n // Parameter-level\n NON_NULL_PARAM: `${PREFIX}nonNull:param`,\n\n // Internal, framework-managed\n FIELDS: `${PREFIX}internal:fields`,\n CONSTRUCTOR_PARAMS: `${PREFIX}internal:constructorParams`,\n BACKEND: `${PREFIX}internal:backend`,\n} as const;\n\nexport type MetadataKey = (typeof MetadataKeys)[keyof typeof MetadataKeys];\n\nexport const METADATA_KEY_PREFIX = PREFIX;\n","import type { BackendKind } from './core/types.js';\n\nexport interface LogConfig {\n /** Logging provider. Default `'console'`. */\n provider: 'console' | 'winston' | 'pino' | 'bunyan';\n\n /** Default log level. Default `'info'`. */\n defaultLevel: 'debug' | 'info' | 'warn' | 'error';\n}\n\nexport interface BuilderConfig {\n /** Prefix for builder setter methods. Default `''` (so `name()`, not `withName()`). */\n prefix: string;\n\n /** Name of the build method. Default `'build'`. */\n buildMethodName: string;\n\n /** Name of the static builder method. Default `'builder'`. */\n builderMethodName: string;\n}\n\nexport interface ToStringConfig {\n /** Output format. Default `'pretty'`. */\n format: 'pretty' | 'json' | 'compact';\n\n /** Include the class name in output. Default `true`. */\n includeClassName: boolean;\n}\n\nexport interface ValidateConfig {\n /** Validation library. Default `'zod'`. */\n provider: 'zod' | 'yup' | 'class-validator';\n\n /** Throw on validation failure. Default `true`. */\n throwOnError: boolean;\n}\n\nexport interface CodegenConfig {\n /** Where to write generated companion files. Default `'.lombok'`. */\n outputDir: string;\n\n /** Glob patterns for files to process. Default `['src/** /*.ts']`. */\n include: string[];\n\n /** Glob patterns for files to skip. Defaults exclude tests, `dist`, and `.lombok`. */\n exclude: string[];\n\n /** Path to the project's tsconfig. Default `'tsconfig.json'`. */\n tsConfigPath: string;\n\n /** Watch for source changes. Not implemented yet. Default `false`. */\n watch: boolean;\n}\n\n/**\n * Top-level lombok-typescript config.\n *\n * `backend` chooses which decorator standard to assume:\n * - `'legacy'`: `experimentalDecorators` (NestJS / class-validator ecosystem)\n * - `'stage3'`: Stage 3 ECMAScript decorators (TS 5.0+)\n * - `'auto'`: detect from the project's tsconfig\n *\n * The `@ToString` config field is named `formatToString` (not `toString`) so it\n * doesn't clash with `Object.prototype.toString`.\n */\nexport interface LombokConfig {\n /** Decorator backend. Default `'auto'`. */\n backend?: BackendKind | 'auto';\n\n log?: Partial<LogConfig>;\n builder?: Partial<BuilderConfig>;\n /** Settings for the `@ToString` decorator. */\n formatToString?: Partial<ToStringConfig>;\n validate?: Partial<ValidateConfig>;\n codegen?: Partial<CodegenConfig>;\n}\n\n/**\n * Identity helper that gives you autocomplete in `lombok.config.ts`.\n *\n * @example\n * import { defineConfig } from 'lombok-typescript';\n *\n * export default defineConfig({\n * backend: 'legacy',\n * log: { provider: 'winston' },\n * builder: { prefix: 'with' },\n * });\n */\nexport function defineConfig(config: LombokConfig): LombokConfig {\n return config;\n}\n","/**\n * `lombok-typescript`: a TypeScript port of Project Lombok plus GoF design\n * patterns as decorators.\n *\n * Sub-paths:\n * - `lombok-typescript/legacy`: legacy `experimentalDecorators` backend\n * - `lombok-typescript/stage3`: Stage 3 ECMAScript decorators backend\n * - `lombok-typescript/core`: backend-agnostic primitives\n * - `lombok-typescript/codegen`: ts-morph powered code generation\n *\n * @see https://github.com/A-Dev-Kit/lombok-typescript\n */\n\nexport type {\n Backend,\n MetadataStore,\n BackendKind,\n DecoratorKind,\n PropertyName,\n} from './core/index.js';\nexport { MetadataKeys, METADATA_KEY_PREFIX, WeakMapMetadataStore } from './core/index.js';\nexport type { MetadataKey } from './core/index.js';\n\nexport { defineConfig } from './config.js';\nexport type {\n LombokConfig,\n LogConfig,\n BuilderConfig,\n ToStringConfig,\n ValidateConfig,\n CodegenConfig,\n} from './config.js';\n\nexport const VERSION = '0.1.0-pre';\n"]}
@@ -0,0 +1,93 @@
1
+ import { B as BackendKind } from './backend-CkLBcDd8.cjs';
2
+ export { a as Backend, D as DecoratorKind, M as MetadataStore, P as PropertyName, W as WeakMapMetadataStore } from './backend-CkLBcDd8.cjs';
3
+ export { METADATA_KEY_PREFIX, MetadataKey, MetadataKeys } from './core/index.cjs';
4
+
5
+ interface LogConfig {
6
+ /** Logging provider. Default `'console'`. */
7
+ provider: 'console' | 'winston' | 'pino' | 'bunyan';
8
+ /** Default log level. Default `'info'`. */
9
+ defaultLevel: 'debug' | 'info' | 'warn' | 'error';
10
+ }
11
+ interface BuilderConfig {
12
+ /** Prefix for builder setter methods. Default `''` (so `name()`, not `withName()`). */
13
+ prefix: string;
14
+ /** Name of the build method. Default `'build'`. */
15
+ buildMethodName: string;
16
+ /** Name of the static builder method. Default `'builder'`. */
17
+ builderMethodName: string;
18
+ }
19
+ interface ToStringConfig {
20
+ /** Output format. Default `'pretty'`. */
21
+ format: 'pretty' | 'json' | 'compact';
22
+ /** Include the class name in output. Default `true`. */
23
+ includeClassName: boolean;
24
+ }
25
+ interface ValidateConfig {
26
+ /** Validation library. Default `'zod'`. */
27
+ provider: 'zod' | 'yup' | 'class-validator';
28
+ /** Throw on validation failure. Default `true`. */
29
+ throwOnError: boolean;
30
+ }
31
+ interface CodegenConfig {
32
+ /** Where to write generated companion files. Default `'.lombok'`. */
33
+ outputDir: string;
34
+ /** Glob patterns for files to process. Default `['src/** /*.ts']`. */
35
+ include: string[];
36
+ /** Glob patterns for files to skip. Defaults exclude tests, `dist`, and `.lombok`. */
37
+ exclude: string[];
38
+ /** Path to the project's tsconfig. Default `'tsconfig.json'`. */
39
+ tsConfigPath: string;
40
+ /** Watch for source changes. Not implemented yet. Default `false`. */
41
+ watch: boolean;
42
+ }
43
+ /**
44
+ * Top-level lombok-typescript config.
45
+ *
46
+ * `backend` chooses which decorator standard to assume:
47
+ * - `'legacy'`: `experimentalDecorators` (NestJS / class-validator ecosystem)
48
+ * - `'stage3'`: Stage 3 ECMAScript decorators (TS 5.0+)
49
+ * - `'auto'`: detect from the project's tsconfig
50
+ *
51
+ * The `@ToString` config field is named `formatToString` (not `toString`) so it
52
+ * doesn't clash with `Object.prototype.toString`.
53
+ */
54
+ interface LombokConfig {
55
+ /** Decorator backend. Default `'auto'`. */
56
+ backend?: BackendKind | 'auto';
57
+ log?: Partial<LogConfig>;
58
+ builder?: Partial<BuilderConfig>;
59
+ /** Settings for the `@ToString` decorator. */
60
+ formatToString?: Partial<ToStringConfig>;
61
+ validate?: Partial<ValidateConfig>;
62
+ codegen?: Partial<CodegenConfig>;
63
+ }
64
+ /**
65
+ * Identity helper that gives you autocomplete in `lombok.config.ts`.
66
+ *
67
+ * @example
68
+ * import { defineConfig } from 'lombok-typescript';
69
+ *
70
+ * export default defineConfig({
71
+ * backend: 'legacy',
72
+ * log: { provider: 'winston' },
73
+ * builder: { prefix: 'with' },
74
+ * });
75
+ */
76
+ declare function defineConfig(config: LombokConfig): LombokConfig;
77
+
78
+ /**
79
+ * `lombok-typescript`: a TypeScript port of Project Lombok plus GoF design
80
+ * patterns as decorators.
81
+ *
82
+ * Sub-paths:
83
+ * - `lombok-typescript/legacy`: legacy `experimentalDecorators` backend
84
+ * - `lombok-typescript/stage3`: Stage 3 ECMAScript decorators backend
85
+ * - `lombok-typescript/core`: backend-agnostic primitives
86
+ * - `lombok-typescript/codegen`: ts-morph powered code generation
87
+ *
88
+ * @see https://github.com/A-Dev-Kit/lombok-typescript
89
+ */
90
+
91
+ declare const VERSION = "0.1.0-pre";
92
+
93
+ export { BackendKind, type BuilderConfig, type CodegenConfig, type LogConfig, type LombokConfig, type ToStringConfig, VERSION, type ValidateConfig, defineConfig };