tailwind-styled-v4 5.0.36 → 5.0.38
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/analyzer.d.mts +152 -5
- package/dist/analyzer.d.ts +152 -5
- package/dist/analyzer.js +213 -161
- package/dist/analyzer.js.map +1 -1
- package/dist/analyzer.mjs +118 -82
- package/dist/analyzer.mjs.map +1 -1
- package/dist/animate.d.mts +30 -3
- package/dist/animate.d.ts +30 -3
- package/dist/animate.js +131 -87
- package/dist/animate.js.map +1 -1
- package/dist/animate.mjs +28 -14
- package/dist/animate.mjs.map +1 -1
- package/dist/atomic.js +105 -68
- package/dist/atomic.js.map +1 -1
- package/dist/atomic.mjs +40 -13
- package/dist/atomic.mjs.map +1 -1
- package/dist/cli.js +577 -426
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +466 -304
- package/dist/cli.mjs.map +1 -1
- package/dist/compiler.d.mts +5 -0
- package/dist/compiler.d.ts +5 -0
- package/dist/compiler.js +826 -508
- package/dist/compiler.js.map +1 -1
- package/dist/compiler.mjs +287 -29
- package/dist/compiler.mjs.map +1 -1
- package/dist/dashboard.js +71 -41
- package/dist/dashboard.js.map +1 -1
- package/dist/dashboard.mjs +12 -6
- package/dist/dashboard.mjs.map +1 -1
- package/dist/devtools.d.mts +88 -2
- package/dist/devtools.d.ts +88 -2
- package/dist/devtools.js +333 -289
- package/dist/devtools.js.map +1 -1
- package/dist/devtools.mjs +26 -11
- package/dist/devtools.mjs.map +1 -1
- package/dist/engine.d.mts +557 -6
- package/dist/engine.d.ts +557 -6
- package/dist/engine.js +679 -502
- package/dist/engine.js.map +1 -1
- package/dist/engine.mjs +467 -307
- package/dist/engine.mjs.map +1 -1
- package/dist/index.d.mts +180 -127
- package/dist/index.d.ts +180 -127
- package/dist/index.js +1329 -7441
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1266 -7385
- package/dist/index.mjs.map +1 -1
- package/dist/next.js +318 -243
- package/dist/next.js.map +1 -1
- package/dist/next.mjs +256 -181
- package/dist/next.mjs.map +1 -1
- package/dist/plugin-api.d.mts +4 -2
- package/dist/plugin-api.d.ts +4 -2
- package/dist/plugin-api.js +93 -49
- package/dist/plugin-api.js.map +1 -1
- package/dist/plugin-api.mjs +26 -6
- package/dist/plugin-api.mjs.map +1 -1
- package/dist/plugin-registry.js +103 -62
- package/dist/plugin-registry.js.map +1 -1
- package/dist/plugin-registry.mjs +53 -35
- package/dist/plugin-registry.mjs.map +1 -1
- package/dist/plugin.d.mts +165 -5
- package/dist/plugin.d.ts +165 -5
- package/dist/plugin.js +115 -50
- package/dist/plugin.js.map +1 -1
- package/dist/plugin.mjs +44 -6
- package/dist/plugin.mjs.map +1 -1
- package/dist/preset.js +47 -15
- package/dist/preset.js.map +1 -1
- package/dist/preset.mjs +13 -5
- package/dist/preset.mjs.map +1 -1
- package/dist/rspack.js +82 -50
- package/dist/rspack.js.map +1 -1
- package/dist/rspack.mjs +20 -12
- package/dist/rspack.mjs.map +1 -1
- package/dist/runtime-css.js +62 -24
- package/dist/runtime-css.js.map +1 -1
- package/dist/runtime-css.mjs +15 -7
- package/dist/runtime-css.mjs.map +1 -1
- package/dist/runtime.d.mts +38 -3
- package/dist/runtime.d.ts +38 -3
- package/dist/runtime.js +97 -44
- package/dist/runtime.js.map +1 -1
- package/dist/runtime.mjs +31 -8
- package/dist/runtime.mjs.map +1 -1
- package/dist/scanner.d.mts +58 -4
- package/dist/scanner.d.ts +58 -4
- package/dist/scanner.js +163 -120
- package/dist/scanner.js.map +1 -1
- package/dist/scanner.mjs +67 -39
- package/dist/scanner.mjs.map +1 -1
- package/dist/shared.d.mts +185 -3
- package/dist/shared.d.ts +185 -3
- package/dist/shared.js +441 -295
- package/dist/shared.js.map +1 -1
- package/dist/shared.mjs +253 -122
- package/dist/shared.mjs.map +1 -1
- package/dist/storybook-addon.d.mts +2 -2
- package/dist/storybook-addon.d.ts +2 -2
- package/dist/storybook-addon.js +39 -10
- package/dist/storybook-addon.js.map +1 -1
- package/dist/storybook-addon.mjs +8 -3
- package/dist/storybook-addon.mjs.map +1 -1
- package/dist/svelte.d.mts +2 -1
- package/dist/svelte.d.ts +2 -1
- package/dist/svelte.js +88 -64
- package/dist/svelte.js.map +1 -1
- package/dist/svelte.mjs +28 -13
- package/dist/svelte.mjs.map +1 -1
- package/dist/syntax.js +68 -37
- package/dist/syntax.js.map +1 -1
- package/dist/syntax.mjs +8 -7
- package/dist/syntax.mjs.map +1 -1
- package/dist/testing.js +55 -18
- package/dist/testing.js.map +1 -1
- package/dist/testing.mjs +16 -3
- package/dist/testing.mjs.map +1 -1
- package/dist/theme.d.mts +38 -3
- package/dist/theme.d.ts +38 -3
- package/dist/theme.js +131 -74
- package/dist/theme.js.map +1 -1
- package/dist/theme.mjs +42 -13
- package/dist/theme.mjs.map +1 -1
- package/dist/turbopackLoader.js +150 -116
- package/dist/turbopackLoader.js.map +1 -1
- package/dist/turbopackLoader.mjs +124 -81
- package/dist/turbopackLoader.mjs.map +1 -1
- package/dist/tw.js +560 -421
- package/dist/tw.js.map +1 -1
- package/dist/tw.mjs +460 -302
- package/dist/tw.mjs.map +1 -1
- package/dist/vite.js +561 -446
- package/dist/vite.js.map +1 -1
- package/dist/vite.mjs +433 -321
- package/dist/vite.mjs.map +1 -1
- package/dist/vue.d.mts +4 -1
- package/dist/vue.d.ts +4 -1
- package/dist/vue.js +95 -70
- package/dist/vue.js.map +1 -1
- package/dist/vue.mjs +30 -14
- package/dist/vue.mjs.map +1 -1
- package/dist/webpackLoader.js +110 -78
- package/dist/webpackLoader.js.map +1 -1
- package/dist/webpackLoader.mjs +45 -17
- package/dist/webpackLoader.mjs.map +1 -1
- package/native/tailwind-styled-native.linux-x64-gnu.node +0 -0
- package/native/tailwind-styled-native.node +0 -0
- package/package.json +3 -1
- package/dist/analyzeWorkspace-B1_XRfdl.d.ts +0 -134
- package/dist/analyzeWorkspace-hYfu4Hg3.d.mts +0 -134
- package/dist/index-DQI6O24n.d.mts +0 -464
- package/dist/index-NDINUhLN.d.mts +0 -90
- package/dist/index-NDINUhLN.d.ts +0 -90
- package/dist/index-UkYbyBkR.d.ts +0 -464
- package/dist/liveTokenEngine-CN9ian1R.d.ts +0 -38
- package/dist/liveTokenEngine-DKoWRtqH.d.mts +0 -38
- package/dist/schemas-DR-SLxZZ.d.mts +0 -59
- package/dist/schemas-DR-SLxZZ.d.ts +0 -59
- package/dist/trace-Dz4vmZdy.d.mts +0 -96
- package/dist/trace-Dz4vmZdy.d.ts +0 -96
- package/dist/types-DXr2PmGP.d.mts +0 -31
- package/dist/types-DXr2PmGP.d.ts +0 -31
package/dist/plugin-registry.js
CHANGED
|
@@ -1,23 +1,30 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var child_process = require('child_process');
|
|
4
|
-
var crypto = require('crypto');
|
|
5
|
-
var fs = require('fs');
|
|
6
|
-
var module$1 = require('module');
|
|
7
|
-
var path = require('path');
|
|
8
|
-
var url = require('url');
|
|
9
|
-
|
|
10
|
-
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
11
1
|
/* tailwind-styled-v4 v5.0.4 | MIT | https://github.com/dictionar32/tailwind-styled-v4 */
|
|
2
|
+
"use strict";
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
12
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
13
7
|
var __commonJS = (cb, mod) => function __require() {
|
|
14
8
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
15
9
|
};
|
|
10
|
+
var __export = (target, all) => {
|
|
11
|
+
for (var name in all)
|
|
12
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
13
|
+
};
|
|
14
|
+
var __copyProps = (to, from, except, desc) => {
|
|
15
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
+
for (let key of __getOwnPropNames(from))
|
|
17
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
18
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
23
|
|
|
17
24
|
// packages/domain/plugin-registry/registry.json
|
|
18
25
|
var require_registry = __commonJS({
|
|
19
|
-
"packages/domain/plugin-registry/registry.json"(
|
|
20
|
-
|
|
26
|
+
"packages/domain/plugin-registry/registry.json"(exports2, module2) {
|
|
27
|
+
module2.exports = {
|
|
21
28
|
version: "5.0.0",
|
|
22
29
|
updatedAt: "2026-03-23",
|
|
23
30
|
official: [
|
|
@@ -79,29 +86,47 @@ var require_registry = __commonJS({
|
|
|
79
86
|
};
|
|
80
87
|
}
|
|
81
88
|
});
|
|
89
|
+
|
|
90
|
+
// src/umbrella/plugin-registry.ts
|
|
91
|
+
var plugin_registry_exports = {};
|
|
92
|
+
__export(plugin_registry_exports, {
|
|
93
|
+
PluginRegistry: () => PluginRegistry,
|
|
94
|
+
PluginRegistryError: () => PluginRegistryError,
|
|
95
|
+
getRegistry: () => getRegistry,
|
|
96
|
+
registry: () => registry
|
|
97
|
+
});
|
|
98
|
+
module.exports = __toCommonJS(plugin_registry_exports);
|
|
99
|
+
|
|
100
|
+
// packages/domain/plugin-registry/src/index.ts
|
|
101
|
+
var import_node_child_process = require("child_process");
|
|
102
|
+
var import_node_fs = require("fs");
|
|
103
|
+
var import_node_module = require("module");
|
|
104
|
+
var import_node_path = require("path");
|
|
105
|
+
var import_node_url = require("url");
|
|
106
|
+
var import_meta = {};
|
|
82
107
|
var _native = void 0;
|
|
83
108
|
function getNative() {
|
|
84
109
|
if (_native !== void 0) return _native;
|
|
85
110
|
try {
|
|
86
|
-
const runtimeDir = typeof __dirname === "string" && __dirname.length > 0 ? __dirname : typeof
|
|
87
|
-
const req =
|
|
111
|
+
const runtimeDir = typeof __dirname === "string" && __dirname.length > 0 ? __dirname : typeof import_meta !== "undefined" && import_meta.url ? (0, import_node_url.fileURLToPath)(new URL(".", import_meta.url)) : process.cwd();
|
|
112
|
+
const req = (0, import_node_module.createRequire)((0, import_node_path.join)(runtimeDir, "noop.cjs"));
|
|
88
113
|
const _pa = `${process.platform}-${process.arch}`;
|
|
89
114
|
const _paGnu = _pa === "linux-x64" ? "linux-x64-gnu" : _pa === "linux-arm64" ? "linux-arm64-gnu" : _pa;
|
|
90
115
|
const candidates = [
|
|
91
116
|
// npm install case: dist/../native/
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
117
|
+
(0, import_node_path.resolve)(runtimeDir, "..", "native", "tailwind-styled-native.node"),
|
|
118
|
+
(0, import_node_path.resolve)(runtimeDir, "..", "native", `tailwind-styled-native.${_pa}.node`),
|
|
119
|
+
(0, import_node_path.resolve)(runtimeDir, "..", "native", `tailwind-styled-native.${_paGnu}.node`),
|
|
120
|
+
(0, import_node_path.resolve)(runtimeDir, "..", "native", "tailwind_styled_parser.node"),
|
|
96
121
|
// cwd fallback
|
|
97
|
-
|
|
98
|
-
|
|
122
|
+
(0, import_node_path.resolve)(process.cwd(), "native", "tailwind-styled-native.node"),
|
|
123
|
+
(0, import_node_path.resolve)(process.cwd(), "native", "tailwind_styled_parser.node"),
|
|
99
124
|
// monorepo dev: 4-level up
|
|
100
|
-
|
|
101
|
-
|
|
125
|
+
(0, import_node_path.resolve)(runtimeDir, "..", "..", "..", "..", "native", "tailwind-styled-native.node"),
|
|
126
|
+
(0, import_node_path.resolve)(runtimeDir, "..", "..", "..", "..", "native", "tailwind_styled_parser.node"),
|
|
102
127
|
// 3-level fallback
|
|
103
|
-
|
|
104
|
-
|
|
128
|
+
(0, import_node_path.resolve)(runtimeDir, "..", "..", "..", "native", "tailwind-styled-native.node"),
|
|
129
|
+
(0, import_node_path.resolve)(runtimeDir, "..", "..", "..", "native", "tailwind_styled_parser.node")
|
|
105
130
|
];
|
|
106
131
|
for (const c of candidates) {
|
|
107
132
|
try {
|
|
@@ -116,6 +141,12 @@ function getNative() {
|
|
|
116
141
|
}
|
|
117
142
|
return _native = null;
|
|
118
143
|
}
|
|
144
|
+
var NATIVE_UNAVAILABLE_MESSAGE = "[tailwind-styled/plugin-registry] Native binding is required but not available.\nPlease ensure you have run: npm run build:rust";
|
|
145
|
+
function requireNative() {
|
|
146
|
+
const native = getNative();
|
|
147
|
+
if (!native) throw new Error(NATIVE_UNAVAILABLE_MESSAGE);
|
|
148
|
+
return native;
|
|
149
|
+
}
|
|
119
150
|
var PLUGIN_NAME_REGEX = /^(@[a-z0-9-]+\/)?[a-z0-9-]+(@[0-9]+\.[0-9]+\.[0-9]+)?$/;
|
|
120
151
|
var PluginRegistryError = class extends Error {
|
|
121
152
|
code;
|
|
@@ -190,15 +221,8 @@ var PluginRegistry = class _PluginRegistry {
|
|
|
190
221
|
return this.registryVersion;
|
|
191
222
|
}
|
|
192
223
|
search(query) {
|
|
193
|
-
const native =
|
|
194
|
-
|
|
195
|
-
return JSON.parse(native.pluginSearch(JSON.stringify(this.plugins), query));
|
|
196
|
-
}
|
|
197
|
-
const q = query.trim().toLowerCase();
|
|
198
|
-
if (!q) return [...this.plugins];
|
|
199
|
-
return this.plugins.filter(
|
|
200
|
-
(plugin) => plugin.name.toLowerCase().includes(q) || plugin.description.toLowerCase().includes(q) || plugin.tags.some((tag) => tag.toLowerCase().includes(q))
|
|
201
|
-
);
|
|
224
|
+
const native = requireNative();
|
|
225
|
+
return JSON.parse(native.pluginSearch(JSON.stringify(this.plugins), query));
|
|
202
226
|
}
|
|
203
227
|
getAll() {
|
|
204
228
|
return [...this.plugins];
|
|
@@ -209,8 +233,8 @@ var PluginRegistry = class _PluginRegistry {
|
|
|
209
233
|
}
|
|
210
234
|
install(pluginName, options = {}) {
|
|
211
235
|
const npmBin = options.npmBin ?? process.env.TW_PLUGIN_NPM_BIN ?? "npm";
|
|
212
|
-
const native =
|
|
213
|
-
const isValidName = native
|
|
236
|
+
const native = requireNative();
|
|
237
|
+
const isValidName = native.pluginValidateName(pluginName);
|
|
214
238
|
if (!isValidName) {
|
|
215
239
|
throw new PluginRegistryError({
|
|
216
240
|
code: "INVALID_PLUGIN_NAME",
|
|
@@ -247,7 +271,7 @@ var PluginRegistry = class _PluginRegistry {
|
|
|
247
271
|
if (options.dryRun) {
|
|
248
272
|
return { plugin: pluginName, installed: true, command, exitCode: 0 };
|
|
249
273
|
}
|
|
250
|
-
const child =
|
|
274
|
+
const child = (0, import_node_child_process.spawnSync)(npmBin, ["install", pluginName], { stdio: "inherit" });
|
|
251
275
|
if (child.error) {
|
|
252
276
|
throw new PluginRegistryError({
|
|
253
277
|
code: "INSTALL_COMMAND_FAILED",
|
|
@@ -283,7 +307,7 @@ var PluginRegistry = class _PluginRegistry {
|
|
|
283
307
|
if (options.dryRun) {
|
|
284
308
|
return { plugin: pluginName, uninstalled: true, command, exitCode: 0 };
|
|
285
309
|
}
|
|
286
|
-
const child =
|
|
310
|
+
const child = (0, import_node_child_process.spawnSync)(npmBin, ["uninstall", pluginName], { stdio: "inherit" });
|
|
287
311
|
if (child.status !== 0 && child.status !== null) {
|
|
288
312
|
throw new PluginRegistryError({
|
|
289
313
|
code: "INSTALL_FAILED",
|
|
@@ -305,14 +329,11 @@ var PluginRegistry = class _PluginRegistry {
|
|
|
305
329
|
return { ok: true, reason: "no checksum registered (skip)" };
|
|
306
330
|
}
|
|
307
331
|
try {
|
|
308
|
-
const pkgPath =
|
|
309
|
-
if (!
|
|
310
|
-
const content =
|
|
311
|
-
const native =
|
|
312
|
-
const ok = native
|
|
313
|
-
const hash = `sha256-${crypto.createHash("sha256").update(content).digest("base64")}`;
|
|
314
|
-
return hash === plugin.integrity;
|
|
315
|
-
})();
|
|
332
|
+
const pkgPath = (0, import_node_path.join)(process.cwd(), "node_modules", pluginName, "package.json");
|
|
333
|
+
if (!(0, import_node_fs.existsSync)(pkgPath)) return { ok: false, reason: "plugin not installed" };
|
|
334
|
+
const content = (0, import_node_fs.readFileSync)(pkgPath, "utf8");
|
|
335
|
+
const native = requireNative();
|
|
336
|
+
const ok = native.pluginVerifyIntegrity(content, plugin.integrity);
|
|
316
337
|
return ok ? { ok: true } : { ok: false, reason: `Integrity mismatch: expected ${plugin.integrity}` };
|
|
317
338
|
} catch (e) {
|
|
318
339
|
return {
|
|
@@ -325,17 +346,12 @@ var PluginRegistry = class _PluginRegistry {
|
|
|
325
346
|
const plugin = this.getByName(pluginName);
|
|
326
347
|
if (!plugin) return { hasUpdate: false, error: `Plugin '${pluginName}' not in registry` };
|
|
327
348
|
try {
|
|
328
|
-
const pkgPath =
|
|
329
|
-
if (!
|
|
330
|
-
const current = JSON.parse(
|
|
349
|
+
const pkgPath = (0, import_node_path.join)(process.cwd(), "node_modules", pluginName, "package.json");
|
|
350
|
+
if (!(0, import_node_fs.existsSync)(pkgPath)) return { hasUpdate: false, error: "plugin not installed" };
|
|
351
|
+
const current = JSON.parse((0, import_node_fs.readFileSync)(pkgPath, "utf8")).version ?? "0.0.0";
|
|
331
352
|
const latest = plugin.version;
|
|
332
|
-
const native =
|
|
333
|
-
const hasUpdate = native
|
|
334
|
-
const parseV = (v) => v.replace(/[^0-9.]/g, "").split(".").map(Number);
|
|
335
|
-
const [ca, cb, cc] = parseV(current);
|
|
336
|
-
const [la, lb, lc] = parseV(latest);
|
|
337
|
-
return la > ca || la === ca && lb > cb || la === ca && lb === cb && lc > cc;
|
|
338
|
-
})();
|
|
353
|
+
const native = requireNative();
|
|
354
|
+
const hasUpdate = native.pluginSemverHasUpdate(current, latest);
|
|
339
355
|
return { hasUpdate, current, latest };
|
|
340
356
|
} catch (e) {
|
|
341
357
|
return {
|
|
@@ -345,7 +361,31 @@ var PluginRegistry = class _PluginRegistry {
|
|
|
345
361
|
}
|
|
346
362
|
}
|
|
347
363
|
checkAllUpdates() {
|
|
348
|
-
|
|
364
|
+
const native = requireNative();
|
|
365
|
+
const installed = [];
|
|
366
|
+
const byName = /* @__PURE__ */ new Map();
|
|
367
|
+
for (const p of this.plugins) {
|
|
368
|
+
try {
|
|
369
|
+
const pkgPath = (0, import_node_path.join)(process.cwd(), "node_modules", p.name, "package.json");
|
|
370
|
+
if (!(0, import_node_fs.existsSync)(pkgPath)) {
|
|
371
|
+
byName.set(p.name, { name: p.name, hasUpdate: false, error: "plugin not installed" });
|
|
372
|
+
continue;
|
|
373
|
+
}
|
|
374
|
+
const version = JSON.parse((0, import_node_fs.readFileSync)(pkgPath, "utf8")).version ?? "0.0.0";
|
|
375
|
+
installed.push({ name: p.name, version });
|
|
376
|
+
} catch (e) {
|
|
377
|
+
byName.set(p.name, {
|
|
378
|
+
name: p.name,
|
|
379
|
+
hasUpdate: false,
|
|
380
|
+
error: `Update check failed: ${e instanceof Error ? e.message : String(e)}`
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
const results = JSON.parse(
|
|
385
|
+
native.pluginCheckAllUpdates(JSON.stringify(installed), JSON.stringify(this.plugins))
|
|
386
|
+
);
|
|
387
|
+
for (const r of results) byName.set(r.name, r);
|
|
388
|
+
return this.plugins.map((p) => byName.get(p.name)).filter((r) => r !== void 0);
|
|
349
389
|
}
|
|
350
390
|
};
|
|
351
391
|
var _state = { defaultRegistry: null };
|
|
@@ -357,10 +397,11 @@ function getRegistry() {
|
|
|
357
397
|
return _state.defaultRegistry;
|
|
358
398
|
}
|
|
359
399
|
var registry = getRegistry();
|
|
360
|
-
|
|
361
|
-
exports
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
400
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
401
|
+
0 && (module.exports = {
|
|
402
|
+
PluginRegistry,
|
|
403
|
+
PluginRegistryError,
|
|
404
|
+
getRegistry,
|
|
405
|
+
registry
|
|
406
|
+
});
|
|
366
407
|
//# sourceMappingURL=plugin-registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../packages/domain/plugin-registry/registry.json","../packages/domain/plugin-registry/src/index.ts"],"names":["exports","fileURLToPath","createRequire","join","resolve","spawnSync","existsSync","readFileSync","createHash"],"mappings":"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","file":"plugin-registry.js","sourcesContent":["{\n \"version\": \"5.0.0\",\n \"updatedAt\": \"2026-03-23\",\n \"official\": [\n {\n \"name\": \"@tailwind-styled/plugin-animation\",\n \"description\": \"Animation presets and keyframes — enter/exit transitions, spring physics, scroll-triggered\",\n \"version\": \"5.0.0\",\n \"tags\": [\"animation\", \"motion\", \"transition\", \"keyframes\"],\n \"docs\": \"https://github.com/tailwind-styled/tailwind-styled-v5/tree/main/packages/animate\",\n \"install\": \"npm install @tailwind-styled/plugin-animation@5.0.0\",\n \"integrity\": \"sha256-abc123\"\n },\n {\n \"name\": \"@tailwind-styled/plugin-typography\",\n \"description\": \"Prose and typography utilities — headings, body, code blocks, with dark mode\",\n \"version\": \"5.0.0\",\n \"tags\": [\"typography\", \"prose\", \"markdown\", \"content\"],\n \"docs\": \"https://github.com/tailwind-styled/tailwind-styled-v5/tree/main/docs/plugins\",\n \"install\": \"npm install @tailwind-styled/plugin-typography@5.0.0\",\n \"integrity\": \"sha256-def456\"\n },\n {\n \"name\": \"@tailwind-styled/plugin-forms\",\n \"description\": \"Form input styling helpers — reset, validation states, custom checkboxes/radios\",\n \"version\": \"5.0.0\",\n \"tags\": [\"forms\", \"inputs\", \"validation\", \"checkbox\", \"radio\"],\n \"docs\": \"https://github.com/tailwind-styled/tailwind-styled-v5/tree/main/docs/plugins\",\n \"install\": \"npm install @tailwind-styled/plugin-forms@5.0.0\",\n \"integrity\": \"sha256-ghi789\"\n },\n {\n \"name\": \"@tailwind-styled/plugin-container-queries\",\n \"description\": \"Container query utilities — @container breakpoints for component-level responsiveness\",\n \"version\": \"5.0.0\",\n \"tags\": [\"container-queries\", \"responsive\", \"layout\"],\n \"docs\": \"https://github.com/tailwind-styled/tailwind-styled-v5/tree/main/docs/plugins\",\n \"install\": \"npm install @tailwind-styled/plugin-container-queries@5.0.0\",\n \"integrity\": \"sha256-jkl012\"\n }\n ],\n \"community\": [\n {\n \"name\": \"tailwind-styled-animate\",\n \"description\": \"Community animation variants — bounce, pulse, wiggle, and more\",\n \"version\": \"0.1.0\",\n \"tags\": [\"animation\", \"community\"],\n \"author\": \"community\",\n \"install\": \"npm install tailwind-styled-animate\"\n },\n {\n \"name\": \"tailwind-styled-icons\",\n \"description\": \"SVG icon system integrated with tw() variant API\",\n \"version\": \"0.1.0\",\n \"tags\": [\"icons\", \"svg\", \"community\"],\n \"author\": \"community\",\n \"install\": \"npm install tailwind-styled-icons\"\n }\n ]\n}\n","import { spawnSync } from \"node:child_process\"\nimport { createHash } from \"node:crypto\"\nimport { existsSync, readFileSync } from \"node:fs\"\nimport { createRequire } from \"node:module\"\nimport { join, resolve } from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\n\n// ── Native bridge (lazy-loaded to avoid circular deps) ──────────────────────\ntype NativePluginRegistry = {\n pluginSearch: (pluginsJson: string, query: string) => string\n pluginValidateName: (name: string) => boolean\n pluginVerifyIntegrity: (content: string, expectedIntegrity: string) => boolean\n pluginSemverHasUpdate: (current: string, latest: string) => boolean\n pluginCheckAllUpdates: (installedJson: string, registryJson: string) => string\n}\nlet _native: NativePluginRegistry | null | undefined = undefined\nfunction getNative(): NativePluginRegistry | null {\n if (_native !== undefined) return _native\n try {\n const runtimeDir = typeof __dirname === \"string\" && __dirname.length > 0\n ? __dirname\n : typeof import.meta !== \"undefined\" && import.meta.url\n ? fileURLToPath(new URL(\".\", import.meta.url))\n : process.cwd()\n const req = createRequire(join(runtimeDir, \"noop.cjs\"))\n const _pa = `${process.platform}-${process.arch}`\n const _paGnu = _pa === \"linux-x64\" ? \"linux-x64-gnu\" : _pa === \"linux-arm64\" ? \"linux-arm64-gnu\" : _pa\n const candidates = [\n // npm install case: dist/../native/\n resolve(runtimeDir, \"..\", \"native\", \"tailwind-styled-native.node\"),\n resolve(runtimeDir, \"..\", \"native\", `tailwind-styled-native.${_pa}.node`),\n resolve(runtimeDir, \"..\", \"native\", `tailwind-styled-native.${_paGnu}.node`),\n resolve(runtimeDir, \"..\", \"native\", \"tailwind_styled_parser.node\"),\n // cwd fallback\n resolve(process.cwd(), \"native\", \"tailwind-styled-native.node\"),\n resolve(process.cwd(), \"native\", \"tailwind_styled_parser.node\"),\n // monorepo dev: 4-level up\n resolve(runtimeDir, \"..\", \"..\", \"..\", \"..\", \"native\", \"tailwind-styled-native.node\"),\n resolve(runtimeDir, \"..\", \"..\", \"..\", \"..\", \"native\", \"tailwind_styled_parser.node\"),\n // 3-level fallback\n resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", \"tailwind-styled-native.node\"),\n resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", \"tailwind_styled_parser.node\"),\n ]\n for (const c of candidates) {\n try {\n const mod = req(c) as Record<string, unknown>\n if (typeof mod?.pluginSearch === \"function\") {\n return (_native = mod as unknown as NativePluginRegistry)\n }\n } catch { /* continue */ }\n }\n } catch { /* ignore */ }\n return (_native = null)\n}\n\nconst PLUGIN_NAME_REGEX = /^(@[a-z0-9-]+\\/)?[a-z0-9-]+(@[0-9]+\\.[0-9]+\\.[0-9]+)?$/\n\nexport interface PluginInfo {\n name: string\n description: string\n version: string\n tags: string[]\n official?: boolean\n docs?: string\n install?: string\n integrity?: string\n}\n\ninterface RegistryData {\n version: string\n official: PluginInfo[]\n community: PluginInfo[]\n}\n\nexport interface InstallResult {\n plugin: string\n installed: boolean\n command: string\n exitCode: number\n}\n\nexport type PluginRegistryErrorCode =\n | \"INVALID_PLUGIN_NAME\"\n | \"PLUGIN_NOT_FOUND\"\n | \"EXTERNAL_CONFIRMATION_REQUIRED\"\n | \"INSTALL_COMMAND_FAILED\"\n | \"INSTALL_FAILED\"\n | \"NETWORK_ERROR\"\n | \"REGISTRY_LOAD_FAILED\"\n\nexport interface PluginRegistryErrorPayload {\n code: PluginRegistryErrorCode\n message: string\n context?: Record<string, unknown>\n}\n\nexport class PluginRegistryError extends Error {\n readonly code: PluginRegistryErrorCode\n readonly context?: Record<string, unknown>\n\n constructor(payload: PluginRegistryErrorPayload) {\n super(payload.message)\n this.name = \"PluginRegistryError\"\n this.code = payload.code\n this.context = payload.context\n }\n\n toObject(): PluginRegistryErrorPayload {\n return {\n code: this.code,\n message: this.message,\n context: this.context,\n }\n }\n}\n\nexport interface InstallOptions {\n dryRun?: boolean\n npmBin?: string\n allowExternal?: boolean\n confirmExternal?: boolean\n}\n\nexport interface RegistryOptions {\n registryUrl?: string\n}\n\nexport class PluginRegistry {\n private readonly plugins: PluginInfo[]\n private readonly registryVersion: string\n\n constructor(registryData?: RegistryData, options: RegistryOptions = {}) {\n if (options.registryUrl) {\n this.plugins = []\n this.registryVersion = \"0.0.0\"\n } else {\n const data = registryData\n const version = data?.version ?? \"4.2.0\"\n const official = (data?.official ?? []).map((item) => ({\n name: item.name,\n description: item.description,\n version: item.version,\n tags: [...item.tags],\n official: true,\n docs: item.docs,\n install: item.install,\n integrity: item.integrity,\n }))\n const community = (data?.community ?? []).map((item) => ({\n name: item.name,\n description: item.description,\n version: item.version,\n tags: [...item.tags],\n official: false,\n }))\n this.plugins = [...official, ...community]\n this.registryVersion = version\n }\n }\n\n static async loadFromUrl(url: string): Promise<PluginRegistry> {\n try {\n const response = await fetch(url)\n if (!response.ok) {\n throw new PluginRegistryError({\n code: \"NETWORK_ERROR\",\n message: `Failed to fetch registry: ${response.status} ${response.statusText}`,\n context: { url, status: response.status },\n })\n }\n const data = (await response.json()) as RegistryData\n return new PluginRegistry(data, { registryUrl: url })\n } catch (error) {\n if (error instanceof PluginRegistryError) throw error\n throw new PluginRegistryError({\n code: \"NETWORK_ERROR\",\n message: `Failed to load registry: ${error instanceof Error ? error.message : String(error)}`,\n context: { url },\n })\n }\n }\n\n getVersion(): string {\n return this.registryVersion\n }\n\n search(query: string): PluginInfo[] {\n const native = getNative()\n if (native) {\n return JSON.parse(native.pluginSearch(JSON.stringify(this.plugins), query)) as PluginInfo[]\n }\n const q = query.trim().toLowerCase()\n if (!q) return [...this.plugins]\n return this.plugins.filter((plugin) =>\n plugin.name.toLowerCase().includes(q) ||\n plugin.description.toLowerCase().includes(q) ||\n plugin.tags.some((tag) => tag.toLowerCase().includes(q))\n )\n }\n\n getAll(): PluginInfo[] {\n return [...this.plugins]\n }\n\n getByName(pluginName: string): PluginInfo | undefined {\n const nameWithoutVersion = pluginName.split(\"@\").slice(0, 2).join(\"@\")\n return this.plugins.find((plugin) => plugin.name === nameWithoutVersion)\n }\n\n install(pluginName: string, options: InstallOptions = {}): InstallResult {\n const npmBin = options.npmBin ?? process.env.TW_PLUGIN_NPM_BIN ?? \"npm\"\n\n const native = getNative()\n const isValidName = native\n ? native.pluginValidateName(pluginName)\n : PLUGIN_NAME_REGEX.test(pluginName)\n\n if (!isValidName) {\n throw new PluginRegistryError({\n code: \"INVALID_PLUGIN_NAME\",\n message: `Nama plugin tidak valid: '${pluginName}'.`,\n context: {\n pluginName,\n expectedPattern: String(PLUGIN_NAME_REGEX),\n },\n })\n }\n\n const knownPlugin = this.getByName(pluginName)\n const isExternal = !knownPlugin\n\n if (isExternal && !options.allowExternal) {\n throw new PluginRegistryError({\n code: \"PLUGIN_NOT_FOUND\",\n message: `Plugin '${pluginName}' tidak ditemukan di registry. Coba cari dengan 'tw-plugin search <keyword>'.`,\n context: {\n pluginName,\n allowExternal: false,\n },\n })\n }\n\n if (isExternal && options.allowExternal && !options.confirmExternal) {\n throw new PluginRegistryError({\n code: \"EXTERNAL_CONFIRMATION_REQUIRED\",\n message: `Plugin eksternal '${pluginName}' butuh konfirmasi. Jalankan ulang dengan --allow-external --yes.`,\n context: {\n pluginName,\n allowExternal: true,\n },\n })\n }\n\n const command = `${npmBin} install ${pluginName}`\n if (options.dryRun) {\n return { plugin: pluginName, installed: true, command, exitCode: 0 }\n }\n\n const child = spawnSync(npmBin, [\"install\", pluginName], { stdio: \"inherit\" })\n if (child.error) {\n throw new PluginRegistryError({\n code: \"INSTALL_COMMAND_FAILED\",\n message: `Gagal menjalankan perintah install: ${command}`,\n context: {\n pluginName,\n command,\n reason: child.error.message,\n },\n })\n }\n\n if (child.status !== 0) {\n throw new PluginRegistryError({\n code: \"INSTALL_FAILED\",\n message: `Install gagal (${child.status ?? 1}): ${command}`,\n context: {\n pluginName,\n command,\n exitCode: child.status ?? 1,\n },\n })\n }\n\n return {\n plugin: pluginName,\n installed: true,\n command,\n exitCode: 0,\n }\n }\n\n uninstall(\n pluginName: string,\n options: { dryRun?: boolean; npmBin?: string } = {}\n ): {\n plugin: string\n uninstalled: boolean\n command: string\n exitCode: number\n } {\n const npmBin = options.npmBin ?? process.env.TW_PLUGIN_NPM_BIN ?? \"npm\"\n const command = `${npmBin} uninstall ${pluginName}`\n\n if (options.dryRun) {\n return { plugin: pluginName, uninstalled: true, command, exitCode: 0 }\n }\n\n const child = spawnSync(npmBin, [\"uninstall\", pluginName], { stdio: \"inherit\" })\n if (child.status !== 0 && child.status !== null) {\n throw new PluginRegistryError({\n code: \"INSTALL_FAILED\",\n message: `Uninstall gagal (${child.status}): ${command}`,\n context: { pluginName, command, exitCode: child.status },\n })\n }\n\n return {\n plugin: pluginName,\n uninstalled: true,\n command,\n exitCode: child.status ?? 0,\n }\n }\n\n verifyIntegrity(pluginName: string): { ok: boolean; reason?: string } {\n const plugin = this.getByName(pluginName)\n if (!plugin) return { ok: false, reason: `Plugin '${pluginName}' not in registry` }\n if (!plugin.integrity) {\n return { ok: true, reason: \"no checksum registered (skip)\" }\n }\n try {\n const pkgPath = join(process.cwd(), \"node_modules\", pluginName, \"package.json\")\n if (!existsSync(pkgPath)) return { ok: false, reason: \"plugin not installed\" }\n const content = readFileSync(pkgPath, \"utf8\")\n const native = getNative()\n const ok = native\n ? native.pluginVerifyIntegrity(content, plugin.integrity!)\n : (() => {\n const hash = `sha256-${createHash(\"sha256\").update(content).digest(\"base64\")}`\n return hash === plugin.integrity\n })()\n return ok ? { ok: true } : { ok: false, reason: `Integrity mismatch: expected ${plugin.integrity}` }\n } catch (e: unknown) {\n return {\n ok: false,\n reason: `Integrity check failed: ${e instanceof Error ? e.message : String(e)}`,\n }\n }\n }\n\n checkForUpdate(pluginName: string): {\n hasUpdate: boolean\n current?: string\n latest?: string\n error?: string\n } {\n const plugin = this.getByName(pluginName)\n if (!plugin) return { hasUpdate: false, error: `Plugin '${pluginName}' not in registry` }\n try {\n const pkgPath = join(process.cwd(), \"node_modules\", pluginName, \"package.json\")\n if (!existsSync(pkgPath)) return { hasUpdate: false, error: \"plugin not installed\" }\n const current = JSON.parse(readFileSync(pkgPath, \"utf8\")).version ?? \"0.0.0\"\n const latest = plugin.version\n const native = getNative()\n const hasUpdate = native\n ? native.pluginSemverHasUpdate(current as string, latest)\n : (() => {\n const parseV = (v: string) => v.replace(/[^0-9.]/g, \"\").split(\".\").map(Number)\n const [ca, cb, cc] = parseV(current as string)\n const [la, lb, lc] = parseV(latest)\n return la > ca || (la === ca && lb > cb) || (la === ca && lb === cb && lc > cc)\n })()\n return { hasUpdate, current: current as string, latest }\n } catch (e: unknown) {\n return {\n hasUpdate: false,\n error: `Update check failed: ${e instanceof Error ? e.message : String(e)}`,\n }\n }\n }\n\n checkAllUpdates(): Array<{\n name: string\n hasUpdate: boolean\n current?: string\n latest?: string\n error?: string\n }> {\n return this.plugins.map((p) => ({ name: p.name, ...this.checkForUpdate(p.name) }))\n }\n}\n\nconst _state = { defaultRegistry: null as PluginRegistry | null }\n\nexport function getRegistry(): PluginRegistry {\n if (!_state.defaultRegistry) {\n const registryData = require(\"../registry.json\") as RegistryData\n _state.defaultRegistry = new PluginRegistry(registryData)\n }\n return _state.defaultRegistry\n}\n\nexport const registry = getRegistry()"]}
|
|
1
|
+
{"version":3,"sources":["../packages/domain/plugin-registry/registry.json","../src/umbrella/plugin-registry.ts","../packages/domain/plugin-registry/src/index.ts"],"sourcesContent":["{\n \"version\": \"5.0.0\",\n \"updatedAt\": \"2026-03-23\",\n \"official\": [\n {\n \"name\": \"@tailwind-styled/plugin-animation\",\n \"description\": \"Animation presets and keyframes — enter/exit transitions, spring physics, scroll-triggered\",\n \"version\": \"5.0.0\",\n \"tags\": [\"animation\", \"motion\", \"transition\", \"keyframes\"],\n \"docs\": \"https://github.com/tailwind-styled/tailwind-styled-v5/tree/main/packages/animate\",\n \"install\": \"npm install @tailwind-styled/plugin-animation@5.0.0\",\n \"integrity\": \"sha256-abc123\"\n },\n {\n \"name\": \"@tailwind-styled/plugin-typography\",\n \"description\": \"Prose and typography utilities — headings, body, code blocks, with dark mode\",\n \"version\": \"5.0.0\",\n \"tags\": [\"typography\", \"prose\", \"markdown\", \"content\"],\n \"docs\": \"https://github.com/tailwind-styled/tailwind-styled-v5/tree/main/docs/plugins\",\n \"install\": \"npm install @tailwind-styled/plugin-typography@5.0.0\",\n \"integrity\": \"sha256-def456\"\n },\n {\n \"name\": \"@tailwind-styled/plugin-forms\",\n \"description\": \"Form input styling helpers — reset, validation states, custom checkboxes/radios\",\n \"version\": \"5.0.0\",\n \"tags\": [\"forms\", \"inputs\", \"validation\", \"checkbox\", \"radio\"],\n \"docs\": \"https://github.com/tailwind-styled/tailwind-styled-v5/tree/main/docs/plugins\",\n \"install\": \"npm install @tailwind-styled/plugin-forms@5.0.0\",\n \"integrity\": \"sha256-ghi789\"\n },\n {\n \"name\": \"@tailwind-styled/plugin-container-queries\",\n \"description\": \"Container query utilities — @container breakpoints for component-level responsiveness\",\n \"version\": \"5.0.0\",\n \"tags\": [\"container-queries\", \"responsive\", \"layout\"],\n \"docs\": \"https://github.com/tailwind-styled/tailwind-styled-v5/tree/main/docs/plugins\",\n \"install\": \"npm install @tailwind-styled/plugin-container-queries@5.0.0\",\n \"integrity\": \"sha256-jkl012\"\n }\n ],\n \"community\": [\n {\n \"name\": \"tailwind-styled-animate\",\n \"description\": \"Community animation variants — bounce, pulse, wiggle, and more\",\n \"version\": \"0.1.0\",\n \"tags\": [\"animation\", \"community\"],\n \"author\": \"community\",\n \"install\": \"npm install tailwind-styled-animate\"\n },\n {\n \"name\": \"tailwind-styled-icons\",\n \"description\": \"SVG icon system integrated with tw() variant API\",\n \"version\": \"0.1.0\",\n \"tags\": [\"icons\", \"svg\", \"community\"],\n \"author\": \"community\",\n \"install\": \"npm install tailwind-styled-icons\"\n }\n ]\n}\n","export * from \"@tailwind-styled/plugin-registry\"\n","import { spawnSync } from \"node:child_process\"\nimport { existsSync, readFileSync } from \"node:fs\"\nimport { createRequire } from \"node:module\"\nimport { join, resolve } from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\n\n// ── Native bridge (lazy-loaded to avoid circular deps) ──────────────────────\ntype NativePluginRegistry = {\n pluginSearch: (pluginsJson: string, query: string) => string\n pluginValidateName: (name: string) => boolean\n pluginVerifyIntegrity: (content: string, expectedIntegrity: string) => boolean\n pluginSemverHasUpdate: (current: string, latest: string) => boolean\n pluginCheckAllUpdates: (installedJson: string, registryJson: string) => string\n}\nlet _native: NativePluginRegistry | null | undefined = undefined\nfunction getNative(): NativePluginRegistry | null {\n if (_native !== undefined) return _native\n try {\n const runtimeDir = typeof __dirname === \"string\" && __dirname.length > 0\n ? __dirname\n : typeof import.meta !== \"undefined\" && import.meta.url\n ? fileURLToPath(new URL(\".\", import.meta.url))\n : process.cwd()\n const req = createRequire(join(runtimeDir, \"noop.cjs\"))\n const _pa = `${process.platform}-${process.arch}`\n const _paGnu = _pa === \"linux-x64\" ? \"linux-x64-gnu\" : _pa === \"linux-arm64\" ? \"linux-arm64-gnu\" : _pa\n const candidates = [\n // npm install case: dist/../native/\n resolve(runtimeDir, \"..\", \"native\", \"tailwind-styled-native.node\"),\n resolve(runtimeDir, \"..\", \"native\", `tailwind-styled-native.${_pa}.node`),\n resolve(runtimeDir, \"..\", \"native\", `tailwind-styled-native.${_paGnu}.node`),\n resolve(runtimeDir, \"..\", \"native\", \"tailwind_styled_parser.node\"),\n // cwd fallback\n resolve(process.cwd(), \"native\", \"tailwind-styled-native.node\"),\n resolve(process.cwd(), \"native\", \"tailwind_styled_parser.node\"),\n // monorepo dev: 4-level up\n resolve(runtimeDir, \"..\", \"..\", \"..\", \"..\", \"native\", \"tailwind-styled-native.node\"),\n resolve(runtimeDir, \"..\", \"..\", \"..\", \"..\", \"native\", \"tailwind_styled_parser.node\"),\n // 3-level fallback\n resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", \"tailwind-styled-native.node\"),\n resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", \"tailwind_styled_parser.node\"),\n ]\n for (const c of candidates) {\n try {\n const mod = req(c) as Record<string, unknown>\n if (typeof mod?.pluginSearch === \"function\") {\n return (_native = mod as unknown as NativePluginRegistry)\n }\n } catch { /* continue */ }\n }\n } catch { /* ignore */ }\n return (_native = null)\n}\n\nconst NATIVE_UNAVAILABLE_MESSAGE =\n \"[tailwind-styled/plugin-registry] Native binding is required but not available.\\n\" +\n \"Please ensure you have run: npm run build:rust\"\n\n/**\n * Native-only accessor. Throws if the Rust binding is missing.\n * The TS layer is a thin wrapper — no JS fallbacks (native-first philosophy).\n */\nfunction requireNative(): NativePluginRegistry {\n const native = getNative()\n if (!native) throw new Error(NATIVE_UNAVAILABLE_MESSAGE)\n return native\n}\n\nconst PLUGIN_NAME_REGEX = /^(@[a-z0-9-]+\\/)?[a-z0-9-]+(@[0-9]+\\.[0-9]+\\.[0-9]+)?$/\n\nexport interface PluginInfo {\n name: string\n description: string\n version: string\n tags: string[]\n official?: boolean\n docs?: string\n install?: string\n integrity?: string\n}\n\ninterface RegistryData {\n version: string\n official: PluginInfo[]\n community: PluginInfo[]\n}\n\nexport interface InstallResult {\n plugin: string\n installed: boolean\n command: string\n exitCode: number\n}\n\nexport type PluginRegistryErrorCode =\n | \"INVALID_PLUGIN_NAME\"\n | \"PLUGIN_NOT_FOUND\"\n | \"EXTERNAL_CONFIRMATION_REQUIRED\"\n | \"INSTALL_COMMAND_FAILED\"\n | \"INSTALL_FAILED\"\n | \"NETWORK_ERROR\"\n | \"REGISTRY_LOAD_FAILED\"\n\nexport interface PluginRegistryErrorPayload {\n code: PluginRegistryErrorCode\n message: string\n context?: Record<string, unknown>\n}\n\nexport class PluginRegistryError extends Error {\n readonly code: PluginRegistryErrorCode\n readonly context?: Record<string, unknown>\n\n constructor(payload: PluginRegistryErrorPayload) {\n super(payload.message)\n this.name = \"PluginRegistryError\"\n this.code = payload.code\n this.context = payload.context\n }\n\n toObject(): PluginRegistryErrorPayload {\n return {\n code: this.code,\n message: this.message,\n context: this.context,\n }\n }\n}\n\nexport interface InstallOptions {\n dryRun?: boolean\n npmBin?: string\n allowExternal?: boolean\n confirmExternal?: boolean\n}\n\nexport interface RegistryOptions {\n registryUrl?: string\n}\n\nexport class PluginRegistry {\n private readonly plugins: PluginInfo[]\n private readonly registryVersion: string\n\n constructor(registryData?: RegistryData, options: RegistryOptions = {}) {\n if (options.registryUrl) {\n this.plugins = []\n this.registryVersion = \"0.0.0\"\n } else {\n const data = registryData\n const version = data?.version ?? \"4.2.0\"\n const official = (data?.official ?? []).map((item) => ({\n name: item.name,\n description: item.description,\n version: item.version,\n tags: [...item.tags],\n official: true,\n docs: item.docs,\n install: item.install,\n integrity: item.integrity,\n }))\n const community = (data?.community ?? []).map((item) => ({\n name: item.name,\n description: item.description,\n version: item.version,\n tags: [...item.tags],\n official: false,\n }))\n this.plugins = [...official, ...community]\n this.registryVersion = version\n }\n }\n\n static async loadFromUrl(url: string): Promise<PluginRegistry> {\n try {\n const response = await fetch(url)\n if (!response.ok) {\n throw new PluginRegistryError({\n code: \"NETWORK_ERROR\",\n message: `Failed to fetch registry: ${response.status} ${response.statusText}`,\n context: { url, status: response.status },\n })\n }\n const data = (await response.json()) as RegistryData\n return new PluginRegistry(data, { registryUrl: url })\n } catch (error) {\n if (error instanceof PluginRegistryError) throw error\n throw new PluginRegistryError({\n code: \"NETWORK_ERROR\",\n message: `Failed to load registry: ${error instanceof Error ? error.message : String(error)}`,\n context: { url },\n })\n }\n }\n\n getVersion(): string {\n return this.registryVersion\n }\n\n search(query: string): PluginInfo[] {\n const native = requireNative()\n return JSON.parse(native.pluginSearch(JSON.stringify(this.plugins), query)) as PluginInfo[]\n }\n\n getAll(): PluginInfo[] {\n return [...this.plugins]\n }\n\n getByName(pluginName: string): PluginInfo | undefined {\n const nameWithoutVersion = pluginName.split(\"@\").slice(0, 2).join(\"@\")\n return this.plugins.find((plugin) => plugin.name === nameWithoutVersion)\n }\n\n install(pluginName: string, options: InstallOptions = {}): InstallResult {\n const npmBin = options.npmBin ?? process.env.TW_PLUGIN_NPM_BIN ?? \"npm\"\n\n const native = requireNative()\n const isValidName = native.pluginValidateName(pluginName)\n\n if (!isValidName) {\n throw new PluginRegistryError({\n code: \"INVALID_PLUGIN_NAME\",\n message: `Nama plugin tidak valid: '${pluginName}'.`,\n context: {\n pluginName,\n expectedPattern: String(PLUGIN_NAME_REGEX),\n },\n })\n }\n\n const knownPlugin = this.getByName(pluginName)\n const isExternal = !knownPlugin\n\n if (isExternal && !options.allowExternal) {\n throw new PluginRegistryError({\n code: \"PLUGIN_NOT_FOUND\",\n message: `Plugin '${pluginName}' tidak ditemukan di registry. Coba cari dengan 'tw-plugin search <keyword>'.`,\n context: {\n pluginName,\n allowExternal: false,\n },\n })\n }\n\n if (isExternal && options.allowExternal && !options.confirmExternal) {\n throw new PluginRegistryError({\n code: \"EXTERNAL_CONFIRMATION_REQUIRED\",\n message: `Plugin eksternal '${pluginName}' butuh konfirmasi. Jalankan ulang dengan --allow-external --yes.`,\n context: {\n pluginName,\n allowExternal: true,\n },\n })\n }\n\n const command = `${npmBin} install ${pluginName}`\n if (options.dryRun) {\n return { plugin: pluginName, installed: true, command, exitCode: 0 }\n }\n\n const child = spawnSync(npmBin, [\"install\", pluginName], { stdio: \"inherit\" })\n if (child.error) {\n throw new PluginRegistryError({\n code: \"INSTALL_COMMAND_FAILED\",\n message: `Gagal menjalankan perintah install: ${command}`,\n context: {\n pluginName,\n command,\n reason: child.error.message,\n },\n })\n }\n\n if (child.status !== 0) {\n throw new PluginRegistryError({\n code: \"INSTALL_FAILED\",\n message: `Install gagal (${child.status ?? 1}): ${command}`,\n context: {\n pluginName,\n command,\n exitCode: child.status ?? 1,\n },\n })\n }\n\n return {\n plugin: pluginName,\n installed: true,\n command,\n exitCode: 0,\n }\n }\n\n uninstall(\n pluginName: string,\n options: { dryRun?: boolean; npmBin?: string } = {}\n ): {\n plugin: string\n uninstalled: boolean\n command: string\n exitCode: number\n } {\n const npmBin = options.npmBin ?? process.env.TW_PLUGIN_NPM_BIN ?? \"npm\"\n const command = `${npmBin} uninstall ${pluginName}`\n\n if (options.dryRun) {\n return { plugin: pluginName, uninstalled: true, command, exitCode: 0 }\n }\n\n const child = spawnSync(npmBin, [\"uninstall\", pluginName], { stdio: \"inherit\" })\n if (child.status !== 0 && child.status !== null) {\n throw new PluginRegistryError({\n code: \"INSTALL_FAILED\",\n message: `Uninstall gagal (${child.status}): ${command}`,\n context: { pluginName, command, exitCode: child.status },\n })\n }\n\n return {\n plugin: pluginName,\n uninstalled: true,\n command,\n exitCode: child.status ?? 0,\n }\n }\n\n verifyIntegrity(pluginName: string): { ok: boolean; reason?: string } {\n const plugin = this.getByName(pluginName)\n if (!plugin) return { ok: false, reason: `Plugin '${pluginName}' not in registry` }\n if (!plugin.integrity) {\n return { ok: true, reason: \"no checksum registered (skip)\" }\n }\n try {\n const pkgPath = join(process.cwd(), \"node_modules\", pluginName, \"package.json\")\n if (!existsSync(pkgPath)) return { ok: false, reason: \"plugin not installed\" }\n const content = readFileSync(pkgPath, \"utf8\")\n const native = requireNative()\n const ok = native.pluginVerifyIntegrity(content, plugin.integrity!)\n return ok ? { ok: true } : { ok: false, reason: `Integrity mismatch: expected ${plugin.integrity}` }\n } catch (e: unknown) {\n return {\n ok: false,\n reason: `Integrity check failed: ${e instanceof Error ? e.message : String(e)}`,\n }\n }\n }\n\n checkForUpdate(pluginName: string): {\n hasUpdate: boolean\n current?: string\n latest?: string\n error?: string\n } {\n const plugin = this.getByName(pluginName)\n if (!plugin) return { hasUpdate: false, error: `Plugin '${pluginName}' not in registry` }\n try {\n const pkgPath = join(process.cwd(), \"node_modules\", pluginName, \"package.json\")\n if (!existsSync(pkgPath)) return { hasUpdate: false, error: \"plugin not installed\" }\n const current = JSON.parse(readFileSync(pkgPath, \"utf8\")).version ?? \"0.0.0\"\n const latest = plugin.version\n const native = requireNative()\n const hasUpdate = native.pluginSemverHasUpdate(current as string, latest)\n return { hasUpdate, current: current as string, latest }\n } catch (e: unknown) {\n return {\n hasUpdate: false,\n error: `Update check failed: ${e instanceof Error ? e.message : String(e)}`,\n }\n }\n }\n\n checkAllUpdates(): Array<{\n name: string\n hasUpdate: boolean\n current?: string\n latest?: string\n error?: string\n }> {\n type UpdateResult = {\n name: string\n hasUpdate: boolean\n current?: string\n latest?: string\n error?: string\n }\n const native = requireNative()\n\n // FS I/O stays in JS — gather installed versions for every registry plugin.\n const installed: Array<{ name: string; version: string }> = []\n const byName = new Map<string, UpdateResult>()\n for (const p of this.plugins) {\n try {\n const pkgPath = join(process.cwd(), \"node_modules\", p.name, \"package.json\")\n if (!existsSync(pkgPath)) {\n byName.set(p.name, { name: p.name, hasUpdate: false, error: \"plugin not installed\" })\n continue\n }\n const version = JSON.parse(readFileSync(pkgPath, \"utf8\")).version ?? \"0.0.0\"\n installed.push({ name: p.name, version: version as string })\n } catch (e: unknown) {\n byName.set(p.name, {\n name: p.name,\n hasUpdate: false,\n error: `Update check failed: ${e instanceof Error ? e.message : String(e)}`,\n })\n }\n }\n\n // Single native batch call does all semver comparisons (1 FFI crossing, not N).\n const results = JSON.parse(\n native.pluginCheckAllUpdates(JSON.stringify(installed), JSON.stringify(this.plugins))\n ) as UpdateResult[]\n for (const r of results) byName.set(r.name, r)\n\n // Preserve registry order.\n return this.plugins.map((p) => byName.get(p.name)).filter((r): r is UpdateResult => r !== undefined)\n }\n}\n\nconst _state = { defaultRegistry: null as PluginRegistry | null }\n\nexport function getRegistry(): PluginRegistry {\n if (!_state.defaultRegistry) {\n const registryData = require(\"../registry.json\") as RegistryData\n _state.defaultRegistry = new PluginRegistry(registryData)\n }\n return _state.defaultRegistry\n}\n\nexport const registry = getRegistry()"],"mappings":"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","names":["exports","module"]}
|
package/dist/plugin-registry.mjs
CHANGED
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
import { spawnSync } from 'child_process';
|
|
2
|
-
import { createHash } from 'crypto';
|
|
3
|
-
import { existsSync, readFileSync } from 'fs';
|
|
4
|
-
import { createRequire } from 'module';
|
|
5
|
-
import { join, resolve } from 'path';
|
|
6
|
-
import { fileURLToPath } from 'url';
|
|
7
|
-
|
|
8
1
|
/* tailwind-styled-v4 v5.0.4 | MIT | https://github.com/dictionar32/tailwind-styled-v4 */
|
|
9
2
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
10
3
|
var __commonJS = (cb, mod) => function __require() {
|
|
@@ -13,7 +6,7 @@ var __commonJS = (cb, mod) => function __require() {
|
|
|
13
6
|
|
|
14
7
|
// packages/domain/plugin-registry/registry.json
|
|
15
8
|
var require_registry = __commonJS({
|
|
16
|
-
"packages/domain/plugin-registry/registry.json"(exports
|
|
9
|
+
"packages/domain/plugin-registry/registry.json"(exports, module) {
|
|
17
10
|
module.exports = {
|
|
18
11
|
version: "5.0.0",
|
|
19
12
|
updatedAt: "2026-03-23",
|
|
@@ -76,6 +69,13 @@ var require_registry = __commonJS({
|
|
|
76
69
|
};
|
|
77
70
|
}
|
|
78
71
|
});
|
|
72
|
+
|
|
73
|
+
// packages/domain/plugin-registry/src/index.ts
|
|
74
|
+
import { spawnSync } from "child_process";
|
|
75
|
+
import { existsSync, readFileSync } from "fs";
|
|
76
|
+
import { createRequire } from "module";
|
|
77
|
+
import { join, resolve } from "path";
|
|
78
|
+
import { fileURLToPath } from "url";
|
|
79
79
|
var _native = void 0;
|
|
80
80
|
function getNative() {
|
|
81
81
|
if (_native !== void 0) return _native;
|
|
@@ -113,6 +113,12 @@ function getNative() {
|
|
|
113
113
|
}
|
|
114
114
|
return _native = null;
|
|
115
115
|
}
|
|
116
|
+
var NATIVE_UNAVAILABLE_MESSAGE = "[tailwind-styled/plugin-registry] Native binding is required but not available.\nPlease ensure you have run: npm run build:rust";
|
|
117
|
+
function requireNative() {
|
|
118
|
+
const native = getNative();
|
|
119
|
+
if (!native) throw new Error(NATIVE_UNAVAILABLE_MESSAGE);
|
|
120
|
+
return native;
|
|
121
|
+
}
|
|
116
122
|
var PLUGIN_NAME_REGEX = /^(@[a-z0-9-]+\/)?[a-z0-9-]+(@[0-9]+\.[0-9]+\.[0-9]+)?$/;
|
|
117
123
|
var PluginRegistryError = class extends Error {
|
|
118
124
|
code;
|
|
@@ -187,15 +193,8 @@ var PluginRegistry = class _PluginRegistry {
|
|
|
187
193
|
return this.registryVersion;
|
|
188
194
|
}
|
|
189
195
|
search(query) {
|
|
190
|
-
const native =
|
|
191
|
-
|
|
192
|
-
return JSON.parse(native.pluginSearch(JSON.stringify(this.plugins), query));
|
|
193
|
-
}
|
|
194
|
-
const q = query.trim().toLowerCase();
|
|
195
|
-
if (!q) return [...this.plugins];
|
|
196
|
-
return this.plugins.filter(
|
|
197
|
-
(plugin) => plugin.name.toLowerCase().includes(q) || plugin.description.toLowerCase().includes(q) || plugin.tags.some((tag) => tag.toLowerCase().includes(q))
|
|
198
|
-
);
|
|
196
|
+
const native = requireNative();
|
|
197
|
+
return JSON.parse(native.pluginSearch(JSON.stringify(this.plugins), query));
|
|
199
198
|
}
|
|
200
199
|
getAll() {
|
|
201
200
|
return [...this.plugins];
|
|
@@ -206,8 +205,8 @@ var PluginRegistry = class _PluginRegistry {
|
|
|
206
205
|
}
|
|
207
206
|
install(pluginName, options = {}) {
|
|
208
207
|
const npmBin = options.npmBin ?? process.env.TW_PLUGIN_NPM_BIN ?? "npm";
|
|
209
|
-
const native =
|
|
210
|
-
const isValidName = native
|
|
208
|
+
const native = requireNative();
|
|
209
|
+
const isValidName = native.pluginValidateName(pluginName);
|
|
211
210
|
if (!isValidName) {
|
|
212
211
|
throw new PluginRegistryError({
|
|
213
212
|
code: "INVALID_PLUGIN_NAME",
|
|
@@ -305,11 +304,8 @@ var PluginRegistry = class _PluginRegistry {
|
|
|
305
304
|
const pkgPath = join(process.cwd(), "node_modules", pluginName, "package.json");
|
|
306
305
|
if (!existsSync(pkgPath)) return { ok: false, reason: "plugin not installed" };
|
|
307
306
|
const content = readFileSync(pkgPath, "utf8");
|
|
308
|
-
const native =
|
|
309
|
-
const ok = native
|
|
310
|
-
const hash = `sha256-${createHash("sha256").update(content).digest("base64")}`;
|
|
311
|
-
return hash === plugin.integrity;
|
|
312
|
-
})();
|
|
307
|
+
const native = requireNative();
|
|
308
|
+
const ok = native.pluginVerifyIntegrity(content, plugin.integrity);
|
|
313
309
|
return ok ? { ok: true } : { ok: false, reason: `Integrity mismatch: expected ${plugin.integrity}` };
|
|
314
310
|
} catch (e) {
|
|
315
311
|
return {
|
|
@@ -326,13 +322,8 @@ var PluginRegistry = class _PluginRegistry {
|
|
|
326
322
|
if (!existsSync(pkgPath)) return { hasUpdate: false, error: "plugin not installed" };
|
|
327
323
|
const current = JSON.parse(readFileSync(pkgPath, "utf8")).version ?? "0.0.0";
|
|
328
324
|
const latest = plugin.version;
|
|
329
|
-
const native =
|
|
330
|
-
const hasUpdate = native
|
|
331
|
-
const parseV = (v) => v.replace(/[^0-9.]/g, "").split(".").map(Number);
|
|
332
|
-
const [ca, cb, cc] = parseV(current);
|
|
333
|
-
const [la, lb, lc] = parseV(latest);
|
|
334
|
-
return la > ca || la === ca && lb > cb || la === ca && lb === cb && lc > cc;
|
|
335
|
-
})();
|
|
325
|
+
const native = requireNative();
|
|
326
|
+
const hasUpdate = native.pluginSemverHasUpdate(current, latest);
|
|
336
327
|
return { hasUpdate, current, latest };
|
|
337
328
|
} catch (e) {
|
|
338
329
|
return {
|
|
@@ -342,7 +333,31 @@ var PluginRegistry = class _PluginRegistry {
|
|
|
342
333
|
}
|
|
343
334
|
}
|
|
344
335
|
checkAllUpdates() {
|
|
345
|
-
|
|
336
|
+
const native = requireNative();
|
|
337
|
+
const installed = [];
|
|
338
|
+
const byName = /* @__PURE__ */ new Map();
|
|
339
|
+
for (const p of this.plugins) {
|
|
340
|
+
try {
|
|
341
|
+
const pkgPath = join(process.cwd(), "node_modules", p.name, "package.json");
|
|
342
|
+
if (!existsSync(pkgPath)) {
|
|
343
|
+
byName.set(p.name, { name: p.name, hasUpdate: false, error: "plugin not installed" });
|
|
344
|
+
continue;
|
|
345
|
+
}
|
|
346
|
+
const version = JSON.parse(readFileSync(pkgPath, "utf8")).version ?? "0.0.0";
|
|
347
|
+
installed.push({ name: p.name, version });
|
|
348
|
+
} catch (e) {
|
|
349
|
+
byName.set(p.name, {
|
|
350
|
+
name: p.name,
|
|
351
|
+
hasUpdate: false,
|
|
352
|
+
error: `Update check failed: ${e instanceof Error ? e.message : String(e)}`
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
const results = JSON.parse(
|
|
357
|
+
native.pluginCheckAllUpdates(JSON.stringify(installed), JSON.stringify(this.plugins))
|
|
358
|
+
);
|
|
359
|
+
for (const r of results) byName.set(r.name, r);
|
|
360
|
+
return this.plugins.map((p) => byName.get(p.name)).filter((r) => r !== void 0);
|
|
346
361
|
}
|
|
347
362
|
};
|
|
348
363
|
var _state = { defaultRegistry: null };
|
|
@@ -354,7 +369,10 @@ function getRegistry() {
|
|
|
354
369
|
return _state.defaultRegistry;
|
|
355
370
|
}
|
|
356
371
|
var registry = getRegistry();
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
372
|
+
export {
|
|
373
|
+
PluginRegistry,
|
|
374
|
+
PluginRegistryError,
|
|
375
|
+
getRegistry,
|
|
376
|
+
registry
|
|
377
|
+
};
|
|
360
378
|
//# sourceMappingURL=plugin-registry.mjs.map
|