sol-components 2.1.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/README.md +7 -0
- package/core/activate.js +27 -0
- package/core/adopt.js +71 -0
- package/core/auth-core.js +73 -0
- package/core/auth-fetch.js +154 -0
- package/core/component-mount.js +110 -0
- package/core/defaults.js +48 -0
- package/core/define.js +15 -0
- package/core/display-target.js +166 -0
- package/core/edit-placements.js +28 -0
- package/core/editor-self.js +127 -0
- package/core/editor.js +162 -0
- package/core/events.js +27 -0
- package/core/extension-points.js +189 -0
- package/core/form-utils.js +210 -0
- package/core/from-query.js +138 -0
- package/core/from-rdf.js +52 -0
- package/core/here.js +33 -0
- package/core/include-core.js +73 -0
- package/core/inrupt-global.js +18 -0
- package/core/menu-consumer.js +41 -0
- package/core/menu-rdf.js +154 -0
- package/core/pod-ops.js +392 -0
- package/core/pod-registry.js +82 -0
- package/core/popup-proxy.js +255 -0
- package/core/rdf-core.js +280 -0
- package/core/rdf-render.js +136 -0
- package/core/rdf-utils.js +411 -0
- package/core/rdf.js +154 -0
- package/core/services.js +106 -0
- package/core/shape-to-form.js +741 -0
- package/core/sparql-safety.js +20 -0
- package/core/utils.js +196 -0
- package/dist/importmap-cdn.json +49 -0
- package/dist/importmap-local.json +49 -0
- package/dist/sol-loader.manifest.json +140 -0
- package/dist/vendor/@comunica-query-sparql.js +137851 -0
- package/dist/vendor/@inrupt-solid-client-authn-browser.js +7503 -0
- package/dist/vendor/dompurify.js +1476 -0
- package/dist/vendor/ical.js.js +9739 -0
- package/dist/vendor/marked.js +85 -0
- package/dist/vendor/n3.js +14670 -0
- package/dist/vendor/rdf-validate-shacl.js +6970 -0
- package/dist/vendor/rdflib.js +35172 -0
- package/dist/vendor/solid-logic.js +6819 -0
- package/dist/vendor/solid-ui.js +21945 -0
- package/node/sol-form.js +133 -0
- package/node/sol-include.js +55 -0
- package/node/sol-login.js +632 -0
- package/node/sol-menu.js +639 -0
- package/node/sol-query.js +116 -0
- package/package.json +133 -0
- package/web/menu-from-rdf.js +23 -0
- package/web/scripts/prefs.js +25 -0
- package/web/sol-accordion.js +114 -0
- package/web/sol-basic.js +50 -0
- package/web/sol-breadcrumb.js +131 -0
- package/web/sol-button.js +244 -0
- package/web/sol-calendar.js +465 -0
- package/web/sol-default.js +118 -0
- package/web/sol-dropdown-button.js +222 -0
- package/web/sol-feed.js +1336 -0
- package/web/sol-form.js +949 -0
- package/web/sol-full.js +43 -0
- package/web/sol-gallery.js +303 -0
- package/web/sol-include.js +246 -0
- package/web/sol-live-edit.js +415 -0
- package/web/sol-login.js +856 -0
- package/web/sol-menu.js +593 -0
- package/web/sol-modal.js +377 -0
- package/web/sol-pod-extras.js +17 -0
- package/web/sol-pod-ops.js +680 -0
- package/web/sol-pod.js +1039 -0
- package/web/sol-query.js +546 -0
- package/web/sol-rolodex.js +95 -0
- package/web/sol-search.js +402 -0
- package/web/sol-settings.js +199 -0
- package/web/sol-solidos.js +93 -0
- package/web/sol-tabs.js +445 -0
- package/web/sol-time.js +194 -0
- package/web/sol-tree-edit.js +492 -0
- package/web/sol-wac.js +456 -0
- package/web/sol-weather.js +337 -0
- package/web/sol-window.js +142 -0
- package/web/styles/buttons-css.js +108 -0
- package/web/styles/help.css +242 -0
- package/web/styles/root.css +112 -0
- package/web/styles/sol-accordion-css.js +97 -0
- package/web/styles/sol-calendar-css.js +154 -0
- package/web/styles/sol-feed-css.js +475 -0
- package/web/styles/sol-form-css.js +471 -0
- package/web/styles/sol-gallery-css.js +181 -0
- package/web/styles/sol-include-css.js +95 -0
- package/web/styles/sol-live-edit-css.js +84 -0
- package/web/styles/sol-live-edit.css +101 -0
- package/web/styles/sol-login-css.js +116 -0
- package/web/styles/sol-menu-css.js +145 -0
- package/web/styles/sol-modal-css.js +134 -0
- package/web/styles/sol-pod-css.js +187 -0
- package/web/styles/sol-pod-modal-css.js +203 -0
- package/web/styles/sol-query-css.js +140 -0
- package/web/styles/sol-query-help.css +267 -0
- package/web/styles/sol-query-one-pager.css +67 -0
- package/web/styles/sol-search-css.js +157 -0
- package/web/styles/sol-solidos-css.js +7 -0
- package/web/styles/sol-tabs-css.js +114 -0
- package/web/styles/sol-time-css.js +30 -0
- package/web/styles/sol-wac-css.js +73 -0
- package/web/styles/sol-weather-css.js +59 -0
- package/web/styles/solid-logo.svg +9 -0
- package/web/styles/view-accordion-css.js +66 -0
- package/web/styles/view-anchorlist-css.js +22 -0
- package/web/styles/view-autocomplete-css.js +59 -0
- package/web/styles/view-rolodex-css.js +102 -0
- package/web/styles/view-select-css.js +21 -0
- package/web/utils/calendar-fetch.js +388 -0
- package/web/utils/code-mirror-editor.js +82 -0
- package/web/utils/commons-fetch.js +108 -0
- package/web/utils/feed-edit.js +159 -0
- package/web/utils/feed-edit.smoke.mjs +74 -0
- package/web/utils/feed-fetch.js +573 -0
- package/web/utils/live-edit-help/csv.js +64 -0
- package/web/utils/live-edit-help/graphviz.js +41 -0
- package/web/utils/live-edit-help/jsonld.js +55 -0
- package/web/utils/live-edit-help/markdown.js +52 -0
- package/web/utils/live-edit-help/mermaid.js +48 -0
- package/web/utils/live-edit-help/turtle.js +85 -0
- package/web/utils/rdf-config.js +125 -0
- package/web/utils/renderers/csv.js +124 -0
- package/web/utils/renderers/d3-force.js +82 -0
- package/web/utils/renderers/graphviz.js +13 -0
- package/web/utils/renderers/html.js +10 -0
- package/web/utils/renderers/jsonld.js +63 -0
- package/web/utils/renderers/markdown.js +19 -0
- package/web/utils/renderers/mermaid.js +54 -0
- package/web/utils/renderers/turtle.js +51 -0
- package/web/utils/sol-query-triple-patterns.js +151 -0
- package/web/utils/sol-query-ui.js +250 -0
- package/web/utils/sol-query-views.js +32 -0
- package/web/views/_helpers.js +34 -0
- package/web/views/accordion.js +133 -0
- package/web/views/anchorlist.js +59 -0
- package/web/views/auto-complete.js +183 -0
- package/web/views/dl.js +38 -0
- package/web/views/list.js +19 -0
- package/web/views/menu.js +56 -0
- package/web/views/rolodex.js +126 -0
- package/web/views/select.js +79 -0
- package/web/views/table.js +73 -0
- package/web/views/tabs.js +57 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export function assertSafeQuery(query) {
|
|
2
|
+
const m = query.match(/\b(INSERT|DELETE|DROP|CREATE|CLEAR|LOAD|COPY|MOVE|ADD)\b/i);
|
|
3
|
+
if (m) throw new Error(`Blocked SPARQL operation: ${m[0].toUpperCase()}`);
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export function sanitizeVarValue(value) {
|
|
7
|
+
if (/[{}]/.test(value)) throw new Error(`Variable value contains disallowed characters: { }`);
|
|
8
|
+
if (/\b(INSERT|DELETE|DROP|CREATE|CLEAR|LOAD|COPY|MOVE|ADD)\b/i.test(value))
|
|
9
|
+
throw new Error(`Variable value contains blocked keyword`);
|
|
10
|
+
return value.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/'/g, "\\'");
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function substituteVariables(query, vars = {}) {
|
|
14
|
+
let q = query;
|
|
15
|
+
for (const [key, value] of Object.entries(vars)) {
|
|
16
|
+
const safe = sanitizeVarValue(value);
|
|
17
|
+
q = q.replace(new RegExp(`\\{\\{${key}\\}\\}`, 'g'), safe);
|
|
18
|
+
}
|
|
19
|
+
return q;
|
|
20
|
+
}
|
package/core/utils.js
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
// Shared utilities that do not depend on rdflib.
|
|
2
|
+
|
|
3
|
+
// ─── DOMPurify (lazy, cached) ─────────────────────────────────────────────────
|
|
4
|
+
let _purify = null;
|
|
5
|
+
async function _getDOMPurify() {
|
|
6
|
+
if (_purify) return _purify;
|
|
7
|
+
const win = typeof window !== 'undefined' ? window : {};
|
|
8
|
+
// The global may be the purify instance directly (official purify.min.js UMD)
|
|
9
|
+
// or a module namespace wrapping it (our esbuild vendor UMD → `{ default }`).
|
|
10
|
+
const g = win.DOMPurify;
|
|
11
|
+
const inst = g?.sanitize ? g : (g?.default?.sanitize ? g.default : null);
|
|
12
|
+
if (inst) { _purify = inst; return _purify; }
|
|
13
|
+
try {
|
|
14
|
+
const mod = await import('dompurify');
|
|
15
|
+
_purify = mod.default ?? mod;
|
|
16
|
+
if (_purify?.sanitize) return _purify;
|
|
17
|
+
} catch {}
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export async function sanitizeHtml(html, opts = {}) {
|
|
22
|
+
const p = await _getDOMPurify();
|
|
23
|
+
if (p) return p.sanitize(html, opts);
|
|
24
|
+
// Minimal fallback: parse + re-serialize strips scripts/events via browser parser
|
|
25
|
+
const doc = new DOMParser().parseFromString(html, 'text/html');
|
|
26
|
+
return doc.body.innerHTML;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// W3C SPARQL Query Results JSON envelope.
|
|
30
|
+
function w3c(vars, bindings) { return { head: { vars }, results: { bindings } }; }
|
|
31
|
+
|
|
32
|
+
// ─── CSS selector query over an HTML document ────────────────────────────────
|
|
33
|
+
// `html` is already sanitized. Returns the W3C SPARQL Query Results JSON
|
|
34
|
+
// envelope ({ head: { vars }, results: { bindings } }) suitable for the renderer.
|
|
35
|
+
export function queryHtmlWithSelector(html, baseUrl, selector) {
|
|
36
|
+
const doc = new DOMParser().parseFromString(html, 'text/html');
|
|
37
|
+
doc.querySelectorAll('base').forEach(b => b.remove()); // drop any existing <base>
|
|
38
|
+
const base = doc.createElement('base');
|
|
39
|
+
base.href = baseUrl;
|
|
40
|
+
doc.head.appendChild(base);
|
|
41
|
+
|
|
42
|
+
const els = Array.from(doc.querySelectorAll(selector));
|
|
43
|
+
if (!els.length) return w3c(['text'], []);
|
|
44
|
+
|
|
45
|
+
const hasHref = els.some(el => el.href || el.getAttribute('href'));
|
|
46
|
+
const hasSrc = els.some(el => el.src || el.getAttribute('src'));
|
|
47
|
+
const vars = ['tag', 'text'];
|
|
48
|
+
if (hasHref) vars.push('href');
|
|
49
|
+
if (hasSrc) vars.push('src');
|
|
50
|
+
|
|
51
|
+
const bindings = els.map(el => {
|
|
52
|
+
const row = {
|
|
53
|
+
tag: { type: 'literal', value: el.tagName.toLowerCase() },
|
|
54
|
+
text: { type: 'literal', value: el.textContent.trim() },
|
|
55
|
+
};
|
|
56
|
+
if (hasHref) {
|
|
57
|
+
const v = el.href || el.getAttribute('href') || '';
|
|
58
|
+
row.href = v ? { type: 'uri', value: el.href || v } : { type: 'literal', value: '' };
|
|
59
|
+
}
|
|
60
|
+
if (hasSrc) {
|
|
61
|
+
const v = el.src || el.getAttribute('src') || '';
|
|
62
|
+
row.src = v ? { type: 'uri', value: el.src || v } : { type: 'literal', value: '' };
|
|
63
|
+
}
|
|
64
|
+
return row;
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
return w3c(vars, bindings);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// ─── Plain results transformation ────────────────────────────────────────────
|
|
71
|
+
// Converts the W3C envelope to plain JS objects/scalars.
|
|
72
|
+
export function toPlainResults(data, wantedVars) {
|
|
73
|
+
const vars = data.head.vars;
|
|
74
|
+
const bindings = data.results.bindings;
|
|
75
|
+
const cols = wantedVars ? vars.filter(v => wantedVars.includes(v)) : vars;
|
|
76
|
+
if (!bindings.length) return [];
|
|
77
|
+
// 1 row × 1 column → return scalar value directly
|
|
78
|
+
if (cols.length === 1 && bindings.length === 1) {
|
|
79
|
+
const cell = bindings[0][cols[0]];
|
|
80
|
+
return cell ? cell.value : null;
|
|
81
|
+
}
|
|
82
|
+
return bindings.map(row => {
|
|
83
|
+
const obj = {};
|
|
84
|
+
for (const col of cols) {
|
|
85
|
+
const cell = row[col];
|
|
86
|
+
obj[col] = cell ? cell.value : null;
|
|
87
|
+
}
|
|
88
|
+
return obj;
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// ─── SPARQL adapters (non-rdflib) ────────────────────────────────────────────
|
|
93
|
+
|
|
94
|
+
// Extract the projected variable names from a SPARQL SELECT clause, preserving
|
|
95
|
+
// author order. Returns null for `SELECT *` or non-SELECT queries — callers
|
|
96
|
+
// should fall back to whatever order the engine produced.
|
|
97
|
+
export function parseSelectVars(queryText) {
|
|
98
|
+
const stripped = queryText.replace(/#[^\n]*/g, '');
|
|
99
|
+
const m = stripped.match(/\bSELECT\s+(?:DISTINCT\s+|REDUCED\s+)?(.*?)\s+WHERE\b/is);
|
|
100
|
+
if (!m) return null;
|
|
101
|
+
const clause = m[1].trim();
|
|
102
|
+
if (clause === '*') return null;
|
|
103
|
+
const vars = clause.match(/\?(\w+)/g);
|
|
104
|
+
return vars ? vars.map(v => v.slice(1)) : null;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export class ComunicaSparqlAdapter {
|
|
108
|
+
constructor(engineFactory) {
|
|
109
|
+
this.engineFactory = engineFactory;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
static getComunicaEngine() {
|
|
113
|
+
if (typeof newEngine === 'function') return newEngine;
|
|
114
|
+
if (window.newEngine && typeof window.newEngine === 'function') return window.newEngine;
|
|
115
|
+
// Direct named export (when consumers expose Comunica themselves).
|
|
116
|
+
if (window.Comunica?.QueryEngine) return () => new window.Comunica.QueryEngine();
|
|
117
|
+
if (window.Comunica?.newEngine) return window.Comunica.newEngine;
|
|
118
|
+
// The vendored UMD wraps Comunica's CJS index, so QueryEngine lives one
|
|
119
|
+
// level deeper at `window.Comunica.default.QueryEngine`.
|
|
120
|
+
if (window.Comunica?.default?.QueryEngine) return () => new window.Comunica.default.QueryEngine();
|
|
121
|
+
if (window.Comunica?.default?.newEngine) return window.Comunica.default.newEngine;
|
|
122
|
+
// All-ESM fallback: no UMD sets a Comunica global anymore. The loader's
|
|
123
|
+
// importmap resolves `@comunica/query-sparql` to the one shared engine, so
|
|
124
|
+
// import it on demand and build a QueryEngine from its export. Async factory
|
|
125
|
+
// — awaited by executeQuery, so the (large) engine only loads when a
|
|
126
|
+
// federated query actually runs, not on page load.
|
|
127
|
+
return async () => {
|
|
128
|
+
let mod;
|
|
129
|
+
try { mod = await import('@comunica/query-sparql'); }
|
|
130
|
+
catch (e) { throw new Error(`Comunica engine could not be loaded: ${e.message}`); }
|
|
131
|
+
const QueryEngine = mod.QueryEngine || mod.default?.QueryEngine || mod.default;
|
|
132
|
+
if (typeof QueryEngine !== 'function') throw new Error('Comunica module has no QueryEngine export');
|
|
133
|
+
return new QueryEngine();
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
async executeQuery(query, endpoint, fetchFn) {
|
|
138
|
+
const engine = await this.engineFactory();
|
|
139
|
+
const sources = Array.isArray(endpoint) ? endpoint.slice() : [endpoint];
|
|
140
|
+
const ctx = { sources, lenient: true };
|
|
141
|
+
if (typeof fetchFn === 'function') ctx.fetch = fetchFn;
|
|
142
|
+
const stream = await engine.queryBindings(query, ctx);
|
|
143
|
+
const rawBindings = await stream.toArray();
|
|
144
|
+
if (!rawBindings.length) return w3c([], []);
|
|
145
|
+
|
|
146
|
+
// Prefer the explicit SELECT order from the query text; fall back to the
|
|
147
|
+
// engine's binding order for SELECT * / non-SELECT.
|
|
148
|
+
const selectVars = parseSelectVars(query);
|
|
149
|
+
const vars = selectVars ?? Array.from(rawBindings[0].keys()).map(v => v.value);
|
|
150
|
+
|
|
151
|
+
const bindings = rawBindings.map(binding => {
|
|
152
|
+
const row = {};
|
|
153
|
+
vars.forEach(v => {
|
|
154
|
+
const term = binding.get(v);
|
|
155
|
+
if (!term) { row[v] = { type: 'literal', value: '' }; return; }
|
|
156
|
+
if (term.termType === 'NamedNode' || term.uri) {
|
|
157
|
+
row[v] = { type: 'uri', value: term.value || term.uri || String(term) };
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (term.termType === 'BlankNode') {
|
|
161
|
+
row[v] = { type: 'bnode', value: term.value };
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const cell = { type: 'literal', value: term.value || term.uri || String(term) };
|
|
165
|
+
if (term.language) cell['xml:lang'] = term.language;
|
|
166
|
+
if (term.datatype?.value) cell.datatype = term.datatype.value;
|
|
167
|
+
row[v] = cell;
|
|
168
|
+
});
|
|
169
|
+
return row;
|
|
170
|
+
});
|
|
171
|
+
return w3c(vars, bindings);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export class NativeSparqlAdapter {
|
|
176
|
+
async executeQuery(query, endpoint, fetchFn = fetch) {
|
|
177
|
+
const params = new URLSearchParams({ query, format: 'json' });
|
|
178
|
+
const resp = await fetchFn(`${endpoint}?${params}`, {
|
|
179
|
+
headers: { Accept: 'application/sparql-results+json' },
|
|
180
|
+
});
|
|
181
|
+
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
|
|
182
|
+
// The wire format IS the W3C SPARQL Query Results JSON envelope. The
|
|
183
|
+
// spec leaves missing-binding cells *absent* from a row, but downstream
|
|
184
|
+
// consumers (toPlainResults, views) expect every projected variable to
|
|
185
|
+
// be present — so synthesize empty-literal cells where the wire row
|
|
186
|
+
// omits a column.
|
|
187
|
+
const data = await resp.json();
|
|
188
|
+
const vars = data?.head?.vars ?? [];
|
|
189
|
+
const filled = (data?.results?.bindings ?? []).map(row => {
|
|
190
|
+
const out = {};
|
|
191
|
+
vars.forEach(v => { out[v] = row[v] ? row[v] : { type: 'literal', value: '' }; });
|
|
192
|
+
return out;
|
|
193
|
+
});
|
|
194
|
+
return { head: { vars }, results: { bindings: filled } };
|
|
195
|
+
}
|
|
196
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"imports": {
|
|
3
|
+
"rdflib": "https://esm.sh/rdflib@2",
|
|
4
|
+
"dompurify": "https://esm.sh/dompurify@3",
|
|
5
|
+
"ical.js": "https://esm.sh/ical.js@2",
|
|
6
|
+
"marked": "https://esm.sh/marked@4",
|
|
7
|
+
"@comunica/query-sparql": "https://esm.sh/@comunica/query-sparql@5",
|
|
8
|
+
"solid-ui": "https://esm.sh/solid-ui@3",
|
|
9
|
+
"solid-logic": "https://esm.sh/solid-logic@4",
|
|
10
|
+
"@inrupt/solid-client-authn-browser": "https://esm.sh/@inrupt/solid-client-authn-browser@4",
|
|
11
|
+
"n3": "https://esm.sh/n3@2",
|
|
12
|
+
"rdf-validate-shacl": "https://esm.sh/rdf-validate-shacl@0.6",
|
|
13
|
+
"menu-from-rdf": "https://esm.sh/sol-components/web/menu-from-rdf.js",
|
|
14
|
+
"sol-accordion": "https://esm.sh/sol-components/web/sol-accordion.js",
|
|
15
|
+
"sol-basic": "https://esm.sh/sol-components/web/sol-basic.js",
|
|
16
|
+
"sol-breadcrumb": "https://esm.sh/sol-components/web/sol-breadcrumb.js",
|
|
17
|
+
"sol-button": "https://esm.sh/sol-components/web/sol-button.js",
|
|
18
|
+
"sol-calendar": "https://esm.sh/sol-components/web/sol-calendar.js",
|
|
19
|
+
"sol-default": "https://esm.sh/sol-components/web/sol-default.js",
|
|
20
|
+
"sol-dropdown-button": "https://esm.sh/sol-components/web/sol-dropdown-button.js",
|
|
21
|
+
"sol-feed": "https://esm.sh/sol-components/web/sol-feed.js",
|
|
22
|
+
"sol-form": "https://esm.sh/sol-components/web/sol-form.js",
|
|
23
|
+
"sol-full": "https://esm.sh/sol-components/web/sol-full.js",
|
|
24
|
+
"sol-gallery": "https://esm.sh/sol-components/web/sol-gallery.js",
|
|
25
|
+
"sol-include": "https://esm.sh/sol-components/web/sol-include.js",
|
|
26
|
+
"sol-live-edit": "https://esm.sh/sol-components/web/sol-live-edit.js",
|
|
27
|
+
"sol-login": "https://esm.sh/sol-components/web/sol-login.js",
|
|
28
|
+
"sol-menu": "https://esm.sh/sol-components/web/sol-menu.js",
|
|
29
|
+
"sol-modal": "https://esm.sh/sol-components/web/sol-modal.js",
|
|
30
|
+
"sol-pod-extras": "https://esm.sh/sol-components/web/sol-pod-extras.js",
|
|
31
|
+
"sol-pod-ops": "https://esm.sh/sol-components/web/sol-pod-ops.js",
|
|
32
|
+
"sol-pod": "https://esm.sh/sol-components/web/sol-pod.js",
|
|
33
|
+
"sol-query": "https://esm.sh/sol-components/web/sol-query.js",
|
|
34
|
+
"sol-rolodex": "https://esm.sh/sol-components/web/sol-rolodex.js",
|
|
35
|
+
"sol-search": "https://esm.sh/sol-components/web/sol-search.js",
|
|
36
|
+
"sol-settings": "https://esm.sh/sol-components/web/sol-settings.js",
|
|
37
|
+
"sol-solidos": "https://esm.sh/sol-components/web/sol-solidos.js",
|
|
38
|
+
"sol-tabs": "https://esm.sh/sol-components/web/sol-tabs.js",
|
|
39
|
+
"sol-time": "https://esm.sh/sol-components/web/sol-time.js",
|
|
40
|
+
"sol-tree-edit": "https://esm.sh/sol-components/web/sol-tree-edit.js",
|
|
41
|
+
"sol-wac": "https://esm.sh/sol-components/web/sol-wac.js",
|
|
42
|
+
"sol-weather": "https://esm.sh/sol-components/web/sol-weather.js",
|
|
43
|
+
"sol-window": "https://esm.sh/sol-components/web/sol-window.js",
|
|
44
|
+
"sol-components/core/": "https://esm.sh/sol-components/core/",
|
|
45
|
+
"sol-components/sources/": "https://esm.sh/sol-components/sources/",
|
|
46
|
+
"sol-components/data/": "https://esm.sh/sol-components/data/",
|
|
47
|
+
"sol-components/": "https://esm.sh/sol-components/web/"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"imports": {
|
|
3
|
+
"rdflib": "./vendor/rdflib.js",
|
|
4
|
+
"dompurify": "./vendor/dompurify.js",
|
|
5
|
+
"ical.js": "./vendor/ical.js.js",
|
|
6
|
+
"marked": "./vendor/marked.js",
|
|
7
|
+
"@comunica/query-sparql": "./vendor/@comunica-query-sparql.js",
|
|
8
|
+
"solid-ui": "./vendor/solid-ui.js",
|
|
9
|
+
"solid-logic": "./vendor/solid-logic.js",
|
|
10
|
+
"@inrupt/solid-client-authn-browser": "./vendor/@inrupt-solid-client-authn-browser.js",
|
|
11
|
+
"n3": "./vendor/n3.js",
|
|
12
|
+
"rdf-validate-shacl": "./vendor/rdf-validate-shacl.js",
|
|
13
|
+
"menu-from-rdf": "../web/menu-from-rdf.js",
|
|
14
|
+
"sol-accordion": "../web/sol-accordion.js",
|
|
15
|
+
"sol-basic": "../web/sol-basic.js",
|
|
16
|
+
"sol-breadcrumb": "../web/sol-breadcrumb.js",
|
|
17
|
+
"sol-button": "../web/sol-button.js",
|
|
18
|
+
"sol-calendar": "../web/sol-calendar.js",
|
|
19
|
+
"sol-default": "../web/sol-default.js",
|
|
20
|
+
"sol-dropdown-button": "../web/sol-dropdown-button.js",
|
|
21
|
+
"sol-feed": "../web/sol-feed.js",
|
|
22
|
+
"sol-form": "../web/sol-form.js",
|
|
23
|
+
"sol-full": "../web/sol-full.js",
|
|
24
|
+
"sol-gallery": "../web/sol-gallery.js",
|
|
25
|
+
"sol-include": "../web/sol-include.js",
|
|
26
|
+
"sol-live-edit": "../web/sol-live-edit.js",
|
|
27
|
+
"sol-login": "../web/sol-login.js",
|
|
28
|
+
"sol-menu": "../web/sol-menu.js",
|
|
29
|
+
"sol-modal": "../web/sol-modal.js",
|
|
30
|
+
"sol-pod-extras": "../web/sol-pod-extras.js",
|
|
31
|
+
"sol-pod-ops": "../web/sol-pod-ops.js",
|
|
32
|
+
"sol-pod": "../web/sol-pod.js",
|
|
33
|
+
"sol-query": "../web/sol-query.js",
|
|
34
|
+
"sol-rolodex": "../web/sol-rolodex.js",
|
|
35
|
+
"sol-search": "../web/sol-search.js",
|
|
36
|
+
"sol-settings": "../web/sol-settings.js",
|
|
37
|
+
"sol-solidos": "../web/sol-solidos.js",
|
|
38
|
+
"sol-tabs": "../web/sol-tabs.js",
|
|
39
|
+
"sol-time": "../web/sol-time.js",
|
|
40
|
+
"sol-tree-edit": "../web/sol-tree-edit.js",
|
|
41
|
+
"sol-wac": "../web/sol-wac.js",
|
|
42
|
+
"sol-weather": "../web/sol-weather.js",
|
|
43
|
+
"sol-window": "../web/sol-window.js",
|
|
44
|
+
"sol-components/core/": "../core/",
|
|
45
|
+
"sol-components/sources/": "../sources/",
|
|
46
|
+
"sol-components/data/": "../data/",
|
|
47
|
+
"sol-components/": "../web/"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "sol-components",
|
|
3
|
+
|
|
4
|
+
"stages": {
|
|
5
|
+
"local": {
|
|
6
|
+
"components": {
|
|
7
|
+
"menu-from-rdf": "../web/menu-from-rdf.js",
|
|
8
|
+
"sol-accordion": "../web/sol-accordion.js",
|
|
9
|
+
"sol-basic": "../web/sol-basic.js",
|
|
10
|
+
"sol-breadcrumb": "../web/sol-breadcrumb.js",
|
|
11
|
+
"sol-button": "../web/sol-button.js",
|
|
12
|
+
"sol-calendar": "../web/sol-calendar.js",
|
|
13
|
+
"sol-default": "../web/sol-default.js",
|
|
14
|
+
"sol-dropdown-button": "../web/sol-dropdown-button.js",
|
|
15
|
+
"sol-feed": "../web/sol-feed.js",
|
|
16
|
+
"sol-form": "../web/sol-form.js",
|
|
17
|
+
"sol-full": "../web/sol-full.js",
|
|
18
|
+
"sol-gallery": "../web/sol-gallery.js",
|
|
19
|
+
"sol-include": "../web/sol-include.js",
|
|
20
|
+
"sol-live-edit": "../web/sol-live-edit.js",
|
|
21
|
+
"sol-login": "../web/sol-login.js",
|
|
22
|
+
"sol-menu": "../web/sol-menu.js",
|
|
23
|
+
"sol-modal": "../web/sol-modal.js",
|
|
24
|
+
"sol-pod-extras": "../web/sol-pod-extras.js",
|
|
25
|
+
"sol-pod-ops": "../web/sol-pod-ops.js",
|
|
26
|
+
"sol-pod": "../web/sol-pod.js",
|
|
27
|
+
"sol-query": "../web/sol-query.js",
|
|
28
|
+
"sol-rolodex": "../web/sol-rolodex.js",
|
|
29
|
+
"sol-search": "../web/sol-search.js",
|
|
30
|
+
"sol-settings": "../web/sol-settings.js",
|
|
31
|
+
"sol-solidos": "../web/sol-solidos.js",
|
|
32
|
+
"sol-tabs": "../web/sol-tabs.js",
|
|
33
|
+
"sol-time": "../web/sol-time.js",
|
|
34
|
+
"sol-tree-edit": "../web/sol-tree-edit.js",
|
|
35
|
+
"sol-wac": "../web/sol-wac.js",
|
|
36
|
+
"sol-weather": "../web/sol-weather.js",
|
|
37
|
+
"sol-window": "../web/sol-window.js"
|
|
38
|
+
},
|
|
39
|
+
"shared-modules": {
|
|
40
|
+
"rdflib": "./vendor/rdflib.js",
|
|
41
|
+
"dompurify": "./vendor/dompurify.js",
|
|
42
|
+
"ical.js": "./vendor/ical.js.js",
|
|
43
|
+
"marked": "./vendor/marked.js",
|
|
44
|
+
"@comunica/query-sparql": "https://esm.sh/@comunica/query-sparql@5",
|
|
45
|
+
"solid-ui": "./vendor/solid-ui.js",
|
|
46
|
+
"solid-logic": "./vendor/solid-logic.js",
|
|
47
|
+
"@inrupt/solid-client-authn-browser": "./vendor/@inrupt-solid-client-authn-browser.js",
|
|
48
|
+
"n3": "./vendor/n3.js",
|
|
49
|
+
"rdf-validate-shacl": "./vendor/rdf-validate-shacl.js",
|
|
50
|
+
"sol-components/core/": "../core/",
|
|
51
|
+
"sol-components/sources/": "../sources/",
|
|
52
|
+
"sol-components/data/": "../data/",
|
|
53
|
+
"sol-components/": "../web/"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"cdn": {
|
|
57
|
+
"components": {
|
|
58
|
+
"menu-from-rdf": "https://esm.sh/sol-components/web/menu-from-rdf.js",
|
|
59
|
+
"sol-accordion": "https://esm.sh/sol-components/web/sol-accordion.js",
|
|
60
|
+
"sol-basic": "https://esm.sh/sol-components/web/sol-basic.js",
|
|
61
|
+
"sol-breadcrumb": "https://esm.sh/sol-components/web/sol-breadcrumb.js",
|
|
62
|
+
"sol-button": "https://esm.sh/sol-components/web/sol-button.js",
|
|
63
|
+
"sol-calendar": "https://esm.sh/sol-components/web/sol-calendar.js",
|
|
64
|
+
"sol-default": "https://esm.sh/sol-components/web/sol-default.js",
|
|
65
|
+
"sol-dropdown-button": "https://esm.sh/sol-components/web/sol-dropdown-button.js",
|
|
66
|
+
"sol-feed": "https://esm.sh/sol-components/web/sol-feed.js",
|
|
67
|
+
"sol-form": "https://esm.sh/sol-components/web/sol-form.js",
|
|
68
|
+
"sol-full": "https://esm.sh/sol-components/web/sol-full.js",
|
|
69
|
+
"sol-gallery": "https://esm.sh/sol-components/web/sol-gallery.js",
|
|
70
|
+
"sol-include": "https://esm.sh/sol-components/web/sol-include.js",
|
|
71
|
+
"sol-live-edit": "https://esm.sh/sol-components/web/sol-live-edit.js",
|
|
72
|
+
"sol-login": "https://esm.sh/sol-components/web/sol-login.js",
|
|
73
|
+
"sol-menu": "https://esm.sh/sol-components/web/sol-menu.js",
|
|
74
|
+
"sol-modal": "https://esm.sh/sol-components/web/sol-modal.js",
|
|
75
|
+
"sol-pod-extras": "https://esm.sh/sol-components/web/sol-pod-extras.js",
|
|
76
|
+
"sol-pod-ops": "https://esm.sh/sol-components/web/sol-pod-ops.js",
|
|
77
|
+
"sol-pod": "https://esm.sh/sol-components/web/sol-pod.js",
|
|
78
|
+
"sol-query": "https://esm.sh/sol-components/web/sol-query.js",
|
|
79
|
+
"sol-rolodex": "https://esm.sh/sol-components/web/sol-rolodex.js",
|
|
80
|
+
"sol-search": "https://esm.sh/sol-components/web/sol-search.js",
|
|
81
|
+
"sol-settings": "https://esm.sh/sol-components/web/sol-settings.js",
|
|
82
|
+
"sol-solidos": "https://esm.sh/sol-components/web/sol-solidos.js",
|
|
83
|
+
"sol-tabs": "https://esm.sh/sol-components/web/sol-tabs.js",
|
|
84
|
+
"sol-time": "https://esm.sh/sol-components/web/sol-time.js",
|
|
85
|
+
"sol-tree-edit": "https://esm.sh/sol-components/web/sol-tree-edit.js",
|
|
86
|
+
"sol-wac": "https://esm.sh/sol-components/web/sol-wac.js",
|
|
87
|
+
"sol-weather": "https://esm.sh/sol-components/web/sol-weather.js",
|
|
88
|
+
"sol-window": "https://esm.sh/sol-components/web/sol-window.js"
|
|
89
|
+
},
|
|
90
|
+
"shared-modules": {
|
|
91
|
+
"rdflib": "https://esm.sh/rdflib@2",
|
|
92
|
+
"dompurify": "https://esm.sh/dompurify@3",
|
|
93
|
+
"ical.js": "https://esm.sh/ical.js@2",
|
|
94
|
+
"marked": "https://esm.sh/marked@4",
|
|
95
|
+
"@comunica/query-sparql": "https://esm.sh/@comunica/query-sparql@5",
|
|
96
|
+
"solid-ui": "https://esm.sh/solid-ui@3",
|
|
97
|
+
"solid-logic": "https://esm.sh/solid-logic@4",
|
|
98
|
+
"@inrupt/solid-client-authn-browser": "https://esm.sh/@inrupt/solid-client-authn-browser@4",
|
|
99
|
+
"n3": "https://esm.sh/n3@2",
|
|
100
|
+
"rdf-validate-shacl": "https://esm.sh/rdf-validate-shacl@0.6",
|
|
101
|
+
"sol-components/core/": "https://esm.sh/sol-components/core/",
|
|
102
|
+
"sol-components/sources/": "https://esm.sh/sol-components/sources/",
|
|
103
|
+
"sol-components/data/": "https://esm.sh/sol-components/data/",
|
|
104
|
+
"sol-components/": "https://esm.sh/sol-components/web/"
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
|
|
109
|
+
"bundles": {
|
|
110
|
+
"rdf-bundle": [
|
|
111
|
+
"solid-logic",
|
|
112
|
+
"solid-ui",
|
|
113
|
+
"sol-tree-edit",
|
|
114
|
+
"sol-form",
|
|
115
|
+
"sol-settings",
|
|
116
|
+
"sol-components/core/edit-placements.js",
|
|
117
|
+
"sol-components/core/from-rdf.js"
|
|
118
|
+
]
|
|
119
|
+
},
|
|
120
|
+
|
|
121
|
+
"attributes": {
|
|
122
|
+
"data-from-query": "sol-components/core/from-query.js",
|
|
123
|
+
"data-edit-shape data-from-rdf": "rdf-bundle"
|
|
124
|
+
},
|
|
125
|
+
|
|
126
|
+
"objects": {
|
|
127
|
+
"provides": {
|
|
128
|
+
"store": { "service": "rdf", "sendValue": "store" },
|
|
129
|
+
"auth": { "service": "auth", "sendValue": "fetch" },
|
|
130
|
+
"navigation": { "respondTo": "sol-navigate", "sendValue": "detail.url" }
|
|
131
|
+
},
|
|
132
|
+
"consumes": {
|
|
133
|
+
"store": { "call": "rdf.useStore" },
|
|
134
|
+
"auth": { "call": "adoptFetch" }
|
|
135
|
+
},
|
|
136
|
+
"accepts": {
|
|
137
|
+
"navigation": { "onElement": "sol-query", "applyValueTo": "endpoint" }
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|