@pod-os/core 0.12.1-3a9df69.0 → 0.12.1-3c7d98a.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.
package/dist/index.js CHANGED
@@ -13642,6 +13642,30 @@ function labelForType(typeUri) {
13642
13642
  }
13643
13643
  }
13644
13644
 
13645
+ // src/thing/labelFromUri.ts
13646
+ function labelFromUri(uri6) {
13647
+ const url7 = new URL(uri6);
13648
+ if (isTooGeneric(url7.hash)) {
13649
+ return (getFilename(url7) || url7.host + url7.pathname) + url7.hash;
13650
+ }
13651
+ return labelFromFragment(url7.hash) || getFilename(url7) || url7.host;
13652
+ }
13653
+ function labelFromFragment(fragment) {
13654
+ return fragment ? fragment.split("#")[1] : null;
13655
+ }
13656
+ function isTooGeneric(fragment) {
13657
+ const genericFragments = ["#it", "#this", "#me", "#i"];
13658
+ return genericFragments.includes(fragment);
13659
+ }
13660
+ function getFilename(url7) {
13661
+ if (url7.pathname.endsWith("/")) {
13662
+ const containerName = url7.pathname.split("/").at(-2);
13663
+ return containerName ? containerName + "/" : null;
13664
+ } else {
13665
+ return url7.pathname.split("/").pop();
13666
+ }
13667
+ }
13668
+
13645
13669
  // src/thing/Thing.ts
13646
13670
  var Thing = class {
13647
13671
  constructor(uri6, store, editable = false) {
@@ -13663,7 +13687,10 @@ var Thing = class {
13663
13687
  "http://schema.org/caption",
13664
13688
  "https://schema.org/caption"
13665
13689
  );
13666
- return value6 ?? this.uri;
13690
+ if (value6) {
13691
+ return value6;
13692
+ }
13693
+ return labelFromUri(this.uri);
13667
13694
  }
13668
13695
  literals() {
13669
13696
  const statements = this.store.statementsMatching(namedNode(this.uri));
@@ -13678,6 +13705,7 @@ var Thing = class {
13678
13705
  const values = statements.filter((it) => isNamedNode(it.object) && !isRdfType(it.predicate)).reduce(accumulateValues, {});
13679
13706
  return Object.keys(values).map((predicate2) => ({
13680
13707
  predicate: predicate2,
13708
+ label: labelFromUri(predicate2),
13681
13709
  uris: values[predicate2]
13682
13710
  }));
13683
13711
  }
@@ -13690,6 +13718,7 @@ var Thing = class {
13690
13718
  const values = statements.reduce(accumulateSubjects, {});
13691
13719
  return Object.keys(values).map((predicate2) => ({
13692
13720
  predicate: predicate2,
13721
+ label: labelFromUri(predicate2),
13693
13722
  uris: values[predicate2]
13694
13723
  }));
13695
13724
  }
package/lib/index.js CHANGED
@@ -49447,6 +49447,30 @@ var PodOS = (() => {
49447
49447
  }
49448
49448
  }
49449
49449
 
49450
+ // src/thing/labelFromUri.ts
49451
+ function labelFromUri(uri6) {
49452
+ const url7 = new URL(uri6);
49453
+ if (isTooGeneric(url7.hash)) {
49454
+ return (getFilename(url7) || url7.host + url7.pathname) + url7.hash;
49455
+ }
49456
+ return labelFromFragment(url7.hash) || getFilename(url7) || url7.host;
49457
+ }
49458
+ function labelFromFragment(fragment) {
49459
+ return fragment ? fragment.split("#")[1] : null;
49460
+ }
49461
+ function isTooGeneric(fragment) {
49462
+ const genericFragments = ["#it", "#this", "#me", "#i"];
49463
+ return genericFragments.includes(fragment);
49464
+ }
49465
+ function getFilename(url7) {
49466
+ if (url7.pathname.endsWith("/")) {
49467
+ const containerName = url7.pathname.split("/").at(-2);
49468
+ return containerName ? containerName + "/" : null;
49469
+ } else {
49470
+ return url7.pathname.split("/").pop();
49471
+ }
49472
+ }
49473
+
49450
49474
  // src/thing/Thing.ts
49451
49475
  var Thing = class {
49452
49476
  constructor(uri6, store, editable = false) {
@@ -49468,7 +49492,10 @@ var PodOS = (() => {
49468
49492
  "http://schema.org/caption",
49469
49493
  "https://schema.org/caption"
49470
49494
  );
49471
- return value6 ?? this.uri;
49495
+ if (value6) {
49496
+ return value6;
49497
+ }
49498
+ return labelFromUri(this.uri);
49472
49499
  }
49473
49500
  literals() {
49474
49501
  const statements = this.store.statementsMatching(namedNode2(this.uri));
@@ -49483,6 +49510,7 @@ var PodOS = (() => {
49483
49510
  const values = statements.filter((it) => isNamedNode(it.object) && !isRdfType(it.predicate)).reduce(accumulateValues, {});
49484
49511
  return Object.keys(values).map((predicate2) => ({
49485
49512
  predicate: predicate2,
49513
+ label: labelFromUri(predicate2),
49486
49514
  uris: values[predicate2]
49487
49515
  }));
49488
49516
  }
@@ -49495,6 +49523,7 @@ var PodOS = (() => {
49495
49523
  const values = statements.reduce(accumulateSubjects, {});
49496
49524
  return Object.keys(values).map((predicate2) => ({
49497
49525
  predicate: predicate2,
49526
+ label: labelFromUri(predicate2),
49498
49527
  uris: values[predicate2]
49499
49528
  }));
49500
49529
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pod-os/core",
3
- "version": "0.12.1-3a9df69.0",
3
+ "version": "0.12.1-3c7d98a.0",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./types/index.d.ts",
6
6
  "files": [
@@ -5,6 +5,7 @@ export interface Literal {
5
5
  }
6
6
  export interface Relation {
7
7
  predicate: string;
8
+ label: string;
8
9
  uris: string[];
9
10
  }
10
11
  export interface RdfType {
@@ -0,0 +1 @@
1
+ export declare function labelFromUri(uri: string): string;
@@ -0,0 +1 @@
1
+ export {};