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.
- package/.github/pull_request.yml +18 -0
- package/CONTRIBUTING.md +67 -0
- package/LICENSE +21 -0
- package/README.md +142 -0
- package/app/app.vue +106 -0
- package/app/assets/main.css +974 -0
- package/app/components/Api/EndpointCard.vue +169 -0
- package/app/components/Api/SchemaDocsTable.vue +208 -0
- package/app/components/Asset/Card.vue +1363 -0
- package/app/components/Asset/Grid.vue +295 -0
- package/app/components/Asset/Icon.vue +38 -0
- package/app/components/Asset/Preview.vue +486 -0
- package/app/components/Asset/Scanner.vue +700 -0
- package/app/components/Asset/Thumb.vue +708 -0
- package/app/components/Auth/Reset.vue +99 -0
- package/app/components/Auth/index.vue +346 -0
- package/app/components/ChatInterface.vue +2326 -0
- package/app/components/ChatPagePreview.vue +34 -0
- package/app/components/Column/Array.vue +29 -0
- package/app/components/Column/Asset.vue +21 -0
- package/app/components/Column/Boolean.vue +12 -0
- package/app/components/Column/Color.vue +9 -0
- package/app/components/Column/Date.vue +57 -0
- package/app/components/Column/Edit.vue +215 -0
- package/app/components/Column/Email.vue +9 -0
- package/app/components/Column/Html.vue +27 -0
- package/app/components/Column/Id.vue +20 -0
- package/app/components/Column/Locale.vue +32 -0
- package/app/components/Column/Object.vue +18 -0
- package/app/components/Column/Password.vue +7 -0
- package/app/components/Column/Role.vue +15 -0
- package/app/components/Column/S.vue +14 -0
- package/app/components/Column/Table/Single.vue +49 -0
- package/app/components/Column/Table/index.vue +42 -0
- package/app/components/Column/Tags.vue +31 -0
- package/app/components/Column/Text.vue +9 -0
- package/app/components/Column/Url.vue +9 -0
- package/app/components/Column/index.vue +41 -0
- package/app/components/Dashboard/Editor.vue +221 -0
- package/app/components/Dashboard/Grid.vue +270 -0
- package/app/components/Dashboard/View.vue +131 -0
- package/app/components/Dashboard/Widget/BarChart.vue +73 -0
- package/app/components/Dashboard/Widget/Counter.vue +51 -0
- package/app/components/Dashboard/Widget/LineChart.vue +76 -0
- package/app/components/Dashboard/Widget/PieChart.vue +75 -0
- package/app/components/Dashboard/Widget/Table.vue +94 -0
- package/app/components/Dashboard/WidgetEditor.vue +274 -0
- package/app/components/Data/Array.vue +102 -0
- package/app/components/Data/Html.vue +9 -0
- package/app/components/Data/Icon.vue +9 -0
- package/app/components/Data/Object.vue +10 -0
- package/app/components/Data/S.vue +16 -0
- package/app/components/Data/Table.vue +53 -0
- package/app/components/Data/Value.vue +34 -0
- package/app/components/Data/index.vue +14 -0
- package/app/components/Field/Array.vue +324 -0
- package/app/components/Field/Asset/Actions.vue +97 -0
- package/app/components/Field/Asset/index.vue +639 -0
- package/app/components/Field/Boolean.vue +26 -0
- package/app/components/Field/Checkbox.vue +48 -0
- package/app/components/Field/Color.vue +27 -0
- package/app/components/Field/Date.vue +30 -0
- package/app/components/Field/Email.vue +51 -0
- package/app/components/Field/EmailTemplate.vue +420 -0
- package/app/components/Field/Html/ColorPicker.vue +127 -0
- package/app/components/Field/Html/Editor.vue +544 -0
- package/app/components/Field/Html/index.vue +25 -0
- package/app/components/Field/Icon.vue +114 -0
- package/app/components/Field/JSON.vue +113 -0
- package/app/components/Field/Mention.vue +36 -0
- package/app/components/Field/Number.vue +27 -0
- package/app/components/Field/Object.vue +92 -0
- package/app/components/Field/Password.vue +55 -0
- package/app/components/Field/Radio.vue +47 -0
- package/app/components/Field/S.vue +44 -0
- package/app/components/Field/Select.vue +49 -0
- package/app/components/Field/Table.vue +348 -0
- package/app/components/Field/Tags.vue +113 -0
- package/app/components/Field/Text.vue +31 -0
- package/app/components/Field/Textarea.vue +33 -0
- package/app/components/Field/Url.vue +40 -0
- package/app/components/Field/Wrapper.vue +128 -0
- package/app/components/Field/index.vue +68 -0
- package/app/components/FloatingChatbot.vue +73 -0
- package/app/components/Form/Card.vue +151 -0
- package/app/components/Form/Drawer.vue +195 -0
- package/app/components/Form/index.vue +621 -0
- package/app/components/Header.vue +328 -0
- package/app/components/Offline/ConflictModal.vue +200 -0
- package/app/components/Offline/SyncStatus.vue +249 -0
- package/app/components/PlatformFeatureLanding.vue +65 -0
- package/app/components/Table/Backups.vue +638 -0
- package/app/components/Table/Flows.vue +814 -0
- package/app/components/Table/Grid.vue +296 -0
- package/app/components/Table/Icon.vue +36 -0
- package/app/components/Table/Logs.vue +181 -0
- package/app/components/Table/Schedules.vue +722 -0
- package/app/components/Table/Search/Button.vue +256 -0
- package/app/components/Table/Search/Items.vue +286 -0
- package/app/components/Table/Search/index.vue +87 -0
- package/app/components/Table/Settings/Schema.vue +801 -0
- package/app/components/Table/Settings/index.vue +631 -0
- package/app/components/Table/TranslateDrawer.vue +526 -0
- package/app/components/Table/Views/Kanban.vue +289 -0
- package/app/components/Table/Views/Table.vue +1273 -0
- package/app/components/Table/index.vue +890 -0
- package/app/composables/Translation/define.ts +41 -0
- package/app/composables/Translation/fetch.ts +107 -0
- package/app/composables/Translation/languages.ts +1 -0
- package/app/composables/Translation/loadCoreTranslations.ts +38 -0
- package/app/composables/Translation/translate.ts +250 -0
- package/app/composables/databaseCookies.ts +79 -0
- package/app/composables/fieldValidator.ts +72 -0
- package/app/composables/fieldsList.ts +301 -0
- package/app/composables/formatDatabase.ts +101 -0
- package/app/composables/index.ts +444 -0
- package/app/composables/openDrawer.ts +118 -0
- package/app/composables/optimizeFile.ts +287 -0
- package/app/composables/renderLabel.ts +88 -0
- package/app/composables/schemaClipboard.ts +95 -0
- package/app/composables/search.ts +353 -0
- package/app/composables/setThemeConfig.ts +48 -0
- package/app/composables/translationValue.ts +169 -0
- package/app/composables/useAssetPreview.ts +84 -0
- package/app/composables/useAssetUploader.ts +56 -0
- package/app/composables/useDashboardData.ts +310 -0
- package/app/composables/useDocumentThumbnail.ts +351 -0
- package/app/composables/useEcharts.ts +33 -0
- package/app/composables/useLocalDatabaseConfig.ts +51 -0
- package/app/composables/useOcr.ts +300 -0
- package/app/composables/useOfflineFetch.ts +194 -0
- package/app/composables/useOfflineItem.ts +107 -0
- package/app/composables/useOfflineQueue.ts +302 -0
- package/app/composables/useOfflineSync.ts +235 -0
- package/app/composables/usePasskeyAuth.ts +156 -0
- package/app/composables/usePdfCompressor.ts +180 -0
- package/app/composables/usePlatformRedirect.ts +72 -0
- package/app/composables/useRealtimeSync.ts +233 -0
- package/app/composables/useReferencedItems.ts +180 -0
- package/app/composables/useScanner.ts +664 -0
- package/app/composables/useSubscription.ts +650 -0
- package/app/composables/useThumbnailCache.ts +136 -0
- package/app/composables/useVideoCompressor.ts +194 -0
- package/app/error.vue +112 -0
- package/app/layouts/api.vue +188 -0
- package/app/layouts/dashboard.vue +91 -0
- package/app/layouts/default.vue +228 -0
- package/app/layouts/table.vue +471 -0
- package/app/locales/ar.ts +996 -0
- package/app/locales/en.ts +655 -0
- package/app/locales/es.ts +996 -0
- package/app/locales/fr.ts +997 -0
- package/app/middleware/dashboard.ts +33 -0
- package/app/middleware/database.ts +83 -0
- package/app/middleware/global.ts +1 -0
- package/app/middleware/sid-ingest.global.ts +29 -0
- package/app/middleware/table.ts +54 -0
- package/app/middleware/user.ts +26 -0
- package/app/pages/[[database]]/admin/api/auth/index.vue +306 -0
- package/app/pages/[[database]]/admin/api/index.vue +18 -0
- package/app/pages/[[database]]/admin/api/tables/[table]/index.vue +497 -0
- package/app/pages/[[database]]/admin/api/tables/index.vue +87 -0
- package/app/pages/[[database]]/admin/billing/index.vue +16 -0
- package/app/pages/[[database]]/admin/dashboards/[id]/edit.vue +66 -0
- package/app/pages/[[database]]/admin/dashboards/[id]/index.vue +117 -0
- package/app/pages/[[database]]/admin/dashboards/index.vue +20 -0
- package/app/pages/[[database]]/admin/index.vue +28 -0
- package/app/pages/[[database]]/admin/settings.vue +526 -0
- package/app/pages/[[database]]/admin/tables/[table]/[id]/edit.vue +143 -0
- package/app/pages/[[database]]/admin/tables/[table]/[id]/index.vue +146 -0
- package/app/pages/[[database]]/admin/tables/[table]/flows.vue +10 -0
- package/app/pages/[[database]]/admin/tables/[table]/index.vue +10 -0
- package/app/pages/[[database]]/admin/tables/[table]/new.vue +12 -0
- package/app/pages/[[database]]/admin/tables/[table]/schedules.vue +10 -0
- package/app/pages/[[database]]/admin/tables/[table]/settings.vue +30 -0
- package/app/pages/[[database]]/admin/tables/assets/[...path].vue +24 -0
- package/app/pages/[[database]]/admin/tables/assets/flows.vue +10 -0
- package/app/pages/[[database]]/admin/tables/backups/index.vue +10 -0
- package/app/pages/[[database]]/admin/tables/blocks/index.vue +16 -0
- package/app/pages/[[database]]/admin/tables/index.vue +20 -0
- package/app/pages/[[database]]/admin/tables/pages/index.vue +16 -0
- package/app/pages/[[database]]/admin/tables/templates/index.vue +16 -0
- package/app/pages/[[database]]/api/index.vue +120 -0
- package/app/pages/[[database]]/auth/index.vue +12 -0
- package/app/pages/[[database]]/auth/reset.vue +10 -0
- package/app/pages/[[database]]/index.vue +10 -0
- package/app/plugins/offline-warmup.client.ts +53 -0
- package/app/plugins/template-globals.ts +9 -0
- package/app/spa-loading-template.html +93 -0
- package/biome.json +53 -0
- package/index.d.ts +380 -0
- package/modules/naiveui.ts +41 -0
- package/nuxt.config.ts +269 -0
- package/package.json +56 -0
- package/pnpm-workspace.yaml +5 -0
- package/public/apple-touch-icon.png +0 -0
- package/public/favicon-16x16.png +0 -0
- package/public/favicon-32x32.png +0 -0
- package/public/favicon.ico +0 -0
- package/public/pwa-192x192.png +0 -0
- package/public/pwa-512x512.png +0 -0
- package/public/pwa-maskable-192x192.png +0 -0
- package/public/pwa-maskable-512x512.png +0 -0
- package/public/vendor/opencv.js +48 -0
- 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
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|