rdflib 2.2.31 → 2.2.32

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.
Files changed (53) hide show
  1. package/dist/670.rdflib.min.js +1 -0
  2. package/dist/730.rdflib.min.js +3 -0
  3. package/dist/730.rdflib.min.js.LICENSE.txt +58 -0
  4. package/dist/730.rdflib.min.js.map +1 -0
  5. package/dist/rdflib.min.js +1 -1
  6. package/dist/rdflib.min.js.LICENSE.txt +0 -59
  7. package/dist/rdflib.min.js.map +1 -1
  8. package/esm/blank-node.js +10 -6
  9. package/esm/collection.js +3 -4
  10. package/esm/factories/factory-types.js +10 -10
  11. package/esm/fetcher.js +64 -35
  12. package/esm/formula.js +10 -13
  13. package/esm/jsonldparser.js +4 -3
  14. package/esm/lists.js +2 -1
  15. package/esm/literal.js +6 -8
  16. package/esm/node-internal.js +5 -10
  17. package/esm/rdfxmlparser.js +3 -0
  18. package/esm/serializer.js +1 -2
  19. package/esm/statement.js +7 -11
  20. package/esm/store.js +39 -32
  21. package/esm/types.js +18 -1
  22. package/esm/update-manager.js +28 -16
  23. package/esm/utils.js +0 -1
  24. package/esm/variable.js +2 -4
  25. package/lib/blank-node.js +10 -6
  26. package/lib/collection.js +3 -4
  27. package/lib/factories/factory-types.js +10 -10
  28. package/lib/fetcher.js +88 -36
  29. package/lib/formula.js +10 -13
  30. package/lib/index.d.ts +1 -1
  31. package/lib/jsonldparser.js +9 -3
  32. package/lib/lists.js +15 -1
  33. package/lib/literal.js +6 -8
  34. package/lib/node-internal.js +5 -10
  35. package/lib/query.d.ts +1 -1
  36. package/lib/rdfxmlparser.js +3 -0
  37. package/lib/serializer.d.ts +1 -1
  38. package/lib/serializer.js +1 -2
  39. package/lib/sparql-to-query.d.ts +1 -1
  40. package/lib/statement.js +7 -11
  41. package/lib/store.d.ts +1 -1
  42. package/lib/store.js +55 -34
  43. package/lib/types.js +22 -0
  44. package/lib/update-manager.d.ts +1 -1
  45. package/lib/update-manager.js +34 -17
  46. package/lib/utils-js.d.ts +3 -3
  47. package/lib/variable.js +2 -4
  48. package/lib/xsd-internal.d.ts +1 -1
  49. package/package.json +19 -19
  50. package/src/fetcher.ts +13 -0
  51. package/src/jsonldparser.js +2 -4
  52. package/src/store.ts +18 -1
  53. package/src/update-manager.ts +20 -11
