@aeptus/aexeo-emdash 0.6.0 → 0.8.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.
@@ -1 +1 @@
1
- {"version":3,"file":"configured.d.ts","sourceRoot":"","sources":["../src/configured.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAmFrD,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEhC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEvC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEvC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;CACvC;AAED,wBAAgB,YAAY,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAyG3E;AAID,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"configured.d.ts","sourceRoot":"","sources":["../src/configured.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAmFrD,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEhC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEvC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEvC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;CACvC;AAED,wBAAgB,YAAY,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CA2H3E;AAID,eAAe,YAAY,CAAC"}
@@ -528,6 +528,7 @@ async function buildFindingsPayload(ctx) {
528
528
  if (cached !== void 0 && cached !== null) {
529
529
  sitewide.push(...cached.findings);
530
530
  }
531
+ const layerBreakdown = computeLayerBreakdown([...findings, ...sitewide]);
531
532
  return {
532
533
  routes,
533
534
  findings,
@@ -538,9 +539,31 @@ async function buildFindingsPayload(ctx) {
538
539
  warnings: findings.filter((f) => f.severity === "warning").length,
539
540
  documentsIndexed: documents.size
540
541
  },
542
+ layerBreakdown,
541
543
  sitewideFindings: sitewide
542
544
  };
543
545
  }
546
+ function computeLayerBreakdown(findings) {
547
+ const ordered = [
548
+ "retrievability",
549
+ "citability",
550
+ "absorbability",
551
+ "entity_legitimacy"
552
+ ];
553
+ const buckets = /* @__PURE__ */ new Map();
554
+ for (const layer of ordered) {
555
+ buckets.set(layer, { layer, total: 0, errors: 0, warnings: 0 });
556
+ }
557
+ for (const finding of findings) {
558
+ const primary = finding.layers?.primary ?? "citability";
559
+ const bucket = buckets.get(primary);
560
+ if (bucket === void 0) continue;
561
+ bucket.total += 1;
562
+ if (finding.severity === "error") bucket.errors += 1;
563
+ else bucket.warnings += 1;
564
+ }
565
+ return ordered.map((layer) => buckets.get(layer));
566
+ }
544
567
  var MANIFEST_FINDINGS_KEY = "meta:facts-findings";
545
568
  async function persistManifestStateFindings(ctx) {
546
569
  const findings = await deriveManifestStateFindings(ctx);
@@ -558,7 +581,8 @@ async function deriveManifestStateFindings(ctx) {
558
581
  line: 0,
559
582
  column: 0,
560
583
  scope: "sitewide",
561
- suggestion: null
584
+ suggestion: null,
585
+ layers: { primary: "entity_legitimacy", secondaries: [] }
562
586
  }
563
587
  ];
564
588
  }
@@ -582,7 +606,8 @@ async function deriveManifestStateFindings(ctx) {
582
606
  line: 0,
583
607
  column: 0,
584
608
  scope: "sitewide",
585
- suggestion: null
609
+ suggestion: null,
610
+ layers: { primary: "entity_legitimacy", secondaries: [] }
586
611
  });
587
612
  }
588
613
  const errCount = result.assessment.mismatches.filter(
@@ -598,7 +623,8 @@ async function deriveManifestStateFindings(ctx) {
598
623
  line: 0,
599
624
  column: 0,
600
625
  scope: "sitewide",
601
- suggestion: null
626
+ suggestion: null,
627
+ layers: { primary: "entity_legitimacy", secondaries: [] }
602
628
  });
603
629
  }
604
630
  return out;
@@ -743,6 +769,369 @@ async function handleSave(ctx, body) {
743
769
  return { data: { saved: true } };
744
770
  }
745
771
 
