@atomicsmash/coding-standards 17.0.3-beta.0 → 18.0.0-beta.10

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.
Files changed (56) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/dist/cspell/index.d.ts +15 -0
  3. package/dist/cspell/index.d.ts.map +1 -0
  4. package/dist/cspell/index.js +133 -0
  5. package/dist/eslint/index.d.ts +4 -0
  6. package/dist/eslint/index.d.ts.map +1 -0
  7. package/dist/eslint/index.js +199 -0
  8. package/dist/index.d.ts +6 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +5 -0
  11. package/dist/prettier/index.d.ts +13 -0
  12. package/dist/prettier/index.d.ts.map +1 -0
  13. package/dist/prettier/index.js +32 -0
  14. package/dist/stylelint/base.d.ts +69 -0
  15. package/dist/stylelint/base.d.ts.map +1 -0
  16. package/dist/stylelint/base.js +86 -0
  17. package/dist/stylelint/classic.d.ts +69 -0
  18. package/dist/stylelint/classic.d.ts.map +1 -0
  19. package/dist/stylelint/classic.js +2 -0
  20. package/dist/stylelint/index.d.ts +161 -0
  21. package/dist/stylelint/index.d.ts.map +1 -0
  22. package/dist/stylelint/index.js +4 -0
  23. package/dist/stylelint/tailwind.d.ts +21 -0
  24. package/dist/stylelint/tailwind.d.ts.map +1 -0
  25. package/dist/stylelint/tailwind.js +38 -0
  26. package/dist/stylelint/theme-json.d.ts +73 -0
  27. package/dist/stylelint/theme-json.d.ts.map +1 -0
  28. package/dist/stylelint/theme-json.js +169 -0
  29. package/package.json +55 -7
  30. package/typescript/base.json +6 -3
  31. package/typescript/cypress.json +1 -1
  32. package/.eslintrc.cjs +0 -8
  33. package/beta/README.md +0 -3
  34. package/cspell/index.cjs +0 -142
  35. package/cspell/index.js +0 -1
  36. package/cspell/index.mjs +0 -142
  37. package/index.d.ts +0 -7
  38. package/index.js +0 -5
  39. package/index.mjs +0 -4
  40. package/prettier/index.cjs +0 -35
  41. package/prettier/index.js +0 -1
  42. package/prettier/index.mjs +0 -35
  43. package/stylelint/base.cjs +0 -91
  44. package/stylelint/base.js +0 -1
  45. package/stylelint/base.mjs +0 -91
  46. package/stylelint/classic.cjs +0 -3
  47. package/stylelint/classic.js +0 -1
  48. package/stylelint/classic.mjs +0 -2
  49. package/stylelint/index.cjs +0 -5
  50. package/stylelint/index.mjs +0 -4
  51. package/stylelint/tailwind.cjs +0 -38
  52. package/stylelint/tailwind.js +0 -1
  53. package/stylelint/tailwind.mjs +0 -38
  54. package/stylelint/theme-json.cjs +0 -189
  55. package/stylelint/theme-json.js +0 -1
  56. package/stylelint/theme-json.mjs +0 -189
