@sky.ui/core 0.0.28 → 0.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/custom-elements.json +1144 -1144
- package/package.json +15 -1
- package/plugins/ce-auto-import.d.ts +18 -0
- package/plugins/ce-auto-import.js +160 -0
- package/plugins/stack-resolvers.d.ts +10 -0
- package/plugins/stack-resolvers.js +43 -0
- package/plugins/vite-plugin.d.ts +6 -1
- package/plugins/vite-plugin.js +28 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sky.ui/core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.29",
|
|
4
4
|
"description": "Sky UI web components built with Lit — 70+ components, bundler plugins, and custom elements.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sky-ui",
|
|
@@ -29,6 +29,10 @@
|
|
|
29
29
|
"plugins/webpack-plugin.d.ts",
|
|
30
30
|
"plugins/rollup-plugin.js",
|
|
31
31
|
"plugins/rollup-plugin.d.ts",
|
|
32
|
+
"plugins/ce-auto-import.js",
|
|
33
|
+
"plugins/ce-auto-import.d.ts",
|
|
34
|
+
"plugins/stack-resolvers.js",
|
|
35
|
+
"plugins/stack-resolvers.d.ts",
|
|
32
36
|
"README.md",
|
|
33
37
|
"LICENSE.md",
|
|
34
38
|
"CHANGELOG.md"
|
|
@@ -41,6 +45,16 @@
|
|
|
41
45
|
},
|
|
42
46
|
"./auto-import": "./auto-import.js",
|
|
43
47
|
"./auto-import-loader": "./auto-import-loader.js",
|
|
48
|
+
"./ce-auto-import": {
|
|
49
|
+
"types": "./plugins/ce-auto-import.d.ts",
|
|
50
|
+
"import": "./plugins/ce-auto-import.js",
|
|
51
|
+
"default": "./plugins/ce-auto-import.js"
|
|
52
|
+
},
|
|
53
|
+
"./stack-resolvers": {
|
|
54
|
+
"types": "./plugins/stack-resolvers.d.ts",
|
|
55
|
+
"import": "./plugins/stack-resolvers.js",
|
|
56
|
+
"default": "./plugins/stack-resolvers.js"
|
|
57
|
+
},
|
|
44
58
|
"./custom-elements.json": "./dist/custom-elements.json",
|
|
45
59
|
"./all": {
|
|
46
60
|
"import": "./dist/index.js",
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Plugin } from "vite";
|
|
2
|
+
export type SkyCeAutoImportTier = "free" | "pro" | "ultra";
|
|
3
|
+
export interface SkyCeAutoImportOptions {
|
|
4
|
+
/** Highest paid tier available — includes lower-tier tags. Default: free */
|
|
5
|
+
tier?: SkyCeAutoImportTier;
|
|
6
|
+
/** Project root used for node_modules lookups. Default: process.cwd() */
|
|
7
|
+
root?: string;
|
|
8
|
+
/** Extra path substrings to skip. */
|
|
9
|
+
exclude?: string[];
|
|
10
|
+
}
|
|
11
|
+
/** @deprecated Prefer SkyCeAutoImportOptions */
|
|
12
|
+
export type SkyVueCeAutoImportOptions = SkyCeAutoImportOptions;
|
|
13
|
+
/**
|
|
14
|
+
* Vite plugin: scan modules for <sky-*> and inject `@sky.ui(.pro|.ultra)/core/<tag>` imports.
|
|
15
|
+
*/
|
|
16
|
+
export declare function createSkyCeAutoImportPlugin(options?: SkyCeAutoImportOptions): Plugin;
|
|
17
|
+
/** @deprecated Prefer createSkyCeAutoImportPlugin */
|
|
18
|
+
export declare const createSkyVueCeAutoImportPlugin: typeof createSkyCeAutoImportPlugin;
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
|
|
4
|
+
// plugins/ce-auto-import.ts
|
|
5
|
+
import { existsSync } from "fs";
|
|
6
|
+
import { createRequire } from "module";
|
|
7
|
+
import { join } from "path";
|
|
8
|
+
var require2 = createRequire(import.meta.url);
|
|
9
|
+
var VIRTUAL_ID = "\0sky-ui-ce-auto-import";
|
|
10
|
+
var VIRTUAL_QUERY = "virtual:sky-ui-ce-auto-import";
|
|
11
|
+
var TAG_RE = /<(sky-[a-z][a-z0-9]*(?:-[a-z0-9]+)*)/gi;
|
|
12
|
+
var TRANSFORM_EXT_RE = /\.(vue|tsx|jsx|ts|js|mjs|html)$/i;
|
|
13
|
+
function pascalToKebabSky(name) {
|
|
14
|
+
return name.replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/^Sky/, "sky-").toLowerCase();
|
|
15
|
+
}
|
|
16
|
+
__name(pascalToKebabSky, "pascalToKebabSky");
|
|
17
|
+
function tryLoadTagSet(specifier) {
|
|
18
|
+
try {
|
|
19
|
+
const mod = require2(specifier);
|
|
20
|
+
if (mod.SKY_UI_TAG_NAMES instanceof Set) return new Set(mod.SKY_UI_TAG_NAMES);
|
|
21
|
+
if (Array.isArray(mod.SKY_UI_COMPONENTS)) {
|
|
22
|
+
return new Set(mod.SKY_UI_COMPONENTS.map(pascalToKebabSky));
|
|
23
|
+
}
|
|
24
|
+
} catch {
|
|
25
|
+
}
|
|
26
|
+
return /* @__PURE__ */ new Set();
|
|
27
|
+
}
|
|
28
|
+
__name(tryLoadTagSet, "tryLoadTagSet");
|
|
29
|
+
function loadTierSets(tier) {
|
|
30
|
+
const free = tryLoadTagSet("@sky.ui/core/auto-import");
|
|
31
|
+
const pro = tier === "pro" || tier === "ultra" ? tryLoadTagSet("@sky.ui.pro/core/auto-import") : /* @__PURE__ */ new Set();
|
|
32
|
+
const ultra = tier === "ultra" ? tryLoadTagSet("@sky.ui.ultra/core/auto-import") : /* @__PURE__ */ new Set();
|
|
33
|
+
return {
|
|
34
|
+
free,
|
|
35
|
+
pro,
|
|
36
|
+
ultra
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
__name(loadTierSets, "loadTierSets");
|
|
40
|
+
function coreImportPath(tag, sets) {
|
|
41
|
+
if (sets.ultra.has(tag)) return `@sky.ui.ultra/core/${tag}`;
|
|
42
|
+
if (sets.pro.has(tag)) return `@sky.ui.pro/core/${tag}`;
|
|
43
|
+
if (sets.free.has(tag)) return `@sky.ui/core/${tag}`;
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
__name(coreImportPath, "coreImportPath");
|
|
47
|
+
function coreModuleExists(pkg, root) {
|
|
48
|
+
const match = pkg.match(/^(@sky\.ui(?:\.pro|\.ultra)?\/core)\/(.+)$/);
|
|
49
|
+
if (!match) return false;
|
|
50
|
+
const packageRoot = join(root, "node_modules", ...match[1].split("/"));
|
|
51
|
+
const distDir = join(packageRoot, "dist", match[2]);
|
|
52
|
+
return existsSync(join(distDir, "index.js")) || existsSync(join(distDir, `${match[2]}.js`));
|
|
53
|
+
}
|
|
54
|
+
__name(coreModuleExists, "coreModuleExists");
|
|
55
|
+
function extractTags(content) {
|
|
56
|
+
const tags = /* @__PURE__ */ new Set();
|
|
57
|
+
let match;
|
|
58
|
+
TAG_RE.lastIndex = 0;
|
|
59
|
+
while ((match = TAG_RE.exec(content)) !== null) {
|
|
60
|
+
tags.add(match[1].toLowerCase());
|
|
61
|
+
}
|
|
62
|
+
return tags;
|
|
63
|
+
}
|
|
64
|
+
__name(extractTags, "extractTags");
|
|
65
|
+
function shouldTransform(id, exclude) {
|
|
66
|
+
if (!id || id.startsWith("\0") || id.includes("\0")) return false;
|
|
67
|
+
const clean = id.split("?")[0].replace(/\\/g, "/");
|
|
68
|
+
if (clean.includes("/node_modules/")) return false;
|
|
69
|
+
if (!TRANSFORM_EXT_RE.test(clean)) return false;
|
|
70
|
+
for (const part of exclude) {
|
|
71
|
+
if (clean.includes(part.replace(/\\/g, "/"))) return false;
|
|
72
|
+
}
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
__name(shouldTransform, "shouldTransform");
|
|
76
|
+
function injectImportLines(code, importLines, fileId) {
|
|
77
|
+
if (!importLines.length) return null;
|
|
78
|
+
const block = `${importLines.join("\n")}
|
|
79
|
+
`;
|
|
80
|
+
const clean = fileId.split("?")[0].replace(/\\/g, "/");
|
|
81
|
+
if (clean.endsWith(".vue")) {
|
|
82
|
+
const setupOpen = code.match(/<script\b[^>]*\bsetup\b[^>]*>/i);
|
|
83
|
+
if (setupOpen && setupOpen.index != null) {
|
|
84
|
+
const idx = setupOpen.index + setupOpen[0].length;
|
|
85
|
+
return {
|
|
86
|
+
code: code.slice(0, idx) + "\n" + block + code.slice(idx),
|
|
87
|
+
map: null
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
const scriptOpen = code.match(/<script\b[^>]*>/i);
|
|
91
|
+
if (scriptOpen && scriptOpen.index != null) {
|
|
92
|
+
const idx = scriptOpen.index + scriptOpen[0].length;
|
|
93
|
+
return {
|
|
94
|
+
code: code.slice(0, idx) + "\n" + block + code.slice(idx),
|
|
95
|
+
map: null
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
code: `${code}
|
|
100
|
+
<script setup>
|
|
101
|
+
${block}</script>
|
|
102
|
+
`,
|
|
103
|
+
map: null
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
code: block + code,
|
|
108
|
+
map: null
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
__name(injectImportLines, "injectImportLines");
|
|
112
|
+
function createSkyCeAutoImportPlugin(options = {}) {
|
|
113
|
+
const tier = options.tier ?? "free";
|
|
114
|
+
const root = options.root ?? process.cwd();
|
|
115
|
+
const exclude = [
|
|
116
|
+
"/scripts/sky-vue-ce-auto-import",
|
|
117
|
+
"/plugins/ce-auto-import",
|
|
118
|
+
"/frameworks/",
|
|
119
|
+
...options.exclude ?? []
|
|
120
|
+
];
|
|
121
|
+
let sets = loadTierSets(tier);
|
|
122
|
+
return {
|
|
123
|
+
name: "sky-ui-ce-auto-import",
|
|
124
|
+
enforce: "pre",
|
|
125
|
+
buildStart() {
|
|
126
|
+
sets = loadTierSets(tier);
|
|
127
|
+
},
|
|
128
|
+
resolveId(id) {
|
|
129
|
+
if (id === VIRTUAL_QUERY || id === VIRTUAL_ID) return VIRTUAL_ID;
|
|
130
|
+
return null;
|
|
131
|
+
},
|
|
132
|
+
load(id) {
|
|
133
|
+
if (id !== VIRTUAL_ID) return null;
|
|
134
|
+
return "/** Per-file sky-* CE imports \u2014 virtual entry is intentionally empty. */\n";
|
|
135
|
+
},
|
|
136
|
+
transform(code, id) {
|
|
137
|
+
if (typeof code !== "string" || !shouldTransform(id, exclude)) return null;
|
|
138
|
+
const tags = extractTags(code);
|
|
139
|
+
if (!tags.size) return null;
|
|
140
|
+
const pkgs = [
|
|
141
|
+
...tags
|
|
142
|
+
].sort().map((tag) => coreImportPath(tag, sets)).filter((pkg) => Boolean(pkg) && coreModuleExists(pkg, root));
|
|
143
|
+
const toInject = pkgs.filter((pkg) => {
|
|
144
|
+
if (code.includes(`'${pkg}'`) || code.includes(`"${pkg}"`) || code.includes(`\`${pkg}\``)) {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
const escaped = pkg.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
148
|
+
return !new RegExp(`import\\(\\s*['"\`]${escaped}['"\`]\\s*\\)`).test(code);
|
|
149
|
+
});
|
|
150
|
+
if (!toInject.length) return null;
|
|
151
|
+
return injectImportLines(code, toInject.map((pkg) => `import '${pkg}';`), id);
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
__name(createSkyCeAutoImportPlugin, "createSkyCeAutoImportPlugin");
|
|
156
|
+
var createSkyVueCeAutoImportPlugin = createSkyCeAutoImportPlugin;
|
|
157
|
+
export {
|
|
158
|
+
createSkyCeAutoImportPlugin,
|
|
159
|
+
createSkyVueCeAutoImportPlugin
|
|
160
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type SkyMainResolverFn = (componentName: string) => {
|
|
2
|
+
name: string;
|
|
3
|
+
from: string;
|
|
4
|
+
} | undefined;
|
|
5
|
+
/** Free-only Main resolvers. */
|
|
6
|
+
export declare function skyUiFreeMainResolvers(options?: Record<string, unknown>): SkyMainResolverFn[];
|
|
7
|
+
/** Pro includes free. */
|
|
8
|
+
export declare function skyUiProMainResolvers(options?: Record<string, unknown>): SkyMainResolverFn[];
|
|
9
|
+
/** Ultra includes free + pro. */
|
|
10
|
+
export declare function skyUiUltraMainResolvers(options?: Record<string, unknown>): SkyMainResolverFn[];
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
|
|
4
|
+
// plugins/stack-resolvers.ts
|
|
5
|
+
import { createRequire } from "module";
|
|
6
|
+
var require2 = createRequire(import.meta.url);
|
|
7
|
+
function tryResolver(specifier, exportName, options) {
|
|
8
|
+
try {
|
|
9
|
+
const mod = require2(specifier);
|
|
10
|
+
const factory = mod[exportName];
|
|
11
|
+
if (typeof factory !== "function") return null;
|
|
12
|
+
return factory(options);
|
|
13
|
+
} catch {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
__name(tryResolver, "tryResolver");
|
|
18
|
+
function skyUiFreeMainResolvers(options = {}) {
|
|
19
|
+
const free = tryResolver("@sky.ui/core/auto-import", "SkyUIMainResolver", options);
|
|
20
|
+
return free ? [
|
|
21
|
+
free
|
|
22
|
+
] : [];
|
|
23
|
+
}
|
|
24
|
+
__name(skyUiFreeMainResolvers, "skyUiFreeMainResolvers");
|
|
25
|
+
function skyUiProMainResolvers(options = {}) {
|
|
26
|
+
const list = skyUiFreeMainResolvers(options);
|
|
27
|
+
const pro = tryResolver("@sky.ui.pro/core/auto-import", "SkyUIProMainResolver", options);
|
|
28
|
+
if (pro) list.push(pro);
|
|
29
|
+
return list;
|
|
30
|
+
}
|
|
31
|
+
__name(skyUiProMainResolvers, "skyUiProMainResolvers");
|
|
32
|
+
function skyUiUltraMainResolvers(options = {}) {
|
|
33
|
+
const list = skyUiProMainResolvers(options);
|
|
34
|
+
const ultra = tryResolver("@sky.ui.ultra/core/auto-import", "SkyUIUltraMainResolver", options);
|
|
35
|
+
if (ultra) list.push(ultra);
|
|
36
|
+
return list;
|
|
37
|
+
}
|
|
38
|
+
__name(skyUiUltraMainResolvers, "skyUiUltraMainResolvers");
|
|
39
|
+
export {
|
|
40
|
+
skyUiFreeMainResolvers,
|
|
41
|
+
skyUiProMainResolvers,
|
|
42
|
+
skyUiUltraMainResolvers
|
|
43
|
+
};
|
package/plugins/vite-plugin.d.ts
CHANGED
|
@@ -15,5 +15,10 @@ export interface SkyUIMainVitePluginOptions extends SkyUIMainAutoImportPluginOpt
|
|
|
15
15
|
resolverOptions?: Record<string, unknown>;
|
|
16
16
|
dts?: boolean;
|
|
17
17
|
componentsOptions?: Record<string, unknown>;
|
|
18
|
+
/** Per-file <sky-*> CE imports. Default: true. */
|
|
19
|
+
ceAutoImport?: boolean;
|
|
20
|
+
root?: string;
|
|
18
21
|
}
|
|
19
|
-
export declare function SkyUIMainVitePlugin(options?: SkyUIMainVitePluginOptions): Plugin
|
|
22
|
+
export declare function SkyUIMainVitePlugin(options?: SkyUIMainVitePluginOptions): Plugin[];
|
|
23
|
+
export { createSkyCeAutoImportPlugin, createSkyVueCeAutoImportPlugin } from "./ce-auto-import.js";
|
|
24
|
+
export { skyUiFreeMainResolvers, skyUiProMainResolvers, skyUiUltraMainResolvers, } from "./stack-resolvers.js";
|
package/plugins/vite-plugin.js
CHANGED
|
@@ -7,6 +7,10 @@ import path from "path";
|
|
|
7
7
|
import { fileURLToPath } from "url";
|
|
8
8
|
import Components from "unplugin-vue-components/vite";
|
|
9
9
|
import { SKY_UI_TAG_NAMES, getCoreImportPath, SkyUIMainResolver } from "../auto-import.js";
|
|
10
|
+
import { createSkyCeAutoImportPlugin } from "./ce-auto-import.js";
|
|
11
|
+
import { skyUiFreeMainResolvers } from "./stack-resolvers.js";
|
|
12
|
+
import { createSkyCeAutoImportPlugin as createSkyCeAutoImportPlugin2, createSkyVueCeAutoImportPlugin } from "./ce-auto-import.js";
|
|
13
|
+
import { skyUiFreeMainResolvers as skyUiFreeMainResolvers2, skyUiProMainResolvers, skyUiUltraMainResolvers } from "./stack-resolvers.js";
|
|
10
14
|
var __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
11
15
|
var CORE_DIST = path.resolve(__dirname, "..", "dist");
|
|
12
16
|
var VIRTUAL_ID = "\0sky-ui-core-auto-import";
|
|
@@ -94,23 +98,40 @@ ${code}`,
|
|
|
94
98
|
}
|
|
95
99
|
__name(coreAutoImportVitePlugin, "coreAutoImportVitePlugin");
|
|
96
100
|
function coreVueComponentsVitePlugin(options = {}) {
|
|
101
|
+
const resolverOptions = options.resolverOptions ?? {};
|
|
102
|
+
const resolvers = skyUiFreeMainResolvers(resolverOptions);
|
|
103
|
+
if (!resolvers.length) {
|
|
104
|
+
resolvers.push(SkyUIMainResolver(resolverOptions));
|
|
105
|
+
}
|
|
97
106
|
return Components({
|
|
98
|
-
resolvers
|
|
99
|
-
SkyUIMainResolver(options.resolverOptions ?? {})
|
|
100
|
-
],
|
|
107
|
+
resolvers,
|
|
101
108
|
dts: options.dts !== false,
|
|
102
109
|
...options.componentsOptions
|
|
103
110
|
});
|
|
104
111
|
}
|
|
105
112
|
__name(coreVueComponentsVitePlugin, "coreVueComponentsVitePlugin");
|
|
106
113
|
function SkyUIMainVitePlugin(options = {}) {
|
|
107
|
-
const { mode = "vue", ...rest } = options;
|
|
114
|
+
const { mode = "vue", ceAutoImport = true, root, ...rest } = options;
|
|
115
|
+
const plugins = [];
|
|
116
|
+
if (ceAutoImport !== false) {
|
|
117
|
+
plugins.push(createSkyCeAutoImportPlugin({
|
|
118
|
+
tier: "free",
|
|
119
|
+
root
|
|
120
|
+
}));
|
|
121
|
+
}
|
|
108
122
|
if (mode === "auto-import") {
|
|
109
|
-
|
|
123
|
+
plugins.push(coreAutoImportVitePlugin(rest));
|
|
124
|
+
return plugins;
|
|
110
125
|
}
|
|
111
|
-
|
|
126
|
+
plugins.push(coreVueComponentsVitePlugin(rest));
|
|
127
|
+
return plugins;
|
|
112
128
|
}
|
|
113
129
|
__name(SkyUIMainVitePlugin, "SkyUIMainVitePlugin");
|
|
114
130
|
export {
|
|
115
|
-
SkyUIMainVitePlugin
|
|
131
|
+
SkyUIMainVitePlugin,
|
|
132
|
+
createSkyCeAutoImportPlugin2 as createSkyCeAutoImportPlugin,
|
|
133
|
+
createSkyVueCeAutoImportPlugin,
|
|
134
|
+
skyUiFreeMainResolvers2 as skyUiFreeMainResolvers,
|
|
135
|
+
skyUiProMainResolvers,
|
|
136
|
+
skyUiUltraMainResolvers
|
|
116
137
|
};
|