@coffer-org/devkit 1.1.0

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.
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env node
2
+ /** coffer-plugin — build/publish-інструмент для standalone schema-плагінів. */
3
+ import { execFileSync } from 'node:child_process';
4
+ import { argv } from 'node:process';
5
+ import { pathToFileURL } from 'node:url';
6
+ import { swapToDist, swapToSrc } from './swap.js';
7
+ import { buildWeb } from './web-build.js';
8
+ function build() {
9
+ // Звичайний tsc (не -b): типи @coffer-org/sdk — з node_modules/.../dist/*.d.ts.
10
+ execFileSync('npx', ['tsc', '-p', 'tsconfig.build.json'], { stdio: 'inherit' });
11
+ }
12
+ /** Schema (tsc) → web bundle (Vite lib mode, no-op для schema-only плагінів). */
13
+ async function buildAll() {
14
+ build();
15
+ await buildWeb();
16
+ }
17
+ async function main() {
18
+ const cmd = argv[2];
19
+ switch (cmd) {
20
+ case 'build':
21
+ await buildAll();
22
+ break;
23
+ case 'prepack':
24
+ await buildAll();
25
+ swapToDist();
26
+ break;
27
+ case 'postpack':
28
+ swapToSrc();
29
+ break;
30
+ default:
31
+ console.error('usage: coffer-plugin build | prepack | postpack');
32
+ process.exit(1);
33
+ }
34
+ }
35
+ // Виконувати ЛИШЕ як запущений bin, не при import (інакше скан discovery, що
36
+ // випадково імпортує цей пакет, тригерив би CLI + process.exit).
37
+ if (argv[1] && import.meta.url === pathToFileURL(argv[1]).href) {
38
+ main().catch((e) => {
39
+ console.error(e);
40
+ process.exit(1);
41
+ });
42
+ }
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,+EAA+E;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,SAAS,KAAK;IACZ,gFAAgF;IAChF,YAAY,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,qBAAqB,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AAClF,CAAC;AAED,iFAAiF;AACjF,KAAK,UAAU,QAAQ;IACrB,KAAK,EAAE,CAAC;IACR,MAAM,QAAQ,EAAE,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,OAAO;YACV,MAAM,QAAQ,EAAE,CAAC;YACjB,MAAM;QACR,KAAK,SAAS;YACZ,MAAM,QAAQ,EAAE,CAAC;YACjB,UAAU,EAAE,CAAC;YACb,MAAM;QACR,KAAK,UAAU;YACb,SAAS,EAAE,CAAC;YACZ,MAAM;QACR;YACE,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,iEAAiE;AACjE,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/D,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;QAC1B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
package/dist/swap.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export declare function swapToDist(cwd?: string): void;
2
+ export declare function swapToSrc(cwd?: string): void;
3
+ //# sourceMappingURL=swap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../src/swap.ts"],"names":[],"mappings":"AAMA,wBAAgB,UAAU,CAAC,GAAG,SAAM,GAAG,IAAI,CAY1C;AAED,wBAAgB,SAAS,CAAC,GAAG,SAAM,GAAG,IAAI,CAMzC"}
package/dist/swap.js ADDED
@@ -0,0 +1,26 @@
1
+ /** Підміна package.json exports між dev (src) і publish (dist) формами. */
2
+ import { readFileSync, writeFileSync, existsSync, rmSync, copyFileSync } from 'node:fs';
3
+ const PKG = 'package.json';
4
+ const BAK = '.package.json.orig';
5
+ export function swapToDist(cwd = '.') {
6
+ const pkg = `${cwd}/${PKG}`;
7
+ copyFileSync(pkg, `${cwd}/${BAK}`);
8
+ const j = JSON.parse(readFileSync(pkg, 'utf8'));
9
+ if (!j.distExports)
10
+ throw new Error('[coffer-plugin] немає distExports у package.json');
11
+ j.exports = j.distExports;
12
+ delete j.distExports;
13
+ if (j.distBin) {
14
+ j.bin = j.distBin;
15
+ delete j.distBin;
16
+ }
17
+ writeFileSync(pkg, JSON.stringify(j, null, 2) + '\n');
18
+ }
19
+ export function swapToSrc(cwd = '.') {
20
+ const bak = `${cwd}/${BAK}`;
21
+ if (existsSync(bak)) {
22
+ copyFileSync(bak, `${cwd}/${PKG}`);
23
+ rmSync(bak);
24
+ }
25
+ }
26
+ //# sourceMappingURL=swap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swap.js","sourceRoot":"","sources":["../src/swap.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAExF,MAAM,GAAG,GAAG,cAAc,CAAC;AAC3B,MAAM,GAAG,GAAG,oBAAoB,CAAC;AAEjC,MAAM,UAAU,UAAU,CAAC,GAAG,GAAG,GAAG;IAClC,MAAM,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;IAC5B,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,IAAI,CAAC,CAAC,CAAC,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACxF,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC;IAC1B,OAAO,CAAC,CAAC,WAAW,CAAC;IACrB,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;QAClB,OAAO,CAAC,CAAC,OAAO,CAAC;IACnB,CAAC;IACD,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAG,GAAG,GAAG;IACjC,MAAM,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;IAC5B,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { InlineConfig } from 'vite';
2
+ /** Pure config builder (testable). Plugin web bundle: ESM lib, vendor externals,
3
+ * Tailwind scanning only this plugin's src → self-contained dist/web.css. */
4
+ export declare function buildViteLibConfig(root: string): InlineConfig;
5
+ export declare function buildWeb(root?: string): Promise<void>;
6
+ //# sourceMappingURL=web-build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-build.d.ts","sourceRoot":"","sources":["../src/web-build.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAOzC;8EAC8E;AAC9E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAc7D;AAED,wBAAsB,QAAQ,CAAC,IAAI,SAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQlE"}
@@ -0,0 +1,34 @@
1
+ import { join } from 'node:path';
2
+ import { existsSync } from 'node:fs';
3
+ // Vendor singletons — kept external so plugins resolve them to the host via the
4
+ // importmap instead of double-bundling. Source of truth: @coffer-org/web-sdk's
5
+ // peerDependencies (+ @coffer-org/sdk). Keep in sync when web-sdk adds a peer.
6
+ const EXTERNALS = ['react', 'react-dom', 'react/jsx-runtime', 'i18next', '@coffer-org/web-sdk', '@coffer-org/sdk'];
7
+ /** Pure config builder (testable). Plugin web bundle: ESM lib, vendor externals,
8
+ * Tailwind scanning only this plugin's src → self-contained dist/web.css. */
9
+ export function buildViteLibConfig(root) {
10
+ return {
11
+ root,
12
+ configFile: false,
13
+ build: {
14
+ outDir: 'dist',
15
+ emptyOutDir: false, // keep tsc-emitted schema.js
16
+ lib: { entry: join(root, 'src/ui.tsx'), formats: ['es'], fileName: () => 'web.js' },
17
+ rollupOptions: {
18
+ external: EXTERNALS,
19
+ output: { assetFileNames: 'web.css' },
20
+ },
21
+ },
22
+ };
23
+ }
24
+ export async function buildWeb(root = process.cwd()) {
25
+ if (!existsSync(join(root, 'src/ui.tsx')))
26
+ return; // schema-only plugin: nothing to build
27
+ const { build } = await import('vite');
28
+ const react = (await import('@vitejs/plugin-react')).default;
29
+ const tailwind = (await import('@tailwindcss/vite')).default;
30
+ const cfg = buildViteLibConfig(root);
31
+ cfg.plugins = [react(), tailwind()];
32
+ await build(cfg);
33
+ }
34
+ //# sourceMappingURL=web-build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-build.js","sourceRoot":"","sources":["../src/web-build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC,gFAAgF;AAChF,+EAA+E;AAC/E,+EAA+E;AAC/E,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,SAAS,EAAE,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;AAEnH;8EAC8E;AAC9E,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO;QACL,IAAI;QACJ,UAAU,EAAE,KAAK;QACjB,KAAK,EAAE;YACL,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,KAAK,EAAE,6BAA6B;YACjD,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE;YACnF,aAAa,EAAE;gBACb,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE;aACtC;SACF;KACc,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE;IACjD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAAE,OAAO,CAAC,uCAAuC;IAC1F,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7D,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7D,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACrC,GAAG,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "@coffer-org/devkit",
3
+ "version": "1.1.0",
4
+ "type": "module",
5
+ "files": [
6
+ "dist"
7
+ ],
8
+ "bin": {
9
+ "coffer-plugin": "./dist/index.js"
10
+ },
11
+ "scripts": {
12
+ "build": "tsc -b tsconfig.build.json",
13
+ "prepack": "npm run build && node ../../scripts/swap-exports.mjs dist",
14
+ "postpack": "node ../../scripts/swap-exports.mjs src"
15
+ },
16
+ "dependencies": {
17
+ "@tailwindcss/vite": "^4.3.0",
18
+ "@vitejs/plugin-react": "^6.0.2",
19
+ "vite": "^8.0.16"
20
+ }
21
+ }