772
+ // src/presence-check.ts
773
+ var FETCH_TIMEOUT_MS = 5e3;
774
+ var USER_AGENT = "aexeo-emdash-plugin/0.8 (+https://github.com/schiste/Aexeo; entity-presence diagnostic)";
775
+ var SOURCE_NAMES = [
776
+ "wikipedia",
777
+ "wikidata",
778
+ "github",
779
+ "rdap",
780
+ "common_crawl"
781
+ ];
782
+ function entityFromManifest(manifest) {
783
+ if (manifest === null) return null;
784
+ const org = manifest.organization;
785
+ if (!org || typeof org.name !== "string" || org.name.length === 0) {
786
+ return null;
787
+ }
788
+ const result = { name: org.name };
789
+ if (typeof org.website === "string") result.website = org.website;
790
+ if (Array.isArray(org.aliases)) result.aliases = org.aliases;
791
+ return result;
792
+ }
793
+ async function checkAllSources(input, fetcher = fetch) {
794
+ const checks = [
795
+ checkWikipedia(input, fetcher),
796
+ checkWikidata(input, fetcher),
797
+ checkGitHub(input, fetcher),
798
+ checkRdap(input, fetcher),
799
+ checkCommonCrawl(input, fetcher)
800
+ ];
801
+ const settled = await Promise.allSettled(checks);
802
+ return settled.map((result, idx) => {
803
+ if (result.status === "fulfilled") return result.value;
804
+ return unreachable(
805
+ SOURCE_NAMES[idx],
806
+ result.reason instanceof Error ? result.reason.message : String(result.reason)
807
+ );
808
+ });
809
+ }
810
+ async function checkWikipedia(input, fetcher) {
811
+ const url = new URL("https://en.wikipedia.org/w/api.php");
812
+ url.searchParams.set("action", "opensearch");
813
+ url.searchParams.set("search", input.name);
814
+ url.searchParams.set("limit", "1");
815
+ url.searchParams.set("namespace", "0");
816
+ url.searchParams.set("format", "json");
817
+ try {
818
+ const res = await timedFetch(fetcher, url.toString());
819
+ if (!res.ok) return unreachable("wikipedia", `HTTP ${res.status}`);
820
+ const body = await res.json();
821
+ if (!Array.isArray(body) || body.length < 4) {
822
+ return unreachable("wikipedia", "unexpected response shape");
823
+ }
824
+ const titles = body[1];
825
+ const descriptions = body[2];
826
+ const urls = body[3];
827
+ if (!Array.isArray(titles) || !Array.isArray(urls) || titles.length === 0) {
828
+ return notFound("wikipedia");
829
+ }
830
+ const title = String(titles[0]);
831
+ if (!fuzzyMatch(title, input.name)) {
832
+ return notFound("wikipedia");
833
+ }
834
+ const articleUrl = String(urls[0] ?? "");
835
+ const description = Array.isArray(descriptions) ? String(descriptions[0] ?? "") : "";
836
+ return found("wikipedia", {
837
+ label: title,
838
+ url: articleUrl,
839
+ extra: description.length > 0 ? description : void 0
840
+ });
841
+ } catch (error) {
842
+ return unreachable("wikipedia", errMsg(error));
843
+ }
844
+ }
845
+ async function checkWikidata(input, fetcher) {
846
+ const url = new URL("https://www.wikidata.org/w/api.php");
847
+ url.searchParams.set("action", "wbsearchentities");
848
+ url.searchParams.set("search", input.name);
849
+ url.searchParams.set("language", "en");
850
+ url.searchParams.set("format", "json");
851
+ url.searchParams.set("limit", "1");
852
+ try {
853
+ const res = await timedFetch(fetcher, url.toString());
854
+ if (!res.ok) return unreachable("wikidata", `HTTP ${res.status}`);
855
+ const body = await res.json();
856
+ const top = body.search?.[0];
857
+ if (!top || typeof top.id !== "string") {
858
+ return notFound("wikidata");
859
+ }
860
+ const label = top.label ?? input.name;
861
+ if (!fuzzyMatch(label, input.name)) {
862
+ return notFound("wikidata");
863
+ }
864
+ return found("wikidata", {
865
+ label: `${top.id}${top.label ? ` \u2014 ${top.label}` : ""}`,
866
+ url: top.concepturi ?? `https://www.wikidata.org/wiki/${top.id}`,
867
+ extra: top.description
868
+ });
869
+ } catch (error) {
870
+ return unreachable("wikidata", errMsg(error));
871
+ }
872
+ }
873
+ async function checkGitHub(input, fetcher) {
874
+ const handle = sanitizeGitHubHandle(input.name);
875
+ if (handle === null) {
876
+ return skipped(
877
+ "github",
878
+ "entity name contains characters that aren't valid in a GitHub handle"
879
+ );
880
+ }
881
+ const url = `https://api.github.com/users/${encodeURIComponent(handle)}`;
882
+ try {
883
+ const res = await timedFetch(fetcher, url, {
884
+ // GitHub recommends Accept header for stable shape; without
885
+ // it the API can return either v3 or experimental shapes.
886
+ headers: { Accept: "application/vnd.github+json" }
887
+ });
888
+ if (res.status === 404) return notFound("github");
889
+ if (res.status === 403 || res.status === 429) {
890
+ return unreachable("github", "rate-limited (try Refresh later)");
891
+ }
892
+ if (!res.ok) return unreachable("github", `HTTP ${res.status}`);
893
+ const body = await res.json();
894
+ if (typeof body.login !== "string") {
895
+ return unreachable("github", "unexpected response shape");
896
+ }
897
+ const display = body.name ?? body.login;
898
+ const kind = body.type === "Organization" ? "Org" : "User";
899
+ const repos = typeof body.public_repos === "number" ? `${body.public_repos} public repo${body.public_repos === 1 ? "" : "s"}` : void 0;
900
+ return found("github", {
901
+ label: `${kind}: ${display}`,
902
+ url: body.html_url ?? `https://github.com/${body.login}`,
903
+ extra: repos
904
+ });
905
+ } catch (error) {
906
+ return unreachable("github", errMsg(error));
907
+ }
908
+ }
909
+ async function checkRdap(input, fetcher) {
910
+ const host = extractHost(input.website);
911
+ if (host === null) {
912
+ return skipped(
913
+ "rdap",
914
+ "no website URL in manifest, can't check domain age"
915
+ );
916
+ }
917
+ const url = `https://rdap.org/domain/${encodeURIComponent(host)}`;
918
+ try {
919
+ const res = await timedFetch(fetcher, url);
920
+ if (res.status === 404) return notFound("rdap");
921
+ if (!res.ok) return unreachable("rdap", `HTTP ${res.status}`);
922
+ const body = await res.json();
923
+ const reg = (body.events ?? []).find(
924
+ (e) => e.eventAction === "registration"
925
+ );
926
+ if (!reg || typeof reg.eventDate !== "string") {
927
+ return found("rdap", {
928
+ label: host,
929
+ extra: "registered (date not disclosed by registry)"
930
+ });
931
+ }
932
+ const ageDays = daysSince(reg.eventDate);
933
+ const ageLabel = ageDays === null ? null : formatAge(ageDays);
934
+ return found("rdap", {
935
+ label: host,
936
+ extra: ageLabel === null ? `registered ${reg.eventDate.slice(0, 10)}` : `registered ${reg.eventDate.slice(0, 10)} (${ageLabel})`
937
+ });
938
+ } catch (error) {
939
+ return unreachable("rdap", errMsg(error));
940
+ }
941
+ }
942
+ async function checkCommonCrawl(input, fetcher) {
943
+ const host = extractHost(input.website);
944
+ if (host === null) {
945
+ return skipped(
946
+ "common_crawl",
947
+ "no website URL in manifest, can't query crawl index"
948
+ );
949
+ }
950
+ const index = "CC-MAIN-2026-15";
951
+ const url = new URL(`https://index.commoncrawl.org/${index}-index`);
952
+ url.searchParams.set("url", host);
953
+ url.searchParams.set("output", "json");
954
+ url.searchParams.set("limit", "1");
955
+ try {
956
+ const res = await timedFetch(fetcher, url.toString());
957
+ if (res.status === 404) return notFound("common_crawl");
958
+ if (!res.ok) return unreachable("common_crawl", `HTTP ${res.status}`);
959
+ const text = (await res.text()).trim();
960
+ if (text.length === 0) return notFound("common_crawl");
961
+ let firstLine = text.split("\n")[0];
962
+ if (firstLine === void 0 || firstLine.length === 0) {
963
+ return notFound("common_crawl");
964
+ }
965
+ let entry;
966
+ try {
967
+ entry = JSON.parse(firstLine);
968
+ } catch {
969
+ return unreachable("common_crawl", "non-JSON response from CDX");
970
+ }
971
+ return found("common_crawl", {
972
+ label: host,
973
+ extra: typeof entry.timestamp === "string" ? `last seen in ${index} at ${formatCdxTimestamp(entry.timestamp)}` : `present in ${index}`
974
+ });
975
+ } catch (error) {
976
+ return unreachable("common_crawl", errMsg(error));
977
+ }
978
+ }
979
+ async function timedFetch(fetcher, url, init) {
980
+ const controller = new AbortController();
981
+ const timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
982
+ try {
983
+ const headers = new Headers(init?.headers);
984
+ if (!headers.has("User-Agent")) headers.set("User-Agent", USER_AGENT);
985
+ return await fetcher(url, {
986
+ ...init,
987
+ headers,
988
+ signal: controller.signal
989
+ });
990
+ } finally {
991
+ clearTimeout(timer);
992
+ }
993
+ }
994
+ function found(source, details) {
995
+ const result = {
996
+ source,
997
+ status: "found",
998
+ label: details.label,
999
+ checkedAt: nowIso()
1000
+ };
1001
+ if (details.url !== void 0) result.url = details.url;
1002
+ if (details.extra !== void 0) result.extra = details.extra;
1003
+ return result;
1004
+ }
1005
+ function notFound(source) {
1006
+ return { source, status: "not_found", checkedAt: nowIso() };
1007
+ }
1008
+ function unreachable(source, error) {
1009
+ return { source, status: "unreachable", error, checkedAt: nowIso() };
1010
+ }
1011
+ function skipped(source, reason) {
1012
+ return { source, status: "skipped", error: reason, checkedAt: nowIso() };
1013
+ }
1014
+ function nowIso() {
1015
+ return (/* @__PURE__ */ new Date()).toISOString();
1016
+ }
1017
+ function errMsg(error) {
1018
+ if (error instanceof Error) {
1019
+ if (error.name === "AbortError") return "timeout (>5s)";
1020
+ return error.message;
1021
+ }
1022
+ return String(error);
1023
+ }
1024
+ function fuzzyMatch(a, b) {
1025
+ const aL = a.toLowerCase().trim();
1026
+ const bL = b.toLowerCase().trim();
1027
+ return aL.includes(bL) || bL.includes(aL);
1028
+ }
1029
+ function sanitizeGitHubHandle(name) {
1030
+ const handle = name.replace(/[\s_]+/g, "-");
1031
+ if (!/^[A-Za-z0-9-]+$/.test(handle) || handle.length > 39) return null;
1032
+ return handle;
1033
+ }
1034
+ function extractHost(website) {
1035
+ if (typeof website !== "string" || website.length === 0) return null;
1036
+ try {
1037
+ const url = new URL(website);
1038
+ return url.hostname || null;
1039
+ } catch {
1040
+ if (/^[a-z0-9.-]+\.[a-z]{2,}$/i.test(website)) return website;
1041
+ return null;
1042
+ }
1043
+ }
1044
+ function daysSince(iso) {
1045
+ const t = Date.parse(iso);
1046
+ if (Number.isNaN(t)) return null;
1047
+ return Math.floor((Date.now() - t) / 864e5);
1048
+ }
1049
+ function formatAge(days) {
1050
+ if (days < 60) return `${days} day${days === 1 ? "" : "s"}`;
1051
+ const months = Math.floor(days / 30);
1052
+ if (months < 24) return `${months} month${months === 1 ? "" : "s"}`;
1053
+ const years = Math.floor(days / 365);
1054
+ const remainderMonths = Math.floor(days % 365 / 30);
1055
+ if (remainderMonths === 0) {
1056
+ return `${years} year${years === 1 ? "" : "s"}`;
1057
+ }
1058
+ return `${years}y ${remainderMonths}mo`;
1059
+ }
1060
+ function formatCdxTimestamp(ts) {
1061
+ if (!/^\d{8}/.test(ts)) return ts;
1062
+ return `${ts.slice(0, 4)}-${ts.slice(4, 6)}-${ts.slice(6, 8)}`;
1063
+ }
1064
+
1065
+ // src/presence-route.ts
1066
+ var CACHE_TTL_MS = 24 * 60 * 60 * 1e3;
1067
+ var PRESENCE_KEY = "presence:current";
1068
+ async function handlePresenceRoute(ctx) {
1069
+ const body = ctx.input ?? {};
1070
+ switch (body.kind) {
1071
+ case "data":
1072
+ return await handleData2(ctx);
1073
+ case "refresh":
1074
+ return await handleRefresh(ctx);
1075
+ default:
1076
+ return {
1077
+ error: {
1078
+ code: "unknown_kind",
1079
+ message: `unknown presence route kind: ${String(body.kind)}`
1080
+ }
1081
+ };
1082
+ }
1083
+ }
1084
+ async function handleData2(ctx) {
1085
+ const manifest = await readStoredFacts(ctx.kv);
1086
+ if (manifest === null) {
1087
+ return wireResponse("no_manifest", [], null, null);
1088
+ }
1089
+ const entity = entityFromManifest(manifest);
1090
+ if (entity === null) {
1091
+ return wireResponse("no_organization", [], null, null);
1092
+ }
1093
+ const cached = await ctx.kv.get(PRESENCE_KEY);
1094
+ if (!cached) {
1095
+ return wireResponse("empty", [], null, entity.name);
1096
+ }
1097
+ if (cached.entityName !== entity.name) {
1098
+ return wireResponse("empty", [], null, entity.name);
1099
+ }
1100
+ const ageMs = ageMillis(cached.generatedAt);
1101
+ const state = ageMs !== null && ageMs > CACHE_TTL_MS ? "stale" : "fresh";
1102
+ return wireResponse(state, cached.results, cached.generatedAt, entity.name);
1103
+ }
1104
+ async function handleRefresh(ctx) {
1105
+ const manifest = await readStoredFacts(ctx.kv);
1106
+ if (manifest === null) {
1107
+ return wireResponse("no_manifest", [], null, null);
1108
+ }
1109
+ const entity = entityFromManifest(manifest);
1110
+ if (entity === null) {
1111
+ return wireResponse("no_organization", [], null, null);
1112
+ }
1113
+ const results = await checkAllSources(entity);
1114
+ const generatedAt = (/* @__PURE__ */ new Date()).toISOString();
1115
+ const payload = {
1116
+ results,
1117
+ generatedAt,
1118
+ entityName: entity.name
1119
+ };
1120
+ await ctx.kv.set(PRESENCE_KEY, payload);
1121
+ return wireResponse("fresh", results, generatedAt, entity.name);
1122
+ }
1123
+ function wireResponse(state, results, generatedAt, entityName) {
1124
+ const ageMinutes = generatedAt === null ? null : Math.max(0, Math.floor((ageMillis(generatedAt) ?? 0) / 6e4));
1125
+ return {
1126
+ data: { state, results, generatedAt, entityName, ageMinutes }
1127
+ };
1128
+ }
1129
+ function ageMillis(iso) {
1130
+ const t = Date.parse(iso);
1131
+ if (Number.isNaN(t)) return null;
1132
+ return Date.now() - t;
1133
+ }
1134
+
746
1135
  // src/suppressions.ts