package/package.json CHANGED
@@ -1,23 +1,62 @@
1
1
  {
2
2
  "name": "@atomicsmash/coding-standards",
3
3
  "type": "module",
4
- "version": "17.0.3-beta.0",
4
+ "version": "18.0.0-beta.10",
5
5
  "description": "A collection of coding standards configurations.",
6
- "main": "index.js",
7
- "types": "index.d.ts",
6
+ "files": [
7
+ "./dist/**/*",
8
+ "./typescript/**/*",
9
+ "./beta/**/*",
10
+ "CHANGELOG.md",
11
+ "MIGRATING.md",
12
+ "package.json"
13
+ ],
14
+ "exports": {
15
+ ".": {
16
+ "types": "./dist/index.d.ts",
17
+ "default": "./dist/index.js"
18
+ },
19
+ "./cspell": {
20
+ "types": "./dist/cspell/index.d.ts",
21
+ "default": "./dist/cspell/index.js"
22
+ },
23
+ "./eslint": {
24
+ "types": "./dist/eslint/index.d.ts",
25
+ "default": "./dist/eslint/index.js"
26
+ },
27
+ "./prettier": {
28
+ "types": "./dist/prettier/index.d.ts",
29
+ "default": "./dist/prettier/index.js"
30
+ },
31
+ "./stylelint/*": {
32
+ "types": "./dist/stylelint/*.d.ts",
33
+ "default": "./dist/stylelint/*.js"
34
+ },
35
+ "./typescript/*": "./typescript/*.json",
36
+ "./beta/biome": "./beta/biome/biome.jsonc"
37
+ },
8
38
  "devDependencies": {
9
39
  "@cspell/cspell-types": "^9.7.0"
10
40
  },
11
41
  "peerDependencies": {
12
- "@atomicsmash/browserslist-config": "^17.0.3-beta.0",
13
- "@atomicsmash/eslint-config": "^17.0.3-beta.0",
14
- "@wordpress/stylelint-config": "^23.32.0",
42
+ "@atomicsmash/browserslist-config": "^18.0.0-beta.10",
43
+ "@eslint-community/eslint-plugin-eslint-comments": "^4.7.1",
44
+ "@eslint/js": "^9.39.4",
45
+ "@wordpress/stylelint-config": "^23.33.0",
46
+ "eslint": "^9.0.0",
47
+ "eslint-import-resolver-typescript": "^4.4.4",
48
+ "eslint-plugin-import": "^2.32.0",
49
+ "eslint-plugin-playwright": "^2.10.2",
50
+ "eslint-plugin-react": "^7.37.5",
51
+ "eslint-plugin-react-hooks": "^7.1.1",
52
+ "globals": "^17.6.0",
15
53
  "prettier": "^3.8.1",
16
54
  "stylelint": "^16.26.1",
17
55
  "stylelint-config-standard": "^39.0.1",
18
56
  "stylelint-config-standard-scss": "^16.0.0",
19
57
  "stylelint-no-restricted-syntax": "^2.2.1",
20
- "stylelint-order": "^7.0.1"
58
+ "stylelint-order": "^7.0.1",
59
+ "typescript-eslint": "^8.59.3"
21
60
  },
22
61
  "keywords": [
23
62
  "atomic",
@@ -39,5 +78,14 @@
39
78
  },
40
79
  "publishConfig": {
41
80
  "access": "public"
81
+ },
82
+ "scripts": {
83
+ "dev": "tsc --build --watch tsconfig.build.json",
84
+ "build": "npm-run-all clean compile",
85
+ "clean": "del-cli ./dist/ *.tsbuildinfo",
86
+ "compile": "tsc --build tsconfig.build.json",
87
+ "lint": "run-p lint:*",
88
+ "lint:eslint": "eslint --cache --cache-location ./node_modules/.cache/eslint . --ext .js,.ts,.jsx,.tsx",
89
+ "lint:types": "tsc"
42
90
  }
43
91
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json.schemastore.org/tsconfig",
2
+ "$schema": "https://json.schemastore.org/tsconfig",
3
3
  "compilerOptions": {
4
4
  "esModuleInterop": true,
5
5
  "skipLibCheck": true,
@@ -11,9 +11,12 @@
11
11
  "strict": true,
12
12
  "noUncheckedIndexedAccess": true,
13
13
  "moduleResolution": "Bundler",
14
- "module": "ESNext",
14
+ "module": "Preserve",
15
15
  "noEmit": true,
16
16
  "checkJs": true,
17
- "forceConsistentCasingInFileNames": true
17
+ "forceConsistentCasingInFileNames": true,
18
+ "verbatimModuleSyntax": true,
19
+ "noImplicitOverride": true,
20
+ "strictNullChecks": true
18
21
  }
19
22
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json.schemastore.org/tsconfig",
2
+ "$schema": "https://json.schemastore.org/tsconfig",
3
3
  "exclude": [
4
4
  "../node_modules/@types/jest",
5
5
  "../node_modules/@testing-library/jest-dom"
package/.eslintrc.cjs DELETED
@@ -1,8 +0,0 @@
1
- /** @type {import('eslint').Linter.Config} */
2
- module.exports = {
3
- extends: ["@atomicsmash/eslint-config"],
4
- parserOptions: {
5
- sourceType: "module",
6
- },
7
- ignorePatterns: ["**/*.d.ts"],
8
- };
package/beta/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Beta files
2
-
3
- Config files added to this folder are not stable. They are added here to avoid keeping a separate branch up to date with other configs, and also enable multiple beta configs in a single project.
package/cspell/index.cjs DELETED
@@ -1,142 +0,0 @@
1
- const fs = require("fs");
2
- const path = require("path");
3
-
4
- /**
5
- * Search for `package.json`
6
- * @param {string} from - search `from` directory.
7
- * @returns {string|void} - path to package.json
8
- */
9
- function findNearestPackageJson(from) {
10
- from = path.resolve(from);
11
- const parent = path.dirname(from);
12
- if (!from || parent === from) {
13
- return;
14
- }
15
-
16
- const pkg = path.join(from, "package.json");
17
- if (fs.existsSync(pkg)) {
18
- return pkg;
19
- }
20
- return findNearestPackageJson(parent);
21
- }
22
-
23
- /**
24
- * Load the nearest package.json
25
- * @param {string} cwd
26
- * @returns
27
- */
28
- function loadPackageJson(cwd) {
29
- const pkgFile = findNearestPackageJson(cwd);
30
- if (!pkgFile) return;
31
- return JSON.parse(fs.readFileSync(pkgFile, "utf-8"));
32
- }
33
-
34
- function determinePackageNamesAndMethods(cwd = process.cwd()) {
35
- const packageImport = loadPackageJson(cwd) || {};
36
- const packageNames = Object.keys(packageImport.dependencies || {}).concat(
37
- Object.keys(packageImport.devDependencies || {}),
38
- );
39
- return { packageNames };
40
- }
41
-
42
- /**
43
- * Search for `composer.json`
44
- * @param {string} from - search `from` directory.
45
- * @returns {string|void} - path to composer.json
46
- */
47
- function findNearestComposerJson(from) {
48
- from = path.resolve(from);
49
- const parent = path.dirname(from);
50
- if (!from || parent === from) {
51
- return;
52
- }
53
-
54
- const composerJsonPath = path.join(from, "composer.json");
55
- if (fs.existsSync(composerJsonPath)) {
56
- return composerJsonPath;
57
- }
58
- return findNearestComposerJson(parent);
59
- }
60
-
61
- /**
62
- * Load the nearest composer.json
63
- * @param {string} cwd
64
- * @returns
65
- */
66
- function loadComposer(cwd) {
67
- const composerJsonFile = findNearestComposerJson(cwd);
68
- if (!composerJsonFile) return;
69
- return JSON.parse(fs.readFileSync(composerJsonFile, "utf-8"));
70
- }
71
-
72
- function determineComposerPackageNamesAndMethods(cwd = process.cwd()) {
73
- const packageImport = loadComposer(cwd) || {};
74
- const packageNames = Object.keys(packageImport.require || {})
75
- .concat(Object.keys(packageImport["require-dev"] || {}))
76
- .reduce((allowedWords, packageName) => {
77
- return [...allowedWords, ...packageName.split("/")];
78
- }, []);
79
- return { packageNames };
80
- }
81
-
82
- /** @type { import("@cspell/cspell-types").CSpellUserSettings } */
83
- const config = {
84
- language: "en-GB",
85
- words: [
86
- ...[
87
- ...determinePackageNamesAndMethods().packageNames,
88
- ...determineComposerPackageNamesAndMethods().packageNames,
89
- "commitlint",
90
- "sass",
91
- "Userback",
92
- "phpcs",
93
- "phpcbf",
94
- ], // package and language names
95
- ...["tsbuildinfo", "svgs"], // filenames
96
- ...["combobox", "spinbutton"], // accessible roles
97
- ...["popover", "dialog"], // custom element names
98
- ...["atomicsmash"], // company all lowercase
99
- ...["unstringified", "formattable", "keyof", "nonnullable", "hidable"], // coding actions
100
- ...[
101
- "alignfull",
102
- "alignleft",
103
- "alignright",
104
- "muplugin",
105
- "textdomain",
106
- "color", // For in theme.json
107
- "gfield", // Gravity Forms field class
108
- "phpmailer",
109
- "WPMDB", // WP Migrate DB
110
- "shortcode",
111
- "wp_kses",
112
- "sprintf", // For @wordpress/i18n
113
- ], // WordPress stuff
114
- ],
115
- languageSettings: [
116
- {
117
- languageId: "*",
118
- locale: "en-GB",
119
- },
120
- {
121
- languageId: "css, less, scss, sass",
122
- locale: "en-US",
123
- dictionaries: ["css"],
124
- },
125
- {
126
- languageId: "javascript,typescript,javascriptreact,typescriptreact",
127
- locale: "en-GB",
128
- dictionaries: ["typescript"],
129
- },
130
- {
131
- languageId: "php",
132
- locale: "en-GB",
133
- dictionaries: ["php", "html"],
134
- },
135
- {
136
- languageId: "html,vue-html,javascriptreact,typescriptreact",
137
- locale: "en-GB",
138
- dictionaries: ["html"],
139
- },
140
- ],
141
- };
142
- module.exports = config;
package/cspell/index.js DELETED
@@ -1 +0,0 @@
1
- export { default } from "./index.mjs";
package/cspell/index.mjs DELETED
@@ -1,142 +0,0 @@
1
- import { existsSync, readFileSync } from "fs";
2
- import { resolve, dirname, join } from "path";
3
-
4
- /**
5
- * Search for `package.json`
6
- * @param {string} from - search `from` directory.
7
- * @returns {string|void} - path to package.json
8
- */
9
- function findNearestPackageJson(from) {
10
- from = resolve(from);
11
- const parent = dirname(from);
12
- if (!from || parent === from) {
13
- return;
14
- }
15
-
16
- const pkg = join(from, "package.json");
17
- if (existsSync(pkg)) {
18
- return pkg;
19
- }
20
- return findNearestPackageJson(parent);
21
- }
22
-
23
- /**
24
- * Load the nearest package.json
25
- * @param {string} cwd
26
- * @returns
27
- */
28
- function loadPackageJson(cwd) {
29
- const pkgFile = findNearestPackageJson(cwd);
30
- if (!pkgFile) return;
31
- return JSON.parse(readFileSync(pkgFile, "utf-8"));
32
- }
33
-
34
- function determinePackageNamesAndMethods(cwd = process.cwd()) {
35
- const packageImport = loadPackageJson(cwd) || {};
36
- const packageNames = Object.keys(packageImport.dependencies || {}).concat(
37
- Object.keys(packageImport.devDependencies || {}),
38
- );
39
- return { packageNames };
40
- }
41
-
42
- /**
43
- * Search for `composer.json`
44
- * @param {string} from - search `from` directory.
45
- * @returns {string|void} - path to composer.json
46
- */
47
- function findNearestComposerJson(from) {
48
- from = resolve(from);
49
- const parent = dirname(from);
50
- if (!from || parent === from) {
51
- return;
52
- }
53
-
54
- const composerJsonPath = join(from, "composer.json");
55
- if (existsSync(composerJsonPath)) {
56
- return composerJsonPath;
57
- }
58
- return findNearestComposerJson(parent);
59
- }
60
-
61
- /**
62
- * Load the nearest composer.json
63
- * @param {string} cwd
64
- * @returns
65
- */
66
- function loadComposer(cwd) {
67
- const composerJsonFile = findNearestComposerJson(cwd);
68
- if (!composerJsonFile) return;
69
- return JSON.parse(readFileSync(composerJsonFile, "utf-8"));
70
- }
71
-
72
- function determineComposerPackageNamesAndMethods(cwd = process.cwd()) {
73
- const packageImport = loadComposer(cwd) || {};
74
- const packageNames = Object.keys(packageImport.require || {})
75
- .concat(Object.keys(packageImport["require-dev"] || {}))
76
- .reduce((allowedWords, packageName) => {
77
- return [...allowedWords, ...packageName.split("/")];
78
- }, []);
79
- return { packageNames };
80
- }
81
-
82
- /** @type { import("@cspell/cspell-types").CSpellUserSettings } */
83
- const config = {
84
- language: "en-GB",
85
- words: [
86
- ...[
87
- ...determinePackageNamesAndMethods().packageNames,
88
- ...determineComposerPackageNamesAndMethods().packageNames,
89
- "commitlint",
90
- "sass",
91
- "Userback",
92
- "phpcs",
93
- "phpcbf",
94
- ], // package and language names
95
- ...["tsbuildinfo", "svgs"], // filenames
96
- ...["combobox", "spinbutton"], // accessible roles
97
- ...["popover", "dialog"], // custom element names
98
- ...["atomicsmash"], // company all lowercase
99
- ...["unstringified", "formattable", "keyof", "nonnullable", "hidable"], // coding actions
100
- ...[
101
- "alignfull",
102
- "alignleft",
103
- "alignright",
104
- "muplugin",
105
- "textdomain",
106
- "color", // For in theme.json
107
- "gfield", // Gravity Forms field class
108
- "phpmailer",
109
- "WPMDB", // WP Migrate DB
110
- "shortcode",
111
- "wp_kses",
112
- "sprintf", // For @wordpress/i18n
113
- ], // WordPress stuff
114
- ],
115
- languageSettings: [
116
- {
117
- languageId: "*",
118
- locale: "en-GB",
119
- },
120
- {
121
- languageId: "css, less, scss, sass",
122
- locale: "en-US",
123
- dictionaries: ["css"],
124
- },
125
- {
126
- languageId: "javascript,typescript,javascriptreact,typescriptreact",
127
- locale: "en-GB",
128
- dictionaries: ["typescript"],
129
- },
130
- {
131
- languageId: "php",
132
- locale: "en-GB",
133
- dictionaries: ["php", "html"],
134
- },
135
- {
136
- languageId: "html,vue-html,javascriptreact,typescriptreact",
137
- locale: "en-GB",
138
- dictionaries: ["html"],
139
- },
140
- ],
141
- };
142
- export default config;
package/index.d.ts DELETED
@@ -1,7 +0,0 @@
1
- export const cspellConfig: import("@cspell/cspell-types").CSpellUserSettings;
2
- export const prettierConfig: import("prettier").Config;
3
- export const stylelintConfig: {
4
- classic: import("stylelint").Config;
5
- themeJson: import("stylelint").Config;
6
- tailwind: import("stylelint").Config;
7
- };
package/index.js DELETED
@@ -1,5 +0,0 @@
1
- module.exports = {
2
- cspellConfig: require("./cspell/index.cjs"),
3
- prettierConfig: require("./prettier/index.cjs"),
4
- stylelintConfig: require("./stylelint/index.cjs"),
5
- };
package/index.mjs DELETED
@@ -1,4 +0,0 @@
1
- import { default as cspellConfig } from "./cspell/index.mjs";
2
- import { default as prettierConfig } from "./prettier/index.mjs";
3
- import { default as stylelintConfig } from "./stylelint/index.mjs";
4
- export { cspellConfig, prettierConfig, stylelintConfig };
@@ -1,35 +0,0 @@
1
- module.exports = {
2
- /* Expected defaults:
3
- Prettier recommendation
4
- printWidth: 80,
5
-
6
- Single quotes are more often found in text strings (used for apostrophes) so using double quotes prevents lots of escaping characters.
7
- singleQuote: false,
8
-
9
- Keep very nested indentation near the left to prevent lots of horizontal scrolling.
10
- tabWidth: 2,
11
-
12
- Semicolons prevent AST errors and are more explicit where a line ends
13
- semi: true,
14
-
15
- Consistent line endings for MacOS and Windows
16
- endOfLine: "lf",
17
- */
18
-
19
- // Tabs are better for visually impaired coders https://www.reddit.com/r/javascript/comments/c8drjo/nobody_talks_about_the_real_reason_to_use_tabs/
20
- useTabs: true,
21
-
22
- // Helps clean up git diffs by removing changes of a single comma on a line if adding a new line to the bottom
23
- trailingComma: "all",
24
-
25
- overrides: [
26
- {
27
- // yml files require specific indentation rules
28
- files: ["*.yml", "*.yaml"],
29
- options: {
30
- useTabs: false,
31
- tabWidth: 2,
32
- },
33
- },
34
- ],
35
- };
package/prettier/index.js DELETED
@@ -1 +0,0 @@
1
- export { default } from "./index.mjs";
@@ -1,35 +0,0 @@
1
- export default {
2
- /* Expected defaults:
3
- Prettier recommendation
4
- printWidth: 80,
5
-
6
- Single quotes are more often found in text strings (used for apostrophes) so using double quotes prevents lots of escaping characters.
7
- singleQuote: false,
8
-
9
- Keep very nested indentation near the left to prevent lots of horizontal scrolling.
10
- tabWidth: 2,
11
-
12
- Semicolons prevent AST errors and are more explicit where a line ends
13
- semi: true,
14
-
15
- Consistent line endings for MacOS and Windows
16
- endOfLine: "lf",
17
- */
18
-
19
- // Tabs are better for visually impaired coders https://www.reddit.com/r/javascript/comments/c8drjo/nobody_talks_about_the_real_reason_to_use_tabs/
20
- useTabs: true,
21
-
22
- // Helps clean up git diffs by removing changes of a single comma on a line if adding a new line to the bottom
23
- trailingComma: "all",
24
-
25
- overrides: [
26
- {
27
- // yml files require specific indentation rules
28
- files: ["*.yml", "*.yaml"],
29
- options: {
30
- useTabs: false,
31
- tabWidth: 2,
32
- },
33
- },
34
- ],
35
- };
@@ -1,91 +0,0 @@
1
- const commonRules = {
2
- "custom-property-pattern": null,
3
- "function-url-quotes": ["always"],
4
- "rule-empty-line-before": [
5
- "always",
6
- {
7
- except: ["first-nested"],
8
- ignore: ["after-comment"],
9
- },
10
- ],
11
- "comment-empty-line-before": [
12
- "always",
13
- {
14
- except: ["first-nested"],
15
- ignore: ["stylelint-commands"],
16
- },
17
- ],
18
- "order/order": [
19
- {
20
- type: "at-rule",
21
- hasBlock: false,
22
- },
23
- "custom-properties",
24
- "dollar-variables",
25
- "declarations",
26
- {
27
- type: "at-rule",
28
- hasBlock: true,
29
- },
30
- "rules",
31
- ],
32
- "plugin/no-restricted-syntax": [
33
- [
34
- {
35
- selector:
36
- "rule :matches(atrule[name=media], atrule[name=container]) rule",
37
- message:
38
- "Don't nest rules inside of media/container blocks. Instead, nest the rule and use the at rule within that.",
39
- },
40
- ],
41
- ],
42
- "selector-class-pattern": [
43
- "^([a-z][a-z0-9]*)([_-]+[a-z0-9]+)*$",
44
- {
45
- message:
46
- "Selector should use lowercase and separate words with hyphens or underscores (selector-class-pattern)",
47
- },
48
- ],
49
- "at-rule-empty-line-before": [
50
- "always",
51
- {
52
- ignore: ["blockless-after-blockless", "first-nested", "after-comment"],
53
- },
54
- ],
55
- };
56
-
57
- /** @type {import('stylelint').Config} */
58
- module.exports = {
59
- reportDescriptionlessDisables: true,
60
- reportInvalidScopeDisables: true,
61
- reportNeedlessDisables: true,
62
- plugins: ["stylelint-order", "stylelint-no-restricted-syntax"],
63
- rules: commonRules,
64
- overrides: [
65
- {
66
- files: ["*.css", "**/*.css"],
67
- extends: ["stylelint-config-standard", "@wordpress/stylelint-config"],
68
- rules: {
69
- "at-rule-no-unknown": [true, { ignoreAtRules: "context" }],
70
- },
71
- },
72
- {
73
- files: ["*.scss", "**/*.scss"],
74
- extends: [
75
- "stylelint-config-standard-scss",
76
- "@wordpress/stylelint-config/scss",
77
- ],
78
- rules: {
79
- "scss/operator-no-newline-after": null,
80
- "no-descending-specificity": null,
81
- "scss/at-rule-no-unknown": [true, { ignoreAtRules: "context" }],
82
- },
83
- },
84
- {
85
- files: ["**/editor-style?(s).?(s)css"],
86
- rules: {
87
- "declaration-property-value-allowed-list": null,
88
- },
89
- },
90
- ],
91
- };
package/stylelint/base.js DELETED
@@ -1 +0,0 @@
1
- export { default } from "./base.mjs";