@modochats/widget 0.1.4 → 1.0.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 (179) hide show
  1. package/.github/workflows/build-and-publish.yml +116 -174
  2. package/.releaserc +60 -0
  3. package/CHANGELOG.md +8 -0
  4. package/README.md +191 -191
  5. package/package.json +79 -76
  6. package/src/app.ts +117 -117
  7. package/src/constants/index.ts +21 -21
  8. package/src/constants/regex.ts +2 -2
  9. package/src/constants/version.ts +2 -0
  10. package/src/index.ts +16 -16
  11. package/src/services/chat/conversation.ts +135 -135
  12. package/src/services/chat/message-utils.ts +221 -221
  13. package/src/services/chat/model.ts +139 -139
  14. package/src/services/chatbot/chatbot.ts +66 -66
  15. package/src/services/checker.ts +10 -10
  16. package/src/services/listeners/fn.ts +77 -77
  17. package/src/services/socket/utils.ts +9 -9
  18. package/src/services/user/customer-data.ts +78 -78
  19. package/src/services/voice-chat/model.ts +79 -79
  20. package/src/services/voice-chat/utils.ts +137 -137
  21. package/src/tools/fetch.ts +7 -7
  22. package/src/types/app.ts +17 -17
  23. package/src/types/conversation.ts +14 -14
  24. package/src/types/socket.ts +7 -7
  25. package/src/types/window.ts +12 -12
  26. package/src/utils/audio.ts +67 -67
  27. package/src/utils/browser.ts +4 -4
  28. package/src/utils/fetch.ts +98 -98
  29. package/src/utils/uuid.ts +13 -13
  30. package/dist/src/app.d.ts +0 -29
  31. package/dist/src/app.js +0 -1
  32. package/dist/src/app.js.map +0 -1
  33. package/dist/src/constants/index.d.ts +0 -9
  34. package/dist/src/constants/index.js +0 -1
  35. package/dist/src/constants/index.js.map +0 -1
  36. package/dist/src/constants/regex.d.ts +0 -2
  37. package/dist/src/constants/regex.js +0 -1
  38. package/dist/src/constants/regex.js.map +0 -1
  39. package/dist/src/index.d.ts +0 -9
  40. package/dist/src/index.js +0 -1
  41. package/dist/src/index.js.map +0 -1
  42. package/dist/src/models/chatbot.d.ts +0 -23
  43. package/dist/src/models/chatbot.js +0 -1
  44. package/dist/src/models/chatbot.js.map +0 -1
  45. package/dist/src/models/conversation.d.ts +0 -22
  46. package/dist/src/models/conversation.js +0 -1
  47. package/dist/src/models/conversation.js.map +0 -1
  48. package/dist/src/models/customer-data.d.ts +0 -31
  49. package/dist/src/models/customer-data.js +0 -1
  50. package/dist/src/models/customer-data.js.map +0 -1
  51. package/dist/src/models/message-utils.d.ts +0 -12
  52. package/dist/src/models/message-utils.js +0 -1
  53. package/dist/src/models/message-utils.js.map +0 -1
  54. package/dist/src/services/chat/conversation.d.ts +0 -22
  55. package/dist/src/services/chat/conversation.js +0 -1
  56. package/dist/src/services/chat/conversation.js.map +0 -1
  57. package/dist/src/services/chat/message-utils.d.ts +0 -12
  58. package/dist/src/services/chat/message-utils.js +0 -1
  59. package/dist/src/services/chat/message-utils.js.map +0 -1
  60. package/dist/src/services/chat/model.d.ts +0 -27
  61. package/dist/src/services/chat/model.js +0 -1
  62. package/dist/src/services/chat/model.js.map +0 -1
  63. package/dist/src/services/chatbot/chatbot.d.ts +0 -23
  64. package/dist/src/services/chatbot/chatbot.js +0 -1
  65. package/dist/src/services/chatbot/chatbot.js.map +0 -1
  66. package/dist/src/services/checker.d.ts +0 -3
  67. package/dist/src/services/checker.js +0 -1
  68. package/dist/src/services/checker.js.map +0 -1
  69. package/dist/src/services/listeners/adders.d.ts +0 -3
  70. package/dist/src/services/listeners/adders.js +0 -1
  71. package/dist/src/services/listeners/adders.js.map +0 -1
  72. package/dist/src/services/listeners/fn.d.ts +0 -3
  73. package/dist/src/services/listeners/fn.js +0 -1
  74. package/dist/src/services/listeners/fn.js.map +0 -1
  75. package/dist/src/services/socket/utils.d.ts +0 -2
  76. package/dist/src/services/socket/utils.js +0 -1
  77. package/dist/src/services/socket/utils.js.map +0 -1
  78. package/dist/src/services/ui/fn.d.ts +0 -13
  79. package/dist/src/services/ui/fn.js +0 -1
  80. package/dist/src/services/ui/fn.js.map +0 -1
  81. package/dist/src/services/ui/html.d.ts +0 -3
  82. package/dist/src/services/ui/html.js +0 -1
  83. package/dist/src/services/ui/html.js.map +0 -1
  84. package/dist/src/services/user/customer-data.d.ts +0 -31
  85. package/dist/src/services/user/customer-data.js +0 -1
  86. package/dist/src/services/user/customer-data.js.map +0 -1
  87. package/dist/src/services/voice-chat/model.d.ts +0 -12
  88. package/dist/src/services/voice-chat/model.js +0 -1
  89. package/dist/src/services/voice-chat/model.js.map +0 -1
  90. package/dist/src/services/voice-chat/utils.d.ts +0 -9
  91. package/dist/src/services/voice-chat/utils.js +0 -1
  92. package/dist/src/services/voice-chat/utils.js.map +0 -1
  93. package/dist/src/tools/fetch.d.ts +0 -2
  94. package/dist/src/tools/fetch.js +0 -1
  95. package/dist/src/tools/fetch.js.map +0 -1
  96. package/dist/src/types/app.d.ts +0 -17
  97. package/dist/src/types/app.js +0 -1
  98. package/dist/src/types/app.js.map +0 -1
  99. package/dist/src/types/conversation.d.ts +0 -14
  100. package/dist/src/types/conversation.js +0 -1
  101. package/dist/src/types/conversation.js.map +0 -1
  102. package/dist/src/types/socket.d.ts +0 -6
  103. package/dist/src/types/socket.js +0 -1
  104. package/dist/src/types/socket.js.map +0 -1
  105. package/dist/src/types/window.d.ts +0 -9
  106. package/dist/src/types/window.js +0 -1
  107. package/dist/src/types/window.js.map +0 -1
  108. package/dist/src/utils/audio.d.ts +0 -3
  109. package/dist/src/utils/audio.js +0 -1
  110. package/dist/src/utils/audio.js.map +0 -1
  111. package/dist/src/utils/browser.d.ts +0 -2
  112. package/dist/src/utils/browser.js +0 -1
  113. package/dist/src/utils/browser.js.map +0 -1
  114. package/dist/src/utils/fetch.d.ts +0 -18
  115. package/dist/src/utils/fetch.js +0 -1
  116. package/dist/src/utils/fetch.js.map +0 -1
  117. package/dist/src/utils/uuid.d.ts +0 -6
  118. package/dist/src/utils/uuid.js +0 -1
  119. package/dist/src/utils/uuid.js.map +0 -1
  120. package/dist/types/src/app.d.ts +0 -30
  121. package/dist/types/src/app.d.ts.map +0 -1
  122. package/dist/types/src/constants/index.d.ts +0 -10
  123. package/dist/types/src/constants/index.d.ts.map +0 -1
  124. package/dist/types/src/constants/regex.d.ts +0 -3
  125. package/dist/types/src/constants/regex.d.ts.map +0 -1
  126. package/dist/types/src/index.d.ts +0 -10
  127. package/dist/types/src/index.d.ts.map +0 -1
  128. package/dist/types/src/models/chatbot.d.ts +0 -24
  129. package/dist/types/src/models/chatbot.d.ts.map +0 -1
  130. package/dist/types/src/models/conversation.d.ts +0 -23
  131. package/dist/types/src/models/conversation.d.ts.map +0 -1
  132. package/dist/types/src/models/customer-data.d.ts +0 -32
  133. package/dist/types/src/models/customer-data.d.ts.map +0 -1
  134. package/dist/types/src/models/message-utils.d.ts +0 -13
  135. package/dist/types/src/models/message-utils.d.ts.map +0 -1
  136. package/dist/types/src/services/chat/conversation.d.ts +0 -23
  137. package/dist/types/src/services/chat/conversation.d.ts.map +0 -1
  138. package/dist/types/src/services/chat/message-utils.d.ts +0 -13
  139. package/dist/types/src/services/chat/message-utils.d.ts.map +0 -1
  140. package/dist/types/src/services/chat/model.d.ts +0 -28
  141. package/dist/types/src/services/chat/model.d.ts.map +0 -1
  142. package/dist/types/src/services/chatbot/chatbot.d.ts +0 -24
  143. package/dist/types/src/services/chatbot/chatbot.d.ts.map +0 -1
  144. package/dist/types/src/services/checker.d.ts +0 -4
  145. package/dist/types/src/services/checker.d.ts.map +0 -1
  146. package/dist/types/src/services/listeners/adders.d.ts +0 -4
  147. package/dist/types/src/services/listeners/adders.d.ts.map +0 -1
  148. package/dist/types/src/services/listeners/fn.d.ts +0 -4
  149. package/dist/types/src/services/listeners/fn.d.ts.map +0 -1
  150. package/dist/types/src/services/socket/utils.d.ts +0 -3
  151. package/dist/types/src/services/socket/utils.d.ts.map +0 -1
  152. package/dist/types/src/services/ui/fn.d.ts +0 -14
  153. package/dist/types/src/services/ui/fn.d.ts.map +0 -1
  154. package/dist/types/src/services/ui/html.d.ts +0 -4
  155. package/dist/types/src/services/ui/html.d.ts.map +0 -1
  156. package/dist/types/src/services/user/customer-data.d.ts +0 -32
  157. package/dist/types/src/services/user/customer-data.d.ts.map +0 -1
  158. package/dist/types/src/services/voice-chat/model.d.ts +0 -13
  159. package/dist/types/src/services/voice-chat/model.d.ts.map +0 -1
  160. package/dist/types/src/services/voice-chat/utils.d.ts +0 -10
  161. package/dist/types/src/services/voice-chat/utils.d.ts.map +0 -1
  162. package/dist/types/src/tools/fetch.d.ts +0 -3
  163. package/dist/types/src/tools/fetch.d.ts.map +0 -1
  164. package/dist/types/src/types/app.d.ts +0 -18
  165. package/dist/types/src/types/app.d.ts.map +0 -1
  166. package/dist/types/src/types/conversation.d.ts +0 -15
  167. package/dist/types/src/types/conversation.d.ts.map +0 -1
  168. package/dist/types/src/types/socket.d.ts +0 -7
  169. package/dist/types/src/types/socket.d.ts.map +0 -1
  170. package/dist/types/src/types/window.d.ts +0 -10
  171. package/dist/types/src/types/window.d.ts.map +0 -1
  172. package/dist/types/src/utils/audio.d.ts +0 -4
  173. package/dist/types/src/utils/audio.d.ts.map +0 -1
  174. package/dist/types/src/utils/browser.d.ts +0 -3
  175. package/dist/types/src/utils/browser.d.ts.map +0 -1
  176. package/dist/types/src/utils/fetch.d.ts +0 -19
  177. package/dist/types/src/utils/fetch.d.ts.map +0 -1
  178. package/dist/types/src/utils/uuid.d.ts +0 -7
  179. package/dist/types/src/utils/uuid.d.ts.map +0 -1
