@oxprotocol/cli 0.1.6 → 0.1.7
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/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +7 -0
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +84 -8
- package/dist/commands/dev.js.map +1 -1
- package/package.json +5 -5
- package/templates/hello-html/.oxpignore +17 -0
- package/templates/hello-html/README.md +29 -7
- package/templates/hello-html/build.mjs +95 -0
- package/templates/hello-html/oxp.json +3 -2
- package/templates/hello-html/package.json +21 -0
- package/templates/hello-html/src/App.tsx +54 -0
- package/templates/hello-html/src/main.tsx +7 -0
- package/templates/hello-html/src/styles.css +146 -0
- package/templates/hello-html/tsconfig.json +21 -0
- package/templates/hello-html/ui/index.html +0 -43
package/dist/cli.js
CHANGED
|
@@ -43,7 +43,8 @@ const HELP = `oxp ${VERSION} — Open eXtensions Protocol
|
|
|
43
43
|
|
|
44
44
|
Usage:
|
|
45
45
|
oxp create [-t TPL] <name> Scaffold a new extension in ./<name>
|
|
46
|
-
Templates: hello-html (default),
|
|
46
|
+
Templates: hello-html (React+TS, default),
|
|
47
|
+
hello-code, hello-tree, hello-rust
|
|
47
48
|
oxp dev [dir] Watch + repack + serve over ws/http (default port 7373)
|
|
48
49
|
oxp pack [dir] Build dist/<slug>-<version>.oxp from <dir> (default: cwd)
|
|
49
50
|
oxp login Sign in (email + password in terminal)
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,gCAAgC;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAC/B,CAAC;QAC1B,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;AAE9B,MAAM,IAAI,GAAG,OAAO,OAAO
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AA0BA;;;GAGG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AA0BA;;;GAGG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA8G5D"}
|
package/dist/commands/create.js
CHANGED
|
@@ -106,8 +106,10 @@ export async function create(args) {
|
|
|
106
106
|
info(` oxp pack && oxp publish # ship it`);
|
|
107
107
|
}
|
|
108
108
|
else {
|
|
109
|
+
// hello-html: React + TypeScript + esbuild
|
|
109
110
|
info(`Next steps:`);
|
|
110
111
|
info(` cd ${name}`);
|
|
112
|
+
info(` npm install # one-time`);
|
|
111
113
|
info(` oxp dev # live reload in IDE`);
|
|
112
114
|
info(` oxp pack && oxp publish # ship it`);
|
|
113
115
|
}
|
|
@@ -182,12 +184,17 @@ const TEXT_EXT = new Set([
|
|
|
182
184
|
".md",
|
|
183
185
|
".txt",
|
|
184
186
|
".js",
|
|
187
|
+
".mjs",
|
|
188
|
+
".cjs",
|
|
185
189
|
".ts",
|
|
190
|
+
".tsx",
|
|
191
|
+
".jsx",
|
|
186
192
|
".css",
|
|
187
193
|
".toml",
|
|
188
194
|
".rs",
|
|
189
195
|
".wit",
|
|
190
196
|
".gitignore",
|
|
197
|
+
".oxpignore",
|
|
191
198
|
]);
|
|
192
199
|
async function copyTree(src, dest, transform) {
|
|
193
200
|
await fs.mkdir(dest, { recursive: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAqCA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAqLzD"}
|
package/dist/commands/dev.js
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `oxp dev [dir]` — watch a project, re-pack on changes, and serve the bundle
|
|
3
|
+
* over WebSocket + HTTP so a host can hot-load the extension without going
|
|
4
|
+
* through publish.
|
|
5
|
+
*
|
|
6
|
+
* Hosts that opt-in to dev mode (hosts/vscode/src/dev.ts, hosts/piye/src/dev.ts)
|
|
7
|
+
* connect to:
|
|
8
|
+
*
|
|
9
|
+
* ws://localhost:<port>/dev → JSON {kind:"reload", manifest, digest, bundle:base64}
|
|
10
|
+
* GET http://localhost:<port>/manifest → oxp.json
|
|
11
|
+
* GET http://localhost:<port>/bundle → raw .oxp bytes
|
|
12
|
+
* GET http://localhost:<port>/info → {dev:true, manifest, digest, bundleSize}
|
|
13
|
+
*
|
|
14
|
+
* IMPORTANT: dev mode SKIPS Ed25519 signing for speed. The host displays a
|
|
15
|
+
* loud "DEV: signature bypass" badge while connected. Production publish flow
|
|
16
|
+
* is unchanged.
|
|
17
|
+
*/
|
|
18
|
+
import { promises as fs } from "node:fs";
|
|
19
|
+
import { spawn } from "node:child_process";
|
|
1
20
|
import { createServer, } from "node:http";
|
|
2
|
-
import { resolve } from "node:path";
|
|
21
|
+
import { join, resolve } from "node:path";
|
|
3
22
|
import chokidar from "chokidar";
|
|
4
23
|
import { WebSocketServer } from "ws";
|
|
5
24
|
import { packBundle } from "@oxprotocol/bundle";
|
|
@@ -42,6 +61,18 @@ export async function dev(args) {
|
|
|
42
61
|
building = true;
|
|
43
62
|
try {
|
|
44
63
|
const t0 = Date.now();
|
|
64
|
+
// Run the manifest's build hook (e.g. `npm run build`) before
|
|
65
|
+
// packing, so React/TS templates that compile to ui/ get fresh
|
|
66
|
+
// output. Skipped if no scripts.build is set. Mirrors `oxp pack`.
|
|
67
|
+
const buildCmd = await readBuildScript(root);
|
|
68
|
+
if (buildCmd) {
|
|
69
|
+
const code = await runShell(buildCmd, root);
|
|
70
|
+
if (code !== 0) {
|
|
71
|
+
info(`✖ scripts.build exited ${code} — keeping previous bundle`);
|
|
72
|
+
broadcast({ kind: "error", message: `build hook exit ${code}` });
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
45
76
|
const r = await packBundle(root, {});
|
|
46
77
|
state = {
|
|
47
78
|
manifest: r.manifest,
|
|
@@ -104,9 +135,21 @@ export async function dev(args) {
|
|
|
104
135
|
ws.send(json);
|
|
105
136
|
}
|
|
106
137
|
}
|
|
138
|
+
// If the project has a `scripts.build` hook the `ui/` directory is
|
|
139
|
+
// generated output (see hello-html template). Watching it would cause
|
|
140
|
+
// an infinite rebuild loop. We watch `src/` and other source dirs
|
|
141
|
+
// instead — chokidar still picks them up via the root walk.
|
|
142
|
+
const hasBuildHook = (await readBuildScript(root)) != null;
|
|
107
143
|
// ── chokidar watch ───────────────────────────────────────────────────────
|
|
108
144
|
const watcher = chokidar.watch(root, {
|
|
109
|
-
ignored: (p) => /(^|[\\/])(\.git|node_modules|dist\/.*\.oxp|\.next|\.oxp-cache)([\\/]|$)/.test(p)
|
|
145
|
+
ignored: (p) => /(^|[\\/])(\.git|node_modules|dist\/.*\.oxp|\.next|\.oxp-cache)([\\/]|$)/.test(p) ||
|
|
146
|
+
// Generated build outputs — would cause infinite rebuild loops.
|
|
147
|
+
// When a build hook exists, ignore the entire `ui/` tree (it's
|
|
148
|
+
// 100% generated). Otherwise only ignore obvious bundler artefacts
|
|
149
|
+
// so authors who hand-write `ui/index.html` still get hot reload.
|
|
150
|
+
(hasBuildHook
|
|
151
|
+
? /(^|[\\/])ui([\\/]|$)/.test(p)
|
|
152
|
+
: /[\\/]ui[\\/](main|index)\.(js|css|html)(\.map)?$/.test(p)),
|
|
110
153
|
ignoreInitial: true,
|
|
111
154
|
});
|
|
112
155
|
let debounce = null;
|
|
@@ -120,13 +163,19 @@ export async function dev(args) {
|
|
|
120
163
|
// ── Initial build + start ────────────────────────────────────────────────
|
|
121
164
|
await rebuild("initial");
|
|
122
165
|
await new Promise((r) => http.listen(port, "127.0.0.1", r));
|
|
166
|
+
// Machine-readable line so IDE hosts can auto-detect when we're ready
|
|
167
|
+
// (used by VS Code's "OXP: Start Dev Session" command).
|
|
168
|
+
info(`OXP_DEV_READY port=${port}`);
|
|
169
|
+
info("");
|
|
170
|
+
info("oxp dev — backend ready. ⚠ DEV mode (signature bypass, do not ship)");
|
|
171
|
+
info(` watching: ${root}`);
|
|
172
|
+
info("");
|
|
173
|
+
info("This is a backend service for IDE hosts. Don't open it in a browser.");
|
|
174
|
+
info("Render the extension inside your IDE:");
|
|
123
175
|
info("");
|
|
124
|
-
info("
|
|
125
|
-
info("
|
|
126
|
-
info(
|
|
127
|
-
info(`│ http: http://localhost:${port}/info`.padEnd(60) + "│");
|
|
128
|
-
info(`│ root: ${root}`.padEnd(60) + "│");
|
|
129
|
-
info("╰───────────────────────────────────────────────────────────╯");
|
|
176
|
+
info(" • VS Code: run \u201cOXP: Start Dev Session\u201d (or it auto-attaches");
|
|
177
|
+
info(" if you launched dev from the IDE)");
|
|
178
|
+
info(" • JetBrains / Neovim: see hosts/<ide>/README.md");
|
|
130
179
|
info("");
|
|
131
180
|
info("Press Ctrl+C to stop.");
|
|
132
181
|
// Keep alive until SIGINT.
|
|
@@ -188,4 +237,31 @@ function send(res, status, body) {
|
|
|
188
237
|
res.setHeader("content-type", "application/json");
|
|
189
238
|
res.end(JSON.stringify(body));
|
|
190
239
|
}
|
|
240
|
+
// ── Build hook helpers (mirror pack.ts) ───────────────────────────────────
|
|
241
|
+
async function readBuildScript(root) {
|
|
242
|
+
try {
|
|
243
|
+
const raw = await fs.readFile(join(root, "oxp.json"), "utf8");
|
|
244
|
+
const m = JSON.parse(raw);
|
|
245
|
+
const cmd = m?.scripts?.build;
|
|
246
|
+
if (typeof cmd === "string" && cmd.trim().length > 0)
|
|
247
|
+
return cmd;
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
/* ignore */
|
|
251
|
+
}
|
|
252
|
+
return null;
|
|
253
|
+
}
|
|
254
|
+
function runShell(cmd, cwd) {
|
|
255
|
+
return new Promise((resolveExit) => {
|
|
256
|
+
info(`▸ ${cmd}`);
|
|
257
|
+
const child = spawn(cmd, {
|
|
258
|
+
cwd,
|
|
259
|
+
shell: true,
|
|
260
|
+
stdio: "inherit",
|
|
261
|
+
env: process.env,
|
|
262
|
+
});
|
|
263
|
+
child.on("exit", (code) => resolveExit(code ?? 1));
|
|
264
|
+
child.on("error", () => resolveExit(1));
|
|
265
|
+
});
|
|
266
|
+
}
|
|
191
267
|
//# sourceMappingURL=dev.js.map
|
package/dist/commands/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oxprotocol/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "Command-line tool for the Open eXtensions Protocol.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"chokidar": "^4.0.3",
|
|
29
29
|
"ws": "^8.18.0",
|
|
30
|
-
"@oxprotocol/bundle": "0.1.
|
|
31
|
-
"@oxprotocol/host-core": "0.1.4",
|
|
32
|
-
"@oxprotocol/types": "0.1.4",
|
|
30
|
+
"@oxprotocol/bundle": "0.1.5",
|
|
33
31
|
"@oxprotocol/schema": "0.1.4",
|
|
34
|
-
"@oxprotocol/wit": "0.1.4"
|
|
32
|
+
"@oxprotocol/wit": "0.1.4",
|
|
33
|
+
"@oxprotocol/types": "0.1.4",
|
|
34
|
+
"@oxprotocol/host-core": "0.1.4"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/node": "^22.10.2",
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Files needed for development but not part of the shipped .oxp bundle.
|
|
2
|
+
# Source-of-truth lives at https://oxp.sh/docs/oxpignore
|
|
3
|
+
|
|
4
|
+
# React/TS source — bundled and inlined into ui/index.html by build.mjs
|
|
5
|
+
src/
|
|
6
|
+
|
|
7
|
+
# Tooling — only used at build time
|
|
8
|
+
build.mjs
|
|
9
|
+
package.json
|
|
10
|
+
package-lock.json
|
|
11
|
+
pnpm-lock.yaml
|
|
12
|
+
yarn.lock
|
|
13
|
+
tsconfig.json
|
|
14
|
+
|
|
15
|
+
# IDE / OS noise
|
|
16
|
+
.gitignore
|
|
17
|
+
.DS_Store
|
|
@@ -1,18 +1,40 @@
|
|
|
1
1
|
# __DISPLAY_NAME__
|
|
2
2
|
|
|
3
|
-
A
|
|
3
|
+
A React + TypeScript OXP extension scaffolded by `oxp create`.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Layout
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
src/
|
|
9
|
+
App.tsx ← edit me
|
|
10
|
+
main.tsx ← React entry, mounts <App /> on #root
|
|
11
|
+
styles.css ← global styles, inlined into the bundle
|
|
12
|
+
build.mjs ← esbuild driver, emits a single inlined ui/index.html
|
|
13
|
+
ui/index.html ← (generated, git-ignored)
|
|
14
|
+
oxp.json ← extension manifest
|
|
15
|
+
.oxpignore ← excludes src/, build.mjs, etc. from the .oxp
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Why a single inlined HTML?
|
|
19
|
+
|
|
20
|
+
OXP's `ui-v1` policy forbids loose `.js` and `.css` files in a bundle —
|
|
21
|
+
only HTML may execute. `build.mjs` runs esbuild with `format: "iife"` and
|
|
22
|
+
inlines both the JS and CSS into one self-contained `ui/index.html`. That
|
|
23
|
+
HTML is the only artefact that ships in the `.oxp`.
|
|
24
|
+
|
|
25
|
+
## Develop
|
|
6
26
|
|
|
7
27
|
```sh
|
|
8
|
-
|
|
28
|
+
npm install # one-time
|
|
29
|
+
oxp dev # watches files, rebuilds, serves to your IDE host
|
|
9
30
|
```
|
|
10
31
|
|
|
11
|
-
|
|
32
|
+
`oxp dev` runs `scripts.build` from `oxp.json` (`npm run build`, which
|
|
33
|
+
executes `node build.mjs`) before each repack.
|
|
12
34
|
|
|
13
|
-
##
|
|
35
|
+
## Ship
|
|
14
36
|
|
|
15
37
|
```sh
|
|
16
|
-
oxp
|
|
17
|
-
oxp publish
|
|
38
|
+
oxp pack # produces dist/__SLUG__-<version>.oxp + .sig.json
|
|
39
|
+
oxp publish # uploads to https://oxp.sh
|
|
18
40
|
```
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// Build the OXP UI bundle.
|
|
2
|
+
//
|
|
3
|
+
// Why is this not just `esbuild --outdir=ui`?
|
|
4
|
+
// Because OXP's `ui-v1` policy forbids loose `.js` / `.css` files in the
|
|
5
|
+
// bundle for safety (CSP-style — only HTML may execute). So we build the
|
|
6
|
+
// React app and inline both the JS and the CSS into a single self-contained
|
|
7
|
+
// `ui/index.html`. That HTML is the only artefact that ships in the .oxp.
|
|
8
|
+
//
|
|
9
|
+
// Watch mode (`oxp dev`) re-runs this on every save.
|
|
10
|
+
|
|
11
|
+
import { context, build } from "esbuild";
|
|
12
|
+
import { readFile, writeFile, mkdir } from "node:fs/promises";
|
|
13
|
+
|
|
14
|
+
const watch = process.argv.includes("--watch");
|
|
15
|
+
|
|
16
|
+
const entry = "src/main.tsx";
|
|
17
|
+
|
|
18
|
+
const buildOptions = {
|
|
19
|
+
entryPoints: [entry],
|
|
20
|
+
bundle: true,
|
|
21
|
+
minify: !watch,
|
|
22
|
+
sourcemap: false, // inline maps would inflate the HTML; off in dev too
|
|
23
|
+
target: "es2020",
|
|
24
|
+
format: "iife", // executes immediately when injected via <script>
|
|
25
|
+
loader: { ".css": "css" },
|
|
26
|
+
legalComments: "none",
|
|
27
|
+
write: false,
|
|
28
|
+
outdir: "out",
|
|
29
|
+
logLevel: "warning",
|
|
30
|
+
plugins: [
|
|
31
|
+
{
|
|
32
|
+
name: "oxp-inline-html",
|
|
33
|
+
setup(b) {
|
|
34
|
+
b.onEnd(async (result) => {
|
|
35
|
+
if (result.errors.length > 0) return;
|
|
36
|
+
await emitInlinedHtml(result);
|
|
37
|
+
});
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
async function emitInlinedHtml(result) {
|
|
44
|
+
let js = "";
|
|
45
|
+
let css = "";
|
|
46
|
+
for (const f of result.outputFiles ?? []) {
|
|
47
|
+
if (f.path.endsWith(".js")) js = f.text;
|
|
48
|
+
else if (f.path.endsWith(".css")) css = f.text;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Pull display name from oxp.json so the <title> stays in sync.
|
|
52
|
+
let title = "OXP Extension";
|
|
53
|
+
try {
|
|
54
|
+
const m = JSON.parse(await readFile("oxp.json", "utf8"));
|
|
55
|
+
if (typeof m.displayName === "string") title = m.displayName;
|
|
56
|
+
} catch {
|
|
57
|
+
/* fall back */
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const html = `<!doctype html>
|
|
61
|
+
<html lang="en">
|
|
62
|
+
<head>
|
|
63
|
+
<meta charset="utf-8" />
|
|
64
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
65
|
+
<title>${escapeHtml(title)}</title>
|
|
66
|
+
<style>${css}</style>
|
|
67
|
+
</head>
|
|
68
|
+
<body>
|
|
69
|
+
<div id="root"></div>
|
|
70
|
+
<script>${js}</script>
|
|
71
|
+
</body>
|
|
72
|
+
</html>
|
|
73
|
+
`;
|
|
74
|
+
|
|
75
|
+
await mkdir("ui", { recursive: true });
|
|
76
|
+
await writeFile("ui/index.html", html);
|
|
77
|
+
const kb = (html.length / 1024).toFixed(1);
|
|
78
|
+
console.log(`✓ ui/index.html (${kb} KiB)`);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function escapeHtml(s) {
|
|
82
|
+
return s
|
|
83
|
+
.replace(/&/g, "&")
|
|
84
|
+
.replace(/</g, "<")
|
|
85
|
+
.replace(/>/g, ">")
|
|
86
|
+
.replace(/"/g, """);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (watch) {
|
|
90
|
+
const ctx = await context(buildOptions);
|
|
91
|
+
await ctx.watch();
|
|
92
|
+
console.log("watching src/ — Ctrl+C to stop");
|
|
93
|
+
} else {
|
|
94
|
+
await build(buildOptions);
|
|
95
|
+
}
|
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
"publisher": "__PUBLISHER__",
|
|
5
5
|
"version": "0.0.1",
|
|
6
6
|
"displayName": "__DISPLAY_NAME__",
|
|
7
|
-
"description": "
|
|
7
|
+
"description": "OXP extension built with React + TypeScript.",
|
|
8
8
|
"license": "MIT",
|
|
9
9
|
"categories": ["other"],
|
|
10
10
|
"engines": { "oxp": "^1.0.0" },
|
|
11
11
|
"main": { "ui": "ui/index.html" },
|
|
12
12
|
"ui": { "components": "oxp-ui-only", "preferredSurface": "panel" },
|
|
13
|
-
"permissions": []
|
|
13
|
+
"permissions": [],
|
|
14
|
+
"scripts": { "build": "npm run build" }
|
|
14
15
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "__SLUG__",
|
|
3
|
+
"private": true,
|
|
4
|
+
"version": "0.0.1",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"build": "node build.mjs",
|
|
8
|
+
"dev": "node build.mjs --watch",
|
|
9
|
+
"typecheck": "tsc --noEmit"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"react": "^18.3.1",
|
|
13
|
+
"react-dom": "^18.3.1"
|
|
14
|
+
},
|
|
15
|
+
"devDependencies": {
|
|
16
|
+
"@types/react": "^18.3.12",
|
|
17
|
+
"@types/react-dom": "^18.3.1",
|
|
18
|
+
"esbuild": "^0.24.0",
|
|
19
|
+
"typescript": "^5.6.3"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { useState } from "react";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Replace this with whatever your extension does. Everything inside the
|
|
5
|
+
* panel is plain React + DOM — no host-specific APIs needed for UI work.
|
|
6
|
+
*
|
|
7
|
+
* To talk to the host (read settings, run commands, log telemetry, etc.)
|
|
8
|
+
* import from `@oxprotocol/sdk` and add the matching permission to
|
|
9
|
+
* `oxp.json#permissions`.
|
|
10
|
+
*/
|
|
11
|
+
export function App(): JSX.Element {
|
|
12
|
+
const [count, setCount] = useState(0);
|
|
13
|
+
|
|
14
|
+
return (
|
|
15
|
+
<main className="oxp-card">
|
|
16
|
+
<header className="oxp-header">
|
|
17
|
+
<span className="oxp-dot" aria-hidden />
|
|
18
|
+
<span className="oxp-brand">OXP</span>
|
|
19
|
+
<span className="oxp-slug">@__PUBLISHER__/__SLUG__</span>
|
|
20
|
+
</header>
|
|
21
|
+
|
|
22
|
+
<h1>__DISPLAY_NAME__</h1>
|
|
23
|
+
<p className="oxp-lede">
|
|
24
|
+
React + TypeScript panel running inside your IDE.
|
|
25
|
+
</p>
|
|
26
|
+
|
|
27
|
+
<button
|
|
28
|
+
className="oxp-btn"
|
|
29
|
+
type="button"
|
|
30
|
+
onClick={() => setCount((c) => c + 1)}
|
|
31
|
+
>
|
|
32
|
+
Pressed {count} {count === 1 ? "time" : "times"}
|
|
33
|
+
</button>
|
|
34
|
+
|
|
35
|
+
<p className="oxp-hint">
|
|
36
|
+
Edit <code>src/App.tsx</code> and save — the panel hot-reloads.
|
|
37
|
+
</p>
|
|
38
|
+
|
|
39
|
+
<footer className="oxp-footer">
|
|
40
|
+
<a
|
|
41
|
+
href="https://oxp.sh/docs/getting-started"
|
|
42
|
+
target="_blank"
|
|
43
|
+
rel="noreferrer"
|
|
44
|
+
>
|
|
45
|
+
Docs ↗
|
|
46
|
+
</a>
|
|
47
|
+
<span aria-hidden>·</span>
|
|
48
|
+
<a href="https://oxp.sh/docs/api" target="_blank" rel="noreferrer">
|
|
49
|
+
SDK API ↗
|
|
50
|
+
</a>
|
|
51
|
+
</footer>
|
|
52
|
+
</main>
|
|
53
|
+
);
|
|
54
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
color-scheme: dark light;
|
|
3
|
+
--oxp-bg: #060a13;
|
|
4
|
+
--oxp-fg: #f8fafc;
|
|
5
|
+
--oxp-muted: rgba(248, 250, 252, 0.45);
|
|
6
|
+
--oxp-accent: #7dd3fc;
|
|
7
|
+
--oxp-border: rgba(125, 211, 252, 0.18);
|
|
8
|
+
--oxp-border-strong: rgba(125, 211, 252, 0.4);
|
|
9
|
+
--oxp-mono: ui-monospace, SFMono-Regular, "JetBrains Mono", Menlo, monospace;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
* {
|
|
13
|
+
box-sizing: border-box;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
body {
|
|
17
|
+
margin: 0;
|
|
18
|
+
min-height: 100vh;
|
|
19
|
+
display: grid;
|
|
20
|
+
place-items: center;
|
|
21
|
+
padding: 1.5rem;
|
|
22
|
+
font-family: -apple-system, system-ui, "Segoe UI", sans-serif;
|
|
23
|
+
background:
|
|
24
|
+
radial-gradient(
|
|
25
|
+
circle at 50% 0%,
|
|
26
|
+
rgba(125, 211, 252, 0.06),
|
|
27
|
+
transparent 60%
|
|
28
|
+
),
|
|
29
|
+
var(--oxp-bg);
|
|
30
|
+
color: var(--oxp-fg);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.oxp-card {
|
|
34
|
+
width: 100%;
|
|
35
|
+
max-width: 28rem;
|
|
36
|
+
border: 1px solid var(--oxp-border);
|
|
37
|
+
border-radius: 8px;
|
|
38
|
+
padding: 1.75rem 2rem;
|
|
39
|
+
background: rgba(125, 211, 252, 0.03);
|
|
40
|
+
backdrop-filter: blur(8px);
|
|
41
|
+
display: flex;
|
|
42
|
+
flex-direction: column;
|
|
43
|
+
gap: 1rem;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.oxp-header {
|
|
47
|
+
display: flex;
|
|
48
|
+
align-items: center;
|
|
49
|
+
gap: 0.5rem;
|
|
50
|
+
font-family: var(--oxp-mono);
|
|
51
|
+
font-size: 0.65rem;
|
|
52
|
+
letter-spacing: 0.18em;
|
|
53
|
+
text-transform: uppercase;
|
|
54
|
+
color: var(--oxp-muted);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.oxp-dot {
|
|
58
|
+
width: 6px;
|
|
59
|
+
height: 6px;
|
|
60
|
+
border-radius: 50%;
|
|
61
|
+
background: #10b981;
|
|
62
|
+
box-shadow: 0 0 6px #10b981;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.oxp-brand {
|
|
66
|
+
color: var(--oxp-accent);
|
|
67
|
+
font-weight: 700;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.oxp-slug {
|
|
71
|
+
margin-left: auto;
|
|
72
|
+
color: var(--oxp-muted);
|
|
73
|
+
font-size: 0.6rem;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
h1 {
|
|
77
|
+
margin: 0;
|
|
78
|
+
font-size: 1.5rem;
|
|
79
|
+
letter-spacing: -0.01em;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.oxp-lede {
|
|
83
|
+
margin: 0;
|
|
84
|
+
color: var(--oxp-muted);
|
|
85
|
+
font-size: 0.85rem;
|
|
86
|
+
line-height: 1.5;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.oxp-btn {
|
|
90
|
+
align-self: flex-start;
|
|
91
|
+
margin-top: 0.25rem;
|
|
92
|
+
padding: 0.55rem 1rem;
|
|
93
|
+
font-family: var(--oxp-mono);
|
|
94
|
+
font-size: 0.75rem;
|
|
95
|
+
letter-spacing: 0.1em;
|
|
96
|
+
text-transform: uppercase;
|
|
97
|
+
color: var(--oxp-accent);
|
|
98
|
+
background: rgba(125, 211, 252, 0.06);
|
|
99
|
+
border: 1px solid var(--oxp-border-strong);
|
|
100
|
+
border-radius: 4px;
|
|
101
|
+
cursor: pointer;
|
|
102
|
+
transition: background 120ms ease, transform 80ms ease;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.oxp-btn:hover {
|
|
106
|
+
background: rgba(125, 211, 252, 0.12);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.oxp-btn:active {
|
|
110
|
+
transform: translateY(1px);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.oxp-hint {
|
|
114
|
+
margin: 0;
|
|
115
|
+
font-family: var(--oxp-mono);
|
|
116
|
+
font-size: 0.7rem;
|
|
117
|
+
color: var(--oxp-muted);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.oxp-hint code {
|
|
121
|
+
color: var(--oxp-accent);
|
|
122
|
+
background: rgba(125, 211, 252, 0.08);
|
|
123
|
+
padding: 0.1em 0.35em;
|
|
124
|
+
border-radius: 3px;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.oxp-footer {
|
|
128
|
+
display: flex;
|
|
129
|
+
gap: 0.5rem;
|
|
130
|
+
align-items: center;
|
|
131
|
+
margin-top: 0.5rem;
|
|
132
|
+
padding-top: 0.85rem;
|
|
133
|
+
border-top: 1px solid var(--oxp-border);
|
|
134
|
+
font-family: var(--oxp-mono);
|
|
135
|
+
font-size: 0.7rem;
|
|
136
|
+
color: var(--oxp-muted);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.oxp-footer a {
|
|
140
|
+
color: var(--oxp-accent);
|
|
141
|
+
text-decoration: none;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.oxp-footer a:hover {
|
|
145
|
+
text-decoration: underline;
|
|
146
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2020",
|
|
4
|
+
"module": "ESNext",
|
|
5
|
+
"moduleResolution": "bundler",
|
|
6
|
+
"jsx": "react-jsx",
|
|
7
|
+
"strict": true,
|
|
8
|
+
"esModuleInterop": true,
|
|
9
|
+
"skipLibCheck": true,
|
|
10
|
+
"isolatedModules": true,
|
|
11
|
+
"noEmit": true,
|
|
12
|
+
"lib": [
|
|
13
|
+
"ES2020",
|
|
14
|
+
"DOM",
|
|
15
|
+
"DOM.Iterable"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"include": [
|
|
19
|
+
"src"
|
|
20
|
+
]
|
|
21
|
+
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8" />
|
|
5
|
-
<title>__DISPLAY_NAME__</title>
|
|
6
|
-
<style>
|
|
7
|
-
:root {
|
|
8
|
-
color-scheme: dark light;
|
|
9
|
-
}
|
|
10
|
-
body {
|
|
11
|
-
margin: 0;
|
|
12
|
-
min-height: 100vh;
|
|
13
|
-
display: grid;
|
|
14
|
-
place-items: center;
|
|
15
|
-
font-family: -apple-system, system-ui, sans-serif;
|
|
16
|
-
background: #060a13;
|
|
17
|
-
color: #f8fafc;
|
|
18
|
-
}
|
|
19
|
-
.card {
|
|
20
|
-
border: 1px solid rgba(125, 211, 252, 0.3);
|
|
21
|
-
padding: 2rem 2.5rem;
|
|
22
|
-
border-radius: 8px;
|
|
23
|
-
text-align: center;
|
|
24
|
-
}
|
|
25
|
-
h1 {
|
|
26
|
-
margin: 0 0 0.5rem;
|
|
27
|
-
font-size: 1.75rem;
|
|
28
|
-
}
|
|
29
|
-
p {
|
|
30
|
-
margin: 0;
|
|
31
|
-
opacity: 0.6;
|
|
32
|
-
font-family: ui-monospace, monospace;
|
|
33
|
-
font-size: 0.75rem;
|
|
34
|
-
}
|
|
35
|
-
</style>
|
|
36
|
-
</head>
|
|
37
|
-
<body>
|
|
38
|
-
<div class="card">
|
|
39
|
-
<h1>Hello, OXP world.</h1>
|
|
40
|
-
<p>@__PUBLISHER__/__SLUG__</p>
|
|
41
|
-
</div>
|
|
42
|
-
</body>
|
|
43
|
-
</html>
|