@package-verse/esmpack 1.0.21 → 1.0.25

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/App.html ADDED
@@ -0,0 +1,19 @@
1
+ <!DOCTYPE html>
2
+ <head>
3
+ <title>JS Components</title>
4
+ </head>
5
+ <body>
6
+ <script type="importmap">
7
+ {
8
+ "imports": {
9
+ "@package-verse/esmpack/": "/node_modules/@package-verse/esmpack/"
10
+ }
11
+ }
12
+ </script>
13
+ <script>
14
+ const cs = document.currentScript;
15
+ import("@package-verse/esmpack/dist/ui/app/App.js")
16
+ .then((r) => ESMPack.render(r, cs), (error) => cs.replaceWith(document.createTextNode(error.stack || error)));
17
+ </script>
18
+ </body>
19
+ </html>
package/Test.html ADDED
@@ -0,0 +1,19 @@
1
+ <!DOCTYPE html>
2
+ <head>
3
+ <title>JS Components</title>
4
+ </head>
5
+ <body>
6
+ <script type="importmap">
7
+ {
8
+ "imports": {
9
+ "@package-verse/esmpack/": "/"
10
+ }
11
+ }
12
+ </script>
13
+ <script>
14
+ const cs = document.currentScript;
15
+ import("@package-verse/esmpack/dist/ui/app/App.js")
16
+ .then((r) => ESMPack.render(r, cs), (error) => cs.replaceWith(document.createTextNode(error.stack || error)));
17
+ </script>
18
+ </body>
19
+ </html>
@@ -6,9 +6,23 @@ import { createProxyMiddleware, fixRequestBody } from "http-proxy-middleware";
6
6
  import colors from "colors";
7
7
  import sendJSHost from "./send/sendJSHost.js";
8
8
  import sendNonJSModule from "./send/sendNonJSModule.js";
9
+ import sendFileList from "./send/sendFileList.js";
9
10
  let middleware;
