@effect/ai-openai 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 (51) hide show
  1. package/Generated/package.json +6 -0
  2. package/LICENSE +21 -0
  3. package/OpenAiClient/package.json +6 -0
  4. package/OpenAiCompletions/package.json +6 -0
  5. package/OpenAiConfig/package.json +6 -0
  6. package/OpenAiTokenizer/package.json +6 -0
  7. package/README.md +1 -0
  8. package/dist/cjs/Generated.js +2702 -0
  9. package/dist/cjs/Generated.js.map +1 -0
  10. package/dist/cjs/OpenAiClient.js +153 -0
  11. package/dist/cjs/OpenAiClient.js.map +1 -0
  12. package/dist/cjs/OpenAiCompletions.js +208 -0
  13. package/dist/cjs/OpenAiCompletions.js.map +1 -0
  14. package/dist/cjs/OpenAiConfig.js +26 -0
  15. package/dist/cjs/OpenAiConfig.js.map +1 -0
  16. package/dist/cjs/OpenAiTokenizer.js +50 -0
  17. package/dist/cjs/OpenAiTokenizer.js.map +1 -0
  18. package/dist/cjs/index.js +19 -0
  19. package/dist/cjs/index.js.map +1 -0
  20. package/dist/dts/Generated.d.ts +5759 -0
  21. package/dist/dts/Generated.d.ts.map +1 -0
  22. package/dist/dts/OpenAiClient.d.ts +113 -0
  23. package/dist/dts/OpenAiClient.d.ts.map +1 -0
  24. package/dist/dts/OpenAiCompletions.d.ts +19 -0
  25. package/dist/dts/OpenAiCompletions.d.ts.map +1 -0
  26. package/dist/dts/OpenAiConfig.d.ts +55 -0
  27. package/dist/dts/OpenAiConfig.d.ts.map +1 -0
  28. package/dist/dts/OpenAiTokenizer.d.ts +10 -0
  29. package/dist/dts/OpenAiTokenizer.d.ts.map +1 -0
  30. package/dist/dts/index.d.ts +21 -0
  31. package/dist/dts/index.d.ts.map +1 -0
  32. package/dist/esm/Generated.js +2493 -0
  33. package/dist/esm/Generated.js.map +1 -0
  34. package/dist/esm/OpenAiClient.js +139 -0
  35. package/dist/esm/OpenAiClient.js.map +1 -0
  36. package/dist/esm/OpenAiCompletions.js +197 -0
  37. package/dist/esm/OpenAiCompletions.js.map +1 -0
  38. package/dist/esm/OpenAiConfig.js +16 -0
  39. package/dist/esm/OpenAiConfig.js.map +1 -0
  40. package/dist/esm/OpenAiTokenizer.js +40 -0
  41. package/dist/esm/OpenAiTokenizer.js.map +1 -0
  42. package/dist/esm/index.js +21 -0
  43. package/dist/esm/index.js.map +1 -0
  44. package/dist/esm/package.json +4 -0
  45. package/package.json +80 -0
  46. package/src/Generated.ts +3936 -0
  47. package/src/OpenAiClient.ts +291 -0
  48. package/src/OpenAiCompletions.ts +260 -0
  49. package/src/OpenAiConfig.ts +31 -0
  50. package/src/OpenAiTokenizer.ts +59 -0
  51. package/src/index.ts +24 -0
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.layerCompletions = exports.layer = void 0;
7
+ var _AiError = require("@effect/ai/AiError");
8
+ var AiResponse = _interopRequireWildcard(require("@effect/ai/AiResponse"));
9
+ var AiRole = _interopRequireWildcard(require("@effect/ai/AiRole"));
10
+ var Completions = _interopRequireWildcard(require("@effect/ai/Completions"));
11
+ var Arr = _interopRequireWildcard(require("effect/Array"));
12
+ var Effect = _interopRequireWildcard(require("effect/Effect"));
13
+ var Layer = _interopRequireWildcard(require("effect/Layer"));
14
+ var Stream = _interopRequireWildcard(require("effect/Stream"));
15
+ var _OpenAiClient = require("./OpenAiClient.js");
16
+ var _OpenAiConfig = require("./OpenAiConfig.js");
17
+ var OpenAiTokenizer = _interopRequireWildcard(require("./OpenAiTokenizer.js"));
18
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
19
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
20
+ /**
21
+ * @since 1.0.0
22
+ */
23
+
24
+ const make = options => Effect.gen(function* () {
25
+ const client = yield* _OpenAiClient.OpenAiClient;
26
+ const config = yield* _OpenAiConfig.OpenAiConfig.getOrUndefined;
27
+ const makeRequest = ({
28
+ input,
29
+ required,
30
+ system,
31
+ tools
32
+ }) => Effect.map(Effect.context(), context => ({
33
+ model: options.model,
34
+ ...config,
35
+ ...context.unsafeMap.get(_OpenAiConfig.OpenAiConfig.key),
36
+ messages: makeMessages(input, system),
37
+ tools: tools.length > 0 ? tools.map(tool => ({
38
+ type: "function",
39
+ function: {
40
+ name: tool.name,
41
+ description: tool.description,
42
+ parameters: tool.parameters,
43
+ strict: true
44
+ }
45
+ })) : undefined,
46
+ tool_choice: tools.length > 0 ? typeof required === "boolean" ? required ? "required" : "auto" : {
47
+ type: "function",
48
+ function: {
49
+ name: required
50
+ }
51
+ } : undefined
52
+ }));
53
+ return yield* Completions.make({
54
+ create(options) {
55
+ return makeRequest(options).pipe(Effect.flatMap(client.client.createChatCompletion), Effect.catchAll(cause => Effect.fail(new _AiError.AiError({
56
+ module: "OpenAiCompletions",
57
+ method: "create",
58
+ description: "An error occurred",
59
+ cause
60
+ }))), Effect.flatMap(response => makeResponse(response, "create")));
61
+ },
62
+ stream(options) {
63
+ return makeRequest(options).pipe(Effect.map(client.stream), Stream.unwrap, Stream.catchAll(cause => Effect.fail(new _AiError.AiError({
64
+ module: "OpenAiCompletions",
65
+ method: "stream",
66
+ description: "An error occurred",
67
+ cause
68
+ }))), Stream.map(response => response.asAiResponse));
69
+ }
70
+ });
71
+ });
72
+ /**
73
+ * @since 1.0.0
74
+ * @category layers
75
+ */
76
+ const layerCompletions = options => Layer.effect(Completions.Completions, make(options));
77
+ /**
78
+ * @since 1.0.0
79
+ * @category layers
80
+ */
81
+ exports.layerCompletions = layerCompletions;
82
+ const layer = options => Layer.merge(layerCompletions(options), OpenAiTokenizer.layer(options));
83
+ exports.layer = layer;
84
+ const makeMessages = (input, system) => {
85
+ const messages = system._tag === "Some" ? [makeSystemMessage(system.value)] : [];
86
+ for (const message of input) {
87
+ // eslint-disable-next-line no-restricted-syntax
88
+ messages.push(...convertMessage(message));
89
+ }
90
+ return messages;
91
+ };
92
+ const formatRole = role => {
93
+ switch (role._tag) {
94
+ case "UserWithName":
95
+ return {
96
+ role: "user",
97
+ name: safeName(role.name)
98
+ };
99
+ case "User":
100
+ return {
101
+ role: "user"
102
+ };
103
+ case "Model":
104
+ return {
105
+ role: "assistant"
106
+ };
107
+ }
108
+ };
109
+ const convertMessage = message => {
110
+ const messages = [];
111
+ let parts = [];
112
+ let toolCalls = [];
113
+ function flushContent() {
114
+ if (parts.length === 0) return;
115
+ messages.push({
116
+ ...formatRole(message.role),
117
+ content: parts
118
+ });
119
+ parts = [];
120
+ }
121
+ function flushToolCalls() {
122
+ if (toolCalls.length === 0) return;
123
+ messages.push({
124
+ role: "assistant",
125
+ content: null,
126
+ tool_calls: toolCalls
127
+ });
128
+ toolCalls = [];
129
+ }
130
+ for (const part of message.parts) {
131
+ if (part._tag === "ToolCall") {
132
+ flushContent();
133
+ toolCalls.push({
134
+ id: part.id,
135
+ type: "function",
136
+ function: {
137
+ name: part.name,
138
+ arguments: JSON.stringify(part.params)
139
+ }
140
+ });
141
+ } else if (part._tag === "ToolCallResolved") {
142
+ flushContent();
143
+ flushToolCalls();
144
+ messages.push({
145
+ role: "tool",
146
+ tool_call_id: part.toolCallId,
147
+ content: JSON.stringify(part.value)
148
+ });
149
+ } else {
150
+ flushToolCalls();
151
+ parts.push(makeContentPart(part));
152
+ }
153
+ }
154
+ flushContent();
155
+ flushToolCalls();
156
+ return messages;
157
+ };
158
+ const makeContentPart = part => {
159
+ switch (part._tag) {
160
+ case "Image":
161
+ return {
162
+ type: "image_url",
163
+ image_url: {
164
+ url: part.asDataUri,
165
+ detail: part.quality
166
+ }
167
+ };
168
+ case "ImageUrl":
169
+ return {
170
+ type: "image_url",
171
+ image_url: {
172
+ url: part.url,
173
+ detail: part.quality
174
+ }
175
+ };
176
+ case "Text":
177
+ return {
178
+ type: "text",
179
+ text: part.content
180
+ };
181
+ }
182
+ };
183
+ const makeResponse = (response, method) => Arr.head(response.choices).pipe(Effect.mapError(() => new _AiError.AiError({
184
+ module: "OpenAiCompletions",
185
+ method,
186
+ description: "Could not get response"
187
+ })), Effect.flatMap(choice => {
188
+ const response = typeof choice.message.content === "string" ? AiResponse.AiResponse.fromText({
189
+ role: AiRole.model,
190
+ content: choice.message.content
191
+ }) : AiResponse.AiResponse.empty;
192
+ if (choice.message.tool_calls && choice.message.tool_calls.length > 0) {
193
+ return response.withToolCallsJson(choice.message.tool_calls.map(toolCall => ({
194
+ id: toolCall.id,
195
+ name: toolCall.function.name,
196
+ params: toolCall.function.arguments
197
+ })));
198
+ }
199
+ return Effect.succeed(response);
200
+ }));
201
+ const makeSystemMessage = content => {
202
+ return {
203
+ role: "system",
204
+ content
205
+ };
206
+ };
207
+ const safeName = name => name.replace(/[^a-zA-Z0-9_-]/g, "_").replace(/_+/, "_");
208
+ //# sourceMappingURL=OpenAiCompletions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenAiCompletions.js","names":["_AiError","require","AiResponse","_interopRequireWildcard","AiRole","Completions","Arr","Effect","Layer","Stream","_OpenAiClient","_OpenAiConfig","OpenAiTokenizer","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","make","options","gen","client","OpenAiClient","config","OpenAiConfig","getOrUndefined","makeRequest","input","required","system","tools","map","context","model","unsafeMap","key","messages","makeMessages","length","tool","type","function","name","description","parameters","strict","undefined","tool_choice","create","pipe","flatMap","createChatCompletion","catchAll","cause","fail","AiError","module","method","response","makeResponse","stream","unwrap","asAiResponse","layerCompletions","effect","exports","layer","merge","_tag","makeSystemMessage","value","message","push","convertMessage","formatRole","role","safeName","parts","toolCalls","flushContent","content","flushToolCalls","tool_calls","part","id","arguments","JSON","stringify","params","tool_call_id","toolCallId","makeContentPart","image_url","url","asDataUri","detail","quality","text","head","choices","mapError","choice","fromText","empty","withToolCallsJson","toolCall","succeed","replace"],"sources":["../../src/OpenAiCompletions.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.OpenAiConfig = void 0;
7
+ var Context = _interopRequireWildcard(require("effect/Context"));
8
+ var Effect = _interopRequireWildcard(require("effect/Effect"));
9
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
10
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
+ /**
12
+ * @since 1.0.0
13
+ */
14
+
15
+ /**
16
+ * @since 1.0.0
17
+ * @category tags
18
+ */
19
+ class OpenAiConfig extends /*#__PURE__*/Context.Tag("@effect/ai-openai/OpenAiConfig")() {
20
+ /**
21
+ * @since 1.0.0
22
+ */
23
+ static getOrUndefined = /*#__PURE__*/Effect.map( /*#__PURE__*/Effect.context(), context => context.unsafeMap.get(OpenAiConfig.key));
24
+ }
25
+ exports.OpenAiConfig = OpenAiConfig;
26
+ //# sourceMappingURL=OpenAiConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenAiConfig.js","names":["Context","_interopRequireWildcard","require","Effect","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","OpenAiConfig","Tag","getOrUndefined","map","context","unsafeMap","key"],"sources":["../../src/OpenAiConfig.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,OAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAF,uBAAA,CAAAC,OAAA;AAAuC,SAAAE,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAJ,wBAAAI,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAJvC;;;;AAQA;;;;AAIM,MAAOW,YAAa,sBAAQxB,OAAO,CAACyB,GAAG,CAAC,gCAAgC,CAAC,EAU5E;EACD;;;EAGA,OAAgBC,cAAc,gBAA2DvB,MAAM,CAACwB,GAAG,eACjGxB,MAAM,CAACyB,OAAO,EAAS,EACtBA,OAAO,IAAKA,OAAO,CAACC,SAAS,CAACjB,GAAG,CAACY,YAAY,CAACM,GAAG,CAAC,CACrD","ignoreList":[]}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.layer = void 0;
7
+ var _AiError = require("@effect/ai/AiError");
8
+ var Tokenizer = _interopRequireWildcard(require("@effect/ai/Tokenizer"));
9
+ var Arr = _interopRequireWildcard(require("effect/Array"));
10
+ var Chunk = _interopRequireWildcard(require("effect/Chunk"));
11
+ var Effect = _interopRequireWildcard(require("effect/Effect"));
12
+ var Layer = _interopRequireWildcard(require("effect/Layer"));
13
+ var Option = _interopRequireWildcard(require("effect/Option"));
14
+ var GptTokenizer = _interopRequireWildcard(require("gpt-tokenizer"));
15
+ var _OpenAiConfig = require("./OpenAiConfig.js");
16
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
17
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
+ /**
19
+ * @since 1.0.0
20
+ */
21
+
22
+ const make = options => Tokenizer.make({
23
+ tokenize(content) {
24
+ return Effect.tryMap(_OpenAiConfig.OpenAiConfig.getOrUndefined, {
25
+ try: localConfig => GptTokenizer.encodeChat(content.pipe(Chunk.toReadonlyArray, Arr.flatMap(message => message.parts.pipe(Arr.filterMap(part => {
26
+ if (part._tag === "Image" || part._tag === "ImageUrl") {
27
+ return Option.none();
28
+ }
29
+ return Option.some({
30
+ role: message.role.kind === "user" ? "user" : "assistant",
31
+ name: message.role._tag === "UserWithName" ? message.role.name : undefined,
32
+ content: part._tag === "Text" ? part.content : JSON.stringify(part._tag === "ToolCall" ? part.params : part.value)
33
+ });
34
+ })))), localConfig?.model ?? options.model),
35
+ catch: cause => new _AiError.AiError({
36
+ module: "OpenAiCompletions",
37
+ method: "tokenize",
38
+ description: "Could not tokenize",
39
+ cause
40
+ })
41
+ });
42
+ }
43
+ });
44
+ /**
45
+ * @since 1.0.0
46
+ * @category layers
47
+ */
48
+ const layer = options => Layer.succeed(Tokenizer.Tokenizer, make(options));
49
+ exports.layer = layer;
50
+ //# sourceMappingURL=OpenAiTokenizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenAiTokenizer.js","names":["_AiError","require","Tokenizer","_interopRequireWildcard","Arr","Chunk","Effect","Layer","Option","GptTokenizer","_OpenAiConfig","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","make","options","tokenize","content","tryMap","OpenAiConfig","getOrUndefined","try","localConfig","encodeChat","pipe","toReadonlyArray","flatMap","message","parts","filterMap","part","_tag","none","some","role","kind","name","undefined","JSON","stringify","params","value","model","catch","cause","AiError","module","method","description","layer","succeed","exports"],"sources":["../../src/OpenAiTokenizer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.OpenAiTokenizer = exports.OpenAiConfig = exports.OpenAiCompletions = exports.OpenAiClient = exports.Generated = void 0;
7
+ var _Generated = _interopRequireWildcard(require("./Generated.js"));
8
+ exports.Generated = _Generated;
9
+ var _OpenAiClient = _interopRequireWildcard(require("./OpenAiClient.js"));
10
+ exports.OpenAiClient = _OpenAiClient;
11
+ var _OpenAiCompletions = _interopRequireWildcard(require("./OpenAiCompletions.js"));
12
+ exports.OpenAiCompletions = _OpenAiCompletions;
13
+ var _OpenAiConfig = _interopRequireWildcard(require("./OpenAiConfig.js"));
14
+ exports.OpenAiConfig = _OpenAiConfig;
15
+ var _OpenAiTokenizer = _interopRequireWildcard(require("./OpenAiTokenizer.js"));
16
+ exports.OpenAiTokenizer = _OpenAiTokenizer;
17
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
18
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"","ignoreList":[]}