@conduction/nextcloud-vue 2.2.0-vue3.14 → 2.2.0-vue3.15
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/package.json +2 -1
- package/stylelint/index.js +61 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@conduction/nextcloud-vue",
|
|
3
|
-
"version": "2.2.0-vue3.
|
|
3
|
+
"version": "2.2.0-vue3.15",
|
|
4
4
|
"description": "Shared Vue component library for Conduction Nextcloud apps — complements @nextcloud/vue with higher-level components, OpenRegister integration, and NL Design System support",
|
|
5
5
|
"license": "EUPL-1.2",
|
|
6
6
|
"author": "Conduction B.V. <info@conduction.nl>",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"src/",
|
|
25
25
|
"css/",
|
|
26
26
|
"eslint/",
|
|
27
|
+
"stylelint/",
|
|
27
28
|
"l10n/",
|
|
28
29
|
"scripts/",
|
|
29
30
|
"testing/",
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SPDX-License-Identifier: EUPL-1.2
|
|
3
|
+
* SPDX-FileCopyrightText: 2026 Conduction B.V.
|
|
4
|
+
*
|
|
5
|
+
* `@conduction/nextcloud-vue/stylelint` — the shared Stylelint preset for every
|
|
6
|
+
* Conduction Nextcloud app.
|
|
7
|
+
*
|
|
8
|
+
* WHY THIS LIVES HERE
|
|
9
|
+
* -------------------
|
|
10
|
+
* The same reason the ESLint preset does, and the same reason the PHP ruleset
|
|
11
|
+
* moved to `conduction/hydra-gates`: a copied config is not a shared config.
|
|
12
|
+
*
|
|
13
|
+
* Measured across the 18 core apps on 2026-08-12, `stylelint.config.js` existed
|
|
14
|
+
* in six variants. Ten apps were byte-identical to this file; the other eight
|
|
15
|
+
* had each drifted separately. None of that drift was a decision.
|
|
16
|
+
*
|
|
17
|
+
* Stylelint cannot be homed the way PHPCS was, through a path into `vendor/`,
|
|
18
|
+
* because a Stylelint config resolves `extends` against `node_modules` relative
|
|
19
|
+
* to itself. An npm package is the only channel that works — and every app
|
|
20
|
+
* already depends on this one.
|
|
21
|
+
*
|
|
22
|
+
* WHAT IT IS
|
|
23
|
+
* ----------
|
|
24
|
+
* `@nextcloud/stylelint-config`, plus exactly one addition.
|
|
25
|
+
*
|
|
26
|
+
* That is deliberate and it mirrors `conduction/coding-standard` on the PHP
|
|
27
|
+
* side: Conduction code must pass Nextcloud's own checks unchanged. We may be
|
|
28
|
+
* STRICTER than Nextcloud; we may not be DIFFERENT from it. Anything here that
|
|
29
|
+
* contradicted `@nextcloud/stylelint-config` would put an app in the position
|
|
30
|
+
* the PHP toolchain was in until this week — two tools with overlapping
|
|
31
|
+
* jurisdiction demanding opposite things, and no way to satisfy both.
|
|
32
|
+
*
|
|
33
|
+
* THE ONE ADDITION
|
|
34
|
+
* ----------------
|
|
35
|
+
* `::v-deep` is a Vue SFC scoped-style selector, not a CSS pseudo-element.
|
|
36
|
+
* Stylelint's `selector-pseudo-element-no-unknown` does not know it and flags
|
|
37
|
+
* every use. Nextcloud's config does not carry the exception because Nextcloud
|
|
38
|
+
* core does not use `::v-deep`; this fleet does, in every app that restyles a
|
|
39
|
+
* child component's internals.
|
|
40
|
+
*
|
|
41
|
+
* This is additive in the strict sense — it relaxes a rule on a token Nextcloud
|
|
42
|
+
* never emits — so a file that satisfies this preset still satisfies theirs.
|
|
43
|
+
*
|
|
44
|
+
* USAGE
|
|
45
|
+
* -----
|
|
46
|
+
* // stylelint.config.js
|
|
47
|
+
* module.exports = require('@conduction/nextcloud-vue/stylelint')
|
|
48
|
+
*
|
|
49
|
+
* To add an app-specific rule, spread it — do not redefine `extends`:
|
|
50
|
+
*
|
|
51
|
+
* const base = require('@conduction/nextcloud-vue/stylelint')
|
|
52
|
+
* module.exports = { ...base, rules: { ...base.rules, 'my/rule': true } }
|
|
53
|
+
*/
|
|
54
|
+
module.exports = {
|
|
55
|
+
extends: '@nextcloud/stylelint-config',
|
|
56
|
+
rules: {
|
|
57
|
+
'selector-pseudo-element-no-unknown': [true, {
|
|
58
|
+
ignorePseudoElements: ['v-deep'],
|
|
59
|
+
}],
|
|
60
|
+
},
|
|
61
|
+
}
|