package/lib/serializer.js CHANGED
@@ -37,6 +37,7 @@ var Serializer = /*#__PURE__*/function () {
37
37
  (0, _classCallCheck2.default)(this, Serializer);
38
38
  (0, _defineProperty2.default)(this, "_notQNameChars", '\t\r\n !"#$%&\'()*.,+/;<=>?@[\\]^`{|}~');
39
39
  (0, _defineProperty2.default)(this, "_notNameChars", this._notQNameChars + ':');
40
+ // stringToN3: String escaping for N3
40
41
  (0, _defineProperty2.default)(this, "validPrefix", new RegExp(/^[a-zA-Z][a-zA-Z0-9]*$/));
41
42
  (0, _defineProperty2.default)(this, "forbidden1", new RegExp(/[\\"\b\f\r\v\t\n\u0080-\uffff]/gm));
42
43
  (0, _defineProperty2.default)(this, "forbidden3", new RegExp(/[\\"\b\f\r\v\u0080-\uffff]/gm));
@@ -600,8 +601,6 @@ var Serializer = /*#__PURE__*/function () {
600
601
  throw new Error('Internal: atomicTermToN3 cannot handle ' + expr + ' of termType: ' + expr.termType);
601
602
  }
602
603
  }
603
-
604
- // stringToN3: String escaping for N3
605
604
  }, {
606
605
  key: "stringToN3",
607
606
  value: function stringToN3(str, flags) {
@@ -3,4 +3,4 @@
3
3
  * @testMode: testing flag. Prevents loading of sources.
4
4
  */
5
5
  export default function SPARQLToQuery(SPARQL: any, testMode: any, kb: any): false | Query;
6
- import { Query } from "./query";
6
+ import { Query } from './query';
package/lib/statement.js CHANGED
@@ -18,17 +18,6 @@ var defaultGraph = new _defaultGraph.default();
18
18
 
19
19
  /** A Statement represents an RDF Triple or Quad. */
20
20
  var Statement = /*#__PURE__*/function () {
21
- /** The subject of the triple. What the Statement is about. */
22
-
23
- /** The relationship which is asserted between the subject and object */
24
-
25
- /** The thing or data value which is asserted to be related to the subject */
26
-
27
- /**
28
- * The graph param is a named node of the document in which the triple when
29
- * it is stored on the web.
30
- */
31
-
32
21
  /**
33
22
  * Construct a new statement
34
23
  *
@@ -48,9 +37,16 @@ var Statement = /*#__PURE__*/function () {
48
37
  */
49
38
  function Statement(subject, predicate, object, graph) {
50
39
  (0, _classCallCheck2.default)(this, Statement);
40
+ /** The subject of the triple. What the Statement is about. */
51
41
  (0, _defineProperty2.default)(this, "subject", void 0);
42
+ /** The relationship which is asserted between the subject and object */
52
43
  (0, _defineProperty2.default)(this, "predicate", void 0);
44
+ /** The thing or data value which is asserted to be related to the subject */
53
45
  (0, _defineProperty2.default)(this, "object", void 0);
46
+ /**
47
+ * The graph param is a named node of the document in which the triple when
48
+ * it is stored on the web.
49
+ */
54
50
  (0, _defineProperty2.default)(this, "graph", void 0);
55
51
  this.subject = _nodeInternal.default.fromValue(subject);
56
52
  this.predicate = _nodeInternal.default.fromValue(predicate);
package/lib/store.d.ts CHANGED
@@ -233,7 +233,7 @@ export default class IndexedFormula extends Formula {
233
233
  */
234
234
  remove(st: Quad | Quad[]): IndexedFormula;
235
235
  /**
236
- * Removes all statements in a doc
236
+ * Removes all statements in a doc, along with the related metadata including request/response
237
237
  * @param doc - The document / graph
238
238
  */
239
239
  removeDocument(doc: Quad_Graph): IndexedFormula;
package/lib/store.js CHANGED
@@ -40,10 +40,24 @@ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol
40
40
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
41
41
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
42
42
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
43
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
43
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /* Identity management and indexing for RDF
44
+ *
45
+ * This file provides IndexedFormula a formula (set of triples) which
46
+ * indexed by predicate, subject and object.
47
+ *
48
+ * It "smushes" (merges into a single node) things which are identical
49
+ * according to owl:sameAs or an owl:InverseFunctionalProperty
50
+ * or an owl:FunctionalProperty
51
+ *
52
+ *
53
+ * 2005-10 Written Tim Berners-Lee
54
+ * 2007 Changed so as not to munge statements from documents when smushing
55
+ * 2019 Converted to typescript
56
+ *
57
+ *
58
+ */ /** @module store */
44
59
  var owlNamespaceURI = 'http://www.w3.org/2002/07/owl#';
45
60
  // var link_ns = 'http://www.w3.org/2007/ont/link#'
46
-
47
61
  // Handle Functional Property
48
62
  function handleFP(formula, subj, pred, obj) {
49
63
  var o1 = formula.any(subj, pred, undefined);
@@ -87,37 +101,6 @@ function handleRDFType(formula, subj, pred, obj, why) {
87
101
  var IndexedFormula = /*#__PURE__*/function (_Formula) {
88
102
  (0, _inherits2.default)(IndexedFormula, _Formula);
89
103
  var _super = _createSuper(IndexedFormula);
90
- // IN future - allow pass array of statements to constructor
91
- /**
92
- * An UpdateManager initialised to this store
93
- */
94
-
95
- /**
96
- * Dictionary of namespace prefixes
97
- */
98
-
99
- /** Map of iri predicates to functions to call when adding { s type X } */
100
-
101
- /** Map of iri predicates to functions to call when getting statement with {s X o} */
102
-
103
- /** Redirect to lexically smaller equivalent symbol */
104
-
105
- /** Reverse mapping to redirection: aliases for this */
106
-
107
- /** Redirections we got from HTTP */
108
-
109
- /** Array of statements with this X as subject */
110
-
111
- /** Array of statements with this X as predicate */
112
-
113
- /** Array of statements with this X as object */
114
-
115
- /** Array of statements with X as provenance */
116
-
117
- /** Function to remove quads from the store arrays with */
118
-
119
- /** Callbacks which are triggered after a statement has been added to the store */
120
-
121
104
  /**
122
105
  * Creates a new formula
123
106
  * @param features - What sort of automatic processing to do? Array of string
@@ -132,22 +115,40 @@ var IndexedFormula = /*#__PURE__*/function (_Formula) {
132
115
  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
133
116
  (0, _classCallCheck2.default)(this, IndexedFormula);
134
117
  _this = _super.call(this, undefined, undefined, undefined, undefined, opts);
118
+ // IN future - allow pass array of statements to constructor
119
+ /**
120
+ * An UpdateManager initialised to this store
121
+ */
135
122
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updater", void 0);
123
+ /**
124
+ * Dictionary of namespace prefixes
125
+ */
136
126
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "namespaces", void 0);
127
+ /** Map of iri predicates to functions to call when adding { s type X } */
137
128
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "classActions", void 0);
129
+ /** Map of iri predicates to functions to call when getting statement with {s X o} */
138
130
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "propertyActions", void 0);
131
+ /** Redirect to lexically smaller equivalent symbol */
139
132
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "redirections", void 0);
133
+ /** Reverse mapping to redirection: aliases for this */
140
134
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "aliases", void 0);
135
+ /** Redirections we got from HTTP */
141
136
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "HTTPRedirects", void 0);
137
+ /** Array of statements with this X as subject */
142
138
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "subjectIndex", void 0);
139
+ /** Array of statements with this X as predicate */
143
140
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "predicateIndex", void 0);
141
+ /** Array of statements with this X as object */
144
142
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "objectIndex", void 0);
143
+ /** Array of statements with X as provenance */
145
144
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "whyIndex", void 0);
146
145
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "index", void 0);
147
146
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "features", void 0);
148
147
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_universalVariables", void 0);
149
148
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_existentialVariables", void 0);
149
+ /** Function to remove quads from the store arrays with */
150
150
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "rdfArrayRemove", void 0);
151
+ /** Callbacks which are triggered after a statement has been added to the store */
151
152
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "dataCallbacks", void 0);
152
153
  _this.propertyActions = {};
153
154
  _this.classActions = {};
@@ -827,12 +828,32 @@ var IndexedFormula = /*#__PURE__*/function (_Formula) {
827
828
  }
828
829
 
829
830
  /**
830
- * Removes all statements in a doc
831
+ * Removes all statements in a doc, along with the related metadata including request/response
831
832
  * @param doc - The document / graph
832
833
  */
833
834
  }, {
834
835
  key: "removeDocument",
835
836
  value: function removeDocument(doc) {
837
+ var meta = this.sym('chrome://TheCurrentSession'); // or this.rdfFactory.namedNode('chrome://TheCurrentSession')
838
+ var linkNamespaceURI = 'http://www.w3.org/2007/ont/link#'; // alain
839
+ // remove request/response and metadata
840
+ var requests = this.statementsMatching(undefined, this.sym("".concat(linkNamespaceURI, "requestedURI")), this.rdfFactory.literal(doc.value), meta).map(function (st) {
841
+ return st.subject;
842
+ });
843
+ for (var r = 0; r < requests.length; r++) {
844
+ var request = requests[r];
845
+ if (request !== undefined) {
846
+ this.removeMatches(request, null, null, meta);
847
+ var response = this.any(request, this.sym("".concat(linkNamespaceURI, "response")), null, meta);
848
+ if (response !== undefined) {
849
+ // ts
850
+ this.removeMatches(response, null, null, meta);
851
+ }
852
+ }
853
+ }
854
+ this.removeMatches(this.sym(doc.value), null, null, meta); // content-type
855
+
856
+ // remove document
836
857
  var sts = this.statementsMatching(undefined, undefined, undefined, doc).slice(); // Take a copy as this is the actual index
837
858
  for (var i = 0; i < sts.length; i++) {
838
859
  this.removeStatement(sts[i]);
package/lib/types.js CHANGED
@@ -50,4 +50,26 @@ var XHTMLContentType = "application/xhtml+xml";
50
50
  /**
51
51
  * A valid mime type header
52
52
  */
53
+
54
+ /** A type for values that serves as inputs */
55
+
56
+ /**
57
+ * In this project, there exist two types for the same kind of RDF concept.
58
+ * We have RDF/JS spec types (standardized, generic), and RDFlib types (internal, specific).
59
+ * When deciding which type to use in a function, it is preferable to accept generic inputs,
60
+ * whenever possible, and provide strict outputs.
61
+ * In some ways, the TF types in here are a bit more strict.
62
+ * Variables are missing, and the statement requires specific types of terms (e.g. NamedNode instead of Term).
63
+ */
64
+
65
+ /** An RDF/JS Subject */
66
+
67
+ /** An RDF/JS Predicate */
68
+
69
+ /** An RDF/JS Object */
70
+
71
+ /** An RDF/JS Graph */
72
+ // | Formula
73
+
74
+ /** All the types that a .fromValue() method might return */
53
75
  exports.XHTMLContentType = XHTMLContentType;
@@ -33,7 +33,7 @@ export default class UpdateManager {
33
33
  * the user logs in, then that data misrepresents what would happen
34
34
  * if the user tried again.
35
35
  */
36
- flagAuthorizationMetadata(): void;
36
+ flagAuthorizationMetadata(kb?: IndexedFormula): void;
37
37
  /**
38
38
  * Tests whether a file is editable.
39
39
  * If the file has a specific annotation that it is machine written,
@@ -24,7 +24,12 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
24
24
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
25
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
26
26
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
27
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
27
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } /* @file Update Manager Class
28
+ **
29
+ ** 2007-07-15 originall sparl update module by Joe Presbrey <presbrey@mit.edu>
30
+ ** 2010-08-08 TimBL folded in Kenny's WEBDAV
31
+ ** 2010-12-07 TimBL addred local file write code
32
+ */
28
33
  /**
29
34
  * The UpdateManager is a helper object for a store.
30
35
  * Just as a Fetcher provides the store with the ability to read and write,
@@ -32,10 +37,6 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
32
37
  * and also looking out for concurrent updates from other agents
33
38
  */
34
39
  var UpdateManager = /*#__PURE__*/function () {
35
- /** Index of objects for coordinating incoming and outgoing patches */
36
-
37
- /** Object of namespaces */
38
-
39
40
  /**
40
41
  * @param store - The quadstore to store data and metadata. Created if not passed.
41
42
  */
@@ -44,7 +45,9 @@ var UpdateManager = /*#__PURE__*/function () {
44
45
  (0, _defineProperty2.default)(this, "store", void 0);
45
46
  (0, _defineProperty2.default)(this, "ifps", void 0);
46
47
  (0, _defineProperty2.default)(this, "fps", void 0);
48
+ /** Index of objects for coordinating incoming and outgoing patches */
47
49
  (0, _defineProperty2.default)(this, "patchControl", void 0);
50
+ /** Object of namespaces */
48
51
  (0, _defineProperty2.default)(this, "ns", void 0);
49
52
  store = store || new _store.default();
50
53
  if (store.updater) {
@@ -90,9 +93,12 @@ var UpdateManager = /*#__PURE__*/function () {
90
93
  */
91
94
  }, {
92
95
  key: "flagAuthorizationMetadata",
93
- value: function flagAuthorizationMetadata() {
94
- var kb = this.store;
95
- var meta = kb.fetcher.appNode;
96
+ value: function flagAuthorizationMetadata(kb) {
97
+ var _kb$fetcher;
98
+ if (!kb) {
99
+ kb = this.store;
100
+ }
101
+ var meta = (_kb$fetcher = kb.fetcher) === null || _kb$fetcher === void 0 ? void 0 : _kb$fetcher.appNode;
96
102
  var requests = kb.statementsMatching(undefined, this.ns.link('requestedURI'), undefined, meta).map(function (st) {
97
103
  return st.subject;
98
104
  });
@@ -104,7 +110,7 @@ var UpdateManager = /*#__PURE__*/function () {
104
110
  var _response = kb.any(request, this.ns.link('response'), null, meta);
105
111
  if (_response !== undefined) {
106
112
  // ts
107
- this.store.add(_response, this.ns.link('outOfDate'), true, meta); // @@ Boolean is fine - fix types
113
+ kb.add(_response, this.ns.link('outOfDate'), true, meta); // @@ Boolean is fine - fix types
108
114
  }
109
115
  }
110
116
  } catch (err) {
@@ -129,23 +135,33 @@ var UpdateManager = /*#__PURE__*/function () {
129
135
  key: "checkEditable",
130
136
  value: function () {
131
137
  var _checkEditable = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(uri, kb) {
138
+ var _kb$fetcher2;
132
139
  var initial, final;
133
140
  return _regenerator.default.wrap(function _callee$(_context) {
134
141
  while (1) switch (_context.prev = _context.next) {
135
142
  case 0:
143
+ if (uri) {
144
+ _context.next = 2;
145
+ break;
146
+ }
147
+ return _context.abrupt("return", false);
148
+ case 2:
149
+ if (!kb) {
150
+ kb = this.store;
151
+ }
136
152
  initial = this.editable(uri, kb);
137
153
  if (!(initial !== undefined)) {
138
- _context.next = 3;
154
+ _context.next = 6;
139
155
  break;
140
156
  }
141
157
  return _context.abrupt("return", initial);
142
- case 3:
143
- _context.next = 5;
144
- return this.store.fetcher.load(uri);
145
- case 5:
158
+ case 6:
159
+ _context.next = 8;
160
+ return (_kb$fetcher2 = kb.fetcher) === null || _kb$fetcher2 === void 0 ? void 0 : _kb$fetcher2.load(uri);
161
+ case 8:
146
162
  final = this.editable(uri, kb); // console.log(`Loaded ${uri} just to check editable, result: ${final}.`)
147
163
  return _context.abrupt("return", final);
148
- case 7:
164
+ case 10:
149
165
  case "end":
150
166
  return _context.stop();
151
167
  }
@@ -170,6 +186,7 @@ var UpdateManager = /*#__PURE__*/function () {
170
186
  }, {
171
187
  key: "editable",
172
188
  value: function editable(uri, kb) {
189
+ var _kb$fetcher3;
173
190
  if (!uri) {
174
191
  return false; // Eg subject is bnode, no known doc to write to
175
192
  }
@@ -179,13 +196,13 @@ var UpdateManager = /*#__PURE__*/function () {
179
196
  }
180
197
  uri = (0, _termValue.termValue)(uri);
181
198
  if (!this.isHttpUri(uri)) {
182
- if (this.store.holds(this.store.rdfFactory.namedNode(uri), this.store.rdfFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), this.store.rdfFactory.namedNode('http://www.w3.org/2007/ont/link#MachineEditableDocument'))) {
199
+ if (kb.holds(kb.rdfFactory.namedNode(uri), kb.rdfFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), kb.rdfFactory.namedNode('http://www.w3.org/2007/ont/link#MachineEditableDocument'))) {
183
200
  return 'LOCALFILE';
184
201
  }
185
202
  }
186
203
  var request;
187
204
  var definitive = false;
188
- var meta = this.store.fetcher.appNode;
205
+ var meta = (_kb$fetcher3 = kb.fetcher) === null || _kb$fetcher3 === void 0 ? void 0 : _kb$fetcher3.appNode;
189
206
  // const kb = s
190
207
 
191
208
  // @ts-ignore passes a string to kb.each, which expects a term. Should this work?
package/lib/utils-js.d.ts CHANGED
@@ -37,9 +37,9 @@ export function parseXML(str: any, options: any): Document;
37
37
  export function RDFArrayRemove(a: any, x: any): void;
38
38
  export function string_startswith(str: any, pref: any): boolean;
39
39
  export function stackString(e: any): string;
40
- import NamedNode from "./named-node";
41
- import log from "./log";
42
- import * as uri from "./uri";
40
+ import NamedNode from './named-node';
41
+ import log from './log';
42
+ import * as uri from './uri';
43
43
  export namespace string {
44
44
  export { stringTemplate as template };
45
45
  }
package/lib/variable.js CHANGED
@@ -31,10 +31,6 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
31
31
  var Variable = /*#__PURE__*/function (_Node) {
32
32
  (0, _inherits2.default)(Variable, _Node);
33
33
  var _super = _createSuper(Variable);
34
- /** The base string for a variable's name */
35
-
36
- /** The unique identifier of this variable */
37
-
38
34
  /**
39
35
  * Initializes this variable
40
36
  * @param name The variable's name
@@ -45,9 +41,11 @@ var Variable = /*#__PURE__*/function (_Node) {
45
41
  (0, _classCallCheck2.default)(this, Variable);
46
42
  _this = _super.call(this, name);
47
43
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "termType", _types.VariableTermType);
44
+ /** The base string for a variable's name */
48
45
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "base", 'varid:');
49
46
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "classOrder", _classOrder.default.Variable);
50
47
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isVar", 1);
48
+ /** The unique identifier of this variable */
51
49
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "uri", void 0);
52
50
  _this.base = 'varid:';
53
51
  _this.uri = Uri.join(name, _this.base);
@@ -8,4 +8,4 @@ declare namespace _default {
8
8
  const string: NamedNode;
9
9
  }
10
10
  export default _default;
11
- import NamedNode from "./named-node";
11
+ import NamedNode from './named-node';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "rdflib",
3
3
  "description": "an RDF library for node.js. Suitable for client and server side.",
4
- "version": "2.2.31",
4
+ "version": "2.2.32",
5
5
  "private": false,
6
6
  "browserslist": [
7
7
  "> 0.5%"
@@ -44,22 +44,22 @@
44
44
  "homepage": "http://github.com/linkeddata/rdflib.js",
45
45
  "bugs": "http://github.com/linkeddata/rdflib.js/issues",
46
46
  "dependencies": {
47
- "@babel/runtime": "^7.20.13",
47
+ "@babel/runtime": "^7.21.0",
48
48
  "@frogcat/ttl2jsonld": "^0.0.9",
49
- "@xmldom/xmldom": "^0.8.6",
49
+ "@xmldom/xmldom": "^0.8.7",
50
50
  "cross-fetch": "^3.1.5",
51
- "jsonld": "^5.2.0",
52
- "n3": "^1.16.3",
53
- "solid-namespace": "^0.5.2"
51
+ "jsonld": "^8.1.1",
52
+ "n3": "^1.16.4",
53
+ "solid-namespace": "^0.5.3"
54
54
  },
55
55
  "devDependencies": {
56
- "@babel/cli": "^7.20.7",
57
- "@babel/core": "^7.20.12",
56
+ "@babel/cli": "^7.21.0",
57
+ "@babel/core": "^7.21.4",
58
58
  "@babel/plugin-proposal-class-properties": "^7.18.6",
59
- "@babel/plugin-transform-runtime": "^7.19.6",
60
- "@babel/preset-env": "^7.20.2",
61
- "@babel/preset-typescript": "^7.18.6",
62
- "@babel/register": "^7.18.9",
59
+ "@babel/plugin-transform-runtime": "^7.21.4",
60
+ "@babel/preset-env": "^7.21.4",
61
+ "@babel/preset-typescript": "^7.21.4",
62
+ "@babel/register": "^7.21.0",
63
63
  "@types/chai": "^4.3.4",
64
64
  "@types/dirty-chai": "^2.0.2",
65
65
  "@types/express": "^4.17.17",
@@ -69,23 +69,23 @@
69
69
  "chai": "^4.3.7",
70
70
  "diff": "^5.1.0",
71
71
  "dirty-chai": "^2.0.1",
72
- "eslint": "^8.34.0",
72
+ "eslint": "^8.38.0",
73
73
  "fs-grep": "0.0.5",
74
74
  "locate-path": "^7.2.0",
75
75
  "mocha": "^10.2.0",
76
76
  "nock": "^13.3.0",
77
- "node-fetch": "^3.3.0",
77
+ "node-fetch": "^3.3.1",
78
78
  "node-polyfill-webpack-plugin": "^2.0.1",
79
79
  "rdf-js": "^4.0.2",
80
- "sinon": "^15.0.1",
80
+ "sinon": "^15.0.3",
81
81
  "sinon-chai": "^3.7.0",
82
82
  "source-map-loader": "^4.0.1",
83
83
  "ts-node": "^10.9.1",
84
- "typedoc": "^0.23.25",
85
- "typescript": "^4.9.5",
86
- "webpack": "^5.75.0",
84
+ "typedoc": "^0.24.2",
85
+ "typescript": "^5.0.4",
86
+ "webpack": "^5.79.0",
87
87
  "webpack-cli": "^5.0.1",
88
- "webpack-dev-server": "^4.11.1"
88
+ "webpack-dev-server": "^4.13.3"
89
89
  },
90
90
  "scripts": {
91
91
  "build": "babel src --extensions \".ts,.js\" -d lib",
package/src/fetcher.ts CHANGED
@@ -974,6 +974,19 @@ export default class Fetcher implements CallbackifyInterface {
974
974
  docuri = docuri.split('#')[0]
975
975
 
976
976
  options = this.initFetchOptions(docuri, options)
977
+ // if metadata flaged clear cache and removeDocument
978
+ const meta = this.appNode
979
+ const kb = this.store
980
+ const requests = kb.statementsMatching(undefined, this.ns.link('requestedURI'), kb.sym(docuri), meta).map(st => st.subject)
981
+ for (const request of requests) {
982
+ const response = kb.any(request, this.ns.link('response'), null, meta) as Quad_Subject
983
+ if (response !== undefined) { // ts
984
+ const quad = kb.statementsMatching(response, this.ns.link('outOfDate'), true as any, meta)
985
+ kb.remove(quad)
986
+ options.force = true
987
+ options.clearPreviousData = true
988
+ }
989
+ }
977
990
 
978
991
  const initialisedOptions = this.initFetchOptions(docuri, options)
979
992
 
@@ -1,5 +1,3 @@
1
-
2
- import jsonld from 'jsonld'
3
1
  import { arrayToStatements } from './utils'
4
2
 
5
3
  /**
@@ -70,8 +68,8 @@ export default function jsonldParser (str, kb, base, callback) {
70
68
  ? base.value
71
69
  : base
72
70
 
73
- return jsonld
74
- .flatten(JSON.parse(str), null, { base: baseString })
71
+ return import('jsonld')
72
+ .then(jsonld => { return jsonld.flatten(JSON.parse(str), null, { base: baseString }) })
75
73
  .then((flattened) => flattened.reduce((store, flatResource) => {
76
74
 
77
75
  kb = processResource(kb, base, flatResource)
package/src/store.ts CHANGED
@@ -871,10 +871,27 @@ export default class IndexedFormula extends Formula { // IN future - allow pass
871
871
  }
872
872
 
873
873
  /**
874
- * Removes all statements in a doc
874
+ * Removes all statements in a doc, along with the related metadata including request/response
875
875
  * @param doc - The document / graph
876
876
  */
877
877
  removeDocument(doc: Quad_Graph): IndexedFormula {
878
+ const meta = this.sym('chrome://TheCurrentSession') // or this.rdfFactory.namedNode('chrome://TheCurrentSession')
879
+ const linkNamespaceURI = 'http://www.w3.org/2007/ont/link#' // alain
880
+ // remove request/response and metadata
881
+ const requests = this.statementsMatching(undefined, this.sym(`${linkNamespaceURI}requestedURI`), this.rdfFactory.literal(doc.value), meta).map(st => st.subject)
882
+ for (var r = 0; r < requests.length; r++) {
883
+ const request = requests[r]
884
+ if (request !== undefined) {
885
+ this.removeMatches(request, null, null, meta)
886
+ const response = this.any(request, this.sym(`${linkNamespaceURI}response`), null, meta) as Quad_Subject
887
+ if (response !== undefined) { // ts
888
+ this.removeMatches(response, null, null, meta)
889
+ }
890
+ }
891
+ }
892
+ this.removeMatches(this.sym(doc.value), null, null, meta) // content-type
893
+
894
+ // remove document
878
895
  var sts: Quad[] = this.statementsMatching(undefined, undefined, undefined, doc).slice() // Take a copy as this is the actual index
879
896
  for (var i = 0; i < sts.length; i++) {
880
897
  this.removeStatement(sts[i])
@@ -87,14 +87,16 @@ export default class UpdateManager {
87
87
  * the user logs in, then that data misrepresents what would happen
88
88
  * if the user tried again.
89
89
  */
90
- flagAuthorizationMetadata () {
91
- const kb = this.store
92
- const meta = kb.fetcher.appNode
90
+ flagAuthorizationMetadata (kb?: IndexedFormula) {
91
+ if (!kb) {
92
+ kb = this.store
93
+ }
94
+ const meta = kb.fetcher?.appNode
93
95
  const requests = kb.statementsMatching(undefined, this.ns.link('requestedURI'), undefined, meta).map(st => st.subject)
94
96
  for (const request of requests) {
95
97
  const response = kb.any(request, this.ns.link('response'), null, meta) as Quad_Subject
96
98
  if (response !== undefined) { // ts
97
- this.store.add(response, this.ns.link('outOfDate'), true as any, meta) // @@ Boolean is fine - fix types
99
+ kb.add(response, this.ns.link('outOfDate'), true as any, meta) // @@ Boolean is fine - fix types
98
100
  }
99
101
  }
100
102
  }
@@ -111,11 +113,18 @@ flagAuthorizationMetadata () {
111
113
  * LOCALFILE or false if known, undefined if not known.
112
114
  */
113
115
  async checkEditable (uri: string | NamedNode, kb?: IndexedFormula): Promise<string | boolean | undefined> {
114
- const initial = this.editable(uri, kb)
116
+ if (!uri) {
117
+ return false // Eg subject is bnode, no known doc to write to
118
+ }
119
+ if (!kb) {
120
+ kb = this.store
121
+ }
122
+
123
+ const initial = this.editable(uri, kb)
115
124
  if (initial !== undefined) {
116
125
  return initial
117
126
  }
118
- await this.store.fetcher.load(uri)
127
+ await kb.fetcher?.load(uri)
119
128
  const final = this.editable(uri, kb)
120
129
  // console.log(`Loaded ${uri} just to check editable, result: ${final}.`)
121
130
  return final
@@ -141,17 +150,17 @@ flagAuthorizationMetadata () {
141
150
  uri = termValue(uri)
142
151
 
143
152
  if ( !this.isHttpUri(uri as string) ) {
144
- if (this.store.holds(
145
- this.store.rdfFactory.namedNode(uri),
146
- this.store.rdfFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),
147
- this.store.rdfFactory.namedNode('http://www.w3.org/2007/ont/link#MachineEditableDocument'))) {
153
+ if (kb.holds(
154
+ kb.rdfFactory.namedNode(uri),
155
+ kb.rdfFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),
156
+ kb.rdfFactory.namedNode('http://www.w3.org/2007/ont/link#MachineEditableDocument'))) {
148
157
  return 'LOCALFILE'
149
158
  }
150
159
  }
151
160
 
152
161
  var request
153
162
  var definitive = false
154
- const meta = this.store.fetcher.appNode
163
+ const meta = kb.fetcher?.appNode
155
164
  // const kb = s
156
165
 
157
166
  // @ts-ignore passes a string to kb.each, which expects a term. Should this work?