inicontent 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 (205) hide show
  1. package/.github/pull_request.yml +18 -0
  2. package/CONTRIBUTING.md +67 -0
  3. package/LICENSE +21 -0
  4. package/README.md +142 -0
  5. package/app/app.vue +106 -0
  6. package/app/assets/main.css +974 -0
  7. package/app/components/Api/EndpointCard.vue +169 -0
  8. package/app/components/Api/SchemaDocsTable.vue +208 -0
  9. package/app/components/Asset/Card.vue +1363 -0
  10. package/app/components/Asset/Grid.vue +295 -0
  11. package/app/components/Asset/Icon.vue +38 -0
  12. package/app/components/Asset/Preview.vue +486 -0
  13. package/app/components/Asset/Scanner.vue +700 -0
  14. package/app/components/Asset/Thumb.vue +708 -0
  15. package/app/components/Auth/Reset.vue +99 -0
  16. package/app/components/Auth/index.vue +346 -0
  17. package/app/components/ChatInterface.vue +2326 -0
  18. package/app/components/ChatPagePreview.vue +34 -0
  19. package/app/components/Column/Array.vue +29 -0
  20. package/app/components/Column/Asset.vue +21 -0
  21. package/app/components/Column/Boolean.vue +12 -0
  22. package/app/components/Column/Color.vue +9 -0
  23. package/app/components/Column/Date.vue +57 -0
  24. package/app/components/Column/Edit.vue +215 -0
  25. package/app/components/Column/Email.vue +9 -0
  26. package/app/components/Column/Html.vue +27 -0
  27. package/app/components/Column/Id.vue +20 -0
  28. package/app/components/Column/Locale.vue +32 -0
  29. package/app/components/Column/Object.vue +18 -0
  30. package/app/components/Column/Password.vue +7 -0
  31. package/app/components/Column/Role.vue +15 -0
  32. package/app/components/Column/S.vue +14 -0
  33. package/app/components/Column/Table/Single.vue +49 -0
  34. package/app/components/Column/Table/index.vue +42 -0
  35. package/app/components/Column/Tags.vue +31 -0
  36. package/app/components/Column/Text.vue +9 -0
  37. package/app/components/Column/Url.vue +9 -0
  38. package/app/components/Column/index.vue +41 -0
  39. package/app/components/Dashboard/Editor.vue +221 -0
  40. package/app/components/Dashboard/Grid.vue +270 -0
  41. package/app/components/Dashboard/View.vue +131 -0
  42. package/app/components/Dashboard/Widget/BarChart.vue +73 -0
  43. package/app/components/Dashboard/Widget/Counter.vue +51 -0
  44. package/app/components/Dashboard/Widget/LineChart.vue +76 -0
  45. package/app/components/Dashboard/Widget/PieChart.vue +75 -0
  46. package/app/components/Dashboard/Widget/Table.vue +94 -0
  47. package/app/components/Dashboard/WidgetEditor.vue +274 -0
  48. package/app/components/Data/Array.vue +102 -0
  49. package/app/components/Data/Html.vue +9 -0
  50. package/app/components/Data/Icon.vue +9 -0
  51. package/app/components/Data/Object.vue +10 -0
  52. package/app/components/Data/S.vue +16 -0
  53. package/app/components/Data/Table.vue +53 -0
  54. package/app/components/Data/Value.vue +34 -0
  55. package/app/components/Data/index.vue +14 -0
  56. package/app/components/Field/Array.vue +324 -0
  57. package/app/components/Field/Asset/Actions.vue +97 -0
  58. package/app/components/Field/Asset/index.vue +639 -0
  59. package/app/components/Field/Boolean.vue +26 -0
  60. package/app/components/Field/Checkbox.vue +48 -0
  61. package/app/components/Field/Color.vue +27 -0
  62. package/app/components/Field/Date.vue +30 -0
  63. package/app/components/Field/Email.vue +51 -0
  64. package/app/components/Field/EmailTemplate.vue +420 -0
  65. package/app/components/Field/Html/ColorPicker.vue +127 -0
  66. package/app/components/Field/Html/Editor.vue +544 -0
  67. package/app/components/Field/Html/index.vue +25 -0
  68. package/app/components/Field/Icon.vue +114 -0
  69. package/app/components/Field/JSON.vue +113 -0
  70. package/app/components/Field/Mention.vue +36 -0
  71. package/app/components/Field/Number.vue +27 -0
  72. package/app/components/Field/Object.vue +92 -0
  73. package/app/components/Field/Password.vue +55 -0
  74. package/app/components/Field/Radio.vue +47 -0
  75. package/app/components/Field/S.vue +44 -0
  76. package/app/components/Field/Select.vue +49 -0
  77. package/app/components/Field/Table.vue +348 -0
  78. package/app/components/Field/Tags.vue +113 -0
  79. package/app/components/Field/Text.vue +31 -0
  80. package/app/components/Field/Textarea.vue +33 -0
  81. package/app/components/Field/Url.vue +40 -0
  82. package/app/components/Field/Wrapper.vue +128 -0
  83. package/app/components/Field/index.vue +68 -0
  84. package/app/components/FloatingChatbot.vue +73 -0
  85. package/app/components/Form/Card.vue +151 -0
  86. package/app/components/Form/Drawer.vue +195 -0
  87. package/app/components/Form/index.vue +621 -0
  88. package/app/components/Header.vue +328 -0
  89. package/app/components/Offline/ConflictModal.vue +200 -0
  90. package/app/components/Offline/SyncStatus.vue +249 -0
  91. package/app/components/PlatformFeatureLanding.vue +65 -0
  92. package/app/components/Table/Backups.vue +638 -0
  93. package/app/components/Table/Flows.vue +814 -0
  94. package/app/components/Table/Grid.vue +296 -0
  95. package/app/components/Table/Icon.vue +36 -0
  96. package/app/components/Table/Logs.vue +181 -0
  97. package/app/components/Table/Schedules.vue +722 -0
  98. package/app/components/Table/Search/Button.vue +256 -0
  99. package/app/components/Table/Search/Items.vue +286 -0
  100. package/app/components/Table/Search/index.vue +87 -0
  101. package/app/components/Table/Settings/Schema.vue +801 -0
  102. package/app/components/Table/Settings/index.vue +631 -0
  103. package/app/components/Table/TranslateDrawer.vue +526 -0
  104. package/app/components/Table/Views/Kanban.vue +289 -0
  105. package/app/components/Table/Views/Table.vue +1273 -0
  106. package/app/components/Table/index.vue +890 -0
  107. package/app/composables/Translation/define.ts +41 -0
  108. package/app/composables/Translation/fetch.ts +107 -0
  109. package/app/composables/Translation/languages.ts +1 -0
  110. package/app/composables/Translation/loadCoreTranslations.ts +38 -0
  111. package/app/composables/Translation/translate.ts +250 -0
  112. package/app/composables/databaseCookies.ts +79 -0
  113. package/app/composables/fieldValidator.ts +72 -0
  114. package/app/composables/fieldsList.ts +301 -0
  115. package/app/composables/formatDatabase.ts +101 -0
  116. package/app/composables/index.ts +444 -0
  117. package/app/composables/openDrawer.ts +118 -0
  118. package/app/composables/optimizeFile.ts +287 -0
  119. package/app/composables/renderLabel.ts +88 -0
  120. package/app/composables/schemaClipboard.ts +95 -0
  121. package/app/composables/search.ts +353 -0
  122. package/app/composables/setThemeConfig.ts +48 -0
  123. package/app/composables/translationValue.ts +169 -0
  124. package/app/composables/useAssetPreview.ts +84 -0
  125. package/app/composables/useAssetUploader.ts +56 -0
  126. package/app/composables/useDashboardData.ts +310 -0
  127. package/app/composables/useDocumentThumbnail.ts +351 -0
  128. package/app/composables/useEcharts.ts +33 -0
  129. package/app/composables/useLocalDatabaseConfig.ts +51 -0
  130. package/app/composables/useOcr.ts +300 -0
  131. package/app/composables/useOfflineFetch.ts +194 -0
  132. package/app/composables/useOfflineItem.ts +107 -0
  133. package/app/composables/useOfflineQueue.ts +302 -0
  134. package/app/composables/useOfflineSync.ts +235 -0
  135. package/app/composables/usePasskeyAuth.ts +156 -0
  136. package/app/composables/usePdfCompressor.ts +180 -0
  137. package/app/composables/usePlatformRedirect.ts +72 -0
  138. package/app/composables/useRealtimeSync.ts +233 -0
  139. package/app/composables/useReferencedItems.ts +180 -0
  140. package/app/composables/useScanner.ts +664 -0
  141. package/app/composables/useSubscription.ts +650 -0
  142. package/app/composables/useThumbnailCache.ts +136 -0
  143. package/app/composables/useVideoCompressor.ts +194 -0
  144. package/app/error.vue +112 -0
  145. package/app/layouts/api.vue +188 -0
  146. package/app/layouts/dashboard.vue +91 -0
  147. package/app/layouts/default.vue +228 -0
  148. package/app/layouts/table.vue +471 -0
  149. package/app/locales/ar.ts +996 -0
  150. package/app/locales/en.ts +655 -0
  151. package/app/locales/es.ts +996 -0
  152. package/app/locales/fr.ts +997 -0
  153. package/app/middleware/dashboard.ts +33 -0
  154. package/app/middleware/database.ts +83 -0
  155. package/app/middleware/global.ts +1 -0
  156. package/app/middleware/sid-ingest.global.ts +29 -0
  157. package/app/middleware/table.ts +54 -0
  158. package/app/middleware/user.ts +26 -0
  159. package/app/pages/[[database]]/admin/api/auth/index.vue +306 -0
  160. package/app/pages/[[database]]/admin/api/index.vue +18 -0
  161. package/app/pages/[[database]]/admin/api/tables/[table]/index.vue +497 -0
  162. package/app/pages/[[database]]/admin/api/tables/index.vue +87 -0
  163. package/app/pages/[[database]]/admin/billing/index.vue +16 -0
  164. package/app/pages/[[database]]/admin/dashboards/[id]/edit.vue +66 -0
  165. package/app/pages/[[database]]/admin/dashboards/[id]/index.vue +117 -0
  166. package/app/pages/[[database]]/admin/dashboards/index.vue +20 -0
  167. package/app/pages/[[database]]/admin/index.vue +28 -0
  168. package/app/pages/[[database]]/admin/settings.vue +526 -0
  169. package/app/pages/[[database]]/admin/tables/[table]/[id]/edit.vue +143 -0
  170. package/app/pages/[[database]]/admin/tables/[table]/[id]/index.vue +146 -0
  171. package/app/pages/[[database]]/admin/tables/[table]/flows.vue +10 -0
  172. package/app/pages/[[database]]/admin/tables/[table]/index.vue +10 -0
  173. package/app/pages/[[database]]/admin/tables/[table]/new.vue +12 -0
  174. package/app/pages/[[database]]/admin/tables/[table]/schedules.vue +10 -0
  175. package/app/pages/[[database]]/admin/tables/[table]/settings.vue +30 -0
  176. package/app/pages/[[database]]/admin/tables/assets/[...path].vue +24 -0
  177. package/app/pages/[[database]]/admin/tables/assets/flows.vue +10 -0
  178. package/app/pages/[[database]]/admin/tables/backups/index.vue +10 -0
  179. package/app/pages/[[database]]/admin/tables/blocks/index.vue +16 -0
  180. package/app/pages/[[database]]/admin/tables/index.vue +20 -0
  181. package/app/pages/[[database]]/admin/tables/pages/index.vue +16 -0
  182. package/app/pages/[[database]]/admin/tables/templates/index.vue +16 -0
  183. package/app/pages/[[database]]/api/index.vue +120 -0
  184. package/app/pages/[[database]]/auth/index.vue +12 -0
  185. package/app/pages/[[database]]/auth/reset.vue +10 -0
  186. package/app/pages/[[database]]/index.vue +10 -0
  187. package/app/plugins/offline-warmup.client.ts +53 -0
  188. package/app/plugins/template-globals.ts +9 -0
  189. package/app/spa-loading-template.html +93 -0
  190. package/biome.json +53 -0
  191. package/index.d.ts +380 -0
  192. package/modules/naiveui.ts +41 -0
  193. package/nuxt.config.ts +269 -0
  194. package/package.json +56 -0
  195. package/pnpm-workspace.yaml +5 -0
  196. package/public/apple-touch-icon.png +0 -0
  197. package/public/favicon-16x16.png +0 -0
  198. package/public/favicon-32x32.png +0 -0
  199. package/public/favicon.ico +0 -0
  200. package/public/pwa-192x192.png +0 -0
  201. package/public/pwa-512x512.png +0 -0
  202. package/public/pwa-maskable-192x192.png +0 -0
  203. package/public/pwa-maskable-512x512.png +0 -0
  204. package/public/vendor/opencv.js +48 -0
  205. package/tsconfig.json +9 -0
