@loomweaver/devkit 0.7.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/README.md +127 -0
- package/generators.json +41 -0
- package/package.json +38 -0
- package/src/generators/auth-source/generator.d.ts +4 -0
- package/src/generators/auth-source/generator.js +17 -0
- package/src/generators/auth-source/generator.js.map +1 -0
- package/src/generators/auth-source/schema.json +18 -0
- package/src/generators/distribution/generator.d.ts +4 -0
- package/src/generators/distribution/generator.js +61 -0
- package/src/generators/distribution/generator.js.map +1 -0
- package/src/generators/distribution/nx-files.d.ts +22 -0
- package/src/generators/distribution/nx-files.js +133 -0
- package/src/generators/distribution/nx-files.js.map +1 -0
- package/src/generators/distribution/schema.json +48 -0
- package/src/generators/frame-plugin/generator.d.ts +4 -0
- package/src/generators/frame-plugin/generator.js +20 -0
- package/src/generators/frame-plugin/generator.js.map +1 -0
- package/src/generators/frame-plugin/schema.json +22 -0
- package/src/generators/layout/generator.d.ts +4 -0
- package/src/generators/layout/generator.js +17 -0
- package/src/generators/layout/generator.js.map +1 -0
- package/src/generators/layout/schema.json +17 -0
- package/src/generators/nx-scaffold-shared.d.ts +32 -0
- package/src/generators/nx-scaffold-shared.js +87 -0
- package/src/generators/nx-scaffold-shared.js.map +1 -0
- package/src/generators/settings-store/generator.d.ts +4 -0
- package/src/generators/settings-store/generator.js +17 -0
- package/src/generators/settings-store/generator.js.map +1 -0
- package/src/generators/settings-store/schema.json +18 -0
- package/src/generators/shared.d.ts +47 -0
- package/src/generators/shared.js +152 -0
- package/src/generators/shared.js.map +1 -0
- package/src/generators/theme/generator.d.ts +4 -0
- package/src/generators/theme/generator.js +17 -0
- package/src/generators/theme/generator.js.map +1 -0
- package/src/generators/theme/schema.json +24 -0
- package/src/generators/weaver/generator.d.ts +4 -0
- package/src/generators/weaver/generator.js +75 -0
- package/src/generators/weaver/generator.js.map +1 -0
- package/src/generators/weaver/nx-files.d.ts +26 -0
- package/src/generators/weaver/nx-files.js +73 -0
- package/src/generators/weaver/nx-files.js.map +1 -0
- package/src/generators/weaver/schema.json +97 -0
- package/src/index.d.ts +15 -0
- package/src/index.js +47 -0
- package/src/index.js.map +1 -0
- package/src/lib/generate/casing.d.ts +4 -0
- package/src/lib/generate/casing.js +27 -0
- package/src/lib/generate/casing.js.map +1 -0
- package/src/lib/generate/generate.d.ts +2 -0
- package/src/lib/generate/generate.js +18 -0
- package/src/lib/generate/generate.js.map +1 -0
- package/src/lib/generate/types.d.ts +5 -0
- package/src/lib/generate/types.js +3 -0
- package/src/lib/generate/types.js.map +1 -0
- package/src/lib/scaffolds/scaffolds.d.ts +37 -0
- package/src/lib/scaffolds/scaffolds.js +357 -0
- package/src/lib/scaffolds/scaffolds.js.map +1 -0
- package/src/lib/validate/catalog.d.ts +15 -0
- package/src/lib/validate/catalog.js +247 -0
- package/src/lib/validate/catalog.js.map +1 -0
- package/src/lib/validate/i18n.d.ts +3 -0
- package/src/lib/validate/i18n.js +41 -0
- package/src/lib/validate/i18n.js.map +1 -0
- package/src/lib/validate/manifest.d.ts +8 -0
- package/src/lib/validate/manifest.js +74 -0
- package/src/lib/validate/manifest.js.map +1 -0
- package/src/lib/validate/types.d.ts +7 -0
- package/src/lib/validate/types.js +3 -0
- package/src/lib/validate/types.js.map +1 -0
- package/src/recipes/angular-distribution/logo.d.ts +1 -0
- package/src/recipes/angular-distribution/logo.js +9 -0
- package/src/recipes/angular-distribution/logo.js.map +1 -0
- package/src/recipes/angular-distribution/recipe.d.ts +25 -0
- package/src/recipes/angular-distribution/recipe.js +407 -0
- package/src/recipes/angular-distribution/recipe.js.map +1 -0
- package/src/recipes/angular-weaver/recipe.d.ts +48 -0
- package/src/recipes/angular-weaver/recipe.js +568 -0
- package/src/recipes/angular-weaver/recipe.js.map +1 -0
- package/src/recipes/angular-weaver/weaver-i18n.d.ts +3 -0
- package/src/recipes/angular-weaver/weaver-i18n.js +24 -0
- package/src/recipes/angular-weaver/weaver-i18n.js.map +1 -0
- package/src/recipes/auth-source/recipe.d.ts +11 -0
- package/src/recipes/auth-source/recipe.js +61 -0
- package/src/recipes/auth-source/recipe.js.map +1 -0
- package/src/recipes/frame-plugin/recipe.d.ts +11 -0
- package/src/recipes/frame-plugin/recipe.js +143 -0
- package/src/recipes/frame-plugin/recipe.js.map +1 -0
- package/src/recipes/layout/recipe.d.ts +10 -0
- package/src/recipes/layout/recipe.js +35 -0
- package/src/recipes/layout/recipe.js.map +1 -0
- package/src/recipes/settings-store/recipe.d.ts +10 -0
- package/src/recipes/settings-store/recipe.js +51 -0
- package/src/recipes/settings-store/recipe.js.map +1 -0
- package/src/recipes/shell-regions.d.ts +9 -0
- package/src/recipes/shell-regions.js +23 -0
- package/src/recipes/shell-regions.js.map +1 -0
- package/src/recipes/theme/recipe.d.ts +13 -0
- package/src/recipes/theme/recipe.js +142 -0
- package/src/recipes/theme/recipe.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffolds.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/lib/scaffolds/scaffolds.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Finding } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* The keys the host reads off a catalog entry. Anything else is never looked at, which is
|
|
4
|
+
* why a misspelled key is the one mistake a catalog cannot report on its own.
|
|
5
|
+
*/
|
|
6
|
+
export declare const CATALOG_ENTRY_KEYS: readonly string[];
|
|
7
|
+
/**
|
|
8
|
+
* Checks a plugin store catalog against what the host actually does with it. The host
|
|
9
|
+
* parses catalogs **defensively**: a bad field is dropped and a bad entry disappears, both without a
|
|
10
|
+
* word — so every finding here names the consequence rather than the rule.
|
|
11
|
+
*
|
|
12
|
+
* @param catalog the parsed catalog JSON — an array of entries
|
|
13
|
+
* @param known the capability vocabulary to check against, defaulting to the platform's
|
|
14
|
+
*/
|
|
15
|
+
export declare function validateCatalog(catalog: unknown, known?: readonly string[]): Finding[];
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CATALOG_ENTRY_KEYS = void 0;
|
|
4
|
+
exports.validateCatalog = validateCatalog;
|
|
5
|
+
const manifest_1 = require("./manifest");
|
|
6
|
+
/**
|
|
7
|
+
* The keys the host reads off a catalog entry. Anything else is never looked at, which is
|
|
8
|
+
* why a misspelled key is the one mistake a catalog cannot report on its own.
|
|
9
|
+
*/
|
|
10
|
+
exports.CATALOG_ENTRY_KEYS = [
|
|
11
|
+
'id',
|
|
12
|
+
'name',
|
|
13
|
+
'entryUrl',
|
|
14
|
+
'capabilities',
|
|
15
|
+
'version',
|
|
16
|
+
'iconUrl',
|
|
17
|
+
'description',
|
|
18
|
+
'icon',
|
|
19
|
+
'category',
|
|
20
|
+
'author',
|
|
21
|
+
'downloads',
|
|
22
|
+
'updated',
|
|
23
|
+
'repository',
|
|
24
|
+
'readmeUrl',
|
|
25
|
+
];
|
|
26
|
+
const SAME_ORIGIN_FIELDS = ['entryUrl', 'iconUrl', 'readmeUrl'];
|
|
27
|
+
function at(index, field) {
|
|
28
|
+
return field ? `catalog[${index}].${field}` : `catalog[${index}]`;
|
|
29
|
+
}
|
|
30
|
+
function isPlainObject(raw) {
|
|
31
|
+
return typeof raw === 'object' && raw !== null && !Array.isArray(raw);
|
|
32
|
+
}
|
|
33
|
+
function urlFinding(value, index, field, required) {
|
|
34
|
+
var _a, _b;
|
|
35
|
+
if (typeof value !== 'string' || value.length === 0) {
|
|
36
|
+
return required
|
|
37
|
+
? {
|
|
38
|
+
level: 'error',
|
|
39
|
+
code: 'catalog.entryUrl',
|
|
40
|
+
message: `${at(index, field)} must be a non-empty string; the host drops the whole entry without it.`,
|
|
41
|
+
path: at(index, field),
|
|
42
|
+
}
|
|
43
|
+
: {
|
|
44
|
+
level: 'warning',
|
|
45
|
+
code: 'catalog.url.empty',
|
|
46
|
+
message: `${at(index, field)} is present but not a non-empty string, so the host ignores it.`,
|
|
47
|
+
path: at(index, field),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const scheme = (_b = (_a = /^([a-z][a-z0-9+.-]*):/i.exec(value)) === null || _a === void 0 ? void 0 : _a[1]) === null || _b === void 0 ? void 0 : _b.toLowerCase();
|
|
51
|
+
if (scheme && scheme !== 'http' && scheme !== 'https') {
|
|
52
|
+
return {
|
|
53
|
+
level: 'error',
|
|
54
|
+
code: 'catalog.url.scheme',
|
|
55
|
+
message: `${at(index, field)} uses the "${scheme}:" scheme. The host accepts same-origin http(s) URLs only${required ? ' and drops the entry' : ' and ignores the field'}.`,
|
|
56
|
+
path: at(index, field),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
if (scheme) {
|
|
60
|
+
return {
|
|
61
|
+
level: 'warning',
|
|
62
|
+
code: 'catalog.url.absolute',
|
|
63
|
+
message: `${at(index, field)} is absolute. The host requires same-origin, so this holds only while it matches the origin the app is served from; a root-relative path is same-origin by construction.`,
|
|
64
|
+
path: at(index, field),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
function validateCapabilities(value, index, known) {
|
|
70
|
+
if (value === undefined) {
|
|
71
|
+
return [
|
|
72
|
+
{
|
|
73
|
+
level: 'warning',
|
|
74
|
+
code: 'catalog.capabilities.missing',
|
|
75
|
+
message: `${at(index)} declares no capabilities. Accepting the install dialog grants exactly what is declared, so the plugin will be denied everything at runtime.`,
|
|
76
|
+
path: at(index, 'capabilities'),
|
|
77
|
+
},
|
|
78
|
+
];
|
|
79
|
+
}
|
|
80
|
+
if (!Array.isArray(value)) {
|
|
81
|
+
return [
|
|
82
|
+
{
|
|
83
|
+
level: 'error',
|
|
84
|
+
code: 'catalog.capabilities',
|
|
85
|
+
message: `${at(index, 'capabilities')} must be an array; the host ignores any other shape and grants nothing.`,
|
|
86
|
+
path: at(index, 'capabilities'),
|
|
87
|
+
},
|
|
88
|
+
];
|
|
89
|
+
}
|
|
90
|
+
const findings = [];
|
|
91
|
+
for (const capability of value) {
|
|
92
|
+
if (typeof capability !== 'string' || !known.includes(capability)) {
|
|
93
|
+
findings.push({
|
|
94
|
+
level: 'error',
|
|
95
|
+
code: 'catalog.capability.unknown',
|
|
96
|
+
message: `${at(index, 'capabilities')} contains ${JSON.stringify(capability)}, which the host filters out silently — the plugin then throws CapabilityError at runtime. Known: ${known.join(', ')}.`,
|
|
97
|
+
path: at(index, 'capabilities'),
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return findings;
|
|
102
|
+
}
|
|
103
|
+
function validateEntry(raw, index, known) {
|
|
104
|
+
if (!isPlainObject(raw)) {
|
|
105
|
+
return [
|
|
106
|
+
{
|
|
107
|
+
level: 'error',
|
|
108
|
+
code: 'catalog.entry',
|
|
109
|
+
message: `${at(index)} is not an object, so the host drops it.`,
|
|
110
|
+
path: at(index),
|
|
111
|
+
},
|
|
112
|
+
];
|
|
113
|
+
}
|
|
114
|
+
const findings = [];
|
|
115
|
+
if (typeof raw['id'] !== 'string' || raw['id'].length === 0) {
|
|
116
|
+
findings.push({
|
|
117
|
+
level: 'error',
|
|
118
|
+
code: 'catalog.id',
|
|
119
|
+
message: `${at(index, 'id')} must be a non-empty string; the host drops the whole entry without it.`,
|
|
120
|
+
path: at(index, 'id'),
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
for (const field of SAME_ORIGIN_FIELDS) {
|
|
124
|
+
if (field !== 'entryUrl' && raw[field] === undefined) {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
const finding = urlFinding(raw[field], index, field, field === 'entryUrl');
|
|
128
|
+
if (finding) {
|
|
129
|
+
findings.push(finding);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
if (raw['name'] === undefined) {
|
|
133
|
+
findings.push({
|
|
134
|
+
level: 'warning',
|
|
135
|
+
code: 'catalog.name.missing',
|
|
136
|
+
message: `${at(index)} has no name, so the store falls back to showing the id.`,
|
|
137
|
+
path: at(index, 'name'),
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
else if (typeof raw['name'] !== 'string' || raw['name'].length === 0) {
|
|
141
|
+
findings.push({
|
|
142
|
+
level: 'warning',
|
|
143
|
+
code: 'catalog.name',
|
|
144
|
+
message: `${at(index, 'name')} is not a non-empty string, so the store falls back to showing the id.`,
|
|
145
|
+
path: at(index, 'name'),
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
if (raw['version'] === undefined) {
|
|
149
|
+
findings.push({
|
|
150
|
+
level: 'warning',
|
|
151
|
+
code: 'catalog.version.missing',
|
|
152
|
+
message: `${at(index)} carries no version. Update detection compares catalog versions, so the store can never offer an update and republishing the plugin will not respawn it for anyone who already installed it.`,
|
|
153
|
+
path: at(index, 'version'),
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
findings.push(...validateCapabilities(raw['capabilities'], index, known));
|
|
157
|
+
if (raw['downloads'] !== undefined &&
|
|
158
|
+
(typeof raw['downloads'] !== 'number' || raw['downloads'] < 0)) {
|
|
159
|
+
findings.push({
|
|
160
|
+
level: 'warning',
|
|
161
|
+
code: 'catalog.downloads',
|
|
162
|
+
message: `${at(index, 'downloads')} must be a non-negative number, so the host ignores it.`,
|
|
163
|
+
path: at(index, 'downloads'),
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
if (raw['updated'] !== undefined && !isRenderableDate(raw['updated'])) {
|
|
167
|
+
findings.push({
|
|
168
|
+
level: 'warning',
|
|
169
|
+
code: 'catalog.updated',
|
|
170
|
+
message: `${at(index, 'updated')} is not a date the store can parse, so it renders the raw string instead of "2 days ago".`,
|
|
171
|
+
path: at(index, 'updated'),
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
if (raw['repository'] !== undefined && !isHttpUrl(raw['repository'])) {
|
|
175
|
+
findings.push({
|
|
176
|
+
level: 'warning',
|
|
177
|
+
code: 'catalog.repository',
|
|
178
|
+
message: `${at(index, 'repository')} must be an http(s) URL, so the host drops it and the detail pane shows no link.`,
|
|
179
|
+
path: at(index, 'repository'),
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
for (const key of Object.keys(raw)) {
|
|
183
|
+
if (!exports.CATALOG_ENTRY_KEYS.includes(key)) {
|
|
184
|
+
findings.push({
|
|
185
|
+
level: 'warning',
|
|
186
|
+
code: 'catalog.unknown-key',
|
|
187
|
+
message: `${at(index, key)} is not one of the fields the host reads (${exports.CATALOG_ENTRY_KEYS.join(', ')}), so it is ignored without a word — which is exactly what a misspelled field looks like.`,
|
|
188
|
+
path: at(index, key),
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return findings;
|
|
193
|
+
}
|
|
194
|
+
function isHttpUrl(raw) {
|
|
195
|
+
if (typeof raw !== 'string') {
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
try {
|
|
199
|
+
const url = new URL(raw);
|
|
200
|
+
return url.protocol === 'http:' || url.protocol === 'https:';
|
|
201
|
+
}
|
|
202
|
+
catch (_a) {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
function isRenderableDate(raw) {
|
|
207
|
+
return typeof raw === 'string' && !Number.isNaN(new Date(raw).getTime());
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Checks a plugin store catalog against what the host actually does with it. The host
|
|
211
|
+
* parses catalogs **defensively**: a bad field is dropped and a bad entry disappears, both without a
|
|
212
|
+
* word — so every finding here names the consequence rather than the rule.
|
|
213
|
+
*
|
|
214
|
+
* @param catalog the parsed catalog JSON — an array of entries
|
|
215
|
+
* @param known the capability vocabulary to check against, defaulting to the platform's
|
|
216
|
+
*/
|
|
217
|
+
function validateCatalog(catalog, known = manifest_1.KNOWN_CAPABILITIES) {
|
|
218
|
+
if (!Array.isArray(catalog)) {
|
|
219
|
+
return [
|
|
220
|
+
{
|
|
221
|
+
level: 'error',
|
|
222
|
+
code: 'catalog.shape',
|
|
223
|
+
message: 'A plugin catalog must be a JSON array of entries; the host loads nothing otherwise.',
|
|
224
|
+
path: 'catalog',
|
|
225
|
+
},
|
|
226
|
+
];
|
|
227
|
+
}
|
|
228
|
+
const findings = [];
|
|
229
|
+
const seen = new Set();
|
|
230
|
+
catalog.forEach((entry, index) => {
|
|
231
|
+
findings.push(...validateEntry(entry, index, known));
|
|
232
|
+
const id = isPlainObject(entry) ? entry['id'] : undefined;
|
|
233
|
+
if (typeof id === 'string' && id.length > 0) {
|
|
234
|
+
if (seen.has(id)) {
|
|
235
|
+
findings.push({
|
|
236
|
+
level: 'warning',
|
|
237
|
+
code: 'catalog.id.duplicate',
|
|
238
|
+
message: `${at(index, 'id')} repeats "${id}". The host keeps the first entry with an id and drops the rest.`,
|
|
239
|
+
path: at(index, 'id'),
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
seen.add(id);
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
return findings;
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/lib/validate/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateI18nParity = validateI18nParity;
|
|
4
|
+
function flattenKeys(bundle, prefix = '') {
|
|
5
|
+
return Object.entries(bundle).flatMap(([key, value]) => {
|
|
6
|
+
const path = prefix ? `${prefix}.${key}` : key;
|
|
7
|
+
if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
|
|
8
|
+
return flattenKeys(value, path);
|
|
9
|
+
}
|
|
10
|
+
return [path];
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
function validateI18nParity(bundles) {
|
|
14
|
+
const languages = Object.keys(bundles);
|
|
15
|
+
if (languages.length < 2) {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
const keysByLanguage = new Map(languages.map((lang) => [lang, new Set(flattenKeys(bundles[lang]))]));
|
|
19
|
+
const allKeys = new Set();
|
|
20
|
+
for (const keys of keysByLanguage.values()) {
|
|
21
|
+
for (const key of keys) {
|
|
22
|
+
allKeys.add(key);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const findings = [];
|
|
26
|
+
for (const lang of languages) {
|
|
27
|
+
const keys = keysByLanguage.get(lang);
|
|
28
|
+
for (const key of allKeys) {
|
|
29
|
+
if (!(keys === null || keys === void 0 ? void 0 : keys.has(key))) {
|
|
30
|
+
findings.push({
|
|
31
|
+
level: 'warning',
|
|
32
|
+
code: 'i18n.missingKey',
|
|
33
|
+
message: `Language "${lang}" is missing translation key "${key}".`,
|
|
34
|
+
path: `i18n/${lang}`,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return findings;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=i18n.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/lib/validate/i18n.ts"],"names":[],"mappings":";;AAcA,gDA6BC;AAvCD,SAAS,WAAW,CAAC,MAAkB,EAAE,MAAM,GAAG,EAAE;IAClD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACrD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzE,OAAO,WAAW,CAAC,KAAmB,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,kBAAkB,CAAC,OAA6C;IAC9E,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,CAAC,GAAG,CAAC,CAAA,EAAE,CAAC;gBACpB,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK,EAAE,SAAS;oBAChB,IAAI,EAAE,iBAAiB;oBACvB,OAAO,EAAE,aAAa,IAAI,iCAAiC,GAAG,IAAI;oBAClE,IAAI,EAAE,QAAQ,IAAI,EAAE;iBACrB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Finding } from './types';
|
|
2
|
+
export declare const KNOWN_CAPABILITIES: readonly string[];
|
|
3
|
+
export interface ManifestLike {
|
|
4
|
+
readonly id?: unknown;
|
|
5
|
+
readonly name?: unknown;
|
|
6
|
+
readonly capabilities?: unknown;
|
|
7
|
+
}
|
|
8
|
+
export declare function validateManifest(manifest: ManifestLike, known?: readonly string[]): Finding[];
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KNOWN_CAPABILITIES = void 0;
|
|
4
|
+
exports.validateManifest = validateManifest;
|
|
5
|
+
const casing_1 = require("../generate/casing");
|
|
6
|
+
exports.KNOWN_CAPABILITIES = [
|
|
7
|
+
'contributions',
|
|
8
|
+
'ui',
|
|
9
|
+
'host',
|
|
10
|
+
'navigation',
|
|
11
|
+
'session',
|
|
12
|
+
'theme',
|
|
13
|
+
'automation',
|
|
14
|
+
];
|
|
15
|
+
function validateManifest(manifest, known = exports.KNOWN_CAPABILITIES) {
|
|
16
|
+
const findings = [];
|
|
17
|
+
if (typeof manifest.id !== 'string' || !(0, casing_1.isKebabId)(manifest.id)) {
|
|
18
|
+
findings.push({
|
|
19
|
+
level: 'error',
|
|
20
|
+
code: 'manifest.id',
|
|
21
|
+
message: `Plugin id must be a kebab-case string; got ${JSON.stringify(manifest.id)}.`,
|
|
22
|
+
path: 'manifest.id',
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
if (manifest.name !== undefined && typeof manifest.name !== 'string') {
|
|
26
|
+
findings.push({
|
|
27
|
+
level: 'error',
|
|
28
|
+
code: 'manifest.name',
|
|
29
|
+
message: 'Plugin name must be a string when provided.',
|
|
30
|
+
path: 'manifest.name',
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
findings.push(...validateCapabilities(manifest.capabilities, known));
|
|
34
|
+
return findings;
|
|
35
|
+
}
|
|
36
|
+
function validateCapabilities(capabilities, known) {
|
|
37
|
+
if (capabilities === undefined) {
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
if (!Array.isArray(capabilities)) {
|
|
41
|
+
return [
|
|
42
|
+
{
|
|
43
|
+
level: 'error',
|
|
44
|
+
code: 'manifest.capabilities',
|
|
45
|
+
message: 'capabilities must be an array when provided.',
|
|
46
|
+
path: 'manifest.capabilities',
|
|
47
|
+
},
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
const findings = [];
|
|
51
|
+
const seen = new Set();
|
|
52
|
+
for (const capability of capabilities) {
|
|
53
|
+
if (typeof capability !== 'string' || !known.includes(capability)) {
|
|
54
|
+
findings.push({
|
|
55
|
+
level: 'error',
|
|
56
|
+
code: 'manifest.capability.unknown',
|
|
57
|
+
message: `Unknown capability ${JSON.stringify(capability)}. Known: ${known.join(', ')}.`,
|
|
58
|
+
path: 'manifest.capabilities',
|
|
59
|
+
});
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (seen.has(capability)) {
|
|
63
|
+
findings.push({
|
|
64
|
+
level: 'warning',
|
|
65
|
+
code: 'manifest.capability.duplicate',
|
|
66
|
+
message: `Duplicate capability "${capability}".`,
|
|
67
|
+
path: 'manifest.capabilities',
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
seen.add(capability);
|
|
71
|
+
}
|
|
72
|
+
return findings;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/lib/validate/manifest.ts"],"names":[],"mappings":";;;AAmBA,4CA0BC;AA7CD,+CAA+C;AAGlC,QAAA,kBAAkB,GAAsB;IACnD,eAAe;IACf,IAAI;IACJ,MAAM;IACN,YAAY;IACZ,SAAS;IACT,OAAO;IACP,YAAY;CACb,CAAC;AAQF,SAAgB,gBAAgB,CAC9B,QAAsB,EACtB,QAA2B,0BAAkB;IAE7C,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,IAAI,OAAO,QAAQ,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,IAAA,kBAAS,EAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QAC/D,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,8CAA8C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG;YACrF,IAAI,EAAE,aAAa;SACpB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrE,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,6CAA6C;YACtD,IAAI,EAAE,eAAe;SACtB,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;IACrE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,oBAAoB,CAAC,YAAqB,EAAE,KAAwB;IAC3E,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO;YACL;gBACE,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,8CAA8C;gBACvD,IAAI,EAAE,uBAAuB;aAC9B;SACF,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;QACtC,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAClE,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,6BAA6B;gBACnC,OAAO,EAAE,sBAAsB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBACxF,IAAI,EAAE,uBAAuB;aAC9B,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,+BAA+B;gBACrC,OAAO,EAAE,yBAAyB,UAAU,IAAI;gBAChD,IAAI,EAAE,uBAAuB;aAC9B,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/lib/validate/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const PLACEHOLDER_LOGO_SVG = "<svg xmlns=\"http://www.w3.org/2000/svg\" xml:space=\"preserve\" width=\"512\" height=\"512\" viewBox=\"87.5 -53 1129.9 1129.9\"><g paint-order=\"stroke\"><path d=\"m0 0 12.6-10.6-9.2-8-14.5 12.1q-.7.8 1.2 1.5A17 17 0 0 1-2.4-.5Q-1 .7 0 0\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1\" transform=\"matrix(15.6303 0 0 -15.6303 265.2 368.8)\"/><path d=\"m0 0 19-16c.6-.5.5-1.6-.2-2.3q-2.8-3-7.5-4.5c-1.2-.4-2.8-.1-3.4.4l-17 14.3z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1\" transform=\"matrix(15.6303 0 0 -15.6303 593.2 644.5)\"/><path d=\"m0 0 5.8-4.9-9.2-8-2.8 2.3q-.9 1 0 2.5l4 7.4Q-1 .7 0 0\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#c59a2f;fill-rule:nonzero;opacity:1\" transform=\"matrix(15.6303 0 0 -15.6303 386.3 170)\"/><path d=\"m0 0 12.4-10.4-9.2-8.1L-9.2-8.1Z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#c59a2f;fill-rule:nonzero;opacity:1\" transform=\"matrix(15.6303 0 0 -15.6303 608.2 356.6)\"/><path d=\"m0 0 5-4.2c.6-.5.6-1.6 0-2.5l-4-7.4q-1-1.4-2.1-.7l-8 6.7z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#c59a2f;fill-rule:nonzero;opacity:1\" transform=\"matrix(15.6303 0 0 -15.6303 933.4 630)\"/><path d=\"m0 0 14.6-12.3-9.2-8L-11-6.6c-.6.5-.6 1.6.2 2.4Q-8-1.2-3.3.3C-2.2.7-.6.5 0 0\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1\" transform=\"matrix(15.6303 0 0 -15.6303 589.5 28.9)\"/><path d=\"m0 0 17-14.3q.8-.8-1.3-1.4a17 17 0 0 1-7.5-4.5c-.7-.8-1.8-1-2.4-.5l-15 12.6Z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1\" transform=\"matrix(15.6303 0 0 -15.6303 948.5 330.8)\"/><path d=\"m0 0 8.4-7-13.6-12-8.4 7z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1\" transform=\"matrix(15.6303 0 0 -15.6303 514.5 213.2)\"/><path d=\"m0 0 5.7-4.8q1.3-1 .4-2L3-9.5l-8.4 7 3 2.7A2 2 0 0 0 0 0\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1\" transform=\"matrix(15.6303 0 0 -15.6303 743 48)\"/><path d=\"m0 0 8.4-7-2.2-2q-1-.7-2.3.2L-2-4q-1 1.2-.2 2z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1\" transform=\"matrix(15.6303 0 0 -15.6303 158.6 526.5)\"/><path d=\"m0 0 8.4-7L-5-18.9c-.5-.5-1.6-.4-2.3.2l-5.8 4.8q-1 1-.3 2z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1\" transform=\"matrix(15.6303 0 0 -15.6303 492.8 507)\"/><path d=\"m0 0 5.7-4.8q1.3-1 .4-2l-14.7-13-8.4 7.1L-2.3.3C-1.8.6-.7.5 0 0\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1\" transform=\"matrix(15.6303 0 0 -15.6303 902.6 182)\"/><path d=\"m0 0 5.9-5Q7-6 6.2-7l-3-2.7-8.7 7.2L-2.4.3Q-1.4.9 0 0\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1\" transform=\"matrix(15.6303 0 0 -15.6303 1065.8 319.3)\"/><path d=\"m0 0 8.6-7.2-13.6-12-8.6 7.2z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1\" transform=\"matrix(15.6303 0 0 -15.6303 836.9 484.2)\"/><path d=\"m0 0 8.6-7.2-2.2-2q-1-.6-2.4.3l-5.9 5Q-3-3-2.2-2z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1\" transform=\"matrix(15.6303 0 0 -15.6303 481 797.5)\"/><g transform=\"matrix(15.6303 0 0 -15.6303 877.6 706.6)\"><linearGradient id=\"a\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"0\" gradientTransform=\"rotate(135.7 64.4 103.4)scale(2.18666 -2.18666)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0%\" style=\"stop-color:#c59a2f;stop-opacity:1\"/><stop offset=\"100%\" style=\"stop-color:#614d06;stop-opacity:1\"/></linearGradient><path d=\"m176.7 129.6 2-1.7 9.2 8-2 1.8z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#a);fill-rule:nonzero;opacity:1\" transform=\"translate(-182.3 -132.8)\"/></g><g transform=\"matrix(15.6303 0 0 -15.6303 711.4 567.2)\"><linearGradient id=\"b\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"0\" gradientTransform=\"rotate(135.7 56.7 106)scale(-2.18726 2.18726)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0%\" style=\"stop-color:#c59a2f;stop-opacity:1\"/><stop offset=\"100%\" style=\"stop-color:#614d06;stop-opacity:1\"/></linearGradient><path d=\"m166 138.5 2.1-1.7 9.2 8.1-2 1.7z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#b);fill-rule:nonzero;opacity:1\" transform=\"translate(-171.7 -141.7)\"/></g><g transform=\"matrix(15.6303 0 0 -15.6303 532.5 867.7)\"><linearGradient id=\"c\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"0\" gradientTransform=\"rotate(45.7 -65.1 251)scale(2.11643 -2.11643)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0%\" style=\"stop-color:#2e96c9;stop-opacity:1\"/><stop offset=\"100%\" style=\"stop-color:#2479a3;stop-opacity:1\"/></linearGradient><path d=\"m155 125.2 8.5-7.2 2 1.8-8.6 7.2z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#c);fill-rule:nonzero;opacity:1\" transform=\"translate(-160.2 -122.5)\"/></g><g transform=\"matrix(15.6303 0 0 -15.6303 707.2 713.6)\"><linearGradient id=\"d\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"0\" gradientTransform=\"rotate(-134.3 114 30.2)scale(2.11524 -2.11524)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0%\" style=\"stop-color:#2e96c9;stop-opacity:1\"/><stop offset=\"100%\" style=\"stop-color:#2479a3;stop-opacity:1\"/></linearGradient><path d=\"m166.1 135 8.6-7.1 2 1.7-8.6 7.2z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#d);fill-rule:nonzero;opacity:1\" transform=\"translate(-171.4 -132.3)\"/></g><g transform=\"matrix(15.6303 0 0 -15.6303 888.2 554.5)\"><linearGradient id=\"e\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"0\" gradientTransform=\"rotate(45.7 -77.5 288)scale(2.11554 -2.11554)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0%\" style=\"stop-color:#2e96c9;stop-opacity:1\"/><stop offset=\"100%\" style=\"stop-color:#2479a3;stop-opacity:1\"/></linearGradient><path d=\"m177.7 145.3 8.6-7.3 2 1.8-8.6 7.2z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#e);fill-rule:nonzero;opacity:1\" transform=\"translate(-183 -142.5)\"/></g><g transform=\"matrix(15.6303 0 0 -15.6303 1062 401.2)\"><linearGradient id=\"f\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"0\" gradientTransform=\"rotate(45.7 -84.1 307.3)scale(-2.11583 2.11583)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0%\" style=\"stop-color:#2e96c9;stop-opacity:1\"/><stop offset=\"100%\" style=\"stop-color:#2479a3;stop-opacity:1\"/></linearGradient><path d=\"m188.8 155 8.6-7.2 2 1.8-8.6 7.2z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#f);fill-rule:nonzero;opacity:1\" transform=\"translate(-194.1 -152.3)\"/></g><g transform=\"matrix(15.6303 0 0 -15.6303 206.5 595.5)\"><linearGradient id=\"g\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"0\" gradientTransform=\"rotate(225.7 98.9 40.5)scale(-2.0962 2.0962)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0%\" style=\"stop-color:#2e96c9;stop-opacity:1\"/><stop offset=\"100%\" style=\"stop-color:#2479a3;stop-opacity:1\"/></linearGradient><path d=\"m134.3 142.5 8.2-7 2 1.8-8.3 7z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#g);fill-rule:nonzero;opacity:1\" transform=\"translate(-139.4 -139.9)\"/></g><g transform=\"matrix(15.6303 0 0 -15.6303 381 441.4)\"><linearGradient id=\"h\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"0\" gradientTransform=\"rotate(-134.3 107 43.3)scale(2.0962 -2.0962)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0%\" style=\"stop-color:#2e96c9;stop-opacity:1\"/><stop offset=\"100%\" style=\"stop-color:#2479a3;stop-opacity:1\"/></linearGradient><path d=\"m145.4 152.3 8.3-6.9 2 1.8-8.3 6.9z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#h);fill-rule:nonzero;opacity:1\" transform=\"translate(-150.5 -149.8)\"/></g><g transform=\"matrix(15.6303 0 0 -15.6303 562 282.3)\"><linearGradient id=\"i\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"0\" gradientTransform=\"rotate(225.7 114.5 45.7)scale(-2.0953 2.0953)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0%\" style=\"stop-color:#2e96c9;stop-opacity:1\"/><stop offset=\"100%\" style=\"stop-color:#2479a3;stop-opacity:1\"/></linearGradient><path d=\"m157 162.5 8.2-7 2 1.8-8.2 7z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#i);fill-rule:nonzero;opacity:1\" transform=\"translate(-162.1 -160)\"/></g><g transform=\"matrix(15.6303 0 0 -15.6303 736 129)\"><linearGradient id=\"j\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"0\" gradientTransform=\"rotate(45.7 -115.1 291)scale(-2.0956 2.0956)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0%\" style=\"stop-color:#2e96c9;stop-opacity:1\"/><stop offset=\"100%\" style=\"stop-color:#2479a3;stop-opacity:1\"/></linearGradient><path d=\"m168.1 172.3 8.3-6.9 2 1.7-8.3 7z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#j);fill-rule:nonzero;opacity:1\" transform=\"translate(-173.2 -169.7)\"/></g><g transform=\"matrix(15.6303 0 0 -15.6303 544.8 441.3)\"><linearGradient id=\"k\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"0\" gradientTransform=\"rotate(135.7 50.4 108)scale(2.18666 -2.18666)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0%\" style=\"stop-color:#c59a2f;stop-opacity:1\"/><stop offset=\"100%\" style=\"stop-color:#614d06;stop-opacity:1\"/></linearGradient><path d=\"m155.9 147 2-1.6 9.2 8-2 1.8z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#k);fill-rule:nonzero;opacity:1\" transform=\"translate(-161.5 -150.3)\"/></g><g transform=\"matrix(15.6303 0 0 -15.6303 390.7 294.8)\"><linearGradient id=\"l\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"0\" gradientTransform=\"rotate(135.7 42.9 110.5)scale(-2.17357 2.17357)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0%\" style=\"stop-color:#c59a2f;stop-opacity:1\"/><stop offset=\"100%\" style=\"stop-color:#614d06;stop-opacity:1\"/></linearGradient><path d=\"m145.6 156 2-1.7 9 8-2 1.6z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#l);fill-rule:nonzero;opacity:1\" transform=\"translate(-151.2 -159.1)\"/></g><g transform=\"matrix(15.6303 0 0 -15.6303 375.9 585.7)\"><linearGradient id=\"m\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"0\" gradientTransform=\"rotate(135.7 46.2 101)scale(-1.9968 1.9968)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0%\" style=\"stop-color:#2e96c9;stop-opacity:1\"/><stop offset=\"100%\" style=\"stop-color:#2479a3;stop-opacity:1\"/></linearGradient><path d=\"m144.7 137.2 1.8-1.5 9.2 8.1-1.8 1.5z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#m);fill-rule:nonzero;opacity:1\" transform=\"translate(-150.2 -140.5)\"/></g><g transform=\"matrix(15.6303 0 0 -15.6303 733.7 274)\"><linearGradient id=\"n\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"0\" gradientTransform=\"rotate(-44.3 284 -131.7)scale(1.9968 -1.9968)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0%\" style=\"stop-color:#2e96c9;stop-opacity:1\"/><stop offset=\"100%\" style=\"stop-color:#2479a3;stop-opacity:1\"/></linearGradient><path d=\"m167.6 157.2 1.8-1.5 9.2 8-1.8 1.6z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#n);fill-rule:nonzero;opacity:1\" transform=\"translate(-173.1 -160.5)\"/></g><g transform=\"matrix(15.6303 0 0 -15.6303 893.6 408.2)\"><linearGradient id=\"o\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"0\" gradientTransform=\"rotate(135.7 61 113.2)scale(1.9962 -1.9962)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0%\" style=\"stop-color:#2e96c9;stop-opacity:1\"/><stop offset=\"100%\" style=\"stop-color:#2479a3;stop-opacity:1\"/></linearGradient><path d=\"m177.8 148.6 1.8-1.5 9.2 8-1.8 1.6z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#o);fill-rule:nonzero;opacity:1\" transform=\"translate(-183.3 -151.9)\"/></g><g transform=\"matrix(15.6303 0 0 -15.6303 535.9 720)\"><linearGradient id=\"p\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"0\" gradientTransform=\"rotate(135.7 53.6 98.6)scale(1.9962 -1.9962)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0%\" style=\"stop-color:#2e96c9;stop-opacity:1\"/><stop offset=\"100%\" style=\"stop-color:#2479a3;stop-opacity:1\"/></linearGradient><path d=\"m155 128.6 1.7-1.5 9.2 8.1-1.8 1.5z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#p);fill-rule:nonzero;opacity:1\" transform=\"translate(-160.4 -132)\"/></g><g transform=\"matrix(15.6303 0 0 -15.6303 717.3 421.6)\"><linearGradient id=\"q\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"0\" gradientTransform=\"rotate(45.7 -93.5 280)scale(-2.095 2.095)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0%\" style=\"stop-color:#2e96c9;stop-opacity:1\"/><stop offset=\"100%\" style=\"stop-color:#2479a3;stop-opacity:1\"/></linearGradient><path d=\"m167 153.6 8.2-7 2 1.8-8.3 7z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#q);fill-rule:nonzero;opacity:1\" transform=\"translate(-172 -151)\"/></g><g transform=\"matrix(15.6303 0 0 -15.6303 542.1 575.9)\"><linearGradient id=\"r\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"0\" gradientTransform=\"rotate(45.7 -87 261)scale(2.0956 -2.0956)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0%\" style=\"stop-color:#2e96c9;stop-opacity:1\"/><stop offset=\"100%\" style=\"stop-color:#2479a3;stop-opacity:1\"/></linearGradient><path d=\"m155.7 143.8 8.3-7 2 1.8-8.3 6.9z\" style=\"stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#r);fill-rule:nonzero;opacity:1\" transform=\"translate(-160.8 -141.2)\"/></g></g></svg>\n";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PLACEHOLDER_LOGO_SVG = void 0;
|
|
4
|
+
/* The LoomWeaver mark, emitted as the scaffold's placeholder logo so a freshly generated product
|
|
5
|
+
renders something instead of a broken image. Source: assets/brand (Print_Transparent.svg), run
|
|
6
|
+
through SVGO and re-cropped to a square viewBox around the motif. Replace it with your own. */
|
|
7
|
+
exports.PLACEHOLDER_LOGO_SVG = `<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="512" height="512" viewBox="87.5 -53 1129.9 1129.9"><g paint-order="stroke"><path d="m0 0 12.6-10.6-9.2-8-14.5 12.1q-.7.8 1.2 1.5A17 17 0 0 1-2.4-.5Q-1 .7 0 0" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1" transform="matrix(15.6303 0 0 -15.6303 265.2 368.8)"/><path d="m0 0 19-16c.6-.5.5-1.6-.2-2.3q-2.8-3-7.5-4.5c-1.2-.4-2.8-.1-3.4.4l-17 14.3z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1" transform="matrix(15.6303 0 0 -15.6303 593.2 644.5)"/><path d="m0 0 5.8-4.9-9.2-8-2.8 2.3q-.9 1 0 2.5l4 7.4Q-1 .7 0 0" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#c59a2f;fill-rule:nonzero;opacity:1" transform="matrix(15.6303 0 0 -15.6303 386.3 170)"/><path d="m0 0 12.4-10.4-9.2-8.1L-9.2-8.1Z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#c59a2f;fill-rule:nonzero;opacity:1" transform="matrix(15.6303 0 0 -15.6303 608.2 356.6)"/><path d="m0 0 5-4.2c.6-.5.6-1.6 0-2.5l-4-7.4q-1-1.4-2.1-.7l-8 6.7z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#c59a2f;fill-rule:nonzero;opacity:1" transform="matrix(15.6303 0 0 -15.6303 933.4 630)"/><path d="m0 0 14.6-12.3-9.2-8L-11-6.6c-.6.5-.6 1.6.2 2.4Q-8-1.2-3.3.3C-2.2.7-.6.5 0 0" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1" transform="matrix(15.6303 0 0 -15.6303 589.5 28.9)"/><path d="m0 0 17-14.3q.8-.8-1.3-1.4a17 17 0 0 1-7.5-4.5c-.7-.8-1.8-1-2.4-.5l-15 12.6Z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1" transform="matrix(15.6303 0 0 -15.6303 948.5 330.8)"/><path d="m0 0 8.4-7-13.6-12-8.4 7z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1" transform="matrix(15.6303 0 0 -15.6303 514.5 213.2)"/><path d="m0 0 5.7-4.8q1.3-1 .4-2L3-9.5l-8.4 7 3 2.7A2 2 0 0 0 0 0" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1" transform="matrix(15.6303 0 0 -15.6303 743 48)"/><path d="m0 0 8.4-7-2.2-2q-1-.7-2.3.2L-2-4q-1 1.2-.2 2z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1" transform="matrix(15.6303 0 0 -15.6303 158.6 526.5)"/><path d="m0 0 8.4-7L-5-18.9c-.5-.5-1.6-.4-2.3.2l-5.8 4.8q-1 1-.3 2z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1" transform="matrix(15.6303 0 0 -15.6303 492.8 507)"/><path d="m0 0 5.7-4.8q1.3-1 .4-2l-14.7-13-8.4 7.1L-2.3.3C-1.8.6-.7.5 0 0" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1" transform="matrix(15.6303 0 0 -15.6303 902.6 182)"/><path d="m0 0 5.9-5Q7-6 6.2-7l-3-2.7-8.7 7.2L-2.4.3Q-1.4.9 0 0" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1" transform="matrix(15.6303 0 0 -15.6303 1065.8 319.3)"/><path d="m0 0 8.6-7.2-13.6-12-8.6 7.2z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1" transform="matrix(15.6303 0 0 -15.6303 836.9 484.2)"/><path d="m0 0 8.6-7.2-2.2-2q-1-.6-2.4.3l-5.9 5Q-3-3-2.2-2z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#2e96c9;fill-rule:nonzero;opacity:1" transform="matrix(15.6303 0 0 -15.6303 481 797.5)"/><g transform="matrix(15.6303 0 0 -15.6303 877.6 706.6)"><linearGradient id="a" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(135.7 64.4 103.4)scale(2.18666 -2.18666)" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#c59a2f;stop-opacity:1"/><stop offset="100%" style="stop-color:#614d06;stop-opacity:1"/></linearGradient><path d="m176.7 129.6 2-1.7 9.2 8-2 1.8z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#a);fill-rule:nonzero;opacity:1" transform="translate(-182.3 -132.8)"/></g><g transform="matrix(15.6303 0 0 -15.6303 711.4 567.2)"><linearGradient id="b" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(135.7 56.7 106)scale(-2.18726 2.18726)" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#c59a2f;stop-opacity:1"/><stop offset="100%" style="stop-color:#614d06;stop-opacity:1"/></linearGradient><path d="m166 138.5 2.1-1.7 9.2 8.1-2 1.7z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#b);fill-rule:nonzero;opacity:1" transform="translate(-171.7 -141.7)"/></g><g transform="matrix(15.6303 0 0 -15.6303 532.5 867.7)"><linearGradient id="c" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(45.7 -65.1 251)scale(2.11643 -2.11643)" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#2e96c9;stop-opacity:1"/><stop offset="100%" style="stop-color:#2479a3;stop-opacity:1"/></linearGradient><path d="m155 125.2 8.5-7.2 2 1.8-8.6 7.2z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#c);fill-rule:nonzero;opacity:1" transform="translate(-160.2 -122.5)"/></g><g transform="matrix(15.6303 0 0 -15.6303 707.2 713.6)"><linearGradient id="d" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(-134.3 114 30.2)scale(2.11524 -2.11524)" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#2e96c9;stop-opacity:1"/><stop offset="100%" style="stop-color:#2479a3;stop-opacity:1"/></linearGradient><path d="m166.1 135 8.6-7.1 2 1.7-8.6 7.2z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#d);fill-rule:nonzero;opacity:1" transform="translate(-171.4 -132.3)"/></g><g transform="matrix(15.6303 0 0 -15.6303 888.2 554.5)"><linearGradient id="e" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(45.7 -77.5 288)scale(2.11554 -2.11554)" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#2e96c9;stop-opacity:1"/><stop offset="100%" style="stop-color:#2479a3;stop-opacity:1"/></linearGradient><path d="m177.7 145.3 8.6-7.3 2 1.8-8.6 7.2z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#e);fill-rule:nonzero;opacity:1" transform="translate(-183 -142.5)"/></g><g transform="matrix(15.6303 0 0 -15.6303 1062 401.2)"><linearGradient id="f" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(45.7 -84.1 307.3)scale(-2.11583 2.11583)" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#2e96c9;stop-opacity:1"/><stop offset="100%" style="stop-color:#2479a3;stop-opacity:1"/></linearGradient><path d="m188.8 155 8.6-7.2 2 1.8-8.6 7.2z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#f);fill-rule:nonzero;opacity:1" transform="translate(-194.1 -152.3)"/></g><g transform="matrix(15.6303 0 0 -15.6303 206.5 595.5)"><linearGradient id="g" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(225.7 98.9 40.5)scale(-2.0962 2.0962)" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#2e96c9;stop-opacity:1"/><stop offset="100%" style="stop-color:#2479a3;stop-opacity:1"/></linearGradient><path d="m134.3 142.5 8.2-7 2 1.8-8.3 7z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#g);fill-rule:nonzero;opacity:1" transform="translate(-139.4 -139.9)"/></g><g transform="matrix(15.6303 0 0 -15.6303 381 441.4)"><linearGradient id="h" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(-134.3 107 43.3)scale(2.0962 -2.0962)" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#2e96c9;stop-opacity:1"/><stop offset="100%" style="stop-color:#2479a3;stop-opacity:1"/></linearGradient><path d="m145.4 152.3 8.3-6.9 2 1.8-8.3 6.9z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#h);fill-rule:nonzero;opacity:1" transform="translate(-150.5 -149.8)"/></g><g transform="matrix(15.6303 0 0 -15.6303 562 282.3)"><linearGradient id="i" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(225.7 114.5 45.7)scale(-2.0953 2.0953)" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#2e96c9;stop-opacity:1"/><stop offset="100%" style="stop-color:#2479a3;stop-opacity:1"/></linearGradient><path d="m157 162.5 8.2-7 2 1.8-8.2 7z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#i);fill-rule:nonzero;opacity:1" transform="translate(-162.1 -160)"/></g><g transform="matrix(15.6303 0 0 -15.6303 736 129)"><linearGradient id="j" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(45.7 -115.1 291)scale(-2.0956 2.0956)" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#2e96c9;stop-opacity:1"/><stop offset="100%" style="stop-color:#2479a3;stop-opacity:1"/></linearGradient><path d="m168.1 172.3 8.3-6.9 2 1.7-8.3 7z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#j);fill-rule:nonzero;opacity:1" transform="translate(-173.2 -169.7)"/></g><g transform="matrix(15.6303 0 0 -15.6303 544.8 441.3)"><linearGradient id="k" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(135.7 50.4 108)scale(2.18666 -2.18666)" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#c59a2f;stop-opacity:1"/><stop offset="100%" style="stop-color:#614d06;stop-opacity:1"/></linearGradient><path d="m155.9 147 2-1.6 9.2 8-2 1.8z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#k);fill-rule:nonzero;opacity:1" transform="translate(-161.5 -150.3)"/></g><g transform="matrix(15.6303 0 0 -15.6303 390.7 294.8)"><linearGradient id="l" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(135.7 42.9 110.5)scale(-2.17357 2.17357)" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#c59a2f;stop-opacity:1"/><stop offset="100%" style="stop-color:#614d06;stop-opacity:1"/></linearGradient><path d="m145.6 156 2-1.7 9 8-2 1.6z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#l);fill-rule:nonzero;opacity:1" transform="translate(-151.2 -159.1)"/></g><g transform="matrix(15.6303 0 0 -15.6303 375.9 585.7)"><linearGradient id="m" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(135.7 46.2 101)scale(-1.9968 1.9968)" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#2e96c9;stop-opacity:1"/><stop offset="100%" style="stop-color:#2479a3;stop-opacity:1"/></linearGradient><path d="m144.7 137.2 1.8-1.5 9.2 8.1-1.8 1.5z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#m);fill-rule:nonzero;opacity:1" transform="translate(-150.2 -140.5)"/></g><g transform="matrix(15.6303 0 0 -15.6303 733.7 274)"><linearGradient id="n" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(-44.3 284 -131.7)scale(1.9968 -1.9968)" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#2e96c9;stop-opacity:1"/><stop offset="100%" style="stop-color:#2479a3;stop-opacity:1"/></linearGradient><path d="m167.6 157.2 1.8-1.5 9.2 8-1.8 1.6z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#n);fill-rule:nonzero;opacity:1" transform="translate(-173.1 -160.5)"/></g><g transform="matrix(15.6303 0 0 -15.6303 893.6 408.2)"><linearGradient id="o" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(135.7 61 113.2)scale(1.9962 -1.9962)" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#2e96c9;stop-opacity:1"/><stop offset="100%" style="stop-color:#2479a3;stop-opacity:1"/></linearGradient><path d="m177.8 148.6 1.8-1.5 9.2 8-1.8 1.6z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#o);fill-rule:nonzero;opacity:1" transform="translate(-183.3 -151.9)"/></g><g transform="matrix(15.6303 0 0 -15.6303 535.9 720)"><linearGradient id="p" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(135.7 53.6 98.6)scale(1.9962 -1.9962)" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#2e96c9;stop-opacity:1"/><stop offset="100%" style="stop-color:#2479a3;stop-opacity:1"/></linearGradient><path d="m155 128.6 1.7-1.5 9.2 8.1-1.8 1.5z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#p);fill-rule:nonzero;opacity:1" transform="translate(-160.4 -132)"/></g><g transform="matrix(15.6303 0 0 -15.6303 717.3 421.6)"><linearGradient id="q" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(45.7 -93.5 280)scale(-2.095 2.095)" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#2e96c9;stop-opacity:1"/><stop offset="100%" style="stop-color:#2479a3;stop-opacity:1"/></linearGradient><path d="m167 153.6 8.2-7 2 1.8-8.3 7z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#q);fill-rule:nonzero;opacity:1" transform="translate(-172 -151)"/></g><g transform="matrix(15.6303 0 0 -15.6303 542.1 575.9)"><linearGradient id="r" x1="0" x2="1" y1="0" y2="0" gradientTransform="rotate(45.7 -87 261)scale(2.0956 -2.0956)" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#2e96c9;stop-opacity:1"/><stop offset="100%" style="stop-color:#2479a3;stop-opacity:1"/></linearGradient><path d="m155.7 143.8 8.3-7 2 1.8-8.3 6.9z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#r);fill-rule:nonzero;opacity:1" transform="translate(-160.8 -141.2)"/></g></g></svg>
|
|
8
|
+
`;
|
|
9
|
+
//# sourceMappingURL=logo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logo.js","sourceRoot":"","sources":["../../../../../../../libs/tooling/devkit/src/recipes/angular-distribution/logo.ts"],"names":[],"mappings":";;;AAAA;;iGAEiG;AACpF,QAAA,oBAAoB,GAAG;CACnC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Recipe } from '../../lib/generate/types';
|
|
2
|
+
/**
|
|
3
|
+
* Which stylesheet to emit. 'tailwind' compiles the shell's source theme, which is also what lets
|
|
4
|
+
* you write Tailwind utilities of your own; 'precompiled' imports the stylesheet we compiled, so
|
|
5
|
+
* the application needs no Tailwind at all and can be themed with something else entirely.
|
|
6
|
+
*/
|
|
7
|
+
export type DistributionStyles = 'tailwind' | 'precompiled';
|
|
8
|
+
export interface DistributionInput {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly title?: string;
|
|
11
|
+
/** Project root relative to the workspace root. Defaults to 'apps/<name>'. */
|
|
12
|
+
readonly directory?: string;
|
|
13
|
+
/** Emit the starter spec. Defaults to true; false when the workspace runs no unit tests. */
|
|
14
|
+
readonly withTests?: boolean;
|
|
15
|
+
readonly styles?: DistributionStyles;
|
|
16
|
+
}
|
|
17
|
+
export interface ResolvedDistribution {
|
|
18
|
+
readonly name: string;
|
|
19
|
+
readonly title: string;
|
|
20
|
+
readonly nodeModulesFromSrc: string;
|
|
21
|
+
readonly withTests: boolean;
|
|
22
|
+
readonly styles: DistributionStyles;
|
|
23
|
+
}
|
|
24
|
+
export declare function resolveDistributionInput(input: DistributionInput): ResolvedDistribution;
|
|
25
|
+
export declare const angularDistribution: Recipe<DistributionInput>;
|