10
11
  export default function WebServer(req, res) {
11
- const pathname = new URL(req.url, "http://a").pathname.substring(1);
12
+ const url = new URL(req.url, "http://a");
13
+ const pathname = url.pathname.substring(1);
14
+ if (!pathname) {
15
+ // send list...
16
+ res.writeHead(301, {
17
+ "location": "/node_modules/@package-verse/esmpack/App.html"
18
+ });
19
+ res.end();
20
+ return;
21
+ }
22
+ if (pathname === "$search") {
23
+ sendFileList(url, req, res);
24
+ return;
25
+ }
12
26
  // check if path exists...
13
27
  const fullPath = path.resolve(ProcessOptions.cwd, pathname);
14
28
  if (existsSync(fullPath)) {
@@ -1 +1 @@
1
- {"version":3,"file":"WebServer.js","sourceRoot":"","sources":["../../src/serve/WebServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebServer.js","sourceRoot":"","sources":["../../src/serve/WebServer.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,9 @@ for (const [key] of Object.entries(packageInfo.dependencies)) {
19
19
  ? modulePackageJson.main : "index.js");
20
20
  const { exports: moduleExports } = modulePackageJson;
21
21
  if (moduleExports) {
22
- moduleMain = moduleExports["."]["default"] || moduleMain;
22
+ moduleMain = moduleExports["."]?.["module"]?.["default"]
23
+ || moduleExports["."]?.["default"]
24
+ || moduleMain;
23
25
  }
24
26
  if (moduleMain) {
25
27
  imports[key] = path.join(modulePath, moduleMain);
@@ -1 +1 @@
1
- {"version":3,"file":"packageInfo.js","sourceRoot":"","sources":["../../../src/serve/send/packageInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;AAEjF,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAEhD,MAAM,OAAO,GAAG;IACZ,CAAC,WAAW,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG;CAChC,CAAC;AAEF,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;IAE3D,MAAM,yBAAyB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAG,cAAc,CAAC,CAAC;IACjG,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,EAAE,CAAC;QACzC,SAAS;IACb,CAAC;IAED,IAAI,UAAU,GAAG,gBAAgB,GAAG,GAAG,GAAG,GAAG,CAAC;IAE9C,oBAAoB;IACpB,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC,CAAC;IAEvF,IAAI,UAAU,GAAG,iBAAiB,CAAC,MAAM;WAClC,CAAC,iBAAiB,CAAC,IAAI,KAAK,QAAQ;YACnC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAE/C,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,iBAAiB,CAAC;IACrD,IAAG,aAAa,EAAE,CAAC;QACf,UAAU,GAAI,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC;IAC9D,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAG,UAAU,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,UAAU,CAAC;IAEhC,IAAI,iBAAiB,CAAC,GAAG,EAAE,CAAC;QACxB,KAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;YAClE,OAAO,CAAC,GAAG,GAAG,IAAI,OAAO,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,KAAK,GAAG,CAAE;QAC9D,CAAC;IACL,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,UAAU,CAAC;AAEpC,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"packageInfo.js","sourceRoot":"","sources":["../../../src/serve/send/packageInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;AAEjF,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAEhD,MAAM,OAAO,GAAG;IACZ,CAAC,WAAW,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG;CAChC,CAAC;AAEF,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;IAE3D,MAAM,yBAAyB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAG,cAAc,CAAC,CAAC;IACjG,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,EAAE,CAAC;QACzC,SAAS;IACb,CAAC;IAED,IAAI,UAAU,GAAG,gBAAgB,GAAG,GAAG,GAAG,GAAG,CAAC;IAE9C,oBAAoB;IACpB,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC,CAAC;IAEvF,IAAI,UAAU,GAAG,iBAAiB,CAAC,MAAM;WAClC,CAAC,iBAAiB,CAAC,IAAI,KAAK,QAAQ;YACnC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAE/C,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,iBAAiB,CAAC;IACrD,IAAG,aAAa,EAAE,CAAC;QACf,UAAU,GAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC;eAClD,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;eAC/B,UAAU,CAAC;IACtB,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAG,UAAU,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,UAAU,CAAC;IAEhC,IAAI,iBAAiB,CAAC,GAAG,EAAE,CAAC;QACxB,KAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;YAClE,OAAO,CAAC,GAAG,GAAG,IAAI,OAAO,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,KAAK,GAAG,CAAE;QAC9D,CAAC;IACL,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,UAAU,CAAC;AAEpC,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { readdirSync, readFileSync, statSync } from "node:fs";
2
+ import { join, relative } from "node:path";
3
+ import { ProcessOptions } from "../../ProcessArgs.js";
4
+ export default function sendFileList(url, req, res) {
5
+ const packed = /yes|true/i.test(url.searchParams.get("packed"));
6
+ const search = url.searchParams.get("search") || "";
7
+ const entries = readdirSync(ProcessOptions.cwd, { recursive: true, withFileTypes: true })
8
+ .filter((d) => !d.isDirectory()
9
+ && !d.name.startsWith(".")
10
+ && d.name.endsWith(".js")
11
+ && d.name !== "node_modules"
12
+ && !d.parentPath.replaceAll("\\", "/").includes("node_modules/")
13
+ && (search ? d.name.toLowerCase().includes(search.toLowerCase()) : true))
14
+ .map((d) => {
15
+ const fullPath = relative(ProcessOptions.cwd, join(d.parentPath, d.name)).replaceAll("\\", "/");
16
+ let size = 0, mtime = new Date();
17
+ try {
18
+ const s = statSync(fullPath);
19
+ size = s.size;
20
+ mtime = s.mtime;
21
+ }
22
+ catch { }
23
+ const isPacked = /\@Pack/.test(readFileSync(fullPath, "utf-8"));
24
+ return { name: d.name, fullPath, isPacked, size, mtime };
25
+ })
26
+ .filter((x) => packed ? x.isPacked : true)
27
+ .sort((a, b) => {
28
+ // if (a.isDir !== b.isDir) return a.isDir ? -1 : 1;
29
+ return a.name.localeCompare(b.name);
30
+ });
31
+ const text = JSON.stringify(entries);
32
+ res.writeHead(200, {
33
+ "Content-Type": "text/json",
34
+ "cache-control": "no-cache"
35
+ });
36
+ res.end(text);
37
+ }
38
+ //# sourceMappingURL=sendFileList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendFileList.js","sourceRoot":"","sources":["../../../src/serve/send/sendFileList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE9D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,GAAQ,EAAE,GAAoB,EAAE,GAAmB;IAIpF,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEhE,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEpD,MAAM,OAAO,GAAG,WAAW,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAC,CAAC;SACnF,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACV,CAAC,CAAC,CAAC,WAAW,EAAE;WACb,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;WACvB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;WACtB,CAAC,CAAC,IAAI,KAAK,cAAc;WACzB,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;WAC7D,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAC3E;SACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACP,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAChG,IAAI,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC;YACD,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;YACd,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QAChE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC7D,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;SACzC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACX,oDAAoD;QACpD,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAGP,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAErC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,cAAc,EAAE,WAAW;QAC3B,eAAe,EAAE,UAAU;KAC5B,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,47 @@
1
+ const ESMPack = window.ESMPack ??= {};
2
+ ESMPack.render = (imports, cs) => {
3
+ const name = customElements.getName(imports.default);
4
+ const c = document.createElement(name);
5
+ cs.replaceWith(c);
6
+ };
7
+ export default class HtmlControl extends HTMLElement {
8
+ connectedCallback() {
9
+ this.onConnected().catch(console.error);
10
+ }
11
+ onConnected() {
12
+ const ready = (async () => {
13
+ await this.prepare();
14
+ })();
15
+ Object.defineProperty(this, "onConnected", { value: () => ready });
16
+ return ready;
17
+ }
18
+ getAttributeAsNumber(name, def) {
19
+ const a = this.getAttribute(name);
20
+ if (!a) {
21
+ return def;
22
+ }
23
+ const n = Number.parseFloat(a);
24
+ return Number.isNaN(n) ? def : n;
25
+ }
26
+ getAttributeAsTime(name, def) {
27
+ const a = this.getAttribute(name);
28
+ if (!a) {
29
+ return def;
30
+ }
31
+ let n = Number.parseFloat(a);
32
+ if (Number.isNaN(n)) {
33
+ n = def;
34
+ }
35
+ if (a.endsWith("ms")) {
36
+ return n;
37
+ }
38
+ if (a.endsWith("s")) {
39
+ return n * 1000;
40
+ }
41
+ if (a.endsWith("min")) {
42
+ return n * 60 * 1000;
43
+ }
44
+ return n;
45
+ }
46
+ }
47
+ //# sourceMappingURL=HtmlControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HtmlControl.js","sourceRoot":"","sources":["../../src/ui/HtmlControl.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAI,MAAc,CAAC,OAAO,KAAK,EAAE,CAAC;AAC/C,OAAO,CAAC,MAAM,GAAG,CAAC,OAAO,EAAE,EAAqB,EAAE,EAAE;IAChD,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACvC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,OAAgB,WAAY,SAAQ,WAAW;IAEzD,iBAAiB;QAEb,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,WAAW;QAEP,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE;YAEtB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAEzB,CAAC,CAAC,EAAE,CAAC;QAEL,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,EAAC,CAAC,CAAA;QACjE,OAAO,KAAK,CAAC;IACjB,CAAC;IAIS,oBAAoB,CAAC,IAAY,EAAE,GAAW;QACpD,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,CAAC,EAAE,CAAC;YACL,OAAO,GAAG,CAAC;QACf,CAAC;QACD,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAES,kBAAkB,CAAC,IAAY,EAAE,GAAW;QAClD,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,CAAC,EAAE,CAAC;YACL,OAAO,GAAG,CAAC;QACf,CAAC;QACD,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,CAAC,GAAG,GAAG,CAAC;QACZ,CAAC;QACD,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,OAAO,CAAC,CAAC;QACb,CAAC;QACD,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,OAAO,CAAC,CAAC;IACb,CAAC;CAEJ"}
@@ -0,0 +1,53 @@
1
+ import { StringHelper } from "./StringHelper.js";
2
+ export class PropertyStore {
3
+ static register(key, fx) {
4
+ this.properties.set(key, fx);
5
+ }
6
+ static setProperty(element, key, value) {
7
+ switch (key) {
8
+ case "text":
9
+ case "textContent":
10
+ element.textContent = value?.toString();
11
+ return;
12
+ case "innerHTML":
13
+ element.innerHTML = value?.toString();
14
+ return;
15
+ case "style":
16
+ case "class":
17
+ element.setAttribute(key, value?.toString());
18
+ return;
19
+ }
20
+ const handler = this.properties.get(key);
21
+ if (handler) {
22
+ handler(element, value);
23
+ return;
24
+ }
25
+ if (key.startsWith("style")) {
26
+ key = StringHelper.fromCamelToHyphen(key.substring(5));
27
+ element.style.setProperty(key, value);
28
+ return;
29
+ }
30
+ element.setAttribute(key, value);
31
+ }
32
+ }
33
+ PropertyStore.properties = new Map();
34
+ PropertyStore.register("style-display", (e, v) => {
35
+ if (typeof v === "boolean") {
36
+ if (v) {
37
+ if (e.style.display === "none") {
38
+ e.style.removeProperty("display");
39
+ }
40
+ return;
41
+ }
42
+ e.style.display = "none";
43
+ return;
44
+ }
45
+ e.style.display = v?.toString() ?? "";
46
+ });
47
+ PropertyStore.register("event-click", (e, v) => {
48
+ e.addEventListener("click", v);
49
+ });
50
+ PropertyStore.register("event-input", (e, v) => {
51
+ e.addEventListener("input", v);
52
+ });
53
+ //# sourceMappingURL=PropertyStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyStore.js","sourceRoot":"","sources":["../../src/ui/PropertyStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,OAAO,aAAa;IAItB,MAAM,CAAC,QAAQ,CAAC,GAAW,EAAE,EAA8C;QACvE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,OAAoB,EAAE,GAAW,EAAE,KAAU;QAC5D,QAAO,GAAG,EAAE,CAAC;YACT,KAAK,MAAM,CAAC;YACZ,KAAK,aAAa;gBACd,OAAO,CAAC,WAAW,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAC;gBACxC,OAAO;YACX,KAAK,WAAW;gBACZ,OAAO,CAAC,SAAS,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAC;gBACtC,OAAO;YACX,KAAK,OAAO,CAAC;YACb,KAAK,OAAO;gBACR,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC7C,OAAO;QACf,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACxB,OAAO;QACX,CAAC;QAED,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,GAAG,GAAG,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACtC,OAAO;QACX,CAAC;QAED,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;;AAlCc,wBAAU,GAAyD,IAAI,GAAG,EAAE,CAAC;AAqChG,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;IAC7C,IAAI,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,CAAC,EAAE,CAAC;YACJ,IAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;gBAC5B,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC;YACD,OAAO;QACX,CAAC;QACD,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACzB,OAAO;IACX,CAAC;IACD,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC1C,CAAC,CAAC,CAAC;AAIH,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;IAC3C,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;IAC3C,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,69 @@
1
+ export class StringHelper {
2
+ static escapeRegExp(text) {
3
+ return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
4
+ }
5
+ static createContainsRegExp(text) {
6
+ return new RegExp(this.escapeRegExp(text), "i");
7
+ }
8
+ static createContainsAnyWordRegExp(text) {
9
+ return new RegExp(text.split(/\s+/g).map((x) => `(${this.escapeRegExp(x)})`).join("|"), "i");
10
+ }
11
+ static containsIgnoreCase(source, test) {
12
+ if (!source) {
13
+ return false;
14
+ }
15
+ if (!test) {
16
+ return true;
17
+ }
18
+ return this.createContainsRegExp(test).test(source);
19
+ }
20
+ static containsAnyWordIgnoreCase(source, test) {
21
+ if (!source) {
22
+ return false;
23
+ }
24
+ if (!test) {
25
+ return true;
26
+ }
27
+ return this.createContainsAnyWordRegExp(test).test(source);
28
+ }
29
+ static fromCamelToHyphen(input) {
30
+ return input.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
31
+ }
32
+ static fromCamelToUnderscore(input) {
33
+ return input.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
34
+ }
35
+ static fromCamelToPascal(input) {
36
+ return input[0].toUpperCase() + input.substr(1);
37
+ }
38
+ static fromHyphenToCamel(input) {
39
+ return input.replace(/-([a-z])/g, (g) => g[1].toUpperCase());
40
+ }
41
+ static fromUnderscoreToCamel(input) {
42
+ return input.replace(/\_([a-z])/g, (g) => g[1].toUpperCase());
43
+ }
44
+ static fromPascalToCamel(input) {
45
+ return input[0].toLowerCase() + input.substr(1);
46
+ }
47
+ static fromPascalToTitleCase(s) {
48
+ return s.replace(/([A-Z])/gm, (x, g, i) => i ? " " + x : x);
49
+ }
50
+ ;
51
+ static parseTime(text, def = 0) {
52
+ text = text?.trim();
53
+ if (!text) {
54
+ return def;
55
+ }
56
+ const time = parseFloat(text);
57
+ if (text.endsWith("ms")) {
58
+ return time;
59
+ }
60
+ if (text.endsWith("s")) {
61
+ return time * 1000;
62
+ }
63
+ if (text.endsWith("min")) {
64
+ return time * 60 * 1000;
65
+ }
66
+ return time;
67
+ }
68
+ }
69
+ //# sourceMappingURL=StringHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StringHelper.js","sourceRoot":"","sources":["../../src/ui/StringHelper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import { PropertyStore } from "./PropertyStore.js";
2
+ export class XNode {
3
+ static create(
4
+ // eslint-disable-next-line @typescript-eslint/ban-types
5
+ name, attribs, ...nodes) {
6
+ if (typeof name === "function") {
7
+ return name(attribs ?? {}, ...nodes);
8
+ }
9
+ return new XNode(name, attribs, nodes);
10
+ }
11
+ static render(root, node) {
12
+ return node.render(root);
13
+ }
14
+ static append(root, node) {
15
+ return node.appendTo(root);
16
+ }
17
+ constructor(name, attributes, children) {
18
+ this.name = name;
19
+ this.attributes = attributes;
20
+ this.children = children;
21
+ }
22
+ appendTo(parent, doc = parent.ownerDocument ?? document) {
23
+ const element = doc.createElement(this.name);
24
+ this.render(element);
25
+ parent.appendChild(element);
26
+ return element;
27
+ }
28
+ render(root) {
29
+ const { attributes, children } = this;
30
+ if (attributes) {
31
+ for (const key in attributes) {
32
+ if (Object.prototype.hasOwnProperty.call(attributes, key)) {
33
+ PropertyStore.setProperty(root, key, attributes[key]);
34
+ }
35
+ }
36
+ }
37
+ if (children) {
38
+ for (const iterator of children.flat(2)) {
39
+ switch (typeof iterator) {
40
+ case "object":
41
+ const child = root.ownerDocument.createElement(iterator.name);
42
+ iterator.render(child);
43
+ root.appendChild(child);
44
+ continue;
45
+ case "boolean":
46
+ if (!iterator) {
47
+ continue;
48
+ }
49
+ break;
50
+ }
51
+ root.append(iterator?.toString());
52
+ }
53
+ }
54
+ return root;
55
+ }
56
+ renderToString(nest = "") {
57
+ const { name, attributes, children } = this;
58
+ let a = "";
59
+ if (attributes) {
60
+ for (const key in attributes) {
61
+ if (Object.prototype.hasOwnProperty.call(attributes, key)) {
62
+ const element = attributes[key];
63
+ a += ` ${key}=${JSON.stringify(element)}`;
64
+ }
65
+ }
66
+ }
67
+ if (this.children) {
68
+ for (const child of this.children) {
69
+ if (typeof child === "string") {
70
+ children.push(child);
71
+ continue;
72
+ }
73
+ if (!child) {
74
+ continue;
75
+ }
76
+ children.push(child.renderToString(nest + "\t"));
77
+ }
78
+ }
79
+ if (!name) {
80
+ return `\n${nest}\t${children.join("\n\t")}`;
81
+ }
82
+ return `${nest}<${name}${a}>\n${nest}\t${children.join("\n\t")}\n${nest}</${name}>`;
83
+ }
84
+ }
85
+ //# sourceMappingURL=XNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XNode.js","sourceRoot":"","sources":["../../src/ui/XNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,OAAO,KAAK;IAEP,MAAM,CAAC,MAAM;IAChB,wDAAwD;IACxD,IAAuB,EACvB,OAA4B,EAC5B,GAAI,KAAyB;QAC7B,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,GAAI,KAAK,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,IAA8B,EAAE,IAAW;QACrD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAW,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,IAA8B,EAAE,IAAW;QACrD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAW,CAAC,CAAC;IACtC,CAAC;IAED,YACoB,IAAY,EACZ,UAA+B,EAC/B,QAA4B;QAF5B,SAAI,GAAJ,IAAI,CAAQ;QACZ,eAAU,GAAV,UAAU,CAAqB;QAC/B,aAAQ,GAAR,QAAQ,CAAoB;IAGhD,CAAC;IAEM,QAAQ,CAAC,MAAmB,EAAE,MAAgB,MAAM,CAAC,aAAa,IAAI,QAAQ;QACjF,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,OAAO,CAAC;IACnB,CAAC;IAEM,MAAM,CAAC,IAAiB;QAC3B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QACtC,IAAI,UAAU,EAAE,CAAC;YACb,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC3B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC;oBACxD,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1D,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACX,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtC,QAAO,OAAO,QAAQ,EAAE,CAAC;oBACrB,KAAK,QAAQ;wBACT,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;wBAC9D,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBACvB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;wBACxB,SAAS;oBACb,KAAK,SAAS;wBACV,IAAG,CAAC,QAAQ,EAAE,CAAC;4BACX,SAAS;wBACb,CAAC;wBACD,MAAM;gBACd,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YACtC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,cAAc,CAAC,IAAI,GAAG,EAAE;QAC3B,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,IAAI,UAAU,EAAE,CAAC;YACb,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC3B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC;oBACxD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;oBAChC,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,CAAC;YACL,CAAC;QACL,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC5B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACrB,SAAS;gBACb,CAAC;gBACD,IAAI,CAAC,KAAK,EAAE,CAAC;oBACT,SAAS;gBACb,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;YACrD,CAAC;QACL,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,KAAK,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACjD,CAAC;QACD,OAAO,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC;IACxF,CAAC;CAEJ"}
@@ -0,0 +1,24 @@
1
+ import HtmlControl from "../HtmlControl.js";
2
+ import { XNode } from "../XNode.js";
3
+ import "./App.css";
4
+ import "../file-list/FileList.js";
5
+ export default class App extends HtmlControl {
6
+ async prepare() {
7
+ this.oninput = (e) => {
8
+ this.fileList.setAttribute("search", this.search.value);
9
+ this.fileList.setAttribute("packed", this.packed.checked ? "true" : "false");
10
+ };
11
+ XNode.render(this, XNode.create("div", null,
12
+ XNode.create("header", null,
13
+ XNode.create("input", { type: "search" }),
14
+ XNode.create("input", { type: "checkbox", checked: "true" }),
15
+ " Only Packed"),
16
+ XNode.create("main", null,
17
+ XNode.create("file-list", null))));
18
+ this.fileList = this.querySelector("file-list");
19
+ this.search = this.querySelector(`input[type="search"]`);
20
+ this.packed = this.querySelector(`input[type="checkbox"]`);
21
+ }
22
+ }
23
+ customElements.define("app-container", App);
24
+ //# sourceMappingURL=App.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../../../src/ui/app/App.tsx"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,WAAW,CAAC;AAEnB,OAAO,0BAA0B,CAAC;AAElC,MAAM,CAAC,OAAO,OAAO,GAAI,SAAQ,WAAW;IAMxC,KAAK,CAAC,OAAO;QAET,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACjF,CAAC,CAAC;QAEF,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;YACf;gBACI,wBAAO,IAAI,EAAC,QAAQ,GAAE;gBACtB,wBAAO,IAAI,EAAC,UAAU,EAAC,OAAO,EAAC,MAAM,GAAE;+BAClC;YACT;gBACI,+BAAuB,CACpB,CACL,CAAC,CAAC;QAER,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAgB,CAAC;QAC/D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAqB,CAAC;QAC7E,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAqB,CAAC;IACnF,CAAC;CACJ;AAED,cAAc,CAAC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ export const sleep = (n, signal) => new Promise((resolve, reject) => {
2
+ const c = setTimeout(() => {
3
+ if (signal?.aborted) {
4
+ return;
5
+ }
6
+ resolve();
7
+ }, n);
8
+ signal?.addEventListener("abort", () => {
9
+ reject("aborted");
10
+ clearTimeout(c);
11
+ });
12
+ });
13
+ //# sourceMappingURL=sleep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep.js","sourceRoot":"","sources":["../../../src/ui/core/sleep.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,MAAoB,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IACpF,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE;QACtB,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YAClB,OAAO;QACX,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC,EAAE,CAAC,CAAC,CAAC;IACN,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACnC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClB,YAAY,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,51 @@
1
+ import "../core.js";
2
+ import { sleep } from "../core/sleep.js";
3
+ import HtmlControl from "../HtmlControl.js";
4
+ import { XNode } from "../XNode.js";
5
+ import "./FileList.css";
6
+ const logError = (error) => {
7
+ if (/abort|cancel|timeout/i.test(error?.stack ?? error)) {
8
+ return;
9
+ }
10
+ console.error(error);
11
+ };
12
+ class FileList extends HtmlControl {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.ac = new AbortController();
16
+ }
17
+ attributeChangedCallback(name, oldValue, newValue) {
18
+ switch (name) {
19
+ case "search":
20
+ case "packed":
21
+ this.ac.abort();
22
+ this.ac = new AbortController();
23
+ this.updateSearch(this.ac.signal).catch(logError);
24
+ break;
25
+ }
26
+ }
27
+ async prepare() {
28
+ this.updateSearch(this.ac.signal).catch(logError);
29
+ }
30
+ async updateSearch(signal) {
31
+ await sleep(250, signal);
32
+ const search = this.getAttribute("search") || "";
33
+ const packed = this.getAttribute("packed") || "true";
34
+ const url = new URL("/$search", location.href);
35
+ url.searchParams.set("search", search);
36
+ url.searchParams.set("packed", packed);
37
+ const rs = await fetch(url, { signal });
38
+ const items = await rs.json();
39
+ this.innerHTML = "";
40
+ for (const { name, fullPath, isPacked } of items) {
41
+ XNode.append(this, XNode.create("div", null,
42
+ XNode.create("a", { href: "/" + fullPath.replace(".js", ".html") },
43
+ isPacked ? "🌐" : "📄",
44
+ name)));
45
+ }
46
+ }
47
+ }
48
+ FileList.observedAttributes = ["search", "packed"];
49
+ export default FileList;
50
+ customElements.define("file-list", FileList);
51
+ //# sourceMappingURL=FileList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileList.js","sourceRoot":"","sources":["../../../src/ui/file-list/FileList.tsx"],"names":[],"mappings":"AAAA,OAAO,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,gBAAgB,CAAC;AAExB,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,EAAE;IACvB,IAAG,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO;IACX,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC,CAAA;AAED,MAAqB,QAAS,SAAQ,WAAW;IAAjD;;QAII,OAAE,GAAG,IAAI,eAAe,EAAE,CAAC;IAoC/B,CAAC;IAlCG,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ;QAC7C,QAAO,IAAI,EAAE,CAAC;YACV,KAAK,QAAQ,CAAC;YACd,KAAK,QAAQ;gBACT,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;gBAChC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAClD,MAAM;QACd,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACV,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAmB;QAClC,MAAM,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAE9B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QAEpB,KAAI,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,KAAK,EAAE,CAAC;YAC9C,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;gBACf,oBAAG,IAAI,EAAE,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;oBAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;oBAAG,IAAI,CAAK,CACnF,CAAC,CAAA;QACX,CAAC;IACL,CAAC;;AApCM,2BAAkB,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,AAAvB,CAAwB;eAFhC,QAAQ;AA0C7B,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@package-verse/esmpack",
3
- "version": "1.0.21",
3
+ "version": "1.0.25",
4
4
  "description": "ESM Pack Packer and Web Server with PostCSS and ESM Loader",
5
5
  "homepage": "https://github.com/package-verse/esmpack#readme",
6
6
  "bugs": {
@@ -7,12 +7,28 @@ import { createProxyMiddleware, fixRequestBody } from "http-proxy-middleware";
7
7
  import colors from "colors";
8
8
  import sendJSHost from "./send/sendJSHost.js";
9
9
  import sendNonJSModule from "./send/sendNonJSModule.js";
10
+ import sendFileList from "./send/sendFileList.js";
10
11
 
11
12
 
12
13
  let middleware;
13
14
 
14
15
  export default function WebServer(req: IncomingMessage, res: ServerResponse) {
15
- const pathname = new URL(req.url, "http://a").pathname.substring(1);
16
+ const url = new URL(req.url, "http://a");
17
+ const pathname = url.pathname.substring(1);
18
+
19
+ if (!pathname) {
20
+ // send list...
21
+ res.writeHead(301, {
22
+ "location": "/node_modules/@package-verse/esmpack/App.html"
23
+ })
24
+ res.end();
25
+ return;
26
+ }
27
+
28
+ if (pathname === "$search") {
29
+ sendFileList(url, req, res);
30
+ return;
31
+ }
16
32
 
17
33
  // check if path exists...
18
34
  const fullPath = path.resolve(ProcessOptions.cwd, pathname);
@@ -28,7 +28,9 @@ for (const [key] of Object.entries(packageInfo.dependencies)) {
28
28
 
29
29
  const { exports: moduleExports } = modulePackageJson;
30
30
  if(moduleExports) {
31
- moduleMain = moduleExports["."]["default"] || moduleMain;
31
+ moduleMain = moduleExports["."]?.["module"]?.["default"]
32
+ || moduleExports["."]?.["default"]
33
+ || moduleMain;
32
34
  }
33
35
 
34
36
  if (moduleMain) {
@@ -0,0 +1,49 @@
1
+ import { readdirSync, readFileSync, statSync } from "node:fs";
2
+ import { IncomingMessage, ServerResponse } from "node:http";
3
+ import { join, relative } from "node:path";
4
+ import { ProcessOptions } from "../../ProcessArgs.js";
5
+
6
+
7
+ export default function sendFileList(url: URL, req: IncomingMessage, res: ServerResponse) {
8
+
9
+
10
+
11
+ const packed = /yes|true/i.test(url.searchParams.get("packed"));
12
+
13
+ const search = url.searchParams.get("search") || "";
14
+
15
+ const entries = readdirSync(ProcessOptions.cwd, { recursive: true, withFileTypes: true})
16
+ .filter((d) =>
17
+ !d.isDirectory()
18
+ && !d.name.startsWith(".")
19
+ && d.name.endsWith(".js")
20
+ && d.name !== "node_modules"
21
+ && !d.parentPath.replaceAll("\\", "/").includes("node_modules/")
22
+ && (search ? d.name.toLowerCase().includes(search.toLowerCase()) : true)
23
+ )
24
+ .map((d) => {
25
+ const fullPath = relative(ProcessOptions.cwd, join(d.parentPath, d.name)).replaceAll("\\", "/");
26
+ let size = 0, mtime = new Date();
27
+ try {
28
+ const s = statSync(fullPath);
29
+ size = s.size;
30
+ mtime = s.mtime;
31
+ } catch {}
32
+ const isPacked = /\@Pack/.test(readFileSync(fullPath, "utf-8"));
33
+ return { name: d.name, fullPath, isPacked, size, mtime };
34
+ })
35
+ .filter((x) => packed ? x.isPacked : true)
36
+ .sort((a, b) => {
37
+ // if (a.isDir !== b.isDir) return a.isDir ? -1 : 1;
38
+ return a.name.localeCompare(b.name);
39
+ });
40
+
41
+
42
+ const text = JSON.stringify(entries);
43
+
44
+ res.writeHead(200, {
45
+ "Content-Type": "text/json",
46
+ "cache-control": "no-cache"
47
+ });
48
+ res.end(text);
49
+ }