@pod-os/core 0.8.1-d2a5854.0 → 0.8.1-e073047.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
@@ -31147,6 +31147,59 @@ var require_queue_microtask = __commonJS({
31147
31147
  }
31148
31148
  });
31149
31149
 
31150
+ // ../node_modules/slugify/slugify.js
31151
+ var require_slugify = __commonJS({
31152
+ "../node_modules/slugify/slugify.js"(exports, module2) {
31153
+ (function(name6, root, factory) {
31154
+ if (typeof exports === "object") {
31155
+ module2.exports = factory();
31156
+ module2.exports["default"] = factory();
31157
+ } else if (typeof define === "function" && define.amd) {
31158
+ define(factory);
31159
+ } else {
31160
+ root[name6] = factory();
31161
+ }
31162
+ })("slugify", exports, function() {
31163
+ var charMap = JSON.parse(`{"$":"dollar","%":"percent","&":"and","<":"less",">":"greater","|":"or","\xA2":"cent","\xA3":"pound","\xA4":"currency","\xA5":"yen","\xA9":"(c)","\xAA":"a","\xAE":"(r)","\xBA":"o","\xC0":"A","\xC1":"A","\xC2":"A","\xC3":"A","\xC4":"A","\xC5":"A","\xC6":"AE","\xC7":"C","\xC8":"E","\xC9":"E","\xCA":"E","\xCB":"E","\xCC":"I","\xCD":"I","\xCE":"I","\xCF":"I","\xD0":"D","\xD1":"N","\xD2":"O","\xD3":"O","\xD4":"O","\xD5":"O","\xD6":"O","\xD8":"O","\xD9":"U","\xDA":"U","\xDB":"U","\xDC":"U","\xDD":"Y","\xDE":"TH","\xDF":"ss","\xE0":"a","\xE1":"a","\xE2":"a","\xE3":"a","\xE4":"a","\xE5":"a","\xE6":"ae","\xE7":"c","\xE8":"e","\xE9":"e","\xEA":"e","\xEB":"e","\xEC":"i","\xED":"i","\xEE":"i","\xEF":"i","\xF0":"d","\xF1":"n","\xF2":"o","\xF3":"o","\xF4":"o","\xF5":"o","\xF6":"o","\xF8":"o","\xF9":"u","\xFA":"u","\xFB":"u","\xFC":"u","\xFD":"y","\xFE":"th","\xFF":"y","\u0100":"A","\u0101":"a","\u0102":"A","\u0103":"a","\u0104":"A","\u0105":"a","\u0106":"C","\u0107":"c","\u010C":"C","\u010D":"c","\u010E":"D","\u010F":"d","\u0110":"DJ","\u0111":"dj","\u0112":"E","\u0113":"e","\u0116":"E","\u0117":"e","\u0118":"e","\u0119":"e","\u011A":"E","\u011B":"e","\u011E":"G","\u011F":"g","\u0122":"G","\u0123":"g","\u0128":"I","\u0129":"i","\u012A":"i","\u012B":"i","\u012E":"I","\u012F":"i","\u0130":"I","\u0131":"i","\u0136":"k","\u0137":"k","\u013B":"L","\u013C":"l","\u013D":"L","\u013E":"l","\u0141":"L","\u0142":"l","\u0143":"N","\u0144":"n","\u0145":"N","\u0146":"n","\u0147":"N","\u0148":"n","\u014C":"O","\u014D":"o","\u0150":"O","\u0151":"o","\u0152":"OE","\u0153":"oe","\u0154":"R","\u0155":"r","\u0158":"R","\u0159":"r","\u015A":"S","\u015B":"s","\u015E":"S","\u015F":"s","\u0160":"S","\u0161":"s","\u0162":"T","\u0163":"t","\u0164":"T","\u0165":"t","\u0168":"U","\u0169":"u","\u016A":"u","\u016B":"u","\u016E":"U","\u016F":"u","\u0170":"U","\u0171":"u","\u0172":"U","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017A":"z","\u017B":"Z","\u017C":"z","\u017D":"Z","\u017E":"z","\u018F":"E","\u0192":"f","\u01A0":"O","\u01A1":"o","\u01AF":"U","\u01B0":"u","\u01C8":"LJ","\u01C9":"lj","\u01CB":"NJ","\u01CC":"nj","\u0218":"S","\u0219":"s","\u021A":"T","\u021B":"t","\u0259":"e","\u02DA":"o","\u0386":"A","\u0388":"E","\u0389":"H","\u038A":"I","\u038C":"O","\u038E":"Y","\u038F":"W","\u0390":"i","\u0391":"A","\u0392":"B","\u0393":"G","\u0394":"D","\u0395":"E","\u0396":"Z","\u0397":"H","\u0398":"8","\u0399":"I","\u039A":"K","\u039B":"L","\u039C":"M","\u039D":"N","\u039E":"3","\u039F":"O","\u03A0":"P","\u03A1":"R","\u03A3":"S","\u03A4":"T","\u03A5":"Y","\u03A6":"F","\u03A7":"X","\u03A8":"PS","\u03A9":"W","\u03AA":"I","\u03AB":"Y","\u03AC":"a","\u03AD":"e","\u03AE":"h","\u03AF":"i","\u03B0":"y","\u03B1":"a","\u03B2":"b","\u03B3":"g","\u03B4":"d","\u03B5":"e","\u03B6":"z","\u03B7":"h","\u03B8":"8","\u03B9":"i","\u03BA":"k","\u03BB":"l","\u03BC":"m","\u03BD":"n","\u03BE":"3","\u03BF":"o","\u03C0":"p","\u03C1":"r","\u03C2":"s","\u03C3":"s","\u03C4":"t","\u03C5":"y","\u03C6":"f","\u03C7":"x","\u03C8":"ps","\u03C9":"w","\u03CA":"i","\u03CB":"y","\u03CC":"o","\u03CD":"y","\u03CE":"w","\u0401":"Yo","\u0402":"DJ","\u0404":"Ye","\u0406":"I","\u0407":"Yi","\u0408":"J","\u0409":"LJ","\u040A":"NJ","\u040B":"C","\u040F":"DZ","\u0410":"A","\u0411":"B","\u0412":"V","\u0413":"G","\u0414":"D","\u0415":"E","\u0416":"Zh","\u0417":"Z","\u0418":"I","\u0419":"J","\u041A":"K","\u041B":"L","\u041C":"M","\u041D":"N","\u041E":"O","\u041F":"P","\u0420":"R","\u0421":"S","\u0422":"T","\u0423":"U","\u0424":"F","\u0425":"H","\u0426":"C","\u0427":"Ch","\u0428":"Sh","\u0429":"Sh","\u042A":"U","\u042B":"Y","\u042C":"","\u042D":"E","\u042E":"Yu","\u042F":"Ya","\u0430":"a","\u0431":"b","\u0432":"v","\u0433":"g","\u0434":"d","\u0435":"e","\u0436":"zh","\u0437":"z","\u0438":"i","\u0439":"j","\u043A":"k","\u043B":"l","\u043C":"m","\u043D":"n","\u043E":"o","\u043F":"p","\u0440":"r","\u0441":"s","\u0442":"t","\u0443":"u","\u0444":"f","\u0445":"h","\u0446":"c","\u0447":"ch","\u0448":"sh","\u0449":"sh","\u044A":"u","\u044B":"y","\u044C":"","\u044D":"e","\u044E":"yu","\u044F":"ya","\u0451":"yo","\u0452":"dj","\u0454":"ye","\u0456":"i","\u0457":"yi","\u0458":"j","\u0459":"lj","\u045A":"nj","\u045B":"c","\u045D":"u","\u045F":"dz","\u0490":"G","\u0491":"g","\u0492":"GH","\u0493":"gh","\u049A":"KH","\u049B":"kh","\u04A2":"NG","\u04A3":"ng","\u04AE":"UE","\u04AF":"ue","\u04B0":"U","\u04B1":"u","\u04BA":"H","\u04BB":"h","\u04D8":"AE","\u04D9":"ae","\u04E8":"OE","\u04E9":"oe","\u0531":"A","\u0532":"B","\u0533":"G","\u0534":"D","\u0535":"E","\u0536":"Z","\u0537":"E'","\u0538":"Y'","\u0539":"T'","\u053A":"JH","\u053B":"I","\u053C":"L","\u053D":"X","\u053E":"C'","\u053F":"K","\u0540":"H","\u0541":"D'","\u0542":"GH","\u0543":"TW","\u0544":"M","\u0545":"Y","\u0546":"N","\u0547":"SH","\u0549":"CH","\u054A":"P","\u054B":"J","\u054C":"R'","\u054D":"S","\u054E":"V","\u054F":"T","\u0550":"R","\u0551":"C","\u0553":"P'","\u0554":"Q'","\u0555":"O''","\u0556":"F","\u0587":"EV","\u0621":"a","\u0622":"aa","\u0623":"a","\u0624":"u","\u0625":"i","\u0626":"e","\u0627":"a","\u0628":"b","\u0629":"h","\u062A":"t","\u062B":"th","\u062C":"j","\u062D":"h","\u062E":"kh","\u062F":"d","\u0630":"th","\u0631":"r","\u0632":"z","\u0633":"s","\u0634":"sh","\u0635":"s","\u0636":"dh","\u0637":"t","\u0638":"z","\u0639":"a","\u063A":"gh","\u0641":"f","\u0642":"q","\u0643":"k","\u0644":"l","\u0645":"m","\u0646":"n","\u0647":"h","\u0648":"w","\u0649":"a","\u064A":"y","\u064B":"an","\u064C":"on","\u064D":"en","\u064E":"a","\u064F":"u","\u0650":"e","\u0652":"","\u0660":"0","\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u067E":"p","\u0686":"ch","\u0698":"zh","\u06A9":"k","\u06AF":"g","\u06CC":"y","\u06F0":"0","\u06F1":"1","\u06F2":"2","\u06F3":"3","\u06F4":"4","\u06F5":"5","\u06F6":"6","\u06F7":"7","\u06F8":"8","\u06F9":"9","\u0E3F":"baht","\u10D0":"a","\u10D1":"b","\u10D2":"g","\u10D3":"d","\u10D4":"e","\u10D5":"v","\u10D6":"z","\u10D7":"t","\u10D8":"i","\u10D9":"k","\u10DA":"l","\u10DB":"m","\u10DC":"n","\u10DD":"o","\u10DE":"p","\u10DF":"zh","\u10E0":"r","\u10E1":"s","\u10E2":"t","\u10E3":"u","\u10E4":"f","\u10E5":"k","\u10E6":"gh","\u10E7":"q","\u10E8":"sh","\u10E9":"ch","\u10EA":"ts","\u10EB":"dz","\u10EC":"ts","\u10ED":"ch","\u10EE":"kh","\u10EF":"j","\u10F0":"h","\u1E62":"S","\u1E63":"s","\u1E80":"W","\u1E81":"w","\u1E82":"W","\u1E83":"w","\u1E84":"W","\u1E85":"w","\u1E9E":"SS","\u1EA0":"A","\u1EA1":"a","\u1EA2":"A","\u1EA3":"a","\u1EA4":"A","\u1EA5":"a","\u1EA6":"A","\u1EA7":"a","\u1EA8":"A","\u1EA9":"a","\u1EAA":"A","\u1EAB":"a","\u1EAC":"A","\u1EAD":"a","\u1EAE":"A","\u1EAF":"a","\u1EB0":"A","\u1EB1":"a","\u1EB2":"A","\u1EB3":"a","\u1EB4":"A","\u1EB5":"a","\u1EB6":"A","\u1EB7":"a","\u1EB8":"E","\u1EB9":"e","\u1EBA":"E","\u1EBB":"e","\u1EBC":"E","\u1EBD":"e","\u1EBE":"E","\u1EBF":"e","\u1EC0":"E","\u1EC1":"e","\u1EC2":"E","\u1EC3":"e","\u1EC4":"E","\u1EC5":"e","\u1EC6":"E","\u1EC7":"e","\u1EC8":"I","\u1EC9":"i","\u1ECA":"I","\u1ECB":"i","\u1ECC":"O","\u1ECD":"o","\u1ECE":"O","\u1ECF":"o","\u1ED0":"O","\u1ED1":"o","\u1ED2":"O","\u1ED3":"o","\u1ED4":"O","\u1ED5":"o","\u1ED6":"O","\u1ED7":"o","\u1ED8":"O","\u1ED9":"o","\u1EDA":"O","\u1EDB":"o","\u1EDC":"O","\u1EDD":"o","\u1EDE":"O","\u1EDF":"o","\u1EE0":"O","\u1EE1":"o","\u1EE2":"O","\u1EE3":"o","\u1EE4":"U","\u1EE5":"u","\u1EE6":"U","\u1EE7":"u","\u1EE8":"U","\u1EE9":"u","\u1EEA":"U","\u1EEB":"u","\u1EEC":"U","\u1EED":"u","\u1EEE":"U","\u1EEF":"u","\u1EF0":"U","\u1EF1":"u","\u1EF2":"Y","\u1EF3":"y","\u1EF4":"Y","\u1EF5":"y","\u1EF6":"Y","\u1EF7":"y","\u1EF8":"Y","\u1EF9":"y","\u2013":"-","\u2018":"'","\u2019":"'","\u201C":"\\"","\u201D":"\\"","\u201E":"\\"","\u2020":"+","\u2022":"*","\u2026":"...","\u20A0":"ecu","\u20A2":"cruzeiro","\u20A3":"french franc","\u20A4":"lira","\u20A5":"mill","\u20A6":"naira","\u20A7":"peseta","\u20A8":"rupee","\u20A9":"won","\u20AA":"new shequel","\u20AB":"dong","\u20AC":"euro","\u20AD":"kip","\u20AE":"tugrik","\u20AF":"drachma","\u20B0":"penny","\u20B1":"peso","\u20B2":"guarani","\u20B3":"austral","\u20B4":"hryvnia","\u20B5":"cedi","\u20B8":"kazakhstani tenge","\u20B9":"indian rupee","\u20BA":"turkish lira","\u20BD":"russian ruble","\u20BF":"bitcoin","\u2120":"sm","\u2122":"tm","\u2202":"d","\u2206":"delta","\u2211":"sum","\u221E":"infinity","\u2665":"love","\u5143":"yuan","\u5186":"yen","\uFDFC":"rial","\uFEF5":"laa","\uFEF7":"laa","\uFEF9":"lai","\uFEFB":"la"}`);
31164
+ var locales = JSON.parse('{"bg":{"\u0419":"Y","\u0426":"Ts","\u0429":"Sht","\u042A":"A","\u042C":"Y","\u0439":"y","\u0446":"ts","\u0449":"sht","\u044A":"a","\u044C":"y"},"de":{"\xC4":"AE","\xE4":"ae","\xD6":"OE","\xF6":"oe","\xDC":"UE","\xFC":"ue","\xDF":"ss","%":"prozent","&":"und","|":"oder","\u2211":"summe","\u221E":"unendlich","\u2665":"liebe"},"es":{"%":"por ciento","&":"y","<":"menor que",">":"mayor que","|":"o","\xA2":"centavos","\xA3":"libras","\xA4":"moneda","\u20A3":"francos","\u2211":"suma","\u221E":"infinito","\u2665":"amor"},"fr":{"%":"pourcent","&":"et","<":"plus petit",">":"plus grand","|":"ou","\xA2":"centime","\xA3":"livre","\xA4":"devise","\u20A3":"franc","\u2211":"somme","\u221E":"infini","\u2665":"amour"},"pt":{"%":"porcento","&":"e","<":"menor",">":"maior","|":"ou","\xA2":"centavo","\u2211":"soma","\xA3":"libra","\u221E":"infinito","\u2665":"amor"},"uk":{"\u0418":"Y","\u0438":"y","\u0419":"Y","\u0439":"y","\u0426":"Ts","\u0446":"ts","\u0425":"Kh","\u0445":"kh","\u0429":"Shch","\u0449":"shch","\u0413":"H","\u0433":"h"},"vi":{"\u0110":"D","\u0111":"d"},"da":{"\xD8":"OE","\xF8":"oe","\xC5":"AA","\xE5":"aa","%":"procent","&":"og","|":"eller","$":"dollar","<":"mindre end",">":"st\xF8rre end"},"nb":{"&":"og","\xC5":"AA","\xC6":"AE","\xD8":"OE","\xE5":"aa","\xE6":"ae","\xF8":"oe"},"it":{"&":"e"},"nl":{"&":"en"},"sv":{"&":"och","\xC5":"AA","\xC4":"AE","\xD6":"OE","\xE5":"aa","\xE4":"ae","\xF6":"oe"}}');
31165
+ function replace(string, options) {
31166
+ if (typeof string !== "string") {
31167
+ throw new Error("slugify: string argument expected");
31168
+ }
31169
+ options = typeof options === "string" ? { replacement: options } : options || {};
31170
+ var locale = locales[options.locale] || {};
31171
+ var replacement = options.replacement === void 0 ? "-" : options.replacement;
31172
+ var trim = options.trim === void 0 ? true : options.trim;
31173
+ var slug = string.normalize().split("").reduce(function(result4, ch) {
31174
+ var appendChar = locale[ch];
31175
+ if (appendChar === void 0)
31176
+ appendChar = charMap[ch];
31177
+ if (appendChar === void 0)
31178
+ appendChar = ch;
31179
+ if (appendChar === replacement)
31180
+ appendChar = " ";
31181
+ return result4 + appendChar.replace(options.remove || /[^\w\s$*_+~.()'"!\-:@]+/g, "");
31182
+ }, "");
31183
+ if (options.strict) {
31184
+ slug = slug.replace(/[^A-Za-z0-9\s]/g, "");
31185
+ }
31186
+ if (trim) {
31187
+ slug = slug.trim();
31188
+ }
31189
+ slug = slug.replace(/\s+/g, replacement);
31190
+ if (options.lower) {
31191
+ slug = slug.toLowerCase();
31192
+ }
31193
+ return slug;
31194
+ }
31195
+ replace.extend = function(customMap) {
31196
+ Object.assign(charMap, customMap);
31197
+ };
31198
+ return replace;
31199
+ });
31200
+ }
31201
+ });
31202
+
31150
31203
  // src/authentication/index.ts
31151
31204
  var import_solid_client_authn_browser = __toESM(require_dist3());
31152
31205
  var BrowserSession = class {
@@ -44132,6 +44185,32 @@ var Store = class {
44132
44185
  }
44133
44186
  );
44134
44187
  }
44188
+ addNewThing(uri5, name6, type4) {
44189
+ return this.updater.update(
44190
+ [],
44191
+ [
44192
+ st2(
44193
+ namedNode2(uri5),
44194
+ namedNode2("https://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
44195
+ namedNode2(type4),
44196
+ namedNode2(uri5).doc()
44197
+ ),
44198
+ st2(
44199
+ namedNode2(uri5),
44200
+ namedNode2("http://www.w3.org/2000/01/rdf-schema#label"),
44201
+ lit2(name6),
44202
+ namedNode2(uri5).doc()
44203
+ )
44204
+ ],
44205
+ void 0,
44206
+ false,
44207
+ {
44208
+ // explicitly omit credentials due to
44209
+ // https://github.com/pod-os/PodOS/issues/17
44210
+ credentials: "omit"
44211
+ }
44212
+ );
44213
+ }
44135
44214
  };
44136
44215
 
44137
44216
  // ../node_modules/rdf-namespaces/dist/index.es.js
@@ -55836,6 +55915,28 @@ function listKnownTerms() {
55836
55915
  return createListOfTerms(index_es_exports);
55837
55916
  }
55838
55917
 
55918
+ // src/uri/UriService.ts
55919
+ var import_slugify = __toESM(require_slugify());
55920
+ var UriService = class {
55921
+ // We expect to use the store for calculating the uris for things
55922
+ // e.g. looking up locations in type index
55923
+ constructor(store) {
55924
+ this.store = store;
55925
+ }
55926
+ /**
55927
+ * Proposes a URI for a new thing based on what the referenceUri identifies:
55928
+ * - if a container, the new URI is in this container
55929
+ * - if a file, the new URI is in the same container as said file
55930
+ * - if a non-information-resource, the new URI is in the same container as that resource
55931
+ * @param referenceUri
55932
+ * @param name (will be slugified)
55933
+ */
55934
+ proposeUriForNewThing(referenceUri, name6) {
55935
+ const filename = (0, import_slugify.default)(name6, { lower: true });
55936
+ return `${new URL(filename, referenceUri)}#it`;
55937
+ }
55938
+ };
55939
+
55839
55940
  // src/rdf-document/RdfDocument.ts
55840
55941
  var RdfDocument = class extends Thing {
55841
55942
  constructor(uri5, store, editable = false) {
@@ -55890,6 +55991,7 @@ var PodOS = class {
55890
55991
  constructor() {
55891
55992
  this.session = new BrowserSession();
55892
55993
  this.store = new Store(this.session);
55994
+ this.uriService = new UriService(this.store);
55893
55995
  this.fileFetcher = new FileFetcher(this.session);
55894
55996
  }
55895
55997
  handleIncomingRedirect() {
@@ -55907,6 +56009,12 @@ var PodOS = class {
55907
56009
  listKnownTerms() {
55908
56010
  return listKnownTerms();
55909
56011
  }
56012
+ addNewThing(uri5, name6, type4) {
56013
+ return this.store.addNewThing(uri5, name6, type4);
56014
+ }
56015
+ proposeUriForNewThing(referenceUri, name6) {
56016
+ return this.uriService.proposeUriForNewThing(referenceUri, name6);
56017
+ }
55910
56018
  trackSession(callback) {
55911
56019
  return this.session.trackSession((session4) => {
55912
56020
  this.store.updater.flagAuthorizationMetadata();
package/lib/index.js CHANGED
@@ -31112,6 +31112,59 @@ ${newlined}
31112
31112
  }
31113
31113
  });
31114
31114
 
31115
+ // ../node_modules/slugify/slugify.js
31116
+ var require_slugify = __commonJS({
31117
+ "../node_modules/slugify/slugify.js"(exports, module2) {
31118
+ (function(name6, root, factory) {
31119
+ if (typeof exports === "object") {
31120
+ module2.exports = factory();
31121
+ module2.exports["default"] = factory();
31122
+ } else if (typeof define === "function" && define.amd) {
31123
+ define(factory);
31124
+ } else {
31125
+ root[name6] = factory();
31126
+ }
31127
+ })("slugify", exports, function() {
31128
+ var charMap = JSON.parse(`{"$":"dollar","%":"percent","&":"and","<":"less",">":"greater","|":"or","\xA2":"cent","\xA3":"pound","\xA4":"currency","\xA5":"yen","\xA9":"(c)","\xAA":"a","\xAE":"(r)","\xBA":"o","\xC0":"A","\xC1":"A","\xC2":"A","\xC3":"A","\xC4":"A","\xC5":"A","\xC6":"AE","\xC7":"C","\xC8":"E","\xC9":"E","\xCA":"E","\xCB":"E","\xCC":"I","\xCD":"I","\xCE":"I","\xCF":"I","\xD0":"D","\xD1":"N","\xD2":"O","\xD3":"O","\xD4":"O","\xD5":"O","\xD6":"O","\xD8":"O","\xD9":"U","\xDA":"U","\xDB":"U","\xDC":"U","\xDD":"Y","\xDE":"TH","\xDF":"ss","\xE0":"a","\xE1":"a","\xE2":"a","\xE3":"a","\xE4":"a","\xE5":"a","\xE6":"ae","\xE7":"c","\xE8":"e","\xE9":"e","\xEA":"e","\xEB":"e","\xEC":"i","\xED":"i","\xEE":"i","\xEF":"i","\xF0":"d","\xF1":"n","\xF2":"o","\xF3":"o","\xF4":"o","\xF5":"o","\xF6":"o","\xF8":"o","\xF9":"u","\xFA":"u","\xFB":"u","\xFC":"u","\xFD":"y","\xFE":"th","\xFF":"y","\u0100":"A","\u0101":"a","\u0102":"A","\u0103":"a","\u0104":"A","\u0105":"a","\u0106":"C","\u0107":"c","\u010C":"C","\u010D":"c","\u010E":"D","\u010F":"d","\u0110":"DJ","\u0111":"dj","\u0112":"E","\u0113":"e","\u0116":"E","\u0117":"e","\u0118":"e","\u0119":"e","\u011A":"E","\u011B":"e","\u011E":"G","\u011F":"g","\u0122":"G","\u0123":"g","\u0128":"I","\u0129":"i","\u012A":"i","\u012B":"i","\u012E":"I","\u012F":"i","\u0130":"I","\u0131":"i","\u0136":"k","\u0137":"k","\u013B":"L","\u013C":"l","\u013D":"L","\u013E":"l","\u0141":"L","\u0142":"l","\u0143":"N","\u0144":"n","\u0145":"N","\u0146":"n","\u0147":"N","\u0148":"n","\u014C":"O","\u014D":"o","\u0150":"O","\u0151":"o","\u0152":"OE","\u0153":"oe","\u0154":"R","\u0155":"r","\u0158":"R","\u0159":"r","\u015A":"S","\u015B":"s","\u015E":"S","\u015F":"s","\u0160":"S","\u0161":"s","\u0162":"T","\u0163":"t","\u0164":"T","\u0165":"t","\u0168":"U","\u0169":"u","\u016A":"u","\u016B":"u","\u016E":"U","\u016F":"u","\u0170":"U","\u0171":"u","\u0172":"U","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017A":"z","\u017B":"Z","\u017C":"z","\u017D":"Z","\u017E":"z","\u018F":"E","\u0192":"f","\u01A0":"O","\u01A1":"o","\u01AF":"U","\u01B0":"u","\u01C8":"LJ","\u01C9":"lj","\u01CB":"NJ","\u01CC":"nj","\u0218":"S","\u0219":"s","\u021A":"T","\u021B":"t","\u0259":"e","\u02DA":"o","\u0386":"A","\u0388":"E","\u0389":"H","\u038A":"I","\u038C":"O","\u038E":"Y","\u038F":"W","\u0390":"i","\u0391":"A","\u0392":"B","\u0393":"G","\u0394":"D","\u0395":"E","\u0396":"Z","\u0397":"H","\u0398":"8","\u0399":"I","\u039A":"K","\u039B":"L","\u039C":"M","\u039D":"N","\u039E":"3","\u039F":"O","\u03A0":"P","\u03A1":"R","\u03A3":"S","\u03A4":"T","\u03A5":"Y","\u03A6":"F","\u03A7":"X","\u03A8":"PS","\u03A9":"W","\u03AA":"I","\u03AB":"Y","\u03AC":"a","\u03AD":"e","\u03AE":"h","\u03AF":"i","\u03B0":"y","\u03B1":"a","\u03B2":"b","\u03B3":"g","\u03B4":"d","\u03B5":"e","\u03B6":"z","\u03B7":"h","\u03B8":"8","\u03B9":"i","\u03BA":"k","\u03BB":"l","\u03BC":"m","\u03BD":"n","\u03BE":"3","\u03BF":"o","\u03C0":"p","\u03C1":"r","\u03C2":"s","\u03C3":"s","\u03C4":"t","\u03C5":"y","\u03C6":"f","\u03C7":"x","\u03C8":"ps","\u03C9":"w","\u03CA":"i","\u03CB":"y","\u03CC":"o","\u03CD":"y","\u03CE":"w","\u0401":"Yo","\u0402":"DJ","\u0404":"Ye","\u0406":"I","\u0407":"Yi","\u0408":"J","\u0409":"LJ","\u040A":"NJ","\u040B":"C","\u040F":"DZ","\u0410":"A","\u0411":"B","\u0412":"V","\u0413":"G","\u0414":"D","\u0415":"E","\u0416":"Zh","\u0417":"Z","\u0418":"I","\u0419":"J","\u041A":"K","\u041B":"L","\u041C":"M","\u041D":"N","\u041E":"O","\u041F":"P","\u0420":"R","\u0421":"S","\u0422":"T","\u0423":"U","\u0424":"F","\u0425":"H","\u0426":"C","\u0427":"Ch","\u0428":"Sh","\u0429":"Sh","\u042A":"U","\u042B":"Y","\u042C":"","\u042D":"E","\u042E":"Yu","\u042F":"Ya","\u0430":"a","\u0431":"b","\u0432":"v","\u0433":"g","\u0434":"d","\u0435":"e","\u0436":"zh","\u0437":"z","\u0438":"i","\u0439":"j","\u043A":"k","\u043B":"l","\u043C":"m","\u043D":"n","\u043E":"o","\u043F":"p","\u0440":"r","\u0441":"s","\u0442":"t","\u0443":"u","\u0444":"f","\u0445":"h","\u0446":"c","\u0447":"ch","\u0448":"sh","\u0449":"sh","\u044A":"u","\u044B":"y","\u044C":"","\u044D":"e","\u044E":"yu","\u044F":"ya","\u0451":"yo","\u0452":"dj","\u0454":"ye","\u0456":"i","\u0457":"yi","\u0458":"j","\u0459":"lj","\u045A":"nj","\u045B":"c","\u045D":"u","\u045F":"dz","\u0490":"G","\u0491":"g","\u0492":"GH","\u0493":"gh","\u049A":"KH","\u049B":"kh","\u04A2":"NG","\u04A3":"ng","\u04AE":"UE","\u04AF":"ue","\u04B0":"U","\u04B1":"u","\u04BA":"H","\u04BB":"h","\u04D8":"AE","\u04D9":"ae","\u04E8":"OE","\u04E9":"oe","\u0531":"A","\u0532":"B","\u0533":"G","\u0534":"D","\u0535":"E","\u0536":"Z","\u0537":"E'","\u0538":"Y'","\u0539":"T'","\u053A":"JH","\u053B":"I","\u053C":"L","\u053D":"X","\u053E":"C'","\u053F":"K","\u0540":"H","\u0541":"D'","\u0542":"GH","\u0543":"TW","\u0544":"M","\u0545":"Y","\u0546":"N","\u0547":"SH","\u0549":"CH","\u054A":"P","\u054B":"J","\u054C":"R'","\u054D":"S","\u054E":"V","\u054F":"T","\u0550":"R","\u0551":"C","\u0553":"P'","\u0554":"Q'","\u0555":"O''","\u0556":"F","\u0587":"EV","\u0621":"a","\u0622":"aa","\u0623":"a","\u0624":"u","\u0625":"i","\u0626":"e","\u0627":"a","\u0628":"b","\u0629":"h","\u062A":"t","\u062B":"th","\u062C":"j","\u062D":"h","\u062E":"kh","\u062F":"d","\u0630":"th","\u0631":"r","\u0632":"z","\u0633":"s","\u0634":"sh","\u0635":"s","\u0636":"dh","\u0637":"t","\u0638":"z","\u0639":"a","\u063A":"gh","\u0641":"f","\u0642":"q","\u0643":"k","\u0644":"l","\u0645":"m","\u0646":"n","\u0647":"h","\u0648":"w","\u0649":"a","\u064A":"y","\u064B":"an","\u064C":"on","\u064D":"en","\u064E":"a","\u064F":"u","\u0650":"e","\u0652":"","\u0660":"0","\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u067E":"p","\u0686":"ch","\u0698":"zh","\u06A9":"k","\u06AF":"g","\u06CC":"y","\u06F0":"0","\u06F1":"1","\u06F2":"2","\u06F3":"3","\u06F4":"4","\u06F5":"5","\u06F6":"6","\u06F7":"7","\u06F8":"8","\u06F9":"9","\u0E3F":"baht","\u10D0":"a","\u10D1":"b","\u10D2":"g","\u10D3":"d","\u10D4":"e","\u10D5":"v","\u10D6":"z","\u10D7":"t","\u10D8":"i","\u10D9":"k","\u10DA":"l","\u10DB":"m","\u10DC":"n","\u10DD":"o","\u10DE":"p","\u10DF":"zh","\u10E0":"r","\u10E1":"s","\u10E2":"t","\u10E3":"u","\u10E4":"f","\u10E5":"k","\u10E6":"gh","\u10E7":"q","\u10E8":"sh","\u10E9":"ch","\u10EA":"ts","\u10EB":"dz","\u10EC":"ts","\u10ED":"ch","\u10EE":"kh","\u10EF":"j","\u10F0":"h","\u1E62":"S","\u1E63":"s","\u1E80":"W","\u1E81":"w","\u1E82":"W","\u1E83":"w","\u1E84":"W","\u1E85":"w","\u1E9E":"SS","\u1EA0":"A","\u1EA1":"a","\u1EA2":"A","\u1EA3":"a","\u1EA4":"A","\u1EA5":"a","\u1EA6":"A","\u1EA7":"a","\u1EA8":"A","\u1EA9":"a","\u1EAA":"A","\u1EAB":"a","\u1EAC":"A","\u1EAD":"a","\u1EAE":"A","\u1EAF":"a","\u1EB0":"A","\u1EB1":"a","\u1EB2":"A","\u1EB3":"a","\u1EB4":"A","\u1EB5":"a","\u1EB6":"A","\u1EB7":"a","\u1EB8":"E","\u1EB9":"e","\u1EBA":"E","\u1EBB":"e","\u1EBC":"E","\u1EBD":"e","\u1EBE":"E","\u1EBF":"e","\u1EC0":"E","\u1EC1":"e","\u1EC2":"E","\u1EC3":"e","\u1EC4":"E","\u1EC5":"e","\u1EC6":"E","\u1EC7":"e","\u1EC8":"I","\u1EC9":"i","\u1ECA":"I","\u1ECB":"i","\u1ECC":"O","\u1ECD":"o","\u1ECE":"O","\u1ECF":"o","\u1ED0":"O","\u1ED1":"o","\u1ED2":"O","\u1ED3":"o","\u1ED4":"O","\u1ED5":"o","\u1ED6":"O","\u1ED7":"o","\u1ED8":"O","\u1ED9":"o","\u1EDA":"O","\u1EDB":"o","\u1EDC":"O","\u1EDD":"o","\u1EDE":"O","\u1EDF":"o","\u1EE0":"O","\u1EE1":"o","\u1EE2":"O","\u1EE3":"o","\u1EE4":"U","\u1EE5":"u","\u1EE6":"U","\u1EE7":"u","\u1EE8":"U","\u1EE9":"u","\u1EEA":"U","\u1EEB":"u","\u1EEC":"U","\u1EED":"u","\u1EEE":"U","\u1EEF":"u","\u1EF0":"U","\u1EF1":"u","\u1EF2":"Y","\u1EF3":"y","\u1EF4":"Y","\u1EF5":"y","\u1EF6":"Y","\u1EF7":"y","\u1EF8":"Y","\u1EF9":"y","\u2013":"-","\u2018":"'","\u2019":"'","\u201C":"\\"","\u201D":"\\"","\u201E":"\\"","\u2020":"+","\u2022":"*","\u2026":"...","\u20A0":"ecu","\u20A2":"cruzeiro","\u20A3":"french franc","\u20A4":"lira","\u20A5":"mill","\u20A6":"naira","\u20A7":"peseta","\u20A8":"rupee","\u20A9":"won","\u20AA":"new shequel","\u20AB":"dong","\u20AC":"euro","\u20AD":"kip","\u20AE":"tugrik","\u20AF":"drachma","\u20B0":"penny","\u20B1":"peso","\u20B2":"guarani","\u20B3":"austral","\u20B4":"hryvnia","\u20B5":"cedi","\u20B8":"kazakhstani tenge","\u20B9":"indian rupee","\u20BA":"turkish lira","\u20BD":"russian ruble","\u20BF":"bitcoin","\u2120":"sm","\u2122":"tm","\u2202":"d","\u2206":"delta","\u2211":"sum","\u221E":"infinity","\u2665":"love","\u5143":"yuan","\u5186":"yen","\uFDFC":"rial","\uFEF5":"laa","\uFEF7":"laa","\uFEF9":"lai","\uFEFB":"la"}`);
31129
+ var locales = JSON.parse('{"bg":{"\u0419":"Y","\u0426":"Ts","\u0429":"Sht","\u042A":"A","\u042C":"Y","\u0439":"y","\u0446":"ts","\u0449":"sht","\u044A":"a","\u044C":"y"},"de":{"\xC4":"AE","\xE4":"ae","\xD6":"OE","\xF6":"oe","\xDC":"UE","\xFC":"ue","\xDF":"ss","%":"prozent","&":"und","|":"oder","\u2211":"summe","\u221E":"unendlich","\u2665":"liebe"},"es":{"%":"por ciento","&":"y","<":"menor que",">":"mayor que","|":"o","\xA2":"centavos","\xA3":"libras","\xA4":"moneda","\u20A3":"francos","\u2211":"suma","\u221E":"infinito","\u2665":"amor"},"fr":{"%":"pourcent","&":"et","<":"plus petit",">":"plus grand","|":"ou","\xA2":"centime","\xA3":"livre","\xA4":"devise","\u20A3":"franc","\u2211":"somme","\u221E":"infini","\u2665":"amour"},"pt":{"%":"porcento","&":"e","<":"menor",">":"maior","|":"ou","\xA2":"centavo","\u2211":"soma","\xA3":"libra","\u221E":"infinito","\u2665":"amor"},"uk":{"\u0418":"Y","\u0438":"y","\u0419":"Y","\u0439":"y","\u0426":"Ts","\u0446":"ts","\u0425":"Kh","\u0445":"kh","\u0429":"Shch","\u0449":"shch","\u0413":"H","\u0433":"h"},"vi":{"\u0110":"D","\u0111":"d"},"da":{"\xD8":"OE","\xF8":"oe","\xC5":"AA","\xE5":"aa","%":"procent","&":"og","|":"eller","$":"dollar","<":"mindre end",">":"st\xF8rre end"},"nb":{"&":"og","\xC5":"AA","\xC6":"AE","\xD8":"OE","\xE5":"aa","\xE6":"ae","\xF8":"oe"},"it":{"&":"e"},"nl":{"&":"en"},"sv":{"&":"och","\xC5":"AA","\xC4":"AE","\xD6":"OE","\xE5":"aa","\xE4":"ae","\xF6":"oe"}}');
31130
+ function replace(string, options) {
31131
+ if (typeof string !== "string") {
31132
+ throw new Error("slugify: string argument expected");
31133
+ }
31134
+ options = typeof options === "string" ? { replacement: options } : options || {};
31135
+ var locale = locales[options.locale] || {};
31136
+ var replacement = options.replacement === void 0 ? "-" : options.replacement;
31137
+ var trim = options.trim === void 0 ? true : options.trim;
31138
+ var slug = string.normalize().split("").reduce(function(result4, ch) {
31139
+ var appendChar = locale[ch];
31140
+ if (appendChar === void 0)
31141
+ appendChar = charMap[ch];
31142
+ if (appendChar === void 0)
31143
+ appendChar = ch;
31144
+ if (appendChar === replacement)
31145
+ appendChar = " ";
31146
+ return result4 + appendChar.replace(options.remove || /[^\w\s$*_+~.()'"!\-:@]+/g, "");
31147
+ }, "");
31148
+ if (options.strict) {
31149
+ slug = slug.replace(/[^A-Za-z0-9\s]/g, "");
31150
+ }
31151
+ if (trim) {
31152
+ slug = slug.trim();
31153
+ }
31154
+ slug = slug.replace(/\s+/g, replacement);
31155
+ if (options.lower) {
31156
+ slug = slug.toLowerCase();
31157
+ }
31158
+ return slug;
31159
+ }
31160
+ replace.extend = function(customMap) {
31161
+ Object.assign(charMap, customMap);
31162
+ };
31163
+ return replace;
31164
+ });
31165
+ }
31166
+ });
31167
+
31115
31168
  // src/index.ts
31116
31169
  var src_exports = {};
31117
31170
  __export(src_exports, {
@@ -44109,6 +44162,32 @@ ${newlined}
44109
44162
  }
44110
44163
  );
44111
44164
  }
44165
+ addNewThing(uri5, name6, type4) {
44166
+ return this.updater.update(
44167
+ [],
44168
+ [
44169
+ st2(
44170
+ namedNode2(uri5),
44171
+ namedNode2("https://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
44172
+ namedNode2(type4),
44173
+ namedNode2(uri5).doc()
44174
+ ),
44175
+ st2(
44176
+ namedNode2(uri5),
44177
+ namedNode2("http://www.w3.org/2000/01/rdf-schema#label"),
44178
+ lit2(name6),
44179
+ namedNode2(uri5).doc()
44180
+ )
44181
+ ],
44182
+ void 0,
44183
+ false,
44184
+ {
44185
+ // explicitly omit credentials due to
44186
+ // https://github.com/pod-os/PodOS/issues/17
44187
+ credentials: "omit"
44188
+ }
44189
+ );
44190
+ }
44112
44191
  };
44113
44192
 
44114
44193
  // ../node_modules/rdf-namespaces/dist/index.es.js
@@ -55813,6 +55892,28 @@ ${newlined}
55813
55892
  return createListOfTerms(index_es_exports);
55814
55893
  }
55815
55894
 
55895
+ // src/uri/UriService.ts
55896
+ var import_slugify = __toESM(require_slugify());
55897
+ var UriService = class {
55898
+ // We expect to use the store for calculating the uris for things
55899
+ // e.g. looking up locations in type index
55900
+ constructor(store) {
55901
+ this.store = store;
55902
+ }
55903
+ /**
55904
+ * Proposes a URI for a new thing based on what the referenceUri identifies:
55905
+ * - if a container, the new URI is in this container
55906
+ * - if a file, the new URI is in the same container as said file
55907
+ * - if a non-information-resource, the new URI is in the same container as that resource
55908
+ * @param referenceUri
55909
+ * @param name (will be slugified)
55910
+ */
55911
+ proposeUriForNewThing(referenceUri, name6) {
55912
+ const filename = (0, import_slugify.default)(name6, { lower: true });
55913
+ return `${new URL(filename, referenceUri)}#it`;
55914
+ }
55915
+ };
55916
+
55816
55917
  // src/rdf-document/RdfDocument.ts
55817
55918
  var RdfDocument = class extends Thing {
55818
55919
  constructor(uri5, store, editable = false) {
@@ -55866,10 +55967,12 @@ ${newlined}
55866
55967
  var PodOS = class {
55867
55968
  session;
55868
55969
  store;
55970
+ uriService;
55869
55971
  fileFetcher;
55870
55972
  constructor() {
55871
55973
  this.session = new BrowserSession();
55872
55974
  this.store = new Store(this.session);
55975
+ this.uriService = new UriService(this.store);
55873
55976
  this.fileFetcher = new FileFetcher(this.session);
55874
55977
  }
55875
55978
  handleIncomingRedirect() {
@@ -55887,6 +55990,12 @@ ${newlined}
55887
55990
  listKnownTerms() {
55888
55991
  return listKnownTerms();
55889
55992
  }
55993
+ addNewThing(uri5, name6, type4) {
55994
+ return this.store.addNewThing(uri5, name6, type4);
55995
+ }
55996
+ proposeUriForNewThing(referenceUri, name6) {
55997
+ return this.uriService.proposeUriForNewThing(referenceUri, name6);
55998
+ }
55890
55999
  trackSession(callback) {
55891
56000
  return this.session.trackSession((session4) => {
55892
56001
  this.store.updater.flagAuthorizationMetadata();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pod-os/core",
3
- "version": "0.8.1-d2a5854.0",
3
+ "version": "0.8.1-e073047.0",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./types/index.d.ts",
6
6
  "files": [
@@ -45,6 +45,7 @@
45
45
  "@inrupt/solid-client-authn-browser": "^1.13.4",
46
46
  "buffer": "^6.0.3",
47
47
  "rdflib": "^2.2.31",
48
+ "slugify": "^1.6.6",
48
49
  "url": "^0.11.0"
49
50
  },
50
51
  "directories": {
package/types/Store.d.ts CHANGED
@@ -27,4 +27,5 @@ export declare class Store {
27
27
  * @param value
28
28
  */
29
29
  addPropertyValue(thing: Thing, property: string, value: string): Promise<void>;
30
+ addNewThing(uri: string, name: string, type: string): void | Promise<void>;
30
31
  }
package/types/index.d.ts CHANGED
@@ -3,6 +3,7 @@ import { SolidFile } from "./files";
3
3
  import { Store } from "./Store";
4
4
  import { Term } from "./terms";
5
5
  import { Thing } from "./thing";
6
+ import { UriService } from "./uri/UriService";
6
7
  export * from "./authentication";
7
8
  export * from "./files";
8
9
  export * from "./thing";
@@ -11,6 +12,7 @@ export * from "./ldp-container";
11
12
  export declare class PodOS {
12
13
  private readonly session;
13
14
  readonly store: Store;
15
+ readonly uriService: UriService;
14
16
  private fileFetcher;
15
17
  constructor();
16
18
  handleIncomingRedirect(): void;
@@ -18,6 +20,8 @@ export declare class PodOS {
18
20
  fetchFile(url: string): Promise<SolidFile>;
19
21
  addPropertyValue(thing: Thing, property: string, value: string): Promise<void>;
20
22
  listKnownTerms(): Term[];
23
+ addNewThing(uri: string, name: string, type: string): void | Promise<void>;
24
+ proposeUriForNewThing(referenceUri: string, name: string): string;
21
25
  trackSession(callback: (session: ISessionInfo) => unknown): void;
22
26
  logout(): Promise<void>;
23
27
  login(oidcIssuer?: string): Promise<void>;
@@ -0,0 +1,14 @@
1
+ import { Store } from "../Store";
2
+ export declare class UriService {
3
+ private readonly store;
4
+ constructor(store: Store);
5
+ /**
6
+ * Proposes a URI for a new thing based on what the referenceUri identifies:
7
+ * - if a container, the new URI is in this container
8
+ * - if a file, the new URI is in the same container as said file
9
+ * - if a non-information-resource, the new URI is in the same container as that resource
10
+ * @param referenceUri
11
+ * @param name (will be slugified)
12
+ */
13
+ proposeUriForNewThing(referenceUri: string, name: string): string;
14
+ }
@@ -0,0 +1 @@
1
+ export {};