@autobe/ui 0.22.1 → 0.23.1

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 (128) hide show
  1. package/lib/components/AutoBeChatMain.d.ts +6 -4
  2. package/lib/components/AutoBeChatMain.js +204 -56
  3. package/lib/components/AutoBeChatMain.js.map +1 -1
  4. package/lib/components/AutoBeChatSidebar.d.ts +36 -0
  5. package/lib/components/AutoBeChatSidebar.js +227 -0
  6. package/lib/components/AutoBeChatSidebar.js.map +1 -0
  7. package/lib/components/AutoBeConfigButton.d.ts +15 -0
  8. package/lib/components/AutoBeConfigButton.js +33 -0
  9. package/lib/components/AutoBeConfigButton.js.map +1 -0
  10. package/lib/components/AutoBeConfigModal.d.ts +59 -0
  11. package/lib/components/AutoBeConfigModal.js +294 -0
  12. package/lib/components/AutoBeConfigModal.js.map +1 -0
  13. package/lib/components/AutoBeStatusButton.d.ts +12 -0
  14. package/lib/components/AutoBeStatusButton.js +29 -0
  15. package/lib/components/AutoBeStatusButton.js.map +1 -0
  16. package/lib/components/AutoBeStatusModal.js +35 -15
  17. package/lib/components/AutoBeStatusModal.js.map +1 -1
  18. package/lib/components/common/ActionButton.d.ts +16 -0
  19. package/lib/components/common/ActionButton.js +115 -0
  20. package/lib/components/common/ActionButton.js.map +1 -0
  21. package/lib/components/common/ActionButtonGroup.d.ts +13 -0
  22. package/lib/components/common/ActionButtonGroup.js +37 -0
  23. package/lib/components/common/ActionButtonGroup.js.map +1 -0
  24. package/lib/components/common/AutoBeConfigInput.d.ts +24 -0
  25. package/lib/components/common/AutoBeConfigInput.js +90 -0
  26. package/lib/components/common/AutoBeConfigInput.js.map +1 -0
  27. package/lib/components/common/CompactSessionIndicator.d.ts +16 -0
  28. package/lib/components/common/CompactSessionIndicator.js +46 -0
  29. package/lib/components/common/CompactSessionIndicator.js.map +1 -0
  30. package/lib/components/common/CompactSessionList.d.ts +22 -0
  31. package/lib/components/common/CompactSessionList.js +40 -0
  32. package/lib/components/common/CompactSessionList.js.map +1 -0
  33. package/lib/components/common/index.d.ts +6 -0
  34. package/lib/components/common/index.js +6 -0
  35. package/lib/components/common/index.js.map +1 -1
  36. package/lib/components/events/AutoBeEventGroupMovie.d.ts +6 -0
  37. package/lib/components/events/AutoBeEventGroupMovie.js +11 -0
  38. package/lib/components/events/AutoBeEventGroupMovie.js.map +1 -0
  39. package/lib/components/events/AutoBeEventMovie.js +5 -0
  40. package/lib/components/events/AutoBeEventMovie.js.map +1 -1
  41. package/lib/components/events/AutoBeValidateEventMovie.js +1 -3
  42. package/lib/components/events/AutoBeValidateEventMovie.js.map +1 -1
  43. package/lib/components/events/common/CollapsibleEventGroup.d.ts +1 -1
  44. package/lib/components/events/groups/ValidateEventGroup.d.ts +1 -1
  45. package/lib/components/events/utils/eventGrouper.js.map +1 -1
  46. package/lib/components/index.d.ts +6 -0
  47. package/lib/components/index.js +7 -0
  48. package/lib/components/index.js.map +1 -1
  49. package/lib/components/upload/AutoBeChatUploadBox.js +75 -33
  50. package/lib/components/upload/AutoBeChatUploadBox.js.map +1 -1
  51. package/lib/context/AutoBeAgentContext.d.ts +22 -11
  52. package/lib/context/AutoBeAgentContext.js +127 -11
  53. package/lib/context/AutoBeAgentContext.js.map +1 -1
  54. package/lib/context/AutoBeAgentSessionList.d.ts +12 -0
  55. package/lib/context/AutoBeAgentSessionList.js +37 -0
  56. package/lib/context/AutoBeAgentSessionList.js.map +1 -0
  57. package/lib/context/SearchParamsContext.d.ts +10 -0
  58. package/lib/context/SearchParamsContext.js +29 -0
  59. package/lib/context/SearchParamsContext.js.map +1 -0
  60. package/lib/index.d.ts +4 -0
  61. package/lib/index.js +4 -0
  62. package/lib/index.js.map +1 -1
  63. package/lib/structure/AutoBeListener.d.ts +6 -0
  64. package/lib/structure/AutoBeListener.js +21 -4
  65. package/lib/structure/AutoBeListener.js.map +1 -1
  66. package/lib/structure/IAutoBeAgentSessionStorageStrategy.d.ts +35 -0
  67. package/lib/structure/IAutoBeAgentSessionStorageStrategy.js +30 -0
  68. package/lib/structure/IAutoBeAgentSessionStorageStrategy.js.map +1 -0
  69. package/lib/structure/index.d.ts +1 -0
  70. package/lib/structure/index.js +1 -0
  71. package/lib/structure/index.js.map +1 -1
  72. package/lib/types/config.d.ts +26 -0
  73. package/lib/types/config.js +14 -0
  74. package/lib/types/config.js.map +1 -0
  75. package/lib/types/index.d.ts +1 -0
  76. package/lib/types/index.js +18 -0
  77. package/lib/types/index.js.map +1 -0
  78. package/lib/utils/__tests__/crypto.test.d.ts +1 -0
  79. package/lib/utils/__tests__/crypto.test.js +222 -0
  80. package/lib/utils/__tests__/crypto.test.js.map +1 -0
  81. package/lib/utils/__tests__/storage.test.d.ts +1 -0
  82. package/lib/utils/__tests__/storage.test.js +174 -0
  83. package/lib/utils/__tests__/storage.test.js.map +1 -0
  84. package/lib/utils/crypto.d.ts +18 -0
  85. package/lib/utils/crypto.js +84 -0
  86. package/lib/utils/crypto.js.map +1 -0
  87. package/lib/utils/index.d.ts +2 -0
  88. package/lib/utils/index.js +2 -0
  89. package/lib/utils/index.js.map +1 -1
  90. package/lib/utils/storage.d.ts +29 -0
  91. package/lib/utils/storage.js +93 -0
  92. package/lib/utils/storage.js.map +1 -0
  93. package/package.json +11 -3
  94. package/src/components/AutoBeChatMain.tsx +329 -131
  95. package/src/components/AutoBeChatSidebar.tsx +414 -0
  96. package/src/components/AutoBeConfigButton.tsx +83 -0
  97. package/src/components/AutoBeConfigModal.tsx +444 -0
  98. package/src/components/AutoBeStatusButton.tsx +75 -0
  99. package/src/components/AutoBeStatusModal.tsx +55 -54
  100. package/src/components/common/ActionButton.tsx +205 -0
  101. package/src/components/common/ActionButtonGroup.tsx +80 -0
  102. package/src/components/common/AutoBeConfigInput.tsx +185 -0
  103. package/src/components/common/CompactSessionIndicator.tsx +73 -0
  104. package/src/components/common/CompactSessionList.tsx +82 -0
  105. package/src/components/common/index.ts +6 -0
  106. package/src/components/events/AutoBeEventGroupMovie.tsx +18 -0
  107. package/src/components/events/AutoBeEventMovie.tsx +5 -0
  108. package/src/components/events/AutoBeValidateEventMovie.tsx +7 -9
  109. package/src/components/events/common/CollapsibleEventGroup.tsx +1 -1
  110. package/src/components/events/groups/ValidateEventGroup.tsx +1 -1
  111. package/src/components/events/utils/eventGrouper.tsx +2 -1
  112. package/src/components/index.ts +6 -0
  113. package/src/components/upload/AutoBeChatUploadBox.tsx +94 -44
  114. package/src/context/AutoBeAgentContext.tsx +201 -22
  115. package/src/context/AutoBeAgentSessionList.tsx +58 -0
  116. package/src/context/SearchParamsContext.tsx +49 -0
  117. package/src/index.ts +4 -0
  118. package/src/structure/AutoBeListener.ts +32 -6
  119. package/src/structure/IAutoBeAgentSessionStorageStrategy.ts +87 -0
  120. package/src/structure/index.ts +1 -0
  121. package/src/types/config.ts +44 -0
  122. package/src/types/index.ts +1 -0
  123. package/src/utils/__tests__/crypto.test.ts +286 -0
  124. package/src/utils/__tests__/storage.test.ts +229 -0
  125. package/src/utils/crypto.ts +95 -0
  126. package/src/utils/index.ts +2 -0
  127. package/src/utils/storage.ts +96 -0
  128. package/vitest.config.ts +15 -0
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const storage_1 = require("../storage");
5
+ // Mock sessionStorage for testing
6
+ const mockSessionStorage = {
7
+ store: new Map(),
8
+ getItem: vitest_1.vi.fn((key) => mockSessionStorage.store.get(key) || null),
9
+ setItem: vitest_1.vi.fn((key, value) => {
10
+ mockSessionStorage.store.set(key, value);
11
+ }),
12
+ removeItem: vitest_1.vi.fn((key) => {
13
+ mockSessionStorage.store.delete(key);
14
+ }),
15
+ clear: vitest_1.vi.fn(() => {
16
+ mockSessionStorage.store.clear();
17
+ }),
18
+ };
19
+ // Mock global sessionStorage
20
+ Object.defineProperty(global, "sessionStorage", {
21
+ value: mockSessionStorage,
22
+ writable: true,
23
+ });
24
+ Object.defineProperty(global, "window", {
25
+ value: { sessionStorage: mockSessionStorage },
26
+ writable: true,
27
+ });
28
+ (0, vitest_1.describe)("Storage Utils", () => {
29
+ (0, vitest_1.beforeEach)(() => {
30
+ mockSessionStorage.store.clear();
31
+ vitest_1.vi.clearAllMocks();
32
+ });
33
+ (0, vitest_1.describe)("encrypted sessionStorage operations", () => {
34
+ (0, vitest_1.test)("should store and retrieve encrypted data", () => {
35
+ const key = "test_key";
36
+ const value = "sk-test123456789";
37
+ (0, storage_1.setEncryptedSessionStorage)(key, value);
38
+ const retrieved = (0, storage_1.getEncryptedSessionStorage)(key);
39
+ (0, vitest_1.expect)(retrieved).toBe(value);
40
+ (0, vitest_1.expect)(mockSessionStorage.setItem).toHaveBeenCalledWith(key, vitest_1.expect.any(String));
41
+ (0, vitest_1.expect)(mockSessionStorage.getItem).toHaveBeenCalledWith(key);
42
+ });
43
+ (0, vitest_1.test)("should store encrypted value, not plain text", () => {
44
+ const key = "test_encrypted";
45
+ const value = "secret-api-key";
46
+ (0, storage_1.setEncryptedSessionStorage)(key, value);
47
+ const storedValue = mockSessionStorage.store.get(key);
48
+ (0, vitest_1.expect)(storedValue).not.toBe(value); // Should not store plain text
49
+ (0, vitest_1.expect)(storedValue).toBeTruthy(); // Should store something
50
+ (0, vitest_1.expect)(storedValue.length).toBeGreaterThan(0); // Should have content
51
+ });
52
+ (0, vitest_1.test)("should handle empty values correctly", () => {
53
+ const key = "empty_test";
54
+ const value = "";
55
+ (0, storage_1.setEncryptedSessionStorage)(key, value);
56
+ const retrieved = (0, storage_1.getEncryptedSessionStorage)(key);
57
+ (0, vitest_1.expect)(retrieved).toBe("");
58
+ });
59
+ (0, vitest_1.test)("should return empty string for non-existent keys", () => {
60
+ const result = (0, storage_1.getEncryptedSessionStorage)("non_existent_key");
61
+ (0, vitest_1.expect)(result).toBe("");
62
+ });
63
+ (0, vitest_1.test)("should remove encrypted data", () => {
64
+ const key = "test_remove";
65
+ const value = "test-value";
66
+ (0, storage_1.setEncryptedSessionStorage)(key, value);
67
+ (0, vitest_1.expect)((0, storage_1.getEncryptedSessionStorage)(key)).toBe(value);
68
+ (0, storage_1.removeEncryptedSessionStorage)(key);
69
+ (0, vitest_1.expect)((0, storage_1.getEncryptedSessionStorage)(key)).toBe("");
70
+ (0, vitest_1.expect)(mockSessionStorage.removeItem).toHaveBeenCalledWith(key);
71
+ });
72
+ (0, vitest_1.test)("should check if encrypted data exists", () => {
73
+ const key = "existence_test";
74
+ const value = "test-value";
75
+ // Initially should not exist
76
+ (0, vitest_1.expect)((0, storage_1.hasEncryptedSessionStorage)(key)).toBe(false);
77
+ // After storing should exist
78
+ (0, storage_1.setEncryptedSessionStorage)(key, value);
79
+ (0, vitest_1.expect)((0, storage_1.hasEncryptedSessionStorage)(key)).toBe(true);
80
+ // After removing should not exist
81
+ (0, storage_1.removeEncryptedSessionStorage)(key);
82
+ (0, vitest_1.expect)((0, storage_1.hasEncryptedSessionStorage)(key)).toBe(false);
83
+ });
84
+ (0, vitest_1.test)("should handle storage errors gracefully", () => {
85
+ const originalSetItem = mockSessionStorage.setItem;
86
+ mockSessionStorage.setItem = vitest_1.vi.fn(() => {
87
+ throw new Error("Storage quota exceeded");
88
+ });
89
+ // Should throw error with meaningful message
90
+ (0, vitest_1.expect)(() => {
91
+ (0, storage_1.setEncryptedSessionStorage)("test", "value");
92
+ }).toThrow('Failed to store encrypted data for key "test": Storage quota exceeded');
93
+ mockSessionStorage.setItem = originalSetItem; // Restore
94
+ });
95
+ (0, vitest_1.test)("should clear all sessionStorage data", () => {
96
+ // Mock setItem to not throw for this test
97
+ const originalSetItem = mockSessionStorage.setItem;
98
+ mockSessionStorage.setItem = vitest_1.vi.fn((key, value) => {
99
+ mockSessionStorage.store.set(key, value);
100
+ });
101
+ // Store some test data
102
+ (0, storage_1.setEncryptedSessionStorage)("key1", "value1");
103
+ (0, storage_1.setEncryptedSessionStorage)("key2", "value2");
104
+ (0, vitest_1.expect)((0, storage_1.hasEncryptedSessionStorage)("key1")).toBe(true);
105
+ (0, vitest_1.expect)((0, storage_1.hasEncryptedSessionStorage)("key2")).toBe(true);
106
+ // Clear all
107
+ (0, storage_1.clearEncryptedSessionStorage)();
108
+ (0, vitest_1.expect)((0, storage_1.hasEncryptedSessionStorage)("key1")).toBe(false);
109
+ (0, vitest_1.expect)((0, storage_1.hasEncryptedSessionStorage)("key2")).toBe(false);
110
+ (0, vitest_1.expect)(mockSessionStorage.clear).toHaveBeenCalled();
111
+ mockSessionStorage.setItem = originalSetItem; // Restore
112
+ });
113
+ });
114
+ (0, vitest_1.describe)("Unicode and special data", () => {
115
+ const testCases = [
116
+ { key: "korean", value: "안녕하세요" },
117
+ { key: "emoji", value: "🚀🔐💎✨" },
118
+ { key: "mixed", value: "Hello 안녕 🚀 World!" },
119
+ { key: "api_key", value: "sk-proj-1234567890abcdefghijklmnop" },
120
+ { key: "json", value: '{"name":"test","value":123}' },
121
+ { key: "multiline", value: "line1\nline2\nline3" },
122
+ ];
123
+ vitest_1.test.each(testCases)("should handle $key: $value correctly", ({ key, value }) => {
124
+ // Mock setItem to not throw for unicode tests
125
+ const originalSetItem = mockSessionStorage.setItem;
126
+ mockSessionStorage.setItem = vitest_1.vi.fn((key, value) => {
127
+ mockSessionStorage.store.set(key, value);
128
+ });
129
+ (0, storage_1.setEncryptedSessionStorage)(key, value);
130
+ const retrieved = (0, storage_1.getEncryptedSessionStorage)(key);
131
+ (0, vitest_1.expect)(retrieved).toBe(value);
132
+ (0, vitest_1.expect)((0, storage_1.hasEncryptedSessionStorage)(key)).toBe(true);
133
+ // Verify it's actually encrypted in storage
134
+ const rawStored = mockSessionStorage.store.get(key);
135
+ (0, vitest_1.expect)(rawStored).not.toBe(value);
136
+ (0, vitest_1.expect)(rawStored).toBeTruthy();
137
+ mockSessionStorage.setItem = originalSetItem; // Restore
138
+ });
139
+ });
140
+ (0, vitest_1.describe)("Edge cases", () => {
141
+ (0, vitest_1.test)("should handle null/undefined gracefully", () => {
142
+ // These should not throw
143
+ (0, vitest_1.expect)(() => (0, storage_1.getEncryptedSessionStorage)("")).not.toThrow();
144
+ (0, vitest_1.expect)(() => (0, storage_1.hasEncryptedSessionStorage)("")).not.toThrow();
145
+ (0, vitest_1.expect)(() => (0, storage_1.removeEncryptedSessionStorage)("")).not.toThrow();
146
+ });
147
+ (0, vitest_1.test)("should handle SSR environment (no window)", () => {
148
+ const originalWindow = global.window;
149
+ // @ts-ignore
150
+ delete global.window;
151
+ // Should not throw and return safe defaults
152
+ (0, vitest_1.expect)(() => {
153
+ (0, storage_1.setEncryptedSessionStorage)("test", "value");
154
+ const result = (0, storage_1.getEncryptedSessionStorage)("test");
155
+ (0, vitest_1.expect)(result).toBe("");
156
+ const exists = (0, storage_1.hasEncryptedSessionStorage)("test");
157
+ (0, vitest_1.expect)(exists).toBe(false);
158
+ (0, storage_1.removeEncryptedSessionStorage)("test");
159
+ (0, storage_1.clearEncryptedSessionStorage)();
160
+ }).not.toThrow();
161
+ global.window = originalWindow; // Restore
162
+ });
163
+ (0, vitest_1.test)("should handle corrupted storage data", () => {
164
+ const key = "corrupted_test";
165
+ // Manually put invalid encrypted data
166
+ mockSessionStorage.store.set(key, "invalid-base64-data!");
167
+ // Should throw error on corrupted data
168
+ (0, vitest_1.expect)(() => {
169
+ (0, storage_1.getEncryptedSessionStorage)(key);
170
+ }).toThrow('Failed to retrieve encrypted data for key "corrupted_test"');
171
+ });
172
+ });
173
+ });
174
+ //# sourceMappingURL=storage.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/storage.test.ts"],"names":[],"mappings":";;AAAA,mCAAgE;AAEhE,wCAMoB;AAEpB,kCAAkC;AAClC,MAAM,kBAAkB,GAAG;IACzB,KAAK,EAAE,IAAI,GAAG,EAAkB;IAChC,OAAO,EAAE,WAAE,CAAC,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IAC1E,OAAO,EAAE,WAAE,CAAC,EAAE,CAAC,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE;QAC5C,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC;IACF,UAAU,EAAE,WAAE,CAAC,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE;QAChC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC,CAAC;IACF,KAAK,EAAE,WAAE,CAAC,EAAE,CAAC,GAAG,EAAE;QAChB,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC,CAAC;CACH,CAAC;AAEF,6BAA6B;AAC7B,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE;IAC9C,KAAK,EAAE,kBAAkB;IACzB,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC;AAEH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE;IACtC,KAAK,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;IAC7C,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAA,mBAAU,EAAC,GAAG,EAAE;QACd,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjC,WAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,qCAAqC,EAAE,GAAG,EAAE;QACnD,IAAA,aAAI,EAAC,0CAA0C,EAAE,GAAG,EAAE;YACpD,MAAM,GAAG,GAAG,UAAU,CAAC;YACvB,MAAM,KAAK,GAAG,kBAAkB,CAAC;YAEjC,IAAA,oCAA0B,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvC,MAAM,SAAS,GAAG,IAAA,oCAA0B,EAAC,GAAG,CAAC,CAAC;YAElD,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAA,eAAM,EAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,oBAAoB,CACrD,GAAG,EACH,eAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CACnB,CAAC;YACF,IAAA,eAAM,EAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,IAAA,aAAI,EAAC,8CAA8C,EAAE,GAAG,EAAE;YACxD,MAAM,GAAG,GAAG,gBAAgB,CAAC;YAC7B,MAAM,KAAK,GAAG,gBAAgB,CAAC;YAE/B,IAAA,oCAA0B,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvC,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEtD,IAAA,eAAM,EAAC,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,8BAA8B;YACnE,IAAA,eAAM,EAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,yBAAyB;YAC3D,IAAA,eAAM,EAAC,WAAY,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB;QACxE,CAAC,CAAC,CAAC;QAEH,IAAA,aAAI,EAAC,sCAAsC,EAAE,GAAG,EAAE;YAChD,MAAM,GAAG,GAAG,YAAY,CAAC;YACzB,MAAM,KAAK,GAAG,EAAE,CAAC;YAEjB,IAAA,oCAA0B,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvC,MAAM,SAAS,GAAG,IAAA,oCAA0B,EAAC,GAAG,CAAC,CAAC;YAElD,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,IAAA,aAAI,EAAC,kDAAkD,EAAE,GAAG,EAAE;YAC5D,MAAM,MAAM,GAAG,IAAA,oCAA0B,EAAC,kBAAkB,CAAC,CAAC;YAC9D,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,IAAA,aAAI,EAAC,8BAA8B,EAAE,GAAG,EAAE;YACxC,MAAM,GAAG,GAAG,aAAa,CAAC;YAC1B,MAAM,KAAK,GAAG,YAAY,CAAC;YAE3B,IAAA,oCAA0B,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvC,IAAA,eAAM,EAAC,IAAA,oCAA0B,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEpD,IAAA,uCAA6B,EAAC,GAAG,CAAC,CAAC;YACnC,IAAA,eAAM,EAAC,IAAA,oCAA0B,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjD,IAAA,eAAM,EAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,IAAA,aAAI,EAAC,uCAAuC,EAAE,GAAG,EAAE;YACjD,MAAM,GAAG,GAAG,gBAAgB,CAAC;YAC7B,MAAM,KAAK,GAAG,YAAY,CAAC;YAE3B,6BAA6B;YAC7B,IAAA,eAAM,EAAC,IAAA,oCAA0B,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEpD,6BAA6B;YAC7B,IAAA,oCAA0B,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvC,IAAA,eAAM,EAAC,IAAA,oCAA0B,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnD,kCAAkC;YAClC,IAAA,uCAA6B,EAAC,GAAG,CAAC,CAAC;YACnC,IAAA,eAAM,EAAC,IAAA,oCAA0B,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,IAAA,aAAI,EAAC,yCAAyC,EAAE,GAAG,EAAE;YACnD,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC;YACnD,kBAAkB,CAAC,OAAO,GAAG,WAAE,CAAC,EAAE,CAAC,GAAG,EAAE;gBACtC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;YAEH,6CAA6C;YAC7C,IAAA,eAAM,EAAC,GAAG,EAAE;gBACV,IAAA,oCAA0B,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC,OAAO,CACR,uEAAuE,CACxE,CAAC;YAEF,kBAAkB,CAAC,OAAO,GAAG,eAAe,CAAC,CAAC,UAAU;QAC1D,CAAC,CAAC,CAAC;QAEH,IAAA,aAAI,EAAC,sCAAsC,EAAE,GAAG,EAAE;YAChD,0CAA0C;YAC1C,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC;YACnD,kBAAkB,CAAC,OAAO,GAAG,WAAE,CAAC,EAAE,CAAC,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE;gBAChE,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YAEH,uBAAuB;YACvB,IAAA,oCAA0B,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC7C,IAAA,oCAA0B,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAE7C,IAAA,eAAM,EAAC,IAAA,oCAA0B,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,IAAA,eAAM,EAAC,IAAA,oCAA0B,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEtD,YAAY;YACZ,IAAA,sCAA4B,GAAE,CAAC;YAE/B,IAAA,eAAM,EAAC,IAAA,oCAA0B,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvD,IAAA,eAAM,EAAC,IAAA,oCAA0B,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvD,IAAA,eAAM,EAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAEpD,kBAAkB,CAAC,OAAO,GAAG,eAAe,CAAC,CAAC,UAAU;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,MAAM,SAAS,GAAG;YAChB,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;YACjC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE;YAClC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE;YAC7C,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,oCAAoC,EAAE;YAC/D,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,6BAA6B,EAAE;YACrD,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;SACnD,CAAC;QAEF,aAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAClB,sCAAsC,EACtC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YACjB,8CAA8C;YAC9C,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC;YACnD,kBAAkB,CAAC,OAAO,GAAG,WAAE,CAAC,EAAE,CAAC,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE;gBAChE,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YAEH,IAAA,oCAA0B,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvC,MAAM,SAAS,GAAG,IAAA,oCAA0B,EAAC,GAAG,CAAC,CAAC;YAElD,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAA,eAAM,EAAC,IAAA,oCAA0B,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnD,4CAA4C;YAC5C,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpD,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;YAE/B,kBAAkB,CAAC,OAAO,GAAG,eAAe,CAAC,CAAC,UAAU;QAC1D,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,IAAA,aAAI,EAAC,yCAAyC,EAAE,GAAG,EAAE;YACnD,yBAAyB;YACzB,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAA,oCAA0B,EAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC3D,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAA,oCAA0B,EAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC3D,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAA,uCAA6B,EAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,IAAA,aAAI,EAAC,2CAA2C,EAAE,GAAG,EAAE;YACrD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;YACrC,aAAa;YACb,OAAO,MAAM,CAAC,MAAM,CAAC;YAErB,4CAA4C;YAC5C,IAAA,eAAM,EAAC,GAAG,EAAE;gBACV,IAAA,oCAA0B,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC5C,MAAM,MAAM,GAAG,IAAA,oCAA0B,EAAC,MAAM,CAAC,CAAC;gBAClD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,MAAM,GAAG,IAAA,oCAA0B,EAAC,MAAM,CAAC,CAAC;gBAClD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC3B,IAAA,uCAA6B,EAAC,MAAM,CAAC,CAAC;gBACtC,IAAA,sCAA4B,GAAE,CAAC;YACjC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAEjB,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,UAAU;QAC5C,CAAC,CAAC,CAAC;QAEH,IAAA,aAAI,EAAC,sCAAsC,EAAE,GAAG,EAAE;YAChD,MAAM,GAAG,GAAG,gBAAgB,CAAC;YAE7B,sCAAsC;YACtC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;YAE1D,uCAAuC;YACvC,IAAA,eAAM,EAAC,GAAG,EAAE;gBACV,IAAA,oCAA0B,EAAC,GAAG,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC,OAAO,CAAC,4DAA4D,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Simple and reliable encryption utilities using browser built-in functions
3
+ * Uses TextEncoder/TextDecoder for proper Unicode support + XOR + Base64
4
+ */
5
+ /**
6
+ * Simple encrypt using TextEncoder for Unicode safety
7
+ *
8
+ * @param text - Text to encrypt
9
+ * @returns Encrypted base64 string
10
+ */
11
+ export declare const encrypt: (text: string) => string;
12
+ /**
13
+ * Simple decrypt using TextDecoder for Unicode safety
14
+ *
15
+ * @param encryptedText - Base64 encrypted string
16
+ * @returns Decrypted plain text
17
+ */
18
+ export declare const decrypt: (encryptedText: string) => string;
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ /**
3
+ * Simple and reliable encryption utilities using browser built-in functions
4
+ * Uses TextEncoder/TextDecoder for proper Unicode support + XOR + Base64
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.decrypt = exports.encrypt = void 0;
8
+ const ENCRYPTION_KEY = "AutoBE_Secret_2024_v3.0_Unicode"; // Unicode-safe key
9
+ /**
10
+ * Simple encrypt using TextEncoder for Unicode safety
11
+ *
12
+ * @param text - Text to encrypt
13
+ * @returns Encrypted base64 string
14
+ */
15
+ const encrypt = (text) => {
16
+ if (!text)
17
+ return "";
18
+ try {
19
+ // Use TextEncoder for proper Unicode → UTF-8 bytes conversion
20
+ const encoder = new TextEncoder();
21
+ const textBytes = encoder.encode(text);
22
+ // Generate simple salt
23
+ const salt = Math.random().toString(36).substring(2, 10);
24
+ const keyBytes = encoder.encode(ENCRYPTION_KEY + salt);
25
+ // XOR encryption on bytes level
26
+ const encryptedBytes = new Uint8Array(textBytes.length);
27
+ for (let i = 0; i < textBytes.length; i++) {
28
+ encryptedBytes[i] = textBytes[i] ^ keyBytes[i % keyBytes.length];
29
+ }
30
+ // Convert to hex string for safe concatenation
31
+ const encryptedHex = Array.from(encryptedBytes)
32
+ .map((b) => b.toString(16).padStart(2, "0"))
33
+ .join("");
34
+ // Combine salt + encrypted hex
35
+ const combined = salt + ":" + encryptedHex;
36
+ // Base64 encode the final result (handle Unicode properly)
37
+ const result = btoa(unescape(encodeURIComponent(combined)));
38
+ return result;
39
+ }
40
+ catch (error) {
41
+ throw new Error(`Encryption failed: ${error instanceof Error ? error.message : String(error)}`);
42
+ }
43
+ };
44
+ exports.encrypt = encrypt;
45
+ /**
46
+ * Simple decrypt using TextDecoder for Unicode safety
47
+ *
48
+ * @param encryptedText - Base64 encrypted string
49
+ * @returns Decrypted plain text
50
+ */
51
+ const decrypt = (encryptedText) => {
52
+ var _a;
53
+ if (!encryptedText)
54
+ return "";
55
+ try {
56
+ // Base64 decode (handle Unicode properly)
57
+ const combined = decodeURIComponent(escape(atob(encryptedText)));
58
+ const parts = combined.split(":");
59
+ if (parts.length !== 2) {
60
+ throw new Error("Invalid encrypted format: expected salt:data format");
61
+ }
62
+ const salt = parts[0];
63
+ const encryptedHex = parts[1];
64
+ // Convert hex back to bytes
65
+ const encryptedBytes = new Uint8Array(((_a = encryptedHex.match(/.{2}/g)) === null || _a === void 0 ? void 0 : _a.map((hex) => parseInt(hex, 16))) || []);
66
+ // Recreate key
67
+ const encoder = new TextEncoder();
68
+ const keyBytes = encoder.encode(ENCRYPTION_KEY + salt);
69
+ // XOR decryption
70
+ const decryptedBytes = new Uint8Array(encryptedBytes.length);
71
+ for (let i = 0; i < encryptedBytes.length; i++) {
72
+ decryptedBytes[i] = encryptedBytes[i] ^ keyBytes[i % keyBytes.length];
73
+ }
74
+ // Use TextDecoder for proper UTF-8 → Unicode conversion
75
+ const decoder = new TextDecoder();
76
+ const result = decoder.decode(decryptedBytes);
77
+ return result;
78
+ }
79
+ catch (error) {
80
+ throw new Error(`Decryption failed: ${error instanceof Error ? error.message : String(error)}`);
81
+ }
82
+ };
83
+ exports.decrypt = decrypt;
84
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/utils/crypto.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  export * from "./AutoBeFileUploader";
2
2
  export * from "./AutoBeVoiceRecorder";
