@digitaldefiance/branded-enum 0.0.1 → 0.0.3
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/dist/cjs/index.cjs +149 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/lib/accessors.cjs +55 -0
- package/dist/cjs/lib/accessors.cjs.map +1 -0
- package/dist/cjs/lib/advanced.cjs +558 -0
- package/dist/cjs/lib/advanced.cjs.map +1 -0
- package/dist/cjs/lib/branded-enum.cjs +15 -0
- package/dist/cjs/lib/branded-enum.cjs.map +1 -0
- package/dist/cjs/lib/decorators.cjs +202 -0
- package/dist/cjs/lib/decorators.cjs.map +1 -0
- package/dist/cjs/lib/factory.cjs +45 -0
- package/dist/cjs/lib/factory.cjs.map +1 -0
- package/dist/cjs/lib/guards.cjs +119 -0
- package/dist/cjs/lib/guards.cjs.map +1 -0
- package/dist/cjs/lib/merge.cjs +47 -0
- package/dist/cjs/lib/merge.cjs.map +1 -0
- package/dist/cjs/lib/registry.cjs +85 -0
- package/dist/cjs/lib/registry.cjs.map +1 -0
- package/dist/cjs/lib/types.cjs +38 -0
- package/dist/cjs/lib/types.cjs.map +1 -0
- package/dist/cjs/lib/utils.cjs +80 -0
- package/dist/cjs/lib/utils.cjs.map +1 -0
- package/dist/esm/index.d.ts +21 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/accessors.d.ts +79 -0
- package/dist/esm/lib/accessors.d.ts.map +1 -0
- package/dist/esm/lib/accessors.js.map +1 -0
- package/dist/esm/lib/advanced.d.ts +1422 -0
- package/dist/esm/lib/advanced.d.ts.map +1 -0
- package/dist/esm/lib/advanced.js.map +1 -0
- package/dist/esm/lib/branded-enum.d.ts +2 -0
- package/dist/esm/lib/branded-enum.d.ts.map +1 -0
- package/dist/esm/lib/branded-enum.js.map +1 -0
- package/dist/esm/lib/decorators.d.ts +147 -0
- package/dist/esm/lib/decorators.d.ts.map +1 -0
- package/dist/esm/lib/decorators.js.map +1 -0
- package/dist/esm/lib/factory.d.ts +52 -0
- package/dist/esm/lib/factory.d.ts.map +1 -0
- package/dist/esm/lib/factory.js.map +1 -0
- package/dist/esm/lib/guards.d.ts +297 -0
- package/dist/esm/lib/guards.d.ts.map +1 -0
- package/dist/esm/lib/guards.js.map +1 -0
- package/dist/esm/lib/merge.d.ts +64 -0
- package/dist/esm/lib/merge.d.ts.map +1 -0
- package/dist/esm/lib/merge.js.map +1 -0
- package/dist/esm/lib/registry.d.ts +93 -0
- package/dist/esm/lib/registry.d.ts.map +1 -0
- package/dist/esm/lib/registry.js.map +1 -0
- package/dist/esm/lib/types.d.ts +258 -0
- package/dist/esm/lib/types.d.ts.map +1 -0
- package/dist/esm/lib/types.js.map +1 -0
- package/dist/esm/lib/utils.d.ts +121 -0
- package/dist/esm/lib/utils.d.ts.map +1 -0
- package/dist/esm/lib/utils.js.map +1 -0
- package/package.json +31 -18
- package/dist/index.js.map +0 -1
- package/dist/lib/accessors.js.map +0 -1
- package/dist/lib/advanced.js.map +0 -1
- package/dist/lib/branded-enum.js.map +0 -1
- package/dist/lib/decorators.js.map +0 -1
- package/dist/lib/factory.js.map +0 -1
- package/dist/lib/guards.js.map +0 -1
- package/dist/lib/merge.js.map +0 -1
- package/dist/lib/registry.js.map +0 -1
- package/dist/lib/types.js.map +0 -1
- package/dist/lib/utils.js.map +0 -1
- package/dist/package.json +0 -120
- /package/dist/{index.js → esm/index.js} +0 -0
- /package/dist/{lib → esm/lib}/accessors.js +0 -0
- /package/dist/{lib → esm/lib}/advanced.js +0 -0
- /package/dist/{lib → esm/lib}/branded-enum.js +0 -0
- /package/dist/{lib → esm/lib}/decorators.js +0 -0
- /package/dist/{lib → esm/lib}/factory.js +0 -0
- /package/dist/{lib → esm/lib}/guards.js +0 -0
- /package/dist/{lib → esm/lib}/merge.js +0 -0
- /package/dist/{lib → esm/lib}/registry.js +0 -0
- /package/dist/{lib → esm/lib}/types.js +0 -0
- /package/dist/{lib → esm/lib}/utils.js +0 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* branded-enum - Runtime-identifiable enum-like types for TypeScript
|
|
3
|
+
*
|
|
4
|
+
* This library provides enum-like objects with embedded metadata for runtime
|
|
5
|
+
* identification, enabling you to determine which enum a string value belongs to.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/ // =============================================================================
|
|
9
|
+
// Types
|
|
10
|
+
// =============================================================================
|
|
11
|
+
"use strict";
|
|
12
|
+
Object.defineProperty(exports, "__esModule", {
|
|
13
|
+
value: true
|
|
14
|
+
});
|
|
15
|
+
function _export(target, all) {
|
|
16
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: all[name]
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
_export(exports, {
|
|
22
|
+
EnumClass: function() {
|
|
23
|
+
return _decorators.EnumClass;
|
|
24
|
+
},
|
|
25
|
+
EnumValue: function() {
|
|
26
|
+
return _decorators.EnumValue;
|
|
27
|
+
},
|
|
28
|
+
assertFromEnum: function() {
|
|
29
|
+
return _guards.assertFromEnum;
|
|
30
|
+
},
|
|
31
|
+
clearAllEnumWatchers: function() {
|
|
32
|
+
return _advanced.clearAllEnumWatchers;
|
|
33
|
+
},
|
|
34
|
+
createBrandedEnum: function() {
|
|
35
|
+
return _factory.createBrandedEnum;
|
|
36
|
+
},
|
|
37
|
+
enumDiff: function() {
|
|
38
|
+
return _advanced.enumDiff;
|
|
39
|
+
},
|
|
40
|
+
enumEntries: function() {
|
|
41
|
+
return _utils.enumEntries;
|
|
42
|
+
},
|
|
43
|
+
enumExclude: function() {
|
|
44
|
+
return _advanced.enumExclude;
|
|
45
|
+
},
|
|
46
|
+
enumFromKeys: function() {
|
|
47
|
+
return _advanced.enumFromKeys;
|
|
48
|
+
},
|
|
49
|
+
enumIntersect: function() {
|
|
50
|
+
return _advanced.enumIntersect;
|
|
51
|
+
},
|
|
52
|
+
enumMap: function() {
|
|
53
|
+
return _advanced.enumMap;
|
|
54
|
+
},
|
|
55
|
+
enumSerializer: function() {
|
|
56
|
+
return _advanced.enumSerializer;
|
|
57
|
+
},
|
|
58
|
+
enumSize: function() {
|
|
59
|
+
return _accessors.enumSize;
|
|
60
|
+
},
|
|
61
|
+
enumSubset: function() {
|
|
62
|
+
return _advanced.enumSubset;
|
|
63
|
+
},
|
|
64
|
+
enumToRecord: function() {
|
|
65
|
+
return _advanced.enumToRecord;
|
|
66
|
+
},
|
|
67
|
+
exhaustive: function() {
|
|
68
|
+
return _advanced.exhaustive;
|
|
69
|
+
},
|
|
70
|
+
exhaustiveGuard: function() {
|
|
71
|
+
return _advanced.exhaustiveGuard;
|
|
72
|
+
},
|
|
73
|
+
findEnumSources: function() {
|
|
74
|
+
return _registry.findEnumSources;
|
|
75
|
+
},
|
|
76
|
+
getAllEnumConsumers: function() {
|
|
77
|
+
return _decorators.getAllEnumConsumers;
|
|
78
|
+
},
|
|
79
|
+
getAllEnumIds: function() {
|
|
80
|
+
return _registry.getAllEnumIds;
|
|
81
|
+
},
|
|
82
|
+
getConsumedEnums: function() {
|
|
83
|
+
return _decorators.getConsumedEnums;
|
|
84
|
+
},
|
|
85
|
+
getEnumById: function() {
|
|
86
|
+
return _registry.getEnumById;
|
|
87
|
+
},
|
|
88
|
+
getEnumConsumers: function() {
|
|
89
|
+
return _decorators.getEnumConsumers;
|
|
90
|
+
},
|
|
91
|
+
getEnumId: function() {
|
|
92
|
+
return _accessors.getEnumId;
|
|
93
|
+
},
|
|
94
|
+
getEnumValues: function() {
|
|
95
|
+
return _accessors.getEnumValues;
|
|
96
|
+
},
|
|
97
|
+
getEnumWatcherCount: function() {
|
|
98
|
+
return _advanced.getEnumWatcherCount;
|
|
99
|
+
},
|
|
100
|
+
getGlobalWatcherCount: function() {
|
|
101
|
+
return _advanced.getGlobalWatcherCount;
|
|
102
|
+
},
|
|
103
|
+
getKeyForValue: function() {
|
|
104
|
+
return _utils.getKeyForValue;
|
|
105
|
+
},
|
|
106
|
+
getRegistry: function() {
|
|
107
|
+
return _registry.getRegistry;
|
|
108
|
+
},
|
|
109
|
+
hasValue: function() {
|
|
110
|
+
return _utils.hasValue;
|
|
111
|
+
},
|
|
112
|
+
isFromEnum: function() {
|
|
113
|
+
return _guards.isFromEnum;
|
|
114
|
+
},
|
|
115
|
+
isValidKey: function() {
|
|
116
|
+
return _utils.isValidKey;
|
|
117
|
+
},
|
|
118
|
+
mergeEnums: function() {
|
|
119
|
+
return _merge.mergeEnums;
|
|
120
|
+
},
|
|
121
|
+
parseEnum: function() {
|
|
122
|
+
return _guards.parseEnum;
|
|
123
|
+
},
|
|
124
|
+
safeParseEnum: function() {
|
|
125
|
+
return _guards.safeParseEnum;
|
|
126
|
+
},
|
|
127
|
+
toJsonSchema: function() {
|
|
128
|
+
return _advanced.toJsonSchema;
|
|
129
|
+
},
|
|
130
|
+
toZodSchema: function() {
|
|
131
|
+
return _advanced.toZodSchema;
|
|
132
|
+
},
|
|
133
|
+
watchAllEnums: function() {
|
|
134
|
+
return _advanced.watchAllEnums;
|
|
135
|
+
},
|
|
136
|
+
watchEnum: function() {
|
|
137
|
+
return _advanced.watchEnum;
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
const _factory = require("./lib/factory.js");
|
|
141
|
+
const _registry = require("./lib/registry.js");
|
|
142
|
+
const _guards = require("./lib/guards.js");
|
|
143
|
+
const _accessors = require("./lib/accessors.js");
|
|
144
|
+
const _utils = require("./lib/utils.js");
|
|
145
|
+
const _merge = require("./lib/merge.js");
|
|
146
|
+
const _advanced = require("./lib/advanced.js");
|
|
147
|
+
const _decorators = require("./lib/decorators.js");
|
|
148
|
+
|
|
149
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"sourcesContent":["/**\n * branded-enum - Runtime-identifiable enum-like types for TypeScript\n *\n * This library provides enum-like objects with embedded metadata for runtime\n * identification, enabling you to determine which enum a string value belongs to.\n *\n * @packageDocumentation\n */\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type {\n BrandedEnumMetadata,\n BrandedEnum,\n BrandedEnumValue,\n RegistryEntry,\n BrandedEnumRegistry,\n EnumConsumerEntry,\n EnumConsumerRegistry,\n AnyBrandedEnum,\n EnumKeys,\n EnumValues,\n ValidEnumValue,\n StrictEnumParam,\n} from './lib/types.js';\n\n// =============================================================================\n// Factory\n// =============================================================================\n\nexport { createBrandedEnum } from './lib/factory.js';\n\n// =============================================================================\n// Registry\n// =============================================================================\n\nexport {\n getRegistry,\n getAllEnumIds,\n getEnumById,\n findEnumSources,\n} from './lib/registry.js';\n\n// =============================================================================\n// Type Guards\n// =============================================================================\n\nexport { isFromEnum, assertFromEnum, parseEnum, safeParseEnum } from './lib/guards.js';\nexport type { SafeParseSuccess, SafeParseFailure, SafeParseError, SafeParseErrorCode, SafeParseResult } from './lib/guards.js';\n\n// =============================================================================\n// Metadata Accessors\n// =============================================================================\n\nexport { getEnumId, getEnumValues, enumSize } from './lib/accessors.js';\n\n// =============================================================================\n// Utility Functions\n// =============================================================================\n\nexport {\n hasValue,\n getKeyForValue,\n isValidKey,\n enumEntries,\n} from './lib/utils.js';\n\n// =============================================================================\n// Composition\n// =============================================================================\n\nexport { mergeEnums } from './lib/merge.js';\n\n// =============================================================================\n// Advanced Operations\n// =============================================================================\n\nexport { enumSubset, enumExclude, enumMap, enumFromKeys, enumDiff, enumIntersect, enumToRecord, watchEnum, watchAllEnums, clearAllEnumWatchers, getEnumWatcherCount, getGlobalWatcherCount, exhaustive, exhaustiveGuard, toJsonSchema, toZodSchema, enumSerializer } from './lib/advanced.js';\nexport type { EnumDiffResult, EnumIntersectEntry, EnumAccessType, EnumAccessEvent, EnumWatchCallback, WatchEnumResult, ToJsonSchemaOptions, EnumJsonSchema, ToZodSchemaOptions, ZodEnumSchemaDefinition, EnumSerializerOptions, DeserializeSuccess, DeserializeFailure, DeserializeResult, EnumSerializer } from './lib/advanced.js';\n\n// =============================================================================\n// Decorators\n// =============================================================================\n\nexport {\n EnumValue,\n EnumClass,\n getEnumConsumers,\n getConsumedEnums,\n getAllEnumConsumers,\n} from './lib/decorators.js';\nexport type { EnumValueOptions } from './lib/decorators.js';\n"],"names":["EnumClass","EnumValue","assertFromEnum","clearAllEnumWatchers","createBrandedEnum","enumDiff","enumEntries","enumExclude","enumFromKeys","enumIntersect","enumMap","enumSerializer","enumSize","enumSubset","enumToRecord","exhaustive","exhaustiveGuard","findEnumSources","getAllEnumConsumers","getAllEnumIds","getConsumedEnums","getEnumById","getEnumConsumers","getEnumId","getEnumValues","getEnumWatcherCount","getGlobalWatcherCount","getKeyForValue","getRegistry","hasValue","isFromEnum","isValidKey","mergeEnums","parseEnum","safeParseEnum","toJsonSchema","toZodSchema","watchAllEnums","watchEnum"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;;;;;;CAOC,GAED,gFAAgF;AAChF,QAAQ;AACR,gFAAgF;;;;;;;;;;;;IA6E9EA,SAAS;eAATA,qBAAS;;IADTC,SAAS;eAATA,qBAAS;;IAtCUC,cAAc;eAAdA,sBAAc;;IA8BuFC,oBAAoB;eAApBA,8BAAoB;;IA/CrIC,iBAAiB;eAAjBA,0BAAiB;;IA+C+BC,QAAQ;eAARA,kBAAQ;;IAb/DC,WAAW;eAAXA,kBAAW;;IAaQC,WAAW;eAAXA,qBAAW;;IAAWC,YAAY;eAAZA,sBAAY;;IAAYC,aAAa;eAAbA,uBAAa;;IAA9CC,OAAO;eAAPA,iBAAO;;IAA2MC,cAAc;eAAdA,wBAAc;;IAvB/NC,QAAQ;eAARA,mBAAQ;;IAuBlCC,UAAU;eAAVA,oBAAU;;IAA+DC,YAAY;eAAZA,sBAAY;;IAA8FC,UAAU;eAAVA,oBAAU;;IAAEC,eAAe;eAAfA,yBAAe;;IArCrNC,eAAe;eAAfA,yBAAe;;IAiDfC,mBAAmB;eAAnBA,+BAAmB;;IAnDnBC,aAAa;eAAbA,uBAAa;;IAkDbC,gBAAgB;eAAhBA,4BAAgB;;IAjDhBC,WAAW;eAAXA,qBAAW;;IAgDXC,gBAAgB;eAAhBA,4BAAgB;;IAjCTC,SAAS;eAATA,oBAAS;;IAAEC,aAAa;eAAbA,wBAAa;;IAuB+GC,mBAAmB;eAAnBA,6BAAmB;;IAAEC,qBAAqB;eAArBA,+BAAqB;;IAfxLC,cAAc;eAAdA,qBAAc;;IAzBdC,WAAW;eAAXA,qBAAW;;IAwBXC,QAAQ;eAARA,eAAQ;;IAdDC,UAAU;eAAVA,kBAAU;;IAgBjBC,UAAU;eAAVA,iBAAU;;IAQHC,UAAU;eAAVA,iBAAU;;IAxBkBC,SAAS;eAATA,iBAAS;;IAAEC,aAAa;eAAbA,qBAAa;;IA8B4JC,YAAY;eAAZA,sBAAY;;IAAEC,WAAW;eAAXA,qBAAW;;IAAvIC,aAAa;eAAbA,uBAAa;;IAAxBC,SAAS;eAATA,mBAAS;;;yBA/CvE;0BAW3B;wBAM8D;2BAOlB;uBAW5C;uBAMoB;0BAM+O;4BAanQ"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metadata accessors for branded enums.
|
|
3
|
+
*
|
|
4
|
+
* Provides functions to retrieve metadata from branded enum objects,
|
|
5
|
+
* including enum ID, values array, and size.
|
|
6
|
+
*/ "use strict";
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
function _export(target, all) {
|
|
11
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: all[name]
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
_export(exports, {
|
|
17
|
+
enumSize: function() {
|
|
18
|
+
return enumSize;
|
|
19
|
+
},
|
|
20
|
+
getEnumId: function() {
|
|
21
|
+
return getEnumId;
|
|
22
|
+
},
|
|
23
|
+
getEnumValues: function() {
|
|
24
|
+
return getEnumValues;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
const _types = require("./types.js");
|
|
28
|
+
/**
|
|
29
|
+
* Checks if an object is a branded enum (has Symbol metadata).
|
|
30
|
+
*
|
|
31
|
+
* @param obj - The object to check
|
|
32
|
+
* @returns true if obj is a branded enum
|
|
33
|
+
*/ function isBrandedEnum(obj) {
|
|
34
|
+
return obj !== null && typeof obj === 'object' && _types.ENUM_ID in obj && _types.ENUM_VALUES in obj && typeof obj[_types.ENUM_ID] === 'string' && obj[_types.ENUM_VALUES] instanceof Set;
|
|
35
|
+
}
|
|
36
|
+
function getEnumId(enumObj) {
|
|
37
|
+
if (!isBrandedEnum(enumObj)) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
return enumObj[_types.ENUM_ID];
|
|
41
|
+
}
|
|
42
|
+
function getEnumValues(enumObj) {
|
|
43
|
+
if (!isBrandedEnum(enumObj)) {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
return Array.from(enumObj[_types.ENUM_VALUES]);
|
|
47
|
+
}
|
|
48
|
+
function enumSize(enumObj) {
|
|
49
|
+
if (!isBrandedEnum(enumObj)) {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
return enumObj[_types.ENUM_VALUES].size;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
//# sourceMappingURL=accessors.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/accessors.ts"],"sourcesContent":["/**\n * Metadata accessors for branded enums.\n *\n * Provides functions to retrieve metadata from branded enum objects,\n * including enum ID, values array, and size.\n */\n\nimport {\n AnyBrandedEnum,\n BrandedEnum,\n BrandedEnumValue,\n ENUM_ID,\n ENUM_VALUES,\n EnumValues,\n} from './types.js';\n\n/**\n * Checks if an object is a branded enum (has Symbol metadata).\n *\n * @param obj - The object to check\n * @returns true if obj is a branded enum\n */\nfunction isBrandedEnum(obj: unknown): obj is AnyBrandedEnum {\n return (\n obj !== null &&\n typeof obj === 'object' &&\n ENUM_ID in obj &&\n ENUM_VALUES in obj &&\n typeof (obj as AnyBrandedEnum)[ENUM_ID] === 'string' &&\n (obj as AnyBrandedEnum)[ENUM_VALUES] instanceof Set\n );\n}\n\n/**\n * Gets the enum ID from a branded enum.\n *\n * Retrieves the unique identifier that was assigned when the enum was created.\n * Returns undefined for objects that are not branded enums.\n *\n * @param enumObj - The object to get the enum ID from. Can be any type.\n * @returns The enum ID string if enumObj is a branded enum, `undefined` otherwise.\n *\n * @example\n * // Get ID from branded enum\n * const Status = createBrandedEnum('status', { Active: 'active' } as const);\n * getEnumId(Status); // 'status'\n *\n * @example\n * // Returns undefined for non-branded objects\n * getEnumId({}); // undefined\n * getEnumId({ Active: 'active' }); // undefined\n * getEnumId(null); // undefined\n */\nexport function getEnumId(enumObj: unknown): string | undefined {\n if (!isBrandedEnum(enumObj)) {\n return undefined;\n }\n return enumObj[ENUM_ID];\n}\n\n/**\n * Gets all values from a branded enum as an array.\n *\n * Returns an array containing all the string values in the enum.\n * The order of values is not guaranteed.\n *\n * @template E - The branded enum type\n * @param enumObj - The object to get values from. Can be any type.\n * @returns Array of all enum values if enumObj is a branded enum,\n * `undefined` otherwise.\n *\n * @example\n * // Get values from branded enum\n * const Status = createBrandedEnum('status', {\n * Active: 'active',\n * Inactive: 'inactive'\n * } as const);\n * getEnumValues(Status); // ['active', 'inactive']\n *\n * @example\n * // Returns undefined for non-branded objects\n * getEnumValues({}); // undefined\n * getEnumValues({ Active: 'active' }); // undefined\n */\nexport function getEnumValues<E extends AnyBrandedEnum>(\n enumObj: E\n): EnumValues<E>[] | undefined;\nexport function getEnumValues(enumObj: unknown): string[] | undefined;\nexport function getEnumValues(enumObj: unknown): string[] | undefined {\n if (!isBrandedEnum(enumObj)) {\n return undefined;\n }\n return Array.from(enumObj[ENUM_VALUES]);\n}\n\n/**\n * Gets the number of values in a branded enum.\n *\n * Returns the count of unique values in the enum. This is equivalent to\n * the number of key-value pairs defined when the enum was created.\n *\n * @param enumObj - The object to get the size of. Can be any type.\n * @returns The number of values in the enum if enumObj is a branded enum,\n * `undefined` otherwise.\n *\n * @example\n * // Get size of branded enum\n * const Status = createBrandedEnum('status', {\n * Active: 'active',\n * Inactive: 'inactive'\n * } as const);\n * enumSize(Status); // 2\n *\n * @example\n * // Returns undefined for non-branded objects\n * enumSize({}); // undefined\n * enumSize({ Active: 'active' }); // undefined\n */\nexport function enumSize(enumObj: unknown): number | undefined {\n if (!isBrandedEnum(enumObj)) {\n return undefined;\n }\n return enumObj[ENUM_VALUES].size;\n}\n"],"names":["enumSize","getEnumId","getEnumValues","isBrandedEnum","obj","ENUM_ID","ENUM_VALUES","Set","enumObj","undefined","Array","from","size"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;;;;CAKC;;;;;;;;;;;IAiHeA,QAAQ;eAARA;;IAjEAC,SAAS;eAATA;;IAmCAC,aAAa;eAAbA;;;uBA1ET;AAEP;;;;;CAKC,GACD,SAASC,cAAcC,GAAY;IACjC,OACEA,QAAQ,QACR,OAAOA,QAAQ,YACfC,cAAO,IAAID,OACXE,kBAAW,IAAIF,OACf,OAAO,AAACA,GAAsB,CAACC,cAAO,CAAC,KAAK,YAC5C,AAACD,GAAsB,CAACE,kBAAW,CAAC,YAAYC;AAEpD;AAsBO,SAASN,UAAUO,OAAgB;IACxC,IAAI,CAACL,cAAcK,UAAU;QAC3B,OAAOC;IACT;IACA,OAAOD,OAAO,CAACH,cAAO,CAAC;AACzB;AA8BO,SAASH,cAAcM,OAAgB;IAC5C,IAAI,CAACL,cAAcK,UAAU;QAC3B,OAAOC;IACT;IACA,OAAOC,MAAMC,IAAI,CAACH,OAAO,CAACF,kBAAW,CAAC;AACxC;AAyBO,SAASN,SAASQ,OAAgB;IACvC,IAAI,CAACL,cAAcK,UAAU;QAC3B,OAAOC;IACT;IACA,OAAOD,OAAO,CAACF,kBAAW,CAAC,CAACM,IAAI;AAClC"}
|