about summary refs log tree commit diff
path: root/src/third-party/uri/index.js
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2022-09-22 19:28:25 -0500
committerPaul Frazee <pfrazee@gmail.com>2022-09-22 19:28:25 -0500
commitaabde2b401e725090232f203f23152ee1d50d566 (patch)
tree6c1da614bf7f1ce78b00dde5846338d42fc29012 /src/third-party/uri/index.js
parent5193a5b48e66db37e6a27ebcec13b6312ae08799 (diff)
downloadvoidsky-aabde2b401e725090232f203f23152ee1d50d566.tar.zst
Replace mock-api with real api
Diffstat (limited to 'src/third-party/uri/index.js')
-rw-r--r--src/third-party/uri/index.js136
1 files changed, 136 insertions, 0 deletions
diff --git a/src/third-party/uri/index.js b/src/third-party/uri/index.js
new file mode 100644
index 000000000..92f560331
--- /dev/null
+++ b/src/third-party/uri/index.js
@@ -0,0 +1,136 @@
+"use strict";
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __export = (target, all) => {
+  for (var name in all)
+    __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+  if (from && typeof from === "object" || typeof from === "function") {
+    for (let key of __getOwnPropNames(from))
+      if (!__hasOwnProp.call(to, key) && key !== except)
+        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+  }
+  return to;
+};
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+
+// src/index.ts
+var src_exports = {};
+__export(src_exports, {
+  ADX_URI_REGEX: () => ADX_URI_REGEX,
+  AdxUri: () => AdxUri
+});
+module.exports = __toCommonJS(src_exports);
+var ADX_URI_REGEX = /^(adx:\/\/)?((?:did:[a-z0-9:%-]+)|(?:[a-z][a-z0-9.:-]*))(\/[^?#\s]*)?(\?[^#\s]+)?(#[^\s]+)?$/i;
+var RELATIVE_REGEX = /^(\/[^?#\s]*)?(\?[^#\s]+)?(#[^\s]+)?$/i;
+var AdxUri = class {
+  constructor(uri, base) {
+    let parsed;
+    if (base) {
+      parsed = parse(base);
+      if (!parsed) {
+        throw new Error(`Invalid adx uri: ${base}`);
+      }
+      const relativep = parseRelative(uri);
+      if (!relativep) {
+        throw new Error(`Invalid path: ${uri}`);
+      }
+      Object.assign(parsed, relativep);
+    } else {
+      parsed = parse(uri);
+      if (!parsed) {
+        throw new Error(`Invalid adx uri: ${uri}`);
+      }
+    }
+    this.hash = parsed.hash;
+    this.host = parsed.host;
+    this.pathname = parsed.pathname;
+    this.searchParams = parsed.searchParams;
+  }
+  get protocol() {
+    return "adx:";
+  }
+  get origin() {
+    return `adx://${this.host}`;
+  }
+  get hostname() {
+    return this.host;
+  }
+  set hostname(v) {
+    this.host = v;
+  }
+  get search() {
+    return this.searchParams.toString();
+  }
+  set search(v) {
+    this.searchParams = new URLSearchParams(v);
+  }
+  get collection() {
+    return this.pathname.split("/").filter(Boolean)[0] || "";
+  }
+  set collection(v) {
+    const parts = this.pathname.split("/").filter(Boolean);
+    parts[0] = v;
+    this.pathname = parts.join("/");
+  }
+  get recordKey() {
+    return this.pathname.split("/").filter(Boolean)[1] || "";
+  }
+  set recordKey(v) {
+    const parts = this.pathname.split("/").filter(Boolean);
+    if (!parts[0])
+      parts[0] = "undefined";
+    parts[1] = v;
+    this.pathname = parts.join("/");
+  }
+  get href() {
+    return this.toString();
+  }
+  toString() {
+    let path = this.pathname || "/";
+    if (!path.startsWith("/")) {
+      path = `/${path}`;
+    }
+    let qs = this.searchParams.toString();
+    if (qs && !qs.startsWith("?")) {
+      qs = `?${qs}`;
+    }
+    let hash = this.hash;
+    if (hash && !hash.startsWith("#")) {
+      hash = `#${hash}`;
+    }
+    return `adx://${this.host}${path}${qs}${hash}`;
+  }
+};
+function parse(str) {
+  const match = ADX_URI_REGEX.exec(str);
+  if (match) {
+    return {
+      hash: match[5] || "",
+      host: match[2] || "",
+      pathname: match[3] || "",
+      searchParams: new URLSearchParams(match[4] || "")
+    };
+  }
+  return void 0;
+}
+function parseRelative(str) {
+  const match = RELATIVE_REGEX.exec(str);
+  if (match) {
+    return {
+      hash: match[3] || "",
+      pathname: match[1] || "",
+      searchParams: new URLSearchParams(match[2] || "")
+    };
+  }
+  return void 0;
+}
+// Annotate the CommonJS export names for ESM import in node:
+0 && (module.exports = {
+  ADX_URI_REGEX,
+  AdxUri
+});
+//# sourceMappingURL=index.js.map