3
3
  export * from "./time";
4
+ export * from "./crypto";
5
+ export * from "./storage";
4
6
  export * from "./number";
@@ -17,5 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./AutoBeFileUploader"), exports);
18
18
  __exportStar(require("./AutoBeVoiceRecorder"), exports);
19
19
  __exportStar(require("./time"), exports);
20
+ __exportStar(require("./crypto"), exports);
21
+ __exportStar(require("./storage"), exports);
20
22
  __exportStar(require("./number"), exports);
21
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,wDAAsC;AACtC,yCAAuB;AACvB,2CAAyB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,wDAAsC;AACtC,yCAAuB;AACvB,2CAAyB;AACzB,4CAA0B;AAC1B,2CAAyB"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Safely store encrypted data in sessionStorage
3
+ *
4
+ * @param key - Storage key
5
+ * @param value - Plain text value to encrypt and store
6
+ */
7
+ export declare const setEncryptedSessionStorage: (key: string, value: string) => void;
8
+ /**
9
+ * Safely retrieve and decrypt data from sessionStorage
10
+ *
11
+ * @param key - Storage key
12
+ * @returns Decrypted plain text value
13
+ */
14
+ export declare const getEncryptedSessionStorage: (key: string) => string;
15
+ /**
16
+ * Remove encrypted data from sessionStorage
17
+ *
18
+ * @param key - Storage key
19
+ */
20
+ export declare const removeEncryptedSessionStorage: (key: string) => void;
21
+ /**
22
+ * Check if encrypted data exists in sessionStorage
23
+ *
24
+ * @param key - Storage key
25
+ * @returns Whether the key exists and has a value
26
+ */
27
+ export declare const hasEncryptedSessionStorage: (key: string) => boolean;
28
+ /** Clear all sessionStorage data (use with caution) */
29
+ export declare const clearEncryptedSessionStorage: () => void;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clearEncryptedSessionStorage = exports.hasEncryptedSessionStorage = exports.removeEncryptedSessionStorage = exports.getEncryptedSessionStorage = exports.setEncryptedSessionStorage = void 0;
4
+ /**
5
+ * Encrypted sessionStorage utilities Provides secure storage functions using
6
+ * encryption
7
+ */
8
+ const crypto_1 = require("./crypto");
9
+ /**
10
+ * Safely store encrypted data in sessionStorage
11
+ *
12
+ * @param key - Storage key
13
+ * @param value - Plain text value to encrypt and store
14
+ */
15
+ const setEncryptedSessionStorage = (key, value) => {
16
+ if (typeof window === "undefined")
17
+ return;
18
+ try {
19
+ const encrypted = (0, crypto_1.encrypt)(value);
20
+ sessionStorage.setItem(key, encrypted);
21
+ }
22
+ catch (error) {
23
+ throw new Error(`Failed to store encrypted data for key "${key}": ${error instanceof Error ? error.message : String(error)}`);
24
+ }
25
+ };
26
+ exports.setEncryptedSessionStorage = setEncryptedSessionStorage;
27
+ /**
28
+ * Safely retrieve and decrypt data from sessionStorage
29
+ *
30
+ * @param key - Storage key
31
+ * @returns Decrypted plain text value
32
+ */
33
+ const getEncryptedSessionStorage = (key) => {
34
+ if (typeof window === "undefined")
35
+ return "";
36
+ try {
37
+ const encrypted = sessionStorage.getItem(key);
38
+ if (!encrypted)
39
+ return "";
40
+ return (0, crypto_1.decrypt)(encrypted);
41
+ }
42
+ catch (error) {
43
+ throw new Error(`Failed to retrieve encrypted data for key "${key}": ${error instanceof Error ? error.message : String(error)}`);
44
+ }
45
+ };
46
+ exports.getEncryptedSessionStorage = getEncryptedSessionStorage;
47
+ /**
48
+ * Remove encrypted data from sessionStorage
49
+ *
50
+ * @param key - Storage key
51
+ */
52
+ const removeEncryptedSessionStorage = (key) => {
53
+ if (typeof window === "undefined")
54
+ return;
55
+ try {
56
+ sessionStorage.removeItem(key);
57
+ }
58
+ catch (error) {
59
+ throw new Error(`Failed to remove encrypted data for key "${key}": ${error instanceof Error ? error.message : String(error)}`);
60
+ }
61
+ };
62
+ exports.removeEncryptedSessionStorage = removeEncryptedSessionStorage;
63
+ /**
64
+ * Check if encrypted data exists in sessionStorage
65
+ *
66
+ * @param key - Storage key
67
+ * @returns Whether the key exists and has a value
68
+ */
69
+ const hasEncryptedSessionStorage = (key) => {
70
+ if (typeof window === "undefined")
71
+ return false;
72
+ try {
73
+ const value = sessionStorage.getItem(key);
74
+ return value !== null && value !== "";
75
+ }
76
+ catch (error) {
77
+ throw new Error(`Failed to check encrypted data for key "${key}": ${error instanceof Error ? error.message : String(error)}`);
78
+ }
79
+ };
80
+ exports.hasEncryptedSessionStorage = hasEncryptedSessionStorage;
81
+ /** Clear all sessionStorage data (use with caution) */
82
+ const clearEncryptedSessionStorage = () => {
83
+ if (typeof window === "undefined")
84
+ return;
85
+ try {
86
+ sessionStorage.clear();
87
+ }
88
+ catch (error) {
89
+ throw new Error(`Failed to clear sessionStorage: ${error instanceof Error ? error.message : String(error)}`);
90
+ }
91
+ };
92
+ exports.clearEncryptedSessionStorage = clearEncryptedSessionStorage;
93
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/utils/storage.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,qCAA4C;AAE5C;;;;;GAKG;AACI,MAAM,0BAA0B,GAAG,CACxC,GAAW,EACX,KAAa,EACP,EAAE;IACR,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAE1C,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAA,gBAAO,EAAC,KAAK,CAAC,CAAC;QACjC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,2CAA2C,GAAG,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC7G,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAdW,QAAA,0BAA0B,8BAcrC;AAEF;;;;;GAKG;AACI,MAAM,0BAA0B,GAAG,CAAC,GAAW,EAAU,EAAE;IAChE,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,EAAE,CAAC;IAE7C,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAC1B,OAAO,IAAA,gBAAO,EAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,8CAA8C,GAAG,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAChH,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAZW,QAAA,0BAA0B,8BAYrC;AAEF;;;;GAIG;AACI,MAAM,6BAA6B,GAAG,CAAC,GAAW,EAAQ,EAAE;IACjE,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAE1C,IAAI,CAAC;QACH,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,4CAA4C,GAAG,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC9G,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAVW,QAAA,6BAA6B,iCAUxC;AAEF;;;;;GAKG;AACI,MAAM,0BAA0B,GAAG,CAAC,GAAW,EAAW,EAAE;IACjE,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1C,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,2CAA2C,GAAG,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC7G,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAXW,QAAA,0BAA0B,8BAWrC;AAEF,uDAAuD;AAChD,MAAM,4BAA4B,GAAG,GAAS,EAAE;IACrD,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAE1C,IAAI,CAAC;QACH,cAAc,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC5F,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAVW,QAAA,4BAA4B,gCAUvC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@autobe/ui",
3
3
  "type": "commonjs",