@@ -1,174 +1,116 @@
1
- name: Build and Publish to CDN
2
-
3
- on:
4
- push:
5
- branches: [main]
6
- pull_request:
7
- branches: [main]
8
-
9
- permissions:
10
- contents: write
11
-
12
- jobs:
13
- build:
14
- runs-on: ubuntu-latest
15
-
16
- steps:
17
- - name: Checkout code
18
- uses: actions/checkout@v4
19
-
20
- - name: Setup Node.js
21
- uses: actions/setup-node@v4
22
- with:
23
- node-version: "23"
24
-
25
- - name: Install dependencies
26
- run: npm install
27
-
28
- - name: Build project
29
- run: npm run build:cdn
30
-
31
- - name: Create build artifacts
32
- run: |
33
- mkdir -p build-artifacts
34
- cp -r dist build-artifacts/
35
- cp -r temp build-artifacts/
36
- cp -r cdn-dist build-artifacts/
37
- cp package.json build-artifacts/
38
- cp README.md build-artifacts/
39
-
40
- - name: Upload build artifacts
41
- uses: actions/upload-artifact@v4
42
- with:
43
- name: build-files
44
- path: build-artifacts/
45
- retention-days: 30
46
-
47
- publish-cdn:
48
- needs: build
49
- runs-on: ubuntu-latest
50
- if: github.ref == 'refs/heads/main' && github.event_name == 'push' && !contains(github.event.head_commit.message, 'Add CDN distribution files for build')
51
-
52
- steps:
53
- - name: Checkout code
54
- uses: actions/checkout@v4
55
-
56
- - name: Download build artifacts
57
- uses: actions/download-artifact@v4
58
- with:
59
- name: build-files
60
- path: build-artifacts/
61
-
62
- - name: Setup Node.js
63
- uses: actions/setup-node@v4
64
- with:
65
- node-version: "23"
66
-
67
- - name: Use CDN-ready files
68
- run: |
69
- # The CDN files are already created by the build:cdn script
70
- echo "Using pre-built CDN files from cdn-dist/"
71
- ls -la build-artifacts/cdn-dist/
72
-
73
- - name: Commit CDN files to repository
74
- env:
75
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
76
- run: |
77
- # Copy CDN files to the repository root
78
- cp -r build-artifacts/cdn-dist/ ./
79
-
80
- # Configure git
81
- git config --local user.email "action@github.com"
82
- git config --local user.name "GitHub Action"
83
-
84
- # Add and commit CDN files
85
- git add cdn-dist/
86
- git commit -m "Add CDN distribution files for build ${{ github.run_number }}" || echo "No changes to commit"
87
-
88
- # Push to repository
89
- git push https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git main
90
-
91
- - name: Create GitHub Release
92
- id: create_release
93
- uses: actions/create-release@v1
94
- env:
95
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
96
- with:
97
- tag_name: v${{ github.run_number }}
98
- release_name: Release v${{ github.run_number }}
99
- body: |
100
- ## Build ${{ github.run_number }}
101
-
102
- ### Files included:
103
- - modo-web-component.js - Legacy UMD bundle
104
- --modo-widget.js - UMD bundle
105
- --modo-widget.min.js - Minified UMD bundle
106
- - modo-web-component.min.js - Legacy Minified UMD bundle
107
- - dist/ - Full distribution files
108
-
109
- ### CDN Usage:
110
- jsDelivr (Recommended):
111
- <script src="https://cdn.jsdelivr.net/gh/${{ github.repository }}@main/cdn-dist/modo-widget.min.js"></script>
112
- <script src="https://cdn.jsdelivr.net/gh/${{ github.repository }}@main/cdn-dist/modo-web-component.min.js"></script> (legacy)
113
-
114
- GitHub Raw:
115
- <script src="https://raw.githubusercontent.com/${{ github.repository }}/main/cdn-dist/modochat-wifget.min.js"></script>
116
- <script src="https://raw.githubusercontent.com/${{ github.repository }}/main/cdn-dist/modo-web-component.min.js"></script> (legacy)
117
-
118
- draft: false
119
- prerelease: false
120
-
121
- - name: Upload Release Assets
122
- uses: actions/upload-release-asset@v1
123
- env:
124
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
125
- with:
126
- upload_url: ${{ steps.create_release.outputs.upload_url }}
127
- asset_path: ./build-artifacts/cdn-dist/modo-widget.js
128
- asset_name: modo-widget.js
129
- asset_content_type: application/javascript
130
-
131
- - name: Upload Release Assets Legacy
132
- uses: actions/upload-release-asset@v1
133
- env:
134
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
135
- with:
136
- upload_url: ${{ steps.create_release.outputs.upload_url }}
137
- asset_path: ./build-artifacts/cdn-dist/modo-web-component.js
138
- asset_name: modo-web-component.js
139
- asset_content_type: application/javascript
140
-
141
- - name: Upload Minified Release Asset
142
- uses: actions/upload-release-asset@v1
143
- env:
144
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
145
- with:
146
- upload_url: ${{ steps.create_release.outputs.upload_url }}
147
- asset_path: ./build-artifacts/cdn-dist/modo-widget.min.js
148
- asset_name: modo-widget.min.js
149
- asset_content_type: application/javascript
150
-
151
- - name: Upload Minified Release Asset Legacy
152
- uses: actions/upload-release-asset@v1
153
- env:
154
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
155
- with:
156
- upload_url: ${{ steps.create_release.outputs.upload_url }}
157
- asset_path: ./build-artifacts/cdn-dist/modo-web-component.min.js
158
- asset_name: modo-web-component.min.js
159
- asset_content_type: application/javascript
160
-
161
- - name: Upload Dist Folder
162
- run: |
163
- cd build-artifacts/cdn-dist
164
- tar -czf dist.tar.gz dist/
165
-
166
- - name: Upload Dist Archive
167
- uses: actions/upload-release-asset@v1
168
- env:
169
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
170
- with:
171
- upload_url: ${{ steps.create_release.outputs.upload_url }}
172
- asset_path: ./build-artifacts/cdn-dist/dist.tar.gz
173
- asset_name: dist.tar.gz
174
- asset_content_type: application/gzip
1
+ name: Build and Publish to CDN
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ permissions:
10
+ contents: write
11
+ pull-requests: write
12
+ issues: write
13
+
14
+ jobs:
15
+ build:
16
+ runs-on: ubuntu-latest
17
+
18
+ steps:
19
+ - name: Checkout code
20
+ uses: actions/checkout@v4
21
+
22
+ - name: Setup Node.js
23
+ uses: actions/setup-node@v4
24
+ with:
25
+ node-version: "23"
26
+
27
+ - name: Install dependencies
28
+ run: npm install
29
+
30
+ - name: Build project
31
+ run: npm run build:cdn
32
+
33
+ - name: Create build artifacts
34
+ run: |
35
+ mkdir -p build-artifacts
36
+ cp -r dist build-artifacts/
37
+ cp -r temp build-artifacts/
38
+ cp -r cdn-dist build-artifacts/
39
+ cp package.json build-artifacts/
40
+ cp README.md build-artifacts/
41
+
42
+ - name: Upload build artifacts
43
+ uses: actions/upload-artifact@v4
44
+ with:
45
+ name: build-files
46
+ path: build-artifacts/
47
+ retention-days: 30
48
+
49
+ create-cdn-dist:
50
+ needs: build
51
+ runs-on: ubuntu-latest
52
+ if: github.ref == 'refs/heads/main' && github.event_name == 'push' && !contains(github.event.head_commit.message, 'Add CDN distribution files for build')
53
+
54
+ steps:
55
+ - name: Checkout code
56
+ uses: actions/checkout@v4
57
+
58
+ - name: Download build artifacts
59
+ uses: actions/download-artifact@v4
60
+ with:
61
+ name: build-files
62
+ path: build-artifacts/
63
+
64
+ - name: Setup Node.js
65
+ uses: actions/setup-node@v4
66
+ with:
67
+ node-version: "23"
68
+
69
+ - name: Use CDN-ready files
70
+ run: |
71
+ # The CDN files are already created by the build:cdn script
72
+ echo "Using pre-built CDN files from cdn-dist/"
73
+ ls -la build-artifacts/cdn-dist/
74
+
75
+ - name: Commit CDN files to repository
76
+ env:
77
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
78
+ run: |
79
+ # Copy CDN files to the repository root
80
+ cp -r build-artifacts/cdn-dist/ ./
81
+
82
+ # Configure git
83
+ git config --local user.email "action@github.com"
84
+ git config --local user.name "GitHub Action"
85
+
86
+ # Add and commit CDN files
87
+ git add cdn-dist/
88
+ git commit -m "Add CDN distribution files for build ${{ github.run_number }}" || echo "No changes to commit"
89
+
90
+ # Push to repository
91
+ git push https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git main
92
+
93
+ release:
94
+ needs: create-cdn-dist
95
+ name: Release
96
+ runs-on: ubuntu-latest
97
+ steps:
98
+ - name: Checkout
99
+ uses: actions/checkout@v4
100
+ with:
101
+ fetch-depth: 0
102
+ persist-credentials: false
103
+
104
+ - name: Setup Node.js
105
+ uses: actions/setup-node@v4
106
+ with:
107
+ node-version: "23"
108
+
109
+ - name: Install dependencies
110
+ run: npm i
111
+
112
+ - name: Release
113
+ env:
114
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
115
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
116
+ run: npx semantic-release
package/.releaserc ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "branches": [
3
+ "main"
4
+ ],
5
+ "repositoryUrl": "https://github.com/modochats/webcomponent",
6
+ "plugins": [
7
+ "@semantic-release/commit-analyzer",
8
+ "@semantic-release/release-notes-generator",
9
+ [
10
+ "@semantic-release/changelog",
11
+ {
12
+ "changelogFile": "CHANGELOG.md"
13
+ }
14
+ ],
15
+ [
16
+ "@semantic-release/npm"
17
+ ],
18
+ [
19
+ "@semantic-release/exec",
20
+ {
21
+ "prepareCmd": "node scripts/update-version.js"
22
+ }
23
+ ],
24
+ [
25
+ "@semantic-release/git",
26
+ {
27
+ "assets": [
28
+ "package.json",
29
+ "CHANGELOG.md",
30
+ "src/js/constants.js"
31
+ ],
32
+ "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
33
+ }
34
+ ],
35
+ [
36
+ "@semantic-release/github",
37
+ {
38
+ "assets": [
39
+ {
40
+ "path": "cdn-dist/modo-widget.js",
41
+ "label": "modo-widget.js"
42
+ },
43
+ {
44
+ "path": "cdn-dist/modo-widget.min.js",
45
+ "label": "modo-widget.min.js"
46
+ },
47
+ {
48
+ "path": "cdn-dist/modo-web-component.js",
49
+ "label": "modo-web-component.js (Legacy)"
50
+ },
51
+ {
52
+ "path": "cdn-dist/modo-web-component.min.js",
53
+ "label": "modo-web-component.min.js (Legacy)"
54
+ }
55
+ ],
56
+ "successComment": "🎉 This issue has been resolved in version ${nextRelease.version}.\n\n### CDN Links:\n- jsDelivr: https://cdn.jsdelivr.net/gh/${{ github.repository }}@${nextRelease.version}/cdn-dist/modo-widget.min.js\n- GitHub Raw: https://raw.githubusercontent.com/${{ github.repository }}/${nextRelease.version}/cdn-dist/modo-widget.min.js"
57
+ }
58
+ ]
59
+ ]
60
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ # 1.0.0 (2026-01-26)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * update import path for Conversation model in chat service ([657dd11](https://github.com/modochats/webcomponent/commit/657dd112a9523c835d02c66d8a12acb484cc5a3b))
7
+ * update version update script to use async file writing ([b661db7](https://github.com/modochats/webcomponent/commit/b661db724d2e0bb3b7675cbd596ee4c86be590ee))
8
+ * update version update script to use async file writing ([81213d8](https://github.com/modochats/webcomponent/commit/81213d829bad7b750333fe45c7129afd4fd80950))