@aerogel/vite 0.1.1 → 0.1.2
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/dist/aerogel-vite.d.ts +7 -1
- package/dist/aerogel-vite.js +122 -110
- package/dist/aerogel-vite.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +15 -8
- package/src/lib/options.ts +7 -1
- package/src/lib/solid.ts +5 -1
package/dist/aerogel-vite.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ComponentResolver } from 'unplugin-vue-components';
|
|
2
|
+
import { IconResource } from 'vite-plugin-pwa';
|
|
2
3
|
import { ManifestEntry } from 'workbox-build';
|
|
3
4
|
import { Plugin as Plugin_2 } from 'vite';
|
|
4
5
|
|
|
@@ -38,10 +39,15 @@ export declare interface Options {
|
|
|
38
39
|
name?: string;
|
|
39
40
|
description?: string;
|
|
40
41
|
themeColor?: string;
|
|
41
|
-
icons?: Record<string, string
|
|
42
|
+
icons?: Record<string, string> | IconResource[];
|
|
42
43
|
baseUrl?: string;
|
|
43
44
|
static404Redirect?: boolean | string;
|
|
44
45
|
solidClientId?: boolean | ClientIDDocument;
|
|
46
|
+
pwa?: {
|
|
47
|
+
development?: boolean;
|
|
48
|
+
includeAssets?: string[];
|
|
49
|
+
additionalManifestEntries?: ManifestEntry[];
|
|
50
|
+
};
|
|
45
51
|
}
|
|
46
52
|
|
|
47
53
|
export { }
|
package/dist/aerogel-vite.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { dirname as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { md5 as
|
|
1
|
+
import { dirname as M, resolve as u } from "node:path";
|
|
2
|
+
import w from "@tailwindcss/vite";
|
|
3
|
+
import j from "@vitejs/plugin-vue";
|
|
4
|
+
import { md5 as A, objectWithoutEmpty as p, stringMatchAll as O, toString as x, arrayFilter as C, after as E } from "@noeldemartin/utils";
|
|
5
5
|
import { VitePWA as H } from "vite-plugin-pwa";
|
|
6
|
-
import
|
|
7
|
-
import { execSync as
|
|
8
|
-
import { existsSync as
|
|
9
|
-
import
|
|
10
|
-
const
|
|
6
|
+
import P from "mustache";
|
|
7
|
+
import { execSync as $ } from "node:child_process";
|
|
8
|
+
import { existsSync as S, readFileSync as l } from "node:fs";
|
|
9
|
+
import I from "image-size";
|
|
10
|
+
const k = `<!DOCTYPE html>
|
|
11
11
|
<html lang="en">
|
|
12
12
|
<head>
|
|
13
13
|
<meta charset="UTF-8" />
|
|
@@ -64,20 +64,21 @@ const I = `<!DOCTYPE html>
|
|
|
64
64
|
</body>
|
|
65
65
|
</html>
|
|
66
66
|
`;
|
|
67
|
-
function
|
|
67
|
+
function _(e, t, o) {
|
|
68
68
|
const s = o.static404Redirect ?? process.env.NODE_ENV === "production";
|
|
69
69
|
o.lib || !s || e.emitFile({
|
|
70
70
|
type: "asset",
|
|
71
71
|
fileName: typeof o.static404Redirect == "string" ? o.static404Redirect : "404.html",
|
|
72
|
-
source:
|
|
72
|
+
source: P.render(k, { app: t })
|
|
73
73
|
});
|
|
74
74
|
}
|
|
75
|
-
function
|
|
75
|
+
function m(e, t) {
|
|
76
|
+
var c;
|
|
76
77
|
if (!e.baseUrl)
|
|
77
78
|
return console.warn(
|
|
78
79
|
"It was not possible to create a Solid ClientID document because the baseUrl was not provided, to remove this warning add a `baseUrl` option in the Aerogel vite plugin options."
|
|
79
80
|
), null;
|
|
80
|
-
const o = e.baseUrl.endsWith("/") ? e.baseUrl : `${e.baseUrl}/`, s = t.icons && (t.icons["512x512"] ?? Object.values(t.icons).pop()),
|
|
81
|
+
const o = e.baseUrl.endsWith("/") ? e.baseUrl : `${e.baseUrl}/`, s = t.icons && (Array.isArray(t.icons) ? (c = t.icons[0]) == null ? void 0 : c.src : t.icons["512x512"] ?? Object.values(t.icons).pop()), r = {
|
|
81
82
|
"@context": "https://www.w3.org/ns/solid/oidc-context.jsonld",
|
|
82
83
|
client_id: `${o}clientid.jsonld`,
|
|
83
84
|
client_name: e.name,
|
|
@@ -87,52 +88,52 @@ function p(e, t) {
|
|
|
87
88
|
grant_types: ["refresh_token", "authorization_code"],
|
|
88
89
|
response_types: ["code"]
|
|
89
90
|
};
|
|
90
|
-
return s && (
|
|
91
|
+
return s && (r.logo_uri = o + s), r;
|
|
91
92
|
}
|
|
92
|
-
function
|
|
93
|
-
var
|
|
94
|
-
if (!((
|
|
93
|
+
function T(e, t, o) {
|
|
94
|
+
var c;
|
|
95
|
+
if (!((c = t.plugins) != null && c.includes("solid")))
|
|
95
96
|
return;
|
|
96
|
-
const s =
|
|
97
|
+
const s = m(t, o);
|
|
97
98
|
if (!s)
|
|
98
99
|
return;
|
|
99
|
-
const
|
|
100
|
+
const r = JSON.stringify(s);
|
|
100
101
|
e.emitFile({
|
|
101
102
|
type: "asset",
|
|
102
103
|
fileName: "clientid.jsonld",
|
|
103
|
-
source:
|
|
104
|
+
source: r
|
|
104
105
|
}), t.additionalManifestEntries.push({
|
|
105
106
|
url: "clientid.jsonld",
|
|
106
|
-
revision:
|
|
107
|
+
revision: A(r)
|
|
107
108
|
});
|
|
108
109
|
}
|
|
109
|
-
function
|
|
110
|
-
const o = t.solidClientId ?? !0, s = typeof o != "boolean" ? o :
|
|
111
|
-
return o && s && (
|
|
110
|
+
function D(e, t) {
|
|
111
|
+
const o = t.solidClientId ?? !0, s = typeof o != "boolean" ? o : m(e, t), r = {};
|
|
112
|
+
return o && s && (r.clientID = s), `export default ${JSON.stringify(r)};`;
|
|
112
113
|
}
|
|
113
|
-
function
|
|
114
|
-
return (o, s,
|
|
115
|
-
var
|
|
116
|
-
if (!((
|
|
117
|
-
|
|
114
|
+
function U(e, t) {
|
|
115
|
+
return (o, s, r) => {
|
|
116
|
+
var i;
|
|
117
|
+
if (!((i = o.url) != null && i.endsWith("/clientid.jsonld"))) {
|
|
118
|
+
r();
|
|
118
119
|
return;
|
|
119
120
|
}
|
|
120
|
-
const
|
|
121
|
-
if (!
|
|
122
|
-
|
|
121
|
+
const c = m(e, t);
|
|
122
|
+
if (!c) {
|
|
123
|
+
r();
|
|
123
124
|
return;
|
|
124
125
|
}
|
|
125
|
-
s.statusCode = 200, s.setHeader("Content-Type", "application/ld+json"), s.write(JSON.stringify(
|
|
126
|
+
s.statusCode = 200, s.setHeader("Content-Type", "application/ld+json"), s.write(JSON.stringify(c), "utf-8"), s.end();
|
|
126
127
|
};
|
|
127
128
|
}
|
|
128
|
-
function
|
|
129
|
+
function L() {
|
|
129
130
|
try {
|
|
130
|
-
return
|
|
131
|
+
return $("git rev-parse HEAD").toString();
|
|
131
132
|
} catch {
|
|
132
133
|
return "?";
|
|
133
134
|
}
|
|
134
135
|
}
|
|
135
|
-
const
|
|
136
|
+
const N = {
|
|
136
137
|
apng: "image/apng",
|
|
137
138
|
avif: "image/avif",
|
|
138
139
|
bmp: "image/bmp",
|
|
@@ -150,43 +151,43 @@ const _ = {
|
|
|
150
151
|
tiff: "image/tiff",
|
|
151
152
|
webp: "image/webp"
|
|
152
153
|
};
|
|
153
|
-
function
|
|
154
|
+
function v(e) {
|
|
154
155
|
var o;
|
|
155
156
|
const t = (o = e.match(/\.([^.]+)$/)) == null ? void 0 : o[1];
|
|
156
|
-
return (t &&
|
|
157
|
+
return (t && N[t]) ?? null;
|
|
157
158
|
}
|
|
158
|
-
function
|
|
159
|
-
|
|
159
|
+
function y(e, t) {
|
|
160
|
+
S(t) && (e.locales = JSON.parse(l(t).toString()));
|
|
160
161
|
}
|
|
161
|
-
function
|
|
162
|
+
function F(e) {
|
|
162
163
|
var t;
|
|
163
164
|
return e.repository ? typeof e.repository == "object" ? e.repository.url.replace(`.${e.repository.type}`, "") : (t = e.repository) == null ? void 0 : t.replace("github:", "https://github.com/") : null;
|
|
164
165
|
}
|
|
165
|
-
function
|
|
166
|
+
function R(e) {
|
|
166
167
|
return Object.keys(e.dependencies ?? {}).filter((t) => t.startsWith("@aerogel/plugin-")).map((t) => t.substring(16));
|
|
167
168
|
}
|
|
168
|
-
function
|
|
169
|
-
if (!
|
|
169
|
+
function b(e, t) {
|
|
170
|
+
if (!S(t))
|
|
170
171
|
return;
|
|
171
|
-
const o = JSON.parse(
|
|
172
|
+
const o = JSON.parse(l(t).toString()), s = p({
|
|
172
173
|
version: o.version,
|
|
173
|
-
sourceUrl:
|
|
174
|
-
plugins:
|
|
174
|
+
sourceUrl: F(o),
|
|
175
|
+
plugins: R(o)
|
|
175
176
|
});
|
|
176
177
|
Object.assign(e, s);
|
|
177
178
|
}
|
|
178
|
-
function
|
|
179
|
-
const t =
|
|
179
|
+
function z(e) {
|
|
180
|
+
const t = l(e), o = I(t);
|
|
180
181
|
return `
|
|
181
182
|
<meta property="og:image" content="${e}" />
|
|
182
183
|
<meta property="og:image:width" content="${o.width}" />
|
|
183
184
|
<meta property="og:image:height" content="${o.height}" />
|
|
184
185
|
`;
|
|
185
186
|
}
|
|
186
|
-
function
|
|
187
|
+
function B(e) {
|
|
187
188
|
return `<style>${this.readFile(e)}</style>`;
|
|
188
189
|
}
|
|
189
|
-
function
|
|
190
|
+
function V(e = {}) {
|
|
190
191
|
const t = e.maskIconColor ?? this.app.themeColor;
|
|
191
192
|
return `
|
|
192
193
|
<link rel="apple-touch-icon" sizes="180x180" href="${this.app.basePath}apple-touch-icon.png" />
|
|
@@ -195,10 +196,10 @@ function z(e = {}) {
|
|
|
195
196
|
<link rel="mask-icon" href="${this.app.basePath}safari-pinned-tab.svg" color="${t}" />
|
|
196
197
|
`;
|
|
197
198
|
}
|
|
198
|
-
function
|
|
199
|
+
function W(e) {
|
|
199
200
|
return `<script>${this.readFile(e)}<\/script>`;
|
|
200
201
|
}
|
|
201
|
-
function
|
|
202
|
+
function q(e = {}) {
|
|
202
203
|
const t = this.app.baseUrl && `<meta property="og:url" content="${this.app.baseUrl}" />`, o = this.app.description && `
|
|
203
204
|
<meta property="og:description" content="${this.app.description}" />
|
|
204
205
|
<meta name="description" content="${this.app.description}" />
|
|
@@ -212,10 +213,10 @@ function B(e = {}) {
|
|
|
212
213
|
<meta property="og:type" content="website" />
|
|
213
214
|
${t ?? ""}
|
|
214
215
|
${o ?? ""}
|
|
215
|
-
${e.image ?
|
|
216
|
+
${e.image ? z(e.image) : ""}
|
|
216
217
|
`;
|
|
217
218
|
}
|
|
218
|
-
function
|
|
219
|
+
function J() {
|
|
219
220
|
return `
|
|
220
221
|
<script>
|
|
221
222
|
setTimeout(function() {
|
|
@@ -228,42 +229,41 @@ function V() {
|
|
|
228
229
|
<\/script>
|
|
229
230
|
`;
|
|
230
231
|
}
|
|
231
|
-
function
|
|
232
|
+
function G(e) {
|
|
232
233
|
return this.readFile(e);
|
|
233
234
|
}
|
|
234
|
-
const
|
|
235
|
+
const Y = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
235
236
|
__proto__: null,
|
|
236
|
-
css:
|
|
237
|
-
favicons:
|
|
238
|
-
js:
|
|
239
|
-
socialMeta:
|
|
240
|
-
splashJs:
|
|
241
|
-
svg:
|
|
237
|
+
css: B,
|
|
238
|
+
favicons: V,
|
|
239
|
+
js: W,
|
|
240
|
+
socialMeta: q,
|
|
241
|
+
splashJs: J,
|
|
242
|
+
svg: G
|
|
242
243
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
243
|
-
function
|
|
244
|
+
function K(e, t) {
|
|
244
245
|
return Function(`with (this) { return ${e} }`).bind({
|
|
245
|
-
...
|
|
246
|
+
...Y,
|
|
246
247
|
...t
|
|
247
248
|
})();
|
|
248
249
|
}
|
|
249
|
-
function
|
|
250
|
-
const s =
|
|
251
|
-
for (const
|
|
250
|
+
function Q(e, t, o) {
|
|
251
|
+
const s = O(e, /{{(.*?)}}/g), r = M(t), c = (i) => l(u(r, i)).toString();
|
|
252
|
+
for (const i of s)
|
|
252
253
|
e = e.replace(
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
254
|
+
i[0],
|
|
255
|
+
x(
|
|
256
|
+
K(i[1], {
|
|
256
257
|
app: o,
|
|
257
|
-
readFile:
|
|
258
|
+
readFile: c
|
|
258
259
|
})
|
|
259
260
|
)
|
|
260
261
|
);
|
|
261
262
|
return e;
|
|
262
263
|
}
|
|
263
|
-
const
|
|
264
|
+
const X = Object.keys(
|
|
264
265
|
{
|
|
265
266
|
"../../../core/src/components/AppLayout.vue": 0,
|
|
266
|
-
"../../../core/src/components/AppModals.vue": 0,
|
|
267
267
|
"../../../core/src/components/AppOverlays.vue": 0,
|
|
268
268
|
"../../../core/src/components/AppToasts.vue": 0,
|
|
269
269
|
"../../../core/src/components/headless/HeadlessButton.vue": 0,
|
|
@@ -292,7 +292,13 @@ const Y = Object.keys(
|
|
|
292
292
|
"../../../core/src/components/ui/AlertModal.vue": 0,
|
|
293
293
|
"../../../core/src/components/ui/Button.vue": 0,
|
|
294
294
|
"../../../core/src/components/ui/Checkbox.vue": 0,
|
|
295
|
+
"../../../core/src/components/ui/Combobox.vue": 0,
|
|
296
|
+
"../../../core/src/components/ui/ComboboxLabel.vue": 0,
|
|
297
|
+
"../../../core/src/components/ui/ComboboxOption.vue": 0,
|
|
298
|
+
"../../../core/src/components/ui/ComboboxOptions.vue": 0,
|
|
299
|
+
"../../../core/src/components/ui/ComboboxTrigger.vue": 0,
|
|
295
300
|
"../../../core/src/components/ui/ConfirmModal.vue": 0,
|
|
301
|
+
"../../../core/src/components/ui/Details.vue": 0,
|
|
296
302
|
"../../../core/src/components/ui/DropdownMenu.vue": 0,
|
|
297
303
|
"../../../core/src/components/ui/DropdownMenuOption.vue": 0,
|
|
298
304
|
"../../../core/src/components/ui/DropdownMenuOptions.vue": 0,
|
|
@@ -309,7 +315,6 @@ const Y = Object.keys(
|
|
|
309
315
|
"../../../core/src/components/ui/LoadingModal.vue": 0,
|
|
310
316
|
"../../../core/src/components/ui/Markdown.vue": 0,
|
|
311
317
|
"../../../core/src/components/ui/Modal.vue": 0,
|
|
312
|
-
"../../../core/src/components/ui/ModalContext.vue": 0,
|
|
313
318
|
"../../../core/src/components/ui/ProgressBar.vue": 0,
|
|
314
319
|
"../../../core/src/components/ui/PromptModal.vue": 0,
|
|
315
320
|
"../../../core/src/components/ui/Select.vue": 0,
|
|
@@ -322,12 +327,13 @@ const Y = Object.keys(
|
|
|
322
327
|
"../../../core/src/components/ui/StartupCrash.vue": 0,
|
|
323
328
|
"../../../core/src/components/ui/Switch.vue": 0,
|
|
324
329
|
"../../../core/src/components/ui/TextArea.vue": 0,
|
|
325
|
-
"../../../core/src/components/ui/Toast.vue": 0
|
|
330
|
+
"../../../core/src/components/ui/Toast.vue": 0,
|
|
331
|
+
"../../../core/src/components/vue/Provide.vue": 0
|
|
326
332
|
}
|
|
327
333
|
).map((e) => {
|
|
328
334
|
var t;
|
|
329
335
|
return ((t = e.split("/").pop()) == null ? void 0 : t.replace(".vue", "")) ?? "";
|
|
330
|
-
}),
|
|
336
|
+
}), Z = Object.keys(
|
|
331
337
|
{
|
|
332
338
|
"../../../plugin-solid/src/components/SolidAvatar.vue": 0,
|
|
333
339
|
"../../../plugin-solid/src/components/SolidImage.vue": 0,
|
|
@@ -336,7 +342,7 @@ const Y = Object.keys(
|
|
|
336
342
|
).map((e) => {
|
|
337
343
|
var t;
|
|
338
344
|
return ((t = e.split("/").pop()) == null ? void 0 : t.replace(".vue", "")) ?? "";
|
|
339
|
-
}),
|
|
345
|
+
}), ee = Object.keys(
|
|
340
346
|
{
|
|
341
347
|
"../../../plugin-local-first/src/components/Account.vue": 0,
|
|
342
348
|
"../../../plugin-local-first/src/components/AccountLoggedIn.vue": 0,
|
|
@@ -348,7 +354,7 @@ const Y = Object.keys(
|
|
|
348
354
|
).map((e) => {
|
|
349
355
|
var t;
|
|
350
356
|
return ((t = e.split("/").pop()) == null ? void 0 : t.replace(".vue", "")) ?? "";
|
|
351
|
-
}),
|
|
357
|
+
}), te = Object.keys(
|
|
352
358
|
{
|
|
353
359
|
"../../../plugin-routing/src/components/Page.vue": 0
|
|
354
360
|
}
|
|
@@ -356,31 +362,32 @@ const Y = Object.keys(
|
|
|
356
362
|
var t;
|
|
357
363
|
return ((t = e.split("/").pop()) == null ? void 0 : t.replace(".vue", "")) ?? "";
|
|
358
364
|
});
|
|
359
|
-
function
|
|
365
|
+
function pe() {
|
|
360
366
|
return {
|
|
361
367
|
type: "component",
|
|
362
368
|
resolve: (e) => {
|
|
363
|
-
if (
|
|
369
|
+
if (X.includes(e))
|
|
364
370
|
return { name: e, as: e, from: "@aerogel/core" };
|
|
365
|
-
if (
|
|
371
|
+
if (Z.includes(e))
|
|
366
372
|
return { name: e, as: e, from: "@aerogel/plugin-solid" };
|
|
367
|
-
if (
|
|
373
|
+
if (ee.includes(e))
|
|
368
374
|
return { name: e, as: e, from: "@aerogel/plugin-local-first" };
|
|
369
|
-
if (
|
|
375
|
+
if (te.includes(e))
|
|
370
376
|
return { name: e, as: e, from: "@aerogel/plugin-routing" };
|
|
371
377
|
}
|
|
372
378
|
};
|
|
373
379
|
}
|
|
374
|
-
function
|
|
380
|
+
function me(e = {}) {
|
|
381
|
+
var r, c, i;
|
|
375
382
|
const t = {
|
|
376
383
|
name: e.name ?? "App",
|
|
377
384
|
version: "?",
|
|
378
|
-
sourceHash:
|
|
385
|
+
sourceHash: L(),
|
|
379
386
|
description: e.description,
|
|
380
387
|
basePath: "/",
|
|
381
|
-
baseUrl: e.baseUrl,
|
|
388
|
+
baseUrl: process.env.AEROGEL_BASE_URL ?? e.baseUrl,
|
|
382
389
|
themeColor: e.themeColor ?? "#ffffff",
|
|
383
|
-
additionalManifestEntries: []
|
|
390
|
+
additionalManifestEntries: ((r = e.pwa) == null ? void 0 : r.additionalManifestEntries) ?? []
|
|
384
391
|
}, o = {
|
|
385
392
|
"virtual:aerogel"() {
|
|
386
393
|
const n = {
|
|
@@ -393,57 +400,62 @@ function le(e = {}) {
|
|
|
393
400
|
};
|
|
394
401
|
return `export default ${JSON.stringify(n)};`;
|
|
395
402
|
},
|
|
396
|
-
"virtual:aerogel-solid": () =>
|
|
403
|
+
"virtual:aerogel-solid": () => D(t, e)
|
|
397
404
|
}, s = {
|
|
398
405
|
name: "vite:aerogel",
|
|
399
406
|
buildStart(n) {
|
|
400
|
-
!Array.isArray(n.input) || !n.input[0] || (
|
|
407
|
+
!Array.isArray(n.input) || !n.input[0] || (b(t, u(n.input[0], "../package.json")), y(t, u(n.input[0], "../src/lang/locales.json")));
|
|
401
408
|
},
|
|
402
409
|
configureServer(n) {
|
|
403
|
-
var
|
|
404
|
-
(
|
|
405
|
-
var
|
|
406
|
-
await
|
|
407
|
-
}), n.middlewares.use(
|
|
410
|
+
var a;
|
|
411
|
+
(a = n.httpServer) == null || a.once("listening", async () => {
|
|
412
|
+
var d, g, h, f;
|
|
413
|
+
await E({ ms: 100 }), t.baseUrl = ((g = (d = n.resolvedUrls) == null ? void 0 : d.network) == null ? void 0 : g[0]) ?? ((f = (h = n.resolvedUrls) == null ? void 0 : h.local) == null ? void 0 : f[0]) ?? t.baseUrl;
|
|
414
|
+
}), n.middlewares.use(U(t, e)), b(t, `${n.config.root}/package.json`), y(t, `${n.config.root}/src/lang/locales.json`);
|
|
408
415
|
},
|
|
409
416
|
config: (n) => (t.basePath = n.base ?? t.basePath, n.optimizeDeps = n.optimizeDeps ?? {}, n.optimizeDeps.exclude = [...n.optimizeDeps.exclude ?? [], ...Object.keys(o)], n.define = {
|
|
410
417
|
...n.define ?? {},
|
|
411
418
|
__AEROGEL_ENV__: JSON.stringify(process.env.NODE_ENV)
|
|
412
419
|
}, n),
|
|
413
420
|
generateBundle() {
|
|
414
|
-
|
|
421
|
+
_(this, t, e), T(this, t, e);
|
|
415
422
|
},
|
|
416
423
|
load: (n) => {
|
|
417
|
-
var
|
|
418
|
-
return (
|
|
424
|
+
var a;
|
|
425
|
+
return (a = o[n]) == null ? void 0 : a.call(o);
|
|
419
426
|
},
|
|
420
427
|
resolveId: (n) => n in o ? n : void 0,
|
|
421
428
|
transformIndexHtml: {
|
|
422
429
|
order: "pre",
|
|
423
|
-
handler: (n,
|
|
430
|
+
handler: (n, a) => Q(n, a.filename, t)
|
|
424
431
|
}
|
|
425
432
|
};
|
|
426
|
-
return
|
|
427
|
-
|
|
428
|
-
|
|
433
|
+
return C([
|
|
434
|
+
j(),
|
|
435
|
+
w(),
|
|
429
436
|
!e.lib && H({
|
|
430
437
|
registerType: "autoUpdate",
|
|
438
|
+
devOptions: { enabled: ((c = e.pwa) == null ? void 0 : c.development) ?? !1 },
|
|
431
439
|
includeAssets: [
|
|
432
440
|
"apple-touch-icon.png",
|
|
433
441
|
"favicon-32x32.png",
|
|
434
442
|
"favicon-16x16.png",
|
|
435
|
-
"safari-pinned-tab.svg"
|
|
443
|
+
"safari-pinned-tab.svg",
|
|
444
|
+
...((i = e.pwa) == null ? void 0 : i.includeAssets) ?? []
|
|
436
445
|
],
|
|
437
|
-
manifest:
|
|
446
|
+
manifest: p({
|
|
438
447
|
name: t.name,
|
|
439
448
|
short_name: t.name,
|
|
440
449
|
description: t.description,
|
|
441
450
|
theme_color: e.themeColor,
|
|
442
|
-
icons: e.icons &&
|
|
443
|
-
|
|
451
|
+
icons: e.icons && (Array.isArray(e.icons) ? e.icons.map((n) => ({
|
|
452
|
+
...n,
|
|
453
|
+
type: n.type ?? v(n.src) ?? void 0
|
|
454
|
+
})) : Object.entries(e.icons).map(([n, a]) => p({
|
|
455
|
+
src: a,
|
|
444
456
|
sizes: n,
|
|
445
|
-
type:
|
|
446
|
-
}))
|
|
457
|
+
type: v(a) ?? void 0
|
|
458
|
+
})))
|
|
447
459
|
}),
|
|
448
460
|
workbox: {
|
|
449
461
|
maximumFileSizeToCacheInBytes: 1e7,
|
|
@@ -454,7 +466,7 @@ function le(e = {}) {
|
|
|
454
466
|
]).flat();
|
|
455
467
|
}
|
|
456
468
|
export {
|
|
457
|
-
|
|
458
|
-
|
|
469
|
+
pe as AerogelResolver,
|
|
470
|
+
me as default
|
|
459
471
|
};
|
|
460
472
|
//# sourceMappingURL=aerogel-vite.js.map
|
package/dist/aerogel-vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aerogel-vite.js","sources":["../src/templates/404.html?raw","../src/lib/404.ts","../src/lib/solid.ts","../src/lib/git.ts","../src/lib/media-types.ts","../src/lib/lang.ts","../src/lib/package-parser.ts","../src/lib/html-eval.ts","../src/lib/html.ts","../src/resolvers/AerogelResolver.ts","../src/index.ts"],"sourcesContent":["export default \"<!DOCTYPE html>\\n<html lang=\\\"en\\\">\\n <head>\\n <meta charset=\\\"UTF-8\\\" />\\n <link rel=\\\"icon\\\" href=\\\"/favicon.ico\\\" />\\n <meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1.0\\\" />\\n <title>{{ app.name }}</title>\\n <script>\\n (function () {\\n const basePath = '{{{ app.basePath }}}';\\n const url = new URL(location.href);\\n\\n if (!url.pathname.startsWith(basePath)) {\\n const link = document.createElement('link');\\n\\n link.rel = 'stylesheet';\\n link.href = 'https://cdn.simplecss.org/simple.min.css';\\n\\n document.head.appendChild(link);\\n\\n return;\\n }\\n\\n const queryParameters = {};\\n\\n url.searchParams.forEach((value, key) => (queryParameters[key] = value));\\n\\n localStorage.setItem(\\n 'static-404-redirect',\\n JSON.stringify({\\n path: url.pathname.substring(basePath.length - 1),\\n hash: url.hash,\\n query: queryParameters,\\n })\\n );\\n\\n location.href = basePath;\\n })();\\n </script>\\n\\n <style>\\n body {\\n width: 100vw;\\n height: 100vh;\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n }\\n </style>\\n </head>\\n <body>\\n <h1>404 | Page not found</h1>\\n <a href=\\\"/\\\">go home</a>\\n </body>\\n</html>\\n\"","import Mustache from 'mustache';\nimport type { PluginContext } from 'rollup';\n\nimport type { AppInfo, Options } from '@aerogel/vite/lib/options';\n\nimport static404RedirectHTML from '../templates/404.html?raw';\n\nexport function generate404Assets(context: PluginContext, app: AppInfo, options: Options): void {\n const static404Redirect = options.static404Redirect ?? process.env.NODE_ENV === 'production';\n\n if (options.lib || !static404Redirect) {\n return;\n }\n\n context.emitFile({\n type: 'asset',\n fileName: typeof options.static404Redirect === 'string' ? options.static404Redirect : '404.html',\n source: Mustache.render(static404RedirectHTML, { app }),\n });\n}\n","import { md5 } from '@noeldemartin/utils';\nimport type { Connect } from 'vite';\nimport type { PluginContext } from 'rollup';\n\nimport type { AppInfo, Options } from '@aerogel/vite/lib/options';\n\nimport type { VirtualAerogelSolid } from 'virtual:aerogel-solid';\n\nfunction createClientIDDocument(app: AppInfo, options: Options): ClientIDDocument | null {\n if (!app.baseUrl) {\n // eslint-disable-next-line no-console\n console.warn(\n 'It was not possible to create a Solid ClientID document because the baseUrl ' +\n 'was not provided, to remove this warning add a `baseUrl` option in the Aerogel vite plugin options.',\n );\n\n return null;\n }\n\n const baseUrl = app.baseUrl.endsWith('/') ? app.baseUrl : `${app.baseUrl}/`;\n const logoPublicPath = options.icons && (options.icons['512x512'] ?? Object.values(options.icons).pop());\n const clientID: ClientIDDocument = {\n '@context': 'https://www.w3.org/ns/solid/oidc-context.jsonld',\n 'client_id': `${baseUrl}clientid.jsonld`,\n 'client_name': app.name,\n 'redirect_uris': [baseUrl],\n 'client_uri': baseUrl,\n 'scope': 'openid profile offline_access webid',\n 'grant_types': ['refresh_token', 'authorization_code'],\n 'response_types': ['code'],\n };\n\n if (logoPublicPath) {\n clientID.logo_uri = baseUrl + logoPublicPath;\n }\n\n return clientID;\n}\n\nexport interface ClientIDDocument {\n '@context': 'https://www.w3.org/ns/solid/oidc-context.jsonld';\n client_id: string;\n client_name: string;\n redirect_uris: [string, ...string[]];\n client_uri: string;\n logo_uri?: string;\n scope: string;\n grant_types: string[];\n response_types: string[];\n}\n\nexport function generateSolidAssets(context: PluginContext, app: AppInfo, options: Options): void {\n if (!app.plugins?.includes('solid')) {\n return;\n }\n\n const clientID = createClientIDDocument(app, options);\n\n if (!clientID) {\n return;\n }\n\n const clientIdJSON = JSON.stringify(clientID);\n\n context.emitFile({\n type: 'asset',\n fileName: 'clientid.jsonld',\n source: clientIdJSON,\n });\n\n app.additionalManifestEntries.push({\n url: 'clientid.jsonld',\n revision: md5(clientIdJSON),\n });\n}\n\nexport function generateSolidVirtualModule(app: AppInfo, options: Options): string {\n const clientId = options.solidClientId ?? true;\n const clientIdDocument = typeof clientId !== 'boolean' ? clientId : createClientIDDocument(app, options);\n const virtual: VirtualAerogelSolid = {};\n\n if (clientId && clientIdDocument) {\n virtual.clientID = clientIdDocument;\n }\n\n return `export default ${JSON.stringify(virtual)};`;\n}\n\nexport function solidMiddleware(app: AppInfo, options: Options): Connect.NextHandleFunction {\n return (request, response, next) => {\n if (!request.url?.endsWith('/clientid.jsonld')) {\n next();\n\n return;\n }\n\n const clientID = createClientIDDocument(app, options);\n\n if (!clientID) {\n next();\n\n return;\n }\n\n response.statusCode = 200;\n response.setHeader('Content-Type', 'application/ld+json');\n response.write(JSON.stringify(clientID), 'utf-8');\n response.end();\n };\n}\n","import { execSync } from 'node:child_process';\n\nexport function getSourceHash(): string {\n try {\n return execSync('git rev-parse HEAD').toString();\n } catch (e) {\n return '?';\n }\n}\n","// https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#common_image_file_types\nconst mediaTypeByExtension: Record<string, string> = {\n apng: 'image/apng',\n avif: 'image/avif',\n bmp: 'image/bmp',\n cur: 'image/x-icon',\n gif: 'image/gif',\n ico: 'image/x-icon',\n jfif: 'image/jpeg',\n jpeg: 'image/jpeg',\n jpg: 'image/jpeg',\n pjp: 'image/jpeg',\n pjpeg: 'image/jpeg',\n png: 'image/png',\n svg: 'image/svg',\n tif: 'image/tiff',\n tiff: 'image/tiff',\n webp: 'image/webp',\n};\n\nexport function guessMediaType(filename: string): string | null {\n const extension = filename.match(/\\.([^.]+)$/)?.[1];\n\n return (extension && mediaTypeByExtension[extension]) ?? null;\n}\n","import { existsSync, readFileSync } from 'node:fs';\n\nimport type { AppInfo } from '@aerogel/vite/lib/options';\n\nexport function loadLocales(app: AppInfo, localesJsonPath: string): void {\n if (!existsSync(localesJsonPath)) {\n return;\n }\n\n app.locales = JSON.parse(readFileSync(localesJsonPath).toString()) as Record<string, string>;\n}\n","import { existsSync, readFileSync } from 'node:fs';\n\nimport { objectWithoutEmpty } from '@noeldemartin/utils';\n\nimport type { AppInfo } from '@aerogel/vite/lib/options';\n\ninterface PackageJson {\n version: string;\n repository?: string | { type: string; url: string };\n dependencies?: Record<string, string>;\n}\n\nfunction getSourceUrl(packageJson: PackageJson): string | null {\n if (!packageJson.repository) {\n return null;\n }\n\n if (typeof packageJson.repository === 'object') {\n return packageJson.repository.url.replace(`.${packageJson.repository.type}`, '');\n }\n\n return packageJson.repository?.replace('github:', 'https://github.com/');\n}\n\nfunction getPlugins(packageJson: PackageJson): string[] {\n return Object.keys(packageJson.dependencies ?? {})\n .filter((dependency) => dependency.startsWith('@aerogel/plugin-'))\n .map((plugin) => plugin.substring(16));\n}\n\nexport function loadPackageInfo(app: AppInfo, packageJsonPath: string): void {\n if (!existsSync(packageJsonPath)) {\n return;\n }\n\n const packageJson = JSON.parse(readFileSync(packageJsonPath).toString()) as PackageJson;\n const parsed: Partial<AppInfo> = objectWithoutEmpty({\n version: packageJson.version,\n sourceUrl: getSourceUrl(packageJson),\n plugins: getPlugins(packageJson),\n });\n\n Object.assign(app, parsed);\n}\n","import imageSize from 'image-size';\nimport { readFileSync } from 'node:fs';\n\nimport type { AppInfo } from '@aerogel/vite/lib/options';\n\nfunction imageMeta(path: string): string {\n const image = readFileSync(path);\n const size = imageSize(image);\n\n return `\n <meta property=\"og:image\" content=\"${path}\" />\n <meta property=\"og:image:width\" content=\"${size.width}\" />\n <meta property=\"og:image:height\" content=\"${size.height}\" />\n `;\n}\n\nexport interface HTMLEvalScope {\n app: AppInfo;\n readFile(path: string): string;\n}\n\nexport function css(this: HTMLEvalScope, path: string): string {\n return `<style>${this.readFile(path)}</style>`;\n}\n\nexport function favicons(this: HTMLEvalScope, options: { maskIconColor?: string } = {}): string {\n const maskIconColor = options.maskIconColor ?? this.app.themeColor;\n\n return `\n <link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"${this.app.basePath}apple-touch-icon.png\" />\n <link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"${this.app.basePath}favicon-32x32.png\" />\n <link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"${this.app.basePath}favicon-16x16.png\" />\n <link rel=\"mask-icon\" href=\"${this.app.basePath}safari-pinned-tab.svg\" color=\"${maskIconColor}\" />\n `;\n}\n\nexport function js(this: HTMLEvalScope, path: string): string {\n return `<script>${this.readFile(path)}</script>`;\n}\n\nexport function socialMeta(this: HTMLEvalScope, options: { image?: string } = {}): string {\n const urlMeta = this.app.baseUrl && `<meta property=\"og:url\" content=\"${this.app.baseUrl}\" />`;\n const descriptionMeta =\n this.app.description &&\n `\n <meta property=\"og:description\" content=\"${this.app.description}\" />\n <meta name=\"description\" content=\"${this.app.description}\" />\n `;\n\n return `\n <meta name=\"apple-mobile-web-app-title\" content=\"${this.app.name}\" />\n <meta name=\"application-name\" content=\"${this.app.name}\" />\n <meta name=\"msapplication-TileColor\" content=\"${this.app.themeColor}\" />\n <meta name=\"theme-color\" content=\"${this.app.themeColor}\" />\n <meta property=\"og:title\" content=\"${this.app.name}\" />\n <meta property=\"og:type\" content=\"website\" />\n ${urlMeta ?? ''}\n ${descriptionMeta ?? ''}\n ${options.image ? imageMeta(options.image) : ''}\n `;\n}\n\nexport function splashJs(): string {\n return `\n <script>\n setTimeout(function() {\n if (!document.querySelector('#app.loading')) {\n return;\n }\n\n document.getElementById('splash').style.opacity = 1;\n }, 1000);\n </script>\n `;\n}\n\nexport function svg(this: HTMLEvalScope, path: string): string {\n return this.readFile(path);\n}\n","import { dirname, resolve } from 'node:path';\nimport { readFileSync } from 'node:fs';\n\nimport { stringMatchAll, toString } from '@noeldemartin/utils';\n\nimport type { AppInfo } from '@aerogel/vite/lib/options';\n\nimport * as globalScope from './html-eval';\nimport type { HTMLEvalScope } from './html-eval';\n\nfunction evalScript(script: string, scope: HTMLEvalScope): unknown {\n return Function(`with (this) { return ${script} }`).bind({\n ...globalScope,\n ...scope,\n })();\n}\n\nexport function renderHTML(html: string, filename: string, app: AppInfo): string {\n const matches = stringMatchAll<2>(html, /{{(.*?)}}/g);\n const directory = dirname(filename);\n const readFile = (path: string) => readFileSync(resolve(directory, path)).toString();\n\n for (const match of matches) {\n html = html.replace(\n match[0],\n toString(\n evalScript(match[1], {\n app,\n readFile,\n }),\n ),\n );\n }\n\n return html;\n}\n","import type { ComponentResolver } from 'unplugin-vue-components';\n\nconst coreComponents = Object.keys(\n import.meta.glob('../../../core/src/components/**/*.vue', {\n eager: true,\n query: '?ignore',\n }),\n).map((filename) => filename.split('/').pop()?.replace('.vue', '') ?? '');\n\nconst solidComponents = Object.keys(\n import.meta.glob('../../../plugin-solid/src/components/**/*.vue', {\n eager: true,\n query: '?ignore',\n }),\n).map((filename) => filename.split('/').pop()?.replace('.vue', '') ?? '');\n\nconst localFirstComponents = Object.keys(\n import.meta.glob('../../../plugin-local-first/src/components/**/*.vue', {\n eager: true,\n query: '?ignore',\n }),\n).map((filename) => filename.split('/').pop()?.replace('.vue', '') ?? '');\n\nconst routingComponents = Object.keys(\n import.meta.glob('../../../plugin-routing/src/components/**/*.vue', {\n eager: true,\n query: '?ignore',\n }),\n).map((filename) => filename.split('/').pop()?.replace('.vue', '') ?? '');\n\nexport default function AerogelResolver(): ComponentResolver {\n return {\n type: 'component',\n resolve: (name) => {\n if (coreComponents.includes(name)) {\n return { name, as: name, from: '@aerogel/core' };\n }\n\n if (solidComponents.includes(name)) {\n return { name, as: name, from: '@aerogel/plugin-solid' };\n }\n\n if (localFirstComponents.includes(name)) {\n return { name, as: name, from: '@aerogel/plugin-local-first' };\n }\n\n if (routingComponents.includes(name)) {\n return { name, as: name, from: '@aerogel/plugin-routing' };\n }\n },\n };\n}\n","import { resolve } from 'node:path';\nimport type { VirtualAerogel } from 'virtual:aerogel';\n\nimport TailwindCSS from '@tailwindcss/vite';\nimport Vue from '@vitejs/plugin-vue';\nimport { after, arrayFilter, objectWithoutEmpty } from '@noeldemartin/utils';\nimport { VitePWA } from 'vite-plugin-pwa';\nimport type { Plugin } from 'vite';\n\nimport { generate404Assets } from '@aerogel/vite/lib/404';\nimport { generateSolidAssets, generateSolidVirtualModule, solidMiddleware } from '@aerogel/vite/lib/solid';\nimport { getSourceHash } from '@aerogel/vite/lib/git';\nimport { guessMediaType } from '@aerogel/vite/lib/media-types';\nimport { loadLocales } from '@aerogel/vite/lib/lang';\nimport { loadPackageInfo } from '@aerogel/vite/lib/package-parser';\nimport { renderHTML } from '@aerogel/vite/lib/html';\nimport type { AppInfo, Options } from '@aerogel/vite/lib/options';\nimport type { ClientIDDocument } from '@aerogel/vite/lib/solid';\n\nexport type { Options, AppInfo, ClientIDDocument };\n\nexport * from './resolvers';\n\nexport default function Aerogel(options: Options = {}): Plugin[] {\n const app: AppInfo = {\n name: options.name ?? 'App',\n version: '?',\n sourceHash: getSourceHash(),\n description: options.description,\n basePath: '/',\n baseUrl: options.baseUrl,\n themeColor: options.themeColor ?? '#ffffff',\n additionalManifestEntries: [],\n };\n const virtualHandlers: Record<string, () => string> = {\n 'virtual:aerogel'() {\n const virtual: VirtualAerogel = {\n name: app.name,\n version: app.version,\n sourceHash: app.sourceHash,\n basePath: app.basePath,\n sourceUrl: app.sourceUrl,\n locales: app.locales ?? { en: 'English' },\n };\n\n return `export default ${JSON.stringify(virtual)};`;\n },\n 'virtual:aerogel-solid': () => generateSolidVirtualModule(app, options),\n };\n const AerogelPlugin: Plugin = {\n name: 'vite:aerogel',\n buildStart(buildOptions) {\n if (!Array.isArray(buildOptions.input) || !buildOptions.input[0]) {\n return;\n }\n\n loadPackageInfo(app, resolve(buildOptions.input[0], '../package.json'));\n loadLocales(app, resolve(buildOptions.input[0], '../src/lang/locales.json'));\n },\n configureServer(server) {\n server.httpServer?.once('listening', async () => {\n await after({ ms: 100 });\n\n app.baseUrl = server.resolvedUrls?.network?.[0] ?? server.resolvedUrls?.local?.[0] ?? app.baseUrl;\n });\n\n server.middlewares.use(solidMiddleware(app, options));\n\n loadPackageInfo(app, `${server.config.root}/package.json`);\n loadLocales(app, `${server.config.root}/src/lang/locales.json`);\n },\n config: (config) => {\n app.basePath = config.base ?? app.basePath;\n config.optimizeDeps = config.optimizeDeps ?? {};\n config.optimizeDeps.exclude = [...(config.optimizeDeps.exclude ?? []), ...Object.keys(virtualHandlers)];\n\n config.define = {\n ...(config.define ?? {}),\n __AEROGEL_ENV__: JSON.stringify(process.env.NODE_ENV),\n };\n\n return config;\n },\n generateBundle() {\n generate404Assets(this, app, options);\n generateSolidAssets(this, app, options);\n },\n load: (id) => virtualHandlers[id]?.(),\n resolveId: (id) => (id in virtualHandlers ? id : undefined),\n transformIndexHtml: {\n order: 'pre',\n handler: (html, context) => renderHTML(html, context.filename, app),\n },\n };\n\n return arrayFilter([\n Vue(),\n TailwindCSS(),\n !options.lib &&\n VitePWA({\n registerType: 'autoUpdate',\n includeAssets: [\n 'apple-touch-icon.png',\n 'favicon-32x32.png',\n 'favicon-16x16.png',\n 'safari-pinned-tab.svg',\n ],\n manifest: objectWithoutEmpty({\n name: app.name,\n short_name: app.name,\n description: app.description,\n theme_color: options.themeColor,\n icons:\n options.icons &&\n Object.entries(options.icons).map(([sizes, src]) =>\n objectWithoutEmpty({\n src,\n sizes,\n type: guessMediaType(src),\n })),\n }),\n workbox: {\n maximumFileSizeToCacheInBytes: 10000000,\n additionalManifestEntries: app.additionalManifestEntries,\n },\n }),\n AerogelPlugin,\n ]).flat();\n}\n"],"names":["static404RedirectHTML","generate404Assets","context","app","options","static404Redirect","Mustache","createClientIDDocument","baseUrl","logoPublicPath","clientID","generateSolidAssets","_a","clientIdJSON","md5","generateSolidVirtualModule","clientId","clientIdDocument","virtual","solidMiddleware","request","response","next","getSourceHash","execSync","mediaTypeByExtension","guessMediaType","filename","extension","loadLocales","localesJsonPath","existsSync","readFileSync","getSourceUrl","packageJson","getPlugins","dependency","plugin","loadPackageInfo","packageJsonPath","parsed","objectWithoutEmpty","imageMeta","path","image","size","imageSize","css","favicons","maskIconColor","js","socialMeta","urlMeta","descriptionMeta","splashJs","svg","evalScript","script","scope","globalScope","renderHTML","html","matches","stringMatchAll","directory","dirname","readFile","resolve","match","toString","coreComponents","solidComponents","localFirstComponents","routingComponents","AerogelResolver","name","Aerogel","virtualHandlers","AerogelPlugin","buildOptions","server","after","_b","_d","_c","config","id","arrayFilter","Vue","TailwindCSS","VitePWA","sizes","src"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"aerogel-vite.js","sources":["../src/templates/404.html?raw","../src/lib/404.ts","../src/lib/solid.ts","../src/lib/git.ts","../src/lib/media-types.ts","../src/lib/lang.ts","../src/lib/package-parser.ts","../src/lib/html-eval.ts","../src/lib/html.ts","../src/resolvers/AerogelResolver.ts","../src/index.ts"],"sourcesContent":["export default \"<!DOCTYPE html>\\n<html lang=\\\"en\\\">\\n <head>\\n <meta charset=\\\"UTF-8\\\" />\\n <link rel=\\\"icon\\\" href=\\\"/favicon.ico\\\" />\\n <meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1.0\\\" />\\n <title>{{ app.name }}</title>\\n <script>\\n (function () {\\n const basePath = '{{{ app.basePath }}}';\\n const url = new URL(location.href);\\n\\n if (!url.pathname.startsWith(basePath)) {\\n const link = document.createElement('link');\\n\\n link.rel = 'stylesheet';\\n link.href = 'https://cdn.simplecss.org/simple.min.css';\\n\\n document.head.appendChild(link);\\n\\n return;\\n }\\n\\n const queryParameters = {};\\n\\n url.searchParams.forEach((value, key) => (queryParameters[key] = value));\\n\\n localStorage.setItem(\\n 'static-404-redirect',\\n JSON.stringify({\\n path: url.pathname.substring(basePath.length - 1),\\n hash: url.hash,\\n query: queryParameters,\\n })\\n );\\n\\n location.href = basePath;\\n })();\\n </script>\\n\\n <style>\\n body {\\n width: 100vw;\\n height: 100vh;\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n }\\n </style>\\n </head>\\n <body>\\n <h1>404 | Page not found</h1>\\n <a href=\\\"/\\\">go home</a>\\n </body>\\n</html>\\n\"","import Mustache from 'mustache';\nimport type { PluginContext } from 'rollup';\n\nimport type { AppInfo, Options } from '@aerogel/vite/lib/options';\n\nimport static404RedirectHTML from '../templates/404.html?raw';\n\nexport function generate404Assets(context: PluginContext, app: AppInfo, options: Options): void {\n const static404Redirect = options.static404Redirect ?? process.env.NODE_ENV === 'production';\n\n if (options.lib || !static404Redirect) {\n return;\n }\n\n context.emitFile({\n type: 'asset',\n fileName: typeof options.static404Redirect === 'string' ? options.static404Redirect : '404.html',\n source: Mustache.render(static404RedirectHTML, { app }),\n });\n}\n","import { md5 } from '@noeldemartin/utils';\nimport type { Connect } from 'vite';\nimport type { PluginContext } from 'rollup';\n\nimport type { AppInfo, Options } from '@aerogel/vite/lib/options';\n\nimport type { VirtualAerogelSolid } from 'virtual:aerogel-solid';\n\nfunction createClientIDDocument(app: AppInfo, options: Options): ClientIDDocument | null {\n if (!app.baseUrl) {\n // eslint-disable-next-line no-console\n console.warn(\n 'It was not possible to create a Solid ClientID document because the baseUrl ' +\n 'was not provided, to remove this warning add a `baseUrl` option in the Aerogel vite plugin options.',\n );\n\n return null;\n }\n\n const baseUrl = app.baseUrl.endsWith('/') ? app.baseUrl : `${app.baseUrl}/`;\n const logoPublicPath =\n options.icons &&\n (Array.isArray(options.icons)\n ? options.icons[0]?.src\n : (options.icons['512x512'] ?? Object.values(options.icons).pop()));\n const clientID: ClientIDDocument = {\n '@context': 'https://www.w3.org/ns/solid/oidc-context.jsonld',\n 'client_id': `${baseUrl}clientid.jsonld`,\n 'client_name': app.name,\n 'redirect_uris': [baseUrl],\n 'client_uri': baseUrl,\n 'scope': 'openid profile offline_access webid',\n 'grant_types': ['refresh_token', 'authorization_code'],\n 'response_types': ['code'],\n };\n\n if (logoPublicPath) {\n clientID.logo_uri = baseUrl + logoPublicPath;\n }\n\n return clientID;\n}\n\nexport interface ClientIDDocument {\n '@context': 'https://www.w3.org/ns/solid/oidc-context.jsonld';\n client_id: string;\n client_name: string;\n redirect_uris: [string, ...string[]];\n client_uri: string;\n logo_uri?: string;\n scope: string;\n grant_types: string[];\n response_types: string[];\n}\n\nexport function generateSolidAssets(context: PluginContext, app: AppInfo, options: Options): void {\n if (!app.plugins?.includes('solid')) {\n return;\n }\n\n const clientID = createClientIDDocument(app, options);\n\n if (!clientID) {\n return;\n }\n\n const clientIdJSON = JSON.stringify(clientID);\n\n context.emitFile({\n type: 'asset',\n fileName: 'clientid.jsonld',\n source: clientIdJSON,\n });\n\n app.additionalManifestEntries.push({\n url: 'clientid.jsonld',\n revision: md5(clientIdJSON),\n });\n}\n\nexport function generateSolidVirtualModule(app: AppInfo, options: Options): string {\n const clientId = options.solidClientId ?? true;\n const clientIdDocument = typeof clientId !== 'boolean' ? clientId : createClientIDDocument(app, options);\n const virtual: VirtualAerogelSolid = {};\n\n if (clientId && clientIdDocument) {\n virtual.clientID = clientIdDocument;\n }\n\n return `export default ${JSON.stringify(virtual)};`;\n}\n\nexport function solidMiddleware(app: AppInfo, options: Options): Connect.NextHandleFunction {\n return (request, response, next) => {\n if (!request.url?.endsWith('/clientid.jsonld')) {\n next();\n\n return;\n }\n\n const clientID = createClientIDDocument(app, options);\n\n if (!clientID) {\n next();\n\n return;\n }\n\n response.statusCode = 200;\n response.setHeader('Content-Type', 'application/ld+json');\n response.write(JSON.stringify(clientID), 'utf-8');\n response.end();\n };\n}\n","import { execSync } from 'node:child_process';\n\nexport function getSourceHash(): string {\n try {\n return execSync('git rev-parse HEAD').toString();\n } catch (e) {\n return '?';\n }\n}\n","// https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#common_image_file_types\nconst mediaTypeByExtension: Record<string, string> = {\n apng: 'image/apng',\n avif: 'image/avif',\n bmp: 'image/bmp',\n cur: 'image/x-icon',\n gif: 'image/gif',\n ico: 'image/x-icon',\n jfif: 'image/jpeg',\n jpeg: 'image/jpeg',\n jpg: 'image/jpeg',\n pjp: 'image/jpeg',\n pjpeg: 'image/jpeg',\n png: 'image/png',\n svg: 'image/svg',\n tif: 'image/tiff',\n tiff: 'image/tiff',\n webp: 'image/webp',\n};\n\nexport function guessMediaType(filename: string): string | null {\n const extension = filename.match(/\\.([^.]+)$/)?.[1];\n\n return (extension && mediaTypeByExtension[extension]) ?? null;\n}\n","import { existsSync, readFileSync } from 'node:fs';\n\nimport type { AppInfo } from '@aerogel/vite/lib/options';\n\nexport function loadLocales(app: AppInfo, localesJsonPath: string): void {\n if (!existsSync(localesJsonPath)) {\n return;\n }\n\n app.locales = JSON.parse(readFileSync(localesJsonPath).toString()) as Record<string, string>;\n}\n","import { existsSync, readFileSync } from 'node:fs';\n\nimport { objectWithoutEmpty } from '@noeldemartin/utils';\n\nimport type { AppInfo } from '@aerogel/vite/lib/options';\n\ninterface PackageJson {\n version: string;\n repository?: string | { type: string; url: string };\n dependencies?: Record<string, string>;\n}\n\nfunction getSourceUrl(packageJson: PackageJson): string | null {\n if (!packageJson.repository) {\n return null;\n }\n\n if (typeof packageJson.repository === 'object') {\n return packageJson.repository.url.replace(`.${packageJson.repository.type}`, '');\n }\n\n return packageJson.repository?.replace('github:', 'https://github.com/');\n}\n\nfunction getPlugins(packageJson: PackageJson): string[] {\n return Object.keys(packageJson.dependencies ?? {})\n .filter((dependency) => dependency.startsWith('@aerogel/plugin-'))\n .map((plugin) => plugin.substring(16));\n}\n\nexport function loadPackageInfo(app: AppInfo, packageJsonPath: string): void {\n if (!existsSync(packageJsonPath)) {\n return;\n }\n\n const packageJson = JSON.parse(readFileSync(packageJsonPath).toString()) as PackageJson;\n const parsed: Partial<AppInfo> = objectWithoutEmpty({\n version: packageJson.version,\n sourceUrl: getSourceUrl(packageJson),\n plugins: getPlugins(packageJson),\n });\n\n Object.assign(app, parsed);\n}\n","import imageSize from 'image-size';\nimport { readFileSync } from 'node:fs';\n\nimport type { AppInfo } from '@aerogel/vite/lib/options';\n\nfunction imageMeta(path: string): string {\n const image = readFileSync(path);\n const size = imageSize(image);\n\n return `\n <meta property=\"og:image\" content=\"${path}\" />\n <meta property=\"og:image:width\" content=\"${size.width}\" />\n <meta property=\"og:image:height\" content=\"${size.height}\" />\n `;\n}\n\nexport interface HTMLEvalScope {\n app: AppInfo;\n readFile(path: string): string;\n}\n\nexport function css(this: HTMLEvalScope, path: string): string {\n return `<style>${this.readFile(path)}</style>`;\n}\n\nexport function favicons(this: HTMLEvalScope, options: { maskIconColor?: string } = {}): string {\n const maskIconColor = options.maskIconColor ?? this.app.themeColor;\n\n return `\n <link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"${this.app.basePath}apple-touch-icon.png\" />\n <link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"${this.app.basePath}favicon-32x32.png\" />\n <link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"${this.app.basePath}favicon-16x16.png\" />\n <link rel=\"mask-icon\" href=\"${this.app.basePath}safari-pinned-tab.svg\" color=\"${maskIconColor}\" />\n `;\n}\n\nexport function js(this: HTMLEvalScope, path: string): string {\n return `<script>${this.readFile(path)}</script>`;\n}\n\nexport function socialMeta(this: HTMLEvalScope, options: { image?: string } = {}): string {\n const urlMeta = this.app.baseUrl && `<meta property=\"og:url\" content=\"${this.app.baseUrl}\" />`;\n const descriptionMeta =\n this.app.description &&\n `\n <meta property=\"og:description\" content=\"${this.app.description}\" />\n <meta name=\"description\" content=\"${this.app.description}\" />\n `;\n\n return `\n <meta name=\"apple-mobile-web-app-title\" content=\"${this.app.name}\" />\n <meta name=\"application-name\" content=\"${this.app.name}\" />\n <meta name=\"msapplication-TileColor\" content=\"${this.app.themeColor}\" />\n <meta name=\"theme-color\" content=\"${this.app.themeColor}\" />\n <meta property=\"og:title\" content=\"${this.app.name}\" />\n <meta property=\"og:type\" content=\"website\" />\n ${urlMeta ?? ''}\n ${descriptionMeta ?? ''}\n ${options.image ? imageMeta(options.image) : ''}\n `;\n}\n\nexport function splashJs(): string {\n return `\n <script>\n setTimeout(function() {\n if (!document.querySelector('#app.loading')) {\n return;\n }\n\n document.getElementById('splash').style.opacity = 1;\n }, 1000);\n </script>\n `;\n}\n\nexport function svg(this: HTMLEvalScope, path: string): string {\n return this.readFile(path);\n}\n","import { dirname, resolve } from 'node:path';\nimport { readFileSync } from 'node:fs';\n\nimport { stringMatchAll, toString } from '@noeldemartin/utils';\n\nimport type { AppInfo } from '@aerogel/vite/lib/options';\n\nimport * as globalScope from './html-eval';\nimport type { HTMLEvalScope } from './html-eval';\n\nfunction evalScript(script: string, scope: HTMLEvalScope): unknown {\n return Function(`with (this) { return ${script} }`).bind({\n ...globalScope,\n ...scope,\n })();\n}\n\nexport function renderHTML(html: string, filename: string, app: AppInfo): string {\n const matches = stringMatchAll<2>(html, /{{(.*?)}}/g);\n const directory = dirname(filename);\n const readFile = (path: string) => readFileSync(resolve(directory, path)).toString();\n\n for (const match of matches) {\n html = html.replace(\n match[0],\n toString(\n evalScript(match[1], {\n app,\n readFile,\n }),\n ),\n );\n }\n\n return html;\n}\n","import type { ComponentResolver } from 'unplugin-vue-components';\n\nconst coreComponents = Object.keys(\n import.meta.glob('../../../core/src/components/**/*.vue', {\n eager: true,\n query: '?ignore',\n }),\n).map((filename) => filename.split('/').pop()?.replace('.vue', '') ?? '');\n\nconst solidComponents = Object.keys(\n import.meta.glob('../../../plugin-solid/src/components/**/*.vue', {\n eager: true,\n query: '?ignore',\n }),\n).map((filename) => filename.split('/').pop()?.replace('.vue', '') ?? '');\n\nconst localFirstComponents = Object.keys(\n import.meta.glob('../../../plugin-local-first/src/components/**/*.vue', {\n eager: true,\n query: '?ignore',\n }),\n).map((filename) => filename.split('/').pop()?.replace('.vue', '') ?? '');\n\nconst routingComponents = Object.keys(\n import.meta.glob('../../../plugin-routing/src/components/**/*.vue', {\n eager: true,\n query: '?ignore',\n }),\n).map((filename) => filename.split('/').pop()?.replace('.vue', '') ?? '');\n\nexport default function AerogelResolver(): ComponentResolver {\n return {\n type: 'component',\n resolve: (name) => {\n if (coreComponents.includes(name)) {\n return { name, as: name, from: '@aerogel/core' };\n }\n\n if (solidComponents.includes(name)) {\n return { name, as: name, from: '@aerogel/plugin-solid' };\n }\n\n if (localFirstComponents.includes(name)) {\n return { name, as: name, from: '@aerogel/plugin-local-first' };\n }\n\n if (routingComponents.includes(name)) {\n return { name, as: name, from: '@aerogel/plugin-routing' };\n }\n },\n };\n}\n","import { resolve } from 'node:path';\nimport type { VirtualAerogel } from 'virtual:aerogel';\n\nimport TailwindCSS from '@tailwindcss/vite';\nimport Vue from '@vitejs/plugin-vue';\nimport { after, arrayFilter, objectWithoutEmpty } from '@noeldemartin/utils';\nimport { VitePWA } from 'vite-plugin-pwa';\nimport type { Plugin } from 'vite';\n\nimport { generate404Assets } from '@aerogel/vite/lib/404';\nimport { generateSolidAssets, generateSolidVirtualModule, solidMiddleware } from '@aerogel/vite/lib/solid';\nimport { getSourceHash } from '@aerogel/vite/lib/git';\nimport { guessMediaType } from '@aerogel/vite/lib/media-types';\nimport { loadLocales } from '@aerogel/vite/lib/lang';\nimport { loadPackageInfo } from '@aerogel/vite/lib/package-parser';\nimport { renderHTML } from '@aerogel/vite/lib/html';\nimport type { AppInfo, Options } from '@aerogel/vite/lib/options';\nimport type { ClientIDDocument } from '@aerogel/vite/lib/solid';\n\nexport type { Options, AppInfo, ClientIDDocument };\n\nexport * from './resolvers';\n\nexport default function Aerogel(options: Options = {}): Plugin[] {\n const app: AppInfo = {\n name: options.name ?? 'App',\n version: '?',\n sourceHash: getSourceHash(),\n description: options.description,\n basePath: '/',\n baseUrl: process.env.AEROGEL_BASE_URL ?? options.baseUrl,\n themeColor: options.themeColor ?? '#ffffff',\n additionalManifestEntries: options.pwa?.additionalManifestEntries ?? [],\n };\n const virtualHandlers: Record<string, () => string> = {\n 'virtual:aerogel'() {\n const virtual: VirtualAerogel = {\n name: app.name,\n version: app.version,\n sourceHash: app.sourceHash,\n basePath: app.basePath,\n sourceUrl: app.sourceUrl,\n locales: app.locales ?? { en: 'English' },\n };\n\n return `export default ${JSON.stringify(virtual)};`;\n },\n 'virtual:aerogel-solid': () => generateSolidVirtualModule(app, options),\n };\n const AerogelPlugin: Plugin = {\n name: 'vite:aerogel',\n buildStart(buildOptions) {\n if (!Array.isArray(buildOptions.input) || !buildOptions.input[0]) {\n return;\n }\n\n loadPackageInfo(app, resolve(buildOptions.input[0], '../package.json'));\n loadLocales(app, resolve(buildOptions.input[0], '../src/lang/locales.json'));\n },\n configureServer(server) {\n server.httpServer?.once('listening', async () => {\n await after({ ms: 100 });\n\n app.baseUrl = server.resolvedUrls?.network?.[0] ?? server.resolvedUrls?.local?.[0] ?? app.baseUrl;\n });\n\n server.middlewares.use(solidMiddleware(app, options));\n\n loadPackageInfo(app, `${server.config.root}/package.json`);\n loadLocales(app, `${server.config.root}/src/lang/locales.json`);\n },\n config: (config) => {\n app.basePath = config.base ?? app.basePath;\n config.optimizeDeps = config.optimizeDeps ?? {};\n config.optimizeDeps.exclude = [...(config.optimizeDeps.exclude ?? []), ...Object.keys(virtualHandlers)];\n\n config.define = {\n ...(config.define ?? {}),\n __AEROGEL_ENV__: JSON.stringify(process.env.NODE_ENV),\n };\n\n return config;\n },\n generateBundle() {\n generate404Assets(this, app, options);\n generateSolidAssets(this, app, options);\n },\n load: (id) => virtualHandlers[id]?.(),\n resolveId: (id) => (id in virtualHandlers ? id : undefined),\n transformIndexHtml: {\n order: 'pre',\n handler: (html, context) => renderHTML(html, context.filename, app),\n },\n };\n\n return arrayFilter([\n Vue(),\n TailwindCSS(),\n !options.lib &&\n VitePWA({\n registerType: 'autoUpdate',\n devOptions: { enabled: options.pwa?.development ?? false },\n includeAssets: [\n 'apple-touch-icon.png',\n 'favicon-32x32.png',\n 'favicon-16x16.png',\n 'safari-pinned-tab.svg',\n ...(options.pwa?.includeAssets ?? []),\n ],\n manifest: objectWithoutEmpty({\n name: app.name,\n short_name: app.name,\n description: app.description,\n theme_color: options.themeColor,\n icons:\n options.icons &&\n (Array.isArray(options.icons)\n ? options.icons.map((icon) => ({\n ...icon,\n type: icon.type ?? guessMediaType(icon.src) ?? undefined,\n }))\n : Object.entries(options.icons).map(([sizes, src]) =>\n objectWithoutEmpty({\n src,\n sizes,\n type: guessMediaType(src) ?? undefined,\n }))),\n }),\n workbox: {\n maximumFileSizeToCacheInBytes: 10000000,\n additionalManifestEntries: app.additionalManifestEntries,\n },\n }),\n AerogelPlugin,\n ]).flat();\n}\n"],"names":["static404RedirectHTML","generate404Assets","context","app","options","static404Redirect","Mustache","createClientIDDocument","baseUrl","logoPublicPath","_a","clientID","generateSolidAssets","clientIdJSON","md5","generateSolidVirtualModule","clientId","clientIdDocument","virtual","solidMiddleware","request","response","next","getSourceHash","execSync","mediaTypeByExtension","guessMediaType","filename","extension","loadLocales","localesJsonPath","existsSync","readFileSync","getSourceUrl","packageJson","getPlugins","dependency","plugin","loadPackageInfo","packageJsonPath","parsed","objectWithoutEmpty","imageMeta","path","image","size","imageSize","css","favicons","maskIconColor","js","socialMeta","urlMeta","descriptionMeta","splashJs","svg","evalScript","script","scope","globalScope","renderHTML","html","matches","stringMatchAll","directory","dirname","readFile","resolve","match","toString","coreComponents","solidComponents","localFirstComponents","routingComponents","AerogelResolver","name","Aerogel","virtualHandlers","AerogelPlugin","buildOptions","server","after","_b","_d","_c","config","id","arrayFilter","Vue","TailwindCSS","VitePWA","icon","sizes","src"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aerogel/vite",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"exports": {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"verify": "noeldemartin-verify"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@noeldemartin/utils": "
|
|
30
|
+
"@noeldemartin/utils": "0.7.3",
|
|
31
31
|
"@tailwindcss/vite": "^4.1.4",
|
|
32
32
|
"@vitejs/plugin-vue": "^5.2.3",
|
|
33
33
|
"image-size": "^2.0.2",
|
package/src/index.ts
CHANGED
|
@@ -28,9 +28,9 @@ export default function Aerogel(options: Options = {}): Plugin[] {
|
|
|
28
28
|
sourceHash: getSourceHash(),
|
|
29
29
|
description: options.description,
|
|
30
30
|
basePath: '/',
|
|
31
|
-
baseUrl: options.baseUrl,
|
|
31
|
+
baseUrl: process.env.AEROGEL_BASE_URL ?? options.baseUrl,
|
|
32
32
|
themeColor: options.themeColor ?? '#ffffff',
|
|
33
|
-
additionalManifestEntries: [],
|
|
33
|
+
additionalManifestEntries: options.pwa?.additionalManifestEntries ?? [],
|
|
34
34
|
};
|
|
35
35
|
const virtualHandlers: Record<string, () => string> = {
|
|
36
36
|
'virtual:aerogel'() {
|
|
@@ -99,11 +99,13 @@ export default function Aerogel(options: Options = {}): Plugin[] {
|
|
|
99
99
|
!options.lib &&
|
|
100
100
|
VitePWA({
|
|
101
101
|
registerType: 'autoUpdate',
|
|
102
|
+
devOptions: { enabled: options.pwa?.development ?? false },
|
|
102
103
|
includeAssets: [
|
|
103
104
|
'apple-touch-icon.png',
|
|
104
105
|
'favicon-32x32.png',
|
|
105
106
|
'favicon-16x16.png',
|
|
106
107
|
'safari-pinned-tab.svg',
|
|
108
|
+
...(options.pwa?.includeAssets ?? []),
|
|
107
109
|
],
|
|
108
110
|
manifest: objectWithoutEmpty({
|
|
109
111
|
name: app.name,
|
|
@@ -112,12 +114,17 @@ export default function Aerogel(options: Options = {}): Plugin[] {
|
|
|
112
114
|
theme_color: options.themeColor,
|
|
113
115
|
icons:
|
|
114
116
|
options.icons &&
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
117
|
+
(Array.isArray(options.icons)
|
|
118
|
+
? options.icons.map((icon) => ({
|
|
119
|
+
...icon,
|
|
120
|
+
type: icon.type ?? guessMediaType(icon.src) ?? undefined,
|
|
121
|
+
}))
|
|
122
|
+
: Object.entries(options.icons).map(([sizes, src]) =>
|
|
123
|
+
objectWithoutEmpty({
|
|
124
|
+
src,
|
|
125
|
+
sizes,
|
|
126
|
+
type: guessMediaType(src) ?? undefined,
|
|
127
|
+
}))),
|
|
121
128
|
}),
|
|
122
129
|
workbox: {
|
|
123
130
|
maximumFileSizeToCacheInBytes: 10000000,
|
package/src/lib/options.ts
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import type { ManifestEntry } from 'workbox-build';
|
|
2
2
|
import type { ClientIDDocument } from '@aerogel/vite/lib/solid';
|
|
3
|
+
import type { IconResource } from 'vite-plugin-pwa';
|
|
3
4
|
|
|
4
5
|
export interface Options {
|
|
5
6
|
lib?: boolean;
|
|
6
7
|
name?: string;
|
|
7
8
|
description?: string;
|
|
8
9
|
themeColor?: string;
|
|
9
|
-
icons?: Record<string, string
|
|
10
|
+
icons?: Record<string, string> | IconResource[];
|
|
10
11
|
baseUrl?: string;
|
|
11
12
|
static404Redirect?: boolean | string;
|
|
12
13
|
solidClientId?: boolean | ClientIDDocument;
|
|
14
|
+
pwa?: {
|
|
15
|
+
development?: boolean;
|
|
16
|
+
includeAssets?: string[];
|
|
17
|
+
additionalManifestEntries?: ManifestEntry[];
|
|
18
|
+
};
|
|
13
19
|
}
|
|
14
20
|
|
|
15
21
|
export interface AppInfo {
|
package/src/lib/solid.ts
CHANGED
|
@@ -18,7 +18,11 @@ function createClientIDDocument(app: AppInfo, options: Options): ClientIDDocumen
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
const baseUrl = app.baseUrl.endsWith('/') ? app.baseUrl : `${app.baseUrl}/`;
|
|
21
|
-
const logoPublicPath =
|
|
21
|
+
const logoPublicPath =
|
|
22
|
+
options.icons &&
|
|
23
|
+
(Array.isArray(options.icons)
|
|
24
|
+
? options.icons[0]?.src
|
|
25
|
+
: (options.icons['512x512'] ?? Object.values(options.icons).pop()));
|
|
22
26
|
const clientID: ClientIDDocument = {
|
|
23
27
|
'@context': 'https://www.w3.org/ns/solid/oidc-context.jsonld',
|
|
24
28
|
'client_id': `${baseUrl}clientid.jsonld`,
|