4
- "version": "0.22.1",
4
+ "version": "0.23.1",
5
5
  "description": "AutoBE UI",
6
6
  "author": "Wrtn Technologies",
7
7
  "homepage": "https://autobe.dev",
@@ -22,18 +22,26 @@
22
22
  "@samchon/openapi": "^4.7.1",
23
23
  "@types/react": "^19.1.10",
24
24
  "@types/react-dom": "^19.1.5",
25
+ "@vitest/ui": "^2.0.0",
26
+ "happy-dom": "^15.0.0",
25
27
  "react": "^19.1.1",
26
28
  "react-dom": "^19.1.1",
27
29
  "typescript": "~5.9.2",
28
- "@autobe/interface": "0.22.1"
30
+ "vitest": "^2.0.0",
31
+ "@autobe/interface": "0.23.1"
29
32
  },
30
33
  "dependencies": {
31
34
  "@stackblitz/sdk": "^1.11.0",
32
35
  "jszip": "^3.10.1",
36
+ "overlay-kit": "^1.8.5",
37
+ "tgrid": "^1.2.0",
33
38
  "tstl": "^3.0.0"
34
39
  },
35
40
  "scripts": {
36
41
  "build": "tsc",
37
- "dev": "tsc --watch"
42
+ "dev": "tsc --watch",
43
+ "test": "vitest",
44
+ "test:run": "vitest run",
45
+ "test:ui": "vitest --ui"
38
46
  }
39
47
  }