package/nuxt.config.ts ADDED
@@ -0,0 +1,269 @@
1
+ import { realpathSync } from "node:fs";
2
+ import { dirname } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+
5
+ // The SPA app shell is served by the node server at "/" (there is no static
6
+ // index.html in .output/public), so workbox's navigateFallback has nothing to
7
+ // serve from its precache when the device is offline. Precache it explicitly
8
+ // with a build-unique revision so the shell is re-fetched on every SW update.
9
+ const appShellRevision = Date.now().toString(36);
10
+
11
+ // Icons that the static `clientBundle.scan` can't see (computed/ternary names
12
+ // used by the offline status UI) and that therefore must be listed explicitly
13
+ // to ever end up in the offline client bundle.
14
+ const explicitOfflineIcons = [
15
+ // Network-state indicators (SyncStatus / connection UI)
16
+ "tabler:refresh",
17
+ "tabler:cloud-check",
18
+ "tabler:cloud-off",
19
+ "tabler:refresh-alert",
20
+ "tabler:download",
21
+ "tabler:wifi",
22
+ "tabler:wifi-off",
23
+ // Status / alerts
24
+ "tabler:check",
25
+ "tabler:alert-triangle",
26
+ "tabler:circle-check",
27
+ "tabler:alert-circle",
28
+ "tabler:info-circle",
29
+ "tabler:help-circle",
30
+ // Layout / navigation handles referenced dynamically
31
+ "tabler:chevron-left",
32
+ "tabler:chevron-right",
33
+ "tabler:chevron-down",
34
+ "tabler:chevron-up",
35
+ "tabler:square-minus",
36
+ "tabler:square-check",
37
+ "tabler:eye",
38
+ "tabler:external-link",
39
+ "tabler:question-mark",
40
+ "tabler:chart-bar",
41
+ "tabler:arrow-left",
42
+ "tabler:arrow-right",
43
+ ];
44
+
45
+ // Is this config evaluated for its own app, or for an app that extends this
46
+ // repo as a Nuxt layer (saas, clinicOS, starter, ...)? The explicit icons
47
+ // above are resolved from the `@iconify-json/tabler` package installed in
48
+ // THIS repo only; layer consumers don't install it, so every explicit icon
49
+ // would fail to resolve in their builds (dev warning, and a hard `nuxt
50
+ // prepare` / `nuxt build` failure). Restrict the explicit list to the source
51
+ // app — consumers fall back to `scan` and the Iconify API instead.
52
+ const isSourceApp =
53
+ realpathSync(process.cwd()) ===
54
+ realpathSync(dirname(fileURLToPath(import.meta.url)));
55
+
56
+ export default defineNuxtConfig({
57
+ ssr: false,
58
+ sourcemap: false,
59
+ telemetry: false,
60
+ modules: [
61
+ "@vite-pwa/nuxt",
62
+ "@nuxtjs/device",
63
+ "@nuxt/fonts",
64
+ "@nuxt/icon",
65
+ "nuxt-tiptap-editor",
66
+ ],
67
+ experimental: {
68
+ payloadExtraction: true,
69
+ },
70
+ icon: {
71
+ // Serve icons from your Nuxt app endpoint, not Iconify API
72
+ provider: "server",
73
+ // Bundle icons into the app JS so they render with no network fetch at
74
+ // all — the bundle is part of the precached chunks and works offline.
75
+ // `scan` covers static `name="tabler:..."` usages; the explicit list
76
+ // (see explicitOfflineIcons above) covers the network-state icons
77
+ // (computed/ternary names) that scanning can't see, i.e. exactly what
78
+ // the offline status UI needs. That explicit list only applies when
79
+ // building the source app itself — layer consumers don't have the
80
+ // `@iconify-json/tabler` package the icons are resolved from.
81
+ clientBundle: {
82
+ scan: true,
83
+ sizeLimitKb: 512,
84
+ icons: isSourceApp ? explicitOfflineIcons : [],
85
+ },
86
+ },
87
+ fonts: {
88
+ experimental: {
89
+ disableLocalFallbacks: true,
90
+ },
91
+ defaults: {
92
+ subsets: ["latin", "arabic"],
93
+ },
94
+ },
95
+ tiptap: {
96
+ prefix: "Tiptap",
97
+ },
98
+ imports: {
99
+ dirs: ["types/*.d.ts"],
100
+ },
101
+ app: {
102
+ head: {
103
+ viewport: "width=device-width, initial-scale=1, maximum-scale=1",
104
+ },
105
+ },
106
+ pwa: {
107
+ manifest: {
108
+ name: "Inicontent",
109
+ short_name: "inic",
110
+ theme_color: "#ff9800",
111
+ display: "standalone",
112
+ icons: [
113
+ {
114
+ src: "/pwa-192x192.png",
115
+ sizes: "192x192",
116
+ type: "image/png",
117
+ purpose: "any",
118
+ },
119
+ {
120
+ src: "/pwa-512x512.png",
121
+ sizes: "512x512",
122
+ type: "image/png",
123
+ purpose: "any",
124
+ },
125
+ {
126
+ src: "/pwa-maskable-192x192.png",
127
+ sizes: "192x192",
128
+ type: "image/png",
129
+ purpose: "maskable",
130
+ },
131
+ {
132
+ src: "/pwa-maskable-512x512.png",
133
+ sizes: "512x512",
134
+ type: "image/png",
135
+ purpose: "maskable",
136
+ },
137
+ ],
138
+ },
139
+ registerType: "prompt",
140
+ workbox: {
141
+ navigateFallback: "/",
142
+ // @vite-pwa/nuxt overrides workbox's default globPatterns with just
143
+ // the build-manifest JSON, so by default NO app chunk is precached
144
+ // and the app can't boot offline without a prior warm visit (the
145
+ // shell HTML would load, then every _nuxt import would fail).
146
+ // Precache every production asset instead: hashed chunks are
147
+ // immutable (dontCacheBustURLsMatching below skips revisions), so
148
+ // the whole app boots from the precache even on a cold offline
149
+ // start — including the error page used to show the friendly
150
+ // "offline" state. vendor/ (e.g. opencv.js) stays runtime-cached.
151
+ globPatterns: [
152
+ "_nuxt/**/*.{js,css,woff,woff2}",
153
+ "_fonts/**/*.{woff,woff2}",
154
+ "**/*.{png,ico,svg,webmanifest,json}",
155
+ ],
156
+ // Let the newly-installed SW control the current page immediately so a
157
+ // single online visit populates the runtime caches (without this, the
158
+ // first visit isn't intercepted and offline wouldn't work until a second).
159
+ clientsClaim: true,
160
+ // The SPA shell isn't a static file, so add it to the precache
161
+ // manifest manually (see appShellRevision above) — otherwise offline
162
+ // navigation has nothing to serve and the app can never load.
163
+ additionalManifestEntries: [{ url: "/", revision: appShellRevision }],
164
+ runtimeCaching: [
165
+ {
166
+ // Icons are served by the Nuxt app's own /_nuxt_icon endpoint
167
+ // (same origin). The clientBundle above covers the statically
168
+ // used + network-state icons; this route saves any other icon
169
+ // (icon-picker choices, per-item/table icons) the first time
170
+ // it's fetched while online, then serves it from cache
171
+ // offline. Revalidate in the background so collections stay
172
+ // fresh while online.
173
+ urlPattern: ({ url }) => url.pathname.includes("_nuxt_icon/"),
174
+ handler: "StaleWhileRevalidate",
175
+ options: {
176
+ cacheName: "inicontent-icon-cache",
177
+ expiration: {
178
+ maxEntries: 400,
179
+ maxAgeSeconds: 60 * 60 * 24 * 30, // 30 days
180
+ },
181
+ cacheableResponse: {
182
+ statuses: [0, 200],
183
+ },
184
+ },
185
+ },
186
+ {
187
+ // Database metadata, dashboard definitions and other
188
+ // rarely-changing configuration. Serve from cache instantly,
189
+ // revalidate in the background.
190
+ urlPattern: ({ url, request }) =>
191
+ url.hostname.endsWith("inicontent.com") &&
192
+ request.method === "GET" &&
193
+ /\/databases\/|\/translations$|\/schema$/i.test(url.pathname),
194
+ handler: "StaleWhileRevalidate",
195
+ options: {
196
+ cacheName: "inicontent-config-cache",
197
+ expiration: {
198
+ maxEntries: 200,
199
+ maxAgeSeconds: 60 * 60 * 24 * 30, // 30 days
200
+ },
201
+ cacheableResponse: {
202
+ statuses: [0, 200],
203
+ },
204
+ },
205
+ },
206
+ {
207
+ // All other API reads (table data, items, searches). Try the
208
+ // network first, fall back to cache when offline.
209
+ urlPattern: ({ url, request }) =>
210
+ url.hostname.endsWith("inicontent.com") && request.method === "GET",
211
+ handler: "NetworkFirst",
212
+ options: {
213
+ cacheName: "inicontent-api-cache",
214
+ networkTimeoutSeconds: 3,
215
+ expiration: {
216
+ maxEntries: 500,
217
+ maxAgeSeconds: 60 * 60 * 24 * 7, // 7 days
218
+ },
219
+ cacheableResponse: {
220
+ statuses: [0, 200],
221
+ },
222
+ },
223
+ },
224
+ {
225
+ // Runtime-cache static assets (in case a build asset isn't
226
+ // precached). Cache-first, so they load fast offline.
227
+ urlPattern: ({ request }) =>
228
+ request.destination === "style" ||
229
+ request.destination === "script" ||
230
+ request.destination === "font" ||
231
+ request.destination === "image",
232
+ handler: "CacheFirst",
233
+ options: {
234
+ cacheName: "inicontent-static-cache",
235
+ expiration: {
236
+ maxEntries: 500,
237
+ maxAgeSeconds: 60 * 60 * 24 * 30, // 30 days
238
+ },
239
+ cacheableResponse: {
240
+ statuses: [0, 200],
241
+ },
242
+ },
243
+ },
244
+ ],
245
+ },
246
+ },
247
+ devServer: {
248
+ port: 3434, // "INIc" in binary
249
+ },
250
+ devtools: {
251
+ enabled: false,
252
+ },
253
+ vite: {
254
+ server: {
255
+ ws: { clientPort: 3434 },
256
+ },
257
+ optimizeDeps: {
258
+ exclude: ["@ffmpeg/ffmpeg", "@ffmpeg/util"],
259
+ },
260
+ },
261
+ compatibilityDate: "latest",
262
+ runtimeConfig: {
263
+ public: {
264
+ apiBase: process.env.apiBase || "https://api.inicontent.com/",
265
+ idOne: process.env.idOne || "d7b3d61a582e53ee29b5a1d02a436d55",
266
+ database: process.env.database || "inicontent",
267
+ },
268
+ },
269
+ });
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "inicontent",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "main": "./nuxt.config.ts",
6
+ "dependencies": {
7
+ "@ffmpeg/ffmpeg": "^0.12.15",
8
+ "@ffmpeg/util": "^0.12.2",
9
+ "@iconify-json/tabler": "^1.2.35",
10
+ "@nuxt/fonts": "^0.14.0",
11
+ "@nuxt/icon": "^2.2.3",
12
+ "@nuxt/kit": "^4.5.2",
13
+ "@nuxtjs/device": "4.0.0",
14
+ "@simplewebauthn/browser": "^13.3.0",
15
+ "@tiptap/extension-color": "^3.20.4",
16
+ "@tiptap/extension-highlight": "^3.20.4",
17
+ "@tiptap/extension-history": "^3.30.1",
18
+ "@tiptap/extension-table": "^3.20.4",
19
+ "@tiptap/extension-table-cell": "^3.20.4",
20
+ "@tiptap/extension-table-header": "^3.20.4",
21
+ "@tiptap/extension-table-row": "^3.20.4",
22
+ "@tiptap/extension-text-align": "^3.20.4",
23
+ "@vite-pwa/nuxt": "^1.1.1",
24
+ "docx-preview": "^0.3.7",
25
+ "echarts": "^6.0.0",
26
+ "html2canvas": "^1.4.1",
27
+ "idb": "^8.0.3",
28
+ "inibase": "1.5.7",
29
+ "inidot": "latest",
30
+ "inison": "^2.0.1",
31
+ "jscanify": "^1.4.3",
32
+ "jspdf": "^4.2.1",
33
+ "naive-ui": "^2.45.3",
34
+ "nuxt": "^4.5.2",
35
+ "nuxt-tiptap-editor": "3.2.0",
36
+ "pdfjs-dist": "^5.5.207",
37
+ "tesseract.js": "^7.0.0",
38
+ "vue": "^3.5.30",
39
+ "vue-draggable-plus": "^0.6.1",
40
+ "vue-echarts": "^8.0.1",
41
+ "vue-router": "^5.0.4",
42
+ "xlsx": "^0.18.5"
43
+ },
44
+ "devDependencies": {
45
+ "@biomejs/biome": "2.4.8"
46
+ },
47
+ "scripts": {
48
+ "lint": "biome check",
49
+ "format": "biome check --write",
50
+ "build": "nuxt build",
51
+ "dev": "nuxt dev",
52
+ "generate": "nuxt generate",
53
+ "preview": "nuxt preview",
54
+ "postinstall": "nuxt prepare"
55
+ }
56
+ }
@@ -0,0 +1,5 @@
1
+ allowBuilds:
2
+ "@parcel/watcher": false
3
+ core-js: false
4
+ esbuild: false
5
+ re2: false
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file