747
1136
  var NOOP_FILTER = {
748
1137
  apply: (_context, findings) => [...findings]
@@ -802,7 +1191,7 @@ function globToMatcher(pattern) {
802
1191
  }
803
1192
 
804
1193
  // src/version.ts
805
- var PACKAGE_VERSION = "0.6.0";
1194
+ var PACKAGE_VERSION = "0.8.0";
806
1195
 
807
1196
  // src/configured.ts
808
1197
  import { definePlugin } from "emdash";
@@ -900,18 +1289,36 @@ function createPlugin(options = {}) {
900
1289
  // facts-route.ts for the full contract.
901
1290
  facts: {
902
1291
  handler: (ctx) => handleFactsRoute(ctx)
1292
+ },
1293
+ // /presence route serves the layer-4 entity-presence
1294
+ // diagnostic on the /entity-legitimacy admin page. It hits
1295
+ // five free public APIs (Wikipedia, Wikidata, GitHub, RDAP,
1296
+ // Common Crawl) for the configured organization and caches
1297
+ // results in KV for 24h. Multiplexes data / refresh kinds —
1298
+ // see presence-route.ts.
1299
+ presence: {
1300
+ handler: (ctx) => handlePresenceRoute(ctx)
903
1301
  }
904
1302
  },
905
1303
  admin: {
1304
+ // Sidebar ordered around the four-layer GEO model — each pillar
1305
+ // is its own sidebar entry. The root URL `/admin/plugins/<id>/`
1306
+ // routes through the same dispatcher (handlePageLoad treats ""
1307
+ // and "findings" as aliases), so editors landing on the plugin
1308
+ // root see the cross-pillar flat view.
1309
+ //
1310
+ // /document keeps its own entry because per-document inspection
1311
+ // is cross-layer by definition. /findings stays as a flat-view
1312
+ // fallback for triage workflows. /facts is kept as a back-compat
1313
+ // alias for the relocated /entity-legitimacy page; not in the
1314
+ // sidebar to avoid two entries pointing at the same content.
906
1315
  pages: [
907
- // The root URL `/admin/plugins/<id>/` routes through the same
908
- // dispatcher (handlePageLoad treats "" and "findings" as
909
- // aliases). Listing "/" alongside "/findings" here would create
910
- // duplicate "SEO findings" sidebar entries — that was the
911
- // visible 0.1.0 / 0.1.1 bug fixed in 0.1.2.
912
- { path: "/findings", label: "SEO findings" },
1316
+ { path: "/retrievability", label: "Retrievability" },
1317
+ { path: "/citability", label: "Citability" },
1318
+ { path: "/absorbability", label: "Absorbability" },
1319
+ { path: "/entity-legitimacy", label: "Entity legitimacy" },
913
1320
  { path: "/document", label: "Document SEO" },
914
- { path: "/facts", label: "Truth manifest" }
1321
+ { path: "/findings", label: "All findings" }
915
1322
  ],
916
1323
  widgets: [
917
1324
  { id: "aexeo-score", size: "third", title: "SEO score" }
@@ -930,12 +1337,12 @@ async function handleAdminRoute(ctx, collections) {
930
1337
  return renderDocumentPanel(ctx, body.value);
931
1338
  }
932
1339
  if (body.action_id === "refresh_findings") {
933
- return handleRefresh(ctx, collections);
1340
+ return handleRefresh2(ctx, collections);
934
1341
  }
935
1342
  if (body.action_id.startsWith("filter:")) {
936
1343
  return renderFindingsPage(ctx);
937
1344
  }
938
- return notFound(body.action_id);
1345
+ return notFound2(body.action_id);
939
1346
  }
940
1347
  if (body.type === "form_submit") {
941
1348
  if (body.action_id === "view_document") {
@@ -959,9 +1366,9 @@ async function handlePageLoad(ctx, page) {
959
1366
  if (normalized === "document") {
960
1367
  return renderDocumentPanel(ctx);
961
1368
  }
962
- return notFound(page);
1369
+ return notFound2(page);
963
1370
  }
964
- async function handleRefresh(ctx, collections) {
1371
+ async function handleRefresh2(ctx, collections) {
965
1372
  let summary;
966
1373
  try {
967
1374
  summary = await evaluateAndPersistAll(ctx, {
@@ -1200,7 +1607,7 @@ function documentFindingsTable(findings) {
1200
1607
  }))
1201
1608
  };
1202
1609
  }
1203
- function notFound(page) {
1610
+ function notFound2(page) {
1204
1611
  return {
1205
1612
  blocks: [
1206
1613
  { type: "header", text: "Not found" },
@@ -10,8 +10,15 @@ export interface FindingsPayload {
10
10
  warnings: number;
11
11
  documentsIndexed: number;
12
12
  };
13
+ layerBreakdown: LayerBreakdown[];
13
14
  sitewideFindings: Finding[];
14
15
  }
16
+ export interface LayerBreakdown {
17
+ layer: import("./types.js").Layer;
18
+ total: number;
19
+ errors: number;
20
+ warnings: number;
21
+ }
15
22
  export interface RouteSummary {
16
23
  route: string;
17
24
  title: string;
@@ -34,6 +41,7 @@ export interface FindingRow {
34
41
  column: number;
35
42
  scope: string;
36
43
  suggestion: string | null;
44
+ layers?: import("./types.js").RuleLayers;
37
45
  }
38
46
  interface DataRouteOptions {
39
47
  collections: readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"data-route.d.ts","sourceRoot":"","sources":["../src/data-route.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,UAAU,EAEX,MAAM,aAAa,CAAC;AAQrB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAM1C,MAAM,WAAW,eAAe;IAG9B,MAAM,EAAE,YAAY,EAAE,CAAC;IAIvB,QAAQ,EAAE,UAAU,EAAE,CAAC;IAIvB,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IAIF,gBAAgB,EAAE,OAAO,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IAGd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IAIX,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,UAAU,gBAAgB;IACxB,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,SAAS,EAAE,WAAW,CAAC;IAIvB,OAAO,EAAE,OAAO,CAAC;IAIjB,iBAAiB,CAAC,EAAE,OAAO,mBAAmB,EAAE,iBAAiB,CAAC;CACnE;AAED,wBAAsB,eAAe,CACnC,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC;IACT,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;CAChC,CAAC,CAmBD;AAgGD,wBAAsB,4BAA4B,CAChD,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,IAAI,CAAC,CAGf"}
1
+ {"version":3,"file":"data-route.d.ts","sourceRoot":"","sources":["../src/data-route.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,UAAU,EAEX,MAAM,aAAa,CAAC;AAQrB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAM1C,MAAM,WAAW,eAAe;IAG9B,MAAM,EAAE,YAAY,EAAE,CAAC;IAIvB,QAAQ,EAAE,UAAU,EAAE,CAAC;IAIvB,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IAIF,cAAc,EAAE,cAAc,EAAE,CAAC;IAIjC,gBAAgB,EAAE,OAAO,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,YAAY,EAAE,KAAK,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IAGd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IAIX,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAM1B,MAAM,CAAC,EAAE,OAAO,YAAY,EAAE,UAAU,CAAC;CAC1C;AAED,UAAU,gBAAgB;IACxB,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,SAAS,EAAE,WAAW,CAAC;IAIvB,OAAO,EAAE,OAAO,CAAC;IAIjB,iBAAiB,CAAC,EAAE,OAAO,mBAAmB,EAAE,iBAAiB,CAAC;CACnE;AAED,wBAAsB,eAAe,CACnC,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC;IACT,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;CAChC,CAAC,CAmBD;AA6ID,wBAAsB,4BAA4B,CAChD,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,IAAI,CAAC,CAGf"}
package/dist/index.js CHANGED
@@ -23,7 +23,7 @@ function buildAllowedHosts(evaluatorHost) {
23
23
  }
24
24
 
25
25
  // src/version.ts
26
- var PACKAGE_VERSION = "0.6.0";
26
+ var PACKAGE_VERSION = "0.8.0";
27
27
 
28
28
  // src/sandbox.ts
29
29
  function aexeoPluginSandboxed(options = {}) {
@@ -0,0 +1,22 @@
1
+ import type { TruthManifest } from "./types.js";
2
+ export type SourceStatus = "found" | "not_found" | "unreachable" | "skipped";
3
+ export interface SourceResult {
4
+ source: string;
5
+ status: SourceStatus;
6
+ label?: string;
7
+ url?: string;
8
+ extra?: string;
9
+ error?: string;
10
+ checkedAt: string;
11
+ }
12
+ export interface EntityInput {
13
+ name: string;
14
+ website?: string;
15
+ aliases?: readonly string[];
16
+ }
17
+ declare const SOURCE_NAMES: readonly ["wikipedia", "wikidata", "github", "rdap", "common_crawl"];
18
+ export type SourceName = (typeof SOURCE_NAMES)[number];
19
+ export declare function entityFromManifest(manifest: TruthManifest | null): EntityInput | null;
20
+ export declare function checkAllSources(input: EntityInput, fetcher?: typeof fetch): Promise<SourceResult[]>;
21
+ export {};
22
+ //# sourceMappingURL=presence-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presence-check.d.ts","sourceRoot":"","sources":["../src/presence-check.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAOhD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;AAE7E,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IAGrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,QAAA,MAAM,YAAY,sEAMR,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAKvD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,aAAa,GAAG,IAAI,GAC7B,WAAW,GAAG,IAAI,CAUpB;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,YAAY,EAAE,CAAC,CAoBzB"}
@@ -0,0 +1,7 @@
1
+ import type { SandboxCtx } from "./plugin.js";
2
+ interface RouteContext extends SandboxCtx {
3
+ input?: unknown;
4
+ }
5
+ export declare function handlePresenceRoute(ctx: RouteContext): Promise<unknown>;
6
+ export {};
7
+ //# sourceMappingURL=presence-route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presence-route.d.ts","sourceRoot":"","sources":["../src/presence-route.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAuC9C,UAAU,YAAa,SAAQ,UAAU;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAMD,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,OAAO,CAAC,CAelB"}
package/dist/types.d.ts CHANGED
@@ -38,6 +38,11 @@ export interface EmdashDocument {
38
38
  }
39
39
  export type FindingSeverity = "error" | "warning";
40
40
  export type FindingScope = "page" | "template" | "sitewide";
41
+ export type Layer = "retrievability" | "citability" | "absorbability" | "entity_legitimacy";
42
+ export interface RuleLayers {
43
+ primary: Layer;
44
+ secondaries: Layer[];
45
+ }
41
46
  export interface Finding {
42
47
  rule_id: string;
43
48
  message: string;
@@ -47,7 +52,11 @@ export interface Finding {
47
52
  severity: FindingSeverity;
48
53
  suggestion: string | null;
49
54
  scope: FindingScope;
55
+ layers?: RuleLayers;
50
56
  }
57
+ export declare const LAYERS_ORDERED: readonly Layer[];
58
+ export declare function layerHumanLabel(layer: Layer): string;
59
+ export declare function layerOneLineDescription(layer: Layer): string;
51
60
  export type StructuredTruthSource = "manifest" | "schema" | "schema_and_manifest" | "none";
52
61
  export interface SiteIntelligenceScore {
53
62
  citation_readiness_score: number;
@@ -65,4 +74,21 @@ export interface IntelligenceBlocker {
65
74
  route?: string;
66
75
  severity?: string;
67
76
  }
77
+ export interface TruthEntity {
78
+ name: string;
79
+ aliases?: string[];
80
+ website?: string;
81
+ category?: string;
82
+ descriptors?: string[];
83
+ features?: string[];
84
+ }
85
+ export interface TruthManifest {
86
+ version?: number;
87
+ organization?: TruthEntity;
88
+ products?: TruthEntity[];
89
+ terminology?: {
90
+ preferred?: Record<string, string>;
91
+ forbidden?: Record<string, string>;
92
+ };
93
+ }
68
94
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,YAAY,CAAC;AAEjB,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,SAAS,CAAC;AAElD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;AAE5D,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,YAAY,CAAC;CACrB;AAUD,MAAM,MAAM,qBAAqB,GAC7B,UAAU,GACV,QAAQ,GACR,qBAAqB,GACrB,MAAM,CAAC;AAEX,MAAM,WAAW,qBAAqB;IACpC,wBAAwB,EAAE,MAAM,CAAC;IACjC,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8BAA8B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,OAAO,EAAE,CAAC;IACxB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,uBAAuB,CAAC,EAAE,qBAAqB,CAAC;CACjD;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,YAAY,CAAC;AAEjB,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,SAAS,CAAC;AAElD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;AAM5D,MAAM,MAAM,KAAK,GACb,gBAAgB,GAChB,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,KAAK,CAAC;IACf,WAAW,EAAE,KAAK,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,YAAY,CAAC;IAIpB,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAID,eAAO,MAAM,cAAc,EAAE,SAAS,KAAK,EAKjC,CAAC;AAEX,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAWpD;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAW5D;AAUD,MAAM,MAAM,qBAAqB,GAC7B,UAAU,GACV,QAAQ,GACR,qBAAqB,GACrB,MAAM,CAAC;AAEX,MAAM,WAAW,qBAAqB;IACpC,wBAAwB,EAAE,MAAM,CAAC;IACjC,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8BAA8B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,OAAO,EAAE,CAAC;IACxB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,uBAAuB,CAAC,EAAE,qBAAqB,CAAC;CACjD;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAOD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACpC,CAAC;CACH"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const PACKAGE_VERSION = "0.6.0";
1
+ export declare const PACKAGE_VERSION = "0.8.0";
2
2
  //# sourceMappingURL=version.d.ts.map